ZGlmZiAtLWdpdCBhLy5tYWlsbWFwIGIvLm1haWxtYXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQ5ZjQ5MAotLS0gL2Rldi9udWxsCisrKyBiLy5tYWlsbWFwCkBAIC0wLDAgKzEsMTAgQEAKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgbWFwcyBsb2cgY29tbWl0IGVtYWlsIGFkZHJlc3NlcyB0byB1c2VyIG5hbWVzIHNvIHRoYXQgdGhleSBwcm9wZXJseSByZXBvcnQKKyMgZm9yIHJlbGVhc2Ugbm90ZXMgd2l0aDogZ2l0IHNob3J0bG9nIC1zbgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorU3RlcGhlbiBNYWxsZXR0ZSAgICAgICAgICAgICAgICAgPHNwbWFsbGV0dGVAdXNlcnMubm9yZXBseS5naXRodWIuY29tPgorRmxvcmlhbiBIb2NrbWFubiAgICAgICAgICAgICAgICAgPGZoQGZsb3JpYW4taG9ja21hbm4uZGU+CitKYXNvbiBQbHVyYWQgICAgICAgICAgICAgICAgICAgICA8cGx1cmFkakB1cy5pYm0uY29tPgorT3RhdmlvIFNhbnRhbmEgICAgICAgICAgICAgICAgICAgPG90YXZpb3BvbGlhbmFzYW50YW5hQGdtYWlsLmNvbT4KK0hhcnNoIFRoYWtrYXIgICAgICAgICAgICAgICAgICAgIDxoYXJzaDl0QGdtYWlsLmNvbT4KK0hhZG9vcE1hcmMgICAgICAgICAgICAgICAgICAgICAgIDx2dHNsYWJAeHM0YWxsLm5sPgpkaWZmIC0tZ2l0IGEvLnRyYXZpcy55bWwgYi8udHJhdmlzLnltbAppbmRleCA0ODE3YmM5Li4xM2NmOTMzIDEwMDY0NAotLS0gYS8udHJhdmlzLnltbAorKysgYi8udHJhdmlzLnltbApAQCAtNDgsOCArNDgsMTQgQEAKICAgICAgIG5hbWU6ICJweXRob24iCiAgICAgLSBzY3JpcHQ6ICJtdm4gY2xlYW4gaW5zdGFsbCAtcSAtRHNraXBUZXN0cyAmJiBtdm4gdmVyaWZ5IC1wbCA6Z3JlbWxpbi1qYXZhc2NyaXB0IgogICAgICAgbmFtZTogImphdmFzY3JpcHQiCi0gICAgLSBzY3JpcHQ6ICJtdm4gY2xlYW4gaW5zdGFsbCAtcSAtRHNraXBUZXN0cyAmJiBtdm4gdmVyaWZ5IC1wbCA6Z3JlbWxpbi1zZXJ2ZXIsOmdyZW1saW4tY29uc29sZSAtRHNraXBJbnRlZ3JhdGlvblRlc3RzPWZhbHNlIgotICAgICAgbmFtZTogImdyZW1saW4gc2VydmVyL2NvbnNvbGUiCisgICAgLSBzY3JpcHQ6CisgICAgICAtICJtdm4gY2xlYW4gaW5zdGFsbCAtcSAtRHNraXBUZXN0cyIKKyAgICAgIC0gIm12biB2ZXJpZnkgLXBsIDpncmVtbGluLXNlcnZlciAtRHNraXBUZXN0cyAtRHNraXBJbnRlZ3JhdGlvblRlc3RzPWZhbHNlIgorICAgICAgbmFtZTogImdyZW1saW4gc2VydmVyIgorICAgIC0gc2NyaXB0OgorICAgICAgICAtICJtdm4gY2xlYW4gaW5zdGFsbCAtcSAtRHNraXBUZXN0cyIKKyAgICAgICAgLSAibXZuIHZlcmlmeSAtcGwgOmdyZW1saW4tY29uc29sZSAtRHNraXBJbnRlZ3JhdGlvblRlc3RzPWZhbHNlIgorICAgICAgbmFtZTogImdyZW1saW4gY29uc29sZSIKICAgICAtIHNjcmlwdDoKICAgICAgIC0gIm12biBjbGVhbiBpbnN0YWxsIC1xIC1Ec2tpcFRlc3RzIgogICAgICAgLSAidHJhdmlzX3dhaXQgNjAgbXZuIHZlcmlmeSAtcGwgOnNwYXJrLWdyZW1saW4gLURza2lwSW50ZWdyYXRpb25UZXN0cz1mYWxzZSIKZGlmZiAtLWdpdCBhL0NIQU5HRUxPRy5hc2NpaWRvYyBiL0NIQU5HRUxPRy5hc2NpaWRvYwppbmRleCBjZTIwMGMxLi40MGEzZjEyIDEwMDY0NAotLS0gYS9DSEFOR0VMT0cuYXNjaWlkb2MKKysrIGIvQ0hBTkdFTE9HLmFzY2lpZG9jCkBAIC0xNiw2ICsxNiw1MTkgQEAKIC8vLy8KID0gVGlua2VyUG9wMyBDSEFOR0VMT0cKIAorPT0gVGlua2VyUG9wIDMuNC4wIChBdmFudC1HcmVtbGluIENvbnN0cnVjdGlvbiAjMyBmb3IgVGhlcmVtaW4gYW5kIEZsb3dlcnMpCisKK2ltYWdlOjpodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYXBhY2hlL3RpbmtlcnBvcC9tYXN0ZXIvZG9jcy9zdGF0aWMvaW1hZ2VzL2F2YW50LWdyZW1saW4ucG5nW3dpZHRoPTE4NV0KKworW1tyZWxlYXNlLTMtNC03XV0KKz09PSBUaW5rZXJQb3AgMy40LjcgKFJlbGVhc2UgRGF0ZTogTk9UIE9GRklDSUFMTFkgUkVMRUFTRUQgWUVUKQorCitUaGlzIHJlbGVhc2UgYWxzbyBpbmNsdWRlcyBjaGFuZ2VzIGZyb20gPDxyZWxlYXNlLTMtMy0xMSwgMy4zLjExPj4uCisKKyogR3JlbWxpbi5ORVQgZHJpdmVyOiBGaXhlZCBhIGBOdWxsUmVmZXJlbmNlRXhjZXB0aW9uYCBhbmQgdGhyb3cgY2xlYXIgZXhjZXB0aW9uIGlmIHJlY2VpdmVkIG1lc3NhZ2UgaXMgZW1wdHkuCisqIEJ1bXBlZCB0byBHcm9vdnkgMi41LjExLgorKiBJbXByb3ZlZCBlcnJvciBtZXNzYWdlIGZvciBgbWF0aCgpYCB3aGVuIHRoZSBzZWxlY3RlZCBrZXkgaW4gYSBgTWFwYCBpcyBgbnVsbGAgb3Igbm90IGEgYE51bWJlcmAuCisqIEFkZGVkIGA6Y2xzYCBjb21tYW5kIHRvIEdyZW1saW4gQ29uc29sZSB0byBjbGVhciB0aGUgc2NyZWVuLgorCitbW3JlbGVhc2UtMy00LTZdXQorPT09IFRpbmtlclBvcCAzLjQuNiAoUmVsZWFzZSBEYXRlOiBGZWJydWFyeSAyMCwgMjAyMCkKKworKiBGaXhlZCBidWcgaW4gYGRyb3AoKWAgb2YgcHJvcGVydGllcyB3aGljaCB3YXMgaW50cm9kdWNlZCBpbiAzLjQuNS4KKworPT09PSBCdWdzCisKKyogVElOS0VSUE9QLTIzMzggZHJvcCgpIG5vdCByZW1vdmluZyBhbGwgZWRnZS9tZXRhIHByb3BlcnRpZXMKKworW1tyZWxlYXNlLTMtNC01XV0KKz09PSBUaW5rZXJQb3AgMy40LjUgKFJlbGVhc2UgRGF0ZTogRmVicnVhcnkgMywgMjAyMCkKKworVGhpcyByZWxlYXNlIGFsc28gaW5jbHVkZXMgY2hhbmdlcyBmcm9tIDw8cmVsZWFzZS0zLTMtMTAsIDMuMy4xMD4+LgorCisqIEV4cGFuZGVkIHRoZSB1c2Ugb2YgYGJ5KFN0cmluZylgIG1vZHVsYXRvciBzbyB0aGF0IGl0IGNhbiB3b3JrIG9uIGBNYXBgIGFzIHdlbGwgYXMgYEVsZW1lbnRgLgorKiBJbXByb3ZlZCBlcnJvciBtZXNzYWdpbmcgZm9yIGBieShTdHJpbmcpYCBzbyB0aGF0IGl0IGlzIG1vcmUgY2xlYXIgYXMgdG8gd2hhdCB0aGUgcHJvYmxlbSBpcworKiBCdW1wIHRvIE5ldHR5IDQuMS40MgorKiBJbXByb3ZlZCBTUEFSUUwgcXVlcnkgdHJhbnNsYXRpb24gdG8gYmV0dGVyIGFsbG93IGZvciBpbmRleCBvcHRpbWl6YXRpb25zIGR1cmluZyBleGVjdXRpb24uCisqIEltcHJvdmVkIEdyZW1saW4gU2VydmVyIHdlYnNvY2tldCBoYW5kbGluZyBwcmV2ZW50aW5nIGF1dG9tYXRpYyBzZXJ2ZXIgY2xvc2Ugb2YgdGhlIGNoYW5uZWwgZm9yIHByb3RvY29sIGVycm9ycy4KKyogSW50cm9kdWNlZCBpbnRlcm5hbCBgQnVmZmVyYCBBUEkgYXMgYSB3YXkgdG8gd3JhcCBOZXR0eSdzIEJ1ZmZlciBBUEkgYW5kIG1vdmVkIGBHcmFwaEJpbmFyeVJlYWRlcmAsIGBHcmFwaEJpbmFyeVdyaXRlcmAgYW5kIGBUeXBlU2VyaWFsaXplcjxUPmAgdG8gYGdyZW1saW4tY29yZWAuCisqIFVuaWZpZWQgdGhlIGJlaGF2aW9yIG9mIHByb3BlcnR5IGNvbXBhcmlzb246IG9ubHkgY29tcGFyZSBrZXkmdmFsdWUuCisqIFN1cHBvcnRlZCBgaGFzS2V5KClgIGFuZCBgaGFzVmFsdWUoKWAgc3RlcCBmb3IgZWRnZSBwcm9wZXJ0eSBhbmQgbWV0YSBwcm9wZXJ0eSwgbGlrZSBgZy5FKCkucHJvcGVydGllcygpLmhhc0tleSgneHgnKWAuCisqIE1vZGlmaWVkIGRyaXZlciB0byBzZW5kIGBvdmVycmlkZVJlcXVlc3RJZGAgYW5kIGB1c2VyQWdlbnRgIHRvIHNlcnZlciB3aGVuIHRoZXkgYXJlIHByZXNlbnQgaW4gYFJlcXVlc3RPcHRpb25zYCBmb3IgYnl0ZWNvZGUgcmVxdWVzdHMuCisKKz09PT0gQnVncworCisqIFRJTktFUlBPUC0yMTc1IEV4ZWN1dG9yIHRocmVhZCBpcyBub3QgcmV0dXJuZWQgb24gY2hhbm5lbCBjbG9zZQorKiBUSU5LRVJQT1AtMjI2NiBLZWVwIGFsaXZlIG5vdCBzdGFydGVkIGF0IGNvbm5lY3Rpb24gY3JlYXRpb24KKyogVElOS0VSUE9QLTIyNzQgVGVzdCBvZiBUaW5rZXJHcmFwaCBHcmVtbGluIGZhaWwgb24gV2luZG93cyBhbmQgbm9uIEVOIGxvY2FsZQorKiBUSU5LRVJQT1AtMjMxOCBFZGdlIHByb3BlcnRpZXMgZGVkdXAoKSBub3Qgd29yayB3aXRoIHNwYXJrLWdyZW1saW4gKihicmVha2luZykqCisqIFRJTktFUlBPUC0yMzMyIEphdmFTY3JpcHQgR0xWOiBzdHJ1Y3R1cmUgZWxlbWVudCB0b1N0cmluZygpIHNob3VsZCBpbnRlcm5hbGx5IGNhbGwgdG9TdHJpbmcoKQorKiBUSU5LRVJQT1AtMjMzMyBKYXZhU2NyaXB0IEdMVjogR3JhcGhTT04yLzMgRWRnZSBkZXNlcmlhbGl6YXRpb24gaXMgaW52YWxpZAorCis9PT09IEltcHJvdmVtZW50cworCisqIFRJTktFUlBPUC0xNzMzIGhhc0tleSwgaGFzVmFsdWVzIHNob3VsZCB3b3JrIG9uIEVsZW1lbnQgYW5kIFByb3BlcnR5CisqIFRJTktFUlBPUC0yMjYyIEltcHJvdmUgTmV0dHkgcHJvdG9jb2wgaGFuZGxpbmcKKyogVElOS0VSUE9QLTIzMDUgR3JhcGhCaW5hcnk6IFdyYXAgQnVmZmVyIEFQSQorKiBUSU5LRVJQT1AtMjMwNyBBZGQgYmV0dGVyIGVycm9yIG1lc3NhZ2UgZm9yIGJhZGx5IGNvbmZpZ3VyZWQgQ2hhbm5lbGl6ZXIKKyogVElOS0VSUE9QLTIzMDkgQnVtcCBncmVtbGlucHl0aG9uIHRvIFRvcm5hZG8gNS54CisqIFRJTktFUlBPUC0yMzE0IEVtcGxveSBieShTdHJpbmcpIGZvciBNYXAgd2hlbiBwb3NzaWJsZSBhbmQgaW1wcm92ZSBlcnJvcnMgYXJvdW5kIGluY29ycmVjdCB0eXBlcworKiBUSU5LRVJQT1AtMjMxNSBJbXBsZW1lbnQgc29tZSBmb3JtIG9mIGNsb25lKCkgb3IgcmVzZXQoKSBmb3IgVHJhdmVyc2FsIGluIEdMVnMKKyogVElOS0VSUE9QLTIzMjAgW1NFQ1VSSVRZXSBYTUxJbnB1dEZhY3RvcnkgaW5pdGlhbGl6YXRpb24gaW4gR3JhcGhNTFJlYWRlciBpbnRyb2R1Y2VzCisqIFRJTktFUlBPUC0yMzIyIERlcHJlY2F0ZSBKeXRob24gc3VwcG9ydAorKiBUSU5LRVJQT1AtMjMyNCBEZXByZWNhdGUgdGhlIHJhdyBOSU8gc3VwcG9ydCBpbiB0aGUgSmF2YSBkcml2ZXIKKyogVElOS0VSUE9QLTIzMjUgR2VuZXJhdGUgdHJhdmVyc2FscyB0aGF0IHdpbGwgYmV0dGVyIHlpZWxkIGluZGV4IGxvb2t1cHMgd2l0aCBTUEFSUUwKKyogVElOS0VSUE9QLTIzMjkgSmF2YVNjcmlwdCBHTFY6IFVwZGF0ZSB3ZWJzb2NrZXQgbGlicmFyeSBkZXBlbmRlbmN5CisqIFRJTktFUlBPUC0yMzMwIEphdmFTY3JpcHQgR0xWIHNob3VsZCBleHBvc2UgR3JhcGhTT04yV3JpdGVyIGFuZCBHcmFwaFNPTlJlYWRlcgorCitbW3JlbGVhc2UtMy00LTRdXQorPT09IFRpbmtlclBvcCAzLjQuNCAoUmVsZWFzZSBEYXRlOiBPY3RvYmVyIDE0LCAyMDE5KQorCitUaGlzIHJlbGVhc2UgYWxzbyBpbmNsdWRlcyBjaGFuZ2VzIGZyb20gPDxyZWxlYXNlLTMtMy05LCAzLjMuOT4+LgorCisqIFByb3ZpZGVkIHN1cHBvcnQgZm9yIERTTHMgYnkgd2F5IG9mIHJlbW90ZSBjb25uZWN0aW9ucyB0aHJvdWdoIGBBbm9ueW1vdXNUcmF2ZXJzYWxTb3VyY2VgLgorKiBBZGRlZCBgZWxlbWVudE1hcCgpYCBzdGVwLgorKiBBZGRlZCBHcmFwaEJpbmFyeSBzdXBwb3J0IGZvciBQeXRob24uCisqIEFsbG93ZWQgZm9yIGVtYmVkZGVkIG1hcCBhc3NlcnRpb25zIGluIEdMViB0ZXN0cy4KKyogQWRkZWQgYERpcmVjdGlvbmAgZGVzZXJpYWxpemF0aW9uIHN1cHBvcnQgaW4gR0xWcy4KKworPT09PSBCdWdzCisKKyogVElOS0VSUE9QLTIxNTkgRXZlbnRTdHJhdGVneSBkb2Vzbid0IGhhbmRsZSBtdWx0aS12YWx1ZWQgcHJvcGVydGllcworKiBUSU5LRVJQT1AtMjI3NiBObyBjb25zdHJ1Y3RvciBmb3IgcmVtb3RlIGNvbm5lY3Rpb24gaW4gRFNMIGdlbmVyYXRlZCB0cmF2ZXJzYWwgc291cmNlCisqIFRJTktFUlBPUC0yMjgzIEdyYXBoU3RlcCdzIGlkcyBudWxsIGV4Y2VwdGlvbgorKiBUSU5LRVJQT1AtMjI4NSBFcnJvciBvYmplY3QgaXMgdW5yZWFjaGFibGUKKyogVElOS0VSUE9QLTIyODkgVXNlIGFkZHJlc3MgaW5zdGVhZCBvZiBob3N0bmFtZSBmb3IgY29ubmVjdGlvbgorKiBUSU5LRVJQT1AtMjI5MCBKYXZhc2NyaXB0IEdMViBjb25uZWN0aW9uIHJlZnVzZWQgZXJyb3IgaGFuZGxpbmcKKyogVElOS0VSUE9QLTIyOTEgVHJhdmVyc2FsRXhwbGFuYXRpb24gZGVzZXJpYWxpemF0aW9uIGluIEdyYXBoU09OCisqIFRJTktFUlBPUC0yMjk4IEJ5dGVjb2RlLmphdmEgIGZsYXR0ZW5Bcmd1bWVudHMgdGhyb3cgZXhjZXB0aW9uIHdoZW4gbnVsbAorKiBUSU5LRVJQT1AtMjMwMyBHcmVtbGluRHNsIGdlbmVyYXRlIGFkZFYgaW5zdGVhZCBvZiBhZGRFCisKKz09PT0gSW1wcm92ZW1lbnRzCisKKyogVElOS0VSUE9QLTE4MTAgQWRkIExhbWJkYS5iaW5hcnlPcGVyYXRvciBhbmQgTGFtYmRhLnVuYXJ5T3BlcmF0b3IKKyogVElOS0VSUE9QLTE4MzggUHl0aG9uIHNhbXBsZSBzY3JpcHQKKyogVElOS0VSUE9QLTIwNDYgR3JlbWxpbi1QeXRob246IFN1cHBvcnQgY3VzdG9tIHJlcXVlc3QgaGVhZGVycyBpbiBXZWJTb2NrZXQgcmVxdWVzdAorKiBUSU5LRVJQT1AtMjIxMyBSZXBsYWNlIHNjcmlwdEV2YWx1YXRpb25UaW1lb3V0IGluIGZhdm9yIG9mIHNvbWV0aGluZyBtb3JlIHN1aXRhYmxlIHRvIGJ5dGVjb2RlCisqIFRJTktFUlBPUC0yMjc1IFVwZGF0ZSBqYWNrc29uIGRhdGFiaW5kIDIuOS45LjMrCisqIFRJTktFUlBPUC0yMjc3IFB5dGhvbiBzZGsgcG9zdHBvbmUgdGhlIHRpbWluZyB0byBjcmVhdGUgdHJhbnNwb3J0CisqIFRJTktFUlBPUC0yMjc5IEdyYXBoQmluYXJ5IHN1cHBvcnQgaW4gUHl0aG9uCisqIFRJTktFUlBPUC0yMjgwIFByZXZlbnQgdXNlIG9mIFQgdmFsdWVzIGFzIHByb3BlcnR5IGtleSBvdmVybG9hZHMKKyogVElOS0VSUE9QLTIyODQgTWFrZSBpdCBlYXNpZXIgdG8gcmV0dXJuIG1vcmUgc3RydWN0dXJlIG9mIGdyYXBoIGVsZW1lbnRzCisqIFRJTktFUlBPUC0yMzAyIEFkZCBpc09uR3JhcGhDb21wdXRlcigpIGZpZWxkIGFjY2Vzc29yIHRvIEVsZW1lbnRNYXBTdGVwCisKK1tbcmVsZWFzZS0zLTQtM11dCis9PT0gVGlua2VyUG9wIDMuNC4zIChSZWxlYXNlIERhdGU6IEF1Z3VzdCA1LCAyMDE5KQorCitUaGlzIHJlbGVhc2UgYWxzbyBpbmNsdWRlcyBjaGFuZ2VzIGZyb20gPDxyZWxlYXNlLTMtMy04LCAzLjMuOD4+LgorCisqIEltcHJvdmVkIGVycm9yIG1lc3NhZ2luZyBvbiB0aW1lb3V0cyByZXR1cm5lZCB0byB0aGUgY29uc29sZSBmcm9tIGA6PmAuCisqIEFkZGVkIGEgYHRvU3RyaW5nKClgIHNlcmlhbGl6ZXIgZm9yIEdyYXBoQmluYXJ5LgorKiBDb25maWd1cmVkIHRoZSBHcmVtbGluIENvbnNvbGUgdG8gdXNlIEdyYXBoQmluYXJ5IGJ5IGRlZmF1bHQuCisqIEZpeGVkIHRyYW5zYWN0aW9uIG1hbmFnZW1lbnQgZm9yIGVtcHR5IGl0ZXJhdG9ycyBpbiBHcmVtbGluIFNlcnZlci4KKyogRGVwcmVjYXRlZCBgTWVzc2FnZVNlcmlhbGl6ZXJgIGltcGxlbWVudGF0aW9ucyBmb3IgR3J5byBpbiBHcmVtbGluIFNlcnZlci4KKyogRGVwcmVjYXRlZCBgU2VyaWFsaXplcnNgIGVudW0gdmFsdWVzIG9mIGBHUllPX1YxRDBgIGFuZCBgR1JZT19WM0QwYC4KKyogRGVwcmVjYXRlZCBgU2VyVG9rZW5zYCB2YWx1ZXMgb2YgYE1JTUVfR1JZT19WMUQwYCBhbmQgYE1JTUVfR1JZT19WM0QwYC4KKyogQWRkZWQgYSBEb2NrZXIgY29tbWFuZCB0byBzdGFydCBHcmVtbGluIFNlcnZlciB3aXRoIHRoZSBzdGFuZGFyZCBHTFYgdGVzdCBjb25maWd1cmF0aW9ucy4KKyogQWRkZWQgYGFnZ3JlZ2F0ZShTY29wZSxTdHJpbmcpYCBhbmQgZGVwcmVjYXRlZCBgc3RvcmUoKWAgaW4gZmF2b3Igb2YgYGFnZ3JlZ2F0ZShsb2NhbClgLgorKiBNb2RpZmllZCBgTnVtYmVySGVscGVyYCB0byBiZXR0ZXIgaWdub3JlIGBEb3VibGUuTmFOYCBpbiBgbWluKClgIGFuZCBgbWF4KClgIGNvbXBhcmlzb25zLgorKiBCdW1wIHRvIE5ldHR5IDQuMS4zNi4KKyogQnVtcCB0byBHcm9vdnkgMi41LjcuCisqIEFkZGVkIGB1c2VyQWdlbnRgIHRvIFJlcXVlc3RPcHRpb25zLiBHcmVtbGluIENvbnNvbGUgc2VuZHMgYEdyZW1saW4gQ29uc29sZS88dmVyc2lvbj5gIGFzIHRoZSBgdXNlckFnZW50YC4KKyogRml4ZWQgRHJpdmVyUmVtb3RlQ29ubmVjdGlvbiBpZ25vcmluZyBgd2l0aGAgYFRva2VuYCBvcHRpb25zIHdoZW4gbXVsdGlwbGUgd2VyZSBzZXQuCisqIEFkZGVkIGA6c2V0IHdhcm5pbmdzIDx0cnVlfGZhbHNlPmAgdG8gR3JlbWxpbiBDb25zb2xlLgorCis9PT09IEJ1Z3MKKworKiBUSU5LRVJQT1AtMTYxOSBUaW5rZXJHcmFwaENvbXB1dGVyIHdvcmtlciBjb3VudCBhZmZlY3RzIE9wdGlvbmFsU3RlcCBxdWVyeSByZXN1bHRzCisqIFRJTktFUlBPUC0yMTU3IFNwYXJrU3RhckJhcnJpZXJJbnRlcmNlcHRvciBpbmplY3RzIChCeXRlKSAwCisqIFRJTktFUlBPUC0yMjI0IERldGVjdCBhbmQgZml4IHJlc291cmNlIGxlYWsKKyogVElOS0VSUE9QLTIyMzAgbWF0Y2goKSBzdGVwIHVuZXhwZWN0ZWQgYmVoYXZpb3VycworKiBUSU5LRVJQT1AtMjIzMiBSZW1vdGVTdHJhdGVneSBkb2VzIG5vdCBjYWxsIHBhcmVudCBjbGFzcyBUcmF2ZXJzYWxTdHJhdGVneSBfX2luaXRfXworKiBUSU5LRVJQT1AtMjIzOCBGaXggcmVtYWluaW5nIGl0ZXJhdG9yIGxlYWtzIG1hcmtlZCBieSBASWdub3JlSXRlcmF0b3JMZWFrCisqIFRJTktFUlBPUC0yMjQxIENsaWVudCBleGNlcHRpb24gZG9uJ3QgbWF0Y2ggU2VydmVyIGV4Y2VwdGlvbiB3aGVuIHNlcnZlciAgdGhyb3cgU3RhY2tPdmVyZmxvd0Vycm9yCisqIFRJTktFUlBPUC0yMjQ4IEluc3RhYmlsaXR5IG9mIGRyaXZlciBmb3IgYmxvY2tlZCByZXF1ZXN0cworKiBUSU5LRVJQT1AtMjI1NyB0cmFuc2FjdGlvbiBpdHR5ICBtYXkgc3RpbGwgYmUgdmlzaXRlZCBhZnRlciBjb21taXQKKyogVElOS0VSUE9QLTIyNjQgR3JlbWxpbiBQeXRob24gc2hvdWxkIGRlc2VyaWFsaXplIGc6RGF0ZSB0byBVVEMKKworPT09PSBJbXByb3ZlbWVudHMKKworKiBUSU5LRVJQT1AtMTA4NCBCcmFuY2ggb3B0aW9uIHRva2VucyBzaG91bGQgYmUgYWxsb3dlZCB0byBiZSB0cmF2ZXJzYWxzLgorKiBUSU5LRVJQT1AtMTU1MyBEZXByZWNhdGUgc3RvcmUoKSBpbiBmYXZvciBvZiBhZ2dyZWdhdGUoU2NvcGUpCisqIFRJTktFUlBPUC0xOTIxIFN1cHBvcnQgaGFzTmV4dCB0ZXJtaW5hbCBzdGVwIGluIEdMVnMKKyogVElOS0VSUE9QLTIwMjAgU3VwcG9ydCB3aXRoQ29tcHV0ZXIoKSBmb3IgamF2YXNjcmlwdAorKiBUSU5LRVJQT1AtMjIyMyBVcGRhdGUgamFja3NvbiBkYXRhYmluZCB0byAyLjkuOQorKiBUSU5LRVJQT1AtMjIzNiBJbXByb3ZlIGVycm9yIG1lc3NhZ2luZyBmb3IgVGlua2VyR3JhcGggSWRNYW5hZ2VycyB0aGF0IGZhaWwgb24gY29udmVyc2lvbnMKKyogVElOS0VSUE9QLTIyMzcgUHJldmVudCBlcnJvciB3aGVuIGNsb3Npbmcgc2Vzc2lvbnMgdGhhdCBkb24ndCBleGlzdCAqKGJyZWFraW5nKSoKKyogVElOS0VSUE9QLTIyNDIgQnVtcCB0byBuZXR0eSA0LjEuMzYKKyogVElOS0VSUE9QLTIyNDMgQWRkIHVzZXItYWdlbnQgdG8gUmVxdWVzdE9wdGlvbnMKKyogVElOS0VSUE9QLTIyNDYgQ29uc29saWRhdGUgdGhlIGVycm9yIHByb3BhZ2F0aW9uIHRvIHRoZSBjbGllbnQKKyogVElOS0VSUE9QLTIyNTAgU3VwcG9ydCB0b1N0cmluZyBzZXJpYWxpemF0aW9uIGluIEdyYXBoQmluYXJ5CisqIFRJTktFUlBPUC0yMjU2IHByb2Nlc3NBbGxTdGFydHMgb2YgQWdncmVnYXRlU3RlcCBzaG91bGQgb25seSBiZSBjYWxsZWQgd2hlbiBiYXJyaWVyIGlzIGVtcHR5CisqIFRJTktFUlBPUC0yMjYwIFVwZGF0ZSBqYWNrc29uIGRhdGFiaW5kIDIuOS45LjEKKyogVElOS0VSUE9QLTIyNjUgRGVwcmVjYXRlIFRyYXZlcnNhbC5nZXRTaWRlRWZmZWN0cygpIGZ1bmN0aW9uYWxpdHkgZm9yIHJlbW90aW5nIHB1cnBvc2VzCisqIFRJTktFUlBPUC0yMjcwIERlcHJlY2F0ZSBtdWx0aS9tZXRhcHJvcGVydHkgc3VwcG9ydCBpbiBOZW80agorKiBUSU5LRVJQT1AtMjI3MSBBZGQgY29uc29sZSBwcmVmZXJlbmNlIHRvIGNvbnRyb2wgc2VydmVyLW9yaWdpbmF0ZWQgd2FybmluZyBkaXNwbGF5CisqIFRJTktFUlBPUC0yMjcyIFJlbmFtZSBzdGVwcyBhbmQgdG9rZW5zIHRoYXQgY29uZmxpY3Qgd2l0aCBzdGFuZGFyZCBweXRob24gZnVuY3Rpb25zCisKK1tbcmVsZWFzZS0zLTQtMl1dCis9PT0gVGlua2VyUG9wIDMuNC4yIChSZWxlYXNlIERhdGU6IE1heSAyOCwgMjAxOSkKKworVGhpcyByZWxlYXNlIGFsc28gaW5jbHVkZXMgY2hhbmdlcyBmcm9tIDw8cmVsZWFzZS0zLTMtNywgMy4zLjc+Pi4KKworKiBBbGxvdyBhIGBUcmF2ZXJzYWxgIHRvIGtub3cgd2hhdCBgVHJhdmVyc2FsU291cmNlYCBpdCBzcGF3bmVkIGZyb20uCisqIEZpeGVkIHByb2JsZW0gd2l0aCBjb25uZWN0aW9uIHBvb2wgc2l6aW5nIGFuZCByZXRyeS4KKyogQWRkZWQgc3RhdHVzIGF0dHJpYnV0ZSBmb3Igd2FybmluZ3MgdG8gYmUgcmV0dXJuZWQgdG8gdGhlIGNsaWVudC4KKyogTW9kaWZpZWQgR3JlbWxpbiBDb25zb2xlIHRvIHJlcG9ydCB3YXJuaW5nIHN0YXR1cyBhdHRyaWJ1dGVzLgorKiBDaGFuZ2VkIGA6PmAgaW4gR3JlbWxpbiBDb25zb2xlIHRvIHN1Ym1pdCB0aGUgY2xpZW50LXNpZGUgdGltZW91dCBvbiBlYWNoIHJlcXVlc3QuCisqIFByb3ZpZGVkIG1ldGhvZCB0byBvdmVycmlkZSB0aGUgcmVxdWVzdCBpZGVudGlmaWVyIHdpdGggYFJlcXVlc3RPcHRpb25zYC4KKyogQWRkZWQgb3B0aW9uIHRvIHNldCBwZXItcmVxdWVzdCBzZXR0aW5ncyBvbiBhIGBUcmF2ZXJzYWxgIHN1Ym1pdHRlZCB2aWEgYEJ5dGVjb2RlYC4KKyogRml4ZWQgdGhlIEdyeW8gcmVnaXN0cmF0aW9uIGZvciBgT3B0aW9uc1N0cmF0ZWd5YCBhcyBpdCB3YXMgbm90IHNlcmlhbGl6aW5nIHN0YXRlIHByb3Blcmx5LgorCis9PT09IEJ1Z3MKKworKiBUSU5LRVJQT1AtMjA5MCBBZnRlciBydW5uaW5nIGJhY2tlbmQgZm9yIGEgZGF5IG9yIHNvIFN5c3RlbS5JTy5JT0V4Y2VwdGlvbiBrZWVwIHRocm93aW5nCisqIFRJTktFUlBPUC0yMTEyIEZvbGRpbmcgaW4gcHJvcGVydHkoKSBzdGVwIGlzIG5vdCBiZWluZyBvcHRpbWFsbHkgcGVyZm9ybWVkCisqIFRJTktFUlBPUC0yMTgwIGdyZW1saW4uc2ggZG9lc24ndCB3b3JrIHdoZW4gZGlyZWN0b3JpZXMgY29udGFpbiBzcGFjZXMKKyogVElOS0VSUE9QLTIxODMgSW50ZXJwcmV0ZXJNb2RlQVNUVHJhbnNmb3JtYXRpb24gbmVlZHMgdG8gYmUgbW9yZSBzcGVjaWZpYyBhYm91dCB3aGF0IGl0IHRyYW5zZm9ybXMKKyogVElOS0VSUE9QLTIxODkgQ29ubmVjdGVkQ29tcG9uZW50IHRlc3QgYXNzdW1lcyBmaXhlZCBvcmRlciBvZiB2ZXJ0aWNlcworKiBUSU5LRVJQT1AtMjE5NCBFbmZvcmNpbmcgYW4gb3JkZXIgb24gcHJvcGVydGllcyBpbiBvbmUgdGVzdCBtZXRob2Qgb2YgQ2hvb3NlVGVzdAorKiBUSU5LRVJQT1AtMjE5NiBQYXJ0aXRpb25TdHJhdGVneSB3aXRoIGluY2x1ZGVNZXRhUHJvcGVydGllcyh0cnVlKSBjYW4ndCBhZGQgbGFiZWxlZCB2ZXJ0ZXgKKyogVElOS0VSUE9QLTIxOTggRG9jdW1lbnRhdGlvbiBmb3IgU3RvcmUgY29udHJhZGljdHMgaXRzZWxmCisqIFRJTktFUlBPUC0yMTk5IHdpdGhpbiBzdGVwIGRvZXMgbm90IHdvcmsgd2l0aCBtb3JlIHRoYW4gdHdvIHBhcmFtZXRlcnMgd2l0aCBweXRob24KKyogVElOS0VSUE9QLTIyMDAgQWRkRWRnZVN0YXJ0U3RlcCB1c2VkIERldGFjaGVkRmFjdG9yeS5kZXRhY2ggaW5zdGVhZCBvZiBFdmVudFN0cmF0ZWd5LmRldGFjaAorKiBUSU5LRVJQT1AtMjIwNCBDbGllbnQgcmVjZWl2ZXMgbm8gcmVzcG9uc2Ugb24gZmFpbGVkIHJlcXVlc3QKKyogVElOS0VSUE9QLTIyMDYgQ2VydGFpbiB0eXBlcyBpbiBqYXZhc2NyaXB0IGRvbid0IGFwcGVhciB0byBzZXJpYWxpemUgd2l0aCBhIEdyYXBoU09OIHR5cGUKKyogVElOS0VSUE9QLTIyMTIgUGF0aCBpcyBub3QgZGV0YWNoaW5nIHByb3Blcmx5IHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucworKiBUSU5LRVJQT1AtMjIxNyBSYWNlIGNvbmRpdGlvbiBpbiBHcmVtbGluLm5ldCBkcml2ZXIgY29ubmVjdGlvbgorCis9PT09IEltcHJvdmVtZW50cworCisqIFRJTktFUlBPUC0yMDg5IEphdmFzY3JpcHQgRFNMIHN1cHBvcnQKKyogVElOS0VSUE9QLTIxNzkgSGF2ZSBvLmEudC5nLmRyaXZlci5zZXIuU2VyaWFsaXphdGlvbkV4Y2VwdGlvbiBleHRlbmQgSU9FeGNlcHRpb24KKyogVElOS0VSUE9QLTIxODEgQWxsb3cgY3RybCtjIHRvIGJyZWFrIG91dCBvZiBhIGxvbmcgcnVubmluZyBwcm9jZXNzIGluIEdyZW1saW4gQ29uc29sZQorKiBUSU5LRVJQT1AtMjE4MiBSZW1vdmUgZ3BlcmZ1dGlscyBmcm9tIEdyZW1saW4gQ29uc29sZSAqKGJyZWFraW5nKSoKKyogVElOS0VSUE9QLTIxOTAgRG9jdW1lbnQgR3JlbWxpbiBzYW5pdGl6YXRpb24gYmVzdCBwcmFjdGljZXMKKyogVElOS0VSUE9QLTIxOTEgSW1wbGVtZW50IEVkZ2VMYWJlbFZlcmlmaWNhdGlvblN0cmF0ZWd5CisqIFRJTktFUlBPUC0yMTkzIEFsbG93IGEgVHJhdmVyc2FsIHRvIGtub3cgd2hhdCBUcmF2ZXJzYWxTb3VyY2UgaXQgc3Bhd25lZCBmcm9tCisqIFRJTktFUlBPUC0yMjAzIEJpbmQgdGhlIGNvbnNvbGUgdGltZW91dCB0byB0aGUgcmVxdWVzdCB0aW1lb3V0CisqIFRJTktFUlBPUC0yMjA4IEluY2x1ZGUgaW5qZWN0KCkgaW4gRFNMcyBnZW5lcmF0ZWQgd2l0aCBKYXZhIGFubm90YXRpb24gcHJvY2Vzc29yCisqIFRJTktFUlBPUC0yMjExIFByb3ZpZGUgQVBJIHRvIGFkZCBwZXIgcmVxdWVzdCBvcHRpb24gZm9yIGEgYnl0ZWNvZGUKKyogVElOS0VSUE9QLTIyMTYgQ29uc2lkZXIgYWRkaW5nIGNvbnZlbnRpb25hbCBzdGF0dXMgYXR0cmlidXRlIGtleSBmb3Igd2FybmluZ3MKKyogVElOS0VSUE9QLTIyMTkgVXBncmFkZSBOZXR0eSB2ZXJzaW9uCisKK1tbcmVsZWFzZS0zLTQtMV1dCis9PT0gVGlua2VyUG9wIDMuNC4xIChSZWxlYXNlIERhdGU6IE1hcmNoIDE4LCAyMDE5KQorCitUaGlzIHJlbGVhc2UgYWxzbyBpbmNsdWRlcyBjaGFuZ2VzIGZyb20gPDxyZWxlYXNlLTMtMy02LCAzLjMuNj4+LgorCisqIEdyZW1saW4uTkVUIGRyaXZlcjogRml4ZWQgcmVtb3ZhbCBvZiBjbG9zZWQgY29ubmVjdGlvbnMgYW5kIGFkZGVkIHJvdW5kLXJvYmluIHNjaGVkdWxpbmcuCisqIEFkZGVkIEdyYXBoQmluYXJ5IHNlcmlhbGl6ZXIgZm9yIFRyYXZlcnNhbE1ldHJpY3MKKyogQWRkZWQgcmVnaXN0cmF0aW9uIGZvciBgU3BhcnFsU3RyYXRlZ3lgIGZvciBHcmFwaFNPTi4KKyogRml4ZWQgdXAgYFNwYXJxbFN0cmF0ZWd5YCBzbyB0aGF0IGl0IGNvdWxkIGJlIHVzZWQgcHJvcGVybHkgd2l0aCBgUmVtb3RlU3RyYXRlZ3lgLgorKiBGaXhlZCBgQnl0ZUJ1ZmZlcmAgc2VyaWFsaXphdGlvbiBmb3IgR3JhcGhCaW5hcnkuCisqIEZpeGVkIGBQYXRoLnRvU3RyaW5nKClgIGluIGBncmVtbGluLWphdmFzY3JpcHRgIHdoaWNoIHdhcyByZWZlcmVuY2luZyBhbiBpbnZhbGlkIG9iamVjdC4KKyogRml4ZWQgcG90ZW50aWFsIGZvciBhbiBpbmZpbml0ZSBsb29wIGluIGNvbm5lY3Rpb24gY3JlYXRpb24gZm9yIGBncmVtbGluLWRvdG5ldGAuCisqIEFkZGVkIGZhbGxiYWNrIHJlc29sdmVyIHRvIGBUeXBlU2VyaWFsaXplclJlZ2lzdHJ5YCBmb3IgR3JhcGhCaW5hcnkuCisqIEFkZGVkIGVhc2llciB0byB1bmRlcnN0YW5kIGV4Y2VwdGlvbnMgZm9yIGNvbm5lY3Rpb24gcHJvYmxlbXMgaW4gdGhlIEdyZW1saW4uTmV0IGRyaXZlci4KKyogU3VwcG9ydCBjb25maWd1cmluZyB0aGUgdHlwZSByZWdpc3RyeSBidWlsZGVyIGZvciBHcmFwaEJpbmFyeS4KKyogQnVtcCB0byBHcm9vdnkgMi41LjYuCisqIFJlbGVhc2Ugd29ya2luZyBidWZmZXJzIGluIGNhc2Ugb2YgZmFpbHVyZSBmb3IgR3JhcGhCaW5hcnkuCisqIEdyYXBoQmluYXJ5OiBVc2UgdGhlIHNhbWUgYEJ5dGVCdWZgIGluc3RhbmNlIHRvIHdyaXRlIGR1cmluZyBzZXJpYWxpemF0aW9uLiBDaGFuZ2VkIHNpZ25hdHVyZSBvZiB3cml0ZSBtZXRob2RzIGluIHR5cGUgc2VyaWFsaXplcnMuCisqIFJlbW92ZSB1bnVzZWQgcGFyYW1ldGVyIGluIEdyYXBoQmluYXJ5J3MgYFJlc3BvbnNlTWVzc2FnZVNlcmlhbGl6ZXJgLgorKiBDaGFuZ2VkIGBTcGFycWxUcmF2ZXJzYWxTb3VyY2VgIHNvIGFzIHRvIGVuYWJsZSBHcmVtbGluIHN0ZXBzIHRvIGJlIHVzZWQgdG8gcHJvY2VzcyByZXN1bHRzIGZyb20gdGhlIGBzcGFycWwoKWAgc3RlcC4KKyogR3JhcGhCaW5hcnk6IENhY2hlIGV4cHJlc3Npb24gdG8gb2J0YWluIHRoZSBtZXRob2QgaW4gYFBTZXJpYWxpemVyYC4KKworPT09PSBCdWdzCisKKyogVElOS0VSUE9QLTE5OTIgY291bnQgaGFzIG5lZ2F0aXZlIHRpbWUgaW4gcHJvZmlsZQorKiBUSU5LRVJQT1AtMjEyNiB0b1N0cmluZygpIG1ldGhvZHMgbm90IHRocmVhZC1zYWZlCisqIFRJTktFUlBPUC0yMTM1IEdyZW1saW4uTmV0IENvbm5lY3Rpb25Qb29sIGRvZXNuJ3QgaGFuZGxlIGNsb3NlZCBpZGxlIGNvbm5lY3Rpb25zIHByb3Blcmx5CisqIFRJTktFUlBPUC0yMTM5IEVycm9ycyBkdXJpbmcgcmVxdWVzdCBzZXJpYWxpemF0aW9uIGluIFdlYlNvY2tldEdyZW1saW5SZXF1ZXN0RW5jb2Rlci9OaW9HcmVtbGluUmVxdWVzdEVuY29kZXIgYXJlIG5vdCByZXBvcnRlZCB0byB0aGUgY2xpZW50CisqIFRJTktFUlBPUC0yMTQxIEJ5dGVCdWZmZXJTZXJpYWxpemVyIG1vZGlmaWVzIGJ1ZmZlcidzIHBvc2l0aW9uCisqIFRJTktFUlBPUC0yMTQ4ICJubyBjb25uZWN0aW9uIGF2YWlsYWJsZSEiIGlzIGJlaW5nIHRocm93biBkZXNwaXRlIGxvdHMgb2YgZnJlZSBjb25uZWN0aW9ucworKiBUSU5LRVJQT1AtMjE1MiBQYXRoIHRvU3RyaW5nIGZhaWxzIGluIEdyZW1saW4gSmF2YVNjcmlwdAorKiBUSU5LRVJQT1AtMjE1MyBSZW1vdmUgdW51c2VkIHBhcmFtZXRlciBmcm9tIFJlc3BvbnNlTWVzc2FnZVNlcmlhbGl6ZXIgKihicmVha2luZykqCisqIFRJTktFUlBPUC0yMTU0IEdyYXBoQmluYXJ5OiBTZXJpYWxpemVycyBzaG91bGQgcmVsZWFzZSByZXNvdXJjZXMgaW4gY2FzZSBvZiBmYWlsdXJlcworKiBUSU5LRVJQT1AtMjE1NSBTaXR1YXRpb24gY2FuIG9jY3VyIHRoYXQgY2F1c2VzIGluZmluaXRlIGFtb3VudCBvZiBjb25uZWN0aW9uIHRvIGJlIG9wZW5lZCwgY2F1c2luZyBTeXN0ZW0uTmV0LldlYlNvY2tldHMuV2ViU29ja2V0RXhjZXB0aW9uCisqIFRJTktFUlBPUC0yMTYxIEdyYXBoQmluYXJ5OiBXcml0ZSBzZXJpYWxpemF0aW9uIHBlcmZvcm1hbmNlIGlzc3VlCisqIFRJTktFUlBPUC0yMTY5IFJlc3BvbnNlcyBleGNlZWRpbmcgbWF4Q29udGVudExlbmd0aCBjYXVzZSBzdWJzZXF1ZW50IHF1ZXJpZXMgdG8gaGFuZworKiBUSU5LRVJQT1AtMjE3MiBQYXJ0aXRpb25TdHJhdGVneSBkb2Vzbid0IGFwcGx5IHRvIEFkZEVkZ2VTdGFydFN0ZXAKKyogVElOS0VSUE9QLTIxNzMgSW5jb3JyZWN0IHJlc2V0IG9mIGxvZyBsZXZlbCBpbiBpbnRlZ3JhdGlvbiB0ZXN0CisqIFRJTktFUlBPUC0yMTc3IFN0cmVhbWluZyByZXNwb25zZSBpbW1lZGlhdGVseSBhZnRlciBhdXRoZW50aWNhdGlvbiBzdG9wcyBhZnRlciBmaXJzdCBwYXJ0aWFsIHJlc3BvbnNlCisKKz09PT0gSW1wcm92ZW1lbnRzCisKKyogVElOS0VSUE9QLTE0MzUgU3VwcG9ydCBmb3IgZXh0ZW5kZWQgR3JhcGhTT04gaW4gZ3JlbWxpbi1weXRob24KKyogVElOS0VSUE9QLTE4ODIgQXBwbHkgcmFuZ2UgYW5kIGxpbWl0IHN0ZXBzIGFzIGVhcmx5IGFzIHBvc3NpYmxlCisqIFRJTktFUlBPUC0xOTk4IElvR3JhcGhUZXN0IHVzZSBkaWZmZXJlbnQgc2NoZW1hcyBmb3Igc3RhbmRhcmQgYW5kIHJlYWRHcmFwaCBjb25maWd1cmF0aW9ucworKiBUSU5LRVJQT1AtMjA4OCBFbmFibGUgU291cmNlTGluayBmb3IgR3JlbWxpbi5OZXQKKyogVElOS0VSUE9QLTIwOTggSW1wcm92ZSBncmVtbGluLXNlcnZlci5zaCBoZWxwIG91dHB1dAorKiBUSU5LRVJQT1AtMjEyMiBFeHBvc2Ugc3RhdHVzIGNvZGVzIGZyb20gc2VydmVyIGVycm9ycworKiBUSU5LRVJQT1AtMjEyNCBJbmxpbmVGaWx0ZXJTdHJhdGVneSBwcm9kdWNlcyB3cm9uZyByZXN1bHQKKyogVElOS0VSUE9QLTIxMjUgRXh0ZW5kIHJlbGVhc2UgdmFsaWRhdGlvbiBzY3JpcHQKKyogVElOS0VSUE9QLTIxMjcgQWRkIGc6VHJhdmVyc2FsTWV0cmljcyBhbmQgZzpNZXRyaWNzIGRlc2VyaWFsaXplcnMgZm9yIGdyZW1saW5weXRob24KKyogVElOS0VSUE9QLTIxMjkgTWFzayBzZWN1cml0eSBzZWNyZXQgb3IgcGFzc3dvcmQgaW4gbG9ncworKiBUSU5LRVJQT1AtMjEzMCBDYW5ub3QgaW5zdGFudGlhdGUgRHJpdmVyUmVtb3RlQ29ubmVjdGlvbiB3aXRob3V0IHBhc3NpbmcgYW4gb3B0aW9ucyBvYmplY3QKKyogVElOS0VSUE9QLTIxMzEgTm9Db25uZWN0aW9uQXZhaWxhYmxlRXhjZXB0aW9uIGRvZXNuJ3QgcmV2ZWFsIHRoZSByZWFzb24KKyogVElOS0VSUE9QLTIxMzQgQnVtcCB0byBHcm9vdnkgMi41LjYKKyogVElOS0VSUE9QLTIxMzYgSW5zaWRlIGxvd2VyIGJvdW5kIGluY2x1c2lvbiAoZG9jdW1lbnRhdGlvbikKKyogVElOS0VSUE9QLTIxMzggUHJvdmlkZSBhIGNvbmZpZ3VyYXRpb24gdG8gZGlzYWJsZSB0aGUgZ2xvYmFsIGNsb3N1cmUgY2FjaGUKKyogVElOS0VSUE9QLTIxNDAgVGVzdCBidWlsZCB3aXRoIERvY2tlciBhdXRvbWF0aWNhbGx5CisqIFRJTktFUlBPUC0yMTQ0IEJldHRlciBoYW5kbGUgQXV0aGVudGljYXRvciBpbnN0YW5jZSBmYWlsdXJlcworKiBUSU5LRVJQT1AtMjE0NyBBZGQgR3JhcGhCaW5hcnkgc2VyaWFsaXplciBmb3IgVHJhdmVyc2FsTWV0cmljcworKiBUSU5LRVJQT1AtMjE0OSBHcmFwaEJpbmFyeTogTWFrZSB0eXBlIHNlcmlhbGl6ZXIgcmVzb2x1dGlvbiBwbHVnZ2FibGUKKyogVElOS0VSUE9QLTIxNTAgR3JhcGhCaW5hcnk6IFN1cHBvcnQgY29uZmlndXJpbmcgdGhlIFR5cGVTZXJpYWxpemVyUmVnaXN0cnkgYnVpbGRlciBjbGFzcyBpbiBjb25maWcKKyogVElOS0VSUE9QLTIxNjMgSmF2YVRyYW5zbGF0b3IgcGVyZm9ybWFuY2UgZW5oYW5jZW1lbnRzCisqIFRJTktFUlBPUC0yMTY0IEJ5dGVjb2RlJ3MgaGFzaENvZGUgaW1wbCAoYW5kIGl0cyBpbm5lciBjbGFzc2VzKSBjYW4gcHJvZHVjZSBoYXNoIGNvbGxpc2lvbnMKKyogVElOS0VSUE9QLTIxNjUgUHJlZmVyIGNvbW1vbnMtbGFuZzMgdG8gY29tbW9ucy1sYW5nCisqIFRJTktFUlBPUC0yMTY2IEdyYXBoQmluYXJ5OiBQIGRlc2VyaWFsaXphdGlvbiBzaG91bGQgYmUgb3B0aW1pemVkCisqIFRJTktFUlBPUC0yMTY3IEdyZW1saW4gSmF2YXNjcmlwdCBUcmF2ZXJzYWwgYXMgYXN5bmMgaXRlcmFibGUKKyogVElOS0VSUE9QLTIxNzEgQWxsb3cgU1BBUlFMIHRvIGJlIGV4dGVuZGVkIHdpdGggR3JlbWxpbiBzdGVwcworKiBUSU5LRVJQT1AtMjE3NCBJbXByb3ZlIERvY2tlciBJbWFnZSBTZWN1cml0eQorCitbW3JlbGVhc2UtMy00LTBdXQorPT09IFRpbmtlclBvcCAzLjQuMCAoUmVsZWFzZSBEYXRlOiBKYW51YXJ5IDIsIDIwMTkpCisKK1RoaXMgcmVsZWFzZSBhbHNvIGluY2x1ZGVzIGNoYW5nZXMgZnJvbSA8PHJlbGVhc2UtMy0zLTQsIDMuMy40Pj4gYW5kIDw8cmVsZWFzZS0zLTMtNSwgMy4zLjU+Pi4KKworKiBDaGFuZ2VkIFB5dGhvbiAiYmluZGluZ3MiIHRvIHVzZSBhbiBhY3R1YWwgYEJpbmRpbmdzYCBvYmplY3QgcmF0aGVyIHRoYW4gYSAyLXR1cGxlLgorKiBJbXByb3ZlZCB0aGUgR3JlbWxpbi5ORVQgZHJpdmVyOiBJdCBub3cgdXNlcyByZXF1ZXN0IHBpcGVsaW5pbmcgYW5kIGl0cyBgQ29ubmVjdGlvblBvb2xgIGhhcyBhIGZpeGVkIHNpemUuCisqIEltcGxlbWVudGVkIGBJbmRleFN0ZXBgIHdoaWNoIGFsbG93cyB0byB0cmFuc2Zvcm0gbG9jYWwgY29sbGVjdGlvbnMgaW50byBpbmRleGVkIGNvbGxlY3Rpb25zIG9yIG1hcHMuCisqIE1hZGUgYHZhbHVlTWFwKClgIGF3YXJlIG9mIGBieWAgYW5kIGB3aXRoYCBtb2R1bGF0b3JzIGFuZCBkZXByZWNhdGVkIGB2YWx1ZU1hcChib29sZWFuKWAgb3ZlcmxvYWRzLgorKiBVc2UgYENvbXBhcmUuZXFgIGluIGBDb250YWluc2AgcHJlZGljYXRlcyB0byBlbnN1cmUgdGhlIHNhbWUgZmlsdGVyIGJlaGF2aW9yIGZvciBudW1lcmljIHZhbHVlcy4KKyogQWRkZWQgYE9wdGlvbnNTdHJhdGVneWAgdG8gYWxsb3cgdHJhdmVyc2FscyB0byB0YWtlIGFyYml0cmFyeSB0cmF2ZXJzYWwtd2lkZSBjb25maWd1cmF0aW9ucy4KKyogQWRkZWQgdGV4dCBwcmVkaWNhdGVzLgorKiBBZGRlZCBgQnVsa1NldGAgYXMgYSBHcmFwaFNPTiB0eXBlIHdpdGggc3VwcG9ydCBpbiBhbGwgbGFuZ3VhZ2UgdmFyaWFudHMuCisqIEFkZGVkIGBSZWZlcmVuY2VFbGVtZW50U3RyYXRlZ3lgIHRvIGF1dG8tZGV0YWNoIGVsZW1lbnRzIHRvICJyZWZlcmVuY2UiIGZyb20gYSB0cmF2ZXJzYWwuCisqIEFkZGVkIGluaXRpYWwgcmVsZWFzZSBvZiB0aGUgR3JhcGhCaW5hcnkgc2VyaWFsaXphdGlvbiBmb3JtYXQgd2l0aCBKYXZhIHN1cHBvcnQuCisqIEFsbG93ZWQgYEltcG9ydEN1c3RvbWl6ZXJgIHRvIGFjY2VwdCBmaWVsZHMuCisqIFJlbW92ZWQgZ3Jvb3Z5LXNxbCBkZXBlbmRlbmN5LgorKiBNb2RpZmllZCBgTXV0YXRpbmdgIHN0ZXBzIHNvIHRoYXQgdGhleSBhcmUgbm8gbG9uZ2VyIG1hcmtlZCBhcyBgZmluYWxgLgorKiBSZXdyb3RlIGBDb25uZWN0aXZlU3RyYXRlZ3lgIHRvIHN1cHBvcnQgYW4gYXJiaXRyYXJ5IG51bWJlciBvZiBpbmZpeCBub3RhdGlvbnMgaW4gYSBzaW5nbGUgdHJhdmVyc2FsLgorKiBHcmFwaFNPTiBgTWVzc2FnZVNlcmlhbGl6ZXJgIHMgd2lsbCBhdXRvbWF0aWNhbGx5IHJlZ2lzdGVyIHRoZSBHcmVtbGluU2VydmVyTW9kdWxlIHRvIGEgcHJvdmlkZWQgR3JhcGhTT05NYXBwZXIuCisqIFJlbW92ZWQgc3VwcG9ydCBmb3IgYC1pYCBvcHRpb24gaW4gR3JlbWxpbiBTZXJ2ZXIgd2hpY2ggd2FzIHByZXZpb3VzbHkgZGVwcmVjYXRlZC4KKyogSW1wbGVtZW50ZWQgYFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW1gIGFuZCB0aGUgYHNob3J0ZXN0UGF0aCgpYCBzdGVwLgorKiBgQWJzdHJhY3RHcmFwaFByb3ZpZGVyYCB1c2VzIGBnLmlvKClgIGZvciBsb2FkaW5nIHRlc3QgZGF0YS4KKyogQWRkZWQgdGhlIGBpbygpYCBzdGFydCBzdGVwIGFuZCBgcmVhZCgpYCBhbmQgYHdyaXRlKClgIHRlcm1pbmF0aW9uIHN0ZXBzIHRvIHRoZSBHcmVtbGluIGxhbmd1YWdlLgorKiBBZGRlZCBgR3JhcGhGZWF0dXJlcy5zdXBwb3J0c0lvUmVhZCgpYCBhbmQgYEdyYXBoRmVhdHVyZXMuc3VwcG9ydHNJb1dyaXRlKClgLgorKiBEZXByZWNhdGVkIGBHcmFwaC5pbygpYCBhbmQgcmVsYXRlZCBpbmZyYXN0cnVjdHVyZS4KKyogYEdyYXBoTUxSZWFkZXJgIGJldHRlciBoYW5kbGVzIGVkZ2UgYW5kIHZlcnRleCBwcm9wZXJ0aWVzIHdpdGggdGhlIHNhbWUgbmFtZS4KKyogTWFpbnRhaW5lZCBvcmRlciBvZiBhbm5vdGF0aW9ucyBpbiBtZXRyaWNzIHJldHVybmVkIGZyb20gYHByb2ZpbGUoKWAtc3RlcC4KKyogUmVmYWN0b3JlZCBgVHlwZVRyYW5zbGF0b3JgIHRvIGJlIGRpcmVjdGx5IGV4dGVuc2libGUgZm9yIGBTY3JpcHRUcmFuc2xhdG9yYCBmdW5jdGlvbnMuCisqIEJ1bXBlZCB0byBOZXR0eSA0LjEuMjUuCisqIEJ1bXBlZCB0byBTcGFyayAyLjQuMC4KKyogQnVtcGVkIHRvIEdyb292eSAyLjUuNC4KKyogTW9kaWZpZWQgR3JlbWxpbiBTZXJ2ZXIgdG8gcmV0dXJuIGEgImhvc3QiIHN0YXR1cyBhdHRyaWJ1dGUgb24gcmVzcG9uc2VzLgorKiBBZGRlZCBhYmlsaXR5IHRvIHRoZSBKYXZhLCAuTkVULCBQeXRob24gYW5kIEphdmFTY3JpcHQgZHJpdmVycyB0byByZXRyaWV2ZSBzdGF0dXMgYXR0cmlidXRlcyByZXR1cm5lZCBmcm9tIHRoZSBzZXJ2ZXIuCisqIE1vZGlmaWVkIEphdmEgYW5kIEdyZW1saW4uTmV0IGBSZXNwb25zZUV4Y2VwdGlvbmAgdG8gaW5jbHVkZSBzdGF0dXMgY29kZSBhbmQgc3RhdHVzIGF0dHJpYnV0ZXMuCisqIE1vZGlmaWVkIFB5dGhvbiBgR3JlbWxpblNlcnZlckVycm9yYCB0byBpbmNsdWRlIHN0YXR1cyBhdHRyaWJ1dGVzLgorKiBNb2RpZmllZCB0aGUgcmV0dXJuIHR5cGUgZm9yIGBJR3JlbWxpbkNsaWVudC5TdWJtaXRBc3luYygpYCB0byBiZSBhIGBSZXN1bHRTZXRgIHJhdGhlciB0aGFuIGFuIGBJUmVhZE9ubHlDb2xsZWN0aW9uYC4KKyogRGVwcmVjYXRlZCB0d28gYHN1Ym1pdCgpYC1yZWxhdGVkIG1ldGhvZHMgb24gdGhlIEphdmEgZHJpdmVyIGBDbGllbnRgIGNsYXNzLgorKiBBZGRlZCBgQ2xpZW50LnN1Ym1pdCgpYCBvdmVybG9hZHMgdGhhdCBhY2NlcHQgcGVyLXJlcXVlc3QgYFJlcXVlc3RPcHRpb25zYC4KKyogQWRkZWQgc3BhcnFsLWdyZW1saW4uCisqIEZpeGVkIGEgYnVnIGluIGR5bmFtaWMgR3J5byByZWdpc3RyYXRpb24gd2hlcmUgcmVnaXN0cmF0aW9ucyB0aGF0IGRpZCBub3QgaGF2ZSBzZXJpYWxpemVycyB3b3VsZCBmYWlsLgorKiBNb3ZlZCBgUGFyYW1ldGVyaXppbmdgIGludGVyZmFjZSB0byB0aGUgYG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcGAgcGFja2FnZSB3aXRoIG90aGVyIG1hcmtlciBpbnRlcmZhY2VzIG9mIGl0cyB0eXBlLgorKiBSZXBsYWNlZCBgUGFyYW1ldGVyaXppbmcuYWRkUHJvcGVydHlNdXRhdGlvbnMoKWAgd2l0aCBgQ29uZmlndXJpbmcuY29uZmlndXJlKClgLgorKiBDaGFuZ2VkIGludGVyZmFjZSBoaWVyYXJjaHkgZm9yIGBQYXJhbWV0ZXJpemluZ2AgYW5kIGBNdXRhdGluZ2AgaW50ZXJmYWNlcyBhcyB0aGV5IGFyZSB0aWdodGx5IHJlbGF0ZWQuCisqIEludHJvZHVjZWQgdGhlIGB3aXRoKGssdilgIGFuZCBgd2l0aChrKWAgc3RlcCBtb2R1bGF0b3JzIHdoaWNoIGNhbiBzdXBwbHkgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIGBDb25maWd1cmluZ2Agc3RlcHMuCisqIEFkZGVkIGBPcHRpb25zU3RyYXRlZ3lgIHRvIGFsbG93IHRyYXZlcnNhbHMgdG8gdGFrZSBhcmJpdHJhcnkgdHJhdmVyc2FsLXdpZGUgY29uZmlndXJhdGlvbnMuCisqIEludHJvZHVjZWQgdGhlIGB3aXRoKGssdilgIGFuZCBgd2l0aChrKWAgdHJhdmVyYWwgc291cmNlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3aGljaCBjYW4gc3VwcGx5IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byB0aGUgdHJhdmVyc2FsLgorKiBBZGRlZCBgY29ubmVjdGVkQ29tcG9uZW50KClgIHN0ZXAgYW5kIHJlbGF0ZWQgYFZlcnRleFByb2dyYW1gLgorKiBBZGRlZCBgc3VwcG9ydHNVcHNlcnQoKWAgb3B0aW9uIHRvIGBWZXJ0ZXhGZWF0dXJlc2AgYW5kIGBFZGdlRmVhdHVyZXNgLgorKiBgbWluKClgIGFuZCBgbWF4KClgIG5vdyBzdXBwb3J0IGFsbCB0eXBlcyBpbXBsZW1lbnRpbmcgYENvbXBhcmFibGVgLgorKiBDaGFuZ2UgdGhlIGB0b1N0cmluZygpYCBvZiBgUGF0aGAgdG8gYmUgc3RhbmRhcmRpemVkIGFzIG90aGVyIGdyYXBoIGVsZW1lbnRzIGFyZS4KKyogYGhhZG9vcC1ncmVtbGluYCBubyBsb25nZXIgZ2VuZXJhdGVzIGEgdGVzdCBhcnRpZmFjdC4KKyogQWxsb3dlZCBgR3JhcGhQcm92aWRlcmAgdG8gZXhwb3NlIGEgY2FjaGVkIGBHcmFwaC5GZWF0dXJlYCBvYmplY3Qgc28gdGhhdCB0aGUgdGVzdCBzdWl0ZSBjb3VsZCByZS11c2UgdGhlbSB0byBzcGVlZCB0ZXN0IHJ1bnMuCisqIEZpeGVkIGEgYnVnIGluIGBSZWR1Y2luZ0JhcnJpZXJTdGVwYCwgdGhhdCByZXR1cm5lZCB0aGUgcHJvdmlkZWQgc2VlZCB2YWx1ZSBkZXNwaXRlIG5vIGVsZW1lbnRzIGJlaW5nIGF2YWlsYWJsZS4KKyogQ2hhbmdlZCB0aGUgb3JkZXIgb2YgYHNlbGVjdCgpYCBzY29wZXMuIFRoZSBvcmRlciBpcyBub3c6IG1hcHMsIHNpZGUtZWZmZWN0cywgcGF0aHMuCisqIE1vdmVkIGBUcmF2ZXJzYWxFbmdpbmVgIHRvIGBncmVtbGluLXRlc3RgIGFzIGl0IGhhcyBsb25nIGJlZW4gb25seSB1c2VkIGluIHRlc3RpbmcgaW5mcmFzdHJ1Y3R1cmUuCisqIE5lc3RlZCBsb29wIHN1cHBvcnQgYWRkZWQgYWxsb3dpbmcgYHJlcGVhdCgpYCBzdGVwcyB0byBiZSBuZXN0ZWQuCisqIEV2ZW50cyBmcm9tIGBFdmVudFN0cmF0ZWd5YCByYWlzZWQgZnJvbSAibmV3IiBtdXRhdGlvbnMgd2lsbCBub3cgcmV0dXJuIGEgYEtleWVkVmVydGV4UHJvcGVydHlgIG9yIGBLZXllZFByb3BlcnR5YCBhcyBpcyBhcHByb3ByaWF0ZS4KKyogYE11dGF0aW9uTGlzdGVuZXIjdmVydGV4UHJvcGVydHlDaGFuZ2VkKFZlcnRleCwgVmVydGV4UHJvcGVydHksIE9iamVjdCwgT2JqZWN0Li4uKWAgbm8gbG9uZ2VyIGhhcyBhIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCisqIERlcHJlY2F0ZWQgYEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwYCBhcyBpdCBpcyBub3cgYW5hbG9nb3VzIHRvIGBHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyR3JlbWxpblYyZDBgLgorKiBNb3ZlZCBwcmV2aW91c2x5IGRlcHJlY2F0ZWQgYFJlbW90ZUdyYXBoYCB0byBgZ3JlbWxpbi10ZXN0YCBhcyBpdCBpcyBub3cganVzdCBhIHRlc3RpbmcgY29tcG9uZW50LgorKiBSZW1vdmVkIHByZXZpb3VzbHkgZGVwcmVjYXRlZCBgUmVtb3RlU3RyYXRlZ3kuaW5zdGFuY2UoKWAgYW5kIHRoZSBzdHJhdGVneSBubyBsb25nZXIgaGFzIGFueSBjb25uZWN0aW9uIHRvIGBSZW1vdGVHcmFwaGAuCisqIFJlbW92ZWQgcHJldmlvdXNseSBkZXByZWNhdGVkIG1ldGhvZHMgaW4gYFN1YmdyYXBoU3RyYXRlZ3lgIGFuZCBgUGFydGl0aW9uU3RyYXRlZ3lgIGJ1aWxkZXJzLgorKiBSZW1vdmVkIHByZXZpb3VzbHkgZGVwcmVjYXRlZCBDcmVkZW50aWFscyBEU0wgaW5mcmFzdHJ1Y3R1cmUuCisqIFJlbW92ZWQgcHJldmlvdXNseSBkZXByZWNhdGVkIGBSZW1vdGVDb25uZWN0aW9uI3N1Ym1pdChUcmF2ZXJzYWwpYCBhbmQgYFJlbW90ZUNvbm5lY3Rpb24jc3VibWl0KEJ5dGVjb2RlKWAgbWV0aG9kcy4KKyogUmVtb3ZlZCBwcmV2aW91c2x5IGRlcHJlY2F0ZWQgYE11dGF0aW9uTGlzdGVuZXIjdmVydGV4UHJvcGVydHlDaGFuZ2VkKFZlcnRleCwgUHJvcGVydHksIE9iamVjdCwgT2JqZWN0Li4uKWAuCisqIFJlbW92ZWQgcHJldmlvdXNseSBkZXByZWNhdGVkIGBPcFNlbGVjdG9ySGFuZGxlcmAgY29uc3RydWN0b3IuCisqIFJlbW92ZWQgcHJldmlvdXNseSBkZXByZWNhdGVkIGBjbG9zZSgpYCBmcm9tIGBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lYCB3aGljaCBubyBsb25nZXIgaW1wbGVtZW50cyBgQXV0b0Nsb3NlYWJsZWAuCisqIFJlbW92ZWQgcHJldmlvdXNseSBkZXByZWNhdGVkIGBnZXRHcmFwaElucHV0Rm9ybWF0KClgIGFuZCBgZ2V0R3JhcGhPdXRwdXRGb3JtYXQoKWAgZnJvbSBgSGFkb29wQ29uZmlndXJhdGlvbmAuCisqIFJlbW92ZWQgcHJldmlvdXNseSBkZXByZWNhdGVkIGBBYnN0cmFjdE9wUHJvY2Vzc29yI21ha2VGcmFtZSgpYCBtZXRob2QuCisqIFJlbW92ZWQgcHJldmlvdXNseSBkZXByZWNhdGVkIGBBdXRoZW50aWNhdGlvblNldHRpbmdzLmNsYXNzTmFtZWAgY29uZmlndXJhdGlvbiBvcHRpb24gaW4gR3JlbWxpbiBTZXJ2ZXIuCisqIFJlbW92ZWQgcHJldmlvdXNseSBkZXByZWNhdGVkIGBHcmFwaE1hbmFnZXJgIG1ldGhvZHMgYGdldEdyYXBocygpYCBhbmQgYGdldFRyYXZlcnNhbFNvdXJjZXMoKWAuCisqIFJlbW92ZWQgcHJldmlvdXNseSBkZXByZWNhdGVkIEdyZW1saW4gU2VydmVyIHNldHRpbmcgZm9yIGBzZXJpYWxpemVkUmVzcG9uc2VUaW1lb3V0YC4KKyogUmVtb3ZlZCBwcmV2aW91c2x5IGRlcHJlY2F0ZWQgU3RydWN0dXJlIEFQSSBleGNlcHRpb25zIHJlbGF0ZWQgdG8gImVsZW1lbnQgbm90IGZvdW5kIiBzaXR1YXRpb25zLgorKiBSZW1vdmVkIHByZXZpb3VzbHkgZGVwcmVjYXRlZCBgcmViaW5kaW5nc2Agb3B0aW9ucyBmcm9tIHRoZSBKYXZhIGRyaXZlciBBUEkuCisqIFJlbW92ZWQgcHJldmlvdXNseSBkZXByZWNhdGVkIGBMYW1iZGFDb2xsZWN0aW5nQmFycmllclN0ZXAuQ29uc3VtZXJzYCBlbnVtLgorKiBSZW1vdmVkIHByZXZpb3VzbHkgZGVwcmVjYXRlZCBgSGFzQ29udGFpbmVyI21ha2VIYXNDb250YWluZXJzKFN0cmluZywgUClgCisqIFJlbW92ZWQgc3VwcG9ydCBmb3IgR2lyYXBoLgorKiBSZW1vdmVkIHByZXZpb3VzbHkgZGVwcmVjYXRlZCBKYXZhU2NyaXB0IERyaXZlciBwcm9wZXJ0eSBgdHJhdmVyc2Vyc2Agb2YgdGhlIGBSZXN1bHRTZXRgLgorKiBncmVtbGluLXB5dGhvbjogdXNlIGV4cGxpY2l0IEJpbmRpbmdzIG9iamVjdCBmb3IgcHl0aG9uIGluc3RlYWQgb2YgYSAyLXR1cGxlCisKKz09PT0gQnVncworCisqIFRJTktFUlBPUC0xNzc3IEdyZW1saW4gLm1heCBzdGVwIHJldHVybnMgLTIxNDc0ODM2NDggZm9yIGVtcHR5IHJlc3VsdCBzZXRzICooYnJlYWtpbmcpKgorKiBUSU5LRVJQT1AtMTg2OSBQcm9maWxlIHN0ZXAgYW5kIGl0ZXJhdGUgZG8gbm90IHBsYXkgbmljZWx5IHdpdGggZWFjaCBvdGhlcgorKiBUSU5LRVJQT1AtMTg5OCBJc3N1ZSB3aXRoIGJpbmRpbmdzIGluIHN0cmF0ZWdpZXMgYW5kIGxhbWJkYXMKKyogVElOS0VSUE9QLTE5MjcgR2hlcmtpbiBzY2VuYXJpbyBleHBlY3RzIGxpc3Qgd2l0aCBkdXBsaWNhdGVzLCBidXQgcmVjZWl2ZXMgZzpTZXQKKyogVElOS0VSUE9QLTE5MzMgZ3JlbWxpbi1weXRob24gbWF4aW11bSByZWN1cnNpb24gZGVwdGggZXhjZWVkZWQgb24gbGFyZ2UgcmVzcG9uc2VzCisqIFRJTktFUlBPUC0xOTQ3IFBhdGggaGlzdG9yeSBpc24ndCBwcmVzZXJ2ZWQgZm9yIGtleXMgaW4gbXV0YXRpb25zCisqIFRJTktFUlBPUC0xOTQ5IEZvcm1hdHRpbmcgZXJyb3Igb24gd2Vic2l0ZQorKiBUSU5LRVJQT1AtMTk1OCBUaW5rZXJHcmFwaENvdW50U3RyYXRlZ3kgY2FuIHJldHVybiB3cm9uZyBjb3VudHMKKyogVElOS0VSUE9QLTE5NjEgRHVwbGljYXRlIGNvcGllcyBvZiBpbWFnZXMgZGlyZWN0b3J5IGluIGRvY3MKKyogVElOS0VSUE9QLTE5NjIgR3Jvb3Z5VHJhbnNsYXRvciBkb2Vzbid0IGhhbmRsZSBlbXB0eSBtYXBzCisqIFRJTktFUlBPUC0xOTYzIFVzZSBvZiByZWR1Y2luZyBzdGVwIGluIGNob29zZSgpCisqIFRJTktFUlBPUC0xOTcyIGluamVjdCgpIHRlc3RzIGFyZSB0aHJvd2luZyBleGNlcHRpb25zIGluIC5ORVQgR0xWIHRlc3RzCisqIFRJTktFUlBPUC0xOTc4IENoZWNrIGZvciBXZWJzb2NrZXQgY29ubmVjdGlvbiBzdGF0ZSB3aGVuIHJldHJpZXZlZCBmcm9tIENvbm5lY3Rpb24gUG9vbCBtaXNzaW5nCisqIFRJTktFUlBPUC0xOTc5IFNldmVyYWwgT0xBUCBpc3N1ZXMgaW4gTWF0aFN0ZXAKKyogVElOS0VSUE9QLTE5ODggbWlub3IgZXJyb3IgaW4gZG9jdW1lbnRhdGlvbgorKiBUSU5LRVJQT1AtMTk5OSBbSmF2YV1bZ3JlbWxpbi1kcml2ZXJdIFF1ZXJ5IHRvIGEgcmVtb3RlIHNlcnZlciB2aWEgdGhlIHdlYnNvY2tldCBjbGllbnQgaGFuZ3MgaW5kZWZpbml0ZWx5IGlmIHRoZSBzZXJ2ZXIgYmVjb21lcyB1bmF2YWlsYWJsZQorKiBUSU5LRVJQT1AtMjAwNSBJbnRlcm1pdHRlbnQgTnVsbFBvaW50ZXJFeGNlcHRpb24gaW4gcmVzcG9uc2UgaGFuZGxpbmcKKyogVElOS0VSUE9QLTIwMDYgR3JhcGhNTCBzZXJpYWxpemF0aW9uIGludmFsaWQgaWYgYSB2ZXJ0ZXggYW5kIGVkZ2UgaGF2ZSBzaW1pbGFyIG5hbWVkIHByb3BlcnR5CisqIFRJTktFUlBPUC0yMDA5IFBpY2suYW55IGFuZCBQaWNrLm5vbmUgc2hvdWxkIGJlIGV4cG9zZWQgaW4gR3JlbWxpbi1KYXZhU2NyaXB0CisqIFRJTktFUlBPUC0yMDIxIFByZXZlbnQgbWF4aW11bSByZWN1cnNpb24gZGVwdGggZmFpbHVyZQorKiBUSU5LRVJQT1AtMjAyOCBBYnN0cmFjdEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwIHNob3VsZCByZWdpc3RlciBHcmVtbGluU2VydmVyTW9kdWxlIHdoZW4gbWFwcGVyIGlzIHByb3ZpZGVkCisqIFRJTktFUlBPUC0yMDI5IENvbmN1cnJlbnRNb2RpZmljYXRpb25FeGNlcHRpb24gZm9yIElubGluZUZpbHRlclN0cmF0ZWd5CisqIFRJTktFUlBPUC0yMDMwIEtlZXBBbGl2ZSB0YXNrIGV4ZWN1dGVkIGZvciBldmVyeSBDb25uZWN0aW9uLndyaXRlIGNhbGwKKyogVElOS0VSUE9QLTIwMzIgVXBkYXRlIGp5dGhvbi1zdGFuZGFsb25lCisqIFRJTktFUlBPUC0yMDQ0IENhbm5vdCByZWNvbm5lY3QgdG8gQXp1cmUgY29zbW9zIGhvc3QgdGhhdCBiZWNvbWVzIGF2YWlsYWJsZSBhZ2FpbgorKiBUSU5LRVJQT1AtMjA1OCBDb250YWlucyBwcmVkaWNhdGVzIHNob3VsZCByZWx5IG9uIENvbXBhcmUgcHJlZGljYXRlcyAqKGJyZWFraW5nKSoKKyogVElOS0VSUE9QLTIwODEgUGVyc2lzdGVkT3V0cHV0UkREIG1hdGVyaWFsaXNlcyByZGQgbGF6aWx5IHdpdGggU3BhcmsgMi54CisqIFRJTktFUlBPUC0yMDkxIFdyb25nL01pc3NpbmcgZmVhdHVyZSByZXF1aXJlbWVudHMgaW4gU3RydWN0dXJlU3RhbmRhcmRUZXN0U3VpdGUKKyogVElOS0VSUE9QLTIwOTQgR3JlbWxpbiBEcml2ZXIgQ2x1c3RlciBCdWlsZGVyIHNlcmlhbGl6ZXIgbWV0aG9kIGRvZXMgbm90IHVzZSBtaW1lVHlwZSBhcyBzdWdnZXN0ZWQKKyogVElOS0VSUE9QLTIwOTUgR3JvdXBTdGVwIGxvb2tzIGZvciBpcnJlbGV2YW50IGJhcnJpZXIgc3RlcHMKKyogVElOS0VSUE9QLTIwOTYgZ3JlbWxpbnB5dGhvbjogQXR0cmlidXRlRXJyb3Igd2hlbiBjb25uZWN0aW9uIGlzIGNsb3NlZCBiZWZvcmUgcmVzdWx0IGlzIHJlY2VpdmVkCisqIFRJTktFUlBPUC0yMTAwIGNvYWxlc2NlKCkgY3JlYXRpbmcgdW5leHBlY3RlZCByZXN1bHRzIHdoZW4gdXNlZCB3aXRoIG9yZGVyKCkKKyogVElOS0VSUE9QLTIxMTMgUC5XaXRoaW4oKSBkb2Vzbid0IHdvcmsgd2hlbiBnaXZlbiBhIExpc3QgYXJndW1lbnQKKworPT09PSBJbXByb3ZlbWVudHMKKworKiBUSU5LRVJQT1AtNTUwIEdyZW1saW4gSU8gbmVlZHMgdG8gc3VwcG9ydCBib3RoIE9MVFAgYW5kIE9MQVAgbmF0dXJhbGx5LgorKiBUSU5LRVJQT1AtOTY3IFN1cHBvcnQgbmVzdGVkLXJlcGVhdCgpIHN0cnVjdHVyZXMKKyogVElOS0VSUE9QLTExMTMgR3JhcGhDb21wdXRlciBzdWJjbGFzc2VzIHNob3VsZCBzdXBwb3J0IG5hdGl2ZSBtZXRob2RzCisqIFRJTktFUlBPUC0xMTQzIFJlbW92ZSBkZXByZWNhdGVkIFRyYXZlcnNhbFNvdXJjZS5CdWlsZGVyIGFuZCBUcmF2ZXJzYWxFbmdpbmUuICooYnJlYWtpbmcpKgorKiBUSU5LRVJQT1AtMTI5NiBSZW1vdmUgZGVwcmVjYXRlZCBzZXJpYWxpemVkUmVzcG9uc2VUaW1lb3V0IGZyb20gR3JlbWxpbiBTZXJ2ZXIgKihicmVha2luZykqCisqIFRJTktFUlBPUC0xMzQyIEFsbG93IHNldHRpbmcgc2NyaXB0RXZhbHVhdGlvblRpbWVvdXQgaW4gZHJpdmVyCisqIFRJTktFUlBPUC0xMzY1IExvZyB0aGUgc2VlZCB1c2VkIHRvIGluaXRpYWxpemUgUmFuZG9tIGluIHRlc3RzCisqIFRJTktFUlBPUC0xNDEwIG12biBpbnN0YWxsIC1EbWF2ZW4udGVzdC5za2lwPXRydWUgZG9lc24ndCB3b3JrIG9uIGEgY2xlYW4gbWFjaGluZSAqKGJyZWFraW5nKSoKKyogVElOS0VSUE9QLTE0NDYgQWRkIGEgU3RyaW5nRmFjdG9yeSBmb3IgUGF0aCB3aGljaCBwcmVmaXhlcyB3aXRoIHR5cGUuCisqIFRJTktFUlBPUC0xNDQ3IEFkZCBzb21lIEphdmFTY3JpcHQgaW50ZWxsaWdlbmNlIHRvIHRoZSBkb2N1bWVudGF0aW9uIHNvIHRoYXQgY29tbWVudHMgYW5kIG91dHB1dCBhcmUgbm90IGNvcGllZCBpbiBhIGNvcHkgcGFzdGUKKyogVElOS0VSUE9QLTE0OTQgTWVhbnMgb2YgZXhwb3NpbmcgZXhlY3V0aW9uIGluZm9ybWF0aW9uIGZyb20gYSByZXN1bHQgcHJvZHVjZWQgYnkgUmVtb3RlQ29ubmVjdGlvbgorKiBUSU5LRVJQT1AtMTUxOCBQcm92aWRlIGEgd2F5IGZvciBwcm92aWRlcnMgdG8gZXhwb3NlIHN0YXRpYyBHcmFwaC5GZWF0dXJlcyB0byB0ZXN0cworKiBUSU5LRVJQT1AtMTUyMiBPcmRlciBvZiBzZWxlY3QoKSBzY29wZXMgKihicmVha2luZykqCisqIFRJTktFUlBPUC0xNTk1IEdvIHRocm91Z2ggVHJhdmVyc2FsVmVydGV4UHJvZ3JhbSB3aXRoIGEgcHJvZmlsZSBhbmQgb3B0aW1pemUuCisqIFRJTktFUlBPUC0xNjI4IEltcGxlbWVudCBUcmF2ZXJzYWxTZWxlY3RTdGVwCisqIFRJTktFUlBPUC0xNjg1IEludHJvZHVjZSBvcHRpb25hbCBmZWF0dXJlIHRvIGFsbG93IGZvciB1cHNlcnRzIHdpdGhvdXQgcmVhZC1iZWZvcmUtd3JpdGUKKyogVElOS0VSUE9QLTE3MDUgUmVtb3ZlIGRlcHJlY2F0ZWQgcmViaW5kaW5ncyBvcHRpb24gKihicmVha2luZykqCisqIFRJTktFUlBPUC0xNzA3IFJlbW92ZSBkZXByZWNhdGVkIEF1dGhlbnRpY2F0aW9uU2V0dGluZ3MuY2xhc3NOYW1lIG9wdGlvbiAqKGJyZWFraW5nKSoKKyogVElOS0VSUE9QLTE3NTUgTm8gZG9jcyBmb3IgUmVmZXJlbmNlRWxlbWVudHMKKyogVElOS0VSUE9QLTE3NjkgUHl0aG9uIGdyYXBoW2VtcHR5XSBzdHJpbmcgcmVwcmVzZW50YXRpb24gaXMgY29uZnVzaW5nCisqIFRJTktFUlBPUC0xNzc0IEdyZW1saW4gLk5FVDogU3VwcG9ydCBtaW4gYW5kIG1heCBzaXplcyBpbiBDb25uZWN0aW9uIHBvb2wKKyogVElOS0VSUE9QLTE3NzUgR3JlbWxpbiAuTkVUOiBJbXBsZW1lbnQgYSBDb25uZWN0aW9uIHdyaXRlIHF1ZXVlIHRvIHN1cHBvcnQgcmVxdWVzdCBwaXBlbGluaW5nCisqIFRJTktFUlBPUC0xNzc4IERvIG5vdCBwcm9tb3RlIHRpbWVkSW50ZXJydXB0IG9wdGlvbiBmb3IgR3JlbWxpbiBTZXJ2ZXIgc2NyaXB0IHByb2Nlc3NpbmcKKyogVElOS0VSUE9QLTE3ODAgQWRkIGF1dGhlbnRpY2F0aW9uIHRlc3RzIGZvciBncmVtbGluLXB5dGhvbgorKiBUSU5LRVJQT1AtMTgzMSBSZWZhY3RvciBFdmVudFN0cmF0ZWd5ICAqKGJyZWFraW5nKSoKKyogVElOS0VSUE9QLTE4MzYgLk5FVCBzYW1wbGUgcHJvamVjdAorKiBUSU5LRVJQT1AtMTg0MSBJbmNsdWRlIFB5dGhvbiBHTFYgdGVzdHMgb24gVHJhdmlzQ0kKKyogVElOS0VSUE9QLTE4NDkgUHJvdmlkZSBhIHdheSB0byBmb2xkKCkgd2l0aCBhbiBpbmRleAorKiBUSU5LRVJQT1AtMTg2NCBHcmVtbGluIFB5dGhvbiB0ZXN0cyBmb3IgR3JhcGhTT04gMi4wIGFuZCAzLjAKKyogVElOS0VSUE9QLTE4NzggU3BhcnFsIHRvIEdyZW1saW4gQ29tcGlsZXIKKyogVElOS0VSUE9QLTE4ODggRXh0ZW5kIG1heCBhbmQgbWluIHRvIGFsbCBDb21wYXJhYmxlIHByb3BlcnRpZXMsIG5vdCBqdXN0IE51bWJlcnMgKihicmVha2luZykqCisqIFRJTktFUlBPUC0xODg5IEphdmFTY3JpcHQgR0xWOiBVc2UgaGVhcnRiZWF0IHRvIHByZXZlbnQgY29ubmVjdGlvbiB0aW1lb3V0CisqIFRJTktFUlBPUC0xODk3IFByb3ZpZGUgRG9ja2VyIGltYWdlcyBvZiBHcmVtbGluIFNlcnZlciBhbmQgQ29uc29sZQorKiBUSU5LRVJQT1AtMTkwNiBNYWtlIFJlc3BvbnNlRXhjZXB0aW9uIGV4cGxvcmFibGUKKyogVElOS0VSUE9QLTE5MTIgUmVtb3ZlIE1ENSBjaGVja3N1bXMKKyogVElOS0VSUE9QLTE5MTMgRXhwb3NlIG1ldGFkYXRhIGZyb20gR3JlbWxpbiBTZXJ2ZXIgdG8gQ2xpZW50cworKiBUSU5LRVJQT1AtMTkzMCBEcm9wIHN1cHBvcnQgZm9yIEdpcmFwaCAqKGJyZWFraW5nKSoKKyogVElOS0VSUE9QLTE5MzQgQnVtcCB0byBsYXRlc3QgdmVyc2lvbiBvZiBodHRwY2xpZW50CisqIFRJTktFUlBPUC0xOTM2IFBlcmZvcm1hbmNlIGVuaGFuY2VtZW50IHRvIEJ5dGVjb2RlIGRlc2VyaWFsaXphdGlvbgorKiBUSU5LRVJQT1AtMTk0MSBSZW1vdmUgZGVwcmVjYXRlZCBTdHJ1Y3R1cmUgQVBJIGV4Y2VwdGlvbiBtZXRob2RzICooYnJlYWtpbmcpKgorKiBUSU5LRVJQT1AtMTk0MiBCaW5hcnkgc2VyaWFsaXphdGlvbiBmb3JtYXQKKyogVElOS0VSUE9QLTE5NDUgQWRkIHN1cHBvcnQgZm9yIGV4dGVuZGVkIEdyYXBoU29uIHR5cGVzIHRvIEdyZW1saW4ubmV0CisqIFRJTktFUlBPUC0xOTQ2IFJlbW92ZSB0aGUgZGVwcmVjYXRlZCBDcmVkZW50aWFscyBEU0wgaW5mcmFzdHJ1Y3R1cmUgKihicmVha2luZykqCisqIFRJTktFUlBPUC0xOTUwIFRyYXZlcnNhbCBjb25zdHJ1Y3Rpb24gcGVyZm9ybWFuY2UgZW5oYW5jZW1lbnRzCisqIFRJTktFUlBPUC0xOTUxIGdyZW1saW4tc2VydmVyLmJhdCBkb2Vzbid0IHN1cHBvcnQgcGF0aHMgY29udGFpbmluZyBzcGFjZXMKKyogVElOS0VSUE9QLTE5NTMgQnVtcCB0byBHcm9vdnkgMi40LjE1CisqIFRJTktFUlBPUC0xOTU0IFJlbW92ZSBkZXByZWNhdGVkIEdyYXBoTWFuYWdlciBtZXRob2RzICooYnJlYWtpbmcpKgorKiBUSU5LRVJQT1AtMTk1OSBQcm92aWRlIGEgd2F5IHRvIHN1Ym1pdCBzY3JpcHRzIHRvIHRoZSBzZXJ2ZXIgaW4gZ3JlbWxpbi1qYXZhc2NyaXB0CisqIFRJTktFUlBPUC0xOTY3IEFkZCBhIGNvbm5lY3RlZENvbXBvbmVudCgpIHN0ZXAKKyogVElOS0VSUE9QLTE5NjggUmVmYWN0b3IgZWxlbWVudHMgb2YgR3JlbWxpbiBTZXJ2ZXIgdGVzdGluZworKiBUSU5LRVJQT1AtMTk3NSBJbnRyb2R1Y2Ugd2l0aCgpIHN0ZXAgbW9kdWxhdG9yICooYnJlYWtpbmcpKgorKiBUSU5LRVJQT1AtMTk3NiBJbmNsdWRlIENvbXB1dGVyIHRlc3RzIGZvciBHTFZzCisqIFRJTktFUlBPUC0xOTc3IEdyZW1saW4tSmF2YVNjcmlwdDogU3VwcG9ydCBTQVNMIGF1dGhlbnRpY2F0aW9uCisqIFRJTktFUlBPUC0xOTg0IEFsbG93IHN1cHBvcnQgZm9yIG11bHRpcGxlIHNlcmlhbGl6ZXIgdmVyc2lvbnMgaW4gR3JlbWxpbiBTZXJ2ZXIgSFRUUCAqKGJyZWFraW5nKSoKKyogVElOS0VSUE9QLTE5ODUgVXBkYXRlIHBvc2l0aW9uIG9uIGJ1bGsgbG9hZGluZworKiBUSU5LRVJQT1AtMTk4NiBSZW1vdmUgZGVwcmVjYXRpb24gZnJvbSBQYXJ0aXRpb25TdHJhdGVneSwgU3ViZ3JhcGhTdHJhdGVneSBhbmQgR3JlbWxpblNjcmlwdEVuZ2luZSAqKGJyZWFraW5nKSoKKyogVElOS0VSUE9QLTE5ODcgQnVtcCB0byBOZXR0eSA0LjEueAorKiBUSU5LRVJQT1AtMTk4OSBQcmVzZXJ2ZSBvcmRlciB0aGF0IHBsdWdpbnMgYXJlIGFwcGxpZWQgaW4gR3JlbWxpbiBDb25zb2xlCisqIFRJTktFUlBPUC0xOTkwIEFkZCBhIHNob3J0ZXN0UGF0aCgpIHN0ZXAKKyogVElOS0VSUE9QLTE5OTMgQnVtcCB0byBTcGFyayAyLjMuMQorKiBUSU5LRVJQT1AtMTk5NSBEcml2ZXJSZW1vdGVDb25uZWN0aW9uIGNsb3NlKCkgbWV0aG9kIHJldHVybnMgdW5kZWZpbmVkCisqIFRJTktFUlBPUC0xOTk2IEludHJvZHVjZSByZWFkKCkgYW5kIHdyaXRlKCkgc3RlcHMKKyogVElOS0VSUE9QLTIwMDIgQ3JlYXRlIGEgYmxvZyBwb3N0IGV4cGxhaW5pbmcgdGhlIHZhbHVlIG9mIHVzaW5nIFRpbmtlclBvcAorKiBUSU5LRVJQT1AtMjAxMCBHZW5lcmF0ZSBqc2RvYyBmb3IgZ3JlbWxpbi1qYXZhc2NyaXB0CisqIFRJTktFUlBPUC0yMDExIFVzZSBOdW1iZXJIZWxwZXIgb24gY2hvb3NlKCkKKyogVElOS0VSUE9QLTIwMTIgVGFyZ2V0IC5ORVQgU3RhbmRhcmQgMi4wIGZvciBHcmVtbGluLk5ldAorKiBUSU5LRVJQT1AtMjAxMyBQcm9jZXNzIHRlc3RzIHRoYXQgYXJlIGF1dG8taWdub3JlZCBzdGluaworKiBUSU5LRVJQT1AtMjAxNSBBbGxvdyB1c2VycyB0byBjb25maWd1cmUgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9ucworKiBUSU5LRVJQT1AtMjAxNiBVcGdyYWRlIEphY2tzb24gRmFzdGVyWE1MIHRvIDIuOS41IG9yIGxhdGVyIHRvIGZpeCBzZWN1cml0eSB2dWxuZXJhYmlsaXR5CisqIFRJTktFUlBPUC0yMDE3IENoZWNrIGZvciBDb2x1bW4gaW4gYnkoKQorKiBUSU5LRVJQT1AtMjAxOCBHZW5lcmF0ZSBBUEkgZG9jcyBmb3IgR3JlbWxpbi5OZXQKKyogVElOS0VSUE9QLTIwMjIgQ2x1c3RlciBTU0wgc2hvdWxkIHRydXN0IGRlZmF1bHQgY2EgY2VydHMgYnkgZGVmYXVsdAorKiBUSU5LRVJQT1AtMjAyMyBHcmVtbGluIFNlcnZlciBzaG91bGQgbm90IGNyZWF0ZSBzZWxmLXNpZ25lZCBjZXJ0cyAqKGJyZWFraW5nKSoKKyogVElOS0VSUE9QLTIwMjQgR3JlbWxpbiBTZXJ2ZXIgQXBwbGljYXRpb24gYXJjaGV0eXBlIHNob3VsZCBjb25uZWN0IHZpYSB3aXRoUmVtb3RlCisqIFRJTktFUlBPUC0yMDI1IENoYW5nZSB0byBTSEEtMjU2LzUxMiBhbmQgZHJvcCBTSEEtMSBmb3IgcmVsZWFzZXMKKyogVElOS0VSUE9QLTIwMjYgR3JlbWxpbi5OZXQuRHJpdmVyIHNob3VsZCBjaGVjayBDbGllbnRXZWJTb2NrZXQuU3RhdGUgYmVmb3JlIGNsb3NpbmcKKyogVElOS0VSUE9QLTIwMzEgUmVtb3ZlIHN1cHBvcnQgZm9yIC1pIGluIGdyZW1saW4tc2VydmVyLnNoICooYnJlYWtpbmcpKgorKiBUSU5LRVJQT1AtMjAzMyBNYWludGFpbiBvcmRlciBvZiBwcm9maWxlKCkgYW5ub3RhdGlvbnMKKyogVElOS0VSUE9QLTIwMzQgUmVnaXN0ZXIgc3luY2hyb25pemVkTWFwKCkgd2l0aCBHcnlvCisqIFRJTktFUlBPUC0yMDM3IFJlbW92ZSB1bnVzZWQgZ3Jvb3Z5LXNxbCBkZXBlbmRlbmN5CisqIFRJTktFUlBPUC0yMDM4IE1ha2UgZ3Jvb3Z5IHNjcmlwdCBjYWNoZSBzaXplIGNvbmZpZ3VyYWJsZQorKiBUSU5LRVJQT1AtMjAzOSBCdW1wIHRvIEdyb292eSAyLjUuMiAqKGJyZWFraW5nKSoKKyogVElOS0VSUE9QLTIwNDAgSW1wcm92ZSBmbGV4aWJpbGl0eSBvZiBHcm9vdnlUcmFuc2xhdG9yIHRvIGhhbmRsZSBjdXN0b20gdHlwZXMKKyogVElOS0VSUE9QLTIwNDEgVGV4dCBQcmVkaWNhdGVzCisqIFRJTktFUlBPUC0yMDQ1IFJlbW92ZSBub24taW5keSBncm9vdnkgZGVwZW5kZW5jaWVzCisqIFRJTktFUlBPUC0yMDQ5IFNpbmdsZSBhcmd1bWVudCB3aXRoKCkgb3ZlcmxvYWQKKyogVElOS0VSUE9QLTIwNTAgQWRkIGEgOmJ5dGVjb2RlIGNvbW1hbmQgdG8gR3JlbWxpbiBDb25zb2xlCisqIFRJTktFUlBPUC0yMDUzIFByb3ZpZGVyIE9wdGlvbnNTdHJhdGVneSBmb3IgdHJhdmVyc2FsIGNvbmZpZ3VyYXRpb25zCisqIFRJTktFUlBPUC0yMDU1IFByb3ZpZGUgc3VwcG9ydCBmb3Igc3BlY2lhbCBudW1iZXIgY2FzZXMgbGlrZSBJbmZpbml0eSBpbiBHcmFwaFNPTgorKiBUSU5LRVJQT1AtMjA1NiBVc2UgTnVtYmVySGVscGVyIGluIENvbXBhcmUKKyogVElOS0VSUE9QLTIwNTkgTW9kdWxhdGlvbiBvZiB2YWx1ZU1hcCgpICooYnJlYWtpbmcpKgorKiBUSU5LRVJQT1AtMjA2MCBNYWtlIE11dGF0aW5nIHN0ZXBzIG5vbi1maW5hbAorKiBUSU5LRVJQT1AtMjA2MSBBZGQgd2l0aCgpIGNvbmZpZ3VyYXRpb24gYXMgZ2xvYmFsIHRvIGEgdHJhdmVyc2FsCisqIFRJTktFUlBPUC0yMDYyIEFkZCBUcmF2ZXJzYWwgY2xhc3MgdG8gQ29yZUltcG9ydHMKKyogVElOS0VSUE9QLTIwNjQgQWRkIHN0YXR1cyBhdHRyaWJ1dGVzIHRvIHJlc3VsdHMgZm9yIGdyZW1saW4tamF2YXNjcmlwdAorKiBUSU5LRVJQT1AtMjA2NSBPcHRpbWl6ZSBpdGVyYXRlKCkgZm9yIHJlbW90ZSB0cmF2ZXJzYWxzCisqIFRJTktFUlBPUC0yMDY2IEJ1bXAgdG8gR3Jvb3Z5IDIuNS4zCisqIFRJTktFUlBPUC0yMDY3IEFsbG93IGdldHRpbmcgcmF3IGRhdGEgZnJvbSBHcmVtbGluLk5ldC5Ecml2ZXIuSUdyZW1saW5DbGllbnQKKyogVElOS0VSUE9QLTIwNjggQnVtcCBKYWNrc29uIERhdGFiaW5kIDIuOS43CisqIFRJTktFUlBPUC0yMDY5IERvY3VtZW50IGNvbmZpZ3VyYXRpb24gb2YgR3JlbWxpbi5OZXQKKyogVElOS0VSUE9QLTIwNzAgZ3JlbWxpbi1qYXZhc2NyaXB0OiBJbnRyb2R1Y2UgQ29ubmVjdGlvbiByZXByZXNlbnRhdGlvbgorKiBUSU5LRVJQT1AtMjA3MSBncmVtbGluLXB5dGhvbjogdGhlIGdyYXBoc29uIGRlc2VyaWFsaXplciBmb3IgZzpTZXQgc2hvdWxkIHJldHVybiBhIHB5dGhvbiBzZXQKKyogVElOS0VSUE9QLTIwNzIgUmVmYWN0b3IgY3VzdG9tIHR5cGUgdHJhbnNsYXRpb24gZm9yIFNjcmlwdFRyYW5zbGF0b3JzICooYnJlYWtpbmcpKgorKiBUSU5LRVJQT1AtMjA3MyBHZW5lcmF0ZSB0YWJzIGZvciBzdGF0aWMgY29kZSBibG9ja3MKKyogVElOS0VSUE9QLTIwNzQgRW5zdXJlIHRoYXQgb25seSBOdUdldCBwYWNrYWdlcyBmb3IgdGhlIGN1cnJlbnQgdmVyc2lvbiBhcmUgcHVzaGVkCisqIFRJTktFUlBPUC0yMDc1IEludHJvZHVjZSBSZWZlcmVuY2VFbGVtZW50U3RyYXRlZ3kKKyogVElOS0VSUE9QLTIwNzcgVmVydGV4UHJvZ3JhbS5CdWlsZGVyIHNob3VsZCBoYXZlIGEgZGVmYXVsdCBjcmVhdGUoKSBtZXRob2Qgd2l0aCBubyBHcmFwaAorKiBUSU5LRVJQT1AtMjA3OCBIaWRlIHVzZSBvZiBFbXB0eUdyYXBoIG9yIFJlbW90ZUdyYXBoIGJlaGluZCBhIG1vcmUgdW5pZmllZCBtZXRob2QgZm9yIFRyYXZlcnNhbFNvdXJjZSBjb25zdHJ1Y3Rpb24KKyogVElOS0VSUE9QLTIwNzkgTW92ZSBSZW1vdGVHcmFwaCB0byB0ZXN0IHBhY2thZ2UgKihicmVha2luZykqCisqIFRJTktFUlBPUC0yMDg0IEZvciByZW1vdGUgcmVxdWVzdHMgaW4gY29uc29sZSBkaXNwbGF5IHRoZSByZW1vdGUgc3RhY2sgdHJhY2UKKyogVElOS0VSUE9QLTIwOTIgRGVwcmVjYXRlIGRlZmF1bHQgR3JhcGhTT04gc2VyaWFsaXplciBmaWVsZHMKKyogVElOS0VSUE9QLTIwOTMgQnVtcCB0byBHcm9vdnkgMi41LjQKKyogVElOS0VSUE9QLTIwOTcgQ3JlYXRlIGEgRHJpdmVyUmVtb3RlQ29ubmVjdGlvbiB3aXRoIGFuIGluaXRpYWxpemVkIENsaWVudAorKiBUSU5LRVJQT1AtMjEwMSBTdXBwb3J0IFNwYXJrIDIuNAorKiBUSU5LRVJQT1AtMjEwMyBSZW1vdmUgZGVwcmVjYXRlZCBzdWJtaXQoKSBvcHRpb25zIG9uIFJlbW90ZUNvbm5lY3Rpb24gKihicmVha2luZykqCisqIFRJTktFUlBPUC0yMTA0IEFsbG93IEltcG9ydEN1c3RvbWl6ZXIgdG8gaGFuZGxlIGZpZWxkcworKiBUSU5LRVJQT1AtMjEwNiBXaGVuIGdyZW1saW4gZXhlY3V0ZXMgdGltZW91dCwgdGhyb3cgVGltZW91dEV4Y2VwdGlvbiBpbnN0ZWFkIG9mIFRyYXZlcnNhbEludGVycnVwdGVkRXhjZXB0aW9uL0ludGVycnVwdGVkSU9FeGNlcHRpb24KKyogVElOS0VSUE9QLTIxMTAgQWxsb3cgQ29ubmVjdGlvbiBvbiBEaWZmZXJlbnQgUGF0aCAoZnJvbSAvZ3JlbWxpbikKKyogVElOS0VSUE9QLTIxMTEgQWRkIEJ1bGtTZXQgYXMgYSBHcmFwaFNPTiB0eXBlICooYnJlYWtpbmcpKgorKiBUSU5LRVJQT1AtMjExNCBEb2N1bWVudCBjb21tb24gR3JlbWxpbiBhbnRpLXBhdHRlcm5zCisqIFRJTktFUlBPUC0yMTE2IEV4cGxpY2l0IEJpbmRpbmdzIG9iamVjdCBmb3IgUHl0aG9uICooYnJlYWtpbmcpKgorKiBUSU5LRVJQT1AtMjExNyBncmVtbGluLXB5dGhvbjogUHJvdmlkZSBhIGJldHRlciBkYXRhIHN0cnVjdHVyZSBmb3IgYSBCaW5kaW5nCisqIFRJTktFUlBPUC0yMTE5IFZhbGlkYXRlIEMjIGNvZGUgc2FtcGxlcyBpbiBkb2NzCisqIFRJTktFUlBPUC0yMTIxIEJ1bXAgSmFja3NvbiBEYXRhYmluZCAyLjkuOAorCiA9PSBUaW5rZXJQb3AgMy4zLjAgKEdyZW1saW4gU3ltcGhvbnkgIzQwIGluIEcgTWlub3IpCiAKIGltYWdlOjpodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYXBhY2hlL3RpbmtlcnBvcC9tYXN0ZXIvZG9jcy9zdGF0aWMvaW1hZ2VzL2dyZW1saW4tbW96YXJ0LnBuZ1t3aWR0aD0xODVdCkBAIC0xOTQsNiArNzA3LDcgQEAKICogRml4ZWQgYmVoYXZpb3Igb2YgYFBgIGZvciBgd2l0aGluKClgIGFuZCBgd2l0aG91dCgpYCBpbiBHTFZzIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBKYXZhIHdoZW4gdXNpbmcgdmFyYXJncy4KICogQ2xlYXJlZCB0aGUgaW5wdXQgYnVmZmVyIGFmdGVyIGV4Y2VwdGlvbnMgaW4gR3JlbWxpbiBDb25zb2xlLgogKiBBZGRlZCBwYXJhbWV0ZXIgdG8gY29uZmlndXJlIHRoZSBgcHJvY2Vzc29yYCBpbiB0aGUgZ3JlbWxpbi1qYXZhc2NyaXB0IGBjbGllbnRgIGNvbnN0cnVjdG9yLgorKiBCdW1wZWQgYE5ldHR5YCB0byA0LjEuMzIuCiAKID09PT0gQnVncwogCmRpZmYgLS1naXQgYS9iaW4vdmFsaWRhdGUtZGlzdHJpYnV0aW9uLnNoIGIvYmluL3ZhbGlkYXRlLWRpc3RyaWJ1dGlvbi5zaAppbmRleCA5MzFhMTcxLi5mM2MzODZiIDEwMDc1NQotLS0gYS9iaW4vdmFsaWRhdGUtZGlzdHJpYnV0aW9uLnNoCisrKyBiL2Jpbi92YWxpZGF0ZS1kaXN0cmlidXRpb24uc2gKQEAgLTIzLDYgKzIzLDcgQEAKICMgcHVibGlzaGVkIEtFWVMgZmlsZSBpbiBvcmRlciBmb3IgdGhhdCBhc3BlY3Qgb2YgdGhlIHZhbGlkYXRpb24KICMgdG8gcGFzcy4KIAorU0NSSVBUX0RJUj0kKGNkIGBkaXJuYW1lICQwYCA7IHB3ZCkKIFRNUF9ESVI9Ii90bXAvdHBkdiIKIAogIyBSZXF1aXJlZC4gT25seSB0aGUgbGF0ZXN0IHZlcnNpb24gb24gZWFjaCByZWxlYXNlIHN0cmVhbSBpcyBhdmFpbGFibGUgb24gZGlzdC4KQEAgLTEzOCwxMSArMTM5LDExIEBACiBjZCAke0RJUl9OQU1FfQogZWNobyAtbiAiKiBjaGVja2luZyBzb3VyY2UgZmlsZXMgLi4uICIKIGZpbmQgLiAtdHlwZSBmIHwgeGFyZ3MgLW4xIC1JIHt9IGZpbGUge30gLS1taW1lIHwgZ3JlcCAnY2hhcnNldD1iaW5hcnknIHwgY3V0IC1mMSAtZDogfAotICBncmVwIC1QdiAnXlwuL2RvY3MvKHN0YXRpY3woc2l0ZS9ob21lKSkvaW1hZ2VzLygoaWNvbnN8bG9nb3N8cG9saWN5fHJlc291cmNlcykvKT9bXi9dKlwuKHBuZ3xqcGd8aWNvfHBkZikkJyB8CisgIGdyZXAgLVB2ICdeXC4vZG9jcy8oc3RhdGljfChzaXRlL2hvbWUpKS8oaW1nfGltYWdlcykvKChpY29uc3xsb2dvc3xwb2xpY3l8cmVzb3VyY2VzKS8pP1teL10qXC4ocG5nfGpwZ3xpY298cGRmKSQnIHwKICAgZ3JlcCAtUHYgJ14uL2dyZW1saW4tZG90bmV0L3NyYy9pbWFnZXMvW14vXSpcLihwbmd8aWNvKSQnIHwKICAgZ3JlcCAtUHYgJ14uL2dyZW1saW4tZG90bmV0Ly4qXC5zbmskJyB8CiAgIGdyZXAgLVB2ICdeLi9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9yZXNvdXJjZXMvW14vXSpcLihwMTJ8amtzKSQnIHwKLSAgZ3JlcCAtUHYgJy8ocmVzb3VyY2VzfGRhdGEpLy4qXC4oa3J5b3xqc29uKSQnID4gLi4vYmluYXJ5LWZpbGVzLnR4dAorICBncmVwIC1QdiAnLyhyZXNvdXJjZXN8ZGF0YSkvLipcLihrcnlvfGpzb258Z2JpbikkJyA+IC4uL2JpbmFyeS1maWxlcy50eHQKIGlmIFsgLXMgLi4vYmluYXJ5LWZpbGVzLnR4dCBdOyB0aGVuCiAgIGVjaG8gIkZvdW5kIHVuZXhwZWN0ZWQgYmluYXJ5IGZpbGVzIChzZWUgJChjZCAuLiA7IHB3ZCkvYmluYXJ5LWZpbGVzLnR4dCkiCiAgIGV4aXQgMQpAQCAtMjA4LDcgKzIwOSw3IEBACiAgIFNDUklQVF9GSUxFTkFNRT0idGVzdC5ncm9vdnkiCiAgIFNDUklQVF9QQVRIPSIke1RNUF9ESVJ9LyR7U0NSSVBUX0ZJTEVOQU1FfSIKICAgZWNobyAke1NDUklQVH0gPiAke1NDUklQVF9QQVRIfQotICBbWyBgYmluL2dyZW1saW4uc2ggPDw8ICR7U0NSSVBUfSB8IGdyZXAgJ149PT4nIHwgc2VkIC1lICdzL149PT4vLydgIC1lcSA2IF1dIHx8IHsgZWNobyAiZmFpbGVkIHRvIGV2YWx1YXRlIHNhbXBsZSBzY3JpcHQiOyBleGl0IDE7IH0KKyAgW1sgYGJpbi9ncmVtbGluLnNoIDw8PCAke1NDUklQVH0gfCAke1NDUklQVF9ESVJ9Ly4uL2RvY3MvcHJlcHJvY2Vzc29yL2NvbnRyb2wtY2hhcmFjdGVycy5zaCB8IGdyZXAgJ149PT4nIHwgc2VkIC1lICdzL149PT4vLydgIC1lcSA2IF1dIHx8IHsgZWNobyAiZmFpbGVkIHRvIGV2YWx1YXRlIHNhbXBsZSBzY3JpcHQiOyBleGl0IDE7IH0KICAgW1sgYGJpbi9ncmVtbGluLnNoIC1lICR7U0NSSVBUX1BBVEh9YCAtZXEgNiBdXSB8fCB7IGVjaG8gImZhaWxlZCB0byBldmFsdWF0ZSBzYW1wbGUgc2NyaXB0IHVzaW5nIC1lIG9wdGlvbiI7IGV4aXQgMTsgfQogICBDT05TT0xFX0RJUj1gcHdkYAogICBjZCAke1RNUF9ESVJ9CmRpZmYgLS1naXQgYS9kb2NrZXIvZ3JlbWxpbi1zZXJ2ZXIuc2ggYi9kb2NrZXIvZ3JlbWxpbi1zZXJ2ZXIuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNTQwYmZiYwotLS0gL2Rldi9udWxsCisrKyBiL2RvY2tlci9ncmVtbGluLXNlcnZlci5zaApAQCAtMCwwICsxLDY0IEBACisjIS9iaW4vYmFzaAorIworIyBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisjIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorIyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorIyByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisjIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorIyB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisjCisjICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjCisjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyMgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyMgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisjIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorIyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisjIHVuZGVyIHRoZSBMaWNlbnNlLgorIworCisjIEJ1aWxkIGRvY2tlciBpbWFnZXMgZmlyc3QKKyMgQnVpbGQgZ3JlbWxpbi1zZXJ2ZXI6ICBtdm4gY2xlYW4gaW5zdGFsbCAtcGwgOmdyZW1saW4tc2VydmVyIC1hbSAmJiBtdm4gaW5zdGFsbCAtUGRvY2tlci1pbWFnZXMgLXBsIDpncmVtbGluLXNlcnZlcgorCisjIHNldCAteAorCitESVI9YGRpcm5hbWUgJDBgCitQUk9KRUNUX0hPTUU9JHtESVJ9Ly4uLworCitUSU1FU1RBTVA9JChkYXRlICslcykKK0JVSUxEX1RBRz0iZ3JlbWxpbi1zZXJ2ZXItdGVzdC0ke1RJTUVTVEFNUH0iCisKK2Z1bmN0aW9uIGNsZWFudXAgeworICBCVUlMRF9JTUFHRT0kKGRvY2tlciBpbWFnZXMgdGlua2VycG9wIHwgYXdrICJ7aWYgKFwkMiA9PSBcIiR7QlVJTERfVEFHfVwiKSBwcmludCBcJDN9IikKKyAgWyAhIC16ICR7QlVJTERfSU1BR0V9IF0gJiYgZG9ja2VyIHJtaSAke0JVSUxEX0lNQUdFfQorICBybSAtZiAke1BST0pFQ1RfSE9NRX0vRG9ja2VyZmlsZQorfQordHJhcCBjbGVhbnVwIEVYSVQKKworUkVNT1ZFX0NPTlRBSU5FUj0iLS1ybSIKK1tbIC1uICR7S0VFUF9DT05UQUlORVJ9IF1dICYmIHVuc2V0IFJFTU9WRV9DT05UQUlORVIKKworcHVzaGQgJHtQUk9KRUNUX0hPTUV9ID4gL2Rldi9udWxsCisKK0dSRU1MSU5fU0VSVkVSX1ZFUlNJT049IiQxIgorc2hpZnQKK2lmIFtbIC16ICIkR1JFTUxJTl9TRVJWRVJfVkVSU0lPTiIgXV07IHRoZW4KKyAgR1JFTUxJTl9TRVJWRVJfVkVSU0lPTj0kKGdyZXAgdGlua2VycG9wIC1BMiBwb20ueG1sIHwgZ3JlcCAtUG8gJyg/PD08dmVyc2lvbj4pKFswLTldK1wuPyl7M30oLVNOQVBTSE9UKT8oPz08KScpCisgIGlmIFtbICQoZG9ja2VyIGltYWdlcyB8IGF3ayAie2lmIChcJDEgPT0gXCJ0aW5rZXJwb3AvZ3JlbWxpbi1zZXJ2ZXJcIiAmJiBcJDIgPT0gXCIke0dSRU1MSU5fU0VSVkVSX1ZFUlNJT059XCIpIHByaW50fSIgfCB3YyAtbCkgLWVxIDAgXV07IHRoZW4KKyAgICBwdXNoZCAiJHtQUk9KRUNUX0hPTUV9IiA+IC9kZXYvbnVsbAorICAgIG12biAtcSBjbGVhbiBpbnN0YWxsIC1wbCA6Z3JlbWxpbi1zZXJ2ZXIgLWFtIC1Ec2tpcFRlc3RzICYmIG12biAtcSBpbnN0YWxsIC1QZG9ja2VyLWltYWdlcyAtcGwgOmdyZW1saW4tc2VydmVyIC1Ec2tpcFRlc3RzCisgICAgcG9wZCA+IC9kZXYvbnVsbAorICBmaQorZmkKKworZWNobyAiVXNpbmcgR3JlbWxpbiBTZXJ2ZXIgJEdSRU1MSU5fU0VSVkVSX1ZFUlNJT04iCisKK3NlZCAtZSAicy9HUkVNTElOX1NFUlZFUl9WRVJTSU9OXCQvJHtHUkVNTElOX1NFUlZFUl9WRVJTSU9OfS8iIGRvY2tlci9ncmVtbGluLXNlcnZlci9Eb2NrZXJmaWxlLnRlbXBsYXRlID4gRG9ja2VyZmlsZQorCitkb2NrZXIgYnVpbGQgLXQgdGlua2VycG9wOiR7QlVJTERfVEFHfSAuCitkb2NrZXIgcnVuICR7VElOS0VSUE9QX1RFU1RfRE9DS0VSX09QVFN9ICR7UkVNT1ZFX0NPTlRBSU5FUn0gLXRpIC12ICIke0hPTUV9Ii8uZ3Jvb3Z5Oi9yb290Ly5ncm9vdnkgLXYgIiR7SE9NRX0iLy5tMjovcm9vdC8ubTIgdGlua2VycG9wOiR7QlVJTERfVEFHfSAke0B9CisKK3N0YXR1cz0kPworcG9wZCA+IC9kZXYvbnVsbAorZXhpdCAkc3RhdHVzCmRpZmYgLS1naXQgYS9kb2NrZXIvZ3JlbWxpbi1zZXJ2ZXIvRG9ja2VyZmlsZS50ZW1wbGF0ZSBiL2RvY2tlci9ncmVtbGluLXNlcnZlci9Eb2NrZXJmaWxlLnRlbXBsYXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3NTIyYmEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NrZXIvZ3JlbWxpbi1zZXJ2ZXIvRG9ja2VyZmlsZS50ZW1wbGF0ZQpAQCAtMCwwICsxLDMxIEBACisjIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyMgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisjIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisjIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyMgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisjIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyMKKyMgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyMKKyMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorIyBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorIyAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyMgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisjIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyMgdW5kZXIgdGhlIExpY2Vuc2UuCisKK0ZST00gdGlua2VycG9wL2dyZW1saW4tc2VydmVyOkdSRU1MSU5fU0VSVkVSX1ZFUlNJT04KKworVVNFUiByb290CitSVU4gbWtkaXIgLXAgL29wdAorV09SS0RJUiAvb3B0CitDT1BZIGdyZW1saW4tc2VydmVyL3NyYy90ZXN0IC9vcHQvdGVzdC8KK0NPUFkgZG9ja2VyL2dyZW1saW4tc2VydmVyL2RvY2tlci1lbnRyeXBvaW50LnNoIGRvY2tlci9ncmVtbGluLXNlcnZlci8qLnlhbWwgL29wdC8KK1JVTiBjaG1vZCA3NTUgL29wdC9kb2NrZXItZW50cnlwb2ludC5zaAorRU5WIEdSRU1MSU5fU0VSVkVSX1ZFUlNJT049R1JFTUxJTl9TRVJWRVJfVkVSU0lPTgorCitFWFBPU0UgNDU5NDAKKworRU5UUllQT0lOVCBbIi9vcHQvZG9ja2VyLWVudHJ5cG9pbnQuc2giXQorQ01EIFtdCmRpZmYgLS1naXQgYS9kb2NrZXIvZ3JlbWxpbi1zZXJ2ZXIvZG9ja2VyLWVudHJ5cG9pbnQuc2ggYi9kb2NrZXIvZ3JlbWxpbi1zZXJ2ZXIvZG9ja2VyLWVudHJ5cG9pbnQuc2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWU3NTExNgotLS0gL2Rldi9udWxsCisrKyBiL2RvY2tlci9ncmVtbGluLXNlcnZlci9kb2NrZXItZW50cnlwb2ludC5zaApAQCAtMCwwICsxLDM2IEBACisjIS9iaW4vYmFzaAorIworIyBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisjIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorIyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorIyByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisjIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorIyB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisjCisjICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjCisjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyMgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyMgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisjIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorIyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisjIHVuZGVyIHRoZSBMaWNlbnNlLgorIworCitUSU5LRVJQT1BfSE9NRT0vb3B0L2dyZW1saW4tc2VydmVyCisKK2NwIC9vcHQvdGVzdC9zY3JpcHRzLyogJHtUSU5LRVJQT1BfSE9NRX0vc2NyaXB0cworCitJUD0kKGhvc3RuYW1lIC1pKQorZWNobyAiIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMiCitlY2hvIElQIGlzICRJUAorZWNobyAiIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMiCisKK2NwICoueWFtbCAke1RJTktFUlBPUF9IT01FfS9jb25mLworCitqYXZhIC12ZXJzaW9uCisKKy9vcHQvZ3JlbWxpbi1zZXJ2ZXIvYmluL2dyZW1saW4tc2VydmVyLnNoIGluc3RhbGwgb3JnLmFwYWNoZS50aW5rZXJwb3AgZ3JlbWxpbi1weXRob24gJHtHUkVNTElOX1NFUlZFUl9WRVJTSU9OfQorL29wdC9ncmVtbGluLXNlcnZlci9iaW4vZ3JlbWxpbi1zZXJ2ZXIuc2ggY29uZi9ncmVtbGluLXNlcnZlci1pbnRlZ3JhdGlvbi55YW1sICYKK2V4ZWMgL29wdC9ncmVtbGluLXNlcnZlci9iaW4vZ3JlbWxpbi1zZXJ2ZXIuc2ggY29uZi9ncmVtbGluLXNlcnZlci1pbnRlZ3JhdGlvbi1zZWN1cmUueWFtbApkaWZmIC0tZ2l0IGEvZG9ja2VyL2dyZW1saW4tc2VydmVyL2dyZW1saW4tc2VydmVyLWludGVncmF0aW9uLXNlY3VyZS55YW1sIGIvZG9ja2VyL2dyZW1saW4tc2VydmVyL2dyZW1saW4tc2VydmVyLWludGVncmF0aW9uLXNlY3VyZS55YW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0ODllMDcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NrZXIvZ3JlbWxpbi1zZXJ2ZXIvZ3JlbWxpbi1zZXJ2ZXItaW50ZWdyYXRpb24tc2VjdXJlLnlhbWwKQEAgLTAsMCArMSw2OCBAQAorIyBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisjIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorIyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorIyByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisjIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorIyB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisjCisjICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjCisjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyMgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyMgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisjIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorIyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisjIHVuZGVyIHRoZSBMaWNlbnNlLgorCitob3N0OiAwLjAuMC4wCitwb3J0OiA0NTk0MQorc2NyaXB0RXZhbHVhdGlvblRpbWVvdXQ6IDMwMDAwCitncmFwaHM6IHsKKyAgZ3JhcGg6IGNvbmYvdGlua2VyZ3JhcGgtZW1wdHkucHJvcGVydGllcywKKyAgY2xhc3NpYzogY29uZi90aW5rZXJncmFwaC1lbXB0eS5wcm9wZXJ0aWVzLAorICBtb2Rlcm46IGNvbmYvdGlua2VyZ3JhcGgtZW1wdHkucHJvcGVydGllcywKKyAgY3JldzogY29uZi90aW5rZXJncmFwaC1lbXB0eS5wcm9wZXJ0aWVzLAorICBncmF0ZWZ1bDogY29uZi90aW5rZXJncmFwaC1lbXB0eS5wcm9wZXJ0aWVzLAorICBzaW5rOiBjb25mL3RpbmtlcmdyYXBoLWVtcHR5LnByb3BlcnRpZXN9CitzY3JpcHRFbmdpbmVzOiB7CisgIGdyZW1saW4tZ3Jvb3Z5OiB7CisgICAgcGx1Z2luczogeyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNlcnZlci5qc3IyMjMuR3JlbWxpblNlcnZlckdyZW1saW5QbHVnaW46IHt9LAorICAgICAgICAgICAgICAgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi50aW5rZXJncmFwaC5qc3IyMjMuVGlua2VyR3JhcGhHcmVtbGluUGx1Z2luOiB7fSwKKyAgICAgICAgICAgICAgIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ3Jvb3Z5LmpzcjIyMy5Hcm9vdnlDb21waWxlckdyZW1saW5QbHVnaW46IHtleHBlY3RlZENvbXBpbGF0aW9uVGltZTogMzAwMDB9LAorICAgICAgICAgICAgICAgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5qc3IyMjMuSW1wb3J0R3JlbWxpblBsdWdpbjoge2NsYXNzSW1wb3J0czogW2phdmEubGFuZy5NYXRoXSwgbWV0aG9kSW1wb3J0czogW2phdmEubGFuZy5NYXRoIypdfSwKKyAgICAgICAgICAgICAgIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uanNyMjIzLlNjcmlwdEZpbGVHcmVtbGluUGx1Z2luOiB7ZmlsZXM6IFtzY3JpcHRzL2dlbmVyYXRlLWFsbC5ncm9vdnldfX19LAorICBncmVtbGluLWp5dGhvbjoge30sCisgIGdyZW1saW4tcHl0aG9uOiB7fQorfQorc2VyaWFsaXplcnM6CisgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcnlvTWVzc2FnZVNlcmlhbGl6ZXJWMWQwLCBjb25maWc6IHsgaW9SZWdpc3RyaWVzOiBbb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi50aW5rZXJncmFwaC5zdHJ1Y3R1cmUuVGlua2VySW9SZWdpc3RyeVYxZDBdLCBjdXN0b206IFtncm9vdnkuanNvbi5Kc29uQnVpbGRlcjtvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuSnNvbkJ1aWxkZXJHcnlvU2VyaWFsaXplcl19fQorICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMCwgY29uZmlnOiB7IGlvUmVnaXN0cmllczogW29yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguc3RydWN0dXJlLlRpbmtlcklvUmVnaXN0cnlWM2QwXSwgY3VzdG9tOiBbZ3Jvb3Z5Lmpzb24uSnNvbkJ1aWxkZXI7b3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkpzb25CdWlsZGVyR3J5b1NlcmlhbGl6ZXJdfX0KKyAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyeW9MaXRlTWVzc2FnZVNlcmlhbGl6ZXJWMWQwLCBjb25maWc6IHsgaW9SZWdpc3RyaWVzOiBbb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi50aW5rZXJncmFwaC5zdHJ1Y3R1cmUuVGlua2VySW9SZWdpc3RyeVYxZDBdLCBjdXN0b206IFtncm9vdnkuanNvbi5Kc29uQnVpbGRlcjtvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuSnNvbkJ1aWxkZXJHcnlvU2VyaWFsaXplcl19fQorICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3J5b01lc3NhZ2VTZXJpYWxpemVyVjFkMCwgY29uZmlnOiB7IHNlcmlhbGl6ZVJlc3VsdFRvU3RyaW5nOiB0cnVlfX0KKyAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAsIGNvbmZpZzogeyBzZXJpYWxpemVSZXN1bHRUb1N0cmluZzogdHJ1ZX19CisgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjNkMCwgY29uZmlnOiB7IGlvUmVnaXN0cmllczogW29yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguc3RydWN0dXJlLlRpbmtlcklvUmVnaXN0cnlWM2QwXSB9fQorICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYyZDAsIGNvbmZpZzogeyBpb1JlZ2lzdHJpZXM6IFtvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnN0cnVjdHVyZS5UaW5rZXJJb1JlZ2lzdHJ5VjJkMF0gfX0KKyAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJHcmVtbGluVjFkMCwgY29uZmlnOiB7IGlvUmVnaXN0cmllczogW29yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguc3RydWN0dXJlLlRpbmtlcklvUmVnaXN0cnlWMWQwXSB9fQorICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxIH0KKyAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMSwgY29uZmlnOiB7IHNlcmlhbGl6ZVJlc3VsdFRvU3RyaW5nOiB0cnVlIH19Citwcm9jZXNzb3JzOgorICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNlcnZlci5vcC5zZXNzaW9uLlNlc3Npb25PcFByb2Nlc3NvciwgY29uZmlnOiB7IHNlc3Npb25UaW1lb3V0OiAyODgwMDAwMCB9fQorICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNlcnZlci5vcC5zdGFuZGFyZC5TdGFuZGFyZE9wUHJvY2Vzc29yLCBjb25maWc6IHt9fQorbWV0cmljczogeworICBzbGY0alJlcG9ydGVyOiB7ZW5hYmxlZDogdHJ1ZSwgaW50ZXJ2YWw6IDE4MDAwMH19CitzdHJpY3RUcmFuc2FjdGlvbk1hbmFnZW1lbnQ6IGZhbHNlCitpZGxlQ29ubmVjdGlvblRpbWVvdXQ6IDAKK2tlZXBBbGl2ZUludGVydmFsOiAwCittYXhJbml0aWFsTGluZUxlbmd0aDogNDA5NgorbWF4SGVhZGVyU2l6ZTogODE5MgorbWF4Q2h1bmtTaXplOiA4MTkyCittYXhDb250ZW50TGVuZ3RoOiAxMDAwMDAwCittYXhBY2N1bXVsYXRpb25CdWZmZXJDb21wb25lbnRzOiAxMDI0CityZXN1bHRJdGVyYXRpb25CYXRjaFNpemU6IDY0Cit3cml0ZUJ1ZmZlckxvd1dhdGVyTWFyazogMzI3NjgKK3dyaXRlQnVmZmVySGlnaFdhdGVyTWFyazogNjU1MzYKK2F1dGhlbnRpY2F0aW9uOiB7CisgIGF1dGhlbnRpY2F0b3I6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc2VydmVyLmF1dGguU2ltcGxlQXV0aGVudGljYXRvciwKKyAgY29uZmlnOiB7CisgICAgY3JlZGVudGlhbHNEYjogY29uZi90aW5rZXJncmFwaC1jcmVkZW50aWFscy5wcm9wZXJ0aWVzfX0KZGlmZiAtLWdpdCBhL2RvY2tlci9ncmVtbGluLXNlcnZlci9ncmVtbGluLXNlcnZlci1pbnRlZ3JhdGlvbi55YW1sIGIvZG9ja2VyL2dyZW1saW4tc2VydmVyL2dyZW1saW4tc2VydmVyLWludGVncmF0aW9uLnlhbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2M1NDQ1YQotLS0gL2Rldi9udWxsCisrKyBiL2RvY2tlci9ncmVtbGluLXNlcnZlci9ncmVtbGluLXNlcnZlci1pbnRlZ3JhdGlvbi55YW1sCkBAIC0wLDAgKzEsNjQgQEAKKyMgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorIyBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyMgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorIyB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisjICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyMgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorIworIyAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorIworIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisjIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisjICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorIyBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyMgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworIyB1bmRlciB0aGUgTGljZW5zZS4KKworaG9zdDogMC4wLjAuMAorcG9ydDogNDU5NDAKK3NjcmlwdEV2YWx1YXRpb25UaW1lb3V0OiAzMDAwMAorZ3JhcGhzOiB7CisgIGdyYXBoOiBjb25mL3RpbmtlcmdyYXBoLWVtcHR5LnByb3BlcnRpZXMsCisgIGNsYXNzaWM6IGNvbmYvdGlua2VyZ3JhcGgtZW1wdHkucHJvcGVydGllcywKKyAgbW9kZXJuOiBjb25mL3RpbmtlcmdyYXBoLWVtcHR5LnByb3BlcnRpZXMsCisgIGNyZXc6IGNvbmYvdGlua2VyZ3JhcGgtZW1wdHkucHJvcGVydGllcywKKyAgZ3JhdGVmdWw6IGNvbmYvdGlua2VyZ3JhcGgtZW1wdHkucHJvcGVydGllcywKKyAgc2luazogY29uZi90aW5rZXJncmFwaC1lbXB0eS5wcm9wZXJ0aWVzfQorc2NyaXB0RW5naW5lczogeworICBncmVtbGluLWdyb292eTogeworICAgIHBsdWdpbnM6IHsgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIuanNyMjIzLkdyZW1saW5TZXJ2ZXJHcmVtbGluUGx1Z2luOiB7fSwKKyAgICAgICAgICAgICAgIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguanNyMjIzLlRpbmtlckdyYXBoR3JlbWxpblBsdWdpbjoge30sCisgICAgICAgICAgICAgICBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmdyb292eS5qc3IyMjMuR3Jvb3Z5Q29tcGlsZXJHcmVtbGluUGx1Z2luOiB7ZXhwZWN0ZWRDb21waWxhdGlvblRpbWU6IDMwMDAwfSwKKyAgICAgICAgICAgICAgIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uanNyMjIzLkltcG9ydEdyZW1saW5QbHVnaW46IHtjbGFzc0ltcG9ydHM6IFtqYXZhLmxhbmcuTWF0aF0sIG1ldGhvZEltcG9ydHM6IFtqYXZhLmxhbmcuTWF0aCMqXX0sCisgICAgICAgICAgICAgICBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmpzcjIyMy5TY3JpcHRGaWxlR3JlbWxpblBsdWdpbjoge2ZpbGVzOiBbc2NyaXB0cy9nZW5lcmF0ZS1hbGwuZ3Jvb3Z5XX19fSwKKyAgZ3JlbWxpbi1qeXRob246IHt9LAorICBncmVtbGluLXB5dGhvbjoge30KK30KK3NlcmlhbGl6ZXJzOgorICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3J5b01lc3NhZ2VTZXJpYWxpemVyVjFkMCwgY29uZmlnOiB7IGlvUmVnaXN0cmllczogW29yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguc3RydWN0dXJlLlRpbmtlcklvUmVnaXN0cnlWMWQwXSwgY3VzdG9tOiBbZ3Jvb3Z5Lmpzb24uSnNvbkJ1aWxkZXI7b3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkpzb25CdWlsZGVyR3J5b1NlcmlhbGl6ZXJdfX0KKyAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAsIGNvbmZpZzogeyBpb1JlZ2lzdHJpZXM6IFtvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnN0cnVjdHVyZS5UaW5rZXJJb1JlZ2lzdHJ5VjNkMF0sIGN1c3RvbTogW2dyb292eS5qc29uLkpzb25CdWlsZGVyO29yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5Kc29uQnVpbGRlckdyeW9TZXJpYWxpemVyXX19CisgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcnlvTGl0ZU1lc3NhZ2VTZXJpYWxpemVyVjFkMCwgY29uZmlnOiB7IGlvUmVnaXN0cmllczogW29yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguc3RydWN0dXJlLlRpbmtlcklvUmVnaXN0cnlWMWQwXSwgY3VzdG9tOiBbZ3Jvb3Z5Lmpzb24uSnNvbkJ1aWxkZXI7b3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkpzb25CdWlsZGVyR3J5b1NlcmlhbGl6ZXJdfX0KKyAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyeW9NZXNzYWdlU2VyaWFsaXplclYxZDAsIGNvbmZpZzogeyBzZXJpYWxpemVSZXN1bHRUb1N0cmluZzogdHJ1ZX19CisgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcnlvTWVzc2FnZVNlcmlhbGl6ZXJWM2QwLCBjb25maWc6IHsgc2VyaWFsaXplUmVzdWx0VG9TdHJpbmc6IHRydWV9fQorICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYzZDAsIGNvbmZpZzogeyBpb1JlZ2lzdHJpZXM6IFtvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnN0cnVjdHVyZS5UaW5rZXJJb1JlZ2lzdHJ5VjNkMF0gfX0KKyAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwLCBjb25maWc6IHsgaW9SZWdpc3RyaWVzOiBbb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi50aW5rZXJncmFwaC5zdHJ1Y3R1cmUuVGlua2VySW9SZWdpc3RyeVYyZDBdIH19CisgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyR3JlbWxpblYxZDAsIGNvbmZpZzogeyBpb1JlZ2lzdHJpZXM6IFtvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnN0cnVjdHVyZS5UaW5rZXJJb1JlZ2lzdHJ5VjFkMF0gfX0KKyAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMSB9CisgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjEsIGNvbmZpZzogeyBzZXJpYWxpemVSZXN1bHRUb1N0cmluZzogdHJ1ZSB9fQorcHJvY2Vzc29yczoKKyAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIub3Auc2Vzc2lvbi5TZXNzaW9uT3BQcm9jZXNzb3IsIGNvbmZpZzogeyBzZXNzaW9uVGltZW91dDogMjg4MDAwMDAgfX0KKyAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIub3Auc3RhbmRhcmQuU3RhbmRhcmRPcFByb2Nlc3NvciwgY29uZmlnOiB7fX0KK21ldHJpY3M6IHsKKyAgc2xmNGpSZXBvcnRlcjoge2VuYWJsZWQ6IHRydWUsIGludGVydmFsOiAxODAwMDB9fQorc3RyaWN0VHJhbnNhY3Rpb25NYW5hZ2VtZW50OiBmYWxzZQoraWRsZUNvbm5lY3Rpb25UaW1lb3V0OiAwCitrZWVwQWxpdmVJbnRlcnZhbDogMAorbWF4SW5pdGlhbExpbmVMZW5ndGg6IDQwOTYKK21heEhlYWRlclNpemU6IDgxOTIKK21heENodW5rU2l6ZTogODE5MgorbWF4Q29udGVudExlbmd0aDogMTAwMDAwMAorbWF4QWNjdW11bGF0aW9uQnVmZmVyQ29tcG9uZW50czogMTAyNAorcmVzdWx0SXRlcmF0aW9uQmF0Y2hTaXplOiA2NAord3JpdGVCdWZmZXJMb3dXYXRlck1hcms6IDMyNzY4Cit3cml0ZUJ1ZmZlckhpZ2hXYXRlck1hcms6IDY1NTM2CmRpZmYgLS1naXQgYS9kb2NzL3ByZXByb2Nlc3Nvci9hd2svaW5pdC1jb2RlLWJsb2Nrcy5hd2sgYi9kb2NzL3ByZXByb2Nlc3Nvci9hd2svaW5pdC1jb2RlLWJsb2Nrcy5hd2sKaW5kZXggOTdjZDY4My4uNDY2Y2I5MCAxMDA2NDQKLS0tIGEvZG9jcy9wcmVwcm9jZXNzb3IvYXdrL2luaXQtY29kZS1ibG9ja3MuYXdrCisrKyBiL2RvY3MvcHJlcHJvY2Vzc29yL2F3ay9pbml0LWNvZGUtYmxvY2tzLmF3awpAQCAtMTAwLDcgKzEwMCw3IEBACiAgIGlmIChkZWxpbWl0ZXIgPT0gMiAmJiAhKCQwIH4gL15wYlwoWzAtOV0qXCk7ICctLS0tJy8pKSB7CiAgICAgc3dpdGNoIChsYW5nKSB7CiAgICAgICBjYXNlICJweXRob24iOgotICAgICAgICBwcmludCAicHJvY2Vzc1RyYXZlcnNhbChcIlwiXCIiIGdlbnN1YigiXFwoJ2lkJywoWzAtOV0rKVxcKSIsICJcXDEiLCAiZyIpICJcIlwiXCIsIGp5dGhvbiwgZ3Jvb3Z5KSIKKyAgICAgICAgcHJpbnQgInByb2Nlc3NUcmF2ZXJzYWwoXCJcIlwiIiBnZW5zdWIoIkJpbmRpbmdzXFwub2ZcXCgnaWQnLChbMC05XSspXFwpIiwgIlxcMSIsICJnIikgIlwiXCJcIiwganl0aG9uLCBncm9vdnkpIgogICAgICAgICBicmVhawogICAgICAgZGVmYXVsdDoKICAgICAgICAgcHJpbnQKZGlmZiAtLWdpdCBhL2RvY3MvcHJlcHJvY2Vzc29yL2F3ay9sYW5ndWFnZS12YXJpYW50cy5hd2sgYi9kb2NzL3ByZXByb2Nlc3Nvci9hd2svbGFuZ3VhZ2UtdmFyaWFudHMuYXdrCmluZGV4IDU0MjkwNzAuLmQ2NjQ1ZDEgMTAwNjQ0Ci0tLSBhL2RvY3MvcHJlcHJvY2Vzc29yL2F3ay9sYW5ndWFnZS12YXJpYW50cy5hd2sKKysrIGIvZG9jcy9wcmVwcm9jZXNzb3IvYXdrL2xhbmd1YWdlLXZhcmlhbnRzLmF3awpAQCAtNDAsNyArNDAsOCBAQAogICAgICAgICBnc3ViKC9eZ3JlbWxpbj4vLCAiPj4+IikKICAgICAgICAgZ3N1YigvXj09Pi8sICIiKQogICAgICAgICAkMCA9IGdlbnN1YigvcHJvY2Vzc1RyYXZlcnNhbFwoIiIiKC4qKSIiIlwsIGp5dGhvbiwgZ3Jvb3Z5KS8sICJcXDEiLCAxKQotICAgICAgICBwcmludCBnZW5zdWIoImdcXC5WXFwoKFteXFwpXSspIiwgImcuVigoJ2lkJyxcXDEpIiwgImciKQorICAgICAgICAkMCA9IGdlbnN1YigiZ1xcLlZcXCgoW15cXCldKykiLCAiZy5WKEJpbmRpbmdzXFwub2YoJ2lkJyxcXDEpIiwgImciKQorICAgICAgICBwcmludCBnZW5zdWIoImdcXC5WXFwoQmluZGluZ3Mub2ZcXCgnaWQnLChCaW5kaW5ncy5vZlxcKFteXFwpXStcXCkpXFwpXFwpIiwgImcuVihcXDEpIiwgImciKQogICAgICAgICBicmVhawogICAgICAgZGVmYXVsdDoKICAgICAgICAgcHJpbnQKZGlmZiAtLWdpdCBhL2RvY3MvcHJlcHJvY2Vzc29yL2F3ay90YWJpZnkuYXdrIGIvZG9jcy9wcmVwcm9jZXNzb3IvYXdrL3RhYmlmeS5hd2sKaW5kZXggZDZmZmFjYy4uZmMwNzMzMSAxMDA2NDQKLS0tIGEvZG9jcy9wcmVwcm9jZXNzb3IvYXdrL3RhYmlmeS5hd2sKKysrIGIvZG9jcy9wcmVwcm9jZXNzb3IvYXdrL3RhYmlmeS5hd2sKQEAgLTI2LDE0ICsyNiwxNCBAQAogICBwcmludCAiKysrKyIKICAgcHJpbnQgIjxzZWN0aW9uIGNsYXNzPVwidGFicyB0YWJzLSIgbnVtX3RhYnMgIlwiPiIKIAotICBmb3IgKGkgaW4gdGFicykgeworICBmb3IgKGkgPSAxOyBpIDw9IG51bV90YWJzOyBpKyspIHsKICAgICB0aXRsZSA9IHRhYnNbaV0KICAgICBwcmludCAiICA8aW5wdXQgaWQ9XCJ0YWItIiBpZF9wYXJ0ICItIiB4ICJcIiB0eXBlPVwicmFkaW9cIiBuYW1lPVwicmFkaW8tc2V0LSIgaWRfcGFydCAiLSIgbmV4dF9pZCAiXCIgY2xhc3M9XCJ0YWItc2VsZWN0b3ItIiBpICJcIiIgKGkgPT0gMSA/ICIgY2hlY2tlZD1cImNoZWNrZWRcIiIgOiAiIikgIiAvPiIKICAgICBwcmludCAiICA8bGFiZWwgZm9yPVwidGFiLSIgaWRfcGFydCAiLSIgeCAiXCIgY2xhc3M9XCJ0YWItbGFiZWwtIiBpICJcIj4iIHRpdGxlICI8L2xhYmVsPiIKICAgICB4KysKICAgfQogCi0gIGZvciAoaSBpbiBibG9ja3MpIHsKKyAgZm9yIChpID0gMTsgaTw9IG51bV90YWJzOyBpKyspIHsKICAgICBwcmludCAiICA8ZGl2IGNsYXNzPVwidGFiY29udGVudFwiPiIKICAgICBwcmludCAiICAgIDxkaXYgY2xhc3M9XCJ0YWJjb250ZW50LSIgaSAiXCI+IgogICAgIHByaW50ICIrKysrXG4iCmRpZmYgLS1naXQgYS9kb2NzL3ByZXByb2Nlc3Nvci9jb250cm9sLWNoYXJhY3RlcnMuc2ggYi9kb2NzL3ByZXByb2Nlc3Nvci9jb250cm9sLWNoYXJhY3RlcnMuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYjgzMzZkNgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvcHJlcHJvY2Vzc29yL2NvbnRyb2wtY2hhcmFjdGVycy5zaApAQCAtMCwwICsxLDI1IEBACisjIS9iaW4vYmFzaAorIworIworIyBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisjIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorIyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorIyByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisjIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorIyB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisjCisjICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjCisjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyMgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyMgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisjIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorIyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisjIHVuZGVyIHRoZSBMaWNlbnNlLgorIworCisjIFRoZSBtYWluIHB1cnBvc2Ugb2YgdGhpcyBzY3JpcHQgaXMgdG8gcmVtb3ZlIGNvbnRyb2wgY2hhcmFjdGVycworIyB0aGF0IGFyZSBvY2Nhc2lvbmFsbHkgaGlkZGVuIGluIHRoZSBHcm9vdnkgY29uc29sZSdzIG91dHB1dAorCitzZWQgLXIgJ3MvXHgxQlxbKFswLTldezEsMn0oO1swLTldezEsMn0pPyk/W218S10vL2cnCmRpZmYgLS1naXQgYS9kb2NzL3ByZXByb2Nlc3Nvci9pbnN0YWxsLXBsdWdpbnMuc2ggYi9kb2NzL3ByZXByb2Nlc3Nvci9pbnN0YWxsLXBsdWdpbnMuc2gKaW5kZXggOTkwZGJlNC4uNTg1NWU5MiAxMDA3NTUKLS0tIGEvZG9jcy9wcmVwcm9jZXNzb3IvaW5zdGFsbC1wbHVnaW5zLnNoCisrKyBiL2RvY3MvcHJlcHJvY2Vzc29yL2luc3RhbGwtcGx1Z2lucy5zaApAQCAtMjUsNyArMjUsNyBAQAogSU5TVEFMTF9URU1QTEFURT0iZG9jcy9wcmVwcm9jZXNzb3IvaW5zdGFsbC1wbHVnaW5zLmdyb292eSIKIElOU1RBTExfRklMRT0iJHtUTVBfRElSfS9pbnN0YWxsLXBsdWdpbnMuZ3Jvb3Z5IgogCi1wbHVnaW5zPSgiaGFkb29wLWdyZW1saW4iICJzcGFyay1ncmVtbGluIiAiZ2lyYXBoLWdyZW1saW4iICJuZW80ai1ncmVtbGluIikKK3BsdWdpbnM9KCJoYWRvb3AtZ3JlbWxpbiIgInNwYXJrLWdyZW1saW4iICJuZW80ai1ncmVtbGluIiAic3BhcnFsLWdyZW1saW4iKQogIyBwbHVnaW5zPSgpCiBwbHVnaW5zQ291bnQ9JHsjcGx1Z2luc1tAXX0KIApkaWZmIC0tZ2l0IGEvZG9jcy9wcmVwcm9jZXNzb3IvcHJlcHJvY2Vzcy1maWxlLnNoIGIvZG9jcy9wcmVwcm9jZXNzb3IvcHJlcHJvY2Vzcy1maWxlLnNoCmluZGV4IDdkMzk1NmQuLmRiZWYyMmYgMTAwNzU1Ci0tLSBhL2RvY3MvcHJlcHJvY2Vzc29yL3ByZXByb2Nlc3MtZmlsZS5zaAorKysgYi9kb2NzL3ByZXByb2Nlc3Nvci9wcmVwcm9jZXNzLWZpbGUuc2gKQEAgLTExMCw3ICsxMTAsNyBAQAogICAgICAgbXYgZXh0L3NwYXJrLWdyZW1saW4gLmV4dC8KICAgICAgIGNhdCBleHQvcGx1Z2lucy50eHQgfCB0ZWUgLmV4dC9wbHVnaW5zLmFsbCB8IGdyZXAgLUZ2ICdTcGFya0dyZW1saW5QbHVnaW4nID4gLmV4dC9wbHVnaW5zLnR4dAogICAgICAgOzsKLSAgICAiaW1wbGVtZW50YXRpb25zLWhhZG9vcC1zdGFydCIgfCAiaW1wbGVtZW50YXRpb25zLWhhZG9vcC1lbmQiIHwgImltcGxlbWVudGF0aW9ucy1zcGFyayIgfCAiaW1wbGVtZW50YXRpb25zLWdpcmFwaCIgfCAib2xhcC1zcGFyay15YXJuIikKKyAgICAiaW1wbGVtZW50YXRpb25zLWhhZG9vcC1zdGFydCIgfCAiaW1wbGVtZW50YXRpb25zLWhhZG9vcC1lbmQiIHwgImltcGxlbWVudGF0aW9ucy1zcGFyayIgfCAib2xhcC1zcGFyay15YXJuIikKICAgICAgICMgZGVhY3RpdmF0ZSBOZW80aiBwbHVnaW4gdG8gcHJldmVudCB2ZXJzaW9uIGNvbmZsaWN0cyBiZXR3ZWVuIFRpbmtlclBvcCdzIFNwYXJrIGphcnMgYW5kIE5lbzRqJ3MgU3BhcmsgamFycwogICAgICAgbWtkaXIgLmV4dAogICAgICAgbXYgZXh0L25lbzRqLWdyZW1saW4gLmV4dC8KQEAgLTEyMSw5ICsxMjEsOCBAQAogICAgICAgbWtkaXIgLmV4dAogICAgICAgbXYgZXh0L25lbzRqLWdyZW1saW4gLmV4dC8KICAgICAgIG12IGV4dC9zcGFyay1ncmVtbGluIC5leHQvCi0gICAgICBtdiBleHQvZ2lyYXBoLWdyZW1saW4gLmV4dC8KICAgICAgIG12IGV4dC9oYWRvb3AtZ3JlbWxpbiAuZXh0LwotICAgICAgY2F0IGV4dC9wbHVnaW5zLnR4dCB8IHRlZSAuZXh0L3BsdWdpbnMuYWxsIHwgZ3JlcCAtdiAnTmVvNGpHcmVtbGluUGx1Z2luXHxTcGFya0dyZW1saW5QbHVnaW5cfEdpcmFwaEdyZW1saW5QbHVnaW5cfEhhZG9vcEdyZW1saW5QbHVnaW4nID4gLmV4dC9wbHVnaW5zLnR4dAorICAgICAgY2F0IGV4dC9wbHVnaW5zLnR4dCB8IHRlZSAuZXh0L3BsdWdpbnMuYWxsIHwgZ3JlcCAtdiAnTmVvNGpHcmVtbGluUGx1Z2luXHxTcGFya0dyZW1saW5QbHVnaW5cfEhhZG9vcEdyZW1saW5QbHVnaW4nID4gLmV4dC9wbHVnaW5zLnR4dAogICAgICAgOzsKICAgZXNhYwogCkBAIC0xMzYsNyArMTM1LDcgQEAKICAgYXdrIC1mICR7QVdLX1NDUklQVFN9L3ByZXBhcmUuYXdrIHwKICAgYXdrIC1mICR7QVdLX1NDUklQVFN9L2luaXQtY29kZS1ibG9ja3MuYXdrIC12IFRQX0hPTUU9IiR7VFBfSE9NRX0iIC12IFBZVEhPTlBBVEg9IiR7VFBfSE9NRX0vZ3JlbWxpbi1weXRob24vdGFyZ2V0L2NsYXNzZXMvTGliIiB8CiAgIGF3ayAtZiAke0FXS19TQ1JJUFRTfS9wcm9ncmVzc2Jhci5hd2sgLXYgdHBsPSR7QVdLX1NDUklQVFN9L3Byb2dyZXNzYmFyLmdyb292eS50ZW1wbGF0ZSB8Ci0gIEhBRE9PUF9HUkVNTElOX0xJQlM9IiR7Q09OU09MRV9IT01FfS9leHQvZ2lyYXBoLWdyZW1saW4vbGliOiR7Q09OU09MRV9IT01FfS9leHQvdGlua2VyZ3JhcGgtZ3JlbWxpbi9saWIiIGJpbi9ncmVtbGluLnNoIHwKKyAgSEFET09QX0dSRU1MSU5fTElCUz0iJHtDT05TT0xFX0hPTUV9L2V4dC90aW5rZXJncmFwaC1ncmVtbGluL2xpYiIgYmluL2dyZW1saW4uc2ggfCAke1RQX0hPTUV9L2RvY3MvcHJlcHJvY2Vzc29yL2NvbnRyb2wtY2hhcmFjdGVycy5zaCB8CiAgICR7bGJ9IGF3ayAtZiAke0FXS19TQ1JJUFRTfS9pZ25vcmUuYXdrICAgfAogICAke2xifSBhd2sgLWYgJHtBV0tfU0NSSVBUU30vcHJldHRpZnkuYXdrIHwKICAgJHtsYn0gYXdrIC1mICR7QVdLX1NDUklQVFN9L2NsZWFudXAuYXdrICB8CmRpZmYgLS1naXQgYS9kb2NzL3Nhc3MvdGFicy5zY3NzIGIvZG9jcy9zYXNzL3RhYnMuc2NzcwppbmRleCAzOWM4OGY0Li4wOGE4OWI3IDEwMDY0NAotLS0gYS9kb2NzL3Nhc3MvdGFicy5zY3NzCisrKyBiL2RvY3Mvc2Fzcy90YWJzLnNjc3MKQEAgLTI4LDcgKzI4LDcgQEAKIAogJHRhYkhlaWdodDogNTBweDsKICRtaW5UYWJzOiAyOwotJG1heFRhYnM6IDQ7CiskbWF4VGFiczogNjsKIAogQG1peGluIHNpbmdsZS10cmFuc2l0aW9uKCRwcm9wZXJ0eTphbGwsICRzcGVlZDoxNTBtcywgJGVhc2U6ZWFzZSwgJGRlbGF5OiAwcykgewogICAtd2Via2l0LXRyYW5zaXRpb246ICRwcm9wZXJ0eSAkc3BlZWQgJGVhc2UgJGRlbGF5OyAgCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9kb3dubG9hZHMuaHRtbCBiL2RvY3Mvc2l0ZS9ob21lL2Rvd25sb2Fkcy5odG1sCmluZGV4IDVlMTlmN2IuLmY4OTY2MWIgMTAwNjQ0Ci0tLSBhL2RvY3Mvc2l0ZS9ob21lL2Rvd25sb2Fkcy5odG1sCisrKyBiL2RvY3Mvc2l0ZS9ob21lL2Rvd25sb2Fkcy5odG1sCkBAIC0xNyw1NTcgKzE3LDEyMSBAQAogPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgIDxoMz5Eb3dubG9hZCBBcGFjaGUgVGlua2VyUG9wJnRyYWRlOzwvaDM+Ci0gICAgPHA+PGltZyBzcmM9ImltYWdlcy9ncmVtbGluLWRvd25sb2FkLnBuZyIgIHN0eWxlPSJmbG9hdDpyaWdodDt3aWR0aDoxNTBweDtwYWRkaW5nOjEwcHg7Ii8+QXBhY2hlIFRpbmtlclBvcCBwcm92aWRlcyB0aHJlZSBwYWNrYWdlZCBkb3dubG9hZHMgcGVyIHJlbGVhc2UgdmVyc2lvbi4gVGhlCisgICAgPHA+PGltZyBzcmM9ImltZy9ncmVtbGluLWRvd25sb2FkLnBuZyIgIHN0eWxlPSJmbG9hdDpyaWdodDt3aWR0aDoxNTBweDtwYWRkaW5nOjEwcHg7Ii8+QXBhY2hlIFRpbmtlclBvcCBwcm92aWRlcyB0aHJlZSBwYWNrYWdlZCBkb3dubG9hZHMgcGVyIHJlbGVhc2UgdmVyc2lvbi4gVGhlCiAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvY3VycmVudC9yZWZlcmVuY2UvI2dyZW1saW4tY29uc29sZSI+R3JlbWxpbiBDb25zb2xlPC9hPiBhbmQgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvY3VycmVudC9yZWZlcmVuY2UvI2dyZW1saW4tc2VydmVyIj5HcmVtbGluIFNlcnZlcjwvYT4KICAgICAgICBkb3dubG9hZHMgYXJlIGJpbmFyeSBkaXN0cmlidXRpb25zLCB3aGljaCBjb250YWluIHByZS1wYWNrYWdlZCB2ZXJzaW9ucyBvZiB0aGVzZSBpbXBvcnRhbnQgVGlua2VyUG9wIGFwcGxpY2F0aW9ucyB0aGF0IGFyZSBkZXNpZ25lZCB0byB3b3JrIG91dC1vZi10aGUtYm94CiAgICAgICAgd2hlbiB1bnBhY2thZ2VkLiBUaGUgc291cmNlIGRpc3RyaWJ1dGlvbiBpcyBhIHNuYXBzaG90IG9mIHRoZSBzb3VyY2UgY29kZSBhbmQgZmlsZXMgdXNlZCBpbiB0aGUgYnVpbGRpbmcgb2YgdGhvc2UgIGJpbmFyeSBkaXN0cmlidXRpb25zLjwvcD4KLSAgICA8cD4KLSAgICAgQXMgYSBjb252ZW5pZW5jZSwgVGlua2VyUG9wIGFsc28gZGVwbG95cyBwYWNrYWdlZCBhcnRpZmFjdHMgdG86Ci0gICAgIDx1bD4KLSAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3NlYXJjaC5tYXZlbi5vcmcvI3NlYXJjaCU3Q2dhJTdDMSU3Q2clM0ElMjJvcmcuYXBhY2hlLnRpbmtlcnBvcCUyMiI+TWF2ZW4gQ2VudHJhbDwvYT48L2xpPgotICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL2dyZW1saW5weXRob24vIj5QeVBJPC9hPjwvbGk+Ci0gICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9HcmVtbGluLk5ldC8iPk51R2V0PC9hPjwvbGk+Ci0gICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2dyZW1saW4iPm5wbTwvYT48L2xpPgotICAgICA8L3VsPgotICAgIDwvcD4KLSAgICA8YnIvPgogICAgIDxoND5DdXJyZW50IFJlbGVhc2VzPC9oND4KICAgICA8dGFibGUgY2xhc3M9InRhYmxlIj4KICAgICAgICAgPHRyPgogICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxzdHJvbmc+My4zLjQ8L3N0cm9uZz4gKGxhdGVzdCwgc3RhYmxlKQorICAgICAgICAgICAgICAgIDxzdHJvbmc+My40LjI8L3N0cm9uZz4gKGxhdGVzdCwgc3RhYmxlKQogICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICAxNS1PY3QtMjAxOAorICAgICAgICAgICAgICAgIDI4LU1heS0yMDE5CiAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvdGlua2VycG9wL2Jsb2IvMy4zLjQvQ0hBTkdFTE9HLmFzY2lpZG9jI3JlbGVhc2UtMy0zLTQiPnJlbGVhc2Ugbm90ZXM8L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjMuNC91cGdyYWRlLyNfdGlua2VycG9wXzNfM180Ij51cGdyYWRlPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy4zLjQvIj5kb2N1bWVudGF0aW9uPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzLzMuMy40L2Z1bGwvIj5qYXZhZG9jPC9hPgorICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvdGlua2VycG9wL2Jsb2IvMy40LjIvQ0hBTkdFTE9HLmFzY2lpZG9jI3JlbGVhc2UtMy00LTIiPnJlbGVhc2Ugbm90ZXM8L2E+IHwKKyAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjQuMi91cGdyYWRlLyNfdGlua2VycG9wXzNfNF8yIj51cGdyYWRlPC9hPiB8CisgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy40LjIvIj5kb2N1bWVudGF0aW9uPC9hPiB8CisgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgZGF0YS10b2dnbGU9Im1vZGFsIiBkYXRhLXRhcmdldD0iI2NvbnRyaWJ1dG9ycy0zXzRfMiI+Y29udHJpYnV0b3JzPC9hPgogICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvZHluL2Nsb3Nlci5sdWEvdGlua2VycG9wLzMuMy40L2FwYWNoZS10aW5rZXJwb3AtZ3JlbWxpbi1jb25zb2xlLTMuMy40LWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gQ29uc29sZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9keW4vY2xvc2VyLmx1YS90aW5rZXJwb3AvMy4zLjQvYXBhY2hlLXRpbmtlcnBvcC1ncmVtbGluLXNlcnZlci0zLjMuNC1iaW4uemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5HcmVtbGluIFNlcnZlciA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9keW4vY2xvc2VyLmx1YS90aW5rZXJwb3AvMy4zLjQvYXBhY2hlLXRpbmtlcnBvcC0zLjMuNC1zcmMuemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5Tb3VyY2UgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgorICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvZHluL2Nsb3Nlci5sdWEvdGlua2VycG9wLzMuNC4yL2FwYWNoZS10aW5rZXJwb3AtZ3JlbWxpbi1jb25zb2xlLTMuNC4yLWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gQ29uc29sZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+CisgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9keW4vY2xvc2VyLmx1YS90aW5rZXJwb3AvMy40LjIvYXBhY2hlLXRpbmtlcnBvcC1ncmVtbGluLXNlcnZlci0zLjQuMi1iaW4uemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5HcmVtbGluIFNlcnZlciA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+CisgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9keW4vY2xvc2VyLmx1YS90aW5rZXJwb3AvMy40LjIvYXBhY2hlLXRpbmtlcnBvcC0zLjQuMi1zcmMuemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5Tb3VyY2UgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgogICAgICAgICAgICAgPC90ZD4KICAgICAgICAgPC90cj4KICAgICAgICAgPHRyPgogICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxzdHJvbmc+My4yLjEwPC9zdHJvbmc+IChtYWludGVuYW5jZSkKKyAgICAgICAgICAgICAgICA8c3Ryb25nPjMuMy43PC9zdHJvbmc+IChtYWludGVuYW5jZSkKICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgMTUtT2N0LTIwMTgKKyAgICAgICAgICAgICAgICAyOC1NYXktMjAxOQogICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL3RpbmtlcnBvcC9ibG9iLzMuMi4xMC9DSEFOR0VMT0cuYXNjaWlkb2MjcmVsZWFzZS0zLTItMTAiPnJlbGVhc2Ugbm90ZXM8L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjIuMTAvdXBncmFkZS8jX3RpbmtlcnBvcF8zXzJfMTAiPnVwZ3JhZGU8L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjIuMTAvIj5kb2N1bWVudGF0aW9uPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzLzMuMi4xMC9mdWxsLyI+amF2YWRvYzwvYT4KKyAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL3RpbmtlcnBvcC9ibG9iLzMuMy43L0NIQU5HRUxPRy5hc2NpaWRvYyNyZWxlYXNlLTMtMy03Ij5yZWxlYXNlIG5vdGVzPC9hPiB8CisgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy4zLjcvdXBncmFkZS8jX3RpbmtlcnBvcF8zXzNfNyI+dXBncmFkZTwvYT4gfAorICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuMy43LyI+ZG9jdW1lbnRhdGlvbjwvYT4gfAorICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGRhdGEtdG9nZ2xlPSJtb2RhbCIgZGF0YS10YXJnZXQ9IiNjb250cmlidXRvcnMtM18zXzciPmNvbnRyaWJ1dG9yczwvYT4KICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICA8dGQgYWxpZ249InJpZ2h0Ij4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5hcGFjaGUub3JnL2R5bi9jbG9zZXIubHVhL3RpbmtlcnBvcC8zLjIuMTAvYXBhY2hlLXRpbmtlcnBvcC1ncmVtbGluLWNvbnNvbGUtMy4yLjEwLWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gQ29uc29sZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9keW4vY2xvc2VyLmx1YS90aW5rZXJwb3AvMy4yLjEwL2FwYWNoZS10aW5rZXJwb3AtZ3JlbWxpbi1zZXJ2ZXItMy4yLjEwLWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gU2VydmVyIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5hcGFjaGUub3JnL2R5bi9jbG9zZXIubHVhL3RpbmtlcnBvcC8zLjIuMTAvYXBhY2hlLXRpbmtlcnBvcC0zLjIuMTAtc3JjLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+U291cmNlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KKyAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5hcGFjaGUub3JnL2R5bi9jbG9zZXIubHVhL3RpbmtlcnBvcC8zLjMuNy9hcGFjaGUtdGlua2VycG9wLWdyZW1saW4tY29uc29sZS0zLjMuNy1iaW4uemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5HcmVtbGluIENvbnNvbGUgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgorICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvZHluL2Nsb3Nlci5sdWEvdGlua2VycG9wLzMuMy43L2FwYWNoZS10aW5rZXJwb3AtZ3JlbWxpbi1zZXJ2ZXItMy4zLjctYmluLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+R3JlbWxpbiBTZXJ2ZXIgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgorICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvZHluL2Nsb3Nlci5sdWEvdGlua2VycG9wLzMuMy43L2FwYWNoZS10aW5rZXJwb3AtMy4zLjctc3JjLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+U291cmNlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgIDwvdHI+CiAgICAgPC90YWJsZT4KICAgICA8aDQ+QXJjaGl2ZWQgUmVsZWFzZXM8L2g0PgotICAgIDx0YWJsZSBjbGFzcz0idGFibGUiPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgPHN0cm9uZz4zLjMuMzwvc3Ryb25nPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA4LU1heS0yMDE4Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvdGlua2VycG9wL2Jsb2IvMy4zLjMvQ0hBTkdFTE9HLmFzY2lpZG9jI3JlbGVhc2UtMy0zLTMiPnJlbGVhc2Ugbm90ZXM8L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjMuMy91cGdyYWRlLyNfdGlua2VycG9wXzNfM18zIj51cGdyYWRlPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy4zLjMvIj5kb2N1bWVudGF0aW9uPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzLzMuMy4zL2Z1bGwvIj5qYXZhZG9jPC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuMy4zL2FwYWNoZS10aW5rZXJwb3AtZ3JlbWxpbi1jb25zb2xlLTMuMy4zLWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gQ29uc29sZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC90aW5rZXJwb3AvMy4zLjMvYXBhY2hlLXRpbmtlcnBvcC1ncmVtbGluLXNlcnZlci0zLjMuMy1iaW4uemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5HcmVtbGluIFNlcnZlciA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC90aW5rZXJwb3AvMy4zLjMvYXBhY2hlLXRpbmtlcnBvcC0zLjMuMy1zcmMuemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5Tb3VyY2UgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxzdHJvbmc+My4yLjk8L3N0cm9uZz4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgOC1NYXktMjAxOAotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL3RpbmtlcnBvcC9ibG9iLzMuMi45L0NIQU5HRUxPRy5hc2NpaWRvYyNyZWxlYXNlLTMtMi05Ij5yZWxlYXNlIG5vdGVzPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy4yLjkvdXBncmFkZS8jX3RpbmtlcnBvcF8zXzJfOSI+dXBncmFkZTwvYT4gfAotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuMi45LyI+ZG9jdW1lbnRhdGlvbjwvYT4gfAotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy8zLjIuOS9mdWxsLyI+amF2YWRvYzwvYT4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQgYWxpZ249InJpZ2h0Ij4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L3RpbmtlcnBvcC8zLjIuOS9hcGFjaGUtdGlua2VycG9wLWdyZW1saW4tY29uc29sZS0zLjIuOS1iaW4uemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5HcmVtbGluIENvbnNvbGUgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuMi45L2FwYWNoZS10aW5rZXJwb3AtZ3JlbWxpbi1zZXJ2ZXItMy4yLjktYmluLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+R3JlbWxpbiBTZXJ2ZXIgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuMi45L2FwYWNoZS10aW5rZXJwb3AtMy4yLjktc3JjLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+U291cmNlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA8c3Ryb25nPjMuMy4yPC9zdHJvbmc+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDItQXByLTIwMTgKLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwYWNoZS90aW5rZXJwb3AvYmxvYi8zLjMuMi9DSEFOR0VMT0cuYXNjaWlkb2MjcmVsZWFzZS0zLTMtMiI+cmVsZWFzZSBub3RlczwvYT4gfAotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuMy4yL3VwZ3JhZGUvI190aW5rZXJwb3BfM18zXzIiPnVwZ3JhZGU8L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjMuMi8iPmRvY3VtZW50YXRpb248L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MvMy4zLjIvZnVsbC8iPmphdmFkb2M8L2E+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkIGFsaWduPSJyaWdodCI+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC90aW5rZXJwb3AvMy4zLjIvYXBhY2hlLXRpbmtlcnBvcC1ncmVtbGluLWNvbnNvbGUtMy4zLjItYmluLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+R3JlbWxpbiBDb25zb2xlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L3RpbmtlcnBvcC8zLjMuMi9hcGFjaGUtdGlua2VycG9wLWdyZW1saW4tc2VydmVyLTMuMy4yLWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gU2VydmVyIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L3RpbmtlcnBvcC8zLjMuMi9hcGFjaGUtdGlua2VycG9wLTMuMy4yLXNyYy56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPlNvdXJjZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgPHN0cm9uZz4zLjIuODwvc3Ryb25nPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICAyLUFwci0yMDE4Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvdGlua2VycG9wL2Jsb2IvMy4yLjgvQ0hBTkdFTE9HLmFzY2lpZG9jI3JlbGVhc2UtMy0yLTgiPnJlbGVhc2Ugbm90ZXM8L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjIuOC91cGdyYWRlLyNfdGlua2VycG9wXzNfMl84Ij51cGdyYWRlPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy4yLjgvIj5kb2N1bWVudGF0aW9uPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzLzMuMi44L2Z1bGwvIj5qYXZhZG9jPC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuMi44L2FwYWNoZS10aW5rZXJwb3AtZ3JlbWxpbi1jb25zb2xlLTMuMi44LWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gQ29uc29sZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC90aW5rZXJwb3AvMy4yLjgvYXBhY2hlLXRpbmtlcnBvcC1ncmVtbGluLXNlcnZlci0zLjIuOC1iaW4uemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5HcmVtbGluIFNlcnZlciA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC90aW5rZXJwb3AvMy4yLjgvYXBhY2hlLXRpbmtlcnBvcC0zLjIuOC1zcmMuemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5Tb3VyY2UgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxzdHJvbmc+My4zLjE8L3N0cm9uZz4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgMTctRGVjLTIwMTcKLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwYWNoZS90aW5rZXJwb3AvYmxvYi8zLjMuMS9DSEFOR0VMT0cuYXNjaWlkb2MjcmVsZWFzZS0zLTMtMSI+cmVsZWFzZSBub3RlczwvYT4gfAotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuMy4xL3VwZ3JhZGUvI190aW5rZXJwb3BfM18zXzEiPnVwZ3JhZGU8L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjMuMS8iPmRvY3VtZW50YXRpb248L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MvMy4zLjEvZnVsbC8iPmphdmFkb2M8L2E+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkIGFsaWduPSJyaWdodCI+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC90aW5rZXJwb3AvMy4zLjEvYXBhY2hlLXRpbmtlcnBvcC1ncmVtbGluLWNvbnNvbGUtMy4zLjEtYmluLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+R3JlbWxpbiBDb25zb2xlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L3RpbmtlcnBvcC8zLjMuMS9hcGFjaGUtdGlua2VycG9wLWdyZW1saW4tc2VydmVyLTMuMy4xLWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gU2VydmVyIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L3RpbmtlcnBvcC8zLjMuMS9hcGFjaGUtdGlua2VycG9wLTMuMy4xLXNyYy56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPlNvdXJjZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgPHN0cm9uZz4zLjIuNzwvc3Ryb25nPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICAxNy1EZWMtMjAxNwotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL3RpbmtlcnBvcC9ibG9iLzMuMi43L0NIQU5HRUxPRy5hc2NpaWRvYyNyZWxlYXNlLTMtMi03Ij5yZWxlYXNlIG5vdGVzPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy4yLjcvdXBncmFkZS8jX3RpbmtlcnBvcF8zXzJfNyI+dXBncmFkZTwvYT4gfAotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuMi43LyI+ZG9jdW1lbnRhdGlvbjwvYT4gfAotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy8zLjIuNy9mdWxsLyI+amF2YWRvYzwvYT4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQgYWxpZ249InJpZ2h0Ij4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L3RpbmtlcnBvcC8zLjIuNy9hcGFjaGUtdGlua2VycG9wLWdyZW1saW4tY29uc29sZS0zLjIuNy1iaW4uemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5HcmVtbGluIENvbnNvbGUgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuMi43L2FwYWNoZS10aW5rZXJwb3AtZ3JlbWxpbi1zZXJ2ZXItMy4yLjctYmluLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+R3JlbWxpbiBTZXJ2ZXIgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuMi43L2FwYWNoZS10aW5rZXJwb3AtMy4yLjctc3JjLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+U291cmNlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA8c3Ryb25nPjMuMy4wPC9zdHJvbmc+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDIxLUF1Zy0yMDE3Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvdGlua2VycG9wL2Jsb2IvMy4zLjAvQ0hBTkdFTE9HLmFzY2lpZG9jI3JlbGVhc2UtMy0zLTAiPnJlbGVhc2Ugbm90ZXM8L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjMuMC91cGdyYWRlLyNfdGlua2VycG9wXzNfM18wIj51cGdyYWRlPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy4zLjAvIj5kb2N1bWVudGF0aW9uPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzLzMuMy4wL2Z1bGwvIj5qYXZhZG9jPC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuMy4wL2FwYWNoZS10aW5rZXJwb3AtZ3JlbWxpbi1jb25zb2xlLTMuMy4wLWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gQ29uc29sZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC90aW5rZXJwb3AvMy4zLjAvYXBhY2hlLXRpbmtlcnBvcC1ncmVtbGluLXNlcnZlci0zLjMuMC1iaW4uemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5HcmVtbGluIFNlcnZlciA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC90aW5rZXJwb3AvMy4zLjAvYXBhY2hlLXRpbmtlcnBvcC0zLjMuMC1zcmMuemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5Tb3VyY2UgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxzdHJvbmc+My4yLjY8L3N0cm9uZz4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgMjEtQXVnLTIwMTcKLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwYWNoZS90aW5rZXJwb3AvYmxvYi8zLjIuNi9DSEFOR0VMT0cuYXNjaWlkb2MjcmVsZWFzZS0zLTItNiI+cmVsZWFzZSBub3RlczwvYT4gfAotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuMi42L3VwZ3JhZGUvI190aW5rZXJwb3BfM18yXzYiPnVwZ3JhZGU8L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjIuNi8iPmRvY3VtZW50YXRpb248L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MvMy4yLjYvZnVsbC8iPmphdmFkb2M8L2E+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkIGFsaWduPSJyaWdodCI+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC90aW5rZXJwb3AvMy4yLjYvYXBhY2hlLXRpbmtlcnBvcC1ncmVtbGluLWNvbnNvbGUtMy4yLjYtYmluLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+R3JlbWxpbiBDb25zb2xlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L3RpbmtlcnBvcC8zLjIuNi9hcGFjaGUtdGlua2VycG9wLWdyZW1saW4tc2VydmVyLTMuMi42LWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gU2VydmVyIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L3RpbmtlcnBvcC8zLjIuNi9hcGFjaGUtdGlua2VycG9wLTMuMi42LXNyYy56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPlNvdXJjZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgPHN0cm9uZz4zLjEuODwvc3Ryb25nPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICAyMS1BdWctMjAxNwotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL3RpbmtlcnBvcC9ibG9iLzMuMS44L0NIQU5HRUxPRy5hc2NpaWRvYyNyZWxlYXNlLTMtMS04Ij5yZWxlYXNlIG5vdGVzPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy4xLjgvdXBncmFkZS8jX3RpbmtlcnBvcF8zXzFfOCI+dXBncmFkZTwvYT4gfAotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuMS44LyI+ZG9jdW1lbnRhdGlvbjwvYT4gfAotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy8zLjEuOC9mdWxsLyI+amF2YWRvYzwvYT4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQgYWxpZ249InJpZ2h0Ij4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L3RpbmtlcnBvcC8zLjEuOC9hcGFjaGUtdGlua2VycG9wLWdyZW1saW4tY29uc29sZS0zLjEuOC1iaW4uemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5HcmVtbGluIENvbnNvbGUgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuMS44L2FwYWNoZS10aW5rZXJwb3AtZ3JlbWxpbi1zZXJ2ZXItMy4xLjgtYmluLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+R3JlbWxpbiBTZXJ2ZXIgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuMS44L2FwYWNoZS10aW5rZXJwb3AtMy4xLjgtc3JjLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+U291cmNlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA8c3Ryb25nPjMuMi41PC9zdHJvbmc+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDEyLUp1bi0yMDE3Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvdGlua2VycG9wL2Jsb2IvMy4yLjUvQ0hBTkdFTE9HLmFzY2lpZG9jI3JlbGVhc2UtMy0yLTUiPnJlbGVhc2Ugbm90ZXM8L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjIuNS91cGdyYWRlLyNfdGlua2VycG9wXzNfMl81Ij51cGdyYWRlPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy4yLjUvIj5kb2N1bWVudGF0aW9uPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzLzMuMi41L2Z1bGwvIj5qYXZhZG9jPC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuMi41L2FwYWNoZS10aW5rZXJwb3AtZ3JlbWxpbi1jb25zb2xlLTMuMi41LWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gQ29uc29sZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC90aW5rZXJwb3AvMy4yLjUvYXBhY2hlLXRpbmtlcnBvcC1ncmVtbGluLXNlcnZlci0zLjIuNS1iaW4uemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5HcmVtbGluIFNlcnZlciA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC90aW5rZXJwb3AvMy4yLjUvYXBhY2hlLXRpbmtlcnBvcC0zLjIuNS1zcmMuemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5Tb3VyY2UgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxzdHJvbmc+My4xLjc8L3N0cm9uZz4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgMTItSnVuLTIwMTcKLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwYWNoZS90aW5rZXJwb3AvYmxvYi8zLjEuNy9DSEFOR0VMT0cuYXNjaWlkb2MjcmVsZWFzZS0zLTEtNyI+cmVsZWFzZSBub3RlczwvYT4gfAotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuMS43L3VwZ3JhZGUvI190aW5rZXJwb3BfM18xXzciPnVwZ3JhZGU8L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjEuNy8iPmRvY3VtZW50YXRpb248L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MvMy4xLjcvZnVsbC8iPmphdmFkb2M8L2E+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkIGFsaWduPSJyaWdodCI+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC90aW5rZXJwb3AvMy4xLjcvYXBhY2hlLXRpbmtlcnBvcC1ncmVtbGluLWNvbnNvbGUtMy4xLjctYmluLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+R3JlbWxpbiBDb25zb2xlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L3RpbmtlcnBvcC8zLjEuNy9hcGFjaGUtdGlua2VycG9wLWdyZW1saW4tc2VydmVyLTMuMS43LWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gU2VydmVyIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L3RpbmtlcnBvcC8zLjEuNy9hcGFjaGUtdGlua2VycG9wLTMuMS43LXNyYy56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPlNvdXJjZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgPHN0cm9uZz4zLjIuNDwvc3Ryb25nPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICAzLUZlYi0yMDE3Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvdGlua2VycG9wL2Jsb2IvMy4yLjQvQ0hBTkdFTE9HLmFzY2lpZG9jI3JlbGVhc2UtMy0yLTQiPnJlbGVhc2Ugbm90ZXM8L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjIuNC91cGdyYWRlLyNfdGlua2VycG9wXzNfMl80Ij51cGdyYWRlPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy4yLjQvIj5kb2N1bWVudGF0aW9uPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzLzMuMi40L2Z1bGwvIj5qYXZhZG9jPC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuMi40L2FwYWNoZS10aW5rZXJwb3AtZ3JlbWxpbi1jb25zb2xlLTMuMi40LWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gQ29uc29sZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC90aW5rZXJwb3AvMy4yLjQvYXBhY2hlLXRpbmtlcnBvcC1ncmVtbGluLXNlcnZlci0zLjIuNC1iaW4uemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5HcmVtbGluIFNlcnZlciA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC90aW5rZXJwb3AvMy4yLjQvYXBhY2hlLXRpbmtlcnBvcC0zLjIuNC1zcmMuemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5Tb3VyY2UgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxzdHJvbmc+My4xLjY8L3N0cm9uZz4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgMy1GZWItMjAxNwotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL3RpbmtlcnBvcC9ibG9iLzMuMS42L0NIQU5HRUxPRy5hc2NpaWRvYyNyZWxlYXNlLTMtMS02Ij5yZWxlYXNlIG5vdGVzPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy4xLjYvdXBncmFkZS8jX3RpbmtlcnBvcF8zXzFfNiI+dXBncmFkZTwvYT4gfAotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuMS42LyI+ZG9jdW1lbnRhdGlvbjwvYT4gfAotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy8zLjEuNi9mdWxsLyI+amF2YWRvYzwvYT4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQgYWxpZ249InJpZ2h0Ij4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L3RpbmtlcnBvcC8zLjEuNi9hcGFjaGUtdGlua2VycG9wLWdyZW1saW4tY29uc29sZS0zLjEuNi1iaW4uemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5HcmVtbGluIENvbnNvbGUgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuMS42L2FwYWNoZS10aW5rZXJwb3AtZ3JlbWxpbi1zZXJ2ZXItMy4xLjYtYmluLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+R3JlbWxpbiBTZXJ2ZXIgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuMS42L2FwYWNoZS10aW5rZXJwb3AtMy4xLjYtc3JjLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+U291cmNlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA8c3Ryb25nPjMuMi4zPC9zdHJvbmc+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDE3LU9jdC0yMDE2Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvdGlua2VycG9wL2Jsb2IvMy4yLjMvQ0hBTkdFTE9HLmFzY2lpZG9jI3JlbGVhc2UtMy0yLTMiPnJlbGVhc2Ugbm90ZXM8L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjIuMy91cGdyYWRlLyNfdGlua2VycG9wXzNfMl8zIj51cGdyYWRlPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy4yLjMvIj5kb2N1bWVudGF0aW9uPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzLzMuMi4zL2Z1bGwvIj5qYXZhZG9jPC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuMi4zL2FwYWNoZS10aW5rZXJwb3AtZ3JlbWxpbi1jb25zb2xlLTMuMi4zLWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gQ29uc29sZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC90aW5rZXJwb3AvMy4yLjMvYXBhY2hlLXRpbmtlcnBvcC1ncmVtbGluLXNlcnZlci0zLjIuMy1iaW4uemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5HcmVtbGluIFNlcnZlciA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC90aW5rZXJwb3AvMy4yLjMvYXBhY2hlLXRpbmtlcnBvcC0zLjIuMy1zcmMuemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5Tb3VyY2UgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxzdHJvbmc+My4xLjU8L3N0cm9uZz4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgMTctT2N0LTIwMTYKLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwYWNoZS90aW5rZXJwb3AvYmxvYi8zLjEuNS9DSEFOR0VMT0cuYXNjaWlkb2MjcmVsZWFzZS0zLTEtNSI+cmVsZWFzZSBub3RlczwvYT4gfAotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuMS41L3VwZ3JhZGUvI190aW5rZXJwb3BfM18xXzUiPnVwZ3JhZGU8L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjEuNS8iPmRvY3VtZW50YXRpb248L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MvMy4xLjUvZnVsbC8iPmphdmFkb2M8L2E+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkIGFsaWduPSJyaWdodCI+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC90aW5rZXJwb3AvMy4xLjUvYXBhY2hlLXRpbmtlcnBvcC1ncmVtbGluLWNvbnNvbGUtMy4xLjUtYmluLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+R3JlbWxpbiBDb25zb2xlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L3RpbmtlcnBvcC8zLjEuNS9hcGFjaGUtdGlua2VycG9wLWdyZW1saW4tc2VydmVyLTMuMS41LWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gU2VydmVyIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L3RpbmtlcnBvcC8zLjEuNS9hcGFjaGUtdGlua2VycG9wLTMuMS41LXNyYy56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPlNvdXJjZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgPHN0cm9uZz4zLjIuMjwvc3Ryb25nPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA2LVNlcC0yMDE2Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvdGlua2VycG9wL2Jsb2IvMy4yLjIvQ0hBTkdFTE9HLmFzY2lpZG9jI3JlbGVhc2UtMy0yLTIiPnJlbGVhc2Ugbm90ZXM8L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjIuMi91cGdyYWRlLyNfdGlua2VycG9wXzNfMl8yIj51cGdyYWRlPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy4yLjIvIj5kb2N1bWVudGF0aW9uPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzLzMuMi4yL2Z1bGwvIj5qYXZhZG9jPC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuMi4yL2FwYWNoZS10aW5rZXJwb3AtZ3JlbWxpbi1jb25zb2xlLTMuMi4yLWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gQ29uc29sZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC90aW5rZXJwb3AvMy4yLjIvYXBhY2hlLXRpbmtlcnBvcC1ncmVtbGluLXNlcnZlci0zLjIuMi1iaW4uemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5HcmVtbGluIFNlcnZlciA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC90aW5rZXJwb3AvMy4yLjIvYXBhY2hlLXRpbmtlcnBvcC0zLjIuMi1zcmMuemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5Tb3VyY2UgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxzdHJvbmc+My4xLjQ8L3N0cm9uZz4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgNi1TZXAtMjAxNgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL3RpbmtlcnBvcC9ibG9iLzMuMS40L0NIQU5HRUxPRy5hc2NpaWRvYyNyZWxlYXNlLTMtMS00Ij5yZWxlYXNlIG5vdGVzPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy4xLjQvdXBncmFkZS8jX3RpbmtlcnBvcF8zXzFfNCI+dXBncmFkZTwvYT4gfAotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuMS40LyI+ZG9jdW1lbnRhdGlvbjwvYT4gfAotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy8zLjEuNC9mdWxsLyI+amF2YWRvYzwvYT4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQgYWxpZ249InJpZ2h0Ij4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L3RpbmtlcnBvcC8zLjEuNC9hcGFjaGUtdGlua2VycG9wLWdyZW1saW4tY29uc29sZS0zLjEuNC1iaW4uemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5HcmVtbGluIENvbnNvbGUgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuMS40L2FwYWNoZS10aW5rZXJwb3AtZ3JlbWxpbi1zZXJ2ZXItMy4xLjQtYmluLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+R3JlbWxpbiBTZXJ2ZXIgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuMS40L2FwYWNoZS10aW5rZXJwb3AtMy4xLjQtc3JjLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+U291cmNlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA8c3Ryb25nPjMuMi4xPC9zdHJvbmc+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDE4LUp1bC0yMDE2Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvdGlua2VycG9wL2Jsb2IvMy4yLjEvQ0hBTkdFTE9HLmFzY2lpZG9jI3RpbmtlcnBvcC0zMjEtcmVsZWFzZS1kYXRlLWp1bHktMTgtMjAxNiI+cmVsZWFzZSBub3RlczwvYT4gfAotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuMi4xL3VwZ3JhZGUvI190aW5rZXJwb3BfM18yXzEiPnVwZ3JhZGU8L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjIuMS9yZWZlcmVuY2UvIj5kb2N1bWVudGF0aW9uPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzLzMuMi4xL2Z1bGwvIj5qYXZhZG9jPC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuMi4xL2FwYWNoZS1ncmVtbGluLWNvbnNvbGUtMy4yLjEtYmluLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+R3JlbWxpbiBDb25zb2xlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L3RpbmtlcnBvcC8zLjIuMS9hcGFjaGUtZ3JlbWxpbi1zZXJ2ZXItMy4yLjEtYmluLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+R3JlbWxpbiBTZXJ2ZXIgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuMi4xL2FwYWNoZS10aW5rZXJwb3AtMy4yLjEtc3JjLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+U291cmNlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA8c3Ryb25nPjMuMS4zPC9zdHJvbmc+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDE4LUp1bC0yMDE2Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvdGlua2VycG9wL2Jsb2IvMy4xLjMvQ0hBTkdFTE9HLmFzY2lpZG9jI3RpbmtlcnBvcC0zMTMtcmVsZWFzZS1kYXRlLWp1bHktMTgtMjAxNiI+cmVsZWFzZSBub3RlczwvYT4gfAotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuMS4zL3VwZ3JhZGUvI190aW5rZXJwb3BfM18xXzMiPnVwZ3JhZGU8L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjEuMy9yZWZlcmVuY2UvIj5kb2N1bWVudGF0aW9uPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzLzMuMS4zL2Z1bGwvIj5qYXZhZG9jPC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuMS4zL2FwYWNoZS1ncmVtbGluLWNvbnNvbGUtMy4xLjMtYmluLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+R3JlbWxpbiBDb25zb2xlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L3RpbmtlcnBvcC8zLjEuMy9hcGFjaGUtZ3JlbWxpbi1zZXJ2ZXItMy4xLjMtYmluLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+R3JlbWxpbiBTZXJ2ZXIgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuMS4zL2FwYWNoZS10aW5rZXJwb3AtMy4xLjMtc3JjLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+U291cmNlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA8c3Ryb25nPjMuMi4wLWluY3ViYXRpbmc8L3N0cm9uZz4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgOC1BcHItMjAxNgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL3RpbmtlcnBvcC9ibG9iLzMuMi4wLWluY3ViYXRpbmcvQ0hBTkdFTE9HLmFzY2lpZG9jI3RpbmtlcnBvcC0zMjAtcmVsZWFzZS1kYXRlLWFwcmlsLTgtMjAxNiI+cmVsZWFzZSBub3RlczwvYT4gfAotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuMi4wLWluY3ViYXRpbmcvdXBncmFkZS8jX3RpbmtlcnBvcF8zXzJfMF8yIj51cGdyYWRlPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy4yLjAtaW5jdWJhdGluZy9yZWZlcmVuY2UvIj5kb2N1bWVudGF0aW9uPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzLzMuMi4wLWluY3ViYXRpbmcvZnVsbC8iPmphdmFkb2M8L2E+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkIGFsaWduPSJyaWdodCI+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC9pbmN1YmF0b3IvdGlua2VycG9wLzMuMi4wLWluY3ViYXRpbmcvYXBhY2hlLWdyZW1saW4tY29uc29sZS0zLjIuMC1pbmN1YmF0aW5nLWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gQ29uc29sZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC9pbmN1YmF0b3IvdGlua2VycG9wLzMuMi4wLWluY3ViYXRpbmcvYXBhY2hlLWdyZW1saW4tc2VydmVyLTMuMi4wLWluY3ViYXRpbmctYmluLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+R3JlbWxpbiBTZXJ2ZXIgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvaW5jdWJhdG9yL3RpbmtlcnBvcC8zLjIuMC1pbmN1YmF0aW5nL2FwYWNoZS10aW5rZXJwb3AtMy4yLjAtaW5jdWJhdGluZy1zcmMuemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5Tb3VyY2UgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxzdHJvbmc+My4xLjItaW5jdWJhdGluZzwvc3Ryb25nPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA4LUFwci0yMDE2Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvdGlua2VycG9wL2Jsb2IvMy4xLjItaW5jdWJhdGluZy9DSEFOR0VMT0cuYXNjaWlkb2MjdGlua2VycG9wLTMxMi1yZWxlYXNlLWRhdGUtYXByaWwtOC0yMDE2Ij5yZWxlYXNlIG5vdGVzPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy4xLjItaW5jdWJhdGluZy91cGdyYWRlLyNfdGlua2VycG9wXzNfMV8yIj51cGdyYWRlPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy4xLjItaW5jdWJhdGluZy9yZWZlcmVuY2UvIj5kb2N1bWVudGF0aW9uPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzLzMuMS4yLWluY3ViYXRpbmcvZnVsbC8iPmphdmFkb2M8L2E+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkIGFsaWduPSJyaWdodCI+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC9pbmN1YmF0b3IvdGlua2VycG9wLzMuMS4yLWluY3ViYXRpbmcvYXBhY2hlLWdyZW1saW4tY29uc29sZS0zLjEuMi1pbmN1YmF0aW5nLWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gQ29uc29sZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC9pbmN1YmF0b3IvdGlua2VycG9wLzMuMS4yLWluY3ViYXRpbmcvYXBhY2hlLWdyZW1saW4tc2VydmVyLTMuMS4yLWluY3ViYXRpbmctYmluLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+R3JlbWxpbiBTZXJ2ZXIgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvaW5jdWJhdG9yL3RpbmtlcnBvcC8zLjEuMi1pbmN1YmF0aW5nL2FwYWNoZS10aW5rZXJwb3AtMy4xLjItaW5jdWJhdGluZy1zcmMuemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5Tb3VyY2UgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxzdHJvbmc+My4xLjEtaW5jdWJhdGluZzwvc3Ryb25nPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA4LUZlYi0yMDE2Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvdGlua2VycG9wL2Jsb2IvMy4xLjEtaW5jdWJhdGluZy9DSEFOR0VMT0cuYXNjaWlkb2MjdGlua2VycG9wLTMxMS1yZWxlYXNlLWRhdGUtZmVicnVhcnktOC0yMDE2Ij5yZWxlYXNlIG5vdGVzPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy4xLjEtaW5jdWJhdGluZy91cGdyYWRlLyNfdGlua2VycG9wXzNfMV8xIj51cGdyYWRlPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy4xLjEtaW5jdWJhdGluZy9yZWZlcmVuY2UvIj5kb2N1bWVudGF0aW9uPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzLzMuMS4xLWluY3ViYXRpbmcvZnVsbC8iPmphdmFkb2M8L2E+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkIGFsaWduPSJyaWdodCI+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC9pbmN1YmF0b3IvdGlua2VycG9wLzMuMS4xLWluY3ViYXRpbmcvYXBhY2hlLWdyZW1saW4tY29uc29sZS0zLjEuMS1pbmN1YmF0aW5nLWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gQ29uc29sZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC9pbmN1YmF0b3IvdGlua2VycG9wLzMuMS4xLWluY3ViYXRpbmcvYXBhY2hlLWdyZW1saW4tc2VydmVyLTMuMS4xLWluY3ViYXRpbmctYmluLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+R3JlbWxpbiBTZXJ2ZXIgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvaW5jdWJhdG9yL3RpbmtlcnBvcC8zLjEuMS1pbmN1YmF0aW5nL2FwYWNoZS10aW5rZXJwb3AtMy4xLjEtaW5jdWJhdGluZy1zcmMuemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5Tb3VyY2UgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgICAgPHRkPgotICAgICAgICAgICAgICAgIDxzdHJvbmc+My4xLjAtaW5jdWJhdGluZzwvc3Ryb25nPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICAxNi1Ob3YtMjAxNQotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL3RpbmtlcnBvcC9ibG9iLzMuMS4wLWluY3ViYXRpbmcvQ0hBTkdFTE9HLmFzY2lpZG9jI3RpbmtlcnBvcC0zMTAtcmVsZWFzZS1kYXRlLW5vdmVtYmVyLTE2LTIwMTUiPnJlbGVhc2Ugbm90ZXM8L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjEuMC1pbmN1YmF0aW5nLyI+ZG9jdW1lbnRhdGlvbjwvYT4gfAotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy8zLjEuMC1pbmN1YmF0aW5nL2Z1bGwvIj5qYXZhZG9jPC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvaW5jdWJhdG9yL3RpbmtlcnBvcC8zLjEuMC1pbmN1YmF0aW5nL2FwYWNoZS1ncmVtbGluLWNvbnNvbGUtMy4xLjAtaW5jdWJhdGluZy1iaW4uemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5HcmVtbGluIENvbnNvbGUgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvaW5jdWJhdG9yL3RpbmtlcnBvcC8zLjEuMC1pbmN1YmF0aW5nL2FwYWNoZS1ncmVtbGluLXNlcnZlci0zLjEuMC1pbmN1YmF0aW5nLWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gU2VydmVyIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L2luY3ViYXRvci90aW5rZXJwb3AvMy4xLjAtaW5jdWJhdGluZy9hcGFjaGUtdGlua2VycG9wLTMuMS4wLWluY3ViYXRpbmctc3JjLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+U291cmNlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA8c3Ryb25nPjMuMC4yLWluY3ViYXRpbmc8L3N0cm9uZz4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgMTktT2N0LTIwMTUKLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwYWNoZS90aW5rZXJwb3AvYmxvYi8zLjAuMi1pbmN1YmF0aW5nL0NIQU5HRUxPRy5hc2NpaWRvYyN0aW5rZXJwb3AtMzAyLXJlbGVhc2UtZGF0ZS1vY3RvYmVyLTE5LTIwMTUiPnJlbGVhc2Ugbm90ZXM8L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjAuMi1pbmN1YmF0aW5nLyI+ZG9jdW1lbnRhdGlvbjwvYT4gfAotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy8zLjAuMi1pbmN1YmF0aW5nL2Z1bGwvIj5qYXZhZG9jPC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvaW5jdWJhdG9yL3RpbmtlcnBvcC8zLjAuMi1pbmN1YmF0aW5nL2FwYWNoZS1ncmVtbGluLWNvbnNvbGUtMy4wLjItaW5jdWJhdGluZy1iaW4uemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5HcmVtbGluIENvbnNvbGUgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvaW5jdWJhdG9yL3RpbmtlcnBvcC8zLjAuMi1pbmN1YmF0aW5nL2FwYWNoZS1ncmVtbGluLXNlcnZlci0zLjAuMi1pbmN1YmF0aW5nLWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gU2VydmVyIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L2luY3ViYXRvci90aW5rZXJwb3AvMy4wLjItaW5jdWJhdGluZy9hcGFjaGUtdGlua2VycG9wLTMuMC4yLWluY3ViYXRpbmctc3JjLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+U291cmNlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA8c3Ryb25nPjMuMC4xLWluY3ViYXRpbmc8L3N0cm9uZz4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgMi1TZXAtMjAxNQotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL3RpbmtlcnBvcC9ibG9iLzMuMC4xLWluY3ViYXRpbmcvQ0hBTkdFTE9HLmFzY2lpZG9jI3RpbmtlcnBvcC0zMDEtcmVsZWFzZS1kYXRlLXNlcHRlbWJlci0yLTIwMTUiPnJlbGVhc2Ugbm90ZXM8L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjAuMS1pbmN1YmF0aW5nLyI+ZG9jdW1lbnRhdGlvbjwvYT4gfAotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy8zLjAuMS1pbmN1YmF0aW5nL2Z1bGwvIj5qYXZhZG9jPC9hPgotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvaW5jdWJhdG9yL3RpbmtlcnBvcC8zLjAuMS1pbmN1YmF0aW5nL2FwYWNoZS1ncmVtbGluLWNvbnNvbGUtMy4wLjEtaW5jdWJhdGluZy1iaW4uemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5HcmVtbGluIENvbnNvbGUgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgotICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvaW5jdWJhdG9yL3RpbmtlcnBvcC8zLjAuMS1pbmN1YmF0aW5nL2FwYWNoZS1ncmVtbGluLXNlcnZlci0zLjAuMS1pbmN1YmF0aW5nLWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gU2VydmVyIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L2luY3ViYXRvci90aW5rZXJwb3AvMy4wLjEtaW5jdWJhdGluZy9hcGFjaGUtdGlua2VycG9wLTMuMC4xLWluY3ViYXRpbmctc3JjLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+U291cmNlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA8c3Ryb25nPjMuMC4wLWluY3ViYXRpbmc8L3N0cm9uZz4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQ+Ci0gICAgICAgICAgICAgICAgOS1KdWwtMjAxNQotICAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZD4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL3RpbmtlcnBvcC9ibG9iLzMuMC4wLWluY3ViYXRpbmcvQ0hBTkdFTE9HLmFzY2lpZG9jI3RpbmtlcnBvcC0zMDAtcmVsZWFzZS1kYXRlLWp1bHktOS0yMDE1Ij5yZWxlYXNlIG5vdGVzPC9hPiB8Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy4wLjAtaW5jdWJhdGluZy8iPmRvY3VtZW50YXRpb248L2E+IHwKLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MvMy4wLjAtaW5jdWJhdGluZy9mdWxsLyI+amF2YWRvYzwvYT4KLSAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQgYWxpZ249InJpZ2h0Ij4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L2luY3ViYXRvci90aW5rZXJwb3AvMy4wLjAtaW5jdWJhdGluZy9hcGFjaGUtZ3JlbWxpbi1jb25zb2xlLTMuMC4wLWluY3ViYXRpbmctYmluLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+R3JlbWxpbiBDb25zb2xlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L2luY3ViYXRvci90aW5rZXJwb3AvMy4wLjAtaW5jdWJhdGluZy9hcGFjaGUtZ3JlbWxpbi1zZXJ2ZXItMy4wLjAtaW5jdWJhdGluZy1iaW4uemlwIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5HcmVtbGluIFNlcnZlciA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC9pbmN1YmF0b3IvdGlua2VycG9wLzMuMC4wLWluY3ViYXRpbmcvYXBhY2hlLXRpbmtlcnBvcC0zLjAuMC1pbmN1YmF0aW5nLXNyYy56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPlNvdXJjZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICA8L3RkPgotICAgICAgICA8L3RyPgotICAgIDwvdGFibGU+Ci0gICAgPHA+PHN0cm9uZz5Ob3RlPC9zdHJvbmc+IHRoYXQgdXBncmFkZSBkb2N1bWVudGF0aW9uIHdhcyBvbmx5IGludHJvZHVjZWQgYXQgMy4xLjEtaW5jdWJhdGluZyB3aGljaCBpcyB3aHkgdGhlcmUgYXJlIG5vIGxpbmtzICJ1cGdyYWRlIiBsaW5rcyBpbiB2ZXJzaW9ucyBwcmlvciB0byB0aGF0IG9uZS4KKyAgICA8cD4KKyAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIHJvdyI+CisgICAgICAgIDxkaXYgY2xhc3M9ImNvbC14cy0zIj4KKyAgICA8c2VsZWN0IGlkPSJkcm9wZG93bkFyY2hpdmVzIiBjbGFzcz0iZm9ybS1jb250cm9sIj4KKyAgICAgICAgPG9wdGlvbiBzZWxlY3RlZD0ic2VsZWN0ZWQiPjMuNC4xICgxOC1NYXItMjAxOSk8L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbj4zLjQuMCAoMi1KYW4tMjAxOSk8L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbj4zLjMuNiAoMTgtTWFyLTIwMTkpPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24+My4zLjUgKDItSmFuLTIwMTkpPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24+My4zLjQgKDE1LU9jdC0yMDE4KTwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uPjMuMy4zICg4LU1heS0yMDE4KTwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uPjMuMy4yICgyLUFwci0yMDE4KTwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uPjMuMy4xICgxNy1EZWMtMjAxNyk8L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbj4zLjMuMCAoMjEtQXVnLTIwMTcpPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24+My4yLjExICgyLUphbi0yMDE5KTwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uPjMuMi4xMCAoMTUtT2N0LTIwMTgpPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24+My4yLjkgKDgtTWF5LTIwMTgpPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24+My4yLjggKDItQXByLTIwMTgpPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24+My4yLjcgKDE3LURlYy0yMDE3KTwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uPjMuMi42ICgyMS1BdWctMjAxNyk8L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbj4zLjIuNSAoMTItSnVuLTIwMTcpPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24+My4yLjQgKDMtRmViLTIwMTcpPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24+My4yLjMgKDE3LU9jdC0yMDE2KTwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uPjMuMi4yICg2LVNlcC0yMDE2KTwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uPjMuMi4xICgxOC1KdWwtMjAxNik8L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbj4zLjIuMC1pbmN1YmF0aW5nICg4LUFwci0yMDE2KTwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uPjMuMS44ICgyMS1BdWctMjAxNyk8L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbj4zLjEuNyAoMTItSnVuLTIwMTcpPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24+My4xLjYgKDMtRmViLTIwMTcpPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24+My4xLjUgKDE3LU9jdC0yMDE2KTwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uPjMuMS40ICg2LVNlcC0yMDE2KTwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uPjMuMS4zICgxOC1KdWwtMjAxNik8L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbj4zLjEuMi1pbmN1YmF0aW5nICg4LUFwci0yMDE2KTwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uPjMuMS4xLWluY3ViYXRpbmcgKDgtRmViLTIwMTYpPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24+My4xLjAtaW5jdWJhdGluZyAoMTYtTm92LTIwMTUpPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24+My4wLjItaW5jdWJhdGluZyAoMTgtT2N0LTIwMTUpPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24+My4wLjEtaW5jdWJhdGluZyAoMi1TZXAtMjAxNSk8L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbj4zLjAuMC1pbmN1YmF0aW5nICg5LUp1bC0yMDE1KTwvb3B0aW9uPgorICAgIDwvc2VsZWN0PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8L3A+CisgICAgIDx0YWJsZSBjbGFzcz0idGFibGUiPgorICAgICAgICAgPHRyPgorICAgICAgICAgICAgIDx0ZD4KKyAgICAgICAgICAgICAgICAgPHN0cm9uZyBpZD0iYXJjaGl2ZVZlcnNpb24iPjwvc3Ryb25nPgorICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgPHRkIGlkPSJhcmNoaXZlUmVsZWFzZURhdGUiPjwvdGQ+CisgICAgICAgICAgICAgPHRkPgorICAgICAgICAgICAgICAgICA8YSBpZD0iYXJjaGl2ZVJlbGVhc2VOb3RlcyIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwYWNoZS90aW5rZXJwb3AvYmxvYi8zLjQuMS9DSEFOR0VMT0cuYXNjaWlkb2MjcmVsZWFzZS0zLTQtMSI+cmVsZWFzZSBub3RlczwvYT4gfAorICAgICAgICAgICAgICAgICA8c3BhbiBpZD0iYXJjaGl2ZVVwZ3JhZGUiPjxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuNC4xL3VwZ3JhZGUvI190aW5rZXJwb3BfM180XzEiPnVwZ3JhZGU8L2E+IHw8L3NwYW4+CisgICAgICAgICAgICAgICAgIDxhIGlkPSJhcmNoaXZlRG9jcyIgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy40LjEvIj5kb2N1bWVudGF0aW9uPC9hPiB8CisgICAgICAgICAgICAgICAgIDxhIGlkPSJhcmNoaXZlQ29udHJpYnV0b3JzIiBocmVmPSIjIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIGRhdGEtdGFyZ2V0PSIjY29udHJpYnV0b3JzLTNfNF8xIj5jb250cmlidXRvcnM8L2E+CisgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICA8dGQgYWxpZ249InJpZ2h0Ij4KKyAgICAgICAgICAgICAgICAgPGEgaWQ9ImFyY2hpdmVEb3dubG9hZENvbnNvbGUiIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuNC4xL2FwYWNoZS10aW5rZXJwb3AtZ3JlbWxpbi1jb25zb2xlLTMuNC4xLWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gQ29uc29sZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+CisgICAgICAgICAgICAgICAgIDxhIGlkPSJhcmNoaXZlRG93bmxvYWRTZXJ2ZXIiIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLzMuNC4xL2FwYWNoZS10aW5rZXJwb3AtZ3JlbWxpbi1zZXJ2ZXItMy40LjEtYmluLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+R3JlbWxpbiBTZXJ2ZXIgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZG93bmxvYWQtYWx0Ij48L3NwYW4+PC9hPgorICAgICAgICAgICAgICAgICA8YSBpZD0iYXJjaGl2ZURvd25sb2FkU291cmNlIiBocmVmPSJodHRwczovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L3RpbmtlcnBvcC8zLjQuMS9hcGFjaGUtdGlua2VycG9wLTMuNC4xLXNyYy56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPlNvdXJjZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+CisgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgIDwvdHI+CisgICAgIDwvdGFibGU+CisgICAgPHA+PHN0cm9uZz5Ob3RlPC9zdHJvbmc+IHRoYXQgdXBncmFkZSBkb2N1bWVudGF0aW9uIHdhcyBvbmx5IGludHJvZHVjZWQgYXQgMy4xLjEtaW5jdWJhdGluZyB3aGljaCBpcyB3aHkgdGhlcmUgYXJlIG5vICJ1cGdyYWRlIiBsaW5rcyBpbiB2ZXJzaW9ucyBwcmlvciB0byB0aGF0IG9uZS4KKyAgICA8cD5BcyBhIGNvbnZlbmllbmNlLCBUaW5rZXJQb3AgYWxzbyBkZXBsb3lzIHBhY2thZ2VkIGFydGlmYWN0cyB0byB0aGUgZm9sbG93aW5nIGxvY2F0aW9uczo8L3A+CisgICAgPHA+PGEgaHJlZj0iaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS91L3RpbmtlcnBvcC8iPkRvY2tlcjwvYT4gfCA8YSBocmVmPSJodHRwOi8vc2VhcmNoLm1hdmVuLm9yZy8jc2VhcmNoJTdDZ2ElN0MxJTdDZyUzQSUyMm9yZy5hcGFjaGUudGlua2VycG9wJTIyIj5NYXZlbiBDZW50cmFsPC9hPiB8IDxhIGhyZWY9Imh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvZ3JlbWxpbnB5dGhvbi8iPlB5UEk8L2E+IHwgPGEgaHJlZj0iaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvZ3JlbWxpbiI+bnBtPC9hPiB8IDxhIGhyZWY9Imh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9HcmVtbGluLk5ldC8iPk51R2V0PC9hPjwvcD4KKworICAgICA8cD48c3Ryb25nPk5vdGU8L3N0cm9uZz4gdGhpcyBwYWdlIGxpc3RzIG9mZmljaWFsIEFwYWNoZSByZWxlYXNlcyBvbmx5LiBUaW5rZXJQb3Agb2NjYXNpb25hbGx5IHByb2R1Y2VzIHVub2ZmaWNpYWwgYmluYXJ5IHJlbGVhc2UgY2FuZGlkYXRlcyAoZGVub3RlZCBieSB0aGUgc3VmZml4ICItUkMiKSB3aGljaCBhcmUgTk9UIHByb21vdGVkIG9yIGFubm91bmNlZCBhcyBhY3R1YWwgcmVsZWFzZSB2ZXJzaW9ucy4gPGk+U3VjaCByZWxlYXNlcyBhcmUgZm9yIGVhcmx5IGRldmVsb3BtZW50IGFuZCBldmFsdWF0aW9uIHB1cnBvc2VzIG9ubHkuPC9pPjwvcD4KKworICAgIDxhIG5hbWU9InZlcmlmeSI+PC9hPgogICAgIDxoND5WZXJpZnlpbmcgRG93bmxvYWRzPC9oND4KLSAgICA8cD5BbGwgZG93bmxvYWRzIGhhdmUgYXNzb2NpYXRlZCBQR1AgYW5kIFNIQTEgc2lnbmF0dXJlcyB0byBoZWxwIHZlcmlmeSBhIGRpc3RyaWJ1dGlvbiBwcm92aWRlZCBieSBhIG1pcnJvci4gVG8gdmVyaWZ5IGEgZGlzdHJpYnV0aW9uIHZpYSBQR1Agb3IgR1BHIGZpcnN0IGRvd25sb2FkIHRoZQorICAgIDxwPkFsbCBkb3dubG9hZHMgaGF2ZSBhc3NvY2lhdGVkIFBHUCBhbmQgU0hBNTEyIHNpZ25hdHVyZXMgdG8gaGVscCB2ZXJpZnkgYSBkaXN0cmlidXRpb24gcHJvdmlkZWQgYnkgYSBtaXJyb3IuIFRvIHZlcmlmeSBhIGRpc3RyaWJ1dGlvbiB2aWEgUEdQIG9yIEdQRyBmaXJzdCBkb3dubG9hZCB0aGUKICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wL0tFWVMiPktFWVM8L2E+IGZpbGUgKGl0IGlzIGltcG9ydGFudCB0byB1c2UgdGhlIGxpbmtlZCBmaWxlIHdoaWNoIGlzIGZyb20gdGhlIG1haW4gZGlzdHJpYnV0aW9uIGRpcmVjdG9yeSBhbmQgbm90IGEKICAgICAgICBtaXJyb3IuIE5leHQgZG93bmxvYWQgdGhlIGFwcHJvcHJpYXRlICJhc2MiIHNpZ25hdHVyZSBmaWxlIGZvciB0aGUgcmVsZXZhbnQgZGlzdHJpYnV0aW9uIChhZ2FpbiwgdGhpcyBmaWxlIHNob3VsZCBjb21lIGZyb20gdGhlIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvZGlzdC90aW5rZXJwb3AvIj5tYWluCiAgICAgICAgZGlzdHJpYnV0aW9uIGRpcmVjdG9yeTwvYT4gLSBub3RlIHRoYXQgb2xkZXIgcmVsZWFzZXMgd2lsbCBoYXZlIHN1Y2ggZmlsZXMgaW4gdGhlIDxhIGhyZWY9Imh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wLyI+YXJjaGl2ZXM8L2E+IG9yIGlmIHJlbGVhc2VkIHVuZGVyIEFwYWNoZQpAQCAtNTkzLDcgKzE1NywxMTU1IEBACiAgICAgICBncGcgLS12ZXJpZnkgYXBhY2hlLWdyZW1saW4tY29uc29sZS14Lnkuei1iaW4uemlwLmFzYyBhcGFjaGUtZ3JlbWxpbi1jb25zb2xlLXgueS56LWJpbi56aXAKICAgICAgIDwvY29kZT48L3ByZT4KICAgICA8L3A+Ci0gICAgPHA+QWx0ZXJuYXRpdmVseSwgY29uc2lkZXIgdmVyaWZ5aW5nIHRoZSBTSEExIHNpZ25hdHVyZSBvbiB0aGUgZmlsZXMuIEFuIFNIQTEgc2lnbmF0dXJlIGNvbnNpc3RzIG9mIDQwIGhleCBjaGFyYWN0ZXJzLgorICAgIDxwPkFsdGVybmF0aXZlbHksIGNvbnNpZGVyIHZlcmlmeWluZyB0aGUgU0hBNTEyIHNpZ25hdHVyZSBvbiB0aGUgZmlsZXMuIEFuIFNIQTUxMiBzaWduYXR1cmUgY29uc2lzdHMgb2YgMTI4IGhleCBjaGFyYWN0ZXJzLgogICAgICAgIEVuc3VyZSB0aGF0IHRoZSBnZW5lcmF0ZWQgc2lnbmF0dXJlIHN0cmluZyBtYXRjaGVzIHRoZSBzaWduYXR1cmUgc3RyaW5nIHB1Ymxpc2hlZCBpbiB0aGUgZmlsZXMgYWJvdmUuPC9wPgogIDwvZGl2PgotPC9kaXY+CisKKyAgICA8IS0tIENvbnRyaWJ1dG9yIE1vZGFscyAtLT4KKyAgICA8IS0tIDMuNC4yIC0tPgorICAgIDxkaXYgY2xhc3M9Im1vZGFsIGZhZGUiIGlkPSJjb250cmlidXRvcnMtM180XzIiIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIiByb2xlPSJkb2N1bWVudCI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiZ0aW1lczs8L3NwYW4+PC9idXR0b24+CisgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0ibW9kYWwtdGl0bGUiPjMuNC4yPC9oND4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KKyAgICAgICAgICAgICAgICAgICAgPHA+UmVsZWFzZSBNYW5hZ2VyOiBTdGVwaGVuIE1hbGxldHRlPC9wPgorICAgICAgICAgICAgICAgICAgICA8cHJlPjxjb2RlPiQgZ2l0IHNob3J0bG9nIC1zbiAzLjQuMS4uMy40LjI8L2NvZGU+PC9wcmU+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KKyAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQiIGRhdGEtZGlzbWlzcz0ibW9kYWwiPkNsb3NlPC9idXR0b24+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisKKyAgICA8IS0tIDMuNC4xIC0tPgorICAgIDxkaXYgY2xhc3M9Im1vZGFsIGZhZGUiIGlkPSJjb250cmlidXRvcnMtM180XzEiIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIiByb2xlPSJkb2N1bWVudCI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiZ0aW1lczs8L3NwYW4+PC9idXR0b24+CisgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0ibW9kYWwtdGl0bGUiPjMuNC4xPC9oND4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KKyAgICAgICAgICAgICAgICAgICAgPHA+UmVsZWFzZSBNYW5hZ2VyOiBTdGVwaGVuIE1hbGxldHRlPC9wPgorICAgICAgICAgICAgICAgICAgICA8cHJlPjxjb2RlPiQgZ2l0IHNob3J0bG9nIC1zbiAzLjQuMC4uMy40LjEKKyAgIDE3MiAgU3RlcGhlbiBNYWxsZXR0ZQorICAgIDI5ICBEYW5pZWwgS3VwcGl0egorICAgIDI4ICBKb3JnZSBCYXkgR29uZHJhCisgICAgMTkgIEZsb3JpYW4gSG9ja21hbm4KKyAgICAgOCAgUm9iZXJ0IERhbGUKKyAgICAgNSAgRWR1YXJkIFR1ZGVuaG9lZm5lcgorICAgICAzICBKb2UgU3Ryb3V0aAorICAgICAyICBBbGFuIEJvdWRyZWF1bHQKKyAgICAgMiAgRGl2aWogVmFpZHlhCisgICAgIDEgIEFsZXggTGl1CisgICAgIDEgIERtaXRyaSBCb3VybGF0Y2hrb3YKKyAgICAgMSAgSXNhYWMgSW5zbGV5CisgICAgIDEgIEtldmluIEdhbGxhcmRvCisgICAgIDEgIE1hdHQgTmV3bWFuCisgICAgIDEgIE5pdiBTaGVyZgorICAgICAxICBPbGVrc2FuZHIgUG9ydW5vdgorICAgICAxICBWbGFkaW1pciBCb2dvbW9sb3YKKyAgICAgMSAgWXVuZy1KaW4gKEpvZXkpIEh1CisgICAgIDEgIHRoZWZsaWlrPC9jb2RlPjwvcHJlPgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWZvb3RlciI+CisgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiBkYXRhLWRpc21pc3M9Im1vZGFsIj5DbG9zZTwvYnV0dG9uPgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorCisgICAgPCEtLSAzLjQuMCAtLT4KKyAgICA8ZGl2IGNsYXNzPSJtb2RhbCBmYWRlIiBpZD0iY29udHJpYnV0b3JzLTNfNF8wIiB0YWJpbmRleD0iLTEiIHJvbGU9ImRpYWxvZyI+CisgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWRpYWxvZyIgcm9sZT0iZG9jdW1lbnQiPgorICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGVudCI+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIj4KKyAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJjbG9zZSIgZGF0YS1kaXNtaXNzPSJtb2RhbCIgYXJpYS1sYWJlbD0iQ2xvc2UiPjxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIj4mdGltZXM7PC9zcGFuPjwvYnV0dG9uPgorICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9Im1vZGFsLXRpdGxlIj4zLjQuMDwvaDQ+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CisgICAgICAgICAgICAgICAgICAgIDxwPlJlbGVhc2UgTWFuYWdlcjogU3RlcGhlbiBNYWxsZXR0ZTwvcD4KKyAgICAgICAgICAgICAgICAgICAgPHByZT48Y29kZT4kIGdpdCBzaG9ydGxvZyAtc24gMy4zLjUuLjMuNC4wCisgICA2MDcJU3RlcGhlbiBNYWxsZXR0ZQorICAgIDY0CURhbmllbCBLdXBwaXR6CisgICAgNDQJSm9yZ2UgQmF5IEdvbmRyYQorICAgIDM2CUZsb3JpYW4gSG9ja21hbm4KKyAgICAyNwlSb2JlcnQgRGFsZQorICAgICA5CUdDSFFSZXNlYXJjaGVyMTMzNworICAgICA2CUhhcnNoIFRoYWtrYXIKKyAgICAgNQlBc2h3aW5pIFNpbmdoCisgICAgIDUJUGF0cmlrIEh1c2Zsb2VuCisgICAgIDMJSnVzdGluIENodQorICAgICAyCUhhZG9vcE1hcmMKKyAgICAgMglKb3NodWEgU2hpbmF2aWVyCisgICAgIDIJU3ZhbnRlIFNjaHViZXJ0CisgICAgIDIJZGF2ZWJzaG93CisgICAgIDEJQWxhbiBCb3VkcmVhdWx0CisgICAgIDEJQWxleCBMaXUKKyAgICAgMQlKYXNvbiBQbHVyYWQKKyAgICAgMQlLZXZpbiBHYWxsYXJkbworICAgICAxCU90YXZpbyBTYW50YW5hCisgICAgIDEJUnVzc2VsbCBTcGl0emVyCisgICAgIDEJU2FtIEhhdmVuczwvY29kZT48L3ByZT4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1mb290ZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tZGVmYXVsdCIgZGF0YS1kaXNtaXNzPSJtb2RhbCI+Q2xvc2U8L2J1dHRvbj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKworICAgIDwhLS0gMy4zLjcgLS0+CisgICAgPGRpdiBjbGFzcz0ibW9kYWwgZmFkZSIgaWQ9ImNvbnRyaWJ1dG9ycy0zXzNfNyIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciPgorICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1kaWFsb2ciIHJvbGU9ImRvY3VtZW50Ij4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CisgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvc3Bhbj48L2J1dHRvbj4KKyAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+My4zLjc8L2g0PgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgorICAgICAgICAgICAgICAgICAgICA8cD5SZWxlYXNlIE1hbmFnZXI6IFN0ZXBoZW4gTWFsbGV0dGU8L3A+CisgICAgICAgICAgICAgICAgICAgIDxwcmU+PGNvZGU+JCBnaXQgc2hvcnRsb2cgLXNuIDMuMy42Li4zLjMuNzwvY29kZT48L3ByZT4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1mb290ZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tZGVmYXVsdCIgZGF0YS1kaXNtaXNzPSJtb2RhbCI+Q2xvc2U8L2J1dHRvbj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKworICAgIDwhLS0gMy4zLjYgLS0+CisgICAgPGRpdiBjbGFzcz0ibW9kYWwgZmFkZSIgaWQ9ImNvbnRyaWJ1dG9ycy0zXzNfNiIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciPgorICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1kaWFsb2ciIHJvbGU9ImRvY3VtZW50Ij4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CisgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvc3Bhbj48L2J1dHRvbj4KKyAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+My4zLjY8L2g0PgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgorICAgICAgICAgICAgICAgICAgICA8cD5SZWxlYXNlIE1hbmFnZXI6IFN0ZXBoZW4gTWFsbGV0dGU8L3A+CisgICAgICAgICAgICAgICAgICAgIDxwcmU+PGNvZGU+JCBnaXQgc2hvcnRsb2cgLXNuIDMuMy41Li4zLjMuNgorICAgIDc4ICBTdGVwaGVuIE1hbGxldHRlCisgICAgMTMgIERhbmllbCBLdXBwaXR6CisgICAgIDYgIEZsb3JpYW4gSG9ja21hbm4KKyAgICAgMyAgSm9lIFN0cm91dGgKKyAgICAgMyAgUm9iZXJ0IERhbGUKKyAgICAgMiAgQWxhbiBCb3VkcmVhdWx0CisgICAgIDIgIERpdmlqIFZhaWR5YQorICAgICAxICBBbGV4IExpdQorICAgICAxICBEbWl0cmkgQm91cmxhdGNoa292CisgICAgIDEgIEVkdWFyZCBUdWRlbmhvZWZuZXIKKyAgICAgMSAgSm9yZ2UgQmF5IEdvbmRyYQorICAgICAxICBNYXR0IE5ld21hbgorICAgICAxICBOaXYgU2hlcmYKKyAgICAgMSAgVmxhZGltaXIgQm9nb21vbG92CisgICAgIDEgIFl1bmctSmluIChKb2V5KSBIdTwvY29kZT48L3ByZT4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1mb290ZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tZGVmYXVsdCIgZGF0YS1kaXNtaXNzPSJtb2RhbCI+Q2xvc2U8L2J1dHRvbj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKworICAgIDwhLS0gMy4zLjUgLS0+CisgICAgPGRpdiBjbGFzcz0ibW9kYWwgZmFkZSIgaWQ9ImNvbnRyaWJ1dG9ycy0zXzNfNSIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciPgorICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1kaWFsb2ciIHJvbGU9ImRvY3VtZW50Ij4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CisgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvc3Bhbj48L2J1dHRvbj4KKyAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+My4zLjU8L2g0PgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgorICAgICAgICAgICAgICAgICAgICA8cD5SZWxlYXNlIE1hbmFnZXI6IFN0ZXBoZW4gTWFsbGV0dGU8L3A+CisgICAgICAgICAgICAgICAgICAgIDxwcmU+PGNvZGU+JCBnaXQgc2hvcnRsb2cgLXNuIDMuMy40Li4zLjMuNQorICAgIDkyCVN0ZXBoZW4gTWFsbGV0dGUKKyAgICAxMAlEYW5pZWwgS3VwcGl0egorICAgICA3CUZsb3JpYW4gSG9ja21hbm4KKyAgICAgNwlSb2JlcnQgRGFsZQorICAgICA0CUpvcmdlIEJheSBHb25kcmEKKyAgICAgMglFZHVhcmQgVHVkZW5ob2VmbmVyCisgICAgIDIJR3JhZmYsIFBoaWxpcCBCCisgICAgIDEJQWJyYWcKKyAgICAgMQlBbGFuIEJvdWRyZWF1bHQKKyAgICAgMQlBbGV4IExpdQorICAgICAxCURhbmllbCBDLiBXZWJlcgorICAgICAxCUplcm15IExpCisgICAgIDEJT3RhdmlvIFNhbnRhbmEKKyAgICAgMQlUaWV1IFBoaWxpcHBlIEtISU0KKyAgICAgMQlUb255IE1jTmVpbAorICAgICAxCWFydGVtYWxpZXYKKyAgICAgMQlmaGFtbW9uPC9jb2RlPjwvcHJlPgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWZvb3RlciI+CisgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiBkYXRhLWRpc21pc3M9Im1vZGFsIj5DbG9zZTwvYnV0dG9uPgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorCisgICAgPCEtLSAzLjIuMTEgLS0+CisgICAgPGRpdiBjbGFzcz0ibW9kYWwgZmFkZSIgaWQ9ImNvbnRyaWJ1dG9ycy0zXzJfMTEiIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIiByb2xlPSJkb2N1bWVudCI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiZ0aW1lczs8L3NwYW4+PC9idXR0b24+CisgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0ibW9kYWwtdGl0bGUiPjMuMi4xMTwvaDQ+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CisgICAgICAgICAgICAgICAgICAgIDxwPlJlbGVhc2UgTWFuYWdlcjogU3RlcGhlbiBNYWxsZXR0ZTwvcD4KKyAgICAgICAgICAgICAgICAgICAgPHByZT48Y29kZT4kIGdpdCBzaG9ydGxvZyAtc24gMy4yLjEwLi4zLjIuMTEKKyAgICAgNglTdGVwaGVuIE1hbGxldHRlCisgICAgIDQJUm9iZXJ0IERhbGUKKyAgICAgMQlGbG9yaWFuIEhvY2ttYW5uPC9jb2RlPjwvcHJlPgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWZvb3RlciI+CisgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiBkYXRhLWRpc21pc3M9Im1vZGFsIj5DbG9zZTwvYnV0dG9uPgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorCisgICAgPCEtLSAzLjMuNCAtLT4KKyAgICA8ZGl2IGNsYXNzPSJtb2RhbCBmYWRlIiBpZD0iY29udHJpYnV0b3JzLTNfM180IiB0YWJpbmRleD0iLTEiIHJvbGU9ImRpYWxvZyI+CisgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWRpYWxvZyIgcm9sZT0iZG9jdW1lbnQiPgorICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGVudCI+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIj4KKyAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJjbG9zZSIgZGF0YS1kaXNtaXNzPSJtb2RhbCIgYXJpYS1sYWJlbD0iQ2xvc2UiPjxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIj4mdGltZXM7PC9zcGFuPjwvYnV0dG9uPgorICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9Im1vZGFsLXRpdGxlIj4zLjMuNDwvaDQ+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CisgICAgICAgICAgICAgICAgICAgIDxwPlJlbGVhc2UgTWFuYWdlcjogU3RlcGhlbiBNYWxsZXR0ZTwvcD4KKyAgICAgICAgICAgICAgICAgICAgPHByZT48Y29kZT4kIGdpdCBzaG9ydGxvZyAtc24gMy4zLjMuLjMuMy40CisgICAyODcJU3RlcGhlbiBNYWxsZXR0ZQorICAgIDQ4CUZsb3JpYW4gSG9ja21hbm4KKyAgICAyNwlSb2JlcnQgRGFsZQorICAgIDIxCU1hdHRoZXcgQWxsZW4KKyAgICAxOAlEYW5pZWwgS3VwcGl0egorICAgIDExCUpvcmdlIEJheSBHb25kcmEKKyAgICAgNwlKdXN0aW4gQ2h1CisgICAgIDcJT3RhdmlvIFNhbnRhbmEKKyAgICAgNglEbWl0cmkgQm91cmxhdGNoa292CisgICAgIDUJS2V2aW4gR2FsbGFyZG8KKyAgICAgNQlkYXZlYnNob3cKKyAgICAgMQlEYW5pZWwgV2ViZXIKKyAgICAgMQlFbGxpb3R0IEZvc3RlcgorICAgICAxCUxpb3IgUG9sbGFjaworICAgICAxCWFyaW5ncworICAgICAxCXlhdGFtPC9jb2RlPjwvcHJlPgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWZvb3RlciI+CisgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiBkYXRhLWRpc21pc3M9Im1vZGFsIj5DbG9zZTwvYnV0dG9uPgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorCisgICAgPCEtLSAzLjIuMTAgLS0+CisgICAgPGRpdiBjbGFzcz0ibW9kYWwgZmFkZSIgaWQ9ImNvbnRyaWJ1dG9ycy0zXzJfMTAiIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIiByb2xlPSJkb2N1bWVudCI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiZ0aW1lczs8L3NwYW4+PC9idXR0b24+CisgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0ibW9kYWwtdGl0bGUiPjMuMi4xMDwvaDQ+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CisgICAgICAgICAgICAgICAgICAgIDxwPlJlbGVhc2UgTWFuYWdlcjogUm9iZXJ0IERhbGU8L3A+CisgICAgICAgICAgICAgICAgICAgIDxwcmU+PGNvZGU+JCBnaXQgc2hvcnRsb2cgLXNuIDMuMi45Li4zLjIuMTAKKyAgIDE1NglTdGVwaGVuIE1hbGxldHRlCisgICAgMzMJRmxvcmlhbiBIb2NrbWFubgorICAgIDIxCU1hdHRoZXcgQWxsZW4KKyAgICAxNwlSb2JlcnQgRGFsZQorICAgICA5CURhbmllbCBLdXBwaXR6CisgICAgIDcJSm9yZ2UgQmF5IEdvbmRyYQorICAgICA3CU90YXZpbyBTYW50YW5hCisgICAgIDYJRG1pdHJpIEJvdXJsYXRjaGtvdgorICAgICA1CUtldmluIEdhbGxhcmRvCisgICAgIDMJSnVzdGluIENodQorICAgICAzCWRhdmVic2hvdworICAgICAxCURhbmllbCBXZWJlcgorICAgICAxCUVsbGlvdHQgRm9zdGVyCisgICAgIDEJTGlvciBQb2xsYWNrCisgICAgIDEJYXJpbmdzCisgICAgIDEJeWF0YW08L2NvZGU+PC9wcmU+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KKyAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQiIGRhdGEtZGlzbWlzcz0ibW9kYWwiPkNsb3NlPC9idXR0b24+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisKKyAgICA8IS0tIDMuMy4zIC0tPgorICAgIDxkaXYgY2xhc3M9Im1vZGFsIGZhZGUiIGlkPSJjb250cmlidXRvcnMtM18zXzMiIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIiByb2xlPSJkb2N1bWVudCI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiZ0aW1lczs8L3NwYW4+PC9idXR0b24+CisgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0ibW9kYWwtdGl0bGUiPjMuMy4zPC9oND4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KKyAgICAgICAgICAgICAgICAgICAgPHA+UmVsZWFzZSBNYW5hZ2VyOiBTdGVwaGVuIE1hbGxldHRlPC9wPgorICAgICAgICAgICAgICAgICAgICA8cHJlPjxjb2RlPiQgZ2l0IHNob3J0bG9nIC1zbiAzLjMuMi4uMy4zLjMKKyAgICA3MQlTdGVwaGVuIE1hbGxldHRlCisgICAgIDkJRGFuaWVsIEt1cHBpdHoKKyAgICAgOAlKb3JnZSBCYXkgR29uZHJhCisgICAgIDQJRmxvcmlhbiBIb2NrbWFubgorICAgICA0CVJvYmVydCBEYWxlCisgICAgIDIJSnVzdGluIENodTwvY29kZT48L3ByZT4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1mb290ZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tZGVmYXVsdCIgZGF0YS1kaXNtaXNzPSJtb2RhbCI+Q2xvc2U8L2J1dHRvbj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKworICAgIDwhLS0gMy4yLjkgLS0+CisgICAgPGRpdiBjbGFzcz0ibW9kYWwgZmFkZSIgaWQ9ImNvbnRyaWJ1dG9ycy0zXzJfOSIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciPgorICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1kaWFsb2ciIHJvbGU9ImRvY3VtZW50Ij4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CisgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvc3Bhbj48L2J1dHRvbj4KKyAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+My4yLjk8L2g0PgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgorICAgICAgICAgICAgICAgICAgICA8cD5SZWxlYXNlIE1hbmFnZXI6IFJvYmVydCBEYWxlPC9wPgorICAgICAgICAgICAgICAgICAgICA8cHJlPjxjb2RlPiQgZ2l0IHNob3J0bG9nIC1zbiAzLjIuOC4uMy4yLjkKKyAgICAyOQlTdGVwaGVuIE1hbGxldHRlCisgICAgIDQJSm9yZ2UgQmF5IEdvbmRyYQorICAgICAzCURhbmllbCBLdXBwaXR6CisgICAgIDIJRmxvcmlhbiBIb2NrbWFubgorICAgICAyCUp1c3RpbiBDaHUKKyAgICAgMglSb2JlcnQgRGFsZTwvY29kZT48L3ByZT4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1mb290ZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tZGVmYXVsdCIgZGF0YS1kaXNtaXNzPSJtb2RhbCI+Q2xvc2U8L2J1dHRvbj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKworICAgIDwhLS0gMy4zLjIgLS0+CisgICAgPGRpdiBjbGFzcz0ibW9kYWwgZmFkZSIgaWQ9ImNvbnRyaWJ1dG9ycy0zXzNfMiIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciPgorICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1kaWFsb2ciIHJvbGU9ImRvY3VtZW50Ij4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CisgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvc3Bhbj48L2J1dHRvbj4KKyAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+My4zLjI8L2g0PgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgorICAgICAgICAgICAgICAgICAgICA8cD5SZWxlYXNlIE1hbmFnZXI6IFN0ZXBoZW4gTWFsbGV0dGU8L3A+CisgICAgICAgICAgICAgICAgICAgIDxwcmU+PGNvZGU+JCBnaXQgc2hvcnRsb2cgLXNuIDMuMy4xLi4zLjMuMgorICAgMjcwCVN0ZXBoZW4gTWFsbGV0dGUKKyAgICA0NQlKb3JnZSBCYXkgR29uZHJhCisgICAgMzYJRmxvcmlhbiBIb2NrbWFubgorICAgIDI3CURhbmllbCBLdXBwaXR6CisgICAgMjEJUm9iZXJ0IERhbGUKKyAgICAxMAlHcmFmZiwgUGhpbGlwIEIKKyAgICAgMwlhcnRlbWFsaWV2CisgICAgIDIJZGF2ZWJzaG93CisgICAgIDEJRXVnZW5lIENodW5nCisgICAgIDEJSmVybXkgTGkKKyAgICAgMQlLZWl0aCBMb2huZXMKKyAgICAgMQlMdWthcyBLcmVqY2kKKyAgICAgMQlUZWQKKyAgICAgMQlUZWQgV2lsbWVzCisgICAgIDEJZGFuY29sbGluczM0CisgICAgIDEJemh1Y2hlbmNoZW48L2NvZGU+PC9wcmU+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KKyAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQiIGRhdGEtZGlzbWlzcz0ibW9kYWwiPkNsb3NlPC9idXR0b24+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisKKyAgICA8IS0tIDMuMi44IC0tPgorICAgIDxkaXYgY2xhc3M9Im1vZGFsIGZhZGUiIGlkPSJjb250cmlidXRvcnMtM18yXzgiIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIiByb2xlPSJkb2N1bWVudCI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiZ0aW1lczs8L3NwYW4+PC9idXR0b24+CisgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0ibW9kYWwtdGl0bGUiPjMuMi44PC9oND4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KKyAgICAgICAgICAgICAgICAgICAgPHA+UmVsZWFzZSBNYW5hZ2VyOiBUZWQgV2lsbWVzPC9wPgorICAgICAgICAgICAgICAgICAgICA8cHJlPjxjb2RlPiQgZ2l0IHNob3J0bG9nIC1zbiAzLjIuNy4uMy4yLjgKKyAgIDEzNglTdGVwaGVuIE1hbGxldHRlCisgICAgMzcJSm9yZ2UgQmF5IEdvbmRyYQorICAgIDI0CUZsb3JpYW4gSG9ja21hbm4KKyAgICAxMglEYW5pZWwgS3VwcGl0egorICAgIDEwCUdyYWZmLCBQaGlsaXAgQgorICAgIDEwCVJvYmVydCBEYWxlCisgICAgIDIJYXJ0ZW1hbGlldgorICAgICAxCUV1Z2VuZSBDaHVuZworICAgICAxCUx1a2FzIEtyZWpjaQorICAgICAxCVRlZAorICAgICAxCVRlZCBXaWxtZXMKKyAgICAgMQlkYW5jb2xsaW5zMzQKKyAgICAgMQl6aHVjaGVuY2hlbjwvY29kZT48L3ByZT4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1mb290ZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tZGVmYXVsdCIgZGF0YS1kaXNtaXNzPSJtb2RhbCI+Q2xvc2U8L2J1dHRvbj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKworICAgIDwhLS0gMy4zLjEgLS0+CisgICAgPGRpdiBjbGFzcz0ibW9kYWwgZmFkZSIgaWQ9ImNvbnRyaWJ1dG9ycy0zXzNfMSIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciPgorICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1kaWFsb2ciIHJvbGU9ImRvY3VtZW50Ij4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CisgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvc3Bhbj48L2J1dHRvbj4KKyAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+My4zLjE8L2g0PgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgorICAgICAgICAgICAgICAgICAgICA8cD5SZWxlYXNlIE1hbmFnZXI6IFN0ZXBoZW4gTWFsbGV0dGU8L3A+CisgICAgICAgICAgICAgICAgICAgIDxwcmU+PGNvZGU+JCBnaXQgc2hvcnRsb2cgLXNuIDMuMy4wLi4zLjMuMQorICAgMjkzCVN0ZXBoZW4gTWFsbGV0dGUKKyAgICA5NQlNYXJrbyBBLiBSb2RyaWd1ZXoKKyAgICA0NQlKb3JnZSBCYXkgR29uZHJhCisgICAgMzcJRGFuaWVsIEt1cHBpdHoKKyAgICAzMglSb2JlcnQgRGFsZQorICAgIDEyCUZsb3JpYW4gSG9ja21hbm4KKyAgICAxMglkYXZlYnNob3cKKyAgICAxMQlIYWRvb3BNYXJjCisgICAgMTAJTWljaGFlbCBQb2xsbWVpZXIKKyAgICAgMwlUZWQgV2lsbWVzCisgICAgIDMJYXJ0ZW1hbGlldgorICAgICAzCWZsb3JpYW5ob2NrbWFubgorICAgICAxCUFsYW4gQm91ZHJlYXVsdAorICAgICAxCUtvbnN0YW50aW4gTXVlbGxlcgorICAgICAxCU1pY2hhZWwgSHVuZ2VyCisgICAgIDEJUmFuZ2VyIFRzYW8KKyAgICAgMQlYaWFuIFRlbmcKKyAgICAgMQlwaWV0ZXI8L2NvZGU+PC9wcmU+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KKyAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQiIGRhdGEtZGlzbWlzcz0ibW9kYWwiPkNsb3NlPC9idXR0b24+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisKKyAgICA8IS0tIDMuMi43IC0tPgorICAgIDxkaXYgY2xhc3M9Im1vZGFsIGZhZGUiIGlkPSJjb250cmlidXRvcnMtM18yXzciIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIiByb2xlPSJkb2N1bWVudCI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiZ0aW1lczs8L3NwYW4+PC9idXR0b24+CisgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0ibW9kYWwtdGl0bGUiPjMuMi43PC9oND4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KKyAgICAgICAgICAgICAgICAgICAgPHA+UmVsZWFzZSBNYW5hZ2VyOiBTdGVwaGVuIE1hbGxldHRlPC9wPgorICAgICAgICAgICAgICAgICAgICA8cHJlPjxjb2RlPiQgZ2l0IHNob3J0bG9nIC1zbiAzLjIuNi4uMy4yLjcKKyAgIDE3OQlTdGVwaGVuIE1hbGxldHRlCisgICAgNDEJTWFya28gQS4gUm9kcmlndWV6CisgICAgMzMJSm9yZ2UgQmF5IEdvbmRyYQorICAgIDIzCURhbmllbCBLdXBwaXR6CisgICAgMTAJUm9iZXJ0IERhbGUKKyAgICAgOAlNaWNoYWVsIFBvbGxtZWllcgorICAgICA3CUZsb3JpYW4gSG9ja21hbm4KKyAgICAgNQlIYWRvb3BNYXJjCisgICAgIDUJZGF2ZWJzaG93CisgICAgIDMJYXJ0ZW1hbGlldgorICAgICAzCWZsb3JpYW5ob2NrbWFubgorICAgICAyCVRlZCBXaWxtZXMKKyAgICAgMQlBbGFuIEJvdWRyZWF1bHQKKyAgICAgMQlLb25zdGFudGluIE11ZWxsZXIKKyAgICAgMQlSYW5nZXIgVHNhbworICAgICAxCVhpYW4gVGVuZworICAgICAxCXBpZXRlcjwvY29kZT48L3ByZT4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1mb290ZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tZGVmYXVsdCIgZGF0YS1kaXNtaXNzPSJtb2RhbCI+Q2xvc2U8L2J1dHRvbj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKworICAgIDwhLS0gMy4zLjAgLS0+CisgICAgPGRpdiBjbGFzcz0ibW9kYWwgZmFkZSIgaWQ9ImNvbnRyaWJ1dG9ycy0zXzNfMCIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciPgorICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1kaWFsb2ciIHJvbGU9ImRvY3VtZW50Ij4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CisgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvc3Bhbj48L2J1dHRvbj4KKyAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+My4zLjA8L2g0PgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgorICAgICAgICAgICAgICAgICAgICA8cD5SZWxlYXNlIE1hbmFnZXI6IFN0ZXBoZW4gTWFsbGV0dGU8L3A+CisgICAgICAgICAgICAgICAgICAgIDxwcmU+PGNvZGU+JCBnaXQgc2hvcnRsb2cgLXNuIDMuMi42Li4zLjMuMAorICAgNTQ2CVN0ZXBoZW4gTWFsbGV0dGUKKyAgIDE2OQlNYXJrbyBBLiBSb2RyaWd1ZXoKKyAgICA0MwlEYW5pZWwgS3VwcGl0egorICAgIDQyCVJvYmVydCBEYWxlCisgICAgMjUJSGFkb29wTWFyYworICAgIDExCUZsb3JpYW4gSG9ja21hbm4KKyAgICAxMAlUZWQgV2lsbWVzCisgICAgIDgJSmFzb24gUGx1cmFkCisgICAgIDgJSm9yZ2UgQmF5IEdvbmRyYQorICAgICA3CWpwbW9yZXNtYXUKKyAgICAgNglkYXZlYnNob3cKKyAgICAgNAlMdWthcyBLcmVqY2kKKyAgICAgMglEYW4gTGFSb2NxdWUKKyAgICAgMglLZWl0aCBMb2huZXMKKyAgICAgMglhcnRlbWFsaWV2CisgICAgIDEJR2VvZmYgUmVlZHkKKyAgICAgMQlNaWNoYWVsIFBvbGxtZWllcgorICAgICAxCXl1Y3g8L2NvZGU+PC9wcmU+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KKyAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQiIGRhdGEtZGlzbWlzcz0ibW9kYWwiPkNsb3NlPC9idXR0b24+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisKKyAgICA8IS0tIDMuMi42IC0tPgorICAgIDxkaXYgY2xhc3M9Im1vZGFsIGZhZGUiIGlkPSJjb250cmlidXRvcnMtM18yXzYiIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIiByb2xlPSJkb2N1bWVudCI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiZ0aW1lczs8L3NwYW4+PC9idXR0b24+CisgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0ibW9kYWwtdGl0bGUiPjMuMi42PC9oND4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KKyAgICAgICAgICAgICAgICAgICAgPHA+UmVsZWFzZSBNYW5hZ2VyOiBTdGVwaGVuIE1hbGxldHRlPC9wPgorICAgICAgICAgICAgICAgICAgICA8cHJlPjxjb2RlPiQgZ2l0IHNob3J0bG9nIC1zbiAzLjIuNS4uMy4yLjYKKyAgICA4OAlTdGVwaGVuIE1hbGxldHRlCisgICAgNDEJTWFya28gQS4gUm9kcmlndWV6CisgICAgMTEJVGVkIFdpbG1lcworICAgIDEwCUZsb3JpYW4gSG9ja21hbm4KKyAgICAgOAlEYW5pZWwgS3VwcGl0egorICAgICA3CVJvYmVydCBEYWxlCisgICAgIDUJSm9yZ2UgQmF5IEdvbmRyYQorICAgICAyCVNoZWxkb24KKyAgICAgMQlBbGFuIEJvdWRyZWF1bHQKKyAgICAgMQlLZWl0aCBMb2huZXMKKyAgICAgMQlNaWhhaWxzIFZvbGtvdnMKKyAgICAgMQlhcnRlbWFsaWV2CisgICAgIDEJc2p1ZGVuZzwvY29kZT48L3ByZT4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1mb290ZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tZGVmYXVsdCIgZGF0YS1kaXNtaXNzPSJtb2RhbCI+Q2xvc2U8L2J1dHRvbj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKworICAgIDwhLS0gMy4xLjggLS0+CisgICAgPGRpdiBjbGFzcz0ibW9kYWwgZmFkZSIgaWQ9ImNvbnRyaWJ1dG9ycy0zXzFfOCIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciPgorICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1kaWFsb2ciIHJvbGU9ImRvY3VtZW50Ij4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CisgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvc3Bhbj48L2J1dHRvbj4KKyAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+My4xLjg8L2g0PgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgorICAgICAgICAgICAgICAgICAgICA8cD5SZWxlYXNlIE1hbmFnZXI6IFRlZCBXaWxtZXM8L3A+CisgICAgICAgICAgICAgICAgICAgIDxwcmU+PGNvZGU+JCBnaXQgc2hvcnRsb2cgLXNuIDMuMS43Li4zLjEuOAorICAgICA1CVRlZCBXaWxtZXMKKyAgICAgMwlNYXJrbyBBLiBSb2RyaWd1ZXoKKyAgICAgMglEYW5pZWwgS3VwcGl0egorICAgICAyCVNoZWxkb24KKyAgICAgMQlNaWhhaWxzIFZvbGtvdnMKKyAgICAgMQlSb2JlcnQgRGFsZQorICAgICAxCWFydGVtYWxpZXY8L2NvZGU+PC9wcmU+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KKyAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQiIGRhdGEtZGlzbWlzcz0ibW9kYWwiPkNsb3NlPC9idXR0b24+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisKKyAgICA8IS0tIDMuMi41IC0tPgorICAgIDxkaXYgY2xhc3M9Im1vZGFsIGZhZGUiIGlkPSJjb250cmlidXRvcnMtM18yXzUiIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIiByb2xlPSJkb2N1bWVudCI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiZ0aW1lczs8L3NwYW4+PC9idXR0b24+CisgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0ibW9kYWwtdGl0bGUiPjMuMi41PC9oND4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KKyAgICAgICAgICAgICAgICAgICAgPHA+UmVsZWFzZSBNYW5hZ2VyOiBTdGVwaGVuIE1hbGxldHRlPC9wPgorICAgICAgICAgICAgICAgICAgICA8cHJlPjxjb2RlPiQgZ2l0IHNob3J0bG9nIC1zbiAzLjIuNC4uMy4yLjUKKyAgIDIzMAlTdGVwaGVuIE1hbGxldHRlCisgICAgNTEJTWFya28gQS4gUm9kcmlndWV6CisgICAgMjQJUm9iZXJ0IERhbGUKKyAgICAxNwlkYXZlYnNob3cKKyAgICAxNAlEYW5pZWwgS3VwcGl0egorICAgICA3CVRlZCBXaWxtZXMKKyAgICAgNglCcnluQ29va2UKKyAgICAgNglLZWl0aCBMb2huZXMKKyAgICAgNglkcGl0ZXJhCisgICAgIDMJQW5kcmV3IFRvbGJlcnQKKyAgICAgMwlKb3NodWEgU2hpbmF2aWVyCisgICAgIDIJTWljaGFlbCBQb2xsbWVpZXIKKyAgICAgMglaYWNoIEEuIFRob21hcworICAgICAyCWFydGVtYWxpZXYKKyAgICAgMQlBbmRyZWEgQ29zZW50aW5vCisgICAgIDEJQW5kcmVhcyBIZWliZXJnCisgICAgIDEJQmVuamFtaW4gQW5kZXJzb24KKyAgICAgMQlEYW4gTGFSb2NxdWUKKyAgICAgMQlLZXZpbiBHYWxsYXJkbworICAgICAxCXdlc3Rvbl9jb250cmlidXRlPC9jb2RlPjwvcHJlPgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWZvb3RlciI+CisgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiBkYXRhLWRpc21pc3M9Im1vZGFsIj5DbG9zZTwvYnV0dG9uPgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorCisgICAgPCEtLSAzLjEuNyAtLT4KKyAgICA8ZGl2IGNsYXNzPSJtb2RhbCBmYWRlIiBpZD0iY29udHJpYnV0b3JzLTNfMV83IiB0YWJpbmRleD0iLTEiIHJvbGU9ImRpYWxvZyI+CisgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWRpYWxvZyIgcm9sZT0iZG9jdW1lbnQiPgorICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGVudCI+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIj4KKyAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJjbG9zZSIgZGF0YS1kaXNtaXNzPSJtb2RhbCIgYXJpYS1sYWJlbD0iQ2xvc2UiPjxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIj4mdGltZXM7PC9zcGFuPjwvYnV0dG9uPgorICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9Im1vZGFsLXRpdGxlIj4zLjEuNzwvaDQ+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CisgICAgICAgICAgICAgICAgICAgIDxwPlJlbGVhc2UgTWFuYWdlcjogVGVkIFdpbG1lczwvcD4KKyAgICAgICAgICAgICAgICAgICAgPHByZT48Y29kZT4kIGdpdCBzaG9ydGxvZyAtc24gMy4xLjYuLjMuMS43CisgICAgMjYJU3RlcGhlbiBNYWxsZXR0ZQorICAgIDExCVJvYmVydCBEYWxlCisgICAgIDQJVGVkIFdpbG1lcworICAgICAyCVphY2ggQS4gVGhvbWFzCisgICAgIDEJQW5kcmVhIENvc2VudGlubworICAgICAxCUJyeW5Db29rZQorICAgICAxCUpvc2h1YSBTaGluYXZpZXI8L2NvZGU+PC9wcmU+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KKyAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQiIGRhdGEtZGlzbWlzcz0ibW9kYWwiPkNsb3NlPC9idXR0b24+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisKKyAgICA8IS0tIDMuMi40IC0tPgorICAgIDxkaXYgY2xhc3M9Im1vZGFsIGZhZGUiIGlkPSJjb250cmlidXRvcnMtM18yXzQiIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIiByb2xlPSJkb2N1bWVudCI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiZ0aW1lczs8L3NwYW4+PC9idXR0b24+CisgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0ibW9kYWwtdGl0bGUiPjMuMi40PC9oND4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KKyAgICAgICAgICAgICAgICAgICAgPHA+UmVsZWFzZSBNYW5hZ2VyOiBKYXNvbiBQbHVyYWQ8L3A+CisgICAgICAgICAgICAgICAgICAgIDxwcmU+PGNvZGU+JCBnaXQgc2hvcnRsb2cgLXNuIDMuMi4zLi4zLjIuNAorICAgMTk4CVN0ZXBoZW4gTWFsbGV0dGUKKyAgIDEyMQlNYXJrbyBBLiBSb2RyaWd1ZXoKKyAgICAxOQlEYW5pZWwgS3VwcGl0egorICAgIDE3CVJvYmVydCBEYWxlCisgICAgMTAJVGVkIFdpbG1lcworICAgICA5CVBhdWxKYWNrc29uMTIzCisgICAgIDgJZGF2ZWJzaG93CisgICAgIDcJSmFzb24gUGx1cmFkCisgICAgIDMJRmxvcmlhbiBIb2NrbWFubgorICAgICAyCUFsYW4gQm91ZHJlYXVsdAorICAgICAyCUtldmluIEdhbGxhcmRvCisgICAgIDEJQnJhbmRlbiBNb29yZQorICAgICAxCUJyeW5Db29rZQorICAgICAxCURhbiBMYVJvY3F1ZQorICAgICAxCUdyZWdCZXN0bGFuZAorICAgICAxCUpvc2h1YSBTaGluYXZpZXIKKyAgICAgMQlMdWthcyBLcmVqY2kKKyAgICAgMQlSYW5nZXIgVHNhbworICAgICAxCXNqdWRlbmc8L2NvZGU+PC9wcmU+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KKyAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQiIGRhdGEtZGlzbWlzcz0ibW9kYWwiPkNsb3NlPC9idXR0b24+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisKKyAgICA8IS0tIDMuMS42IC0tPgorICAgIDxkaXYgY2xhc3M9Im1vZGFsIGZhZGUiIGlkPSJjb250cmlidXRvcnMtM18xXzYiIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIiByb2xlPSJkb2N1bWVudCI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiZ0aW1lczs8L3NwYW4+PC9idXR0b24+CisgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0ibW9kYWwtdGl0bGUiPjMuMS42PC9oND4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KKyAgICAgICAgICAgICAgICAgICAgPHA+UmVsZWFzZSBNYW5hZ2VyOiBUZWQgV2lsbWVzPC9wPgorICAgICAgICAgICAgICAgICAgICA8cHJlPjxjb2RlPiQgZ2l0IHNob3J0bG9nIC1zbiAzLjEuNS4uMy4xLjYKKyAgICAxNAlTdGVwaGVuIE1hbGxldHRlCisgICAgIDcJUm9iZXJ0IERhbGUKKyAgICAgMwlEYW5pZWwgS3VwcGl0egorICAgICAzCVBhdWxKYWNrc29uMTIzCisgICAgIDIJSm9zaHVhIFNoaW5hdmllcgorICAgICAyCVRlZCBXaWxtZXMKKyAgICAgMQlNYXJrbyBBLiBSb2RyaWd1ZXo8L2NvZGU+PC9wcmU+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KKyAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQiIGRhdGEtZGlzbWlzcz0ibW9kYWwiPkNsb3NlPC9idXR0b24+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisKKyAgICA8IS0tIDMuMi4zIC0tPgorICAgIDxkaXYgY2xhc3M9Im1vZGFsIGZhZGUiIGlkPSJjb250cmlidXRvcnMtM18yXzMiIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIiByb2xlPSJkb2N1bWVudCI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiZ0aW1lczs8L3NwYW4+PC9idXR0b24+CisgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0ibW9kYWwtdGl0bGUiPjMuMi4zPC9oND4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KKyAgICAgICAgICAgICAgICAgICAgPHA+UmVsZWFzZSBNYW5hZ2VyOiBTdGVwaGVuIE1hbGxldHRlPC9wPgorICAgICAgICAgICAgICAgICAgICA8cHJlPjxjb2RlPiQgZ2l0IHNob3J0bG9nIC1zbiAzLjIuMi4uMy4yLjMKKyAgIDEzMglTdGVwaGVuIE1hbGxldHRlCisgICAxMDMJTWFya28gQS4gUm9kcmlndWV6CisgICAgMzcJRGFuaWVsIEt1cHBpdHoKKyAgICAxOQlkYXZlYnNob3cKKyAgICAgOAlBZGFtIEhvbG1iZXJnCisgICAgIDQJUm9iZXJ0IERhbGUKKyAgICAgNAlWaXZlayBLcmlzaG5hbgorICAgICAzCU1hcmsgSG9la3N0cmEKKyAgICAgMglDYXJsb3MgQ2hldW5nCisgICAgIDIJS2V2aW4gR2FsbGFyZG8KKyAgICAgMglUZWQgV2lsbWVzCisgICAgIDEJR2Fib3IgU3phcm55YXM8L2NvZGU+PC9wcmU+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KKyAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQiIGRhdGEtZGlzbWlzcz0ibW9kYWwiPkNsb3NlPC9idXR0b24+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisKKyAgICA8IS0tIDMuMS41IC0tPgorICAgIDxkaXYgY2xhc3M9Im1vZGFsIGZhZGUiIGlkPSJjb250cmlidXRvcnMtM18xXzUiIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIiByb2xlPSJkb2N1bWVudCI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiZ0aW1lczs8L3NwYW4+PC9idXR0b24+CisgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0ibW9kYWwtdGl0bGUiPjMuMS41PC9oND4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KKyAgICAgICAgICAgICAgICAgICAgPHA+UmVsZWFzZSBNYW5hZ2VyOiBUZWQgV2lsbWVzPC9wPgorICAgICAgICAgICAgICAgICAgICA8cHJlPjxjb2RlPiQgZ2l0IHNob3J0bG9nIC1zbiAzLjEuNC4uMy4xLjUKKyAgICAzMAlTdGVwaGVuIE1hbGxldHRlCisgICAgMTQJRGFuaWVsIEt1cHBpdHoKKyAgICAgMwlUZWQgV2lsbWVzCisgICAgIDIJTWFyayBIb2Vrc3RyYQorICAgICAyCVJvYmVydCBEYWxlCisgICAgIDEJR2Fib3IgU3phcm55YXMKKyAgICAgMQlNYXJrbyBBLiBSb2RyaWd1ZXo8L2NvZGU+PC9wcmU+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KKyAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQiIGRhdGEtZGlzbWlzcz0ibW9kYWwiPkNsb3NlPC9idXR0b24+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisKKyAgICA8IS0tIDMuMi4yIC0tPgorICAgIDxkaXYgY2xhc3M9Im1vZGFsIGZhZGUiIGlkPSJjb250cmlidXRvcnMtM18yXzIiIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIiByb2xlPSJkb2N1bWVudCI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiZ0aW1lczs8L3NwYW4+PC9idXR0b24+CisgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0ibW9kYWwtdGl0bGUiPjMuMi4yPC9oND4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KKyAgICAgICAgICAgICAgICAgICAgPHA+UmVsZWFzZSBNYW5hZ2VyOiBTdGVwaGVuIE1hbGxldHRlPC9wPgorICAgICAgICAgICAgICAgICAgICA8cHJlPjxjb2RlPiQgZ2l0IHNob3J0bG9nIC1zbiAzLjIuMS4uMy4yLjIKKyAgIDI0MQlNYXJrbyBBLiBSb2RyaWd1ZXoKKyAgIDIzMQlTdGVwaGVuIE1hbGxldHRlCisgICAgMzAJUm9iZXJ0IERhbGUKKyAgICAxMglEYW5pZWwgS3VwcGl0egorICAgIDEyCUxlaWZ1ciBIYWxsZG9yIEFzZ2VpcnNzb24KKyAgICAgNwlkYXZlYnNob3cKKyAgICAgNglUZWQgV2lsbWVzCisgICAgIDMJRGFuIExhUm9jcXVlCisgICAgIDMJS2V2aW4gR2FsbGFyZG8KKyAgICAgMglKYXNvbiBQbHVyYWQKKyAgICAgMQlBZGFtIEhvbG1iZXJnCisgICAgIDEJSm9zaHVhIFNoaW5hdmllcgorICAgICAxCWRhdmlkY2xlbWVudDkwCisgICAgIDEJc2JhcnppbGF5PC9jb2RlPjwvcHJlPgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWZvb3RlciI+CisgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiBkYXRhLWRpc21pc3M9Im1vZGFsIj5DbG9zZTwvYnV0dG9uPgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorCisgICAgPCEtLSAzLjEuNCAtLT4KKyAgICA8ZGl2IGNsYXNzPSJtb2RhbCBmYWRlIiBpZD0iY29udHJpYnV0b3JzLTNfMV80IiB0YWJpbmRleD0iLTEiIHJvbGU9ImRpYWxvZyI+CisgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWRpYWxvZyIgcm9sZT0iZG9jdW1lbnQiPgorICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGVudCI+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIj4KKyAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJjbG9zZSIgZGF0YS1kaXNtaXNzPSJtb2RhbCIgYXJpYS1sYWJlbD0iQ2xvc2UiPjxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIj4mdGltZXM7PC9zcGFuPjwvYnV0dG9uPgorICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9Im1vZGFsLXRpdGxlIj4zLjEuNDwvaDQ+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CisgICAgICAgICAgICAgICAgICAgIDxwPlJlbGVhc2UgTWFuYWdlcjogVGVkIFdpbG1lczwvcD4KKyAgICAgICAgICAgICAgICAgICAgPHByZT48Y29kZT4kIGdpdCBzaG9ydGxvZyAtc24gMy4xLjMuLjMuMS40CisgICAgMjQJU3RlcGhlbiBNYWxsZXR0ZQorICAgICA1CVJvYmVydCBEYWxlCisgICAgIDQJTWFya28gQS4gUm9kcmlndWV6CisgICAgIDQJVGVkIFdpbG1lcworICAgICAxCURhbiBMYVJvY3F1ZQorICAgICAxCUphc29uIFBsdXJhZAorICAgICAxCUpvc2h1YSBTaGluYXZpZXIKKyAgICAgMQlkYXZpZGNsZW1lbnQ5MAorICAgICAxCXNiYXJ6aWxheTwvY29kZT48L3ByZT4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1mb290ZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tZGVmYXVsdCIgZGF0YS1kaXNtaXNzPSJtb2RhbCI+Q2xvc2U8L2J1dHRvbj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKworICAgIDwhLS0gMy4yLjEgLS0+CisgICAgPGRpdiBjbGFzcz0ibW9kYWwgZmFkZSIgaWQ9ImNvbnRyaWJ1dG9ycy0zXzJfMSIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciPgorICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1kaWFsb2ciIHJvbGU9ImRvY3VtZW50Ij4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CisgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvc3Bhbj48L2J1dHRvbj4KKyAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+My4yLjE8L2g0PgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgorICAgICAgICAgICAgICAgICAgICA8cD5SZWxlYXNlIE1hbmFnZXI6IFN0ZXBoZW4gTWFsbGV0dGU8L3A+CisgICAgICAgICAgICAgICAgICAgIDxwcmU+PGNvZGU+JCBnaXQgc2hvcnRsb2cgLXNuIDMuMi4wLWluY3ViYXRpbmcuLjMuMi4xCisgICAyMjkJU3RlcGhlbiBNYWxsZXR0ZQorICAgMTcxCU1hcmtvIEEuIFJvZHJpZ3VlegorICAgIDUxCURhbmllbCBLdXBwaXR6CisgICAgMjcJSmFzb24gUGx1cmFkCisgICAgMTAJVGVkIFdpbG1lcworICAgICA2CURhbiBMYVJvY3F1ZQorICAgICA2CU1hdGhpYXMgQm9nYWVydAorICAgICA0CVJvYmVydCBEYWxlCisgICAgIDIJQnJ5biBDb29rZQorICAgICAyCU1pa2UgQWRhbXNvbgorICAgICAxCUxld2lzIEpvaG4gTWNHaWJibmV5CisgICAgIDEJU2VyZ2UgVmlsdm92c2t5PC9jb2RlPjwvcHJlPgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWZvb3RlciI+CisgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiBkYXRhLWRpc21pc3M9Im1vZGFsIj5DbG9zZTwvYnV0dG9uPgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorCisgICAgPCEtLSAzLjEuMyAtLT4KKyAgICA8ZGl2IGNsYXNzPSJtb2RhbCBmYWRlIiBpZD0iY29udHJpYnV0b3JzLTNfMV8zIiB0YWJpbmRleD0iLTEiIHJvbGU9ImRpYWxvZyI+CisgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWRpYWxvZyIgcm9sZT0iZG9jdW1lbnQiPgorICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGVudCI+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIj4KKyAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJjbG9zZSIgZGF0YS1kaXNtaXNzPSJtb2RhbCIgYXJpYS1sYWJlbD0iQ2xvc2UiPjxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIj4mdGltZXM7PC9zcGFuPjwvYnV0dG9uPgorICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9Im1vZGFsLXRpdGxlIj4zLjEuMzwvaDQ+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CisgICAgICAgICAgICAgICAgICAgIDxwPlJlbGVhc2UgTWFuYWdlcjogU3RlcGhlbiBNYWxsZXR0ZTwvcD4KKyAgICAgICAgICAgICAgICAgICAgPHByZT48Y29kZT4kIGdpdCBzaG9ydGxvZyAtc24gMy4xLjItaW5jdWJhdGluZy4uMy4xLjMKKyAgICA5OAlTdGVwaGVuIE1hbGxldHRlCisgICAgMjgJRGFuaWVsIEt1cHBpdHoKKyAgICAxOQlKYXNvbiBQbHVyYWQKKyAgICAxMglNYXJrbyBBLiBSb2RyaWd1ZXoKKyAgICAgNQlNYXRoaWFzIEJvZ2FlcnQKKyAgICAgMglNaWtlIEFkYW1zb24KKyAgICAgMglUZWQgV2lsbWVzCisgICAgIDEJTGV3aXMgSm9obiBNY0dpYmJuZXkKKyAgICAgMQlSb2JlcnQgRGFsZQorICAgICAxCVNlcmdlIFZpbHZvdnNreTwvY29kZT48L3ByZT4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1mb290ZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tZGVmYXVsdCIgZGF0YS1kaXNtaXNzPSJtb2RhbCI+Q2xvc2U8L2J1dHRvbj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKworICAgIDwhLS0gMy4yLjAtaW5jdWJhdGluZyAtLT4KKyAgICA8ZGl2IGNsYXNzPSJtb2RhbCBmYWRlIiBpZD0iY29udHJpYnV0b3JzLTNfMl8wLWluY3ViYXRpbmciIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIiByb2xlPSJkb2N1bWVudCI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiZ0aW1lczs8L3NwYW4+PC9idXR0b24+CisgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0ibW9kYWwtdGl0bGUiPjMuMi4wLWluY3ViYXRpbmc8L2g0PgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgorICAgICAgICAgICAgICAgICAgICA8cD5SZWxlYXNlIE1hbmFnZXI6IFN0ZXBoZW4gTWFsbGV0dGU8L3A+CisgICAgICAgICAgICAgICAgICAgIDxwcmU+PGNvZGU+JCBnaXQgc2hvcnRsb2cgLXNuIDMuMS4yLWluY3ViYXRpbmcuLjMuMi4wLWluY3ViYXRpbmcKKyAgIDI4NwlNYXJrbyBBLiBSb2RyaWd1ZXoKKyAgIDEwMwlTdGVwaGVuIE1hbGxldHRlCisgICAgMTUJcmpicmlvZHkKKyAgICAgOAlEYW5pZWwgS3VwcGl0egorICAgICA4CXBpZXRlcgorICAgICAyCVRlZCBXaWxtZXMKKyAgICAgMQlKYXNvbiBQbHVyYWQKKyAgICAgMQlNaWNoYWVsIFBvbGxtZWllcjwvY29kZT48L3ByZT4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1mb290ZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tZGVmYXVsdCIgZGF0YS1kaXNtaXNzPSJtb2RhbCI+Q2xvc2U8L2J1dHRvbj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKworICAgIDwhLS0gMy4xLjItaW5jdWJhdGluZyAtLT4KKyAgICA8ZGl2IGNsYXNzPSJtb2RhbCBmYWRlIiBpZD0iY29udHJpYnV0b3JzLTNfMV8yLWluY3ViYXRpbmciIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIiByb2xlPSJkb2N1bWVudCI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiZ0aW1lczs8L3NwYW4+PC9idXR0b24+CisgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0ibW9kYWwtdGl0bGUiPjMuMS4yLWluY3ViYXRpbmc8L2g0PgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgorICAgICAgICAgICAgICAgICAgICA8cD5SZWxlYXNlIE1hbmFnZXI6IFN0ZXBoZW4gTWFsbGV0dGU8L3A+CisgICAgICAgICAgICAgICAgICAgIDxwcmU+PGNvZGU+JCBnaXQgc2hvcnRsb2cgLXNuIDMuMS4xLWluY3ViYXRpbmcuLjMuMS4yLWluY3ViYXRpbmcKKyAgIDE1MQlTdGVwaGVuIE1hbGxldHRlCisgICAgMzcJRGFuaWVsIEt1cHBpdHoKKyAgICAyNglNYXJrbyBBLiBSb2RyaWd1ZXoKKyAgICAxMAlNYXJ2aW4gRnJvZWRlcgorICAgICA4CUR5bGFuIE1pbGxpa2luCisgICAgIDUJSGVuZHkgSXJhd2FuCisgICAgIDUJS2llcmFuIFNoZXJsb2NrCisgICAgIDEJQmVuamFtaW4gQW5kZXJzb24KKyAgICAgMQlHZW9mZiBSZWVkeQorICAgICAxCUphc29uIFBsdXJhZAorICAgICAxCUxlZSBNaXRjaGVsbAorICAgICAxCU1hcmlvIE11ZWxsZXIKKyAgICAgMQlNYXJ2aW4gSCBGcm9lZGVyCisgICAgIDEJVGVkIFdpbG1lcworICAgICAxCWxlZW1pdAorICAgICAxCXJqYnJpb2R5PC9jb2RlPjwvcHJlPgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWZvb3RlciI+CisgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiBkYXRhLWRpc21pc3M9Im1vZGFsIj5DbG9zZTwvYnV0dG9uPgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorCisgICAgPCEtLSAzLjEuMS1pbmN1YmF0aW5nIC0tPgorICAgIDxkaXYgY2xhc3M9Im1vZGFsIGZhZGUiIGlkPSJjb250cmlidXRvcnMtM18xXzEtaW5jdWJhdGluZyIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciPgorICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1kaWFsb2ciIHJvbGU9ImRvY3VtZW50Ij4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CisgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvc3Bhbj48L2J1dHRvbj4KKyAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+My4xLjEtaW5jdWJhdGluZzwvaDQ+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CisgICAgICAgICAgICAgICAgICAgIDxwPlJlbGVhc2UgTWFuYWdlcjogU3RlcGhlbiBNYWxsZXR0ZTwvcD4KKyAgICAgICAgICAgICAgICAgICAgPHByZT48Y29kZT4kIGdpdCBzaG9ydGxvZyAtc24gMy4xLjAtaW5jdWJhdGluZy4uMy4xLjEtaW5jdWJhdGluZworICAgMTk4CVN0ZXBoZW4gTWFsbGV0dGUKKyAgIDE0NQlNYXJrbyBBLiBSb2RyaWd1ZXoKKyAgICAzOQlEYW5pZWwgS3VwcGl0egorICAgIDEzCUJlbmphbWluIEhhbgorICAgICA4CU5naGlhIFRyYW4KKyAgICAgOAlUZWQgV2lsbWVzCisgICAgIDcJSmVyZW15IEhhbm5hCisgICAgIDUJS3VzaGFsCisgICAgIDUJcGlldGVyCisgICAgIDMJRHlsYW4gTWlsbGlraW4KKyAgICAgMglEYW4gTGFSb2NxdWUKKyAgICAgMglKb25hdGhhbiBFbGxpdGhvcnBlCisgICAgIDIJTWFydmluIEZyb2VkZXIKKyAgICAgMQlNYXJrSG9la3N0cmEKKyAgICAgMQlQaWVycmUgTGFwb3J0ZQorICAgICAxCXJqYnJpb2R5PC9jb2RlPjwvcHJlPgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWZvb3RlciI+CisgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiBkYXRhLWRpc21pc3M9Im1vZGFsIj5DbG9zZTwvYnV0dG9uPgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorCisgICAgPCEtLSAzLjEuMC1pbmN1YmF0aW5nIC0tPgorICAgIDxkaXYgY2xhc3M9Im1vZGFsIGZhZGUiIGlkPSJjb250cmlidXRvcnMtM18xXzAtaW5jdWJhdGluZyIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciPgorICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1kaWFsb2ciIHJvbGU9ImRvY3VtZW50Ij4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CisgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvc3Bhbj48L2J1dHRvbj4KKyAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+My4xLjAtaW5jdWJhdGluZzwvaDQ+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CisgICAgICAgICAgICAgICAgICAgIDxwPlJlbGVhc2UgTWFuYWdlcjogU3RlcGhlbiBNYWxsZXR0ZTwvcD4KKyAgICAgICAgICAgICAgICAgICAgPHByZT48Y29kZT4kIGdpdCBzaG9ydGxvZyAtc24gMy4wLjItaW5jdWJhdGluZy4uMy4xLjAtaW5jdWJhdGluZworICAgMjAzCU1hcmtvIEEuIFJvZHJpZ3VlegorICAgMTkzCVN0ZXBoZW4gTWFsbGV0dGUKKyAgICA1MQlEYW5pZWwgS3VwcGl0egorICAgIDEyCUR5bGFuIE1pbGxpa2luCisgICAgIDgJYXNoaXNobgorICAgICA0CVJ1c3NlbGwgU3BpdHplcgorICAgICAzCUNocmlzdGlhbiBCZWxsaW5hCisgICAgIDMJSmFzb24gUGx1cmFkCisgICAgIDIJTmdoaWEgVHJhbgorICAgICAyCW1oZnJhbnR6CisgICAgIDIJcGlldGVyCisgICAgIDEJQXNoaXNoIE5hZ2F2YXJhbTwvY29kZT48L3ByZT4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1mb290ZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tZGVmYXVsdCIgZGF0YS1kaXNtaXNzPSJtb2RhbCI+Q2xvc2U8L2J1dHRvbj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKworICAgIDwhLS0gMy4wLjItaW5jdWJhdGluZyAtLT4KKyAgICA8ZGl2IGNsYXNzPSJtb2RhbCBmYWRlIiBpZD0iY29udHJpYnV0b3JzLTNfMF8yLWluY3ViYXRpbmciIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIiByb2xlPSJkb2N1bWVudCI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiZ0aW1lczs8L3NwYW4+PC9idXR0b24+CisgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0ibW9kYWwtdGl0bGUiPjMuMC4yLWluY3ViYXRpbmc8L2g0PgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgorICAgICAgICAgICAgICAgICAgICA8cD5SZWxlYXNlIE1hbmFnZXI6IFN0ZXBoZW4gTWFsbGV0dGU8L3A+CisgICAgICAgICAgICAgICAgICAgIDxwcmU+PGNvZGU+JCBnaXQgc2hvcnRsb2cgLXNuIDMuMC4xLWluY3ViYXRpbmcuLjMuMC4yLWluY3ViYXRpbmcKKyAgICA2OQlTdGVwaGVuIE1hbGxldHRlCisgICAgMjAJRGFuaWVsIEt1cHBpdHoKKyAgICAxOAlNYXJrbyBBLiBSb2RyaWd1ZXoKKyAgICAgNglKYXNvbiBQbHVyYWQKKyAgICAgMglqYm11c3NvCisgICAgIDIJbWhmcmFudHoKKyAgICAgMQlEeWxhbiBNaWxsaWtpbjwvY29kZT48L3ByZT4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1mb290ZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tZGVmYXVsdCIgZGF0YS1kaXNtaXNzPSJtb2RhbCI+Q2xvc2U8L2J1dHRvbj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKworICAgIDwhLS0gMy4wLjEtaW5jdWJhdGluZyAtLT4KKyAgICA8ZGl2IGNsYXNzPSJtb2RhbCBmYWRlIiBpZD0iY29udHJpYnV0b3JzLTNfMF8xLWluY3ViYXRpbmciIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIiByb2xlPSJkb2N1bWVudCI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiZ0aW1lczs8L3NwYW4+PC9idXR0b24+CisgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0ibW9kYWwtdGl0bGUiPjMuMC4xLWluY3ViYXRpbmc8L2g0PgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgorICAgICAgICAgICAgICAgICAgICA8cD5SZWxlYXNlIE1hbmFnZXI6IFN0ZXBoZW4gTWFsbGV0dGU8L3A+CisgICAgICAgICAgICAgICAgICAgIDxwcmU+PGNvZGU+JCBnaXQgc2hvcnRsb2cgLXNuIDMuMC4wLWluY3ViYXRpbmcuLjMuMC4xLWluY3ViYXRpbmcKKyAgIDIxNwlTdGVwaGVuIE1hbGxldHRlCisgICAgNDMJRGFuaWVsIEt1cHBpdHoKKyAgICAzNglNYXJrbyBBLiBSb2RyaWd1ZXoKKyAgICAgNwltaGZyYW50egorICAgICAyCUJyeW4gQ29va2UKKyAgICAgMQlKYXNvbiBCcm93bgorICAgICAxCU1pa2UgQWRhbXNvbjwvY29kZT48L3ByZT4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1mb290ZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tZGVmYXVsdCIgZGF0YS1kaXNtaXNzPSJtb2RhbCI+Q2xvc2U8L2J1dHRvbj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKworICAgIDwhLS0gMy4wLjAtaW5jdWJhdGluZyAtLT4KKyAgICA8ZGl2IGNsYXNzPSJtb2RhbCBmYWRlIiBpZD0iY29udHJpYnV0b3JzLTNfMF8wLWluY3ViYXRpbmciIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIiByb2xlPSJkb2N1bWVudCI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgorICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiZ0aW1lczs8L3NwYW4+PC9idXR0b24+CisgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0ibW9kYWwtdGl0bGUiPjMuMC4wLWluY3ViYXRpbmc8L2g0PgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgorICAgICAgICAgICAgICAgICAgICA8cD5SZWxlYXNlIE1hbmFnZXI6IFN0ZXBoZW4gTWFsbGV0dGU8L3A+CisgICAgICAgICAgICAgICAgICAgIDxwcmU+PGNvZGU+JCBnaXQgc2hvcnRsb2cgLXNuIDMuMC4wLWluY3ViYXRpbmcKKyAgMzY0OAlTdGVwaGVuIE1hbGxldHRlCisgIDI3MzIJTWFya28gQS4gUm9kcmlndWV6CisgICAzMDQJRGFuaWVsIEt1cHBpdHoKKyAgIDEwNAlKb3NodWEgU2hpbmF2aWVyCisgICAgNTkJQm9iIEJyaW9keQorICAgIDMxCXN0ZXBoZW4gbWFsbGV0dGUKKyAgICAzMAlWaWN0b3IgU3UKKyAgICAyNQltaGZyYW50egorICAgIDIwCURhbiBMYVJvY3F1ZQorICAgIDE3CXJqYnJpb2R5CisgICAgMTMJTWF0dGhpYXMgQnJvZWNoZWxlcgorICAgICA4CW9rcmFtCisgICAgIDcJSmFzb24gUGx1cmFkCisgICAgIDUJcGlldGVyCisgICAgIDMJQnJ5biBDb29rZQorICAgICAzCURhdmlkIFJvYmluc29uCisgICAgIDMJSm9uIFNjaG5laWRlcgorICAgICAzCU1pa2UgTWNNYWhvbgorICAgICAzCVJhbmRhbGwgQmFybmhhcnQKKyAgICAgMglCYXJyaWUgVHJlbG9hcgorICAgICAyCU1pY2hhZWwgUG9sbG1laWVyCisgICAgIDIJbWZyYW50egorICAgICAxCUR5bGFuIE1pbGxpa2luCisgICAgIDEJSmltIExsb3lkCisgICAgIDEJUG9tbWVWZXJ0ZQorICAgICAxCWdtZXJhbAorICAgICAxCWphc29uCisgICAgIDEJcGFsaXdhbGFzaGlzaAorICAgICAxCXJ2ZXNzZQorICAgICAxCXNwbWFsbGV0dGU8L2NvZGU+PC9wcmU+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KKyAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQiIGRhdGEtZGlzbWlzcz0ibW9kYWwiPkNsb3NlPC9idXR0b24+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisKKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgICAgICQoIiNkcm9wZG93bkFyY2hpdmVzIikuY2hhbmdlKGZ1bmN0aW9uKCl7CisgICAgICAgICAgICB2YXIgc2VsZWN0ZWRWZXJzaW9uVGV4dCA9IHRoaXMub3B0aW9uc1t0aGlzLnNlbGVjdGVkSW5kZXhdLnRleHQ7CisKKyAgICAgICAgICAgIHZhciBwYXR0ZXJuID0gLyhcZCpcLlxkKlwuLiopIFwoKC4qKVwpLzsKKyAgICAgICAgICAgIHZhciBzZWxlY3RlZFZlcnNpb24gPSBwYXR0ZXJuLmV4ZWMoc2VsZWN0ZWRWZXJzaW9uVGV4dCk7CisgICAgICAgICAgICB2YXIgdmVyc2lvbiA9IHNlbGVjdGVkVmVyc2lvblsxXTsKKyAgICAgICAgICAgIHZhciByZWxlYXNlRGF0ZSA9IHNlbGVjdGVkVmVyc2lvblsyXTsKKyAgICAgICAgICAgIHZhciB2ZXJzaW9uSHlwaGVuZWQgPSB2ZXJzaW9uLnJlcGxhY2UoL1wuL2csICItIik7CisgICAgICAgICAgICB2YXIgdmVyc2lvblVuZGVyc2NvcmVkID0gdmVyc2lvbi5yZXBsYWNlKC9cLi9nLCAiXyIpOworCisgICAgICAgICAgICAkKCIjYXJjaGl2ZVZlcnNpb24iKS5odG1sKHZlcnNpb24pOworICAgICAgICAgICAgJCgiI2FyY2hpdmVSZWxlYXNlRGF0ZSIpLmh0bWwocmVsZWFzZURhdGUpOworICAgICAgICAgICAgJCgiI2FyY2hpdmVSZWxlYXNlTm90ZXMiKS5hdHRyKCJocmVmIiwgImh0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvdGlua2VycG9wL2Jsb2IvbWFzdGVyL0NIQU5HRUxPRy5hc2NpaWRvYyNyZWxlYXNlLSIgKyB2ZXJzaW9uSHlwaGVuZWQpOworICAgICAgICAgICAgJCgiI2FyY2hpdmVEb2NzIikuYXR0cigiaHJlZiIsICJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8iICsgdmVyc2lvbik7CisgICAgICAgICAgICAkKCIjYXJjaGl2ZUNvbnRyaWJ1dG9ycyIpLmF0dHIoImRhdGEtdGFyZ2V0IiwgIiNjb250cmlidXRvcnMtIiArIHZlcnNpb25VbmRlcnNjb3JlZCk7CisKKyAgICAgICAgICAgIHZhciB2ZXJzaW9uc1dpdGhPbGROYW1pbmcgPSBbIjMuMi4xIiwgIjMuMS4zIiwgIjMuMi4wLWluY3ViYXRpbmciLCAiMy4xLjItaW5jdWJhdGluZyIsICIzLjEuMS1pbmN1YmF0aW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjMuMS4wLWluY3ViYXRpbmciLCAiMy4wLjItaW5jdWJhdGluZyIsICIzLjAuMS1pbmN1YmF0aW5nIiwgIjMuMC4wLWluY3ViYXRpbmciXTsKKyAgICAgICAgICAgIHZhciBjb25zb2xlRmlsZU5hbWUgPSAiYXBhY2hlLXRpbmtlcnBvcC1ncmVtbGluLWNvbnNvbGUtIjsKKyAgICAgICAgICAgIHZhciBzZXJ2ZXJGaWxlTmFtZSA9ICJhcGFjaGUtdGlua2VycG9wLWdyZW1saW4tc2VydmVyLSI7CisgICAgICAgICAgICBpZiAodmVyc2lvbnNXaXRoT2xkTmFtaW5nLmluY2x1ZGVzKHZlcnNpb24pKSB7CisgICAgICAgICAgICAgICAgY29uc29sZUZpbGVOYW1lID0gImFwYWNoZS1ncmVtbGluLWNvbnNvbGUtIjsKKyAgICAgICAgICAgICAgICBzZXJ2ZXJGaWxlTmFtZSA9ICJhcGFjaGUtZ3JlbWxpbi1zZXJ2ZXItIjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIGluY3ViYXRpbmdWZXJzaW9uID0gdmVyc2lvbi5lbmRzV2l0aCgiLWluY3ViYXRpbmciKTsKKyAgICAgICAgICAgIHZhciBhcmNoaXZlVXJsID0gaW5jdWJhdGluZ1ZlcnNpb24gPyAiaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC9pbmN1YmF0b3IvdGlua2VycG9wLyIgOiAiaHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC90aW5rZXJwb3AvIjsKKworICAgICAgICAgICAgJCgiI2FyY2hpdmVEb3dubG9hZENvbnNvbGUiKS5hdHRyKCJocmVmIiwgYXJjaGl2ZVVybCArIHZlcnNpb24gKyAiLyIgKyBjb25zb2xlRmlsZU5hbWUgKyB2ZXJzaW9uICsgIi1iaW4uemlwIik7CisgICAgICAgICAgICAkKCIjYXJjaGl2ZURvd25sb2FkU2VydmVyIikuYXR0cigiaHJlZiIsIGFyY2hpdmVVcmwgKyB2ZXJzaW9uICsgIi8iICsgc2VydmVyRmlsZU5hbWUgKyB2ZXJzaW9uICsgIi1iaW4uemlwIik7CisgICAgICAgICAgICAkKCIjYXJjaGl2ZURvd25sb2FkU291cmNlIikuYXR0cigiaHJlZiIsIGFyY2hpdmVVcmwgKyB2ZXJzaW9uICsgIi9hcGFjaGUtdGlua2VycG9wLSIgKyB2ZXJzaW9uICsgIi1zcmMuemlwIik7CisKKyAgICAgICAgICAgIHZhciB2ZXJzaW9uc1dpdGhvdXRVcGdyYWRlRG9jcyA9IFsiMy4xLjAtaW5jdWJhdGluZyIsICIzLjAuMi1pbmN1YmF0aW5nIiwgIjMuMC4xLWluY3ViYXRpbmciLCAiMy4wLjAtaW5jdWJhdGluZyJdOworICAgICAgICAgICAgaWYgKHZlcnNpb25zV2l0aG91dFVwZ3JhZGVEb2NzLmluY2x1ZGVzKHZlcnNpb24pKSB7CisgICAgICAgICAgICAgICAgJCgiI2FyY2hpdmVVcGdyYWRlIGEiKS5hdHRyKCJocmVmIiwgIiMiKTsKKyAgICAgICAgICAgICAgICAkKCIjYXJjaGl2ZVVwZ3JhZGUiKS5oaWRlKCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICQoIiNhcmNoaXZlVXBncmFkZSBhIikuYXR0cigiaHJlZiIsICJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8iICsgdmVyc2lvbiArICIvdXBncmFkZS8jX3RpbmtlcnBvcF8iICsgdmVyc2lvblVuZGVyc2NvcmVkKTsKKyAgICAgICAgICAgICAgICAkKCIjYXJjaGl2ZVVwZ3JhZGUiKS5zaG93KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgfSk7CisKKyAgICAgICAgJCgiI2Ryb3Bkb3duQXJjaGl2ZXMiKS5jaGFuZ2UoKQorICAgIDwvc2NyaXB0PgorCis8L2Rpdj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9ncmVtbGluLmh0bWwgYi9kb2NzL3NpdGUvaG9tZS9ncmVtbGluLmh0bWwKaW5kZXggZmZhOWRmMy4uNDBmMmU2ZSAxMDA2NDQKLS0tIGEvZG9jcy9zaXRlL2hvbWUvZ3JlbWxpbi5odG1sCisrKyBiL2RvY3Mvc2l0ZS9ob21lL2dyZW1saW4uaHRtbApAQCAtMTQsNyArMTQsNyBAQAogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAtLT4KLTxpbWcgc3JjPSJpbWFnZXMvdGlua2VycG9wLWNpdHlzY2FwZS5wbmciIGNsYXNzPSJpbWctcmVzcG9uc2l2ZSIgLz4KKzxpbWcgc3JjPSJpbWcvdGlua2VycG9wLWNpdHlzY2FwZS5wbmciIGNsYXNzPSJpbWctcmVzcG9uc2l2ZSIgLz4KIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgPGRpdiBjbGFzcz0iaGVyby11bml0IiBzdHlsZT0icGFkZGluZzoxMHB4Ij4KICAgICA8Yj48Zm9udCBzaXplPSI1IiBmYWNlPSJhbWVyaWNhbiB0eXBld3JpdGVyIj5BcGFjaGUgVGlua2VyUG9wJnRyYWRlOzwvZm9udD48L2I+CkBAIC0zNCw3ICszNCw3IEBACiAgICAgICAgICAgdXNlcnMgYSByaWNoIGNvbGxlY3Rpb24gb2Ygc3RlcHMgdGhhdCB0aGV5IGNhbiBjb21wb3NlIGluIG9yZGVyIHRvIGFzayBhbnkgY29uY2VpdmFibGUgcXVlc3Rpb24gdGhleSBtYXkgaGF2ZSBvZiB0aGVpciBkYXRhIGZvciBHcmVtbGluIGlzIDxhIGhyZWY9Imh0dHA6Ly9hcnhpdi5vcmcvYWJzLzE1MDguMDM4NDMiPlR1cmluZyBDb21wbGV0ZTwvYT4uCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iY29sLXNtLTIgY29sLW1kLTIiPgotICAgICAgICAgIDxpbWcgc3JjPSJpbWFnZXMvZ3JlbWxpbi1oZWFkLnBuZyIgd2lkdGg9IjEwMCUiPgorICAgICAgICAgIDxpbWcgc3JjPSJpbWcvZ3JlbWxpbi1oZWFkLnBuZyIgd2lkdGg9IjEwMCUiPgogICAgICAgIDwvZGl2PgogICAgIDwvZGl2PgogICAgIDxici8+CkBAIC0yMDksNyArMjA5LDcgQEAKICAgICBub3QgbmVlZCB0byBsZWFybiBib3RoIGEgZGF0YWJhc2UgcXVlcnkgbGFuZ3VhZ2UgYW5kIGEgZG9tYWluLXNwZWNpZmljIEJpZ0RhdGEgYW5hbHl0aWNzIGxhbmd1YWdlIChlLmcuIFNwYXJrIERTTCwgTWFwUmVkdWNlLCBldGMuKS4KICAgICBHcmVtbGluIGlzIGFsbCB0aGF0IGlzIHJlcXVpcmVkIHRvIGJ1aWxkIGEgZ3JhcGgtYmFzZWQgYXBwbGljYXRpb24gYmVjYXVzZSB0aGUgR3JlbWxpbiB0cmF2ZXJzYWwgbWFjaGluZSB3aWxsIGhhbmRsZSB0aGUgcmVzdC4KICAgICA8YnIvPjxici8+Ci0gICAgPGNlbnRlcj48aW1nIHNyYz0iaW1hZ2VzL29sdHAtYW5kLW9sYXAucG5nIiBzdHlsZT0id2lkdGg6ODAlOyIgY2xhc3M9ImltZy1yZXNwb25zaXZlIj48L2NlbnRlcj4KKyAgICA8Y2VudGVyPjxpbWcgc3JjPSJpbWcvb2x0cC1hbmQtb2xhcC5wbmciIHN0eWxlPSJ3aWR0aDo4MCU7IiBjbGFzcz0iaW1nLXJlc3BvbnNpdmUiPjwvY2VudGVyPgogIDwvZGl2PgogIDxici8+CiAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KQEAgLTI2OCw3ICsyNjgsNyBAQAogICAgIDxici8+CiAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tNSBjb2wtbWQtNCI+Ci0gICAgICAgICAgPGltZyBzcmM9ImltYWdlcy9ncmVtbGluLWxhbmd1YWdlLXZhcmlhbnRzLnBuZyIgY2xhc3M9ImltZy1yZXNwb25zaXZlIj4KKyAgICAgICAgICA8aW1nIHNyYz0iaW1nL2dyZW1saW4tbGFuZ3VhZ2UtdmFyaWFudHMucG5nIiBjbGFzcz0iaW1nLXJlc3BvbnNpdmUiPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS03IGNvbC1tZC04Ij4KICAgICAgICAgICBDbGFzc2ljIGRhdGFiYXNlIHF1ZXJ5IGxhbmd1YWdlcywgbGlrZSA8YSBocmVmPSJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TUUwiPlNRTDwvYT4sIHdlcmUgY29uY2VpdmVkIGFzIGJlaW5nIGZ1bmRhbWVudGFsbHkgZGlmZmVyZW50IGZyb20gdGhlIHByb2dyYW1taW5nIGxhbmd1YWdlcyB0aGF0IHdvdWxkCkBAIC0zMzksOCArMzM5LDcgQEAKIEdyYXBoVHJhdmVyc2FsU291cmNlIGc7CiBnID0gZ3JhcGgudHJhdmVyc2FsKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9jYWwgT0xUUAogZyA9IHRyYXZlcnNhbCgpLndpdGhSZW1vdGUoRHJpdmVyUmVtb3RlQ29ubmVjdGlvbi51c2luZygibG9jYWxob3N0IiwgODE4MikpICAgIC8vIHJlbW90ZQotZyA9IGdyYXBoLnRyYXZlcnNhbCgpLndpdGhDb21wdXRlcihTcGFya0dyYXBoQ29tcHV0ZXIuY2xhc3MpOyAgICAgICAgICAgICAgICAgIC8vIGRpc3RyaWJ1dGVkIE9MQVAKLWcgPSBncmFwaC50cmF2ZXJzYWwoKS53aXRoQ29tcHV0ZXIoR2lyYXBoR3JhcGhDb21wdXRlci5jbGFzcyk7ICAgICAgICAgICAgICAgICAvLyBkaXN0cmlidXRlZCBPTEFQPC9jb2RlPgorZyA9IGdyYXBoLnRyYXZlcnNhbCgpLndpdGhDb21wdXRlcihTcGFya0dyYXBoQ29tcHV0ZXIuY2xhc3MpOyAgICAgICAgICAgICAgICAgLy8gZGlzdHJpYnV0ZWQgT0xBUDwvY29kZT4KIDwvcHJlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxici8+CkBAIC0zNTIsMTYgKzM1MSwxNiBAQAogICAgICAgIDxkaXYgY2xhc3M9ImNhcm91c2VsIHNsaWRlIiBkYXRhLXJpZGU9ImNhcm91c2VsIiBkYXRhLXR5cGU9Im11bHRpIiBkYXRhLWludGVydmFsPSI3MDAwIiBpZD0icmVsYXRlZFJlc291cmNlcyI+CiAgICAgICAgICAgPGRpdiBjbGFzcz0iY2Fyb3VzZWxHcmlkLWlubmVyIj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIGFjdGl2ZSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLWxnLTMgY29sLW1kLTMgY29sLXNtLTQgY29sLXhzLTYiPjxhIGhyZWY9Imh0dHBzOi8vYWNhZGVteS5kYXRhc3RheC5jb20vcmVzb3VyY2VzL2dldHRpbmctc3RhcnRlZC1ncmFwaC1kYXRhYmFzZXMiPjxpbWcgc3JjPSJpbWFnZXMvcmVzb3VyY2VzL2dyYXBoLWRhdGFiYXNlcy0xMDEtcmVzb3VyY2UucG5nIiB3aWR0aD0iMTAwJSIgLz48L2E+PC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLWxnLTMgY29sLW1kLTMgY29sLXNtLTQgY29sLXhzLTYiPjxhIGhyZWY9Imh0dHBzOi8vYWNhZGVteS5kYXRhc3RheC5jb20vcmVzb3VyY2VzL2dldHRpbmctc3RhcnRlZC1ncmFwaC1kYXRhYmFzZXMiPjxpbWcgc3JjPSJpbWcvcmVzb3VyY2VzL2dyYXBoLWRhdGFiYXNlcy0xMDEtcmVzb3VyY2UucG5nIiB3aWR0aD0iMTAwJSIgLz48L2E+PC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLWxnLTMgY29sLW1kLTMgY29sLXNtLTQgY29sLXhzLTYiPjxhIGhyZWY9Imh0dHA6Ly9kYXRhc3RheC5jb20vZGV2L2Jsb2cvdGhlLWJlbmVmaXRzLW9mLXRoZS1ncmVtbGluLWdyYXBoLXRyYXZlcnNhbC1tYWNoaW5lIj48aW1nIHNyYz0iaW1hZ2VzL3Jlc291cmNlcy9iZW5lZml0cy1ncmVtbGluLW1hY2hpbmUtcmVzb3VyY2UucG5nIiB3aWR0aD0iMTAwJSIgLz48L2E+PC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLWxnLTMgY29sLW1kLTMgY29sLXNtLTQgY29sLXhzLTYiPjxhIGhyZWY9Imh0dHA6Ly9kYXRhc3RheC5jb20vZGV2L2Jsb2cvdGhlLWJlbmVmaXRzLW9mLXRoZS1ncmVtbGluLWdyYXBoLXRyYXZlcnNhbC1tYWNoaW5lIj48aW1nIHNyYz0iaW1nL3Jlc291cmNlcy9iZW5lZml0cy1ncmVtbGluLW1hY2hpbmUtcmVzb3VyY2UucG5nIiB3aWR0aD0iMTAwJSIgLz48L2E+PC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLWxnLTMgY29sLW1kLTMgY29sLXNtLTQgY29sLXhzLTYiPjxhIGhyZWY9Imh0dHA6Ly9hcnhpdi5vcmcvYWJzLzE1MDguMDM4NDMiPjxpbWcgc3JjPSJpbWFnZXMvcmVzb3VyY2VzL2FyeGl2LWFydGljbGUtcmVzb3VyY2UucG5nIiB3aWR0aD0iMTAwJSIgLz48L2E+PC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLWxnLTMgY29sLW1kLTMgY29sLXNtLTQgY29sLXhzLTYiPjxhIGhyZWY9Imh0dHA6Ly9hcnhpdi5vcmcvYWJzLzE1MDguMDM4NDMiPjxpbWcgc3JjPSJpbWcvcmVzb3VyY2VzL2FyeGl2LWFydGljbGUtcmVzb3VyY2UucG5nIiB3aWR0aD0iMTAwJSIgLz48L2E+PC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLWxnLTMgY29sLW1kLTMgY29sLXNtLTQgY29sLXhzLTYiPjxhIGhyZWY9Imh0dHA6Ly9zcWwyZ3JlbWxpbi5jb20vIj48aW1nIHNyYz0iaW1hZ2VzL3Jlc291cmNlcy9zcWwtMi1ncmVtbGluLXJlc291cmNlLnBuZyIgd2lkdGg9IjEwMCUiIC8+PC9hPjwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1sZy0zIGNvbC1tZC0zIGNvbC1zbS00IGNvbC14cy02Ij48YSBocmVmPSJodHRwOi8vc3FsMmdyZW1saW4uY29tLyI+PGltZyBzcmM9ImltZy9yZXNvdXJjZXMvc3FsLTItZ3JlbWxpbi1yZXNvdXJjZS5wbmciIHdpZHRoPSIxMDAlIiAvPjwvYT48L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICA8YSBjbGFzcz0ibGVmdCBjYXJvdXNlbEdyaWQtY29udHJvbCIgaHJlZj0iI3JlbGF0ZWRSZXNvdXJjZXMiIGRhdGEtc2xpZGU9InByZXYiPgpAQCAtMzkyLDUgKzM5MSw3IEBACiAgICAgICAgICAgfSk7CiAgICAgICAgPC9zY3JpcHQ+CiAgICAgPC9kaXY+CisgICAgPGJyLz4KKyAgICA8YnIvPgogIDwvZGl2PgogPC9kaXY+CmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvbG9nb3MvaWJtZ3JhcGgtbG9nby5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvbG9nb3MvaWJtZ3JhcGgtbG9nby5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzNTI0YWIuLjAwMDAwMDAKLS0tIGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2xvZ29zL2libWdyYXBoLWxvZ28ucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2FwYWNoZS10aW5rZXJwb3AtbG9nby5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvYXBhY2hlLXRpbmtlcnBvcC1sb2dvLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2FwYWNoZS10aW5rZXJwb3AtbG9nby5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy9hcGFjaGUtdGlua2VycG9wLWxvZ28ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9ibHVlcHJpbnRzLWhhbmRkcmF3bi5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvYmx1ZXByaW50cy1oYW5kZHJhd24ucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvYmx1ZXByaW50cy1oYW5kZHJhd24ucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvYmx1ZXByaW50cy1oYW5kZHJhd24ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9jaXR5c2NhcGUtYnV0dG9uLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9jaXR5c2NhcGUtYnV0dG9uLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2NpdHlzY2FwZS1idXR0b24ucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvY2l0eXNjYXBlLWJ1dHRvbi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2VnZy1sb2dvLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9lZ2ctbG9nby5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9lZ2ctbG9nby5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy9lZ2ctbG9nby5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2Zhdmljb24uaWNvIGIvZG9jcy9zaXRlL2hvbWUvaW1nL2Zhdmljb24uaWNvCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvZmF2aWNvbi5pY28KcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy9mYXZpY29uLmljbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvZnVybmFjZS1oYW5kZHJhd24ucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL2Z1cm5hY2UtaGFuZGRyYXduLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2Z1cm5hY2UtaGFuZGRyYXduLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL2Z1cm5hY2UtaGFuZGRyYXduLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvZ3JhcGgtZ2xvYmUucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL2dyYXBoLWdsb2JlLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2dyYXBoLWdsb2JlLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL2dyYXBoLWdsb2JlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvZ3JhcGgtdnMtdGFibGUucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL2dyYXBoLXZzLXRhYmxlLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2dyYXBoLXZzLXRhYmxlLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL2dyYXBoLXZzLXRhYmxlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvZ3JlbWxpbi1hcGFjaGUucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL2dyZW1saW4tYXBhY2hlLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2dyZW1saW4tYXBhY2hlLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL2dyZW1saW4tYXBhY2hlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvZ3JlbWxpbi1kb3dubG9hZC5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvZ3JlbWxpbi1kb3dubG9hZC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9ncmVtbGluLWRvd25sb2FkLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL2dyZW1saW4tZG93bmxvYWQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9ncmVtbGluLWdpdGh1Yi5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvZ3JlbWxpbi1naXRodWIucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvZ3JlbWxpbi1naXRodWIucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvZ3JlbWxpbi1naXRodWIucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9ncmVtbGluLWd5bS1taW5pLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9ncmVtbGluLWd5bS1taW5pLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2dyZW1saW4tZ3ltLW1pbmkucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvZ3JlbWxpbi1neW0tbWluaS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2dyZW1saW4taGFuZGRyYXduLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9ncmVtbGluLWhhbmRkcmF3bi5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9ncmVtbGluLWhhbmRkcmF3bi5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy9ncmVtbGluLWhhbmRkcmF3bi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2dyZW1saW4taGVhZC5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvZ3JlbWxpbi1oZWFkLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2dyZW1saW4taGVhZC5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy9ncmVtbGluLWhlYWQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9ncmVtbGluLWxhbmd1YWdlLXZhcmlhbnRzLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9ncmVtbGluLWxhbmd1YWdlLXZhcmlhbnRzLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2dyZW1saW4tbGFuZ3VhZ2UtdmFyaWFudHMucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvZ3JlbWxpbi1sYW5ndWFnZS12YXJpYW50cy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2dyZW1saW4tcXVpbGwucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL2dyZW1saW4tcXVpbGwucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvZ3JlbWxpbi1xdWlsbC5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy9ncmVtbGluLXF1aWxsLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvaG9tZXBhZ2UuZ3JhZmZsZSBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9ob21lcGFnZS5ncmFmZmxlCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvaG9tZXBhZ2UuZ3JhZmZsZQpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL2hvbWVwYWdlLmdyYWZmbGUKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9sb2dvcy9ibGF6ZWdyYXBoLWxvZ28ucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL2xvZ29zL2JsYXplZ3JhcGgtbG9nby5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9sb2dvcy9ibGF6ZWdyYXBoLWxvZ28ucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvbG9nb3MvYmxhemVncmFwaC1sb2dvLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvbG9nb3MvY29zbW9zZGItbG9nby5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvbG9nb3MvY29zbW9zZGItbG9nby5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9sb2dvcy9jb3Ntb3NkYi1sb2dvLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL2xvZ29zL2Nvc21vc2RiLWxvZ28ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9sb2dvcy9kYXRhc3RheC1sb2dvLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9sb2dvcy9kYXRhc3RheC1sb2dvLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2xvZ29zL2RhdGFzdGF4LWxvZ28ucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvbG9nb3MvZGF0YXN0YXgtbG9nby5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2xvZ29zL2dyYWtuLWxvZ28ucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL2xvZ29zL2dyYWtuLWxvZ28ucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvbG9nb3MvZ3Jha24tbG9nby5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy9sb2dvcy9ncmFrbi1sb2dvLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWcvbG9nb3MvZ3JlbWxpbi1kb3RuZXQtbG9nby5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvbG9nb3MvZ3JlbWxpbi1kb3RuZXQtbG9nby5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTY3YjM2YgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9sb2dvcy9ncmVtbGluLWRvdG5ldC1sb2dvLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvbG9nb3MvZ3JlbWxpbi1ncm9vdnktbG9nby5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvbG9nb3MvZ3JlbWxpbi1ncm9vdnktbG9nby5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9sb2dvcy9ncmVtbGluLWdyb292eS1sb2dvLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL2xvZ29zL2dyZW1saW4tZ3Jvb3Z5LWxvZ28ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9sb2dvcy9ncmVtbGluLWphdmEtbG9nby5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvbG9nb3MvZ3JlbWxpbi1qYXZhLWxvZ28ucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvbG9nb3MvZ3JlbWxpbi1qYXZhLWxvZ28ucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvbG9nb3MvZ3JlbWxpbi1qYXZhLWxvZ28ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9sb2dvcy9ncmVtbGluLXB5dGhvbi1sb2dvLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9sb2dvcy9ncmVtbGluLXB5dGhvbi1sb2dvLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2xvZ29zL2dyZW1saW4tcHl0aG9uLWxvZ28ucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvbG9nb3MvZ3JlbWxpbi1weXRob24tbG9nby5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2xvZ29zL2dyZW1saW4tc2NhbGEtbG9nby5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvbG9nb3MvZ3JlbWxpbi1zY2FsYS1sb2dvLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2xvZ29zL2dyZW1saW4tc2NhbGEtbG9nby5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy9sb2dvcy9ncmVtbGluLXNjYWxhLWxvZ28ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltZy9sb2dvcy9pYm0tY29tcG9zZS1qYW51c2dyYXBoLWxvZ28ucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL2xvZ29zL2libS1jb21wb3NlLWphbnVzZ3JhcGgtbG9nby5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ5NTQ0NwotLS0gL2Rldi9udWxsCisrKyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9sb2dvcy9pYm0tY29tcG9zZS1qYW51c2dyYXBoLWxvZ28ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9sb2dvcy9qYW51c2dyYXBoLWxvZ28ucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL2xvZ29zL2phbnVzZ3JhcGgtbG9nby5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9sb2dvcy9qYW51c2dyYXBoLWxvZ28ucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvbG9nb3MvamFudXNncmFwaC1sb2dvLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvbG9nb3Mva2V5bGluZXMtbG9nby5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvbG9nb3Mva2V5bGluZXMtbG9nby5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9sb2dvcy9rZXlsaW5lcy1sb2dvLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL2xvZ29zL2tleWxpbmVzLWxvZ28ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9sb2dvcy9saW5rdXJpb3VzLWxvZ28ucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL2xvZ29zL2xpbmt1cmlvdXMtbG9nby5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9sb2dvcy9saW5rdXJpb3VzLWxvZ28ucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvbG9nb3MvbGlua3VyaW91cy1sb2dvLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvbG9nb3MvbmVvNGotbG9nby5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvbG9nb3MvbmVvNGotbG9nby5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9sb2dvcy9uZW80ai1sb2dvLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL2xvZ29zL25lbzRqLWxvZ28ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltZy9sb2dvcy9uZXB0dW5lLWxvZ28ucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL2xvZ29zL25lcHR1bmUtbG9nby5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGI0NGE5YwotLS0gL2Rldi9udWxsCisrKyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9sb2dvcy9uZXB0dW5lLWxvZ28ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9sb2dvcy9vZ3JlLWxvZ28ucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL2xvZ29zL29ncmUtbG9nby5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9sb2dvcy9vZ3JlLWxvZ28ucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvbG9nb3Mvb2dyZS1sb2dvLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvbG9nb3Mvb3JpZW50ZGItbG9nby5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvbG9nb3Mvb3JpZW50ZGItbG9nby5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9sb2dvcy9vcmllbnRkYi1sb2dvLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL2xvZ29zL29yaWVudGRiLWxvZ28ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9sb2dvcy9zcGFycWwtZ3JlbWxpbi1sb2dvLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9sb2dvcy9zcGFycWwtZ3JlbWxpbi1sb2dvLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2xvZ29zL3NwYXJxbC1ncmVtbGluLWxvZ28ucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvbG9nb3Mvc3BhcnFsLWdyZW1saW4tbG9nby5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2xvZ29zL3NxbC1ncmVtbGluLWxvZ28ucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL2xvZ29zL3NxbC1ncmVtbGluLWxvZ28ucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvbG9nb3Mvc3FsLWdyZW1saW4tbG9nby5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy9sb2dvcy9zcWwtZ3JlbWxpbi1sb2dvLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvbG9nb3Mvc3RhcmRvZy1sb2dvLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9sb2dvcy9zdGFyZG9nLWxvZ28ucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvbG9nb3Mvc3RhcmRvZy1sb2dvLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL2xvZ29zL3N0YXJkb2ctbG9nby5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2xvZ29zL3RpdGFuLWxvZ28ucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL2xvZ29zL3RpdGFuLWxvZ28ucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvbG9nb3MvdGl0YW4tbG9nby5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy9sb2dvcy90aXRhbi1sb2dvLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvbG9nb3MvdG9tc2F3eWVyLWxvZ28ucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL2xvZ29zL3RvbXNhd3llci1sb2dvLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL2xvZ29zL3RvbXNhd3llci1sb2dvLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL2xvZ29zL3RvbXNhd3llci1sb2dvLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvbWVldGluZy1yb29tLWJ1dHRvbi5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvbWVldGluZy1yb29tLWJ1dHRvbi5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9tZWV0aW5nLXJvb20tYnV0dG9uLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL21lZXRpbmctcm9vbS1idXR0b24ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9vbHRwLWFuZC1vbGFwLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9vbHRwLWFuZC1vbGFwLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL29sdHAtYW5kLW9sYXAucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvb2x0cC1hbmQtb2xhcC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3Blb24taGVhZC5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvcGVvbi1oZWFkLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3Blb24taGVhZC5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy9wZW9uLWhlYWQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9wb2xpY3kvYWRqYWNlbmN5LWxpc3QucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL3BvbGljeS9hZGphY2VuY3ktbGlzdC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9wb2xpY3kvYWRqYWNlbmN5LWxpc3QucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvcG9saWN5L2FkamFjZW5jeS1saXN0LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvcG9saWN5L2JsdWVwcmludHMtY2hhcmFjdGVyLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9wb2xpY3kvYmx1ZXByaW50cy1jaGFyYWN0ZXIucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvcG9saWN5L2JsdWVwcmludHMtY2hhcmFjdGVyLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL3BvbGljeS9ibHVlcHJpbnRzLWNoYXJhY3Rlci5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3BvbGljeS9idXNpbmVzcy1ncmVtbGluLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9wb2xpY3kvYnVzaW5lc3MtZ3JlbWxpbi5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9wb2xpY3kvYnVzaW5lc3MtZ3JlbWxpbi5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy9wb2xpY3kvYnVzaW5lc3MtZ3JlbWxpbi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3BvbGljeS9jeWNsaWNwYXRoLXN0ZXAucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL3BvbGljeS9jeWNsaWNwYXRoLXN0ZXAucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvcG9saWN5L2N5Y2xpY3BhdGgtc3RlcC5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy9wb2xpY3kvY3ljbGljcGF0aC1zdGVwLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvcG9saWN5L2ZsYXQtbWFwLWxhbWJkYS5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvcG9saWN5L2ZsYXQtbWFwLWxhbWJkYS5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9wb2xpY3kvZmxhdC1tYXAtbGFtYmRhLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL3BvbGljeS9mbGF0LW1hcC1sYW1iZGEucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9wb2xpY3kvZnJhbWVzLWNoYXJhY3Rlci5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvcG9saWN5L2ZyYW1lcy1jaGFyYWN0ZXIucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvcG9saWN5L2ZyYW1lcy1jaGFyYWN0ZXIucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvcG9saWN5L2ZyYW1lcy1jaGFyYWN0ZXIucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9wb2xpY3kvZnVybmFjZS1jaGFyYWN0ZXIucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL3BvbGljeS9mdXJuYWNlLWNoYXJhY3Rlci5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9wb2xpY3kvZnVybmFjZS1jaGFyYWN0ZXIucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvcG9saWN5L2Z1cm5hY2UtY2hhcmFjdGVyLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvcG9saWN5L2dyZW1saW4tY2hhcmFjdGVyLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9wb2xpY3kvZ3JlbWxpbi1jaGFyYWN0ZXIucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvcG9saWN5L2dyZW1saW4tY2hhcmFjdGVyLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL3BvbGljeS9ncmVtbGluLWNoYXJhY3Rlci5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3BvbGljeS9ncmVtbGluLWNoaWNrZW53aW5nLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9wb2xpY3kvZ3JlbWxpbi1jaGlja2Vud2luZy5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9wb2xpY3kvZ3JlbWxpbi1jaGlja2Vud2luZy5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy9wb2xpY3kvZ3JlbWxpbi1jaGlja2Vud2luZy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3BvbGljeS9ncmVtbGluLWdyZW1vcG9seS5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvcG9saWN5L2dyZW1saW4tZ3JlbW9wb2x5LnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3BvbGljeS9ncmVtbGluLWdyZW1vcG9seS5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy9wb2xpY3kvZ3JlbWxpbi1ncmVtb3BvbHkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9wb2xpY3kvZ3JlbWxpbi1ncmVtcmVhcGVyLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9wb2xpY3kvZ3JlbWxpbi1ncmVtcmVhcGVyLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3BvbGljeS9ncmVtbGluLWdyZW1yZWFwZXIucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvcG9saWN5L2dyZW1saW4tZ3JlbXJlYXBlci5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3BvbGljeS9ncmVtbGluLWdyZW1zdGVmYW5pLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9wb2xpY3kvZ3JlbWxpbi1ncmVtc3RlZmFuaS5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9wb2xpY3kvZ3JlbWxpbi1ncmVtc3RlZmFuaS5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy9wb2xpY3kvZ3JlbWxpbi1ncmVtc3RlZmFuaS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3BvbGljeS9ncmVtbGluLW5ldy1zaGVyaWZmLWluLXRvd24ucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL3BvbGljeS9ncmVtbGluLW5ldy1zaGVyaWZmLWluLXRvd24ucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvcG9saWN5L2dyZW1saW4tbmV3LXNoZXJpZmYtaW4tdG93bi5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy9wb2xpY3kvZ3JlbWxpbi1uZXctc2hlcmlmZi1pbi10b3duLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvcG9saWN5L2dyZW1saW4tbm8tbW9yZS1tci1uaWNlLWd1eS5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvcG9saWN5L2dyZW1saW4tbm8tbW9yZS1tci1uaWNlLWd1eS5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9wb2xpY3kvZ3JlbWxpbi1uby1tb3JlLW1yLW5pY2UtZ3V5LnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL3BvbGljeS9ncmVtbGluLW5vLW1vcmUtbXItbmljZS1ndXkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9wb2xpY3kvZ3JlbWxpbnRyb24ucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL3BvbGljeS9ncmVtbGludHJvbi5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9wb2xpY3kvZ3JlbWxpbnRyb24ucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvcG9saWN5L2dyZW1saW50cm9uLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvcG9saWN5L29sYXAtdHJhdmVyc2FsLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9wb2xpY3kvb2xhcC10cmF2ZXJzYWwucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvcG9saWN5L29sYXAtdHJhdmVyc2FsLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL3BvbGljeS9vbGFwLXRyYXZlcnNhbC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3BvbGljeS9waXBlcy1jaGFyYWN0ZXIucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL3BvbGljeS9waXBlcy1jaGFyYWN0ZXIucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvcG9saWN5L3BpcGVzLWNoYXJhY3Rlci5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy9wb2xpY3kvcGlwZXMtY2hhcmFjdGVyLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvcG9saWN5L3JleHN0ZXItY2hhcmFjdGVyLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9wb2xpY3kvcmV4c3Rlci1jaGFyYWN0ZXIucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvcG9saWN5L3JleHN0ZXItY2hhcmFjdGVyLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL3BvbGljeS9yZXhzdGVyLWNoYXJhY3Rlci5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3BvbGljeS90aW5rZXJwb3AtcmVhZGluZy5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvcG9saWN5L3RpbmtlcnBvcC1yZWFkaW5nLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3BvbGljeS90aW5rZXJwb3AtcmVhZGluZy5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy9wb2xpY3kvdGlua2VycG9wLXJlYWRpbmcucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9wb2xpY3kvdGlua2VycG9wMy1zcGxhc2gucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL3BvbGljeS90aW5rZXJwb3AzLXNwbGFzaC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9wb2xpY3kvdGlua2VycG9wMy1zcGxhc2gucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvcG9saWN5L3RpbmtlcnBvcDMtc3BsYXNoLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWcvcHJhY3RpY2FsLWdyZW1saW4tdGl0bGVkLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9wcmFjdGljYWwtZ3JlbWxpbi10aXRsZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjI2NWYzYTIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL3NpdGUvaG9tZS9pbWcvcHJhY3RpY2FsLWdyZW1saW4tdGl0bGVkLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvcmVzb3VyY2VzL2FyeGl2LWFydGljbGUtcmVzb3VyY2UucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL3Jlc291cmNlcy9hcnhpdi1hcnRpY2xlLXJlc291cmNlLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3Jlc291cmNlcy9hcnhpdi1hcnRpY2xlLXJlc291cmNlLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL3Jlc291cmNlcy9hcnhpdi1hcnRpY2xlLXJlc291cmNlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvcmVzb3VyY2VzL2JlbmVmaXRzLWdyZW1saW4tbWFjaGluZS1yZXNvdXJjZS5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvcmVzb3VyY2VzL2JlbmVmaXRzLWdyZW1saW4tbWFjaGluZS1yZXNvdXJjZS5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9yZXNvdXJjZXMvYmVuZWZpdHMtZ3JlbWxpbi1tYWNoaW5lLXJlc291cmNlLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL3Jlc291cmNlcy9iZW5lZml0cy1ncmVtbGluLW1hY2hpbmUtcmVzb3VyY2UucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9yZXNvdXJjZXMvZ3JhcGgtZGF0YWJhc2VzLTEwMS1yZXNvdXJjZS5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvcmVzb3VyY2VzL2dyYXBoLWRhdGFiYXNlcy0xMDEtcmVzb3VyY2UucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvcmVzb3VyY2VzL2dyYXBoLWRhdGFiYXNlcy0xMDEtcmVzb3VyY2UucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvcmVzb3VyY2VzL2dyYXBoLWRhdGFiYXNlcy0xMDEtcmVzb3VyY2UucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9yZXNvdXJjZXMvb24tZ3JhcGgtY29tcHV0aW5nLXJlc291cmNlLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy9yZXNvdXJjZXMvb24tZ3JhcGgtY29tcHV0aW5nLXJlc291cmNlLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3Jlc291cmNlcy9vbi1ncmFwaC1jb21wdXRpbmctcmVzb3VyY2UucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvcmVzb3VyY2VzL29uLWdyYXBoLWNvbXB1dGluZy1yZXNvdXJjZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3Jlc291cmNlcy9wcm9wZXJ0eS1ncmFwaC1yZXNvdXJjZS5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvcmVzb3VyY2VzL3Byb3BlcnR5LWdyYXBoLXJlc291cmNlLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3Jlc291cmNlcy9wcm9wZXJ0eS1ncmFwaC1yZXNvdXJjZS5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy9yZXNvdXJjZXMvcHJvcGVydHktZ3JhcGgtcmVzb3VyY2UucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9yZXNvdXJjZXMvc3FsLTItZ3JlbWxpbi1yZXNvdXJjZS5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvcmVzb3VyY2VzL3NxbC0yLWdyZW1saW4tcmVzb3VyY2UucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvcmVzb3VyY2VzL3NxbC0yLWdyZW1saW4tcmVzb3VyY2UucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvcmVzb3VyY2VzL3NxbC0yLWdyZW1saW4tcmVzb3VyY2UucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9yZXNvdXJjZXMvdGFibGVzLWFuZC1ncmFwaHMtcmVzb3VyY2UucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL3Jlc291cmNlcy90YWJsZXMtYW5kLWdyYXBocy1yZXNvdXJjZS5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9yZXNvdXJjZXMvdGFibGVzLWFuZC1ncmFwaHMtcmVzb3VyY2UucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvcmVzb3VyY2VzL3RhYmxlcy1hbmQtZ3JhcGhzLXJlc291cmNlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvcmVzb3VyY2VzL3doeS1ncmFwaC1kYXRhYmFzZXMtcmVzb3VyY2UucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL3Jlc291cmNlcy93aHktZ3JhcGgtZGF0YWJhc2VzLXJlc291cmNlLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3Jlc291cmNlcy93aHktZ3JhcGgtZGF0YWJhc2VzLXJlc291cmNlLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL3Jlc291cmNlcy93aHktZ3JhcGgtZGF0YWJhc2VzLXJlc291cmNlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvcmV4c3Rlci1oYW5kZHJhd24ucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL3JleHN0ZXItaGFuZGRyYXduLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3JleHN0ZXItaGFuZGRyYXduLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL3JleHN0ZXItaGFuZGRyYXduLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvdGlua2VyYmxvY2tzLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy90aW5rZXJibG9ja3MucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvdGlua2VyYmxvY2tzLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL3RpbmtlcmJsb2Nrcy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3RpbmtlcnBvcC1ib29rLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy90aW5rZXJwb3AtYm9vay5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy90aW5rZXJwb3AtYm9vay5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy90aW5rZXJwb3AtYm9vay5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3RpbmtlcnBvcC1jaXR5c2NhcGUucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL3RpbmtlcnBvcC1jaXR5c2NhcGUucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvdGlua2VycG9wLWNpdHlzY2FwZS5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy90aW5rZXJwb3AtY2l0eXNjYXBlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvdGlua2VycG9wLWNvbmZlcmVuY2UucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL3RpbmtlcnBvcC1jb25mZXJlbmNlLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3RpbmtlcnBvcC1jb25mZXJlbmNlLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL3RpbmtlcnBvcC1jb25mZXJlbmNlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvdGlua2VycG9wLWxvZ28tc21hbGwucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL3RpbmtlcnBvcC1sb2dvLXNtYWxsLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3RpbmtlcnBvcC1sb2dvLXNtYWxsLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL3RpbmtlcnBvcC1sb2dvLXNtYWxsLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvdGlua2VycG9wLW1lZXRpbmctcm9vbS5wbmcgYi9kb2NzL3NpdGUvaG9tZS9pbWcvdGlua2VycG9wLW1lZXRpbmctcm9vbS5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy90aW5rZXJwb3AtbWVldGluZy1yb29tLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL3RpbmtlcnBvcC1tZWV0aW5nLXJvb20ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy90aW5rZXJwb3AtcmVhZGluZy0yLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy90aW5rZXJwb3AtcmVhZGluZy0yLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3RpbmtlcnBvcC1yZWFkaW5nLTIucG5nCnJlbmFtZSB0byBkb2NzL3NpdGUvaG9tZS9pbWcvdGlua2VycG9wLXJlYWRpbmctMi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3RpbmtlcnBvcC1yZWFkaW5nLnBuZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy90aW5rZXJwb3AtcmVhZGluZy5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy90aW5rZXJwb3AtcmVhZGluZy5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy90aW5rZXJwb3AtcmVhZGluZy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3RpbmtlcnBvcC1zcGxhc2gucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL3RpbmtlcnBvcC1zcGxhc2gucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvdGlua2VycG9wLXNwbGFzaC5wbmcKcmVuYW1lIHRvIGRvY3Mvc2l0ZS9ob21lL2ltZy90aW5rZXJwb3Atc3BsYXNoLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWcvdGlua2VycG9wLmpwZyBiL2RvY3Mvc2l0ZS9ob21lL2ltZy90aW5rZXJwb3AuanBnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxNzkxMDIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL3NpdGUvaG9tZS9pbWcvdGlua2VycG9wLmpwZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvdGlua2VycG9wMy1zcGxhc2gucG5nIGIvZG9jcy9zaXRlL2hvbWUvaW1nL3RpbmtlcnBvcDMtc3BsYXNoLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3RpbmtlcnBvcDMtc3BsYXNoLnBuZwpyZW5hbWUgdG8gZG9jcy9zaXRlL2hvbWUvaW1nL3RpbmtlcnBvcDMtc3BsYXNoLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbmRleC5odG1sIGIvZG9jcy9zaXRlL2hvbWUvaW5kZXguaHRtbAppbmRleCAxZmM2NTBiLi5jMTdjNzI4IDEwMDY0NAotLS0gYS9kb2NzL3NpdGUvaG9tZS9pbmRleC5odG1sCisrKyBiL2RvY3Mvc2l0ZS9ob21lL2luZGV4Lmh0bWwKQEAgLTE5LDE5ICsxOSwxOSBAQAogICAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC02Ij4KICAgICAgICAgICAgIDxiPjxmb250IHNpemU9IjYiIGZhY2U9ImFtZXJpY2FuIHR5cGV3cml0ZXIiPkFwYWNoZSBUaW5rZXJQb3AmdHJhZGU7PC9mb250PjwvYj4KLSAgICAgICAgICAgIDxwPjxpbWcgc3JjPSJpbWFnZXMvdGlua2VycG9wLXNwbGFzaC5wbmciIHdpZHRoPSI0MjAiIGNsYXNzPSJpbWctcmVzcG9uc2l2ZSIgc3R5bGU9InBhZGRpbmc6MTBweDsiLz48L3A+CisgICAgICAgICAgICA8cD48aW1nIHNyYz0iaW1nL3RpbmtlcnBvcC1zcGxhc2gucG5nIiB3aWR0aD0iNDIwIiBjbGFzcz0iaW1nLXJlc3BvbnNpdmUiIHN0eWxlPSJwYWRkaW5nOjEwcHg7Ii8+PC9wPgogICAgICAgICAgICAgPHA+PGZvbnQgc2l6ZT0iMyI+QXBhY2hlIFRpbmtlclBvcCZ0cmFkZTsgaXMgYSBncmFwaCBjb21wdXRpbmcgZnJhbWV3b3JrIGZvciBib3RoIGdyYXBoIGRhdGFiYXNlcyAoT0xUUCkgYW5kIGdyYXBoIGFuYWx5dGljIHN5c3RlbXMgKE9MQVApLjwvZm9udD48L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC02Ij4KICAgICAgICAgICAgIDxici8+CiAgICAgICAgICAgICA8cD4KLSAgICAgICAgICAgICAgIDxiPjxmb250IHNpemU9IjQiPlRpbmtlclBvcDwvZm9udD4gPGZvbnQgc2l6ZT0iNCI+My4zLjQ8L2ZvbnQ+PC9iPiAoPGZvbnQgc2l6ZT0iMiI+UmVsZWFzZWQ6IDE1LU9jdC0yMDE4PC9mb250PikKICAgICAgICAgICAgIDwvcD4KKyAgICAgICAgICAgIDxiPjxmb250IHNpemU9IjQiPlRpbmtlclBvcDwvZm9udD4gPGZvbnQgc2l6ZT0iNCI+My40LjI8L2ZvbnQ+PC9iPiAoPGZvbnQgc2l6ZT0iMiI+UmVsZWFzZWQ6IDI4LU1heS0yMDE5PC9mb250PikKICAgICAgICAgICAgIDxwPjxiPkRvd25sb2FkczwvYj48L3A+CiAgICAgICAgICAgICA8cD4KLSAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvZHluL2Nsb3Nlci5sdWEvdGlua2VycG9wLzMuMy40L2FwYWNoZS10aW5rZXJwb3AtZ3JlbWxpbi1jb25zb2xlLTMuMy40LWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gQ29uc29sZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+Ci0gICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5hcGFjaGUub3JnL2R5bi9jbG9zZXIubHVhL3RpbmtlcnBvcC8zLjMuNC9hcGFjaGUtdGlua2VycG9wLWdyZW1saW4tc2VydmVyLTMuMy40LWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gU2VydmVyIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KLSAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvZHluL2Nsb3Nlci5sdWEvdGlua2VycG9wLzMuMy40L2FwYWNoZS10aW5rZXJwb3AtMy4zLjQtc3JjLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+U291cmNlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KKyAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvZHluL2Nsb3Nlci5sdWEvdGlua2VycG9wLzMuNC4yL2FwYWNoZS10aW5rZXJwb3AtZ3JlbWxpbi1jb25zb2xlLTMuNC4yLWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gQ29uc29sZSA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1kb3dubG9hZC1hbHQiPjwvc3Bhbj48L2E+CisgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5hcGFjaGUub3JnL2R5bi9jbG9zZXIubHVhL3RpbmtlcnBvcC8zLjQuMi9hcGFjaGUtdGlua2VycG9wLWdyZW1saW4tc2VydmVyLTMuNC4yLWJpbi56aXAiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdyZW1saW4gU2VydmVyIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KKyAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvZHluL2Nsb3Nlci5sdWEvdGlua2VycG9wLzMuNC4yL2FwYWNoZS10aW5rZXJwb3AtMy40LjItc3JjLnppcCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+U291cmNlIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWRvd25sb2FkLWFsdCI+PC9zcGFuPjwvYT4KICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtNiI+CkBAIC00MSwyNyArNDEsMjcgQEAKICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy9jdXJyZW50L3JlZmVyZW5jZSI+UmVmZXJlbmNlIERvY3VtZW50YXRpb248L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDwvdWw+Ci0gICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy4zLjQvdXBncmFkZS8jX3RpbmtlcnBvcF8zXzNfNCI+VXBncmFkZSBJbmZvcm1hdGlvbjwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuNC4yL3VwZ3JhZGUvI190aW5rZXJwb3BfM180XzIiPlVwZ3JhZGUgSW5mb3JtYXRpb248L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaT5UaW5rZXJQb3AgSmF2YWRvYyAtIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy9jdXJyZW50L2NvcmUvIj5jb3JlPC9hPiAvIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy9jdXJyZW50L2Z1bGwvIj5mdWxsPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtNiI+CiAgICAgICAgICAgICAgICAgICA8YnIvPgotICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvY3VycmVudC90dXRvcmlhbHMvZ2V0dGluZy1zdGFydGVkIj4KLSAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJpbWFnZXMvZ3JlbWxpbi1neW0tbWluaS5wbmciIHdpZHRoPSIxNTAiIGNsYXNzPSJpbWctcmVzcG9uc2l2ZSIgYWxpZ249ImxlZnQiLz4KKyAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9rZWx2aW5sYXdyZW5jZS5uZXQvYm9vay9HcmVtbGluLUdyYXBoLUd1aWRlLmh0bWwiPgorICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImltZy9wcmFjdGljYWwtZ3JlbWxpbi10aXRsZWQucG5nIiB3aWR0aD0iMTUwIiBjbGFzcz0iaW1nLXJlc3BvbnNpdmUiIGFsaWduPSJsZWZ0Ii8+CiAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC01Ij4KICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhvdmVyZWZmZWN0Ij4KLSAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaW1hZ2VzL2NpdHlzY2FwZS1idXR0b24ucG5nIiBzdHlsZT0id2lkdGg6MjAwcHg7IiBjbGFzcz0iaW1nLXJlc3BvbnNpdmUiIC8+PC9hPgorICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJpbWcvY2l0eXNjYXBlLWJ1dHRvbi5wbmciIHN0eWxlPSJ3aWR0aDoyMDBweDsiIGNsYXNzPSJpbWctcmVzcG9uc2l2ZSIgLz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ib3ZlcmxheSI+PGEgY2xhc3M9ImluZm8iIGhyZWY9ImdyZW1saW4uaHRtbCI+VW5kZXJzdGFuZCBHcmVtbGluPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC01Ij4KICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhvdmVyZWZmZWN0Ij4KLSAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaW1hZ2VzL21lZXRpbmctcm9vbS1idXR0b24ucG5nIiBzdHlsZT0id2lkdGg6MjAwcHg7IiBjbGFzcz0iaW1nLXJlc3BvbnNpdmUiIC8+PC9hPgorICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJpbWcvbWVldGluZy1yb29tLWJ1dHRvbi5wbmciIHN0eWxlPSJ3aWR0aDoyMDBweDsiIGNsYXNzPSJpbWctcmVzcG9uc2l2ZSIgLz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ib3ZlcmxheSI+PGEgY2xhc3M9ImluZm8iIGhyZWY9InByb3ZpZGVycy5odG1sIj5CZWNvbWUgVGlua2VyUG9wLUVuYWJsZWQ8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgpAQCAtMTQxLDcgKzE0MSw3IEBACiAgICA8IS0tIC8uY2Fyb3VzZWwgLS0+CiAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICAgPGgzPlRoZSBCZW5lZml0cyBvZiBHcmFwaCBDb21wdXRpbmc8L2gzPgotICAgICAgPHA+PGltZyBzcmM9ImltYWdlcy9ncmFwaC1nbG9iZS5wbmciIHN0eWxlPSJmbG9hdDpsZWZ0O3dpZHRoOjE1JTtwYWRkaW5nOjEwcHg7Ij4gQSA8c3Ryb25nPmdyYXBoPC9zdHJvbmc+IGlzIGEgc3RydWN0dXJlIGNvbXBvc2VkIG9mIDxzdHJvbmc+dmVydGljZXM8L3N0cm9uZz4gYW5kIDxzdHJvbmc+ZWRnZXM8L3N0cm9uZz4uCisgICAgICA8cD48aW1nIHNyYz0iaW1nL2dyYXBoLWdsb2JlLnBuZyIgc3R5bGU9ImZsb2F0OmxlZnQ7d2lkdGg6MTUlO3BhZGRpbmc6MTBweDsiPiBBIDxzdHJvbmc+Z3JhcGg8L3N0cm9uZz4gaXMgYSBzdHJ1Y3R1cmUgY29tcG9zZWQgb2YgPHN0cm9uZz52ZXJ0aWNlczwvc3Ryb25nPiBhbmQgPHN0cm9uZz5lZGdlczwvc3Ryb25nPi4KICAgICAgICAgIEJvdGggdmVydGljZXMgYW5kIGVkZ2VzIGNhbiBoYXZlIGFuIGFyYml0cmFyeSBudW1iZXIgb2Yga2V5L3ZhbHVlLXBhaXJzIGNhbGxlZCA8c3Ryb25nPnByb3BlcnRpZXM8L3N0cm9uZz4uCiAgICAgICAgICBWZXJ0aWNlcyBkZW5vdGUgZGlzY3JldGUgb2JqZWN0cyBzdWNoIGFzIGEgcGVyc29uLCBhIHBsYWNlLCBvciBhbiBldmVudC4gRWRnZXMgZGVub3RlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB2ZXJ0aWNlcy4gRm9yIGluc3RhbmNlLCBhIHBlcnNvbiBtYXkga25vdwogICAgICAgICAgYW5vdGhlciBwZXJzb24sIGhhdmUgYmVlbiBpbnZvbHZlZCBpbiBhbiBldmVudCwgYW5kL29yIHdhcyByZWNlbnRseSBhdCBhIHBhcnRpY3VsYXIgcGxhY2UuIFByb3BlcnRpZXMgZXhwcmVzcyBub24tcmVsYXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUKQEAgLTE0OSw3ICsxNDksNyBAQAogICAgICAgICAgZ3JhcGggaXMga25vd24gYXMgYSA8c3Ryb25nPnByb3BlcnR5IGdyYXBoPC9zdHJvbmc+IGFuZCBpdCBpcyB0aGUgZm91bmRhdGlvbmFsIGRhdGEgc3RydWN0dXJlIG9mIEFwYWNoZSBUaW5rZXJQb3AuCiAgICAgICA8L3A+CiAgICAgICA8YnIvPgotICAgICAgPHA+PGltZyBzcmM9ImltYWdlcy9ncmFwaC12cy10YWJsZS5wbmciIHN0eWxlPSJmbG9hdDpyaWdodDt3aWR0aDoyMiU7cGFkZGluZzoxMHB4OyI+SWYgYSB1c2VyJ3MgZG9tYWluIGlzIGNvbXBvc2VkIG9mIGEgaGV0ZXJvZ2Vub3VzIHNldCBvZiBvYmplY3RzICh2ZXJ0aWNlcykgdGhhdCBjYW4gYmUgcmVsYXRlZCB0byBvbmUgYW5vdGhlciBpbiBhIG11bHRpdHVkZSBvZiB3YXlzIChlZGdlcyksCisgICAgICA8cD48aW1nIHNyYz0iaW1nL2dyYXBoLXZzLXRhYmxlLnBuZyIgc3R5bGU9ImZsb2F0OnJpZ2h0O3dpZHRoOjIyJTtwYWRkaW5nOjEwcHg7Ij5JZiBhIHVzZXIncyBkb21haW4gaXMgY29tcG9zZWQgb2YgYSBoZXRlcm9nZW5vdXMgc2V0IG9mIG9iamVjdHMgKHZlcnRpY2VzKSB0aGF0IGNhbiBiZSByZWxhdGVkIHRvIG9uZSBhbm90aGVyIGluIGEgbXVsdGl0dWRlIG9mIHdheXMgKGVkZ2VzKSwKICAgICAgICAgIHRoZW4gYSBncmFwaCBtYXkgYmUgdGhlIHJpZ2h0IHJlcHJlc2VudGF0aW9uIHRvIHVzZS4gSW4gYSBncmFwaCwgZWFjaCB2ZXJ0ZXggaXMgc2VlbiBhcyBhbiBhdG9taWMgZW50aXR5IChub3Qgc2ltcGx5IGEgInJvdyBpbiBhIHRhYmxlIikgdGhhdAogICAgICAgICAgY2FuIGJlIGxpbmtlZCB0byBhbnkgb3RoZXIgdmVydGV4IG9yIGhhdmUgcHJvcGVydGllcyBhZGRlZCBvciByZW1vdmVkIGF0IHdpbGwuIFRoaXMgZW1wb3dlcnMgdGhlIGRhdGEgbW9kZWxlciB0byB0aGluayBpbiB0ZXJtcyBvZiBhY3RvcnMgd2l0aGluCiAgICAgICAgICBhIHdvcmxkIG9mIGNvbXBsZXggcmVsYXRpb25zIGFzIG9wcG9zZWQgdG8sIGluIHJlbGF0aW9uYWwgZGF0YWJhc2VzLCBzdGF0aWNhbGx5LXR5cGVkIHRhYmxlcyBqb2luZWQgaW4gYWdncmVnYXRlLiBPbmNlIGEgZG9tYWluIGlzIG1vZGVsZWQsIHRoYXQKQEAgLTE1OSw3ICsxNTksNyBAQAogICAgICAgICAgZWZmZWN0aXZlbHkgbGV2ZXJhZ2UgdGhhdCBzdHJ1Y3R1cmUuCiAgICAgICA8L3A+CiAgICAgICA8YnIvPgotICAgICAgPHA+PGEgaHJlZj0iIyI+PGltZyBzcmM9ImltYWdlcy9hcGFjaGUtdGlua2VycG9wLWxvZ28ucG5nIiBzdHlsZT0iZmxvYXQ6bGVmdDt3aWR0aDoyMiU7cGFkZGluZzoxMHB4OyIvPjwvYT5BcGFjaGUgVGlua2VyUG9wJnRyYWRlOyBpcyBhbiBvcGVuIHNvdXJjZSwgdmVuZG9yLWFnbm9zdGljLCBncmFwaCBjb21wdXRpbmcgZnJhbWV3b3JrIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBjb21tZXJjaWFsIGZyaWVuZGx5IDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCI+QXBhY2hlMiBsaWNlbnNlPC9hPi4KKyAgICAgIDxwPjxhIGhyZWY9IiMiPjxpbWcgc3JjPSJpbWcvYXBhY2hlLXRpbmtlcnBvcC1sb2dvLnBuZyIgc3R5bGU9ImZsb2F0OmxlZnQ7d2lkdGg6MjIlO3BhZGRpbmc6MTBweDsiLz48L2E+QXBhY2hlIFRpbmtlclBvcCZ0cmFkZTsgaXMgYW4gb3BlbiBzb3VyY2UsIHZlbmRvci1hZ25vc3RpYywgZ3JhcGggY29tcHV0aW5nIGZyYW1ld29yayBkaXN0cmlidXRlZCB1bmRlciB0aGUgY29tbWVyY2lhbCBmcmllbmRseSA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAiPkFwYWNoZTIgbGljZW5zZTwvYT4uCiAgICAgICAgICBXaGVuIGEgZGF0YSBzeXN0ZW0gaXMgPGEgaHJlZj0icHJvdmlkZXJzLmh0bWwiPlRpbmtlclBvcC1lbmFibGVkPC9hPiwgaXRzIHVzZXJzIGFyZSBhYmxlIHRvIG1vZGVsIHRoZWlyIGRvbWFpbiBhcyBhIGdyYXBoIGFuZCBhbmFseXplIHRoYXQgZ3JhcGggdXNpbmcgdGhlIDxhIGhyZWY9ImdyZW1saW4uaHRtbCI+R3JlbWxpbiBncmFwaCB0cmF2ZXJzYWwgbGFuZ3VhZ2U8L2E+LgogICAgICAgICAgRnVydGhlcm1vcmUsIGFsbCBUaW5rZXJQb3AtZW5hYmxlZCBzeXN0ZW1zIGludGVncmF0ZSB3aXRoIG9uZSBhbm90aGVyIGFsbG93aW5nIHRoZW0gdG8gZWFzaWx5IGV4cGFuZCB0aGVpciBvZmZlcmluZ3MgYXMgd2VsbCBhcyBhbGxvd2luZyB1c2VycyB0byBjaG9vc2UgdGhlIGFwcHJvcHJpYXRlIGdyYXBoCiAgICAgICAgICB0ZWNobm9sb2d5IGZvciB0aGVpciBhcHBsaWNhdGlvbi4gU29tZXRpbWVzIGFuIGFwcGxpY2F0aW9uIGlzIGJlc3Qgc2VydmVkIGJ5IGFuIGluLW1lbW9yeSwgdHJhbnNhY3Rpb25hbCBncmFwaCBkYXRhYmFzZS4gU29tZXRpbWVzIGEgbXVsdGktbWFjaGluZSBkaXN0cmlidXRlZCBncmFwaCBkYXRhYmFzZSB3aWxsIGRvIHRoZSBqb2IuCkBAIC0yMDIsNyArMjAyLDcgQEAKICAgICAgICAgICAgICAgIDxwPlRvIGJ1aWxkIFRpbmtlclBvcCBmcm9tIHNvdXJjZSwgcGxlYXNlIHJldmlldyB0aGUgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvY3VycmVudC9kZXYvZGV2ZWxvcGVyLyNidWlsZGluZy10ZXN0aW5nIj5kZXZlbG9wZXIgZG9jdW1lbnRhdGlvbjwvYT4uCiAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC14cy00Ij4KLSAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL2N1cnJlbnQvZGV2L2RldmVsb3Blci8iPjxpbWcgc3JjPSJpbWFnZXMvZ3JlbWxpbi1hcGFjaGUucG5nIiB3aWR0aD0iMjUwIiBjbGFzcz0iaW1nLXJlc3BvbnNpdmUiIC8+PC9hPgorICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvY3VycmVudC9kZXYvZGV2ZWxvcGVyLyI+PGltZyBzcmM9ImltZy9ncmVtbGluLWFwYWNoZS5wbmciIHdpZHRoPSIyNTAiIGNsYXNzPSJpbWctcmVzcG9uc2l2ZSIgLz48L2E+CiAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGgzPkNvbW11bml0eSBDb250cmlidXRpb25zPC9oMz4KQEAgLTIxNSwxNiArMjE1LDE4IEBACiAgICAgICAgICA8aDQgaWQ9ImdyYXBoLXN5c3RlbXMiPkdyYXBoIFN5c3RlbXM8L2g0PgogICAgICAgICAgPHNtYWxsPls8YSBocmVmPSJwcm92aWRlcnMuaHRtbCNkYXRhLXN5c3RlbS1wcm92aWRlcnMiPmxlYXJuIG1vcmU8L2E+XTwvc21hbGw+CiAgICAgICAgICA8dWw+CisgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9jbi5hbGl5dW4uY29tL3Byb2R1Y3QvZ2RiIj5BbGliYWJhIEdyYXBoIERhdGFiYXNlPC9hPiAtIEEgcmVhbC10aW1lLCByZWxpYWJsZSwgY2xvdWQtbmF0aXZlIGdyYXBoIGRhdGFiYXNlIHNlcnZpY2UgdGhhdCBzdXBwb3J0cyBwcm9wZXJ0eSBncmFwaCBtb2RlbC48L2xpPgogICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vYXdzLmFtYXpvbi5jb20vbmVwdHVuZS8iPkFtYXpvbiBOZXB0dW5lPC9hPiAtIEZ1bGx5LW1hbmFnZWQgZ3JhcGggZGF0YWJhc2Ugc2VydmljZS48L2xpPgorICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9BcmFuZ29EQi1Db21tdW5pdHkvYXJhbmdvZGItdGlua2VycG9wLXByb3ZpZGVyIj5BcmFuZ29EQjwvYT4gLSBPTFRQIFByb3ZpZGVyIGZvciBBcmFuZ29EQi48L2xpPgogICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9sYW1iZGF6ZW4vYml0c3kvd2lraSI+Qml0c3k8L2E+IC0gQSBzbWFsbCwgZmFzdCwgZW1iZWRkYWJsZSwgZHVyYWJsZSBpbi1tZW1vcnkgZ3JhcGggZGF0YWJhc2UuPC9saT4KICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYmxhemVncmFwaC90aW5rZXJwb3AzIj5CbGF6ZWdyYXBoPC9hPiAtIFJERiBncmFwaCBkYXRhYmFzZSB3aXRoIE9MVFAgc3VwcG9ydC48L2xpPgogICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL2F6dXJlL2Nvc21vcy1kYi9ncmFwaC1pbnRyb2R1Y3Rpb24iPkNvc21vc0RCPC9hPiAtIE1pY3Jvc29mdCdzIGRpc3RyaWJ1dGVkIE9MVFAgZ3JhcGggZGF0YWJhc2UuPC9saT4KICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vTWFydGluSGFldXNsZXIvY2hyb25vcy90cmVlL21hc3Rlci9vcmcuY2hyb25vcy5jaHJvbm9ncmFwaCI+Q2hyb25vR3JhcGg8L2E+IC0gQSB2ZXJzaW9uZWQgZ3JhcGggZGF0YWJhc2UuPC9saT4KICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vd3d3LmRhdGFzdGF4LmNvbS9wcm9kdWN0cy9kYXRhc3RheC1lbnRlcnByaXNlLWdyYXBoIj5EU0VHcmFwaDwvYT4gLSBEYXRhU3RheCBncmFwaCBkYXRhYmFzZSB3aXRoIE9MVFAgYW5kIE9MQVAgc3VwcG9ydC48L2xpPgogICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ3Jha24uYWkvIj5HUkFLTi5BSTwvYT4gLSBEaXN0cmlidXRlZCBPTFRQL09MQVAga25vd2xlZGdlIGdyYXBoIHN5c3RlbS48L2xpPgotICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL2N1cnJlbnQvcmVmZXJlbmNlLyNnaXJhcGhncmFwaGNvbXB1dGVyIj5IYWRvb3AgKEdpcmFwaCk8L2E+IC0gT0xBUCBncmFwaCBwcm9jZXNzb3IgdXNpbmcgR2lyYXBoLjwvbGk+CiAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvY3VycmVudC9yZWZlcmVuY2UvI3NwYXJrZ3JhcGhjb21wdXRlciI+SGFkb29wIChTcGFyayk8L2E+IC0gT0xBUCBncmFwaCBwcm9jZXNzb3IgdXNpbmcgU3BhcmsuPC9saT4KICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vcmF5b2tvdGEvaGdyYXBoZGIiPkhHcmFwaERCPC9hPiAtIE9MVFAgZ3JhcGggZGF0YWJhc2UgcnVubmluZyBvbiBBcGFjaGUgSEJhc2UuPC9saT4KKyAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL3d3dy5odWF3ZWljbG91ZC5jb20vZW4tdXMvcHJvZHVjdC9nZXMuaHRtbCI+SHVhd2VpIEdyYXBoIEVuZ2luZSBTZXJ2aWNlPC9hPiAtIEZ1bGx5LW1hbmFnZWQsIGRpc3RyaWJ1dGVkLCBhdC1zY2FsZSBncmFwaCBxdWVyeSBhbmQgYW5hbHlzaXMgc2VydmljZSB0aGF0IHByb3ZpZGVzIGEgdmlzdWFsaXplZCBpbnRlcmFjdGl2ZSBhbmFseXRpY3MgcGxhdGZvcm0uPC9saT4KICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2NvbnNvbGUubmcuYmx1ZW1peC5uZXQvY2F0YWxvZy9zZXJ2aWNlcy9pYm0tZ3JhcGgvIj5JQk0gR3JhcGg8L2E+IC0gT0xUUCBncmFwaCBkYXRhYmFzZSBhcyBhIHNlcnZpY2UuPC9saT4KICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vamFudXNncmFwaC5vcmcvIj5KYW51c0dyYXBoPC9hPiAtIERpc3RyaWJ1dGVkIE9MVFAgYW5kIE9MQVAgZ3JhcGggZGF0YWJhc2Ugd2l0aCBCZXJrZWxleURCLCBBcGFjaGUgQ2Fzc2FuZHJhIGFuZCBBcGFjaGUgSEJhc2Ugc3VwcG9ydC48L2xpPgogICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hd3NsYWJzL2R5bmFtb2RiLWphbnVzZ3JhcGgtc3RvcmFnZS1iYWNrZW5kLy8iPkphbnVzR3JhcGggKEFtYXpvbik8L2E+IC0gVGhlIEFtYXpvbiBEeW5hbW9EQiBTdG9yYWdlIEJhY2tlbmQgZm9yIEphbnVzR3JhcGguPC9saT4KQEAgLTI0NCw5ICsyNDYsMTEgQEAKICAgICAgICAgIDxoNCBpZD0ibGFuZ3VhZ2UtdmFyaWFudHMtY29tcGlsZXJzIj5RdWVyeSBMYW5ndWFnZXM8L2g0PgogICAgICAgICAgPHNtYWxsPls8YSBocmVmPSJwcm92aWRlcnMuaHRtbCNxdWVyeS1sYW5ndWFnZS1wcm92aWRlcnMiPmxlYXJuIG1vcmU8L2E+XTwvc21hbGw+CiAgICAgICAgICA8dWw+CisgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL29wZW5jeXBoZXIvY3lwaGVyLWZvci1ncmVtbGluIj5jeXBoZXItZm9yLWdyZW1saW48L2E+IC0gQSBDeXBoZXIgdG8gR3JlbWxpbiB0cmF2ZXJzYWwgdHJhbnNwaWxlci48L2xpPgogICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9zeW5jbGV1cy5jb20vRmVybWEvIj5GZXJtYTwvYT4gKGphdmEvZHNsKSAtIEFuIE9STSAvIE9HTSBmb3IgQXBhY2hlIFRpbmtlclBvcC48L2xpPgogICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9kYXZlYnNob3cvZ29ibGluIj5Hb2JsaW48L2E+IChweXRob24vZHNsKSAtIEdvYmxpbiBPR00gZm9yIHRoZSBUaW5rZXJQb3AgMyBHcmVtbGluIFNlcnZlci48L2xpPgogICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL2N1cnJlbnQvcmVmZXJlbmNlLyNncmVtbGluLURvdE5ldCI+R3JlbWxpbi5OZXQ8L2E+ICguTkVUIC0gQyMvdmFyaWFudCkgLSBHcmVtbGluIGhvc3RlZCBpbiBDIyBmb3IgdXNlIHdpdGggYW55IC5ORVQtYmFzZWQgVk0uPC9saT4KKyAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy9jdXJyZW50L3JlZmVyZW5jZS8jZ3JlbWxpbi1qYXZhc2NyaXB0Ij5ncmVtbGluLWphdmFzY3JpcHQ8L2E+IChqcykgLSBHcmVtbGluIGhvc3RlZCBpbiBKYXZhU2NyaXB0IGZvciB1c2Ugd2l0aCBOb2RlLmpzLjwvbGk+CiAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2dyZW1saW4tb3JtL2dyZW1saW4tb3JtIj5ncmVtbGluLW9ybTwvYT4gKGphdmFzY3JpcHQpIEdyZW1saW4gT1JNIGZvciBOb2RlLmpzLjwvbGk+CiAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvY3VycmVudC9yZWZlcmVuY2UvI2dyZW1saW4tcHl0aG9uIj5ncmVtbGluLXB5dGhvbjwvYT4gKHB5dGhvbi92YXJpYW50KSAtIEdyZW1saW4gaG9zdGVkIGluIFB5dGhvbiBmb3IgdXNlIHdpdGggYW55IFB5dGhvbi1iYXNlZCBWTS48L2xpPgogICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9lbWVocmtheS9ncmVtbGlucHkiPmdyZW1saW4tcHk8L2E+IChweXRob24vdmFyaWFudCkgLSBXcml0ZSBwdXJlIFB5dGhvbiBHcmVtbGluIHRoYXQgY2FuIGJlIHNlbnQgdG8gR3JlbWxpbiBTZXJ2ZXIuPC9saT4KQEAgLTI1NCw5ICsyNTgsMTEgQEAKICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20va2FydGhpY2tzL2dyZW1saW4tb2dtIj5ncmVtbGluLW9iamVjdHM8L2E+IChqYXZhL2RzbCkgLSBBbiBPYmplY3QgR3JhcGggTWFwcGluZyBMaWJyYXJ5IEZvciBHcmVtbGluLjwvbGk+CiAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2pibXVzc28vZ3JlbWxpbi10ZW1wbGF0ZS1zdHJpbmciPmdyZW1saW4tdGVtcGxhdGUtc3RyaW5nPC9hPiAoanMvdmFyaWFudCkgLSBBIEdyZW1saW4gbGFuZ3VhZ2UgYnVpbGRlci48L2xpPgogICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9kYXZlYnNob3cvaXB5dGhvbi1ncmVtbGluIj5pcHl0aG9uLWdyZW1saW48L2E+IChweXRob24vdmFyaWFudCkgLSBHcmVtbGluIGluIElQeXRob24gYW5kIEp1cHl0ZXIuPC9saT4KKyAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vcG0tZGV2L2tvdGxpbi1ncmVtbGluLW9nbSI+a290bGluLWdyZW1saW4tb2dtPC9hPiAoa290bGluL2RzbCkgLSBBbiBPYmplY3QgR3JhcGggTWFwcGluZyBMaWJyYXJ5IGZvciBLb3RsaW4gYW5kIEdyZW1saW4uPC9saT4KICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vb2dyZS5jbG9qdXJld2Vya3oub3JnLyI+b2dyZTwvYT4gKGNsb2p1cmUvdmFyaWFudCkgLSBBIENsb2p1cmUgbGFuZ3VhZ2Ugd3JhcHBlciBmb3IgVGlua2VyUG9wMy48L2xpPgogICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9iYXlvZm1hbnkuZ2l0aHViLmlvLyI+UGVhcG9kPC9hPiAoamF2YS9kc2wpIC0gQW4gb2JqZWN0LWdyYXBoLXdyYXBwZXIuPC9saT4KLSAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vTElUTVVTLUJlbmNobWFyay1TdWl0ZS9zcGFycWwtdG8tZ3JlbWxpbiI+c3BhcnFsLWdyZW1saW48L2E+IChzcGFycWwvZGlzdGluY3QpIC0gQSBTUEFSUUwgdG8gR3JlbWxpbiB0cmF2ZXJzYWwgY29tcGlsZXIuPC9saT4KKyAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy9jdXJyZW50L3JlZmVyZW5jZS8jc3BhcnFsLWdyZW1saW4iPnNwYXJxbC1ncmVtbGluPC9hPiAoc3BhcnFsL2Rpc3RpbmN0KSAtIEEgU1BBUlFMIHRvIEdyZW1saW4gdHJhdmVyc2FsIGNvbXBpbGVyLjwvbGk+CisgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9zcHJpbmctZGF0YS1ncmVtbGluIj5zcHJpbmctZGF0YS1ncmVtbGluPC9hPiAoamF2YS9kc2wpIC0gU3ByaW5nIERhdGEgc3VwcG9ydCBmb3IgVGlua2VyUG9wLWVuYWJsZWQgZ3JhcGggc3lzdGVtcy48L2xpPgogICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90d2lsbWVzL3NxbC1ncmVtbGluIj5zcWwtZ3JlbWxpbjwvYT4gKHNxbC9kaXN0aW5jdCkgLSBBbiBTUUwgdG8gR3JlbWxpbiB0cmF2ZXJzYWwgY29tcGlsZXIuPC9saT4KICAgICAgICAgIDwvdWw+CiAgICAgICAgICA8YSBuYW1lPSJsYW5ndWFnZS1kcml2ZXJzIj48L2E+CkBAIC0yNjUsMTIgKzI3MSwxMyBAQAogICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9kYXZlYnNob3cvZ3JlbWxpbmNsaWVudCI+Z3JlbWxpbmNsaWVudDwvYT4gKHB5dGhvbikgLSBBbiBhc3luY2hyb25vdXMgUHl0aG9uIDIvMyBjbGllbnQgZm9yIEdyZW1saW4gU2VydmVyIHRoYXQgYWxsb3dzIGZvciBmbGV4aWJsZSBjb3JvdXRpbmUgc3ludGF4IC0gVHJvbGxpdXMsIFRvcm5hZG8sIEFzeW5jaW8uPC9saT4KICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbWFyY2Vsb2NmL2dyZW1saW5fY2xpZW50Ij5ncmVtbGluX2NsaWVudDwvYT4gKHJ1YnkpIC0gQSBHcmVtbGluIFNlcnZlciBkcml2ZXIgZm9yIFJ1YnkuPC9saT4KICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy9jdXJyZW50L3JlZmVyZW5jZS8jY29ubmVjdGluZy12aWEtamF2YSI+Z3JlbWxpbi1kcml2ZXI8L2E+IChqYXZhKSAtIEEgR3JlbWxpbiBTZXJ2ZXIgZHJpdmVyIGZvciBKYXZhLjwvbGk+Ci0gICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2pibXVzc28vZ3JlbWxpbi1qYXZhc2NyaXB0Ij5ncmVtbGluLWphdmFzY3JpcHQ8L2E+IChqcykgLSBBIEdyZW1saW4gU2VydmVyIGRyaXZlciBmb3IgSmF2YVNjcmlwdC48L2xpPgogICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9xYXNhdXIvZ3JlbWdvIj5ncmVtZ288L2E+IChnbykgLSBBIEdyZW1saW4gU2VydmVyIGRyaXZlciBmb3IgR28uPC9saT4KKyAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vUmV2bWFrZXIvZ3JlbWxleCI+Z3JlbWxleDwvYT4gKGVsaXhpcikgLSBBIEdyZW1saW4gU2VydmVyIGRyaXZlciBmb3IgRWxpeGlyLjwvbGk+CiAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvY3VycmVudC9yZWZlcmVuY2UvI2dyZW1saW4tRG90TmV0Ij5HcmVtbGluLk5ldDwvYT4gKC5ORVQgLSBDIykgLSBHcmVtbGluIFNlcnZlciBkcml2ZXIgZm9yIC5ORVQuPC9saT4KICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vUG9tbWVWZXJ0ZS9ncmVtbGluLXBocCI+Z3JlbWxpbi1waHA8L2E+IChwaHApIC0gQSBHcmVtbGluIFNlcnZlciBkcml2ZXIgZm9yIFBIUC48L2xpPgogICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL2N1cnJlbnQvcmVmZXJlbmNlLyNncmVtbGluLXB5dGhvbiI+Z3JlbWxpbi1weXRob248L2E+IChweXRob24pIC0gR3JlbWxpbiBTZXJ2ZXIgZHJpdmVyIGZvciBQeXRob24uPC9saT4KICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vZ3JlbWxpbnJlc3RjbGllbnQucmVhZHRoZWRvY3Mub3JnL2VuL2xhdGVzdC8iPmdyZW1saW5yZXN0Y2xpZW50PC9hPiAocHl0aG9uKSAtIFB5dGhvbiAyLzMgbGlicmFyeSB0aGF0IHVzZXMgSFRUUCB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBHcmVtbGluIFNlcnZlciBvdmVyIFJFU1QuPC9saT4KKyAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vRXhSYW0vRXhSYW0uR3JlbWxpbnEiPkdyZW1saW5xPC9hPiAoLk5FVCkgLSBBIHN0cm9uZ2x5IHR5cGVkIHNlcnZlciBkcml2ZXIuPC9saT4KICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vd2luZGowMDcvcHl0aG9uLWdyZW1saW4tcmVzdCI+cHl0aG9uLWdyZW1saW4tcmVzdDwvYT4gKHB5dGhvbikgLSBBIFJFU1QtYmFzZWQgY2xpZW50IGZvciBHcmVtbGluIFNlcnZlci48L2xpPgogICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jb3JleWF1Z2VyL3JlYWN0aXZlLWdyZW1saW4iPnJlYWN0aXZlLWdyZW1saW48L2E+IChzY2FsYSkgLSBBbiBBa2thIEhUVFAgV2Vic29ja2V0IENvbm5lY3Rvci48L2xpPgogICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS92aWFncmFwaHMvc2NhbGFqcy1ncmVtbGluLWNsaWVudCI+c2NhbGFqcy1ncmVtbGluLWNsaWVudDwvYT4gKHNjYWxhKSAtIEEgR3JlbWxpbi1TZXJ2ZXIgY2xpZW50IHdpdGggYWQtaG9jIGV4dGVuc2libGUsIHJlYWN0aXZlLCB0eXBlY2xhc3MgYmFzZWQgQVBJLjwvbGk+CkBAIC0yNzksMTkgKzI4NiwzMCBAQAogICAgICAgICAgPGEgbmFtZT0icG93ZXJlZGJ5Ij48L2E+CiAgICAgICAgICA8aDQgaWQ9InBvd2VyZWRieSI+UG93ZXJlZCBCeTwvaDQ+CiAgICAgICAgICA8dWw+CisgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cuZXhha2F0LmlvLyI+ZXhha2F0LmlvPC9hPiAtIFN0YXRpYyBhbmFseXNpcyBlbmdpbmUgZm9yIFBIUCwgcG93ZXJlZCBieSBHcmVtbGluLjwvbGk+CiAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9icmljYXVkLmdpdGh1Yi5pby9ncmFwaGV4cC9ncmFwaGV4cC5odG1sIj5HcmFwaGV4cDwvYT4gLSBJbnRlcmFjdGl2ZSB2aXN1YWxpemF0aW9uIG9mIHRoZSBHcmVtbGluIGdyYXBoIGRhdGFiYXNlIHdpdGggRDMuanMuPC9saT4KKyAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYmVjaGJkL2dyZW1saW4taWRlIj5ncmVtbGluLWlkZTwvYT4gLSBBbiBJREUgZm9yIEFwYWNoZSBUaW5rZXJQb3AtZW5hYmxlZCBkYXRhYmFzZXMgdXNpbmcgUmVhY3QgYW5kIEVsZWN0cm9uLjwvbGk+CisgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL2NhbWJyaWRnZS1pbnRlbGxpZ2VuY2UuY29tL2tleWxpbmVzLyI+S2V5TGluZXM8L2E+IC0gQSBKYXZhU2NyaXB0IFNESyBmb3IgYnVpbGRpbmcgcG93ZXJmdWwsIGN1c3RvbSBhbmQgc2NhbGFibGUgZ3JhcGggdmlzdWFsaXphdGlvbiBhcHBsaWNhdGlvbnMuPC9saT4KKyAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbWVsdHdhdGVyL2p1Z3JpIj5KVUdSSTwvYT4gLSBBIEp1cHl0ZXIgR3JlbWxpbiBpbnRlcmZhY2UuPC9saT4KKyAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vbGlua3VyaW8udXMvIj5MaW5rdXJpb3VzPC9hPiAtIEEgYnJvd3Nlci1iYXNlZCBncmFwaCB2aXN1YWxpemF0aW9uIHNvZnR3YXJlIHRvIHNlYXJjaCwgZXhwbG9yZSBhbmQgdmlzdWFsaXplIGNvbm5lY3RlZCBkYXRhLjwvbGk+CiAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5waXRuZXlib3dlcy5jb20vdXMvY3VzdG9tZXItaW5mb3JtYXRpb24tbWFuYWdlbWVudC9kYXRhLWludGVncmF0aW9uLW1hbmFnZW1lbnQvc3BlY3RydW0tZGF0YS1odWItbW9kdWxlLmh0bWwiPlBpdG5leSBCb3dlcyBTcGVjdHJ1bSBEYXRhIEh1YiBNb2R1bGU8L2E+IC0gVXNlcyBHcmVtbGluIE9MVFAgdG8gcXVlcnkgTmVvNGotcG93ZXJlZCBtYXN0ZXIgZGF0YSBtYW5hZ2VtZW50IGJhc2VkIGdyYXBoIGRhdGFiYXNlLjwvbGk+CisgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cuc3RhY2tzdGF0ZS5jb20vIj5TdGFja1N0YXRlPC9hPiAtIE1vbml0b3JpbmcgYW5kIEFJT3BzIGFsbG93aW5nIHVzZXJzIHRvIHV0aWxpemUgR3JlbWxpbiBmb3IgYW5hbHl0aWNhbCBmdW5jdGlvbnMuPC9saT4KKyAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vdG9tc2F3eWVyLmNvbS9wcm9kdWN0cy9wZXJzcGVjdGl2ZXMvIj5Ub20gU2F3eWVyIFBlcnNwZWN0aXZlczwvYT4gLSBBZHZhbmNlZCBncmFwaGljcy1iYXNlZCBzb2Z0d2FyZSBmb3IgYnVpbGRpbmcgZW50ZXJwcmlzZS1jbGFzcyBkYXRhIHJlbGF0aW9uc2hpcCB2aXN1YWxpemF0aW9uIGFuZCBhbmFseXNpcyBhcHBsaWNhdGlvbnMuPC9saT4KICAgICAgICAgIDwvdWw+CiAgICAgICAgICA8YSBuYW1lPSJjb21taXR0ZXJzIj48L2E+Ci0gICAgICAgICA8aDMgaWQ9ImNvbW1pdHRlcnMiPkFwYWNoZSBUaW5rZXJQb3AgQ29tbWl0dGVyczwvaDM+Ci0gICAgICAgICA8aW1nIHNyYz0iaW1hZ2VzL3RpbmtlcnBvcC1sb2dvLXNtYWxsLnBuZyIgc3R5bGU9ImZsb2F0OnJpZ2h0IiAvPlRpbmtlclBvcCBzZWVrcyBjb21taXR0ZXJzIGRlZGljYXRlZCB0byB0aGUgYXJ0IG9mIGdyYXBoIGNvbXB1dGluZy4gVGlua2VyUG9wIGNvbW1pdHRlcnMgYnJpbmcgc29saWQgdGhlb3JldGljYWwsCi0gICAgICAgICBkZXZlbG9wbWVudCwgdGVzdGluZywgZG9jdW1lbnRhdGlvbiwgZXRjLiBza2lsbHMgdG8gdGhlIGdyb3VwLiBDb21taXR0ZXJzIGNvbnRyaWJ1dGUgdG8gVGlua2VyUG9wIGJleW9uZCB0aGUgZXZlci1jaGFuZ2luZyByZXF1aXJlbWVudHMgb2YgdGhlaXIgZGF5LXRvLWRheSBqb2JzIGFuZCBtYWludGFpbgorICAgICAgICAgPGEgbmFtZT0iY29udHJpYnV0b3JzIj48L2E+CisgICAgICAgICA8aDMgaWQ9ImNvbnRyaWJ1dG9ycyI+QXBhY2hlIFRpbmtlclBvcCBDb250cmlidXRvcnM8L2gzPgorICAgICAgICAgPGltZyBzcmM9ImltZy90aW5rZXJwb3AtbG9nby1zbWFsbC5wbmciIHN0eWxlPSJmbG9hdDpyaWdodCIgLz5UaW5rZXJQb3Agc2Vla3MgY29udHJpYnV0b3JzIGRlZGljYXRlZCB0byB0aGUgYXJ0IG9mIGdyYXBoIGNvbXB1dGluZy4gVGlua2VyUG9wIGNvbnRyaWJ1dG9ycyBicmluZyBzb2xpZCB0aGVvcmV0aWNhbCwKKyAgICAgICAgIGRldmVsb3BtZW50LCB0ZXN0aW5nLCBkb2N1bWVudGF0aW9uLCBldGMuIHNraWxscyB0byB0aGUgZ3JvdXAuIFRoZXNlIGluZGl2aWR1YWxzIGNvbnRyaWJ1dGUgdG8gVGlua2VyUG9wIGJleW9uZCB0aGUgZXZlci1jaGFuZ2luZyByZXF1aXJlbWVudHMgb2YgdGhlaXIgZGF5LXRvLWRheSBqb2JzIGFuZCBtYWludGFpbgogICAgICAgICAgcmVzcG9uc2liaWxpdHkgZm9yIHRoZWlyIGNvbnRyaWJ1dGlvbnMgdGhyb3VnaCB0aW1lLgogICAgICAgICAgPHAvPgorICAgICAgICAgPCEtLSB0byBiZSB1bmNvbW1lbnRlZCBhcyBuZWNlc3NhcnksIGp1c3QgZXN0YWJsaXNoaW5nIHRoZSB0ZW1wbGF0ZSAtLS0tLS0tLS0tLQorICAgICAgICAgPGg0IGlkPSJjb250cmlidXRvcnMtYWN0aXZlIj5BY3RpdmU8L2g0PgorICAgICAgICAgLS0+CiAgICAgICAgICA8dWw+CiAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSI+TWFya28gQS4gUm9kcmlndWV6PC9hPiAoMjAwOSAtIFBNQyk6IEdyZW1saW4gbGFuZ3VhZ2UsIEdyZW1saW4gbWFjaGluZSwgZG9jdW1lbnRhdGlvbi48L2xpPgogICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9rZXRyaW5hZHJhd3NhbG90LnR1bWJsci5jb20iPktldHJpbmEgWWltPC9hPiAoMjAwOSAtIENvbW1pdHRlcik6IElsbHVzdHJhdG9yLCBjcmVhdG9yIG9mIEdyZW1saW4gYW5kIGhpcyBtZXJyeSBiYW5kIG9mIHJvYm90cy48L2xpPgotICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20vIj5TdGVwaGVuIE1hbGxldHRlPC9hPiAoMjAxMSAtIFBNQyBDaGFpcik6IEdyZW1saW4gQ29uc29sZS9TZXJ2ZXIvRHJpdmVyLCBHcmFwaCBJL08sIHRlc3RpbmcsIGRvY3VtZW50YXRpb24sIG1haWxpbmcgbGlzdCBzdXBwb3J0LjwvbGk+CisgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbS8iPlN0ZXBoZW4gTWFsbGV0dGU8L2E+ICgyMDExIC0gUE1DIENoYWlyKTogR3JlbWxpbiBDb25zb2xlL1NlcnZlci9Ecml2ZXIsIExhbmd1YWdlIFZhcmlhbnRzIGFuZCBnZW5lcmFsIGNvcmUgZGV2ZWxvcG1lbnQuPC9saT4KICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vamFtZXN0aG9ybnRvbi5jb20vIj5KYW1lcyBUaG9ybnRvbjwvYT4gKDIwMTMgLSBQTUMpOiBQcm9tb3Rpb25zLCBldmFuZ2VsaXNtLjwvbGk+CiAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL2dyZW1saW4uZ3VydSI+RGFuaWVsIEt1cHBpdHo8L2E+ICgyMDE0IC0gUE1DKTogR3JlbWxpbiBsYW5ndWFnZSBkZXNpZ24sIGJlbmNobWFya2luZywgdGVzdGluZywgZG9jdW1lbnRhdGlvbiwgbWFpbGluZyBsaXN0IHN1cHBvcnQuPC9saT4KICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL3d3dy5saW5rZWRpbi5jb20vaW4vaHpiYXJjZWEiPkhhZHJpYW4gWmJhcmNlYTwvYT4gKDIwMTUgLSBQTUMpOiBQcm9qZWN0IG1lbnRvciwgcHJvdmlkZXIgbGlhc29uLjwvbGk+CkBAIC0zMDUsMTAgKzMyMywxNyBAQAogICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cubWljaGFlbHBvbGxtZWllci5jb20vIj5NaWNoYWVsIFBvbGxtZWllcjwvYT4gKDIwMTYgLSBDb21taXR0ZXIpOiBHcmVtbGluIGxhbmd1YWdlLCBHcmVtbGluLVNjYWxhLjwvbGk+CiAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2RhdmVic2hvdyI+RGF2aWQgQnJvd248L2E+ICgyMDE2IC0gQ29tbWl0dGVyKTogUHl0aG9uIGxpYnJhcmllcywgR3JlbWxpbiBTZXJ2ZXIgdGVzdGluZy48L2xpPgogICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9yb2JlcnRkYWxlIj5Sb2JlcnQgRGFsZTwvYT4gKDIwMTYgLSBQTUMpOiBHcmVtbGluIENvbnNvbGUvU2VydmVyLCBkb2N1bWVudGF0aW9uLCBtYWlsaW5nIGxpc3Qgc3VwcG9ydC48L2xpPgotICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9qb3JnZWJheSI+Sm9yZ2UgQmF5PC9hPiAoMjAxNyAtIENvbW1pdHRlcik6IEphdmFTY3JpcHQgYW5kIC5ORVQgbGlicmFyaWVzLCBtYWlsaW5nIGxpc3Qgc3VwcG9ydC48L2xpPgotICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9GbG9yaWFuSG9ja21hbm4vIj5GbG9yaWFuIEhvY2ttYW5uPC9hPiAoMjAxNyAtIENvbW1pdHRlcik6IC5ORVQgbGlicmFyaWVzLCBtYWlsaW5nIGxpc3Qgc3VwcG9ydC48L2xpPgorICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9qb3JnZWJheSI+Sm9yZ2UgQmF5PC9hPiAoMjAxNyAtIFBNQyk6IEdyYXBoQmluYXJ5IHNlcmlhbGl6YXRpb24sIEphdmFTY3JpcHQgYW5kIC5ORVQgbGlicmFyaWVzLCBtYWlsaW5nIGxpc3Qgc3VwcG9ydC48L2xpPgorICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9GbG9yaWFuSG9ja21hbm4vIj5GbG9yaWFuIEhvY2ttYW5uPC9hPiAoMjAxNyAtIFBNQyk6IC5ORVQgbGlicmFyaWVzLCBtYWlsaW5nIGxpc3Qgc3VwcG9ydC48L2xpPgogICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cua2VsdmlubGF3cmVuY2UubmV0LyI+S2VsdmluIExhd3JlbmNlPC9hPiAoMjAxNyAtIENvbW1pdHRlcik6IERvY3VtZW50YXRpb24gYW5kIG1haWxpbmcgbGlzdCBzdXBwb3J0LjwvbGk+CisgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL2hhcnNodGhha2thci5pbi8iPkhhcnNoIFRoYWtrYXI8L2E+ICgyMDE4IC0gQ29tbWl0dGVyKTogR3JlbWxpbi1TUEFSUUwgbW9kdWxlLjwvbGk+CiAgICAgICAgICA8L3VsPgorICAgICAgICAgPCEtLSB0byBiZSB1bmNvbW1lbnRlZCBhcyBuZWNlc3NhcnksIGp1c3QgZXN0YWJsaXNoaW5nIHRoZSB0ZW1wbGF0ZSAtLS0tLS0tLS0tLQorICAgICAgICAgPGg0IGlkPSJjb250cmlidXRvcnMtaW5hY3RpdmUiPkluYWN0aXZlPC9oND4KKyAgICAgICAgIDx1bD4KKyAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vc29tZW9uZS5jb20vIj5Kb2huIERvZTwvYT4gKDIwMTUgLSAyMDE2KTogQ29tbWl0dGVyL1BNQywgTW9kdWxlIFgsIE1vZHVsZSBZLCBtYWlsaW5nIGxpc3Qgc3VwcG9ydC48L2xpPgorICAgICAgICAgPC91bD4KKyAgICAgICAgIC0tPgogICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KIDwvZGl2PgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvcG9saWN5Lmh0bWwgYi9kb2NzL3NpdGUvaG9tZS9wb2xpY3kuaHRtbAppbmRleCBlZTc3ZTdiLi5iMWQ2YmVlIDEwMDY0NAotLS0gYS9kb2NzL3NpdGUvaG9tZS9wb2xpY3kuaHRtbAorKysgYi9kb2NzL3NpdGUvaG9tZS9wb2xpY3kuaHRtbApAQCAtMTQsNyArMTQsNyBAQAogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAtLT4KLTxpbWcgc3JjPSJpbWFnZXMvdGlua2VycG9wLWNvbmZlcmVuY2UucG5nIiBjbGFzcz0iaW1nLXJlc3BvbnNpdmUiIC8+Cis8aW1nIHNyYz0iaW1nL3RpbmtlcnBvcC1jb25mZXJlbmNlLnBuZyIgY2xhc3M9ImltZy1yZXNwb25zaXZlIiAvPgogPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgIDxkaXYgY2xhc3M9Imhlcm8tdW5pdCIgc3R5bGU9InBhZGRpbmc6MTBweCI+CiAgICAgICA8Yj48Zm9udCBzaXplPSI1IiBmYWNlPSJhbWVyaWNhbiB0eXBld3JpdGVyIj5BcGFjaGUgVGlua2VyUG9wJnRyYWRlOzwvZm9udD48L2I+CkBAIC02MCwxMyArNjAsMTMgQEAKICAgICAgIDwvcD4KICAgICAgIDx1bD4KICAgICAgICAgIDxsaT48c3Ryb25nPkNoYXJhY3RlciBHcmFwaGljczwvc3Ryb25nPjogQSBjaGFyYWN0ZXIgZ3JhcGhpYyBjYW4gYmUgdXNlZCA8ZW0+d2l0aG91dCBwZXJtaXNzaW9uPC9lbT4gYXMgbG9uZyBhcyBpdHMgYmVpbmcgdXNlZCBpbiBhbiBBcGFjaGUgVGlua2VyUG9wIHJlbGF0ZWQgY29udGV4dCBhbmQgaXQgaXMgYWNrbm93bGVkZ2VkIHRoYXQgdGhlIGdyYXBoaWMgaXMgYSB0cmFkZW1hcmsgb2YgdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uL0FwYWNoZSBUaW5rZXJQb3AuPC9saT4KLSAgICAgICAgIDxpbWcgc3JjPSJpbWFnZXMvcG9saWN5L3BpcGVzLWNoYXJhY3Rlci5wbmciIHN0eWxlPSJwYWRkaW5nOjEwcHg7d2lkdGg6OSU7Ii8+IDxpbWcgc3JjPSJpbWFnZXMvcG9saWN5L3JleHN0ZXItY2hhcmFjdGVyLnBuZyIgc3R5bGU9InBhZGRpbmc6MTBweDt3aWR0aDo5JTsiLz4gPGltZyBzcmM9ImltYWdlcy9wb2xpY3kvZ3JlbWxpbi1jaGFyYWN0ZXIucG5nIiBzdHlsZT0icGFkZGluZzoxMHB4O3dpZHRoOjklOyIvPiA8aW1nIHNyYz0iaW1hZ2VzL3BvbGljeS9ibHVlcHJpbnRzLWNoYXJhY3Rlci5wbmciIHN0eWxlPSJwYWRkaW5nOjEwcHg7d2lkdGg6OSU7Ii8+IDxpbWcgc3JjPSJpbWFnZXMvcG9saWN5L2Z1cm5hY2UtY2hhcmFjdGVyLnBuZyIgc3R5bGU9InBhZGRpbmc6MTBweDt3aWR0aDo5JTsiLz4gPGltZyBzcmM9ImltYWdlcy9wb2xpY3kvZnJhbWVzLWNoYXJhY3Rlci5wbmciIHN0eWxlPSJwYWRkaW5nOjEwcHg7d2lkdGg6OSU7Ii8+CisgICAgICAgICA8aW1nIHNyYz0iaW1nL3BvbGljeS9waXBlcy1jaGFyYWN0ZXIucG5nIiBzdHlsZT0icGFkZGluZzoxMHB4O3dpZHRoOjklOyIvPiA8aW1nIHNyYz0iaW1nL3BvbGljeS9yZXhzdGVyLWNoYXJhY3Rlci5wbmciIHN0eWxlPSJwYWRkaW5nOjEwcHg7d2lkdGg6OSU7Ii8+IDxpbWcgc3JjPSJpbWcvcG9saWN5L2dyZW1saW4tY2hhcmFjdGVyLnBuZyIgc3R5bGU9InBhZGRpbmc6MTBweDt3aWR0aDo5JTsiLz4gPGltZyBzcmM9ImltZy9wb2xpY3kvYmx1ZXByaW50cy1jaGFyYWN0ZXIucG5nIiBzdHlsZT0icGFkZGluZzoxMHB4O3dpZHRoOjklOyIvPiA8aW1nIHNyYz0iaW1nL3BvbGljeS9mdXJuYWNlLWNoYXJhY3Rlci5wbmciIHN0eWxlPSJwYWRkaW5nOjEwcHg7d2lkdGg6OSU7Ii8+IDxpbWcgc3JjPSJpbWcvcG9saWN5L2ZyYW1lcy1jaGFyYWN0ZXIucG5nIiBzdHlsZT0icGFkZGluZzoxMHB4O3dpZHRoOjklOyIvPgogICAgICAgICAgPGxpPjxzdHJvbmc+Q2hhcmFjdGVyIERyZXNzLVVwIEdyYXBoaWNzPC9zdHJvbmc+OiBBIGNoYXJhY3RlciBncmFwaGljIGNhbiBiZSBtYW5pcHVsYXRlZCAoImRyZXNzZWQgdXAiKSBhbmQgdXNlZCA8ZW0+d2l0aG91dCBwZXJtaXNzaW9uPC9lbT4gYXMgbG9uZyBhcyBpdCdzIGJlaW5nIHVzZWQgaW4gYW4gQXBhY2hlIFRpbmtlclBvcCByZWxhdGVkIGNvbnRleHQgYW5kIGl0IGlzIGFja25vd2xlZGdlZCB0aGF0IHRoZSBncmFwaGljIGlzIGEgdHJhZGVtYXJrIG9mIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi9BcGFjaGUgVGlua2VyUG9wLjwvbGk+Ci0gICAgICAgICA8aW1nIHNyYz0iaW1hZ2VzL3BvbGljeS9ncmVtbGluLWdyZW1vcG9seS5wbmciIHN0eWxlPSJwYWRkaW5nOjEwcHg7d2lkdGg6MTAlOyIvPiA8aW1nIHNyYz0iaW1hZ2VzL3BvbGljeS9ncmVtbGluLWdyZW1yZWFwZXIucG5nIiBzdHlsZT0icGFkZGluZzoxMHB4O3dpZHRoOjE0JTsiLz4gPGltZyBzcmM9ImltYWdlcy9wb2xpY3kvZ3JlbWxpbi1jaGlja2Vud2luZy5wbmciIHN0eWxlPSJwYWRkaW5nOjEwcHg7d2lkdGg6MTAlOyIvPiA8aW1nIHNyYz0iaW1hZ2VzL3BvbGljeS9ncmVtbGluLW5vLW1vcmUtbXItbmljZS1ndXkucG5nIiBzdHlsZT0icGFkZGluZzoxMHB4O3dpZHRoOjEwJTsiLz4gPGltZyBzcmM9ImltYWdlcy9wb2xpY3kvZ3JlbWxpbi1uZXctc2hlcmlmZi1pbi10b3duLnBuZyIgc3R5bGU9InBhZGRpbmc6MTBweDt3aWR0aDoxMiU7Ii8+IDxpbWcgc3JjPSJpbWFnZXMvcG9saWN5L2dyZW1saW4tZ3JlbXN0ZWZhbmkucG5nIiBzdHlsZT0icGFkZGluZzoxMHB4O3dpZHRoOjEwJTsiLz4KKyAgICAgICAgIDxpbWcgc3JjPSJpbWcvcG9saWN5L2dyZW1saW4tZ3JlbW9wb2x5LnBuZyIgc3R5bGU9InBhZGRpbmc6MTBweDt3aWR0aDoxMCU7Ii8+IDxpbWcgc3JjPSJpbWcvcG9saWN5L2dyZW1saW4tZ3JlbXJlYXBlci5wbmciIHN0eWxlPSJwYWRkaW5nOjEwcHg7d2lkdGg6MTQlOyIvPiA8aW1nIHNyYz0iaW1nL3BvbGljeS9ncmVtbGluLWNoaWNrZW53aW5nLnBuZyIgc3R5bGU9InBhZGRpbmc6MTBweDt3aWR0aDoxMCU7Ii8+IDxpbWcgc3JjPSJpbWcvcG9saWN5L2dyZW1saW4tbm8tbW9yZS1tci1uaWNlLWd1eS5wbmciIHN0eWxlPSJwYWRkaW5nOjEwcHg7d2lkdGg6MTAlOyIvPiA8aW1nIHNyYz0iaW1nL3BvbGljeS9ncmVtbGluLW5ldy1zaGVyaWZmLWluLXRvd24ucG5nIiBzdHlsZT0icGFkZGluZzoxMHB4O3dpZHRoOjEyJTsiLz4gPGltZyBzcmM9ImltZy9wb2xpY3kvZ3JlbWxpbi1ncmVtc3RlZmFuaS5wbmciIHN0eWxlPSJwYWRkaW5nOjEwcHg7d2lkdGg6MTAlOyIvPgogICAgICAgICAgPGxpPjxzdHJvbmc+RXhwbGFuYXRvcnkgRGlhZ3JhbXM8L3N0cm9uZz46IEV4cGxhbmF0b3J5IGRpYWdyYW1zIGNhbiBiZSB1c2VkIDxlbT53aXRob3V0IHBlcm1pc3Npb248L2VtPiBhcyBsb25nIGFzIHRoZXkgYXJlIGJlaW5nIHVzZWQgaW4gYW4gQXBhY2hlIFRpbmtlclBvcCByZWxhdGVkIGNvbnRleHQsIGl0IGlzIGFja25vd2xlZGdlZCB0aGF0IHRoZXkgYXJlIHRyYWRlbWFya3Mgb2YgdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uL0FwYWNoZSBUaW5rZXJQb3AsIGFuZCBhcmUgYmVpbmcgdXNlZCBmb3IgdGVjaG5pY2FsIGV4cGxhbmF0b3J5IHB1cnBvc2VzLjwvbGk+Ci0gICAgICAgICA8aW1nIHNyYz0iaW1hZ2VzL3BvbGljeS9vbGFwLXRyYXZlcnNhbC5wbmciIHN0eWxlPSJwYWRkaW5nOjEwcHg7d2lkdGg6MjIlOyIvPiA8aW1nIHNyYz0iaW1hZ2VzL3BvbGljeS9jeWNsaWNwYXRoLXN0ZXAucG5nIiBzdHlsZT0icGFkZGluZzoxMHB4O3dpZHRoOjIyJTsiLz4gPGltZyBzcmM9ImltYWdlcy9wb2xpY3kvZmxhdC1tYXAtbGFtYmRhLnBuZyIgc3R5bGU9InBhZGRpbmc6MTBweDt3aWR0aDoxNSU7Ii8+IDxpbWcgc3JjPSJpbWFnZXMvcG9saWN5L2FkamFjZW5jeS1saXN0LnBuZyIgc3R5bGU9InBhZGRpbmc6MTBweDt3aWR0aDoyMiU7Ii8+CisgICAgICAgICA8aW1nIHNyYz0iaW1nL3BvbGljeS9vbGFwLXRyYXZlcnNhbC5wbmciIHN0eWxlPSJwYWRkaW5nOjEwcHg7d2lkdGg6MjIlOyIvPiA8aW1nIHNyYz0iaW1nL3BvbGljeS9jeWNsaWNwYXRoLXN0ZXAucG5nIiBzdHlsZT0icGFkZGluZzoxMHB4O3dpZHRoOjIyJTsiLz4gPGltZyBzcmM9ImltZy9wb2xpY3kvZmxhdC1tYXAtbGFtYmRhLnBuZyIgc3R5bGU9InBhZGRpbmc6MTBweDt3aWR0aDoxNSU7Ii8+IDxpbWcgc3JjPSJpbWcvcG9saWN5L2FkamFjZW5jeS1saXN0LnBuZyIgc3R5bGU9InBhZGRpbmc6MTBweDt3aWR0aDoyMiU7Ii8+CiAgICAgICAgICA8bGk+PHN0cm9uZz5DaGFyYWN0ZXIgU2NlbmUgR3JhcGhpY3M8L3N0cm9uZz46IENoYXJhY3RlciBzY2VuZSBncmFwaGljcyA8dT48ZW0+cmVxdWlyZSBwZXJtaXNzaW9uPC9lbT48L3U+IGJlZm9yZSBiZWluZyB1c2VkLiBQbGVhc2UgYXNrIGZvciBwZXJtaXNzaW9uIG9uIHRoZSBBcGFjaGUgVGlua2VyUG9wIDxhIGhyZWY9Imh0dHA6Ly9tYWlsLWFyY2hpdmVzLmFwYWNoZS5vcmcvbW9kX21ib3gvaW5jdWJhdG9yLXRpbmtlcnBvcC1kZXYvIj5kZXZlbG9wZXIgbWFpbGluZyBsaXN0PC9hPi48L2xpPgotICAgICAgICAgPGltZyBzcmM9ImltYWdlcy9wb2xpY3kvdGlua2VycG9wLXJlYWRpbmcucG5nIiBzdHlsZT0icGFkZGluZzoxMHB4O3dpZHRoOjIwJTsiLz4gPGltZyBzcmM9ImltYWdlcy9wb2xpY3kvZ3JlbWxpbnRyb24ucG5nIiBzdHlsZT0icGFkZGluZzoxMHB4O3dpZHRoOjIwJTsiLz4gPGltZyBzcmM9ImltYWdlcy9wb2xpY3kvYnVzaW5lc3MtZ3JlbWxpbi5wbmciIHN0eWxlPSJwYWRkaW5nOjEwcHg7d2lkdGg6MjAlOyIvPiA8aW1nIHNyYz0iaW1hZ2VzL3BvbGljeS90aW5rZXJwb3AzLXNwbGFzaC5wbmciIHN0eWxlPSJwYWRkaW5nOjEwcHg7d2lkdGg6MjAlOyIvPgorICAgICAgICAgPGltZyBzcmM9ImltZy9wb2xpY3kvdGlua2VycG9wLXJlYWRpbmcucG5nIiBzdHlsZT0icGFkZGluZzoxMHB4O3dpZHRoOjIwJTsiLz4gPGltZyBzcmM9ImltZy9wb2xpY3kvZ3JlbWxpbnRyb24ucG5nIiBzdHlsZT0icGFkZGluZzoxMHB4O3dpZHRoOjIwJTsiLz4gPGltZyBzcmM9ImltZy9wb2xpY3kvYnVzaW5lc3MtZ3JlbWxpbi5wbmciIHN0eWxlPSJwYWRkaW5nOjEwcHg7d2lkdGg6MjAlOyIvPiA8aW1nIHNyYz0iaW1nL3BvbGljeS90aW5rZXJwb3AzLXNwbGFzaC5wbmciIHN0eWxlPSJwYWRkaW5nOjEwcHg7d2lkdGg6MjAlOyIvPgogICAgICAgPC91bD4KICAgIDwvZGl2PgogPC9kaXY+CmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9wcm92aWRlcnMuaHRtbCBiL2RvY3Mvc2l0ZS9ob21lL3Byb3ZpZGVycy5odG1sCmluZGV4IDhkZTI4ZmYuLmViYTkyY2IgMTAwNjQ0Ci0tLSBhL2RvY3Mvc2l0ZS9ob21lL3Byb3ZpZGVycy5odG1sCisrKyBiL2RvY3Mvc2l0ZS9ob21lL3Byb3ZpZGVycy5odG1sCkBAIC0xNCw3ICsxNCw3IEBACiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KIC0tPgotPGltZyBzcmM9ImltYWdlcy90aW5rZXJwb3AtbWVldGluZy1yb29tLnBuZyIgY2xhc3M9ImltZy1yZXNwb25zaXZlIiAvPgorPGltZyBzcmM9ImltZy90aW5rZXJwb3AtbWVldGluZy1yb29tLnBuZyIgY2xhc3M9ImltZy1yZXNwb25zaXZlIiAvPgogPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgIDxkaXYgY2xhc3M9Imhlcm8tdW5pdCIgc3R5bGU9InBhZGRpbmc6MTBweCI+CiAgICAgICA8Yj48Zm9udCBzaXplPSI1IiBmYWNlPSJhbWVyaWNhbiB0eXBld3JpdGVyIj5BcGFjaGUgVGlua2VyUG9wJnRyYWRlOzwvZm9udD48L2I+CkBAIC0zNCw3ICszNCw3IEBACiAgICAgICAgICAgICA8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS0yIGNvbC1tZC0yIj4KLSAgICAgICAgICAgIDxpbWcgc3JjPSJpbWFnZXMvcGVvbi1oZWFkLnBuZyIgd2lkdGg9IjEwMHB4Ij4KKyAgICAgICAgICAgIDxpbWcgc3JjPSJpbWcvcGVvbi1oZWFkLnBuZyIgd2lkdGg9IjEwMHB4Ij4KICAgICAgICAgIDwvZGl2PgogICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KQEAgLTU4LDcgKzU4LDcgQEAKICAgICAgICAgICAgIE1vcmVvdmVyLCB0aGV5IG9ubHkgbmVlZCB0byBjb25jZXJuIHRoZW1zZWx2ZXMgd2l0aCBsZWFybmluZyB0aGUgR3JlbWxpbiB0cmF2ZXJzYWwgbGFuZ3VhZ2UgYXMgZXZlcnkgVGlua2VyUG9wLWVuYWJsZWQgZ3JhcGggc3lzdGVtIHN1cHBvcnRzIEdyZW1saW4uCiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS00IGNvbC1tZC00Ij4KLSAgICAgICAgICAgIDxpbWcgc3JjPSJpbWFnZXMvdGlua2VyYmxvY2tzLnBuZyIgc3R5bGU9IndpZHRoOjEwMCUiPgorICAgICAgICAgICAgPGltZyBzcmM9ImltZy90aW5rZXJibG9ja3MucG5nIiBzdHlsZT0id2lkdGg6MTAwJSI+CiAgICAgICAgICA8L2Rpdj4KICAgICAgIDwvZGl2PgogICAgICAgPGJyLz4KQEAgLTc1LDcgKzc1LDcgQEAKICAgICAgICAgIDxici8+CiAgICAgICAgICA8bGk+PHN0cm9uZz5UaGUgR3JhcGhDb21wdXRlciAob3B0aW9uYWwpPC9zdHJvbmc+OiBBbGwgT0xBUC1iYXNlZCBncmFwaCBwcm9jZXNzb3JzIG11c3QgaW1wbGVtZW50IHRoZSBwcmltYXJ5IGdyYXBoIGludGVyZmFjZXMgbWVudGlvbmVkIGFib3ZlIGFzIHdlbGwgYXMgYSBzZXQgb2YgcGFyYWxsZWwtcHJvY2Vzc2luZwogICAgICAgICAgICAgbWVzc2FnZS1wYXNzaW5nIGludGVyZmFjZXMuIEhvd2V2ZXIsIGl0IGlzIHBvc3NpYmxlIGZvciBhIGRhdGEgc3lzdGVtIHRvIG9ubHkgaW1wbGVtZW50IHRoZSBwcmltYXJ5IGdyYXBoIGludGVyZmFjZXMgYW5kIHN0aWxsIHByb3ZpZGUgT0xBUCBzdXBwb3J0IHRvIHRoZWlyIHVzZXJzIGJ5IGludGVncmF0aW5nIHRoZWlyCi0gICAgICAgICAgICBzeXN0ZW0gd2l0aCBhbiBleGlzdGluZyA8Y29kZT5HcmFwaENvbXB1dGVyPC9jb2RlPiBpbXBsZW1lbnRhdGlvbiBzdWNoIGFzLCBmb3IgZXhhbXBsZSwgPGNvZGU+U3BhcmtHcmFwaENvbXB1dGVyPC9jb2RlPiBvciA8Y29kZT5HaXJhcGhHcmFwaENvbXB1dGVyPC9jb2RlPiAoYm90aCBhcmUgcHJvdmlkZWQgaW4gQXBhY2hlJ3MgZGlzdHJpYnV0aW9uCisgICAgICAgICAgICBzeXN0ZW0gd2l0aCBhbiBleGlzdGluZyA8Y29kZT5HcmFwaENvbXB1dGVyPC9jb2RlPiBpbXBsZW1lbnRhdGlvbiBzdWNoIGFzLCBmb3IgZXhhbXBsZSwgPGNvZGU+U3BhcmtHcmFwaENvbXB1dGVyPC9jb2RlPiAocHJvdmlkZWQgaW4gQXBhY2hlJ3MgZGlzdHJpYnV0aW9uCiAgICAgICAgICAgICBvZiBUaW5rZXJQb3ApLgogICAgICAgICAgPC9saT4KICAgICAgIDwvb2w+CkBAIC04OSw3ICs4OSw3IEBACiAgICAgICAgICA8L2xpPgogICAgICAgICAgPGxpPjxzdHJvbmc+R3JlbWxpbiB0cmF2ZXJzYWwgbWFjaGluZTwvc3Ryb25nPjogRXZlcnkgR3JlbWxpbiBsYW5ndWFnZSB2YXJpYW50IGNvbXBpbGVzIHRvIGEgbGFuZ3VhZ2UgYWdub3N0aWMgPGEgaHJlZj0iaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQnl0ZWNvZGUiPmJ5dGVjb2RlPC9hPiByZXByZXNlbnRhdGlvbi4gVGhhdCBieXRlY29kZSBpcyB1bHRpbWF0ZWx5IHRyYW5zbGF0ZWQgdG8gYSBtYWNoaW5lLXNwZWNpZmljIHRyYXZlcnNhbC4gSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBHcmVtbGluIHRyYXZlcnNhbCBtYWNoaW5lIHRvIGV4ZWN1dGUgdGhhdCB0cmF2ZXJzYWwgYXMgYQogICAgICAgICAgICAgcmVhbC10aW1lIDxhIGhyZWY9Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL09ubGluZV90cmFuc2FjdGlvbl9wcm9jZXNzaW5nIj5PTFRQPC9hPiBxdWVyeSBvciBhcyBhbiBhbmFseXRpYyA8YSBocmVmPSJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9PbmxpbmVfYW5hbHl0aWNhbF9wcm9jZXNzaW5nIj5PTEFQPC9hPiBxdWVyeSAob3IgYm90aCkuIE5vdGUgdGhhdCB0aGUgR3JlbWxpbiB0cmF2ZXJzYWwgbWFjaGluZSBpcyBub3QgYm91bmQgdG8gdGhlIEdyZW1saW4gbGFuZ3VhZ2UuIEFueSBsYW5ndWFnZSBjYW4gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIHRoZQotICAgICAgICAgICAgR3JlbWxpbiB0cmF2ZXJzYWwgbWFjaGluZSBieSBzaW1wbHkgdHJhbnNsYXRpbmcgaXRzZWxmIHRvIEdyZW1saW4gYnl0ZWNvZGUuIEluIGZhY3QsIGNvbXBpbGVycyBjdXJyZW50bHkgZXhpc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90d2lsbWVzL3NxbC1ncmVtbGluIj5TUUw8L2E+IGFuZCA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZGt1cHBpdHovc3BhcnFsLWdyZW1saW4iPlNQQVJRTDwvYT4uIEhvd2V2ZXIsIHVzaW5nIGFsdGVybmF0aXZlIGxhbmd1YWdlcyBmb3IgZ3JhcGggY29tcHV0aW5nIGxlYWRzIHRvIHNpZ25pZmljYW50bHkgbW9yZSBjb21wbGljYXRlZCBxdWVyaWVzCisgICAgICAgICAgICBHcmVtbGluIHRyYXZlcnNhbCBtYWNoaW5lIGJ5IHNpbXBseSB0cmFuc2xhdGluZyBpdHNlbGYgdG8gR3JlbWxpbiBieXRlY29kZS4gSW4gZmFjdCwgY29tcGlsZXJzIGN1cnJlbnRseSBleGlzdCBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3R3aWxtZXMvc3FsLWdyZW1saW4iPlNRTDwvYT4gYW5kIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL2N1cnJlbnQvcmVmZXJlbmNlLyNzcGFycWwtZ3JlbWxpbiI+U1BBUlFMPC9hPi4gSG93ZXZlciwgdXNpbmcgYWx0ZXJuYXRpdmUgbGFuZ3VhZ2VzIGZvciBncmFwaCBjb21wdXRpbmcgbGVhZHMgdG8gc2lnbmlmaWNhbnRseSBtb3JlIGNvbXBsaWNhdGVkIHF1ZXJpZXMKICAgICAgICAgICAgIGFuZCB0eXBpY2FsbHkgZG9lcyBub3QgbWF0Y2ggdGhlIGV4cHJlc3Npdml0eSBwcm92aWRlZCBieSBHcmVtbGluLgogICAgICAgICAgPC9saT4KICAgICAgICAgIDxsaT48c3Ryb25nPlRpbmtlckdyYXBoPC9zdHJvbmc+OiBUaW5rZXJQb3AgcHJvdmlkZXMgYSBzaW1wbGUsIG5vbi10cmFuc2FjdGlvbmFsLCBpbi1tZW1vcnkgZ3JhcGggc3lzdGVtIGNhbGxlZCA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy9jdXJyZW50L3JlZmVyZW5jZS8jdGlua2VyZ3JhcGgtZ3JlbWxpbiI+VGlua2VyR3JhcGg8L2E+LiBUaW5rZXJHcmFwaCBpcyB1c2VmdWwgZm9yIGV4cGxvcmluZyBncmFwaHMgdGhhdCBjYW4gZml0CkBAIC0xMDksMTEgKzEwOSw3IEBACiAgICAgICAgICAgICBpbnRvIGEgQmlnKEdyYXBoKURhdGEgcHJvY2Vzc29yIHZpYSB0aGUgT0xBUCBjb21wb25lbnQgb2YgdGhlIEdyZW1saW4gdHJhdmVyc2FsIG1hY2hpbmUuIFVzZXJzIGRvIG5vdCBoYXZlIHRvIGxlYXJuIFNwYXJrJ3MgZGF0YSBwcm9jZXNzaW5nIGxhbmd1YWdlIGFzIEdyZW1saW4gdHJhdmVyc2FscyBleGVjdXRlCiAgICAgICAgICAgICBvdmVyIFNwYXJrLiBGb3IgZ3JhcGggc3lzdGVtIHByb3ZpZGVycywgdGhleSBjYW4gYm9hc3QgU3BhcmsgaW50ZWdyYXRpb24gb25jZSBhIGN1c3RvbSA8Y29kZT5JbnB1dFJERDwvY29kZT4gKG9yIDxjb2RlPklucHV0Rm9ybWF0PC9jb2RlPikgaXMgZGV2ZWxvcGVkLgogICAgICAgICAgPC9saT4KLSAgICAgICAgIDxsaT48c3Ryb25nPkdpcmFwaEdyYXBoQ29tcHV0ZXI8L3N0cm9uZz46IDxhIGhyZWY9Imh0dHA6Ly9naXJhcGguYXBhY2hlLm9yZy8iPkFwYWNoZSBHaXJhcGg8L2E+JnRyYWRlOyBpcyBhIEJpZyhHcmFwaClEYXRhIHByb2Nlc3NvciB0aGF0IGxldmVyYWdlcyA8YSBocmVmPSJodHRwOi8vaGFkb29wLmFwYWNoZS5vcmcvIj5BcGFjaGUgSGFkb29wPC9hPiZyZWc7IGFuZAotICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3pvb2tlZXBlci5hcGFjaGUub3JnLyI+QXBhY2hlIFpvb0tlZXBlcjwvYT4mdHJhZGU7IGZvciBleGVjdXRpbmcgZGlzdHJpYnV0ZWQgZ3JhcGggYWxnb3JpdGhtcy4gPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvY3VycmVudC9yZWZlcmVuY2UvI2dpcmFwaGdyYXBoY29tcHV0ZXIiPjxjb2RlPkdpcmFwaEdyYXBoQ29tcHV0ZXI8L2NvZGU+PC9hPgotICAgICAgICAgICAgc3VwcG9ydHMgR3JlbWxpbiBPTEFQIGFuZCBhbGxvd3MgdXNlcnMgdG8gc3VibWl0IEdyZW1saW4gdHJhdmVyc2FscyB0byBHaXJhcGggZm9yIGRpc3RyaWJ1dGVkIGV4ZWN1dGlvbi4gUHJvdmlkZXJzIGNhbiBpbW1lZGlhdGVseSBhZHZlcnRpc2UgR2lyYXBoIGludGVncmF0aW9uIG9uY2UgYSBjdXN0b20gPGNvZGU+SW5wdXRGb3JtYXQ8L2NvZGU+IGlzIGRldmVsb3BlZC4KLSAgICAgICAgIDwvbGk+Ci0gICAgICAgICA8bGk+PHN0cm9uZz5IYWRvb3Agc3VwcG9ydDwvc3Ryb25nPjogPGEgaHJlZj0iaHR0cDovL2hhZG9vcC5hcGFjaGUub3JnLyI+QXBhY2hlIEhhZG9vcDwvYT4mcmVnOyBoYXMgYmVjb21lIGEgc3RhcGxlIHRlY2hub2xvZ3kgZm9yIEJpZyBEYXRhIGFwcGxpY2F0aW9ucy4gSW4gVGlua2VyUG9wLCBib3RoIDxjb2RlPlNwYXJrR3JhcGhDb21wdXRlcjwvY29kZT4gYW5kIDxjb2RlPkdpcmFwaEdyYXBoQ29tcHV0ZXI8L2NvZGU+IGNhbiBwdWxsIGRhdGEKKyAgICAgICAgIDxsaT48c3Ryb25nPkhhZG9vcCBzdXBwb3J0PC9zdHJvbmc+OiA8YSBocmVmPSJodHRwOi8vaGFkb29wLmFwYWNoZS5vcmcvIj5BcGFjaGUgSGFkb29wPC9hPiZyZWc7IGhhcyBiZWNvbWUgYSBzdGFwbGUgdGVjaG5vbG9neSBmb3IgQmlnIERhdGEgYXBwbGljYXRpb25zLiBJbiBUaW5rZXJQb3AsIDxjb2RlPlNwYXJrR3JhcGhDb21wdXRlcjwvY29kZT4gY2FuIHB1bGwgZGF0YQogICAgICAgICAgICAgZnJvbSB0aGUgSGFkb29wIEZpbGUgU3lzdGVtICg8YSBocmVmPSJodHRwczovL2hhZG9vcC5hcGFjaGUub3JnL2RvY3Mvc3RhYmxlL2hhZG9vcC1wcm9qZWN0LWRpc3QvaGFkb29wLWhkZnMvSGRmc1VzZXJHdWlkZS5odG1sIj5IREZTPC9hPikuIFRpbmtlclBvcCBwcm92aWRlcyBhIGNvbGxlY3Rpb24gb2YgSW5wdXQtIGFuZCBPdXRwdXRGb3JtYXRzIGZvciBkaWZmZXJlbnQgZ3JhcGggc2VyaWFsaXphdGlvbiBzdGFuZGFyZHMgYXMgd2VsbCBhcyB0b29saW5nIHRoYXQgbWFrZXMgaXQgZWFzeSBmb3IgdXNlcnMKICAgICAgICAgICAgIHRvIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL2N1cnJlbnQvcmVmZXJlbmNlLyNpbnRlcmFjdGluZy13aXRoLWhkZnMiPmludGVyYWN0IHdpdGggSERGUzwvYT4gZnJvbSB0aGUgR3JlbWxpbiBDb25zb2xlIG9yIHRoZWlyIGFwcGxpY2F0aW9uLgogICAgICAgICAgPC9saT4KQEAgLTEyOCw3NCArMTI0LDY3IEBACiAgICAgICA8YnIvPgogICAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS02IGNvbC1tZC02Ij4KLSAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9ibGF6ZWdyYXBoLmNvbS8iPjxpbWcgc3JjPSJpbWFnZXMvbG9nb3MvYmxhemVncmFwaC1sb2dvLnBuZyIgc3R5bGU9InBhZGRpbmctcmlnaHQ6MjBweDtmbG9hdDpsZWZ0O3dpZHRoOjM1JTsiPjwvYT4KLSAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9ibGF6ZWdyYXBoLmNvbS8iPkJsYXplZ3JhcGg8L2E+JnRyYWRlOyBpcyBhIHN0YW5kYXJkcy1iYXNlZCwgaGlnaC1wZXJmb3JtYW5jZSwgc2NhbGFibGUsIG9wZW4tc291cmNlIGdyYXBoIGRhdGFiYXNlLiBXcml0dGVuIGVudGlyZWx5IGluIEphdmEsIHRoZSBwbGF0Zm9ybSBzdXBwb3J0cyBBcGFjaGUgVGlua2VyUG9wIGFuZCBSREYvU1BBUlFMIDEuMSBmYW1pbHkgb2Ygc3BlY2lmaWNhdGlvbnMuICBBIGNvbW1lcmNpYWwgdmVyc2lvbiBpbmNsdWRlcyBHUFUgYWNjZWxlcmF0aW9uLgorICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hd3MuYW1hem9uLmNvbS9uZXB0dW5lLyI+PGltZyBzcmM9ImltZy9sb2dvcy9uZXB0dW5lLWxvZ28ucG5nIiBzdHlsZT0icGFkZGluZy1yaWdodDoyMHB4O2Zsb2F0OmxlZnQ7d2lkdGg6MzUlOyI+PC9hPgorICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9hd3MuYW1hem9uLmNvbS9uZXB0dW5lLyI+QW1hem9uIE5lcHR1bmU8L2E+IGlzIGEgZmFzdCwgcmVsaWFibGUsIGZ1bGx5LW1hbmFnZWQgZ3JhcGggZGF0YWJhc2Ugc2VydmljZSB0aGF0IG1ha2VzIGl0IGVhc3kgdG8gYnVpbGQgYW5kIHJ1biBhcHBsaWNhdGlvbnMgdGhhdCB3b3JrIHdpdGggaGlnaGx5IGNvbm5lY3RlZCBkYXRhc2V0cy4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXNtLTYgY29sLW1kLTYiPgotICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvYXp1cmUvY29zbW9zLWRiL2dyYXBoLWludHJvZHVjdGlvbiI+PGltZyBzcmM9ImltYWdlcy9sb2dvcy9jb3Ntb3NkYi1sb2dvLnBuZyIgc3R5bGU9InBhZGRpbmctcmlnaHQ6MjBweDtmbG9hdDpsZWZ0O3dpZHRoOjM1JTsiPjwvYT4KKyAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL2F6dXJlL2Nvc21vcy1kYi9ncmFwaC1pbnRyb2R1Y3Rpb24iPjxpbWcgc3JjPSJpbWcvbG9nb3MvY29zbW9zZGItbG9nby5wbmciIHN0eWxlPSJwYWRkaW5nLXJpZ2h0OjIwcHg7ZmxvYXQ6bGVmdDt3aWR0aDozNSU7Ij48L2E+CiAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2RvY3MubWljcm9zb2Z0LmNvbS9lbi11cy9henVyZS9jb3Ntb3MtZGIvZ3JhcGgtaW50cm9kdWN0aW9uIj5BenVyZSBDb3Ntb3MgREI8L2E+JnRyYWRlOyBpcyBNaWNyb3NvZnQncyBnbG9iYWxseSBkaXN0cmlidXRlZCwgbXVsdGktbW9kZWwgZGF0YWJhc2Ugc2VydmljZSBmb3IgbWlzc2lvbi1jcml0aWNhbCBhcHBsaWNhdGlvbnMuIEF6dXJlIENvc21vcyBEQiBwcm92aWRlcyB0dXJuLWtleSBnbG9iYWwgZGlzdHJpYnV0aW9uLCBlbGFzdGljIHNjYWxpbmcgb2YgdGhyb3VnaHB1dCBhbmQgc3RvcmFnZSB3b3JsZHdpZGUsIGZpdmUgd2VsbC1kZWZpbmVkIGNvbnNpc3RlbmN5IGxldmVscywgYW5kIGd1YXJhbnRlZWQgaGlnaCBhdmFpbGFiaWxpdHksIGFsbCBiYWNrZWQgYnkgaW5kdXN0cnktbGVhZGluZyBTTEFzLiBJdCBpcyBtdWx0aS1tb2RlbCB3aXRoIHN1cHBvcnQgZm9yIHRoZSBHcmVtbGluIGdyYXBoIHRyYXZlcnNhbCBsYW5ndWFnZS4KICAgICAgICAgIDwvZGl2PgogICAgICAgPC9kaXY+CiAgICAgICA8YnIvPgogICAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tNiBjb2wtbWQtNiI+Ci0gICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vZGF0YXN0YXguY29tL3Byb2R1Y3RzL2RhdGFzdGF4LWVudGVycHJpc2UtZ3JhcGgiPjxpbWcgc3JjPSJpbWFnZXMvbG9nb3MvZGF0YXN0YXgtbG9nby5wbmciIHN0eWxlPSJwYWRkaW5nLXJpZ2h0OjIwcHg7ZmxvYXQ6bGVmdDt3aWR0aDozNSU7Ij48L2E+CisgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vZGF0YXN0YXguY29tL3Byb2R1Y3RzL2RhdGFzdGF4LWVudGVycHJpc2UtZ3JhcGgiPjxpbWcgc3JjPSJpbWcvbG9nb3MvZGF0YXN0YXgtbG9nby5wbmciIHN0eWxlPSJwYWRkaW5nLXJpZ2h0OjIwcHg7ZmxvYXQ6bGVmdDt3aWR0aDozNSU7Ij48L2E+CiAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vZGF0YXN0YXguY29tL3Byb2R1Y3RzL2RhdGFzdGF4LWVudGVycHJpc2UtZ3JhcGgiPkRhdGFTdGF4IEVudGVycHJpc2UgR3JhcGg8L2E+JnRyYWRlOywgcGFydCBvZiBEYXRhU3RheCBFbnRlcnByaXNlJ3MgbXVsdGktbW9kZWwgcGxhdGZvcm0sIGlzIGEgcmVhbC10aW1lIGdyYXBoIGRhdGFiYXNlIGJ1aWx0IGZvciBjbG91ZCBhcHBsaWNhdGlvbnMgdGhhdCBuZWVkIHRvIG1hbmFnZSBjb21wbGV4IGFuZCBoaWdobHkgY29ubmVjdGVkIGRhdGEuIEJ1aWx0IG9uIHRoZSBmb3VuZGF0aW9uIG9mIEFwYWNoZSBDYXNzYW5kcmEgYW5kIEFwYWNoZSBUaW5rZXJQb3AsIERhdGFTdGF4IEVudGVycHJpc2UgR3JhcGggZGVsaXZlcnMgY29udGludW91cyB1cHRpbWUgYWxvbmcgd2l0aCBwcmVkaWN0YWJsZSBwZXJmb3JtYW5jZSBhbmQgc2NhbGUsIHdoaWxlIHJlbWFpbmluZyBvcGVyYXRpb25hbGx5IHNpbXBsZSB0byBtYW5hZ2UuCiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS02IGNvbC1tZC02Ij4KLSAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ3Jha24uYWkvIj48aW1nIHNyYz0iaW1hZ2VzL2xvZ29zL2dyYWtuLWxvZ28ucG5nIiBzdHlsZT0icGFkZGluZy1yaWdodDoyMHB4O2Zsb2F0OmxlZnQ7d2lkdGg6MzUlOyI+PC9hPgorICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9ncmFrbi5haS8iPjxpbWcgc3JjPSJpbWcvbG9nb3MvZ3Jha24tbG9nby5wbmciIHN0eWxlPSJwYWRkaW5nLXJpZ2h0OjIwcHg7ZmxvYXQ6bGVmdDt3aWR0aDozNSU7Ij48L2E+CiAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dyYWtuLmFpLyI+R1JBS04uQUk8L2E+JnRyYWRlOyBpcyBhIGRpc3RyaWJ1dGVkIGtub3dsZWRnZSBncmFwaCB0aGF0IGJyaW5ncyBrbm93bGVkZ2Ugb250b2xvZ2llcyBhbmQgdHJhbnNhY3Rpb25hbCBkYXRhIHRvZ2V0aGVyIHRvIGVuYWJsZSBpbnRlbGxpZ2VudCBxdWVyeWluZyBvZiBkYXRhLiBRdWVyeWluZyBpcyBwZXJmb3JtZWQgdGhyb3VnaCB0aGUgbGFuZ3VhZ2U6IEdyYXFsLCBhIGRlY2xhcmF0aXZlLCBrbm93bGVkZ2Utb3JpZW50ZWQgZ3JhcGggcXVlcnkgbGFuZ3VhZ2UgZm9yIHJldHJpZXZpbmcgZXhwbGljaXRseSBzdG9yZWQgYW5kIGltcGxpY2l0bHkgZGVyaXZlZCBpbmZvcm1hdGlvbiwgYXMgd2VsbCBhcyB0byBwZXJmb3JtIGdyYXBoIGFuYWx5dGljcyBhbmQgYXV0b21hdGVkIHJlYXNvbmluZy4KICAgICAgICAgIDwvZGl2PgogICAgICAgPC9kaXY+CiAgICAgICA8YnIvPgogICAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS02IGNvbC1tZC02Ij4KLSAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuaWJtLmNvbS9hbmFseXRpY3MvdXMvZW4vdGVjaG5vbG9neS9jbG91ZC1kYXRhLXNlcnZpY2VzL2dyYXBoLyI+PGltZyBzcmM9ImltYWdlcy9sb2dvcy9pYm1ncmFwaC1sb2dvLnBuZyIgc3R5bGU9InBhZGRpbmctcmlnaHQ6MjBweDtmbG9hdDpsZWZ0O3dpZHRoOjM1JTsiPjwvYT4KLSAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuaWJtLmNvbS9hbmFseXRpY3MvdXMvZW4vdGVjaG5vbG9neS9jbG91ZC1kYXRhLXNlcnZpY2VzL2dyYXBoLyI+SUJNIEdyYXBoPC9hPiZ0cmFkZTsgaXMgYSBzY2FsYWJsZSwgZWFzeS10by11c2UsIGZ1bGx5LW1hbmFnZWQgZ3JhcGggZGF0YWJhc2UtYXMtYS1zZXJ2aWNlIHRoYXQgaXMgYWRtaW5pc3RlcmVkIHRocm91Z2ggSUJNJ3MgQmx1ZW1peCBjbG91ZCBwbGF0Zm9ybS4gSUJNIEdyYXBoIGlzIGF2YWlsYWJsZSAyNC83IGFuZCBtYW5hZ2VkIGJ5IGEgdGVhbSBvZiBleHBlcnRzIHNvIGRldmVsb3BlcnMgY2FuIGZvY3VzIG9uIGJ1aWxkaW5nIHRoZWlyIGFwcGxpY2F0aW9uLiBCYXNlZCBvbiB0aGUgQXBhY2hlIFRpbmtlclBvcCBzdGFjayBmb3IgYnVpbGRpbmcgaGlnaC1wZXJmb3JtYW5jZSBncmFwaCBhcHBsaWNhdGlvbnMsIElCTSBHcmFwaCBwcm92aWRlcyB1c2VycyB3aXRoIGEgc2V0IG9mIHNpbXBsaWZpZWQgSFRUUCBBUEkgY2FsbHMgYW5kIHRoZSBHcmVtbGluIGdyYXBoIHRyYXZlcnNhbCBsYW5ndWFnZS4KKyAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vY29tcG9zZS5jb20vZGF0YWJhc2VzL2phbnVzZ3JhcGgiPjxpbWcgc3JjPSJpbWcvbG9nb3MvaWJtLWNvbXBvc2UtamFudXNncmFwaC1sb2dvLnBuZyIgc3R5bGU9InBhZGRpbmctcmlnaHQ6MjBweDtmbG9hdDpsZWZ0O3dpZHRoOjM1JTsiPjwvYT4KKyAgICAgICAgICAgIElCTSZyZWc7IDxhIGhyZWY9Imh0dHBzOi8vY29tcG9zZS5jb20vZGF0YWJhc2VzL2phbnVzZ3JhcGgiPkNvbXBvc2UgZm9yIEphbnVzR3JhcGg8L2E+IHByb3ZpZGVzIGEgZnVsbHktbWFuYWdlZCwgaGlnaGx5LWF2YWlsYWJsZSwgYW5kIHByb2R1Y3Rpb24tcmVhZHkgSmFudXNHcmFwaCBvbiBBV1MsIEdDUCBvciBJQk0gQ2xvdWQuIERlcGxveWVkIGluIG1pbnV0ZXMsIGV2ZXJ5IEphbnVzR3JhcGggZGVwbG95bWVudCBvbiBDb21wb3NlIGlzIGJ1aWx0IHdpdGggaGlnaGx5IGF2YWlsYWJsZSBzdG9yYWdlIGFuZCBncmFwaCBlbmdpbmVzLiBUaGUgSmFudXNHcmFwaCBTdG9yYWdlIGVuZ2luZSBpcyBhIGNsdXN0ZXIgb2YgdGhlIFNjeWxsYSBkYXRhYmFzZS4gQXMgdXNhZ2UgaW5jcmVhc2VzIG9yIGFwcGxpY2F0aW9uIHJlcXVpcmVtZW50cyBjaGFuZ2UsIHVzZXJzIGNhbiB2ZXJ0aWNhbGx5IG9yIGhvcml6b250YWxseSBzY2FsZSB0aGUgSmFudXNHcmFwaCBFbmdpbmUgYW5kIFN0b3JhZ2UgdG8gaW5jcmVhc2UgdGhyb3VnaHB1dCBvciBzdG9yYWdlLgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tNiBjb2wtbWQtNiI+Ci0gICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9qYW51c2dyYXBoLm9yZy8iPjxpbWcgc3JjPSJpbWFnZXMvbG9nb3MvamFudXNncmFwaC1sb2dvLnBuZyIgc3R5bGU9InBhZGRpbmctcmlnaHQ6MjBweDtmbG9hdDpsZWZ0O3dpZHRoOjM1JTsiPjwvYT4KLSAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL2phbnVzZ3JhcGgub3JnLyI+SmFudXNHcmFwaDwvYT4gaXMgYW4gQXBhY2hlMiBsaWNlbnNlZCBzY2FsYWJsZSwgZGlzdHJpYnV0ZWQgZ3JhcGggZGF0YWJhc2Ugb3B0aW1pemVkIGZvciBzdG9yaW5nIGFuZCBxdWVyeWluZyBncmFwaHMgY29udGFpbmluZyBodW5kcmVkcyBvZiBiaWxsaW9ucyBvZiB2ZXJ0aWNlcyBhbmQgZWRnZXMgZGlzdHJpYnV0ZWQgYWNyb3NzIGEgbXVsdGktbWFjaGluZSBjbHVzdGVyLiBKYW51c0dyYXBoIGlzIGEgdHJhbnNhY3Rpb25hbCBkYXRhYmFzZSB0aGF0IGNhbiBzdXBwb3J0IHRob3VzYW5kcyBvZiBjb25jdXJyZW50IHVzZXJzIGV4ZWN1dGluZyBjb21wbGV4IEdyZW1saW4gdHJhdmVyc2FscyBpbiByZWFsIHRpbWUuIEphbnVzR3JhcGggYWxzbyBwcm92aWRlcyBhbiBpbi1tZW1vcnksIGNvbXByZXNzaW9uLWJhc2VkIE9MQVAgcHJvY2Vzc29yIGFzIHdlbGwgYXMgaW50ZWdyYXRlcyB3aXRoIEFwYWNoZSBUaW5rZXJQb3AncyBTcGFyay9HaXJhcGggT0xBUCBwcm9jZXNzb3JzLgorICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vamFudXNncmFwaC5vcmcvIj48aW1nIHNyYz0iaW1nL2xvZ29zL2phbnVzZ3JhcGgtbG9nby5wbmciIHN0eWxlPSJwYWRkaW5nLXJpZ2h0OjIwcHg7ZmxvYXQ6bGVmdDt3aWR0aDozNSU7Ij48L2E+CisgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9qYW51c2dyYXBoLm9yZy8iPkphbnVzR3JhcGg8L2E+JnJlZzsgaXMgYW4gQXBhY2hlMiBsaWNlbnNlZCBzY2FsYWJsZSwgZGlzdHJpYnV0ZWQgZ3JhcGggZGF0YWJhc2Ugb3B0aW1pemVkIGZvciBzdG9yaW5nIGFuZCBxdWVyeWluZyBncmFwaHMgY29udGFpbmluZyBodW5kcmVkcyBvZiBiaWxsaW9ucyBvZiB2ZXJ0aWNlcyBhbmQgZWRnZXMgZGlzdHJpYnV0ZWQgYWNyb3NzIGEgbXVsdGktbWFjaGluZSBjbHVzdGVyLiBKYW51c0dyYXBoIGlzIGEgdHJhbnNhY3Rpb25hbCBkYXRhYmFzZSB0aGF0IGNhbiBzdXBwb3J0IHRob3VzYW5kcyBvZiBjb25jdXJyZW50IHVzZXJzIGV4ZWN1dGluZyBjb21wbGV4IEdyZW1saW4gdHJhdmVyc2FscyBpbiByZWFsIHRpbWUuIEphbnVzR3JhcGggYWxzbyBwcm92aWRlcyBhbiBpbi1tZW1vcnksIGNvbXByZXNzaW9uLWJhc2VkIE9MQVAgcHJvY2Vzc29yIGFzIHdlbGwgYXMgaW50ZWdyYXRlcyB3aXRoIEFwYWNoZSBUaW5rZXJQb3AncyBTcGFyayBPTEFQIHByb2Nlc3NvcnMuCiAgICAgICAgICA8L2Rpdj4KICAgICAgIDwvZGl2PgogICAgICAgPGJyLz4KICAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tNiBjb2wtbWQtNiI+Ci0gICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9jYW1icmlkZ2UtaW50ZWxsaWdlbmNlLmNvbS9rZXlsaW5lcy8iPjxpbWcgc3JjPSJpbWFnZXMvbG9nb3Mva2V5bGluZXMtbG9nby5wbmciIHN0eWxlPSJwYWRkaW5nLXJpZ2h0OjIwcHg7ZmxvYXQ6bGVmdDt3aWR0aDozNSU7Ij48L2E+CisgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9jYW1icmlkZ2UtaW50ZWxsaWdlbmNlLmNvbS9rZXlsaW5lcy8iPjxpbWcgc3JjPSJpbWcvbG9nb3Mva2V5bGluZXMtbG9nby5wbmciIHN0eWxlPSJwYWRkaW5nLXJpZ2h0OjIwcHg7ZmxvYXQ6bGVmdDt3aWR0aDozNSU7Ij48L2E+CiAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9jYW1icmlkZ2UtaW50ZWxsaWdlbmNlLmNvbS9rZXlsaW5lcy8iPktleUxpbmVzPC9hPiZ0cmFkZTsgaXMgYW4gQXBhY2hlIFRpbmtlclBvcCBhbmQgR3JlbWxpbiBjb21wYXRpYmxlIEphdmFTY3JpcHQgU0RLIGZvciBxdWlja2x5IGFuZCBlYXNpbHkgYnVpbGRpbmcgcG93ZXJmdWwsIGN1c3RvbSBhbmQgc2NhbGFibGUgZ3JhcGggdmlzdWFsaXphdGlvbiBhcHBsaWNhdGlvbnMuIFRoZSBLZXlMaW5lcyBTREsgb2ZmZXJzIGEgcmljaCBsaWJyYXJ5IG9mIGZ1bmN0aW9uYWxpdHkgdG8gaGVscCB5b3UgdmlzdWFsaXplIGFuZCBleHBsb3JlIHRoZSBkYXRhIGluIHlvdXIgZ3JhcGggZGF0YWJhc2UsIGluY2x1ZGluZyBncmFwaCBsYXlvdXRzLCBzb2NpYWwgbmV0d29yayBhbmFseXNpcyBtZWFzdXJlcywgZmlsdGVyaW5nLCB0ZW1wb3JhbCBncmFwaCB2aXN1YWxpemF0aW9uIGFuZCBnZW9zcGF0aWFsIGdyYXBoIGFuYWx5c2lzLiBJdCBhbGxvd3MgdGhlIHZpc3VhbGl6YXRpb24gb2YgY29tcGxleCBncmFwaCBkYXRhIGF0IHNjYWxlLgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tNiBjb2wtbWQtNiI+Ci0gICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9saW5rdXJpby51cy8iPjxpbWcgc3JjPSJpbWFnZXMvbG9nb3MvbGlua3VyaW91cy1sb2dvLnBuZyIgc3R5bGU9InBhZGRpbmctcmlnaHQ6MjBweDtmbG9hdDpsZWZ0O3dpZHRoOjM1JTsiPjwvYT4KKyAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL2xpbmt1cmlvLnVzLyI+PGltZyBzcmM9ImltZy9sb2dvcy9saW5rdXJpb3VzLWxvZ28ucG5nIiBzdHlsZT0icGFkZGluZy1yaWdodDoyMHB4O2Zsb2F0OmxlZnQ7d2lkdGg6MzUlOyI+PC9hPgogICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vbGlua3VyaW8udXMvIj5MaW5rdXJpb3VzPC9hPiZ0cmFkZTsgaXMgYSBicm93c2VyLWJhc2VkIGdyYXBoIHZpc3VhbGl6YXRpb24gc29mdHdhcmUgdG8gc2VhcmNoLCBleHBsb3JlIGFuZCB2aXN1YWxpemUgY29ubmVjdGVkIGRhdGEuIEl0IGlzIGNvbXBhdGlibGUgd2l0aCBBcGFjaGUgVGlua2VyUG9wIGFuZCB0aHVzLCBhbnkgVGlua2VyUG9wLWVuYWJsZWQgZ3JhcGggc3lzdGVtLiBMaW5rdXJpb3VzIHByb3ZpZGVzIGVudGVycHJpc2UtcmVhZHkgc2VjdXJpdHkgKGF1dGhlbnRpY2F0aW9uLCBhY2Nlc3MgcmlnaHRzLCBhdWRpdCkgYW5kIGZsZXhpYmlsaXR5IChBUEksIGxpbmt1cmlvdXMuanMgSlMgZ3JhcGggdmlzdWFsaXphdGlvbiBsaWJyYXJ5KSB0byBoZWxwIHNvZnR3YXJlIGFyY2hpdGVjdHMgc3VjY2Vzc2Z1bGx5IGRlcGxveSBncmFwaCBjYXBhYmlsaXRpZXMgd2l0aGluIHRoZWlyIG9yZ2FuaXphdGlvbnMuCiAgICAgICAgICA8L2Rpdj4KICAgICAgIDwvZGl2PgogICAgICAgPGJyLz4KICAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tNiBjb2wtbWQtNiI+Ci0gICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9uZW80ai5jb20vIj48aW1nIHNyYz0iaW1hZ2VzL2xvZ29zL25lbzRqLWxvZ28ucG5nIiBzdHlsZT0icGFkZGluZy1yaWdodDoyMHB4O2Zsb2F0OmxlZnQ7d2lkdGg6MzUlOyI+PC9hPgorICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vbmVvNGouY29tLyI+PGltZyBzcmM9ImltZy9sb2dvcy9uZW80ai1sb2dvLnBuZyIgc3R5bGU9InBhZGRpbmctcmlnaHQ6MjBweDtmbG9hdDpsZWZ0O3dpZHRoOjM1JTsiPjwvYT4KICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL25lbzRqLmNvbS8iPk5lbzRqPC9hPiZ0cmFkZTsgaXMgdGhlIG1vc3Qgd2lkZWx5IHVzZWQgb3BlbiBzb3VyY2UsIHRyYW5zYWN0aW9uYWwgZ3JhcGggZGF0YWJhc2Ugd2l0aCBhIGxhcmdlIGFjdGl2ZSB1c2VyIGFuZCBjdXN0b21lciBjb21tdW5pdHkuIEJlY2F1c2Ugb2YgaXRzIHNjYWxhYmlsaXR5IGFuZCBlYXNlIG9mIHVzZSwgTmVvNGogaXMgYXBwbGllZCBpbiBhIHdpZGUgdmFyaWV0eSBvZiB1c2UgY2FzZXMgZnJvbSBmcmF1ZCBkZXRlY3Rpb24sIGFjY2VzcyBjb250cm9sIHRvIHJlY29tbWVuZGF0aW9uIGFuZCBpbnZlc3RpZ2F0aXZlIGpvdXJuYWxpc20uIEFsb25nIHdpdGggdGhlIG9wZW5DeXBoZXIgZ3JhcGggcXVlcnkgbGFuZ3VhZ2UsIE5lbzRqIGFsc28gc3VwcG9ydHMgQXBhY2hlIFRpbmtlclBvcCBhbmQgY3VycmVudGx5IHNlcnZlcyBhcyBpdHMgT0xUUCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24uCiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS02IGNvbC1tZC02Ij4KLSAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL29yaWVudGRiLmNvbS8iPjxpbWcgc3JjPSJpbWFnZXMvbG9nb3Mvb3JpZW50ZGItbG9nby5wbmciIHN0eWxlPSJwYWRkaW5nLXJpZ2h0OjIwcHg7ZmxvYXQ6bGVmdDt3aWR0aDozNSU7Ij48L2E+CisgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9vcmllbnRkYi5jb20vIj48aW1nIHNyYz0iaW1nL2xvZ29zL29yaWVudGRiLWxvZ28ucG5nIiBzdHlsZT0icGFkZGluZy1yaWdodDoyMHB4O2Zsb2F0OmxlZnQ7d2lkdGg6MzUlOyI+PC9hPgogICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vb3JpZW50ZGIuY29tLyI+T3JpZW50REI8L2E+JnRyYWRlOyBpcyBhbiBvcGVuIHNvdXJjZSBkaXN0cmlidXRlZCBncmFwaCBkYXRhYmFzZSB3aXRoIG5hdGl2ZSBzdXBwb3J0IGZvciBBcGFjaGUgVGlua2VyUG9wIGFuZCB0aGUgR3JlbWxpbiBncmFwaCB0cmF2ZXJzYWwgbGFuZ3VhZ2UuIE9yaWVudERCIGhhbmRsZXMgcmVsYXRpb25zaGlwcyBieSB1c2luZyBwZXJzaXN0ZW50IHBvaW50ZXJzLCByYXRoZXIgdGhhbiBleHBlbnNpdmUgam9pbiBydW50aW1lIG9wZXJhdGlvbnMuIFRoaXMgZ3VhcmFudGVlcyBhIGZhc3QsIGNvbnN0YW50IE8oMSkgdGltZSBmb3IgdHJhdmVyc2luZywgbm8gbWF0dGVyIHRoZSBkYXRhYmFzZSBzaXplLiBGdXJ0aGVybW9yZSwgT3JpZW50REIgaXMgbm90IG9ubHkgYSBncmFwaCBkYXRhYmFzZSwgYnV0IGEgbXVsdGktbW9kZWwgZGF0YWJhc2UgYWJsZSB0byBtYW5hZ2UgZG9jdW1lbnRzLCBrZXlzL3ZhbHVlcywgb2JqZWN0cywgZnVsbC10ZXh0IGFuZCBzcGF0aWFsIGRhdGEuCiAgICAgICAgICA8L2Rpdj4KICAgICAgIDwvZGl2PgogICAgICAgPGJyLz4KICAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tNiBjb2wtbWQtNiI+Ci0gICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9zdGFyZG9nLmNvbS8iPjxpbWcgc3JjPSJpbWFnZXMvbG9nb3Mvc3RhcmRvZy1sb2dvLnBuZyIgc3R5bGU9InBhZGRpbmctcmlnaHQ6MjBweDtmbG9hdDpsZWZ0O3dpZHRoOjM1JTsiPjwvYT4KKyAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3N0YXJkb2cuY29tLyI+PGltZyBzcmM9ImltZy9sb2dvcy9zdGFyZG9nLWxvZ28ucG5nIiBzdHlsZT0icGFkZGluZy1yaWdodDoyMHB4O2Zsb2F0OmxlZnQ7d2lkdGg6MzUlOyI+PC9hPgogICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vc3RhcmRvZy5jb20vIj5TdGFyZG9nPC9hPiZ0cmFkZTsgaXMgYSBncmFwaCBkYXRhYmFzZSBvcHRpbWl6ZWQgZm9yIGVudGVycHJpc2UgZGF0YSB1bmlmaWNhdGlvbi4gSXQgc3VwcG9ydHMgYm90aCBzZW1hbnRpYyBncmFwaHMsIHZpYSBSREYsIFNQQVJRTCwgYW5kIE9XTCwgYXMgd2VsbCBhcyBwcm9wZXJ0eSBncmFwaHMgdmlhIEFwYWNoZSBUaW5rZXJQb3AgYW5kIEdyZW1saW4tLWl0J3MgdGhlIG9ubHkgZ3JhcGggZGF0YWJhc2UgdGhhdCBzdXBwb3J0cyBib3RoIG1vZGVscyBvdmVyIHRoZSBzYW1lIGRhdGFiYXNlLCBzaW11bHRhbmVvdXNseS4gU3RhcmRvZyBhbHNvIHN1cHBvcnRzIGh5YnJpZCBkYXRhIHVuaWZpY2F0aW9uIGFyY2hpdGVjdHVyZXMsIHNlYW1sZXNzbHkgYmxlbmRpbmcgZGF0YSB3YXJlaG91c2UsIHN5c3RlbSBvZiByZWNvcmQsIGFuZCB2aXJ0dWFsIHF1ZXJ5IHN0cmF0ZWdpZXMuIFN0YXJkb2cgaXMgc3VpdGVkIGZvciBlbnRlcnByaXNlIGRhdGEgc2lsbyBjaGFsbGVuZ2VzLgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tNiBjb2wtbWQtNiI+Ci0gICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aXRhbi50aGlua2F1cmVsaXVzLmNvbS8iPjxpbWcgc3JjPSJpbWFnZXMvbG9nb3MvdGl0YW4tbG9nby5wbmciIHN0eWxlPSJwYWRkaW5nLXJpZ2h0OjIwcHg7ZmxvYXQ6bGVmdDt3aWR0aDozNSU7Ij48L2E+Ci0gICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aXRhbi50aGlua2F1cmVsaXVzLmNvbS8iPlRpdGFuPC9hPiZ0cmFkZTsgaXMgYW4gQXBhY2hlMiBsaWNlbnNlZCBzY2FsYWJsZSwgZGlzdHJpYnV0ZWQgZ3JhcGggZGF0YWJhc2Ugb3B0aW1pemVkIGZvciBzdG9yaW5nIGFuZCBxdWVyeWluZyBncmFwaHMgY29udGFpbmluZyBodW5kcmVkcyBvZiBiaWxsaW9ucyBvZiB2ZXJ0aWNlcyBhbmQgZWRnZXMgZGlzdHJpYnV0ZWQgYWNyb3NzIGEgbXVsdGktbWFjaGluZSBjbHVzdGVyLiBUaXRhbiBpcyBhIHRyYW5zYWN0aW9uYWwgZGF0YWJhc2UgdGhhdCBjYW4gc3VwcG9ydCB0aG91c2FuZHMgb2YgY29uY3VycmVudCB1c2VycyBleGVjdXRpbmcgY29tcGxleCBHcmVtbGluIHRyYXZlcnNhbHMgaW4gcmVhbCB0aW1lLiBUaXRhbiBhbHNvIHByb3ZpZGVzIGFuIGluLW1lbW9yeSwgY29tcHJlc3Npb24tYmFzZWQgT0xBUCBwcm9jZXNzb3IgYXMgd2VsbCBhcyBpbnRlZ3JhdGVzIHdpdGggQXBhY2hlIFRpbmtlclBvcCdzIFNwYXJrL0dpcmFwaCBPTEFQIHByb2Nlc3NvcnMuCi0gICAgICAgICA8L2Rpdj4KLSAgICAgIDwvZGl2PgotICAgICAgPGJyLz4KLSAgICAgIDxkaXYgY2xhc3M9InJvdyI+Ci0gICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tNiBjb2wtbWQtNiI+Ci0gICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90b21zYXd5ZXIuY29tL3Byb2R1Y3RzL3BlcnNwZWN0aXZlcy8iPjxpbWcgc3JjPSJpbWFnZXMvbG9nb3MvdG9tc2F3eWVyLWxvZ28ucG5nIiBzdHlsZT0icGFkZGluZy1yaWdodDoyMHB4O2Zsb2F0OmxlZnQ7d2lkdGg6MzUlOyI+PC9hPgotICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdG9tc2F3eWVyLmNvbS9wcm9kdWN0cy9wZXJzcGVjdGl2ZXMvIj5Ub20gU2F3eWVyIFBlcnNwZWN0aXZlczwvYT4mdHJhZGU7IGlzIGFkdmFuY2VkIGdyYXBoaWNzLWJhc2VkIHNvZnR3YXJlIGZvciBidWlsZGluZyBlbnRlcnByaXNlLWNsYXNzIGRhdGEgcmVsYXRpb25zaGlwIHZpc3VhbGl6YXRpb24gYW5kIGFuYWx5c2lzIGFwcGxpY2F0aW9ucy4gSXQgaXMgYSBjb21wbGV0ZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKFNESykgd2l0aCBhIGdyYXBoaWNzLWJhc2VkIGRlc2lnbiBhbmQgcHJldmlldyBlbnZpcm9ubWVudC4gVG9tIFNhd3llciBQZXJzcGVjdGl2ZXMgY29tYmluZXMgdmlzdWFsaXphdGlvbiwgbGF5b3V0LCBhbmQgYW5hbHlzaXMgdGVjaG5vbG9neSB3aXRoIGFuIGVsZWdhbnQgcGxhdGZvcm0gYXJjaGl0ZWN0dXJlLiBUb20gU2F3eWVyIFBlcnNwZWN0aXZlcyBlbmFibGVzIGludGVyYWN0aW9uIHdpdGggZ3JhcGggZGF0YWJhc2Ugc3lzdGVtcyB2aWEgQXBhY2hlIFRpbmtlclBvcC4KKyAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90b21zYXd5ZXIuY29tL3Byb2R1Y3RzL3BlcnNwZWN0aXZlcy8iPjxpbWcgc3JjPSJpbWcvbG9nb3MvdG9tc2F3eWVyLWxvZ28ucG5nIiBzdHlsZT0icGFkZGluZy1yaWdodDoyMHB4O2Zsb2F0OmxlZnQ7d2lkdGg6MzUlOyI+PC9hPgorICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RvbXNhd3llci5jb20vcHJvZHVjdHMvcGVyc3BlY3RpdmVzLyI+VG9tIFNhd3llciBQZXJzcGVjdGl2ZXM8L2E+JnRyYWRlOyBpcyBhZHZhbmNlZCBncmFwaGljcy1iYXNlZCBzb2Z0d2FyZSBmb3IgYnVpbGRpbmcgZW50ZXJwcmlzZS1jbGFzcyBkYXRhIHJlbGF0aW9uc2hpcCB2aXN1YWxpemF0aW9uIGFuZCBhbmFseXNpcyBhcHBsaWNhdGlvbnMuIEl0IGlzIGEgY29tcGxldGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChTREspIHdpdGggYSBncmFwaGljcy1iYXNlZCBkZXNpZ24gYW5kIHByZXZpZXcgZW52aXJvbm1lbnQuIFRvbSBTYXd5ZXIgUGVyc3BlY3RpdmVzIGNvbWJpbmVzIHZpc3VhbGl6YXRpb24sIGxheW91dCwgYW5kIGFuYWx5c2lzIHRlY2hub2xvZ3kgd2l0aCBhbiBlbGVnYW50IHBsYXRmb3JtIGFyY2hpdGVjdHVyZS4gVG9tIFNhd3llciBQZXJzcGVjdGl2ZXMgZW5hYmxlcyBpbnRlcmFjdGlvbiB3aXRoIGdyYXBoIGRhdGFiYXNlIHN5c3RlbXMgdmlhIEFwYWNoZSBUaW5rZXJQb3AuCiAgICAgICAgICA8L2Rpdj4KICAgICAgIDwvZGl2PgogICAgPC9kaXY+CkBAIC0yMDYsNyArMTk1LDcgQEAKICAgICAgIDxici8+CiAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXNtLTMgY29sLW1kLTMiPgotICAgICAgICAgICAgPGltZyBzcmM9ImltYWdlcy9ncmVtbGluLXF1aWxsLnBuZyIgc3R5bGU9IndpZHRoOjEwMCU7Ij4KKyAgICAgICAgICAgIDxpbWcgc3JjPSJpbWcvZ3JlbWxpbi1xdWlsbC5wbmciIHN0eWxlPSJ3aWR0aDoxMDAlOyI+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS05IGNvbC1tZC05Ij4KICAgICAgICAgICAgIFdpdGggdGhlIGdyb3d0aCBvZiA8YSBocmVmPSJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Ob1NRTCI+Tm9TUUw8L2E+LCBmb3Igd2hpY2ggZ3JhcGggZGF0YWJhc2VzIGFyZSBhIHN1YmNsYXNzLCBtYW55IG5ldyBkYXRhYmFzZSBxdWVyeSBsYW5ndWFnZXMgaGF2ZSBiZWVuIGRldmVsb3BlZC4gU1FMIGhhcwpAQCAtMjMzLDcgKzIyMiw3IEBACiAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tOCBjb2wtbWQtOSI+CiAgICAgICAgICAgICA8YnIvPgogICAgICAgICAgICAgPHN0cm9uZz5EaXN0aW5jdCBxdWVyeSBsYW5ndWFnZTwvc3Ryb25nPjogUXVlcnkgbGFuZ3VhZ2VzIHN1Y2ggYXMgU1FMIGFuZCBTUEFSUUwgYXJlIHNpZ25pZmljYW50bHkgZGlmZmVyZW50IGZyb20gR3JlbWxpbiBpbiB0aGF0IHRoZXkgcmVxdWlyZSBhIHNwZWNpYWwgcHVycG9zZSBjb21waWxlciBpbiBvcmRlciB0bwotICAgICAgICAgICAgZ2VuZXJhdGUgYSB0cmF2ZXJzYWwuIEZvciB0aGlzIHJlYXNvbiwgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3R3aWxtZXMvc3FsLWdyZW1saW4iPlNRTDwvYT4gYW5kIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9ka3VwcGl0ei9zcGFycWwtZ3JlbWxpbiI+U1BBUlFMPC9hPiBHcmVtbGluIGNvbXBpbGVycworICAgICAgICAgICAgZ2VuZXJhdGUgYSB0cmF2ZXJzYWwuIEZvciB0aGlzIHJlYXNvbiwgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3R3aWxtZXMvc3FsLWdyZW1saW4iPlNRTDwvYT4gYW5kIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL2N1cnJlbnQvcmVmZXJlbmNlLyNzcGFycWwtZ3JlbWxpbiI+U1BBUlFMPC9hPiBHcmVtbGluIGNvbXBpbGVycwogICAgICAgICAgICAgY3VycmVudGx5IGV4aXN0LiBOb3RlIHRoYXQsIHdpdGhpbiByZWFzb24sIEdyZW1saW4gY29tcGlsZXJzIGRvIG5vdCBuZWVkIHRvIGNvbmNlcm4gdGhlbXNlbHZlcyB3aXRoIGFuIG9wdGltYWwgY29tcGlsYXRpb24gKG9ubHkgYSBzZW1hbnRpY2FsbHkgY29ycmVjdCBjb21waWxhdGlvbikgYXMgdGhlIEdyZW1saW4KICAgICAgICAgICAgIHRyYXZlcnNhbCBtYWNoaW5lIHdpbGwgbGV2ZXJhZ2UgdHJhdmVyc2FsIHN0cmF0ZWdpZXMgZm9yIGJvdGggY29tcGlsZS10aW1lIGFuZCBydW50aW1lIG9wdGltaXphdGlvbnMuIE1vcmVvdmVyLCB0aGUgbGFuZ3VhZ2UgZGVzaWduZXIgY2FuIHJlc3QgYXNzdXJlZCB0aGF0IHF1ZXJpZXMgaW4gdGhlaXIgbGFuZ3VhZ2UKICAgICAgICAgICAgIHdpbGwgYmUgYWJsZSB0byBldmFsdWF0ZSBhcyBlaXRoZXIgYW4gT0xUUCBvciBPTEFQIHF1ZXJ5LiBUaGUgZXhhbXBsZSBvbiB0aGUgcmlnaHQgaXMgYSBTUEFSUUwgcXVlcnkgdGhhdCBkZXRlcm1pbmVzIHRoZSBhdmVyYWdlIHJhdGluZyBmb3IgR3JlbWxpbidzIGZyaWVuZHMnIHByb2plY3RzLiBJdCBpcyBiZWNhdXNlCkBAIC0yODYsNDAgKzI3NSw0NCBAQAogICAgICAgPGJyLz4KICAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tNiBjb2wtbWQtNiI+Ci0gICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy9jdXJyZW50L3JlZmVyZW5jZS8jZ3JlbWxpbi1jb25zb2xlIj48aW1nIHNyYz0iaW1hZ2VzL2xvZ29zL2dyZW1saW4tZ3Jvb3Z5LWxvZ28ucG5nIiBzdHlsZT0icGFkZGluZy1yaWdodDoyMHB4O2Zsb2F0OmxlZnQ7d2lkdGg6MzUlOyI+PC9hPgorICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvY3VycmVudC9yZWZlcmVuY2UvI2dyZW1saW4tY29uc29sZSI+PGltZyBzcmM9ImltZy9sb2dvcy9ncmVtbGluLWdyb292eS1sb2dvLnBuZyIgc3R5bGU9InBhZGRpbmctcmlnaHQ6MjBweDtmbG9hdDpsZWZ0O3dpZHRoOjM1JTsiPjwvYT4KICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL2N1cnJlbnQvcmVmZXJlbmNlLyNncmVtbGluLWNvbnNvbGUiPkdyZW1saW4tR3Jvb3Z5PC9hPiByZXByZXNlbnRzIEdyZW1saW4gaW5zaWRlIHRoZSBHcm9vdnkgbGFuZ3VhZ2UgYW5kIGNhbiBiZSBsZXZlcmFnZWQgYnkgYW55IEpWTS1iYXNlZCBwcm9qZWN0IGVpdGhlciB0aHJvdWdoIGdtYXZlbiBvciBpdHMgSlNSLTIyMyBTY3JpcHRFbmdpbmUgaW1wbGVtZW50YXRpb24uIEl0IGFsc28gc2VydmVzIGFzIHRoZSBHcmVtbGluIENvbnNvbGUgbGFuZ3VhZ2UuCiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS02IGNvbC1tZC02Ij4KLSAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL2N1cnJlbnQvcmVmZXJlbmNlLyNfb25fZ3JlbWxpbl9sYW5ndWFnZV92YXJpYW50cyI+PGltZyBzcmM9ImltYWdlcy9sb2dvcy9ncmVtbGluLWphdmEtbG9nby5wbmciIHN0eWxlPSJwYWRkaW5nLXJpZ2h0OjIwcHg7ZmxvYXQ6bGVmdDt3aWR0aDozNSU7Ij48L2E+CisgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy9jdXJyZW50L3JlZmVyZW5jZS8jX29uX2dyZW1saW5fbGFuZ3VhZ2VfdmFyaWFudHMiPjxpbWcgc3JjPSJpbWcvbG9nb3MvZ3JlbWxpbi1qYXZhLWxvZ28ucG5nIiBzdHlsZT0icGFkZGluZy1yaWdodDoyMHB4O2Zsb2F0OmxlZnQ7d2lkdGg6MzUlOyI+PC9hPgogICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvY3VycmVudC9yZWZlcmVuY2UvI19vbl9ncmVtbGluX2xhbmd1YWdlX3ZhcmlhbnRzIj5HcmVtbGluLUphdmE8L2E+IHJlcHJlc2VudHMgR3JlbWxpbiBpbnNpZGUgdGhlIEphdmE4IGxhbmd1YWdlLiBHcmVtbGluLUphdmEgaXMgY29uc2lkZXJlZCB0aGUgY2Fub25pY2FsLCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb2YgR3JlbWxpbiBhbmQgaXMgdGhlIHByaW1hcnkgY29tcGlsZXIgZm9yIGFsbCBsYW1iZGEtZnJlZSBieXRlY29kZSBkdWUgdG8gaXRzIHNwZWVkIHJlbGF0aXZlIHRvIG90aGVyIHNjcmlwdC1iYXNlZCwgSlZNIHZhcmlhbnRzLgogICAgICAgICAgPC9kaXY+CiAgICAgICA8L2Rpdj4KICAgICAgIDxici8+CiAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXNtLTYgY29sLW1kLTYiPgotICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvY3VycmVudC9yZWZlcmVuY2UvI2dyZW1saW4tcHl0aG9uIj48aW1nIHNyYz0iaW1hZ2VzL2xvZ29zL2dyZW1saW4tcHl0aG9uLWxvZ28ucG5nIiBzdHlsZT0icGFkZGluZy1yaWdodDoyMHB4O2Zsb2F0OmxlZnQ7d2lkdGg6MzUlOyI+PC9hPgorICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvY3VycmVudC9yZWZlcmVuY2UvI2dyZW1saW4tcHl0aG9uIj48aW1nIHNyYz0iaW1nL2xvZ29zL2dyZW1saW4tcHl0aG9uLWxvZ28ucG5nIiBzdHlsZT0icGFkZGluZy1yaWdodDoyMHB4O2Zsb2F0OmxlZnQ7d2lkdGg6MzUlOyI+PC9hPgogICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvY3VycmVudC9yZWZlcmVuY2UvI2dyZW1saW4tcHl0aG9uIj5HcmVtbGluLVB5dGhvbjwvYT4gcmVwcmVzZW50cyBHcmVtbGluIGluc2lkZSB0aGUgUHl0aG9uIGxhbmd1YWdlIGFuZCBjYW4gYmUgdXNlZCBieSBhbnkgUHl0aG9uIHZpcnR1YWwgbWFjaGluZSBzdWNoIGFzIENQeXRob24gYW5kIEp5dGhvbi4gR3JlbWxpbi1QeXRob24gdHJhdmVyc2FscyB0cmFuc2xhdGUgdG8gR3JlbWxpbiBieXRlY29kZSBmb3IgUmVtb3RlQ29ubmVjdGlvbiBleGVjdXRpb24gKGUuZy4gR3JlbWxpbiBTZXJ2ZXIpLgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tNiBjb2wtbWQtNiI+Ci0gICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbXBvbGxtZWllci9ncmVtbGluLXNjYWxhIj48aW1nIHNyYz0iaW1hZ2VzL2xvZ29zL2dyZW1saW4tc2NhbGEtbG9nby5wbmciIHN0eWxlPSJwYWRkaW5nLXJpZ2h0OjIwcHg7ZmxvYXQ6bGVmdDt3aWR0aDozNSU7Ij48L2E+CisgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy9jdXJyZW50L3JlZmVyZW5jZS8jZ3JlbWxpbi1Eb3ROZXQiPjxpbWcgc3JjPSJpbWcvbG9nb3MvZ3JlbWxpbi1kb3RuZXQtbG9nby5wbmciIHN0eWxlPSJwYWRkaW5nLXJpZ2h0OjIwcHg7ZmxvYXQ6bGVmdDt3aWR0aDozNSU7Ij48L2E+CisgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy9jdXJyZW50L3JlZmVyZW5jZS8jZ3JlbWxpbi1Eb3ROZXQiPkdyZW1saW4uTmV0PC9hPiByZXByZXNlbnRzIEdyZW1saW4gaW5zaWRlIHRoZSBDIyBsYW5ndWFnZSBhbmQgY2FuIGJlIHVzZWQgYnkgYW55IC5ORVQtYmFzZWQgcHJvamVjdC4gR3JlbWxpbi5OZXQgdHJhdmVyc2FscyB0cmFuc2xhdGUgdG8gR3JlbWxpbiBieXRlY29kZSBmb3IgUmVtb3RlQ29ubmVjdGlvbiBleGVjdXRpb24gKGUuZy4gR3JlbWxpbiBTZXJ2ZXIpLgorICAgICAgICAgPC9kaXY+CisgICAgICA8L2Rpdj4KKyAgICAgIDxici8+CisgICAgICA8ZGl2IGNsYXNzPSJyb3ciPgorICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXNtLTYgY29sLW1kLTYiPgorICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL21wb2xsbWVpZXIvZ3JlbWxpbi1zY2FsYSI+PGltZyBzcmM9ImltZy9sb2dvcy9ncmVtbGluLXNjYWxhLWxvZ28ucG5nIiBzdHlsZT0icGFkZGluZy1yaWdodDoyMHB4O2Zsb2F0OmxlZnQ7d2lkdGg6MzUlOyI+PC9hPgogICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL21wb2xsbWVpZXIvZ3JlbWxpbi1zY2FsYSI+R3JlbWxpbi1TY2FsYTwvYT4gaXMgYSBHcmVtbGluIGxhbmd1YWdlIHZhcmlhbnQgdGhhdCB1c2VzIHN0YW5kYXJkIFNjYWxhIGZ1bmN0aW9ucywgcHJvdmlkZXMgYSBjb252ZW5pZW50IERTTCB0byBjcmVhdGUgdmVydGljZXMgYW5kIGVkZ2VzLCBlbnN1cmVzIHR5cGUgc2FmZSB0cmF2ZXJzYWxzLCBhbmQgaW5jdXJycyBtaW5pbWFsIHJ1bnRpbWUgb3ZlcmhlYWQgYnkgb25seSBhbGxvY2F0aW5nIGluc3RhbmNlcyBpZiBhYnNvbHV0ZWx5IG5lY2Vzc2FyeS4KICAgICAgICAgIDwvZGl2PgotICAgICAgPC9kaXY+Ci0gICAgICA8YnIvPgotICAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS02IGNvbC1tZC02Ij4KLSAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jbG9qdXJld2Vya3ovb2dyZSI+PGltZyBzcmM9ImltYWdlcy9sb2dvcy9vZ3JlLWxvZ28ucG5nIiBzdHlsZT0icGFkZGluZy1yaWdodDoyMHB4O2Zsb2F0OmxlZnQ7d2lkdGg6MzUlOyI+PC9hPgorICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2Nsb2p1cmV3ZXJrei9vZ3JlIj48aW1nIHNyYz0iaW1nL2xvZ29zL29ncmUtbG9nby5wbmciIHN0eWxlPSJwYWRkaW5nLXJpZ2h0OjIwcHg7ZmxvYXQ6bGVmdDt3aWR0aDozNSU7Ij48L2E+CiAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2xvanVyZXdlcmt6L29ncmUiPk9ncmU8L2E+IGlzIGEgR3JlbWxpbiBsYW5ndWFnZSB2YXJpYW50IGZvciBDbG9qdXJlLiBJdCBwcm92aWRlcyBhbiBBUEkgdGhhdCBlbmhhbmNlcyB0aGUgZXhwcmVzc2l2aXR5IG9mIEdyZW1saW4gd2l0aGluIENsb2p1cmUsIGl0IGRvZXNuJ3QgaW50cm9kdWNlIGFueSBzaWduaWZpY2FudCBhbW91bnQgb2YgcGVyZm9ybWFuY2Ugb3ZlcmhlYWQsIGFuZCBpdCBjYW4gd29yayB3aXRoIGFueSBUaW5rZXJQb3AtZW5hYmxlZCBncmFwaCBkYXRhYmFzZSBvciBhbmFseXRpYyBzeXN0ZW0uCi0gICAgICAgICA8L2Rpdj4KLSAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS02IGNvbC1tZC02Ij4KLSAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9ka3VwcGl0ei9zcGFycWwtZ3JlbWxpbiI+PGltZyBzcmM9ImltYWdlcy9sb2dvcy9zcGFycWwtZ3JlbWxpbi1sb2dvLnBuZyIgc3R5bGU9InBhZGRpbmctcmlnaHQ6MjBweDtmbG9hdDpsZWZ0O3dpZHRoOjM1JTsiPjwvYT4KLSAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9ka3VwcGl0ei9zcGFycWwtZ3JlbWxpbiI+U1BBUlFMLUdyZW1saW48L2E+IGlzIGEgY29tcGlsZXIgdXNlZCB0byB0cmFuc2Zvcm0gU1BBUlFMIHF1ZXJpZXMgaW50byBHcmVtbGluIGJ5dGVjb2RlLiBJdCBpcyBiYXNlZCBvbiB0aGUgQXBhY2hlIEplbmEgU1BBUlFMIHByb2Nlc3NvciBBUlEsIHdoaWNoIHByb3ZpZGVzIGFjY2VzcyB0byBhIHN5bnRheCB0cmVlIG9mIGEgU1BBUlFMIHF1ZXJ5LgotICAgICAgICAgPC9kaXY+CisgICAgICAgICA8L2Rpdj4gICAgICAgICAKICAgICAgIDwvZGl2PgogICAgICAgPGJyLz4KICAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tNiBjb2wtbWQtNiI+Ci0gICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdHdpbG1lcy9zcWwtZ3JlbWxpbiI+PGltZyBzcmM9ImltYWdlcy9sb2dvcy9zcWwtZ3JlbWxpbi1sb2dvLnBuZyIgc3R5bGU9InBhZGRpbmctcmlnaHQ6MjBweDtmbG9hdDpsZWZ0O3dpZHRoOjM1JTsiPjwvYT4KKyAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL2N1cnJlbnQvcmVmZXJlbmNlLyNzcGFycWwtZ3JlbWxpbiI+PGltZyBzcmM9ImltZy9sb2dvcy9zcGFycWwtZ3JlbWxpbi1sb2dvLnBuZyIgc3R5bGU9InBhZGRpbmctcmlnaHQ6MjBweDtmbG9hdDpsZWZ0O3dpZHRoOjM1JTsiPjwvYT4KKyAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL2N1cnJlbnQvcmVmZXJlbmNlLyNzcGFycWwtZ3JlbWxpbiI+U1BBUlFMLUdyZW1saW48L2E+IGlzIGEgY29tcGlsZXIgdXNlZCB0byB0cmFuc2Zvcm0gU1BBUlFMIHF1ZXJpZXMgaW50byBHcmVtbGluIGJ5dGVjb2RlLiBJdCBpcyBiYXNlZCBvbiB0aGUgQXBhY2hlIEplbmEgU1BBUlFMIHByb2Nlc3NvciBBUlEsIHdoaWNoIHByb3ZpZGVzIGFjY2VzcyB0byBhIHN5bnRheCB0cmVlIG9mIGEgU1BBUlFMIHF1ZXJ5LgorICAgICAgICAgPC9kaXY+CisgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tNiBjb2wtbWQtNiI+CisgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdHdpbG1lcy9zcWwtZ3JlbWxpbiI+PGltZyBzcmM9ImltZy9sb2dvcy9zcWwtZ3JlbWxpbi1sb2dvLnBuZyIgc3R5bGU9InBhZGRpbmctcmlnaHQ6MjBweDtmbG9hdDpsZWZ0O3dpZHRoOjM1JTsiPjwvYT4KICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90d2lsbWVzL3NxbC1ncmVtbGluIj5TUUwtR3JlbWxpbjwvYT4gY29tcGlsZXMgQU5TSSBTUUwgdG8gR3JlbWxpbiBieXRlY29kZSBhbmQgaXMgdXNlZnVsIGZvciBjb25uZWN0aW5nIEpEQkMgcmVwb3J0aW5nL2J1c2luZXNzCiAgICAgICAgICAgICBpbnRlbGxpZ2VuY2UgdG9vbHMgdG8gYW55IFRpbmtlclBvcC1lbmFibGVkIGdyYXBoIHN5c3RlbS4KICAgICAgICAgIDwvZGl2PgpAQCAtMzMzLDE2ICszMjYsMTYgQEAKICAgICAgIDxkaXYgY2xhc3M9ImNhcm91c2VsIHNsaWRlIiBkYXRhLXJpZGU9ImNhcm91c2VsIiBkYXRhLXR5cGU9Im11bHRpIiBkYXRhLWludGVydmFsPSI3MDAwIiBpZD0icmVsYXRlZFJlc291cmNlcyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJvdXNlbEdyaWQtaW5uZXIiPgogICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSBhY3RpdmUiPgotICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLWxnLTMgY29sLW1kLTMgY29sLXNtLTQgY29sLXhzLTYiPjxhIGhyZWY9Imh0dHBzOi8vbWFya29yb2RyaWd1ZXouY29tLzIwMTMvMDEvMDkvb24tZ3JhcGgtY29tcHV0aW5nLyI+PGltZyBzcmM9ImltYWdlcy9yZXNvdXJjZXMvb24tZ3JhcGgtY29tcHV0aW5nLXJlc291cmNlLnBuZyIgd2lkdGg9IjEwMCUiLz48L2E+PC9kaXY+CisgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbGctMyBjb2wtbWQtMyBjb2wtc20tNCBjb2wteHMtNiI+PGEgaHJlZj0iaHR0cHM6Ly9tYXJrb3JvZHJpZ3Vlei5jb20vMjAxMy8wMS8wOS9vbi1ncmFwaC1jb21wdXRpbmcvIj48aW1nIHNyYz0iaW1nL3Jlc291cmNlcy9vbi1ncmFwaC1jb21wdXRpbmctcmVzb3VyY2UucG5nIiB3aWR0aD0iMTAwJSIvPjwvYT48L2Rpdj4KICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+Ci0gICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbGctMyBjb2wtbWQtMyBjb2wtc20tNCBjb2wteHMtNiI+PGEgaHJlZj0iaHR0cHM6Ly9hY2FkZW15LmRhdGFzdGF4LmNvbS9jb3Vyc2VzL2RzMjMwLWdldHRpbmctc3RhcnRlZC1ncmVtbGluL3Byb3BlcnR5LWdyYXBoIj48aW1nIHNyYz0iaW1hZ2VzL3Jlc291cmNlcy9wcm9wZXJ0eS1ncmFwaC1yZXNvdXJjZS5wbmciIHdpZHRoPSIxMDAlIi8+PC9hPjwvZGl2PgorICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLWxnLTMgY29sLW1kLTMgY29sLXNtLTQgY29sLXhzLTYiPjxhIGhyZWY9Imh0dHBzOi8vYWNhZGVteS5kYXRhc3RheC5jb20vY291cnNlcy9kczIzMC1nZXR0aW5nLXN0YXJ0ZWQtZ3JlbWxpbi9wcm9wZXJ0eS1ncmFwaCI+PGltZyBzcmM9ImltZy9yZXNvdXJjZXMvcHJvcGVydHktZ3JhcGgtcmVzb3VyY2UucG5nIiB3aWR0aD0iMTAwJSIvPjwvYT48L2Rpdj4KICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+Ci0gICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbGctMyBjb2wtbWQtMyBjb2wtc20tNCBjb2wteHMtNiI+PGEgaHJlZj0iaHR0cDovL25lbzRqLmNvbS93aHktZ3JhcGgtZGF0YWJhc2VzLyI+PGltZyBzcmM9ImltYWdlcy9yZXNvdXJjZXMvd2h5LWdyYXBoLWRhdGFiYXNlcy1yZXNvdXJjZS5wbmciIHdpZHRoPSIxMDAlIi8+PC9hPjwvZGl2PgorICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLWxnLTMgY29sLW1kLTMgY29sLXNtLTQgY29sLXhzLTYiPjxhIGhyZWY9Imh0dHA6Ly9uZW80ai5jb20vd2h5LWdyYXBoLWRhdGFiYXNlcy8iPjxpbWcgc3JjPSJpbWcvcmVzb3VyY2VzL3doeS1ncmFwaC1kYXRhYmFzZXMtcmVzb3VyY2UucG5nIiB3aWR0aD0iMTAwJSIvPjwvYT48L2Rpdj4KICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+Ci0gICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbGctMyBjb2wtbWQtMyBjb2wtc20tNCBjb2wteHMtNiI+PGEgaHJlZj0iaHR0cHM6Ly90aGlua2F1cmVsaXVzLmNvbS8yMDEyLzAzLzIyL3VuZGVyc3RhbmRpbmctdGhlLXdvcmxkLXVzaW5nLXRhYmxlcy1hbmQtZ3JhcGhzLyI+PGltZyBzcmM9ImltYWdlcy9yZXNvdXJjZXMvdGFibGVzLWFuZC1ncmFwaHMtcmVzb3VyY2UucG5nIiB3aWR0aD0iMTAwJSIvPjwvYT48L2Rpdj4KKyAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1sZy0zIGNvbC1tZC0zIGNvbC1zbS00IGNvbC14cy02Ij48YSBocmVmPSJodHRwczovL3RoaW5rYXVyZWxpdXMuY29tLzIwMTIvMDMvMjIvdW5kZXJzdGFuZGluZy10aGUtd29ybGQtdXNpbmctdGFibGVzLWFuZC1ncmFwaHMvIj48aW1nIHNyYz0iaW1nL3Jlc291cmNlcy90YWJsZXMtYW5kLWdyYXBocy1yZXNvdXJjZS5wbmciIHdpZHRoPSIxMDAlIi8+PC9hPjwvZGl2PgogICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxhIGNsYXNzPSJsZWZ0IGNhcm91c2VsR3JpZC1jb250cm9sIiBocmVmPSIjcmVsYXRlZFJlc291cmNlcyIgZGF0YS1zbGlkZT0icHJldiI+CkBAIC0zNzMsNCArMzY2LDYgQEAKICAgICAgICAgIH0pOwogICAgICAgPC9zY3JpcHQ+CiAgICA8L2Rpdj4KKyAgIDxici8+CisgICA8YnIvPgogPC9kaXY+CmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS90ZW1wbGF0ZS9oZWFkZXItZm9vdGVyLmh0bWwgYi9kb2NzL3NpdGUvaG9tZS90ZW1wbGF0ZS9oZWFkZXItZm9vdGVyLmh0bWwKaW5kZXggYzAyYjE1NS4uMTk0NzA2MyAxMDA2NDQKLS0tIGEvZG9jcy9zaXRlL2hvbWUvdGVtcGxhdGUvaGVhZGVyLWZvb3Rlci5odG1sCisrKyBiL2RvY3Mvc2l0ZS9ob21lL3RlbXBsYXRlL2hlYWRlci1mb290ZXIuaHRtbApAQCAtNDEsMTAgKzQxLDEwIEBACiAgICAgICA8bGluayBocmVmPSJjc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIi8+CiAgICAgICA8bGluayBocmVmPSJjc3MvYm9vdHN0cmFwLW1vZHMuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIi8+CiAgICAgICA8IS0tIExlIGZhdiBhbmQgdG91Y2ggaWNvbnMgLS0+Ci0gICAgICA8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9ImltYWdlcy9mYXZpY29uLmljbyI+Ci0gICAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIGhyZWY9ImltYWdlcy9hcHBsZS10b3VjaC1pY29uLnBuZyI+Ci0gICAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIHNpemVzPSI3Mng3MiIgaHJlZj0iaW1hZ2VzL2FwcGxlLXRvdWNoLWljb24tNzJ4NzIucG5nIj4KLSAgICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjExNHgxMTQiIGhyZWY9ImltYWdlcy9hcHBsZS10b3VjaC1pY29uLTExNHgxMTQucG5nIj4KKyAgICAgIDxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0iaW1nL2Zhdmljb24uaWNvIj4KKyAgICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgaHJlZj0iaW1nL2FwcGxlLXRvdWNoLWljb24ucG5nIj4KKyAgICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjcyeDcyIiBocmVmPSJpbWcvYXBwbGUtdG91Y2gtaWNvbi03Mng3Mi5wbmciPgorICAgICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iMTE0eDExNCIgaHJlZj0iaW1nL2FwcGxlLXRvdWNoLWljb24tMTE0eDExNC5wbmciPgogICAgPC9oZWFkPgogICAgPGJvZHk+CiAgICAgICA8c2NyaXB0IHNyYz0ianMvcHJpc20uanMiPjwvc2NyaXB0PiAgICAgCkBAIC03NSwxNiArNzUsMTYgQEAKICAgICAgICAgICAgICAgICAgIERvY3VtZW50YXRpb24gPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUiPgotICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93bi1oZWFkZXIiPkxhdGVzdDogMy4zLjQgKDE1LU9jdC0yMDE4KTwvbGk+Ci0gICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvY3VycmVudCI+VGlua2VyUG9wIDMuMy40PC9hPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duLWhlYWRlciI+TGF0ZXN0OiAzLjQuMiAoMjgtTWF5LTIwMTkpPC9saT4KKyAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy9jdXJyZW50Ij5UaW5rZXJQb3AgMy40LjI8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy9jdXJyZW50L3VwZ3JhZGUiPlVwZ3JhZGUgSW5mb3JtYXRpb248L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MvY3VycmVudC9jb3JlLyI+Q29yZSBKYXZhZG9jIEFQSTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy9jdXJyZW50L2Z1bGwvIj5GdWxsIEphdmFkb2MgQVBJPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgcm9sZT0ic2VwYXJhdG9yIiBjbGFzcz0iZGl2aWRlciI+PC9saT4KLSAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24taGVhZGVyIj5NYWludGVuYW5jZTogMy4yLjEwICgxNS1PY3QtMjAxOCk8L2xpPgotICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuMi4xMC8iPlRpbmtlclBvcCAzLjIuMTA8L2E+PC9saT4KLSAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MvMy4yLjEwL2NvcmUvIj5Db3JlIEphdmFkb2MgQVBJPC9hPjwvbGk+Ci0gICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzLzMuMi4xMC9mdWxsLyI+RnVsbCBKYXZhZG9jIEFQSTwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93bi1oZWFkZXIiPk1haW50ZW5hbmNlOiAzLjMuNyAoMjgtTWF5LTIwMTkpPC9saT4KKyAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjMuNy8iPlRpbmtlclBvcCAzLjMuNjwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy8zLjMuNy9jb3JlLyI+Q29yZSBKYXZhZG9jIEFQSTwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy8zLjMuNy9mdWxsLyI+RnVsbCBKYXZhZG9jIEFQSTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIHJvbGU9InNlcGFyYXRvciIgY2xhc3M9ImRpdmlkZXIiPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvIj5Eb2N1bWVudGF0aW9uIEFyY2hpdmVzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzLyI+SmF2YWRvYyBBcmNoaXZlczwvYT48L2xpPgpAQCAtMTAwLDYgKzEwMCw5IEBACiAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvY3VycmVudC90dXRvcmlhbHMvdGhlLWdyZW1saW4tY29uc29sZS8iPlRoZSBHcmVtbGluIENvbnNvbGU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy9jdXJyZW50L3JlY2lwZXMvIj5HcmVtbGluIFJlY2lwZXM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy9jdXJyZW50L3R1dG9yaWFscy9ncmVtbGluLWxhbmd1YWdlLXZhcmlhbnRzLyI+R3JlbWxpbiBMYW5ndWFnZSBWYXJpYW50czwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL2N1cnJlbnQvdHV0b3JpYWxzL2dyZW1saW5zLWFuYXRvbXkvIj5HcmVtbGluJ3MgQW5hdG9teTwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICAgPGxpIHJvbGU9InNlcGFyYXRvciIgY2xhc3M9ImRpdmlkZXIiPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL2tlbHZpbmxhd3JlbmNlLm5ldC9ib29rL0dyZW1saW4tR3JhcGgtR3VpZGUuaHRtbCI+Qm9vazogUHJhY3RpY2FsIEdyZW1saW4gYnkgS2VsdmluIExhd3JlbmNlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3NxbDJncmVtbGluLmNvbS8iPlNRTDJHcmVtbGluPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9saT4KQEAgLTExNiw3ICsxMTksNyBAQAogICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9ImluZGV4Lmh0bWwjY29tbWl0dGVycyI+UHJvamVjdCBDb21taXR0ZXJzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0icG9saWN5Lmh0bWwiPlBvbGljaWVzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgcm9sZT0ic2VwYXJhdG9yIiBjbGFzcz0iZGl2aWRlciI+PC9saT4KLSAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL3RpbmtlcnBvcC8iPjxpbWcgc3JjPSJpbWFnZXMvZ3JlbWxpbi1naXRodWIucG5nIiBjbGFzcz0ibmF2LWljb24iLz5HaXRIdWI8L2E+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL3RpbmtlcnBvcC8iPjxpbWcgc3JjPSJpbWcvZ3JlbWxpbi1naXRodWIucG5nIiBjbGFzcz0ibmF2LWljb24iLz5HaXRIdWI8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL3R3aXR0ZXIuY29tL2FwYWNoZXRpbmtlcnBvcCI+VHdpdHRlcjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvbGk+CkBAIC0xMjcsNiArMTMwLDcgQEAKICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyI+QXBhY2hlIEhvbWVwYWdlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzLyI+TGljZW5zZTwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvZXZlbnRzL2N1cnJlbnQtZXZlbnQiPkV2ZW50czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9mb3VuZGF0aW9uL3Nwb25zb3JzaGlwLmh0bWwiPlNwb25zb3JzaGlwPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2ZvdW5kYXRpb24vdGhhbmtzLmh0bWwiPlRoYW5rczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9zZWN1cml0eS8iPlNlY3VyaXR5PC9hPjwvbGk+CkBAIC0xMzgsNyArMTQyLDcgQEAKICAgICAgICEhISEhQk9EWSEhISEhCiAgICAgICA8ZGl2IGlkPSJmb290ZXIiPgogICAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KLSAgICAgICAgICAgIDxwIGNsYXNzPSJtdXRlZCBjcmVkaXQiPkFwYWNoZSBUaW5rZXJQb3AsIFRpbmtlclBvcCwgQXBhY2hlLCBBcGFjaGUgZmVhdGhlciBsb2dvLCBhbmQgQXBhY2hlIFRpbmtlclBvcCBwcm9qZWN0IGxvZ28gYXJlIGVpdGhlciByZWdpc3RlcmVkIHRyYWRlbWFya3Mgb3IgdHJhZGVtYXJrcyBvZiA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIj5UaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb248L2E+IGluIHRoZSBVbml0ZWQgU3RhdGVzIGFuZCBvdGhlciBjb3VudHJpZXMuCisgICAgICAgICAgICA8cCBjbGFzcz0ibXV0ZWQgY3JlZGl0Ij5Db3B5cmlnaHQgwqkgMjAxNS0yMDE5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi48YnIvPkFwYWNoZSBUaW5rZXJQb3AsIFRpbmtlclBvcCwgQXBhY2hlLCBBcGFjaGUgZmVhdGhlciBsb2dvLCBhbmQgQXBhY2hlIFRpbmtlclBvcCBwcm9qZWN0IGxvZ28gYXJlIGVpdGhlciByZWdpc3RlcmVkIHRyYWRlbWFya3Mgb3IgdHJhZGVtYXJrcyBvZiA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIj5UaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb248L2E+IGluIHRoZSBVbml0ZWQgU3RhdGVzIGFuZCBvdGhlciBjb3VudHJpZXMuCiAgICAgICAgICAgICA8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgIDwvZGl2PgpkaWZmIC0tZ2l0IGEvZG9jcy9zcmMvZGV2L2RldmVsb3Blci9hZG1pbmlzdHJhdGlvbi5hc2NpaWRvYyBiL2RvY3Mvc3JjL2Rldi9kZXZlbG9wZXIvYWRtaW5pc3RyYXRpb24uYXNjaWlkb2MKaW5kZXggMGQ5Mzk0Mi4uYzQ5ODMzNSAxMDA2NDQKLS0tIGEvZG9jcy9zcmMvZGV2L2RldmVsb3Blci9hZG1pbmlzdHJhdGlvbi5hc2NpaWRvYworKysgYi9kb2NzL3NyYy9kZXYvZGV2ZWxvcGVyL2FkbWluaXN0cmF0aW9uLmFzY2lpZG9jCkBAIC04MSw2ICs4MSw3IEBACiAuIE9uY2UgdmVyaWZpZWQsIHByb3ZpZGUgdGhlIG5ldyBjb21taXR0ZXIgYWNjZXNzIHRvIHRoZSByZXBvc2l0b3J5LCB3aGljaCBpcyBtb3N0IGVhc2lseSBkb25lIHRocm91Z2gKIGxpbms6aHR0cHM6Ly93aGltc3kuYXBhY2hlLm9yZy9yb3N0ZXIvY29tbWl0dGVlL1tXaGltc3ldLgogLiBTZW5kIGFuIGFubm91bmNlbWVudCBlbWFpbCB0byB0aGUgZGV2ZWxvcGVyIGFuZCB1c2VyIG1haWxpbmcgbGlzdHMgd2l0aCB0aGUgdGVtcGxhdGUgYmVsb3cuCisuIFVwZGF0ZSBKSVJBIHRvIGluY2x1ZGUgdGhpcyBwZXJzb24gaW4gdGhlICJjb21taXR0ZXJzIiBncm91cC4KIAogW3NvdXJjZSx0ZXh0XQogLS0tLQpAQCAtOTcsMTIgKzk4LDkgQEAKIHByb2R1Y3Rpdml0eS4KIC0tLS0KIAotRmluYWxseSwgbmV3IGNvbW1pdHRlcnMgc2hvdWxkIGJlIHNlbnQgYW4gZW1haWwgdGhhdCBjb3ZlcnMgc29tZSBvZiB0aGUgYWRtaW5pc3RyYXRpdmUgZWxlbWVudHMgb2YgdGhlaXIgbmV3IHJvbGU6Ci0KLSogbGluazpodHRwczovL3d3dy5hcGFjaGUub3JnL2Rldi9uZXctY29tbWl0dGVycy1ndWlkZS5odG1sW0FwYWNoZSBDb21taXR0ZXIgR3VpZGVdCi0qIGxpbms6aHR0cDovL3d3dy5hcGFjaGUub3JnL2Rldi9jb21taXR0ZXJzLmh0bWxbQXBhY2hlIENvbW1pdHRlciBGQVFdCi0qIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL2N1cnJlbnQvZGV2L2RldmVsb3Blci9bVGlua2VyUG9wIERldmVsb3BlciBEb2N1bWVudGF0aW9uXQotKiogQnJpbmcgc3BlY2lmaWMgYXR0ZW50aW9uIHRvIHRoZSAiY29tbWl0dGVyIiBzZWN0aW9uIHdoaWNoIGRlc2NyaWJlcyBvdXIgZ2VuZXJhbCBwb2xpY2llcy4KK0ZpbmFsbHksIG5ldyBjb21taXR0ZXJzIHNob3VsZCBiZSBzZW50IGFuIGVtYWlsIHRoYXQgY292ZXJzIHNvbWUgb2YgdGhlIGFkbWluaXN0cmF0aXZlIGVsZW1lbnRzIG9mIHRoZWlyIG5ldyByb2xlLgorR2VuZXJhbGx5IHNwZWFraW5nIHRoZSBlbWFpbCBjYW4gbGFyZ2VseSBqdXN0IHBvaW50IHRoZW0gdG8gdGhlIDw8aW5pdGlhbC1zZXR1cCxJbml0aWFsIFNldHVwPj4gc2VjdGlvbiBvZiB0aGlzCitkb2N1bWVudGF0aW9uLgogCiA9PSBOZXcgUE1DIE1lbWJlcnMKIApAQCAtMTg0LDMgKzE4Miw0NyBAQAogW3NvdXJjZSx0ZXh0XQogaHR0cHM6Ly9zdm4uYXBhY2hlLm9yZy9yZXBvcy9wcml2YXRlL2ZvdW5kYXRpb24vYm9hcmQKIAorW1tjb250cmlidXRvci1saXN0aW5nXV0KKz09IENvbnRyaWJ1dG9yIExpc3RpbmcKKworQ29udHJpYnV0aW9ucyBjYW4gY29tZSBpbiA8PHdheXMtdG8tY29udHJpYnV0ZSxtYW55IGZvcm1zPj4gYW5kIGV4dGVuZCB3ZWxsIGJleW9uZCBjb2RlIGNvbnRyaWJ1dGlvbnMuIFRpbmtlclBvcAorc3RyaXZlcyB0byBlbnN1cmUgdGhhdCBjb250cmlidXRpb25zIGFyZSBob25lc3RseSBhbmQgYWNjdXJhdGVseSByZWNvZ25pemVkIGZvciB0aGUgYmVuZWZpdCBvZiB0aGUgaW5kaXZpZHVhbHMgd2hvCitoZWxwIG1ha2UgVGlua2VyUG9wIHBvc3NpYmxlLgorCitPbmUgb2YgdGhlIHdheXMgaW4gd2hpY2ggdGhpcyByZWNvZ25pdGlvbiBpcyBzdXBwb3J0ZWQgaXMgYnkgd2F5IG9mIHRoZQorbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnLyNjb250cmlidXRvcnNbQ29udHJpYnV0b3IgTGlzdGluZ10gb24gdGhlIFRpbmtlclBvcCBob21lIHBhZ2UsIHdoaWNoIGxpc3QgdGhvc2Ugd2hvCitoYXZlIGNvbnRyaWJ1dGVkIHRvIHRoZSBwcm9qZWN0IGluIHNvbWUgd2F5LiBJdCBsaXN0cyBib3RoIGNvbW1pdHRlcnMgYW5kIFBNQyBtZW1iZXJzIGFuZCBwcm92aWRlcyBhIHNob3J0ICJiaW8iCisoaS5lLiBhIGRlc2NyaXB0aW9uIG9mIHRoZWlyIGNvbnRyaWJ1dGlvbnMpIGFzIHdlbGwgYXMgYW4gaW5kaWNhdGlvbiBvZiB3aGV0aGVyIHRoZXkgYXJlIGN1cnJlbnRseSBwYXJ0aWNpcGF0aW5nIGluCit0aGUgcHJvamVjdCBvciBub3QsIGkuZS4gYWN0aXZlIG9yIGluYWN0aXZlLiAgVGhlIGJpb3MgaGF2ZSBhIHNsaWdodGx5IGRpZmZlcmVudCBmb3JtIGRlcGVuZGluZyBvbiB0aGF0IHN0YXR1czoKKworKiBBbiBfYWN0aXZlXyBiaW8gc2hvdWxkIGJlIHJlZmxlY3RpdmUgb2YgY3VycmVudCBjb250cmlidXRpb25zLCByb3VnaGx5IHJlcHJlc2VudGluZyB0aGUgcGFzdCBzaXggbW9udGhzIGFuZCB0aGUKK2ZvbGxvd2luZyBzaXggbW9udGhzIG9mIHRoZSB1cGRhdGUuCisqIEFuIF9pbmFjdGl2ZV8gYmlvIGZvciB0aG9zZSBub3QgY3VycmVudGx5IGNvbnRyaWJ1dGluZyB0byB0aGUgcHJvamVjdCwgc2hvdWxkIHJlZmxlY3QgdGhlIGZ1bGwgc2NvcGUgb2YgYWxsCitjb250cmlidXRpb25zIG1hZGUgYnkgdGhhdCBpbmRpdmlkdWFsIGR1cmluZyB0aGVpciBhY3RpdmUgcGVyaW9kcy4KKworSU1QT1JUQU5UOiBJcnJlc3BlY3RpdmUgb2YgYmVpbmcgYWN0aXZlIG9yIGluYWN0aXZlLCB0aGUgY29udHJpYnV0b3IncyBuYW1lIGFuZCB0ZW51cmUgYWNjb21wbGlzaG1lbnRzIHJlbWFpbiBwcmVzZW50CitvbiB0aGUgZnJvbnQgcGFnZSBvZiB0aGUgd2ViIHNpdGUuIEJlaW5nICJpbmFjdGl2ZSIgZG9lcyAqbm90KiBhZmZlY3QgdGhlIGNvbnRyaWJ1dG9ycyBzdGF0dXMgYXMgYW4gQXBhY2hlIGNvbW1pdHRlciBvcgorUE1DIG1lbWJlciAtIHRoYXQgcmVtYWlucyB1bmNoYW5nZWQuIFNob3VsZCBhIGNvbnRyaWJ1dG9yIGJlY29tZSAiaW5hY3RpdmUiIGF0IHNvbWUgcG9pbnQsIHRoZXJlIGlzIG5vIHNwZWNpYWwgcHJvY2VzcwordG8gYmVjb21lICJhY3RpdmUiIGFnYWluIC0gdGhleSBzaW1wbHkgdXBkYXRlIHRoZWlyIGJpbyB0byBkbyBzby4KKworQ29tbWl0dGVycyBhbmQgUE1DIG1lbWJlcnMgY2FuIGtlZXAgdGhpcyBpbmZvcm1hdGlvbiB1cCB0byBkYXRlIHRoZW1zZWx2ZXMgYXMgdGhleSBoYXZlIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIEdpdAorcmVwb3NpdG9yeS4gUmVtaW5kZXJzIHRvIHVwZGF0ZSB0aGlzIGluZm9ybWF0aW9uIHdpbGwgYmUgc2VudCB0byB0aGUgZGV2IGxpc3Qgb24gZWFjaCByZWxlYXNlIGFzIHBhcnQgb2YgY29kZSBmcmVlemUKK3dlZWsuIFRob3NlIHdobyBoYXZlIG5vdCBzaG93biBhbiB1cGRhdGUgdG8gdGhlaXIgYmlvIGluIGdpdCBpbiB0aGUgcGFzdCB5ZWFyIG9yIGhhdmUgb3RoZXJ3aXNlIG5vdCByZXBsaWVkIHRvIHRoZSBkZXYKK2xpc3QgZW1haWwgdG8gaW5kaWNhdGUgdGhlaXIgc3RhdHVzIGluIHRoYXQgdGltZSB3aWxsIGJlIGFzc3VtZWQgImluYWN0aXZlIiBmb3IgdGhlIHB1cnBvc2Ugb2YgdGhlIGxpc3RpbmcuCisKK1RoZSBmb2xsb3dpbmcgaXMgYSB0ZW1wbGF0ZSBmb3IgdGhlICJCaW8gVXBkYXRlIiBlbWFpbDoKKworW3NvdXJjZSx0ZXh0XQorLS0tLQorU3ViamVjdDogQXBhY2hlIFRpbmtlclBvcCBCaW8gVXBkYXRlCisKK1RvIENvbW1pdHRlcnMvUE1DIE1lbWJlcnMsCisKK0FzIGFuIEFwYWNoZSBUaW5rZXJQb3AgY29tbWl0dGVyIGFuZC9vciBQTUMgbWVtYmVyLCB5b3VyIG5hbWUgaXMgbGlzdGVkIG9uIHRoZSBUaW5rZXJQb3AgaG9tZSBwYWdlIGluIHRoZSBDb250cmlidXRvciBMaXN0WzFdIHdpdGggeW91ciAiYmlvIi4gSWYgeW91IGFyZSBhY3RpdmUgb24gdGhlIHByb2plY3QsIHlvdXIgImJpbyIgcmVmbGVjdHMgd2hhdCB5b3UgaGF2ZSBiZWVuIHdvcmtpbmcgb24gYW5kIHdoYXQgeW91IGV4cGVjdCB0byBiZSB3b3JraW5nIG9uIHdpdGggcmVzcGVjdCB0byBUaW5rZXJQb3AgZm9yIHJlY2VudCB0aW1lcyAoaS5lLiBmb3IgdGhlIHByZXZpb3VzIHNpeCBtb250aHMgYW5kIHRoZSBmb2xsb3dpbmcgc2l4IG1vbnRocykuIElmIHlvdSBhcmUgY3VycmVudGx5IGluYWN0aXZlIG9uIHRoZSBwcm9qZWN0LCB5b3VyICJiaW8iIHJlZmxlY3RzIHRoZSBmdWxsIHNjb3BlIG9mIGFsbCB5b3VyIGNvbnRyaWJ1dGlvbnMgdGhyb3VnaG91dCB5b3VyIGFjdGl2ZSBwZXJpb2RzLiBZb3UgY2FuIHJlZmVyIHRvIHRoZSBjb250cmlidXRvciBsaXN0aW5nIHBvbGljeVsyXSBmb3IgZnVsbCBkZXRhaWxzLgorCitQbGVhc2UgdGFrZSBhIG1vbWVudCB0byB1cGRhdGUgeW91ciBiaW8gZGlyZWN0bHkgaW4gR2l0WzNdIG9yLCBpZiB5b3Ugd291bGQgcHJlZmVyLCBwbGVhc2UgcmVwbHkgdG8gdGhpcyBlbWFpbCB3aXRoIHlvdXIgYmlvIHVwZGF0ZSBhbmQgaXQgd2lsbCBiZSBhZGRlZCBmb3IgeW91LiBJZiBubyBjaGFuZ2VzIGFyZSByZXF1aXJlZCwgcGxlYXNlIHJlcGx5IHRvIHRoaXMgZW1haWwgdG8gY29uZmlybSB0aGF0IHRoaXMgaXMgdGhlIGNhc2UuCisKK1sxXSBodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnLyNjb250cmlidXRvcnMKK1syXSBodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvY3VycmVudC9kZXYvZGV2ZWxvcGVyLyNjb250cmlidXRvci1saXN0aW5nCitbM10gaHR0cHM6Ly9naXRodWIuY29tL2FwYWNoZS90aW5rZXJwb3AvYmxvYi9tYXN0ZXIvZG9jcy9zaXRlL2hvbWUvaW5kZXguaHRtbAorLS0tLQpkaWZmIC0tZ2l0IGEvZG9jcy9zcmMvZGV2L2RldmVsb3Blci9jb250cmlidXRpbmcuYXNjaWlkb2MgYi9kb2NzL3NyYy9kZXYvZGV2ZWxvcGVyL2NvbnRyaWJ1dGluZy5hc2NpaWRvYwppbmRleCBmMzkzMGJjLi5mYzcyMGQ1IDEwMDY0NAotLS0gYS9kb2NzL3NyYy9kZXYvZGV2ZWxvcGVyL2NvbnRyaWJ1dGluZy5hc2NpaWRvYworKysgYi9kb2NzL3NyYy9kZXYvZGV2ZWxvcGVyL2NvbnRyaWJ1dGluZy5hc2NpaWRvYwpAQCAtMjAsNiArMjAsNyBAQAogbWF0ZXJpYWwgdmlhIHB1bGwgcmVxdWVzdCwgZW1haWwsIG9yIG90aGVyIG1lYW5zIHlvdSBhZ3JlZSB0byBsaWNlbnNlIHRoZSBtYXRlcmlhbCB1bmRlciB0aGUgcHJvamVjdCdzIG9wZW4gc291cmNlCiBsaWNlbnNlIGFuZCB3YXJyYW50IHRoYXQgeW91IGhhdmUgdGhlIGxlZ2FsIGF1dGhvcml0eSB0byBkbyBzby4KIAorW1t3YXlzLXRvLWNvbnRyaWJ1dGVdXQogPT0gV2F5cyB0byBDb250cmlidXRlCiAKIGltYWdlOmdyZW1saW4tYXBhY2hlLnBuZ1t3aWR0aD0yNTAsZmxvYXQ9bGVmdF0gV2hpbGUgdGhlIGNvbmNlcHQgb2YgYW4gb3BlbiBzb3VyY2UgY29udHJpYnV0aW9uIGNhbiByZWZlciB0byBkb2luZwpAQCAtMjM1LDMgKzIzNiwzNyBAQAogdGhlIGNoYW5nZXMgYnJpbmdzIGV4dGVuc2l2ZSBjb25mbGljdCBiZXR3ZWVuIGJyYW5jaGVzLgogCiBPbiBzdWNjZXNzZnVsIHJldmlldywgdGhlICpwdWxsIHJlcXVlc3Qgd2lsbCBiZSBtZXJnZWQqIHRvIHRoZSBtYWluIHJlcG9zaXRvcnkgYW5kIHRoZSBKSVJBIGlzc3VlIHdpbGwgYmUgY2xvc2VkLgorCis9PSBWZXJzaW9uaW5nCisKK1RpbmtlclBvcCB2ZXJzaW9uIG51bWJlcnMgZm9sbG93IGEgZm9ybWF0IG9mIGBNQUpPUi5NSU5PUi5QQVRDSGAsIHdoZXJlOgorCisqIGBNQUpPUmAgdmVyc2lvbiBpcyBpbmNyZW1lbnRlZCBmb3IgZXBvY2hzIG9mIHRoaW5raW5nIGFyb3VuZCBUaW5rZXJQb3AgYW5kIGl0cyByZWxhdGlvbiB0byB0aGUgZ3JhcGggZWNvc3lzdGVtLgorKiBgTUlOT1JgIHZlcnNpb24gaXMgaW5jcmVtZW50ZWQgd2hlbiBpbmNvbXBhdGlibGUgY2hhbmdlcyBjYW5ub3QgYmUgYXZvaWRlZC4KKyogYFBBVENIYCB2ZXJzaW9uIGlzIGluY3JlbWVudGVkIHdoZW4gY2hhbmdlcyBhcmUgYmFja3dhcmQgY29tcGF0aWJsZS4KKworVGhlIG51bWJlciBmb3IgYE1BSk9SYCByYXJlbHkgY2hhbmdlcyBhbmQgd2hlbiBpdCBkb2VzLCBpdCB0eXBpY2FsbHkgcmVwcmVzZW50cyBhIGNvbXBsZXRlIHJlLXdyaXRlIG9mIHRoZSBzb2Z0d2FyZQorYW5kIHRodXMgbWFzc2l2ZSBjaGFuZ2VzIGNhbiBiZSBleHBlY3RlZC4gQXMgYSByZXN1bHQgb2YgdGhlIGRlZmluaXRpb24gZm9yIGBNQUpPUmAsIHdlIHRlbmQgdG8gZm9jdXMgb24gdGhlIG90aGVyCit0d28gbnVtYmVycyB3aGVuIGNvbnNpZGVyaW5nIHdoZXJlIGNoYW5nZXMgd2lsbCBsYW5kLgorCitUaGUgZHJpdmluZyBxdWVzdGlvbiBmb3IgZGV0ZXJtaW5pbmcgaWYgYSBjaGFuZ2UgaXMgc3VpdGFibGUgZm9yIGBNSU5PUmAgb3IgYFBBVENIYCB2ZXJzaW9ucyBpcyB3aGV0aGVyIG9yIG5vdCB0aGUKK2NoYW5nZSBpbnRyb2R1Y2VzIHNvbWUgZm9ybSBvZiBpbmNvbXBhdGliaWxpdHkuIEFzIHRoZSBmb2N1cyBmb3IgbWFraW5nIHRoZSBkZXRlcm1pbmF0aW9uIGlzICJicmVha2luZyBjaGFuZ2UiLCB3ZQordGhlcmVmb3JlIGFsbG93IHRoZSBvcHRpb24gZm9yIG5ldyBmZWF0dXJlcyB0byBsYW5kIGluIGBQQVRDSGAgdmVyc2lvbnMuIFRha2luZyB0aGlzIGFwcHJvYWNoLCBsZW5ndGhlbnMgdGhlIGxpZmUgc3Bhbgorb2YgYE1JTk9SYCB2ZXJzaW9ucyBjb25zaWRlcmFibHkgd2hpY2ggaXMgaGVscGZ1bCB0byBncmFwaCBwcm92aWRlcnMgbG9va2luZyBmb3Igc3RhYmxlIGxvbmctbGl2ZWQgc3VwcG9ydCBmb3IgYQorcGFydGljdWxhciByZWxlYXNlIGxpbmUuCisKK1dpdGggYWxsIG9mIHRoZSBhYm92ZSBydWxlcyBpbiBtaW5kLCB0aGVyZSBhcmUgc29tZSBzdWJ0bGUgY29uc2lkZXJhdGlvbnMgdGhhdCBoYXZlIGNvbWUgaW50byBwbGF5IGluIHRoZSBwYXN0IHdoZW4KK3RyeWluZyB0byBkZXRlcm1pbmUgd2hlcmUgYSBjaGFuZ2Ugc2hvdWxkIGxhbmQ6CisKKyogQSBgUEFUQ0hgIGhhcyBiZWVuIGtub3duIHRvIHRha2UgYSBicmVha2luZyBjaGFuZ2UgaWYgdGhhdCBicmVha2luZyBjaGFuZ2U6CisqKiBJcyBuZWNlc3NhcnkgdG8gZml4IGEgY3JpdGljYWwgYnVnCisqKiBIYXMgYSBsaW1pdGVkIGJyZWFraW5nIHNjb3BlIChlLmcuIGEgdXRpbGl0eSBjbGFzcyB0aGF0IG5vIG9uZSB3b3VsZCBsaWtlbHkgdXNlLCBhIGJyZWFrIHRoYXQgYWZmZWN0cyBncmFwaAorcHJvdmlkZXJzIG9ubHkpCisqIEl0IGlzIHByZWZlcnJlZCB0aGF0ICJtYWpvciIgbmV3IGZlYXR1cmVzIGdvIHRvIGBNSU5PUmAsIGJ1dCBpdCBpcyBzb21ldGltZXMgdGhlIGNhc2UgdGhhdCB0aGV5IHdpbGwgbWFrZSB0aGVpciB3YXkKK3RvIGBQQVRDSGAgaWYgdGhhdCBjaGFuZ2UgcHJvdmlkZXMgc2lnbmlmaWNhbnQgZW5vdWdoIHZhbHVlLgorKiBBcyBgUEFUQ0hgIHJlbGVhc2UgbnVtYmVycyBnZXQgaGlnaGVyLCB0aGVyZSBpcyBsZXNzIGluY2VudGl2ZSB0byBwdXNoIG5ldyBmZWF0dXJlcyB0aGVyZSBhcyB0aGVyZSBpcyBsaWtlbHkgbmV3Citmb2N1cyBvbiB0aGUgbmV4dCB1bnJlbGVhc2VkIGBNSU5PUmAuCisqIFRoZSBwcmVmZXJlbmNlIGlzIHRvIGZpbmQgZGVwcmVjYXRpb24gcGF0aHMgd2hlbmV2ZXIgcG9zc2libGUuCisKK0luIHNob3J0LCB0aGUgZGV2IG1haWxpbmcgbGlzdCBpcyBvcGVuIHRvIGRpc2N1c3Npb24gb24gd2hlcmUgYSBjaGFuZ2Ugd2lsbCBsYW5kLiBUaGUgZGlzY3Vzc2lvbiBqdXN0IG5lZWRzIHRvIGhhdmUKK2dvb2QgcmVhc29uaW5nIGFuZCB1c2UgdGhlIGdlbmVyYWwgcHJpbmNpcGxlcyBhYm92ZSBhcyBhIGZyYW1ld29yayBmb3IgY29taW5nIHRvIGEgY29uc2Vuc3VzLgpkaWZmIC0tZ2l0IGEvZG9jcy9zcmMvZGV2L2RldmVsb3Blci9kZXZlbG9wbWVudC1lbnZpcm9ubWVudC5hc2NpaWRvYyBiL2RvY3Mvc3JjL2Rldi9kZXZlbG9wZXIvZGV2ZWxvcG1lbnQtZW52aXJvbm1lbnQuYXNjaWlkb2MKaW5kZXggOWE3YWZkYi4uYWI1YWI2MyAxMDA2NDQKLS0tIGEvZG9jcy9zcmMvZGV2L2RldmVsb3Blci9kZXZlbG9wbWVudC1lbnZpcm9ubWVudC5hc2NpaWRvYworKysgYi9kb2NzL3NyYy9kZXYvZGV2ZWxvcGVyL2RldmVsb3BtZW50LWVudmlyb25tZW50LmFzY2lpZG9jCkBAIC0xNTUsNiArMTU1LDkgQEAKIFtzb3VyY2UsdGV4dF0KIG12biBjbGVhbiBpbnN0YWxsIC1wbCBncmVtbGluLWNvbnNvbGUgLURza2lwSW50ZWdyYXRpb25UZXN0cz1mYWxzZQogCitUSVA6IEZvciB0aG9zZSB3aG8gZG8gbm90IGhhdmUgYSBmdWxsIE1hdmVuIGVudmlyb25tZW50LCBwbGVhc2Ugc2VlIDw8ZG9ja2VyLWludGVncmF0aW9uLHRoaXMgc2VjdGlvbj4+IGZvciBob3cgRG9ja2VyCitjYW4gYmUgdXNlZCB0byBoZWxwIHJ1biB0ZXN0cy4KKwogU2VlIHRoZSA8PHJlbGVhc2UtZW52aXJvbm1lbnQsUmVsZWFzZSBFbnZpcm9ubWVudD4+IHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gcmVsZWFzZSBtYW5hZ2VyIGNvbmZpZ3VyYXRpb25zLgogCiBbW2RvdG5ldC1lbnZpcm9ubWVudF1dCkBAIC0xODIsNiArMTg1LDkgQEAKIFtzb3VyY2UsdGV4dF0KIG12biBjbGVhbiBpbnN0YWxsIC1EbnVnZXQKIAorVElQOiBGb3IgdGhvc2Ugd2hvIGRvIG5vdCBoYXZlIGEgZnVsbCBNYXZlbiBlbnZpcm9ubWVudCwgcGxlYXNlIHNlZSA8PGRvY2tlci1pbnRlZ3JhdGlvbix0aGlzIHNlY3Rpb24+PiBmb3IgaG93IERvY2tlcgorY2FuIGJlIHVzZWQgdG8gaGVscCBydW4gdGVzdHMuCisKIFNlZSB0aGUgPDxyZWxlYXNlLWVudmlyb25tZW50LFJlbGVhc2UgRW52aXJvbm1lbnQ+PiBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHJlbGVhc2UgbWFuYWdlciBjb25maWd1cmF0aW9ucy4KIAogW1tub2RlanMtZW52aXJvbm1lbnRdXQpAQCAtMTkxLDYgKzE5Nyw5IEBACiB1c2luZyBgY29tLmdpdGh1Yi5laXJzbGV0dDpmcm9udGVuZC1tYXZlbi1wbHVnaW5gIHBsdWdpbi4gVGhpcyBjb3B5IG9mIHRoZSBOb2RlLmpzIHJ1bnRpbWUgd2lsbCBub3QgYWZmZWN0IGFueQogb3RoZXIgZXhpc3RpbmcgTm9kZS5qcyBydW50aW1lIGluc3RhbmNlcyBpbiB5b3VyIG1hY2hpbmUuCiAKK1RJUDogRm9yIHRob3NlIHdobyBkbyBub3QgaGF2ZSBhIGZ1bGwgTWF2ZW4gZW52aXJvbm1lbnQsIHBsZWFzZSBzZWUgPDxkb2NrZXItaW50ZWdyYXRpb24sdGhpcyBzZWN0aW9uPj4gZm9yIGhvdyBEb2NrZXIKK2NhbiBiZSB1c2VkIHRvIGhlbHAgcnVuIHRlc3RzLgorCiBTZWUgdGhlIDw8cmVsZWFzZS1lbnZpcm9ubWVudCxSZWxlYXNlIEVudmlyb25tZW50Pj4gc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiByZWxlYXNlIG1hbmFnZXIgY29uZmlndXJhdGlvbnMuCiAKIFtbZG9ja2VyLWVudmlyb25tZW50XV0KQEAgLTI5MCw2ICsyOTksNyBAQAogKiBHZW5lcmF0ZSA8PGJ1aWxkaW5nLXRlc3RpbmcsdGVzdCByZXNvdXJjZXM+PiBmb3IgYGdyZW1saW4taW8tdGVzdGA6IGBtdm4gY2xlYW4gaW5zdGFsbCAtcGwgOmdyZW1saW4taW8tdGVzdCAtRGlvYAogKiBSZWdlbmVyYXRlIHRveSBncmFwaCBkYXRhIChvbmx5IG5lY2Vzc2FyeSBnaXZlbiBjaGFuZ2VzIHRvIElPIGNsYXNzZXMpOiBgbXZuIGNsZWFuIGluc3RhbGwgLURpb2AgZnJvbSBgdGlua2VyZ3JhcGgtZ3JlbWxpbmAgZGlyZWN0b3J5CiAqKiBJZiB0aGVyZSBhcmUgY2hhbmdlcyB0byB0aGUgR3J5byBmb3JtYXQsIGl0IG1heSBiZSBuZWNlc3NhcnkgdG8gZ2VuZXJhdGUgdGhlIEdyYXRlZnVsIERlYWQgZGF0YXNldCBmcm9tIEdyYXBoU09OIChzZWUgYElvRGF0YUdlbmVyYXRpb25UZXN0LnNob3VsZFdyaXRlR3JhdGVmdWxEZWFkYCkKKyogU3RhcnQgR3JlbWxpbiBTZXJ2ZXIgd2l0aCBEb2NrZXIgdXNpbmcgdGhlIHN0YW5kYXJkIHRlc3QgY29uZmlndXJhdGlvbjogYGRvY2tlci9ncmVtbGluLXNlcnZlci5zaGAKICogQ2hlY2sgbGljZW5zZSBoZWFkZXJzIGFyZSBwcmVzZW50OiBgbXZuIGFwYWNoZS1yYXQ6Y2hlY2tgCiAqIEJ1aWxkIEFzY2lpRG9jcyAoc2VlIDw8ZG9jdW1lbnRhdGlvbi1lbnZpcm9ubWVudCxEb2N1bWVudGF0aW9uIEVudmlyb25tZW50Pj4pOiBgYmluL3Byb2Nlc3MtZG9jcy5zaGAKICoqIEJ1aWxkIEFzY2lpRG9jcyAoYnV0IGRvbid0IGV2YWx1YXRlIGNvZGUgYmxvY2tzKTogYGJpbi9wcm9jZXNzLWRvY3Muc2ggLS1kcnlSdW5gCkBAIC0zNTYsNiArMzY2LDQxIEBACiAKIEFmdGVyIGZpbmlzaGluZyBhbGwgdGFza3MsIHRoZSBzY3JpcHQgd2lsbCBpbW1lZGlhdGVseSBkZXN0cm95IHRoZSBjb250YWluZXIuCiAKK0RvY2tlciBjYW4gYWxzbyBiZSBoZWxwZnVsIHRvIGRldmVsb3BlcnMgd2hvIGRvIG5vdCB3YW50IHRvIHJ1biB0ZXN0cyBmcm9tIGEgTWF2ZW4gZW52aXJvbm1lbnQsIHdoaWNoIG1heSBiZSBhIGJpdAorb3BhcXVlIHdoZW4gZGVhbGluZyB3aXRoIHRlc3QgZmFpbHVyZXMgYW5kIGxhcmdlbHkgdW5oZWxwZnVsIGZvciBkZWJ1Z2dpbmcuIFRoaXMgc2l0dWF0aW9uIGlzIHR5cGljYWxseSBjYXNlIGZvcgorZGV2ZWxvcGVycyBkb2luZyB3b3JrIG9uIEdyZW1saW4gTGFuZ3VhZ2UgVmFyaWFudHMgKGUuZy4gUHl0aG9uKS4gVG8gaGVscCBhbGxldmlhdGUgdGhpcyBwcm9ibGVtLCBkZXZlbG9wZXJzIGNhbgorc3RhcnQgYSBzdGFuZGFsb25lIEdyZW1saW4gU2VydmVyIHdpdGggaXRzIHN0YW5kYXJkIHRlc3QgY29uZmlndXJhdGlvbiB0aGF0IGlzIHVzZWQgaW4gdGhlIHN0YW5kYXJkIE1hdmVuIGJ1aWxkLgorCitHZW5lcmFsbHkgc3BlYWtpbmcsIG1vc3QgZGV2ZWxvcGVycyB3aWxsIHdhbnQgdG8gdGVzdCB0aGVpciBjb2RlIGFnYWluc3QgdGhlIGxhdGVzdCBidWlsZCBvZiBHcmVtbGluIFNlcnZlciBpbiB0aGUKK1RpbmtlclBvcCByZXBvc2l0b3J5LiBUbyBkbyB0aGF0LCBmaXJzdCBiZSBzdXJlIHRvIGJ1aWxkIGEgRG9ja2VyIGltYWdlIG9mIHRoZSBjdXJyZW50IGNvZGU6CisKK1tzb3VyY2UsYmFzaF0KK212biBjbGVhbiBpbnN0YWxsIC1Ec2tpcFRlc3RzCisKK05leHQsIGdlbmVyYXRlIHRoZSBhIERvY2tlciBpbWFnZSBmb3IgR3JlbWxpbiBTZXJ2ZXIgd2l0aDoKKworW3NvdXJjZSxiYXNoXQorbXZuIGNsZWFuIGluc3RhbGwgLXBsIDpncmVtbGluLXNlcnZlciAtRGRvY2tlckltYWdlcyAtRHNraXBUZXN0cworCitJTVBPUlRBTlQ6IElmIGNoYW5nZXMgYXJlIG1hZGUgdG8gdGhlIHJlcG9zaXRvcnkgdGhhdCBuZWVkIHRvIGJlIHJlZmxlY3RlZCBpbiB0aGUgR3JlbWxpbiBTZXJ2ZXIgRG9ja2VyIGltYWdlIHRoZW4KK3RoZSBvbGQgaW1hZ2Ugc2hvdWxkIGJlIHJlbW92ZWQgYW5kIHRoZW4gdGhlIGFib3ZlIGNvbW1hbmRzIHJlLWV4ZWN1dGVkLgorCitGaW5hbGx5LCBzdGFydCB0aGUgc2VydmVyIHdpdGg6CisKK1tzb3VyY2UsYmFzaF0KK2RvY2tlci9ncmVtbGluLXNlcnZlci5zaAorCitTdGFydGluZyBHcmVtbGluIFNlcnZlciB0aGlzIHdheSBtYWtlcyBpdCBwb3NzaWJsZSB0byBydW4gR3JlbWxpbiBMYW5ndWFnZSBWYXJpYW50IHRlc3RzIHdpdGhvdXQgTWF2ZW4gKGZvciBleGFtcGxlLAorZGlyZWN0bHkgZnJvbSBhIGRlYnVnZ2VyKSB3aGljaCBzaG91bGQgZ3JlYXRseSByZWR1Y2UgZGV2ZWxvcG1lbnQgZnJpY3Rpb24gZm9yIHRoZXNlIGVudmlyb25tZW50cy4KKworSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBzcGVjaWZ5IHRoZSBleGFjdCB2ZXJzaW9uIG9mIEdyZW1saW4gU2VydmVyIHRvIHJ1biB3aXRoIHRoZSB0ZXN0IGNvbmZpZ3VyYXRpb24uIFRoaXMgdmVyc2lvbgorc2hvdWxkIGJlIGFuIGV4aXN0aW5nIERvY2tlciBpbWFnZSB2ZXJzaW9uIGFuZCBtdXN0IGJlIGFuIGV4cGxpY2l0IHZlcnNpb24gdGhhdCBtYXBzIHRvIGFuIGFjdHVhbCBUaW5rZXJQb3AgYXJ0aWZhY3Q6CisKK1tzb3VyY2UsYmFzaF0KK2RvY2tlci9ncmVtbGluLXNlcnZlci5zaCAzLjQuMgorCitUbyBiZSBhIGJpdCBtb3JlIGNsZWFyLCB0aGUgdmVyc2lvbiBjYW4gbm90IGJlIGEgRG9ja2VyIHRhZyBsaWtlICJsYXRlc3QiIGJlY2F1c2UgdGhlcmUgaXMgbm8gc3VjaCBUaW5rZXJQb3AgYXJ0aWZhY3QKK3RoYXQgaGFzIGJlZW4gcHVibGlzaGVkIHdpdGggdGhhdCB2ZXJzaW9uIG51bWJlci4KIAogPT0gSURFIFNldHVwIHdpdGggSW50ZWxsaWoKIApkaWZmIC0tZ2l0IGEvZG9jcy9zcmMvZGV2L2RldmVsb3Blci9mb3ItY29tbWl0dGVycy5hc2NpaWRvYyBiL2RvY3Mvc3JjL2Rldi9kZXZlbG9wZXIvZm9yLWNvbW1pdHRlcnMuYXNjaWlkb2MKaW5kZXggNmNhMzlhYS4uNTUxOTc5NSAxMDA2NDQKLS0tIGEvZG9jcy9zcmMvZGV2L2RldmVsb3Blci9mb3ItY29tbWl0dGVycy5hc2NpaWRvYworKysgYi9kb2NzL3NyYy9kZXYvZGV2ZWxvcGVyL2Zvci1jb21taXR0ZXJzLmFzY2lpZG9jCkBAIC0xOCw3ICsxOCw0MSBAQAogCiBpbWFnZTo6YnVzaW5lc3MtZ3JlbWxpbi5wbmdbd2lkdGg9NDAwXQogCi1UaGUgZ3VpZGVsaW5lcyB0aGF0IGZvbGxvdyBhcHBseSB0byB0aG9zZSB3aXRoIGNvbW1pdCBhY2Nlc3MgdG8gdGhlIG1haW4gcmVwb3NpdG9yeToKK1RoZSBndWlkZWxpbmVzIHRoYXQgZm9sbG93IGdlbmVyYWxseSBhcHBseSB0byB0aG9zZSB3aXRoIGNvbW1pdCBhY2Nlc3MgdG8gdGhlIG1haW4gcmVwb3NpdG9yeSwgYnV0IHRob3NlIHNlZWtpbmcgdG8KK2NvbnRyaWJ1dGUgd2lsbCBhbHNvIGZpbmQgaGVscGZ1bCBpbmZvcm1hdGlvbiBoZXJlIG9uIHRoZSBkZXZlbG9wbWVudCBzdHlsZSBhbmQgcHJvY2VzcyBmb3IgdGhlIHByb2plY3QuCisKK1tbaW5pdGlhbC1zZXR1cF1dCis9PSBJbml0aWFsIFNldHVwCisKK09uY2UgdGhlIEFwYWNoZSBUaW5rZXJQb3AgUE1DIGhhcyBzZW50IGFuIGludml0YXRpb24gdG8gYSBjb250cmlidXRvciB0byBiZWNvbWUgYSBuZXcgY29tbWl0dGVyIGFuZCB0aGF0IGNvbnRyaWJ1dG9yCitoYXMgYWNjZXB0ZWQgdGhhdCBpbnZpdGF0aW9uIGFuZCBwcm92aWRlZCB0aGVpciBpQ0xBIHRvIEFwYWNoZSwgdGhlbiB0aGVyZSBhcmUgc29tZSBhZG1pbmlzdHJhdGl2ZSBzdGVwcyB0aGF0IHRoZQorbmV3IGNvbW1pdHRlciBjYW4gZXhwZWN0IHRvIGdvIHRocm91Z2ggdG8gY29tcGxldGUgdGhlIHByb2Nlc3Mgc28gdGhhdCB0aGV5IGhhdmUgYWNjZXNzIHRvIEFwYWNoZSByZXNvdXJjZXMgbGlrZSB0aGUKK0dpdCByZXBvc2l0b3J5LiBXaGlsZSB0aGUgaW5mb3JtYXRpb24gZm9yIGNvbXBsZXRpbmcgdGhlIHByb2Nlc3MgY2FuIGJlIGZvdW5kIGluIGEgbXVsdGl0dWRlIG9mIHBsYWNlcyB0aGUgZm9sbG93aW5nCitsaXN0aW5nIHByb3ZpZGVzIGEgc3VtbWFyeSBvZiB3aGF0IHRvIGRvIG5leHQ6CisKKyogTG9vayBmb3IgYSB3ZWxjb21lIGVtYWlsIGZyb20gcm9vdF9hdF9hcGFjaGUub3JnLiBUaGlzIHdpbGwgY29udGFpbiB5b3VyIEFwYWNoZSB1c2VyIG5hbWUKKyoqIGUuZy4gIldlbGNvbWUgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpISIKKyogVmlzaXQgaHR0cHM6Ly9pZC5hcGFjaGUub3JnL3Jlc2V0L2VudGVyIGFuZCBlbnRlciB5b3VyIHVzZXIgbmFtZQorKiBMb29rIGZvciBhIHBhc3N3b3JkIHJlc2V0IGVtYWlsIGZyb20gcm9vdF9hdF9hcGFjaGUub3JnLiBUaGlzIHdpbGwgaGF2ZSBiZWVuIHNlbnQgYWZ0ZXIgeW91IGNvbmZpcm1lZCB5b3VyIHVzZXIgbmFtZSwgYWJvdmUuCisqKiBlLmcuICJQYXNzd29yZCByZXNldCByZXF1ZXN0IGZvciBbdXNlcm5hbWVdIGZyb20gQXBhY2hlIElEIgorKiBWaXNpdCB0aGUgbGluayBwcm92aWRlZCBpbiB0aGUgcGFzc3dvcmQgcmVzZXQgZW1haWwsIGFuZCBjaG9vc2UgYSBuZXcgcGFzc3dvcmQuIEFTRiBhc2tzIHlvdSB0byBjaG9vc2UgYSBzdHJvbmcgb25lLiBZb3Ugd2lsbCBzZWUgYSAiUGFzc3dvcmQgY2hhbmdlIHN1Y2Nlc3NmdWwiIHBhZ2Ugd2hlbiB0aGlzIGlzIGRvbmUuCisqIFlvdSB3aWxsIG5vdyBoYXZlIFNWTiBhY2Nlc3MKKyoqIGxpbms6aHR0cHM6Ly9zdm4uYXBhY2hlLm9yZy9bc3ZuLmFwYWNoZS5vcmddCisqIFRyeSBzZW5kaW5nIHlvdXJzZWxmIGFuIGVtYWlsIGF0IHlvdXIgbmV3IFt1c2VybmFtZV1AYXBhY2hlLm9yZyBlbWFpbCBhZGRyZXNzLiBJdCBzaG91bGQgZm9yd2FyZCB0byB5b3VyIHByaW1hcnkgYWRkcmVzcy4KKyogQ2hlY2sgeW91ciBhY2NvdW50IGRldGFpbHMgYXQgaHR0cHM6Ly9pZC5hcGFjaGUub3JnL2RldGFpbHMvW3VzZXJuYW1lXQorKiBMaW5rIHlvdXIgYWNjb3VudHMgdXNpbmcgZ2l0Ym94IChodHRwczovL2dpdGJveC5hcGFjaGUub3JnL3NldHVwLykKKyoqIExpbmsgeW91ciBBcGFjaGUgYWNjb3VudAorKiogTGluayB5b3VyIEdpdEh1YiBhY2NvdW50CisqKiogWW91IHdpbGwgYmUgYXNrZWQgdG8gIkF1dGhvcml6ZSBBcGFjaGUgTS5BLlQuVC4iCisqKiBPYnRhaW4gTUZBIHN0YXR1cworKioqIFZpc2l0IGxpbms6aHR0cHM6Ly9pZC5hcGFjaGUub3JnW2lkLmFwYWNoZS5vcmddIGFuZCBzZXQgeW91ciBHaXRIdWIgSUQgdG8gYmUgaW52aXRlZCB0byB0aGUgb3JnCisqKiogV2FpdCBmb3IgYW4gZW1haWwgdG8gYXJyaXZlIGZyb20gInN1cHBvcnRfYXRfZ2l0aHViLmNvbSIsIGFuZCBjbGljayAiSm9pbiBAYXBhY2hlIi4gQWNjZXB0IHRoZSBpbnZpdGF0aW9uIG9uIGdpdGh1Yi5jb20uIFlvdXIgbmV3IE1GQSBzdGF0dXMgd2lsbCBub3QgaW1tZWRpYXRlbHkgYmUgcmVmbGVjdGVkIG9uIGdpdGh1YiwgYnV0IHlvdSB3aWxsIGdldCBhIGNvbmZpcm1hdGlvbiBlbWFpbCBmcm9tIG5vcmVwbHlfYXRfZ2l0aHViLmNvbS4gTGF0ZXIsIHRoZSBzdGF0dXMgd2lsbCByZWFkICJNRkEgRU5BQkxFRCIKKyoqKiogZS5nLiAiW0dpdEh1Yl0gQGFzZi1naXRib3ggaGFzIGludml0ZWQgeW91IHRvIGpvaW4gdGhlIEBhcGFjaGUgb3JnYW5pemF0aW9uIgorKioqIFlvdSBjYW4gZmluZCB5b3Vyc2VsZiBieSBzZWFyY2hpbmcgaW4gdGhlIGxpbms6aHR0cHM6Ly9naXRodWIuY29tL29yZ3MvYXBhY2hlL3RlYW1zL2FwYWNoZS1jb21taXR0ZXJzW0FwYWNoZSBDb21taXR0ZXJzIGxpc3RpbmddCisqIFJlYWQgdGhlIGxpbms6aHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9kZXYvbmV3LWNvbW1pdHRlcnMtZ3VpZGUuaHRtbFtBcGFjaGUgQ29tbWl0dGVyIEd1aWRlXSBhbmQgbGluazpodHRwOi8vd3d3LmFwYWNoZS5vcmcvZGV2L2NvbW1pdHRlcnMuaHRtbFtBcGFjaGUgQ29tbWl0dGVyIEZBUV0KKyogUmVhZCB0aHJvdWdoIHRoZSBvdGhlciBzZWN0aW9ucyBvZiB0aGlzIGRvY3VtZW50IC0gdGhlIERldmVsb3BlciBEb2N1bWVudGF0aW9uIC0gZm9yIG1vcmUgZGV0YWlscyBvbiBwcm9qZWN0IHByb2NlZHVyZXMgYW5kIG90aGVyIGFkbWluaXN0cmF0aXZlIGl0ZW1zLgorKiogSW4gcGFydGljdWxhciwgc2VlIDw8cnRjLFJldmlldyB0aGVuIENvbW1pdD4+CisqIElmIHlvdSBoYXZlIHRyb3VibGUgY29tbWl0dGluZywgZW1haWwgZGV2QHRpbmtlcnBvcC5hcGFjaGUub3JnCiAKID09IENvbW11bmljYXRpb24KIApAQCAtMjYsNiArNjAsMTAgQEAKIHBhc3M6WzxhIGhyZWY9Imh0dHBzOi8vbGlzdHMuYXBhY2hlLm9yZy9saXN0Lmh0bWw/ZGV2QHRpbmtlcnBvcC5hcGFjaGUub3JnIj5kZXYgbWFpbGluZyBsaXN0PC9hPl0uICBBcyBhIGNvbW1pdHRlciwKIGl0IGlzIGEgZ29vZCBpZGVhIHRvIGpvaW4gYm90aC4KIAorVGlua2VyUG9wIGFsc28gaGFzIGEgbGluazpodHRwczovL3RoZS1hc2Yuc2xhY2suY29tL2FyY2hpdmVzL0NVQko1NzdFV1tTbGFjayBjaGFubmVsXSBmb3IgbW9yZSByZWFsLXRpbWUgY29tbXVuaWNhdGlvbgorYWJvdXQgdGhlIHByb2plY3QgYW1vbmcgY29udHJpYnV0b3JzLCB0aG91Z2ggaXQgbXVzdCBiZSBrZXB0IGluIG1pbmQgdGhhdCBwcm9qZWN0IGRpc2N1c3Npb24gYW5kIGRlY2lzaW9ucyBtdXN0IG9jY3VyCitvbiB0aGUgZGV2IG1haWxpbmcgbGlzdCBtZW50aW9uZWQgYWJvdmUuCisKIE9jY2FzaW9uYWxseSwgb25saW5lIG1lZXRpbmdzIHZpYSB2aWRlbyBjb25mZXJlbmNlIGFyZSBoZWxkLiBUaGVzZSBtZWV0aW5ncyBhcmUgc2NoZWR1bGUgdmlhIHRoZSBkZXYgbWFpbGluZyBsaXN0CiBhYm91dCBhIHdlZWsgYmVmb3JlIHRoZXkgYXJlIHRvIG9jY3VyIHRvIGZpbmQgYSBkYXkgYW5kIHRpbWUgdGhhdCBpcyBhdmFpbGFibGUgZm9yIHRob3NlIGludGVyZXN0ZWQgaW4gYXR0ZW5kaW5nLgogT24gdGhlIGRheSBvZiB0aGUgbWVldGluZywgdGhlIG1lZXRpbmcgb3JnYW5pemVyIHdpbGwgY3JlYXRlIGEgR29vZ2xlIEhhbmdvdXQgKG9yIHNpbWlsYXIgdmlkZW8gY29uZmVyZW5jaW5nIGxpbmspLgpAQCAtMTExLDYgKzE0OSwxMSBAQAogKiBUaGUgInByaW9yaXR5IiBmaWVsZCBjYW4gYmUgYXJiaXRyYXJpbHkgYXBwbGllZCB3aXRoIG9uZSBleGNlcHRpb24uICBUaGUgInRyaXZpYWwiIG9wdGlvbiBzaG91bGQgYmUgcmVzZXJ2ZWQgZm9yCiB0YXNrcyB0aGF0IGFyZSAiZWFzeSIgZm9yIGEgcG90ZW50aWFsIG5ldyBjb250cmlidXRvciB0byBqdW1wIGludG8gYW5kIGRvIG5vdCBoYXZlIHNpZ25pZmljYW50IGltcGFjdCB0byB1cmdlbnRseQogcmVxdWlyZWQgaW1wcm92ZW1lbnRzLgorKiBUaGUgInJlc29sdXRpb24iIGZpZWxkIHdoaWNoIGlzIHNldCBvbiB0aGUgY2xvc2Ugb2YgdGhlIGlzc3VlIHNob3VsZCBzcGVjaWZ5IHRoZSBzdGF0dXMgbW9zdCBjbG9zZWx5IHJlbGF0ZWQgdG8gd2h5Cit0aGUgaXNzdWUgd2FzIGNsb3NlZC4gSW4gbW9zdCBjYXNlcywgdGhpcyB3aWxsIG1lYW4gIkZpeGVkIiBmb3IgYSAiQnVnIiBvciAiRG9uZSIgZm9yIGFuICJJbXByb3ZlbWVudCIuIE9ubHkgb25lCityZXNvbHV0aW9uIGhhcyBzcGVjaWFsIG1lYW5pbmcgYW5kIGNhcmUgc2hvdWxkIGJlIHRha2VuIHdpdGggdGhpcyBwYXJ0aWN1bGFyIG9wdGlvbjogIkxhdGVyIi4gIkxhdGVyIiBtZWFucyB0aGF0IHRoZQoraXRlbSBpcyBhIGdvb2QgaWRlYSBidXQgbGlrZWx5IHdpbGwgbm90IGJlIGltcGxlbWVudGVkIGluIGFueSBmb3Jlc2VlYWJsZSBmdXR1cmUuIEJ5IGNsb3NpbmcgdW5jb21wbGV0ZWQgaXNzdWVzIHdpdGgKK3RoaXMgcmVzb2x1dGlvbiwgaXQgc2hvdWxkIGJlIGVhc3kgdG8gY29tZSBiYWNrIHRvIHRoZW0gbGF0ZXIgd2hlbiBuZWVkZWQuCiAKID09IENvZGUgU3R5bGUKIApAQCAtNDQ0LDcgKzQ4Nyw3IEBACiAqKiBCZSBjZXJ0YWluIHRoYXQgdGhlIHRlc3Qgc3VpdGUgaXMgcGFzc2luZy4KICoqIElmIHlvdSB1cGRhdGVkIGRvY3VtZW50YXRpb24sIGJlIHN1cmUgdGhhdCB0aGUgYHByb2Nlc3MtZG9jcy5zaGAgaXMgYnVpbGRpbmcgdGhlIGRvY3VtZW50YXRpb24gY29ycmVjdGx5LgogKiBCZWZvcmUgeW91IGNhbiBtZXJnZSB5b3VyIGJyYW5jaCBpbnRvIHRoZSByZWxlYXNlIGJyYW5jaCwgeW91IG11c3QgaGF2ZSBhdCBsZWFzdCAzICsxIGxpbms6aHR0cDovL3d3dy5hcGFjaGUub3JnL2ZvdW5kYXRpb24vZ2xvc3NhcnkuaHRtbCNDb25zZW5zdXNBcHByb3ZhbFtjb25zZW5zdXMgdm90ZXNdCi1mcm9tIG90aGVyIGNvbW1pdHRlcnMgT1IgYSBzaW5nbGUgKzEgZnJvbSBhIGNvbW1pdHRlciBhbmQgYSBvbmUgd2VlayByZXZpZXcgcGVyaW9kIGZvciBvYmplY3Rpb25zIChpLmUuIGEgImNvb2wgZG93bgorZnJvbSBvdGhlciBjb21taXR0ZXJzIE9SIGEgc2luZ2xlICsxIGZyb20gYSBjb21taXR0ZXIgYW5kIGEgc2V2ZW4gZGF5IHJldmlldyBwZXJpb2QgZm9yIG9iamVjdGlvbnMgKGkuZS4gYSAiY29vbCBkb3duCiBwZXJpb2QiKSBhdCB3aGljaCBwb2ludCB3ZSB3aWxsIGFzc3VtZSBhIGxhenkgY29uc2Vuc3VzLgogKiogUGxlYXNlIHNlZSB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb25zIHJlZ3VsYXRpb25zIHJlZ2FyZGluZyBsaW5rOmh0dHA6Ly93d3cuYXBhY2hlLm9yZy9mb3VuZGF0aW9uL3ZvdGluZy5odG1sI3ZvdGVzLW9uLWNvZGUtbW9kaWZpY2F0aW9uW1ZvdGluZyBvbiBDb2RlIE1vZGlmaWNhdGlvbnNdLgogKiogV2l0aCB0aGUgImNvb2wgZG93biIgcHJvY2VzcyBhbmQgbGF6eSBjb25zZW5zdXMgdGhlIHNpbmdsZSArMSBtYXkgKHNob3VsZCkgY29tZSBmcm9tIHRoZSBjb21taXR0ZXIgd2hvIHN1Ym1pdHRlZApAQCAtNzIxLDcgKzc2NCw3IEBACiAKIFRoZSBsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei9kZXYvaW9bSU8gRG9jdW1lbnRhdGlvbl0gcHJvdmlkZXMgbW9yZSBkZXRhaWxzIGludG8gR3JhcGhNTCwgR3JhcGhTT04KIGFuZCBHcnlvIHdpdGggYSBzcGVjaWFsIGZvY3VzIG9uIHRoZSBuZWVkcyBvZiBkZXZlbG9wZXJzIHdobyBhcmUgd29ya2luZyBkaXJlY3RseSB3aXRoIHRoZXNlIGZvcm1hdHMuIEdyYXBoU09OIGdldHMKLXRoZSBncmVhdGVzdCBmb2N1cyBoZXJlIGFzIGl0IGlzIHVzZWQgYXMgdGhlIHByaW1hcnkgSU8gZm9ybWF0IGZvciBsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei9yZWZlcmVuY2UvI2dyZW1saW4tdmFyaWFudHNbR0xWc10uCit0aGUgZ3JlYXRlc3QgZm9jdXMgaGVyZSBhcyBpdCBpcyB1c2VkIGFzIHRoZSBwcmltYXJ5IElPIGZvcm1hdCBmb3IgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVmZXJlbmNlLyNncmVtbGluLWRyaXZlcnMtdmFyaWFudHNbR0xWc10uCiBUaGlzIGRvY3VtZW50YXRpb24gaXMgbGFyZ2VseSBnZW5lcmF0ZWQgZnJvbSB0aGUgYGdyZW1saW4taW8tdGVzdGAgbW9kdWxlIGZvdW5kIHVuZGVyIGBncmVtbGluLXRvb2xzYC4gVGhlCiBgZ3JlbWxpbi1pby10ZXN0YCBtb2R1bGUgYWxzbyBpbmNsdWRlcyBhIHRlc3RpbmcgZnJhbWV3b3JrIHdoaWNoIHZhbGlkYXRlcyB0aGF0IGZvcm1hdHMgZG9uJ3QgYnJlYWsgYmV0d2VlbiBUaW5rZXJQb3AKIHZlcnNpb25zLiBVbmZvcnR1bmF0ZWx5LCB0aGlzIG1vZHVsZSByZXF1aXJlcyBzb21lIG1haW50ZW5hbmNlIHRvIGVuc3VyZSB0aGF0IHRoZSBkb2N1bWVudGF0aW9uIGFuZCB0ZXN0cyBib3RoIHN0YXkKQEAgLTc2MSw2ICs4MDQsMTQgQEAKIFRoZSBzZWNvbmQgY2FzZSwgZG9lcyByZXF1aXJlIHNvbWUgYWRkaXRpb25hbCBkaXNjdXNzaW9uLiBXaGVuIGEgbmV3IHZlcnNpb24gaXMgYWRkZWQgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbmVlZAogdG8gYmUgdXBkYXRlZCBpbiB0aGUgZm9sbG93aW5nIHdheXM6CiAKKypHcmFwaEJpbmFyeUNvbXBhdGliaWxpdHkqIC0gSW5jbHVkZSBuZXcgR3JhcGhCaW5hcnkgMS4wIGVudW1zIGZvciB0aGUgY3VycmVudCBgU05BUFNIT1RgLgorCitbc291cmNlLGphdmFdCistLS0tCitWMV8zXzRfMygiMy40LjMiLCAiMS4wIiwgInYxIiksCitWMV8zXzRfNCgiMy40LjQiLCAiMS4wIiwgInYxIik7CistLS0tCisKICpHcnlvQ29tcGF0aWJpbGl0eSogLSBJbmNsdWRlIG5ldyBHcnlvIDEuMCBhbmQgMy4wIGVudW1zIGZvciB0aGUgY3VycmVudCBgU05BUFNIT1RgLgogCiBbc291cmNlLGphdmFdCkBAIC03NzksNiArODMwLDkgQEAKIFYzRDBfUEFSVElBTF8zXzNfeCgiMy4zLngiLCAiMy4wIiwgInYzZDAiKTsKIC0tLS0KIAorKkdyYXBoQmluYXJ5Q29tcGF0aWJpbGl0eVRlc3QqIC0gQWRkIHRoZSBuZXdseSBpbmNsdWRlZCBgR3JhcGhCaW5hcnlDb21wYXRpYmlsaXR5YCBlbnVtcyB0byB0aGUgdGVzdCBwYXJhbWV0ZXJzIGJlaW5nCitjYXJlZnVsIHRvIG1hdGNoIHRoZSBhcHByb3ByaWF0ZSAibWFwcGVyIiB0byB0aGUgcmlnaHQgdmVyc2lvbi4KKwogKkdyeW9Db21wYXRpYmlsaXR5VGVzdCogLSBBZGQgdGhlIG5ld2x5IGluY2x1ZGVkIGBHcnlvQ29tcGF0aWJpbGl0eWAgZW51bXMgdG8gdGhlIHRlc3QgcGFyYW1ldGVycyBiZWluZyBjYXJlZnVsIHRvCiBtYXRjaCB0aGUgYXBwcm9wcmlhdGUgIm1hcHBlciIgdG8gdGhlIHJpZ2h0IHZlcnNpb24uCiAKZGlmZiAtLWdpdCBhL2RvY3Mvc3JjL2Rldi9kZXZlbG9wZXIvcmVsZWFzZS5hc2NpaWRvYyBiL2RvY3Mvc3JjL2Rldi9kZXZlbG9wZXIvcmVsZWFzZS5hc2NpaWRvYwppbmRleCBhNjI1M2MyLi4wNWEzZjk4IDEwMDY0NAotLS0gYS9kb2NzL3NyYy9kZXYvZGV2ZWxvcGVyL3JlbGVhc2UuYXNjaWlkb2MKKysrIGIvZG9jcy9zcmMvZGV2L2RldmVsb3Blci9yZWxlYXNlLmFzY2lpZG9jCkBAIC0xOTksNyArMTk5LDkgQEAKIC4uIFVwZGF0ZSB0aGUgYHRlbXBsYXRlL2hlYWRlci1mb290ZXIuaHRtbGAuCiAuLiBVcGRhdGUgYGluZGV4Lmh0bWxgLgogLi4gVXBkYXRlIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb3dubG9hZHMuaHRtbFtEb3dubG9hZHNdIHBhZ2UsIHdoZW4gbW92aW5nICJDdXJyZW50IFJlbGVhc2VzIiB0byAiQXJjaGl2ZWQKLVJlbGVhc2VzIiByZWNhbGwgdGhhdCB0aGUgaHlwZXJsaW5rIG11c3QgY2hhbmdlIHRvIHBvaW50IHRvIHZlcnNpb24gaW4gdGhlIGxpbms6aHR0cHM6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC90aW5rZXJwb3AvW0FwYWNoZSBBcmNoaXZlc10uCitSZWxlYXNlcyIgcmVjYWxsIHRoYXQgdGhlIGh5cGVybGluayBtdXN0IGNoYW5nZSB0byBwb2ludCB0byB2ZXJzaW9uIGluIHRoZSBsaW5rOmh0dHBzOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wL1tBcGFjaGUgQXJjaGl2ZXNdCisoImNvbnRyaWJ1dGlvbnMiIGNvbnRlbnQgd2lsbCBiZSBhZGRlZCBhZnRlciBWT1RFIGFuZCBwcmlvciB0byBwcm9tb3Rpb24gb2YgdGhlIHJlbGVhc2Ugc28gdGhhdCB0aGUgY29tbWl0IGNvdW50cyBhcmUKK2FzIGFjY3VyYXRlIGFzIHBvc3NpYmxlIGFuZCB0aGUgcmVsZWFzZSB0YWdzIGFyZSBwcmVzZW50KS4KIC4uIFByZXZpZXcgY2hhbmdlcyBsb2NhbGx5IHdpdGggYGJpbi9nZW5lcmF0ZS1ob21lLnNoYCB0aGVuIGNvbW1pdCBjaGFuZ2VzIHRvIGdpdC4KIC4gYG12biB2ZXJzaW9uczpzZXQgLURuZXdWZXJzaW9uPXh4Lnl5Lnp6IC1EZ2VuZXJhdGVCYWNrdXBQb21zPWZhbHNlYCB0byB1cGRhdGUgcHJvamVjdCBmaWxlcyB0byByZWZlcmVuY2UgdGhlIG5vbi1TTkFQU0hPVCB2ZXJzaW9uCiAuIGBwdXNoZCBncmVtbGluLWNvbnNvbGUvYmluOyBsbiAtZnMgLi4vdGFyZ2V0L2FwYWNoZS10aW5rZXJwb3AtZ3JlbWxpbi1jb25zb2xlLXh4Lnl5Lnp6LXN0YW5kYWxvbmUvYmluL2dyZW1saW4uc2ggZ3JlbWxpbi5zaDsgcG9wZGAKQEAgLTI1NCw2ICsyNTYsNyBAQAogLiBgY2QgcmVsZWFzZTsgc3ZuIGFkZCB4eC55eS56ei87IHN2biBjaSAtbSAiVGlua2VyUG9wIHh4Lnl5Lnp6IHJlbGVhc2UiYAogLiBXYWl0IGZvciBBcGFjaGUgU29uYXR5cGUgdG8gc3luYyB0aGUgYXJ0aWZhY3RzIHRvIE1hdmVuIENlbnRyYWwgYXQgKGxpbms6aHR0cHM6Ly9yZXBvMS5tYXZlbi5vcmcvbWF2ZW4yL29yZy9hcGFjaGUvdGlua2VycG9wL3RpbmtlcnBvcC9baHR0cHM6Ly9yZXBvMS5tYXZlbi5vcmcvbWF2ZW4yL29yZy9hcGFjaGUvdGlua2VycG9wL3RpbmtlcnBvcC9dKS4KIC4gUmVwb3J0IHRoZSByZWxlYXNlIHRocm91Z2ggbGluazpodHRwczovL3JlcG9ydGVyLmFwYWNoZS5vcmcvYWRkcmVsZWFzZS5odG1sP3RpbmtlcnBvcFtyZXBvcnRlci5hcGFjaGUub3JnXSAoYW4gZW1haWwgcmVtaW5kZXIgc2hvdWxkIGFycml2ZSBzaG9ydGx5IGZvbGxvd2luZyB0aGUgc3ZuIGNvbW1hbmQgYWJvdmUgdG8gZG8gdGhlIHJlbGVhc2UpCisuIFVwZGF0ZSB0aGUgYHNpdGUvZG93bmxvYWRzLmh0bWxgIC0gcHJvdmlkZSB0aGUgY29udGVudHMgZm9yIHRoZSBtb2RhbCB0aGF0IHBvcHMgdXAgZnJvbSB0aGUgImNvbnRyaWJ1dG9ycyIgbGluay4KIC4gV2FpdCBmb3IgemlwIGRpc3RyaWJ1dGlvbnMgdG8gc3luYyB0byB0aGUgQXBhY2hlIG1pcnJvcnMgKGkuZSBlbnN1cmUgdGhlIGRvd25sb2FkIGxpbmtzIHdvcmsgZnJvbSBhIG1pcnJvcikuCiAuIGBiaW4vcHVibGlzaC1ob21lLnNoIDx1c2VybmFtZT5gIHRvIHB1Ymxpc2ggdGhlIHVwZGF0ZWQgd2ViIHNpdGUgd2l0aCBuZXcgcmVsZWFzZXMuCiAuIEV4ZWN1dGUgYGJpbi91cGRhdGUtY3VycmVudC1kb2NzLnNoIDx1c2VybmFtZT5gIHRvIG1pZ3JhdGUgdG8gdGhlIGxhdGVzdCBkb2N1bWVudGF0aW9uIHNldCBmb3IgYC9jdXJyZW50YC4KZGlmZiAtLWdpdCBhL2RvY3Mvc3JjL2Rldi9mdXR1cmUvaW5kZXguYXNjaWlkb2MgYi9kb2NzL3NyYy9kZXYvZnV0dXJlL2luZGV4LmFzY2lpZG9jCmluZGV4IDU4NGJhOWMuLjEyNGMyMzIgMTAwNjQ0Ci0tLSBhL2RvY3Mvc3JjL2Rldi9mdXR1cmUvaW5kZXguYXNjaWlkb2MKKysrIGIvZG9jcy9zcmMvZGV2L2Z1dHVyZS9pbmRleC5hc2NpaWRvYwpAQCAtMzEsMTIgKzMxLDMxIEBACiBzZW50ZW5jZXMsIG9yIGZ1bGx5IHN0cnVjdHVyZWQgZG9jdW1lbnQgaGVhZGVycyBhbmQgY29udGVudCBhcmUgYWxsIGFjY2VwdGFibGUuIFRoZSBtYWluIHBvaW50IGlzIHRvIGNhcHR1cmUgaWRlYXMKIGZvciBmdXR1cmUgY29uc2lkZXJhdGlvbiB3aGVuIDQueCBiZWNvbWVzIHRoZSBhZ2VuZGEgb2YgdGhlIGRheSBmb3IgVGhlIFRpbmtlclBvcC4KIAorSWYgYWRkaW5nIGNvbW1lbnRzIHNlY3Rpb25zLCBwbGVhc2UgInNpZ24iIGNvbW1lbnRzIHdpdGggaW5pdGlhbHMgYW5kIHJlZmVyZW5jZSB0aG9zZSBpbml0aWFscyBoZXJlOgorCisqICpzcG0qIC0gU3RlcGhlbiBNYWxsZXR0ZQorKiAqYXMqIC0gQXNod2luaSBTaW5naAorKiAqZGsqIC0gRGFuaWVsIEt1cHBpdHoKKwogaW1hZ2U6dHA0LXRoaW5rLnBuZ1tdCiAKK0RldmVsb3BtZW50IG9mIDQueCBvY2N1cnMgb24gdGhlIGA0LjAtZGV2YCBicmFuY2guIFRoaXMgYnJhbmNoIHdhcyBjcmVhdGVkIGFzIGFuIG9ycGhhbiBicmFuY2ggYW5kIHRoZXJlZm9yZSBoYXMgbm8KK2hpc3RvcnkgdGllZCB0byBhbnkgb3RoZXIgYnJhbmNoIGluIHRoZSByZXBvIGluY2x1ZGluZyBtYXN0ZXIuIEFzIHN1Y2gsIHRoZXJlIGlzIG5vIG5lZWQgdG8gbWVyZ2UvcmViYXNlIGA0LjAtZGV2YC4gV2hlbgoraXQgY29tZXMgdGltZSB0byBwcm9tb3RlIGA0LjAtZGV2YCB0byBgbWFzdGVyYCB0aGUgcHJvY2VkdXJlIGZvciBkb2luZyBzbyB3aWxsIGJlIHRvOgorCisxLiBDcmVhdGUgYSBgMy54LW1hc3RlcmAgYnJhbmNoIGZyb20gYG1hc3RlcmAKKzEuIERlbGV0ZSBhbGwgY29udGVudCBmcm9tIGBtYXN0ZXJgIGluIG9uZSBjb21taXQKKzEuIFJlYmFzZSBgNC4wLWRldmAgb24gYG1hc3RlcmAKKzEuIE1lcmdlIGA0LjAtZGV2YCB0byBgbWFzdGVyYCBhbmQgcHVzaAorCitGcm9tIHRoaXMgcG9pbnQgMy54IGRldmVsb3BtZW50IHdpbGwgb2NjdXIgb24gYDMueC1tYXN0ZXJgIGFuZCA0LnggZGV2ZWxvcG1lbnQgb2NjdXJzIG9uIGBtYXN0ZXJgICh3aXRoIHRoZSBzYW1lIHZlcnNpb24KK2JyYW5jaGluZyBhcyB3ZSBoYXZlIG5vdywgZS5nIGAzLjMtZGV2YCwgYDQuMS1kZXZgLCBldGMuKSBUaGUgYDMueC1tYXN0ZXJgIGJyYW5jaCBjaGFuZ2VzIHdpbGwgbGlrZWx5IHN0aWxsIG1lcmdlIHRvCitgbWFzdGVyYCwgYnV0IHdpbGwgYWxsIG1lcmdlIGFzIG5vLW9wIGNoYW5nZXMuCisKID09IFRoZSBNYWluIEZlYXR1cmVzCiAKLVRpbmtlclBvcDQgc2hvdWxkIGZvY3VzIG9uIHRoZSBtb3N0IHN1Y2Nlc3NmdWwgYXNwZWN0cyBvZiBUaW5rZXJQb3AzIGFuZCBpdCBzaG91bGQgYXZvaWQgdGhlIHRyYXBzIHJlYWxpemVkIGluIFRpbmtlclBvcDMuCi1UaGVzZSBpdGVtcyBpbmNsdWRlOgorVGlua2VyUG9wIDQueCBzaG91bGQgZm9jdXMgb24gdGhlIG1vc3Qgc3VjY2Vzc2Z1bCBhc3BlY3RzIG9mIFRpbmtlclBvcCAzLnggYW5kIGl0IHNob3VsZCBhdm9pZCB0aGUgdHJhcHMgcmVhbGl6ZWQgaW4KK1RpbmtlclBvcCAzLnguIFRoZXNlIGl0ZW1zIGluY2x1ZGU6CiAKICogVGhlIGNvbmNlcHQgb2YgR3JlbWxpbiBhcyBib3RoIGEgdmlydHVhbCBtYWNoaW5lIGFuZCBsYW5ndWFnZS4KICoqIEEgc3RhbmRhcmQgYnl0ZWNvZGUgc3BlY2lmaWNhdGlvbiBzaG91bGQgYmUgcHJvdmlkZWQuCkBAIC00OCw2ICs2Nyw4IEBACiAqIFRoZSBjb25jZXB0IG9mIGBUcmF2ZXJzYWxgIGFzIHRoZSBzb2xlIG1lYW5zIG9mIGludGVyYWN0aW5nIHdpdGggdGhlIGdyYXBoLgogKiogVGhlIHJvbGUgb2YgQmx1ZXByaW50cyBzaG91bGQgYmUgc2lnbmlmaWNhbnRseSByZWR1Y2VkLgogKiogVGhlIHJvbGUgb2YgR3JlbWxpbiBzaG91bGQgYmUgc2lnbmlmaWNhbnRseSBpbmNyZWFzZWQuCisqIFByb3ZpZGUgYmV0dGVyIG1ldGhvZHMgb2YgdmVyc2lvbmluZyBHcmVtbGluIGl0c2VsZiAtIGJlaW5nIGJvdW5kIHRvIEpWTSByZWxlYXNlcyBhbmQgZm9yY2luZyBsb2NhbCBhbmQgcmVtb3RlCit2ZXJzaW9ucyBvZiBHcmVtbGluIHRvIGJlIHRoZSBzYW1lIGlzbid0IGlkZWFsLgogCiA9PSBIaWRpbmcgQmx1ZXByaW50cwogCkBAIC0xMDksNyArMTMwLDcgQEAKIFRoaXMgc3BsaXQgaW50byB0d28gR3JhcGggQVBJcyB3aWxsIGVuYWJsZXMgdXMgdG8gbWFrZSBhIGhhcmQgYm91bmRhcnkgYmV0d2VlbiB3aGF0IHRoZSBwcm92aWRlciAodmVuZG9yKSBuZWVkcyB0bwogaW1wbGVtZW50IGFuZCB3aGF0IHRoZSB1c2VyIChkZXZlbG9wZXIpIGdldHMgdG8gYWNjZXNzLgogCi09PT0gQ29tbWVudHMKKz09PSBDb21tZW50cyBbc3BtXQogCiBUaGVyZSBpcyBhIHF1ZXN0aW9uIG1hcmsgbmV4dCB0byBgUmVmZXJlbmNlR3JhcGgudHgoKWAgLSBUcmFuc2FjdGlvbnMgYXJlIGEgYml0IG9mIGFuIG9wZW4gcXVlc3Rpb24gZm9yIGZ1dHVyZSB2ZXJzaW9ucwogb2YgVGlua2VyUG9wIGFuZCBsaWtlbHkgZGVzZXJ2ZSB0aGVpciBvd24gc2VjdGlvbiBpbiB0aGlzIGRvY3VtZW50LiBUaGUgbW9kZWwgdXNlZCBmb3IgbGFzdCB0aHJlZSB2ZXJzaW9uIG9mIFRpbmtlclBvcApAQCAtMTE4LDYgKzEzOSwxNSBAQAogR0xWcy4gVGhlIGlkZWEgb2YgbG9jYWwgc3ViZ3JhcGhzIGZvciBtdXRhdGlvbnMgYW5kIHRyYW5zYWN0aW9uIG1hbmFnZW1lbnQgbWlnaHQgYmUgZ29vZCBidXQgdGhhdCBnb2VzIGFnYWluc3QgaGF2aW5nCiBqdXN0IGBSZWZlcmVuY2VHcmFwaGAuCiAKK0luICJoaWRpbmcgYmx1ZXByaW50cyIgd2Ugc2hvdWxkIHByb2JhYmx5IGNvbnNpZGVyIHdoYXQgcmVsZXZhbmNlIGNlcnRhaW4gY29tcG9uZW50cyBvZiB0aGUgU3RydWN0dXJlIEFQSSBzdGlsbCBoYXZlOgorCisqIGBpbygpYCAtIHRoaXMgc29ydGEgZmVsbCBzaG9ydCBhIGZldyB3YXlzOiBBUEkgd2FzIGEgYml0IGNsdW5reSwgbm8gaW50ZWdyYXRpb24gd2l0aCBsb2FkaW5nIHZpYSBPTEFQLCBldGMuCisqIGB2YXJpYWJsZXMoKWAgLSBvbmUgb2YgdGhlIHByb2JsZW1zIHdpdGggdmFyaWFibGVzIGlzIHRoYXQgdGhleSB3ZXJlIG5vdCBwZXJzaXN0ZWQgYnkgYGlvKClgIHdoaWNoIHdhcyBnZW5lcmFsbHkgYQorcHJvYmxlbSBmb3IgVGlua2VyR3JhcGggd2hpY2ggcmVsaWVkIG9uIGBpbygpYCBmb3IgZmx1c2hpbmcgdG8gZmlsZSBzdG9yYWdlLiBUaGlzIHRvcGljIHdhcyBkaXNjdXNzZWQgYSBiaXQgb24KK2xpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtODkyW1RJTktFUlBPUC04OTJdCisqIGB0eCgpYCAtIGFzIGRpc2N1c3NlZCBpbiB0aGUgZWFybGllciBwYXJhZ3JhcGgKKworW1tncmVtbGluLWxhbmd1YWdlLXN1YnNldF1dCiA9PSBHcmVtbGluIExhbmd1YWdlIFN1YnNldAogCiBPbiBsaW5rOmh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvVElOS0VSUE9QLTE0MTdbVElOS0VSUE9QLTE0MTddLCBpdCB3YXMgc3VnZ2VzdGVkIHRoYXQgd2UgIkNyZWF0ZSBhCkBAIC0xMzYsNyArMTY2LDcgQEAKICogcGF0aCwgc2ltcGxlUGF0aCwgY3ljbGljUGF0aAogKiBncm91cENvdW50LCBzdW0sIGdyb3VwLCBjb3VudCwgbWF4LCBtaW4sIGV0Yy4gKHJlZHVjaW5nIGJhcnJpZXJzKQogCi09PT0gQ29tbWVudHMKKz09PSBDb21tZW50cyBbc3BtXQogCiBUaGlzIGhhcyBhbiBpbnRlcmVzdGluZyBwb3RlbnRpYWwgaW1wYWN0IG9uIEdMVnMgYmVjYXVzZSAiTGl0dGxlIEdyZW1saW4iIGNvdWxkIGJlIGltcGxlbWVudGVkIHdpdGhpbiB0aGVtIGZvcgogY2xpZW50LXNpZGUgdHJhdmVyc2FscyBvdmVyIHJlbW90ZSBzdWJncmFwaHMsIHdoZXJlIHRoZSBzdWJncmFwaCBpcyBsaWtlIGEgcmVtb3RlIHRyYW5zYWN0aW9uLiBBbGwgZ3JhcGggbXV0YXRpb25zCkBAIC0xNDQsOCArMTc0LDY0IEBACiBCdWlsZCBpdCBsb2NhbGx5IHRoZW4gc3VibWl0IGl0IHJlbW90ZWx5IGFuZCBoYXZlIHRoZSBzZXJ2ZXIgc29ydCBvdXQgdGhlIG1lcmdpbmcuIEl0J3MgcGVyaGFwcyB0aGUgbW9zdCBuYXR1cmFsIHdheQogdG8gbG9hZCBkYXRhLiBXaXRoICJHcmVtbGluaXRvIiB5b3UgdGhlbiBnZXQgdGhlIGFkZGVkIHBvd2VyIG9mIGJlaW5nIGFibGUgdG8gdHJhdmVyc2UgYSBsb2NhbCBzdWJncmFwaC4KIAorW1tzZXJpYWxpemF0aW9uXV0KKz09IFNlcmlhbGl6YXRpb24KKworSGF2ZSB3ZSB5ZXQgZm91bmQgdGhlIGFwcHJvcHJpYXRlIHNlcmlhbGl6YXRpb24gbW9kZWw/IFdlIGRpZG4ndCBoYXZlIGl0IGluIDIueCBhdCBhbGwuIEluIDMueCB3ZSB3ZW50IHdpdGggYSB1c2UgY2FzZQorYmFzZWQgYXBwcm9hY2ggdGhhdCBtYWRlIGEgbG90IG9mIHNlbnNlIGluIHRoZSBmaXJzdCBmZXcgcmVsZWFzZXMgb2YgMy54LCBidXQgdGhlIHVzZSBjYXNlcyBjb3VsZG4ndCBoYXZlIGNvbmNlaXZlZAorb2Ygd2hhdCB3YXMgdG8gY29tZSB3aXRoIHRoZSBkZXZlbG9wbWVudCBvZiBHTFZzLiBHTFZzIHJlbmRlcmVkIEdyeW8sIHRoZSBkZWNpZGVkICJuZXR3b3JrIG9wdGlvbiIgZnJvbSB0aGUgdXNlIGNhc2VzLAordG8gYmUgcHJldHR5IHVzZWxlc3MgZ2l2ZW4gdGhhdCBpdCBpcyBvZiB0aGUgSlZNIG9ubHkgYW5kIEdyYXBoU09OIGhhcyBnb25lIHRocm91Z2ggdGhyZWUgdmVyc2lvbnMgbm93IHRyeWluZyB0byBmaW5kCit0aGUgYXBwcm9wcmlhdGUgZm9ybWF0IHRvIGNvdmVyIHRoZSB2YXJpb3VzIGZlYXR1cmVzIHdlJ3ZlIGF0dGVtcHRlZCB0byBzdXBwb3J0LiBXaGlsZSBHcmFwaFNPTiAzLjAgc2VlbXMgdG8gaGF2ZSBtZXQKK3RoZSBtYXJrIGZvciBzdXBwb3J0aW5nIG91ciBuZWVkcywgaXQgc2VlbXMgYmxvYXRlZCB3aXRoIEphdmEgdHlwZXMgYW5kIGRvZXNuJ3QgcGVyZm9ybSB0ZXJyaWJseSB3ZWxsIGluIHNvbWUgY2FzZXMuCisKK0FuIGlkZWFsIHNlcmlhbGl6YXRpb24gZm9ybWF0IHdvdWxkIGJlOgorCisqIENvbXBhY3QgZm9yIG5ldHdvcmsgdHJhbnNwb3J0CisqIEh1bWFuIHJlYWRhYmxlICh3aGljaCBjb21wZXRlcyB3aXRoICJjb21wYWN0IiBhdCBzb21lIGxldmVsKQorKiBMYW5ndWFnZSBhZ25vc3RpYworKiBFeHBvc2VzIGEgc21hbGwgc2V0IG9mIHR5cGVzIHRoYXQgbWFrZXMgdGhlIGZvcm1hdCBlYXN5IHRvIG1haW50YWluIGFuZCB0ZXN0CisqIEV4dGVuZGFibGUgb3IgcGVyaGFwcyBidWlsdCBpbiBzdWNoIGEgd2F5IHRoYXQgZ3JhcGggcHJvdmlkZXJzIGNvdWxkIGNvZXJjZSB0aGVpciB0eXBlcyB0byBhbmQgZnJvbSB0aGUgdHlwZXMKK3RoYXQgVGlua2VyUG9wIGV4cG9zZXMKKyogVXBncmFkZSBmcmllbmRseSBzbyB0aGF0IGl0IGlzIHBvc3NpYmxlIHRvIGVhc2lseSBkZXRlY3QgdGhlIHZlcnNpb24gb2YgYSBmb3JtYXQgYW5kIGhhdmUgdGhlIHN5c3RlbSBhY3QKK3RyYW5zcGFyZW50bHkgc28gYXMgdG8gYXZvaWQgdGhlIGhlYXZ5IGNvbmZpZ3VyYXRpb24gdGhhdCB1c2VycyBjdXJyZW50bHkgaGF2ZSB0byBkbyB0byBiZSBzdXJlIHRoZWlyIHZlcnNpb25zIG9mCitUaW5rZXJQb3AgYW5kIHRoZWlyIHZlcnNpb24gb2YgdGhlaXIgc2VyaWFsaXplcnMgYWxpZ24KKworPT0gVW5pZm9ybSBPYmplY3QgTW9kZWwKKworT24gbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC0xOTA5W1RJTktFUlBPUC0xOTA5XSwgaXQgd2FzIHN1Z2dlc3RlZCB0aGF0IHdlIGFyZSBnb2luZyB0bwordXNlIHJlZmVyZW5jZSAoaWQvbGFiZWwpIGJhc2VkIG9iamVjdCBtb2RlbC4gQW5kLCB0aGUgZGlyZWN0aW9uIGlzIG1vdmUgdG93YXJkcyBtb3JlIHRpZHkgb2JqZWN0IG1vZGVsIGNvbnRyYWN0cyBnb2luZworZm9yd2FyZC4gUmVmZXJlbmNlIG1vZGVsIGRlZmluaXRlbHkgcHJvdmlkZXMgYmlnIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50cyBlc3BlY2lhbGx5IHdpdGggbXVsdGktcHJvcGVydHkKK3ZlcnRpY2VzL2VkZ2VzLiAgT25lIHRoaW5nIHRoYXQgd2UgY2FuIGNvbnNpZGVyIGlzIHRvIHByb3ZpZGUgYSBjb25maWd1cmFibGUgb2JqZWN0IG1vZGVsLiBFbmFibGluZyB1c2VycyB0bworY29uZmlndXJlIHRoZSBvYmplY3QgbW9kZWwgKE91dHB1dEZvcm1hdCkgYXMgc2VydmVyIHNldHRpbmdzIChFeHBvc2luZyBzZXJ2ZXIgc2V0dGluZyBpcyBiZWluZyBkaXNjdXNzZWQgaGVyZQorbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC0xNjM2W1RJTktFUlBPUC0xNjM2XSkuIFRoZXJlIHdpbGwgdGhyZWUgdHlwZXMgb2Ygb3V0cHV0IGZvcm1hdC4KKworKiBSZWZlcmVuY2U6IGluY2x1ZGVzIGlkIGFuZCBsYWJlbAorKiBHcmFwaFNPTkNvbXBhY3Q6IG9iamVjdCByZWZlcmVuY2UgYWxvbmcgd2l0aCBwcm9wZXJ0aWVzCisqIEdyYXBoU09OOiBvYmplY3QgcmVmZXJlbmNlLCBwcm9wZXJ0aWVzIGFuZCBlZGdlIGRldGFpbHMoaW5FL291dEUpLgorCis9PT0gQ29tbWVudHMgW2FzXQorCitUaGlzIHdpbGwgZW5hYmxlIHRoZSBjbGllbnRzIG1vZGVsIGJhc2VkIG9uIHRoZWlyIG5lZWRzIGFuZCBhdm9pZCBtdWx0aXBsZSBxdWVyeSBpZiB0aGV5IGFyZSBzdXJlIHdoYXQgaXMgZXhwZWN0ZWQgCitmcm9tIGEgZ3JlbWxpbiBxdWVyeS4gSWYgd2UgbmVlZCBtb3JlIGRldGFpbHMgbGlrZSBlZGdlcy9wcm9wZXJ0eSBhcyBwYXJ0IG9mIHJlc3BvbnNlLCB3ZSBjYW4gb3ZlcnJpZGUgdGhlIHNlcnZlciAKK2NvbmZpZ3VyYXRpb24gYXMgcGFydCBvZiB0aGUgZ3JlbWxpbiByZXF1ZXN0IGFyZ3VtZW50cyBhcyBoaW50LgorCis9PT0gQ29tbWVudHMgW3NwbV0KKworQSBtb3JlIGZ1bGwgb2JqZWN0IG1vZGVsIG1heSBiZSBuZWNlc3NhcnkgYXMgd2UgY29uc2lkZXIgaW1wbGVtZW50aW5nIHRoZSBvcHRpb25zIG9mIHRoZQorPDxncmVtbGluLWxhbmd1YWdlLXN1YnNldCxHcmVtbGluIExhbmd1YWdlIFN1YnNldD4+LiBBIG1vcmUgcm9idXN0IG9iamVjdCBtb2RlbCwgb3IgYXQgbGVhc3QgdGhlIG9wdGlvbiB0byBvcGVuIHVwIGEKK21vcmUgcm9idXN0IG9iamVjdCBtb2RlbCwgY291bGQgYmUgbmVjZXNzYXJ5IHRvIHN1cHBvcnQgZmVhdHVyZXMgdGhlcmUuIFdlIHNob3VsZCBhbHNvIGNvbnNpZGVyIHRoYXQgdGhlIGZ1dHVyZSBpcyBub3QKK25lY2Vzc2FyaWx5IGEgR3JhcGhTT04gZm9ybWF0IGFuZCBjb3VsZCBiZSBzb21ldGhpbmcgZWxzZSBhcyBkZXNjcmliZWQgaW4gdGhlIDw8c2VyaWFsaXphdGlvbixTZXJpYWxpemF0aW9uPj4gc2VjdGlvbi4KKwogPT0gVGVzdGluZyBGcmFtZXdvcmsKIAogQ29uc2lkZXIgYSB0ZXN0aW5nIGZyYW1ld29yayBiYXNlZCBvbiB0aGUgR2hlcmtpbiB0ZXN0cyBmcm9tIDMueCBhbmQgYSBgZ3JlbWxpbi10ZXN0YCBwYXJlbnQgbW9kdWxlIGZvciBhbGwgdGhlIHRlc3QKIGZyYW1ld29yayBtb2R1bGVzIHRoYXQgd2lsbCBwb3RlbnRpYWxseSBiZSBuZWVkZWQuIEluIDMueCwgd2UgZm91bmQgc2l0dWF0aW9uIHdoZXJlIGhhdmluZyB0ZXN0IG1vZHVsZXMgYmV5b25kCi1gZ3JlbWxpbi10ZXN0YCB3b3VsZCBoYXZlIGJlZW4gaGVscGZ1bCwgc28gYSBwYXJlbnQgbW9kdWxlIHRoYXQgaGVsZCBhbGwgdGhvc2Ugd291bGQgcHJvYmFibHkgYmUgc21hcnQuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorYGdyZW1saW4tdGVzdGAgd291bGQgaGF2ZSBiZWVuIGhlbHBmdWwsIHNvIGEgcGFyZW50IG1vZHVsZSB0aGF0IGhlbGQgYWxsIHRob3NlIHdvdWxkIHByb2JhYmx5IGJlIHNtYXJ0LgorCis9PSBFbGVtZW50cyBhbmQgSURzCisKK0luIGxpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMjA1MVtUSU5LRVJQT1AtMjA1MV0gd2UgdHJpZWQgdG8gbWFrZSB2ZXJ0ZXggcHJvcGVydHkgaWRzIGxvY2FsIHRvIHRoZWlyIHZlcnRleC4gU2V2ZXJhbCBhcHByb2FjaGVzIHdlcmUgbGVhZGluZyBub3doZXJlLCBpbiBtb3N0IGNhc2VzIHdlIGp1c3QgYnJva2UgdGhlIEdyeW8gY29tcGF0aWJpbGl0eSB0ZXN0IHN1aXRlLiBUaGUgYmFzaWMgaWRlYSB3YXMgdG8gcmVtZW1iZXIgdGhlIHBhcmVudCBlbGVtZW50IChhdCBsZWFzdCBpdHMgaWQpIGFuZCB1c2UgaXQgaW4gcHJvcGVydHkgZXF1YWxpdHkgY29tcGFyaXNvbnMuIFRoaXMgd2F5LCB0aGUgcHJvcGVydHkgYFtuYW1lLT5tYXJrb11gIHdvdWxkIG9ubHkgbWF0Y2ggYW5vdGhlciBgW25hbWUtPm1hcmtvXWAgcHJvcGVydHkgaWYgdGhlIHBhcmVudCBlbGVtZW50cyB3ZXJlIHRoZSBzYW1lLiBJbiB0aGUgZW5kIGl0IHdhcyBxdWVzdGlvbmVkIGlmIHRoYXQncyBldmVuIHRoZSByaWdodCBhcHByb2FjaCAvIHdoYXQgdXNlcnMgZXhwZWN0LiBGcm9tIGEgdXNlciBwZXJzcGVjdGl2ZSBpdCB3b3VsZCBwcm9iYWJseSBtYWtlIG1vcmUgc2Vuc2UgaWYgdHdvIHByb3BlcnRpZXMgd291bGQgbWF0Y2ggaWYgdGhlIGtleXMgYW5kIHZhbHVlcyBtYXRjaC4gVGhhdCBzYWlkLCB3ZSBzaG91bGQgcXVlc3Rpb24gd2hldGhlciB3ZSBhY3R1YWxseSBuZWVkIGlkcyBvbiBwcm9wZXJ0aWVzIGFuZCB0aHVzIHdoZXRoZXIgcHJvcGVydGllcyBhcmUgYWN0dWFsbHkgYGBFbGVtZW50YGBzLgorCis9PT0gQ29tbWVudHMgW2RrXQorCitJbiBteSBvcGluaW9uLCBvbmx5IHZlcnRpY2VzIHNob3VsZCBoYXZlIGdsb2JhbGx5IHVuaXF1ZSBpZHMuIEVkZ2UgaWRzIHNob3VsZCBiZSBsb2NhbCB0byB0aGUgb3V0LXZlcnRleCAodGhhdCByZXF1aXJlcyB0aGF0IHdlICJyZW1lbWJlciIgdGhlIG91dC12ZXJ0ZXggaWQsIGV2ZW4gaWYgdGhlIGVkZ2UgaXMgZGV0YWNoZWQpIGFuZCBwcm9wZXJ0aWVzIHNob3VsZCBoYXZlIG5vIGlkcyBhdCBhbGwsIHRoZXkgY2FuIGJlIHNpbXBseSBpZGVudGlmaWVkIGJ5IHRoZWlyIGtleSAob3Iga2V5IGFuZCB2YWx1ZSBpZiB3ZSBkZWNpZGUgdG8ga2VlcCBtdWx0aS1wcm9wZXJ0aWVzKS4KZGlmZiAtLWdpdCBhL2RvY3Mvc3JjL2Rldi9pby9ncmFwaGJpbmFyeS5hc2NpaWRvYyBiL2RvY3Mvc3JjL2Rldi9pby9ncmFwaGJpbmFyeS5hc2NpaWRvYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGQwYWMwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9zcmMvZGV2L2lvL2dyYXBoYmluYXJ5LmFzY2lpZG9jCkBAIC0wLDAgKzEsNzgxIEBACisvLy8vCitMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lIG9yIG1vcmUKK2NvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUgZGlzdHJpYnV0ZWQgd2l0aAordGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLgorVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUgdG8gWW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAKKyh0aGUgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoCit0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCitVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCitkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCitTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCitsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworLy8vLworCitbW2dyYXBoYmluYXJ5XV0KKz0gR3JhcGhCaW5hcnkKKworR3JhcGhCaW5hcnkgaXMgYSBiaW5hcnkgc2VyaWFsaXphdGlvbiBmb3JtYXQgc3VpdGFibGUgZm9yIG9iamVjdCB0cmVlcywgZGVzaWduZWQgdG8gcmVkdWNlIHNlcmlhbGl6YXRpb24KK292ZXJoZWFkIG9uIGJvdGggdGhlIGNsaWVudCBhbmQgdGhlIHNlcnZlciwgYXMgd2VsbCBhcyBsaW1pdGluZyB0aGUgc2l6ZSBvZiB0aGUgcGF5bG9hZCB0aGF0IGlzIHRyYW5zbWl0dGVkIG92ZXIgdGhlCit3aXJlLgorCitJdCBkZXNjcmliZXMgYXJiaXRyYXJ5IG9iamVjdCBncmFwaHMgd2l0aCBhIGZ1bGx5LXF1YWxpZmllZCBmb3JtYXQ6CisKK1tzb3VyY2VdCistLS0tCit7dHlwZV9jb2RlfXt0eXBlX2luZm99e3ZhbHVlX2ZsYWd9e3ZhbHVlfQorLS0tLQorCitXaGVyZToKKworKiBge3R5cGVfY29kZX1gIGlzIGEgc2luZ2xlIHVuc2lnbmVkIGJ5dGUgcmVwcmVzZW50aW5nIHRoZSB0eXBlIG51bWJlci4KKyogYHt0eXBlX2luZm99YCBpcyBhbiBvcHRpb25hbCBzZXF1ZW5jZSBvZiBieXRlcyBwcm92aWRpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvZiB0aGUgdHlwZSByZXByZXNlbnRlZC4gVGhpcyBpcworc3BlY2lhbGx5IHVzZWZ1bCBmb3IgcmVwcmVzZW50aW5nIGNvbXBsZXggYW5kIGN1c3RvbSB0eXBlcy4KKyogYHt2YWx1ZV9mbGFnfWAgaXMgYSBzaW5nbGUgYnl0ZSBwcm92aWRpbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHZhbHVlLiBGbGFncyBoYXZlIHRoZSBmb2xsb3dpbmcgbWVhbmluZzoKKyoqIGAweDAxYCBUaGUgdmFsdWUgaXMgYG51bGxgLiBXaGVuIHRoaXMgZmxhZyBpcyBzZXQsIG5vIGJ5dGVzIGZvciBge3ZhbHVlfWAgd2lsbCBiZSBwcm92aWRlZC4KKyogYHt2YWx1ZX1gIGlzIGEgc2VxdWVuY2Ugb2YgYnl0ZXMgd2hpY2ggY29udGVudCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB0eXBlLgorCitBbGwgZW5jb2RpbmdzIGFyZSBiaWctZW5kaWFuLgorCitRdWljayBleGFtcGxlcywgdXNpbmcgaGV4YWRlY2ltYWwgbm90YXRpb24gdG8gcmVwcmVzZW50IGVhY2ggYnl0ZToKKworLSBgMDEgMDAgMDAgMDAgMDAgMDFgOiBhIDMyLWJpdCBpbnRlZ2VyIG51bWJlciwgdGhhdCByZXByZXNlbnRzIHRoZSBkZWNpbWFsIG51bWJlciAxLiBJdOKAmXMgY29tcG9zZWQgYnkgdGhlCit0eXBlX2NvZGUgYDB4MDFgLCBhbmQgZW1wdHkgZmxhZyB2YWx1ZSBgMHgwMGAgYW5kIGZvdXIgYnl0ZXMgdG8gZGVzY3JpYmUgdGhlIHZhbHVlLgorLSBgMDEgMDAgMDAgMDAgMDAgZmZgOiBhIDMyLWJpdCBpbnRlZ2VyLCByZXByZXNlbnRpbmcgdGhlIG51bWJlciAyNTYuCistIGAwMSAwMWA6IGEgbnVsbCB2YWx1ZSBmb3IgYSAzMi1iaXQgaW50ZWdlci4gSXTigJlzIGNvbXBvc2VkIGJ5IHRoZSB0eXBlX2NvZGUgYDB4MDFgLCBhbmQgYSBudWxsIGZsYWcgdmFsdWUgYDB4MDFgLgorLSBgMDIgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDFgOiBhIDY0LWJpdCBpbnRlZ2VyIG51bWJlciAxLiBJdOKAmXMgY29tcG9zZWQgYnkgdGhlIHR5cGVfY29kZSBgMHgwMmAsIGVtcHR5IGZsYWdzIGFuZAorZWlnaHQgYnl0ZXMgdG8gZGVzY3JpYmUgdGhlIHZhbHVlLgorCis9PSBWZXJzaW9uIDEuMAorCis9PT0gRm9yd2FyZCBDb21wYXRpYmlsaXR5CisKK1RoZSBzZXJpYWxpemF0aW9uIGZvcm1hdCBzdXBwb3J0cyBuZXcgdHlwZXMgYmVpbmcgYWRkZWQgd2l0aG91dCB0aGUgbmVlZCB0byBpbnRyb2R1Y2UgYSBuZXcgdmVyc2lvbi4KKworQ2hhbmdlcyB0byBleGlzdGluZyB0eXBlcyByZXF1aXJlIG5ldyByZXZpc2lvbi4KKworPT09IERhdGEgVHlwZSBDb2RlcworCis9PT09IENvcmUgRGF0YSBUeXBlcworCistIGAweDAxYDogSW50CistIGAweDAyYDogTG9uZworLSBgMHgwM2A6IFN0cmluZworLSBgMHgwNGA6IERhdGUKKy0gYDB4MDVgOiBUaW1lc3RhbXAKKy0gYDB4MDZgOiBDbGFzcworLSBgMHgwN2A6IERvdWJsZQorLSBgMHgwOGA6IEZsb2F0CistIGAweDA5YDogTGlzdAorLSBgMHgwYWA6IE1hcAorLSBgMHgwYmA6IFNldAorLSBgMHgwY2A6IFVVSUQKKy0gYDB4MGRgOiBFZGdlCistIGAweDBlYDogUGF0aAorLSBgMHgwZmA6IFByb3BlcnR5CistIGAweDEwYDogVGlua2VyR3JhcGgKKy0gYDB4MTFgOiBWZXJ0ZXgKKy0gYDB4MTJgOiBWZXJ0ZXhQcm9wZXJ0eQorLSBgMHgxM2A6IEJhcnJpZXIKKy0gYDB4MTRgOiBCaW5kaW5nCistIGAweDE1YDogQnl0ZWNvZGUKKy0gYDB4MTZgOiBDYXJkaW5hbGl0eQorLSBgMHgxN2A6IENvbHVtbgorLSBgMHgxOGA6IERpcmVjdGlvbgorLSBgMHgxOWA6IE9wZXJhdG9yCistIGAweDFhYDogT3JkZXIKKy0gYDB4MWJgOiBQaWNrCistIGAweDFjYDogUG9wCistIGAweDFkYDogTGFtYmRhCistIGAweDFlYDogUAorLSBgMHgxZmA6IFNjb3BlCistIGAweDIwYDogVAorLSBgMHgyMWA6IFRyYXZlcnNlcgorLSBgMHgyMmA6IEJpZ0RlY2ltYWwKKy0gYDB4MjNgOiBCaWdJbnRlZ2VyCistIGAweDI0YDogQnl0ZQorLSBgMHgyNWA6IEJ5dGVCdWZmZXIKKy0gYDB4MjZgOiBTaG9ydAorLSBgMHgyN2A6IEJvb2xlYW4KKy0gYDB4MjhgOiBUZXh0UAorLSBgMHgyOWA6IFRyYXZlcnNhbFN0cmF0ZWd5CistIGAweDJhYDogQnVsa1NldAorLSBgMHgyYmA6IFRyZWUKKy0gYDB4MmNgOiBNZXRyaWNzCistIGAweDJkYDogVHJhdmVyc2FsTWV0cmljcworLSBgMHhmZWA6IFVuc3BlY2lmaWVkIG51bGwgb2JqZWN0CistIGAweDAwYDogQ3VzdG9tCisKKz09PT0gRXh0ZW5kZWQgVHlwZXMKKworLSBgMHg4MGA6IENoYXIKKy0gYDB4ODFgOiBEdXJhdGlvbgorLSBgMHg4MmA6IEluZXRBZGRyZXNzCistIGAweDgzYDogSW5zdGFudAorLSBgMHg4NGA6IExvY2FsRGF0ZQorLSBgMHg4NWA6IExvY2FsRGF0ZVRpbWUKKy0gYDB4ODZgOiBMb2NhbFRpbWUKKy0gYDB4ODdgOiBNb250aERheQorLSBgMHg4OGA6IE9mZnNldERhdGVUaW1lCistIGAweDg5YDogT2Zmc2V0VGltZQorLSBgMHg4YWA6IFBlcmlvZAorLSBgMHg4YmA6IFllYXIKKy0gYDB4OGNgOiBZZWFyTW9udGgKKy0gYDB4OGRgOiBab25lZERhdGVUaW1lCistIGAweDhlYDogWm9uZU9mZnNldAorCis9PT0gTnVsbCBoYW5kbGluZworCitUaGUgc2VyaWFsaXphdGlvbiBmb3JtYXQgZGVmaW5lcyB0d28gd2F5cyB0byByZXByZXNlbnQgbnVsbCB2YWx1ZXM6CisKKy0gVW5zcGVjaWZpZWQgbnVsbCBvYmplY3QKKy0gRnVsbHktcXVhbGlmaWVkIG51bGwKKworV2hlbiBhIHBhcmVudCB0eXBlIGNhbiBjb250YWluIGFueSBzdWJ0eXBlIGUuZy4sIGEgb2JqZWN0IGNvbGxlY3Rpb24sIGEgYG51bGxgIHZhbHVlIG11c3QgYmUgcmVwcmVzZW50ZWQgdXNpbmcgdGhlCisiVW5zcGVjaWZpZWQgTnVsbCBPYmplY3QiIHR5cGUgY29kZSBhbmQgdGhlIG51bGwgdmFsdWUgZmxhZy4KKworSW4gY29udHJhc3QsIHdoZW4gdGhlIHBhcmVudCB0eXBlIGNvbnRhaW5zIGEgdHlwZSBwYXJhbWV0ZXIgdGhhdCBtdXN0IGJlIHNwZWNpZmllZCwgYSBgbnVsbGAgdmFsdWUgaXMgcmVwcmVzZW50ZWQgdXNpbmcKK2EgZnVsbHktcXVhbGlmaWVkIG9iamVjdCB1c2luZyB0aGUgYXBwcm9wcmlhdGUgdHlwZSBjb2RlIGFuZCB0eXBlIGluZm9ybWF0aW9uLgorCis9PT0gRGF0YSBUeXBlIEZvcm1hdHMKKworPT09PSBJbnQKKworRm9ybWF0OiA0LWJ5dGUgdHdvJ3MgY29tcGxlbWVudCBpbnRlZ2VyLgorCitFeGFtcGxlIHZhbHVlczoKKworLSBgMDAgMDAgMDAgMDFgOiAzMi1iaXQgaW50ZWdlciBudW1iZXIgMS4KKy0gYDAwIDAwIDAxIDAxYDogMzItYml0IGludGVnZXIgbnVtYmVyIDI1Ni4KKy0gYGZmIGZmIGZmIGZmYDogMzItYml0IGludGVnZXIgbnVtYmVyIC0xLgorLSBgZmYgZmYgZmYgZmVgOiAzMi1iaXQgaW50ZWdlciBudW1iZXIgLTIuCisKKz09PT0gTG9uZworCitGb3JtYXQ6IDQtYnl0ZSB0d28ncyBjb21wbGVtZW50IGludGVnZXIuCisKK0V4YW1wbGUgdmFsdWVzCisKKy0gYDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAxYDogNjQtYml0IGludGVnZXIgbnVtYmVyIDEuCistIGBmZiBmZiBmZiBmZiBmZiBmZiBmZiBmZWA6IDY0LWJpdCBpbnRlZ2VyIG51bWJlciAtMi4KKworPT09PSBTdHJpbmcKKworRm9ybWF0OiBge2xlbmd0aH17dGV4dF92YWx1ZX1gCisKK1doZXJlOgorCistIGB7bGVuZ3RofWAgaXMgYW4gYEludGAgZGVzY3JpYmluZyB0aGUgYnl0ZSBsZW5ndGggb2YgdGhlIHRleHQuIExlbmd0aCBpcyBhIHBvc2l0aXZlIG51bWJlciBvciB6ZXJvIHRvIHJlcHJlc2VudAordGhlIGVtcHR5IHN0cmluZy4KKy0gYHt0ZXh0X3ZhbHVlfWAgaXMgYSBzZXF1ZW5jZSBvZiBieXRlcyByZXByZXNlbnRpbmcgdGhlIHN0cmluZyB2YWx1ZSBpbiBVVEY4IGVuY29kaW5nLgorCitFeGFtcGxlIHZhbHVlcworCistIGAwMCAwMCAwMCAwMyA2MSA2MiA2M2A6IHRoZSBzdHJpbmcgJ2FiYycuCistIGAwMCAwMCAwMCAwNCA2MSA2MiA2MyA2NGA6IHRoZSBzdHJpbmcgJ2FiY2QnLgorLSBgMDAgMDAgMDAgMDBgOiB0aGUgZW1wdHkgc3RyaW5nICcnLgorCis9PT09IERhdGUKKworRm9ybWF0OiBBbiA4LWJ5dGUgdHdvJ3MgY29tcGxlbWVudCBzaWduZWQgaW50ZWdlciByZXByZXNlbnRpbmcgYSBtaWxsaXNlY29uZC1wcmVjaXNpb24gb2Zmc2V0IGZyb20gdGhlIHVuaXggZXBvY2guCisKK0V4YW1wbGUgdmFsdWVzCisKKy0gYDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwYDogVGhlIG1vbWVudCBpbiB0aW1lIDE5NzAtMDEtMDFUMDA6MDA6MDAuMDAwWi4KKy0gYGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmYDogVGhlIG1vbWVudCBpbiB0aW1lIDE5NjktMTItMzFUMjM6NTk6NTkuOTk5Wi4KKworPT09PSBUaW1lc3RhbXAKKworRm9ybWF0OiBUaGUgc2FtZSBhcyBgRGF0ZWAuCisKKz09PT0gQ2xhc3MKKworRm9ybWF0OiBBIGBTdHJpbmdgIGNvbnRhaW5pbmcgdGhlIGZxY24uCisKKz09PT0gRG91YmxlCisKK0Zvcm1hdDogOCBieXRlcyByZXByZXNlbnRpbmcgSUVFRSA3NTQgZG91YmxlLXByZWNpc2lvbiBiaW5hcnkgZmxvYXRpbmctcG9pbnQgZm9ybWF0LgorCitFeGFtcGxlIHZhbHVlcworCistIGAzZiBmMCAwMCAwMCAwMCAwMCAwMCAwMGA6IERvdWJsZSAxCistIGAzZiA3MCAwMCAwMCAwMCAwMCAwMCAwMGA6IERvdWJsZSAwLjAwMzkwNjI1CistIGAzZiBiOSA5OSA5OSA5OSA5OSA5OSA5YWA6IERvdWJsZSAwLjEKKworPT09PSBGbG9hdAorCitGb3JtYXQ6IDQgYnl0ZXMgcmVwcmVzZW50aW5nIElFRUUgNzU0IHNpbmdsZS1wcmVjaXNpb24gYmluYXJ5IGZsb2F0aW5nLXBvaW50IGZvcm1hdC4KKworRXhhbXBsZSB2YWx1ZXMKKworLSBgM2YgODAgMDAgMDBgOiBGbG9hdCAxCistIGAzZSBjMCAwMCAwMGA6IEZsb2F0IDAuMzc1CisKKz09PT0gTGlzdAorCitBbiBvcmRlcmVkIGNvbGxlY3Rpb24gb2YgaXRlbXMuCisKK0Zvcm1hdDogYHtsZW5ndGh9e2l0ZW1fMH0uLi57aXRlbV9ufWAKKworV2hlcmU6CisKKy0gYHtsZW5ndGh9YCBpcyBhbiBgSW50YCBkZXNjcmliaW5nIHRoZSBsZW5ndGggb2YgdGhlIGNvbGxlY3Rpb24uCistIGB7aXRlbV8wfS4uLntpdGVtX259YCBhcmUgdGhlIGl0ZW1zIG9mIHRoZSBsaXN0LiBge2l0ZW1faX1gIGlzIGEgZnVsbHkgcXVhbGlmaWVkIHR5cGVkIHZhbHVlIGNvbXBvc2VkIG9mCitge3R5cGVfY29kZX17dHlwZV9pbmZvfXt2YWx1ZV9mbGFnfXt2YWx1ZX1gLgorCis9PT09IFNldAorCitBIGNvbGxlY3Rpb24gdGhhdCBjb250YWlucyBubyBkdXBsaWNhdGUgZWxlbWVudHMuCisKK0Zvcm1hdDogU2FtZSBhcyBgTGlzdGAuCisKKz09PT0gTWFwCisKK0EgZGljdGlvbmFyeSBvZiBrZXlzIHRvIHZhbHVlcy4KKworRm9ybWF0OiBge2xlbmd0aH17aXRlbV8wfS4uLntpdGVtX259YAorCitXaGVyZToKKworLSBge2xlbmd0aH1gIGlzIGFuIGBJbnRgIGRlc2NyaWJpbmcgdGhlIGxlbmd0aCBvZiB0aGUgbWFwLgorLSBge2l0ZW1fMH0uLi57aXRlbV9ufWAgYXJlIHRoZSBpdGVtcyBvZiB0aGUgbWFwLiBge2l0ZW1faX1gIGlzIHNlcXVlbmNlIG9mIDIgZnVsbHkgcXVhbGlmaWVkIHR5cGVkIHZhbHVlcyBvbmUKK3JlcHJlc2VudGluZyB0aGUga2V5IGFuZCB0aGUgZm9sbG93aW5nIHJlcHJlc2VudGluZyB0aGUgdmFsdWUsIGVhY2ggY29tcG9zZWQgb2YKK2B7dHlwZV9jb2RlfXt0eXBlX2luZm99e3ZhbHVlX2ZsYWd9e3ZhbHVlfWAuCisKKz09PT0gVVVJRAorCitBIDEyOC1iaXQgdW5pdmVyc2FsbHkgdW5pcXVlIGlkZW50aWZpZXIuCisKK0Zvcm1hdDogMTYgYnl0ZXMgcmVwcmVzZW50aW5nIHRoZSB1dWlkLgorCitFeGFtcGxlCisKKy0gYDAwIDExIDIyIDMzIDQ0IDU1IDY2IDc3IDg4IDk5IGFhIGJiIGNjIGRkIGVlIGZmYDogVXVpZCAwMDExMjIzMy00NDU1LTY2NzctODg5OS1hYWJiY2NkZGVlZmYuCisKKz09PT0gRWRnZQorCitGb3JtYXQ6IGB7aWR9e2xhYmVsfXtpblZJZH17aW5WTGFiZWx9e291dFZJZH17b3V0VkxhYmVsfXtwYXJlbnR9e3Byb3BlcnRpZXN9YAorCitXaGVyZToKKworLSBge2lkfWAgaXMgYSBmdWxseSBxdWFsaWZpZWQgdHlwZWQgdmFsdWUgY29tcG9zZWQgb2YgYHt0eXBlX2NvZGV9e3R5cGVfaW5mb317dmFsdWVfZmxhZ317dmFsdWV9YC4KKy0gYHtsYWJlbH1gIGlzIGEgYFN0cmluZ2AgdmFsdWUuCistIGB7aW5WSWR9YCBpcyBhIGZ1bGx5IHF1YWxpZmllZCB0eXBlZCB2YWx1ZSBjb21wb3NlZCBvZiBge3R5cGVfY29kZX17dHlwZV9pbmZvfXt2YWx1ZV9mbGFnfXt2YWx1ZX1gLgorLSBge2luVkxhYmVsfWAgaXMgYSBgU3RyaW5nYCB2YWx1ZS4KKy0gYHtvdXRWSWR9YCBpcyBhIGZ1bGx5IHF1YWxpZmllZCB0eXBlZCB2YWx1ZSBjb21wb3NlZCBvZiBge3R5cGVfY29kZX17dHlwZV9pbmZvfXt2YWx1ZV9mbGFnfXt2YWx1ZX1gLgorLSBge291dFZMYWJlbH1gIGlzIGEgYFN0cmluZ2AgdmFsdWUuCistIGB7cGFyZW50fWAgaXMgYSBmdWxseSBxdWFsaWZpZWQgdHlwZWQgdmFsdWUgY29tcG9zZWQgb2YgYHt0eXBlX2NvZGV9e3R5cGVfaW5mb317dmFsdWVfZmxhZ317dmFsdWV9YCB3aGljaCBjb250YWlucwordGhlIHBhcmVudCBgVmVydGV4YC4gTm90ZSB0aGF0IGFzIFRpbmtlclBvcCBjdXJyZW50bHkgc2VuZCAicmVmZXJlbmNlcyIgb25seSwgdGhpcyB2YWx1ZSB3aWxsIGFsd2F5cyBiZSBgbnVsbGAuCistIGB7cHJvcGVydGllc31gIGlzIGEgZnVsbHkgcXVhbGlmaWVkIHR5cGVkIHZhbHVlIGNvbXBvc2VkIG9mIGB7dHlwZV9jb2RlfXt0eXBlX2luZm99e3ZhbHVlX2ZsYWd9e3ZhbHVlfWAgd2hpY2ggY29udGFpbnMKK3RoZSBwcm9wZXJ0aWVzIGZvciB0aGUgZWRnZS4gTm90ZSB0aGF0IGFzIFRpbmtlclBvcCBjdXJyZW50bHkgc2VuZCAicmVmZXJlbmNlcyIgb25seSB0aGlzIHZhbHVlIHdpbGwgYWx3YXlzIGJlIGBudWxsYC4KKworPT09PSBQYXRoCisKK0Zvcm1hdDogYHtsYWJlbHN9e29iamVjdHN9YAorCitXaGVyZToKKworLSBge2xhYmVsc31gIGlzIGEgYExpc3RgIGluIHdoaWNoIGVhY2ggaXRlbSBpcyBhIGBTZXRgIG9mIGBTdHJpbmdgLgorLSBge29iamVjdHN9YCBpcyBhIGBMaXN0YCBvZiBmdWxseSBxdWFsaWZpZWQgdHlwZWQgdmFsdWVzLgorCis9PT09IFByb3BlcnR5CisKK0Zvcm1hdDogYHtrZXl9e3ZhbHVlfXtwYXJlbnR9YAorCitXaGVyZToKKworLSBge2tleX1gIGlzIGEgYFN0cmluZ2AgdmFsdWUuCistIGB7dmFsdWV9YCAgaXMgYSBmdWxseSBxdWFsaWZpZWQgdHlwZWQgdmFsdWUgY29tcG9zZWQgb2YgYHt0eXBlX2NvZGV9e3R5cGVfaW5mb317dmFsdWVfZmxhZ317dmFsdWV9YC4KKy0gYHtwYXJlbnR9YCBpcyBhIGZ1bGx5IHF1YWxpZmllZCB0eXBlZCB2YWx1ZSBjb21wb3NlZCBvZiBge3R5cGVfY29kZX17dHlwZV9pbmZvfXt2YWx1ZV9mbGFnfXt2YWx1ZX1gIHdoaWNoIGlzIGVpdGhlcgorYW4gYEVkZ2VgIG9yIGBWZXJ0ZXhQcm9wZXJ0eWAuIE5vdGUgdGhhdCBhcyBUaW5rZXJQb3AgY3VycmVudGx5IHNlbmRzICJyZWZlcmVuY2VzIiBvbmx5IHRoaXMgdmFsdWUgd2lsbCBhbHdheXMgYmUKK2BudWxsYC4KKworPT09PSBHcmFwaAorCitBIGNvbGxlY3Rpb24gb2YgdmVydGljZXMgYW5kIGVkZ2VzLiBOb3RlIHRoYXQgd2hpbGUgc2ltaWxhciB0aGUgdmVydGV4L2VkZ2UgZm9ybWF0cyBoZXJlIGhvbGQgc29tZSBkaWZmZXJlbmNlcyBhcworY29tcGFyZWQgdG8gdGhlIGBWZXJ0ZXhgIGFuZCBgRWRnZWAgZm9ybWF0cyB1c2VkIGZvciBzdGFuZGFyZCBzZXJpYWxpemF0aW9uL2Rlc2VyaWFsaWF0aW9uIG9mIGEgc2luZ2xlIGdyYXBoIGVsZW1lbnQuCisKK0Zvcm1hdDogYHt2bGVuZ3RofXt2ZXJ0ZXhfMH0uLi57dmVydGV4X259e2VsZW5ndGh9e2VkZ2VfMH0uLi57ZWRnZV9ufWAKKworV2hlcmU6CisKKy0gYHt2bGVuZ3RofWAgaXMgYW4gYEludGAgZGVzY3JpYmluZyB0aGUgbnVtYmVyIG9mIHZlcnRpY2VzLgorLSBge3ZlcnRleF8wfS4uLnt2ZXJ0ZXhfbn1gIGFyZSB2ZXJ0aWNlcyBhcyBkZXNjcmliZWQgYmVsb3cuCistIGB7ZWxlbmd0aH1gIGlzIGFuIGBJbnRgIGRlc2NyaWJpbmcgdGhlIG51bWJlciBvZiBlZGdlcy4KKy0gYHtlZGdlXzB9Li4ue2VkZ2Vfbn1gIGFyZSBlZGdlcyBhcyBkZXNjcmliZWQgYmVsb3cuCisKK1ZlcnRleCBGb3JtYXQ6IGB7aWR9e2xhYmVsfXtwbGVuZ3RofXtwcm9wZXJ0eV8wfS4uLntwcm9wZXJ0eV9ufWAKKworLSBge2lkfWAgaXMgYSBmdWxseSBxdWFsaWZpZWQgdHlwZWQgdmFsdWUgY29tcG9zZWQgb2YgYHt0eXBlX2NvZGV9e3R5cGVfaW5mb317dmFsdWVfZmxhZ317dmFsdWV9YC4KKy0gYHtsYWJlbH1gIGlzIGEgYFN0cmluZ2AgdmFsdWUuCistIGB7cGxlbmd0aH1gIGlzIGFuIGBJbnRgIGRlc2NyaWJpbmcgdGhlIG51bWJlciBvZiBwcm9wZXJ0aWVzIG9uIHRoZSB2ZXJ0ZXguCistIGB7cHJvcGVydHlfMH0uLi57cHJvcGVydHlfbn1gIGFyZSB0aGUgdmVydGV4IHByb3BlcnRpZXMgY29uc2lzdGluZyBvZiBge2lkfXtsYWJlbH17dmFsdWV9e3BhcmVudH17cHJvcGVydGllc31gIGFzCitkZWZpbmVkIGluIGBWZXJ0ZXhQcm9wZXJ0eWAgd2hlcmUgdGhlIGB7cGFyZW50fWAgaXMgYWx3YXlzIGBudWxsYCBhbmQgYHtwcm9wZXJ0aWVzfWAgaXMgYSBgTGlzdGAgb2YgYFByb3BlcnR5YCBvYmplY3RzLgorCitFZGdlIEZvcm1hdDogYHtpZH17bGFiZWx9e2luVklkfXtpblZMYWJlbH17b3V0VklkfXtvdXRWTGFiZWx9e3BhcmVudH17cHJvcGVydGllc31gCisKK1doZXJlOgorCistIGB7aWR9YCBpcyBhIGZ1bGx5IHF1YWxpZmllZCB0eXBlZCB2YWx1ZSBjb21wb3NlZCBvZiBge3R5cGVfY29kZX17dHlwZV9pbmZvfXt2YWx1ZV9mbGFnfXt2YWx1ZX1gLgorLSBge2xhYmVsfWAgaXMgYSBgU3RyaW5nYCB2YWx1ZS4KKy0gYHtpblZJZH1gIGlzIGEgZnVsbHkgcXVhbGlmaWVkIHR5cGVkIHZhbHVlIGNvbXBvc2VkIG9mIGB7dHlwZV9jb2RlfXt0eXBlX2luZm99e3ZhbHVlX2ZsYWd9e3ZhbHVlfWAuCistIGB7aW5WTGFiZWx9YCBpcyBhbHdheXMgYG51bGxgLgorLSBge291dFZJZH1gIGlzIGEgZnVsbHkgcXVhbGlmaWVkIHR5cGVkIHZhbHVlIGNvbXBvc2VkIG9mIGB7dHlwZV9jb2RlfXt0eXBlX2luZm99e3ZhbHVlX2ZsYWd9e3ZhbHVlfWAuCistIGB7b3V0VkxhYmVsfWAgaXMgYWx3YXlzIGBudWxsYC4KKy0gYHtwYXJlbnR9YCBpcyBhbHdheXMgYG51bGxgLgorLSBge3Byb3BlcnRpZXN9YCBpcyBhIGBMaXN0YCBvZiBgUHJvcGVydHlgIG9iamVjdHMuCisKKz09PT0gVmVydGV4CisKK0Zvcm1hdDogYHtpZH17bGFiZWx9e3Byb3BlcnRpZXN9YAorCitXaGVyZToKKworLSBge2lkfWAgaXMgYSBmdWxseSBxdWFsaWZpZWQgdHlwZWQgdmFsdWUgY29tcG9zZWQgb2YgYHt0eXBlX2NvZGV9e3R5cGVfaW5mb317dmFsdWVfZmxhZ317dmFsdWV9YC4KKy0gYHtsYWJlbH1gIGlzIGEgYFN0cmluZ2AgdmFsdWUuCistIGB7cHJvcGVydGllc31gIGlzIGEgZnVsbHkgcXVhbGlmaWVkIHR5cGVkIHZhbHVlIGNvbXBvc2VkIG9mIGB7dHlwZV9jb2RlfXt0eXBlX2luZm99e3ZhbHVlX2ZsYWd9e3ZhbHVlfWAgd2hpY2ggY29udGFpbnMKK3Byb3BlcnRpZXMuIE5vdGUgdGhhdCBhcyBUaW5rZXJQb3AgY3VycmVudGx5IHNlbmQgInJlZmVyZW5jZXMiIG9ubHksIHRoaXMgdmFsdWUgd2lsbCBhbHdheXMgYmUgYG51bGxgLgorCis9PT09IFZlcnRleFByb3BlcnR5CisKK0Zvcm1hdDogYHtpZH17bGFiZWx9e3ZhbHVlfXtwYXJlbnR9e3Byb3BlcnRpZXN9YAorCitXaGVyZToKKworLSBge2lkfWAgaXMgYSBmdWxseSBxdWFsaWZpZWQgdHlwZWQgdmFsdWUgY29tcG9zZWQgb2YgYHt0eXBlX2NvZGV9e3R5cGVfaW5mb317dmFsdWVfZmxhZ317dmFsdWV9YC4KKy0gYHtsYWJlbH1gIGlzIGEgYFN0cmluZ2AgdmFsdWUuCistIGB7dmFsdWV9YCBpcyBhIGZ1bGx5IHF1YWxpZmllZCB0eXBlZCB2YWx1ZSBjb21wb3NlZCBvZiBge3R5cGVfY29kZX17dHlwZV9pbmZvfXt2YWx1ZV9mbGFnfXt2YWx1ZX1gLgorLSBge3BhcmVudH1gIGlzIGEgZnVsbHkgcXVhbGlmaWVkIHR5cGVkIHZhbHVlIGNvbXBvc2VkIG9mIGB7dHlwZV9jb2RlfXt0eXBlX2luZm99e3ZhbHVlX2ZsYWd9e3ZhbHVlfWAgd2hpY2ggY29udGFpbnMKK3RoZSBwYXJlbnQgYFZlcnRleGAuIE5vdGUgdGhhdCBhcyBUaW5rZXJQb3AgY3VycmVudGx5IHNlbmQgInJlZmVyZW5jZXMiIG9ubHksIHRoaXMgdmFsdWUgd2lsbCBhbHdheXMgYmUgYG51bGxgLgorLSBge3Byb3BlcnRpZXN9YCBpcyBhIGZ1bGx5IHF1YWxpZmllZCB0eXBlZCB2YWx1ZSBjb21wb3NlZCBvZiBge3R5cGVfY29kZX17dHlwZV9pbmZvfXt2YWx1ZV9mbGFnfXt2YWx1ZX1gIHdoaWNoIGNvbnRhaW5zCitwcm9wZXJ0aWVzLiBOb3RlIHRoYXQgYXMgVGlua2VyUG9wIGN1cnJlbnRseSBzZW5kICJyZWZlcmVuY2VzIiBvbmx5LCB0aGlzIHZhbHVlIHdpbGwgYWx3YXlzIGJlIGBudWxsYC4KKworPT09PSBCYXJyaWVyCisKK0Zvcm1hdDogYSBzaW5nbGUgYFN0cmluZ2AgcmVwcmVzZW50aW5nIHRoZSBlbnVtIHZhbHVlLgorCis9PT09IEJpbmRpbmcKKworRm9ybWF0OiBge2tleX17dmFsdWV9YAorCitXaGVyZToKKworLSBge2tleX1gIGlzIGEgYFN0cmluZ2AgdmFsdWUuCistIGB7dmFsdWV9YCBpcyBhIGZ1bGx5IHF1YWxpZmllZCB0eXBlZCB2YWx1ZSBjb21wb3NlZCBvZiBge3R5cGVfY29kZX17dHlwZV9pbmZvfXt2YWx1ZV9mbGFnfXt2YWx1ZX1gLgorCis9PT09IEJ5dGVjb2RlCisKK0Zvcm1hdDogYHtzdGVwc19sZW5ndGh9e3N0ZXBfMH0uLi57c3RlcF9ufXtzb3VyY2VzX2xlbmd0aH17c291cmNlXzB9Li4ue3NvdXJjZV9ufWAKKworV2hlcmU6CisKKyogYHtzdGVwc19sZW5ndGh9YCBpcyBhbiBgSW50YCB2YWx1ZSBkZXNjcmliaW5nIHRoZSBhbW91bnQgb2Ygc3RlcHMuCisqIGB7c3RlcF9pfWAgaXMgY29tcG9zZWQgb2YgYHtuYW1lfXt2YWx1ZXNfbGVuZ3RofXt2YWx1ZV8wfS4uLnt2YWx1ZV9ufWAsIHdoZXJlOgorKiogYHtuYW1lfWAgaXMgYSBTdHJpbmcuCisqKiBge3ZhbHVlc19sZW5ndGh9YCBpcyBhbiBgSW50YCBkZXNjcmliaW5nIHRoZSBhbW91bnQgdmFsdWVzLgorKiogYHt2YWx1ZV9pfWAgaXMgYSBmdWxseSBxdWFsaWZpZWQgdHlwZWQgdmFsdWUgY29tcG9zZWQgb2YgYHt0eXBlX2NvZGV9e3R5cGVfaW5mb317dmFsdWVfZmxhZ317dmFsdWV9YCBkZXNjcmliaW5nIHRoZSBzdGVwIGFyZ3VtZW50LgorKiBge3NvdXJjZXNfbGVuZ3RofWAgaXMgYW4gYEludGAgdmFsdWUgZGVzY3JpYmluZyB0aGUgYW1vdW50IG9mIHNvdXJjZSBpbnN0cnVjdGlvbnMuCisqIGB7c291cmNlX2l9YCBpcyBjb21wb3NlZCBvZiBge25hbWV9e3ZhbHVlc19sZW5ndGh9e3ZhbHVlXzB9Li4ue3ZhbHVlX259YCwgd2hlcmU6CisqKiBge25hbWV9YCBpcyBhIGBTdHJpbmdgLgorKiogYHt2YWx1ZXNfbGVuZ3RofWAgaXMgYW4gYEludGAgZGVzY3JpYmluZyB0aGUgYW1vdW50IHZhbHVlcy4KKyoqIGB7dmFsdWVfaX1gICBpcyBhIGZ1bGx5IHF1YWxpZmllZCB0eXBlZCB2YWx1ZSBjb21wb3NlZCBvZiBge3R5cGVfY29kZX17dHlwZV9pbmZvfXt2YWx1ZV9mbGFnfXt2YWx1ZX1gLgorCis9PT09IENhcmRpbmFsaXR5CisKK0Zvcm1hdDogYSBzaW5nbGUgYFN0cmluZ2AgcmVwcmVzZW50aW5nIHRoZSBlbnVtIHZhbHVlLgorCis9PT09IENvbHVtbgorCitGb3JtYXQ6IGEgc2luZ2xlIGBTdHJpbmdgIHJlcHJlc2VudGluZyB0aGUgZW51bSB2YWx1ZS4KKworPT09PSBEaXJlY3Rpb24KKworRm9ybWF0OiBhIHNpbmdsZSBgU3RyaW5nYCByZXByZXNlbnRpbmcgdGhlIGVudW0gdmFsdWUuCisKKz09PT0gT3BlcmF0b3IKKworRm9ybWF0OiBhIHNpbmdsZSBgU3RyaW5nYCByZXByZXNlbnRpbmcgdGhlIGVudW0gdmFsdWUuCisKKz09PT0gT3JkZXIKKworRm9ybWF0OiBhIHNpbmdsZSBgU3RyaW5nYCByZXByZXNlbnRpbmcgdGhlIGVudW0gdmFsdWUuCisKKz09PT0gUGljaworCitGb3JtYXQ6IGEgc2luZ2xlIGBTdHJpbmdgIHJlcHJlc2VudGluZyB0aGUgZW51bSB2YWx1ZS4KKworPT09PSBQb3AKKworRm9ybWF0OiBhIHNpbmdsZSBgU3RyaW5nYCByZXByZXNlbnRpbmcgdGhlIGVudW0gdmFsdWUuCisKKz09PT0gTGFtYmRhCisKK0Zvcm1hdDogYHtsYW5ndWFnZX17c2NyaXB0fXthcmd1bWVudHNfbGVuZ3RofWAKK1doZXJlOgorCistIGB7bGFuZ3VhZ2V9YCBpcyBhIGBTdHJpbmdgLgorLSBge3NjcmlwdH1gIGlzIGEgYFN0cmluZ2AuCistIGB7YXJndW1lbnRzX2xlbmd0aH1gIGlzIGFuIGBJbnRgLgorCis9PT09IFAKKworRm9ybWF0OiBge25hbWV9e3ZhbHVlc19sZW5ndGh9e3ZhbHVlXzB9Li4ue3ZhbHVlX259YAorCitXaGVyZToKKworLSBge25hbWV9YCBpcyBhIFN0cmluZy4KKy0gYHt2YWx1ZXNfbGVuZ3RofWAgaXMgYW4gYEludGAgZGVzY3JpYmluZyB0aGUgYW1vdW50IHZhbHVlcy4KKy0gYHt2YWx1ZV9pfWAgaXMgYSBmdWxseSBxdWFsaWZpZWQgdHlwZWQgdmFsdWUgY29tcG9zZWQgb2YgYHt0eXBlX2NvZGV9e3R5cGVfaW5mb317dmFsdWVfZmxhZ317dmFsdWV9YC4KKworPT09PSBTY29wZQorCitGb3JtYXQ6IGEgc2luZ2xlIGBTdHJpbmdgIHJlcHJlc2VudGluZyB0aGUgZW51bSB2YWx1ZS4KKworPT09PSBUCisKK0Zvcm1hdDogYSBzaW5nbGUgYFN0cmluZ2AgcmVwcmVzZW50aW5nIHRoZSBlbnVtIHZhbHVlLgorCis9PT09IFRyYXZlcnNlcgorCitGb3JtYXQ6IGB7YnVsa317dmFsdWV9YAorCitXaGVyZToKKworLSBge2J1bGt9YCBpcyBhbiBgSW50YC4KKy0gYHt2YWx1ZX1gIGlzIGEgZnVsbHkgcXVhbGlmaWVkIHR5cGVkIHZhbHVlIGNvbXBvc2VkIG9mIGB7dHlwZV9jb2RlfXt0eXBlX2luZm99e3ZhbHVlX2ZsYWd9e3ZhbHVlfWAuCisKKz09PT0gQmlnRGVjaW1hbAorCitSZXByZXNlbnRzIGFuIGFyYml0cmFyeS1wcmVjaXNpb24gc2lnbmVkIGRlY2ltYWwgbnVtYmVyLCBjb25zaXN0aW5nIG9mIGFuIGFyYml0cmFyeSBwcmVjaXNpb24gaW50ZWdlciB1bnNjYWxlZCB2YWx1ZQorYW5kIGEgMzItYml0IGludGVnZXIgc2NhbGUuCisKK0Zvcm1hdDogYHtzY2FsZX17dW5zY2FsZWRfdmFsdWV9YAorCitXaGVyZToKKworLSBge3NjYWxlfWAgaXMgYW4gYEludGAuCistIGB7dW5zY2FsZWRfdmFsdWV9YCBpcyBhIGBCaWdJbnRlZ2VyYC4KKworPT09PSBCaWdJbnRlZ2VyCisKK0EgdmFyaWFibGUtbGVuZ3RoIHR3bydzIGNvbXBsZW1lbnQgZW5jb2Rpbmcgb2YgYSBzaWduZWQgaW50ZWdlci4KKworRm9ybWF0OiBge2xlbmd0aH17dmFsdWV9YAorCitXaGVyZToKKworLSBge2xlbmd0aH1gIGlzIGFuIGBJbnRgLgorLSBge3ZhbHVlfWAgaXMgdGhlIHR3bydzIGNvbXBsZW1lbnQgb2YgdGhlIGBCaWdJbnRlZ2VyYC4KKworRXhhbXBsZSB2YWx1ZXMgb2YgdGhlIHR3bydzIGNvbXBsZW1lbnQgYHt2YWx1ZX1gOgorCistIGAwMGA6IEludGVnZXIgMC4KKy0gYDAxYDogSW50ZWdlciAxLgorLSBgMTI3YDogSW50ZWdlciA3Zi4KKy0gYDAwIDgwYDogSW50ZWdlciAxMjguCistIGBmZmA6IEludGVnZXIgLTEuCistIGA4MGA6IEludGVnZXIgLTEyOC4KKy0gYGZmIDdmYDogSW50ZWdlciAtMTI5LgorCis9PT09IEJ5dGUKKworQW4gdW5zaWduZWQgOC1iaXQgaW50ZWdlci4KKworPT09PSBCeXRlQnVmZmVyCisKK0Zvcm1hdDogYHtsZW5ndGh9e3ZhbHVlfWAKKworV2hlcmU6CisKKy0gYHtsZW5ndGh9YCBpcyBhbiBgSW50YCByZXByZXNlbnRpbmcgdGhlIGFtb3VudCBvZiBieXRlcyBjb250YWluZWQgaW4gdGhlIHZhbHVlLgorLSBge3ZhbHVlfWAgc2VxdWVuY2Ugb2YgYnl0ZXMuCisKKz09PT0gU2hvcnQKKworRm9ybWF0OiAyLWJ5dGUgdHdvJ3MgY29tcGxlbWVudCBpbnRlZ2VyLgorCis9PT09IEJvb2xlYW4KKworRm9ybWF0OiBBIHNpbmdsZSBieXRlIGNvbnRhaW5pbmcgdGhlIHZhbHVlIGAweDAxYCB3aGVuIGl0J3MgYHRydWVgIGFuZCBgMGAgb3RoZXJ3aXNlLgorCis9PT09IFRleHRQCisKK0Zvcm1hdDogYHtwcmVkaWNhdGV9e3ZhbHVlc19sZW5ndGh9e3ZhbHVlXzB9Li4ue3ZhbHVlX259YAorCitXaGVyZToKKworLSBge25hbWV9YCBpcyBhIFN0cmluZy4KKy0gYHt2YWx1ZXNfbGVuZ3RofWAgaXMgYW4gYEludGAgZGVzY3JpYmluZyB0aGUgYW1vdW50IHZhbHVlcy4KKy0gYHt2YWx1ZV9pfWAgaXMgYSBmdWxseSBxdWFsaWZpZWQgdHlwZWQgdmFsdWUgY29tcG9zZWQgb2YgYHt0eXBlX2NvZGV9e3R5cGVfaW5mb317dmFsdWVfZmxhZ317dmFsdWV9YC4KKworPT09PSBUcmF2ZXJzYWxTdHJhdGVneQorCitGb3JtYXQ6IGB7c3RyYXRlZ3lfY2xhc3N9e2NvbmZpZ3VyYXRpb259YAorCitXaGVyZToKKworLSBge3N0cmF0ZWd5X2NsYXNzfWAgaXMgYSBgQ2xhc3NgIHRoYXQgaXMgb2YgdHlwZSBgVHJhdmVyc2FsU3RyYXRlZ3lgLgorLSBge2NvbmZpZ3VyYXRpb259YCBpcyBhIGBNYXBgIG9mIGRhdGEgdXNlZCB0byBjb25maWd1cmUgdGhlIHN0cmF0ZWd5IHRoYXQgd2lsbCBiZSBnaXZlbiB0byBhIGBUcmF2ZXJzYWxTdHJhdGVneWAgYGNyZWF0ZShDb25maWd1cmF0aW9uKWAgbWV0aG9kLgorCis9PT09IEJ1bGtTZXQKKworRm9ybWF0OiBge2xlbmd0aH17aXRlbV8wfS4uLntpdGVtX259YAorCitXaGVyZToKKworLSBge2xlbmd0aH1gIGlzIGFuIGBJbnRgIGRlc2NyaWJpbmcgdGhlIGxlbmd0aCBvZiB0aGUgYEJ1bGtTZXRgLgorLSBge2l0ZW1fMH0uLi57aXRlbV9ufWAgYXJlIHRoZSBpdGVtcyBvZiB0aGUgYEJ1bGtTZXRgLiBge2l0ZW1faX1gIGlzIGEgc2VxdWVuY2Ugb2YgYSBmdWxseSBxdWFsaWZpZWQgdHlwZWQgdmFsdWUgY29tcG9zZWQgb2YKK2B7dHlwZV9jb2RlfXt0eXBlX2luZm99e3ZhbHVlX2ZsYWd9e3ZhbHVlfWAgZm9sbG93ZWQgYnkgdGhlICJidWxrIiB3aGljaCBpcyBhIGBMb25nYCB2YWx1ZS4KKworSWYgdGhlIGltcGxlbWVudGluZyBsYW5ndWFnZSBkb2VzIG5vdCBoYXZlIGEgYEJ1bGtTZXRgIG9iamVjdCB0byBkZXNlcmlhbGl6ZSBpbnRvLCB0aGlzIGZvcm1hdCBjYW4gYmUgY29lcmNlZCB0byBhCitgTGlzdGAgYW5kIHN0aWxsIGJlIGNvbnNpZGVyZWQgY29tcGxpYW50IHdpdGggR3JlbWxpbi4gU2ltcGx5ICJleHBhbmQgdGhlIGJ1bGsiIGJ5IGFkZGluZyB0aGUgaXRlbSB0byB0aGUgYExpc3RgIHRoZQorbnVtYmVyIG9mIHRpbWVzIHNwZWNpZmllZCBieSB0aGUgYnVsay4KKworPT09PSBUcmVlCisKK0Zvcm1hdDogYHtsZW5ndGh9e2l0ZW1fMH0uLi57aXRlbV9ufWAKKworV2hlcmU6CisKKy0gYHtsZW5ndGh9YCBpcyBhbiBgSW50YCBkZXNjcmliaW5nIHRoZSBhbW91bnQgb2YgaXRlbXMuCistIGB7aXRlbV8wfS4uLntpdGVtX259YCBhcmUgdGhlIGl0ZW1zIG9mIHRoZSBgVHJlZWAuIGB7aXRlbV9pfWAgaXMgY29tcG9zZWQgb2YgYSBge2tleX1gIHdoaWNoIGlzIGEgZnVsbHktcXVhbGlmaWVkIHR5cGVkIHZhbHVlCitmb2xsb3dlZCBieSBhIGB7VHJlZX1gLgorCis9PT09IE1ldHJpY3MKKworRm9ybWF0OiBge2lkfXtuYW1lfXtkdXJhdGlvbn17Y291bnRzfXthbm5vdGF0aW9uc317bmVzdGVkX21ldHJpY3N9YAorCitXaGVyZToKKworLSBge2lkfWAgaXMgYSBgU3RyaW5nYCByZXByZXNlbnRpbmcgdGhlIGlkZW50aWZpZXIuCistIGB7bmFtZX1gIGlzIGEgYFN0cmluZ2AgcmVwcmVzZW50aW5nIHRoZSBuYW1lLgorLSBge2R1cmF0aW9ufWAgaXMgYSBgTG9uZ2AgZGVzY3JpYmluZyB0aGUgZHVyYXRpb24gaW4gbmFub3NlY29uZHMuCistIGB7Y291bnRzfWAgaXMgYSBgTWFwYCBjb21wb3NlZCBieSBgU3RyaW5nYCBrZXlzIGFuZCBgTG9uZ2AgdmFsdWVzLgorLSBge2Fubm90YXRpb25zfWAgaXMgYSBgTWFwYCBjb21wb3NlZCBieSBgU3RyaW5nYCBrZXlzIGFuZCBhIHZhbHVlIG9mIGFueSB0eXBlLgorLSBge25lc3RlZF9tZXRyaWNzfWAgaXMgYSBgTGlzdGAgY29tcG9zZWQgYnkgYE1ldHJpY3NgIGl0ZW1zLgorCis9PT09IFRyYXZlcnNhbE1ldHJpY3MKKworRm9ybWF0OiBge2R1cmF0aW9ufXttZXRyaWNzfWAKKworV2hlcmU6CisKKy0gYHtkdXJhdGlvbn1gIGlzIGEgYExvbmdgIGRlc2NyaWJpbmcgdGhlIGR1cmF0aW9uIGluIG5hbm9zZWNvbmRzLgorLSBge21ldHJpY3N9YCBpcyBhIGBMaXN0YCBjb21wb3NlZCBieSBgTWV0cmljc2AgaXRlbXMuCisKKz09PT0gQ3VzdG9tCisKK0EgY3VzdG9tIHR5cGUsIHJlcHJlc2VudGVkIGFzIGEgYmxvYiB2YWx1ZS4KKworVHlwZSBJbmZvOiBge25hbWV9e2N1c3RvbV90eXBlX2luZm99YAorCitXaGVyZToKKworLSBge25hbWV9YCBpcyBhIGBTdHJpbmdgIGNvbnRhaW5pbmcgdGhlIGltcGxlbWVudGF0aW9uIHNwZWNpZmljIHRleHQgaWRlbnRpZmllciBvZiB0aGUgY3VzdG9tIHR5cGUuCistIGB7Y3VzdG9tX3R5cGVfaW5mb31gIGlzIGEgYEJ5dGVCdWZmZXJgIHJlcHJlc2VudGluZyB0aGUgYWRkaXRpb25hbCB0eXBlIGluZm9ybWF0aW9uLCBzcGVjaWFsbHkgdXNlZnVsCitmb3IgY29tcGxleCBjdXN0b20gdHlwZXMuCisKK1ZhbHVlIGZvcm1hdDogYHtibG9ifWAKKworV2hlcmU6CisKKy0gYHtibG9ifWAgaXMgYSBgQnl0ZUJ1ZmZlcmAuCisKKz09PT0gVW5zcGVjaWZpZWQgTnVsbCBPYmplY3QKKworQSBgbnVsbGAgdmFsdWUgZm9yIGFuIHVuc3BlY2lmaWVkIE9iamVjdCB2YWx1ZS4KKworSXQncyByZXByZXNlbnRlZCB1c2luZyB0aGUgbnVsbCBge3ZhbHVlX2ZsYWd9YCBzZXQgYW5kIG5vIHNlcXVlbmNlIG9mIGJ5dGVzLgorCis9PT09IENoYXIKKworRm9ybWF0OiBvbmUgdG8gZm91ciBieXRlcyByZXByZXNlbnRpbmcgYSBzaW5nbGUgVVRGOCBjaGFyLCBhY2NvcmRpbmcgdG8gdGhlIFVuaWNvZGUgc3RhbmRhcmQuCisKK0ZvciBjaGFyYWN0ZXJzIGAweDAwYC1gMHg3RmAsIFVURi04IGVuY29kZXMgdGhlIGNoYXJhY3RlciBhcyBhIHNpbmdsZSBieXRlLgorCitGb3IgY2hhcmFjdGVycyBgMHg4MGAtYDB4MDdGRmAsIFVURi04IHVzZXMgMiBieXRlczogdGhlIGZpcnN0IGJ5dGUgaXMgYmluYXJ5IGAxMTBgIGZvbGxvd2VkIGJ5IHRoZSA1IGhpZ2ggYml0cyBvZiB0aGUKK2NoYXJhY3Rlciwgd2hpbGUgdGhlIHNlY29uZCBieXRlIGlzIGJpbmFyeSAxMCBmb2xsb3dlZCBieSB0aGUgNiBsb3cgYml0cyBvZiB0aGUgY2hhcmFjdGVyLgorCitUaGUgMyBhbmQgNC1ieXRlIGVuY29kaW5ncyBhcmUgc2ltaWxhciB0byB0aGUgMi1ieXRlIGVuY29kaW5nLCBleGNlcHQgdGhhdCB0aGUgZmlyc3QgYnl0ZSBvZiB0aGUgMy1ieXRlIGVuY29kaW5nIHN0YXJ0cword2l0aCBgMTExMGAgYW5kIHRoZSBmaXJzdCBieXRlIG9mIHRoZSA0LWJ5dGUgZW5jb2Rpbmcgc3RhcnRzIHdpdGggYDExMTEwYC4KKworRXhhbXBsZSB2YWx1ZXMgKGhleCBieXRlcykKKworLSBgOTdgOiBDaGFyYWN0ZXIgJ2EnLgorLSBgYzIgYTJgOiBDaGFyYWN0ZXIgJ8KiJy4KKy0gYGUyIDgyIGFjYDogQ2hhcmFjdGVyICfigqwnCisKKz09PT0gRHVyYXRpb24KKworQSB0aW1lLWJhc2VkIGFtb3VudCBvZiB0aW1lLgorCitGb3JtYXQ6IGB7c2Vjb25kc317bmFub3N9YAorCitXaGVyZToKKworLSBge3NlY29uZHN9YCBpcyBhIGBMb25nYC4KKy0gYHtuYW5vc31gIGlzIGFuIGBJbnRgLgorCis9PT09IEluZXRBZGRyZXNzCisKK0Zvcm1hdDogU2FtZSBhcyBgQnl0ZUJ1ZmZlcmAsIGhhdmluZyBvbmx5IDQgYnl0ZSBvciAxNiBieXRlIHNlcXVlbmNlcyBhbGxvd2VkLgorCis9PT09IEluc3RhbnQKKworQW4gaW5zdGFudGFuZW91cyBwb2ludCBvbiB0aGUgdGltZS1saW5lLgorCitGb3JtYXQ6IGB7c2Vjb25kc317bmFub3N9YAorCitXaGVyZToKKworLSBge3NlY29uZHN9YCBpcyBhIGBMb25nYC4KKy0gYHtuYW5vc31gIGlzIGFuIGBJbnRgLgorCis9PT09IExvY2FsRGF0ZQorCitBIGRhdGUgd2l0aG91dCBhIHRpbWUtem9uZSBpbiB0aGUgSVNPLTg2MDEgY2FsZW5kYXIgc3lzdGVtLgorCitGb3JtYXQ6IGB7eWVhcn17bW9udGh9e2RheX1gCisKK1doZXJlOgorCistIGB7eWVhcn1gIGlzIGFuIGBJbnRgIGZyb20gLTk5OSw5OTksOTk5IHRvIDk5OSw5OTksOTk5LgorLSBge21vbnRofWAgaXMgYSBgQnl0ZWAgdG8gcmVwcmVzZW50IHRoZSBtb250aCwgZnJvbSAxIChKYW51YXJ5KSB0byAxMiAoRGVjZW1iZXIpCistIGB7ZGF5fWAgaXMgYSBgQnl0ZWAgZnJvbSAxIHRvIDMxLgorCis9PT09IExvY2FsRGF0ZVRpbWUKKworRm9ybWF0OiBge2RhdGV9e3RpbWV9YAorCitXaGVyZToKKworLSBge2RhdGV9YCBpcyBgTG9jYWxEYXRlYC4KKy0gYHt0aW1lfWAgaXMgYSBgTG9jYWxUaW1lYC4KKworPT09PSBMb2NhbFRpbWUKK0EgdGltZSB3aXRob3V0IGEgdGltZS16b25lIGluIHRoZSBJU08tODYwMSBjYWxlbmRhciBzeXN0ZW0uCisKK0Zvcm1hdDogQW4gOCBieXRlIHR3bydzIGNvbXBsZW1lbnQgbG9uZyByZXByZXNlbnRpbmcgbmFub3NlY29uZHMgc2luY2UgbWlkbmlnaHQuCisKK1ZhbGlkIHZhbHVlcyBhcmUgaW4gdGhlIHJhbmdlIDAgdG8gODYzOTk5OTk5OTk5OTkKKworPT09PSBNb250aERheQorCitBIG1vbnRoLWRheSBpbiB0aGUgSVNPLTg2MDEgY2FsZW5kYXIgc3lzdGVtLgorCitGb3JtYXQ6IGB7bW9udGh9e2RheX1gCisKK1doZXJlOgorCistIGB7bW9udGh9YCBpcyBgQnl0ZWAgdmFsdWUgZnJvbSAxIHRvIDEyLgorLSBge2RheX1gIGlzIGBCeXRlYCB2YWx1ZSBmcm9tIDEgdG8gMzEuCisKKz09PT0gT2Zmc2V0RGF0ZVRpbWUKKworQSBkYXRlLXRpbWUgd2l0aCBhbiBvZmZzZXQgZnJvbSBVVEMvR3JlZW53aWNoIGluIHRoZSBJU08tODYwMSBjYWxlbmRhciBzeXN0ZW0sIHN1Y2ggYXMgMjAwNy0xMi0wM1QxMDoxNTozMCswMTowMC4KKworRm9ybWF0OiBge2xvY2FsX2RhdGVfdGltZX17b2Zmc2V0fWAKKworV2hlcmU6CisKKy0gYHtsb2NhbF9kYXRlX3RpbWV9YCBpcyBgTG9jYWxEYXRlVGltZWAuCistIGB7b2Zmc2V0fWAgaXMgYFpvbmVPZmZzZXRgLgorCis9PT09IE9mZnNldFRpbWUKKworQSB0aW1lIHdpdGggYW4gb2Zmc2V0IGZyb20gVVRDL0dyZWVud2ljaCBpbiB0aGUgSVNPLTg2MDEgY2FsZW5kYXIgc3lzdGVtLCBzdWNoIGFzIDEwOjE1OjMwKzAxOjAwLgorCitGb3JtYXQ6IGB7bG9jYWxfdGltZX17b2Zmc2V0fWAKKworV2hlcmU6CisKKy0gYHtsb2NhbF90aW1lfWAgaXMgYExvY2FsVGltZWAuCistIGB7b2Zmc2V0fWAgaXMgYFpvbmVPZmZzZXRgLgorCis9PT09IFBlcmlvZAorCitBIGRhdGUtYmFzZWQgYW1vdW50IG9mIHRpbWUgaW4gdGhlIElTTy04NjAxIGNhbGVuZGFyIHN5c3RlbSwgc3VjaCBhcyAnMiB5ZWFycywgMyBtb250aHMgYW5kIDQgZGF5cycuCisKK0Zvcm1hdDogYHt5ZWFyc317bW9udGh9e2RheXN9YAorCitXaGVyZToKKworYHt5ZWFyc31gLCBge21vbnRofWAgYW5kIGB7ZGF5c31gIGFyZSBgSW50YCB2YWx1ZXMuCisKKz09PT0gWWVhcgorCitBIHllYXIgaW4gdGhlIElTTy04NjAxIGNhbGVuZGFyIHN5c3RlbSwgc3VjaCBhcyAyMDE4LgorCitGb3JtYXQ6IEFuIGBJbnRgIHJlcHJlc2VudGluZyB0aGUgeWVhcnMuCisKKz09PT0gWWVhck1vbnRoCisKK0EgeWVhci1tb250aCBpbiB0aGUgSVNPLTg2MDEgY2FsZW5kYXIgc3lzdGVtLCBzdWNoIGFzIDIwMDctMTIuCisKK0Zvcm1hdDogYHt5ZWFyfXttb250aH1gCisKK1doZXJlOgorCistIGB7eWVhcn1gIGlzIGFuIGBJbnRgLgorLSBge21vbnRofWAgaXMgYSBgQnl0ZWAgZnJvbSAxIHRvIDEyLgorCis9PT09IFpvbmVkRGF0ZVRpbWUKKworQSBkYXRlLXRpbWUgd2l0aCBhIHRpbWUtem9uZSBpbiB0aGUgSVNPLTg2MDEgY2FsZW5kYXIgc3lzdGVtLgorCitGb3JtYXQ6IGB7bG9jYWxfZGF0ZV90aW1lfXt6b25lX29mZnNldH1gCisKK1doZXJlOgorCistIGB7bG9jYWxfZGF0ZV90aW1lfWAgaXMgYExvY2FsRGF0ZVRpbWVgLgorLSBge3pvbmVfb2Zmc2V0fWAgaXMgYSBgWm9uZU9mZnNldGAuCisKKz09PT0gWm9uZU9mZnNldAorCitBIHRpbWUtem9uZSBvZmZzZXQgZnJvbSBHcmVlbndpY2gvVVRDLCBzdWNoIGFzICswMjowMC4KKworRm9ybWF0OiBBbiBgSW50YCByZXByZXNlbnRpbmcgdG90YWwgem9uZSBvZmZzZXQgaW4gc2Vjb25kcy4KKworPT09IFJlcXVlc3QgYW5kIFJlc3BvbnNlIE1lc3NhZ2VzCisKK1JlcXVlc3QgYW5kIHJlc3BvbnNlIG1lc3NhZ2VzIGFyZSBzcGVjaWFsIGNvbnRhaW5lciB0eXBlcyB1c2VkIHRvIHJlcHJlc2VudCBtZXNzYWdlcyBmcm9tIGNsaWVudCB0byB0aGUgc2VydmVyIGFuZCB0aGUKK290aGVyIHdheSBhcm91bmQuIFRoZXNlIG1lc3NhZ2VzIGFyZSBpbmRlcGVuZGVudCBmcm9tIHRoZSB0cmFuc3BvcnQgbGF5ZXIuCisKKz09PT0gUmVxdWVzdCBNZXNzYWdlCisKK1JlcHJlc2VudHMgYSBtZXNzYWdlIGZyb20gdGhlIGNsaWVudCB0byB0aGUgc2VydmVyLgorCitGb3JtYXQ6IGB7dmVyc2lvbn17cmVxdWVzdF9pZH17b3B9e3Byb2Nlc3Nvcn17YXJnc31gCisKK1doZXJlOgorCistIGB7dmVyc2lvbn1gIGlzIGEgYEJ5dGVgIHJlcHJlc2VudGluZyB0aGUgc3BlY2lmaWNhdGlvbiB2ZXJzaW9uLCB3aXRoIHRoZSBtb3N0IHNpZ25pZmljYW50IGJpdCBzZXQgdG8gb25lLiBGb3IgdGhpcwordmVyc2lvbiBvZiB0aGUgZm9ybWF0LCB0aGUgdmFsdWUgZXhwZWN0ZWQgaXMgYDB4ODFgIChgMTAwMDAwMDFgKS4KKy0gYHtyZXF1ZXN0X2lkfWAgaXMgYSBgVVVJRGAuCistIGB7b3B9YCBpcyBhIGBTdHJpbmdgLgorLSBge3Byb2Nlc3Nvcn1gIGlzIGEgYFN0cmluZ2AuCistIGB7YXJnc31gIGlzIGEgYE1hcGAuCisKK1RoZSB0b3RhbCBsZW5ndGggaXMgbm90IHBhcnQgb2YgdGhlIG1lc3NhZ2UgYXMgdGhlIHRyYW5zcG9ydCBsYXllciB3aWxsIHByb3ZpZGUgaXQuIEZvciBleGFtcGxlOiBXZWJTb2NrZXRzLAorYXMgYSBmcmFtaW5nIHByb3RvY29sLCBkZWZpbmVzIHBheWxvYWQgbGVuZ3RoLgorCis9PT09IFJlc3BvbnNlIE1lc3NhZ2UKKworRm9ybWF0OiBge3ZlcnNpb259e3JlcXVlc3RfaWR9e3N0YXR1c19jb2RlfXtzdGF0dXNfbWVzc2FnZX17c3RhdHVzX2F0dHJpYnV0ZXN9e3Jlc3VsdF9tZXRhfXtyZXN1bHRfZGF0YX1gCisKK1doZXJlOgorCistIGB7dmVyc2lvbn1gIGlzIGEgYEJ5dGVgIHJlcHJlc2VudGluZyB0aGUgcHJvdG9jb2wgdmVyc2lvbiwgd2l0aCB0aGUgbW9zdCBzaWduaWZpY2FudCBiaXQgc2V0IHRvIG9uZS4gRm9yIHRoaXMgdmVyc2lvbgorb2YgdGhlIHByb3RvY29sLCB0aGUgdmFsdWUgZXhwZWN0ZWQgaXMgYDB4ODFgIChgMTAwMDAwMDFgKS4KKy0gYHtyZXF1ZXN0X2lkfWAgaXMgYSBudWxsYWJsZSBgVVVJRGAuCistIGB7c3RhdHVzX2NvZGV9YCBpcyBhbiBgSW50YC4KKy0gYHtzdGF0dXNfbWVzc2FnZX1gIGlzIGEgbnVsbGFibGUgYFN0cmluZ2AuCistIGB7c3RhdHVzX2F0dHJpYnV0ZXN9YCBpcyBhIGBNYXBgLgorLSBge3Jlc3VsdF9tZXRhfWAgaXMgYSBgTWFwYC4KKy0gYHtyZXN1bHRfZGF0YX1gIGlzIGEgZnVsbHkgcXVhbGlmaWVkIHR5cGVkIHZhbHVlIGNvbXBvc2VkIG9mIGB7dHlwZV9jb2RlfXt0eXBlX2luZm99e3ZhbHVlX2ZsYWd9e3ZhbHVlfWAuCisKK1RoZSB0b3RhbCBsZW5ndGggaXMgbm90IHBhcnQgb2YgdGhlIG1lc3NhZ2UgYXMgdGhlIHRyYW5zcG9ydCBsYXllciB3aWxsIHByb3ZpZGUgaXQuCmRpZmYgLS1naXQgYS9kb2NzL3NyYy9kZXYvaW8vZ3JhcGhzb24uYXNjaWlkb2MgYi9kb2NzL3NyYy9kZXYvaW8vZ3JhcGhzb24uYXNjaWlkb2MKaW5kZXggNWUzZDAzMC4uNGM1NWFiMiAxMDA2NDQKLS0tIGEvZG9jcy9zcmMvZGV2L2lvL2dyYXBoc29uLmFzY2lpZG9jCisrKyBiL2RvY3Mvc3JjL2Rldi9pby9ncmFwaHNvbi5hc2NpaWRvYwpAQCAtMzAxOCw2ICszMDE4LDE5IEBACiB9CiAtLS0tCiAKKz09PT0gVGV4dFAKKworW3NvdXJjZSxqc29uXQorLS0tLQoreworICAiQHR5cGUiIDogImc6VGV4dFAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJjb250YWluaW5nIiwKKyAgICAidmFsdWUiIDogImFyayIKKyAgfQorfQorLS0tLQorCiA9PT09IFRyYXZlcnNhbE1ldHJpY3MKIAogW3NvdXJjZSxqc29uXQpAQCAtNTA3NSw2ICs1MDg4LDIyIEBACiB9CiAtLS0tCiAKKz09PT0gQnVsa1NldAorCitbc291cmNlLGpzb25dCistLS0tCit7CisgICJAdHlwZSIgOiAiZzpCdWxrU2V0IiwKKyAgIkB2YWx1ZSIgOiBbICJtYXJrbyIsIHsKKyAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICJAdmFsdWUiIDogMQorICB9LCAiam9zaCIsIHsKKyAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICJAdmFsdWUiIDogMgorICB9IF0KK30KKy0tLS0KKwogPT09PSBCeXRlY29kZQogCiBUaGUgZm9sbG93aW5nIGBCeXRlY29kZWAgZXhhbXBsZSByZXByZXNlbnRzIHRoZSB0cmF2ZXJzYWwgb2YgYGcuVigpLmhhc0xhYmVsKCdwZXJzb24nKS5vdXQoKS5pbigpLnRyZWUoKWAuIE9idmlvdXNseSB0aGUgc2VyaWFsaXplZCBgQnl0ZWNvZGVgIHdvdWRsIGJlIHF1aXRlIGRpZmZlcmVudCBmb3IgdGhlIGVuZGxlc3MgdmFyaWF0aW9ucyBvZiBjb21tYW5kcyB0aGF0IGNvdWxkIGJlIHVzZWQgdG9nZXRoZXIgaW4gdGhlIEdyZW1saW4gbGFuZ3VhZ2UuCkBAIC01Mzk1LDYgKzU0MjQsMTkgQEAKIH0KIC0tLS0KIAorPT09PSBUZXh0UAorCitbc291cmNlLGpzb25dCistLS0tCit7CisgICJAdHlwZSIgOiAiZzpUZXh0UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogImNvbnRhaW5pbmciLAorICAgICJ2YWx1ZSIgOiAiYXJrIgorICB9Cit9CistLS0tCisKID09PT0gVHJhdmVyc2FsTWV0cmljcwogCiBbc291cmNlLGpzb25dCmRpZmYgLS1naXQgYS9kb2NzL3NyYy9kZXYvaW8vaW5kZXguYXNjaWlkb2MgYi9kb2NzL3NyYy9kZXYvaW8vaW5kZXguYXNjaWlkb2MKaW5kZXggZTBmZTY0MC4uMjVjMWFkNyAxMDA2NDQKLS0tIGEvZG9jcy9zcmMvZGV2L2lvL2luZGV4LmFzY2lpZG9jCisrKyBiL2RvY3Mvc3JjL2Rldi9pby9pbmRleC5hc2NpaWRvYwpAQCAtMjUsNyArMjUsNyBAQAogaW1hZ2U6Z3JlbWxpbi1pbzIucG5nW3dpZHRoPTMwMF0KIAogSU8gZmVhdHVyZXMsIGNhcGFiaWxpdGllcyBhbmQgdXNlIGNhc2VzIGFyZSBpbml0aWFsbHkgZGlzY3Vzc2VkIGluIHRoZSBBcGFjaGUgVGlua2VyUG9w4oSiCi1saW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei9yZWZlcmVuY2UvI19ncmVtbGluX2lfb1tSZWZlcmVuY2UgRG9jdW1lbnRhdGlvbl0uIFRoaXMgZG9jdW1lbnQgZm9jdXNlcworbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVmZXJlbmNlLyNpby1zdGVwW1JlZmVyZW5jZSBEb2N1bWVudGF0aW9uXS4gVGhpcyBkb2N1bWVudCBmb2N1c2VzCiBtb3JlIG9uIHRoZSBkZXRhaWxzIG9mIHRoZSBpbXBsZW1lbnRhdGlvbnMgZm9yIGJvdGggcHJvZHVjdGlvbiBhbmQgY29uc3VtcHRpb24gb2YgdGhlIHZhcmlvdXMgZm9ybWF0cy4gSXQgY29udGFpbnMKIHNhbXBsZXMgb2YgdGhlIHZhcmlvdXMgZm9ybWF0cyBhbmQgZGV2ZWxvcG1lbnQgZGV0YWlscyB0aGF0IHByb3ZpZGUgZGVlcGVyIGluc2lnaHQgZm9yIHRoZWlyIHVzYWdlLgogCkBAIC0zNCwzICszNCw1IEBACiBpbmNsdWRlOjpncmFwaHNvbi5hc2NpaWRvY1tdCiAKIGluY2x1ZGU6OmdyeW8uYXNjaWlkb2NbXQorCitpbmNsdWRlOjpncmFwaGJpbmFyeS5hc2NpaWRvY1tdCmRpZmYgLS1naXQgYS9kb2NzL3NyYy9kZXYvcHJvdmlkZXIvaW5kZXguYXNjaWlkb2MgYi9kb2NzL3NyYy9kZXYvcHJvdmlkZXIvaW5kZXguYXNjaWlkb2MKaW5kZXggZWUwODZjNi4uMjkzZTkwMyAxMDA2NDQKLS0tIGEvZG9jcy9zcmMvZGV2L3Byb3ZpZGVyL2luZGV4LmFzY2lpZG9jCisrKyBiL2RvY3Mvc3JjL2Rldi9wcm92aWRlci9pbmRleC5hc2NpaWRvYwpAQCAtMzksMTkgKzM5LDE5IEBACiBbW2dyYXBoLXN5c3RlbS1wcm92aWRlci1yZXF1aXJlbWVudHNdXQogPT0gR3JhcGggU3lzdGVtIFByb3ZpZGVyIFJlcXVpcmVtZW50cwogCi1pbWFnZTp0aW5rZXJwb3AtZW5hYmxlZC5wbmdbd2lkdGg9MTQwLGZsb2F0PWxlZnRdIEF0IHRoZSBjb3JlIG9mIFRpbmtlclBvcDMgaXMgYSBKYXZhOCBBUEkuIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzCitpbWFnZTp0aW5rZXJwb3AtZW5hYmxlZC5wbmdbd2lkdGg9MTQwLGZsb2F0PWxlZnRdIEF0IHRoZSBjb3JlIG9mIFRpbmtlclBvcCAzLnggaXMgYSBKYXZhOCBBUEkuIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzCiBjb3JlIEFQSSBhbmQgaXRzIHZhbGlkYXRpb24gdmlhIHRoZSBgZ3JlbWxpbi10ZXN0YCBzdWl0ZSBpcyBhbGwgdGhhdCBpcyByZXF1aXJlZCBvZiBhIGdyYXBoIHN5c3RlbSBwcm92aWRlciB3aXNoaW5nIHRvCi1wcm92aWRlIGEgVGlua2VyUG9wMy1lbmFibGVkIGdyYXBoIGVuZ2luZS4gT25jZSBhIGdyYXBoIHN5c3RlbSBoYXMgYSB2YWxpZCBpbXBsZW1lbnRhdGlvbiwgdGhlbiBhbGwgdGhlIGFwcGxpY2F0aW9ucworcHJvdmlkZSBhIFRpbmtlclBvcC1lbmFibGVkIGdyYXBoIGVuZ2luZS4gT25jZSBhIGdyYXBoIHN5c3RlbSBoYXMgYSB2YWxpZCBpbXBsZW1lbnRhdGlvbiwgdGhlbiBhbGwgdGhlIGFwcGxpY2F0aW9ucwogcHJvdmlkZWQgYnkgVGlua2VyUG9wIChlLmcuIEdyZW1saW4gQ29uc29sZSwgR3JlbWxpbiBTZXJ2ZXIsIGV0Yy4pIGFuZCAzcmQtcGFydHkgZGV2ZWxvcGVycyAoZS5nLiBHcmVtbGluLVNjYWxhLAogR3JlbWxpbi1KUywgZXRjLikgd2lsbCBpbnRlZ3JhdGUgcHJvcGVybHkuIEZpbmFsbHksIHBsZWFzZSBmZWVsIGZyZWUgdG8gdXNlIHRoZSBsb2dvIG9uIHRoZSBsZWZ0IHRvIHByb21vdGUgeW91cgotVGlua2VyUG9wMyBpbXBsZW1lbnRhdGlvbi4KK1RpbmtlclBvcCBpbXBsZW1lbnRhdGlvbi4KIAogW1tncmFwaC1zdHJ1Y3R1cmUtYXBpXV0KID09PSBHcmFwaCBTdHJ1Y3R1cmUgQVBJCiAKLVRoZSBncmFwaCBzdHJ1Y3R1cmUgQVBJIHByb3ZpZGVzIHRoZSBpbnRlcmZhY2VzIG5lY2Vzc2FyeSB0byBjcmVhdGUgYSBUaW5rZXJQb3AgZW5hYmxlZCBzeXN0ZW0gYW5kIGV4cG9zZXMgdGhlIGJhc2ljCi1jb21wb25lbnRzIG9mIGEgcHJvcGVydHkgZ3JhcGggdG8gaW5jbHVkZSBgR3JhcGhgLCBgVmVydGV4YCwgYEVkZ2VgLCBgVmVydGV4UHJvcGVydHlgIGFuZCBgUHJvcGVydHlgLiBUaGUgc3RydWN0dXJlCi1BUEkgY2FuIGJlIHVzZWQgZGlyZWN0bHkgYXMgZm9sbG93czoKK1RoZSBncmFwaCBzdHJ1Y3R1cmUgQVBJIG9mIFRpbmtlclBvcCBwcm92aWRlcyB0aGUgaW50ZXJmYWNlcyBuZWNlc3NhcnkgdG8gY3JlYXRlIGEgVGlua2VyUG9wIGVuYWJsZWQgc3lzdGVtIGFuZAorZXhwb3NlcyB0aGUgYmFzaWMgY29tcG9uZW50cyBvZiBhIHByb3BlcnR5IGdyYXBoIHRvIGluY2x1ZGUgYEdyYXBoYCwgYFZlcnRleGAsIGBFZGdlYCwgYFZlcnRleFByb3BlcnR5YCBhbmQgYFByb3BlcnR5YC4KK1RoZSBzdHJ1Y3R1cmUgQVBJIGNhbiBiZSB1c2VkIGRpcmVjdGx5IGFzIGZvbGxvd3M6CiAKIFtzb3VyY2UsamF2YV0KIC0tLS0KQEAgLTc5LDExICs3OSw3IEBACiBgR3JhcGguYWRkVmVydGV4KE9iamVjdC4uLilgIG9yIGBWZXJ0ZXguYWRkRWRnZShTdHJpbmcsVmVydGV4LE9iamVjdC4uLilgLCB0aGUgcmVzcGVjdGl2ZSBlbGVtZW50IGlzIGNyZWF0ZWQgYWxvbmcKIHdpdGggdGhlIHByb3ZpZGVkIGtleS92YWx1ZSBwYWlyIHByb3BlcnRpZXMgYXBwZW5kZWQgdG8gaXQuCiAKLUJlbG93IGlzIGEgc2VxdWVuY2Ugb2YgYmFzaWMgZ3JhcGggbXV0YXRpb24gb3BlcmF0aW9ucyByZXByZXNlbnRlZCBpbiBKYXZhIDguIE9uZSBvZiB0aGUgbWFqb3IgZGlmZmVyZW5jZXMgYmV0d2VlbgotVGlua2VyUG9wMiBhbmQgVGlua2VyUG9wMyBpcyB0aGF0IGluIFRpbmtlclBvcDMsIHRoZSBKYXZhIGNvbnZlbnRpb24gb2YgdXNpbmcgc2V0dGVycyBhbmQgZ2V0dGVycyBoYXMgYmVlbiBhYmFuZG9uZWQKLWluIGZhdm9yIG9mIGEgc3ludGF4IHRoYXQgaXMgbW9yZSBhbGlnbmVkIHdpdGggdGhlIHN5bnRheCBvZiBHcmVtbGluLUdyb292eSBpbiBUaW5rZXJQb3AyLiBHaXZlbiB0aGF0IEdyZW1saW4tSmF2YTgKLWFuZCBHcmVtbGluLUdyb292eSBhcmUgbmVhcmx5IGlkZW50aWNhbCBkdWUgdG8gdGhlIGluY2x1c2lvbiBvZiBKYXZhIDggbGFtYmRhcywgYSBiaWcgZWZmb3J0IHdhcyBtYWRlIHRvIGVuc3VyZSB0aGF0Ci1ib3RoIGxhbmd1YWdlcyBhcmUgYXMgc2ltaWxhciBhcyBwb3NzaWJsZS4KK0JlbG93IGlzIGEgc2VxdWVuY2Ugb2YgYmFzaWMgZ3JhcGggbXV0YXRpb24gb3BlcmF0aW9ucyByZXByZXNlbnRlZCBpbiBKYXZhIDguCiAKIGltYWdlOmJhc2ljLW11dGF0aW9uLnBuZ1t3aWR0aD0yNDAsZmxvYXQ9cmlnaHRdCiBbc291cmNlLGphdmFdCkBAIC0xNjcsNyArMTYzLDcgQEAKIHBhY2thZ2UuIFRoZXNlIGluY2x1ZGUgaW50ZXJmYWNlcyBsaWtlIGBHcmFwaGAsIGBWZXJ0ZXhgLCBgRWRnZWAsIGBQcm9wZXJ0eWAsIGBUcmFuc2FjdGlvbmAsIGV0Yy4gVGhlCiBgU3RydWN0dXJlU3RhbmRhcmRTdWl0ZWAgd2lsbCBlbnN1cmUgdGhhdCB0aGUgc2VtYW50aWNzIG9mIHRoZSBtZXRob2RzIGltcGxlbWVudGVkIGFyZSBjb3JyZWN0LiBNb3Jlb3ZlciwgdGhlcmUgYXJlCiBudW1lcm91cyBgRXhjZXB0aW9uc2AgY2xhc3NlcyB3aXRoIHN0YXRpYyBleGNlcHRpb25zIHRoYXQgc2hvdWxkIGJlIHRocm93biBieSB0aGUgZ3JhcGggc3lzdGVtIHNvIHRoYXQgYWxsIHRoZQotZXhjZXB0aW9ucyBhbmQgdGhlaXIgbWVzc2FnZXMgYXJlIGNvbnNpc3RlbnQgYW1vbmdzdCBhbGwgVGlua2VyUG9wMyBpbXBsZW1lbnRhdGlvbnMuCitleGNlcHRpb25zIGFuZCB0aGVpciBtZXNzYWdlcyBhcmUgY29uc2lzdGVudCBhbW9uZ3N0IGFsbCBUaW5rZXJQb3AgaW1wbGVtZW50YXRpb25zLgogCiBUaGUgZm9sbG93aW5nIGJ1bGxldHMgcHJvdmlkZSBzb21lIHRpcHMgdG8gY29uc2lkZXIgd2hlbiBpbXBsZW1lbnRpbmcgdGhlIHN0cnVjdHVyZSBpbnRlcmZhY2VzOgogCkBAIC0xODIsNyArMTc4LDYgQEAKIGNhbiBoYXZlIGl0cyBvd24gcHJvcGVydGllcyAoaS5lLiBtZXRhLXByb3BlcnRpZXMpLiBFdmVuIGlmIHRoZSBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBpbnRlbmQgdG8gc3VwcG9ydAogbWV0YS1wcm9wZXJ0aWVzLCB0aGUgYFZlcnRleFByb3BlcnR5YCBuZWVkcyB0byBiZSBpbXBsZW1lbnRlZCBhcyBhbiBgRWxlbWVudGAuCiAKLQogW1tvbGFwLWltcGxlbWVudGF0aW9uc11dCiA9PT09IE9MQVAgSW1wbGVtZW50YXRpb25zCiAKQEAgLTIwMCw5ICsxOTUsOSBAQAogTk9URTogVGhlIFZlcnRleFByb2dyYW0gYW5kIE1hcFJlZHVjZSBpbnRlcmZhY2VzIGluIHRoZSBgcHJvY2Vzcy9jb21wdXRlci9gIHBhY2thZ2UgYXJlIG5vdCByZXF1aXJlZCBieSB0aGUgZ3JhcGgKIHN5c3RlbS4gSW5zdGVhZCwgdGhlc2UgYXJlIGludGVyZmFjZXMgdG8gYmUgaW1wbGVtZW50ZWQgYnkgYXBwbGljYXRpb24gZGV2ZWxvcGVycyB3cml0aW5nIFZlcnRleFByb2dyYW1zIGFuZCBNYXBSZWR1Y2Ugam9icy4KIAotSU1QT1JUQU5UOiBUaW5rZXJQb3AzIHByb3ZpZGVzIHRocmVlIE9MQVAgaW1wbGVtZW50YXRpb25zOgorSU1QT1JUQU5UOiBUaW5rZXJQb3AgcHJvdmlkZXMgdHdvIE9MQVAgaW1wbGVtZW50YXRpb25zOgogbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVmZXJlbmNlLyN0aW5rZXJncmFwaC1ncmVtbGluW1RpbmtlckdyYXBoQ29tcHV0ZXJdIChUaW5rZXJHcmFwaCksCi1saW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei9yZWZlcmVuY2UvI2dpcmFwaGdyYXBoY29tcHV0ZXJbR2lyYXBoR3JhcGhDb21wdXRlcl0gKEhhZG9vcEdyYXBoKSwgYW5kCithbmQKIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jc3BhcmtncmFwaGNvbXB1dGVyW1NwYXJrR3JhcGhDb21wdXRlcl0gKEhhZG9vcCkuCiBHaXZlbiB0aGUgY29tcGxleGl0eSBvZiB0aGUgT0xBUCBzeXN0ZW0sIGl0IGlzIGdvb2QgdG8gc3R1ZHkgYW5kIGNvcHkgbWFueSBvZiB0aGUgcGF0dGVybnMgdXNlZCBpbiB0aGVzZSByZWZlcmVuY2UKIGltcGxlbWVudGF0aW9ucy4KQEAgLTI0MCw3ICsyMzUsNyBAQAogCiA9PT09PSBJbXBsZW1lbnRpbmcgTWFwUmVkdWNlIEVtaXR0ZXJzCiAKLWltYWdlOmhhZG9vcC1sb2dvLW5vdGV4dC5wbmdbd2lkdGg9MTUwLGZsb2F0PWxlZnRdIFRoZSBNYXBSZWR1Y2UgZnJhbWV3b3JrIGluIFRpbmtlclBvcDMgaXMgc2ltaWxhciB0byB0aGUgbW9kZWwKK2ltYWdlOmhhZG9vcC1sb2dvLW5vdGV4dC5wbmdbd2lkdGg9MTUwLGZsb2F0PWxlZnRdIFRoZSBNYXBSZWR1Y2UgZnJhbWV3b3JrIGluIFRpbmtlclBvcCBpcyBzaW1pbGFyIHRvIHRoZSBtb2RlbAogcG9wdWxhcml6ZWQgYnkgbGluazpodHRwOi8vaGFkb29wLmFwYWNoZS5vcmdbSGFkb29wXS4gVGhlIHByaW1hcnkgZGlmZmVyZW5jZSBpcyB0aGF0IGFsbCBNYXBwZXJzIHByb2Nlc3MgdGhlIHZlcnRpY2VzCiBvZiB0aGUgZ3JhcGgsIG5vdCBhbiBhcmJpdHJhcnkga2V5L3ZhbHVlIHBhaXIuIEhvd2V2ZXIsIHRoZSB2ZXJ0aWNlcycgZWRnZXMgY2FuIG5vdCBiZSBhY2Nlc3NlZCAtLSBvbmx5IHRoZWlyCiBwcm9wZXJ0aWVzLiBUaGlzIGdyZWF0bHkgcmVkdWNlcyB0aGUgYW1vdW50IG9mIGRhdGEgbmVlZGVkIHRvIGJlIHB1c2hlZCB0aHJvdWdoIHRoZSBNYXBSZWR1Y2UgZW5naW5lIGFzIGFueSBlZGdlCkBAIC0yOTUsNyArMjkwLDcgQEAKIDwxPiBJZiB0aGUgTWFwUmVkdWNlIGpvYiBoYXMgYSByZWR1Y2UsIHRoZW4gdXNlIG9uZSBkYXRhIHN0cnVjdHVyZSAoYHJlZHVjZU1hcGApLCBlbHNlIHVzZSBhbm90aGVyIChgbWFwTGlzdGApLiBUaGUKIGRpZmZlcmVuY2UgYmVpbmcgdGhhdCBhIHJlZHVjdGlvbiByZXF1aXJlcyBhIGdyb3VwaW5nIGJ5IGtleSBhbmQgdGhlcmVmb3JlLCB0aGUgYE1hcDxLLFF1ZXVlPFY+PmAgZGVmaW5pdGlvbi4gSWYgbm8KIHJlZHVjdGlvbi9ncm91cGluZyBpcyByZXF1aXJlZCwgdGhlbiBhIHNpbXBsZSBgUXVldWU8S2V5VmFsdWU8SyxWPj5gIGNhbiBiZSBsZXZlcmFnZWQuCi08Mj4gSWYgcmVkdWNlIGlzIHRvIGZvbGxvdywgdGhlbiBpbmNyZW1lbnQgdGhlIE1hcCB3aXRoIGEgbmV3IHZhbHVlIGZvciB0aGUga2V5LiBgTWFwSGVscGVyYCBpcyBhIFRpbmtlclBvcDMgY2xhc3MKKzwyPiBJZiByZWR1Y2UgaXMgdG8gZm9sbG93LCB0aGVuIGluY3JlbWVudCB0aGUgTWFwIHdpdGggYSBuZXcgdmFsdWUgZm9yIHRoZSBrZXkuIGBNYXBIZWxwZXJgIGlzIGEgVGlua2VyUG9wIGNsYXNzCiB3aXRoIHN0YXRpYyBtZXRob2RzIGZvciBhZGRpbmcgZGF0YSB0byBhIE1hcC4KIDwzPiBJZiBubyByZWR1Y2UgaXMgdG8gZm9sbG93LCB0aGVuIHNpbXBseSBhcHBlbmQgYSBLZXlWYWx1ZSB0byB0aGUgcXVldWUuCiA8ND4gV2hlbiB0aGUgbWFwIHBoYXNlIGlzIGNvbXBsZXRlLCBhbnkgbWFwLXJlc3VsdCBzb3J0aW5nIHJlcXVpcmVkIGNhbiBiZSBleGVjdXRlZCBhdCB0aGlzIHBvaW50LgpAQCAtNTU3LDU5ICs1NTIsMTYgQEAKIAogW3NvdXJjZSxjc2hhcnBdCiAtLS0tCi1pbnRlcm5hbCBjbGFzcyBNeVR5cGUKLXsKLSAgICBwdWJsaWMgc3RhdGljIHN0cmluZyBHcmFwaHNvblByZWZpeCA9ICJwcm92aWRlcngiOwotICAgIHB1YmxpYyBzdGF0aWMgc3RyaW5nIEdyYXBoc29uQmFzZVR5cGUgPSAiTXlUeXBlIjsKLSAgICBwdWJsaWMgc3RhdGljIHN0cmluZyBHcmFwaHNvblR5cGUgPSBHcmFwaFNPTlV0aWwuRm9ybWF0VHlwZU5hbWUoR3JhcGhzb25QcmVmaXgsIEdyYXBoc29uQmFzZVR5cGUpOworaW5jbHVkZTo6Li4vLi4vLi4vLi4vZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvRG9jcy9EZXYvUHJvdmlkZXIvSW5kZXhUZXN0cy5jc1t0YWdzPW15VHlwZVNlcmlhbGl6YXRpb25dCiAKLSAgICBwdWJsaWMgTXlUeXBlKGludCB4LCBpbnQgeSkKLSAgICB7Ci0gICAgICAgIFggPSB4OwotICAgICAgICBZID0geTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgaW50IFggeyBnZXQ7IH0KLSAgICBwdWJsaWMgaW50IFkgeyBnZXQ7IH0KLX0KLQotaW50ZXJuYWwgY2xhc3MgTXlDbGFzc1dyaXRlciA6IElHcmFwaFNPTlNlcmlhbGl6ZXIKLXsKLSAgICBwdWJsaWMgRGljdGlvbmFyeTxzdHJpbmcsIGR5bmFtaWM+IERpY3RpZnkoZHluYW1pYyBvYmplY3REYXRhLCBHcmFwaFNPTldyaXRlciB3cml0ZXIpCi0gICAgewotICAgICAgICBNeVR5cGUgbXlUeXBlID0gb2JqZWN0RGF0YTsKLSAgICAgICAgdmFyIHZhbHVlRGljdCA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgb2JqZWN0PgotICAgICAgICB7Ci0gICAgICAgICAgICB7IngiLCBteVR5cGUuWH0sCi0gICAgICAgICAgICB7InkiLCBteVR5cGUuWX0KLSAgICAgICAgfTsKLSAgICAgICAgcmV0dXJuIEdyYXBoU09OVXRpbC5Ub1R5cGVkVmFsdWUobmFtZW9mKFRlc3RDbGFzcyksIHZhbHVlRGljdCwgTXlUeXBlLkdyYXBoc29uUHJlZml4KTsKLSAgICB9Ci19Ci0KLWludGVybmFsIGNsYXNzIE15VHlwZVJlYWRlciA6IElHcmFwaFNPTkRlc2VyaWFsaXplcgotewotICAgIHB1YmxpYyBkeW5hbWljIE9iamVjdGlmeShKVG9rZW4gZ3JhcGhzb25PYmplY3QsIEdyYXBoU09OUmVhZGVyIHJlYWRlcikKLSAgICB7Ci0gICAgICAgIHZhciB4ID0gcmVhZGVyLlRvT2JqZWN0KGdyYXBoc29uT2JqZWN0WyJ4Il0pOwotICAgICAgICB2YXIgeSA9IHJlYWRlci5Ub09iamVjdChncmFwaHNvbk9iamVjdFsieSJdKTsKLSAgICAgICAgcmV0dXJuIG5ldyBNeVR5cGUoeCwgeSk7Ci0gICAgfQotfQotCi12YXIgZ3JhcGhzb25SZWFkZXIgPSBuZXcgR3JhcGhTT04zUmVhZGVyKAotICAgIG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgSUdyYXBoU09ORGVzZXJpYWxpemVyPiB7e015VHlwZS5HcmFwaHNvblR5cGUsIG5ldyBNeVR5cGVSZWFkZXIoKX19KTsKLXZhciBncmFwaHNvbldyaXRlciA9IG5ldyBHcmFwaFNPTjNXcml0ZXIoCi0gICAgbmV3IERpY3Rpb25hcnk8VHlwZSwgSUdyYXBoU09OU2VyaWFsaXplcj4ge3t0eXBlb2YoTXlUeXBlKSwgbmV3IE15Q2xhc3NXcml0ZXIoKX19KTsKLQotdmFyIGdyZW1saW5DbGllbnQgPSBuZXcgR3JlbWxpbkNsaWVudChuZXcgR3JlbWxpblNlcnZlcigibG9jYWxob3N0IiwgODE4MiksIGdyYXBoc29uUmVhZGVyLCBncmFwaHNvbldyaXRlcik7CitpbmNsdWRlOjouLi8uLi8uLi8uLi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Eb2NzL0Rldi9Qcm92aWRlci9JbmRleFRlc3RzLmNzW3RhZ3M9c3VwcG9ydGluZ0dyZW1saW5OZXRJT10KIC0tLS0KIAogW1tyZW1vdGVjb25uZWN0aW9uLWltcGxlbWVudGF0aW9uc11dCiA9PT09IFJlbW90ZUNvbm5lY3Rpb24gSW1wbGVtZW50YXRpb25zCiAKIEEgYFJlbW90ZUNvbm5lY3Rpb25gIGlzIGFuIGludGVyZmFjZSB0aGF0IGlzIGltcG9ydGFudCBmb3IgdXNhZ2Ugb24gdHJhdmVyc2FsIHNvdXJjZXMgY29uZmlndXJlZCB1c2luZyB0aGUKLWxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jY29ubmVjdGluZy12aWEtcmVtb3RlZ3JhcGhbd2l0aFJlbW90ZSgpXSBvcHRpb24uIEEgYFRyYXZlcnNhbGAKK2xpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jY29ubmVjdGluZy12aWEtZHJpdmVyc1t3aXRoUmVtb3RlKCldIG9wdGlvbi4gQSBgVHJhdmVyc2FsYAogdGhhdCBpcyBnZW5lcmF0ZWQgZnJvbSB0aGF0IHNvdXJjZSB3aWxsIGFwcGx5IGEgYFJlbW90ZVN0cmF0ZWd5YCB3aGljaCB3aWxsIGluamVjdCBhIGBSZW1vdGVTdGVwYCB0byBpdHMgZW5kLiBUaGF0CiBzdGVwIHdpbGwgdGhlbiBzZW5kIHRoZSBgQnl0ZWNvZGVgIG9mIHRoZSBgVHJhdmVyc2FsYCBvdmVyIHRoZSBgUmVtb3RlQ29ubmVjdGlvbmAgdG8gZ2V0IHRoZSByZXN1bHRzIHRoYXQgaXQgd2lsbAogaXRlcmF0ZS4KQEAgLTYzNywxMiArNTg5LDE3IEBACiA9PT09IEJ1bGsgSW1wb3J0IEV4cG9ydAogCiBXaGVuIGl0IGNvbWVzIHRvIGRvaW5nICJidWxrIiBvcGVyYXRpb25zLCB0aGUgZGl2ZXJzZSBuYXR1cmUgb2YgdGhlIGF2YWlsYWJsZSBncmFwaCBkYXRhYmFzZXMgYW5kIHRoZWlyIHNwZWNpZmljCi1jYXBhYmlsaXRpZXMsIHByZXZlbnRzIFRpbmtlclBvcCBmcm9tIGRvaW5nIGEgZ29vZCBqb2Igb2YgZ2VuZXJhbGl6aW5nIHRoYXQgY2FwYWJpbGl0eSB3ZWxsLiBUaW5rZXJQb3AgcmVmZXJzIHVzZXJzIHRvCi10aGUgYnVsayBpbXBvcnQvZXhwb3J0IGZhY2lsaXRpZXMgb2Ygc3BlY2lmaWMgZ3JhcGggcHJvdmlkZXJzIGFzIHRoZXkgdGVuZCB0byBiZSBtb3JlIGVmZmljaWVudCBhbmQgZWFzaWVyIHRvIHVzZSB0aGFuCi10aGUgb3B0aW9ucyBUaW5rZXJQb3AgaGFzIHRyaWVkIHRvIGdlbmVyYWxpemUgaW4gdGhlIHBhc3QuCitjYXBhYmlsaXRpZXMsIHByZXZlbnRzIFRpbmtlclBvcCBmcm9tIGRvaW5nIGEgZ29vZCBqb2Igb2YgZ2VuZXJhbGl6aW5nIHRoYXQgY2FwYWJpbGl0eSB3ZWxsLiBUaW5rZXJQb3AgdGh1cyBtYWludGFpbnMKK3R3byBwb3NpdGlvbnMgb24gdGhlIGNvbmNlcHQgb2YgaW1wb3J0IGFuZCBleHBvcnQ6CiAKLVRoYXQgc2FpZCwgZm9yIGdyYXBoIHByb3ZpZGVycyB0aGF0IGRvbid0IGhhdmUgYSBzcGVjaWFsIGJ1bGsgbG9hZGluZyBmZWF0dXJlLCB0aGV5IGNhbiBnZXQgYSBiYXNpYyBidWxrIGxvYWRlciBmcm9tCi1UaW5rZXJQb3AgdXNpbmcgdGhlIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jY2xvbmV2ZXJ0ZXhwcm9ncmFtW0Nsb25lVmVydGV4UHJvZ3JhbV0uCisxLiBUaW5rZXJQb3AgcmVmZXJzIHVzZXJzIHRvIHRoZSBidWxrIGltcG9ydC9leHBvcnQgZmFjaWxpdGllcyBvZiBzcGVjaWZpYyBncmFwaCBwcm92aWRlcnMgYXMgdGhleSB0ZW5kIHRvIGJlIG1vcmUKK2VmZmljaWVudCBhbmQgZWFzaWVyIHRvIHVzZSB0aGFuIHRoZSBvcHRpb25zIFRpbmtlclBvcCBoYXMgdHJpZWQgdG8gZ2VuZXJhbGl6ZSBpbiB0aGUgcGFzdC4KKzIuIFRpbmtlclBvcCBlbmNvdXJhZ2VzIGdyYXBoIHByb3ZpZGVycyB0byBleHBvc2UgdGhvc2UgY2FwYWJpbGl0aWVzIHZpYSBgZy5pbygpYCBhbmQgdGhlIGBJb1N0ZXBgIGJ5IHdheSBvZiBhCitgVHJhdmVyc2FsU3RyYXRlZ3lgLgorCitUaGF0IHNhaWQsIGZvciBncmFwaCBwcm92aWRlcnMgdGhhdCBkb24ndCBoYXZlIGEgc3BlY2lhbCBidWxrIGxvYWRpbmcgZmVhdHVyZSwgdGhleSBjYW4gZWl0aGVyIHJlbHkgb24gdGhlIGRlZmF1bHQKK09MVFAgKHNpbmdsZS10aHJlYWRlZCkgYEdyYXBoUmVhZGVyYCBhbmQgYEdyYXBoV3JpdGVyYCBvcHRpb25zIHRoYXQgYXJlIGVtYmVkZGVkIGluIGBJb1N0ZXBgIG9yIGdldCBhIGJhc2ljIGJ1bGsgbG9hZGVyCitmcm9tIFRpbmtlclBvcCB1c2luZyB0aGUgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVmZXJlbmNlLyNjbG9uZXZlcnRleHByb2dyYW1bQ2xvbmVWZXJ0ZXhQcm9ncmFtXS4KIFNpbXBseSBwcm92aWRlIGEgYElucHV0Rm9ybWF0YCBhbmQgYE91dHB1dEZvcm1hdGAgdGhhdCBjYW4gYmUgcmVmZXJlbmNlZCBieSBhIGBIYWRvb3BHcmFwaGAgaW5zdGFuY2UgYXMgZGlzY3Vzc2VkCiBpbiB0aGUgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVmZXJlbmNlLyNjbG9uZXZlcnRleHByb2dyYW1bUmVmZXJlbmNlIERvY3VtZW50YXRpb25dLgogCkBAIC02OTIsNiArNjQ5LDEwIEBACiBkZWZpbml0aW9ucy4gIE1vcmVvdmVyLCBpbXBsZW1lbnRlcnMgc2hvdWxkIGNvbnNpZGVyIGZpbGxpbmcgZ2FwcyBpbiB0aGVpciBvd24gdGVzdCBzdWl0ZXMsIGVzcGVjaWFsbHkgd2hlbgogSU8tcmVsYXRlZCB0ZXN0cyBhcmUgYmVpbmcgaWdub3JlZC4KIAorVElQOiBJZiBpdCBpcyBleHBlbnNpdmUgdG8gY29uc3RydWN0IGEgbmV3IGBHcmFwaGAgaW5zdGFuY2UsIGNvbnNpZGVyIGltcGxlbWVudGluZyBgR3JhcGhQcm92aWRlci5nZXRTdGF0aWNGZWF0dXJlcygpYAord2hpY2ggY2FuIGhlbHAgYnkgY2FjaGluZyBhIHN0YXRpYyBmZWF0dXJlIHNldCBmb3IgaW5zdGFuY2VzIHByb2R1Y2VkIGJ5IHRoYXQgYEdyYXBoUHJvdmlkZXJgIGFuZCBhbGxvdyB0aGUgdGVzdCBzdWl0ZQordG8gYXZvaWQgdGhhdCBjb25zdHJ1Y3Rpb24gY29zdCBpZiB0aGUgdGVzdCBpcyBpZ25vcmVkLgorCiBUaGUgb25seSB0ZXN0LWNsYXNzIHRoYXQgcmVxdWlyZXMgYW55IGNvZGUgaW52ZXN0bWVudCBpcyB0aGUgYEdyYXBoUHJvdmlkZXJgIGltcGxlbWVudGF0aW9uIGNsYXNzLiBUaGlzIGNsYXNzIGlzIGEKIHVzZWQgYnkgdGhlIHRlc3Qgc3VpdGUgdG8gY29uc3RydWN0IGBHcmFwaGAgY29uZmlndXJhdGlvbnMgYW5kIGluc3RhbmNlcyBhbmQgcHJvdmlkZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlCiBpbXBsZW1lbnRhdGlvbiBpdHNlbGYuICBJbiBtb3N0IGNhc2VzLCBpdCBpcyBiZXN0IHRvIHNpbXBseSBleHRlbmQgYEFic3RyYWN0R3JhcGhQcm92aWRlcmAgYXMgaXQgcHJvdmlkZXMgbWFueQpAQCAtODEzLDcgKzc3NCw3IEBACiAKID09PSBBY2Nlc3NpYmlsaXR5IHZpYSBHcmVtbGluUGx1Z2luCiAKLWltYWdlOmdyZW1saW4tcGx1Z2luLnBuZ1t3aWR0aD0xMDAsZmxvYXQ9bGVmdF0gVGhlIGFwcGxpY2F0aW9ucyBkaXN0cmlidXRlZCB3aXRoIFRpbmtlclBvcDMgZG8gbm90IGRpc3RyaWJ1dGUgd2l0aAoraW1hZ2U6Z3JlbWxpbi1wbHVnaW4ucG5nW3dpZHRoPTEwMCxmbG9hdD1sZWZ0XSBUaGUgYXBwbGljYXRpb25zIGRpc3RyaWJ1dGVkIHdpdGggVGlua2VyUG9wIGRvIG5vdCBkaXN0cmlidXRlIHdpdGgKIGFueSBncmFwaCBzeXN0ZW0gaW1wbGVtZW50YXRpb25zIGJlc2lkZXMgVGlua2VyR3JhcGguIElmIHlvdXIgaW1wbGVtZW50YXRpb24gaXMgc3RvcmVkIGluIGEgTWF2ZW4gcmVwb3NpdG9yeSAoZS5nLgogTWF2ZW4gQ2VudHJhbCBSZXBvc2l0b3J5KSwgdGhlbiBpdCBpcyBiZXN0IHRvIHByb3ZpZGUgYSA8PGdyZW1saW4tcGx1Z2lucyxgR3JlbWxpblBsdWdpbmA+PiBpbXBsZW1lbnRhdGlvbiBzbyB0aGUgcmVzcGVjdGl2ZSBqYXJzIGNhbiBiZQogZG93bmxvYWRlZCBhY2NvcmRpbmcgYW5kIHdoZW4gcmVxdWlyZWQgYnkgdGhlIHVzZXIuIE5lbzRqJ3MgR3JlbWxpblBsdWdpbiBpcyBwcm92aWRlZCBiZWxvdyBmb3IgcmVmZXJlbmNlLgpAQCAtODM5LDcgKzgwMCw3IEBACiA9PT0gSW4tRGVwdGggSW1wbGVtZW50YXRpb25zCiAKIGltYWdlOmdyZW1saW4tcGFpbnRpbmcucG5nW3dpZHRoPTIwMCxmbG9hdD1yaWdodF0gVGhlIGdyYXBoIHN5c3RlbSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHByZXNlbnRlZCB0aHVzIGZhciBhcmUKLW1pbmltdW0gcmVxdWlyZW1lbnRzIG5lY2Vzc2FyeSB0byB5aWVsZCBhIHZhbGlkIFRpbmtlclBvcDMgaW1wbGVtZW50YXRpb24uIEhvd2V2ZXIsIHRoZXJlIGFyZSBvdGhlciBhcmVhcyB0aGF0IGEKK21pbmltdW0gcmVxdWlyZW1lbnRzIG5lY2Vzc2FyeSB0byB5aWVsZCBhIHZhbGlkIFRpbmtlclBvcCBpbXBsZW1lbnRhdGlvbi4gSG93ZXZlciwgdGhlcmUgYXJlIG90aGVyIGFyZWFzIHRoYXQgYQogZ3JhcGggc3lzdGVtIHByb3ZpZGVyIGNhbiB0d2VhayB0byBwcm92aWRlIGFuIGltcGxlbWVudGF0aW9uIG1vcmUgb3B0aW1pemVkIGZvciB0aGVpciB1bmRlcmx5aW5nIGdyYXBoIGVuZ2luZS4gVHlwaWNhbAogYXJlYXMgb2YgZm9jdXMgaW5jbHVkZToKIApAQCAtODQ5LDcgKzgxMCwxMSBAQAogbG9va3VwIGJlY29tZXMgYW4gYE8obG9nKHxWfCkpYC4gUGxlYXNlIHJldmlldyBgVGlua2VyR3JhcGhTdGVwU3RyYXRlZ3lgIGZvciBpZGVhcy4KICogU3RlcCBJbXBsZW1lbnRhdGlvbnM6IEV2ZXJ5IGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jZ3JhcGgtdHJhdmVyc2FsLXN0ZXBzW3N0ZXBdIGlzCiB1bHRpbWF0ZWx5IHJlZmVyZW5jZWQgYnkgdGhlIGBHcmFwaFRyYXZlcnNhbGAgaW50ZXJmYWNlLiBJdCBpcyBwb3NzaWJsZSB0byBleHRlbmQgYEdyYXBoVHJhdmVyc2FsYCB0byB1c2UgYSBncmFwaAotc3lzdGVtIHNwZWNpZmljIHN0ZXAgaW1wbGVtZW50YXRpb24uCitzeXN0ZW0gc3BlY2lmaWMgc3RlcCBpbXBsZW1lbnRhdGlvbi4gTm90ZSB0aGF0IHdoaWxlIGl0IGlzIHNvbWV0aW1lcyBwb3NzaWJsZSB0byBkZXZlbG9wIGN1c3RvbSBzdGVwIGltcGxlbWVudGF0aW9ucworYnkgZXh0ZW5kaW5nIGZyb20gYSBUaW5rZXJQb3Agc3RlcCAodHlwaWNhbGx5LCBgQWRkVmVydGV4U3RlcGAgYW5kIG90aGVyIGBNdXRhdGluZ2Agc3RlcHMpLCBpdCdzIGltcG9ydGFudCB0bworY29uc2lkZXIgdGhhdCBkb2luZyBzbyBpbnRyb2R1Y2VzIHNvbWUgZ3JlYXRlciByaXNrIGZvciBjb2RlIGJyZWFrcyBvbiB1cGdyYWRlcyBhcyBvcHBvc2VkIHRvIG90aGVyIGFyZWFzIG9mIHRoZSBjb2RlCitiYXNlLiBBcyBzdGVwcyBhcmUgbW9yZSBpbnRlcm5hbCBmZWF0dXJlcyBvZiBUaW5rZXJQb3AsIHRoZXkgbWlnaHQgYmUgc3ViamVjdCB0byBicmVha2luZyBBUEkgYW5kIGJlaGF2aW9yYWwgY2hhbmdlcwordGhhdCB3b3VsZCBiZSBsZXNzIGxpa2VseSB0byBiZSBhY2NlcHRlZCBieSBtb3JlIHB1YmxpYyBmYWNpbmcgaW50ZXJmYWNlcy4KIAogPT0gR3JhcGggRHJpdmVyIFByb3ZpZGVyIFJlcXVpcmVtZW50cwogCkBAIC0xMTI5LDcgKzEwOTQsNyBAQAogY2x1c3RlciA9IENsdXN0ZXIub3BlbigpCiBjbGllbnQgPSBjbHVzdGVyLmNvbm5lY3QoKQogYWxpYXNlZCA9IGNsaWVudC5hbGlhcygiZyIpCi1nID0gb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5lbXB0eS5FbXB0eUdyYXBoLklOU1RBTkNFLnRyYXZlcnNhbCgpICAgICAgIDwxPgorZyA9IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuZW1wdHkuRW1wdHlHcmFwaC5pbnN0YW5jZSgpLnRyYXZlcnNhbCgpICAgICA8MT4KIHJzID0gYWxpYXNlZC5zdWJtaXQoZy5WKCkuYm90aCgpLmJhcnJpZXIoKS5ib3RoKCkuYmFycmllcigpKS5hbGwoKS5nZXQoKSAgICAgICAgICAgICAgICAgICAgPDI+CiBhbGlhc2VkLnN1Ym1pdChnLlYoKS5ib3RoKCkuYmFycmllcigpLmJvdGgoKS5iYXJyaWVyKCkuY291bnQoKSkuYWxsKCkuZ2V0KCkuZ2V0KDApLmdldEludCgpIDwzPgogcnMuY29sbGVjdHtbdmFsdWU6IGl0LmdldE9iamVjdCgpLmdldCgpLCBidWxrOiBpdC5nZXRPYmplY3QoKS5idWxrKCldfSAgICAgICAgICAgICAgICAgICAgICA8ND4KZGlmZiAtLWdpdCBhL2RvY3Mvc3JjL3JlY2lwZXMvYW50aS1wYXR0ZXJucy5hc2NpaWRvYyBiL2RvY3Mvc3JjL3JlY2lwZXMvYW50aS1wYXR0ZXJucy5hc2NpaWRvYwppbmRleCA1MGVkZTY3Li5hOWIzYWJjIDEwMDY0NAotLS0gYS9kb2NzL3NyYy9yZWNpcGVzL2FudGktcGF0dGVybnMuYXNjaWlkb2MKKysrIGIvZG9jcy9zcmMvcmVjaXBlcy9hbnRpLXBhdHRlcm5zLmFzY2lpZG9jCkBAIC04NiwyNiArODYsMjcgQEAKIGcKIC0tLS0KIAotT2J2aW91c2x5LCB0aGVzZSB0cmF2ZXJzYWxzIGFyZSBtb3JlIGNvbXBsaWNhdGVkLCBidXQgdGhlIG51bWJlciBvZiBzdGVwcyBpcyBrbm93biBhbmQgdGh1cyBpdCdzIHRoZSBiZXN0IHdheSB0byBwcmV2ZW50IGFuCi11bmV4cGVjdGVkIGBTdGFja092ZXJmbG93RXJyb3JgLiBGdXJ0aGVybW9yZSwgc2hvcnRlciB0cmF2ZXJzYWxzIHJlZHVjZSB0aGUgKGRlKXNlcmlhbGl6YXRpb24gY29zdHMgd2hlbiBzdWNoIGEgdHJhdmVyc2FsIGlzIHNlbmQKLW92ZXIgdGhlIHdpcmUgdG8gYSBHcmVtbGluIFNlcnZlci4KK09idmlvdXNseSwgdGhlc2UgdHJhdmVyc2FscyBhcmUgbW9yZSBjb21wbGljYXRlZCwgYnV0IHRoZSBudW1iZXIgb2Ygc3RlcHMgaXMga25vd24gYW5kIHRodXMgaXQncyB0aGUgYmVzdCB3YXkgdG8KK3ByZXZlbnQgYW4gdW5leHBlY3RlZCBgU3RhY2tPdmVyZmxvd0Vycm9yYC4gRnVydGhlcm1vcmUsIHNob3J0ZXIgdHJhdmVyc2FscyByZWR1Y2UgdGhlIChkZSlzZXJpYWxpemF0aW9uIGNvc3RzIHdoZW4KK3N1Y2ggYSB0cmF2ZXJzYWwgaXMgc2VuZCBvdmVyIHRoZSB3aXJlIHRvIGEgR3JlbWxpbiBTZXJ2ZXIuCiAKIE5PVEU6IEFsdGhvdWdoIHRoZSBleGFtcGxlIHdhcyBiYXNlZCBvbiBhIGdyYXBoLW11dGF0aW5nIHRyYXZlcnNhbCwgdGhlIHNhbWUgcnVsZXMgYXBwbHkgZm9yIHJlYWQtb25seSBhbmQgbWl4ZWQgdHJhdmVyc2Fscy4KIAogW1t1bnNwZWNpZmllZC1rZXlzLWFuZC1sYWJlbHNdXQogPT0gVW5zcGVjaWZpZWQgS2V5cyBhbmQgTGFiZWxzCiAKLVNvbWUgR3JlbWxpbiBzdGVwcyBoYXZlIG9wdGlvbmFsIGFyZ3VtZW50cyB0aGF0IHJlcHJlc2VudCBrZXlzIChlLmcuIGB2YWx1ZU1hcCgpYCkgb3IgbGFiZWxzIChlLmcuIGBvdXQoKWApLiBJbiB0aGUgcHJvdG90eXBpbmcKLXBoYXNlIG9mIGEgcHJvamVjdHMgaXQncyBvZnRlbiBjb252ZW5pZW50IHRvIHVzZSB0aGVzZSBzdGVwcyB3aXRob3V0IGFueSBhcmd1bWVudHMuIEhvd2V2ZXIsIGluIHByb2R1Y3Rpb24gY29kZSB0aGlzIGlzIGJhZCBpZGVhCi1hbmQga2V5cyBhbmQgbGFiZWxzIHNob3VsZCBhbHdheXMgYmUgc3BlY2lmaWVkLiBOb3Qgb25seSBkb2VzIGl0IG1ha2UgdGhlIHRyYXZlcnNhbCBlYXNpZXIgdG8gcmVhZCBmb3Igb3RoZXJzLCBidXQgaXQgYWxzbyBlbnN1cmVzCi10aGF0IHRoZSBhcHBsaWNhdGlvbiB3aWxsIG5vdCBicmVhayBpZiB0aGUgc2NoZW1hIGNoYW5nZXMgYXQgb25lIHBvaW50IGFuZCB0aGUgcXVlcmllcyByZXR1cm4gY29tcGxldGVseSBkaWZmZXJlbnQgcmVzdWx0cy4KK1NvbWUgR3JlbWxpbiBzdGVwcyBoYXZlIG9wdGlvbmFsIGFyZ3VtZW50cyB0aGF0IHJlcHJlc2VudCBrZXlzIChlLmcuIGBlbGVtZW50TWFwKClgLCB2YWx1ZU1hcCgpYCkgb3IgbGFiZWxzIChlLmcuCitgb3V0KClgKS4gSW4gdGhlIHByb3RvdHlwaW5nIHBoYXNlIG9mIGEgcHJvamVjdHMgaXQncyBvZnRlbiBjb252ZW5pZW50IHRvIHVzZSB0aGVzZSBzdGVwcyB3aXRob3V0IGFueSBhcmd1bWVudHMuCitIb3dldmVyLCBpbiBwcm9kdWN0aW9uIGNvZGUgdGhpcyBpcyBiYWQgaWRlYSBhbmQga2V5cyBhbmQgbGFiZWxzIHNob3VsZCBhbHdheXMgYmUgc3BlY2lmaWVkLiBOb3Qgb25seSBkb2VzIGl0IG1ha2UgdGhlCit0cmF2ZXJzYWwgZWFzaWVyIHRvIHJlYWQgZm9yIG90aGVycywgYnV0IGl0IGFsc28gZW5zdXJlcyB0aGF0IHRoZSBhcHBsaWNhdGlvbiB3aWxsIG5vdCBicmVhayBpZiB0aGUgc2NoZW1hIGNoYW5nZXMgYXQKK29uZSBwb2ludCBhbmQgdGhlIHF1ZXJpZXMgcmV0dXJuIGNvbXBsZXRlbHkgZGlmZmVyZW50IHJlc3VsdHMuCiAKIFRoZSBmb2xsb3dpbmcgY29kZSBibG9jayBzaG93cyBhIGZldyBleGFtcGxlcyB0aGF0IGFyZSBnb29kIGZvciBwcm90b3R5cGluZyBvciBncmFwaCBkaXNjb3ZlcnkuCiAKIFtncmVtbGluLWdyb292eSxtb2Rlcm5dCiAtLS0tCiBnLlYoKS5oYXMoInBlcnNvbiIsIm5hbWUiLCJtYXJrbyIpLm91dCgpCi1nLlYoKS5oYXMoInBlcnNvbiIsIm5hbWUiLCJtYXJrbyIpLm91dCgiY3JlYXRlZCIpLnZhbHVlTWFwKCkKK2cuVigpLmhhcygicGVyc29uIiwibmFtZSIsIm1hcmtvIikub3V0KCJjcmVhdGVkIikuZWxlbWVudE1hcCgpCiBnLlYoKS5oYXMoInNvZnR3YXJlIiwibmFtZSIsInJpcHBsZSIpLmluRSgpLmhhcygid2VpZ2h0IiwgZ3RlKDAuNSkpLm91dFYoKS5wcm9wZXJ0aWVzKCkKIC0tLS0KIApAQCAtMTE0LDcgKzExNSw3IEBACiBbZ3JlbWxpbi1ncm9vdnksZXhpc3RpbmddCiAtLS0tCiBnLlYoKS5oYXMoInBlcnNvbiIsIm5hbWUiLCJtYXJrbyIpLm91dCgiY3JlYXRlZCIsImtub3dzIikKLWcuVigpLmhhcygicGVyc29uIiwibmFtZSIsIm1hcmtvIikub3V0KCJjcmVhdGVkIikudmFsdWVNYXAoIm5hbWUiLCJsYW5nIikKK2cuVigpLmhhcygicGVyc29uIiwibmFtZSIsIm1hcmtvIikub3V0KCJjcmVhdGVkIikuZWxlbWVudE1hcCgibmFtZSIsImxhbmciKQogZy5WKCkuaGFzKCJzb2Z0d2FyZSIsIm5hbWUiLCJyaXBwbGUiKS5pbkUoImNyZWF0ZWQiKS5oYXMoIndlaWdodCIsIGd0ZSgwLjUpKS5vdXRWKCkuCiAgIHByb3BlcnRpZXMoIm5hbWUiLCJhZ2UiKQogLS0tLQpkaWZmIC0tZ2l0IGEvZG9jcy9zcmMvcmVjaXBlcy9hcHBlbmRpeC5hc2NpaWRvYyBiL2RvY3Mvc3JjL3JlY2lwZXMvYXBwZW5kaXguYXNjaWlkb2MKaW5kZXggM2NlYmU4YS4uZGJlYWFhZSAxMDA2NDQKLS0tIGEvZG9jcy9zcmMvcmVjaXBlcy9hcHBlbmRpeC5hc2NpaWRvYworKysgYi9kb2NzL3NyYy9yZWNpcGVzL2FwcGVuZGl4LmFzY2lpZG9jCkBAIC0xMTYsNyArMTE2LDcgQEAKICAgd2hlcmUoZXEoInQiKSkuCiAgIGdyb3VwKCkuCiAgICAgYnkoc2VsZWN0KCJzIikuYnkoIm5hbWUiKSkuCi0gICAgYnkoZ3JvdXAoKS5ieShzZWxlY3QoInQiKS5ieSh2YWx1ZU1hcCgiZnJvbVRpbWUiLCJ0b1RpbWUiKSkpLgorICAgIGJ5KGdyb3VwKCkuYnkoc2VsZWN0KCJ0IikuYnkoZWxlbWVudE1hcCgiZnJvbVRpbWUiLCJ0b1RpbWUiKSkpLgogICAgICAgICAgICAgICAgYnkoc2VsZWN0KCJjIikuZGVkdXAoKS52YWx1ZXMoIm5hbWUiKS5mb2xkKCkpKS5uZXh0KCkKIC0tLS0KIApAQCAtMTU0LDExICsxNTQsMTEgQEAKIHBsYWNlcyA9IFsiY2VudHJldmlsbGUiLCJkdWxsZXMiXTtbXSAgLy8gd2lsbCBub3QgbWF0Y2ggYXMgInB1cmNlbGx2aWxsZSIgaXMgbWlzc2luZwogZy5WKCkubm90KGhhcygibG9jYXRpb24iLCB3aXRob3V0KHBsYWNlcykpKS4KICAgd2hlcmUodmFsdWVzKCJsb2NhdGlvbiIpLmlzKHdpdGhpbihwbGFjZXMpKS5jb3VudCgpLmlzKHBsYWNlcy5zaXplKCkpKS4KLSAgdmFsdWVNYXAoKQorICBlbGVtZW50TWFwKCkKIHBsYWNlcyA9IFsiY2VudHJldmlsbGUiLCJkdWxsZXMiLCJwdXJjZWxsdmlsbGUiXTtbXQogZy5WKCkubm90KGhhcygibG9jYXRpb24iLCB3aXRob3V0KHBsYWNlcykpKS4KICAgd2hlcmUodmFsdWVzKCJsb2NhdGlvbiIpLmlzKHdpdGhpbihwbGFjZXMpKS5jb3VudCgpLmlzKHBsYWNlcy5zaXplKCkpKS4KLSAgdmFsdWVNYXAoKQorICBlbGVtZW50TWFwKCkKIC0tLS0KIAogW1thcHBlbmRpeC1mXV0KQEAgLTE4OCwxMyArMTg4LDEzIEBACiAgICAgIHByb2plY3QoImFiIiwgImJhIikuCiAgICAgICAgYnkoaW5FKCJsaW5rIikud2hlcmUob3V0VigpLmFzKCJhIikpLmNvdW50KCkpLgogICAgICAgIGJ5KG91dEUoImxpbmsiKS53aGVyZShpblYoKS5hcygiYSIpKS5jb3VudCgpKS4KLSAgICAgc2FjayhzdW0pLmJ5KHNlbGVjdCgiYWIiKSkuCi0gICAgIHNhY2soZGl2KS5ieShzZWxlY3QoImJhIikpLgorICAgICBzYWNrKHN1bSkuYnkoImFiIikuCisgICAgIHNhY2soZGl2KS5ieSgiYmEiKS4KICAgICAgcHJvamVjdCgiYSIsICJiIiwgIiMoYSxiKSIsICIjKGIsYSkiLCAiIyhhLGIpIC8gIyhiLGEpIikuCiAgICAgICAgYnkoc2VsZWN0KCJhIikpLgogICAgICAgIGJ5KHNlbGVjdCgiYiIpKS4KLSAgICAgICBieShzZWxlY3QoImFiIikpLgotICAgICAgIGJ5KHNlbGVjdCgiYmEiKSkuCisgICAgICAgYnkoImFiIikuCisgICAgICAgYnkoImJhIikuCiAgICAgICAgYnkoc2FjaygpKQogLS0tLQogCkBAIC0yMzUsMjIgKzIzNSwyMiBAQAogZy5WKCkuaGFzKCJuYW1lIiwgIkEiKS5vdXQoInJlbCIpLgogICB1bmlvbih3aGVyZShvdXQoIm9jY3VyZWRfYXQiKS5oYXMoImRhdGUiLCBndGUoMjAxNjA4MTcpKSksCiAgICAgICAgIF9fLm5vdChvdXRFKCJvY2N1cmVkX2F0IikpLmNvYWxlc2NlKG91dCgpLmhhc0xhYmVsKCJkaW1vbiIpLCBpZGVudGl0eSgpKSkuCi0gIHZhbHVlTWFwKCkKKyAgZWxlbWVudE1hcCgpCiAvLyBvbmx5IEUgaGFzIGEgdmFsaWQgZGF0ZQogZy5WKCkuaGFzKCJuYW1lIiwgIkEiKS5vdXQoInJlbCIpLgogICB1bmlvbih3aGVyZShvdXQoIm9jY3VyZWRfYXQiKS5oYXMoImRhdGUiLCBsdGUoMjAxNjA4MTcpKSksCiAgICAgICAgIF9fLm5vdChvdXRFKCJvY2N1cmVkX2F0IikpLmNvYWxlc2NlKG91dCgpLmhhc0xhYmVsKCJkaW1vbiIpLCBpZGVudGl0eSgpKSkuCi0gIHZhbHVlTWFwKCkKKyAgZWxlbWVudE1hcCgpCiAvLyBvbmx5IEQgaGFzIGEgdmFsaWQgZGF0ZQogZy5WKCkuaGFzKCJuYW1lIiwgIkEiKS5vdXQoInJlbCIpLgogICB1bmlvbih3aGVyZShvdXQoIm9jY3VyZWRfYXQiKS5oYXMoImRhdGUiLCBndCgyMDE2MDgxNykpKSwKICAgICAgICAgX18ubm90KG91dEUoIm9jY3VyZWRfYXQiKSkuY29hbGVzY2Uob3V0KCkuaGFzTGFiZWwoImRpbW9uIiksIGlkZW50aXR5KCkpKS4KLSAgdmFsdWVNYXAoKQorICBlbGVtZW50TWFwKCkKIC8vIG5laXRoZXIgRCBub3IgRSBoYXZlIGEgdmFsaWQgZGF0ZQogZy5WKCkuaGFzKCJuYW1lIiwgIkEiKS5vdXQoInJlbCIpLgogICB1bmlvbih3aGVyZShvdXQoIm9jY3VyZWRfYXQiKS5oYXMoImRhdGUiLCBsdCgyMDE2MDgxNykpKSwKICAgICAgICAgX18ubm90KG91dEUoIm9jY3VyZWRfYXQiKSkuY29hbGVzY2Uob3V0KCkuaGFzTGFiZWwoImRpbW9uIiksIGlkZW50aXR5KCkpKS4KLSAgdmFsdWVNYXAoKQorICBlbGVtZW50TWFwKCkKIC0tLS0KIAogW1thcHBlbmRpeC1pXV0KQEAgLTI3Miw3ICsyNzIsNyBAQAogICBtYXAoZ3JvdXAoKS5ieShsYWJlbCkuYnkodW5mb2xkKCkpKS5hcygiYiIpLgogICBzZWxlY3QoImEiLCJiIikuCiAgIGdyb3VwKCkuCi0gICAgYnkoc2VsZWN0KCJhIikpLgorICAgIGJ5KCJhIikuCiAgICAgYnkoc2VsZWN0KCJiIikuCiAgICAgICAgICBncm91cCgpLgogICAgICAgICAgICBieShzZWxlY3Qoa2V5cykpLgpkaWZmIC0tZ2l0IGEvZG9jcy9zcmMvcmVjaXBlcy9jZW50cmFsaXR5LmFzY2lpZG9jIGIvZG9jcy9zcmMvcmVjaXBlcy9jZW50cmFsaXR5LmFzY2lpZG9jCmluZGV4IDJhMWQwYmQuLjFkZGJlZjAgMTAwNjQ0Ci0tLSBhL2RvY3Mvc3JjL3JlY2lwZXMvY2VudHJhbGl0eS5hc2NpaWRvYworKysgYi9kb2NzL3NyYy9yZWNpcGVzL2NlbnRyYWxpdHkuYXNjaWlkb2MKQEAgLTM0LDcgKzM0LDcgQEAKIGcuVigpLmdyb3VwKCkuYnkoKS5ieShvdXRFKCkuY291bnQoKSkgICAgICAgICAgICAgICAgIDwzPgogZy5WKCkucHJvamVjdCgidiIsImRlZ3JlZSIpLmJ5KCkuYnkoYm90aEUoKS5jb3VudCgpKSAgPDQ+CiBnLlYoKS5wcm9qZWN0KCJ2IiwiZGVncmVlIikuYnkoKS5ieShib3RoRSgpLmNvdW50KCkpLiA8NT4KLSAgb3JkZXIoKS5ieShzZWxlY3QoImRlZ3JlZSIpLCBkZXNjKS4KKyAgb3JkZXIoKS5ieSgiZGVncmVlIiwgZGVzYykuCiAgIGxpbWl0KDQpCiAtLS0tCiAKQEAgLTE1Niw3ICsxNTYsNyBAQAogCiBbZ3JlbWxpbi1ncm9vdnldCiAtLS0tCi1ncmFwaC5pbyhncmFwaG1sKCkpLnJlYWRHcmFwaCgnZGF0YS9ncmF0ZWZ1bC1kZWFkLnhtbCcpCitnLmlvKCdkYXRhL2dyYXRlZnVsLWRlYWQueG1sJykucmVhZCgpLml0ZXJhdGUoKQogZy5WKCkucmVwZWF0KGdyb3VwQ291bnQoJ20nKS5ieSgnbmFtZScpLm91dCgpKS50aW1lcyg1KS5jYXAoJ20nKS4gICAgICAgICAgICAgICAgPDE+CiAgIG9yZGVyKGxvY2FsKS5ieSh2YWx1ZXMsIGRlc2MpLmxpbWl0KGxvY2FsLCAxMCkubmV4dCgpICAgICAgICAgICAgICAgICAgICAgICAgICA8Mj4KIGcuVigpLnJlcGVhdChncm91cENvdW50KCdtJykuYnkoJ25hbWUnKS5vdXQoKS50aW1lTGltaXQoMTAwKSkudGltZXMoNSkuY2FwKCdtJykuIDwzPgpkaWZmIC0tZ2l0IGEvZG9jcy9zcmMvcmVjaXBlcy9jb2xsZWN0aW9ucy5hc2NpaWRvYyBiL2RvY3Mvc3JjL3JlY2lwZXMvY29sbGVjdGlvbnMuYXNjaWlkb2MKaW5kZXggNWFjZTUyOC4uOWFiNzRlYSAxMDA2NDQKLS0tIGEvZG9jcy9zcmMvcmVjaXBlcy9jb2xsZWN0aW9ucy5hc2NpaWRvYworKysgYi9kb2NzL3NyYy9yZWNpcGVzL2NvbGxlY3Rpb25zLmFzY2lpZG9jCkBAIC0yNDQsMTIgKzI0NCwxNiBAQAogLS0tLQogCiA8MT4gRm9yIGVhY2ggdmVydGV4LCBjcmVhdGUgYSAicGFpciIgKGkuZS4gYSBgTGlzdGAgb2YgdHdvIG9iamVjdHMpIG9mIHRoZSB2ZXJ0ZXggaXRzZWxmIGFuZCBpdHMgZWRnZSBjb3VudC4KLTwyPiBGb3IgZWFjaCB2ZXJ0ZXgsIGNyZWF0ZSBhICJ0cmlwbGUiIChpLmUuIGEgYExpc3Rgb2YgdGhyZWUgb2JqZWN0cykgb2YgdGhlIGluZGV4IG9mIHRoZSB2ZXJ0ZXggKHN0YXJ0aW5nIGF0IHplcm8pLAorPDI+IEZvciBlYWNoIHZlcnRleCwgY3JlYXRlIGEgInRyaXBsZSIgKGkuZS4gYSBgTGlzdGAgb2YgdGhyZWUgb2JqZWN0cykgb2YgdGhlIGluZGV4IG9mIHRoZSB2ZXJ0ZXggKHN0YXJ0aW5nIGF0IHplcm8pLAogdGhlIHZlcnRleCBpdHNlbGYgYW5kIGl0cyBlZGdlIGNvdW50LgogCiBUaGUgcGF0dGVybiBoZXJlIGlzIHRvIHVzZSBgdW5pb24oKWAgaW4gY29uanVuY3Rpb24gd2l0aCBgZm9sZCgpYC4gQXMgZXhwbGFpbmVkIGVhcmxpZXIsIHRoZSBgZm9sZCgpYCBvcGVyYXRpb24gcmVkdWNlcwogdGhlIHN0cmVhbSBmcm9tIGB1bmlvbigpYCB0byBhIHNpbmdsZSBgTGlzdGAgdGhhdCBpcyB0aGVuIGZlZCBmb3J3YXJkIHRvIHRoZSBuZXh0IHN0ZXAgaW4gdGhlIHRyYXZlcnNhbC4KIAorTk9URTogVGlua2VyUG9wIDMuNC40IGludHJvZHVjZWQgYGVsZW1lbnRNYXAoKWAtc3RlcCB3aGljaCBlc3NlbnRpYWxseSByZXBsYWNlcyBtdWNoIG9mIHRoZSB0cmFuc2Zvcm1hdGlvbnMgZGVzY3JpYmVkCitiZWxvdyB0aGF0IGFyZSBhcHBsaWVkIHRvIHRoZSByZXN1bHRzIG9mIGB2YWx1ZU1hcCgpYC1zdGVwLiBXaGlsZSB0aGUgZGlyZWN0IHVzZSBvZiBgZWxlbWVudE1hcCgpYCBlbGltaW5hdGVzIHRoZQorbmVlZCBmb3IgdGhlIHRyYW5zZm9ybWF0aW9uLCB0aGUgZXhwbGFuYXRpb25zIGJlbG93IGFyZSBzdGlsbCBlZGlmeWluZyBhbmQgd29ydGggZXhhbWluaW5nLgorCiBOb3cgdGhhdCBgTGlzdGAgcGF0dGVybnMgaGF2ZSBiZWVuIGV4cGxhaW5lZCwgdGhlcmUgY2FuIG5vdyBiZSBzb21lIGF0dGVudGlvbiBvbiBgTWFwYC4gT25lIG9mIHRoZSBtb3N0IGNvbW1vbiB3YXlzCiB0byBlbmQgdXAgd2l0aCBhIGBNYXBgIGlzIHdpdGggYHZhbHVlTWFwKClgOgogCkBAIC0zNTIsMTUgKzM1NiwxNyBAQAogICBoYXMoJ25hbWUnLCdtYXJrbycpLgogICB1bmlvbihwcm9qZWN0KCdkZWdyZWUnKS4gICAgICAgICA8MT4KICAgICAgICAgICBieShib3RoRSgpLmNvdW50KCkpLAotICAgICAgICB2YWx1ZU1hcCh0cnVlKSkuCisgICAgICAgIHZhbHVlTWFwKCkud2l0aChXaXRoT3B0aW9ucy50b2tlbnMpKS4KICAgdW5mb2xkKCkuICAgICAgICAgICAgICAgICAgICAgICAgPDI+CiAgIGdyb3VwKCkuCiAgICAgYnkoa2V5cykuCiAgICAgYnkoc2VsZWN0KHZhbHVlcykudW5mb2xkKCkpCiAtLS0tCiAKLTwxPiBUaGUgYHZhbHVlTWFwKHRydWUpYCBvZiBhIGBWZXJ0ZXhgIGNhbiBiZSBleHRlbmRlZCB3aXRoIHRoZSAiZGVncmVlIiBvZiB0aGUgYFZlcnRleGAgYnkgcGVyZm9ybWluZyBhIGB1bmlvbigpYCBvZgotdGhlIHR3byB0cmF2ZXJzYWxzIHRoYXQgcHJvZHVjZSB0aGF0IG91dHB1dCAoYm90aCBwcm9kdWNlIGBNYXBgIG9iamVjdHMpLgorPDE+IFRoZSBgdmFsdWVNYXAoKS53aXRoKFdpdGhPcHRpb25zLnRva2VucylgIG9mIGEgYFZlcnRleGAgY2FuIGJlIGV4dGVuZGVkIHdpdGggdGhlICJkZWdyZWUiIG9mIHRoZSBgVmVydGV4YCBieQorcGVyZm9ybWluZyBhIGB1bmlvbigpYCBvZiB0aGUgdHdvIHRyYXZlcnNhbHMgdGhhdCBwcm9kdWNlIHRoYXQgb3V0cHV0IChib3RoIHByb2R1Y2UgYE1hcGAgb2JqZWN0cykuIFJlY2FsbCB0aGF0CitgdmFsdWVNYXAoKS53aXRoKFdpdGhPcHRpb25zLnRva2VucylgIGlzIHJlcGxhY2VkIGJ5IGBlbGVtZW50TWFwKClgIGluIDMuNC40IC0gdGhpcyBleGFtcGxlcyBjb250aW51ZXMgd2l0aCB0aGUgIm9sZCIKK2Zvcm0gZm9yIGRlbW9uc3RyYXRpb24gcHVycG9zZXMuCiA8Mj4gVGhlIGB1bmZvbGQoKWAtc3RlcCBpcyB1c2VkIHRvIGRlY29tcG9zZSB0aGUgYE1hcGAgb2JqZWN0cyBpbnRvIGtleS92YWx1ZSBlbnRyaWVzIHRoYXQgYXJlIHRoZW4gY29uc3RydWN0ZWQgYmFjawogaW50byBhIHNpbmdsZSBuZXcgYE1hcGAgZ2l2ZW4gdGhlIHBhdHRlcm5zIHNob3duIGVhcmxpZXIuIFRoZSBgTWFwYCBvYmplY3RzIG9mIGJvdGggdHJhdmVyc2FscyBpbiB0aGUgYHVuaW9uKClgIGFyZQogZXNzZW50aWFsbHkgbWVyZ2VkIHRvZ2V0aGVyLgpAQCAtMzc1LDcgKzM4MSw3IEBACiAtLS0tCiBnLlYoKS4KICAgaGFzKCduYW1lJywnbWFya28nKS4KLSAgdW5pb24odmFsdWVNYXAodHJ1ZSksCisgIHVuaW9uKHZhbHVlTWFwKCkud2l0aChXaXRoT3B0aW9ucy50b2tlbnMpLAogICAgICAgICBwcm9qZWN0KCdhZ2UnKS4KICAgICAgICAgICBieShjb25zdGFudCgxMDApKSkuCiAgIHVuZm9sZCgpLgpkaWZmIC0tZ2l0IGEvZG9jcy9zcmMvcmVjaXBlcy9jb25uZWN0ZWQtY29tcG9uZW50cy5hc2NpaWRvYyBiL2RvY3Mvc3JjL3JlY2lwZXMvY29ubmVjdGVkLWNvbXBvbmVudHMuYXNjaWlkb2MKaW5kZXggNDZkNjFlYi4uMzg4MTMwMCAxMDA2NDQKLS0tIGEvZG9jcy9zcmMvcmVjaXBlcy9jb25uZWN0ZWQtY29tcG9uZW50cy5hc2NpaWRvYworKysgYi9kb2NzL3NyYy9yZWNpcGVzL2Nvbm5lY3RlZC1jb21wb25lbnRzLmFzY2lpZG9jCkBAIC0xNCwxMSArMTQsMzAgQEAKIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogLy8vLworCisvLyBAYXV0aG9yIERhbmllbCBLdXBwaXR6IChhbndlciBvbiBncmVtbGluIHVzZXIgbGlzdCkKKy8vIEBhdXRob3IgUm9iZXJ0IERhbGUgKGFuc3dlciBvbiBncmVtbGluIHVzZXIgbGlzdCkKKy8vIEBhdXRob3IgTWFyYyBkZSBMaWduaWUKKwogW1tjb25uZWN0ZWQtY29tcG9uZW50c11dCiA9PSBDb25uZWN0ZWQgQ29tcG9uZW50cwogCiBHcmVtbGluIGNhbiBiZSB1c2VkIHRvIGZpbmQgbGluazpodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db25uZWN0ZWRfY29tcG9uZW50XyhncmFwaF90aGVvcnkpW2Nvbm5lY3RlZCBjb21wb25lbnRzXQotaW4gYSBncmFwaC4gQ29uc2lkZXIgdGhlIGZvbGxvd2luZyBncmFwaCB3aGljaCBoYXMgdGhyZWUgY29ubmVjdGVkIGNvbXBvbmVudHM6CitpbiBhIGdyYXBoLiBJbiBhIGRpcmVjdGVkIGdyYXBoIGxpa2UgaW4gVGlua2VyUG9wLCBjb21wb25lbnRzIGNhbiBiZSB3ZWFrbHkgb3Igc3Ryb25nbHkgY29ubmVjdGVkLiBUaGlzIHJlY2lwZSBpcworcmVzdHJpY3RlZCB0byBmaW5kaW5nIGxpbms6aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGlyZWN0ZWRfZ3JhcGgjRGlyZWN0ZWRfZ3JhcGhfY29ubmVjdGl2aXR5W3dlYWtseQorY29ubmVjdGVkIGNvbXBvbmVudHNdLCBpbiB3aGljaCB0aGUgZGlyZWN0aW9uIG9mIGVkZ2VzIGlzIG5vdCB0YWtlbiBpbnRvIGFjY291bnQuCisKK0RlcGVuZGluZyBvbiB0aGUgc2l6ZSBvZiB0aGUgZ3JhcGgsIHRocmVlIHNvbHV0aW9uIHJlZ2ltZXMgY2FuIGJlIGRpc2NyaW1pbmF0ZWQ6CisKKzEuIFNtYWxsIGdyYXBocyB0aGF0IGZpdCBpbiB0aGUgbWVtb3J5IG9mIGEgc2luZ2xlIG1hY2hpbmUKKworMi4gTWVkaXVtLXNpemVkIGdyYXBocyBiYWNrZWQgYnkgc3RvcmFnZSBmb3Igd2hpY2ggYW4gT0xUUCBsaW5lYXIgc2NhbiBpcyBzdGlsbCBmZWFzaWJsZS4gVGhpcyByZWdpbWUgaXMgbGVmdCB0byB0aGlyZCBwYXJ0eQorVGlua2VyUG9wIGltcGxlbWVudGF0aW9ucywgc2luY2UgVGlua2VyUG9wIGl0c2VsZiBoYXMgbm8gc3RvcmFnZS1iYWNrZWQgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9ucy4gVGhlIGlkZWEgaXMgdGhhdAorY29tcG9uZW50IG1lbWJlcnNoaXAgaXMgc3RvcmVkIGluIHRoZSBncmFwaCwgcmF0aGVyIHRoYW4gaW4gbWVtb3J5LgorCiszLiBMYXJnZSBncmFwaHMgcmVxdWlyaW5nIGFuIGFwcHJvYWNoIHdpdGggYEhhZG9vcEdyYXBoYCBhbmQgYFNwYXJrR3JhcGhDb21wdXRlcmAgdG8geWllbGQgcmVzdWx0cyBpbiBhIHJlYXNvbmFibGUgdGltZS4KKworVGhlc2UgcmVnaW1lcyBhcmUgZGlzY3Vzc2VkIHNlcGFyYXRlbHkgdXNpbmcgdGhlIGZvbGxvd2luZyBncmFwaCB3aXRoIHRocmVlIHdlYWtseSBjb25uZWN0ZWQgY29tcG9uZW50czoKIAogaW1hZ2U6Y29ubmVjdGVkLWNvbXBvbmVudHMucG5nW3dpZHRoPTYwMF0KIApAQCAtMzUsNDYgKzU0LDk3IEBACiAgIGFkZEUoImxpbmsiKS5mcm9tKCJkIikudG8oImUiKS5pdGVyYXRlKCkKIC0tLS0KIAotT25lIHdheSB0byBkZXRlY3QgdGhlIHZhcmlvdXMgc3ViZ3JhcGhzIHdvdWxkIGJlIHRvIGRvIHNvbWV0aGluZyBsaWtlIHRoaXM6Cis9PT0gU21hbGwgZ3JhcGggdHJhdmVyc2FscworCitDb25uZWN0ZWQgY29tcG9uZW50cyBpbiBhIHNtYWxsIGdyYXBoIGNhbiBiZSBkZXRlcm1pbmVkIHdpdGggZWl0aGVyIGFuIE9MVFAgdHJhdmVyc2FsIG9yIHRoZSBPTEFQCitgY29ubmVjdGVkQ29tcG9uZW50KClgLXN0ZXAuIFRoZSBgY29ubmVjdGVkQ29tcG9uZW50KClgLXN0ZXAgaXMgYXZhaWxhYmxlIGFzIG9mIFRpbmtlclBvcCAzLjQuMCBhbmQgaXMKK2Rlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCBpbiB0aGUKK2xpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jY29ubmVjdGVkY29tcG9uZW50LXN0ZXBbUmVmZXJlbmNlIERvY3VtZW50YXRpb25dLgorVGhlIHRyYXZlcnNhbCBsb29rcyBsaWtlOgogCiBbZ3JlbWxpbi1ncm9vdnksZXhpc3RpbmddCiAtLS0tCi1nLlYoKS5lbWl0KGN5Y2xpY1BhdGgoKS5vcigpLm5vdChib3RoKCkpKS5yZXBlYXQoYm90aCgpKS51bnRpbChjeWNsaWNQYXRoKCkpLiAgPDE+Ci0gIHBhdGgoKS5hZ2dyZWdhdGUoInAiKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDI+Ci0gIHVuZm9sZCgpLmRlZHVwKCkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDM+Ci0gIG1hcChfXy5hcygidiIpLnNlbGVjdCgicCIpLnVuZm9sZCgpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDQ+Ci0gICAgICAgICBmaWx0ZXIodW5mb2xkKCkud2hlcmUoZXEoInYiKSkpLgotICAgICAgICAgdW5mb2xkKCkuZGVkdXAoKS5vcmRlcigpLmJ5KGlkKS5mb2xkKCkpLgotICBkZWR1cCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw1PgorZy53aXRoQ29tcHV0ZXIoKS5WKCkuY29ubmVjdGVkQ29tcG9uZW50KCkuCisgICAgZ3JvdXAoKS5ieShDb25uZWN0ZWRDb21wb25lbnQuY29tcG9uZW50KS4KKyAgICBzZWxlY3QodmFsdWVzKS51bmZvbGQoKQogLS0tLQogCi08MT4gSXRlcmF0ZSBhbGwgdmVydGljZXMgYW5kIHJlcGVhdGVkbHkgdHJhdmVyc2Ugb3ZlciBib3RoIGluY29taW5nIGFuZCBvdXRnb2luZyBlZGdlcyAoVGlua2VyUG9wIGRvZXNuJ3Qgc3VwcG9ydAotdW5pZGlyZWN0aW9uYWwgZ3JhcGhzIGRpcmVjdGx5IHNvIGl0IG11c3QgYmUgc2ltdWxhdGVkIGJ5IGlnbm9yaW5nIHRoZSBkaXJlY3Rpb24gd2l0aCBgYm90aGApLiBOb3RlIHRoZSB1c2Ugb2YgYGVtaXRgCi1wcmlvciB0byBgcmVwZWF0YCBhcyB0aGlzIGFsbG93cyBmb3IgcmV0dXJuIG9mIGEgc2luZ2xlIGxlbmd0aCBwYXRoLgotPDI+IEFnZ3JlZ2F0ZSB0aGUgYHBhdGgoKWAgb2YgdGhlIGVtaXR0ZWQgdmVydGljZXMgdG8gInAiLiBJdCBpcyB3aXRoaW4gdGhlc2UgcGF0aHMgdGhhdCB0aGUgbGlzdCBvZiBjb25uZWN0ZWQKLWNvbXBvbmVudHMgd2lsbCBiZSBpZGVudGlmaWVkLiBPYnZpb3VzbHkgdGhlIHBhdGhzIGxpc3QgYXJlIGR1cGxpY2F0aXZlIGluIHRoZSBzZW5zZSB0aGF0IHRoZXkgY29udGFpbnMgZGlmZmVyZW50Ci1wYXRocyB0cmF2ZWxlZCBvdmVyIHRoZSBzYW1lIHZlcnRpY2VzLgotPDM+IFVucm9sbCB0aGUgZWxlbWVudHMgaW4gdGhlIHBhdGggbGlzdCB3aXRoIGB1bmZvbGRgIGFuZCBgZGVkdXBgLgotPDQ+IFVzZSB0aGUgZmlyc3QgdmVydGV4IGluIGVhY2ggcGF0aCB0byBmaWx0ZXIgYWdhaW5zdCB0aGUgcGF0aHMgc3RvcmVkIGluICJwIi4gV2hlbiBhIHBhdGggaXMgZm91bmQgdGhhdCBoYXMgdGhlCi12ZXJ0ZXggaW4gaXQsIGRlZHVwIHRoZSB2ZXJ0aWNlcyBpbiB0aGUgcGF0aCwgb3JkZXIgaXQgYnkgdGhlIGlkZW50aWZpZXIuIEVhY2ggcGF0aCBvdXRwdXQgZnJvbSB0aGlzIGBtYXBgIHN0ZXAKLXJlcHJlc2VudHMgYSBjb25uZWN0ZWQgY29tcG9uZW50LgotPDU+IFRoZSBjb25uZWN0ZWQgY29tcG9uZW50IGxpc3QgaXMgZHVwbGljYXRpdmUgZ2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgcGF0aHMgaW4gInAiLCBidXQgbm93IHRoYXQgdGhlIHZlcnRpY2VzIHdpdGhpbgotdGhlIHBhdGhzIGFyZSBvcmRlcmVkLCBhIGZpbmFsIGBkZWR1cGAgd2lsbCBtYWtlIHRoZSBsaXN0IG9mIGNvbm5lY3RpdmUgY29tcG9uZW50cyB1bmlxdWUuCitOT1RFOiBUaGUgYGNvbXBvbmVudGAgb3B0aW9uIHBhc3NlZCB0byBgYnkoKWAgaXMgc3RhdGljYWxseSBpbXBvcnRlZCBmcm9tIGBDb25uZWN0ZWRDb21wb25lbnRgIGFuZCByZWZlcnMgdG8gdGhlCitkZWZhdWx0IHByb3BlcnR5IGtleSB3aXRoaW4gd2hpY2ggdGhlIHJlc3VsdCBvZiB0aGUgYWxnb3JpdGhtIGlzIHN0b3JlZC4KIAotTk9URTogVGhpcyBpcyBhIG5pY2UgZXhhbXBsZSBvZiB3aGVyZSBydW5uaW5nIHNtYWxsZXIgcGllY2VzIG9mIGEgbGFyZ2UgR3JlbWxpbiBzdGF0ZW1lbnQgbWFrZSBpdCBlYXNpZXIgdG8gc2VlIHdoYXQKLWlzIGhhcHBlbmluZyBhdCBlYWNoIHN0ZXAuIENvbnNpZGVyIHJ1bm5pbmcgdGhpcyBleGFtcGxlIG9uZSBsaW5lIGF0IGEgdGltZSAob3IgcGVyaGFwcyBldmVuIGluIGEgc3RlcCBhdCBhIHRpbWUpIHRvCi1zZWUgdGhlIG91dHB1dCBhdCBlYWNoIHBvaW50LgotCi1XaGlsZSB0aGUgYWJvdmUgYXBwcm9hY2ggcmV0dXJucyByZXN1bHRzIG5pY2VseSwgdGhlIHRyYXZlcnNhbCBkb2Vzbid0IGFwcGVhciB0byB3b3JrIHdpdGggT0xBUC4gQSBsZXNzIGVmZmljaWVudAotYXBwcm9hY2gsIGJ1dCBvbmUgbW9yZSBzdWl0ZWQgZm9yIE9MQVAgZXhlY3V0aW9uIGxvb2tzIHF1aXRlIHNpbWlsYXIgYnV0IGRvZXMgbm90IHVzZSBgZGVkdXBgIGFzIGhlYXZpbHkgKHRodXMKLWBHcmFwaENvbXB1dGVyYCBpcyBmb3JjZWQgdG8gYW5hbHl6ZSBmYXIgbW9yZSBwYXRocyk6CitBIHN0cmFpZ2h0Zm9yd2FyZCB3YXkgdG8gZGV0ZWN0IHRoZSB2YXJpb3VzIHN1YmdyYXBocyB3aXRoIGFuIE9MVFAgdHJhdmVyc2FsIGlzIHRvIGRvIHRoaXM6CiAKIFtncmVtbGluLWdyb292eSxleGlzdGluZ10KIC0tLS0KLWcud2l0aENvbXB1dGVyKCkuVigpLmVtaXQoY3ljbGljUGF0aCgpLm9yKCkubm90KGJvdGgoKSkpLnJlcGVhdChib3RoKCkpLnVudGlsKGN5Y2xpY1BhdGgoKSkuCi0gIGFnZ3JlZ2F0ZSgicCIpLmJ5KHBhdGgoKSkuY2FwKCJwIikudW5mb2xkKCkubGltaXQobG9jYWwsIDEpLgotICBtYXAoX18uYXMoInYiKS5zZWxlY3QoInAiKS51bmZvbGQoKS4KLSAgICAgICAgIGZpbHRlcih1bmZvbGQoKS53aGVyZShlcSgidiIpKSkuCi0gICAgICAgICB1bmZvbGQoKS5kZWR1cCgpLm9yZGVyKCkuYnkoaWQpLmZvbGQoKQotICApLnRvU2V0KCkKK2cuVigpLmVtaXQoY3ljbGljUGF0aCgpLm9yKCkubm90KGJvdGgoKSkpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwxPgorICAgIHJlcGVhdChfXy53aGVyZSh3aXRob3V0KCdhJykpLnN0b3JlKCdhJykuYm90aCgpKS51bnRpbChjeWNsaWNQYXRoKCkpLiAgICAgPDI+CisgICAgZ3JvdXAoKS5ieShwYXRoKCkudW5mb2xkKCkubGltaXQoMSkpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Mz4KKyAgICBieShwYXRoKCkudW5mb2xkKCkuZGVkdXAoKS5mb2xkKCkpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw0PgorICAgIHNlbGVjdCh2YWx1ZXMpLnVuZm9sZCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDU+CiAtLS0tCisKKzwxPiBUaGUgaW5pdGlhbCBlbWl0KCkgc3RlcCBhbGxvd3MgZm9yIG91dHB1dCBvZiBpc29sYXRlZCB2ZXJ0aWNlcywgaW4gYWRkaXRpb24gdG8gdGhlIGRpc2NvdmVyeSBvZgorY29tcG9uZW50cyBhcyBkZXNjcmliZWQgaW4gKDIpLgorCis8Mj4gVGhlIGVudGlyZSBjb21wb25lbnQgdG8gd2hpY2ggdGhlIGZpcnN0IHJldHVybmVkIHZlcnRleCBiZWxvbmdzLCBpcyB2aXNpdGVkLiBUbyBhbGxvdyBmb3IgY29tcG9uZW50cyBvZiBhbnkKK3N0cnVjdHVyZSwgYSByZXBlYXQgbG9vcCBpcyBhcHBsaWVkIHRoYXQgb25seSBzdG9wcyBmb3IgYSBwYXJ0aWN1bGFyIGJyYW5jaCBvZiB0aGUgY29tcG9uZW50IHdoZW4gaXQgZGV0ZWN0cyBhIGN5Y2xpYworcGF0aC4gIENvbGxlY3Rpb24gYCdhJ2AgaXMgdXNlZCB0byBrZWVwIHRyYWNrIG9mIHZpc2l0ZWQgdmVydGljZXMsIGZvciBib3RoIHN1YnRyYXZlcnNhbHMgd2l0aGluIGEgY29tcG9uZW50CithbmQgbmV3IHRyYXZlcnNhbHMgcmVzdWx0aW5nIGZyb20gdGhlIGBnLlYoKWAgbGluZWFyIHNjYW4uCisKKzwzPiBXaGlsZSBgJ2EnYCBuaWNlbHkga2VlcHMgdHJhY2sgb2YgdmVydGljZXMgYWxyZWFkeSB2aXNpdGVkLCB0aGUgYWN0dWFsIGNvbXBvbmVudHMgbmVlZCB0byBiZSBleHRyYWN0ZWQgZnJvbSB0aGUKK3BhdGggaW5mb3JtYXRpb24uIFRoZSBgcGF0aCgpLnVuZm9sZCgpLmxpbWl0KDEpYCBjbG9zdXJlIHByb3ZpZGVzIHRoZSBzdGFydGluZyB2ZXJ0ZXgKK29mIHN1cnZpdmluZyB0cmF2ZXJzZXJzLCB3aGljaCBjYW4gYmUgdXNlZCB0byBncm91cCB0aGUgY29tcG9uZW50cy4KKworPDQ+IFRoaXMgY2xhdXNlIGNvbGxlY3RzIHRoZSB1bmlxdWUgdmVydGljZXMgZnJvbSBhbGwgcGF0aHMgd2l0aCB0aGUgc2FtZSBzdGFydGluZyB2ZXJ0ZXgsIHRodXMgZnJvbSB0aGUgc2FtZQord2VhayBjb21wb25lbnQuCisKKzw1PiBUaGUgdmFsdWVzIG9mIHRoZSBncm91cGJ5IG1hcCBjb250YWluIHRoZSBsaXN0cyBvZiB2ZXJ0aWNlcyBtYWtpbmcgdXAgdGhlIHJlcXVlc3RlZCBjb21wb25lbnRzLgorCis9PT0gU21hbGwgZ3JhcGggc2NhbGFiaWxpdHkKKworVGhlIHNjYWxhYmlsaXR5IG9mIHRoZSBPTFRQIHRyYXZlcnNhbCBhbmQgdGhlIGBjb25uZWN0ZWRDb21wb25lbnQoKWAtc3RlcCBmb3IgaW4tbWVtb3J5IGdyYXBocyBpcyBzaG93biBpbiB0aGUgZmlndXJlcworYmVsb3cuCisKK1tbY2Mtc2NhbGUtc2l6ZV1dCisuUnVuIHRpbWVzIGZvciBmaW5kaW5nIGNvbm5lY3RlZCBjb21wb25lbnRzIGluIGEgcmFuZG9tbHkgZ2VuZXJhdGVkIGdyYXBoIHdpdGggMTAgY29tcG9uZW50cyBvZiBlcXVhbCBzaXplIGFuZCB3aXRoIGFuIGVkZ2UvdmVydGV4IHJhdGlvIG9mIDYKK2ltYWdlOjpjYy1zY2FsZS1zaXplLnBuZ1t3aWR0aD02MDAsIHNpZGU9Ym90dG9tXQorCitJbiBnZW5lcmFsLCB0aGUgYGNvbm5lY3RlZENvbXBvbmVudCgpYC1zdGVwIGlzIGFsbW9zdCBhIGZhY3RvciB0d28gZmFzdGVyIHRoYW4gdGhlIE9MVFAgdHJhdmVyc2FsLiBPbmx5LCBmb3IgdmVyeQorc21hbGwgZ3JhcGhzIHRoZSBvdmVyaGVhZCBvZiBydW5uaW5nIHRoZSBDb25uZWN0ZWRDb21wb25lbnRWZXJ0ZXhQcm9ncmFtIGlzIGxhcmdlciB0aGFuIHRoYXQgb2YgdGhlIE9MVFAgdHJhdmVyc2FsLgorVGhlIHZlcnRleCBwcm9ncmFtIHdvcmtzIGJ5IGhhdmluZyBpbnRlcmNvbm5lY3RlZCB2ZXJ0aWNlcyBleGNoYW5nZSBpZCdzIGFuZCBzdG9yZSB0aGUgbG93ZXN0IGlkIHVudGlsIG5vIHZlcnRleAorcmVjZWl2ZXMgYSBsb3dlciBpZC4gVGhpcyBhbGdvcml0aG0gaXMgY29tbW9ubHkgYXBwbGllZCBpbgorbGluazpodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CdWxrX3N5bmNocm9ub3VzX3BhcmFsbGVsW2J1bGsgc3luY2hyb25vdXMgcGFyYWxsZWxdIHN5c3RlbXMsIGUuZy4gaW4KK2xpbms6aHR0cHM6Ly9zcGFyay5hcGFjaGUub3JnL2dyYXBoeFtBcGFjaGUgU3BhcmsgR3JhcGhYXS4gT3ZlcmhlYWQgZm9yIHRoZSB2ZXJ0ZXggcHJvZ3JhbSBhcmlzZXMgYmVjYXVzZSBpdCBoYXMgdG8gcnVuCithcyBtYW55IGN5Y2xlcyBhcyB0aGUgbGFyZ2VzdCBsZW5ndGggb2YgdGhlIHNob3J0ZXN0IHBhdGhzIGJldHdlZW4gYW55IHR3byB2ZXJ0aWNlcyBpbiBhIGNvbXBvbmVudCBvZiB0aGUgZ3JhcGguIEluCitldmVyeSBjeWNsZSBlYWNoIHZlcnRleCBoYXMgdG8gYmUgY2hlY2tlZCBmb3IgYmVpbmcKKyJoYWx0ZWQiLiBPdmVyaGVhZCBvZiB0aGUgT0xUUCB0cmF2ZXJzYWwgY29uc2lzdHMgb2YgZWFjaCB0cmF2ZXJzZXIgaGF2aW5nIHRvIGNhcnJ5IGNvbXBsZXRlIHBhdGggaW5mb3JtYXRpb24uIEZvcgorcHVyZSBkZXB0aC1maXJzdC1zZWFyY2ggb3IgYnJlYWR0aC1maXJzdC1zZWFyY2ggaW1wbGVtZW50YXRpb25zLCBjb25uZWN0ZWQtY29tcG9uZW50IGFsZ290aXRobXMgc2hvdWxkIHNjYWxlCithcyBbLmJpZ10jI08jIyhWK0UpLiBGb3IgdGhlIHRyYXZlcnNhbHMgaW4gdGhlIGZpZ3VyZSBhYm92ZSB0aGlzIGlzIGFsbW9zdCB0aGUgY2FzZS4KKworW1tjYy1zY2FsZS1yYXRpb11dCisuUnVuIHRpbWVzIGZvciBmaW5kaW5nIGNvbm5lY3RlZCBjb21wb25lbnRzIGluIGEgcmFuZG9tbHkgZ2VuZXJhdGVkIGdyYXBoIHdpdGggMTAgY29tcG9uZW50cywgZWFjaCBjb25zaXN0aW5nIG9mIDY0MDAgdmVydGljZXMKK2ltYWdlOjpjYy1zY2FsZS1yYXRpby5wbmdbd2lkdGg9NjAwXQorCitUaGUgcmFuZG9tIGdyYXBocyB1c2VkIGZvciB0aGUgc2NhbGFiaWxpdHkgdGVzdHMgY2FuIGJlIG1vZHVsYXRlZCB3aXRoIHRoZSBlZGdlL3ZlcnRleCByYXRpby4gRm9yIHNtYWxsIHJhdGlvcyB0aGUKK2NvbXBvbmVudHMgZ2VuZXJhdGVkIGFyZSBtb3JlIGxpbnQtbGlrZSBhbmQgaGFyZGVyIHRvIHByb2Nlc3MgYnkgdGhlIGBjb25uZWN0ZWRDb21wb25lbnQoKWAtc3RlcC4gRm9yIGhpZ2ggcmF0aW9zCit0aGUgY29tcG9uZW50cyBhcmUgbW9yZSBtZXNoLWxpa2UgYW5kIHRoZSBDb25uZWN0ZWRDb21wb25lbnRWZXJ0ZXhQcm9ncmFtIG5lZWRzIGZldyBjeWNsZXMgdG8gcHJvY2VzcyB0aGUgZ3JhcGguIFRoZXNlCitjaGFyYWN0ZXJpc3RpY3Mgc2hvdyBjbGVhcmx5IGZyb20gdGhlIGdyYXBoLiBJbmRlZWQsIGZvciBhIGdpdmVuIG51bWJlciBvZiB2ZXJ0aWNlcywgdGhlIHJ1biB0aW1lIG9mIHRoZQorYGNvbm5lY3RlZENvbXBvbmVudCgpYC1zdGVwIGRvZXMgbm90IGRlcGVuZCBvbiB0aGUgbnVtYmVyIG9mIGVkZ2VzLCBidXQgcmF0aGVyIG9uIHRoZSBtYXhpbXVtIHNob3J0ZXN0IHBhdGggbGVuZ3RoIGluCit0aGUgZ3JhcGguCisKKz09PSBMYXJnZSBncmFwaHMKKworTGFyZ2UgZ3JhcGhzIGluIFRpbmtlclBvcCByZXF1aXJlIGRpc3RyaWJ1dGVkIHByb2Nlc3NpbmcgYnkgYFNwYXJrR3JhcGhDb21wdXRlcmAgdG8gZ2V0IHJlc3VsdHMgaW4gYSByZWFzb25hYmxlIHRpbWUgKE9MQVAKK2FwcHJvYWNoKS4gVGhpcyBtZWFucyB0aGF0IHRoZSBncmFwaCBtdXN0IGJlIGF2YWlsYWJsZSBhcyBgSGFkb29wR3JhcGhgICh0aGlyZCBwYXJ0eSBUaW5rZXJQb3AgaW1wbGVtZW50YXRpb25zIG9mdGVuCithbGxvdyB0byBtYWtlIGEgZ3JhcGggYXZhaWxhYmxlIGFzIGFuIGBIYWRvb3BHcmFwaGAgYnkgcHJvdmlkaW5nIGFuIEhhZG9vcCBgSW5wdXRGb3JtYXRgKS4gUnVubmluZyB0aGUKK2Bjb25uZWN0ZWRDb21wb25lbnQoKWAtc3RlcCBvbgorYW4gYEhhZG9vcEdyYXBoYCB3b3JrcyB0aGUgc2FtZSBhcyBmb3IgYSBzbWFsbCBncmFwaCwgcHJvdmlkZWQgdGhhdCBgU3BhcmtHcmFwaENvbXB1dGVyYCBpcyBzcGVjaWZpZWQgYXMgdGhlIGdyYXBoIGNvbXB1dGVyLAorZWl0aGVyIHdpdGggdGhlIGBncmVtbGluLmhhZG9vcC5kZWZhdWx0R3JhcGhDb21wdXRlcmAgcHJvcGVydHkgb3IgYXMgcGFydCBvZiB0aGUgYHdpdGhDb21wdXRlcigpYC1zdGVwLgorCitTY2FsYWJpbGl0eSBvZiB0aGUgdGhlIGBjb25uZWN0ZWRDb21wb25lbnQoKWAtc3RlcCB3aXRoIGBTcGFya0dyYXBoQ29tcHV0ZXJgIGlzIGhpZ2gsIGJ1dCBub3RlIHRoYXQ6CisKKyogVGhlIGdyYXBoIHNob3VsZCBmaXQgaW4gdGhlIG1lbW9yeSBvZiB0aGUgU3BhcmsgY2x1c3RlciB0byBhbGxvdyB0aGUgVmVydGV4UHJvZ3JhbSB0byBydW4gaXRzIGN5Y2xlcyB3aXRob3V0IHNwaWxsaW5nCitpbnRlcm1lZGlhdGUgcmVzdWx0cyB0byBkaXNrIGFuZCBsb29zaW5nIG1vc3Qgb2YgdGhlIGdhaW5zIGZyb20gdGhlIGRpc3RyaWJ1dGVkIHByb2Nlc3NpbmcuCisqIEFzIGRpc2N1c3NlZCBmb3Igc21hbGwgZ3JhcGhzLCB0aGUgQlNQIGFsZ29yaXRobSBkb2VzIG5vdCBwbGF5IHdlbGwgd2l0aCBncmFwaHMgaGF2aW5nIGEgbGFyZ2Ugc2hvcnRlc3QgcGF0aCBiZXR3ZWVuCithbnkgcGFpciBvZiB2ZXJ0aWNlcy4gT3ZlcmNvbWluZyB0aGlzIGxpbWl0YXRpb24gaXMgc3RpbGwgYQorbGluazpodHRwOi8vd3d3LnZsZGIub3JnL3B2bGRiL3ZvbDcvcDE4MjEteWFuLnBkZltzdWJqZWN0IG9mIGFjYWRlbWljIHJlc2VhcmNoXS4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL3NyYy9yZWNpcGVzL2R1cGxpY2F0ZS1lZGdlLmFzY2lpZG9jIGIvZG9jcy9zcmMvcmVjaXBlcy9kdXBsaWNhdGUtZWRnZS5hc2NpaWRvYwppbmRleCAyN2VhZTJiLi40ODFiN2FiIDEwMDY0NAotLS0gYS9kb2NzL3NyYy9yZWNpcGVzL2R1cGxpY2F0ZS1lZGdlLmFzY2lpZG9jCisrKyBiL2RvY3Mvc3JjL3JlY2lwZXMvZHVwbGljYXRlLWVkZ2UuYXNjaWlkb2MKQEAgLTM4LDcgKzM4LDcgQEAKICAgcHJvamVjdCgiYSIsImIiKS4gICAgICAgICAgICAgICAgICAgICAgICAgPDE+CiAgICAgYnkoKS5ieShpblYoKS5wYXRoKCkuYnkoKS5ieShsYWJlbCkpLgogICBncm91cCgpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Mj4KLSAgICBieShzZWxlY3QoImIiKSkuCisgICAgYnkoImIiKS4KICAgICBieShzZWxlY3QoImEiKS5mb2xkKCkpLgogICB1bmZvbGQoKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Mz4KICAgc2VsZWN0KHZhbHVlcykuICAgICAgICAgICAgICAgICAgICAgICAgICAgPDQ+CkBAIC0xMzMsNyArMTMzLDcgQEAKIC0tLS0KIGcuVigxKS5hcygiYSIpLlYoMykuYWRkRSgiY3JlYXRlZCIpLnByb3BlcnR5KCJ3ZWlnaHQiLDAuNGQpLmZyb20oImEiKS5pdGVyYXRlKCkKIGcuVigxKS5hcygiYSIpLlYoMykuYWRkRSgiY3JlYXRlZCIpLnByb3BlcnR5KCJ3ZWlnaHQiLDAuNWQpLmZyb20oImEiKS5pdGVyYXRlKCkKLWcuVigxKS5vdXRFKCJjcmVhdGVkIikudmFsdWVNYXAodHJ1ZSkKK2cuVigxKS5vdXRFKCJjcmVhdGVkIikuZWxlbWVudE1hcCgpCiAtLS0tCiAKIFRvIGlkZW50aWZ5IHRoZSBkdXBsaWNhdGUgd2l0aCB0aGlzIHJldmlzZWQgZGVmaW5pdGlvbiwgdGhlIHByZXZpb3VzIHRyYXZlcnNhbCBjYW4gYmUgbW9kaWZpZWQgdG86CkBAIC0xNDcsNSArMTQ3LDUgQEAKICAgd2hlcmUobmVxKCJlMSIpKS4KICAgd2hlcmUob3V0VigpLmFzKCJvdiIpKS5hcygiZTIiKS4KICAgd2hlcmUoImUxIiwgZXEoImUyIikpLmJ5KGxhYmVsKS4KLSAgd2hlcmUoImUxIiwgZXEoImUyIikpLmJ5KCJ3ZWlnaHQiKS52YWx1ZU1hcCh0cnVlKQorICB3aGVyZSgiZTEiLCBlcSgiZTIiKSkuYnkoIndlaWdodCIpLmVsZW1lbnRNYXAoKQogLS0tLQpkaWZmIC0tZ2l0IGEvZG9jcy9zcmMvcmVjaXBlcy9lZGdlLW1vdmUuYXNjaWlkb2MgYi9kb2NzL3NyYy9yZWNpcGVzL2VkZ2UtbW92ZS5hc2NpaWRvYwppbmRleCBmMzFiMDYwLi42ODBkZDEzIDEwMDY0NAotLS0gYS9kb2NzL3NyYy9yZWNpcGVzL2VkZ2UtbW92ZS5hc2NpaWRvYworKysgYi9kb2NzL3NyYy9yZWNpcGVzL2VkZ2UtbW92ZS5hc2NpaWRvYwpAQCAtMjgsNyArMjgsNyBAQAogLS0tLQogZy5WKCkuaGFzKCduYW1lJywnbWFya28nKS4KICAgb3V0RSgpLmluVigpLgotICBwYXRoKCkuYnkoJ25hbWUnKS5ieSh2YWx1ZU1hcCh0cnVlKSkKKyAgcGF0aCgpLmJ5KCduYW1lJykuYnkoZWxlbWVudE1hcCgpKQogLS0tLQogCiBUaGUgIm1hcmtvIiB2ZXJ0ZXggY29udGFpbnMgYSAia25vd3MiIGVkZ2UgdG8gdGhlICJ2YWRhcyIgdmVydGV4LiBUaGUgZm9sbG93aW5nIGNvZGUgc2hvd3MgaG93IHRvICJtb3ZlIiB0aGF0IGVkZ2UgdG8KQEAgLTQ3LDcgKzQ3LDcgQEAKICAgc2VsZWN0KCdlMScpLmRyb3AoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw0PgogZy5WKCkuaGFzKCduYW1lJywnbWFya28nKS4KICAgb3V0RSgpLmluVigpLgotICBwYXRoKCkuYnkoJ25hbWUnKS5ieSh2YWx1ZU1hcCh0cnVlKSkKKyAgcGF0aCgpLmJ5KCduYW1lJykuYnkoZWxlbWVudE1hcCgpKQogLS0tLQogCiA8MT4gRmluZCB0aGUgZWRnZSB0byAibW92ZSIgYW5kIGxhYmVsIHRoYXQgYXMgImUxIi4gSXQgd2lsbCBiZSBuZWNlc3NhcnkgdG8gcmVmZXJlbmNlIHRoaXMgbGF0ZXIgdG8gZ2V0IHRoZSBlZGdlCmRpZmYgLS1naXQgYS9kb2NzL3NyYy9yZWNpcGVzL2luZGV4LmFzY2lpZG9jIGIvZG9jcy9zcmMvcmVjaXBlcy9pbmRleC5hc2NpaWRvYwppbmRleCA0NmQ1OWIyLi4yZmZiY2VmIDEwMDY0NAotLS0gYS9kb2NzL3NyYy9yZWNpcGVzL2luZGV4LmFzY2lpZG9jCisrKyBiL2RvY3Mvc3JjL3JlY2lwZXMvaW5kZXguYXNjaWlkb2MKQEAgLTY4LDYgKzY4LDggQEAKIAogPSBBbnRpLVBhdHRlcm5zCiAKK2ltYWdlOmdyZW1saW4tYW50aS1ncmVtbGluLnBuZ1t3aWR0aD0yNTBdCisKIGluY2x1ZGU6OmFudGktcGF0dGVybnMuYXNjaWlkb2NbXQogCiA9IEltcGxlbWVudGF0aW9uIFJlY2lwZXMKZGlmZiAtLWdpdCBhL2RvY3Mvc3JjL3JlY2lwZXMvc2hvcnRlc3QtcGF0aC5hc2NpaWRvYyBiL2RvY3Mvc3JjL3JlY2lwZXMvc2hvcnRlc3QtcGF0aC5hc2NpaWRvYwppbmRleCAyZTMzMDU1Li4wNGM1NDJkIDEwMDY0NAotLS0gYS9kb2NzL3NyYy9yZWNpcGVzL3Nob3J0ZXN0LXBhdGguYXNjaWlkb2MKKysrIGIvZG9jcy9zcmMvcmVjaXBlcy9zaG9ydGVzdC1wYXRoLmFzY2lpZG9jCkBAIC00OSw2ICs0OSwxNiBAQAogPDI+IEl0IG1pZ2h0IGJlIGludGVyZXN0aW5nIHRvIGtub3cgdGhlIHBhdGggbGVuZ3RocyBmb3IgYWxsIHBhdGhzIGJldHdlZW4gdmVydGV4ICIxIiBhbmQgIjUiLgogPDM+IEFsdGVybmF0aXZlbHksIG9uZSBtaWdodCB3aXNoIHRvIGRvIGEgcGF0aCBsZW5ndGggZGlzdHJpYnV0aW9uIG92ZXIgYWxsIHRoZSBwYXRocy4KIAorVGhlIGZvbGxvd2luZyBjb2RlIGJsb2NrIGRlbW9uc3RyYXRlcyBob3cgdGhlIHNob3J0ZXN0IHBhdGggZnJvbSBgdlsxXWAgdG8gYHZbNV1gIGNhbiBiZSBxdWVyaWVkIGluIE9MQVAsIHVzaW5nIHRoZSBgc2hvcnRlc3RQYXRoKClgIHN0ZXAuCisKK1tncmVtbGluLWdyb292eSxleGlzdGluZ10KKy0tLS0KK2cgPSBnLndpdGhDb21wdXRlcigpCitnLlYoMSkuc2hvcnRlc3RQYXRoKCkuCisgIHdpdGgoU2hvcnRlc3RQYXRoLmVkZ2VzLCBEaXJlY3Rpb24uT1VUKS4KKyAgd2l0aChTaG9ydGVzdFBhdGgudGFyZ2V0LCBoYXNJZCg1KSkKKy0tLS0KKwogVGhlIHByZXZpb3VzIGV4YW1wbGUgZGVmaW5lcyB0aGUgbGVuZ3RoIG9mIHRoZSBwYXRoIGJ5IHRoZSBudW1iZXIgb2YgdmVydGljZXMgaW4gdGhlIHBhdGgsIGJ1dCB0aGUgInBhdGgiIG1pZ2h0IGFsc28KIGJlIG1lYXN1cmVkIGJ5IGRhdGEgd2l0aGluIHRoZSBncmFwaCBpdHNlbGYuIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSB1c2UgdGhlIHNhbWUgZ3JhcGggc3RydWN0dXJlIGFzIHRoZSBwcmV2aW91cyBleGFtcGxlLAogYnV0IGluY2x1ZGVzIGEgIndlaWdodCIgb24gdGhlIGVkZ2VzLCB0aGF0IHdpbGwgYmUgdXNlZCB0byBoZWxwIGRldGVybWluZSB0aGUgImNvc3QiIG9mIGEgcGFydGljdWxhciBwYXRoOgpAQCAtOTUsNiArMTA1LDE3IEBACiB0aGUgb3V0cHV0LiBOb3RlIHRoYXQgdGhlIHBhdGggd2l0aCB0aGUgbG93ZXN0ICJjb3N0IiBhY3R1YWxseSBoYXMgYSBsb25nZXIgcGF0aCBsZW5ndGggYXMgZGV0ZXJtaW5lZCBieSB0aGUgZ3JhcGgKIHN0cnVjdHVyZS4KIAorVGhlIG5leHQgY29kZSBibG9jayBkZW1vbnN0cmF0ZXMgaG93IHRoZSBgc2hvcnRlc3RQYXRoKClgIHN0ZXAgY2FuIGJlIHVzZWQgaW4gT0xBUCB0byBkZXRlcm1pbmUgdGhlIHNob3J0ZXN0IHdlaWdodGVkIHBhdGguCisKK1tncmVtbGluLWdyb292eSxleGlzdGluZ10KKy0tLS0KK2cgPSBnLndpdGhDb21wdXRlcigpCitnLlYoMSkuc2hvcnRlc3RQYXRoKCkuCisgIHdpdGgoU2hvcnRlc3RQYXRoLmVkZ2VzLCBEaXJlY3Rpb24uT1VUKS4KKyAgd2l0aChTaG9ydGVzdFBhdGguZGlzdGFuY2UsICd3ZWlnaHQnKS4KKyAgd2l0aChTaG9ydGVzdFBhdGgudGFyZ2V0LCBoYXNJZCg1KSkKKy0tLS0KKwogVGhlIGZvbGxvd2luZyBxdWVyeSBpbGx1c3RyYXRlcyBob3cgYHNlbGVjdCg8dHJhdmVyc2FsPilgIGNhbiBiZSB1c2VkIHRvIGZpbmQgYWxsIHNob3J0ZXN0IHdlaWdodGVkIHVuZGlyZWN0ZWQgcGF0aHMKIGluIHRoZSBtb2Rlcm4gdG95IGdyYXBoLgogCkBAIC0xMzYsMyArMTU3LDQ0IEBACiA8Nz4gT3JkZXIgdGhlIG91dHB1dCBieSB0aGUgc3RhcnQgdmVydGV4IGlkIGFuZCB0aGVuIHRoZSBlbmQgdmVydGV4IGlkIChmb3IgYmV0dGVyIHJlYWRhYmlsaXR5KS4KIDw4PiBEZWR1cGxpY2F0ZSB2ZXJ0ZXggcGFpcnMgKHRoZSBzaG9ydGVzdCBwYXRoIGZyb20gYHZbMV1gIHRvIGB2WzZdYCBpcyB0aGUgc2FtZSBhcyB0aGUgcGF0aCBmcm9tIGB2WzZdYCB0byBgdlsxXWApLgogCitBZ2FpbiwgdGhpcyBjYW4gYmUgdHJhbnNsYXRlZCBpbnRvIGFuIE9MQVAgcXVlcnkgdXNpbmcgdGhlIGBzaG9ydGVzdFBhdGgoKWAgc3RlcC4KKworW2dyZW1saW4tZ3Jvb3Z5LGV4aXN0aW5nXQorLS0tLQorcmVzdWx0ID0gZy53aXRoQ29tcHV0ZXIoKS5WKCkuCisgIHNob3J0ZXN0UGF0aCgpLgorICAgIHdpdGgoU2hvcnRlc3RQYXRoLmRpc3RhbmNlLCAnd2VpZ2h0JykuCisgICAgd2l0aChTaG9ydGVzdFBhdGguaW5jbHVkZUVkZ2VzLCB0cnVlKS4KKyAgZmlsdGVyKGNvdW50KGxvY2FsKS5pcyhndCgxKSkpLgorICBncm91cCgpLgorICAgIGJ5KHByb2plY3QoJ2Zyb20nLCd0bycpLgorICAgICAgICAgYnkobGltaXQobG9jYWwsIDEpKS4KKyAgICAgICAgIGJ5KHRhaWwobG9jYWwsIDEpKSkuCisgIHVuZm9sZCgpLgorICBvcmRlcigpLgorICAgIGJ5KHNlbGVjdChrZXlzKS5zZWxlY3QoJ2Zyb20nKS5pZCgpKS4KKyAgICBieShzZWxlY3Qoa2V5cykuc2VsZWN0KCd0bycpLmlkKCkpLnRvTGlzdCgpCistLS0tCisKK1RoZSBvYnZpb3VzIGRpZmZlcmVuY2UgaW4gdGhlIHJlc3VsdCBpcyB0aGUgYWJzZW5jZSBvZiBwcm9wZXJ0eSB2YWx1ZXMgaW4gdGhlIE9MQVAgcmVzdWx0LiBTaW5jZSBPTEFQIHRyYXZlcnNlcnMgYXJlIG5vdAorYWxsb3dlZCB0byBsZWF2ZSB0aGUgbG9jYWwgc3RhciBncmFwaCwgaXQncyBub3QgcG9zc2libGUgdG8gaGF2ZSB0aGUgZXhhY3Qgc2FtZSByZXN1bHQgaW4gYW4gT0xBUCBxdWVyeS4gSG93ZXZlciwgdGhlIGRldGVybWluZWQKK3Nob3J0ZXN0IHBhdGhzIGNhbiBiZSBwYXNzZWQgYmFjayBpbnRvIHRoZSBPTFRQIGBHcmFwaFRyYXZlcnNhbFNvdXJjZWAsIHdoaWNoIGNhbiB0aGVuIGJlIHVzZWQgdG8gcXVlcnkgdGhlIHZhbHVlcy4KKworW2dyZW1saW4tZ3Jvb3Z5LGV4aXN0aW5nXQorLS0tLQorZy53aXRoU2lkZUVmZmVjdCgndicsIFtdKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPDE+CisgIGluamVjdChyZXN1bHQudG9BcnJheSgpKS5hcygna3YnKS5zZWxlY3QodmFsdWVzKS4KKyAgdW5mb2xkKCkuCisgIG1hcCh1bmZvbGQoKS5hcygndl9vcl9lJykuCisgICAgICBjb2FsZXNjZShWKCkud2hlcmUoZXEoJ3Zfb3JfZScpKS5zdG9yZSgndicpLAorICAgICAgICAgICAgICAgc2VsZWN0KCd2JykudGFpbChsb2NhbCwgMSkuYm90aEUoKS53aGVyZShlcSgndl9vcl9lJykpKS4KKyAgICAgIHZhbHVlcygnbmFtZScsJ3dlaWdodCcpLgorICAgICAgZm9sZCgpKS4KKyAgZ3JvdXAoKS4KKyAgICBieShzZWxlY3QoJ2t2Jykuc2VsZWN0KGtleXMpKS51bmZvbGQoKS4KKyAgb3JkZXIoKS4KKyAgICBieShzZWxlY3Qoa2V5cykuc2VsZWN0KCdmcm9tJykuaWQoKSkuCisgICAgYnkoc2VsZWN0KGtleXMpLnNlbGVjdCgndG8nKS5pZCgpKS50b0xpc3QoKQorLS0tLQorCis8MT4gVGhlIHNpZGUtZWZmZWN0IGB2YCBpcyB1c2VkIHRvIGtlZXAgdHJhY2sgb2YgdGhlIGxhc3QgcHJvY2Vzc2VkIHZlcnRleCwgaGVuY2UgaXQgbmVlZHMgdG8gYmUgYW4gb3JkZXItcHJlc2VydmluZyBsaXN0LiBXaXRob3V0IHRoaXMgZXhwbGljaXQgZGVmaW5pdGlvbiBgdmAgd291bGQgYmVjb21lIGEgYEJ1bGtTZXRgIHdoaWNoIGRvZXNuJ3QgcHJlc2VydmUgdGhlIGluc2VydCBvcmRlci4KZGlmZiAtLWdpdCBhL2RvY3Mvc3JjL3JlY2lwZXMvdHJhdmVyc2FsLWluZHVjZWQtdmFsdWVzLmFzY2lpZG9jIGIvZG9jcy9zcmMvcmVjaXBlcy90cmF2ZXJzYWwtaW5kdWNlZC12YWx1ZXMuYXNjaWlkb2MKaW5kZXggODY4MDYwMC4uZjM1OTJiOCAxMDA2NDQKLS0tIGEvZG9jcy9zcmMvcmVjaXBlcy90cmF2ZXJzYWwtaW5kdWNlZC12YWx1ZXMuYXNjaWlkb2MKKysrIGIvZG9jcy9zcmMvcmVjaXBlcy90cmF2ZXJzYWwtaW5kdWNlZC12YWx1ZXMuYXNjaWlkb2MKQEAgLTExMSw3ICsxMTEsNyBAQAogLS0tLQogZy5WKCkuaGFzKCduYW1lJywgJ21hcmtvJykuYXMoJ21hcmtvJykuCiAgIG91dCgnY3JlYXRlZCcpLnByb3BlcnR5KCdjcmVhdG9yJywgc2VsZWN0KCdtYXJrbycpLmJ5KCduYW1lJykpCi1nLlYoKS5oYXMoJ25hbWUnLCAnbWFya28nKS5vdXQoJ2NyZWF0ZWQnKS52YWx1ZU1hcCgpCitnLlYoKS5oYXMoJ25hbWUnLCAnbWFya28nKS5vdXQoJ2NyZWF0ZWQnKS5lbGVtZW50TWFwKCkKIC0tLS0KIAogSW4gYSBtb3JlIGNvbXBsZXggZXhhbXBsZSBvZiBob3cgdGhpcyBtaWdodCB3b3JrLCBjb25zaWRlciBhIHNpdHVhdGlvbiB3aGVyZSB0aGUgZ29hbCBpcyB0byBwcm9wYWdhdGUgYSB2YWx1ZSBzdG9yZWQgb24KQEAgLTE0Miw3ICsxNDIsNyBAQAogICBWKGEpLnJlcGVhdChvdXRFKCdkcmFpbicpLnNhY2sobXVsdCkuYnkoJ2ZhY3RvcicpLgogICAgICAgICAgICAgICBpblYoKS5wcm9wZXJ0eSgnYW1vdW50Jywgc2FjaygpKSkuCiAgICAgICAgdW50aWwoX18ub3V0RSgnZHJhaW4nKS5jb3VudCgpLmlzKDApKS5pdGVyYXRlKCkKLWcuVigpLnZhbHVlTWFwKCkKK2cuVigpLmVsZW1lbnRNYXAoKQogLS0tLQogCiBUaGUgInNhY2sgdmFsdWUiIGdldHMgaW5pdGlhbGl6ZWQgdG8gdGhlIHZhbHVlIG9mIHRhbmsgImEiLiBUaGUgdHJhdmVyc2FsIGl0ZXJhdGl2ZWx5IHRyYXZlcnNlcyBvdXQgb24gdGhlICJkcmFpbiIKQEAgLTE1Nyw3ICsxNTcsNyBAQAogLS0tLQogZy53aXRoU2FjaygwKS5WKCkuaGFzKCJhZ2UiKS4KICAgc2Fjayhhc3NpZ24pLmJ5KCJhZ2UiKS5zYWNrKHN1bSkuYnkoY29uc3RhbnQoMTApKS4KLSAgcHJvcGVydHkoImFnZSIsIHNhY2soKSkudmFsdWVNYXAoKQorICBwcm9wZXJ0eSgiYWdlIiwgc2FjaygpKS5lbGVtZW50TWFwKCkKIC0tLS0KIAogSW4gdGhlIGFib3ZlIGNhc2UsIHRoZSBzYWNrIGlzIGluaXRpYWxpemVkIHRvIHplcm8gYW5kIGFzIGVhY2ggdmVydGV4IGlzIGl0ZXJhdGVkLCB0aGUgImFnZSIgaXMgYXNzaWduZWQgdG8gdGhlIHNhY2sKQEAgLTE3MSw1ICsxNzEsNSBAQAogLS0tLQogZy53aXRoU2FjaygwKS5WKCkuaGFzKCJhZ2UiKS4KICAgc2Fjayhhc3NpZ24pLmJ5KCJhZ2UiKS5zYWNrKHN1bSkuYnkoYm90aEUoKS52YWx1ZXMoIndlaWdodCIpLnN1bSgpKS4KLSAgcHJvcGVydHkoImFnZSIsIHNhY2soKSkudmFsdWVNYXAoKQorICBwcm9wZXJ0eSgiYWdlIiwgc2FjaygpKS5lbGVtZW50TWFwKCkKIC0tLS0KZGlmZiAtLWdpdCBhL2RvY3Mvc3JjL3JlZmVyZW5jZS9jb21waWxlcnMuYXNjaWlkb2MgYi9kb2NzL3NyYy9yZWZlcmVuY2UvY29tcGlsZXJzLmFzY2lpZG9jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViMzc1YjAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL3NyYy9yZWZlcmVuY2UvY29tcGlsZXJzLmFzY2lpZG9jCkBAIC0wLDAgKzEsNDM1IEBACisvLy8vCitMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lIG9yIG1vcmUKK2NvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUgZGlzdHJpYnV0ZWQgd2l0aAordGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLgorVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUgdG8gWW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAKKyh0aGUgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoCit0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCitVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCitkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCitTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCitsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vLy8KK1tbY29tcGlsZXJzXV0KKz0gR3JlbWxpbiBDb21waWxlcnMKKworVGhlcmUgYXJlIG1hbnkgbGFuZ3VhZ2VzIGJ1aWx0IHRvIHF1ZXJ5IGRhdGEuIFNRTCBpcyB0eXBpY2FsbHkgdXNlZCB0byBxdWVyeSByZWxhdGlvbmFsIGRhdGEuIFRoZXJlIGlzIFNQQVJRTCBmb3IgUkRGCitkYXRhLiBDeXBoZXIgaXMgdXNlZCB0byBkbyBwYXR0ZXJuIG1hdGNoaW5nIGluIGdyYXBoIGRhdGEuIFRoZSBsaXN0IGNvdWxkIGdvIG9uLiBDb21waWxlcnMgY29udmVydCBsYW5ndWFnZXMgbGlrZQordGhlc2UgdG8gR3JlbWxpbiBzbyB0aGF0IGl0IGJlY29tZXMgcG9zc2libGUgdG8gdXNlIHRoZW0gaW4gYW55IGNvbnRleHQgdGhhdCBHcmVtbGluIGlzIHVzZWQuIEluIG90aGVyIHdvcmRzLCBhCitHcmVtbGluIENvbXBpbGVyIGVuYWJsZXMgYSBwYXJ0aWN1bGFyIHF1ZXJ5IGxhbmd1YWdlIHRvIHdvcmsgb24gYW55IFRpbmtlclBvcC1lbmFibGVkIGdyYXBoIHN5c3RlbS4KKworW1tzcGFycWwtZ3JlbWxpbl1dCis9PSBTUEFSUUwtR3JlbWxpbgorCitpbWFnZTo6Z3JlbWxpbnRyb24ucG5nW3dpZHRoPTIyNV0KKworVGhlIFNQQVJRTC1HcmVtbGluIGNvbXBpbGVyLCB0cmFuc2Zvcm1zIGxpbms6aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU1BBUlFMW1NQQVJRTF0gcXVlcmllcyBpbnRvIEdyZW1saW4KK3RyYXZlcnNhbHMuIEl0IHVzZXMgdGhlIGh0dHBzOi8vamVuYS5hcGFjaGUub3JnL2luZGV4Lmh0bWxbQXBhY2hlIEplbmFdIFNQQVJRTCBwcm9jZXNzb3IKK2xpbms6aHR0cHM6Ly9qZW5hLmFwYWNoZS5vcmcvZG9jdW1lbnRhdGlvbi9xdWVyeS9pbmRleC5odG1sW0FSUV0sIHdoaWNoIHByb3ZpZGVzIGFjY2VzcyB0byBhIHN5bnRheCB0cmVlIG9mIGEKK1NQQVJRTCBxdWVyeS4KKworVGhlIGdvYWwgb2YgdGhpcyB3b3JrIGlzIHRvIGJyaWRnZSB0aGUgcXVlcnkgaW50ZXJvcGVyYWJpbGl0eSBnYXAgYmV0d2VlbiB0aGUgdHdvIGZhbW91cywgeWV0IGZhaXJseSBkaXNjb25uZWN0ZWQsCitncmFwaCBjb21tdW5pdGllczogU2VtYW50aWMgV2ViICh3aGljaCByZWxpZXMgb24gdGhlIFJERiBkYXRhIG1vZGVsKSBhbmQgR3JhcGggZGF0YWJhc2UgKHdoaWNoIHJlbGllcyBvbiBwcm9wZXJ0eSBncmFwaAorZGF0YSBtb2RlbCkuCisKK05PVEU6IFRoZSBmb3VuZGF0aW9uYWwgcmVzZWFyY2ggd29yayBvbiBTUEFSUUwtR3JlbWxpbiBjb21waWxlciAoYWthIEdyZW1saW5hdG9yKSBjYW4gYmUgZm91bmQgaW4gdGhlCitsaW5rOmh0dHBzOi8vYXJ4aXYub3JnL3BkZi8xODAxLjAyOTExLnBkZltHcmVtbGluYXRvciBwYXBlcl0uIFRoaXMgcGFwZXIgcHJlc2VudHMgdGhlIGdyYXBoIHF1ZXJ5IGxhbmd1YWdlIHNlbWFudGljcyBvZgorU1BBUlFMIGFuZCBHcmVtbGluLCBhbmQgYSBmb3JtYWwgbWFwcGluZyBiZXR3ZWVuIFNQQVJRTCBwYXR0ZXJuIG1hdGNoaW5nIGdyYXBoIHBhdHRlcm5zIGFuZCBHcmVtbGluIHRyYXZlcnNhbHMuCisKK1tzb3VyY2UseG1sXQorLS0tLQorPGRlcGVuZGVuY3k+CisgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLnRpbmtlcnBvcDwvZ3JvdXBJZD4KKyAgIDxhcnRpZmFjdElkPnNwYXJxbC1ncmVtbGluPC9hcnRpZmFjdElkPgorICAgPHZlcnNpb24+eC55Lno8L3ZlcnNpb24+Cis8L2RlcGVuZGVuY3k+CistLS0tCisKK1RoZSBTUEFSUUwtR3JlbWxpbiBjb21waWxlciBjb252ZXJ0cyBsaW5rOmh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NQQVJRTFtTUEFSUUxdIHF1ZXJpZXMgaW50byBHcmVtbGluIHNvIHRoYXQKK3RoZXkgY2FuIGJlIGV4ZWN1dGVkIGFjcm9zcyBhbnkgVGlua2VyUG9wLWVuYWJsZWQgZ3JhcGggc3lzdGVtLiBUbyB1c2UgdGhpcyBjb21waWxlciBpbiB0aGUgR3JlbWxpbiBDb25zb2xlLCBmaXJzdAoraW5zdGFsbCBhbmQgYWN0aXZhdGUgdGhlICJ0aW5rZXJwb3Auc3BhcnFsIiBwbHVnaW46CisKK1tzb3VyY2UsdGV4dF0KKy0tLS0KK2dyZW1saW4+IDppbnN0YWxsIG9yZy5hcGFjaGUudGlua2VycG9wIHNwYXJxbC1ncmVtbGluIHgueS56Cis9PT5Mb2FkZWQ6IFtvcmcuYXBhY2hlLnRpbmtlcnBvcCwgc3BhcnFsLWdyZW1saW4sIHgueS56XQorZ3JlbWxpbj4gOnBsdWdpbiB1c2UgdGlua2VycG9wLnNwYXJxbAorPT0+dGlua2VycG9wLnNwYXJxbCBhY3RpdmF0ZWQKKy0tLS0KKworSW5zdGFsbGluZyB0aGlzIHBsdWdpbiB3aWxsIGRvd25sb2FkIGFwcHJvcHJpYXRlIGRlcGVuZGVuY2llcyBhbmQgaW1wb3J0IGNlcnRhaW4gY2xhc3NlcyB0byB0aGUgY29uc29sZSBzbyB0aGF0IHRoZXkKK21heSBiZSB1c2VkIGFzIGZvbGxvd3M6CisKK1tncmVtbGluLWdyb292eSxtb2Rlcm5dCistLS0tCitncmFwaCA9IFRpbmtlckZhY3RvcnkuY3JlYXRlTW9kZXJuKCkKK2cgPSBncmFwaC50cmF2ZXJzYWwoU3BhcnFsVHJhdmVyc2FsU291cmNlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8MT4KK2cuc3BhcnFsKCIiIlNFTEVDVCA/bmFtZSA/YWdlCisgICAgICAgICAgICBXSEVSRSB7ID9wZXJzb24gdjpuYW1lID9uYW1lIC4gP3BlcnNvbiB2OmFnZSA/YWdlIH0KKyAgICAgICAgICAgIE9SREVSIEJZIEFTQyg/YWdlKSIiIikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Mj4KKy0tLS0KKworPDE+IERlZmluZSBgZ2AgYXMgYSBgVHJhdmVyc2FsU291cmNlYCB0aGF0IHVzZXMgdGhlIGBTcGFycWxUcmF2ZXJzYWxTb3VyY2VgIC0gYnkgZGVmYXVsdCwgdGhlIGB0cmF2ZXJzYWwoKWAgbWV0aG9kCit1c3VhbGx5IHJldHVybnMgYSBgR3JhcGhUcmF2ZXJzYWxTb3VyY2VgIHdoaWNoIGluY2x1ZGVzIHRoZSBzdGFuZGFyZCBHcmVtbGluIHN0YXJ0cyBzdGVwcyBsaWtlIGBWKClgIG9yIGBFKClgLiBJbiB0aGlzCitjYXNlLCB0aGUgYFNwYXJxbFRyYXZlcnNhbFNvdXJjZWAgZW5hYmxlcyBzdGFydHMgc3RlcHMgdGhhdCBhcmUgc3BlY2lmaWMgdG8gU1BBUlFMIG9ubHkgLSBpbiB0aGlzIGNhc2UgdGhlIGBzcGFycWwoKWAKK3N0YXJ0IHN0ZXAuCis8Mj4gRXhlY3V0ZSBhIFNQQVJRTCBxdWVyeSBhZ2FpbnN0IHRoZSBUaW5rZXJHcmFwaCBpbnN0YW5jZS4gVGhlIGBTcGFycWxUcmF2ZXJzYWxTb3VyY2VgIHVzZXMgYQorPDx0cmF2ZXJzYWxzdHJhdGVneSxUcmF2ZXJzYWxTdHJhdGVneT4+IHRvIHRyYW5zcGFyZW50bHkgY29udmVydHMgdGhhdCBTUEFSUUwgcXVlcnkgaW50byBhIHN0YW5kYXJkIEdyZW1saW4gdHJhdmVyc2FsCithbmQgdGhlbiB3aGVuIGZpbmFsbHkgaXRlcmF0ZWQsIGV4ZWN1dGVzIHRoYXQgYWdhaW5zdCB0aGUgVGlua2VyR3JhcGguCisKK1tbcHJlZml4ZXNdXQorPT09IFByZWZpeGVzCisKK1RoZSBTUEFSUUwtR3JlbWxpbiBjb21waWxlciBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIHByZWZpeGVzIHRvIHRyYXZlcnNlIHRoZSBncmFwaDoKKworW2NvbHM9IiwiLG9wdGlvbnM9ImhlYWRlciIsXQorfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorfFByZWZpeCB8UHVycG9zZQorfGB2OjxpZFx8bGFiZWxcfDxuYW1lPj5gIHxhY2Nlc3MgdG8gdmVydGV4IGlkLCBsYWJlbCBvciBwcm9wZXJ0eSB2YWx1ZQorfGBlOjxsYWJlbD5gIHxvdXQtZWRnZSB0cmF2ZXJzYWwKK3xgcDo8bmFtZT5gIHxwcm9wZXJ0eSB0cmF2ZXJzYWwKK3w9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworTm90ZSB0aGF0IGVsZW1lbnQgSURzIGFuZCBsYWJlbHMgYXJlIHRyZWF0ZWQgbGlrZSBub3JtYWwgcHJvcGVydGllcywgaGVuY2UgdGhleSBjYW4gYmUgYWNjZXNzZWQgdXNpbmcgdGhlIHNhbWUgcGF0dGVybjoKKworW2dyZW1saW4tZ3Jvb3Z5LGV4aXN0aW5nXQorLS0tLQorZy5zcGFycWwoIiIiU0VMRUNUID9uYW1lID9pZCA/bGFiZWwgCisJV0hFUkUgeyAKKwk/ZWxlbWVudCB2Om5hbWUgP25hbWUgLiAKKwk/ZWxlbWVudCB2OmlkID9pZCAuIAorCT9lbGVtZW50IHY6bGFiZWwgP2xhYmVsIC59IiIiKQorLS0tLQorCitbW3N1cHBvcnRlZC1xdWVyaWVzXV0KKz09PSBTdXBwb3J0ZWQgUXVlcmllcworCitUaGUgU1BBUlFMLUdyZW1saW4gY29tcGlsZXIgY3VycmVudGx5IHN1cHBvcnRzIHRyYW5zbGF0aW9uIG9mIHRoZSBTUEFSUUwgMS4wIHNwZWNpZmljYXRpb24sIGVzcGVjaWFsbHkgYFNFTEVDVGAKK3F1ZXJpZXMsIHRob3VnaCB0aGVyZSBpcyBhbiBvbi1nb2luZyBlZmZvcnQgdG8gY292ZXIgdGhlIGVudGlyZSBTUEFSUUwgMS4xIHF1ZXJ5IGZlYXR1cmUgc3BlY3RydW0uIFRoZSBzdXBwb3J0ZWQKK1NQQVJRTCBxdWVyeSB0eXBlcyBhcmU6CisKKyogVW5pb24gCisqIE9wdGlvbmFsIAorKiBPcmRlci1CeSAKKyogR3JvdXAtQnkgCisqIFNUQVItc2hhcGVkIG9yIF9uZWlnaGJvdXJob29kIHF1ZXJpZXNfIAorKiBRdWVyeSBtb2RpZmllcnMsIHN1Y2ggYXM6IAorKiogRmlsdGVyIHdpdGggX3Jlc3RyaWN0aW9uc18gCisqKiBDb3VudCAKKyoqIExJTUlUIAorKiogT0ZGU0VUCisKK1tbbGltaXRhdGlvbnNdXQorPT09IExpbWl0YXRpb25zCisKK1RoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIFNQQVJRTC1HcmVtbGluIGNvbXBpbGVyIChpLmUuIFNQQVJRTC1HcmVtbGluKSBkb2VzIG5vdCBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgY2FzZXM6CisKKyogU1BBUlFMIHF1ZXJpZXMgd2l0aCB2YXJpYWJsZXMgaW4gdGhlIHByZWRpY2F0ZSBwb3NpdGlvbiBhcmUgbm90IGN1cnJlbnRseSBjb3ZlcmVkLCB3aXRoIGFuIGV4Y2VwdGlvbiBvZiB0aGUgZm9sbG93aW5nCitjYXNlOgorCitbc291cmNlLGdyb292eV0KKy0tLS0KK2cuc3BhcnFsKCIiIlNFTEVDVCAqIFdIRVJFIHsgP3ggP3kgP3ogLiB9IiIiKQorLS0tLQorCisqIEEgU1BBUlFMIFVuaW9uIHF1ZXJ5IHdpdGggdW4tYmFsYW5jZWQgcGF0dGVybnMsIGkuZS4gYSBncmVtbGluIHVuaW9uIHRyYXZlcnNhbCBjYW4gb25seSBiZSBnZW5lcmF0ZWQgaWYgdGhlIGlucHV0CitTUEFSUUwgcXVlcnkgaGFzIHRoZSBzYW1lIG51bWJlciBvZiBwYXR0ZXJucyBvbiBib3RoIHRoZSBzaWRlIG9mIHRoZSB1bmlvbiBvcGVyYXRvci4gRm9yIGluc3RhbmNlLCB0aGUgZm9sbG93aW5nCitTUEFSUUwgcXVlcnkgY2Fubm90IGJlIG1hcHBlZCwgc2luY2UgYSB1bmlvbiBpcyBleGVjdXRlZCBiZXR3ZWVuIGRpZmZlcmVudCBudW1iZXIgb2YgZ3JhcGggcGF0dGVybnMgKHR3byBwYXR0ZXJucworYHVuaW9uYCAxIHBhdHRlcm4pLgorCitbc291cmNlLGdyb292eV0KKy0tLS0KK2cuc3BhcnFsKCIiIlNFTEVDVCAqCisgICAgICAgICAgICBXSEVSRSB7CisgICAgICAgICAgICAgICAgez9wZXJzb24gZTpjcmVhdGVkID9zb2Z0d2FyZSAuCisgICAgICAgICAgICAgICAgP3BlcnNvbiB2Om5hbWUgImpvc2giIC59CisgICAgICAgICAgICAgICAgVU5JT04KKyAgICAgICAgICAgICAgICB7P3NvZnR3YXJlIHY6bGFuZyAiamF2YSIgLn0gfSIiIikKKy0tLS0KKworKiBBIG5vbi1Hcm91cCBrZXkgdmFyaWFibGUgY2Fubm90IGJlIHByb2plY3RlZCBpbiBhIFNQQVJRTCBxdWVyeS4gVGhpcyBpcyBhIFNQQVJRTCBsYW5ndWFnZSBsaW1pdGF0aW9uIHJhdGhlciB0aGFuCit0aGF0IG9mIEdyZW1saW4vVGlua2VyUG9wLiBBcGFjaGUgSmVuYSB0aHJvd3MgdGhlIGV4Y2VwdGlvbiAiTm9uLWdyb3VwIGtleSB2YXJpYWJsZSBpbiBTRUxFQ1QiIGlmIHRoaXMgb2NjdXJzLgorRm9yIGluc3RhbmNlLCBpbiBhIFNQQVJRTCBxdWVyeSB3aXRoIEdST1VQLUJZIGNsYXVzZSwgb25seSB0aGUgdmFyaWFibGUgb24gd2hpY2ggdGhlIGdyb3VwaW5nIGlzIGRlY2xhcmVkLCBjYW4gYmUKK3Byb2plY3RlZC4gVGhlIGZvbGxvd2luZyBxdWVyeSBpcyB2YWxpZDoKKworW3NvdXJjZSxncm9vdnldCistLS0tCitnLnNwYXJxbCgiIiJTRUxFQ1QgP2FnZQorICAgICAgICAgICAgV0hFUkUgeworICAgICAgICAgICAgICAgID9wZXJzb24gdjpsYWJlbCAicGVyc29uIiAuCisgICAgICAgICAgICAgICAgP3BlcnNvbiB2OmFnZSA/YWdlIC4KKyAgICAgICAgICAgICAgICA/cGVyc29uIHY6bmFtZSA/bmFtZSAufSBHUk9VUCBCWSAoP2FnZSkiIiIpCistLS0tCisKK1doZXJlYXMsIHRoZSBmb2xsb3dpbmcgU1BBUlFMIHF1ZXJ5IHdpbGwgYmUgaW52YWxpZDoKKworW3NvdXJjZSxncm9vdnldCistLS0tCitnLnNwYXJxbCgiIiJTRUxFQ1QgP3BlcnNvbgorICAgICAgICAgICAgV0hFUkUgeworICAgICAgICAgICAgICA/cGVyc29uIHY6bGFiZWwgInBlcnNvbiIgLgorICAgICAgICAgICAgICA/cGVyc29uIHY6YWdlID9hZ2UgLgorICAgICAgICAgICAgICA/cGVyc29uIHY6bmFtZSA/bmFtZSAufSBHUk9VUCBCWSAoP2FnZSkiIiIpCistLS0tCisKKyogSW4gYSBTUEFSUUwgcXVlcnkgd2l0aCBhbiBPUkRFUi1CWSBjbGF1c2UsIHRoZSBvcmRlcmluZyBvY2N1cnMgd2l0aCByZXNwZWN0IHRvIHRoZSBmaXJzdCBwcm9qZWN0ZWQgdmFyaWFibGUgaW4gdGhlCitxdWVyeS4gSXQgaXMgcG9zc2libGUgdG8gY2hvb3NlIGFueSBudW1iZXIgb2YgdmFyaWFibGUgdG8gYmUgcHJvamVjdGVkLCBob3dldmVyLCB0aGUgZmlyc3QgdmFyaWFibGUgaW4gdGhlIHNlbGVjdGlvbgord2lsbCBiZSB0aGUgb3JkZXJpbmcgZGVjaWRlci4gRm9yIGluc3RhbmNlLCBpbiB0aGUgcXVlcnk6CisKK1tzb3VyY2UsZ3Jvb3Z5XQorLS0tLQorZy5zcGFycWwoIiIiU0VMRUNUID9uYW1lID9hZ2UKKyAgICAgICAgICAgIFdIRVJFIHsKKyAgICAgICAgICAgICAgICA/cGVyc29uIHY6bGFiZWwgInBlcnNvbiIgLgorICAgICAgICAgICAgICAgID9wZXJzb24gdjphZ2UgP2FnZSAuCisgICAgICAgICAgICAgICAgP3BlcnNvbiB2Om5hbWUgP25hbWUgLiB9IE9SREVSIEJZICg/YWdlKSIiIikKKy0tLS0KKwordGhlIHJlc3VsdCBzZXQgd2lsbCBiZSBvcmRlcmVkIGFjY29yZGluZyB0byB0aGUgYD9uYW1lYCB2YXJpYWJsZSAoaW4gYXNjZW5kaW5nIG9yZGVyIGJ5IGRlZmF1bHQpIGRlc3BpdGUgaGF2aW5nIHBhc3NlZAorYD9hZ2VgIGluIHRoZSBvcmRlciBieS4gV2hlcmVhcywgZm9yIHRoZSBmb2xsb3dpbmcgcXVlcnk6CisKK1tzb3VyY2UsZ3Jvb3Z5XQorLS0tLQorZy5zcGFycWwoIiIiU0VMRUNUID9hZ2UgP25hbWUKKyAgICAgICAgICAgIFdIRVJFIHsKKyAgICAgICAgICAgICAgICA/cGVyc29uIHY6bGFiZWwgInBlcnNvbiIgLgorICAgICAgICAgICAgICAgID9wZXJzb24gdjphZ2UgP2FnZSAuCisgICAgICAgICAgICAgICAgP3BlcnNvbiB2Om5hbWUgP25hbWUgLiB9IE9SREVSIEJZICg/YWdlKSIiIikKKy0tLS0KKwordGhlIHJlc3VsdCBzZXQgd2lsbCBiZSBvcmRlcmVkIGFjY29yZGluZyB0byB0aGUgYD9hZ2VgIChhcyBpdCBpcyB0aGUgZmlyc3QgcHJvamVjdGVkIHZhcmlhYmxlKS4gRmluYWxseSwgZm9yIHRoZQorc2VsZWN0IGFsbCBjYXNlIChgU0VMRUNUICpgKToKKworW3NvdXJjZSxncm9vdnldCistLS0tCitnLnNwYXJxbCgiIiJTRUxFQ1QgKgorICAgICAgICAgICAgV0hFUkUgeyA/cGVyc29uIHY6bGFiZWwgInBlcnNvbiIgLiA/cGVyc29uIHY6YWdlID9hZ2UgLiA/cGVyc29uIHY6bmFtZSA/bmFtZSAuIH0gT1JERVIgQlkgKD9hZ2UpIiIiKQorLS0tLQorCit0aGUgdGhlIHZhcmlhYmxlIGVuY291bnRlcmVkIGZpcnN0IHdpbGwgYmUgdGhlIG9yZGVyaW5nIGRlY2lkZXIsIGkuZS4gc2luY2Ugd2UgaGF2ZSBgP3BlcnNvbmAgZW5jb3VudGVyZWQgZmlyc3QsCit0aGUgcmVzdWx0IHNldCB3aWxsIGJlIG9yZGVyZWQgYWNjb3JkaW5nIHRvIHRoZSBgP3BlcnNvbmAgdmFyaWFibGUgKHdoaWNoIGFyZSB2ZXJ0ZXggaWQpLgorCisqIEluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCBgT1BUSU9OQUxgIGNsYXVzZSBkb2Vzbid0IHdvcmsgdW5kZXIgbmVzdGluZyB3aXRoIGBVTklPTmAgY2xhdXNlIChpLmUuIG11bHRpcGxlIG9wdGlvbmFsCitjbGF1c2VzIHdpdGggaW4gYSB1bmlvbiBjbGF1c2UpIGFuZCBgT1JERVItQnlgIGNsYXVzZSAoaS5lLiBkZWNsYXJpbmcgb3JkZXJpbmcgb3ZlciB0cmlwbGUgcGF0dGVybnMgd2l0aGluIG9wdGlvbmFsCitjbGF1c2VzKS4gRXZlcnl0aGluZyBlbHNlIHdpdGggU1BBUlFMIGBPUFRJT05BTGAgd29ya3MganVzdCBmaW5lLgorCitbW2V4YW1wbGVzXV0KKz09PSBFeGFtcGxlcworCitUaGUgZm9sbG93aW5nIHNlY3Rpb24gcHJlc2VudHMgZXhhbXBsZXMgb2YgU1BBUlFMIHF1ZXJpZXMgdGhhdCBhcmUgY3VycmVudGx5IGNvdmVyZWQgYnkgdGhlIFNQQVJRTC1HcmVtbGluIGNvbXBpbGVyLgorCis9PT09IFNlbGVjdCBBbGwKKworU2VsZWN0IGFsbCB2ZXJ0aWNlcyBpbiB0aGUgZ3JhcGguCisKK1tncmVtbGluLWdyb292eSxleGlzdGluZ10KKy0tLS0KK2cuc3BhcnFsKCIiIlNFTEVDVCAqIFdIRVJFIHsgfSIiIikKKy0tLS0KKworPT09PSBNYXRjaCBDb25zdGFudCBWYWx1ZXMKKworU2VsZWN0IGFsbCB2ZXJ0aWNlcyB3aXRoIHRoZSBsYWJlbCBgcGVyc29uYC4KKworW2dyZW1saW4tZ3Jvb3Z5LGV4aXN0aW5nXQorLS0tLQorZy5zcGFycWwoIiIiU0VMRUNUICogV0hFUkUgeyAgP3BlcnNvbiB2OmxhYmVsICJwZXJzb24iIC59IiIiKQorLS0tLQorCis9PT09IFNlbGVjdCBTcGVjaWZpYyBFbGVtZW50cworCitTZWxlY3QgdGhlIHZhbHVlcyBvZiB0aGUgcHJvcGVydGllcyBgbmFtZWAgYW5kIGBhZ2VgIGZvciBlYWNoIGBwZXJzb25gIHZlcnRleC4KKworW2dyZW1saW4tZ3Jvb3Z5LGV4aXN0aW5nXQorLS0tLQorZy5zcGFycWwoIiIiU0VMRUNUID9uYW1lID9hZ2UKK1dIRVJFIHsKKyAgP3BlcnNvbiB2OmxhYmVsICJwZXJzb24iIC4KKyAgP3BlcnNvbiB2Om5hbWUgP25hbWUgLgorICA/cGVyc29uIHY6YWdlID9hZ2UgLiB9IiIiKQorLS0tLQorCis9PT09IFBhdHRlcm4gTWF0Y2hpbmcKKworU2VsZWN0IG9ubHkgdGhvc2UgcGVyc29ucyB3aG8gY3JlYXRlZCBhIHByb2plY3QuCisKK1tncmVtbGluLWdyb292eSxleGlzdGluZ10KKy0tLS0KK2cuc3BhcnFsKCIiIlNFTEVDVCA/bmFtZSA/YWdlCitXSEVSRSB7CisgID9wZXJzb24gdjpsYWJlbCAicGVyc29uIiAuCisgID9wZXJzb24gdjpuYW1lID9uYW1lIC4KKyAgP3BlcnNvbiB2OmFnZSA/YWdlIC4KKyAgP3BlcnNvbiBlOmNyZWF0ZWQgP3Byb2plY3QgLiB9IiIiKQorLS0tLQorCis9PT09IEZpbHRlcmluZworCitTZWxlY3Qgb25seSB0aG9zZSBwZXJzb25zIHdobyBhcmUgb2xkZXIgdGhhbiAzMC4KKworW2dyZW1saW4tZ3Jvb3Z5LGV4aXN0aW5nXQorLS0tLQorZy5zcGFycWwoIiIiU0VMRUNUID9uYW1lID9hZ2UKK1dIRVJFIHsKKyAgP3BlcnNvbiB2OmxhYmVsICJwZXJzb24iIC4KKyAgP3BlcnNvbiB2Om5hbWUgP25hbWUgLgorICA/cGVyc29uIHY6YWdlID9hZ2UgLgorICAgIEZJTFRFUiAoP2FnZSA+IDMwKSB9IiIiKQorLS0tLQorCis9PT09IERlZHVwbGljYXRpb24KKworU2VsZWN0IHRoZSBkaXN0aW5jdCBuYW1lcyBvZiB0aGUgY3JlYXRlZCBwcm9qZWN0cy4KKworW2dyZW1saW4tZ3Jvb3Z5LGV4aXN0aW5nXQorLS0tLQorZy5zcGFycWwoIiIiU0VMRUNUIERJU1RJTkNUID9uYW1lCitXSEVSRSB7CisgID9wZXJzb24gdjpsYWJlbCAicGVyc29uIiAuCisgID9wZXJzb24gdjphZ2UgP2FnZSAuCisgID9wZXJzb24gZTpjcmVhdGVkID9wcm9qZWN0IC4KKyAgP3Byb2plY3QgdjpuYW1lID9uYW1lIC4KKyAgICBGSUxURVIgKD9hZ2UgPiAzMCl9IiIiKQorLS0tLQorCis9PT09IE11bHRpcGxlIEZpbHRlcnMKKworU2VsZWN0IHRoZSBkaXN0aW5jdCBuYW1lcyBvZiBhbGwgSmF2YSBwcm9qZWN0cy4KKworW2dyZW1saW4tZ3Jvb3Z5LGV4aXN0aW5nXQorLS0tLQorZy5zcGFycWwoIiIiU0VMRUNUIERJU1RJTkNUID9uYW1lCitXSEVSRSB7CisgID9wZXJzb24gdjpsYWJlbCAicGVyc29uIiAuCisgID9wZXJzb24gdjphZ2UgP2FnZSAuCisgID9wZXJzb24gZTpjcmVhdGVkID9wcm9qZWN0IC4KKyAgP3Byb2plY3QgdjpuYW1lID9uYW1lIC4KKyAgP3Byb2plY3QgdjpsYW5nID9sYW5nIC4KKyAgICBGSUxURVIgKD9hZ2UgPiAzMCAmJiA/bGFuZyA9ICJqYXZhIikgfSIiIikKKy0tLS0KKworPT09PSBVbmlvbgorCitTZWxlY3QgYWxsIHBlcnNvbnMgd2hvIGhhdmUgZGV2ZWxvcGVkIGEgc29mdHdhcmUgaW4gamF2YSB1c2luZyB1bmlvbi4KKworW2dyZW1saW4tZ3Jvb3Z5LGV4aXN0aW5nXQorLS0tLQorZy5zcGFycWwoIiIiU0VMRUNUICogCitXSEVSRSB7CisgIHs/cGVyc29uIGU6Y3JlYXRlZCA/c29mdHdhcmUgLn0KKyAgVU5JT04KKyAgez9zb2Z0d2FyZSB2OmxhbmcgImphdmEiIC59IH0iIiIpCistLS0tCisKKz09PT0gT3B0aW9uYWwKKworUmV0dXJuIHRoZSBuYW1lcyBvZiB0aGUgcGVyc29ucyB3aG8gaGF2ZSBjcmVhdGVkIGEgc29mdHdhcmUgaW4gamF2YSBhbmQgb3B0aW9uYWxseSBweXRob24uCisKK1tzb3VyY2UsZ3Jvb3Z5XQorLS0tLQorZy5zcGFycWwoIiIiU0VMRUNUID9wZXJzb24gCitXSEVSRSB7CisgID9wZXJzb24gdjpsYWJlbCAicGVyc29uIiAuCisgID9wZXJzb24gZTpjcmVhdGVkID9zb2Z0d2FyZSAuCisgID9zb2Z0d2FyZSB2OmxhbmcgImphdmEiIC4KKyAgT1BUSU9OQUwgez9zb2Z0d2FyZSB2OmxhbmcgInB5dGhvbiIgLiB9fSIiIikKKy0tLS0KKworPT09PSBPcmRlciBCeQorCitTZWxlY3QgYWxsIHZlcnRpY2VzIHdpdGggdGhlIGxhYmVsIGBwZXJzb25gIGFuZCBvcmRlciB0aGVtIGJ5IHRoZWlyIGFnZS4KKworW2dyZW1saW4tZ3Jvb3Z5LGV4aXN0aW5nXQorLS0tLQorZy5zcGFycWwoIiIiU0VMRUNUID9hZ2UgP25hbWUKK1dIRVJFIHsKKyAgP3BlcnNvbiB2OmxhYmVsICJwZXJzb24iIC4KKyAgP3BlcnNvbiB2OmFnZSA/YWdlIC4KKyAgP3BlcnNvbiB2Om5hbWUgP25hbWUgLgorfSBPUkRFUiBCWSAoP2FnZSkiIiIpCistLS0tCisKKz09PT0gR3JvdXAgQnkKKworU2VsZWN0IGFsbCB2ZXJ0aWNlcyB3aXRoIHRoZSBsYWJlbCBgcGVyc29uYCBhbmQgZ3JvdXAgdGhlbSBieSB0aGVpciBhZ2UuCisKK1tncmVtbGluLWdyb292eSxleGlzdGluZ10KKy0tLS0KK2cuc3BhcnFsKCIiIlNFTEVDVCA/YWdlIAorV0hFUkUgeworICA/cGVyc29uIHY6bGFiZWwgInBlcnNvbiIgLgorICA/cGVyc29uIHY6YWdlID9hZ2UgLgorfSBHUk9VUCBCWSAoP2FnZSkiIiIpCistLS0tCisKKz09PT0gTWl4ZWQvY29tcGxleC9hZ2dyZWdhdGlvbi1iYXNlZCBxdWVyaWVzCisKK0NvdW50IHRoZSBudW1iZXIgb2YgcHJvamVjdHMgd2hpY2ggaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgcGVyc29ucyB1bmRlciB0aGUgYWdlIG9mIDMwIGFuZCBncm91cCB0aGVtIGJ5IGFnZS4gUmV0dXJuIG9ubHkKK3RoZSB0b3AgdHdvLgorCitbc291cmNlLGdyb292eV0KKy0tLS0KK2cuc3BhcnFsKCIiIlNFTEVDVCAoQ09VTlQoP3Byb2plY3QpIGFzID9wKQorV0hFUkUgeworICA/cGVyc29uIHY6bGFiZWwgInBlcnNvbiIgLgorICA/cGVyc29uIHY6YWdlID9hZ2UgLiBGSUxURVIgKD9hZ2UgPCAzMCkKKyAgP3BlcnNvbiBlOmNyZWF0ZWQgP3Byb2plY3QgLgorfSBHUk9VUCBCWSAoP2FnZSkgTElNSVQgMiIiIikKKy0tLS0KKworPT09PSBNZXRhLVByb3BlcnR5IEFjY2VzcworCitBY2Nlc3NpbmcgdGhlIE1ldGEtUHJvcGVydHkgb2YgYSBncmFwaCBlbGVtZW50LiBNZXRhLVByb3BlcnR5IGNhbiBiZSBwZXJjZWl2ZWQgYXMgdGhlIHJlaWZpZWQgc3RhdGVtZW50cyBpbiBhbiBSREYKK2dyYXBoLgorCitbZ3JlbWxpbi1ncm9vdnksdGhlQ3Jld10KKy0tLS0KK2cgPSBncmFwaC50cmF2ZXJzYWwoU3BhcnFsVHJhdmVyc2FsU291cmNlKQorZy5zcGFycWwoIiIiU0VMRUNUID9uYW1lID9zdGFydFRpbWUKK1dIRVJFIHsKKyAgP3BlcnNvbiB2Om5hbWUgImRhbmllbCIgLgorICA/cGVyc29uIHA6bG9jYXRpb24gP2xvY2F0aW9uIC4KKyAgP2xvY2F0aW9uIHY6dmFsdWUgP25hbWUgLgorICA/bG9jYXRpb24gdjpzdGFydFRpbWUgP3N0YXJ0VGltZSB9IiIiKQorLS0tLQorCis9PT09IFNUQVItc2hhcGVkIHF1ZXJpZXMKKworU1RBUi1zaGFwZWQgcXVlcmllcyBhcmUgdGhlIHF1ZXJpZXMgdGhhdCBmb3JtL2ZvbGxvdyBhIHN0YXItc2hhcGVkIGV4ZWN1dGlvbiBwbGFuLiBUaGVzZSBpbiB0ZXJtcyBvZiBncmFwaCB0cmF2ZXJzYWxzCitjYW4gYmUgcGVyY2VpdmVkIGFzIHBhdGggcXVlcmllcyBvciBuZWlnaGJvcmhvb2QgcXVlcmllcy4gRm9yIGluc3RhbmNlLCBnZXR0aW5nIGFsbCB0aGUgaW5mb3JtYXRpb24gYWJvdXQgYSBzcGVjaWZpYworYHBlcnNvbmAgb3IgYHNvZnR3YXJlYC4KKworW2dyZW1saW4tZ3Jvb3Z5LGV4aXN0aW5nXQorLS0tLQorZy5zcGFycWwoIiIiU0VMRUNUID9hZ2UgP3NvZnR3YXJlID9sYW5nID9uYW1lCitXSEVSRSB7CisgID9wZXJzb24gdjpuYW1lICJqb3NoIiAuCisgID9wZXJzb24gdjphZ2UgP2FnZSAuCisgID9wZXJzb24gZTpjcmVhdGVkID9zb2Z0d2FyZSAuCisgID9zb2Z0d2FyZSB2OmxhbmcgP2xhbmcgLgorICA/c29mdHdhcmUgdjpuYW1lID9uYW1lIC4gfSIiIikKKy0tLS0KKworW1tzcGFycWwtd2l0aC1ncmVtbGluXV0KKz09PSBXaXRoIEdyZW1saW4KKworVGhlIGBzcGFycWwoKWAtc3RlcCB0YWtlcyBhIFNQQVJRTCBxdWVyeSBhbmQgcmV0dXJucyBhIHJlc3VsdC4gVGhhdCByZXN1bHQgY2FuIGJlIGZ1cnRoZXIgcHJvY2Vzc2VkIGJ5IHN0YW5kYXJkIEdyZW1saW4KK3N0ZXBzIGFzIHNob3duIGJlbG93OgorCitbZ3JlbWxpbi1ncm9vdnksbW9kZXJuXQorLS0tLQorZyA9IGdyYXBoLnRyYXZlcnNhbChTcGFycWxUcmF2ZXJzYWxTb3VyY2UpCitnLnNwYXJxbCgiU0VMRUNUID9uYW1lID9hZ2UgV0hFUkUgeyA/cGVyc29uIHY6bmFtZSA/bmFtZSAuID9wZXJzb24gdjphZ2UgP2FnZSB9IikKK2cuc3BhcnFsKCJTRUxFQ1QgP25hbWUgP2FnZSBXSEVSRSB7ID9wZXJzb24gdjpuYW1lID9uYW1lIC4gP3BlcnNvbiB2OmFnZSA/YWdlIH0iKS5zZWxlY3QoIm5hbWUiKQorZy5zcGFycWwoIlNFTEVDVCAqIFdIRVJFIHsgfSIpLm91dCgia25vd3MiKS52YWx1ZXMoIm5hbWUiKQorZy53aXRoU2FjaygxLjBmKS5zcGFycWwoIlNFTEVDVCAqIFdIRVJFIHsgfSIpLgorICByZXBlYXQob3V0RSgpLnNhY2sobXVsdCkuYnkoIndlaWdodCIpLmluVigpKS4KKyAgICB0aW1lcygyKS4KKyAgc2FjaygpCistLS0tCisKK01peGluZyBTUEFSUUwgd2l0aCBHcmVtbGluIHN0ZXBzIGludHJvZHVjZXMgc29tZSBpbnRlcmVzdGluZyBwb3NzaWJpbGl0aWVzIGZvciBjb21wbGV4IHRyYXZlcnNhbHMuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9zcmMvcmVmZXJlbmNlL2dyZW1saW4tYXBwbGljYXRpb25zLmFzY2lpZG9jIGIvZG9jcy9zcmMvcmVmZXJlbmNlL2dyZW1saW4tYXBwbGljYXRpb25zLmFzY2lpZG9jCmluZGV4IGQxN2IwYmIuLjUxZjM5ZGYgMTAwNjQ0Ci0tLSBhL2RvY3Mvc3JjL3JlZmVyZW5jZS9ncmVtbGluLWFwcGxpY2F0aW9ucy5hc2NpaWRvYworKysgYi9kb2NzL3NyYy9yZWZlcmVuY2UvZ3JlbWxpbi1hcHBsaWNhdGlvbnMuYXNjaWlkb2MKQEAgLTIyLDcgKzIyLDcgQEAKIAogLiBHcmVtbGluIENvbnNvbGUgLSBBIGxpbms6aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZWFkJUUyJTgwJTkzZXZhbCVFMiU4MCU5M3ByaW50X2xvb3BbUkVQTF0gZW52aXJvbm1lbnQgZm9yCiBpbnRlcmFjdGl2ZSBkZXZlbG9wbWVudCBhbmQgYW5hbHlzaXMKLS4gR3JlbWxpbiBTZXJ2ZXIgLSBBIHNlcnZlciB0aGF0IGhvc3RzIHNjcmlwdCBlbmdpbmVzIHRodXMgZW5hYmxpbmcgcmVtb3RlIEdyZW1saW4gZXhlY3V0aW9uCisuIEdyZW1saW4gU2VydmVyIC0gQSBzZXJ2ZXIgdGhhdCBob3N0cyBhIEdyZW1saW4gVHJhdmVyc2FsIE1hY2hpbmUgdGh1cyBlbmFibGluZyByZW1vdGUgR3JlbWxpbiBleGVjdXRpb24KIAogaW1hZ2U6Z3JlbWxpbi1sYWItY29hdC5wbmdbd2lkdGg9MzEwLGZsb2F0PWxlZnRdIEdyZW1saW4gaXMgZGVzaWduZWQgdG8gYmUgZXh0ZW5zaWJsZSwgbWFraW5nIGl0IHBvc3NpYmxlIGZvciB1c2VycwogYW5kIGdyYXBoIHN5c3RlbS9sYW5ndWFnZSBwcm92aWRlcnMgdG8gY3VzdG9taXplIGl0IHRvIHRoZWlyIG5lZWRzLiAgU3VjaCBleHRlbnNpYmlsaXR5IGlzIGFsc28gZm91bmQgaW4gdGhlIEdyZW1saW4KQEAgLTEyOCw2ICsxMjgsNyBAQAogfDpoZWxwIHw6PyB8RGlzcGxheXMgbGlzdCBvZiBjb21tYW5kcyBhbmQgZGVzY3JpcHRpb25zLiAgV2hlbiBmb2xsb3dlZCBieSBhIGNvbW1hbmQgbmFtZSwgaXQgd2lsbCBkaXNwbGF5IG1vcmUgc3BlY2lmaWMgaGVscCBvbiB0aGF0IHBhcnRpY3VsYXIgaXRlbS4KIHw6ZXhpdCB8OnggfEVuZHMgdGhlIENvbnNvbGUgc2Vzc2lvbi4KIHxpbXBvcnQgfDppIHxJbXBvcnQgYSBjbGFzcyBpbnRvIHRoZSBDb25zb2xlIHNlc3Npb24uCit8OmNscyB8OkMgfENsZWFyIHRoZSBzY3JlZW4gb2YgdGhlIENvbnNvbGUuCiB8OmNsZWFyIHw6YyB8U29tZXRpbWVzIHRoZSBDb25zb2xlIGNhbiBnZXQgaW50byBhIHN0YXRlIHdoZXJlIHRoZSBjb21tYW5kIGJ1ZmZlciBubyBsb25nZXIgdW5kZXJzdGFuZHMgaW5wdXQgKGUuZy4gYSBtaXNwbGFjZWQgYChgIG9yIGB9YCkuICBVc2UgdGhpcyBjb21tYW5kIHRvIGNsZWFyIHRoYXQgYnVmZmVyLgogfDpsb2FkIHw6bCB8TG9hZCBhIGZpbGUgb3IgVVJMIGludG8gdGhlIGNvbW1hbmQgYnVmZmVyIGZvciBleGVjdXRpb24uCiB8Omluc3RhbGwgfDorIHxJbXBvcnRzIGEgTWF2ZW4gbGlicmFyeSBhbmQgaXRzIGRlcGVuZGVuY2llcyBpbnRvIHRoZSBDb25zb2xlLgpAQCAtMTkyLDYgKzE5Myw3IEBACiB8UHJlZmVyZW5jZSB8VHlwZSB8RGVzY3JpcHRpb24KIHxtYXgtaXRlcmF0aW9uIHwgaW50IHwgQ29udHJvbHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHJlc3VsdHMgdGhhdCB0aGUgQ29uc29sZSB3aWxsIGRpc3BsYXkuIERlZmF1bHQ6IDEwMCByZXN1bHRzLgogfGNvbG9ycyB8IGJvb2wgfCBFbmFibGUgQU5TSSBjb2xvciByZW5kZXJpbmcuIERlZmF1bHQ6IHRydWUKK3x3YXJuaW5ncyB8IGJvb2wgfCBFbmFibGUgZGlzcGxheSBvZiByZW1vdGUgZXhlY3V0aW9uIHdhcm5pbmdzLiBEZWZhdWx0OiB0cnVlCiB8Z3JlbWxpbi5jb2xvciB8IGNvbG9ycyB8IENvbG9yIG9mIHRoZSBBU0NJSSBhcnQgZ3JlbWxpbiBvbiBzdGFydHVwLgogfGluZm8uY29sb3IgfCBjb2xvcnMgfCBDb2xvciBvZiAiaW5mbyIgdHlwZSBtZXNzYWdlcy4KIHxlcnJvci5jb2xvciB8IGNvbG9ycyB8IENvbG9yIG9mICJlcnJvciIgdHlwZSBtZXNzYWdlcy4KQEAgLTQyNiwxNiArNDI4LDE0IEBACiBbW2dyZW1saW4tc2VydmVyXV0KID09IEdyZW1saW4gU2VydmVyCiAKLWltYWdlOmdyZW1saW4tc2VydmVyLnBuZ1t3aWR0aD00MDAsZmxvYXQ9cmlnaHRdIEdyZW1saW4gU2VydmVyIHByb3ZpZGVzIGEgd2F5IHRvIHJlbW90ZWx5IGV4ZWN1dGUgR3JlbWxpbiBzY3JpcHRzCi1hZ2FpbnN0IG9uZSBvciBtb3JlIGBHcmFwaGAgaW5zdGFuY2VzIGhvc3RlZCB3aXRoaW4gaXQuICBUaGUgYmVuZWZpdHMgb2YgdXNpbmcgR3JlbWxpbiBTZXJ2ZXIgaW5jbHVkZToKK2ltYWdlOmdyZW1saW4tc2VydmVyLnBuZ1t3aWR0aD00MDAsZmxvYXQ9cmlnaHRdIEdyZW1saW4gU2VydmVyIHByb3ZpZGVzIGEgd2F5IHRvIHJlbW90ZWx5IGV4ZWN1dGUgR3JlbWxpbiBhZ2FpbnN0IG9uZQorb3IgbW9yZSBgR3JhcGhgIGluc3RhbmNlcyBob3N0ZWQgd2l0aGluIGl0LiAgVGhlIGJlbmVmaXRzIG9mIHVzaW5nIEdyZW1saW4gU2VydmVyIGluY2x1ZGU6CiAKLSogQWxsb3dzIGFueSBHcmVtbGluIFN0cnVjdHVyZS1lbmFibGVkIGdyYXBoIHRvIGV4aXN0IGFzIGEgc3RhbmRhbG9uZSBzZXJ2ZXIsIHdoaWNoIGluIHR1cm4gZW5hYmxlcyB0aGUgYWJpbGl0eSBmb3IKLW11bHRpcGxlIGNsaWVudHMgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgc2FtZSBncmFwaCBkYXRhYmFzZS4KLSogRW5hYmxlcyBleGVjdXRpb24gb2YgYWQgaG9jIHF1ZXJpZXMgdGhyb3VnaCByZW1vdGVseSBzdWJtaXR0ZWQgR3JlbWxpbiBzY3JpcHRzLgotKiBBbGxvd3MgZm9yIHRoZSBob3N0aW5nIG9mIEdyZW1saW4tYmFzZWQgRFNMcyAoRG9tYWluIFNwZWNpZmljIExhbmd1YWdlKSB0aGF0IGV4cGFuZCB0aGUgR3JlbWxpbiBsYW5ndWFnZSB0byBtYXRjaAotdGhlIGxhbmd1YWdlIG9mIHRoZSBhcHBsaWNhdGlvbiBkb21haW4sIHdoaWNoIHdpbGwgaGVscCBzdXBwb3J0IGNvbW1vbiBncmFwaCB1c2UgY2FzZXMgc3VjaCBhcyBzZWFyY2hpbmcsIHJhbmtpbmcsCi1hbmQgcmVjb21tZW5kYXRpb24uCi0qIFByb3ZpZGVzIGEgbWV0aG9kIGZvciBOb24tSlZNIGxhbmd1YWdlcyAoZS5nLiBQeXRob24sIEphdmFzY3JpcHQsIGV0Yy4pIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIFRpbmtlclBvcCBzdGFjay4KKyogQWxsb3dzIGFueSBHcmVtbGluIFN0cnVjdHVyZS1lbmFibGVkIGdyYXBoIChpLmUuIGltcGxlbWVudHMgdGhlIGBHcmFwaGAgQVBJIG9uIHRoZSBKVk0pIHRvIGV4aXN0IGFzIGEgc3RhbmRhbG9uZQorc2VydmVyLCB3aGljaCBpbiB0dXJuIGVuYWJsZXMgdGhlIGFiaWxpdHkgZm9yIG11bHRpcGxlIGNsaWVudHMgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgc2FtZSBncmFwaCBkYXRhYmFzZS4KKyogRW5hYmxlcyBleGVjdXRpb24gb2YgYWQgaG9jIHF1ZXJpZXMgdGhyb3VnaCByZW1vdGVseSBzdWJtaXR0ZWQgR3JlbWxpbi4KKyogUHJvdmlkZXMgYSBtZXRob2QgZm9yIG5vbi1KVk0gbGFuZ3VhZ2VzIHdoaWNoIG1heSBub3QgaGF2ZSBhIEdyZW1saW4gVHJhdmVyc2FsIE1hY2hpbmUgKGUuZy4gUHl0aG9uLCBKYXZhc2NyaXB0LCBldGMuKQordG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgVGlua2VyUG9wIHN0YWNrIG9uIHRoZSBKVk0uCiAqIEV4cG9zZXMgbnVtZXJvdXMgbWV0aG9kcyBmb3IgZXh0ZW5zaW9uIGFuZCBjdXN0b21pemF0aW9uIHRvIGluY2x1ZGUgc2VyaWFsaXphdGlvbiBvcHRpb25zLCByZW1vdGUgY29tbWFuZHMsIGV0Yy4KIAogTk9URTogR3JlbWxpbiBTZXJ2ZXIgaXMgdGhlIHJlcGxhY2VtZW50IGZvciBsaW5rOmh0dHBzOi8vZ2l0aHViLmNvbS90aW5rZXJwb3AvcmV4c3RlcltSZXhzdGVyXS4KQEAgLTQ2MCwxNSArNDYwLDEyIEBACiBbc291cmNlLHRleHRdCiAtLS0tCiAkIGJpbi9ncmVtbGluLXNlcnZlci5zaCBjb25mL2dyZW1saW4tc2VydmVyLW1vZGVybi55YW1sCi1bSU5GT10gR3JlbWxpblNlcnZlciAtCitbSU5GT10gR3JlbWxpblNlcnZlcgogICAgICAgICAgXCwsLC8KICAgICAgICAgIChvIG8pCiAtLS0tLW9PT28tKDMpLW9PT28tLS0tLQogCi1bSU5GT10gR3JlbWxpblNlcnZlciAtIENvbmZpZ3VyaW5nIEdyZW1saW4gU2VydmVyIGZyb20gL2hvbWUvc21hbGxldHRlL2dpdC9hcGFjaGUvaW5jdWJhdG9yLXRpbmtlcnBvcC9ncmVtbGluLXNlcnZlci90YXJnZXQvYXBhY2hlLXRpbmtlcnBvcC1ncmVtbGluLXNlcnZlci0zLjMuMC1TTkFQU0hPVC1zdGFuZGFsb25lL2NvbmYvZ3JlbWxpbi1zZXJ2ZXIueWFtbAotW0lORk9dIE1ldHJpY01hbmFnZXIgLSBDb25maWd1cmVkIE1ldHJpY3MgQ29uc29sZVJlcG9ydGVyIGNvbmZpZ3VyZWQgd2l0aCByZXBvcnQgaW50ZXJ2YWw9MTgwMDAwbXMKLVtJTkZPXSBNZXRyaWNNYW5hZ2VyIC0gQ29uZmlndXJlZCBNZXRyaWNzIENzdlJlcG9ydGVyIGNvbmZpZ3VyZWQgd2l0aCByZXBvcnQgaW50ZXJ2YWw9MTgwMDAwbXMgdG8gZmlsZU5hbWU9L3RtcC9ncmVtbGluLXNlcnZlci1tZXRyaWNzLmNzdgotW0lORk9dIE1ldHJpY01hbmFnZXIgLSBDb25maWd1cmVkIE1ldHJpY3MgSm14UmVwb3J0ZXIgY29uZmlndXJlZCB3aXRoIGRvbWFpbj0gYW5kIGFnZW50SWQ9CitbSU5GT10gR3JlbWxpblNlcnZlciAtIENvbmZpZ3VyaW5nIEdyZW1saW4gU2VydmVyIGZyb20gY29uZi9ncmVtbGluLXNlcnZlci1tb2Rlcm4ueWFtbAogW0lORk9dIE1ldHJpY01hbmFnZXIgLSBDb25maWd1cmVkIE1ldHJpY3MgU2xmNGpSZXBvcnRlciBjb25maWd1cmVkIHdpdGggaW50ZXJ2YWw9MTgwMDAwbXMgYW5kIGxvZ2dlck5hbWU9b3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIuU2V0dGluZ3MkU2xmNGpSZXBvcnRlck1ldHJpY3MKIFtJTkZPXSBEZWZhdWx0R3JhcGhNYW5hZ2VyIC0gR3JhcGggW2dyYXBoXSB3YXMgc3VjY2Vzc2Z1bGx5IGNvbmZpZ3VyZWQgdmlhIFtjb25mL3RpbmtlcmdyYXBoLWVtcHR5LnByb3BlcnRpZXNdLgogW0lORk9dIFNlcnZlckdyZW1saW5FeGVjdXRvciAtIEluaXRpYWxpemVkIEdyZW1saW4gdGhyZWFkIHBvb2wuICBUaHJlYWRzIGluIHBvb2wgbmFtZWQgd2l0aCBwYXR0ZXJuIGdyZW1saW4tKgpAQCAtNDgxLDExICs0NzgsMTcgQEAKIFtJTkZPXSBUcmF2ZXJzYWxPcFByb2Nlc3NvciAtIEluaXRpYWxpemVkIGNhY2hlIGZvciBUcmF2ZXJzYWxPcFByb2Nlc3NvciB3aXRoIHNpemUgMTAwMCBhbmQgZXhwaXJhdGlvbiB0aW1lIG9mIDYwMDAwMCBtcwogW0lORk9dIEdyZW1saW5TZXJ2ZXIgLSBFeGVjdXRpbmcgc3RhcnQgdXAgTGlmZUN5Y2xlSG9vawogW0lORk9dIExvZ2dlciRpbmZvIC0gTG9hZGluZyAnbW9kZXJuJyBncmFwaCBkYXRhLgorW0lORk9dIEdyZW1saW5TZXJ2ZXIgLSBpZGxlQ29ubmVjdGlvblRpbWVvdXQgd2FzIHNldCB0byAwIHdoaWNoIHJlc29sdmVzIHRvIDAgc2Vjb25kcyB3aGVuIGNvbmZpZ3VyaW5nIHRoaXMgdmFsdWUgLSB0aGlzIGZlYXR1cmUgd2lsbCBiZSBkaXNhYmxlZAorW0lORk9dIEdyZW1saW5TZXJ2ZXIgLSBrZWVwQWxpdmVJbnRlcnZhbCB3YXMgc2V0IHRvIDAgd2hpY2ggcmVzb2x2ZXMgdG8gMCBzZWNvbmRzIHdoZW4gY29uZmlndXJpbmcgdGhpcyB2YWx1ZSAtIHRoaXMgZmVhdHVyZSB3aWxsIGJlIGRpc2FibGVkCitbV0FSTl0gQWJzdHJhY3RDaGFubmVsaXplciAtIFRoZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMCBzZXJpYWxpemF0aW9uIGNsYXNzIGlzIGRlcHJlY2F0ZWQuCiBbSU5GT10gQWJzdHJhY3RDaGFubmVsaXplciAtIENvbmZpZ3VyZWQgYXBwbGljYXRpb24vdm5kLmdyZW1saW4tdjMuMCtncnlvIHdpdGggb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAKK1tXQVJOXSBBYnN0cmFjdENoYW5uZWxpemVyIC0gVGhlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcnlvTWVzc2FnZVNlcmlhbGl6ZXJWM2QwIHNlcmlhbGl6YXRpb24gY2xhc3MgaXMgZGVwcmVjYXRlZC4KIFtJTkZPXSBBYnN0cmFjdENoYW5uZWxpemVyIC0gQ29uZmlndXJlZCBhcHBsaWNhdGlvbi92bmQuZ3JlbWxpbi12My4wK2dyeW8tc3RyaW5nZCB3aXRoIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcnlvTWVzc2FnZVNlcmlhbGl6ZXJWM2QwCiBbSU5GT10gQWJzdHJhY3RDaGFubmVsaXplciAtIENvbmZpZ3VyZWQgYXBwbGljYXRpb24vdm5kLmdyZW1saW4tdjMuMCtqc29uIHdpdGggb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWM2QwCiBbSU5GT10gQWJzdHJhY3RDaGFubmVsaXplciAtIENvbmZpZ3VyZWQgYXBwbGljYXRpb24vanNvbiB3aXRoIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjNkMAotW0lORk9dIEdyZW1saW5TZXJ2ZXIkMSAtIEdyZW1saW4gU2VydmVyIGNvbmZpZ3VyZWQgd2l0aCB3b3JrZXIgdGhyZWFkIHBvb2wgb2YgMSwgZ3JlbWxpbiBwb29sIG9mIDggYW5kIGJvc3MgdGhyZWFkIHBvb2wgb2YgMS4KK1tJTkZPXSBBYnN0cmFjdENoYW5uZWxpemVyIC0gQ29uZmlndXJlZCBhcHBsaWNhdGlvbi92bmQuZ3JhcGhiaW5hcnktdjEuMCB3aXRoIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjEKK1tJTkZPXSBBYnN0cmFjdENoYW5uZWxpemVyIC0gQ29uZmlndXJlZCBhcHBsaWNhdGlvbi92bmQuZ3JhcGhiaW5hcnktdjEuMC1zdHJpbmdkIHdpdGggb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMQorW0lORk9dIEdyZW1saW5TZXJ2ZXIkMSAtIEdyZW1saW4gU2VydmVyIGNvbmZpZ3VyZWQgd2l0aCB3b3JrZXIgdGhyZWFkIHBvb2wgb2YgMSwgZ3JlbWxpbiBwb29sIG9mIDQgYW5kIGJvc3MgdGhyZWFkIHBvb2wgb2YgMS4KIFtJTkZPXSBHcmVtbGluU2VydmVyJDEgLSBDaGFubmVsIHN0YXJ0ZWQgYXQgcG9ydCA4MTgyLgogLS0tLQogCkBAIC01MjUsNiArNTI4LDgzIEBACiBXQVJOSU5HOiBUcmFuc2FjdGlvbnMgb24gZ3JhcGhzIGluIGluaXRpYWxpemF0aW9uIHNjcmlwdHMgYXJlIG5vdCBjbG9zZWQgYXV0b21hdGljYWxseSBhZnRlciB0aGUgc2NyaXB0IGZpbmlzaGVzCiBleGVjdXRpbmcuICBJdCBpcyB1cCB0byB0aGUgc2NyaXB0IHRvIHByb3Blcmx5IGNvbW1pdCBvciByb2xsYmFjayB0cmFuc2FjdGlvbnMgaW4gdGhlIHNjcmlwdCBpdHNlbGYuCiAKK1tbY29ubmVjdGluZy12aWEtZHJpdmVyc11dCis9PT0gQ29ubmVjdGluZyB2aWEgRHJpdmVycworCitpbWFnZTpyZXhzdGVyLWNvbm5lY3QucG5nW3dpZHRoPTE4MCxmbG9hdD1yaWdodF0gVGlua2VyUG9wIG9mZmVycyBjbGllbnQtc2lkZSBkcml2ZXJzIGZvciB0aGUgR3JlbWxpbiBTZXJ2ZXIgd2Vic29ja2V0CitzdWItcHJvdG9jb2wgaW4gYSB2YXJpZXR5IG9mIGxhbmd1YWdlczoKKworKiA8PGdyZW1saW4tZG90bmV0LEMjPj4KKyogPDxncmVtbGluLWphdmEsSmF2YT4+CisqIDw8Z3JlbWxpbi1qYXZhc2NyaXB0LEphdmFzY3JpcHQ+PgorKiA8PGdyZW1saW4tcHl0aG9uLFB5dGhvbj4+CisKK1RoZXNlIGRyaXZlcnMgcHJvdmlkZSBtZXRob2RzIHRvIHNlbmQgR3JlbWxpbiBiYXNlZCByZXF1ZXN0cyBhbmQgZ2V0IGJhY2sgdHJhdmVyc2FsIHJlc3VsdHMgYXMgYSByZXNwb25zZS4gVGhlIHJlcXVlc3RzCittYXkgYmUgc2NyaXB0LWJhc2VkIG9yIGJ5dGVjb2RlLWJhc2VkLiBBcyBkaXNjdXNzZWQgZWFybGllciBpbiB0aGUgPDxjb25uZWN0aW5nLWdyZW1saW4tc2VydmVyLGludHJvZHVjdGlvbj4+IHRoZQorcmVjb21tZW5kYXRpb24gaXMgdG8gdXNlIGJ5dGVjb2RlLWJhc2VkIHJlcXVlc3RzLiBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHNlbmRpbmcgc2NyaXB0cyBhbmQgc2VuZGluZyBieXRlY29kZSBhcmUKK2RlbW9uc3RyYXRlZCBiZWxvdyBpbiBzb21lIGJhc2ljIGV4YW1wbGVzOgorCitbc291cmNlLGphdmEsdGFiXQorLS0tLQorLy8gc2NyaXB0CitDbHVzdGVyIGNsdXN0ZXIgPSBDbHVzdGVyLm9wZW4oKTsKK0NsaWVudCBjbGllbnQgPSBjbHVzdGVyLmNvbm5lY3QoKTsKK01hcDxTdHJpbmcsT2JqZWN0PiBwYXJhbXMgPSBuZXcgSGFzaE1hcDw+KCk7CitwYXJhbXMucHV0KCJuYW1lIiwibWFya28iKTsKK0xpc3Q8UmVzdWx0PiBsaXN0ID0gY2xpZW50LnN1Ym1pdCgiZy5WKCkuaGFzKCdwZXJzb24nLCduYW1lJyxuYW1lKS5vdXQoJ2tub3dzJykiLCBwYXJhbXMpLmFsbCgpLmdldCgpOworCisvLyBieXRlY29kZQorR3JhcGhUcmF2ZXJzYWxTb3VyY2UgZyA9IHRyYXZlcnNhbCgpLndpdGhSZW1vdGUoRHJpdmVyUmVtb3RlQ29ubmVjdGlvbi51c2luZygibG9jYWxob3N0Iiw4MTgyLCJnIikpOworTGlzdDxWZXJ0ZXg+IGxpc3QgPSBnLlYoKS5oYXMoInBlcnNvbiIsIm5hbWUiLCJtYXJrbyIpLm91dCgia25vd3MiKS50b0xpc3QoKTsKKy0tLS0KK1tzb3VyY2UsZ3Jvb3Z5XQorLS0tLQorLy8gc2NyaXB0CitkZWYgY2x1c3RlciA9IENsdXN0ZXIub3BlbigpCitkZWYgY2xpZW50ID0gY2x1c3Rlci5jb25uZWN0KCkKK2RlZiBsaXN0ID0gY2xpZW50LnN1Ym1pdCgiZy5WKCkuaGFzKCdwZXJzb24nLCduYW1lJyxuYW1lKS5vdXQoJ2tub3dzJykiLCBbbmFtZTogIm1hcmtvIl0pLmFsbCgpLmdldCgpOworCisvLyBieXRlY29kZQorZGVmIGcgPSB0cmF2ZXJzYWwoKS53aXRoUmVtb3RlKERyaXZlclJlbW90ZUNvbm5lY3Rpb24udXNpbmcoImxvY2FsaG9zdCIsODE4MiwiZyIpKQorZGVmIGxpc3QgPSBnLlYoKS5oYXMoJ3BlcnNvbicsJ25hbWUnLCdtYXJrbycpLm91dCgna25vd3MnKS50b0xpc3QoKQorLS0tLQorW3NvdXJjZSxjc2hhcnBdCistLS0tCitpbmNsdWRlOjouLi8uLi8uLi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Eb2NzL1JlZmVyZW5jZS9HcmVtbGluQXBwbGljYXRpb25zVGVzdHMuY3NbdGFncz1jb25uZWN0aW5nVmlhRHJpdmVyc10KKy0tLS0KK1tzb3VyY2UsamF2YXNjcmlwdF0KKy0tLS0KKy8vIHNjcmlwdAorY29uc3QgY2xpZW50ID0gbmV3IENsaWVudCgnd3M6Ly9sb2NhbGhvc3Q6NDU5NDAvZ3JlbWxpbicsIHsgdHJhdmVyc2FsU291cmNlOiAiZyIgfSk7Citjb25zdCBjb25uID0gY2xpZW50Lm9wZW4oKTsKK2NvbnN0IGxpc3QgPSBjb25uLnN1Ym1pdCgiZy5WKCkuaGFzKCdwZXJzb24nLCduYW1lJyxuYW1lKS5vdXQoJ2tub3dzJykiLHtuYW1lOiAnbWFya28nfSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsgLi4uIH0pOworCisvLyBieXRlY29kZQorY29uc3QgZyA9IGd0cmF2ZXJzYWwoKS53aXRoUmVtb3RlKG5ldyBEcml2ZXJSZW1vdGVDb25uZWN0aW9uKCd3czovL2xvY2FsaG9zdDo4MTgyL2dyZW1saW4nKSk7Citjb25zdCBsaXN0ID0gZy5WKCkuaGFzKCJwZXJzb24iLCJuYW1lIiwibWFya28iKS5vdXQoImtub3dzIikudG9MaXN0KCk7CistLS0tCitbc291cmNlLHB5dGhvbl0KKy0tLS0KKyMgc2NyaXB0CitjbGllbnQgPSBDbGllbnQoJ3dzOi8vbG9jYWxob3N0OjgxODIvZ3JlbWxpbicsICdnJykKK2xpc3QgPSBjbGllbnQuc3VibWl0KCJnLlYoKS5oYXMoJ3BlcnNvbicsJ25hbWUnLG5hbWUpLm91dCgna25vd3MnKSIseyduYW1lJzogJ21hcmtvJ30pLmFsbCgpCisKKyMgYnl0ZWNvZGUKK2cgPSB0cmF2ZXJzYWwoKS53aXRoUmVtb3RlKERyaXZlclJlbW90ZUNvbm5lY3Rpb24oJ3dzOi8vbG9jYWxob3N0OjgxODIvZ3JlbWxpbicsJ2cnKSkKK2xpc3QgPSBnLlYoKS5oYXMoInBlcnNvbiIsIm5hbWUiLCJtYXJrbyIpLm91dCgia25vd3MiKS50b0xpc3QoKQorLS0tLQorCitUaGUgYWR2YW50YWdlIG9mIGJ5dGVjb2RlIG92ZXIgc2NyaXB0cyBzaG91bGQgYmUgYXBwYXJlbnQgZnJvbSB0aGUgYWJvdmUgZXhhbXBsZXMuIFNjcmlwdHMgYXJlIGp1c3Qgc3RyaW5ncyB0aGF0IGFyZQorZW1iZWRkZWQgaW4gY29kZSAoaW4gdGhlIGFib3ZlIGV4YW1wbGVzLCB0aGUgc3RyaW5ncyBhcmUgR3Jvb3Z5LWJhc2VkKSB3aGVyZWFzIGJ5dGVjb2RlIGJhc2VkIHJlcXVlc3RzIGFyZSB0aGVtc2VsdmVzCitjb2RlIHdyaXR0ZW4gaW4gdGhlIG5hdGl2ZSBsYW5ndWFnZSBvZiB1c2UuIE9idmlvdXNseSwgdGhlIGFkdmFudGFnZSBvZiB0aGUgR3JlbWxpbiBiZWluZyBhY3R1YWwgY29kZSBpcyB0aGF0IHRoZXJlCithcmUgY2hlY2tzIChlLmcuIGNvbXBpbGUtdGltZSwgYXV0by1jb21wbGV0ZSBhbmQgb3RoZXIgSURFIHN1cHBvcnQsIGxhbmd1YWdlIGxldmVsIGNoZWNrcywgZXRjLikgdGhhdCBoZWxwIHZhbGlkYXRlIHRoZQorR3JlbWxpbiBkdXJpbmcgdGhlIGRldmVsb3BtZW50IHByb2Nlc3MuCisKK1RpbmtlclBvcCBtYWtlcyBhbiBlZmZvcnQgdG8gZW5zdXJlIGEgaGlnaC1sZXZlbCBvZiBjb25zaXN0ZW5jeSBhbW9uZyB0aGUgZHJpdmVycyBhbmQgdGhlaXIgZmVhdHVyZXMsIGJ1dCB0aGVyZSBhcmUKK2RpZmZlcmVuY2VzIGluIGNhcGFiaWxpdGllcyBhbmQgZmVhdHVyZXMgYXMgdGhleSBhcmUgZWFjaCBkZXZlbG9wZWQgaW5kZXBlbmRlbnRseS4gVGhlIEphdmEgZHJpdmVyIHdhcyB0aGUgZmlyc3QgYW5kCitpcyB0aGVyZWZvcmUgdGhlIG1vc3QgYWR2YW5jZWQuIFBsZWFzZSBzZWUgdGhlIHJlbGF0ZWQgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGRyaXZlciBvZiBpbnRlcmVzdCBmb3IgbW9yZSBpbmZvcm1hdGlvbgorYW5kIGRldGFpbHMgaW4gdGhlIDw8Z3JlbWxpbi1kcml2ZXJzLXZhcmlhbnRzLEdyZW1saW4gRHJpdmVycyBhbmQgVmFyaWFudHM+PiBTZWN0aW9uIG9mIHRoaXMgZG9jdW1lbnRhdGlvbi4KKwogW1tjb25uZWN0aW5nLXZpYS1jb25zb2xlXV0KID09PSBDb25uZWN0aW5nIHZpYSBDb25zb2xlCiAKQEAgLTcxMywyMjAgKzc5Myw2IEBACiBOT1RFOiBDb25zb2xlIGNvbW1hbmRzLCB0aG9zZSB0aGF0IGJlZ2luIHdpdGggYSBjb2xvbiAoZS5nLiBgOnhgLCBgOnJlbW90ZWApIGRvIG5vdCBleGVjdXRlIHJlbW90ZWx5IHdoZW4gaW4gdGhpcyBtb2RlLgogVGhleSBhcmUgYWxsIHN0aWxsIGV2YWx1YXRlZCBsb2NhbGx5LgogCi1bW2Nvbm5lY3RpbmctdmlhLWphdmFdXQotPT09IENvbm5lY3RpbmcgdmlhIEphdmEKLQotW3NvdXJjZSx4bWxdCi0tLS0tCi08ZGVwZW5kZW5jeT4KLSAgIDxncm91cElkPm9yZy5hcGFjaGUudGlua2VycG9wPC9ncm91cElkPgotICAgPGFydGlmYWN0SWQ+Z3JlbWxpbi1kcml2ZXI8L2FydGlmYWN0SWQ+Ci0gICA8dmVyc2lvbj54LnkuejwvdmVyc2lvbj4KLTwvZGVwZW5kZW5jeT4KLS0tLS0KLQotaW1hZ2U6Z3JlbWxpbi1qYXZhLnBuZ1t3aWR0aD0xNzUsZmxvYXQ9bGVmdF0gVGlua2VyUG9wMyBjb21lcyBlcXVpcHBlZCB3aXRoIGEgcmVmZXJlbmNlIGNsaWVudCBmb3IgSmF2YS1iYXNlZAotYXBwbGljYXRpb25zLiAgSXQgaXMgcmVmZXJyZWQgdG8gYXMgR3JlbWxpbiBEcml2ZXIsIHdoaWNoIGVuYWJsZXMgYXBwbGljYXRpb25zIHRvIHNlbmQgcmVxdWVzdHMgdG8gR3JlbWxpbiBTZXJ2ZXIKLWFuZCBnZXQgYmFjayByZXN1bHRzLgotCi1HcmVtbGluIGNvZGUgaXMgc2VudCB0byB0aGUgc2VydmVyIGZyb20gYSBgQ2xpZW50YCBpbnN0YW5jZS4gIEEgYENsaWVudGAgaXMgY3JlYXRlZCBhcyBmb2xsb3dzOgotCi1bc291cmNlLGphdmFdCi0tLS0tCi1DbHVzdGVyIGNsdXN0ZXIgPSBDbHVzdGVyLm9wZW4oKTsgIDwxPgotQ2xpZW50IGNsaWVudCA9IGNsdXN0ZXIuY29ubmVjdCgpOyA8Mj4KLS0tLS0KLQotPDE+IE9wZW5zIGEgcmVmZXJlbmNlIHRvIGBsb2NhbGhvc3RgIC0gbm90ZSB0aGF0IHRoZXJlIGFyZSBtYW55IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhdmFpbGFibGUgaW4gZGVmaW5pbmcgYSBgQ2x1c3RlcmAgb2JqZWN0LgotPDI+IENyZWF0ZXMgYSBgQ2xpZW50YCBnaXZlbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIG9mIHRoZSBgQ2x1c3RlcmAuCi0KLU9uY2UgYSBgQ2xpZW50YCBpbnN0YW5jZSBpcyByZWFkeSwgaXQgaXMgcG9zc2libGUgdG8gaXNzdWUgc29tZSBHcmVtbGluOgotCi1bc291cmNlLGphdmFdCi0tLS0tCi1SZXN1bHRTZXQgcmVzdWx0cyA9IGNsaWVudC5zdWJtaXQoIlsxLDIsMyw0XSIpOyAgPDE+Ci1yZXN1bHRzLnN0cmVhbSgpLm1hcChpIC0+IGkuZ2V0KEludGVnZXIuY2xhc3MpICogMik7ICAgICAgIDwyPgotCi1Db21wbGV0YWJsZUZ1dHVyZTxMaXN0PFJlc3VsdD4+IHJlc3VsdHMgPSBjbGllbnQuc3VibWl0KCJbMSwyLDMsNF0iKS5hbGwoKTsgIDwzPgotCi1Db21wbGV0YWJsZUZ1dHVyZTxSZXN1bHRTZXQ+IGZ1dHVyZSA9IGNsaWVudC5zdWJtaXRBc3luYygiWzEsMiwzLDRdIik7IDw0PgotCi1NYXA8U3RyaW5nLE9iamVjdD4gcGFyYW1zID0gbmV3IEhhc2hNYXA8PigpOwotcGFyYW1zLnB1dCgieCIsNCk7Ci1jbGllbnQuc3VibWl0KCJbMSwyLDMseF0iLCBwYXJhbXMpOyA8NT4KLS0tLS0KLQotPDE+IFN1Ym1pdHMgYSBzY3JpcHQgdGhhdCBzaW1wbHkgcmV0dXJucyBhIGBMaXN0YCBvZiBpbnRlZ2Vycy4gIFRoaXMgbWV0aG9kIGJsb2NrcyB1bnRpbCB0aGUgcmVxdWVzdCBpcyB3cml0dGVuIHRvCi10aGUgc2VydmVyIGFuZCBhIGBSZXN1bHRTZXRgIGlzIGNvbnN0cnVjdGVkLgotPDI+IEV2ZW4gdGhvdWdoIHRoZSBgUmVzdWx0U2V0YCBpcyBjb25zdHJ1Y3RlZCwgaXQgZG9lcyBub3QgbWVhbiB0aGF0IHRoZSBzZXJ2ZXIgaGFzIHNlbnQgYmFjayB0aGUgcmVzdWx0cyAob3IgZXZlbgotZXZhbHVhdGVkIHRoZSBzY3JpcHQgcG90ZW50aWFsbHkpLiAgVGhlIGBSZXN1bHRTZXRgIGlzIGp1c3QgYSBob2xkZXIgdGhhdCBpcyBhd2FpdGluZyB0aGUgcmVzdWx0cyBmcm9tIHRoZSBzZXJ2ZXIuCi1JbiB0aGlzIGNhc2UsIHRoZXkgYXJlIHN0cmVhbWVkIGZyb20gdGhlIHNlcnZlciBhcyB0aGV5IGFycml2ZS4KLTwzPiBTdWJtaXQgYSBzY3JpcHQsIGdldCBhIGBSZXN1bHRTZXRgLCB0aGVuIHJldHVybiBhIGBDb21wbGV0YWJsZUZ1dHVyZWAgdGhhdCB3aWxsIGJlIGNhbGxlZCB3aGVuIGFsbCByZXN1bHRzIGhhdmUgYmVlbiByZXR1cm5lZC4KLTw0PiBTdWJtaXQgYSBzY3JpcHQgYXN5bmNocm9ub3VzbHkgd2l0aG91dCB3YWl0aW5nIGZvciB0aGUgcmVxdWVzdCB0byBiZSB3cml0dGVuIHRvIHRoZSBzZXJ2ZXIuCi08NT4gUGFyYW1ldGVyaXplZCByZXF1ZXN0IGFyZSBjb25zaWRlcmVkIHRoZSBtb3N0IGVmZmljaWVudCB3YXkgdG8gc2VuZCBHcmVtbGluIHRvIHRoZSBzZXJ2ZXIgYXMgdGhleSBjYW4gYmUgY2FjaGVkLAotd2hpY2ggd2lsbCBib29zdCBwZXJmb3JtYW5jZSBhbmQgcmVkdWNlIHJlc291cmNlcyByZXF1aXJlZCBvbiB0aGUgc2VydmVyLgotCi09PT09IENvbmZpZ3VyYXRpb24KLQotVGhlIGZvbGxvd2luZyB0YWJsZSBkZXNjcmliZXMgdGhlIHZhcmlvdXMgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgR3JlbWxpbiBEcml2ZXI6Ci0KLVt3aWR0aD0iMTAwJSIsY29scz0iMywxMCxeMiIsb3B0aW9ucz0iaGVhZGVyIl0KLXw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLXxLZXkgfERlc2NyaXB0aW9uIHxEZWZhdWx0Ci18Y29ubmVjdGlvblBvb2wuY2hhbm5lbGl6ZXIgfFRoZSBmdWxseSBxdWFsaWZpZWQgY2xhc3NuYW1lIG9mIHRoZSBjbGllbnQgYENoYW5uZWxpemVyYCB0aGF0IGRlZmluZXMgaG93IHRvIGNvbm5lY3QgdG8gdGhlIHNlcnZlci4gfGBDaGFubmVsaXplci5XZWJTb2NrZXRDaGFubmVsaXplcmAKLXxjb25uZWN0aW9uUG9vbC5lbmFibGVTc2wgfERldGVybWluZXMgaWYgU1NMIHNob3VsZCBiZSBlbmFibGVkIG9yIG5vdC4gSWYgZW5hYmxlZCBvbiB0aGUgc2VydmVyIHRoZW4gaXQgbXVzdCBiZSBlbmFibGVkIG9uIHRoZSBjbGllbnQuIHxmYWxzZQotfGNvbm5lY3Rpb25Qb29sLmtlZXBBbGl2ZUludGVydmFsIHxMZW5ndGggb2YgdGltZSBpbiBtaWxsaXNlY29uZHMgdG8gd2FpdCBvbiBhbiBpZGxlIGNvbm5lY3Rpb24gYmVmb3JlIHNlbmRpbmcgYSBrZWVwLWFsaXZlIHJlcXVlc3QuIFNldCB0byB6ZXJvIHRvIGRpc2FibGUgdGhpcyBmZWF0dXJlLiB8MTgwMDAwCi18Y29ubmVjdGlvblBvb2wua2V5U3RvcmUgfFRoZSBwcml2YXRlIGtleSBpbiBKS1Mgb3IgUEtDUyMxMiBmb3JtYXQuIHxfbm9uZV8KLXxjb25uZWN0aW9uUG9vbC5rZXlTdG9yZVBhc3N3b3JkIHxUaGUgcGFzc3dvcmQgb2YgdGhlIGBrZXlTdG9yZWAgaWYgaXQgaXMgcGFzc3dvcmQtcHJvdGVjdGVkLiB8X25vbmVfCi18Y29ubmVjdGlvblBvb2wua2V5U3RvcmVUeXBlIHxgSktTYCAoSmF2YSA4IGRlZmF1bHQpIG9yIGBQS0NTMTJgIChKYXZhIDkrIGRlZmF1bHQpfF9ub25lXwotfGNvbm5lY3Rpb25Qb29sLm1heENvbnRlbnRMZW5ndGggfFRoZSBtYXhpbXVtIGxlbmd0aCBpbiBieXRlcyB0aGF0IGEgbWVzc2FnZSBjYW4gYmUgc2VudCB0byB0aGUgc2VydmVyLiBUaGlzIG51bWJlciBjYW4gYmUgbm8gZ3JlYXRlciB0aGFuIHRoZSBzZXR0aW5nIG9mIHRoZSBzYW1lIG5hbWUgaW4gdGhlIHNlcnZlciBjb25maWd1cmF0aW9uLiB8NjU1MzYKLXxjb25uZWN0aW9uUG9vbC5tYXhJblByb2Nlc3NQZXJDb25uZWN0aW9uIHxUaGUgbWF4aW11bSBudW1iZXIgb2YgaW4tZmxpZ2h0IHJlcXVlc3RzIHRoYXQgY2FuIG9jY3VyIG9uIGEgY29ubmVjdGlvbi4gfDQKLXxjb25uZWN0aW9uUG9vbC5tYXhTaW11bHRhbmVvdXNVc2FnZVBlckNvbm5lY3Rpb24gfFRoZSBtYXhpbXVtIG51bWJlciBvZiB0aW1lcyB0aGF0IGEgY29ubmVjdGlvbiBjYW4gYmUgYm9ycm93ZWQgZnJvbSB0aGUgcG9vbCBzaW11bHRhbmVvdXNseS4gfDE2Ci18Y29ubmVjdGlvblBvb2wubWF4U2l6ZSB8VGhlIG1heGltdW0gc2l6ZSBvZiBhIGNvbm5lY3Rpb24gcG9vbCBmb3IgYSBob3N0LiB8OAotfGNvbm5lY3Rpb25Qb29sLm1heFdhaXRGb3JDb25uZWN0aW9uIHxUaGUgYW1vdW50IG9mIHRpbWUgaW4gbWlsbGlzZWNvbmRzIHRvIHdhaXQgZm9yIGEgbmV3IGNvbm5lY3Rpb24gYmVmb3JlIHRpbWluZyBvdXQuIHwzMDAwCi18Y29ubmVjdGlvblBvb2wubWF4V2FpdEZvckNsb3NlIHxUaGUgYW1vdW50IG9mIHRpbWUgaW4gbWlsbGlzZWNvbmRzIHRvIHdhaXQgZm9yIHBlbmRpbmcgbWVzc2FnZXMgdG8gYmUgcmV0dXJuZWQgZnJvbSB0aGUgc2VydmVyIGJlZm9yZSBjbG9zaW5nIHRoZSBjb25uZWN0aW9uLiB8MzAwMAotfGNvbm5lY3Rpb25Qb29sLm1pbkluUHJvY2Vzc1BlckNvbm5lY3Rpb24gfFRoZSBtaW5pbXVtIG51bWJlciBvZiBpbi1mbGlnaHQgcmVxdWVzdHMgdGhhdCBjYW4gb2NjdXIgb24gYSBjb25uZWN0aW9uLiB8MQotfGNvbm5lY3Rpb25Qb29sLm1pblNpbXVsdGFuZW91c1VzYWdlUGVyQ29ubmVjdGlvbiB8VGhlIG1heGltdW0gbnVtYmVyIG9mIHRpbWVzIHRoYXQgYSBjb25uZWN0aW9uIGNhbiBiZSBib3Jyb3dlZCBmcm9tIHRoZSBwb29sIHNpbXVsdGFuZW91c2x5LiB8OAotfGNvbm5lY3Rpb25Qb29sLm1pblNpemUgfFRoZSBtaW5pbXVtIHNpemUgb2YgYSBjb25uZWN0aW9uIHBvb2wgZm9yIGEgaG9zdC4gfDIKLXxjb25uZWN0aW9uUG9vbC5yZWNvbm5lY3RJbnRlcnZhbCB8VGhlIGFtb3VudCBvZiB0aW1lIGluIG1pbGxpc2Vjb25kcyB0byB3YWl0IGJlZm9yZSB0cnlpbmcgdG8gcmVjb25uZWN0IHRvIGEgZGVhZCBob3N0LiB8MTAwMAotfGNvbm5lY3Rpb25Qb29sLnJlc3VsdEl0ZXJhdGlvbkJhdGNoU2l6ZSB8VGhlIG92ZXJyaWRlIHZhbHVlIGZvciB0aGUgc2l6ZSBvZiB0aGUgcmVzdWx0IGJhdGNoZXMgdG8gYmUgcmV0dXJuZWQgZnJvbSB0aGUgc2VydmVyLiB8NjQKLXxjb25uZWN0aW9uUG9vbC5zc2xDaXBoZXJTdWl0ZXMgfFRoZSBsaXN0IG9mIEpTU0UgY2lwaGVycyB0byBzdXBwb3J0IGZvciBTU0wgY29ubmVjdGlvbnMuIElmIHNwZWNpZmllZCwgb25seSB0aGUgY2lwaGVycyB0aGF0IGFyZSBsaXN0ZWQgYW5kIHN1cHBvcnRlZCB3aWxsIGJlIGVuYWJsZWQuIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBKVk0gZGVmYXVsdCBpcyB1c2VkLiAgfF9ub25lXwotfGNvbm5lY3Rpb25Qb29sLnNzbEVuYWJsZWRQcm90b2NvbHMgfFRoZSBsaXN0IG9mIFNTTCBwcm90b2NvbHMgdG8gc3VwcG9ydCBmb3IgU1NMIGNvbm5lY3Rpb25zLiBJZiBzcGVjaWZpZWQsIG9ubHkgdGhlIHByb3RvY29scyB0aGF0IGFyZSBsaXN0ZWQgYW5kIHN1cHBvcnRlZCB3aWxsIGJlIGVuYWJsZWQuIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBKVk0gZGVmYXVsdCBpcyB1c2VkLiAgfF9ub25lXwotfGNvbm5lY3Rpb25Qb29sLnNzbFNraXBDZXJ0VmFsaWRhdGlvbiB8Q29uZmlndXJlcyB0aGUgYFRydXN0TWFuYWdlcmAgdG8gdHJ1c3QgYWxsIGNlcnRzIHdpdGhvdXQgYW55IHZhbGlkYXRpb24uIFNob3VsZCBub3QgYmUgdXNlZCBpbiBwcm9kdWN0aW9uLnxmYWxzZQotfGNvbm5lY3Rpb25Qb29sLnRydXN0U3RvcmUgfEZpbGUgbG9jYXRpb24gZm9yIGEgU1NMIENlcnRpZmljYXRlIENoYWluIHRvIHVzZSB3aGVuIFNTTCBpcyBlbmFibGVkLiBJZiB0aGlzIHZhbHVlIGlzIG5vdCBwcm92aWRlZCBhbmQgU1NMIGlzIGVuYWJsZWQsIHRoZSBkZWZhdWx0IGBUcnVzdE1hbmFnZXJgIHdpbGwgYmUgdXNlZC4gfF9ub25lXwotfGNvbm5lY3Rpb25Qb29sLnRydXN0U3RvcmVQYXNzd29yZCB8VGhlIHBhc3N3b3JkIG9mIHRoZSBgdHJ1c3RTdG9yZWAgaWYgaXQgaXMgcGFzc3dvcmQtcHJvdGVjdGVkIHxfbm9uZV8KLXxjb25uZWN0aW9uUG9vbC52YWxpZGF0aW9uUmVxdWVzdCB8QSBzY3JpcHQgdGhhdCBpcyB1c2VkIHRvIHRlc3Qgc2VydmVyIGNvbm5lY3Rpdml0eS4gQSBnb29kIHNjcmlwdCB0byB1c2UgaXMgb25lIHRoYXQgZXZhbHVhdGVzIHF1aWNrbHkgYW5kIHJldHVybnMgbm8gZGF0YS4gVGhlIGRlZmF1bHQgc2ltcGx5IHJldHVybnMgYW4gZW1wdHkgc3RyaW5nLCBidXQgaWYgYSBncmFwaCBpcyByZXF1aXJlZCBieSBhIHBhcnRpY3VsYXIgcHJvdmlkZXIsIGEgZ29vZCB0cmF2ZXJzYWwgbWlnaHQgYmUgYGcuaW5qZWN0KClgLiB8XycnXwotfGhvc3RzIHxUaGUgbGlzdCBvZiBob3N0cyB0aGF0IHRoZSBkcml2ZXIgd2lsbCBjb25uZWN0IHRvLiB8bG9jYWxob3N0Ci18amFhc0VudHJ5IHxTZXRzIHRoZSBgQXV0aFByb3BlcnRpZXMuUHJvcGVydHkuSkFBU19FTlRSWWAgcHJvcGVydGllcyBmb3IgYXV0aGVudGljYXRpb24gdG8gR3JlbWxpbiBTZXJ2ZXIuIHxfbm9uZV8KLXxuaW9Qb29sU2l6ZSB8U2l6ZSBvZiB0aGUgcG9vbCBmb3IgaGFuZGxpbmcgcmVxdWVzdC9yZXNwb25zZSBvcGVyYXRpb25zLiB8YXZhaWxhYmxlIHByb2Nlc3NvcnMKLXxwYXNzd29yZCB8VGhlIHBhc3N3b3JkIHRvIHN1Ym1pdCBvbiByZXF1ZXN0cyB0aGF0IHJlcXVpcmUgYXV0aGVudGljYXRpb24uIHxfbm9uZV8KLXxwYXRoIHxUaGUgVVJMIHBhdGggdG8gdGhlIEdyZW1saW4gU2VydmVyLiB8Xy9ncmVtbGluXwotfHBvcnQgfFRoZSBwb3J0IG9mIHRoZSBHcmVtbGluIFNlcnZlciB0byBjb25uZWN0IHRvLiBUaGUgc2FtZSBwb3J0IHdpbGwgYmUgYXBwbGllZCBmb3IgYWxsIGhvc3RzLiB8ODE5MgotfHByb3RvY29sIHxTZXRzIHRoZSBgQXV0aFByb3BlcnRpZXMuUHJvcGVydHkuUFJPVE9DT0xgIHByb3BlcnRpZXMgZm9yIGF1dGhlbnRpY2F0aW9uIHRvIEdyZW1saW4gU2VydmVyLiB8X25vbmVfCi18c2VyaWFsaXplci5jbGFzc05hbWUgfFRoZSBmdWxseSBxdWFsaWZpZWQgY2xhc3MgbmFtZSBvZiB0aGUgYE1lc3NhZ2VTZXJpYWxpemVyYCB0aGF0IHdpbGwgYmUgdXNlZCB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBzZXJ2ZXIuIE5vdGUgdGhhdCB0aGUgc2VyaWFsaXplciBjb25maWd1cmVkIG9uIHRoZSBjbGllbnQgc2hvdWxkIGJlIHN1cHBvcnRlZCBieSB0aGUgc2VydmVyIGNvbmZpZ3VyYXRpb24uIHxfbm9uZV8KLXxzZXJpYWxpemVyLmNvbmZpZyB8QSBgTWFwYCBvZiBjb25maWd1cmF0aW9uIHNldHRpbmdzIGZvciB0aGUgc2VyaWFsaXplci4gfF9ub25lXwotfHVzZXJuYW1lIHxUaGUgdXNlcm5hbWUgdG8gc3VibWl0IG9uIHJlcXVlc3RzIHRoYXQgcmVxdWlyZSBhdXRoZW50aWNhdGlvbi4gfF9ub25lXwotfHdvcmtlclBvb2xTaXplIHxTaXplIG9mIHRoZSBwb29sIGZvciBoYW5kbGluZyBiYWNrZ3JvdW5kIHdvcmsuIHxhdmFpbGFibGUgcHJvY2Vzc29ycyAqIDIKLXw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotUGxlYXNlIHNlZSB0aGUgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzL3gueS56L2NvcmUvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvQ2x1c3Rlci5CdWlsZGVyLmh0bWxbQ2x1c3Rlci5CdWlsZGVyIGphdmFkb2NdIHRvIGdldCBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZXNlIHNldHRpbmdzLgotCi09PT09IEFsaWFzZXMKLQotU2NyaXB0cyBzdWJtaXR0ZWQgdG8gR3JlbWxpbiBTZXJ2ZXIgYXV0b21hdGljYWxseSBoYXZlIHRoZSBnbG9iYWxseSBjb25maWd1cmVkIGBHcmFwaGAgYW5kIGBUcmF2ZXJzYWxTb3VyY2VgIGluc3RhbmNlcwotbWFkZSBhdmFpbGFibGUgdG8gdGhlbS4gIFRoZXJlZm9yZSwgaWYgR3JlbWxpbiBTZXJ2ZXIgY29uZmlndXJlcyB0d28gYFRyYXZlcnNhbFNvdXJjZWAgaW5zdGFuY2VzIGNhbGxlZCAiZzEiIGFuZCAiZzIiCi1hIHNjcmlwdCBjYW4gc2ltcGx5IHJlZmVyZW5jZSB0aGVtIGRpcmVjdGx5IGFzOgotCi1bc291cmNlLGphdmFdCi1jbGllbnQuc3VibWl0KCJnMS5WKCkiKQotY2xpZW50LnN1Ym1pdCgiZzIuVigpIikKLQotV2hpbGUgdGhpcyBpcyBhbiBhY2NlcHRhYmxlIHdheSB0byBzdWJtaXQgc2NyaXB0cywgaXQgaGFzIHRoZSBkb3duc2lkZSBvZiBmb3JjaW5nIHRoZSBjbGllbnQgdG8gZW5jb2RlIHRoZSBzZXJ2ZXItc2lkZQotdmFyaWFibGUgbmFtZSBkaXJlY3RseSBpbnRvIHRoZSBzY3JpcHQgYmVpbmcgc2VudC4gIElmIHRoZSBzZXJ2ZXIgY29uZmlndXJhdGlvbiBldmVyIGNoYW5nZWQgc3VjaCB0aGF0ICJnMSIgYmVjYW1lCi0iZzEwMCIsIHRoZSBjbGllbnQtc2lkZSBjb2RlIG1pZ2h0IGhhdmUgdG8gc2VlIGEgc2lnbmlmaWNhbnQgYW1vdW50IG9mIGNoYW5nZS4gIERlY291cGxpbmcgdGhlIHNjcmlwdCBjb2RlIGZyb20gdGhlCi1zZXJ2ZXIgY29uZmlndXJhdGlvbiBjYW4gYmUgbWFuYWdlZCBieSB0aGUgYGFsaWFzYCBtZXRob2Qgb24gYENsaWVudGAgYXMgZm9sbG93czoKLQotW3NvdXJjZSxqYXZhXQotQ2xpZW50IGcxQ2xpZW50ID0gY2xpZW50LmFsaWFzKCJnMSIpCi1DbGllbnQgZzJDbGllbnQgPSBjbGllbnQuYWxpYXMoImcyIikKLWcxQ2xpZW50LnN1Ym1pdCgiZy5WKCkiKQotZzJDbGllbnQuc3VibWl0KCJnLlYoKSIpCi0KLVRoZSBhYm92ZSBjb2RlIGRlbW9uc3RyYXRlcyBob3cgdGhlIGBhbGlhc2AgbWV0aG9kIGNhbiBiZSB1c2VkIHN1Y2ggdGhhdCB0aGUgc2NyaXB0IG5lZWQgb25seSBjb250YWluIGEgcmVmZXJlbmNlCi10byAiZyIgYW5kICJnMSIgYW5kICJnMiIgYXJlIGF1dG9tYXRpY2FsbHkgcmVib3VuZCBpbnRvICJnIiBvbiB0aGUgc2VydmVyLXNpZGUuCi0KLT09PT0gU2VyaWFsaXphdGlvbgotCi1XaGVuIHVzaW5nIEdyeW8gc2VyaWFsaXphdGlvbiAodGhlIGRlZmF1bHQgc2VyaWFsaXplciBmb3IgdGhlIGRyaXZlciksIGl0IGlzIGltcG9ydGFudCB0aGF0IHRoZSBjbGllbnQgYW5kIHNlcnZlcgotaGF2ZSB0aGUgc2FtZSBzZXJpYWxpemVycyBjb25maWd1cmVkIG9yIGVsc2Ugb25lIG9yIHRoZSBvdGhlciB3aWxsIGV4cGVyaWVuY2Ugc2VyaWFsaXphdGlvbiBleGNlcHRpb25zIGFuZCBmYWlsIHRvCi1hbHdheXMgY29tbXVuaWNhdGUuICBEaXNjcmVwYW5jeSBpbiBzZXJpYWxpemVyIHJlZ2lzdHJhdGlvbiBiZXR3ZWVuIGNsaWVudCBhbmQgc2VydmVyIGNhbiBoYXBwZW4gZmFpcmx5IGVhc2lseSBhcwotZ3JhcGhzIHdpbGwgYXV0b21hdGljYWxseSBpbmNsdWRlIHNlcmlhbGl6ZXJzIG9uIHRoZSBzZXJ2ZXItc2lkZSwgdGh1cyBsZWF2aW5nIHRoZSBjbGllbnQgdG8gYmUgY29uZmlndXJlZCBtYW51YWxseS4KLVRoaXMgY2FuIGJlIGRvbmUgbWFudWFsbHkgYXMgZm9sbG93czoKLQotW3NvdXJjZSxqYXZhXQotR3J5b01hcHBlciBrcnlvID0gR3J5b01hcHBlci5idWlsZCgpLmFkZFJlZ2lzdHJ5KFRpdGFuSW9SZWdpc3RyeS5JTlNUQU5DRSkuY3JlYXRlKCk7Ci1NZXNzYWdlU2VyaWFsaXplciBzZXJpYWxpemVyID0gbmV3IEdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAoa3J5byk7Ci1DbHVzdGVyIGNsdXN0ZXIgPSBDbHVzdGVyLmJ1aWxkKCkKLSAgICAgICAgICAgICAgICAuc2VyaWFsaXplcihzZXJpYWxpemVyKQotICAgICAgICAgICAgICAgIC5jcmVhdGUoKTsKLUNsaWVudCBjbGllbnQgPSBjbHVzdGVyLmNvbm5lY3QoKS5pbml0KCk7Ci0KLVRoZSBhYm92ZSBjb2RlIGRlbW9uc3RyYXRlcyB1c2luZyB0aGUgYFRpdGFuSW9SZWdpc3RyeWAgd2hpY2ggaXMgYW4gYElvUmVnaXN0cnlgIGluc3RhbmNlLiAgSXQgdGVsbHMgdGhlIHNlcmlhbGl6ZXIKLXdoYXQgY2xhc3NlcyAoZnJvbSBUaXRhbiBpbiB0aGlzIGNhc2UpIHRvIGF1dG8tcmVnaXN0ZXIgZHVyaW5nIHNlcmlhbGl6YXRpb24uICBHcmVtbGluIFNlcnZlciByb3VnaGx5IHVzZXMgdGhpcyBzYW1lCi1hcHByb2FjaCB3aGVuIGl0IGNvbmZpZ3VyZXMgaXQncyBzZXJpYWxpemVycywgc28gdXNpbmcgdGhpcyBzYW1lIG1vZGVsIHdpbGwgZW5zdXJlIGNvbXBhdGliaWxpdHkgd2hlbiBtYWtpbmcgcmVxdWVzdHMuCi0KLVtbY29ubmVjdGluZy12aWEtcHl0aG9uXV0KLT09PSBDb25uZWN0aW5nIHZpYSBQeXRob24KLQotW3NvdXJjZSxweXRob25dCi0tLS0tCi1waXAgaW5zdGFsbCBncmVtbGlucHl0aG9uCi0tLS0tCi0KLVRpbmtlclBvcDMgYWxzbyBpbmNsdWRlcyBhIGNsaWVudCBmb3IgUHl0aG9uLWJhc2VkIGFwcGxpY2F0aW9ucy4gIEl0IGlzIHJlZmVycmVkIHRvIGFzIEdyZW1saW4tUHl0aG9uIERyaXZlci4KLVRoZSBgQ2xpZW50YCBjbGFzcyBpbXBsZW1lbnRhdGlvbi9pbnRlcmZhY2UgaXMgYmFzZWQgb24gdGhlIEphdmEgRHJpdmVyLCB3aXRoIHNvbWUgcmVzdHJpY3Rpb25zLiBNb3N0IG5vdGFibHksCi1HcmVtbGluLVB5dGhvbiBkb2VzIG5vdCB5ZXQgaW1wbGVtZW50IHRoZSBgQ2x1c3RlcmAgY2xhc3MuIEluc3RlYWQsIGBDbGllbnRgIGlzIGluc3RhbnRpYXRlZCBkaXJlY3RseS4KLVVzYWdlIGlzIGFzIGZvbGxvd3M6Ci0KLVtzb3VyY2UscHl0aG9uXQotLS0tLQotZnJvbSBncmVtbGluX3B5dGhvbi5kcml2ZXIgaW1wb3J0IGNsaWVudCA8MT4KLWNsaWVudCA9IGNsaWVudC5DbGllbnQoJ3dzOi8vbG9jYWxob3N0OjgxODIvZ3JlbWxpbicsICdnJykgPDI+Ci0tLS0tCi0KLTwxPiBJbXBvcnQgdGhlIEdyZW1saW4tUHl0aG9uIGBjbGllbnRgIG1vZHVsZS4KLTwyPiBPcGVucyBhIHJlZmVyZW5jZSB0byBgbG9jYWxob3N0YCAtIG5vdGUgdGhhdCB0aGVyZSBhcmUgdmFyaW91cyBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBjYW4gYmUgcGFzc2VkCi10byB0aGUgYENsaWVudGAgb2JqZWN0IHVwb24gaW5zdGFudGlhdGlvbiBhcyBrZXl3b3JkIGFyZ3VtZW50cy4KLQotT25jZSBhIGBDbGllbnRgIGluc3RhbmNlIGlzIHJlYWR5LCBpdCBpcyBwb3NzaWJsZSB0byBpc3N1ZSBzb21lIEdyZW1saW46Ci0KLVtzb3VyY2UscHl0aG9uXQotLS0tLQotcmVzdWx0X3NldCA9IGNsaWVudC5zdWJtaXQoIlsxLDIsMyw0XSIpICA8MT4KLWZ1dHVyZV9yZXN1bHRzID0gcmVzdWx0X3NldC5hbGwoKSAgPDI+Ci1yZXN1bHRzID0gZnV0dXJlX3Jlc3VsdHMucmVzdWx0KCkgPDM+Ci1hc3NlcnQgcmVzdWx0cyA9PSBbMSwgMiwgMywgNF0gPDQ+Ci0KLWZ1dHVyZV9yZXN1bHRfc2V0ID0gY2xpZW50LnN1Ym1pdEFzeW5jKCJbMSwyLDMsNF0iKSA8NT4KLXJlc3VsdF9zZXQgPSBmdXR1cmVfcmVzdWx0X3NldC5yZXN1bHQoKSA8Nj4KLXJlc3VsdCA9IHJlc3VsdF9zZXQub25lKCkgPDc+Ci1hc3NlcnQgcmVzdWx0cyA9PSBbMSwgMiwgMywgNF0gPDg+Ci1hc3NlcnQgcmVzdWx0X3NldC5kb25lLmRvbmUoKSA8OT4KLQotY2xpZW50LmNsb3NlKCkgPDEwPgotLS0tLQotCi08MT4gU3VibWl0IGEgc2NyaXB0IHRoYXQgc2ltcGx5IHJldHVybnMgYSBgTGlzdGAgb2YgaW50ZWdlcnMuICBUaGlzIG1ldGhvZCBibG9ja3MgdW50aWwgdGhlIHJlcXVlc3QgaXMgd3JpdHRlbiB0bwotdGhlIHNlcnZlciBhbmQgYSBgUmVzdWx0U2V0YCBpcyBjb25zdHJ1Y3RlZC4KLTwyPiBFdmVuIHRob3VnaCB0aGUgYFJlc3VsdFNldGAgaXMgY29uc3RydWN0ZWQsIGl0IGRvZXMgbm90IG1lYW4gdGhhdCB0aGUgc2VydmVyIGhhcyBzZW50IGJhY2sgdGhlIHJlc3VsdHMgKG9yIGV2ZW4KLWV2YWx1YXRlZCB0aGUgc2NyaXB0IHBvdGVudGlhbGx5KS4gIFRoZSBgUmVzdWx0U2V0YCBpcyBqdXN0IGEgaG9sZGVyIHRoYXQgaXMgYXdhaXRpbmcgdGhlIHJlc3VsdHMgZnJvbSB0aGUgc2VydmVyLiBUaGUgYGFsbGAgbWV0aG9kCi1yZXR1cm5zIGEgYGNvbmN1cnJlbnQuZnV0dXJlcy5GdXR1cmVgIHRoYXQgcmVzb2x2ZXMgdG8gYSBsaXN0IHdoZW4gaXQgaXMgY29tcGxldGUuCi08Mz4gQmxvY2sgdW50aWwgdGhlIHRoZSBzY3JpcHQgaXMgZXZhbHVhdGVkIGFuZCByZXN1bHRzIGFyZSBzZW50IGJhY2sgYnkgdGhlIHNlcnZlci4KLTw0PiBWZXJpZnkgdGhlIHJlc3VsdC4KLTw1PiBTdWJtaXQgdGhlIHNhbWUgc2NyaXB0IHRvIHRoZSBzZXJ2ZXIgYnV0IGRvbid0IGJsb2NrLgotPDY+IFdhaXQgdW50aWwgcmVxdWVzdCBpcyB3cml0dGVuIHRvIHRoZSBzZXJ2ZXIgYW5kIGBSZXN1bHRTZXRgIGlzIGNvbnN0cnVjdGVkLgotPDc+IFJlYWQgYSBzaW5nbGUgcmVzdWx0IG9mZiB0aGUgcmVzdWx0IHN0cmVhbS4KLTw4PiBBZ2FpbiwgdmVyaWZ5IHRoZSByZXN1bHQuCi08OT4gVmVyaWZ5IHRoYXQgdGhlIGFsbCByZXN1bHRzIGhhdmUgYmVlbiByZWFkIGFuZCBzdHJlYW0gaXMgY2xvc2VkLgotPDEwPiBDbG9zZSBjbGllbnQgYW5kIHVuZGVybHlpbmcgcG9vbCBjb25uZWN0aW9ucy4KLQotPT09PSBDb25maWd1cmF0aW9uCi0KLVRoZSBmb2xsb3dpbmcgdGFibGUgZGVzY3JpYmVzIHRoZSB2YXJpb3VzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIEdyZW1saW4tUHl0aG9uIERyaXZlci4gVGhleQotY2FuIGJlIHBhc3NlZCB0byB0aGUgYENsaWVudGAgaW5zdGFuY2UgYXMga2V5d29yZCBhcmd1bWVudHM6Ci0KLVt3aWR0aD0iMTAwJSIsY29scz0iMywxMCxeMiIsb3B0aW9ucz0iaGVhZGVyIl0KLXw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLXxLZXkgfERlc2NyaXB0aW9uIHxEZWZhdWx0Ci18cHJvdG9jb2xfZmFjdG9yeSB8QSBjYWxsYWJsZSB0aGF0IHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgYEFic3RyYWN0QmFzZVByb3RvY29sYC4gfGBncmVtbGluX3B5dGhvbi5kcml2ZXIucHJvdG9jb2wuR3JlbWxpblNlcnZlcldTUHJvdG9jb2xgCi18dHJhbnNwb3J0X2ZhY3RvcnkgfEEgY2FsbGFibGUgdGhhdCByZXR1cm5zIGFuIGluc3RhbmNlIG9mIGBBYnN0cmFjdEJhc2VUcmFuc3BvcnRgLiB8YGdyZW1saW5fcHl0aG9uLmRyaXZlci50b3JuYWRvLnRyYW5zcG9ydC5Ub3JuYWRvVHJhbnNwb3J0YAotfHBvb2xfc2l6ZSB8VGhlIG51bWJlciBvZiBjb25uZWN0aW9ucyB1c2VkIGJ5IHRoZSBwb29sLiB8NAotfG1heF93b3JrZXJzIHxNYXhpbXVtIG51bWJlciBvZiB3b3JrZXIgdGhyZWFkcy4gfE51bWJlciBvZiBDUFVzICogNQotfG1lc3NhZ2Vfc2VyaWFsaXplciB8VGhlIG1lc3NhZ2Ugc2VyaWFsaXplciBpbXBsZW1lbnRhdGlvbi58YGdyZW1saW5fcHl0aG9uLmRyaXZlci5zZXJpYWxpemVyLkdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJgCi18cGFzc3dvcmQgfFRoZSBwYXNzd29yZCB0byBzdWJtaXQgb24gcmVxdWVzdHMgdGhhdCByZXF1aXJlIGF1dGhlbnRpY2F0aW9uLiB8IiIKLXx1c2VybmFtZSB8VGhlIHVzZXJuYW1lIHRvIHN1Ym1pdCBvbiByZXF1ZXN0cyB0aGF0IHJlcXVpcmUgYXV0aGVudGljYXRpb24uIHwiIgotfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCiA9PT0gQ29ubmVjdGluZyB2aWEgSFRUUAogCiBpbWFnZTpncmVtbGluLXJleHN0ZXIucG5nW3dpZHRoPTIyNSxmbG9hdD1sZWZ0XSBXaGlsZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgR3JlbWxpbiBTZXJ2ZXIgaXMgdG8gcHJvdmlkZSBhCkBAIC05MzYsMTEgKzgwMiwxNSBAQAogd2l0aCBHcmVtbGluIFNlcnZlci4gICBJdCBhbHNvIG1heSByZXByZXNlbnQgYW4gZWFzaWVyIHVwZ3JhZGUgcGF0aCBmcm9tIGxpbms6aHR0cHM6Ly9naXRodWIuY29tL3RpbmtlcnBvcC9yZXhzdGVyW1JleHN0ZXJdCiBhcyB0aGUgQVBJIGZvciB0aGUgZW5kcG9pbnQgaXMgdmVyeSBzaW1pbGFyIHRvIFJleHN0ZXIncyBsaW5rOmh0dHBzOi8vZ2l0aHViLmNvbS90aW5rZXJwb3AvcmV4c3Rlci93aWtpL0dyZW1saW4tRXh0ZW5zaW9uW0dyZW1saW4gRXh0ZW5zaW9uXS4KIAorSU1QT1JUQU5UOiBUaW5rZXJQb3AgcHJvdmlkZXMgYW5kIHN1cHBvcnRzIHRoaXMgSFRUUCBlbmRwb2ludCBhcyBhIGNvbnZlbmllbmNlIGFuZCBmb3IgbGVnYWN5IHJlYXNvbnMsIGJ1dCB1c2VycyBzaG91bGQKK3ByZWZlciB0aGUgcmVjb21tZW5kZWQgYXBwcm9hY2ggb2YgYnl0Y29kZSBiYXNlZCByZXF1ZXN0cyBhcyBkZXNjcmliZWQgaW4gPDxjb25uZWN0aW5nLWdyZW1saW4sQ29ubmVjdGluZyBHcmVtbGluPj4KK3NlY3Rpb24uCisKIEdyZW1saW4gU2VydmVyIHByb3ZpZGVzIGZvciBhIHNpbmdsZSBIVFRQIGVuZHBvaW50IC0gYSBHcmVtbGluIGV2YWx1YXRvciAtIHdoaWNoIGFsbG93cyB0aGUgc3VibWlzc2lvbiBvZiBhIEdyZW1saW4KIHNjcmlwdCBhcyBhIHJlcXVlc3QuICBGb3IgZWFjaCByZXF1ZXN0LCBpdCByZXR1cm5zIGEgcmVzcG9uc2UgY29udGFpbmluZyB0aGUgc2VyaWFsaXplZCByZXN1bHRzIG9mIHRoYXQgc2NyaXB0LgogVG8gZW5hYmxlIHRoaXMgZW5kcG9pbnQsIEdyZW1saW4gU2VydmVyIG5lZWRzIHRvIGJlIGNvbmZpZ3VyZWQgd2l0aCB0aGUgYEh0dHBDaGFubmVsaXplcmAsIHdoaWNoIHJlcGxhY2VzIHRoZSBkZWZhdWx0LgotVGhlIGBXc0FuZEh0dHBDaGFubmVsaXplcmAgbWF5IGFsc28gYmUgY29uZmlndXJlZCB0byBlbmFibGUgYm90aCBXZWJTb2NrZXRzIGFuZCB0aGUgUkVTVCBlbmRwb2ludC4KLWBXZWJTb2NrZXRDaGFubmVsaXplcmAsIGluIHRoZSBjb25maWd1cmF0aW9uIGZpbGU6CitUaGUgYFdzQW5kSHR0cENoYW5uZWxpemVyYCBtYXkgYWxzbyBiZSBjb25maWd1cmVkIHRvIGVuYWJsZSBib3RoIFdlYlNvY2tldHMgYW5kIHRoZSBSRVNUIGVuZHBvaW50IGluIHRoZSBjb25maWd1cmF0aW9uCitmaWxlOgogCiBbc291cmNlLHlhbWxdCiBjaGFubmVsaXplcjogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIuY2hhbm5lbC5IdHRwQ2hhbm5lbGl6ZXIKQEAgLTEwMTIsMTIyICs4ODIsMTIgQEAKIHF1aXRlIHBvc3NpYmxlIHRoYXQgc3VjaCBhIHNjcmlwdCB3aWxsIGdlbmVyYXRlIGBPdXRPZk1lbW9yeUVycm9yYCBleGNlcHRpb25zIG9uIHRoZSBzZXJ2ZXIuICBDb25zaWRlciB0aGUgZGVmYXVsdAogV2ViU29ja2V0IGNvbmZpZ3VyYXRpb24sIHdoaWNoIHN1cHBvcnRzIHN0cmVhbWluZywgaWYgdGhhdCB0eXBlIG9mIHVzZSBjYXNlIGlzIHJlcXVpcmVkLgogCi1bW2Nvbm5lY3RpbmctdmlhLXJlbW90ZWdyYXBoXV0KLT09PSBDb25uZWN0aW5nIHZpYSB3aXRoUmVtb3RlCi0KLVtzb3VyY2UseG1sXQotLS0tLQotPGRlcGVuZGVuY3k+Ci0gICA8Z3JvdXBJZD5vcmcuYXBhY2hlLnRpbmtlcnBvcDwvZ3JvdXBJZD4KLSAgIDxhcnRpZmFjdElkPmdyZW1saW4tZHJpdmVyPC9hcnRpZmFjdElkPgotICAgPHZlcnNpb24+eC55Lno8L3ZlcnNpb24+Ci08L2RlcGVuZGVuY3k+Ci0tLS0tCi0KLWltYWdlOnJlbW90ZS1ncmFwaC5wbmdbd2lkdGg9MTQ1LGZsb2F0PWxlZnRdIEEgYFRyYXZlcnNhbFNvdXJjZWAgY2FuIGJlIGNvbmZpZ3VyZWQgZm9yICJyZW1vdGUiIGV4ZWN1dGlvbiB3aGljaAotcHJvdmlkZXMgYW4gaW50ZXJlc3RpbmcgYWx0ZXJuYXRpdmUgdG8gdGhlIG90aGVyIG1ldGhvZHMgZm9yIGNvbm5lY3RpbmcgdG8gR3JlbWxpbiBTZXJ2ZXIuIEl0IGlzIGludGVyZXN0aW5nIGluIHRoYXQKLWFsbCBvdGhlciBtZXRob2RzIGludm9sdmUgY29uc3RydWN0aW9uIG9mIGEgYFN0cmluZ2AgcmVwcmVzZW50YXRpb24gb2YgdGhlIGBUcmF2ZXJzYWxgIHdoaWNoIGlzIHRoZW4gc3VibWl0dGVkIGFzIGEKLXNjcmlwdCB0byBHcmVtbGluIFNlcnZlciAodmlhIGRyaXZlciBvciBIVFRQKS4gVGhpcyBhcHByb2FjaCBpcyBxdWl0ZSBha2luIHRvIFNRTCwgd2hlcmUgcXVlcnkgc3RyaW5ncyBhcmUgZW1iZWRkZWQKLWludG8gY29kZSBhbmQgc3VibWl0dGVkIHRvIGEgZGF0YWJhc2Ugc2VydmVyLiBXaGlsZSB0aGVyZSBhcmUgcGF0dGVybnMgZm9yIHRha2luZyB0aGlzIGFwcHJvYWNoIHRoYXQgY2FuIGxlYWQgdG8KLW1haW50YWluYWJsZSBhcHBsaWNhdGlvbiBjb2RlLCB1c2luZyBhICJyZW1vdGUiIHRyYXZlcnNhbCBjb3VsZCBiZSBhIGJldHRlciBtZXRob2QgYXMgaXQgYnJpbmdzIHNvbWUgZ29vZCBiZW5lZml0cwotd2l0aCBpdDoKLQotKiBHZXQgYXV0by1jb21wbGV0ZSB3aGVuIHdyaXRpbmcgdHJhdmVyc2FscyBpbiBhbiBJREUuCi0qIEdldCBjb21waWxlLXRpbWUgZXJyb3JzIGluIHRyYXZlcnNhbCB3cml0aW5nLgotKiBHZXQgdGhlIGZlZWwgb2Ygd29ya2luZyB3aXRoIGFuIGVtYmVkZGVkIGRhdGFiYXNlLgotCi1PbmUgd2F5IHRvIGNyZWF0ZSBhIGBUcmF2ZXJzYWxgIGluc3RhbmNlIHRoYXQgaXMgcmVtb3RlLWVuYWJsZWQgaXMgYnkgY29uZmlndXJhdGlvbiBmaWxlLiBIZXJlIGlzIGFuIGV4YW1wbGUgb2Ygd2hhdAotdGhhdCBmaWxlIGxvb2tzIGxpa2U6Ci0KLVtzb3VyY2UscHJvcGVydGllc10KLS0tLS0KLWdyZW1saW4ucmVtb3RlLnJlbW90ZUNvbm5lY3Rpb25DbGFzcz1vcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5yZW1vdGUuRHJpdmVyUmVtb3RlQ29ubmVjdGlvbgotZ3JlbWxpbi5yZW1vdGUuZHJpdmVyLmNsdXN0ZXJGaWxlPWNvbmYvcmVtb3RlLW9iamVjdHMueWFtbAotZ3JlbWxpbi5yZW1vdGUuZHJpdmVyLnNvdXJjZU5hbWU9ZwotLS0tLQotCi1UaGUgYGdyZW1saW4ucmVtb3RlLnJlbW90ZUNvbm5lY3Rpb25DbGFzc2Agc2hvdWxkIGJlIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgUmVtb3RlQ29ubmVjdGlvbmAgaW50ZXJmYWNlIGluCi1gZ3JlbWxpbi1jb3JlYC4gSW4gdGhpcyBjYXNlLCBpdCBwb2ludHMgYXQgdGhlIGBncmVtbGluLWRyaXZlcmAgaW1wbGVtZW50YXRpb24sIGNhbGxlZCBgRHJpdmVyUmVtb3RlQ29ubmVjdGlvbmAuIFRoZQotb3RoZXIgc2V0dGluZywgYGdyZW1saW4ucmVtb3RlLmRyaXZlci5jbHVzdGVyRmlsZWAsIGlzIGEgY29uZmlndXJhdGlvbiB0byBgRHJpdmVyUmVtb3RlQ29ubmVjdGlvbmAsIGFuZCBpdAotcHJvdmlkZXMgYSBwb2ludGVyIHRvIHRoZSBjb25maWcgZmlsZSB0byB1c2UgdG8gY29uc3RydWN0IGEgYGdyZW1saW4tZHJpdmVyYCBgQ2x1c3RlcmAgb2JqZWN0IHRvIGJlIHV0aWxpemVkIHdoZW4KLWNvbm5lY3RpbmcgdG8gR3JlbWxpbiBTZXJ2ZXIuIFBsZWFzZSBzZWUgdGhlIDw8Y29ubmVjdGluZy12aWEtamF2YSwgIkNvbm5lY3RpbmcgVmlhIEphdmEiPj4gc2VjdGlvbiBmb3IgbW9yZQotaW5mb3JtYXRpb24gb24gdGhvc2UgY2xhc3NlcyBhbmQgdGhlaXIgdXNhZ2UuIEZpbmFsbHksIHRoZSBgZ3JlbWxpbi5yZW1vdGUuZHJpdmVyLnNvdXJjZU5hbWVgIHNldHRpbmcgdGVsbHMgdGhlCi1gRHJpdmVyUmVtb3RlQ29ubmVjdGlvbmAgdGhlIG5hbWUgb2YgdGhlIGBUcmF2ZXJzYWxTb3VyY2VgIGluIEdyZW1saW4gU2VydmVyIHRvIGNvbm5lY3QgdG8uCi0KLUdyZW1saW4gU2VydmVyIG5lZWRzIHRvIGJlIHJ1bm5pbmcgZm9yIHRoaXMgZXhhbXBsZSB0byB3b3JrLiBVc2UgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uOgotCi1bc291cmNlLGJvdXJuZV0KLSQgYmluL2dyZW1saW4tc2VydmVyLnNoIGNvbmYvZ3JlbWxpbi1zZXJ2ZXItbW9kZXJuLnlhbWwKLQotVGhlcmUgYXJlIHNldmVyYWwgd2F5cyB0byBjb25maWd1cmUgYSAicmVtb3RlIiB0cmF2ZXJzYWwsIGJ1dCB0aGUgbW9zdCBkaXJlY3Qgd2F5IGlzIHRvIHVzZSB0aGUgaGVscGVyIG1ldGhvZHMgb24KLWBBbm9ueW1vdXNUcmF2ZXJzYWxTb3VyY2VgLiBUaGVzZSBtZXRob2RzIGNhbiBiZSBzdGF0aWNhbGx5IGltcG9ydGVkOgotCi1bc291cmNlLGphdmFdCi1pbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuQW5vbnltb3VzVHJhdmVyc2FsU291cmNlLnRyYXZlcnNhbDsKLQotdG8gYWxsb3cgZm9yIHN5bnRheCBhcyBmb2xsb3dzOgotCi1bZ3JlbWxpbi1ncm9vdnldCi0tLS0tCi1nID0gdHJhdmVyc2FsKCkud2l0aFJlbW90ZSgnY29uZi9yZW1vdGUtZ3JhcGgucHJvcGVydGllcycpCi1nLlYoKS52YWx1ZU1hcCh0cnVlKQotZy5jbG9zZSgpCi0tLS0tCi0KLU5vdGUgdGhlIGNhbGwgdG8gYGNsb3NlKClgIGFib3ZlLiBUaGUgY29uc3RydWN0aW9uIG9mICJnIiB1c2luZyB0aGUgcHJvcGVydGllcyBmaWxlIGludGVybmFsbHkgaW5zdGFudGlhdGVzIGEKLWBDbGllbnRgIGluc3RhbmNlIHRoYXQgY2FuIG9ubHkgYmUgcmVsZWFzZWQgYnkgImNsb3NpbmciIHRoZSBgR3JhcGhUcmF2ZXJzYWxTb3VyY2VgLiBJdCBpcyBpbXBvcnRhbnQgdG8gdGFrZSB0aGF0Ci1zdGVwIHRvIHJlbGVhc2UgcmVzb3VyY2VzIGNyZWF0ZWQgaW4gdGhhdCBzdGVwLgotCi1JZiB3b3JraW5nIHdpdGggbXVsdGlwbGUgcmVtb3RlIGBUcmF2ZXJzYWxTb3VyY2VgIGluc3RhbmNlcyBpdCBpcyBtb3JlIGVmZmljaWVudCB0byBjb25zdHJ1Y3QgYSBgQ2xpZW50YCBvYmplY3QgYW5kCi10aGVuIHJlLXVzZSBpdC4KLQotW2dyZW1saW4tZ3Jvb3Z5XQotLS0tLQotY2x1c3RlciA9IENsdXN0ZXIub3BlbignY29uZi9yZW1vdGUtb2JqZWN0cy55YW1sJykKLWNsaWVudCA9IGNsdXN0ZXIuY29ubmVjdCgpCi1nID0gdHJhdmVyc2FsKCkud2l0aFJlbW90ZShEcml2ZXJSZW1vdGVDb25uZWN0aW9uLnVzaW5nKGNsaWVudCwgImciKSkKLWcuVigpLnZhbHVlTWFwKHRydWUpCi1nLmNsb3NlKCkKLWNsdXN0ZXIuY2xvc2UoKQotLS0tLQotCi1JZiB0aGUgYENsaWVudGAgaW5zdGFuY2UgaXMgc3VwcGxpZWQgZXh0ZXJuYWxseSwgYXMgaXMgc2hvd24gYWJvdmUsIHRoZW4gaXQgaXMgbm90IGNsb3NlZCBpbXBsaWNpdGx5IGJ5IHRoZSBjbG9zZSBvZgotImciLiAgSW4gdGhpcyBjYXNlLCB0aGUgYENsaWVudGAgYW5kIGBDbHVzdGVyYCBtdXN0IGJvdGggYmUgY2xvc2VkIGV4cGxpY2l0bHkuIENsb3NpbmcgImciIGFuZCB0aGUgImNsdXN0ZXIiIGFyZW4nCi10IGFjdHVhbGx5IGJvdGggbmVjZXNzYXJ5IC0gdGhlIGNsb3NlIG9mIGEgYENsdXN0ZXJgIHdpbGwgY2xvc2UgYWxsIGBDbGllbnRgIGluc3RhbmNlIHNwYXduZWQgYnkgdGhlIGBDbHVzdGVyYC4KLQotSU1QT1JUQU5UOiBUcmF2ZXJzYWxzIHNwYXduZWQgZnJvbSBgd2l0aFJlbW90ZSgpYCB1c2UgdGhlIGBUcmF2ZXJzYWxPcFByb2Nlc3NvcmAgaW4gR3JlbWxpbiBTZXJ2ZXIgd2hpY2ggcmVxdWlyZXMgYQotY2FjaGUgdG8gZW5hYmxlIHRoZSByZXRyaWV2YWwgb2Ygc2lkZS1lZmZlY3RzIChpZiB0aGUgYFRyYXZlcnNhbGAgcHJvZHVjZXMgYW55KS4gVGhhdCBjYWNoZSBjYW4gYmUgY29uZmlndXJlZCAoZS5nLgotY29udHJvbGxpbmcgZXZpY3Rpb24gdGltZXMgYW5kIHNpemluZykgY2FuIGJlIGRvbmUgaW4gdGhlIEdyZW1saW4gU2VydmVyIGNvbmZpZ3VyYXRpb24gZmlsZSBhcyBkZXNjcmliZWQKLTw8dHJhdmVyc2Fsb3Bwcm9jZXNzb3IsIGhlcmU+Pi4gSWYgc2lkZS1lZmZlY3RzIGFyZSBuZXZlciByZXRyaWV2ZWQsIGl0IGlzIGFjY2VwdGFibGUgdG8gc2V0IHRoZSBgY2FjaGVNYXhTaXplYCB0bwotemVybyB0byBjb21wbGV0ZWx5IGRpc2FibGUgdGhlIGNhY2hlLgotCi1GaW5hbGx5LCBHcmVtbGluIGBCeXRlY29kZWAgc3VwcG9ydHMgdGhlIGVuY29kaW5nIG9mIGJpbmRpbmdzIHdoaWNoIGFsbG93IEdyZW1saW5TZXJ2ZXIgdG8gY2FjaGUgdHJhdmVyc2FscyB0aGF0IHdpbGwKLWJlIHJldXNlZCBvdmVyIGFuZCBvdmVyIGFnYWluIHNhdmUgdGhhdCBzb21lIHBhcmFtZXRlcml6YXRpb24gbWF5IGNoYW5nZS4gVGh1cywgaW5zdGVhZCBvZiB0cmFuc2xhdGluZywgY29tcGlsaW5nLCBhbmQKLXRoZW4gZXhlY3V0aW5nIGVhY2ggc3VibWl0dGVkIGJ5dGVjb2RlLCBpdCBpcyBwb3NzaWJsZSB0byBzaW1wbHkgZXhlY3V0ZS4gVG8gZXhwcmVzcyBiaW5kaW5ncyBpbiBHcmVtbGluLUphdmEgYW5kCi1HcmVtbGluLUdyb292eSwgdXNlIGBCaW5kaW5nc2AuCi0KLVtncmVtbGluLWdyb292eV0KLS0tLS0KLWNsdXN0ZXIgPSBDbHVzdGVyLm9wZW4oJ2NvbmYvcmVtb3RlLW9iamVjdHMueWFtbCcpCi1jbGllbnQgPSBjbHVzdGVyLmNvbm5lY3QoKQotYiA9IEJpbmRpbmdzLmluc3RhbmNlKCkKLWcgPSB0cmF2ZXJzYWwoKS53aXRoUmVtb3RlKERyaXZlclJlbW90ZUNvbm5lY3Rpb24udXNpbmcoY2xpZW50LCAiZyIpKQotZy5WKGIub2YoJ2lkJywxKSkub3V0KCdjcmVhdGVkJykudmFsdWVzKCduYW1lJykKLWcuVihiLm9mKCdpZCcsNCkpLm91dCgnY3JlYXRlZCcpLnZhbHVlcygnbmFtZScpCi1nLlYoYi5vZignaWQnLDQpKS5vdXQoJ2NyZWF0ZWQnKS52YWx1ZXMoJ25hbWUnKS5nZXRCeXRlY29kZSgpCi1nLlYoYi5vZignaWQnLDQpKS5vdXQoJ2NyZWF0ZWQnKS52YWx1ZXMoJ25hbWUnKS5nZXRCeXRlY29kZSgpLmdldEJpbmRpbmdzKCkKLWNsdXN0ZXIuY2xvc2UoKQotLS0tLQotCi1Cb3RoIHRyYXZlcnNhbHMgYXJlIGFic3RyYWN0bHkgZGVmaW5lZCBhcyBgZy5WKGlkKS5vdXQoJ2NyZWF0ZWQnKS52YWx1ZXMoJ25hbWUnKWAgYW5kIHRodXMsIHRoZSBmaXJzdCBzdWJtaXNzaW9uCi1jYW4gYmUgY2FjaGVkIGZvciBmYXN0ZXIgZXZhbHVhdGlvbiBvbiB0aGUgbmV4dCBzdWJtaXNzaW9uLgotCiA9PT0gQ29uZmlndXJpbmcKIAogVGhlIGBncmVtbGluLXNlcnZlci5zaGAgZmlsZSBzZXJ2ZXMgbXVsdGlwbGUgcHVycG9zZXMuICBJdCBjYW4gYmUgdXNlZCB0byAiaW5zdGFsbCIgZGVwZW5kZW5jaWVzIHRvIHRoZSBHcmVtbGluCiBTZXJ2ZXIgcGF0aC4gIEZvciBleGFtcGxlLCB0byBiZSBhYmxlIHRvIGNvbmZpZ3VyZSBhbmQgdXNlIG90aGVyIGBHcmFwaGAgaW1wbGVtZW50YXRpb25zLCB0aGUgZGVwZW5kZW5jaWVzIG11c3QgYmUKLW1hZGUgYXZhaWxhYmxlIHRvIEdyZW1saW4gU2VydmVyLiAgVG8gZG8gdGhpcywgdXNlIHRoZSBgaW5zdGFsbGAgc3dpdGNoIGFuZCBzdXBwbHkgdGhlIE1hdmVuIGNvb3JkaW5hdGVzIGZvciB0aGUgZGVwZW5kZW5jeQotdG8gImluc3RhbGwiLiAgRm9yIGV4YW1wbGUsIHRvIHVzZSBOZW80aiBpbiBHcmVtbGluIFNlcnZlcjoKK21hZGUgYXZhaWxhYmxlIHRvIEdyZW1saW4gU2VydmVyLiAgVG8gZG8gdGhpcywgdXNlIHRoZSBgaW5zdGFsbGAgc3dpdGNoIGFuZCBzdXBwbHkgdGhlIE1hdmVuIGNvb3JkaW5hdGVzIGZvciB0aGUKK2RlcGVuZGVuY3kgdG8gImluc3RhbGwiLiAgRm9yIGV4YW1wbGUsIHRvIHVzZSBOZW80aiBpbiBHcmVtbGluIFNlcnZlcjoKIAogW3NvdXJjZSx0ZXh0XQogLS0tLQpAQCAtMTE2OCwxNSArOTI4LDE2IEBACiB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIEFzIG1lbnRpb25lZCBlYXJsaWVyLCBHcmVtbGluIFNlcnZlciBpcyBjb25maWd1cmVkIHRob3VnaCBhIFlBTUwgZmlsZS4gIEJ5IGRlZmF1bHQsIEdyZW1saW4gU2VydmVyIHdpbGwgbG9vayBmb3IgYQotZmlsZSBjYWxsZWQgYGNvbmYvZ3JlbWxpbi1zZXJ2ZXIueWFtbGAgdG8gY29uZmlndXJlIGl0c2VsZiBvbiBzdGFydHVwLiAgVG8gb3ZlcnJpZGUgdGhpcyBkZWZhdWx0LCBzZXQgR1JFTUxJTl9ZQU1MIGluIGBiaW4vZ2VtbGluLXNlcnZlci5jb25mYCBvciBzdXBwbHkgdGhlIGZpbGUKLXRvIHVzZSB0byBgYmluL2dyZW1saW4tc2VydmVyLnNoYCBhcyBpbjoKK2ZpbGUgY2FsbGVkIGBjb25mL2dyZW1saW4tc2VydmVyLnlhbWxgIHRvIGNvbmZpZ3VyZSBpdHNlbGYgb24gc3RhcnR1cC4gIFRvIG92ZXJyaWRlIHRoaXMgZGVmYXVsdCwgc2V0IEdSRU1MSU5fWUFNTCBpbgorYGJpbi9nZW1saW4tc2VydmVyLmNvbmZgIG9yIHN1cHBseSB0aGUgZmlsZSB0byB1c2UgdG8gYGJpbi9ncmVtbGluLXNlcnZlci5zaGAgYXMgaW46CiAKIFtzb3VyY2UsdGV4dF0KIC0tLS0KIGJpbi9ncmVtbGluLXNlcnZlci5zaCBjb25mL2dyZW1saW4tc2VydmVyLW1pbi55YW1sCiAtLS0tCiAKLVdBUk5JTkc6IE9uIFdpbmRvd3MsIGdyZW1saW4tc2VydmVyLmJhdCB3aWxsIGFsd2F5cyBzdGFydCBpbiB0aGUgZm9yZWdyb3VuZC4gV2hlbiBubyBwYXJhbWV0ZXIgaXMgcHJvdmlkZWQsIGl0IHdpbGwgc3RhcnQgd2l0aCB0aGUgZGVmYXVsdCBgY29uZi9ncmVtbGluLXNlcnZlci55YW1sYCBmaWxlLgorV0FSTklORzogT24gV2luZG93cywgZ3JlbWxpbi1zZXJ2ZXIuYmF0IHdpbGwgYWx3YXlzIHN0YXJ0IGluIHRoZSBmb3JlZ3JvdW5kLiBXaGVuIG5vIHBhcmFtZXRlciBpcyBwcm92aWRlZCwgaXQgd2lsbAorc3RhcnQgd2l0aCB0aGUgZGVmYXVsdCBgY29uZi9ncmVtbGluLXNlcnZlci55YW1sYCBmaWxlLgogCiBUaGUgZm9sbG93aW5nIHRhYmxlIGRlc2NyaWJlcyB0aGUgdmFyaW91cyBZQU1MIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IEdyZW1saW4gU2VydmVyIGV4cGVjdHM6CiAKQEAgLTEyMDUsMTEgKzk2NiwxMSBAQAogfG1ldHJpY3MuY3N2UmVwb3J0ZXIuZmlsZU5hbWUgfFRoZSBmaWxlIHRvIHdyaXRlIG1ldHJpY3MgdG8uIHxfbm9uZV8KIHxtZXRyaWNzLmNzdlJlcG9ydGVyLmludGVydmFsIHxUaW1lIGluIG1pbGxpc2Vjb25kcyBiZXR3ZWVuIHJlcG9ydHMgb2YgbWV0cmljcyB0byBmaWxlLiB8MTgwMDAwCiB8bWV0cmljcy5nYW5nbGlhUmVwb3J0ZXIuYWRkcmVzc2luZ01vZGUgfFNldCB0byBgTVVMVElDQVNUYCBvciBgVU5JQ0FTVGAuIHxfbm9uZV8KLXxtZXRyaWNzLmdhbmdsaWFSZXBvcnRlci5lbmFibGVkIHxUdXJucyBvbiBHYW5nbGlhIHJlcG9ydGluZyBvZiBtZXRyaWNzLiBBZGRpdGlvbmFsIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuMy4wL3JlZmVyZW5jZS8jbWV0cmljc1tzZXR1cF0gaXMgcmVxdWlyZWQuIHxmYWxzZQorfG1ldHJpY3MuZ2FuZ2xpYVJlcG9ydGVyLmVuYWJsZWQgfFR1cm5zIG9uIEdhbmdsaWEgcmVwb3J0aW5nIG9mIG1ldHJpY3MuIEFkZGl0aW9uYWwgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVmZXJlbmNlLyNtZXRyaWNzW3NldHVwXSBpcyByZXF1aXJlZC4gfGZhbHNlCiB8bWV0cmljcy5nYW5nbGlhUmVwb3J0ZXIuaG9zdCB8RGVmaW5lIHRoZSBHYW5nbGlhIGhvc3QgdG8gcmVwb3J0IE1ldHJpY3MgdG8uIHxsb2NhbGhvc3QKIHxtZXRyaWNzLmdhbmdsaWFSZXBvcnRlci5pbnRlcnZhbCB8VGltZSBpbiBtaWxsaXNlY29uZHMgYmV0d2VlbiByZXBvcnRzIG9mIG1ldHJpY3MgZm9yIEdhbmdsaWEuIHwxODAwMDAKIHxtZXRyaWNzLmdhbmdsaWFSZXBvcnRlci5wb3J0IHxEZWZpbmUgdGhlIEdhbmdsaWEgcG9ydCB0byByZXBvcnQgTWV0cmljcyB0by4gfDg2NDkKLXxtZXRyaWNzLmdyYXBoaXRlUmVwb3J0ZXIuZW5hYmxlZCB8VHVybnMgb24gR3JhcGhpdGUgcmVwb3J0aW5nIG9mIG1ldHJpY3MuIEFkZGl0aW9uYWwgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy4zLjAvcmVmZXJlbmNlLyNtZXRyaWNzW3NldHVwXSBpcyByZXF1aXJlZC4gfGZhbHNlCit8bWV0cmljcy5ncmFwaGl0ZVJlcG9ydGVyLmVuYWJsZWQgfFR1cm5zIG9uIEdyYXBoaXRlIHJlcG9ydGluZyBvZiBtZXRyaWNzLiBBZGRpdGlvbmFsIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jbWV0cmljc1tzZXR1cF0gaXMgcmVxdWlyZWQuIHxmYWxzZQogfG1ldHJpY3MuZ3JhcGhpdGVSZXBvcnRlci5ob3N0IHxEZWZpbmUgdGhlIEdyYXBoaXRlIGhvc3QgdG8gcmVwb3J0IE1ldHJpY3MgdG8uIHxsb2NhbGhvc3QKIHxtZXRyaWNzLmdyYXBoaXRlUmVwb3J0ZXIuaW50ZXJ2YWwgfFRpbWUgaW4gbWlsbGlzZWNvbmRzIGJldHdlZW4gcmVwb3J0cyBvZiBtZXRyaWNzIGZvciBHcmFwaGl0ZS4gfDE4MDAwMAogfG1ldHJpY3MuZ3JhcGhpdGVSZXBvcnRlci5wb3J0IHxEZWZpbmUgdGhlIEdyYXBoaXRlIHBvcnQgdG8gcmVwb3J0IE1ldHJpY3MgdG8uIHwyMDAzCkBAIC0xMjk0LDcgKzEwNTUsNyBAQAogW1t0cmF2ZXJzYWxvcHByb2Nlc3Nvcl1dCiA9PT09PSBUcmF2ZXJzYWxPcFByb2Nlc3NvcgogCi1UaGUgYFRyYXZlcnNhbE9wUHJvY2Vzc29yYCBwcm92aWRlcyBhIHdheSB0byBhY2NlcHQgdHJhdmVyc2FscyBjb25maWd1cmVkIHZpYSA8PGNvbm5lY3RpbmctdmlhLXJlbW90ZWdyYXBoLHdpdGhSZW1vdGUoKT4+LgorVGhlIGBUcmF2ZXJzYWxPcFByb2Nlc3NvcmAgcHJvdmlkZXMgYSB3YXkgdG8gYWNjZXB0IHRyYXZlcnNhbHMgY29uZmlndXJlZCB2aWEgPDxjb25uZWN0aW5nLXZpYS1kcml2ZXJzLHdpdGhSZW1vdGUoKT4+LgogCiBbd2lkdGg9IjEwMCUiLGNvbHM9IjMsMTAsXjIiLG9wdGlvbnM9ImhlYWRlciJdCiB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC0xMzAzLDE1ICsxMDY0LDE4IEBACiB8Y2FjaGVNYXhTaXplIHxUaGUgbWF4aW11bSBudW1iZXIgb2YgZW50cmllcyBpbiB0aGUgc2lkZS1lZmZlY3QgY2FjaGUuIHwxMDAwCiB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKK0lmIHRoZXJlIGlzIG5vIGludGVudGlvbiB0byBnYXRoZXIgc2lkZS1lZmZlY3RzIGZyb20gdHJhdmVyc2FscywgdGhlIGBjYWNoZU1heFNpemVgIGNhbiBiZSBzZXQgdG8gemVybyB0byBkaXNhYmxlIHRoZQorY2FjaGUuCisKIFtbc2VjdXJpdHldXQogPT09PSBTZWN1cml0eQogCiBpbWFnZTpncmVtbGluLXNlcnZlci1zZWN1cmUucG5nW3dpZHRoPTE3NSxmbG9hdD1yaWdodF0gR3JlbWxpbiBTZXJ2ZXIgcHJvdmlkZXMgZm9yIHNldmVyYWwgZmVhdHVyZXMgdGhhdCBhaWQgaW4gdGhlCi1zZWN1cml0eSBvZiB0aGUgZ3JhcGhzIHRoYXQgaXQgZXhwb3Nlcy4gIEluIHBhcnRpY3VsYXIgaXQgc3VwcG9ydHMgU1NMIGZvciB0cmFuc3BvcnQgbGF5ZXIgc2VjdXJpdHksIHByb3RlY3RpdmUgbWVhc3VyZXMgYWdhaW5zdAotbWFsaWNpb3VzIHNjcmlwdCBleGVjdXRpb24sIGFuZCBhdXRoZW50aWNhdGlvbi4gIFNTTCBvcHRpb25zIGFyZSBkZXNjcmliZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgdGFibGUgaW4gdGhlCi08PGNvbm5lY3RpbmctdmlhLWphdmEsICJDb25uZWN0aW5nIHZpYSBKYXZhIj4+IHNlY3Rpb24uIFNjcmlwdCBleGVjdXRpb24gb3B0aW9ucyBhcmUgY292ZXJlZAotPDxzY3JpcHQtZXhlY3V0aW9uLCAiYXQgdGhlIGVuZCBvZiB0aGlzIHNlY3Rpb24iPj4uIFRoaXMgc2VjdGlvbiBzdGFydHMgd2l0aCBhdXRoZW50aWNhdGlvbi4KLQorc2VjdXJpdHkgb2YgdGhlIGdyYXBocyB0aGF0IGl0IGV4cG9zZXMuICBJbiBwYXJ0aWN1bGFyIGl0IHN1cHBvcnRzIFNTTCBmb3IgdHJhbnNwb3J0IGxheWVyIHNlY3VyaXR5LCBwcm90ZWN0aXZlCittZWFzdXJlcyBhZ2FpbnN0IG1hbGljaW91cyBzY3JpcHQgZXhlY3V0aW9uLCBhbmQgYXV0aGVudGljYXRpb24uICBDbGllbnQgU1NMIG9wdGlvbnMgYXJlIGRlc2NyaWJlZCBpbiB0aGUKKzw8Z3JlbWxpbi1kcml2ZXJzLXZhcmlhbnRzLCBHcmVtbGluIERyaXZlcnMgYW5kIFZhcmlhbnRzIj4+IHNlY3Rpb25zIHdpdGggdmFyeWluZyBjYXBhYmlsaXR5IGRlcGVuZGluZyBvbiB0aGUgZHJpdmVyCitjaG9zZW4uIFNjcmlwdCBleGVjdXRpb24gb3B0aW9ucyBhcmUgY292ZXJlZCA8PHNjcmlwdC1leGVjdXRpb24sICJhdCB0aGUgZW5kIG9mIHRoaXMgc2VjdGlvbiI+Pi4gVGhpcyBzZWN0aW9uCitzdGFydHMgd2l0aCBhdXRoZW50aWNhdGlvbi4KIAogR3JlbWxpbiBTZXJ2ZXIgc3VwcG9ydHMgYSBwbHVnZ2FibGUgYXV0aGVudGljYXRpb24gZnJhbWV3b3JrIHVzaW5nCiBsaW5rOmh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NpbXBsZV9BdXRoZW50aWNhdGlvbl9hbmRfU2VjdXJpdHlfTGF5ZXJbU0FTTF0gKFNpbXBsZSBBdXRoZW50aWNhdGlvbiBhbmQKQEAgLTEzMjYsNiArMTA5MCw3IEBACiBHcmVtbGluLUNvbnNvbGUgfFBMQUlOIFNBU0wgKHVzZXJuYW1lL3Bhc3N3b3JkKSB8My4wLjAtaW5jdWJhdGluZwogfFBsdWdnYWJsZSBTQVNMIHwzLjAuMC1pbmN1YmF0aW5nCiB8R1NTQVBJIFNBU0wgKEtlcmJlcm9zKSB8My4zLjAKK3xHcmVtbGluLk5FVCB8UExBSU4gU0FTTCB8My4zLjAKIHxHcmVtbGluLVB5dGhvbiB8UExBSU4gU0FTTCB8My4yLjIKIHxHcmVtbGluLk5ldCB8UExBSU4gU0FTTCB8My4yLjcKIHxHcmVtbGluLUphdmFzY3JpcHQgfFBMQUlOIFNBU0wgfDMuMy4wCkBAIC0xMzMzLDggKzEwOTgsOCBAQAogCiBCeSBkZWZhdWx0LCBHcmVtbGluIFNlcnZlciBpcyBjb25maWd1cmVkIHRvIGFsbG93IGFsbCByZXF1ZXN0cyB0byBiZSBwcm9jZXNzZWQgKGkuZS4gbm8gYXV0aGVudGljYXRpb24pLiAgVG8gZW5hYmxlCiBhdXRoZW50aWNhdGlvbiwgR3JlbWxpbiBTZXJ2ZXIgbXVzdCBiZSBjb25maWd1cmVkIHdpdGggYW4gYEF1dGhlbnRpY2F0b3JgIGltcGxlbWVudGF0aW9uIGluIGl0cyBZQU1MIGZpbGUuICBHcmVtbGluCi1TZXJ2ZXIgY29tZXMgcGFja2FnZWQgd2l0aCB0d28gaW1wbGVtZW50YXRpb25zIGNhbGxlZCBgU2ltcGxlQXV0aGVudGljYXRvcmAgZm9yIHBsYWluIHRleHQgYXV0aGVudGljYXRpb24gdXNpbmcgSFRUUCBCQVNJQyBvcgotUExBSU4gU0FTTCBhbmQgYEtyYjVBdXRoZW50aWNhdG9yYCBmb3IgS2VyYmVyb3MgYXV0aGVudGljYXRpb24gdXNpbmcgR1NTQVBJIFNBU0wuCitTZXJ2ZXIgY29tZXMgcGFja2FnZWQgd2l0aCB0d28gaW1wbGVtZW50YXRpb25zIGNhbGxlZCBgU2ltcGxlQXV0aGVudGljYXRvcmAgZm9yIHBsYWluIHRleHQgYXV0aGVudGljYXRpb24gdXNpbmcgSFRUUAorQkFTSUMgb3IgUExBSU4gU0FTTCBhbmQgYEtyYjVBdXRoZW50aWNhdG9yYCBmb3IgS2VyYmVyb3MgYXV0aGVudGljYXRpb24gdXNpbmcgR1NTQVBJIFNBU0wuCiAKID09PT09IFBsYWluIHRleHQgYXV0aGVudGljYXRpb24KIApAQCAtMTQwOCw4ICsxMTczLDkgQEAKIFtJTkZPXSBHcmVtbGluU2VydmVyJDEgLSBDaGFubmVsIHN0YXJ0ZWQgYXQgcG9ydCA4MTgyLgogLS0tLQogCi1BcyBTU0wgaXMgZW5hYmxlZCBvbiB0aGUgc2VydmVyIGl0IG11c3QgYWxzbyBiZSBlbmFibGVkIG9uIHRoZSBjbGllbnQgd2hlbiBjb25uZWN0aW5nLiAgVG8gY29ubmVjdCB0bwotR3JlbWxpbiBTZXJ2ZXIgd2l0aCBgZ3JlbWxpbi1kcml2ZXJgLCBzZXQgdGhlIGBjcmVkZW50aWFsc2AsIGBlbmFibGVTc2xgLCBhbmQgYHRydXN0U3RvcmVgIHdoZW4gY29uc3RydWN0aW5nIHRoZSBgQ2x1c3RlcmAuCitXaGVuIFNTTCBpcyBlbmFibGVkIG9uIHRoZSBzZXJ2ZXIsIGl0IG11c3QgYWxzbyBiZSBlbmFibGVkIG9uIHRoZSBjbGllbnQgd2hlbiBjb25uZWN0aW5nLiAgVG8gY29ubmVjdCB0bworR3JlbWxpbiBTZXJ2ZXIgd2l0aCB0aGUgPDxncmVtbGluLWphdmEsYGdyZW1saW4tZHJpdmVyYD4+LCBzZXQgdGhlIGBjcmVkZW50aWFsc2AsIGBlbmFibGVTc2xgLCBhbmQgYHRydXN0U3RvcmVgCit3aGVuIGNvbnN0cnVjdGluZyB0aGUgYENsdXN0ZXJgLgogCiBbc291cmNlLGphdmFdCiBDbHVzdGVyIGNsdXN0ZXIgPSBDbHVzdGVyLmJ1aWxkKCkuY3JlZGVudGlhbHMoInN0ZXBoZW4iLCAicGFzc3dvcmQiKQpAQCAtMTQxNyw5ICsxMTgzLDExIEBACiAKIElmIGNvbm5lY3Rpbmcgd2l0aCBHcmVtbGluIENvbnNvbGUsIHdoaWNoIHV0aWxpemVzIGBncmVtbGluLWRyaXZlcmAgZm9yIHJlbW90ZSBzY3JpcHQgZXhlY3V0aW9uLCB1c2UgdGhlIHByb3ZpZGVkCiBgY29uZi9yZW1vdGUtc2VjdXJlLnlhbWxgIGZpbGUgd2hlbiBkZWZpbmluZyB0aGUgcmVtb3RlLiAgVGhhdCBmaWxlIGNvbnRhaW5zIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSB1c2VybmFtZSBhbmQKLXBhc3N3b3JkIGFzIHdlbGwgYXMgZW5hYmxlbWVudCBvZiBTU0wgZnJvbSB0aGUgY2xpZW50IHNpZGUuIEJlIHN1cmUgdG8gY29uZmlndXJlIHRoZSB0cnVzdFN0b3JlIGlmIHVzaW5nIHNlbGYtc2lnbmVkIGNlcnRpZmljYXRlcy4KK3Bhc3N3b3JkIGFzIHdlbGwgYXMgZW5hYmxlbWVudCBvZiBTU0wgZnJvbSB0aGUgY2xpZW50IHNpZGUuIEJlIHN1cmUgdG8gY29uZmlndXJlIHRoZSB0cnVzdFN0b3JlIGlmIHVzaW5nIHNlbGYtc2lnbmVkCitjZXJ0aWZpY2F0ZXMuCiAKLVNpbWlsYXJseSwgR3JlbWxpbiBTZXJ2ZXIgY2FuIGJlIGNvbmZpZ3VyZWQgZm9yIFJFU1QgYW5kIHNlY3VyaXR5LiBGb2xsb3cgdGhlIHN0ZXBzIGFib3ZlIGZvciBjb25maWd1cmluZyB0aGUgU1NMIGNlcnRpZmljYXRlLgorU2ltaWxhcmx5LCBHcmVtbGluIFNlcnZlciBjYW4gYmUgY29uZmlndXJlZCBmb3IgUkVTVCBhbmQgc2VjdXJpdHkuIEZvbGxvdyB0aGUgc3RlcHMgYWJvdmUgZm9yIGNvbmZpZ3VyaW5nIHRoZSBTU0wKK2NlcnRpZmljYXRlLgogCiBbc291cmNlLHRleHRdCiAtLS0tCkBAIC0xNDc1LDcgKzEyNDMsNyBAQAogY3JlZGVudGlhbHMudXNlcigic3RlcGhlbiIsInBhc3N3b3JkIikKIGNyZWRlbnRpYWxzLnVzZXIoImRhbmllbCIsImJldHRlci1wYXNzd29yZCIpCiBjcmVkZW50aWFscy51c2VyKCJtYXJrbyIsInJhaW5ib3ctZGFzaCIpCi1jcmVkZW50aWFscy51c2VycygibWFya28iKS52YWx1ZU1hcCgpCitjcmVkZW50aWFscy51c2VycygibWFya28iKS5lbGVtZW50TWFwKCkKIGNyZWRlbnRpYWxzLnVzZXJzKCkuY291bnQoKQogY3JlZGVudGlhbHMudXNlcnMoImRhbmllbCIpLmRyb3AoKQogY3JlZGVudGlhbHMudXNlcnMoKS5jb3VudCgpCkBAIC0xNzAwLDcgKzE0NjgsNyBAQAogCiA9PT09IFNlcmlhbGl6YXRpb24KIAotR3JlbWxpbiBTZXJ2ZXIgY2FuIGFjY2VwdCByZXF1ZXN0cyBhbmQgcmV0dXJuIHJlc3VsdHMgdXNpbmcgZGlmZmVyZW50IHNlcmlhbGl6YXRpb24gZm9ybWF0cy4gIFNlcmlhbGl6ZXJzIGltcGxlbWVudCB0aGUKK0dyZW1saW4gU2VydmVyIGNhbiBhY2NlcHQgcmVxdWVzdHMgYW5kIHJldHVybiByZXN1bHRzIHVzaW5nIGRpZmZlcmVudCBzZXJpYWxpemF0aW9uIGZvcm1hdHMuIFNlcmlhbGl6ZXJzIGltcGxlbWVudCB0aGUKIGBNZXNzYWdlU2VyaWFsaXplcmAgaW50ZXJmYWNlLiBJbiBkb2luZyBzbywgdGhleSBleHByZXNzIHRoZSBsaXN0IG9mIG1pbWUgdHlwZXMgdGhleSBleHBlY3QgdG8gc3VwcG9ydC4gV2hlbgogY29uZmlndXJpbmcgbXVsdGlwbGUgc2VyaWFsaXplcnMgaXQgaXMgcG9zc2libGUgZm9yIHR3byBvciBtb3JlIHNlcmlhbGl6ZXJzIHRvIHN1cHBvcnQgdGhlIHNhbWUgbWltZSB0eXBlLiBTdWNoIGEKIHNpdHVhdGlvbiBtYXkgYmUgY29tbW9uIHdpdGggYSBnZW5lcmljIG1pbWUgdHlwZSBzdWNoIGFzIGBhcHBsaWNhdGlvbi9qc29uYC4gU2VyaWFsaXplcnMgYXJlIGFkZGVkIGluIHRoZSBvcmRlciB0aGF0CkBAIC0xNzEwLDE0ICsxNDc4LDE1IEBACiBUaGUgZm9ybWF0IG9mIHRoZSBzZXJpYWxpemF0aW9uIGlzIGNvbmZpZ3VyZWQgYnkgdGhlIGBzZXJpYWxpemVyc2Agc2V0dGluZyBkZXNjcmliZWQgaW4gdGhlIHRhYmxlIGFib3ZlLiAgTm90ZSB0aGF0CiBzb21lIHNlcmlhbGl6ZXJzIGhhdmUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXMgZGVmaW5lZCBieSB0aGUgYHNlcmlhbGl6ZXJzW1hdLmNvbmZpZ2Agc2V0dGluZy4gIFRoZQogYGNvbmZpZ2Agc2V0dGluZyBpcyBhIGBNYXBgIHdoZXJlIHRoZSBrZXlzIGFuZCB2YWx1ZXMgZ2V0IHBhc3NlZCB0byB0aGUgc2VyaWFsaXplciBhdCBpdHMgaW5pdGlhbGl6YXRpb24uICBUaGUKLWF2YWlsYWJsZSBhbmQvb3IgZXhwZWN0ZWQga2V5cyBhcmUgZGVwZW5kZW50IG9uIHRoZSBzZXJpYWxpemVyIGJlaW5nIHVzZWQuICBHcmVtbGluIFNlcnZlciBjb21lcyBwYWNrYWdlZCB3aXRoIHR3bwotZGlmZmVyZW50IHNlcmlhbGl6ZXJzOiBHcmFwaFNPTiBhbmQgR3J5by4KK2F2YWlsYWJsZSBhbmQvb3IgZXhwZWN0ZWQga2V5cyBhcmUgZGVwZW5kZW50IG9uIHRoZSBzZXJpYWxpemVyIGJlaW5nIHVzZWQuICBHcmVtbGluIFNlcnZlciBjb21lcyBwYWNrYWdlZCB3aXRoIHRocmVlCitkaWZmZXJlbnQgc2VyaWFsaXplcnM6IEdyYXBoU09OLCBHcnlvLCBhbmQgR3JhcGhCaW5hcnkuCiAKID09PT09IEdyYXBoU09OCiAKIFRoZSBHcmFwaFNPTiBzZXJpYWxpemVyIHByb2R1Y2VzIGh1bWFuIHJlYWRhYmxlIG91dHB1dCBpbiBKU09OIGZvcm1hdCBhbmQgaXMgYSBnb29kIGNvbmZpZ3VyYXRpb24gY2hvaWNlIGZvciB0aG9zZQogdHJ5aW5nIHRvIHVzZSBUaW5rZXJQb3AgZnJvbSBub24tSlZNIGxhbmd1YWdlcy4gIEpTT04gb2J2aW91c2x5IGhhcyB3aWRlIHN1cHBvcnQgYWNyb3NzIHZpcnR1YWxseSBhbGwgbWFqb3IKLXByb2dyYW1taW5nIGxhbmd1YWdlcyBhbmQgY2FuIGJlIGNvbnN1bWVkIGJ5IGEgd2lkZSB2YXJpZXR5IG9mIHRvb2xzLgorcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzIGFuZCBjYW4gYmUgY29uc3VtZWQgYnkgYSB3aWRlIHZhcmlldHkgb2YgdG9vbHMuIFRoZSBmb3JtYXQgaXRzZWxmIGlzIGRlc2NyaWJlZCBpbiB0aGUKK2xpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL2N1cnJlbnQvZGV2L2lvLyNncmFwaHNvbltJTyBEb2N1bWVudGF0aW9uXS4KIAogW3NvdXJjZSx5YW1sXQogLS0tLQpAQCAtMTc1MSw3ICsxNTIwLDggQEAKID09PT09IEdyeW8KIAogVGhlIEdyeW8gc2VyaWFsaXplciB1dGlsaXplcyBLcnlvLWJhc2VkIHNlcmlhbGl6YXRpb24gd2hpY2ggcHJvZHVjZXMgYSBiaW5hcnkgb3V0cHV0LiAgVGhpcyBmb3JtYXQgaXMgYmVzdCBjb25zdW1lZAotYnkgSlZNLWJhc2VkIGxhbmd1YWdlcy4KK2J5IEpWTS1iYXNlZCBsYW5ndWFnZXMuIFRoZSBmb3JtYXQgaXRzZWxmIGlzIGRlc2NyaWJlZCBpbiB0aGUKK2xpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL2N1cnJlbnQvZGV2L2lvLyNncnlvW0lPIERvY3VtZW50YXRpb25dLgogCiBbc291cmNlLHlhbWxdCiAgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcnlvTWVzc2FnZVNlcmlhbGl6ZXJHcmVtbGluVjFkMCB9CkBAIC0xNzY4LDE2ICsxNTM4LDM4IEBACiB8c2VyaWFsaXplUmVzdWx0VG9TdHJpbmcgfFdoZW4gc2V0IHRvIGB0cnVlYCwgcmVzdWx0cyBhcmUgc2VyaWFsaXplZCBieSBmaXJzdCBjYWxsaW5nIGB0b1N0cmluZygpYCBvbiBlYWNoIG9iamVjdCBpbiB0aGUgcmVzdWx0IGxpc3QgcmVzdWx0aW5nIGluIGFuIGV4dGVuZGVkIE1JTUUgVHlwZSBvZiBgYXBwbGljYXRpb24vdm5kLmdyZW1saW4tdjEuMCtncnlvLXN0cmluZ2RgLiAgV2hlbiBzZXQgdG8gYGZhbHNlYCBLcnlvLWJhc2VkIHNlcmlhbGl6YXRpb24gaXMgYXBwbGllZC4gfF9mYWxzZV8KIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotQXMgZGVzY3JpYmVkIGFib3ZlLCB0aGVyZSBhcmUgbXVsdGlwbGUgd2F5cyBpbiB3aGljaCB0byByZWdpc3RlciBzZXJpYWxpemVycyBmb3IgS3J5by1iYXNlZCBzZXJpYWxpemF0aW9uLiAgVGhlc2UKLWNvbmZpZ3VyYXRpb25zIGNhbiBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggb25lIGFub3RoZXIgd2hlcmUgdGhlcmUgaXMgYSBzcGVjaWZpYyBvcmRlcmluZyB0byBob3cgdGhlIGNvbmZpZ3VyYXRpb25zCi1hcmUgYXBwbGllZC4gIFRoZSBgdXNlck1hcHBlckZyb21HcmFwaGAgc2V0dGluZyBpcyBhcHBsaWVkIGZpcnN0LCBmb2xsb3dlZCBieSBhbnkgYGlvUmVnaXN0cmllc2AgYW5kIGZpbmFsaXplZCBieSB0aGUKLWBjdXN0b21gIHNldHRpbmcuCitBcyBkZXNjcmliZWQgYWJvdmUsIHRoZXJlIGFyZSBtdWx0aXBsZSB3YXlzIGluIHdoaWNoIHRvIHJlZ2lzdGVyIHNlcmlhbGl6ZXJzIGZvciBLcnlvLWJhc2VkIHNlcmlhbGl6YXRpb24uICBOb3RlCit0aGF0IHRoZSBgaW9SZWdpc3RyaWVzYCBzZXR0aW5nIGlzIGFwcGxpZWQgZmlyc3QsIGZvbGxvd2VkIGJ5IHRoZSBgY3VzdG9tYCBzZXR0aW5nLgogCiBUaG9zZSBjb25maWd1cmluZyBvciBpbXBsZW1lbnRpbmcgYSBgU3VwcGxpZXI8Q2xhc3NSZXNvbHZlcj5gIHNob3VsZCBjb25zaWRlciB0aGlzIGFuICJhZHZhbmNlZCIgb3B0aW9uIGFuZCB0eXBpY2FsbHkKIGltcG9ydGFudCB0byB1c2UgY2FzZXMgd2hlcmUgc2VydmVyIHR5cGVzIG5lZWQgdG8gYmUgY29lcmNlZCB0byBjbGllbnQgdHlwZXMgKGkuZS4gYSB0eXBlIGlzIGF2YWlsYWJsZSBvbiB0aGUgc2VydmVyCiBidXQgbm90IG9uIHRoZSBjbGllbnQpLiAgSW1wbGVtZW50YXRpb25zIHNob3VsZCB0eXBpY2FsbHkgaW5zdGFudGlhdGUgYENsYXNzUmVzb2x2ZXJgIGltcGxlbWVudGF0aW9ucyB0aGF0IGFyZQogZXh0ZW5zaW9ucyBvZiB0aGUgYEdyeW9DbGFzc1Jlc29sdmVyYCBhcyB0aGlzIGNsYXNzIGlzIGltcG9ydGFudCB0byBtb3N0IHNlcmlhbGl6YXRpb24gdGFza3MgaW4gVGlua2VyUG9wLgogCis9PT09PSBHcmFwaEJpbmFyeQorCitHcmFwaEJpbmFyeSBpcyBhIGJpbmFyeSBzZXJpYWxpemF0aW9uIGZvcm1hdCBzdWl0YWJsZSBmb3Igb2JqZWN0IHRyZWVzLCBkZXNpZ25lZCB0byByZWR1Y2Ugc2VyaWFsaXphdGlvbiBvdmVyaGVhZCBvbgorYm90aCB0aGUgY2xpZW50IGFuZCB0aGUgc2VydmVyLCBhcyB3ZWxsIGFzIGxpbWl0aW5nIHRoZSBzaXplIG9mIHRoZSBwYXlsb2FkIHRoYXQgaXMgdHJhbnNtaXR0ZWQgb3ZlciB0aGUgd2lyZS4gVGhlCitmb3JtYXQgaXRzZWxmIGlzIGRlc2NyaWJlZCBpbiB0aGUgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvY3VycmVudC9kZXYvaW8vI2dyYXBoYmluYXJ5W0lPIERvY3VtZW50YXRpb25dLgorCitJTVBPUlRBTlQ6IEdyYXBoQmluYXJ5IGlzIGN1cnJlbnRseSBvbmx5IHN1cHBvcnRlZCBvbiB0aGUgSlZNLgorCitbc291cmNlLHlhbWxdCisgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjEgfQorCitJdCBoYXMgdGhlIE1JTUUgdHlwZSBvZiBgYXBwbGljYXRpb24vdm5kLmdyYXBoYmluYXJ5LXYxLjBgIGFuZCB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24gb3B0aW9uczoKKworW3dpZHRoPSIxMDAlIixjb2xzPSIzLDEwLF4yIixvcHRpb25zPSJoZWFkZXIiXQorfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorfEtleSB8RGVzY3JpcHRpb24gfERlZmF1bHQKK3xjdXN0b20gfEEgbGlzdCBvZiBjbGFzc2VzIHdpdGggY3VzdG9tIGtyeW8gYFNlcmlhbGl6ZXJgIGltcGxlbWVudGF0aW9ucyByZWxhdGVkIHRvIHRoZW0gaW4gdGhlIGZvcm0gb2YgYDxjbGFzcz47PHNlcmlhbGl6ZXItY2xhc3M+YC4gfF9ub25lXworfGlvUmVnaXN0cmllcyB8QSBsaXN0IG9mIGBJb1JlZ2lzdHJ5YCBpbXBsZW1lbnRhdGlvbnMgdG8gYmUgYXBwbGllZCB0byB0aGUgc2VyaWFsaXplci4gfF9ub25lXworfGJ1aWxkZXIgfE5hbWUgb2YgdGhlIGBUeXBlU2VyaWFsaXplclJlZ2lzdHJ5LkJ1aWxkZXJgIGluc3RhbmNlIHRvIGJlIHVzZWQgdG8gY29uc3RydWN0IHRoZSBgVHlwZVNlcmlhbGl6ZXJSZWdpc3RyeWAuIHxfbm9uZV8KK3w9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQXMgZGVzY3JpYmVkIGFib3ZlLCB0aGVyZSBhcmUgbXVsdGlwbGUgd2F5cyBpbiB3aGljaCB0byByZWdpc3RlciBzZXJpYWxpemVycyBmb3IgR3JhcGhCaW5hcnktYmFzZWQgc2VyaWFsaXphdGlvbi4gTm90ZQordGhhdCB0aGUgYGlvUmVnaXN0cmllc2Agc2V0dGluZyBpcyBhcHBsaWVkIGZpcnN0LCBmb2xsb3dlZCBieSB0aGUgYGN1c3RvbWAgc2V0dGluZy4KKwogW1ttZXRyaWNzXV0KID09PT0gTWV0cmljcwogCkBAIC0xOTExLDE3ICsxNzAzLDIxIEBACiBwb3NzaWJsZSBleGlzdGVuY2Ugb2YgbXVsdGktcHJvcGVydGllcyBhbmQgbWV0YS1wcm9wZXJ0aWVzLiBXaGVuIHJldHVybmluZyBkYXRhIGZyb20gR3JlbWxpbiBTZXJ2ZXIgb25seSByZXR1cm4gdGhlCiBkYXRhIHRoYXQgaXMgcmVxdWlyZWQuIEZvciBleGFtcGxlLCBpZiBvbmx5IHR3byBwcm9wZXJ0aWVzIG9mIGEgYFZlcnRleGAgYXJlIG5lZWRlZCB0aGVuIHNpbXBseSByZXR1cm4gdGhlIHR3byByYXRoZXIKIHRoYW4gcmV0dXJuaW5nIHRoZSBlbnRpcmUgYFZlcnRleGAgb2JqZWN0IGl0c2VsZi4gRXZlbiB3aXRoIGFuIGVudGlyZSBgVmVydGV4YCwgaXQgaXMgdHlwaWNhbGx5IG11Y2ggZmFzdGVyIHRvIGlzc3VlCi10aGUgcXVlcnkgYXMgYGcuVigxKS52YWx1ZU1hcCh0cnVlKWAgdGhhbiBgZy5WKDEpYCwgYXMgdGhlIGZvcm1lciByZXR1cm5zIGEgYE1hcGAgb2YgdGhlIHNhbWUgZGF0YSBhcyBhIGBWZXJ0ZXhgLCBidXQKK3RoZSBxdWVyeSBhcyBgZy5WKDEpLmVsZW1lbnRNYXAoKWAgdGhhbiBgZy5WKDEpYCwgYXMgdGhlIGZvcm1lciByZXR1cm5zIGEgYE1hcGAgb2YgdGhlIHNhbWUgZGF0YSBhcyBhIGBWZXJ0ZXhgLCBidXQKIHdpdGhvdXQgYWxsIHRoZSBhc3NvY2lhdGVkIHN0cnVjdHVyZSB3aGljaCBjYW4gc2xvdyB0aGUgcmVzcG9uc2UuCiAKIFtbcGFyYW1ldGVyaXplZC1zY3JpcHRzXV0KID09PT0gUGFyYW1ldGVyaXplZCBTY3JpcHRzCiAKLWltYWdlOmdyZW1saW4tcGFyYW1ldGVyaXplZC5wbmdbd2lkdGg9MTUwLGZsb2F0PWxlZnRdIFVzZSBzY3JpcHQgcGFyYW1ldGVyaXphdGlvbi4gIFBlcmlvZC4gIEdyZW1saW4gU2VydmVyIGNhY2hlcwotYWxsIHNjcmlwdHMgdGhhdCBhcmUgcGFzc2VkIHRvIGl0LiAgVGhlIGNhY2hlIGlzIGtleWVkIGJhc2VkIG9uIHRoZSBhIGhhc2ggb2YgdGhlIHNjcmlwdC4gIFRoZXJlZm9yZSBgZy5WKDEpYCBhbmQKLWBnLlYoMilgIHdpbGwgYmUgcmVjb2duaXplZCBhcyB0d28gc2VwYXJhdGUgc2NyaXB0cyBpbiB0aGUgY2FjaGUuICBJZiB0aGF0IHNjcmlwdCBpcyBwYXJhbWV0ZXJpemVkIHRvIGBnLlYoeClgCi13aGVyZSBgeGAgaXMgcGFzc2VkIGFzIGEgcGFyYW1ldGVyIGZyb20gdGhlIGNsaWVudCwgdGhlcmUgd2lsbCBiZSBubyBhZGRpdGlvbmFsIGNvbXBpbGF0aW9uIGNvc3QgZm9yIGZ1dHVyZSByZXF1ZXN0cwotb24gdGhhdCBzY3JpcHQuICBDb21waWxhdGlvbiBvZiBhIHNjcmlwdCBzaG91bGQgYmUgY29uc2lkZXJlZCAiZXhwZW5zaXZlIiBhbmQgYXZvaWRlZCB3aGVuIHBvc3NpYmxlLgoraW1hZ2U6Z3JlbWxpbi1wYXJhbWV0ZXJpemVkLnBuZ1t3aWR0aD0xNTAsZmxvYXQ9bGVmdF0gVXNlIHNjcmlwdCBwYXJhbWV0ZXJpemF0aW9uLiBQZXJpb2QuIFRoZXJlIGFyZSBhdCBsZWFzdCB0d28gZ29vZAorcmVhc29ucyBmb3IgZG9pbmcgc286IHNjcmlwdCBjYWNoaW5nIGFuZCBwcm90ZWN0aW9uIGZyb20gIkdyZW1saW4gaW5qZWN0aW9uIiAoY29uY2VwdHVhbGx5IHRoZSBzYW1lIGFzIHRoZSBub3Rpb24gb2YKK1NRTCBpbmplY3Rpb24pLgorCitXaXRoIHJlc3BlY3QgdG8gY2FjaGluZywgR3JlbWxpbiBTZXJ2ZXIgY2FjaGVzIGFsbCBzY3JpcHRzIHRoYXQgYXJlIHBhc3NlZCB0byBpdC4gIFRoZSBjYWNoZSBpcyBrZXllZCBiYXNlZCBvbiB0aGUgYQoraGFzaCBvZiB0aGUgc2NyaXB0LiAgVGhlcmVmb3JlIGBnLlYoMSlgIGFuZCBgZy5WKDIpYCB3aWxsIGJlIHJlY29nbml6ZWQgYXMgdHdvIHNlcGFyYXRlIHNjcmlwdHMgaW4gdGhlIGNhY2hlLiAgSWYgdGhhdAorc2NyaXB0IGlzIHBhcmFtZXRlcml6ZWQgdG8gYGcuVih4KWAgd2hlcmUgYHhgIGlzIHBhc3NlZCBhcyBhIHBhcmFtZXRlciBmcm9tIHRoZSBjbGllbnQsIHRoZXJlIHdpbGwgYmUgbm8gYWRkaXRpb25hbAorY29tcGlsYXRpb24gY29zdCBmb3IgZnV0dXJlIHJlcXVlc3RzIG9uIHRoYXQgc2NyaXB0LiAgQ29tcGlsYXRpb24gb2YgYSBzY3JpcHQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgImV4cGVuc2l2ZSIgYW5kCithdm9pZGVkIHdoZW4gcG9zc2libGUuCiAKIElNUE9SVEFOVDogVGhlIHBhcmFtZXRlcml6ZWQgc2NyaXB0IG9mIGBnLlYoeClgIGlzIGtleWVkIGluIHRoZSBjYWNoZSBkaWZmZXJlbnRseSB0aGFuIGBnLlYoeSlgIG9yIGV2ZW4gYGcuViggeCApYC4KIFNjcmlwdHMgbXVzdCBiZSBleGFjdCBzdHJpbmcgbWF0Y2hlcyBmb3IgcmVjb21waWxhdGlvbiB0byBiZSBhdm9pZGVkLgpAQCAtMTk0Miw2ICsxNzM4LDQxIEBACiBVc2Ugb2YgdGhpcyBzZXR0aW5nIGNhbiBwcmV2ZW50IGFjY2lkZW50YWwgbG9uZyBydW4gY29tcGlsYXRpb25zLCB3aGljaCBpbmRpdmlkdWFsbHkgYXJlIG5vdCB0ZXJyaWJseSBvcHByZXNzaXZlIHRvCiB0aGUgc2VydmVyLCBidXQgdGFrZW4gYXMgYSBncm91cCB1bmRlciBoaWdoIGNvbmN1cnJlbmN5IHdvdWxkIGJlIGNvbnNpZGVyZWQgZGV0cmltZW50YWwuCiAKK09uIHRoZSB0b3BpYyBvZiBHcmVtbGluIGluamVjdGlvbiwgbm90ZSB0aGF0IGl0IGlzIHBvc3NpYmxlIHRvIHRha2UgYWR2YW50YWdlIG9mIEdyZW1saW4gc2NyaXB0cyBpbiB0aGUgc2FtZSBmYXNoaW9uCithcyBTUUwgc2NyaXB0cyB0aGF0IGFyZSBzdWJtaXR0ZWQgYXMgc3RyaW5ncy4gV2hlbiB1c2luZyBzdHJpbmcgYnVpbGRpbmcgcGF0dGVybnMgZm9yIHF1ZXJpZXMgd2l0aG91dCBwcm9wZXIgaW5wdXQKK3NjcnViYmluZywgaXQgd291bGQgYmUgcXVpdGUgc2ltcGxlIHRvIGRvOgorCitbc291cmNlLGphdmFdCistLS0tCitTdHJpbmcgbGJsID0gInBlcnNvbiIKK1N0cmluZyBub2RlSWQgPSAibWFyeScpLm5leHQoKTtnLlYoKS5kcm9wKCkuaXRlcmF0ZSgpO2cuVigpLmhhcygnaWQnLCAndGhvbWFzIjsKK1N0cmluZyBxdWVyeSA9ICJnLmFkZFYoJyIgKyBsYmwgKyAiJykucHJvcGVydHkoJ2lkZW50aWZpZXInLCciICsgbm9kZUlkICsgIicpIjsKK2NsaWVudC5zdWJtaXQocXVlcnkpOworLS0tLQorCitUaGUgYWJvdmUgY2FzZSB3b3VsZCBgZHJvcCgpYCBhbGwgdmVydGljZXMgaW4gdGhlIGdyYXBoLiBCeSB1c2luZyBzY3JpcHQgcGFyYW1ldGVyaXphdGlvbiwgdGhlcmUgaXMgYSBkaWZmZXJlbnQgb3V0Y29tZQoraW4gdGhhdCB0aGUgYG5vZGVJZGAgc3RyaW5nIGlzIG5vdCB0cmVhdGVkIGFzIHNvbWV0aGluZyBleGVjdXRhYmxlLCBidXQgcmF0aGVyIGFzIGEgbGl0ZXJhbCBzdHJpbmcgdGhhdCBqdXN0IGJlY29tZXMKK3BhcnQgb2YgdGhlICJpZGVudGlmaWVyIiBmb3IgdGhlIHZlcnRleCBvbiBpbnNlcnRpb246CisKK1tzb3VyY2UsamF2YV0KKy0tLS0KK1N0cmluZyBsYmwgPSAicGVyc29uIgorU3RyaW5nIG5vZGVJZCA9ICJtYXJ5JykubmV4dCgpO2cuVigpLmRyb3AoKS5pdGVyYXRlKCk7Zy5WKCkuaGFzKCdpZCcsICd0aG9tYXMiOworU3RyaW5nIHF1ZXJ5ID0gImcuYWRkVihsYmwpLnByb3BlcnR5KCdpZGVudGlmaWVyJyxub2RlSWQpIjsKKworTWFwPFN0cmluZyxPYmplY3Q+IHBhcmFtcyA9IG5ldyBIYXNoTWFwPD4oKTsKK3BhcmFtcy5wdXQoImxibCIsbGJsKTsKK3BhcmFtcy5wdXQoIm5vZGVJZCIsbm9kZUlkKTsKK2NsaWVudC5zdWJtaXQocXVlcnksIHBhcmFtcyk7CistLS0tCisKK0dyZW1saW4gaW5qZWN0aW9uIHNob3VsZCBub3QgYmUgcG9zc2libGUgd2l0aCBgQnl0ZWNvZGVgIGJhc2VkIHRyYXZlcnNhbHMgLSBvbmx5IHNjcmlwdHMgLSBiZWNhdXNlIGBCeXRlY29kZWAKK3RyYXZlcnNhbHMgd2lsbCB0cmVhdCBhbGwgYXJndW1lbnRzIGFzIGxpdGVyYWwgdmFsdWVzLiBUaGVyZSBpcyBwb3RlbnRpYWwgZm9yIGNvbmNlcm4gaWYgbGFtYmRhIGJhc2VkIHN0ZXBzIGFyZQordXRpbGl6ZWQgYXMgdGhleSBleGVjdXRlIGFyYml0cmFyeSBjb2RlLCB3aGljaCBpcyBzdHJpbmcgYmFzZWQsIGJ1dCBjb25maWd1cmluZyBgVHJhdmVyc2FsU291cmNlYCBpbnN0YW5jZXMgd2l0aAorYExhbWJkYVJlc3RyaWN0aW9uU3RyYXRlZ3lgLCB3aGljaCBwcmV2ZW50cyBsYW1iZGFzIGFsbCB0b2dldGhlciwgdXNpbmcgYSBncmFwaCB0aGF0IGRvZXMgbm90IGFsbG93IGxhbWJkYXMgYXQgYWxsLCBvcgorY29uZmlndXJpbmcgYXBwcm9wcmlhdGUgPDxzY3JpcHQtZXhlY3V0aW9uLHNhbmRib3ggb3B0aW9ucz4+IGluIEdyZW1saW4gU2VydmVyIChvciBzdWNoIG9wdGlvbnMgYXZhaWxhYmxlIHRvIHRoZSBncmFwaAorZGF0YWJhc2UgaW4gdXNlKSBzaG91bGQgZWFjaCBoZWxwIG1pdGlnYXRlIHByb2JsZW1zIHJlbGF0ZWQgdG8gdGhpcyBpc3N1ZS4KKwogU2NyaXB0cyBjcmVhdGUgY2xhc3NlcyB3aGljaCBnZXQgbG9hZGVkIHRvIHRoZSBKVk0gbWV0YXNwYWNlIGFuZCB0byBhIGBDbGFzc2AgY2FjaGUuIEZvciB0aG9zZSB1c2luZyBzY3JpcHQKIHBhcmFtZXRlcml6YXRpb24sIGEgdHlwaWNhbCBhcHBsaWNhdGlvbiBzaG91bGQgbm90IGdlbmVyYXRlIGFuIG92ZXJhYnVuZGFuY2Ugb2YgcHJlc3N1cmUgb24gdGhlc2UgdHdvIGNvbXBvbmVudHMgb2YKIEdyZW1saW4gU2VydmVyJ3MgbWVtb3J5IGZvb3RwcmludC4gT24gdGhlIG90aGVyIGhhbmQsIGl0J3Mgbm90IHRvbyBoYXJkIHRvIGltYWdpbmUgYSBzaXR1YXRpb24gd2hlcmUgcHJvYmxlbXMgbWlnaHQKQEAgLTE5OTYsNyArMTgyNyw3IEBACiAKIFRvIGJlZ2luIHRvIGRpc2N1c3MgdGhlc2UgbnVhbmNlcywgZmlyc3QgY29uc2lkZXIgdGhlIG1ldGhvZCBvZiBtYWtpbmcgcmVxdWVzdHMgdG8gR3JlbWxpbiBTZXJ2ZXI6IHNjcmlwdCBvciBieXRlY29kZS4KIEZvciBzY3JpcHRzLCB0aGF0IHdpbGwgbWVhbiB0aGF0IHVzZXJzIGFyZSBzZW5kaW5nIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBHcmVtbGluIHRvIHRoZSBzZXJ2ZXIgZGlyZWN0bHkgdGhyb3VnaCBhCi1kcml2ZXIgb3ZlciB3ZWJzb2NrZXRzIG9yIHRocm91Z2ggdGhlIEhUVFAuIEZvciBieXRlY29kZSwgdXNlcnMgd2lsbCBiZSB1dGlsaXplIGEgPDxncmVtbGluLXZhcmlhbnRzLCBHcmVtbGluIEdMVj4+Citkcml2ZXIgb3ZlciB3ZWJzb2NrZXRzIG9yIHRocm91Z2ggdGhlIEhUVFAuIEZvciBieXRlY29kZSwgdXNlcnMgd2lsbCBiZSB1dGlsaXplIGEgPDxncmVtbGluLWRyaXZlcnMtdmFyaWFudHMsIEdyZW1saW4gR0xWPj4KIHdoaWNoIHdpbGwgY29uc3RydWN0IGJ5dGVjb2RlIGZvciB0aGVtIGFuZCBzdWJtaXQgdGhlIHJlcXVlc3QgdG8gdGhlIHNlcnZlciB1cG9uIGl0ZXJhdGlvbiBvZiB0aGVpciB0cmF2ZXJzYWwuCiAKIEluIGVpdGhlciBjYXNlLCBpdCBpcyBpbXBvcnRhbnQgdG8gYWxzbyBjb25zaWRlciB0aGUgbWV0aG9kIG9mICJkZXRhY2htZW50Ii4gRGV0YWNobWVudCByZWZlcnMgdG8gdGhlIG1hbm5lciBpbiB3aGljaApAQCAtMjAwNywxMCArMTgzOCwyNSBAQAogV2l0aCB0aGUgdHlwZSBvZiByZXF1ZXN0IGFuZCBkZXRhY2htZW50IG1vZGVsIGluIG1pbmQsIGl0IGlzIG5vdyBwb3NzaWJsZSB0byBkaXNjdXNzIGhvdyBiZXN0IHRvIGNvbnNpZGVyIGVsZW1lbnQKIHByb3BlcnRpZXMgaW4gcmVsYXRpb24gdG8gdGhlbSBhbGwgaW4gY29uY2VydC4KIAorQnkgZGVmYXVsdCwgR3JlbWxpbiBTZXJ2ZXIgc2FtcGxlIGNvbmZpZ3VyYXRpb25zIHV0aWxpemUgYFJlZmVyZW5jZUVsZW1lbnRTdHJhdGVneWAgd2hlbiBjcmVhdGluZyB0aGUgb3V0LW9mLXRoZS1ib3gKK2BHcmFwaFRyYXZlcnNhbFNvdXJjZWAuIEFzIHRoZSBuYW1lIHN1Z2dlc3RzLCB0aGlzIG1lYW5zIHRoYXQgZWxlbWVudHMgd2lsbCBiZSBkZXRhY2hlZCBieSByZWZlcmVuY2UgYW5kIHdpbGwKK3RoZXJlZm9yZSBub3QgaGF2ZSBwcm9wZXJ0aWVzIGluY2x1ZGVkLiBUaGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBmcm9tIHRoZSBHcmVtbGluIFNlcnZlciBpbml0aWFsaXphdGlvbiBzY3JpcHQgbG9va3MKK2xpa2UgdGhpczoKKworW3NvdXJjZSxncm9vdnldCistLS0tCitnbG9iYWxzIDw8IFtnIDogZ3JhcGgudHJhdmVyc2FsKCkud2l0aFN0cmF0ZWdpZXMoUmVmZXJlbmNlRWxlbWVudFN0cmF0ZWd5Lmluc3RhbmNlKCkpXQorLS0tLQorCitUaGlzIGNvbmZpZ3VyYXRpb24gaXMgZ2xvYmFsIHRvIEdyZW1saW4gU2VydmVyIGFuZCB0aGVyZWZvcmUgYWxsIG1ldGhvZHMgb2YgY29ubmVjdGlvbiB3aWxsIGFsd2F5cyByZXR1cm4gZWxlbWVudHMKK3dpdGhvdXQgcHJvcGVydGllcy4gSWYgdGhpcyBzdHJhdGVneSBpcyBub3QgaW5jbHVkZWQsIHRoZW4gdGhlcmUgYXJlIG90aGVyIGNvbnNpZGVyYXRpb25zIHRvIHRha2UgaW50byBhY2NvdW50IHN1Y2ggYXMKK3RoZSBjb25uZWN0aW9uIHR5cGUgKGkuZS4gc2NyaXB0IG9yIGJ5dGVjb2RlKSBhbmQgdGhlIHNlcmlhbGl6ZXIuCisKIEZvciBzY3JpcHQtYmFzZWQgcmVxdWVzdHMsIHVzZXJzIHNob3VsZCB0YWtlIGNhcmUgd2hlbiByZXR1cm5pbmcgZ3JhcGggZWxlbWVudHMuIEJ5IGRlZmF1bHQsIGVsZW1lbnRzIHdpbGwgYmUgcmV0dXJuZWQKLWFzIGRldGFjaGVkIGVsZW1lbnRzIGFuZCB3aWxsIHRodXMgc2VyaWFsaXplIHdpdGggYWxsIHByb3BlcnRpZXMgdGhhdCBhcmUgYm91bmQgdG8gdGhlbS4gQXMgc3VjaCwgR3J5byBhbmQgR3JhcGhTT04KLXNlcmlhbGl6ZXJzIHdpbGwgd3JpdGUgYWxsIHByb3BlcnRpZXMgaW4gdGhlIHJldHVybiBwYXlsb2FkLiBTY3JpcHQtYmFzZWQgcmVxdWVzdHMgc2hvdWxkIGRlZmluaXRlbHkgZm9sbG93IHRoZSBiZXN0Ci1wcmFjdGljZSBvZiBvbmx5IHJldHVybmluZyB0aGUgZGF0YSByZXF1aXJlZCBieSB0aGUgYXBwbGljYXRpb24uCithcyAiZGV0YWNoZWQgZWxlbWVudHMiIGFuZCBkZXBlbmRpbmcgb24gdGhlIHNlcmlhbGl6ZXIgYmVpbmcgdXNlZCB0aG9zZSBkZXRhY2hlZCBlbGVtZW50cyBtYXkgb3IgbWF5IG5vdCBoYXZlIHRoZWlyCitwcm9wZXJ0aWVzIGNhcnJpZWQgd2l0aCB0aGVtLiBHcnlvIGFuZCBHcmFwaFNPTiBzZXJpYWxpemVycyB3aWxsIHdyaXRlIGFsbCBwcm9wZXJ0aWVzIGluIHRoZSByZXR1cm4gcGF5bG9hZCBpbiB0aGlzCitjYXNlIGJ1dCBHcmFwaEJpbmFyeSB3aWxsIG5vdC4gVGhlcmVmb3JlLCBzY3JpcHQtYmFzZWQgcmVxdWVzdHMgdGhhdCB1c2UgR3J5byBvciBHcmFwaFNPTiBzaG91bGQgZGVmaW5pdGVseSBmb2xsb3cgdGhlCitiZXN0IHByYWN0aWNlIG9mIG9ubHkgcmV0dXJuaW5nIHRoZSBkYXRhIHJlcXVpcmVkIGJ5IHRoZSBhcHBsaWNhdGlvbi4KIAogTk9URTogR3J5byBkb2VzIGhhdmUgdGhlIGV4Y2VwdGlvbiBmb3IgdGhlIGBHcnlvTWVzc2FnZVNlcmlhbGl6ZXJHcmVtbGluVjFkMGAgd2l0aCB0aGUgYHNlcmlhbGl6ZVJlc3VsdFRvU3RyaW5nYAogb3B0aW9uIGVuYWJsZWQsIHdoaWNoIHdpbGwgc2ltcGx5IGNvbnZlcnQgYWxsIHJlc3VsdHMgdXNpbmcgdGhlIEphdmEgYHRvU3RyaW5nKClgIG1ldGhvZCBwcmlvciB0byBzZXJpYWxpemF0aW9uIGFuZApAQCAtMjA0NSwxNCArMTg5MSwxOSBAQAogLS0tLQogQ2x1c3RlciBjbHVzdGVyID0gQ2x1c3Rlci5vcGVuKCk7CiBDbGllbnQgY2xpZW50ID0gY2x1c3Rlci5jb25uZWN0KCk7Ci1SZXN1bHRTZXQgcmVzdWx0cyA9IGNsaWVudC5zdWJtaXQoImcuVigpLmhhc0xhYmVsKCdwZXJzb24nKS52YWx1ZU1hcCh0cnVlLCduYW1lJykiKTsKK1Jlc3VsdFNldCByZXN1bHRzID0gY2xpZW50LnN1Ym1pdCgiZy5WKCkuaGFzTGFiZWwoJ3BlcnNvbicpLmVsZW1lbnRNYXAoJ25hbWUnKSIpOwogCiBHcmFwaFRyYXZlcnNhbFNvdXJjZSBnID0gdHJhdmVyc2FsKCkud2l0aFJlbW90ZSgnY29uZi9yZW1vdGUtZ3JhcGgucHJvcGVydGllcycpOwotTGlzdDxWZXJ0ZXg+IHJlc3VsdHMgPSBnLlYoKS5oYXNMYWJlbCgicGVyc29uIikudmFsdWVNYXAodHJ1ZSwnbmFtZScpLnRvTGlzdCgpOworTGlzdDxWZXJ0ZXg+IHJlc3VsdHMgPSBnLlYoKS5oYXNMYWJlbCgicGVyc29uIikuZWxlbWVudE1hcCgnbmFtZScpLnRvTGlzdCgpOwogLS0tLQogCiBCb3RoIG9mIHRoZSBhYm92ZSByZXF1ZXN0cyByZXR1cm4gYSBsaXN0IG9mIGBNYXBgIGluc3RhbmNlcyB0aGF0IGNvbnRhaW4gdGhlIGBpZGAsIGBsYWJlbGAgYW5kIHRoZSAibmFtZSIgcHJvcGVydHkuCiAKK1RJUDogVGhlIGV4YW1wbGUgZ3JhcGggY29uZmlndXJhdGlvbnMgcHJlLXBhY2thZ2VkIHdpdGggR3JlbWxpbiBTZXJ2ZXIgdXRpbGl6ZSBgUmVmZXJlbmNlRWxlbWVudFN0cmF0ZWd5YAord2hpY2ggY29udmVydCBhbGwgZ3JhcGggZWxlbWVudHMgdG8gcmVmZXJlbmNlcyBieSBpbml0aWFsaXppbmcgImciIHVzaW5nCitgd2l0aFN0cmF0ZWdpZXMoUmVmZXJlbmNlRWxlbWVudFN0cmF0ZWd5Lmluc3RhbmNlKClgLiBDb25zaWRlciB1dGlsaXppbmcgYFJlZmVyZW5jZUVsZW1lbnRTdHJhdGVneWAgd2hlbmV2ZXIgY3JlYXRpbmcKK2EgYEdyYXBoVHJhdmVyc2FsU291cmNlYCBpbiBKYXZhIHRvIGVuc3VyZSB0aGUgbW9zdCBwb3J0YWJsZSBHcmVtbGluLgorCiBOT1RFOiBGb3IgdGhvc2UgaW50ZXJlc3RlZCwgcGxlYXNlIHNlZSBsaW5rOmh0dHBzOi8vbGlzdHMuYXBhY2hlLm9yZy90aHJlYWQuaHRtbC9lOTU5ZTg1ZDRmOGIzZDQ2ZDI4MWYyNzQyYTZlNTc0YzdkMjdjNTRiZmM1MmY4MDJmN2MwNGFmMyU0MCUzQ2Rldi50aW5rZXJwb3AuYXBhY2hlLm9yZyUzRVt0aGlzIHBvc3RdCiB0byB0aGUgVGlua2VyUG9wIGRldiBsaXN0IHdoaWNoIG91dGxpbmVzIHRoZSBmdWxsIGhpc3Rvcnkgb2YgdGhpcyBpc3N1ZSBhbmQgcmVsYXRlZCBjb25jZXJucy4KIApAQCAtMjExMiwxMyArMTk2MywxMyBAQAogW1tzZXNzaW9uc11dCiA9PT09IENvbnNpZGVyaW5nIFNlc3Npb25zCiAKLVRoZSBwcmVmZXJyZWQgYXBwcm9hY2ggZm9yIGlzc3VpbmcgcmVxdWVzdHMgdG8gR3JlbWxpbiBTZXJ2ZXIgaXMgdG8gZG8gc28gaW4gYSBzZXNzaW9ubGVzcyBtYW5uZXIuICBUaGUgY29uY2VwdCBvZgotInNlc3Npb25sZXNzIiByZWZlcnMgdG8gYSByZXF1ZXN0IHRoYXQgaXMgY29tcGxldGVseSBlbmNhcHN1bGF0ZWQgd2l0aGluIGEgc2luZ2xlIHRyYW5zYWN0aW9uLCBzdWNoIHRoYXQgdGhlIHNjcmlwdAotaW4gdGhlIHJlcXVlc3Qgc3RhcnRzIHdpdGggYSBuZXcgdHJhbnNhY3Rpb24gYW5kIGVuZHMgd2l0aCBhIGNsb3NlZCB0cmFuc2FjdGlvbi4gU2Vzc2lvbmxlc3MgcmVxdWVzdHMgaGF2ZSBhdXRvbWF0aWMKLXRyYW5zYWN0aW9uIG1hbmFnZW1lbnQgaGFuZGxlZCBieSBHcmVtbGluIFNlcnZlciwgdGh1cyBhdXRvbWF0aWNhbGx5IG9wZW5pbmcgYW5kIGNsb3NpbmcgdHJhbnNhY3Rpb25zIGFzIHByZXZpb3VzbHkKLWRlc2NyaWJlZC4gIFRoZSBkb3duc2lkZSB0byB0aGUgc2Vzc2lvbmxlc3MgYXBwcm9hY2ggaXMgdGhhdCB0aGUgZW50aXJlIHNjcmlwdCB0byBiZSBleGVjdXRlZCBtdXN0IGJlIGtub3duIGF0IHRoZQotdGltZSBvZiBzdWJtaXNzaW9uIHNvIHRoYXQgaXQgY2FuIGFsbCBiZSBleGVjdXRlZCBhdCBvbmNlLiAgVGhpcyByZXF1aXJlbWVudCBtYWtlcyBpdCBkaWZmaWN1bHQgZm9yIHNvbWUgdXNlIGNhc2VzCi13aGVyZSBtb3JlIGNvbnRyb2wgb3ZlciB0aGUgdHJhbnNhY3Rpb24gaXMgZGVzaXJlZC4KK1RoZSBwcmVmZXJyZWQgYXBwcm9hY2ggZm9yIGlzc3Vpbmcgc2NyaXB0LWJhc2VkIHJlcXVlc3RzIHRvIEdyZW1saW4gU2VydmVyIGlzIHRvIGRvIHNvIGluIGEgc2Vzc2lvbmxlc3MgbWFubmVyLiAgVGhlCitjb25jZXB0IG9mICJzZXNzaW9ubGVzcyIgcmVmZXJzIHRvIGEgcmVxdWVzdCB0aGF0IGlzIGNvbXBsZXRlbHkgZW5jYXBzdWxhdGVkIHdpdGhpbiBhIHNpbmdsZSB0cmFuc2FjdGlvbiwgc3VjaCB0aGF0Cit0aGUgc2NyaXB0IGluIHRoZSByZXF1ZXN0IHN0YXJ0cyB3aXRoIGEgbmV3IHRyYW5zYWN0aW9uIGFuZCBlbmRzIHdpdGggYSBjbG9zZWQgdHJhbnNhY3Rpb24uIFNlc3Npb25sZXNzIHJlcXVlc3RzIGhhdmUKK2F1dG9tYXRpYyB0cmFuc2FjdGlvbiBtYW5hZ2VtZW50IGhhbmRsZWQgYnkgR3JlbWxpbiBTZXJ2ZXIsIHRodXMgYXV0b21hdGljYWxseSBvcGVuaW5nIGFuZCBjbG9zaW5nIHRyYW5zYWN0aW9ucyBhcworcHJldmlvdXNseSBkZXNjcmliZWQuICBUaGUgZG93bnNpZGUgdG8gdGhlIHNlc3Npb25sZXNzIGFwcHJvYWNoIGlzIHRoYXQgdGhlIGVudGlyZSBzY3JpcHQgdG8gYmUgZXhlY3V0ZWQgbXVzdCBiZSBrbm93bgorYXQgdGhlIHRpbWUgb2Ygc3VibWlzc2lvbiBzbyB0aGF0IGl0IGNhbiBhbGwgYmUgZXhlY3V0ZWQgYXQgb25jZS4gIFRoaXMgcmVxdWlyZW1lbnQgbWFrZXMgaXQgZGlmZmljdWx0IGZvciBzb21lIHVzZQorY2FzZXMgd2hlcmUgbW9yZSBjb250cm9sIG92ZXIgdGhlIHRyYW5zYWN0aW9uIGlzIGRlc2lyZWQuCiAKIEZvciBzdWNoIHVzZSBjYXNlcywgR3JlbWxpbiBTZXJ2ZXIgc3VwcG9ydHMgc2Vzc2lvbnMuICBXaXRoIHNlc3Npb25zLCB0aGUgdXNlciBpcyBpbiBjb21wbGV0ZSBjb250cm9sIG9mIHRoZSBzdGFydAogYW5kIGVuZCBvZiB0aGUgdHJhbnNhY3Rpb24uIFRoaXMgZmVhdHVyZSBjb21lcyB3aXRoIHNvbWUgYWRkaXRpb25hbCBleHBlbnNlIHRvIGNvbnNpZGVyOgpAQCAtMjE0Myw3ICsxOTk0LDcgQEAKIENsaWVudCBjbGllbnQgPSBjbHVzdGVyLmNvbm5lY3QoInNlc3Npb25OYW1lIik7IDwyPgogLS0tLQogCi08MT4gT3BlbnMgYSByZWZlcmVuY2UgdG8gYGxvY2FsaG9zdGAgYXMgPDxjb25uZWN0aW5nLXZpYS1qYXZhLHByZXZpb3VzbHkgc2hvd24+Pi4KKzwxPiBPcGVucyBhIHJlZmVyZW5jZSB0byBgbG9jYWxob3N0YCBhcyA8PGdyZW1saW4tamF2YSxwcmV2aW91c2x5IHNob3duPj4uCiA8Mj4gQ3JlYXRlcyBhIGBTZXNzaW9uZWRDbGllbnRgIGdpdmVuIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgb2YgdGhlIENsdXN0ZXIuIFRoZSBgY29ubmVjdCgpYCBtZXRob2QgaXMgZ2l2ZW4gYQogYFN0cmluZ2AgdmFsdWUgdGhhdCBiZWNvbWVzIHRoZSB1bmlxdWUgbmFtZSBvZiB0aGUgc2Vzc2lvbi4gSXQgaXMgb2Z0ZW4gYmVzdCB0byBzaW1wbHkgdXNlIGEgYFVVSURgIHRvIHJlcHJlc2VudAogdGhlIHNlc3Npb24uCkBAIC0yNDYyLDE1ICsyMzEzLDYgQEAKIDwzPiBUaGUgYFRpbmtlckdyYXBoYCBvZiB0aGF0IHByZXZpb3VzIHRyYXZlcnNhbCBjYW4gYmUgZm91bmQgaW4gdGhlIGByZXN1bHRgIG9iamVjdCBhbmQgbm93IHRoYXQgdGhlIGBHcmFwaGAgaXMgbG9jYWwKIHRvIEdyZW1saW4gQ29uc29sZSBpdCBjYW4gYmUgdXNlZCB3aXRoIEdlcGhpIGFzIHNob3duIGluIHRoZSBwcmlvciBpbnN0cnVjdGlvbiBzZXQuCiAKLVtbZ2lyYXBoLXBsdWdpbl1dCi09PT0gR2lyYXBoIFBsdWdpbgotCi1pbWFnZTpnaXJhcGgtbG9nby5wbmdbd2lkdGg9NTAsZmxvYXQ9bGVmdF0gIFRoZSBHaXJhcGggUGx1Z2luIGluc3RhbGxzIGFzIHBhcnQgb2YgYGdpcmFwaC1ncmVtbGluYCBhbmQgcHJvdmlkZXMKLWEgbnVtYmVyIG9mIGltcG9ydHMgYW5kIHV0aWxpdHkgZnVuY3Rpb25zIHRvIHRoZSBlbnZpcm9ubWVudCB3aXRoaW4gd2hpY2ggaXQgaXMgdXNlZC4gVGhvc2UgY2xhc3NlcyBhbmQgZnVuY3Rpb25zCi1wcm92aWRlIHRoZSBiYXNpcyBmb3Igc3VwcG9ydGluZyA8PGdyYXBoY29tcHV0ZXIsT0xBUCBiYXNlZCB0cmF2ZXJzYWxzPj4gdXNpbmcgbGluazpodHRwOi8vZ2lyYXBoLmFwYWNoZS5vcmdbR2lyYXBoXS4KLVRoaXMgcGx1Z2luIGlzIGRlZmluZWQgaW4gZ3JlYXRlciBkZXRhaWwgaW4gdGhlIDw8Z2lyYXBoZ3JhcGhjb21wdXRlcixHaXJhcGhHcmFwaENvbXB1dGVyPj4gc2VjdGlvbiBhbmQgaXMgdHlwaWNhbGx5Ci1pbnN0YWxsZWQgaW4gY29uanVjdGlvbiB3aXRoIHRoZSA8PGhhZG9vcC1wbHVnaW4sSGFkb29wLVBsdWdpbj4+LgotCiBbW2dyYXBoLXBsdWdpbnNdXQogPT09IEdyYXBoIFBsdWdpbnMKIApAQCAtMjUyMSwxMyArMjM2MywxMyBAQAogaW1hZ2U6Z3JlbWxpbi1zdWdhci5wbmdbd2lkdGg9MTIwLGZsb2F0PWxlZnRdIEluIHByZXZpb3VzIHZlcnNpb25zIG9mIEdyZW1saW4tR3Jvb3Z5LCB0aGVyZSB3ZXJlIG51bWVyb3VzCiBsaW5rOmh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3ludGFjdGljX3N1Z2FyW3N5bnRhY3RpYyBzdWdhcnNdIHRoYXQgdXNlcnMgY291bGQgcmVseSBvbiB0byBtYWtlIHRoZWlyIHRyYXZlcnNhbHMKIG1vcmUgc3VjY2luY3QuIFVuZm9ydHVuYXRlbHksIG1hbnkgb2YgdGhlc2UgY29udmVudGlvbnMgbWFkZSB1c2Ugb2YgbGluazpodHRwOi8vZG9jcy5vcmFjbGUuY29tL2phdmFzZS90dXRvcmlhbC9yZWZsZWN0L1tKYXZhIHJlZmxlY3Rpb25dCi1hbmQgdGh1cywgd2VyZSBub3QgcGVyZm9ybWFudC4gSW4gVGlua2VyUG9wMywgdGhlc2UgY29udmVuaWVuY2VzIGhhdmUgYmVlbiByZW1vdmVkIGluIHN1cHBvcnQgb2YgdGhlIHN0YW5kYXJkCithbmQgdGh1cywgd2VyZSBub3QgcGVyZm9ybWFudC4gSW4gVGlua2VyUG9wLCB0aGVzZSBjb252ZW5pZW5jZXMgaGF2ZSBiZWVuIHJlbW92ZWQgaW4gc3VwcG9ydCBvZiB0aGUgc3RhbmRhcmQKIEdyZW1saW4tR3Jvb3Z5IHN5bnRheCBiZWluZyBib3RoIGlubGluZSB3aXRoIEdyZW1saW4tSmF2YTggc3ludGF4IGFzIHdlbGwgYXMgYWx3YXlzIGJlaW5nIHRoZSBtb3N0IHBlcmZvcm1hbnQKIHJlcHJlc2VudGF0aW9uLiBIb3dldmVyLCBmb3IgdGhvc2UgdXNlcnMgdGhhdCB3b3VsZCBsaWtlIHRvIHVzZSB0aGUgcHJldmlvdXMgc3ludGFjdGljIHN1Z2FycyAoYXMgd2VsbCBhcyBuZXcgb25lcyksCiB0aGVyZSBpcyBgU3VnYXJHcmVtbGluUGx1Z2luYCAoYS5rLmEgR3JlbWxpbi1Hcm9vdnktU3VnYXIpLgogCiBJTVBPUlRBTlQ6IEl0IGlzIGltcG9ydGFudCB0aGF0IHRoZSBzdWdhciBwbHVnaW4gaXMgbG9hZGVkIGluIGEgR3JlbWxpbiBDb25zb2xlIHNlc3Npb24gcHJpb3IgdG8gYW55IG1hbmlwdWxhdGlvbnMgb2YKLXRoZSByZXNwZWN0aXZlIFRpbmtlclBvcDMgb2JqZWN0cyBhcyBHcm9vdnkgd2lsbCBjYWNoZSB1bmF2YWlsYWJsZSBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzLgordGhlIHJlc3BlY3RpdmUgVGlua2VyUG9wIG9iamVjdHMgYXMgR3Jvb3Z5IHdpbGwgY2FjaGUgdW5hdmFpbGFibGUgbWV0aG9kcyBhbmQgcHJvcGVydGllcy4KIAogW3NvdXJjZSxncm9vdnldCiAtLS0tCkBAIC0yNjE0LDUzICsyNDU2LDMgQEAKIC0tLS0KIGRlc2NyaWJlR3JhcGgoSGFkb29wR3JhcGgpCiAtLS0tCi0KLU5PVEU6IFRoaXMgY29tbWFuZCB3aWxsIG9ubHkgd29yayBmb3IgbG9jYWwgYEdyYXBoYCBpbnN0YW5jZXMgaW4gdGhlIEdyZW1saW4gQ29uc29sZS4gVGhlIGNvbW1hbmQgY2Fubm90IGJlIGlzc3VlZAotdG8gcmVtb3RlIGdyYXBocyBhcyBzY3JpcHRzLgotCi1bW2FwcGxpY2F0aW9uLXRlbXBsYXRlc11dCi09PSBBcHBsaWNhdGlvbiBUZW1wbGF0ZXMKLQotVGlua2VyUG9wIGhhcyBhIG51bWJlciBvZiBhcHBsaWNhdGlvbiB0ZW1wbGF0ZXMsIHdoaWNoIHByb3ZpZGUgZXhhbXBsZSBwcm9qZWN0IHRlbXBsYXRlcyB0byBxdWlja2x5IGdldCBzdGFydGVkIHdpdGggVGlua2VyUG9wLgotCi1bW2dyZW1saW4tYXJjaGV0eXBlc11dCi09PT0gTWF2ZW4gQXJjaGV0eXBlcwotCi1UaGUgYXZhaWxhYmxlIGxpbms6aHR0cHM6Ly9tYXZlbi5hcGFjaGUub3JnL2d1aWRlcy9pbnRyb2R1Y3Rpb24vaW50cm9kdWN0aW9uLXRvLWFyY2hldHlwZXMuaHRtbFtNYXZlbiBhcmNoZXR5cGVzXSBhcmUgYXMgZm9sbG93czoKLQotKiBgZ3JlbWxpbi1hcmNoZXR5cGUtZHNsYCAtIEFuIGV4YW1wbGUgcHJvamVjdCB0aGF0IGRlbW9uc3RyYXRlcyBob3cgdG8gYnVpbGQgRG9tYWluIFNwZWNpZmljIExhbmd1YWdlcyB3aXRoIEdyZW1saW4gaW4gSmF2YS4KLSogYGdyZW1saW4tYXJjaGV0eXBlLXNlcnZlcmAgLSBBbiBleGFtcGxlIHByb2plY3QgdGhhdCBkZW1vbnN0cmF0ZXMgdGhlIGJhc2ljIHN0cnVjdHVyZSBvZiBhCi08PGdyZW1saW4tc2VydmVyLEdyZW1saW4gU2VydmVyPj4gcHJvamVjdCwgaG93IHRvIGNvbm5lY3Qgd2l0aCB0aGUgR3JlbWxpbiBEcml2ZXIsIGFuZCBob3cgdG8gZW1iZWQgR3JlbWxpbiBTZXJ2ZXIgaW4KLWEgdGVzdGluZyBmcmFtZXdvcmsuCi0qIGBncmVtbGluLWFyY2hldHlwZS10aW5rZXJncmFwaGAgLSBBIGJhc2ljIGV4YW1wbGUgb2YgaG93IHRvIHN0cnVjdHVyZSBhIFRpbmtlclBvcCBwcm9qZWN0IHdpdGggTWF2ZW4uCi0KLVlvdSBjYW4gdXNlIE1hdmVuIHRvIGdlbmVyYXRlIHRoZXNlIGV4YW1wbGUgcHJvamVjdHMgd2l0aCBhIGNvbW1hbmQgbGlrZToKLQotW3NvdXJjZSxzaGVsbF0KLSQgbXZuIGFyY2hldHlwZTpnZW5lcmF0ZSAtRGFyY2hldHlwZUdyb3VwSWQ9b3JnLmFwYWNoZS50aW5rZXJwb3AgLURhcmNoZXR5cGVBcnRpZmFjdElkPWdyZW1saW4tYXJjaGV0eXBlLXNlcnZlcgotICAgICAgLURhcmNoZXR5cGVWZXJzaW9uPXgueS56IC1EZ3JvdXBJZD1jb20ubXkgLURhcnRpZmFjdElkPWFwcCAtRHZlcnNpb249MC4xIC1EaW50ZXJhY3RpdmVNb2RlPWZhbHNlCi0KLVRoaXMgY29tbWFuZCB3aWxsIGdlbmVyYXRlIGEgbmV3IE1hdmVuIHByb2plY3QgaW4gYSBkaXJlY3RvcnkgY2FsbGVkICJhcHAiIHdpdGggYSBgcG9tLnhtbGAgc3BlY2lmeWluZyBhIGBncm91cElkYCBvZgotYGNvbS5teWAuIFBsZWFzZSBzZWUgdGhlIGBSRUFETUUuYXNjaWlkb2NgIGluIHRoZSByb290IG9mIGVhY2ggZ2VuZXJhdGVkIHByb2plY3QgZm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBidWlsZCBhbmQKLWV4ZWN1dGUgaXQuCi0KLVtbZ3JlbWxpbi1kb3RuZXQtdGVtcGxhdGVdXQotPT09IEdyZW1saW4uTmV0IFRlbXBsYXRlCi0KLVRoaXMgbGluazpodHRwczovL2RvY3MubWljcm9zb2Z0LmNvbS9kb3RuZXQvY29yZS90b29scy9jdXN0b20tdGVtcGxhdGVzW2RvdG5ldCB0ZW1wbGF0ZV0gaGVscHMgZ2V0dGluZyBzdGFydGVkIHdpdGgKLTw8Z3JlbWxpbi1Eb3ROZXQsR3JlbWxpbi5OZXQ+Pi4gSXQgY3JlYXRlcyBhIG5ldyBDIyBjb25zb2xlIHByb2plY3QgdGhhdCBzaG93cyBob3cgdG8gY29ubmVjdCB0byBhCi08PGdyZW1saW4tc2VydmVyLEdyZW1saW4gU2VydmVyPj4gd2l0aCBHcmVtbGluLk5ldC4KLQotWW91IGNhbiBpbnN0YWxsIHRoZSB0ZW1wbGF0ZSB3aXRoIHRoZSBkb3RuZXQgQ0xJIHRvb2w6Ci1bc291cmNlLHNoZWxsXQotZG90bmV0IG5ldyAtaSBHcmVtbGluLk5ldC5UZW1wbGF0ZQotCi1BZnRlciB0aGUgdGVtcGxhdGUgaXMgaW5zdGFsbGVkLCBhIG5ldyBwcm9qZWN0IGJhc2VkIG9uIHRoaXMgdGVtcGxhdGUgY2FuIGJlIGluc3RhbGxlZDoKLQotW3NvdXJjZSxzaGVsbF0KLWRvdG5ldCBuZXcgZ3JlbWxpbgotCi1Zb3UgY2FuIHNwZWNpZnkgdGhlIG91dHB1dCBkaXJlY3RvcnkgZm9yIHRoZSBuZXcgcHJvamVjdCB3aGljaCB3aWxsIHRoZW4gYWxzbyBiZSB1c2VkIGFzIHRoZSBuYW1lIG9mIHRoZSBjcmVhdGVkIHByb2plY3Q6Ci0KLVtzb3VyY2Usc2hlbGxdCi1kb3RuZXQgbmV3IGdyZW1saW4gLW8gTXlGaXJzdEdyZW1saW5Qcm9qZWN0CmRpZmYgLS1naXQgYS9kb2NzL3NyYy9yZWZlcmVuY2UvZ3JlbWxpbi12YXJpYW50cy5hc2NpaWRvYyBiL2RvY3Mvc3JjL3JlZmVyZW5jZS9ncmVtbGluLXZhcmlhbnRzLmFzY2lpZG9jCmluZGV4IDY5OTg4YmQuLjlhMDFkNmMgMTAwNjQ0Ci0tLSBhL2RvY3Mvc3JjL3JlZmVyZW5jZS9ncmVtbGluLXZhcmlhbnRzLmFzY2lpZG9jCisrKyBiL2RvY3Mvc3JjL3JlZmVyZW5jZS9ncmVtbGluLXZhcmlhbnRzLmFzY2lpZG9jCkBAIC0xNCw1NyArMTQsNTk1IEBACiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KIC8vLy8KLVtbZ3JlbWxpbi12YXJpYW50c11dCi09IEdyZW1saW4gVmFyaWFudHMKKworYW5jaG9yOmdyZW1saW4tdmFyaWFudHNbXQorW1tncmVtbGluLWRyaXZlcnMtdmFyaWFudHNdXQorPSBHcmVtbGluIERyaXZlcnMgYW5kIFZhcmlhbnRzCiAKIGltYWdlOjpncmVtbGluLWhvdXNlLW9mLW1pcnJvcnMucG5nW3dpZHRoPTEwMjRdCiAKLUdyZW1saW4gaXMgYSBncmFwaCB0cmF2ZXJzYWwgbGFuZ3VhZ2UgdGhhdCBtYWtlcyB1c2Ugb2YgdHdvIGZ1bmRhbWVudGFsIHByb2dyYW1taW5nIGNvbnN0cnVjdHM6Ci1saW5rOmh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Z1bmN0aW9uX2NvbXBvc2l0aW9uW2Z1bmN0aW9uIGNvbXBvc2l0aW9uXSBhbmQKLWxpbms6aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTmVzdGVkX2Z1bmN0aW9uW2Z1bmN0aW9uIG5lc3RpbmddLiBHaXZlbiB0aGlzIGdlbmVyYWxpdHksIGl0IGlzIHBvc3NpYmxlIHRvIGVtYmVkCi1HcmVtbGluIGluIGFueSBtb2Rlcm4gcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UuCitBdCB0aGlzIHBvaW50LCByZWFkZXJzIHNob3VsZCBiZSB3ZWxsIGZhbWlsaWFyIHdpdGggdGhlIDw8aW50cm8sSW50cm9kdWN0aW9uPj4gdG8gdGhpcyBSZWZlcmVuY2UgRG9jdW1lbnRhdGlvbiBhbmQKK3dpbGwgbGlrZWx5IGJlIHRoaW5raW5nIGFib3V0IGltcGxlbWVudGF0aW9uIGRldGFpbHMgc3BlY2lmaWMgdG8gdGhlIGdyYXBoIHByb3ZpZGVyIHRoZXkgaGF2ZSBzZWxlY3RlZCBhcyB3ZWxsIGFzCit0aGUgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgdGhleSBpbnRlbmQgdG8gdXNlLiBUaGUgY2hvaWNlIG9mIHByb2dyYW1taW5nIGxhbmd1YWdlIGNvdWxkIGhhdmUgaW1wbGljYXRpb25zIHRvIHRoZQorYXJjaGl0ZWN0dXJlIGFuZCBkZXNpZ24gb2YgdGhlIGFwcGxpY2F0aW9uIGFuZCB0aGUgY2hvaWNlIGl0c2VsZiBtYXkgaGF2ZSBsaW1pdHMgaW1wb3NlZCB1cG9uIGl0IGJ5IHRoZSBjaG9zZW4gZ3JhcGgKK3Byb3ZpZGVyLiBGb3IgZXhhbXBsZSwgYSA8PGNvbm5lY3RpbmctcmdwLFJlbW90ZSBHcmVtbGluIFByb3ZpZGVyPj4gd2lsbCByZXF1aXJlIHRoZSBzZWxlY3Rpb24gb2YgYSBkcml2ZXIgdG8gaW50ZXJhY3QKK3dpdGggaXQuIE9uIHRoZSBvdGhlciBoYW5kLCBhIGdyYXBoIHN5c3RlbSB0aGF0IGlzIGRlc2lnbmVkIGZvciBlbWJlZGRlZCB1c2UsIGxpa2UgVGlua2VyR3JhcGgsIG5lZWRzIHRoZSBKYXZhCitWaXJ0dWFsIE1hY2hpbmUgKEpWTSkgZW52aXJvbm1lbnQgc28gd2lsbCByZXF1aXJlIDw8Y29ubmVjdGluZy1ncmVtbGluLXNlcnZlcixHcmVtbGluIFNlcnZlcj4+LCBpZiB1c2luZyBhIHByb2dyYW1taW5nCitsYW5ndWFnZSB0aGF0IGlzIG5vdCBvbiB0aGUgSlZNIGFuZCB3aWxsIGZ1cnRoZXIgcmVxdWlyZSBkcml2ZXIgc2VsZWN0aW9uLgogCi1JTVBPUlRBTlQ6IEdyZW1saW4tSmF2YSBpcyB0aGUgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uIG9mIEdyZW1saW4gYW5kIGFueSAocHJvcGVyKSBHcmVtbGluIGxhbmd1YWdlIHZhcmlhbnQgd2lsbCBlbXVsYXRlIGl0cwotc3RydWN0dXJlIGFzIGJlc3QgYXMgcG9zc2libGUgZ2l2ZW4gdGhlIGNvbnN0cnVjdHMgb2YgdGhlIGhvc3QgbGFuZ3VhZ2UuIEEgc3Ryb25nIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4gdmFyaWFudHMgZW5zdXJlcwotdGhhdCB0aGUgZ2VuZXJhbCBHcmVtbGluIHJlZmVyZW5jZSBkb2N1bWVudGF0aW9uIGlzIGFwcGxpY2FibGUgdG8gYWxsIHZhcmlhbnRzIGFuZCB0aGF0IHVzZXJzIG1vdmluZyBiZXR3ZWVuIGRldmVsb3BtZW50Ci1sYW5ndWFnZXMgY2FuIGVhc2lseSBhZG9wdCB0aGUgR3JlbWxpbiB2YXJpYW50IGZvciB0aGF0IGxhbmd1YWdlLgorVGlua2VyUG9wIHByb3ZpZGVzIGFuIGFycmF5IG9mIGRyaXZlcnMgaW4gZGlmZmVyZW50IHByb2dyYW1taW5nIGxhbmd1YWdlcyBhcyBhIHdheSB0byBjb25uZWN0IHRvIGEgcmVtb3RlIEdyZW1saW4KK1NlcnZlciBvciBSZW1vdGUgR3JlbWxpbiBQcm92aWRlci4gRHJpdmVycyBhbGxvdyB0aGUgZGV2ZWxvcGVyIHRvIG1ha2UgcmVxdWVzdHMgdG8gdGhhdCByZW1vdGUgc3lzdGVtIGFuZCBnZXQgYmFjaworcmVzdWx0cyBmcm9tIHRoZSBUaW5rZXJQb3AtZW5hYmxlZCBncmFwaHMgaG9zdGVkIHdpdGhpbi4gQSBkcml2ZXIgY2FuIHN1Ym1pdCBHcmVtbGluIHN0cmluZ3MgYW5kIEdyZW1saW4gYnl0ZWNvZGUKK292ZXIgdGhpcyBzdWItcHJvdG9jb2wuIEdyZW1saW4gc3RyaW5ncyBhcmUgd3JpdHRlbiBpbiB0aGUgc2NyaXB0aW5nIGxhbmd1YWdlIG1hZGUgYXZhaWxhYmxlIGJ5IHRoZSByZW1vdGUgc3lzdGVtIHRoYXQKK3RoZSBkcml2ZXIgaXMgY29ubmVjdGluZyB0byAodHlwaWNhbGx5LCBHcm9vdnktYmFzZWQpLiBUaGlzIGNvbm5lY3Rpb24gYXBwcm9hY2ggaXMgcXVpdGUgc2ltaWxhciB0byB3aGF0IGRldmVsb3BlcnMKK2FyZSBsaWtlbHkgZmFtaWxpYXIgd2l0aCB3aGVuIHVzaW5nIEpEQkMgYW5kIFNRTC4gV2hpbGUgaXQgaXMgZmFtaWxpYXIsIGl0IGlzIG5vdCByZWNvbW1lbmRlZCBhbmQgZm9yIFRpbmtlclBvcCBpdCBpcworY29uc2lkZXJlZCBhbiBvdXQtZGF0ZWQgY29uY2VwdCBhbmQgaXMgbGFyZ2VseSBzdGlsbCBwcmVzZW50IGZvciB0aGUgcHVycG9zZSBvZiBzdXBwb3J0aW5nIGFwcGxpY2F0aW9ucyB0aGF0IG1pZ2h0CitzdGlsbCBiZSB1c2luZyB0aGF0IG1ldGhvZCBvZiBpbnRlcmFjdGlvbi4KKworVGhlIHByZWZlcnJlZCBhcHByb2FjaCBpcyB0byB1c2UgYnl0ZWNvZGUtYmFzZWQgcmVxdWVzdHMsIHdoaWNoIGVzc2VudGlhbGx5IGFsbG93cyB0aGUgYWJpbGl0eSB0byBjcmFmdCBHcmVtbGluCitkaXJlY3RseSBpbiB0aGUgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2Ugb2YgY2hvaWNlLiBBcyBHcmVtbGluIG1ha2VzIHVzZSBvZiB0d28gZnVuZGFtZW50YWwgcHJvZ3JhbW1pbmcgY29uc3RydWN0czoKK2xpbms6aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRnVuY3Rpb25fY29tcG9zaXRpb25bZnVuY3Rpb24gY29tcG9zaXRpb25dIGFuZAorbGluazpodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9OZXN0ZWRfZnVuY3Rpb25bZnVuY3Rpb24gbmVzdGluZ10uIGl0IGlzIHBvc3NpYmxlIHRvIGVtYmVkIHRoZSBHcmVtbGluIGxhbmd1YWdlCitpbiBhbnkgbW9kZXJuIHByb2dyYW1taW5nIGxhbmd1YWdlLiBJdCBpcyBhIGZhciBtb3JlIG5hdHVyYWwgd2F5IHRvIHByb2dyYW0sIGJlY2F1c2UgaXQgZW5hYmxlcyBJREUgaW50ZXJhY3Rpb24sCitjb21waWxlIHRpbWUgY2hlY2tzLCBhbmQgbGFuZ3VhZ2UgbGV2ZWwgY2hlY2tzIHRoYXQgY2FuIGhlbHAgcHJldmVudCBlcnJvcnMgcHJpb3IgdG8gZXhlY3V0aW9uLiBUaGUgZGlmZmVyZW5jZXMKK2JldHdlZW4gdGhlc2UgdHdvIGFwcHJvYWNoZXMgd2VyZSBvdXRsaW5lZCBpbiB0aGUgPDxjb25uZWN0aW5nLXZpYS1kcml2ZXJzLENvbm5lY3RpbmcgVmlhIERyaXZlcnM+PiBTZWN0aW9uLCB3aGljaAorYXBwbGllcyB0byBHcmVtbGluIFNlcnZlciwgYnV0IGFsc28gdG8gUmVtb3RlIEdyZW1saW4gUHJvdmlkZXJzLgorCitJbiBhZGRpdGlvbiB0byB0aGUgbGFuZ3VhZ2VzIGFuZCBkcml2ZXJzIHRoYXQgVGlua2VyUG9wIHN1cHBvcnRzLCB0aGVyZSBhcmUgYWxzbyB0aGlyZC1wYXJ0eSBpbXBsZW1lbnRhdGlvbnMsIGFzIHdlbGwKK2FzIGV4dGVuc2lvbnMgdG8gdGhlIEdyZW1saW4gbGFuZ3VhZ2UgdGhhdCBtaWdodCBiZSBzcGVjaWZpYyB0byBhIHBhcnRpY3VsYXIgZ3JhcGggcHJvdmlkZXIuIFRoYXQgbGlzdGluZyBjYW4gYmUKK2ZvdW5kIG9uIHRoZSBUaW5rZXJQb3AgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnLyNncmFwaC1zeXN0ZW1zW2hvbWUgcGFnZV0uIFRoZWlyIGRlc2NyaXB0aW9uIGlzIGJleW9uZCB0aGUKK3Njb3BlIG9mIHRoaXMgZG9jdW1lbnRhdGlvbi4KKworVElQOiBXaGVuIHBvc3NpYmxlLCBpdCBpcyB0eXBpY2FsbHkgYmVzdCB0byBhbGlnbiB0aGUgdmVyc2lvbiBvZiBUaW5rZXJQb3AgdXNlZCBvbiB0aGUgY2xpZW50IHdpdGggdGhlIHZlcnNpb24KK3N1cHBvcnRlZCBvbiB0aGUgc2VydmVyLiBXaGlsZSBpdCBpcyBub3QgaW1wb3NzaWJsZSB0byBoYXZlIGEgZGlmZmVyZW50IHZlcnNpb24gYmV0d2VlbiBjbGllbnQgYW5kIHNlcnZlciwgaXQgbWF5CityZXF1aXJlIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBhbmQvb3IgYSBkZWVwZXIga25vd2xlZGdlIG9mIHRoYXQgY2hhbmdlcyBpbnRyb2R1Y2VkIGJldHdlZW4gdmVyc2lvbnMuIEl0J3Mgc2ltcGx5CitzYWZlciB0byBhdm9pZCB0aGUgY29uZmxpY3QsIHdoZW4gYWxsb3dlZCB0byBkbyBzby4KKworSU1QT1JUQU5UOiBHcmVtbGluLUphdmEgaXMgdGhlIGNhbm9uaWNhbCByZXByZXNlbnRhdGlvbiBvZiBHcmVtbGluIGFuZCBhbnkgKHByb3BlcikgR3JlbWxpbiBsYW5ndWFnZSB2YXJpYW50IHdpbGwKK2VtdWxhdGUgaXRzIHN0cnVjdHVyZSBhcyBiZXN0IGFzIHBvc3NpYmxlIGdpdmVuIHRoZSBjb25zdHJ1Y3RzIG9mIHRoZSBob3N0IGxhbmd1YWdlLiBBIHN0cm9uZyBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuCit2YXJpYW50cyBlbnN1cmVzIHRoYXQgdGhlIGdlbmVyYWwgR3JlbWxpbiByZWZlcmVuY2UgZG9jdW1lbnRhdGlvbiBpcyBhcHBsaWNhYmxlIHRvIGFsbCB2YXJpYW50cyBhbmQgdGhhdCB1c2VycyBtb3ZpbmcKK2JldHdlZW4gZGV2ZWxvcG1lbnQgbGFuZ3VhZ2VzIGNhbiBlYXNpbHkgYWRvcHQgdGhlIEdyZW1saW4gdmFyaWFudCBmb3IgdGhhdCBsYW5ndWFnZS4KIAogaW1hZ2U6OmdyZW1saW4tdmFyaWFudC1hcmNoaXRlY3R1cmUucG5nW3dpZHRoPTY1MCxmbG9hdD1sZWZ0XQogCiBOT1RFOiBUaGUgaW5mb3JtYXRpb24gaGVyZWluIGRlc2NyaWJlcyBob3cgdG8gdXNlIHRoZSBHcmVtbGluIGxhbmd1YWdlIHZhcmlhbnRzIGRpc3RyaWJ1dGVkCi13aXRoIEFwYWNoZSBUaW5rZXJQb3AuIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gYnVpbGQgYSBHcmVtbGluIGxhbmd1YWdlIHZhcmlhbnQsCi1wbGVhc2UgcmV2aWV3IHRoZSBsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy9jdXJyZW50L3R1dG9yaWFscy9ncmVtbGluLWxhbmd1YWdlLXZhcmlhbnRzL1tHcmVtbGluIExhbmd1YWdlIFZhcmlhbnRzXQotdHV0b3JpYWwuCit3aXRoIEFwYWNoZSBUaW5rZXJQb3AuIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gYnVpbGQgYSBHcmVtbGluIGxhbmd1YWdlIHZhcmlhbnQsIHBsZWFzZSByZXZpZXcgdGhlCitsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei90dXRvcmlhbHMvZ3JlbWxpbi1sYW5ndWFnZS12YXJpYW50cy9bR3JlbWxpbiBMYW5ndWFnZSBWYXJpYW50c10gdHV0b3JpYWwuCiAKK1RoZSBmb2xsb3dpbmcgc2VjdGlvbnMgZGVzY3JpYmUgZWFjaCBsYW5ndWFnZSB2YXJpYW50IGFuZCBkcml2ZXIgdGhhdCBpcyBvZmZpY2lhbGx5IFRpbmtlclBvcCBhIHBhcnQgb2YgdGhlIHByb2plY3QsCitwcm92aWRlZCBtb3JlIGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IHVzYWdlLCBjb25maWd1cmF0aW9uIGFuZCBrbm93biBsaW1pdGF0aW9ucy4KKworYW5jaG9yOmNvbm5lY3RpbmctdmlhLXJlbW90ZWdyYXBoW10KK2FuY2hvcjpjb25uZWN0aW5nLXZpYS1qYXZhW10KIFtbZ3JlbWxpbi1qYXZhXV0KID09IEdyZW1saW4tSmF2YQogCi1pbWFnZTpncmVtbGluLWphdmEtZHJhd2luZy5wbmdbd2lkdGg9MTMwLGZsb2F0PXJpZ2h0XSBBcGFjaGUgVGlua2VyUG9wJ3MgR3JlbWxpbi1KYXZhIGltcGxlbWVudHMgR3JlbWxpbiB3aXRoaW4gdGhlIEphdmE4Ci1sYW5ndWFnZSBhbmQgY2FuIGJlIHVzZWQgYnkgYW55IEphdmE4IGNvbXBsaWFudCB2aXJ0dWFsIG1hY2hpbmUuIEdyZW1saW4tSmF2YSBpcyBjb25zaWRlcmVkIHRoZSBjYW5vbmljYWwsIHJlZmVyZW5jZQoraW1hZ2U6Z3JlbWxpbi1qYXZhLWRyYXdpbmcucG5nW3dpZHRoPTEzMCxmbG9hdD1yaWdodF0gQXBhY2hlIFRpbmtlclBvcCdzIEdyZW1saW4tSmF2YSBpbXBsZW1lbnRzIEdyZW1saW4gd2l0aGluIHRoZQorSmF2YSBsYW5ndWFnZSBhbmQgY2FuIGJlIHVzZWQgYnkgYW55IEphdmEgVmlydHVhbCBNYWNoaW5lLiBHcmVtbGluLUphdmEgaXMgY29uc2lkZXJlZCB0aGUgY2Fub25pY2FsLCByZWZlcmVuY2UKIGltcGxlbWVudGF0aW9uIG9mIEdyZW1saW4gYW5kIHNlcnZlcyBhcyB0aGUgZm91bmRhdGlvbiBieSB3aGljaCBhbGwgb3RoZXIgR3JlbWxpbiBsYW5ndWFnZSB2YXJpYW50cyBzaG91bGQgZW11bGF0ZS4KK0FzIHRoZSBHcmVtbGluIFRyYXZlcnNhbCBNYWNoaW5lIHRoYXQgcHJvY2Vzc2VzIEdyZW1saW4gcXVlcmllcyBpcyBhbHNvIHdyaXR0ZW4gaW4gSmF2YSwgaXQgY2FuIGJlIHVzZWQgaW4gYWxsIHRocmVlCitjb25uZWN0aW9uIG1ldGhvZHMgZGVzY3JpYmVkIGluIHRoZSA8PGNvbm5lY3RpbmctZ3JlbWxpbixDb25uZWN0aW5nIEdyZW1saW4+PiBTZWN0aW9uLgorCitbc291cmNlLHhtbF0KKy0tLS0KKzxkZXBlbmRlbmN5PgorICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS50aW5rZXJwb3A8L2dyb3VwSWQ+CisgICA8YXJ0aWZhY3RJZD5ncmVtbGluLWNvcmU8L2FydGlmYWN0SWQ+CisgICA8dmVyc2lvbj54LnkuejwvdmVyc2lvbj4KKzwvZGVwZW5kZW5jeT4KKworPCEtLSB3aGVuIHVzaW5nIEdyZW1saW4gU2VydmVyIG9yIFJlbW90ZSBHcmVtbGluIFByb3ZpZGVyIGEgZHJpdmVyIGlzIHJlcXVpcmVkIC0tPgorPGRlcGVuZGVuY3k+CisgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLnRpbmtlcnBvcDwvZ3JvdXBJZD4KKyAgIDxhcnRpZmFjdElkPmdyZW1saW4tZHJpdmVyPC9hcnRpZmFjdElkPgorICAgPHZlcnNpb24+eC55Lno8L3ZlcnNpb24+Cis8L2RlcGVuZGVuY3k+CistLS0tCisKKz09PSBDb25uZWN0aW5nCisKK1RoZSBwYXR0ZXJuIGZvciBjb25uZWN0aW5nIGlzIGRlc2NyaWJlZCBpbiA8PGNvbm5lY3RpbmctZ3JlbWxpbixDb25uZWN0aW5nIEdyZW1saW4+PiBhbmQgaXQgYmFzaWNhbGx5IGRpc3RpbGxzIGRvd24KK3RvIGNyZWF0aW5nIGEgYEdyYXBoVHJhdmVyc2FsU291cmNlYC4gRm9yIDw8Y29ubmVjdGluZy1lbWJlZGRlZCxlbWJlZGRlZD4+IG1vZGUsIHRoaXMgaW52b2x2ZXMgZmlyc3QgY3JlYXRpbmcgYQorYEdyYXBoYCBhbmQgdGhlbiBzcGF3bmluZyB0aGUgYEdyYXBoVHJhdmVyc2FsU291cmNlYDoKKworW3NvdXJjZSxqYXZhXQorLS0tLQorR3JhcGggZ3JhcGggPSAuLi47CitHcmFwaFRyYXZlcnNhbFNvdXJjZSBnID0gZ3JhcGgudHJhdmVyc2FsKCk7CistLS0tCisKK1VzaW5nICJnIiBpdCBpcyB0aGVuIHBvc3NpYmxlIHRvIHN0YXJ0IHdyaXRpbmcgR3JlbWxpbi4gVGhlICJnIiBhbGxvd3MgZm9yIHRoZSBzZXR0aW5nIG9mIG1hbnkgY29uZmlndXJhdGlvbiBvcHRpb25zCit3aGljaCBhZmZlY3QgdHJhdmVyc2FsIGV4ZWN1dGlvbi4gVGhlIDw8dHJhdmVyc2FsLCBUcmF2ZXJzYWw+PiBTZWN0aW9uIGRlc2NyaWJlcyBzb21lIG9mIHRoZXNlIG9wdGlvbnMgYW5kIHNvbWUgYXJlCitvbmx5IHN1aXRhYmxlIHdpdGggPDxjb25uZWN0aW5nLWVtYmVkZGVkLGVtYmVkZGVkPj4gc3R5bGUgdXNhZ2UuIEZvciByZW1vdGUgb3B0aW9ucyBob3dldmVyIHRoZXJlIGFyZSBzb21lIGFkZGVkCitjb25maWd1cmF0aW9ucyB0byBjb25zaWRlciBhbmQgdGhpcyBzZWN0aW9uIGxvb2tzIHRvIGFkZHJlc3MgdGhvc2UuCisKK1doZW4gY29ubmVjdGluZyB0byA8PGNvbm5lY3RpbmctZ3JlbWxpbi1zZXJ2ZXIsR3JlbWxpbiBTZXJ2ZXI+PiBvciA8PGNvbm5lY3RpbmctcmdwLFJlbW90ZSBHcmVtbGluIFByb3ZpZGVycz4+ICBpdAoraXMgcG9zc2libGUgdG8gY29uZmlndXJlIHRoZSBgRHJpdmVyUmVtb3RlQ29ubmVjdGlvbmAgbWFudWFsbHkgYXMgc2hvd24gaW4gZWFybGllciBleGFtcGxlcyB3aGVyZSB0aGUgaG9zdCBhbmQgcG9ydAorYXJlIHByb3ZpZGVkIGFzIGZvbGxvd3M6CisKK1tzb3VyY2UsamF2YV0KKy0tLS0KK0dyYXBoVHJhdmVyc2FsU291cmNlIGcgPSB0cmF2ZXJzYWwoKS53aXRoUmVtb3RlKERyaXZlclJlbW90ZUNvbm5lY3Rpb24udXNpbmcoImxvY2FsaG9zdCIsODE4MiwiZyIpKTsKKy0tLS0KKworSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBjcmVhdGUgaXQgZnJvbSBhIGNvbmZpZ3VyYXRpb24uIFRoZSBtb3N0IGJhc2ljIHdheSB0byBkbyBzbyBpbnZvbHZlcyB0aGUgZm9sbG93aW5nIGxpbmUgb2YgY29kZToKKworW3NvdXJjZSxqYXZhXQorLS0tLQorR3JhcGhUcmF2ZXJzYWxTb3VyY2UgZyA9IHRyYXZlcnNhbCgpLndpdGhSZW1vdGUoJ2NvbmYvcmVtb3RlLWdyYXBoLnByb3BlcnRpZXMnKTsKKy0tLS0KKworVGhlIGByZW1vdGUtZ3JhcGgucHJvcGVydGllc2AgZmlsZSBzaW1wbHkgcHJvdmlkZXMgY29ubmVjdGlvbiBpbmZvcm1hdGlvbiB0byB0aGUgYEdyYXBoVHJhdmVyc2FsU291cmNlYCB3aGljaCBpcyB1c2VkCit0byBjb25maWd1cmUgYSBgUmVtb3RlQ29ubmVjdGlvbmAuIFRoYXQgZmlsZSBsb29rcyBsaWtlIHRoaXM6CisKK1tzb3VyY2UsdGV4dF0KKy0tLS0KK2dyZW1saW4ucmVtb3RlLnJlbW90ZUNvbm5lY3Rpb25DbGFzcz1vcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5yZW1vdGUuRHJpdmVyUmVtb3RlQ29ubmVjdGlvbgorZ3JlbWxpbi5yZW1vdGUuZHJpdmVyLmNsdXN0ZXJGaWxlPWNvbmYvcmVtb3RlLW9iamVjdHMueWFtbAorZ3JlbWxpbi5yZW1vdGUuZHJpdmVyLnNvdXJjZU5hbWU9ZworLS0tLQorCitUaGUgYFJlbW90ZUNvbm5lY3Rpb25gIGlzIGFuIGludGVyZmFjZSB0aGF0IHByb3ZpZGVzIHRoZSB0cmFuc3BvcnQgbWVjaGFuaXNtIGZvciAiZyIgYW5kIG1ha2VzIGl0IHBvc3NpYmxlIHRvIGZvcgordGhhdCBtZWNoYW5pc20gdG8gYmUgYWx0ZXJlZCAodHlwaWNhbGx5IGJ5IGdyYXBoIHByb3ZpZGVycyB3aG8gaGF2ZSB0aGVpciBvd24gcHJvdG9jb2xzKS4gVGlua2VyUG9wIHByb3ZpZGVzIG9uZSBzdWNoCitpbXBsZW1lbnRhdGlvbiBjYWxsZWQgdGhlIGBEcml2ZXJSZW1vdGVDb25uZWN0aW9uYCB3aGljaCBlbmFibGVzIHRyYW5zcG9ydCBvdmVyIEdyZW1saW4gU2VydmVyIHByb3RvY29scyB1c2luZyB0aGUKK1RpbmtlclBvcCBkcml2ZXIuIFRoZSBkcml2ZXIgaXMgY29uZmlndXJlZCBieSB0aGUgc3BlY2lmaWVkIGBncmVtbGluLnJlbW90ZS5kcml2ZXIuY2x1c3RlckZpbGVgIGFuZCB0aGUgbG9jYWwgImciIGlzCitib3VuZCB0byB0aGUgYEdyYXBoVHJhdmVyc2FsU291cmNlYCBvbiB0aGUgcmVtb3RlIGVuZCB3aXRoIGBncmVtbGluLnJlbW90ZS5kcml2ZXIuc291cmNlTmFtZWAgd2hpY2ggaW4gdGhpcyBjYXNlIGlzCithbHNvICJnIi4KKworVGhlcmUgYXJlIG90aGVyIHdheXMgdG8gY29uZmlndXJlIHRoZSB0cmF2ZXJzYWwgdXNpbmcgYHdpdGhSZW1vdGUoKWAgYXMgaXQgaGFzIG90aGVyIG92ZXJsb2Fkcy4gSXQgY2FuIHRha2UgYW4KK0FwYWNoZSBDb21tb25zIGBDb25maWd1cmF0aW9uYCBvYmplY3Qgd2hpY2ggd291bGQgaGF2ZSBrZXlzIHNpbWlsYXIgdG8gdGhvc2Ugc2hvd24gaW4gdGhlIHByb3BlcnRpZXMgZmlsZSBhbmQgaXQKK2NhbiBhbHNvIHRha2UgYSBgUmVtb3RlQ29ubmVjdGlvbmAgaW5zdGFuY2UgZGlyZWN0bHkuIFRoZSBsYXR0ZXIgaXMgaW50ZXJlc3RpbmcgaW4gdGhhdCBpdCBtZWFucyBpdCBpcyBwb3NzaWJsZSB0bworcHJvZ3JhbW1hdGljYWxseSBjb25zdHJ1Y3QgYWxsIGFzcGVjdHMgb2YgdGhlIGBSZW1vdGVDb25uZWN0aW9uYC4gRm9yIFRpbmtlclBvcCB1c2FnZSwgdGhhdCBtaWdodCBtZWFuIGRpcmVjdGx5Citjb25zdHJ1Y3RpbmcgdGhlIGBEcml2ZXJSZW1vdGVDb25uZWN0aW9uYCBhbmQgdGhlIGRyaXZlciBpbnN0YW5jZSB0aGF0IHN1cHBsaWVzIHRoZSB0cmFuc3BvcnQgbWVjaGFuaXNtLiBGb3IgZXhhbXBsZSwKK3RoZSBjb21tYW5kIHNob3duIGFib3ZlIGNvdWxkIGJlIHJlLXdyaXR0ZW4gdXNpbmcgcHJvZ3JhbW1hdGljIGNvbnN0cnVjdGlvbiBhcyBmb2xsb3dzOgorCitbc291cmNlLGphdmFdCistLS0tCitDbHVzdGVyIGNsdXN0ZXIgPSBDbHVzdGVyLm9wZW4oKTsKK0dyYXBoVHJhdmVyc2FsU291cmNlIGcgPSB0cmF2ZXJzYWwoKS53aXRoUmVtb3RlKERyaXZlclJlbW90ZUNvbm5lY3Rpb24udXNpbmcoY2x1c3RlciwgImciKSk7CistLS0tCisKK1BsZWFzZSBjb25zaWRlciB0aGUgZm9sbG93aW5nIGV4YW1wbGU6CisKK1tncmVtbGluLWdyb292eV0KKy0tLS0KK2cgPSB0cmF2ZXJzYWwoKS53aXRoUmVtb3RlKCdjb25mL3JlbW90ZS1ncmFwaC5wcm9wZXJ0aWVzJykKK2cuVigpLmVsZW1lbnRNYXAoKQorZy5jbG9zZSgpCistLS0tCisKK1tzb3VyY2UsamF2YV0KKy0tLS0KK0dyYXBoVHJhdmVyc2FsU291cmNlIGcgPSB0cmF2ZXJzYWwoKS53aXRoUmVtb3RlKCJjb25mL3JlbW90ZS1ncmFwaC5wcm9wZXJ0aWVzIik7CitMaXN0PE1hcD4gbGlzdCA9IGcuVigpLmVsZW1lbnRNYXAoKTsKK2cuY2xvc2UoKTsKKy0tLS0KKworTm90ZSB0aGUgY2FsbCB0byBgY2xvc2UoKWAgYWJvdmUuIFRoZSBjYWxsIHRvIGB3aXRoUmVtb3RlKClgIGludGVybmFsbHkgaW5zdGFudGlhdGVzIGEgY29ubmVjdGlvbiB2aWEgdGhlIGRyaXZlciB0aGF0CitjYW4gb25seSBiZSByZWxlYXNlZCBieSAiY2xvc2luZyIgdGhlIGBHcmFwaFRyYXZlcnNhbFNvdXJjZWAuIEl0IGlzIGltcG9ydGFudCB0byB0YWtlIHRoYXQgc3RlcCB0byByZWxlYXNlIHJlc291cmNlcworY3JlYXRlZCBpbiB0aGF0IHN0ZXAuCisKK0lmIHdvcmtpbmcgd2l0aCBtdWx0aXBsZSByZW1vdGUgYFRyYXZlcnNhbFNvdXJjZWAgaW5zdGFuY2VzIGl0IGlzIG1vcmUgZWZmaWNpZW50IHRvIGNvbnN0cnVjdCBgQ2x1c3RlcmAgYW5kIGBDbGllbnQKK29iamVjdHMgYW5kIHRoZW4gcmUtdXNlIHRoZW0uCisKK1tncmVtbGluLWdyb292eV0KKy0tLS0KK2NsdXN0ZXIgPSBDbHVzdGVyLm9wZW4oJ2NvbmYvcmVtb3RlLW9iamVjdHMueWFtbCcpCitjbGllbnQgPSBjbHVzdGVyLmNvbm5lY3QoKQorZyA9IHRyYXZlcnNhbCgpLndpdGhSZW1vdGUoRHJpdmVyUmVtb3RlQ29ubmVjdGlvbi51c2luZyhjbGllbnQsICJnIikpCitnLlYoKS5lbGVtZW50TWFwKCkKK2cuY2xvc2UoKQorY2xpZW50LmNsb3NlKCkKK2NsdXN0ZXIuY2xvc2UoKQorLS0tLQorCitJZiB0aGUgYENsaWVudGAgaW5zdGFuY2UgaXMgc3VwcGxpZWQgZXh0ZXJuYWxseSwgYXMgaXMgc2hvd24gYWJvdmUsIHRoZW4gaXQgaXMgbm90IGNsb3NlZCBpbXBsaWNpdGx5IGJ5IHRoZSBjbG9zZSBvZgorImciLiAgQ2xvc2luZyAiZyIgd2lsbCBoYXZlIG5vIGVmZmVjdCBvbiAiY2xpZW50IiBvciAiY2x1c3RlciIuIFdoZW4gc3VwcGx5aW5nIHRoZW0gZXh0ZXJuYWxseSwgdGhlIGBDbGllbnRgIGFuZAorYENsdXN0ZXJgIG9iamVjdHMgbXVzdCBhbHNvIGJlIGNsb3NlZCBleHBsaWNpdGx5LiBJdCdzIHdvcnRoIG5vdGluZyB0aGF0IHRoZSBjbG9zZSBvZiBhIGBDbHVzdGVyYCB3aWxsIGNsb3NlIGFsbAorYENsaWVudGAgaW5zdGFuY2VzIHNwYXduZWQgYnkgdGhlIGBDbHVzdGVyYC4KKworSU1QT1JUQU5UOiBCeXRlY29kZS1iYXNlZCB0cmF2ZXJzYWxzIHVzZSB0aGUgYFRyYXZlcnNhbE9wUHJvY2Vzc29yYCBpbiBHcmVtbGluIFNlcnZlciB3aGljaCByZXF1aXJlcyBhIGNhY2hlIHRvIGVuYWJsZQordGhlIHJldHJpZXZhbCBvZiBzaWRlLWVmZmVjdHMgKGlmIHRoZSBgVHJhdmVyc2FsYCBwcm9kdWNlcyBhbnkpLiBUaGF0IGNhY2hlIGNhbiBiZSBjb25maWd1cmVkIChlLmcuIGNvbnRyb2xsaW5nCitldmljdGlvbiB0aW1lcyBhbmQgc2l6aW5nKSBpbiB0aGUgR3JlbWxpbiBTZXJ2ZXIgY29uZmlndXJhdGlvbiBmaWxlIGFzIGRlc2NyaWJlZCA8PHRyYXZlcnNhbG9wcHJvY2Vzc29yLCBoZXJlPj4uCisKK1NvbWUgY29ubmVjdGlvbiBvcHRpb25zIGNhbiBhbHNvIGJlIHNldCBvbiBpbmRpdmlkdWFsIHJlcXVlc3RzIG1hZGUgdGhyb3VnaCB0aGUgSmF2YSBkcml2ZXIgdXNpbmcgYHdpdGgoKWAgc3RlcAorb24gdGhlIGBUcmF2ZXJzYWxTb3VyY2VgLiBGb3IgaW5zdGFuY2UgdG8gc2V0IHJlcXVlc3QgdGltZW91dCB0byA1MDAgbWlsbGlzZWNvbmRzOgorCitbc291cmNlLGphdmFdCistLS0tCitHcmFwaFRyYXZlcnNhbFNvdXJjZSBnID0gdHJhdmVyc2FsKCkud2l0aFJlbW90ZShjb25mKTsKK0xpc3Q8VmVydGV4PiB2ZXJ0aWNlcyA9IGcud2l0aChUb2tlbnMuQVJHU19FVkFMX1RJTUVPVVQsIDUwMEwpLlYoKS5vdXQoImtub3dzIikudG9MaXN0KCkKKy0tLS0KKworW1tqYXZhLWltcG9ydHNdXQorPT09IENvbW1vbiBJbXBvcnRzCisKK1RoZXJlIGFyZSBhIG51bWJlciBvZiBjbGFzc2VzLCBmdW5jdGlvbnMgYW5kIHRva2VucyB0aGF0IGFyZSB0eXBpY2FsbHkgdXNlZCB3aXRoIEdyZW1saW4uIFRoZSBmb2xsb3dpbmcgaW1wb3J0cworcHJvdmlkZSBtb3N0IG9mIHRoZSBjb21tb24gZnVuY3Rpb25hbGl0eSByZXF1aXJlZCB0byB1c2UgR3JlbWxpbjoKKworW3NvdXJjZSxqYXZhXQorLS0tLQoraW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkdyYXBoVHJhdmVyc2FsU291cmNlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuSU87CitpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuQW5vbnltb3VzVHJhdmVyc2FsU291cmNlLnRyYXZlcnNhbDsKK2ltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5PcGVyYXRvci4qOworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLk9yZGVyLio7CitpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUC4qOworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlBvcC4qOworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlNhY2tGdW5jdGlvbnMuKjsKK2ltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5TY29wZS4qOworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRleHRQLio7CitpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkNvbHVtbi4qOworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5EaXJlY3Rpb24uKjsKK2ltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVC4qOworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5fXy4qOworLS0tLQorCis9PT0gQ29uZmlndXJhdGlvbgorCitUaGUgZm9sbG93aW5nIHRhYmxlIGRlc2NyaWJlcyB0aGUgdmFyaW91cyBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBHcmVtbGluIERyaXZlcjoKKworW3dpZHRoPSIxMDAlIixjb2xzPSIzLDEwLF4yIixvcHRpb25zPSJoZWFkZXIiXQorfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorfEtleSB8RGVzY3JpcHRpb24gfERlZmF1bHQKK3xjb25uZWN0aW9uUG9vbC5jaGFubmVsaXplciB8VGhlIGZ1bGx5IHF1YWxpZmllZCBjbGFzc25hbWUgb2YgdGhlIGNsaWVudCBgQ2hhbm5lbGl6ZXJgIHRoYXQgZGVmaW5lcyBob3cgdG8gY29ubmVjdCB0byB0aGUgc2VydmVyLiB8YENoYW5uZWxpemVyLldlYlNvY2tldENoYW5uZWxpemVyYAorfGNvbm5lY3Rpb25Qb29sLmVuYWJsZVNzbCB8RGV0ZXJtaW5lcyBpZiBTU0wgc2hvdWxkIGJlIGVuYWJsZWQgb3Igbm90LiBJZiBlbmFibGVkIG9uIHRoZSBzZXJ2ZXIgdGhlbiBpdCBtdXN0IGJlIGVuYWJsZWQgb24gdGhlIGNsaWVudC4gfGZhbHNlCit8Y29ubmVjdGlvblBvb2wua2VlcEFsaXZlSW50ZXJ2YWwgfExlbmd0aCBvZiB0aW1lIGluIG1pbGxpc2Vjb25kcyB0byB3YWl0IG9uIGFuIGlkbGUgY29ubmVjdGlvbiBiZWZvcmUgc2VuZGluZyBhIGtlZXAtYWxpdmUgcmVxdWVzdC4gU2V0IHRvIHplcm8gdG8gZGlzYWJsZSB0aGlzIGZlYXR1cmUuIHwxODAwMDAKK3xjb25uZWN0aW9uUG9vbC5rZXlTdG9yZSB8VGhlIHByaXZhdGUga2V5IGluIEpLUyBvciBQS0NTIzEyIGZvcm1hdC4gfF9ub25lXworfGNvbm5lY3Rpb25Qb29sLmtleVN0b3JlUGFzc3dvcmQgfFRoZSBwYXNzd29yZCBvZiB0aGUgYGtleVN0b3JlYCBpZiBpdCBpcyBwYXNzd29yZC1wcm90ZWN0ZWQuIHxfbm9uZV8KK3xjb25uZWN0aW9uUG9vbC5rZXlTdG9yZVR5cGUgfGBKS1NgIChKYXZhIDggZGVmYXVsdCkgb3IgYFBLQ1MxMmAgKEphdmEgOSsgZGVmYXVsdCl8X25vbmVfCit8Y29ubmVjdGlvblBvb2wubWF4Q29udGVudExlbmd0aCB8VGhlIG1heGltdW0gbGVuZ3RoIGluIGJ5dGVzIHRoYXQgYSBtZXNzYWdlIGNhbiBiZSBzZW50IHRvIHRoZSBzZXJ2ZXIuIFRoaXMgbnVtYmVyIGNhbiBiZSBubyBncmVhdGVyIHRoYW4gdGhlIHNldHRpbmcgb2YgdGhlIHNhbWUgbmFtZSBpbiB0aGUgc2VydmVyIGNvbmZpZ3VyYXRpb24uIHw2NTUzNgorfGNvbm5lY3Rpb25Qb29sLm1heEluUHJvY2Vzc1BlckNvbm5lY3Rpb24gfFRoZSBtYXhpbXVtIG51bWJlciBvZiBpbi1mbGlnaHQgcmVxdWVzdHMgdGhhdCBjYW4gb2NjdXIgb24gYSBjb25uZWN0aW9uLiB8NAorfGNvbm5lY3Rpb25Qb29sLm1heFNpbXVsdGFuZW91c1VzYWdlUGVyQ29ubmVjdGlvbiB8VGhlIG1heGltdW0gbnVtYmVyIG9mIHRpbWVzIHRoYXQgYSBjb25uZWN0aW9uIGNhbiBiZSBib3Jyb3dlZCBmcm9tIHRoZSBwb29sIHNpbXVsdGFuZW91c2x5LiB8MTYKK3xjb25uZWN0aW9uUG9vbC5tYXhTaXplIHxUaGUgbWF4aW11bSBzaXplIG9mIGEgY29ubmVjdGlvbiBwb29sIGZvciBhIGhvc3QuIHw4Cit8Y29ubmVjdGlvblBvb2wubWF4V2FpdEZvckNvbm5lY3Rpb24gfFRoZSBhbW91bnQgb2YgdGltZSBpbiBtaWxsaXNlY29uZHMgdG8gd2FpdCBmb3IgYSBuZXcgY29ubmVjdGlvbiBiZWZvcmUgdGltaW5nIG91dC4gfDMwMDAKK3xjb25uZWN0aW9uUG9vbC5tYXhXYWl0Rm9yQ2xvc2UgfFRoZSBhbW91bnQgb2YgdGltZSBpbiBtaWxsaXNlY29uZHMgdG8gd2FpdCBmb3IgcGVuZGluZyBtZXNzYWdlcyB0byBiZSByZXR1cm5lZCBmcm9tIHRoZSBzZXJ2ZXIgYmVmb3JlIGNsb3NpbmcgdGhlIGNvbm5lY3Rpb24uIHwzMDAwCit8Y29ubmVjdGlvblBvb2wubWluSW5Qcm9jZXNzUGVyQ29ubmVjdGlvbiB8VGhlIG1pbmltdW0gbnVtYmVyIG9mIGluLWZsaWdodCByZXF1ZXN0cyB0aGF0IGNhbiBvY2N1ciBvbiBhIGNvbm5lY3Rpb24uIHwxCit8Y29ubmVjdGlvblBvb2wubWluU2ltdWx0YW5lb3VzVXNhZ2VQZXJDb25uZWN0aW9uIHxUaGUgbWF4aW11bSBudW1iZXIgb2YgdGltZXMgdGhhdCBhIGNvbm5lY3Rpb24gY2FuIGJlIGJvcnJvd2VkIGZyb20gdGhlIHBvb2wgc2ltdWx0YW5lb3VzbHkuIHw4Cit8Y29ubmVjdGlvblBvb2wubWluU2l6ZSB8VGhlIG1pbmltdW0gc2l6ZSBvZiBhIGNvbm5lY3Rpb24gcG9vbCBmb3IgYSBob3N0LiB8MgorfGNvbm5lY3Rpb25Qb29sLnJlY29ubmVjdEludGVydmFsIHxUaGUgYW1vdW50IG9mIHRpbWUgaW4gbWlsbGlzZWNvbmRzIHRvIHdhaXQgYmVmb3JlIHRyeWluZyB0byByZWNvbm5lY3QgdG8gYSBkZWFkIGhvc3QuIHwxMDAwCit8Y29ubmVjdGlvblBvb2wucmVzdWx0SXRlcmF0aW9uQmF0Y2hTaXplIHxUaGUgb3ZlcnJpZGUgdmFsdWUgZm9yIHRoZSBzaXplIG9mIHRoZSByZXN1bHQgYmF0Y2hlcyB0byBiZSByZXR1cm5lZCBmcm9tIHRoZSBzZXJ2ZXIuIHw2NAorfGNvbm5lY3Rpb25Qb29sLnNzbENpcGhlclN1aXRlcyB8VGhlIGxpc3Qgb2YgSlNTRSBjaXBoZXJzIHRvIHN1cHBvcnQgZm9yIFNTTCBjb25uZWN0aW9ucy4gSWYgc3BlY2lmaWVkLCBvbmx5IHRoZSBjaXBoZXJzIHRoYXQgYXJlIGxpc3RlZCBhbmQgc3VwcG9ydGVkIHdpbGwgYmUgZW5hYmxlZC4gSWYgbm90IHNwZWNpZmllZCwgdGhlIEpWTSBkZWZhdWx0IGlzIHVzZWQuICB8X25vbmVfCit8Y29ubmVjdGlvblBvb2wuc3NsRW5hYmxlZFByb3RvY29scyB8VGhlIGxpc3Qgb2YgU1NMIHByb3RvY29scyB0byBzdXBwb3J0IGZvciBTU0wgY29ubmVjdGlvbnMuIElmIHNwZWNpZmllZCwgb25seSB0aGUgcHJvdG9jb2xzIHRoYXQgYXJlIGxpc3RlZCBhbmQgc3VwcG9ydGVkIHdpbGwgYmUgZW5hYmxlZC4gSWYgbm90IHNwZWNpZmllZCwgdGhlIEpWTSBkZWZhdWx0IGlzIHVzZWQuICB8X25vbmVfCit8Y29ubmVjdGlvblBvb2wuc3NsU2tpcENlcnRWYWxpZGF0aW9uIHxDb25maWd1cmVzIHRoZSBgVHJ1c3RNYW5hZ2VyYCB0byB0cnVzdCBhbGwgY2VydHMgd2l0aG91dCBhbnkgdmFsaWRhdGlvbi4gU2hvdWxkIG5vdCBiZSB1c2VkIGluIHByb2R1Y3Rpb24ufGZhbHNlCit8Y29ubmVjdGlvblBvb2wudHJ1c3RTdG9yZSB8RmlsZSBsb2NhdGlvbiBmb3IgYSBTU0wgQ2VydGlmaWNhdGUgQ2hhaW4gdG8gdXNlIHdoZW4gU1NMIGlzIGVuYWJsZWQuIElmIHRoaXMgdmFsdWUgaXMgbm90IHByb3ZpZGVkIGFuZCBTU0wgaXMgZW5hYmxlZCwgdGhlIGRlZmF1bHQgYFRydXN0TWFuYWdlcmAgd2lsbCBiZSB1c2VkLiB8X25vbmVfCit8Y29ubmVjdGlvblBvb2wudHJ1c3RTdG9yZVBhc3N3b3JkIHxUaGUgcGFzc3dvcmQgb2YgdGhlIGB0cnVzdFN0b3JlYCBpZiBpdCBpcyBwYXNzd29yZC1wcm90ZWN0ZWQgfF9ub25lXworfGNvbm5lY3Rpb25Qb29sLnZhbGlkYXRpb25SZXF1ZXN0IHxBIHNjcmlwdCB0aGF0IGlzIHVzZWQgdG8gdGVzdCBzZXJ2ZXIgY29ubmVjdGl2aXR5LiBBIGdvb2Qgc2NyaXB0IHRvIHVzZSBpcyBvbmUgdGhhdCBldmFsdWF0ZXMgcXVpY2tseSBhbmQgcmV0dXJucyBubyBkYXRhLiBUaGUgZGVmYXVsdCBzaW1wbHkgcmV0dXJucyBhbiBlbXB0eSBzdHJpbmcsIGJ1dCBpZiBhIGdyYXBoIGlzIHJlcXVpcmVkIGJ5IGEgcGFydGljdWxhciBwcm92aWRlciwgYSBnb29kIHRyYXZlcnNhbCBtaWdodCBiZSBgZy5pbmplY3QoKWAuIHxfJydfCit8aG9zdHMgfFRoZSBsaXN0IG9mIGhvc3RzIHRoYXQgdGhlIGRyaXZlciB3aWxsIGNvbm5lY3QgdG8uIHxsb2NhbGhvc3QKK3xqYWFzRW50cnkgfFNldHMgdGhlIGBBdXRoUHJvcGVydGllcy5Qcm9wZXJ0eS5KQUFTX0VOVFJZYCBwcm9wZXJ0aWVzIGZvciBhdXRoZW50aWNhdGlvbiB0byBHcmVtbGluIFNlcnZlci4gfF9ub25lXworfG5pb1Bvb2xTaXplIHxTaXplIG9mIHRoZSBwb29sIGZvciBoYW5kbGluZyByZXF1ZXN0L3Jlc3BvbnNlIG9wZXJhdGlvbnMuIHxhdmFpbGFibGUgcHJvY2Vzc29ycworfHBhc3N3b3JkIHxUaGUgcGFzc3dvcmQgdG8gc3VibWl0IG9uIHJlcXVlc3RzIHRoYXQgcmVxdWlyZSBhdXRoZW50aWNhdGlvbi4gfF9ub25lXworfHBhdGggfFRoZSBVUkwgcGF0aCB0byB0aGUgR3JlbWxpbiBTZXJ2ZXIuIHxfL2dyZW1saW5fCit8cG9ydCB8VGhlIHBvcnQgb2YgdGhlIEdyZW1saW4gU2VydmVyIHRvIGNvbm5lY3QgdG8uIFRoZSBzYW1lIHBvcnQgd2lsbCBiZSBhcHBsaWVkIGZvciBhbGwgaG9zdHMuIHw4MTkyCit8cHJvdG9jb2wgfFNldHMgdGhlIGBBdXRoUHJvcGVydGllcy5Qcm9wZXJ0eS5QUk9UT0NPTGAgcHJvcGVydGllcyBmb3IgYXV0aGVudGljYXRpb24gdG8gR3JlbWxpbiBTZXJ2ZXIuIHxfbm9uZV8KK3xzZXJpYWxpemVyLmNsYXNzTmFtZSB8VGhlIGZ1bGx5IHF1YWxpZmllZCBjbGFzcyBuYW1lIG9mIHRoZSBgTWVzc2FnZVNlcmlhbGl6ZXJgIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIHNlcnZlci4gTm90ZSB0aGF0IHRoZSBzZXJpYWxpemVyIGNvbmZpZ3VyZWQgb24gdGhlIGNsaWVudCBzaG91bGQgYmUgc3VwcG9ydGVkIGJ5IHRoZSBzZXJ2ZXIgY29uZmlndXJhdGlvbi4gfF9ub25lXworfHNlcmlhbGl6ZXIuY29uZmlnIHxBIGBNYXBgIG9mIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgZm9yIHRoZSBzZXJpYWxpemVyLiB8X25vbmVfCit8dXNlcm5hbWUgfFRoZSB1c2VybmFtZSB0byBzdWJtaXQgb24gcmVxdWVzdHMgdGhhdCByZXF1aXJlIGF1dGhlbnRpY2F0aW9uLiB8X25vbmVfCit8d29ya2VyUG9vbFNpemUgfFNpemUgb2YgdGhlIHBvb2wgZm9yIGhhbmRsaW5nIGJhY2tncm91bmQgd29yay4gfGF2YWlsYWJsZSBwcm9jZXNzb3JzICogMgorfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitQbGVhc2Ugc2VlIHRoZSBsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MveC55LnovY29yZS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9DbHVzdGVyLkJ1aWxkZXIuaHRtbFtDbHVzdGVyLkJ1aWxkZXIgamF2YWRvY10gdG8gZ2V0IG1vcmUgaW5mb3JtYXRpb24gb24gdGhlc2Ugc2V0dGluZ3MuCisKKz09PSBTZXJpYWxpemF0aW9uCisKK1JlbW90ZSBzeXN0ZW1zIGxpa2UgR3JlbWxpbiBTZXJ2ZXIgYW5kIFJlbW90ZSBHcmVtbGluIFByb3ZpZGVycyByZXNwb25kIHRvIHJlcXVlc3RzIG1hZGUgaW4gYSBwYXJ0aWN1bGFyIHNlcmlhbGl6YXRpb24KK2Zvcm1hdCBhbmQgcmVzcG9uZCBieSBzZXJpYWxpemluZyByZXN1bHRzIHRvIHNvbWUgZm9ybWF0IHRvIGJlIGludGVycHJldGVkIGJ5IHRoZSBjbGllbnQuIEZvciBKVk0tYmFzZWQgbGFuZ3VhZ2VzLAordGhlcmUgYXJlIHRocmVlIG9wdGlvbnMgZm9yIHNlcmlhbGl6YXRpb246IEdyeW8sIEdyYXBoU09OIGFuZCBHcmFwaEJpbmFyeS4gV2hlbiB1c2luZyBHcnlvIHNlcmlhbGl6YXRpb24gKHRoZSBkZWZhdWx0CitzZXJpYWxpemVyIGZvciB0aGUgSmF2YSBkcml2ZXIpLCBpdCBpcyBpbXBvcnRhbnQgdGhhdCB0aGUgY2xpZW50IGFuZCBzZXJ2ZXIgaGF2ZSB0aGUgc2FtZSBzZXJpYWxpemVycyBjb25maWd1cmVkIG9yCitlbHNlIG9uZSBvciB0aGUgb3RoZXIgd2lsbCBleHBlcmllbmNlIHNlcmlhbGl6YXRpb24gZXhjZXB0aW9ucyBhbmQgZmFpbCB0byBhbHdheXMgY29tbXVuaWNhdGUuIERpc2NyZXBhbmN5IGluCitzZXJpYWxpemVyIHJlZ2lzdHJhdGlvbiBiZXR3ZWVuIGNsaWVudCBhbmQgc2VydmVyIGNhbiBoYXBwZW4gZmFpcmx5IGVhc2lseSBhcyBncmFwaHMgd2lsbCBhdXRvbWF0aWNhbGx5IGluY2x1ZGUKK3NlcmlhbGl6ZXJzIG9uIHRoZSBzZXJ2ZXItc2lkZSwgdGh1cyBsZWF2aW5nIHRoZSBjbGllbnQgdG8gYmUgY29uZmlndXJlZCBtYW51YWxseS4gVGhpcyBjYW4gYmUgZG9uZSBtYW51YWxseSBhcworZm9sbG93czoKKworW3NvdXJjZSxqYXZhXQorLS0tLQorSW9SZWdpc3RyeSByZWdpc3RyeSA9IC4uLjsgLy8gYW4gSW9SZWdpc3RyeSBpbnN0YW5jZSBleHBvc2VkIGJ5IGEgc3BlY2lmaWMgZ3JhcGggcHJvdmlkZXIKK0dyeW9NYXBwZXIga3J5byA9IEdyeW9NYXBwZXIuYnVpbGQoKS5hZGRSZWdpc3RyeShyZWdpc3RyeSkuY3JlYXRlKCk7CitNZXNzYWdlU2VyaWFsaXplciBzZXJpYWxpemVyID0gbmV3IEdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAoa3J5byk7CitDbHVzdGVyIGNsdXN0ZXIgPSBDbHVzdGVyLmJ1aWxkKCkuCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmlhbGl6ZXIoc2VyaWFsaXplcikuCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZSgpOworQ2xpZW50IGNsaWVudCA9IGNsdXN0ZXIuY29ubmVjdCgpOworR3JhcGhUcmF2ZXJzYWxTb3VyY2UgZyA9IHRyYXZlcnNhbCgpLndpdGhSZW1vdGUoRHJpdmVyUmVtb3RlQ29ubmVjdGlvbi51c2luZyhjbGllbnQsICJnIikpOworLS0tLQorCitUaGUgYElvUmVnaXN0cnlgIHRlbGxzIHRoZSBzZXJpYWxpemVyIHdoYXQgY2xhc3NlcyBmcm9tIHRoZSBncmFwaCBwcm92aWRlciB0byBhdXRvLXJlZ2lzdGVyIGR1cmluZyBzZXJpYWxpemF0aW9uLgorR3JlbWxpbiBTZXJ2ZXIgcm91Z2hseSB1c2VzIHRoaXMgc2FtZSBhcHByb2FjaCB3aGVuIGl0IGNvbmZpZ3VyZXMgaXRzIHNlcmlhbGl6ZXJzLCBzbyB1c2luZyB0aGlzIHNhbWUgbW9kZWwgd2lsbAorZW5zdXJlIGNvbXBhdGliaWxpdHkgd2hlbiBtYWtpbmcgcmVxdWVzdHMuIE9idmlvdXNseSwgaXQgaXMgcG9zc2libGUgdG8gc3dpdGNoIHRvIEdyYXBoU09OIG9yIEdyYXBoQmluYXJ5IGJ5IGJ1aWxkaW5nCit0aGUgYXBwcm9wcmlhdGUgYE1lc3NhZ2VTZXJpYWxpemVyYCAoYEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWM2QwYCBvciBgR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxYCByZXNwZWN0aXZlbHkpCitpbiB0aGUgc2FtZSB3YXkgYW5kIGJ1aWxkaW5nIHRoYXQgaW50byB0aGUgYENsdXN0ZXJgIG9iamVjdC4KIAogPT09IFRoZSBMYW1iZGEgU29sdXRpb24KIAogU3VwcG9ydGluZyBsaW5rOmh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Fub255bW91c19mdW5jdGlvblthbm9ueW1vdXMgZnVuY3Rpb25zXSBhY3Jvc3MgbGFuZ3VhZ2VzIGlzIGRpZmZpY3VsdCBhcwotbW9zdCBsYW5ndWFnZXMgZG8gbm90IHN1cHBvcnQgbGFtYmRhIGludHJvc3BlY3Rpb24gYW5kIHRodXMsIGNvZGUgYW5hbHlzaXMuIEluIEdyZW1saW4tSmF2YSwgSmF2YTggbGFtYmRhcyBjYW4gYmUgbGV2ZXJhZ2VkLgorbW9zdCBsYW5ndWFnZXMgZG8gbm90IHN1cHBvcnQgbGFtYmRhIGludHJvc3BlY3Rpb24gYW5kIHRodXMsIGNvZGUgYW5hbHlzaXMuIEluIEdyZW1saW4tSmF2YSBhbmQgd2l0aAorPDxjb25uZWN0aW5nLWVtYmVkZGVkLGVtYmVkZGVkPj4gdXNhZ2UsIGxhbWJkYXMgY2FuIGJlIGxldmVyYWdlZCBkaXJlY3RseToKIAogW3NvdXJjZSxqYXZhXQorLS0tLQogZy5WKCkub3V0KCJrbm93cyIpLm1hcCh0IC0+IHQuZ2V0KCkudmFsdWUoIm5hbWUiKSArICIgaXMgdGhlIGZyaWVuZCBuYW1lIikgPDE+CiBnLlYoKS5vdXQoImtub3dzIikuc2lkZUVmZmVjdChTeXN0ZW0ub3V0OjpwcmludGxuKSA8Mj4KIGcuVigpLmFzKCJhIikub3V0KCJrbm93cyIpLmFzKCJiIikuc2VsZWN0KCJiIikuYnkoKEZ1bmN0aW9uPFZlcnRleCwgSW50ZWdlcj4pIHYgLT4gdi48U3RyaW5nPnZhbHVlKCJuYW1lIikubGVuZ3RoKCkpIDwzPgorLS0tLQogCi08MT4gQSBKYXZhOCBmdW5jdGlvbiBpcyB1c2VkIHRvIG1hcCBhIGBUcmF2ZXJzZXI8Uz5gIHRvIGFuIG9iamVjdCBgRWAuCi08Mj4gR3JlbWxpbiBzdGVwcyB0aGF0IHRha2UgY29uc3VtZXIgYXJndW1lbnRzIGNhbiBiZSBwYXNzZWQgSmF2YTggbWV0aG9kIHJlZmVyZW5jZXMuCis8MT4gQSBKYXZhIGBGdW5jdGlvbmAgaXMgdXNlZCB0byBtYXAgYSBgVHJhdmVyc2VyPFM+YCB0byBhbiBvYmplY3QgYEVgLgorPDI+IEdyZW1saW4gc3RlcHMgdGhhdCB0YWtlIGNvbnN1bWVyIGFyZ3VtZW50cyBjYW4gYmUgcGFzc2VkIEphdmEgbWV0aG9kIHJlZmVyZW5jZXMuCiA8Mz4gR3JlbWxpbi1KYXZhIG1heSBzb21ldGltZXMgcmVxdWlyZSBleHBsaWNpdCBsYW1iZGEgdHlwaW5nIHdoZW4gdHlwZXMgY2FuIG5vdCBiZSBhdXRvbWF0aWNhbGx5IGluZmVycmVkLgogCi1XaGVuIHNlbmRpbmcgdHJhdmVyc2FscyBvdmVyIHRoZSB3aXJlIHZpYSBhIGBSZW1vdGVDb25uZWN0aW9uYCwgdGhlIHN0YXRpYyBtZXRob2RzIG9mIGBMYW1iZGFgIHNob3VsZCBiZSB1c2VkCi1hbmQgc2hvdWxkIGRlbm90ZSBhIHBhcnRpY3VsYXIgSlNSLTIyMyBgU2NyaXB0RW5naW5lYC4gYExhbWJkYWAgY3JlYXRlcyBhIHN0cmluZy1iYXNlZCBsYW1iZGEgdGhhdCBpcyB0aGVuIGNvbnZlcnRlZAotaW50byBhIGxhbWJkYS9jbG9zdXJlL2Fub255bW91cy1mdW5jdGlvbi9ldGMuIGJ5IHRoZSByZXNwZWN0aXZlIGxhbWJkYSBsYW5ndWFnZSdzIEpTUi0yMjMgYFNjcmlwdEVuZ2luZWAgaW1wbGVtZW50YXRpb24uCitXaGVuIHNlbmRpbmcgdHJhdmVyc2FscyByZW1vdGVseSB0byA8PGNvbm5lY3RpbmctZ3JlbWxpbi1zZXJ2ZXIsR3JlbWxpbiBTZXJ2ZXI+PiBvcgorPDxjb25uZWN0aW5nLXJncCxSZW1vdGUgR3JlbWxpbiBQcm92aWRlcnM+PiwgdGhlIHN0YXRpYyBtZXRob2RzIG9mIGBMYW1iZGFgIHNob3VsZCBiZSB1c2VkIGFuZCBzaG91bGQgZGVub3RlIGEKK3BhcnRpY3VsYXIgSlNSLTIyMyBgU2NyaXB0RW5naW5lYCB0aGF0IGlzIGF2YWlsYWJsZSBvbiB0aGUgcmVtb3RlIGVuZCAodHlwaWNhbGx5LCB0aGlzIGlzIEdyb292eSkuIGBMYW1iZGFgIGNyZWF0ZXMgYQorc3RyaW5nLWJhc2VkIGxhbWJkYSB0aGF0IGlzICB0aGVuIGNvbnZlcnRlZCBpbnRvIGEgbGFtYmRhL2Nsb3N1cmUvYW5vbnltb3VzLWZ1bmN0aW9uL2V0Yy4gYnkgdGhlIHJlc3BlY3RpdmUgbGFtYmRhCitsYW5ndWFnZSdzIEpTUi0yMjMgYFNjcmlwdEVuZ2luZWAgaW1wbGVtZW50YXRpb24uCiAKIFtzb3VyY2UsamF2YV0KKy0tLS0KIGcuVigpLm91dCgia25vd3MiKS5tYXAoTGFtYmRhLmZ1bmN0aW9uKCJpdC5nZXQoKS52YWx1ZSgnbmFtZScpICsgJyBpcyB0aGUgZnJpZW5kIG5hbWUnIikpCiBnLlYoKS5vdXQoImtub3dzIikuc2lkZUVmZmVjdChMYW1iZGEuY29uc3VtZXIoInByaW50bG4gaXQiKSkKIGcuVigpLmFzKCJhIikub3V0KCJrbm93cyIpLmFzKCJiIikuc2VsZWN0KCJiIikuYnkoTGFtYmRhLjxWZXJ0ZXgsSW50ZWdlcj5mdW5jdGlvbigiaXQudmFsdWUoJ25hbWUnKS5sZW5ndGgoKSIpKQorLS0tLQorCitGaW5hbGx5LCBHcmVtbGluIGBCeXRlY29kZWAgdGhhdCBpbmNsdWRlcyBsYW1iZGFzIHJlcXVpcmVzIHRoYXQgdGhlIHRyYXZlcnNhbCBiZSBwcm9jZXNzZWQgYnkgdGhlCitgU2NyaXB0RW5naW5lYC4gVG8gYXZvaWQgY29udGludWVkIHJlY29tcGlsYXRpb24gY29zdHMsIGl0IHN1cHBvcnRzIHRoZSBlbmNvZGluZyBvZiBiaW5kaW5ncywgd2hpY2ggYWxsb3cgR3JlbWxpbgorU2VydmVyIHRvIGNhY2hlIHRyYXZlcnNhbHMgdGhhdCB3aWxsIGJlIHJldXNlZCBvdmVyIGFuZCBvdmVyIGFnYWluIHNhdmUgdGhhdCBzb21lIHBhcmFtZXRlcml6YXRpb24gbWF5IGNoYW5nZS4gVGh1cywKK2luc3RlYWQgb2YgdHJhbnNsYXRpbmcsIGNvbXBpbGluZywgYW5kIHRoZW4gZXhlY3V0aW5nIGVhY2ggc3VibWl0dGVkIGJ5dGVjb2RlIHJlcXVlc3QsIGl0IGlzIHBvc3NpYmxlIHRvIHNpbXBseQorZXhlY3V0ZS4gVG8gZXhwcmVzcyBiaW5kaW5ncyBpbiBKYXZhLCB1c2UgYEJpbmRpbmdzYC4KKworW3NvdXJjZSxqYXZhXQorLS0tLQorYiA9IEJpbmRpbmdzLmluc3RhbmNlKCkKK2cuVihiLm9mKCdpZCcsMSkpLm91dCgnY3JlYXRlZCcpLnZhbHVlcygnbmFtZScpLm1hcHt0IC0+ICJuYW1lOiAiICsgdC5nZXQoKSB9CitnLlYoYi5vZignaWQnLDQpKS5vdXQoJ2NyZWF0ZWQnKS52YWx1ZXMoJ25hbWUnKS5tYXB7dCAtPiAibmFtZTogIiArIHQuZ2V0KCkgfQorZy5WKGIub2YoJ2lkJyw0KSkub3V0KCdjcmVhdGVkJykudmFsdWVzKCduYW1lJykuZ2V0Qnl0ZWNvZGUoKQorZy5WKGIub2YoJ2lkJyw0KSkub3V0KCdjcmVhdGVkJykudmFsdWVzKCduYW1lJykuZ2V0Qnl0ZWNvZGUoKS5nZXRCaW5kaW5ncygpCitjbHVzdGVyLmNsb3NlKCkKKy0tLS0KKworQm90aCB0cmF2ZXJzYWxzIGFyZSBhYnN0cmFjdGx5IGRlZmluZWQgYXMgYGcuVihpZCkub3V0KCdjcmVhdGVkJykudmFsdWVzKCduYW1lJykubWFwe3QgLT4gIm5hbWU6ICIgKyB0LmdldCgpIH1gIGFuZAordGh1cywgdGhlIGZpcnN0IHN1Ym1pc3Npb24gY2FuIGJlIGNhY2hlZCBmb3IgZmFzdGVyIGV2YWx1YXRpb24gb24gdGhlIG5leHQgc3VibWlzc2lvbi4KKworV0FSTklORzogSXQgaXMgZ2VuZXJhbGx5IGFkdmlzZWQgdG8gYXZvaWQgbGFtYmRhIHVzYWdlLiBQbGVhc2UgY29uc2lkZXIgPDxhLW5vdGUtb24tbGFtYmRhcyxBIE5vdGUgT24gTGFtYmRhcz4+IGZvcgorbW9yZSBpbmZvcm1hdGlvbi4KKworPT09IFN1Ym1pdHRpbmcgU2NyaXB0cworCitXQVJOSU5HOiBUaW5rZXJQb3AgZG9lcyBub3QgcmVjb21tZW5kIHN1Ym1pdHRpbmcgc2NyaXB0LWJhc2VkIHJlcXVlc3RzIGFuZCBnZW5lcmFsbHkgY29udGludWVzIHRvIHN1cHBvcnQgdGhpcyBmZWF0dXJlCitmb3IgbGVnYWN5IHJlYXNvbnMgYW5kIGNvcm5lciB1c2UgY2FzZXMgd2hpY2ggYXJlIHN0aWxsIG5vdCBjb21wbGV0ZWx5IGFkZHJlc3NlZCBieSB0aGUgR3JlbWxpbiBsYW5ndWFnZS4gUGxlYXNlCitjb25zaWRlciB1c2luZyBieXRlY29kZS1iYXNlZCByZXF1ZXN0cyBpbnN0ZWFkIHdoZW4gcG9zc2libGUuCisKK2ltYWdlOmdyZW1saW4tamF2YS5wbmdbd2lkdGg9MTc1LGZsb2F0PWxlZnRdIFRpbmtlclBvcCBjb21lcyBlcXVpcHBlZCB3aXRoIGEgcmVmZXJlbmNlIGNsaWVudCBmb3IgSmF2YS1iYXNlZAorYXBwbGljYXRpb25zLiAgSXQgaXMgcmVmZXJyZWQgdG8gYXMgYGdyZW1saW4tZHJpdmVyYCwgd2hpY2ggZW5hYmxlcyBhcHBsaWNhdGlvbnMgdG8gc2VuZCByZXF1ZXN0cyB0byBHcmVtbGluIFNlcnZlcgorYW5kIGdldCBiYWNrIHJlc3VsdHMuCisKK0dyZW1saW4gc2NyaXB0cyBhcmUgc2VudCB0byB0aGUgc2VydmVyIGZyb20gYSBgQ2xpZW50YCBpbnN0YW5jZS4gIEEgYENsaWVudGAgaXMgY3JlYXRlZCBhcyBmb2xsb3dzOgorCitbc291cmNlLGphdmFdCistLS0tCitDbHVzdGVyIGNsdXN0ZXIgPSBDbHVzdGVyLm9wZW4oKTsgIDwxPgorQ2xpZW50IGNsaWVudCA9IGNsdXN0ZXIuY29ubmVjdCgpOyA8Mj4KKy0tLS0KKworPDE+IE9wZW5zIGEgcmVmZXJlbmNlIHRvIGBsb2NhbGhvc3RgIC0gbm90ZSB0aGF0IHRoZXJlIGFyZSBtYW55IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhdmFpbGFibGUgaW4gZGVmaW5pbmcgYSBgQ2x1c3RlcmAgb2JqZWN0LgorPDI+IENyZWF0ZXMgYSBgQ2xpZW50YCBnaXZlbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIG9mIHRoZSBgQ2x1c3RlcmAuCisKK09uY2UgYSBgQ2xpZW50YCBpbnN0YW5jZSBpcyByZWFkeSwgaXQgaXMgcG9zc2libGUgdG8gaXNzdWUgc29tZSBHcmVtbGluIEdyb292eSBzY3JpcHRzOgorCitbc291cmNlLGphdmFdCistLS0tCitSZXN1bHRTZXQgcmVzdWx0cyA9IGNsaWVudC5zdWJtaXQoIlsxLDIsMyw0XSIpOyAgPDE+CityZXN1bHRzLnN0cmVhbSgpLm1hcChpIC0+IGkuZ2V0KEludGVnZXIuY2xhc3MpICogMik7ICAgICAgIDwyPgorCitDb21wbGV0YWJsZUZ1dHVyZTxMaXN0PFJlc3VsdD4+IHJlc3VsdHMgPSBjbGllbnQuc3VibWl0KCJbMSwyLDMsNF0iKS5hbGwoKTsgIDwzPgorCitDb21wbGV0YWJsZUZ1dHVyZTxSZXN1bHRTZXQ+IGZ1dHVyZSA9IGNsaWVudC5zdWJtaXRBc3luYygiWzEsMiwzLDRdIik7IDw0PgorCitNYXA8U3RyaW5nLE9iamVjdD4gcGFyYW1zID0gbmV3IEhhc2hNYXA8PigpOworcGFyYW1zLnB1dCgieCIsNCk7CitjbGllbnQuc3VibWl0KCJbMSwyLDMseF0iLCBwYXJhbXMpOyA8NT4KKy0tLS0KKworPDE+IFN1Ym1pdHMgYSBzY3JpcHQgdGhhdCBzaW1wbHkgcmV0dXJucyBhIGBMaXN0YCBvZiBpbnRlZ2Vycy4gIFRoaXMgbWV0aG9kIGJsb2NrcyB1bnRpbCB0aGUgcmVxdWVzdCBpcyB3cml0dGVuIHRvCit0aGUgc2VydmVyIGFuZCBhIGBSZXN1bHRTZXRgIGlzIGNvbnN0cnVjdGVkLgorPDI+IEV2ZW4gdGhvdWdoIHRoZSBgUmVzdWx0U2V0YCBpcyBjb25zdHJ1Y3RlZCwgaXQgZG9lcyBub3QgbWVhbiB0aGF0IHRoZSBzZXJ2ZXIgaGFzIHNlbnQgYmFjayB0aGUgcmVzdWx0cyAob3IgZXZlbgorZXZhbHVhdGVkIHRoZSBzY3JpcHQgcG90ZW50aWFsbHkpLiAgVGhlIGBSZXN1bHRTZXRgIGlzIGp1c3QgYSBob2xkZXIgdGhhdCBpcyBhd2FpdGluZyB0aGUgcmVzdWx0cyBmcm9tIHRoZSBzZXJ2ZXIuCitJbiB0aGlzIGNhc2UsIHRoZXkgYXJlIHN0cmVhbWVkIGZyb20gdGhlIHNlcnZlciBhcyB0aGV5IGFycml2ZS4KKzwzPiBTdWJtaXQgYSBzY3JpcHQsIGdldCBhIGBSZXN1bHRTZXRgLCB0aGVuIHJldHVybiBhIGBDb21wbGV0YWJsZUZ1dHVyZWAgdGhhdCB3aWxsIGJlIGNhbGxlZCB3aGVuIGFsbCByZXN1bHRzIGhhdmUgYmVlbiByZXR1cm5lZC4KKzw0PiBTdWJtaXQgYSBzY3JpcHQgYXN5bmNocm9ub3VzbHkgd2l0aG91dCB3YWl0aW5nIGZvciB0aGUgcmVxdWVzdCB0byBiZSB3cml0dGVuIHRvIHRoZSBzZXJ2ZXIuCis8NT4gUGFyYW1ldGVyaXplZCByZXF1ZXN0IGFyZSBjb25zaWRlcmVkIHRoZSBtb3N0IGVmZmljaWVudCB3YXkgdG8gc2VuZCBHcmVtbGluIHRvIHRoZSBzZXJ2ZXIgYXMgdGhleSBjYW4gYmUgY2FjaGVkLAord2hpY2ggd2lsbCBib29zdCBwZXJmb3JtYW5jZSBhbmQgcmVkdWNlIHJlc291cmNlcyByZXF1aXJlZCBvbiB0aGUgc2VydmVyLgorCis9PT09IFBlciBSZXF1ZXN0IFNldHRpbmdzCisKK1RoZXJlIGFyZSBhIG51bWJlciBvZiBvdmVybG9hZHMgdG8gYENsaWVudC5zdWJtaXQoKWAgdGhhdCBhY2NlcHQgYSBgUmVxdWVzdE9wdGlvbnNgIG9iamVjdC4gVGhlIGBSZXF1ZXN0T3B0aW9uc2AKK3Byb3ZpZGUgYSB3YXkgdG8gaW5jbHVkZSBvcHRpb25zIHRoYXQgYXJlIHNwZWNpZmljIHRvIHRoZSByZXF1ZXN0IG1hZGUgd2l0aCB0aGUgY2FsbCB0byBgc3VibWl0KClgLiBBIGdvb2QgdXNlLWNhc2UgZm9yCit0aGlzIGZlYXR1cmUgaXMgdG8gc2V0IGEgcGVyLXJlcXVlc3Qgb3ZlcnJpZGUgdG8gdGhlIGBzY3JpcHRFdmFsdWF0aW9uVGltZW91dGAgc28gdGhhdCBpdCBvbmx5IGFwcGxpZXMgdG8gdGhlIGN1cnJlbnQKK3JlcXVlc3QuCisKK1tzb3VyY2UsamF2YV0KKy0tLS0KK0NsdXN0ZXIgY2x1c3RlciA9IENsdXN0ZXIub3BlbigpOworQ2xpZW50IGNsaWVudCA9IGNsdXN0ZXIuY29ubmVjdCgpOworUmVxdWVzdE9wdGlvbnMgb3B0aW9ucyA9IFJlcXVlc3RPcHRpb25zLmJ1aWxkKCkudGltZW91dCg1MDApLmNyZWF0ZSgpOworTGlzdDxSZXN1bHQ+IHJlc3VsdCA9IGNsaWVudC5zdWJtaXQoImcuVigpIiwgb3B0aW9ucykuYWxsKCkuZ2V0KCk7CistLS0tCisKKz09PT0gQWxpYXNlcworCitTY3JpcHRzIHN1Ym1pdHRlZCB0byBHcmVtbGluIFNlcnZlciBhdXRvbWF0aWNhbGx5IGhhdmUgdGhlIGdsb2JhbGx5IGNvbmZpZ3VyZWQgYEdyYXBoYCBhbmQgYFRyYXZlcnNhbFNvdXJjZWAgaW5zdGFuY2VzCittYWRlIGF2YWlsYWJsZSB0byB0aGVtLiAgVGhlcmVmb3JlLCBpZiBHcmVtbGluIFNlcnZlciBjb25maWd1cmVzIHR3byBgVHJhdmVyc2FsU291cmNlYCBpbnN0YW5jZXMgY2FsbGVkICJnMSIgYW5kICJnMiIKK2Egc2NyaXB0IGNhbiBzaW1wbHkgcmVmZXJlbmNlIHRoZW0gZGlyZWN0bHkgYXM6CisKK1tzb3VyY2UsamF2YV0KKy0tLS0KK2NsaWVudC5zdWJtaXQoImcxLlYoKSIpCitjbGllbnQuc3VibWl0KCJnMi5WKCkiKQorLS0tLQorCitXaGlsZSB0aGlzIGlzIGFuIGFjY2VwdGFibGUgd2F5IHRvIHN1Ym1pdCBzY3JpcHRzLCBpdCBoYXMgdGhlIGRvd25zaWRlIG9mIGZvcmNpbmcgdGhlIGNsaWVudCB0byBlbmNvZGUgdGhlIHNlcnZlci1zaWRlCit2YXJpYWJsZSBuYW1lIGRpcmVjdGx5IGludG8gdGhlIHNjcmlwdCBiZWluZyBzZW50LiAgSWYgdGhlIHNlcnZlciBjb25maWd1cmF0aW9uIGV2ZXIgY2hhbmdlZCBzdWNoIHRoYXQgImcxIiBiZWNhbWUKKyJnMTAwIiwgdGhlIGNsaWVudC1zaWRlIGNvZGUgbWlnaHQgaGF2ZSB0byBzZWUgYSBzaWduaWZpY2FudCBhbW91bnQgb2YgY2hhbmdlLiAgRGVjb3VwbGluZyB0aGUgc2NyaXB0IGNvZGUgZnJvbSB0aGUKK3NlcnZlciBjb25maWd1cmF0aW9uIGNhbiBiZSBtYW5hZ2VkIGJ5IHRoZSBgYWxpYXNgIG1ldGhvZCBvbiBgQ2xpZW50YCBhcyBmb2xsb3dzOgorCitbc291cmNlLGphdmFdCistLS0tCitDbGllbnQgZzFDbGllbnQgPSBjbGllbnQuYWxpYXMoImcxIikKK0NsaWVudCBnMkNsaWVudCA9IGNsaWVudC5hbGlhcygiZzIiKQorZzFDbGllbnQuc3VibWl0KCJnLlYoKSIpCitnMkNsaWVudC5zdWJtaXQoImcuVigpIikKKy0tLS0KKworVGhlIGFib3ZlIGNvZGUgZGVtb25zdHJhdGVzIGhvdyB0aGUgYGFsaWFzYCBtZXRob2QgY2FuIGJlIHVzZWQgc3VjaCB0aGF0IHRoZSBzY3JpcHQgbmVlZCBvbmx5IGNvbnRhaW4gYSByZWZlcmVuY2UKK3RvICJnIiBhbmQgImcxIiBhbmQgImcyIiBhcmUgYXV0b21hdGljYWxseSByZWJvdW5kIGludG8gImciIG9uIHRoZSBzZXJ2ZXItc2lkZS4KKworW1tncmVtbGluLWphdmEtZHNsXV0KKz09PSBEb21haW4gU3BlY2lmaWMgTGFuZ3VhZ2VzCisKK0NyZWF0aW5nIGEgPDxkc2wsRG9tYWluIFNwZWNpZmljIExhbmd1YWdlPj4gKERTTCkgaW4gSmF2YSByZXF1aXJlcyB0aGUgYEBHcmVtbGluRHNsYCBKYXZhIGFubm90YXRpb24gaW4gYGdyZW1saW4tY29yZWAuCitUaGlzIGFubm90YXRpb24gc2hvdWxkIGJlIGFwcGxpZWQgdG8gYSAiRFNMIGludGVyZmFjZSIgdGhhdCBleHRlbmRzIGBHcmFwaFRyYXZlcnNhbC5BZG1pbmA6CisKK1tzb3VyY2UsamF2YV0KKy0tLS0KK0BHcmVtbGluRHNsCitwdWJsaWMgaW50ZXJmYWNlIFNvY2lhbFRyYXZlcnNhbERzbDxTLCBFPiBleHRlbmRzIEdyYXBoVHJhdmVyc2FsLkFkbWluPFMsIEU+IHsKK30KKy0tLS0KKworSU1QT1JUQU5UOiBUaGUgbmFtZSBvZiB0aGUgRFNMIGludGVyZmFjZSBzaG91bGQgYmUgc3VmZml4ZWQgd2l0aCAiVHJhdmVyc2FsRFNMIi4gQWxsIGNoYXJhY3RlcnMgaW4gdGhlIGludGVyZmFjZSBuYW1lCitiZWZvcmUgdGhhdCBiZWNvbWUgdGhlICJuYW1lIiBvZiB0aGUgRFNMLgorCitJbiB0aGlzIGludGVyZmFjZSwgZGVmaW5lIHRoZSBtZXRob2RzIHRoYXQgdGhlIERTTCB3aWxsIGJlIGNvbXBvc2VkIG9mOgorCitbc291cmNlLGphdmFdCistLS0tCitAR3JlbWxpbkRzbAorcHVibGljIGludGVyZmFjZSBTb2NpYWxUcmF2ZXJzYWxEc2w8UywgRT4gZXh0ZW5kcyBHcmFwaFRyYXZlcnNhbC5BZG1pbjxTLCBFPiB7CisgICAgcHVibGljIGRlZmF1bHQgR3JhcGhUcmF2ZXJzYWw8UywgVmVydGV4PiBrbm93cyhTdHJpbmcgcGVyc29uTmFtZSkgeworICAgICAgICByZXR1cm4gb3V0KCJrbm93cyIpLmhhc0xhYmVsKCJwZXJzb24iKS5oYXMoIm5hbWUiLCBwZXJzb25OYW1lKTsKKyAgICB9CisKKyAgICBwdWJsaWMgZGVmYXVsdCA8RTIgZXh0ZW5kcyBOdW1iZXI+IEdyYXBoVHJhdmVyc2FsPFMsIEUyPiB5b3VuZ2VzdEZyaWVuZHNBZ2UoKSB7CisgICAgICAgIHJldHVybiBvdXQoImtub3dzIikuaGFzTGFiZWwoInBlcnNvbiIpLnZhbHVlcygiYWdlIikubWluKCk7CisgICAgfQorCisgICAgcHVibGljIGRlZmF1bHQgR3JhcGhUcmF2ZXJzYWw8UywgTG9uZz4gY3JlYXRlZEF0TGVhc3QoaW50IG51bWJlcikgeworICAgICAgICByZXR1cm4gb3V0RSgiY3JlYXRlZCIpLmNvdW50KCkuaXMoUC5ndGUobnVtYmVyKSk7CisgICAgfQorfQorLS0tLQorCitJTVBPUlRBTlQ6IEZvbGxvdyB0aGUgVGlua2VyUG9wIGNvbnZlbnRpb24gb2YgdXNpbmcgYDxTLEU+YCBpbiBuYW1pbmcgZ2VuZXJpY3MgYXMgdGhvc2UgY29udmVudGlvbnMgYXJlIHRha2VuIGludG8KK2FjY291bnQgd2hlbiBnZW5lcmF0aW5nIHRoZSBhbm9ueW1vdXMgdHJhdmVyc2FsIGNsYXNzLiBUaGUgcHJvY2Vzc29yIGF0dGVtcHRzIHRvIGluZmVyIHRoZSBhcHByb3ByaWF0ZSB0eXBlIHBhcmFtZXRlcnMKK3doZW4gZ2VuZXJhdGluZyB0aGUgYW5vbnltb3VzIHRyYXZlcnNhbCBjbGFzcy4gSWYgaXQgY2Fubm90IGRvIGl0IGNvcnJlY3RseSwgaXQgaXMgcG9zc2libGUgdG8gYXZvaWQgdGhlIGluZmVyZW5jZSBieQordXNpbmcgdGhlIGBHcmVtbGluRHNsLkFub255bW91c01ldGhvZGAgYW5ub3RhdGlvbiBvbiB0aGUgRFNMIG1ldGhvZC4gSXQgYWxsb3dzIGV4cGxpY2l0IHNwZWNpZmljYXRpb24gb2YgdGhlIHR5cGVzIHRvCit1c2UuCisKK1RoZSBgQEdyZW1saW5Ec2xgIGFubm90YXRpb24gaXMgdXNlZCBieSB0aGUgbGluazpodHRwczovL2RvY3Mub3JhY2xlLmNvbS9qYXZhc2UvOC9kb2NzL2FwaS9pbmRleC5odG1sP2phdmF4L2Fubm90YXRpb24vcHJvY2Vzc2luZy9Qcm9jZXNzb3IuaHRtbFtKYXZhIEFubm90YXRpb24gUHJvY2Vzc29yXQordG8gZ2VuZXJhdGUgdGhlIGJvaWxlcnBsYXRlIGNsYXNzIHN0cnVjdHVyZSByZXF1aXJlZCB0byBwcm9wZXJseSB1c2UgdGhlIERTTCB3aXRoaW4gdGhlIFRpbmtlclBvcCBmcmFtZXdvcmsuIFRoZXNlCitjbGFzc2VzIGNhbiBiZSBnZW5lcmF0ZWQgYW5kIG1haW50YWluZWQgYnkgaGFuZCwgYnV0IGl0IHdvdWxkIGJlIHRpbWUgY29uc3VtaW5nLCBtb25vdG9ub3VzIGFuZCBlcnJvci1wcm9uZSB0byBkbyBzby4KK1R5cGljYWxseSwgdGhlIEphdmEgY29tcGlsYXRpb24gcHJvY2VzcyBpcyBhdXRvbWF0aWNhbGx5IGNvbmZpZ3VyZWQgdG8gZGV0ZWN0IGFubm90YXRpb24gcHJvY2Vzc29ycyBvbiB0aGUgY2xhc3NwYXRoCithbmQgd2lsbCBhdXRvbWF0aWNhbGx5IHVzZSB0aGVtIHdoZW4gZm91bmQuIElmIHRoYXQgZG9lcyBub3QgaGFwcGVuLCBpdCBtYXkgYmUgbmVjZXNzYXJ5IHRvIG1ha2UgY29uZmlndXJhdGlvbiBjaGFuZ2VzCit0byB0aGUgYnVpbGQgdG8gYWxsb3cgZm9yIHRoZSBjb21waWxhdGlvbiBwcm9jZXNzIHRvIGJlIGF3YXJlIG9mIHRoZSBmb2xsb3dpbmcgYGphdmF4LmFubm90YXRpb24ucHJvY2Vzc2luZy5Qcm9jZXNzb3JgCitpbXBsZW1lbnRhdGlvbjoKKworW3NvdXJjZSxqYXZhXQorLS0tLQorb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuR3JlbWxpbkRzbFByb2Nlc3NvcgorLS0tLQorCitUaGUgYW5ub3RhdGlvbiBwcm9jZXNzb3Igd2lsbCBnZW5lcmF0ZSBzZXZlcmFsIGNsYXNzZXMgZm9yIHRoZSBEU0w6CisKKyogYFNvY2lhbFRyYXZlcnNhbGAgLSBBIGBUcmF2ZXJzYWxgIGludGVyZmFjZSB0aGF0IGV4dGVuZHMgdGhlIGBTb2NpYWxUcmF2ZXJzYWxEc2xgIHByb3h5aW5nIG1ldGhvZHMgdG8gaXRzIHVuZGVybHlpbmcKK2ludGVyZmFjZXMgKHN1Y2ggYXMgYEdyYXBoVHJhdmVyc2FsYCkgdG8gaW5zdGVhZCByZXR1cm4gYSBgU29jaWFsVHJhdmVyc2FsYAorKiBgRGVmYXVsdFNvY2lhbFRyYXZlcnNhbGAgLSBBIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYFNvY2lhbFRyYXZlcnNhbGAgKHR5cGljYWxseSBub3QgdXNlZCBkaXJlY3RseSBieSB0aGUgdXNlcikKKyogYFNvY2lhbFRyYXZlcnNhbFNvdXJjZWAgLSBTcGF3bnMgYERlZmF1bHRTb2NpYWxUcmF2ZXJzYWxgIGluc3RhbmNlcy4KKyogYF9fYCAtIFNwYXducyBhbm9ueW1vdXMgYERlZmF1bHRTb2NpYWxUcmF2ZXJzYWxgIGluc3RhbmNlcy4KKworVXNpbmcgdGhlIERTTCB0aGVuIGp1c3QgaW52b2x2ZXMgdGVsbGluZyB0aGUgYEdyYXBoYCB0byB1c2UgaXQ6CisKK1tzb3VyY2UsamF2YV0KKy0tLS0KK1NvY2lhbFRyYXZlcnNhbFNvdXJjZSBzb2NpYWwgPSBncmFwaC50cmF2ZXJzYWwoU29jaWFsVHJhdmVyc2FsU291cmNlLmNsYXNzKTsKK3NvY2lhbC5WKCkuaGFzKCJuYW1lIiwibWFya28iKS5rbm93cygiam9zaCIpOworLS0tLQorCitUaGUgYFNvY2lhbFRyYXZlcnNhbFNvdXJjZWAgY2FuIGFsc28gYmUgY3VzdG9taXplZCB3aXRoIERTTCBmdW5jdGlvbnMuIEFzIGFuIGFkZGl0aW9uYWwgc3RlcCwgaW5jbHVkZSBhIGNsYXNzIHRoYXQKK2V4dGVuZHMgZnJvbSBgR3JhcGhUcmF2ZXJzYWxTb3VyY2VgIGFuZCB3aXRoIGEgbmFtZSB0aGF0IGlzIHN1ZmZpeGVkIHdpdGggIlRyYXZlcnNhbFNvdXJjZURzbCIuIEluY2x1ZGUgaW4gdGhpcyBjbGFzcywKK2FueSBjdXN0b20gbWV0aG9kcyByZXF1aXJlZCBieSB0aGUgRFNMOgorCitbc291cmNlLGphdmFdCistLS0tCitwdWJsaWMgY2xhc3MgU29jaWFsVHJhdmVyc2FsU291cmNlRHNsIGV4dGVuZHMgR3JhcGhUcmF2ZXJzYWxTb3VyY2UgeworCisgICAgcHVibGljIFNvY2lhbFRyYXZlcnNhbFNvdXJjZURzbChHcmFwaCBncmFwaCwgVHJhdmVyc2FsU3RyYXRlZ2llcyB0cmF2ZXJzYWxTdHJhdGVnaWVzKSB7CisgICAgICAgIHN1cGVyKGdyYXBoLCB0cmF2ZXJzYWxTdHJhdGVnaWVzKTsKKyAgICB9CisKKyAgICBwdWJsaWMgU29jaWFsVHJhdmVyc2FsU291cmNlRHNsKEdyYXBoIGdyYXBoKSB7CisgICAgICAgIHN1cGVyKGdyYXBoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgR3JhcGhUcmF2ZXJzYWw8VmVydGV4LCBWZXJ0ZXg+IHBlcnNvbnMoU3RyaW5nLi4uIG5hbWVzKSB7CisgICAgICAgIEdyYXBoVHJhdmVyc2FsU291cmNlIGNsb25lID0gdGhpcy5jbG9uZSgpOworCisgICAgICAgIC8vIE1hbnVhbGx5IGFkZCBhICJzdGFydCIgc3RlcCBmb3IgdGhlIHRyYXZlcnNhbCBpbiB0aGlzIGNhc2UgdGhlIGVxdWl2YWxlbnQgb2YgVigpLiBHcmFwaFN0ZXAgaXMgbWFya2VkCisgICAgICAgIC8vIGFzIGEgInN0YXJ0IiBzdGVwIGJ5IHBhc3NpbmcgInRydWUiIGluIHRoZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgY2xvbmUuZ2V0Qnl0ZWNvZGUoKS5hZGRTdGVwKEdyYXBoVHJhdmVyc2FsLlN5bWJvbHMuVik7CisgICAgICAgIEdyYXBoVHJhdmVyc2FsPFZlcnRleCwgVmVydGV4PiB0cmF2ZXJzYWwgPSBuZXcgRGVmYXVsdEdyYXBoVHJhdmVyc2FsPD4oY2xvbmUpOworICAgICAgICB0cmF2ZXJzYWwuYXNBZG1pbigpLmFkZFN0ZXAobmV3IEdyYXBoU3RlcDw+KHRyYXZlcnNhbC5hc0FkbWluKCksIFZlcnRleC5jbGFzcywgdHJ1ZSkpOworCisgICAgICAgIHRyYXZlcnNhbCA9IHRyYXZlcnNhbC5oYXNMYWJlbCgicGVyc29uIik7CisgICAgICAgIGlmIChuYW1lcy5sZW5ndGggPiAwKSB0cmF2ZXJzYWwgPSB0cmF2ZXJzYWwuaGFzKCJuYW1lIiwgUC53aXRoaW4obmFtZXMpKTsKKworICAgICAgICByZXR1cm4gdHJhdmVyc2FsOworICAgIH0KK30KKy0tLS0KKworVGhlbiwgYmFjayBpbiB0aGUgYFNvY2lhbFRyYXZlcnNhbGAgaW50ZXJmYWNlLCB1cGRhdGUgdGhlIGBHcmVtbGluRHNsYCBhbm5vdGF0aW9uIHdpdGggdGhlIGB0cmF2ZXJzYWxTb3VyY2VgIGFyZ3VtZW50Cit0byBwb2ludCB0byB0aGUgZnVsbHkgcXVhbGlmaWVkIGNsYXNzIG5hbWUgb2YgdGhlIGBTb2NpYWxUcmF2ZXJzYWxTb3VyY2VEc2xgOgorCitbc291cmNlLGphdmFdCistLS0tCitAR3JlbWxpbkRzbCh0cmF2ZXJzYWxTb3VyY2UgPSAiY29tLmNvbXBhbnkuU29jaWFsVHJhdmVyc2FsU291cmNlRHNsIikKK3B1YmxpYyBpbnRlcmZhY2UgU29jaWFsVHJhdmVyc2FsRHNsPFMsIEU+IGV4dGVuZHMgR3JhcGhUcmF2ZXJzYWwuQWRtaW48UywgRT4geworICAgIC4uLgorfQorLS0tLQorCitJdCBpcyB0aGVuIHBvc3NpYmxlIHRvIHVzZSB0aGUgYHBlcnNvbnMoKWAgbWV0aG9kIHRvIHN0YXJ0IHRyYXZlcnNhbHM6CisKK1tzb3VyY2UsamF2YV0KKy0tLS0KK1NvY2lhbFRyYXZlcnNhbFNvdXJjZSBzb2NpYWwgPSBncmFwaC50cmF2ZXJzYWwoU29jaWFsVHJhdmVyc2FsU291cmNlLmNsYXNzKTsKK3NvY2lhbC5wZXJzb25zKCJtYXJrbyIpLmtub3dzKCJqb3NoIik7CistLS0tCisKK05PVEU6IFVzaW5nIE1hdmVuLCBhcyBzaG93biBpbiB0aGUgYGdyZW1saW4tYXJjaGV0eXBlLWRzbGAgbW9kdWxlLCBtYWtlcyBkZXZlbG9waW5nIERTTHMgd2l0aCB0aGUgYW5ub3RhdGlvbiBwcm9jZXNzb3IKK3N0cmFpZ2h0Zm9yd2FyZCBpbiB0aGF0IGl0IHNldHMgdXAgYXBwcm9wcmlhdGUgcGF0aHMgdG8gdGhlIGdlbmVyYXRlZCBjb2RlIGF1dG9tYXRpY2FsbHkuCisKK2FuY2hvcjpqYXZhLWFwcGxpY2F0aW9uLWV4YW1wbGVzW10KK1tbZ3JlbWxpbi1hcmNoZXR5cGVzXV0KKz09PSBBcHBsaWNhdGlvbiBFeGFtcGxlcworCitUaGUgYXZhaWxhYmxlIGxpbms6aHR0cHM6Ly9tYXZlbi5hcGFjaGUub3JnL2d1aWRlcy9pbnRyb2R1Y3Rpb24vaW50cm9kdWN0aW9uLXRvLWFyY2hldHlwZXMuaHRtbFtNYXZlbiBhcmNoZXR5cGVzXSBhcmUKK2FzIGZvbGxvd3M6CisKKyogYGdyZW1saW4tYXJjaGV0eXBlLWRzbGAgLSBBbiBleGFtcGxlIHByb2plY3QgdGhhdCBkZW1vbnN0cmF0ZXMgaG93IHRvIGJ1aWxkIERvbWFpbiBTcGVjaWZpYyBMYW5ndWFnZXMgd2l0aCBHcmVtbGluCitpbiBKYXZhLgorKiBgZ3JlbWxpbi1hcmNoZXR5cGUtc2VydmVyYCAtIEFuIGV4YW1wbGUgcHJvamVjdCB0aGF0IGRlbW9uc3RyYXRlcyB0aGUgYmFzaWMgc3RydWN0dXJlIG9mIGEKKzw8Z3JlbWxpbi1zZXJ2ZXIsR3JlbWxpbiBTZXJ2ZXI+PiBwcm9qZWN0LCBob3cgdG8gY29ubmVjdCB3aXRoIHRoZSBHcmVtbGluIERyaXZlciwgYW5kIGhvdyB0byBlbWJlZCBHcmVtbGluIFNlcnZlciBpbgorYSB0ZXN0aW5nIGZyYW1ld29yay4KKyogYGdyZW1saW4tYXJjaGV0eXBlLXRpbmtlcmdyYXBoYCAtIEEgYmFzaWMgZXhhbXBsZSBvZiBob3cgdG8gc3RydWN0dXJlIGEgVGlua2VyUG9wIHByb2plY3Qgd2l0aCBNYXZlbi4KKworVXNlIE1hdmVuIHRvIGdlbmVyYXRlIHRoZXNlIGV4YW1wbGUgcHJvamVjdHMgd2l0aCBhIGNvbW1hbmQgbGlrZToKKworW3NvdXJjZSxzaGVsbF0KKyQgbXZuIGFyY2hldHlwZTpnZW5lcmF0ZSAtRGFyY2hldHlwZUdyb3VwSWQ9b3JnLmFwYWNoZS50aW5rZXJwb3AgLURhcmNoZXR5cGVBcnRpZmFjdElkPWdyZW1saW4tYXJjaGV0eXBlLXNlcnZlciBcCisgICAgICAtRGFyY2hldHlwZVZlcnNpb249eC55LnogLURncm91cElkPWNvbS5teSAtRGFydGlmYWN0SWQ9YXBwIC1EdmVyc2lvbj0wLjEgLURpbnRlcmFjdGl2ZU1vZGU9ZmFsc2UKKworVGhpcyBjb21tYW5kIHdpbGwgZ2VuZXJhdGUgYSBuZXcgTWF2ZW4gcHJvamVjdCBpbiBhIGRpcmVjdG9yeSBjYWxsZWQgImFwcCIgd2l0aCBhIGBwb20ueG1sYCBzcGVjaWZ5aW5nIGEgYGdyb3VwSWRgIG9mCitgY29tLm15YC4gUGxlYXNlIHNlZSB0aGUgYFJFQURNRS5hc2NpaWRvY2AgaW4gdGhlIHJvb3Qgb2YgZWFjaCBnZW5lcmF0ZWQgcHJvamVjdCBmb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGJ1aWxkIGFuZAorZXhlY3V0ZSBpdC4KIAogW1tncmVtbGluLWdyb292eV1dCiA9PSBHcmVtbGluLUdyb292eQpAQCAtNzIsMTAgKzYxMCwxOSBAQAogaW1hZ2U6Z3JlbWxpbi1ncm9vdnktZHJhd2luZy5wbmdbd2lkdGg9MTMwLGZsb2F0PXJpZ2h0XSBBcGFjaGUgVGlua2VyUG9wJ3MgR3JlbWxpbi1Hcm9vdnkgaW1wbGVtZW50cyBHcmVtbGluIHdpdGhpbiB0aGUKIGxpbms6aHR0cDovL2dyb292eS5hcGFjaGUub3JnW0FwYWNoZSBHcm9vdnldIGxhbmd1YWdlLiBBcyBhIEpWTS1iYXNlZCBsYW5ndWFnZSB2YXJpYW50LCBHcmVtbGluLUdyb292eSBpcyBiYWNrZWQgYnkKIEdyZW1saW4tSmF2YSBjb25zdHJ1Y3RzLiBNb3Jlb3ZlciwgZ2l2ZW4gaXRzIHNjcmlwdGluZyBuYXR1cmUsIEdyZW1saW4tR3Jvb3Z5IHNlcnZlcyBhcyB0aGUgbGFuZ3VhZ2Ugb2YKLTw8Z3JlbWxpbi1jb25zb2xlLEdyZW1saW4gQ29uc29sZT4+LgorPDxncmVtbGluLWNvbnNvbGUsR3JlbWxpbiBDb25zb2xlPj4gYW5kIDw8Z3JlbWxpbi1zZXJ2ZXIsR3JlbWxpbiBTZXJ2ZXI+Pi4KIAotV0FSTklORzogSW4gR3Jvb3Z5LCBgYXNgLCBgaW5gLCBhbmQgYG5vdGAgYXJlIHJlc2VydmVkIHdvcmRzLiBHcmVtbGluLUdyb292eSBkb2VzIG5vdCBhbGxvdyB0aGVzZSBzdGVwcyB0byBiZSBjYWxsZWQKLXN0YXRpY2FsbHkgZnJvbSB0aGUgYW5vbnltb3VzIHRyYXZlcnNhbCBgK19fK2AgYW5kIHRoZXJlZm9yZSwgbXVzdCBhbHdheXMgYmUgcHJlZml4ZWQgd2l0aCBgK19fK2AuIEZvciBpbnN0YW5jZToKK1tzb3VyY2UsZ3Jvb3Z5XQorLS0tLQorY29tcGlsZSBncm91cDogJ29yZy5hcGFjaGUudGlua2VycG9wJywgbmFtZTogJ2dyZW1saW4tY29yZScsIHZlcnNpb246ICczLjMuNCcKK2NvbXBpbGUgZ3JvdXA6ICdvcmcuYXBhY2hlLnRpbmtlcnBvcCcsIG5hbWU6ICdncmVtbGluLWRyaXZlcicsIHZlcnNpb246ICczLjMuNCcKKy0tLS0KKworW1tncmVtbGluLWdyb292eS1kaWZmZXJlbmNlc11dCis9PT0gRGlmZmVyZW5jZXMKKworSW4gR3Jvb3Z5LCBgYXNgLCBgaW5gLCBhbmQgYG5vdGAgYXJlIHJlc2VydmVkIHdvcmRzLiBHcmVtbGluLUdyb292eSBkb2VzIG5vdCBhbGxvdyB0aGVzZSBzdGVwcyB0byBiZSBjYWxsZWQKK3N0YXRpY2FsbHkgZnJvbSB0aGUgYW5vbnltb3VzIHRyYXZlcnNhbCBgK19fK2AgYW5kIHRoZXJlZm9yZSwgbXVzdCBhbHdheXMgYmUgcHJlZml4ZWQgd2l0aCBgK19fLitgIEZvciBpbnN0YW5jZToKIGArZy5WKCkuYXMoJ2EnKS5pbigpLmFzKCdiJykud2hlcmUoX18ubm90KF9fLmFzKCdhJykub3V0KCkuYXMoJ2InKSkpK2AKIAogW1tncmVtbGluLXB5dGhvbl1dCkBAIC04NiwxMzUgKzYzMyw2MSBAQAogbGluazpodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DUHl0aG9uW0NQeXRob25dIG1hY2hpbmUuIFB5dGhvbidzIHN5bnRheCBoYXMgdGhlIHNhbWUgY29uc3RydWN0cyBhcyBKYXZhIGluY2x1ZGluZwogImRvdCBub3RhdGlvbiIgZm9yIGZ1bmN0aW9uIGNoYWluaW5nIChgYS5iLmNgKSwgcm91bmQgYnJhY2tldCBmdW5jdGlvbiBhcmd1bWVudHMgKGBhKGIsYylgKSwgYW5kIHN1cHBvcnQgZm9yIGdsb2JhbAogbmFtZXNwYWNlcyAoYGEoYigpKWAgdnMgYGEoX18uYigpKWApLiBBcyBzdWNoLCBhbnlvbmUgZmFtaWxpYXIgd2l0aCBHcmVtbGluLUphdmEgd2lsbCBpbW1lZGlhdGVseSBiZSBhYmxlIHRvIHdvcmsKLXdpdGggR3JlbWxpbi1QeXRob24uIE1vcmVvdmVyLCB0aGVyZSBhcmUgYSBmZXcgYWRkZWQgY29uc3RydWN0cyB0byBHcmVtbGluLVB5dGhvbiB0aGF0IG1ha2UgdHJhdmVyc2FscyBhIGJpdCBtb3JlIHN1Y2NpbmN0LgotCi1XQVJOSU5HOiBJbiBQeXRob24sIGBhbmRgLCBgYXNgLCBgZnJvbWAsIGBnbG9iYWxgLCBgaW5gLCBgaXNgLCBgbm90YCwgYW5kIGBvcmAgYXJlIHJlc2VydmVkIHdvcmRzLiBHcmVtbGluLVB5dGhvbiBzaW1wbHkKLXBvc3RmaXhlcyBgK18rYCB0byB0aGUgZW5kIG9mIHRoZXNlIHRlcm1zIGZvciB0aGVpciB1c2Ugd2l0aCBncmFwaCB0cmF2ZXJzYWwuIEZvciBpbnN0YW5jZTogYGcuVigpLmFzXygnYScpLmluXygpLmFzXygnYicpLnNlbGVjdCgnYScsJ2InKWAuCit3aXRoIEdyZW1saW4tUHl0aG9uLiBNb3Jlb3ZlciwgdGhlcmUgYXJlIGEgZmV3IGFkZGVkIGNvbnN0cnVjdHMgdG8gR3JlbWxpbi1QeXRob24gdGhhdCBtYWtlIHRyYXZlcnNhbHMgYSBiaXQgbW9yZQorc3VjY2luY3QuCiAKIFRvIGluc3RhbGwgR3JlbWxpbi1QeXRob24sIHVzZSBQeXRob24ncyBsaW5rOmh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BpcF8ocGFja2FnZV9tYW5hZ2VyKVtwaXBdIHBhY2thZ2UgbWFuYWdlci4KIAogW3NvdXJjZSxiYXNoXQorLS0tLQogcGlwIGluc3RhbGwgZ3JlbWxpbnB5dGhvbgotCi1HcmVtbGluLVB5dGhvbiB1c2VycyB3aWxsIHR5cGljYWxseSBtYWtlIHVzZSBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMuCi0KLVtzb3VyY2UscHl0aG9uXQotPj4+IGZyb20gZ3JlbWxpbl9weXRob24gaW1wb3J0IHN0YXRpY3MKLT4+PiBmcm9tIGdyZW1saW5fcHl0aG9uLnByb2Nlc3MuYW5vbnltb3VzX3RyYXZlcnNhbCBpbXBvcnQgdHJhdmVyc2FsCi0+Pj4gZnJvbSBncmVtbGluX3B5dGhvbi5wcm9jZXNzLmdyYXBoX3RyYXZlcnNhbCBpbXBvcnQgX18KLT4+PiBmcm9tIGdyZW1saW5fcHl0aG9uLnByb2Nlc3Muc3RyYXRlZ2llcyBpbXBvcnQgKgotPj4+IGZyb20gZ3JlbWxpbl9weXRob24uZHJpdmVyLmRyaXZlcl9yZW1vdGVfY29ubmVjdGlvbiBpbXBvcnQgRHJpdmVyUmVtb3RlQ29ubmVjdGlvbgotCi1JbiBHcmVtbGluLVB5dGhvbiB0aGVyZSBleGlzdHMgYEdyYXBoVHJhdmVyc2FsU291cmNlYCwgYEdyYXBoVHJhdmVyc2FsYCwgYW5kIGBfX2Agd2hpY2ggbWlycm9yIHRoZSByZXNwZWN0aXZlIGNsYXNzZXMKLWluIEdyZW1saW4tSmF2YS4gVGhlIGBHcmFwaFRyYXZlcnNhbFNvdXJjZWAgcmVxdWlyZXMgYSBkcml2ZXIgaW4gb3JkZXIgdG8gY29tbXVuaWNhdGUgd2l0aAotPDxncmVtbGluLXNlcnZlcixHcmVtbGluU2VydmVyPj4gKG9yIGFueSA8PGNvbm5lY3RpbmctdmlhLXJlbW90ZWdyYXBoLGBSZW1vdGVDb25uZWN0aW9uYD4+LWVuYWJsZWQgc2VydmVyKS4gVGhlCi1gZ3JlbWxpbl9weXRob24uZHJpdmVyLmRyaXZlcl9yZW1vdGVfY29ubmVjdGlvbmAgaXMgcHJvdmlkZWQgd2l0aCBBcGFjaGUgVGlua2VyUG9wJ3MgR3JlbWxpbi1QeXRob24gZGlzdHJpYnV0aW9uLgotCi1JTVBPUlRBTlQ6IEZvciBkZXZlbG9wZXJzIHdpc2hpbmcgdG8gcHJvdmlkZSBhbm90aGVyICpkcml2ZXIgaW1wbGVtZW50YXRpb24qLCBiZSBzdXJlIHRvIGV4dGVuZCBgUmVtb3RlQ29ubmVjdGlvbmAgaW4KLWBncmVtbGluX3B5dGhvbi5kcml2ZXJgIHNvIGl0IGNhbiB0aGVuIGJlIHVzZWQgYnkgR3JlbWxpbi1QeXRob24ncyBgR3JhcGhUcmF2ZXJzYWxgLgotCi1XaGVuIEdyZW1saW4gU2VydmVyIGlzIHJ1bm5pbmcsIEdyZW1saW4tUHl0aG9uIGNhbiBjb21tdW5pY2F0ZSB3aXRoIEdyZW1saW4gU2VydmVyLiBUaGUgYGNvbmYvZ3JlbWxpbi1zZXJ2ZXItbW9kZXJuLXB5LnlhbWxgCi1jb25maWd1cmF0aW9uIG1haW50YWlucyBhIGBHcmVtbGluSnl0aG9uU2NyaXB0RW5naW5lYCBhcyB3ZWxsIGFzIHRoZSBhcHByb3ByaWF0ZSBzZXJpYWxpemVycyBmb3IgY29tbXVuaWNhdGluZyBgQnl0ZWNvZGVgLgotCi1JTVBPUlRBTlQ6IEdyZW1saW4tUHl0aG9uIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggR3JhcGhTT04gMS4wLgotCi1bc291cmNlLGJhc2hdCi0tLS0tCi0kIGJpbi9ncmVtbGluLXNlcnZlci5zaCBpbnN0YWxsIG9yZy5hcGFjaGUudGlua2VycG9wIGdyZW1saW4tcHl0aG9uIHgueS56Ci0kIGJpbi9ncmVtbGluLXNlcnZlci5zaCBjb25mL2dyZW1saW4tc2VydmVyLW1vZGVybi1weS55YW1sCi1bSU5GT10gR3JlbWxpblNlcnZlciAtCi0gICAgICAgXCwsLC8KLSAgICAgICAobyBvKQotLS0tb09Pby0oMyktb09Pby0tLQotCi1bSU5GT10gR3JlbWxpblNlcnZlciAtIENvbmZpZ3VyaW5nIEdyZW1saW4gU2VydmVyIGZyb20gY29uZi9ncmVtbGluLXNlcnZlci1tb2Rlcm4tcHkueWFtbAotW0lORk9dIE1ldHJpY01hbmFnZXIgLSBDb25maWd1cmVkIE1ldHJpY3MgU2xmNGpSZXBvcnRlciBjb25maWd1cmVkIHdpdGggaW50ZXJ2YWw9MTgwMDAwbXMgYW5kIGxvZ2dlck5hbWU9b3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIuU2V0dGluZ3MkU2xmNGpSZXBvcnRlck1ldHJpY3MKLVtJTkZPXSBHcmFwaE1hbmFnZXIgLSBHcmFwaCBbZ3JhcGhdIHdhcyBzdWNjZXNzZnVsbHkgY29uZmlndXJlZCB2aWEgW2NvbmYvdGlua2VyZ3JhcGgtZW1wdHkucHJvcGVydGllc10uCi1bSU5GT10gU2VydmVyR3JlbWxpbkV4ZWN1dG9yIC0gSW5pdGlhbGl6ZWQgR3JlbWxpbiB0aHJlYWQgcG9vbC4gIFRocmVhZHMgaW4gcG9vbCBuYW1lZCB3aXRoIHBhdHRlcm4gZ3JlbWxpbi0qCi1bSU5GT10gTG9nZ2VyIC0gNTEgYXR0cmlidXRlcyBsb2FkZWQgZnJvbSA0MCBzdHJlYW0ocykgaW4gMTZtcywgNTEgc2F2ZWQsIDYxNCBpZ25vcmVkOiBbIkFudC1WZXJzaW9uIiwgIkFyY2hpdmVyLVZlcnNpb24iLCAiQm5kLUxhc3RNb2RpZmllZCIsICJCb290LUNsYXNzLVBhdGgiLCAiQnVpbGQtSmRrIiwgIkJ1aWxkLVZlcnNpb24iLCAiQnVpbHQtQnkiLCAiQnVuZGxlLUNsYXNzUGF0aCIsICJCdW5kbGUtRGVzY3JpcHRpb24iLCAiQnVuZGxlLURvY1VSTCIsICJCdW5kbGUtTGljZW5zZSIsICJCdW5kbGUtTWFuaWZlc3RWZXJzaW9uIiwgIkJ1bmRsZS1OYW1lIiwgIkJ1bmRsZS1SZXF1aXJlZEV4ZWN1dGlvbkVudmlyb25tZW50IiwgIkJ1bmRsZS1TeW1ib2xpY05hbWUiLCAiQnVuZGxlLVZlbmRvciIsICJCdW5kbGUtVmVyc2lvbiIsICJDYW4tUmVkZWZpbmUtQ2xhc3NlcyIsICJDcmVhdGVkLUJ5IiwgIkR5bmFtaWNJbXBvcnQtUGFja2FnZSIsICJFY2xpcHNlLUJ1ZGR5UG9saWN5IiwgIkV4cG9ydC1QYWNrYWdlIiwgIkV4dGVuc2lvbi1OYW1lIiwgIkV4dGVuc2lvbi1uYW1lIiwgIkZyYWdtZW50LUhvc3QiLCAiSWdub3JlLVBhY2thZ2UiLCAiSW1wbGVtZW50YXRpb24tQnVpbGQiLCAiSW1wbGVtZW50YXRpb24tVGl0bGUiLCAiSW1wbGVtZW50YXRpb24tVVJMIiwgIkltcGxlbWVudGF0aW9uLVZlbmRvciIsICJJbXBsZW1lbnRhdGlvbi1WZW5kb3ItSWQiLCAiSW1wbGVtZW50YXRpb24tVmVyc2lvbiIsICJJbXBvcnQtUGFja2FnZSIsICJJbmNsdWRlLVJlc291cmNlIiwgIkpDYWJpLUJ1aWxkIiwgIkpDYWJpLURhdGUiLCAiSkNhYmktVmVyc2lvbiIsICJNYWluLUNsYXNzIiwgIk1haW4tY2xhc3MiLCAiTWFuaWZlc3QtVmVyc2lvbiIsICJPcmlnaW5hbGx5LUNyZWF0ZWQtQnkiLCAiUHJpdmF0ZS1QYWNrYWdlIiwgIlJlcXVpcmUtQ2FwYWJpbGl0eSIsICJTcGVjaWZpY2F0aW9uLVRpdGxlIiwgIlNwZWNpZmljYXRpb24tVmVuZG9yIiwgIlNwZWNpZmljYXRpb24tVmVyc2lvbiIsICJUb29sIiwgIlgtQ29tcGlsZS1Tb3VyY2UtSkRLIiwgIlgtQ29tcGlsZS1UYXJnZXQtSkRLIiwgImhhc2giLCAidmVyc2lvbiJdCi1bSU5GT10gU2NyaXB0RW5naW5lcyAtIExvYWRlZCBncmVtbGluLWp5dGhvbiBTY3JpcHRFbmdpbmUKLVtJTkZPXSBTY3JpcHRFbmdpbmVzIC0gTG9hZGVkIGdyZW1saW4tcHl0aG9uIFNjcmlwdEVuZ2luZQotW0lORk9dIFNjcmlwdEVuZ2luZXMgLSBMb2FkZWQgZ3JlbWxpbi1ncm9vdnkgU2NyaXB0RW5naW5lCi1bSU5GT10gR3JlbWxpbkV4ZWN1dG9yIC0gSW5pdGlhbGl6ZWQgZ3JlbWxpbi1ncm9vdnkgU2NyaXB0RW5naW5lIHdpdGggc2NyaXB0cy9nZW5lcmF0ZS1tb2Rlcm4uZ3Jvb3Z5Ci1bSU5GT10gU2VydmVyR3JlbWxpbkV4ZWN1dG9yIC0gSW5pdGlhbGl6ZWQgR3JlbWxpbkV4ZWN1dG9yIGFuZCBjb25maWd1cmVkIFNjcmlwdEVuZ2luZXMuCi1bSU5GT10gU2VydmVyR3JlbWxpbkV4ZWN1dG9yIC0gQSBHcmFwaFRyYXZlcnNhbFNvdXJjZSBpcyBub3cgYm91bmQgdG8gW2ddIHdpdGggZ3JhcGh0cmF2ZXJzYWxzb3VyY2VbdGlua2VyZ3JhcGhbdmVydGljZXM6MCBlZGdlczowXSwgc3RhbmRhcmRdCi1bSU5GT10gT3BMb2FkZXIgLSBBZGRpbmcgdGhlIHN0YW5kYXJkIE9wUHJvY2Vzc29yLgotW0lORk9dIE9wTG9hZGVyIC0gQWRkaW5nIHRoZSBzZXNzaW9uIE9wUHJvY2Vzc29yLgotW0lORk9dIE9wTG9hZGVyIC0gQWRkaW5nIHRoZSB0cmF2ZXJzYWwgT3BQcm9jZXNzb3IuCi1bSU5GT10gVHJhdmVyc2FsT3BQcm9jZXNzb3IgLSBJbml0aWFsaXplZCBjYWNoZSBmb3IgVHJhdmVyc2FsT3BQcm9jZXNzb3Igd2l0aCBzaXplIDEwMDAgYW5kIGV4cGlyYXRpb24gdGltZSBvZiA2MDAwMDAgbXMKLVtJTkZPXSBHcmVtbGluU2VydmVyIC0gRXhlY3V0aW5nIHN0YXJ0IHVwIExpZmVDeWNsZUhvb2sKLVtJTkZPXSBMb2dnZXIkaW5mbyAtIExvYWRpbmcgJ21vZGVybicgZ3JhcGggZGF0YS4KLVtJTkZPXSBBYnN0cmFjdENoYW5uZWxpemVyIC0gQ29uZmlndXJlZCBhcHBsaWNhdGlvbi92bmQuZ3JlbWxpbi12My4wK2dyeW8gd2l0aCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMAotW0lORk9dIEFic3RyYWN0Q2hhbm5lbGl6ZXIgLSBDb25maWd1cmVkIGFwcGxpY2F0aW9uL3ZuZC5ncmVtbGluLXYzLjArZ3J5by1zdHJpbmdkIHdpdGggb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAKLVtJTkZPXSBBYnN0cmFjdENoYW5uZWxpemVyIC0gQ29uZmlndXJlZCBhcHBsaWNhdGlvbi92bmQuZ3JlbWxpbi12My4wK2pzb24gd2l0aCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYzZDAKLVtJTkZPXSBBYnN0cmFjdENoYW5uZWxpemVyIC0gQ29uZmlndXJlZCBhcHBsaWNhdGlvbi9qc29uIHdpdGggb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWM2QwCi1bSU5GT10gR3JlbWxpblNlcnZlciQxIC0gR3JlbWxpbiBTZXJ2ZXIgY29uZmlndXJlZCB3aXRoIHdvcmtlciB0aHJlYWQgcG9vbCBvZiAxLCBncmVtbGluIHBvb2wgb2YgNCBhbmQgYm9zcyB0aHJlYWQgcG9vbCBvZiAxLgotW0lORk9dIEdyZW1saW5TZXJ2ZXIkMSAtIENoYW5uZWwgc3RhcnRlZCBhdCBwb3J0IDgxODIuCiAtLS0tCiAKLU5PVEU6IFRoZSBjb21tYW5kIHRvIHVzZSBgaW5zdGFsbGAgbmVlZCBvbmx5IGJlIGV4ZWN1dGVkIG9uY2UgdG8gZ2F0aGVyIGBncmVtbGluLXB5dGhvbmAgZGVwZW5kZW5jaWVzIGludG8gR3JlbWxpbiBTZXJ2ZXJzJwotcGF0aC4gRnV0dXJlIHN0YXJ0cyBvZiBHcmVtbGluIFNlcnZlciB3aWxsIG5vdCByZXF1aXJlIHRoYXQgY29tbWFuZC4KKz09PSBDb25uZWN0aW5nCiAKLVdpdGhpbiBDUHl0aG9uIGNvbnNvbGUsIGEgYEdyYXBoVHJhdmVyc2FsU291cmNlYCBpcyBjcmVhdGVkIGZyb20gdGhlIGFub255bW91cyBgdHJhdmVyc2FsKClgIG1ldGhvZCB3aGVyZSB0aGUgImciCi1wcm92aWRlZCB0byB0aGUgYERyaXZlclJlbW90ZUNvbm5lY3Rpb25gIGNvcnJlc3BvbmRzIHRvIHRoZSBuYW1lIG9mIGEgYEdyYXBoVHJhdmVyc2FsU291cmNlYCBvbiB0aGUgcmVtb3RlIGVuZC4KK1RoZSBwYXR0ZXJuIGZvciBjb25uZWN0aW5nIGlzIGRlc2NyaWJlZCBpbiA8PGNvbm5lY3RpbmctZ3JlbWxpbixDb25uZWN0aW5nIEdyZW1saW4+PiBhbmQgaXQgYmFzaWNhbGx5IGRpc3RpbGxzIGRvd24gdG8KK2NyZWF0aW5nIGEgYEdyYXBoVHJhdmVyc2FsU291cmNlYC4gQSBgR3JhcGhUcmF2ZXJzYWxTb3VyY2VgIGlzIGNyZWF0ZWQgZnJvbSB0aGUgYW5vbnltb3VzIGB0cmF2ZXJzYWwoKWAgbWV0aG9kIHdoZXJlCit0aGUgImciIHByb3ZpZGVkIHRvIHRoZSBgRHJpdmVyUmVtb3RlQ29ubmVjdGlvbmAgY29ycmVzcG9uZHMgdG8gdGhlIG5hbWUgb2YgYSBgR3JhcGhUcmF2ZXJzYWxTb3VyY2VgIG9uIHRoZSByZW1vdGUgZW5kLgogCiBbc291cmNlLHB5dGhvbl0KLT4+PiBnID0gdHJhdmVyc2FsKCkud2l0aFJlbW90ZShEcml2ZXJSZW1vdGVDb25uZWN0aW9uKCd3czovL2xvY2FsaG9zdDo4MTgyL2dyZW1saW4nLCdnJykpCi0KLVdoZW4gYSB0cmF2ZXJzYWwgZnJvbSB0aGUgYEdyYXBoVHJhdmVyc2FsU291cmNlYCBpcyBpdGVyYXRlZCwgdGhlIHRyYXZlcnNhbCdzIGBCeXRlY29kZWAgaXMgc2VudCBvdmVyIHRoZSB3aXJlCi12aWEgdGhlIHJlZ2lzdGVyZWQgYFJlbW90ZUNvbm5lY3Rpb25gLiBUaGUgYnl0ZWNvZGUgaXMgdXNlZCB0byBjb25zdHJ1Y3QgdGhlIGVxdWl2YWxlbnQgdHJhdmVyc2FsIGF0IHRoZSByZW1vdGUKLXRyYXZlcnNhbCBzb3VyY2UuIE1vcmVvdmVyLCB0eXBpY2FsbHkgdGhlIGJ5dGVjb2RlIGlzIGFuYWx5emVkIHRvIGRldGVybWluZSB3aGljaCBsYW5ndWFnZSB0aGUgYnl0ZWNvZGUgc2hvdWxkIGJlCi10cmFuc2xhdGVkIHRvLiBJZiB0aGUgdHJhdmVyc2FsIGRvZXMgbm90IGNvbnRhaW4gbGFtYmRhcywgdGhlIHJlbW90ZSBsb2NhdGlvbiAoZS5nLiBHcmVtbGluIFNlcnZlcikgd2lsbCB0eXBpY2FsbHkKLXVzZSBHcmVtbGluLUphdmEuIElmIGl0IGhhcyBsYW1iZGFzIHdyaXR0ZW4gaW4gR3Jvb3Z5LCBpdCB3aWxsIHVzZSBHcmVtbGluLUdyb292eSAoZS5nLiBgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZWApLgotTGlrZXdpc2UsIGlmIGl0IGhhcyBsYW1iZGFzIHJlcHJlc2VudGVkIGluIFB5dGhvbiwgaXQgd2lsbCB1c2UgR3JlbWxpbi1QeXRob24gKGUuZy4gYEdyZW1saW5KeXRob25TY3JpcHRFbmdpbmVgKS4KLQotSU1QT1JUQU5UOiBHcmVtbGluLVB5dGhvbidzIGBUcmF2ZXJzYWxgIGNsYXNzIHN1cHBvcnRzIHRoZSBzdGFuZGFyZCBHcmVtbGluIG1ldGhvZHMgc3VjaCBhcyBgbmV4dCgpYCwgYG5leHRUcmF2ZXJzZXIoKWAsCi1gdG9TZXQoKWAsIGB0b0xpc3QoKWAsIGV0Yy4gU3VjaCAidGVybWluYWwiIG1ldGhvZHMgdHJpZ2dlciB0aGUgZXZhbHVhdGlvbiBvZiB0aGUgdHJhdmVyc2FsLgotCi09PT0gUmVtb3RlQ29ubmVjdGlvbiBTdWJtaXNzaW9uCi0KLVRoZXJlIGFyZSB2YXJpb3VzIHdheXMgdG8gc3VibWl0IGEgdHJhdmVyc2FsIHRvIGEgYFJlbW90ZUNvbm5lY3Rpb25gLiBKdXN0IGFzIGluIEdyZW1saW4tSmF2YSwgdGhlcmUgYXJlIHZhcmlvdXMKLSJ0ZXJtaW5hbC9hY3Rpb24gbWV0aG9kcyIgb2ZmIG9mIGBUcmF2ZXJzYWxgLgotCi0qIGBUcmF2ZXJzYWwubmV4dCgpYAotKiBgVHJhdmVyc2FsLm5leHRUcmF2ZXJzZXIoKWAKLSogYFRyYXZlcnNhbC50b0xpc3QoKWAKLSogYFRyYXZlcnNhbC50b1NldCgpYAotKiBgVHJhdmVyc2FsLml0ZXJhdGUoKWAKKy0tLS0KK2cgPSB0cmF2ZXJzYWwoKS53aXRoUmVtb3RlKERyaXZlclJlbW90ZUNvbm5lY3Rpb24oJ3dzOi8vbG9jYWxob3N0OjgxODIvZ3JlbWxpbicsJ2cnKSkKKy0tLS0KIAogSWYgeW91IG5lZWQgdG8gc2VuZCBhZGRpdGlvbmFsIGhlYWRlcnMgaW4gdGhlIHdlYnNvY2tldHMgY29ubmVjdGlvbiwgeW91IGNhbiBwYXNzIGFuIG9wdGlvbmFsIGBoZWFkZXJzYCBwYXJhbWV0ZXIKIHRvIHRoZSBgRHJpdmVyUmVtb3RlQ29ubmVjdGlvbmAgY29uc3RydWN0b3IuCiAKIFtzb3VyY2UscHl0aG9uXQorLS0tLQogZyA9IHRyYXZlcnNhbCgpLndpdGhSZW1vdGUoRHJpdmVyUmVtb3RlQ29ubmVjdGlvbignd3M6Ly9sb2NhbGhvc3Q6ODE4Mi9ncmVtbGluJywnZycsaGVhZGVycz17J0hlYWRlcic6J1ZhbHVlJ30pKQotCi09PT0gR3JlbWxpbi1QeXRob24gU3VnYXIKLQotUHl0aG9uIHN1cHBvcnRzIG1ldGEtcHJvZ3JhbW1pbmcgYW5kIG9wZXJhdG9yIG92ZXJsb2FkaW5nLiBUaGVyZSBhcmUgdGhyZWUgdXNlcyBvZiB0aGVzZSB0ZWNobmlxdWVzIGluIEdyZW1saW4tUHl0aG9uIHRoYXQKLW1ha2VzIHRyYXZlcnNhbHMgYSBiaXQgbW9yZSBjb25jaXNlLgotCi1bZ3JlbWxpbi1weXRob24sbW9kZXJuXQotLS0tLQotZy5WKCkuYm90aCgpWzE6M10udG9MaXN0KCkKLWcuVigpLmJvdGgoKVsxXS50b0xpc3QoKQotZy5WKCkuYm90aCgpLm5hbWUudG9MaXN0KCkKIC0tLS0KIAotPT09IFN0YXRpYyBFbnVtcyBhbmQgTWV0aG9kcworW1tweXRob24taW1wb3J0c11dCis9PT0gQ29tbW9uIEltcG9ydHMKIAotR3JlbWxpbiBoYXMgdmFyaW91cyB0b2tlbnMgKGUuZy4gYFRgLCBgUGAsIGBPcmRlcmAsIGBPcGVyYXRvcmAsIGV0Yy4pIHRoYXQgYXJlIHJlcHJlc2VudGVkIGluIEdyZW1saW4tUHl0aG9uIGFzIFB5dGhvbiBgRW51bXNgLgorVGhlcmUgYXJlIGEgbnVtYmVyIG9mIGNsYXNzZXMsIGZ1bmN0aW9ucyBhbmQgdG9rZW5zIHRoYXQgYXJlIHR5cGljYWxseSB1c2VkIHdpdGggR3JlbWxpbi4gVGhlIGZvbGxvd2luZyBpbXBvcnRzCitwcm92aWRlIG1vc3Qgb2YgdGhlIHR5cGljYWwgZnVuY3Rpb25hbGl0eSByZXF1aXJlZCB0byB1c2UgR3JlbWxpbjoKIAogW3NvdXJjZSxweXRob25dCi0+Pj4gZnJvbSBncmVtbGluX3B5dGhvbi5wcm9jZXNzLnRyYXZlcnNhbCBpbXBvcnQgVAotPj4+IGZyb20gZ3JlbWxpbl9weXRob24ucHJvY2Vzcy50cmF2ZXJzYWwgaW1wb3J0IE9yZGVyCi0+Pj4gZnJvbSBncmVtbGluX3B5dGhvbi5wcm9jZXNzLnRyYXZlcnNhbCBpbXBvcnQgQ2FyZGluYWxpdHkKLT4+PiBmcm9tIGdyZW1saW5fcHl0aG9uLnByb2Nlc3MudHJhdmVyc2FsIGltcG9ydCBDb2x1bW4KLT4+PiBmcm9tIGdyZW1saW5fcHl0aG9uLnByb2Nlc3MudHJhdmVyc2FsIGltcG9ydCBEaXJlY3Rpb24KLT4+PiBmcm9tIGdyZW1saW5fcHl0aG9uLnByb2Nlc3MudHJhdmVyc2FsIGltcG9ydCBPcGVyYXRvcgotPj4+IGZyb20gZ3JlbWxpbl9weXRob24ucHJvY2Vzcy50cmF2ZXJzYWwgaW1wb3J0IFAKLT4+PiBmcm9tIGdyZW1saW5fcHl0aG9uLnByb2Nlc3MudHJhdmVyc2FsIGltcG9ydCBQb3AKLT4+PiBmcm9tIGdyZW1saW5fcHl0aG9uLnByb2Nlc3MudHJhdmVyc2FsIGltcG9ydCBTY29wZQotPj4+IGZyb20gZ3JlbWxpbl9weXRob24ucHJvY2Vzcy50cmF2ZXJzYWwgaW1wb3J0IEJhcnJpZXIKKy0tLS0KK2Zyb20gZ3JlbWxpbl9weXRob24gaW1wb3J0IHN0YXRpY3MKK2Zyb20gZ3JlbWxpbl9weXRob24ucHJvY2Vzcy5hbm9ueW1vdXNfdHJhdmVyc2FsIGltcG9ydCB0cmF2ZXJzYWwKK2Zyb20gZ3JlbWxpbl9weXRob24ucHJvY2Vzcy5ncmFwaF90cmF2ZXJzYWwgaW1wb3J0IF9fCitmcm9tIGdyZW1saW5fcHl0aG9uLnByb2Nlc3Muc3RyYXRlZ2llcyBpbXBvcnQgKgorZnJvbSBncmVtbGluX3B5dGhvbi5kcml2ZXIuZHJpdmVyX3JlbW90ZV9jb25uZWN0aW9uIGltcG9ydCBEcml2ZXJSZW1vdGVDb25uZWN0aW9uCitmcm9tIGdyZW1saW5fcHl0aG9uLnByb2Nlc3MudHJhdmVyc2FsIGltcG9ydCBUCitmcm9tIGdyZW1saW5fcHl0aG9uLnByb2Nlc3MudHJhdmVyc2FsIGltcG9ydCBPcmRlcgorZnJvbSBncmVtbGluX3B5dGhvbi5wcm9jZXNzLnRyYXZlcnNhbCBpbXBvcnQgQ2FyZGluYWxpdHkKK2Zyb20gZ3JlbWxpbl9weXRob24ucHJvY2Vzcy50cmF2ZXJzYWwgaW1wb3J0IENvbHVtbgorZnJvbSBncmVtbGluX3B5dGhvbi5wcm9jZXNzLnRyYXZlcnNhbCBpbXBvcnQgRGlyZWN0aW9uCitmcm9tIGdyZW1saW5fcHl0aG9uLnByb2Nlc3MudHJhdmVyc2FsIGltcG9ydCBPcGVyYXRvcgorZnJvbSBncmVtbGluX3B5dGhvbi5wcm9jZXNzLnRyYXZlcnNhbCBpbXBvcnQgUAorZnJvbSBncmVtbGluX3B5dGhvbi5wcm9jZXNzLnRyYXZlcnNhbCBpbXBvcnQgUG9wCitmcm9tIGdyZW1saW5fcHl0aG9uLnByb2Nlc3MudHJhdmVyc2FsIGltcG9ydCBTY29wZQorZnJvbSBncmVtbGluX3B5dGhvbi5wcm9jZXNzLnRyYXZlcnNhbCBpbXBvcnQgQmFycmllcgorZnJvbSBncmVtbGluX3B5dGhvbi5wcm9jZXNzLnRyYXZlcnNhbCBpbXBvcnQgQmluZGluZ3MKK2Zyb20gZ3JlbWxpbl9weXRob24ucHJvY2Vzcy50cmF2ZXJzYWwgaW1wb3J0IFdpdGhPcHRpb25zCistLS0tCiAKIFRoZXNlIGNhbiBiZSB1c2VkIGFuYWxvZ291c2x5IHRvIGhvdyB0aGV5IGFyZSB1c2VkIGluIEdyZW1saW4tSmF2YS4KIApAQCAtMjI2LDcgKzY5OSw5IEBACiBNb3Jlb3ZlciwgYnkgaW1wb3J0aW5nIHRoZSBgc3RhdGljc2Agb2YgR3JlbWxpbi1QeXRob24sIHRoZSBjbGFzcyBwcmVmaXhlcyBjYW4gYmUgb21pdHRlZC4KIAogW3NvdXJjZSxweXRob25dCistLS0tCiA+Pj4gc3RhdGljcy5sb2FkX3N0YXRpY3MoZ2xvYmFscygpKQorLS0tLQogCiBXaXRoIHN0YXRpY3MgbG9hZGVkIGl0cyBwb3NzaWJsZSB0byByZXByZXNlbnQgdGhlIGFib3ZlIHRyYXZlcnNhbCBhcyBiZWxvdy4KIApAQCAtMjM1LDI5ICs3MTAsMzEgQEAKIGcuVigpLmhhc0xhYmVsKCdwZXJzb24nKS5oYXMoJ2FnZScsZ3QoMzApKS5vcmRlcigpLmJ5KCdhZ2UnLGRlc2MpLnRvTGlzdCgpCiAtLS0tCiAKLUZpbmFsbHksIHN0YXRpY3MgaW5jbHVkZXMgYWxsIHRoZSBgK19fK2AtbWV0aG9kcyBhbmQgdGh1cywgYW5vbnltb3VzIHRyYXZlcnNhbHMgbGlrZSBgK19fLm91dCgpK2AgY2FuIGJlIGV4cHJlc3NlZCBhcwotYmVsb3cuIFRoYXQgaXMsIHdpdGhvdXQgdGhlIGArX18rYC1wcmVmaXguCitGaW5hbGx5LCBzdGF0aWNzIGluY2x1ZGVzIGFsbCB0aGUgYCtfXytgLW1ldGhvZHMgYW5kIHRodXMsIGFub255bW91cyB0cmF2ZXJzYWxzIGxpa2UgYCtfXy5vdXQoKStgIGNhbiBiZSBleHByZXNzZWQgYXMgYmVsb3cuCitUaGF0IGlzLCB3aXRob3V0IHRoZSBgK19fK2AtcHJlZml4LgogCiBbZ3JlbWxpbi1weXRob24sbW9kZXJuXQogLS0tLQogZy5WKCkucmVwZWF0KG91dCgpKS50aW1lcygyKS5uYW1lLmZvbGQoKS50b0xpc3QoKQogLS0tLQogCi09PT0gQmluZGluZ3MKKz09PSBDb25maWd1cmF0aW9uCiAKLVdoZW4gYSB0cmF2ZXJzYWwgYnl0ZWNvZGUgaXMgc2VudCBvdmVyIGEgYFJlbW90ZUNvbm5lY3Rpb25gIChlLmcuIEdyZW1saW4gU2VydmVyKSwgaXQgd2lsbCBiZSB0cmFuc2xhdGVkLCBjb21waWxlZCwKLWFuZCB0aGVuIGV4ZWN1dGVkLiBJZiB0aGUgc2FtZSB0cmF2ZXJzYWwgaXMgc2VudCBhZ2FpbiwgdHJhbnNsYXRpb24gYW5kIGNvbXBpbGF0aW9uIGNhbiBiZSBza2lwcGVkIGFzIHRoZSBwcmV2aW91c2x5Ci1jb21waWxlZCB2ZXJzaW9uIHNob3VsZCBiZSBjYWNoZWQuIE1hbnkgdHJhdmVyc2FscyBhcmUgdW5pcXVlIHVwIHRvIHNvbWUgcGFyYW1ldGVyaXphdGlvbi4gRm9yIGluc3RhbmNlLAotYGcuVigxKS5vdXQoJ2NyZWF0ZWQnKS5uYW1lYCBpcyBjb25zaWRlcmVkIGRpZmZlcmVudCBmcm9tIGBnLlYoNCkub3V0KCdjcmVhdGVkJykubmFtZSdgIGFzIHRoZXkgaGF2ZSBkaWZmZXJlbnQgc2NyaXB0Ci0ic3RyaW5nIiByZXByZXNlbnRhdGlvbnMuIEhvd2V2ZXIsIGBnLlYoeCkub3V0KCdjcmVhdGVkJykubmFtZWAgd2l0aCBiaW5kaW5ncyBvZiBge3ggOiAxfWAgYW5kIGB7eCA6IDR9YCBhcmUgY29uc2lkZXJlZAotdGhlIHNhbWUuIElmIGEgdHJhdmVyc2FsIGlzIGdvaW5nIHRvIGJlIGV4ZWN1dGVkIHJlcGVhdGVkbHksIGJ1dCB3aXRoIGRpZmZlcmVudCBwYXJhbWV0ZXJzLCB0aGVuIGJpbmRpbmdzIHNob3VsZCBiZQotdXNlZC4gSW4gR3JlbWxpbi1QeXRob24sIGJpbmRpbmdzIGFyZSAyLXR1cGxlcyBhbmQgdXNlZCBhcyBmb2xsb3dzLgorVGhlIGZvbGxvd2luZyB0YWJsZSBkZXNjcmliZXMgdGhlIHZhcmlvdXMgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgR3JlbWxpbi1QeXRob24gRHJpdmVyLiBUaGV5CitjYW4gYmUgcGFzc2VkIHRvIHRoZSBgQ2xpZW50YCBvciBgRHJpdmVyUmVtb3RlQ29ubmVjdGlvbmAgaW5zdGFuY2UgYXMga2V5d29yZCBhcmd1bWVudHM6CiAKLVtncmVtbGluLXB5dGhvbixtb2Rlcm5dCi0tLS0tCi1nLlYoKCdpZCcsMSkpLm91dCgnY3JlYXRlZCcpLm5hbWUudG9MaXN0KCkKLWcuVigoJ2lkJyw0KSkub3V0KCdjcmVhdGVkJykubmFtZS50b0xpc3QoKQotLS0tLQorW3dpZHRoPSIxMDAlIixjb2xzPSIzLDEwLF4yIixvcHRpb25zPSJoZWFkZXIiXQorfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorfEtleSB8RGVzY3JpcHRpb24gfERlZmF1bHQKK3xwcm90b2NvbF9mYWN0b3J5IHxBIGNhbGxhYmxlIHRoYXQgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiBgQWJzdHJhY3RCYXNlUHJvdG9jb2xgLiB8YGdyZW1saW5fcHl0aG9uLmRyaXZlci5wcm90b2NvbC5HcmVtbGluU2VydmVyV1NQcm90b2NvbGAKK3x0cmFuc3BvcnRfZmFjdG9yeSB8QSBjYWxsYWJsZSB0aGF0IHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgYEFic3RyYWN0QmFzZVRyYW5zcG9ydGAuIHxgZ3JlbWxpbl9weXRob24uZHJpdmVyLnRvcm5hZG8udHJhbnNwb3J0LlRvcm5hZG9UcmFuc3BvcnRgCit8cG9vbF9zaXplIHxUaGUgbnVtYmVyIG9mIGNvbm5lY3Rpb25zIHVzZWQgYnkgdGhlIHBvb2wuIHw0Cit8bWF4X3dvcmtlcnMgfE1heGltdW0gbnVtYmVyIG9mIHdvcmtlciB0aHJlYWRzLiB8TnVtYmVyIG9mIENQVXMgKiA1Cit8bWVzc2FnZV9zZXJpYWxpemVyIHxUaGUgbWVzc2FnZSBzZXJpYWxpemVyIGltcGxlbWVudGF0aW9uLnxgZ3JlbWxpbl9weXRob24uZHJpdmVyLnNlcmlhbGl6ZXIuR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplcmAKK3xwYXNzd29yZCB8VGhlIHBhc3N3b3JkIHRvIHN1Ym1pdCBvbiByZXF1ZXN0cyB0aGF0IHJlcXVpcmUgYXV0aGVudGljYXRpb24uIHwiIgorfHVzZXJuYW1lIHxUaGUgdXNlcm5hbWUgdG8gc3VibWl0IG9uIHJlcXVlc3RzIHRoYXQgcmVxdWlyZSBhdXRoZW50aWNhdGlvbi4gfCIiCit8c2Vzc2lvbiB8IEEgdW5pcXVlIHN0cmluZy1iYXNlZCBpZGVudGlmaWVyICh0eXBpY2FsbHkgYSBVVUlEKSB0byBlbmFibGUgYSA8PHNlc3Npb25zLHNlc3Npb24tYmFzZWQgY29ubmVjdGlvbj4+LiBUaGlzIGlzIG5vdCBhIHZhbGlkIGNvbmZpZ3VyYXRpb24gZm9yIGBEcml2ZXJSZW1vdGVDb25uZWN0aW9uYC4gfE5vbmUKK3w9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogPT09IFRyYXZlcnNhbCBTdHJhdGVnaWVzCiAKQEAgLTI2OCwxMyArNzQ1LDEzIEBACiAtLS0tCiBnID0gZy53aXRoU3RyYXRlZ2llcyhTdWJncmFwaFN0cmF0ZWd5KHZlcnRpY2VzPWhhc0xhYmVsKCdwZXJzb24nKSxlZGdlcz1oYXMoJ3dlaWdodCcsZ3QoMC41KSkpKQogZy5WKCkubmFtZS50b0xpc3QoKQotZy5WKCkub3V0RSgpLnZhbHVlTWFwKFRydWUpLnRvTGlzdCgpCitnLlYoKS5vdXRFKCkuZWxlbWVudE1hcCgpLnRvTGlzdCgpCiBnID0gZy53aXRob3V0U3RyYXRlZ2llcyhTdWJncmFwaFN0cmF0ZWd5KQogZy5WKCkubmFtZS50b0xpc3QoKQotZy5WKCkub3V0RSgpLnZhbHVlTWFwKFRydWUpLnRvTGlzdCgpCitnLlYoKS5vdXRFKCkuZWxlbWVudE1hcCgpLnRvTGlzdCgpCiBnID0gZy53aXRoQ29tcHV0ZXIod29ya2Vycz0yLHZlcnRpY2VzPWhhcygnbmFtZScsJ21hcmtvJykpCiBnLlYoKS5uYW1lLnRvTGlzdCgpCi1nLlYoKS5vdXRFKCkudmFsdWVNYXAoVHJ1ZSkudG9MaXN0KCkKK2cuVigpLm91dEUoKS52YWx1ZU1hcCgpLndpdGhfKFdpdGhPcHRpb25zLnRva2VucykudG9MaXN0KCkKIC0tLS0KIAogTk9URTogTWFueSBvZiB0aGUgYFRyYXZlcnNhbFN0cmF0ZWd5YCBjbGFzc2VzIGluIEdyZW1saW4tUHl0aG9uIGFyZSBwcm94aWVzIHRvIHRoZSByZXNwZWN0aXZlIHN0cmF0ZWd5IG9uCkBAIC0zMTksNiArNzk2LDIxNSBAQAogV0FSTklORzogSnl0aG9uIHN1cHBvcnQgaGFzIGJlZW4gZGVwcmVjYXRlZCBhcyBmb3IgMy4zLjEwIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gMy41LjAuIEdyZW1saW4tUHl0aG9uIHdpbGwgYXQgdGhhdAogcG9pbnQgZGVmYXVsdCB0byBHcm9vdnkgZm9yIGxhbWJkYSBwcm9jZXNzaW5nIGFuZCBQeXRob24gbGFtYmRhcyB3aWxsIG5vdCBiZSBzdXBwb3J0ZWQuCiAKK0ZpbmFsbHksIEdyZW1saW4gYEJ5dGVjb2RlYCB0aGF0IGluY2x1ZGVzIGxhbWJkYXMgcmVxdWlyZXMgdGhhdCB0aGUgdHJhdmVyc2FsIGJlIHByb2Nlc3NlZCBieSB0aGUKK2BTY3JpcHRFbmdpbmVgLiBUbyBhdm9pZCBjb250aW51ZWQgcmVjb21waWxhdGlvbiBjb3N0cywgaXQgc3VwcG9ydHMgdGhlIGVuY29kaW5nIG9mIGJpbmRpbmdzLCB3aGljaCBhbGxvdyBhIHJlbW90ZQorZW5naW5lIHRvIHRvIGNhY2hlIHRyYXZlcnNhbHMgdGhhdCB3aWxsIGJlIHJldXNlZCBvdmVyIGFuZCBvdmVyIGFnYWluIHNhdmUgdGhhdCBzb21lIHBhcmFtZXRlcml6YXRpb24gbWF5IGNoYW5nZS4gVGh1cywKK2luc3RlYWQgb2YgdHJhbnNsYXRpbmcsIGNvbXBpbGluZywgYW5kIHRoZW4gZXhlY3V0aW5nIGVhY2ggc3VibWl0dGVkIGJ5dGVjb2RlLCBpdCBpcyBwb3NzaWJsZSB0byBzaW1wbHkgZXhlY3V0ZS4KKworW2dyZW1saW4tcHl0aG9uLG1vZGVybl0KKy0tLS0KK2cuVihCaW5kaW5ncy5vZignaWQnLDEpKS5vdXQoJ2NyZWF0ZWQnKS5tYXAobGFtYmRhOiAoIml0LmdldCgpLnZhbHVlKCduYW1lJykubGVuZ3RoKCkiLCAiZ3JlbWxpbi1ncm9vdnkiKSkuc3VtKCkudG9MaXN0KCkKK2cuVihCaW5kaW5ncy5vZignaWQnLDQpKS5vdXQoJ2NyZWF0ZWQnKS5tYXAobGFtYmRhOiAoIml0LmdldCgpLnZhbHVlKCduYW1lJykubGVuZ3RoKCkiLCAiZ3JlbWxpbi1ncm9vdnkiKSkuc3VtKCkudG9MaXN0KCkKKy0tLS0KKworPT09PSBOYXRpdmUgUHl0aG9uIExhbWJkYXMKKworVG8gcHJvY2VzcyBsYW1iZGFzIGluIFB5dGhvbiwgdGhlIGBHcmVtbGluSnl0aG9uU2NyaXB0RW5naW5lYCBtdXN0IGJlIGVuYWJsZWQgb24gdGhlIHJlbW90ZSBlbmQuIElmIHRoYXQgcmVtb3RlIGlzCitHcmVtbGluIFNlcnZlciwgdGhlbiB0aGVzZSBpbnN0cnVjdGlvbnMgY2FuIGhlbHAgY29uZmlndXJhdGlvbiBpdC4gQXMgYW4gZXhhbXBsZSwgdGhlCitgY29uZi9ncmVtbGluLXNlcnZlci1tb2Rlcm4tcHkueWFtbGAgY29uZmlndXJhdGlvbiBtYWludGFpbnMgYSBgR3JlbWxpbkp5dGhvblNjcmlwdEVuZ2luZWAuCisKK1tzb3VyY2UsYmFzaF0KKy0tLS0KKyQgYmluL2dyZW1saW4tc2VydmVyLnNoIGluc3RhbGwgb3JnLmFwYWNoZS50aW5rZXJwb3AgZ3JlbWxpbi1weXRob24geC55LnoKKyQgYmluL2dyZW1saW4tc2VydmVyLnNoIGNvbmYvZ3JlbWxpbi1zZXJ2ZXItbW9kZXJuLXB5LnlhbWwKK1tJTkZPXSBHcmVtbGluU2VydmVyIC0KKyAgICAgICBcLCwsLworICAgICAgIChvIG8pCistLS1vT09vLSgzKS1vT09vLS0tCisKK1tJTkZPXSBHcmVtbGluU2VydmVyIC0gQ29uZmlndXJpbmcgR3JlbWxpbiBTZXJ2ZXIgZnJvbSBjb25mL2dyZW1saW4tc2VydmVyLW1vZGVybi1weS55YW1sCitbSU5GT10gTWV0cmljTWFuYWdlciAtIENvbmZpZ3VyZWQgTWV0cmljcyBTbGY0alJlcG9ydGVyIGNvbmZpZ3VyZWQgd2l0aCBpbnRlcnZhbD0xODAwMDBtcyBhbmQgbG9nZ2VyTmFtZT1vcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNlcnZlci5TZXR0aW5ncyRTbGY0alJlcG9ydGVyTWV0cmljcworW0lORk9dIEdyYXBoTWFuYWdlciAtIEdyYXBoIFtncmFwaF0gd2FzIHN1Y2Nlc3NmdWxseSBjb25maWd1cmVkIHZpYSBbY29uZi90aW5rZXJncmFwaC1lbXB0eS5wcm9wZXJ0aWVzXS4KK1tJTkZPXSBTZXJ2ZXJHcmVtbGluRXhlY3V0b3IgLSBJbml0aWFsaXplZCBHcmVtbGluIHRocmVhZCBwb29sLiAgVGhyZWFkcyBpbiBwb29sIG5hbWVkIHdpdGggcGF0dGVybiBncmVtbGluLSoKK1tJTkZPXSBTY3JpcHRFbmdpbmVzIC0gTG9hZGVkIGdyZW1saW4tanl0aG9uIFNjcmlwdEVuZ2luZQorW0lORk9dIFNjcmlwdEVuZ2luZXMgLSBMb2FkZWQgZ3JlbWxpbi1weXRob24gU2NyaXB0RW5naW5lCitbSU5GT10gU2NyaXB0RW5naW5lcyAtIExvYWRlZCBncmVtbGluLWdyb292eSBTY3JpcHRFbmdpbmUKK1tJTkZPXSBHcmVtbGluRXhlY3V0b3IgLSBJbml0aWFsaXplZCBncmVtbGluLWdyb292eSBTY3JpcHRFbmdpbmUgd2l0aCBzY3JpcHRzL2dlbmVyYXRlLW1vZGVybi5ncm9vdnkKK1tJTkZPXSBTZXJ2ZXJHcmVtbGluRXhlY3V0b3IgLSBJbml0aWFsaXplZCBHcmVtbGluRXhlY3V0b3IgYW5kIGNvbmZpZ3VyZWQgU2NyaXB0RW5naW5lcy4KK1tJTkZPXSBTZXJ2ZXJHcmVtbGluRXhlY3V0b3IgLSBBIEdyYXBoVHJhdmVyc2FsU291cmNlIGlzIG5vdyBib3VuZCB0byBbZ10gd2l0aCBncmFwaHRyYXZlcnNhbHNvdXJjZVt0aW5rZXJncmFwaFt2ZXJ0aWNlczowIGVkZ2VzOjBdLCBzdGFuZGFyZF0KK1tJTkZPXSBPcExvYWRlciAtIEFkZGluZyB0aGUgc3RhbmRhcmQgT3BQcm9jZXNzb3IuCitbSU5GT10gT3BMb2FkZXIgLSBBZGRpbmcgdGhlIHNlc3Npb24gT3BQcm9jZXNzb3IuCitbSU5GT10gT3BMb2FkZXIgLSBBZGRpbmcgdGhlIHRyYXZlcnNhbCBPcFByb2Nlc3Nvci4KK1tJTkZPXSBUcmF2ZXJzYWxPcFByb2Nlc3NvciAtIEluaXRpYWxpemVkIGNhY2hlIGZvciBUcmF2ZXJzYWxPcFByb2Nlc3NvciB3aXRoIHNpemUgMTAwMCBhbmQgZXhwaXJhdGlvbiB0aW1lIG9mIDYwMDAwMCBtcworW0lORk9dIEdyZW1saW5TZXJ2ZXIgLSBFeGVjdXRpbmcgc3RhcnQgdXAgTGlmZUN5Y2xlSG9vaworW0lORk9dIExvZ2dlciRpbmZvIC0gTG9hZGluZyAnbW9kZXJuJyBncmFwaCBkYXRhLgorW1dBUk5dIEFic3RyYWN0Q2hhbm5lbGl6ZXIgLSBUaGUgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAgc2VyaWFsaXphdGlvbiBjbGFzcyBpcyBkZXByZWNhdGVkLgorW0lORk9dIEFic3RyYWN0Q2hhbm5lbGl6ZXIgLSBDb25maWd1cmVkIGFwcGxpY2F0aW9uL3ZuZC5ncmVtbGluLXYzLjArZ3J5byB3aXRoIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcnlvTWVzc2FnZVNlcmlhbGl6ZXJWM2QwCitbV0FSTl0gQWJzdHJhY3RDaGFubmVsaXplciAtIFRoZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMCBzZXJpYWxpemF0aW9uIGNsYXNzIGlzIGRlcHJlY2F0ZWQuCitbSU5GT10gQWJzdHJhY3RDaGFubmVsaXplciAtIENvbmZpZ3VyZWQgYXBwbGljYXRpb24vdm5kLmdyZW1saW4tdjMuMCtncnlvLXN0cmluZ2Qgd2l0aCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMAorW0lORk9dIEFic3RyYWN0Q2hhbm5lbGl6ZXIgLSBDb25maWd1cmVkIGFwcGxpY2F0aW9uL3ZuZC5ncmVtbGluLXYzLjAranNvbiB3aXRoIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjNkMAorW0lORk9dIEFic3RyYWN0Q2hhbm5lbGl6ZXIgLSBDb25maWd1cmVkIGFwcGxpY2F0aW9uL2pzb24gd2l0aCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYzZDAKK1tJTkZPXSBBYnN0cmFjdENoYW5uZWxpemVyIC0gQ29uZmlndXJlZCBhcHBsaWNhdGlvbi92bmQuZ3JhcGhiaW5hcnktdjEuMCB3aXRoIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjEKK1tJTkZPXSBBYnN0cmFjdENoYW5uZWxpemVyIC0gQ29uZmlndXJlZCBhcHBsaWNhdGlvbi92bmQuZ3JhcGhiaW5hcnktdjEuMC1zdHJpbmdkIHdpdGggb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMQorW0lORk9dIEdyZW1saW5TZXJ2ZXIkMSAtIEdyZW1saW4gU2VydmVyIGNvbmZpZ3VyZWQgd2l0aCB3b3JrZXIgdGhyZWFkIHBvb2wgb2YgMSwgZ3JlbWxpbiBwb29sIG9mIDggYW5kIGJvc3MgdGhyZWFkIHBvb2wgb2YgMS4KK1tJTkZPXSBHcmVtbGluU2VydmVyJDEgLSBDaGFubmVsIHN0YXJ0ZWQgYXQgcG9ydCA4MTgyLgorLS0tLQorCitOT1RFOiBUaGUgY29tbWFuZCB0byB1c2UgYGluc3RhbGxgIG5lZWQgb25seSBiZSBleGVjdXRlZCBvbmNlIHRvIGdhdGhlciBgZ3JlbWxpbi1weXRob25gIGRlcGVuZGVuY2llcyBpbnRvIEdyZW1saW4gU2VydmVycycKK3BhdGguIEZ1dHVyZSBzdGFydHMgb2YgR3JlbWxpbiBTZXJ2ZXIgd2lsbCBub3QgcmVxdWlyZSB0aGF0IGNvbW1hbmQuCisKK1dBUk5JTkc6IEFzIGV4cGxhaW5lZCB0aHJvdWdob3V0IHRoZSBkb2N1bWVudGF0aW9uLCB3aGVuIHBvc3NpYmxlIDw8YS1ub3RlLW9uLWxhbWJkYXMsYXZvaWQ+PiBsYW1iZGFzLiBJZiBsYW1iZGFzCittdXN0IGJlIHVzZWQsIHRoZW4gY29uc2lkZXIgc3VibWl0dGluZyBHcm9vdnkgbGFtYmRhcyBhcyBvcHBvc2VkIHRvIFB5dGhvbi1iYXNlZCBvbmVzLiBUaGUgYEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmVgCitpcyBmYXIgbW9yZSBmZWF0dXJlZCBhbmQgcGVyZm9ybWFudCB0aGFuIGl0cyBKeXRob24gc2libGluZyBhbmQgd2lsbCBsaWtlbHkgeWllbGQgYmV0dGVyIHJlc3VsdHMuCisKKz09PSBTdWJtaXR0aW5nIFNjcmlwdHMKKworV0FSTklORzogVGlua2VyUG9wIGRvZXMgbm90IHJlY29tbWVuZCBzdWJtaXR0aW5nIHNjcmlwdC1iYXNlZCByZXF1ZXN0cyBhbmQgZ2VuZXJhbGx5IGNvbnRpbnVlcyB0byBzdXBwb3J0IHRoaXMgZmVhdHVyZQorZm9yIGxlZ2FjeSByZWFzb25zIGFuZCBjb3JuZXIgdXNlIGNhc2VzIHdoaWNoIGFyZSBzdGlsbCBub3QgY29tcGxldGVseSBhZGRyZXNzZWQgYnkgdGhlIEdyZW1saW4gbGFuZ3VhZ2UuIFBsZWFzZQorY29uc2lkZXIgdXNpbmcgYnl0ZWNvZGUtYmFzZWQgcmVxdWVzdHMgaW5zdGVhZCB3aGVuIHBvc3NpYmxlLgorCitUaGUgYENsaWVudGAgY2xhc3MgaW1wbGVtZW50YXRpb24vaW50ZXJmYWNlIGlzIGJhc2VkIG9uIHRoZSBKYXZhIERyaXZlciwgd2l0aCBzb21lIHJlc3RyaWN0aW9ucy4gTW9zdCBub3RhYmx5LAorR3JlbWxpbi1QeXRob24gZG9lcyBub3QgeWV0IGltcGxlbWVudCB0aGUgYENsdXN0ZXJgIGNsYXNzLiBJbnN0ZWFkLCBgQ2xpZW50YCBpcyBpbnN0YW50aWF0ZWQgZGlyZWN0bHkuCitVc2FnZSBpcyBhcyBmb2xsb3dzOgorCitbc291cmNlLHB5dGhvbl0KKy0tLS0KK2Zyb20gZ3JlbWxpbl9weXRob24uZHJpdmVyIGltcG9ydCBjbGllbnQgPDE+CitjbGllbnQgPSBjbGllbnQuQ2xpZW50KCd3czovL2xvY2FsaG9zdDo4MTgyL2dyZW1saW4nLCAnZycpIDwyPgorLS0tLQorCis8MT4gSW1wb3J0IHRoZSBHcmVtbGluLVB5dGhvbiBgY2xpZW50YCBtb2R1bGUuCis8Mj4gT3BlbnMgYSByZWZlcmVuY2UgdG8gYGxvY2FsaG9zdGAgLSBub3RlIHRoYXQgdGhlcmUgYXJlIHZhcmlvdXMgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgY2FuIGJlIHBhc3NlZAordG8gdGhlIGBDbGllbnRgIG9iamVjdCB1cG9uIGluc3RhbnRpYXRpb24gYXMga2V5d29yZCBhcmd1bWVudHMuCisKK09uY2UgYSBgQ2xpZW50YCBpbnN0YW5jZSBpcyByZWFkeSwgaXQgaXMgcG9zc2libGUgdG8gaXNzdWUgc29tZSBHcmVtbGluOgorCitbc291cmNlLHB5dGhvbl0KKy0tLS0KK3Jlc3VsdF9zZXQgPSBjbGllbnQuc3VibWl0KCJbMSwyLDMsNF0iKSAgPDE+CitmdXR1cmVfcmVzdWx0cyA9IHJlc3VsdF9zZXQuYWxsKCkgIDwyPgorcmVzdWx0cyA9IGZ1dHVyZV9yZXN1bHRzLnJlc3VsdCgpIDwzPgorYXNzZXJ0IHJlc3VsdHMgPT0gWzEsIDIsIDMsIDRdIDw0PgorCitmdXR1cmVfcmVzdWx0X3NldCA9IGNsaWVudC5zdWJtaXRBc3luYygiWzEsMiwzLDRdIikgPDU+CityZXN1bHRfc2V0ID0gZnV0dXJlX3Jlc3VsdF9zZXQucmVzdWx0KCkgPDY+CityZXN1bHQgPSByZXN1bHRfc2V0Lm9uZSgpIDw3PgorYXNzZXJ0IHJlc3VsdHMgPT0gWzEsIDIsIDMsIDRdIDw4PgorYXNzZXJ0IHJlc3VsdF9zZXQuZG9uZS5kb25lKCkgPDk+CisKK2NsaWVudC5jbG9zZSgpIDwxMD4KKy0tLS0KKworPDE+IFN1Ym1pdCBhIHNjcmlwdCB0aGF0IHNpbXBseSByZXR1cm5zIGEgYExpc3RgIG9mIGludGVnZXJzLiAgVGhpcyBtZXRob2QgYmxvY2tzIHVudGlsIHRoZSByZXF1ZXN0IGlzIHdyaXR0ZW4gdG8KK3RoZSBzZXJ2ZXIgYW5kIGEgYFJlc3VsdFNldGAgaXMgY29uc3RydWN0ZWQuCis8Mj4gRXZlbiB0aG91Z2ggdGhlIGBSZXN1bHRTZXRgIGlzIGNvbnN0cnVjdGVkLCBpdCBkb2VzIG5vdCBtZWFuIHRoYXQgdGhlIHNlcnZlciBoYXMgc2VudCBiYWNrIHRoZSByZXN1bHRzIChvciBldmVuCitldmFsdWF0ZWQgdGhlIHNjcmlwdCBwb3RlbnRpYWxseSkuICBUaGUgYFJlc3VsdFNldGAgaXMganVzdCBhIGhvbGRlciB0aGF0IGlzIGF3YWl0aW5nIHRoZSByZXN1bHRzIGZyb20gdGhlIHNlcnZlci4gVGhlIGBhbGxgIG1ldGhvZAorcmV0dXJucyBhIGBjb25jdXJyZW50LmZ1dHVyZXMuRnV0dXJlYCB0aGF0IHJlc29sdmVzIHRvIGEgbGlzdCB3aGVuIGl0IGlzIGNvbXBsZXRlLgorPDM+IEJsb2NrIHVudGlsIHRoZSB0aGUgc2NyaXB0IGlzIGV2YWx1YXRlZCBhbmQgcmVzdWx0cyBhcmUgc2VudCBiYWNrIGJ5IHRoZSBzZXJ2ZXIuCis8ND4gVmVyaWZ5IHRoZSByZXN1bHQuCis8NT4gU3VibWl0IHRoZSBzYW1lIHNjcmlwdCB0byB0aGUgc2VydmVyIGJ1dCBkb24ndCBibG9jay4KKzw2PiBXYWl0IHVudGlsIHJlcXVlc3QgaXMgd3JpdHRlbiB0byB0aGUgc2VydmVyIGFuZCBgUmVzdWx0U2V0YCBpcyBjb25zdHJ1Y3RlZC4KKzw3PiBSZWFkIGEgc2luZ2xlIHJlc3VsdCBvZmYgdGhlIHJlc3VsdCBzdHJlYW0uCis8OD4gQWdhaW4sIHZlcmlmeSB0aGUgcmVzdWx0LgorPDk+IFZlcmlmeSB0aGF0IHRoZSBhbGwgcmVzdWx0cyBoYXZlIGJlZW4gcmVhZCBhbmQgc3RyZWFtIGlzIGNsb3NlZC4KKzwxMD4gQ2xvc2UgY2xpZW50IGFuZCB1bmRlcmx5aW5nIHBvb2wgY29ubmVjdGlvbnMuCisKK1tbZ3JlbWxpbi1weXRob24tZHNsXV0KKz09PSBEb21haW4gU3BlY2lmaWMgTGFuZ3VhZ2VzCisKK1dyaXRpbmcgYSBHcmVtbGluIDw8ZHNsLERvbWFpbiBTcGVjaWZpYyBMYW5ndWFnZT4+IChEU0wpIGluIFB5dGhvbiBzaW1wbHkgcmVxdWlyZXMgZGlyZWN0IGV4dGVuc2lvbiBvZiBzZXZlcmFsIGNsYXNzZXM6CisKKyogYEdyYXBoVHJhdmVyc2FsYCAtIHdoaWNoIGV4cG9zZXMgdGhlIHZhcmlvdXMgc3RlcHMgdXNlZCBpbiB0cmF2ZXJzYWwgd3JpdGluZworKiBgX19gIC0gd2hpY2ggc3Bhd25zIGFub255bW91cyB0cmF2ZXJzYWxzIGZyb20gc3RlcHMKKyogYEdyYXBoVHJhdmVyc2FsU291cmNlYCAtIHdoaWNoIHNwYXducyBgR3JhcGhUcmF2ZXJzYWxgIGluc3RhbmNlcworCitUaGUgU29jaWFsIERTTCBiYXNlZCBvbiB0aGUgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvY3VycmVudC9pbWFnZXMvdGlua2VycG9wLW1vZGVybi5wbmdbIm1vZGVybiIgdG95IGdyYXBoXQorbWlnaHQgbG9vayBsaWtlIHRoaXM6CisKK1tzb3VyY2UscHl0aG9uXQorLS0tLQorY2xhc3MgU29jaWFsVHJhdmVyc2FsKEdyYXBoVHJhdmVyc2FsKToKKworICAgIGRlZiBrbm93cyhzZWxmLCBwZXJzb25fbmFtZSk6CisgICAgICAgIHJldHVybiBzZWxmLm91dCgia25vd3MiKS5oYXNMYWJlbCgicGVyc29uIikuaGFzKCJuYW1lIiwgcGVyc29uX25hbWUpCisKKyAgICBkZWYgeW91bmdlc3RGcmllbmRzQWdlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5vdXQoImtub3dzIikuaGFzTGFiZWwoInBlcnNvbiIpLnZhbHVlcygiYWdlIikubWluKCkKKworICAgIGRlZiBjcmVhdGVkQXRMZWFzdChzZWxmLCBudW1iZXIpOgorICAgICAgICByZXR1cm4gc2VsZi5vdXRFKCJjcmVhdGVkIikuY291bnQoKS5pc18oUC5ndGUobnVtYmVyKSkKKworY2xhc3MgX18oQW5vbnltb3VzVHJhdmVyc2FsKToKKworICAgIGdyYXBoX3RyYXZlcnNhbCA9IFNvY2lhbFRyYXZlcnNhbAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGtub3dzKGNscywgKmFyZ3MpOgorICAgICAgICByZXR1cm4gY2xzLmdyYXBoX3RyYXZlcnNhbChOb25lLCBOb25lLCBCeXRlY29kZSgpKS5rbm93cygqYXJncykKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB5b3VuZ2VzdEZyaWVuZHNBZ2UoY2xzLCAqYXJncyk6CisgICAgICAgIHJldHVybiBjbHMuZ3JhcGhfdHJhdmVyc2FsKE5vbmUsIE5vbmUsIEJ5dGVjb2RlKCkpLnlvdW5nZXN0RnJpZW5kc0FnZSgqYXJncykKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBjcmVhdGVkQXRMZWFzdChjbHMsICphcmdzKToKKyAgICAgICAgcmV0dXJuIGNscy5ncmFwaF90cmF2ZXJzYWwoTm9uZSwgTm9uZSwgQnl0ZWNvZGUoKSkuY3JlYXRlZEF0TGVhc3QoKmFyZ3MpCisKKworY2xhc3MgU29jaWFsVHJhdmVyc2FsU291cmNlKEdyYXBoVHJhdmVyc2FsU291cmNlKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBzdXBlcihTb2NpYWxUcmF2ZXJzYWxTb3VyY2UsIHNlbGYpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgc2VsZi5ncmFwaF90cmF2ZXJzYWwgPSBTb2NpYWxUcmF2ZXJzYWwKKworICAgIGRlZiBwZXJzb25zKHNlbGYsICphcmdzKToKKyAgICAgICAgdHJhdmVyc2FsID0gc2VsZi5nZXRfZ3JhcGhfdHJhdmVyc2FsKCkKKyAgICAgICAgdHJhdmVyc2FsLmJ5dGVjb2RlLmFkZF9zdGVwKCJWIikKKyAgICAgICAgdHJhdmVyc2FsLmJ5dGVjb2RlLmFkZF9zdGVwKCJoYXNMYWJlbCIsICJwZXJzb24iKQorCisgICAgICAgIGlmIGxlbihhcmdzKSA+IDA6CisgICAgICAgICAgICB0cmF2ZXJzYWwuYnl0ZWNvZGUuYWRkX3N0ZXAoImhhcyIsICJuYW1lIiwgUC53aXRoaW4oYXJncykpCisKKyAgICAgICAgcmV0dXJuIHRyYXZlcnNhbAorLS0tLQorCitOT1RFOiBUaGUgYEFub255bW91c1RyYXZlcnNhbGAgY2xhc3MgYWJvdmUgaXMganVzdCBhbiBhbGlhcyBmb3IgYCtfXytgIGFzIGluCitgK2Zyb20gZ3JlbWxpbl9weXRob24ucHJvY2Vzcy5ncmFwaF90cmF2ZXJzYWwgaW1wb3J0IF9fIGFzIEFub255bW91c1RyYXZlcnNhbCtgCisKK1VzaW5nIHRoZSBEU0wgaXMgc3RyYWlnaHRmb3J3YXJkIGFuZCBqdXN0IHJlcXVpcmVzIHRoYXQgdGhlIGdyYXBoIGluc3RhbmNlIGtub3cgdGhlIGBTb2NpYWxUcmF2ZXJzYWxTb3VyY2VgIHNob3VsZAorYmUgdXNlZDoKKworW3NvdXJjZSxweXRob25dCistLS0tCitzb2NpYWwgPSBHcmFwaCgpLnRyYXZlcnNhbChTb2NpYWxUcmF2ZXJzYWxTb3VyY2UpLndpdGhSZW1vdGUoRHJpdmVyUmVtb3RlQ29ubmVjdGlvbignd3M6Ly9sb2NhbGhvc3Q6ODE4Mi9ncmVtbGluJywnZycpKQorc29jaWFsLnBlcnNvbnMoIm1hcmtvIikua25vd3MoImpvc2giKQorc29jaWFsLnBlcnNvbnMoIm1hcmtvIikueW91bmdlc3RGcmllbmRzQWdlKCkKK3NvY2lhbC5wZXJzb25zKCkuZmlsdGVyKF9fLmNyZWF0ZWRBdExlYXN0KDIpKS5jb3VudCgpCistLS0tCisKKz09PSBTeW50YWN0aWMgU3VnYXIKKworUHl0aG9uIHN1cHBvcnRzIG1ldGEtcHJvZ3JhbW1pbmcgYW5kIG9wZXJhdG9yIG92ZXJsb2FkaW5nLiBUaGVyZSBhcmUgdGhyZWUgdXNlcyBvZiB0aGVzZSB0ZWNobmlxdWVzIGluIEdyZW1saW4tUHl0aG9uCit0aGF0IG1ha2VzIHRyYXZlcnNhbHMgYSBiaXQgbW9yZSBjb25jaXNlLgorCitbZ3JlbWxpbi1weXRob24sbW9kZXJuXQorLS0tLQorZy5WKCkuYm90aCgpWzE6M10udG9MaXN0KCkKK2cuVigpLmJvdGgoKVsxXS50b0xpc3QoKQorZy5WKCkuYm90aCgpLm5hbWUudG9MaXN0KCkKKy0tLS0KKworW1tncmVtbGluLXB5dGhvbi1kaWZmZXJlbmNlc11dCis9PT0gRGlmZmVyZW5jZXMKKworSW4gc2l0dWF0aW9ucyB3aGVyZSBQeXRob24gcmVzZXJ2ZWQgd29yZHMgYW5kIGdsb2JhbCBmdW5jdGlvbnMgb3ZlcmxhcCB3aXRoIHN0YW5kYXJkIEdyZW1saW4gc3RlcHMgYW5kIHRva2VucywgdGhvc2UKK2JpdHMgb2YgY29uZmxpY3RpbmcgR3JlbWxpbiBnZXQgYW4gdW5kZXJzY29yZSBhcHBlbmRlZCBhcyBhIHN1ZmZpeDoKKworKlN0ZXBzKiAtIDw8YW5kLXN0ZXAsYW5kXygpPj4sIDw8YXMtc3RlcCxhc18oKT4+LCA8PGZyb20tc3RlcCxmcm9tXygpPj4sIDw8aXMtc3RlcCxpc18oKT4+LCA8PGluLXN0ZXAsaW5fKCk+PiwKKzw8bm90LXN0ZXAsbm90XygpPj4sIDw8b3Itc3RlcCxvcl8oKT4+LCA8PHdpdGgtc3RlcCx3aXRoXygpPj4KKworKlRva2VucyogLSA8PGEtbm90ZS1vbi1zY29wZXMsU2NvcGUuZ2xvYmFsXz4+CisKID09PSBMaW1pdGF0aW9ucwogCiAqIFRyYXZlcnNhbHMgdGhhdCByZXR1cm4gYSBgU2V0YCAqbWlnaHQqIGJlIGNvZXJjZWQgdG8gYSBgTGlzdGAgaW4gUHl0aG9uLiBJbiB0aGUgY2FzZSBvZiBQeXRob24sIG51bWJlciBlcXVhbGl0eQpAQCAtMzI2LDI3ICsxMDEyLDI1IEBACiBpcyBkZXRlY3RlZCBkdXJpbmcgZGVzZXJpYWxpemF0aW9uLCB0aGUgYFNldGAgaXMgY29lcmNlZCB0byBhIGBMaXN0YCBzbyB0aGF0IHRyYXZlcnNhbHMgcmV0dXJuIGNvbnNpc3RlbnQKIHJlc3VsdHMgd2l0aGluIGEgY29sbGVjdGlvbiBhY3Jvc3MgZGlmZmVyZW50IGxhbmd1YWdlcy4gSWYgYSBgU2V0YCBpcyBuZWVkZWQgdGhlbiBjb252ZXJ0IGBMaXN0YCByZXN1bHRzCiB0byBgU2V0YCBtYW51YWxseS4KKyogR3JlbWxpbiBpcyBjYXBhYmxlIG9mIHJldHVybmluZyBgRGljdGlvbmFyeWAgcmVzdWx0cyB0aGF0IHVzZSBub24taGFzaGFibGUga2V5cyAoZS5nLiBEaWN0aW9uYXJ5IGFzIGEga2V5KSBhbmQgUHl0aG9uCitkb2VzIG5vdCBzdXBwb3J0IHRoYXQgYXQgYSBsYW5ndWFnZSBsZXZlbC4gR3JlbWxpbiB0aGF0IHJldHVybnMgc3VjaCByZXN1bHRzIHdpbGwgbmVlZCB0byBiZSByZS13cml0dGVuIHRvIGF2b2lkIHRoYXQuCiAKLT09PSBTdWJtaXQgR3JlbWxpbiBTY3JpcHRzCis9PT0gQXBwbGljYXRpb24gRXhhbXBsZXMKIAotQWRkaXRpb25hbGx5LCB5b3UgY2FuIGFsc28gc2VuZCBwYXJhbWV0cml6ZWQgR3JlbWxpbiBzY3JpcHRzIHRvIHRoZSBzZXJ2ZXIgYXMgc3RyaW5nczoKK1RoZSBUaW5rZXJQb3Agc291cmNlIGNvZGUgY29udGFpbnMgYSBzaW1wbGUgUHl0aG9uIHNjcmlwdCB0aGF0IHNob3dzIGEgYmFzaWMgZXhhbXBsZSBvZiBob3cgZ3JlbWxpbnB5dGhvbiB3b3Jrcy4gSXQKK2NhbiBiZSBmb3VuZCBpbiBHaXRIdWIgbGluazpodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL3RpbmtlcnBvcC90cmVlL3h4Lnl5Lnp6L2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi9leGFtcGxlLnB5W2hlcmVdCithbmQgaXMgZGVzaWduZWQgdG8gd29yayBiZXN0IHdpdGggYSBydW5uaW5nIDw8Z3JlbWxpbi1zZXJ2ZXIsR3JlbWxpbiBTZXJ2ZXI+PiBjb25maWd1cmVkIHdpdGggdGhlIGRlZmF1bHQKK2Bjb25mL2dyZW1saW4tc2VydmVyLnlhbWxgIGZpbGUgYXMgaW5jbHVkZWQgd2l0aCB0aGUgc3RhbmRhcmQgcmVsZWFzZSBwYWNrYWdpbmcuCiAKLVtzb3VyY2UscHl0aG9uXQorW3NvdXJjZSxzaGVsbF0KIC0tLS0KLWNsaWVudCA9IENsaWVudCgnd3M6Ly9sb2NhbGhvc3Q6ODE4Mi9ncmVtbGluJywgJ2cnKQotY2xpZW50LnN1Ym1pdCgneCArIHgnLCB7J3gnOiAyfSkuYWxsKCkucmVzdWx0KCkKK3BpcCBpbnN0YWxsIGdyZW1saW5weXRob24KK3BpcCBpbnN0YWxsIHRvcm5hZG8KK3B5dGhvbiBleGFtcGxlLnB5CiAtLS0tCiAKLUl0IGlzIGFsc28gcG9zc2libGUgdG8gaW5pdGlhbGl6ZSB0aGUgYENsaWVudGAgdG8gdXNlIDw8c2Vzc2lvbnMsc2Vzc2lvbnM+PjoKLQotW3NvdXJjZSxweXRob25dCi0tLS0tCi1jbGllbnQgPSBDbGllbnQoJ3dzOi8vbG9jYWxob3N0OjgxODIvZ3JlbWxpbicsICdnJywgc2Vzc2lvbj1zdHIodXVpZC51dWlkNCgpKSkKLS0tLS0KLQotV2l0aCB0aGlzIGNvbmZpZ3VyYXRpb24sIHRoZSBzdGF0ZSBvZiB2YXJpYWJsZXMgd2l0aGluIHNjcmlwdHMgYXJlIHByZXNlcnZlZCBiZXR3ZWVuIHJlcXVlc3RzLgotCi1bW2dyZW1saW4tRG90TmV0XV0KK2FuY2hvcjpncmVtbGluLURvdE5ldFtdCitbW2dyZW1saW4tZG90bmV0XV0KID09IEdyZW1saW4uTmV0CiAKIGltYWdlOmdyZW1saW4tZG90bmV0LWxvZ28ucG5nW3dpZHRoPTM3MSxmbG9hdD1yaWdodF0gQXBhY2hlIFRpbmtlclBvcCdzIEdyZW1saW4uTmV0IGltcGxlbWVudHMgR3JlbWxpbiB3aXRoaW4gdGhlIEMjCkBAIC0zNTksNjMgKzEwNDMsMzAgQEAKIFtzb3VyY2UscG93ZXJzaGVsbF0KIG51Z2V0IGluc3RhbGwgR3JlbWxpbi5OZXQKIAotSW4gR3JlbWxpbi5OZXQgdGhlcmUgZXhpc3RzIGBHcmFwaFRyYXZlcnNhbFNvdXJjZWAsIGBHcmFwaFRyYXZlcnNhbGAsIGFuZCBgX19gIHdoaWNoIG1pcnJvciB0aGUgcmVzcGVjdGl2ZSBjbGFzc2VzCi1pbiBHcmVtbGluLUphdmEuIFRoZSBgR3JhcGhUcmF2ZXJzYWxTb3VyY2VgIHJlcXVpcmVzIGEgZHJpdmVyIGluIG9yZGVyIHRvIGNvbW11bmljYXRlIHdpdGggPDxncmVtbGluLXNlcnZlcixHcmVtbGluU2VydmVyPj4gKG9yIGFueQotUmVtb3RlQ29ubmVjdGlvbi1lbmFibGVkIHNlcnZlcikuCis9PT0gQ29ubmVjdGluZwogCi1UaGUgYEdyZW1saW4uTmV0LkRyaXZlci5SZW1vdGUuRHJpdmVyUmVtb3RlQ29ubmVjdGlvbmAgaXMgcHJvdmlkZWQgYXMgcGFydCBvZiBBcGFjaGUgVGlua2VyUG9w4oCZcyBHcmVtbGluLk5ldC4KLQotSU1QT1JUQU5UOiBGb3IgZGV2ZWxvcGVycyB3aXNoaW5nIHRvIHByb3ZpZGUgYW5vdGhlciBkcml2ZXIgaW1wbGVtZW50YXRpb24sIGJlIHN1cmUgdG8gaW1wbGVtZW50IGBJUmVtb3RlQ29ubmVjdGlvbmAgaW4KLWBHcmVtbGluLk5ldC5Qcm9jZXNzLlJlbW90ZWAgc28gaXQgY2FuIHRoZW4gYmUgdXNlZCBieSBHcmVtbGluLk5ldOKAmXMgYEdyYXBoVHJhdmVyc2FsYC4KLQotV2hlbiBHcmVtbGluIFNlcnZlciBpcyBydW5uaW5nLCBHcmVtbGluLk5ldCBjYW4gY29tbXVuaWNhdGUgd2l0aCBHcmVtbGluIFNlcnZlciBieSBzZW5kaW5nIHRyYXZlcnNhbHMgc2VyaWFsaXplZCBhcyBgQnl0ZWNvZGVgLgotCi1JTVBPUlRBTlQ6IEdyZW1saW4uTmV0IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggR3JhcGhTT04gMS4wLgotCi1BIHRyYXZlcnNhbCBzb3VyY2UgY2FuIGJlIHNwYXduZWQgYW5vbnltb3VzbHkgdXNpbmcgYW4gYEFub255bW91c1RyYXZlcnNhbFNvdXJjZWAgd2hpY2ggY2FuIGJlIHN0YXRpY2FsbHkgaW1wb3J0ZWQgYXMKLWZvbGxvd3M6CitUaGUgcGF0dGVybiBmb3IgY29ubmVjdGluZyBpcyBkZXNjcmliZWQgaW4gPDxjb25uZWN0aW5nLWdyZW1saW4sQ29ubmVjdGluZyBHcmVtbGluPj4gYW5kIGl0IGJhc2ljYWxseSBkaXN0aWxscyBkb3duIHRvCitjcmVhdGluZyBhIGBHcmFwaFRyYXZlcnNhbFNvdXJjZWAuIEEgYEdyYXBoVHJhdmVyc2FsU291cmNlYCBpcyBjcmVhdGVkIGZyb20gdGhlIGBBbm9ueW1vdXNUcmF2ZXJzYWxTb3VyY2UudHJhdmVyc2FsKClgCittZXRob2Qgd2hlcmUgdGhlICJnIiBwcm92aWRlZCB0byB0aGUgYERyaXZlclJlbW90ZUNvbm5lY3Rpb25gIGNvcnJlc3BvbmRzIHRvIHRoZSBuYW1lIG9mIGEgYEdyYXBoVHJhdmVyc2FsU291cmNlYCBvbgordGhlIHJlbW90ZSBlbmQuCiAKIFtzb3VyY2UsY3NoYXJwXQogLS0tLQotdXNpbmcgc3RhdGljIEdyZW1saW4uTmV0LlByb2Nlc3MuVHJhdmVyc2FsLkFub255bW91c1RyYXZlcnNhbFNvdXJjZTsKK2luY2x1ZGU6Oi4uLy4uLy4uL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L0RvY3MvUmVmZXJlbmNlL0dyZW1saW5WYXJpYW50c1Rlc3RzLmNzW3RhZ3M9Y29ubmVjdGluZ10KIC0tLS0KIAotd2hpY2ggd2lsbCBleHBvc2UgYSBzdGF0aWMgYFRyYXZlcnNhbCgpYCBtZXRob2Qgd2hpY2ggY2FuIGJlIHVzZWQgYXMgZm9sbG93cyB0byB5aWVsZCBhIGBHcmFwaFRyYXZlcnNhbFNvdXJjZWAgYXNzaWduZWQKLXRvICJnIiBhbmQgY29uZmlndXJlZCB0byBjb25uZWN0IHRvIEdyZW1saW4gU2VydmVyIGF0ICJsb2NhbGhvc3Q6ODE4MiI6Cis9PT0gQ29tbW9uIEltcG9ydHMKKworVGhlcmUgYXJlIGEgbnVtYmVyIG9mIGNsYXNzZXMsIGZ1bmN0aW9ucyBhbmQgdG9rZW5zIHRoYXQgYXJlIHR5cGljYWxseSB1c2VkIHdpdGggR3JlbWxpbi4gVGhlIGZvbGxvd2luZyBpbXBvcnRzCitwcm92aWRlIG1vc3Qgb2YgdGhlIHR5cGljYWwgZnVuY3Rpb25hbGl0eSByZXF1aXJlZCB0byB1c2UgR3JlbWxpbjoKIAogW3NvdXJjZSxjc2hhcnBdCiAtLS0tCi12YXIgcmVtb3RlQ29ubmVjdGlvbiA9IG5ldyBEcml2ZXJSZW1vdGVDb25uZWN0aW9uKG5ldyBHcmVtbGluQ2xpZW50KG5ldyBHcmVtbGluU2VydmVyKCJsb2NhbGhvc3QiLCA4MTgyKSkpOwotdmFyIGcgPSBUcmF2ZXJzYWwoKS5XaXRoUmVtb3RlKHJlbW90ZUNvbm5lY3Rpb24pOworaW5jbHVkZTo6Li4vLi4vLi4vZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvRG9jcy9SZWZlcmVuY2UvR3JlbWxpblZhcmlhbnRzVGVzdHMuY3NbdGFncz1jb21tb25JbXBvcnRzXQogLS0tLQogCi1XaGVuIGEgdHJhdmVyc2FsIGZyb20gdGhlIGBHcmFwaFRyYXZlcnNhbFNvdXJjZWAgaXMgaXRlcmF0ZWQsIHRoZSB0cmF2ZXJzYWzigJlzIGBCeXRlY29kZWAgaXMgc2VudCBvdmVyIHRoZSB3aXJlIHZpYSB0aGUgcmVnaXN0ZXJlZAotYElSZW1vdGVDb25uZWN0aW9uYC4gVGhlIGJ5dGVjb2RlIGlzIHVzZWQgdG8gY29uc3RydWN0IHRoZSBlcXVpdmFsZW50IHRyYXZlcnNhbCBhdCB0aGUgcmVtb3RlIHRyYXZlcnNhbCBzb3VyY2UuCi1Nb3Jlb3ZlciwgdHlwaWNhbGx5IHRoZSBieXRlY29kZSBpcyBhbmFseXplZCB0byBkZXRlcm1pbmUgd2hpY2ggbGFuZ3VhZ2UgdGhlIGJ5dGVjb2RlIHNob3VsZCBiZSB0cmFuc2xhdGVkIHRvLiBJZiB0aGUgdHJhdmVyc2FsCi1kb2VzIG5vdCBjb250YWluIGxhbWJkYXMsIHRoZSByZW1vdGUgbG9jYXRpb24gKGUuZy4gR3JlbWxpbiBTZXJ2ZXIpIHdpbGwgdHlwaWNhbGx5Ci11c2UgR3JlbWxpbi1KYXZhLiBJZiBpdCBoYXMgbGFtYmRhcyB3cml0dGVuIGluIEdyb292eSwgaXQgd2lsbCB1c2UgR3JlbWxpbi1Hcm9vdnkgKGUuZy4gYEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmVgKS4KLUxpa2V3aXNlLCBpZiBpdCBoYXMgbGFtYmRhcyByZXByZXNlbnRlZCBpbiBQeXRob24sIGl0IHdpbGwgdXNlIEdyZW1saW4tUHl0aG9uIChlLmcuIGBHcmVtbGluSnl0aG9uU2NyaXB0RW5naW5lYCkuCi0KLUlNUE9SVEFOVDogR3JlbWxpbi5OZXTigJlzIGBJVHJhdmVyc2FsYCBpbnRlcmZhY2Ugc3VwcG9ydHMgdGhlIHN0YW5kYXJkIEdyZW1saW4gbWV0aG9kcyBzdWNoIGFzIGBOZXh0KClgLCBgTmV4dFRyYXZlcnNlcigpYCwgYFRvU2V0KClgLAotYFRvTGlzdCgpYCwgZXRjLiBTdWNoICJ0ZXJtaW5hbCIgbWV0aG9kcyB0cmlnZ2VyIHRoZSBldmFsdWF0aW9uIG9mIHRoZSB0cmF2ZXJzYWwuCi0KLT09PSBSZW1vdGVDb25uZWN0aW9uIFN1Ym1pc3Npb24KLQotVmVyeSBzaW1pbGFyIHRvIEdyZW1saW4tUHl0aG9uIGFuZCBHcmVtbGluLUphdmEsIHRoZXJlIGFyZSB2YXJpb3VzIHdheXMgdG8gc3VibWl0IGEgdHJhdmVyc2FsIHRvIGEgYElSZW1vdGVDb25uZWN0aW9uYCB1c2luZwotdGVybWluYWwvYWN0aW9uIG1ldGhvZHMgb2ZmIG9mIGBJVHJhdmVyc2FsYC4KLQotKiBgSVRyYXZlcnNhbC5OZXh0KClgCi0qIGBJVHJhdmVyc2FsLk5leHRUcmF2ZXJzZXIoKWAKLSogYElUcmF2ZXJzYWwuVG9MaXN0KClgCi0qIGBJVHJhdmVyc2FsLlRvU2V0KClgCi0qIGBJVHJhdmVyc2FsLkl0ZXJhdGUoKWAKLQogPT09IENvbmZpZ3VyYXRpb24KIAotVGhlIGZvbGxvd2luZyBzZWN0aW9ucyBkZXNjcmliZSBob3cgdGhlIEdyZW1saW4uTmV0IGRyaXZlciBjYW4gYmUgY29uZmlndXJlZC4KLQotPT09PSBHcmVtbGluIFNlcnZlcgotCiBUaGUgY29ubmVjdGlvbiBwcm9wZXJ0aWVzIGZvciB0aGUgR3JlbWxpbi5OZXQgZHJpdmVyIGNhbiBiZSBwYXNzZWQgdG8gdGhlIGBHcmVtbGluU2VydmVyYCBpbnN0YW5jZSBhcyBrZXl3b3JkIGFyZ3VtZW50czoKIAogW3dpZHRoPSIxMDAlIixjb2xzPSIzLDEwLF4yIixvcHRpb25zPSJoZWFkZXIiXQpAQCAtNDI4LDU5ICsxMDc5LDMwIEBACiB8cGFzc3dvcmQgfFRoZSBwYXNzd29yZCB0byBzdWJtaXQgb24gcmVxdWVzdHMgdGhhdCByZXF1aXJlIGF1dGhlbnRpY2F0aW9uLiB8X25vbmVfCiB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLT09PT0gR3JhcGhTT04gU2VyaWFsaXphdGlvbgorPT09PSBDb25uZWN0aW9uIFBvb2wKKworSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBjb25maWd1cmUgdGhlIGBDb25uZWN0aW9uUG9vbGAgb2YgdGhlIEdyZW1saW4uTmV0IGRyaXZlci4KK1RoZXNlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBjYW4gYmUgc2V0IGFzIHByb3BlcnRpZXMKK29uIHRoZSBgQ29ubmVjdGlvblBvb2xTZXR0aW5nc2AgaW5zdGFuY2UgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIHRoZSBgR3JlbWxpbkNsaWVudGA6CisKK1t3aWR0aD0iMTAwJSIsY29scz0iMywxMCxeMiIsb3B0aW9ucz0iaGVhZGVyIl0KK3w9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK3xLZXkgfERlc2NyaXB0aW9uIHxEZWZhdWx0Cit8UG9vbFNpemUgfFRoZSBzaXplIG9mIHRoZSBjb25uZWN0aW9uIHBvb2wuIHw0Cit8TWF4SW5Qcm9jZXNzUGVyQ29ubmVjdGlvbiB8VGhlIG1heGltdW0gbnVtYmVyIG9mIGluLWZsaWdodCByZXF1ZXN0cyB0aGF0IGNhbiBvY2N1ciBvbiBhIGNvbm5lY3Rpb24uIHwzMgorfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitBIGBOb0Nvbm5lY3Rpb25BdmFpbGFibGVFeGNlcHRpb25gIGlzIHRocm93biBpZiBhbGwgY29ubmVjdGlvbnMgaGF2ZSByZWFjaGVkIHRoZSBgTWF4SW5Qcm9jZXNzUGVyQ29ubmVjdGlvbmAgbGltaXQKK3doZW4gYSBuZXcgcmVxdWVzdCBjb21lcyBpbi4KKworPT09PSBTZXJpYWxpemF0aW9uCiAKIFRoZSBHcmVtbGluLk5ldCBkcml2ZXIgdXNlcyBieSBkZWZhdWx0IEdyYXBoU09OIDMuMCBidXQgaXQgaXMgYWxzbyBwb3NzaWJsZSB0byB1c2UgR3JhcGhTT04gMi4wIHdoaWNoIGNhbiBiZSBuZWNlc3NhcnkKIHdoZW4gdGhlIHNlcnZlciBkb2VzIG5vdCBzdXBwb3J0IEdyYXBoU09OIDMuMCB5ZXQ6CiAKIFtzb3VyY2UsY3NoYXJwXQogLS0tLQotdmFyIGNsaWVudCA9IG5ldyBHcmVtbGluQ2xpZW50KG5ldyBHcmVtbGluU2VydmVyKCJsb2NhbGhvc3QiLCA4MTgyKSwgbmV3IEdyYXBoU09OMlJlYWRlcigpLAotICAgIG5ldyBHcmFwaFNPTjJXcml0ZXIoKSwgR3JlbWxpbkNsaWVudC5HcmFwaFNPTjJNaW1lVHlwZSk7Ci0tLS0tCi0KLT09PSBTdGF0aWMgRW51bXMgYW5kIE1ldGhvZHMKLQotR3JlbWxpbiBoYXMgdmFyaW91cyB0b2tlbnMgKGUuZy4gYFRgLCBgUGAsIGBPcmRlcmAsIGBPcGVyYXRvcmAsIGV0Yy4pIHRoYXQgYXJlIHJlcHJlc2VudGVkIGluIEdyZW1saW4uTmV0IGFzIGNsYXNzZXMuCi0KLVRoZXNlIGNhbiBiZSB1c2VkIGFuYWxvZ291c2x5IHRvIGhvdyB0aGV5IGFyZSB1c2VkIGluIEdyZW1saW4tSmF2YS4KLQotW3NvdXJjZSxjc2hhcnBdCi1nLlYoKS5IYXNMYWJlbCgicGVyc29uIikuSGFzKCJhZ2UiLFAuR3QoMzApKS5PcmRlcigpLkJ5KCJhZ2UiLE9yZGVyLmRlc2MpLlRvTGlzdCgpCi0KLU1vcmVvdmVyLCB0aGUgY2xhc3MgcHJlZml4ZXMgY2FuIGJlIG9taXR0ZWQgd2l0aCBhIGB1c2luZyBzdGF0aWNgLgotCi1bc291cmNlLGNzaGFycF0KLS0tLS0KLXVzaW5nIHN0YXRpYyBHcmVtbGluLk5ldC5Qcm9jZXNzLlRyYXZlcnNhbC5QOwotdXNpbmcgc3RhdGljIEdyZW1saW4uTmV0LlByb2Nlc3MuVHJhdmVyc2FsLk9yZGVyOwotLS0tLQotCi1UaGVuIGl0IGlzIHBvc3NpYmxlIHRvIHJlcHJlc2VudCB0aGUgYWJvdmUgdHJhdmVyc2FsIGFzIGJlbG93LgotCi1bc291cmNlLGNzaGFycF0KLWcuVigpLkhhc0xhYmVsKCJwZXJzb24iKS5IYXMoImFnZSIsR3QoMzApKS5PcmRlcigpLkJ5KCJhZ2UiLGRlc2MpLlRvTGlzdCgpCi0KLUZpbmFsbHksIHdpdGggdXNpbmcgc3RhdGljIGArX18rYCwgYW5vbnltb3VzIHRyYXZlcnNhbHMgbGlrZSBgK19fLk91dCgpK2AgY2FuIGJlIGV4cHJlc3NlZCBhcyBiZWxvdy4gVGhhdCBpcywgd2l0aG91dCB0aGUgYGArX18uK2BgLXByZWZpeC4KLQotW3NvdXJjZSxjc2hhcnBdCi1nLlYoKS5SZXBlYXQoT3V0KCkpLlRpbWVzKDIpLlZhbHVlcygibmFtZSIpLkZvbGQoKS5Ub0xpc3QoKQotCi09PT0gQmluZGluZ3MKLQotV2hlbiBhIHRyYXZlcnNhbCBieXRlY29kZSBpcyBzZW50IG92ZXIgYSBgSVJlbW90ZUNvbm5lY3Rpb25gIChlLmcuIEdyZW1saW4gU2VydmVyKSwgaXQgd2lsbCBiZSB0cmFuc2xhdGVkLCBjb21waWxlZCwKLWFuZCB0aGVuIGV4ZWN1dGVkLiBJZiB0aGUgc2FtZSB0cmF2ZXJzYWwgaXMgc2VudCBhZ2FpbiwgdHJhbnNsYXRpb24gYW5kIGNvbXBpbGF0aW9uIGNhbiBiZSBza2lwcGVkIGFzIHRoZSBwcmV2aW91c2x5Ci1jb21waWxlZCB2ZXJzaW9uIHNob3VsZCBiZSBjYWNoZWQuIE1hbnkgdHJhdmVyc2FscyBhcmUgdW5pcXVlIHVwIHRvIHNvbWUgcGFyYW1ldGVyaXphdGlvbi4gRm9yIGluc3RhbmNlLAotYGcuVigxKS5PdXQoImNyZWF0ZWQiKS5WYWx1ZXMoIm5hbWUiKWAgaXMgY29uc2lkZXJlZCBkaWZmZXJlbnQgZnJvbSBgZy5WKDQpLk91dCgiY3JlYXRlZCIpLlZhbHVlcygiTmFtZSIpYAotYXMgdGhleSBoYXZlIGRpZmZlcmVudCBzY3JpcHQgInN0cmluZyIgcmVwcmVzZW50YXRpb25zLiBIb3dldmVyLCBgZy5WKHgpLk91dCgiY3JlYXRlZCIpLlZhbHVlcygibmFtZSIpYCB3aXRoIGJpbmRpbmdzIG9mCi1ge3ggOiAxfWAgYW5kIGB7eCA6IDR9YCBhcmUgY29uc2lkZXJlZCB0aGUgc2FtZS4gSWYgYSB0cmF2ZXJzYWwgaXMgZ29pbmcgdG8gYmUgZXhlY3V0ZWQgcmVwZWF0ZWRseSwgYnV0IHdpdGggZGlmZmVyZW50Ci1wYXJhbWV0ZXJzLCB0aGVuIGJpbmRpbmdzIHNob3VsZCBiZSB1c2VkLiBJbiBHcmVtbGluLk5ldCwgYmluZGluZ3MgYXJlIG9iamVjdHMgdGhhdCBjYW4gYmUgY3JlYXRlZCBhcyBmb2xsb3dzLgotCi1bc291cmNlLGNzaGFycF0KLS0tLS0KLXZhciBiID0gbmV3IEJpbmRpbmdzKCk7Ci1nLlYoYi5PZigiaWQiLCAxKSkuT3V0KCJjcmVhdGVkIikuVmFsdWVzKCJuYW1lIikudG9MaXN0KCkKLWcuVihiLk9mKCJpZCIsIDQpKS5PdXQoImNyZWF0ZWQiKS5WYWx1ZXMoIm5hbWUiKS50b0xpc3QoKQoraW5jbHVkZTo6Li4vLi4vLi4vZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvRG9jcy9SZWZlcmVuY2UvR3JlbWxpblZhcmlhbnRzVGVzdHMuY3NbdGFncz1zZXJpYWxpemF0aW9uXQogLS0tLQogCiA9PT0gVHJhdmVyc2FsIFN0cmF0ZWdpZXMKQEAgLTQ5MCwyMiArMTExMiw3IEBACiAKIFtzb3VyY2UsY3NoYXJwXQogLS0tLQotZyA9IGcuV2l0aFN0cmF0ZWdpZXMobmV3IFN1YmdyYXBoU3RyYXRlZ3kodmVydGV4Q3JpdGVyaW9uOiBIYXNMYWJlbCgicGVyc29uIiksCi0gICAgZWRnZUNyaXRlcmlvbjogSGFzKCJ3ZWlnaHQiLCBHdCgwLjUpKSkpOwotdmFyIG5hbWVzID0gZy5WKCkuVmFsdWVzKCJuYW1lIikuVG9MaXN0KCk7ICAvLyBuYW1lczogW21hcmtvLCB2YWRhcywgam9zaCwgcGV0ZXJdCi0KLWcgPSBnLldpdGhvdXRTdHJhdGVnaWVzKHR5cGVvZihTdWJncmFwaFN0cmF0ZWd5KSk7Ci1uYW1lcyA9IGcuVigpLlZhbHVlcygibmFtZSIpLlRvTGlzdCgpOyAvLyBuYW1lczogW21hcmtvLCB2YWRhcywgbG9wLCBqb3NoLCByaXBwbGUsIHBldGVyXQotCi12YXIgZWRnZVZhbHVlTWFwcyA9IGcuVigpLk91dEUoKS5WYWx1ZU1hcCh0cnVlKS5Ub0xpc3QoKTsKLS8vIGVkZ2VWYWx1ZU1hcHM6IFtbbGFiZWw6Y3JlYXRlZCwgaWQ6OSwgd2VpZ2h0OjAuNF0sIFtsYWJlbDprbm93cywgaWQ6Nywgd2VpZ2h0OjAuNV0sIFtsYWJlbDprbm93cywgaWQ6OCwgd2VpZ2h0OjEuMF0sCi0vLyAgICAgW2xhYmVsOmNyZWF0ZWQsIGlkOjEwLCB3ZWlnaHQ6MS4wXSwgW2xhYmVsOmNyZWF0ZWQsIGlkOjExLCB3ZWlnaHQ6MC40XSwgW2xhYmVsOmNyZWF0ZWQsIGlkOjEyLCB3ZWlnaHQ6MC4yXV0KLQotZyA9IGcuV2l0aENvbXB1dGVyKHdvcmtlcnM6IDIsIHZlcnRpY2VzOiBIYXMoIm5hbWUiLCAibWFya28iKSk7Ci1uYW1lcyA9IGcuVigpLlZhbHVlcygibmFtZSIpLlRvTGlzdCgpOyAgLy8gbmFtZXM6IFttYXJrb10KLQotZWRnZVZhbHVlTWFwcyA9IGcuVigpLk91dEUoKS5WYWx1ZU1hcCh0cnVlKS5Ub0xpc3QoKTsKLS8vIGVkZ2VWYWx1ZU1hcHM6IFtbbGFiZWw6Y3JlYXRlZCwgaWQ6OSwgd2VpZ2h0OjAuNF0sIFtsYWJlbDprbm93cywgaWQ6Nywgd2VpZ2h0OjAuNV0sIFtsYWJlbDprbm93cywgaWQ6OCwgd2VpZ2h0OjEuMF1dCitpbmNsdWRlOjouLi8uLi8uLi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Eb2NzL1JlZmVyZW5jZS9HcmVtbGluVmFyaWFudHNUZXN0cy5jc1t0YWdzPXRyYXZlcnNhbFN0cmF0ZWdpZXNdCiAtLS0tCiAKIE5PVEU6IE1hbnkgb2YgdGhlIFRyYXZlcnNhbFN0cmF0ZWd5IGNsYXNzZXMgaW4gR3JlbWxpbi5OZXQgYXJlIHByb3hpZXMgdG8gdGhlIHJlc3BlY3RpdmUgc3RyYXRlZ3kgb24gQXBhY2hlIFRpbmtlclBvcOKAmXMKQEAgLTUzNSwxOSArMTE0MiwyNCBAQAogaW5zdGFuY2UgY3JlYXRlZCwgaXQgd2lsbCBoZWxwIHRvIGZ1bGx5IGRlZmluZSB0aGUgY2xvc3VyZSBpbiB0aGUgbGFtYmRhIGV4cHJlc3Npb24gLSBzbyByYXRoZXIgdGhhbgogYExhbWJkYS5Hcm9vdnkoIml0LmdldCgpLnZhbHVlKCduYW1lJykpYCwgcHJlZmVyIGBMYW1iZGEuR3Jvb3Z5KCJ4IC0+IHguZ2V0KCkudmFsdWUoJ25hbWUnKSlgLgogCi09PT0gU3VibWl0IEdyZW1saW4gU2NyaXB0cworPT09IFN1Ym1pdHRpbmcgU2NyaXB0cwogCi1BZGRpdGlvbmFsbHksIHlvdSBjYW4gYWxzbyBzZW5kIHBhcmFtZXRyaXplZCBHcmVtbGluIHNjcmlwdHMgdG8gdGhlIHNlcnZlciBhcyBzdHJpbmdzOgorV0FSTklORzogVGlua2VyUG9wIGRvZXMgbm90IHJlY29tbWVuZCBzdWJtaXR0aW5nIHNjcmlwdC1iYXNlZCByZXF1ZXN0cyBhbmQgZ2VuZXJhbGx5IGNvbnRpbnVlcyB0byBzdXBwb3J0IHRoaXMgZmVhdHVyZQorZm9yIGxlZ2FjeSByZWFzb25zIGFuZCBjb3JuZXIgdXNlIGNhc2VzIHdoaWNoIGFyZSBzdGlsbCBub3QgY29tcGxldGVseSBhZGRyZXNzZWQgYnkgdGhlIEdyZW1saW4gbGFuZ3VhZ2UuIFBsZWFzZQorY29uc2lkZXIgdXNpbmcgYnl0ZWNvZGUtYmFzZWQgcmVxdWVzdHMgaW5zdGVhZCB3aGVuIHBvc3NpYmxlLgorCitHcmVtbGluIHNjcmlwdHMgYXJlIHNlbnQgdG8gdGhlIHNlcnZlciBmcm9tIGEgYElHcmVtbGluQ2xpZW50YCBpbnN0YW5jZS4gIEEgYElHcmVtbGluQ2xpZW50YCBpcyBjcmVhdGVkIGFzIGZvbGxvd3M6CiAKIFtzb3VyY2UsY3NoYXJwXQogLS0tLQotdmFyIGdyZW1saW5TZXJ2ZXIgPSBuZXcgR3JlbWxpblNlcnZlcigibG9jYWxob3N0IiwgODE4Mik7Ci11c2luZyAodmFyIGdyZW1saW5DbGllbnQgPSBuZXcgR3JlbWxpbkNsaWVudChncmVtbGluU2VydmVyKSkKLXsKLSAgICB2YXIgYmluZGluZ3MgPSBuZXcgRGljdGlvbmFyeTxzdHJpbmcsIG9iamVjdD4ge3siYSIsIGF9LCB7ImIiLCBifX07Ci0gICAgdmFyIHJlc3BvbnNlID0KLSAgICAgICAgYXdhaXQgZ3JlbWxpbkNsaWVudC5TdWJtaXRXaXRoU2luZ2xlUmVzdWx0QXN5bmM8aW50PigiYSArIGIiLCBiaW5kaW5ncyk7Ci19CitpbmNsdWRlOjouLi8uLi8uLi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Eb2NzL1JlZmVyZW5jZS9HcmVtbGluVmFyaWFudHNUZXN0cy5jc1t0YWdzPXN1Ym1pdHRpbmdTY3JpcHRzXQorLS0tLQorCitJZiB0aGUgcmVtb3RlIHN5c3RlbSBoYXMgYXV0aGVudGljYXRpb24gYW5kIFNTTCBlbmFibGVkLCB0aGVuIHRoZSBgR3JlbWxpblNlcnZlcmAgb2JqZWN0IGNhbiBiZSBjb25maWd1cmVkIGFzIGZvbGxvd3M6CisKK1tzb3VyY2UsY3NoYXJwXQorLS0tLQoraW5jbHVkZTo6Li4vLi4vLi4vZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvRG9jcy9SZWZlcmVuY2UvR3JlbWxpblZhcmlhbnRzVGVzdHMuY3NbdGFncz1zdWJtaXR0aW5nU2NyaXB0c1dpdGhBdXRoZW50aWNhdGlvbl0KIC0tLS0KIAogSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBpbml0aWFsaXplIHRoZSBgQ2xpZW50YCB0byB1c2UgPDxzZXNzaW9ucyxzZXNzaW9ucz4+OgpAQCAtNTU4LDcgKzExNzAsNjEgQEAKIHZhciBjbGllbnQgPSBuZXcgR3JlbWxpbkNsaWVudChncmVtbGluU2VydmVyLCBzZXNzaW9uSWQ6IEd1aWQuTmV3R3VpZCgpLlRvU3RyaW5nKCkpKQogLS0tLQogCi1XaXRoIHRoaXMgY29uZmlndXJhdGlvbiwgdGhlIHN0YXRlIG9mIHZhcmlhYmxlcyB3aXRoaW4gc2NyaXB0cyBhcmUgcHJlc2VydmVkIGJldHdlZW4gcmVxdWVzdHMuCitbW2dyZW1saW4tbmV0LWRzbF1dCis9PT0gRG9tYWluIFNwZWNpZmljIExhbmd1YWdlcworCitEZXZlbG9waW5nIGEgPDxkc2wsRG9tYWluIFNwZWNpZmljIExhbmd1YWdlPj4gKERTTCkgZm9yIC5OZXQgaXMgbW9zdCBlYXNpbHkgaW1wbGVtZW50ZWQgdXNpbmcKK2xpbms6aHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvZG90bmV0L2NzaGFycC9wcm9ncmFtbWluZy1ndWlkZS9jbGFzc2VzLWFuZC1zdHJ1Y3RzL2V4dGVuc2lvbi1tZXRob2RzW0V4dGVuc2lvbiBNZXRob2RzXQorYXMgdGhleSBkb24ndCByZXF1aXJlIGRpcmVjdCBleHRlbnNpb24gb2YgY2xhc3NlcyBpbiB0aGUgVGlua2VyUG9wIGhpZXJhcmNoeS4gRXh0ZW5zaW9uIE1ldGhvZCBjbGFzc2VzIHNpbXBseSBuZWVkIHRvCitiZSBjb25zdHJ1Y3RlZCBmb3IgdGhlIGBHcmFwaFRyYXZlcnNhbGAgYW5kIHRoZSBgR3JhcGhUcmF2ZXJzYWxTb3VyY2VgLiBVbmZvcnR1bmF0ZWx5LCBhbm9ueW1vdXMgdHJhdmVyc2FscyAoc3Bhd25lZAorZnJvbSBgK19fK2ApIGNhbid0IHVzZSB0aGUgRXh0ZW5zaW9uIE1ldGhvZCBhcHByb2FjaCBhcyB0aGV5IGRvIG5vdCB3b3JrIGZvciBzdGF0aWMgY2xhc3NlcyBhbmQgc3RhdGljIGNsYXNzZXMgY2FuJ3QgYmUKK2V4dGVuZGVkLiBUaGUgb25seSBvcHRpb24gaXMgdG8gcmUtaW1wbGVtZW50IHRoZSBtZXRob2RzIG9mIGArX18rYCBhcyBhIHdyYXBwZXIgaW4gdGhlIGFub255bW91cyB0cmF2ZXJzYWwgZm9yIHRoZSBEU0wKK29yIHRvIHNpbXBseSBjcmVhdGUgYSBzdGF0aWMgY2xhc3MgZm9yIHRoZSBEU0wgYW5kIHVzZSB0aGUgdHdvIGFub255bW91cyB0cmF2ZXJzYWxzIGNyZWF0b3JzIGluZGVwZW5kZW50bHkuIFRoZQorZm9sbG93aW5nIGV4YW1wbGUgdXNlcyB0aGUgbGF0dGVyIGFwcHJvYWNoIGFzIGl0IHNhdmVzIGEgbG90IG9mIGJvaWxlcnBsYXRlIGNvZGUgd2l0aCB0aGUgbWlub3IgYW5ub3lhbmNlIG9mIGhhdmluZyBhCitzZWNvbmQgc3RhdGljIGNsYXNzIHRvIGRlYWwgd2l0aCB3aGVuIHdyaXRpbmcgdHJhdmVyc2FscyByYXRoZXIgdGhhbiBqdXN0IGNhbGxpbmcgYCtfXytgIGZvciBldmVyeXRoaW5nLgorCitbc291cmNlLGNzaGFycF0KKy0tLS0KK2luY2x1ZGU6Oi4uLy4uLy4uL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L0RvY3MvUmVmZXJlbmNlL0dyZW1saW5WYXJpYW50c0RzbC5jc1t0YWdzPWRzbF0KKy0tLS0KKworTm90ZSB0aGUgY3JlYXRpb24gb2YgYF9fU29jaWFsYCBhcyB0aGUgU29jaWFsIERTTCdzICJleHRlbnNpb24iIHRvIHRoZSBhdmFpbGFibGUgd2F5cyBpbiB3aGljaCB0byBzcGF3biBhbm9ueW1vdXMKK3RyYXZlcnNhbHMuIFRoZSB1c2Ugb2YgdGhlIGRvdWJsZSB1bmRlcnNjb3JlIHByZWZpeCBpbiB0aGUgbmFtZSBpcyBqdXN0IGEgY29udmVudGlvbiB0byBjb25zaWRlciB1c2luZyBhbmQgaXMgbm90IGEKK3JlcXVpcmVtZW50LiBUbyB1c2UgdGhlIERTTCwgYnJpbmcgaXQgaW50byBzY29wZSB3aXRoIHRoZSBgdXNpbmdgIGRpcmVjdGl2ZToKKworW3NvdXJjZSxjc2hhcnBdCistLS0tCitpbmNsdWRlOjouLi8uLi8uLi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Eb2NzL1JlZmVyZW5jZS9HcmVtbGluVmFyaWFudHNEc2xUZXN0cy5jc1t0YWdzPWRzbFVzaW5nXQorLS0tLQorCithbmQgdGhlbiBpdCBjYW4gYmUgY2FsbGVkIGZyb20gdGhlIGFwcGxpY2F0aW9uIGFzIGZvbGxvd3M6CisKK1tzb3VyY2UsY3NoYXJwXQorLS0tLQoraW5jbHVkZTo6Li4vLi4vLi4vZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvRG9jcy9SZWZlcmVuY2UvR3JlbWxpblZhcmlhbnRzRHNsVGVzdHMuY3NbdGFncz1kc2xFeGFtcGxlc10KKy0tLS0KKworYW5jaG9yOmdyZW1saW4tZG90bmV0LXRlbXBsYXRlW10KK1tbZG90bmV0LWFwcGxpY2F0aW9uLWV4YW1wbGVzXV0KKz09PSBBcHBsaWNhdGlvbiBFeGFtcGxlcworCitUaGlzIGxpbms6aHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZG90bmV0L2NvcmUvdG9vbHMvY3VzdG9tLXRlbXBsYXRlc1tkb3RuZXQgdGVtcGxhdGVdIGhlbHBzIGdldHRpbmcgc3RhcnRlZCB3aXRoCis8PGdyZW1saW4tZG90bmV0LEdyZW1saW4uTmV0Pj4uIEl0IGNyZWF0ZXMgYSBuZXcgQyMgY29uc29sZSBwcm9qZWN0IHRoYXQgc2hvd3MgaG93IHRvIGNvbm5lY3QgdG8gYQorPDxncmVtbGluLXNlcnZlcixHcmVtbGluIFNlcnZlcj4+IHdpdGggR3JlbWxpbi5OZXQuCisKK1lvdSBjYW4gaW5zdGFsbCB0aGUgdGVtcGxhdGUgd2l0aCB0aGUgZG90bmV0IENMSSB0b29sOgorW3NvdXJjZSxzaGVsbF0KK2RvdG5ldCBuZXcgLWkgR3JlbWxpbi5OZXQuVGVtcGxhdGUKKworQWZ0ZXIgdGhlIHRlbXBsYXRlIGlzIGluc3RhbGxlZCwgYSBuZXcgcHJvamVjdCBiYXNlZCBvbiB0aGlzIHRlbXBsYXRlIGNhbiBiZSBpbnN0YWxsZWQ6CisKK1tzb3VyY2Usc2hlbGxdCitkb3RuZXQgbmV3IGdyZW1saW4KKworU3BlY2lmeSB0aGUgb3V0cHV0IGRpcmVjdG9yeSBmb3IgdGhlIG5ldyBwcm9qZWN0IHdoaWNoIHdpbGwgdGhlbiBhbHNvIGJlIHVzZWQgYXMgdGhlIG5hbWUgb2YgdGhlIGNyZWF0ZWQgcHJvamVjdDoKKworW3NvdXJjZSxzaGVsbF0KK2RvdG5ldCBuZXcgZ3JlbWxpbiAtbyBNeUZpcnN0R3JlbWxpblByb2plY3QKIAogW1tncmVtbGluLWphdmFzY3JpcHRdXQogPT0gR3JlbWxpbi1KYXZhU2NyaXB0CkBAIC01NzEsMTggKzEyMzcsMTIgQEAKIFtzb3VyY2UsYmFzaF0KIG5wbSBpbnN0YWxsIGdyZW1saW4KIAotVGhlIEdyZW1saW4tSmF2YVNjcmlwdCBwcm92aWRlcyBgR3JhcGhUcmF2ZXJzYWxTb3VyY2VgLCBgR3JhcGhUcmF2ZXJzYWxgLCBhbmQgYF9fYCB3aGljaCBtaXJyb3IgdGhlIHJlc3BlY3RpdmUgY2xhc3NlcwotaW4gR3JlbWxpbi1KYXZhLiBUaGUgYEdyYXBoVHJhdmVyc2FsU291cmNlYCByZXF1aXJlcyBhIFJlbW90ZUNvbm5lY3Rpb24gaW1wbGVtZW50YXRpb24gaW4gb3JkZXIgdG8gY29tbXVuaWNhdGUgd2l0aAotPDxncmVtbGluLXNlcnZlcixHcmVtbGluU2VydmVyPj4uCis9PT0gQ29ubmVjdGluZwogCi1bc291cmNlLGphdmFzY3JpcHRdCi0tLS0tCi1jb25zdCBncmVtbGluID0gcmVxdWlyZSgnZ3JlbWxpbicpOwotY29uc3QgdHJhdmVyc2FsID0gZ3JlbWxpbi5wcm9jZXNzLkFub255bW91c1RyYXZlcnNhbFNvdXJjZS50cmF2ZXJzYWw7Ci1jb25zdCBEcml2ZXJSZW1vdGVDb25uZWN0aW9uID0gZ3JlbWxpbi5kcml2ZXIuRHJpdmVyUmVtb3RlQ29ubmVjdGlvbjsKLS0tLS0KLQotQSB0cmF2ZXJzYWwgc291cmNlIGNhbiBiZSBzcGF3bmVkIHdpdGggYFJlbW90ZVN0cmF0ZWd5YCBmcm9tIGFuIGBBbm9ueW1vdXNUcmF2ZXJzYWxTb3VyY2VgLgorVGhlIHBhdHRlcm4gZm9yIGNvbm5lY3RpbmcgaXMgZGVzY3JpYmVkIGluIDw8Y29ubmVjdGluZy1ncmVtbGluLENvbm5lY3RpbmcgR3JlbWxpbj4+IGFuZCBpdCBiYXNpY2FsbHkgZGlzdGlsbHMgZG93biB0bworY3JlYXRpbmcgYSBgR3JhcGhUcmF2ZXJzYWxTb3VyY2VgLiBBIGBHcmFwaFRyYXZlcnNhbFNvdXJjZWAgaXMgY3JlYXRlZCBmcm9tIHRoZSBgQW5vbnltb3VzVHJhdmVyc2FsU291cmNlLnRyYXZlcnNhbCgpYAorbWV0aG9kIHdoZXJlIHRoZSAiZyIgcHJvdmlkZWQgdG8gdGhlIGBEcml2ZXJSZW1vdGVDb25uZWN0aW9uYCBjb3JyZXNwb25kcyB0byB0aGUgbmFtZSBvZiBhIGBHcmFwaFRyYXZlcnNhbFNvdXJjZWAgb24KK3RoZSByZW1vdGUgZW5kLgogCiBbc291cmNlLGphdmFzY3JpcHRdCiAtLS0tCkBAIC01OTcsMjQgKzEyNTcsNyBAQAogY29uc3QgZyA9IHRyYXZlcnNhbCgpLndpdGhSZW1vdGUobmV3IERyaXZlclJlbW90ZUNvbm5lY3Rpb24oJ3dzOi8vbG9jYWxob3N0OjgxODIvZ3JlbWxpbicsIHsgYXV0aGVudGljYXRvciB9KTsKIC0tLS0KIAotV2hlbiBhIHRyYXZlcnNhbCBmcm9tIHRoZSBgR3JhcGhUcmF2ZXJzYWxTb3VyY2VgIGlzIGl0ZXJhdGVkLCB0aGUgdHJhdmVyc2Fs4oCZcyBgQnl0ZWNvZGVgIGlzIHNlbnQgb3ZlciB0aGUgd2lyZSB2aWEKLXRoZSByZWdpc3RlcmVkIGBSZW1vdGVDb25uZWN0aW9uYC4gVGhlIGJ5dGVjb2RlIGlzIHVzZWQgdG8gY29uc3RydWN0IHRoZSBlcXVpdmFsZW50IHRyYXZlcnNhbCBhdCB0aGUgcmVtb3RlCi10cmF2ZXJzYWwgc291cmNlLgotCi1TaW5jZSBHcmVtbGluLUphdmFTY3JpcHQgY3VycmVudGx5IGRvZXNuJ3Qgc3VwcG9ydCBsYW1iZGEgZXhwcmVzc2lvbnMsIGFsbCB0cmF2ZXJzYWxzIGNhbiBiZSB0cmFuc2xhdGVkIHRvCi1HcmVtbGluLUphdmEgb24gdGhlIHJlbW90ZSBsb2NhdGlvbiAoZS5nLiBHcmVtbGluIFNlcnZlcikuCi0KLVdBUk5JTkc6IEluIEphdmFzY3JpcHQsIGBmcm9tYCBhbmQgYGluYCBhcmUgcmVzZXJ2ZWQgd29yZHMuIEdyZW1saW4tSmF2YXNjcmlwdCBzaW1wbHkgcG9zdGZpeGVzIGArXytgIHRvIHRoZSBlbmQgb2YKLXRoZXNlIHRlcm1zIGZvciB0aGVpciB1c2Ugd2l0aCBncmFwaCB0cmF2ZXJzYWwuIEZvciBpbnN0YW5jZTogYGcuVigpLmluXygpLm91dCgpYAotCi1JTVBPUlRBTlQ6IEdyZW1saW4tSmF2YVNjcmlwdOKAmXMgYFRyYXZlcnNhbGAgYmFzZSBjbGFzcyBzdXBwb3J0cyB0aGUgc3RhbmRhcmQgR3JlbWxpbiBtZXRob2RzIHN1Y2ggYXMgYG5leHQoKWAgYW5kCi1gdG9MaXN0KClgIFN1Y2ggInRlcm1pbmFsIiBtZXRob2RzIHRyaWdnZXIgdGhlIGV2YWx1YXRpb24gb2YgdGhlIHRyYXZlcnNhbC4KLQotPT09IFJlbW90ZUNvbm5lY3Rpb24gU3VibWlzc2lvbgotCi1JbiBhIHNpbWlsYXIgd2F5IGFzIGluIG90aGVyIEdMVnMsIHRoZXJlIGFyZSB2YXJpb3VzIHdheXMgdG8gc3VibWl0IGEgdHJhdmVyc2FsIHRvIGEKLWBSZW1vdGVDb25uZWN0aW9uYCB1c2luZyB0ZXJtaW5hbC9hY3Rpb24gbWV0aG9kcyBvZmYgb2YgYFRyYXZlcnNhbGAuIEdpdmVuIHRoYXQgSS9PIG9wZXJhdGlvbnMgaW4gTm9kZS5qcyBhcmUKLWFzeW5jaHJvbm91cyBieSBkZWZhdWx0LCB0aGlzIHRlcm1pbmFsIG1ldGhvZHMgcmV0dXJuIGEgYFByb21pc2VgLgorR2l2ZW4gdGhhdCBJL08gb3BlcmF0aW9ucyBpbiBOb2RlLmpzIGFyZSBhc3luY2hyb25vdXMgYnkgZGVmYXVsdCwgPDx0ZXJtaW5hbC1zdGVwcyxUZXJtaW5hbCBTdGVwcz4+IHJldHVybiBhIGBQcm9taXNlYDoKIAogKiBgVHJhdmVyc2FsLnRvTGlzdCgpYDogUmV0dXJucyBhIGBQcm9taXNlYCB3aXRoIGFuIGBBcnJheWAgYXMgcmVzdWx0IHZhbHVlLgogKiBgVHJhdmVyc2FsLm5leHQoKWA6IFJldHVybnMgYSBgUHJvbWlzZWAgd2l0aCBhIGB7IHZhbHVlLCBkb25lIH1gIHR1cGxlIGFzIHJlc3VsdCB2YWx1ZSwgYWNjb3JkaW5nIHRvIHRoZQpAQCAtNjI5LDcgKzEyNzIsNyBAQAogICAudGhlbihuYW1lcyA9PiBjb25zb2xlLmxvZyhuYW1lcykpOwogLS0tLQogCi1Zb3UgY2FuIGBhd2FpdGAgdGhlIHByb21pc2VzIGlmIHlvdSBhcmUgdXNpbmcgYGFzeW5jYCBmdW5jdGlvbnMuCitXaGVuIHVzaW5nIGBhc3luY2AgZnVuY3Rpb25zIGl0IGlzIHBvc3NpYmxlIHRvIGBhd2FpdGAgdGhlIHByb21pc2VzOgogCiBbc291cmNlLGphdmFzY3JpcHRdCiAtLS0tCkBAIC02MzcsMzYgKzEyODAsMzQgQEAKIGNvbnNvbGUubG9nKG5hbWVzKTsKIC0tLS0KIAotPT09IFN0YXRpYyBFbnVtcyBhbmQgTWV0aG9kcworPT09IENvbW1vbiBJbXBvcnRzCiAKLUdyZW1saW4gaGFzIHZhcmlvdXMgdG9rZW5zIChlLmcuIGB0YCwgYFBgLCBgb3JkZXJgLCBgZGlyZWN0aW9uYCwgZXRjLikgdGhhdCBhcmUgcmVwcmVzZW50ZWQgaW4gR3JlbWxpbi1KYXZhU2NyaXB0IGFzCi1vYmplY3RzLgotCi1bc291cmNlLGphdmFzY3JpcHRdCi1nLlYoKS5oYXNMYWJlbCgncGVyc29uJykuaGFzKCdhZ2UnLCBQLmd0KDMwKSkub3JkZXIoKS5ieSgnYWdlJywgb3JkZXIuZGVzYykudG9MaXN0KCkKLQotVGhlc2Ugb2JqZWN0cyBtdXN0IGJlIHJlcXVpcmVkIG1hbnVhbGx5IGZyb20gdGhlIGBwcm9jZXNzYCBuYW1lc3BhY2U6CitUaGVyZSBhcmUgYSBudW1iZXIgb2YgY2xhc3NlcywgZnVuY3Rpb25zIGFuZCB0b2tlbnMgdGhhdCBhcmUgdHlwaWNhbGx5IHVzZWQgd2l0aCBHcmVtbGluLiBUaGUgZm9sbG93aW5nIGltcG9ydHMKK3Byb3ZpZGUgbW9zdCBvZiB0aGUgdHlwaWNhbCBmdW5jdGlvbmFsaXR5IHJlcXVpcmVkIHRvIHVzZSBHcmVtbGluOgogCiBbc291cmNlLGphdmFzY3JpcHRdCiAtLS0tCiBjb25zdCBncmVtbGluID0gcmVxdWlyZSgnZ3JlbWxpbicpOwotY29uc3QgUCA9IGdyZW1saW4ucHJvY2Vzcy5QOwotLS0tLQotCi1GaW5hbGx5LCB1c2luZyBzdGF0aWMgYCtfXytgIGFub255bW91cyB0cmF2ZXJzYWxzIGxpa2UgYCtfXy5vdXQoKStgIGNhbiBiZSBleHByZXNzZWQgYXMgYmVsb3c6Ci0KLVtzb3VyY2UsamF2YXNjcmlwdF0KLS0tLS0KLWNvbnN0IGdyZW1saW4gPSByZXF1aXJlKCdncmVtbGluJyk7Citjb25zdCB0cmF2ZXJzYWwgPSBncmVtbGluLnByb2Nlc3MuQW5vbnltb3VzVHJhdmVyc2FsU291cmNlLnRyYXZlcnNhbDsKIGNvbnN0IF9fID0gZ3JlbWxpbi5wcm9jZXNzLnN0YXRpY3M7Ci0KLWcuVigpLnJlcGVhdChfXy5vdXQoKSkudGltZXMoMikudmFsdWVzKCJuYW1lIikuZm9sZCgpLnRvTGlzdCgpOworY29uc3QgRHJpdmVyUmVtb3RlQ29ubmVjdGlvbiA9IGdyZW1saW4uZHJpdmVyLkRyaXZlclJlbW90ZUNvbm5lY3Rpb247Citjb25zdCBjb2x1bW4gPSBncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmNvbHVtbgorY29uc3QgZGlyZWN0aW9uID0gZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kaXJlY3Rpb24KK2NvbnN0IHAgPSBncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlAKK2NvbnN0IHBpY2sgPSBncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnBpY2sKK2NvbnN0IHBvcCA9IGdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwucG9wCitjb25zdCBvcmRlciA9IGdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwub3JkZXIKK2NvbnN0IHNjb3BlID0gZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zY29wZQorY29uc3QgdCA9IGdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudAogLS0tLQogCi09PT0gU3VibWl0IEdyZW1saW4gU2NyaXB0cworPT09IFN1Ym1pdHRpbmcgU2NyaXB0cwogCi1BZGRpdGlvbmFsbHksIHlvdSBjYW4gYWxzbyBzZW5kIHBhcmFtZXRyaXplZCBHcmVtbGluIHNjcmlwdHMgdG8gdGhlIHNlcnZlciBhcyBzdHJpbmdzLCB1c2luZyB0aGUKLWBDbGllbnRgIGNsYXNzIGluIEdyZW1saW4tSmF2YVNjcmlwdC4KK1dBUk5JTkc6IFRpbmtlclBvcCBkb2VzIG5vdCByZWNvbW1lbmQgc3VibWl0dGluZyBzY3JpcHQtYmFzZWQgcmVxdWVzdHMgYW5kIGdlbmVyYWxseSBjb250aW51ZXMgdG8gc3VwcG9ydCB0aGlzIGZlYXR1cmUKK2ZvciBsZWdhY3kgcmVhc29ucyBhbmQgY29ybmVyIHVzZSBjYXNlcyB3aGljaCBhcmUgc3RpbGwgbm90IGNvbXBsZXRlbHkgYWRkcmVzc2VkIGJ5IHRoZSBHcmVtbGluIGxhbmd1YWdlLiBQbGVhc2UKK2NvbnNpZGVyIHVzaW5nIGJ5dGVjb2RlLWJhc2VkIHJlcXVlc3RzIGluc3RlYWQgd2hlbiBwb3NzaWJsZS4KKworSXQgaXMgcG9zc2libGUgdG8gc3VibWl0IHBhcmFtZXRyaXplZCBHcmVtbGluIHNjcmlwdHMgdG8gdGhlIHNlcnZlciBhcyBzdHJpbmdzLCB1c2luZyB0aGUgYENsaWVudGAgY2xhc3M6CiAKIFtzb3VyY2UsamF2YXNjcmlwdF0KIC0tLS0KQEAgLTY5MywzICsxMzM0LDcwIEBACiAKIFdpdGggdGhpcyBjb25maWd1cmF0aW9uLCB0aGUgc3RhdGUgb2YgdmFyaWFibGVzIHdpdGhpbiBzY3JpcHRzIGFyZSBwcmVzZXJ2ZWQgYmV0d2VlbiByZXF1ZXN0cy4KIAorW1tncmVtbGluLWphdmFzY3JpcHQtZHNsXV0KKz09PSBEb21haW4gU3BlY2lmaWMgTGFuZ3VhZ2VzCisKK0RldmVsb3BpbmcgR3JlbWxpbiBEU0xzIGluIEphdmFTY3JpcHQgbGFyZ2VseSByZXF1aXJlcyBleHRlbnNpb24gb2YgZXhpc3RpbmcgY29yZSBjbGFzc2VzIHdpdGggdXNlIG9mIHN0YW5kYWxvbmUKK2Z1bmN0aW9ucyBmb3IgYW5vbnltb3VzIHRyYXZlcnNhbCBzcGF3bmluZy4gVGhlIHBhdHRlcm4gaXMgZGVtb25zdHJhdGVkIGluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZToKKworW3NvdXJjZSxqYXZhc2NyaXB0XQorLS0tLQorY2xhc3MgU29jaWFsVHJhdmVyc2FsIGV4dGVuZHMgR3JhcGhUcmF2ZXJzYWwgeworICBjb25zdHJ1Y3RvcihncmFwaCwgdHJhdmVyc2FsU3RyYXRlZ2llcywgYnl0ZWNvZGUpIHsKKyAgICBzdXBlcihncmFwaCwgdHJhdmVyc2FsU3RyYXRlZ2llcywgYnl0ZWNvZGUpOworICB9CisKKyAgYWdlZChhZ2UpIHsKKyAgICByZXR1cm4gdGhpcy5oYXMoJ3BlcnNvbicsICdhZ2UnLCBhZ2UpOworICB9Cit9CisKK2NsYXNzIFNvY2lhbFRyYXZlcnNhbFNvdXJjZSBleHRlbmRzIEdyYXBoVHJhdmVyc2FsU291cmNlIHsKKyAgY29uc3RydWN0b3IoZ3JhcGgsIHRyYXZlcnNhbFN0cmF0ZWdpZXMsIGJ5dGVjb2RlKSB7CisgICAgc3VwZXIoZ3JhcGgsIHRyYXZlcnNhbFN0cmF0ZWdpZXMsIGJ5dGVjb2RlLCBTb2NpYWxUcmF2ZXJzYWxTb3VyY2UsIFNvY2lhbFRyYXZlcnNhbCk7CisgIH0KKworICBwZXJzb24obmFtZSkgeworICAgIHJldHVybiB0aGlzLlYoKS5oYXMoJ3BlcnNvbicsICduYW1lJywgbmFtZSk7CisgIH0KK30KKworZnVuY3Rpb24gYW5vbnltb3VzKCkgeworICByZXR1cm4gbmV3IFNvY2lhbFRyYXZlcnNhbChudWxsLCBudWxsLCBuZXcgQnl0ZWNvZGUoKSk7Cit9CisKK2Z1bmN0aW9uIGFnZWQoYWdlKSB7CisgIHJldHVybiBhbm9ueW1vdXMoKS5hZ2VkKGFnZSk7Cit9CistLS0tCisKK2BTb2NpYWxUcmF2ZXJzYWxgIGV4dGVuZHMgdGhlIGNvcmUgYEdyYXBoVHJhdmVyc2FsYCBjbGFzcyBhbmQgaGFzIGEgdGhyZWUgYXJndW1lbnQgY29uc3RydWN0b3Igd2hpY2ggaXMgaW1tZWRpYXRlbHkKK3Byb3hpZWQgdG8gdGhlIGBHcmFwaFRyYXZlcnNhbGAgY29uc3RydWN0b3IuIE5ldyBEU0wgc3RlcHMgYXJlIHRoZW4gYWRkZWQgdG8gdGhpcyBjbGFzcyB1c2luZyBhdmFpbGFibGUgc3RlcHMgdG8KK2NvbnN0cnVjdCB0aGUgdW5kZXJseWluZyB0cmF2ZXJzYWwgdG8gZXhlY3V0ZSBhcyBkZW1vbnN0cmF0ZWQgaW4gdGhlIGBhZ2VkKClgIHN0ZXAuCisKK1RoZSBgU29jaWFsVHJhdmVyc2FsYCBpcyBzcGF3bmVkIGZyb20gYSBgU29jaWFsVHJhdmVyc2FsU291cmNlYCB3aGljaCBpcyBleHRlbmRlZCBmcm9tIGBHcmFwaFRyYXZlcnNhbFNvdXJjZWAuIFN0ZXBzCithZGRlZCBoZXJlIGFyZSBtZWFudCB0byBiZSBzdGFydCBzdGVwcy4gSW4gdGhlIGFib3ZlIGNhc2UsIHRoZSBgcGVyc29uKClgIHN0YXJ0IHN0ZXAgZmluZCBhICJwZXJzb24iIHZlcnRleCB0byBiZWdpbgordGhlIHRyYXZlcnNhbCBmcm9tLgorCitUeXBpY2FsbHksIHN0ZXBzIHRoYXQgYXJlIG1hZGUgYXZhaWxhYmxlIG9uIGEgYEdyYXBoVHJhdmVyc2FsYCAoaS5lLiBTb2NpYWxUcmF2ZXJzYWwgaW4gdGhpcyBleGFtcGxlKSBzaG91bGQgYWxzbyBiZQorbWFkZSBhdmFpbGFibGUgYXMgc3Bhd25zIGZvciBhbm9ueW1vdXMgdHJhdmVyc2Fscy4gVGhlIHJlY29tbWVuZGF0aW9uIGlzIHRoYXQgdGhlc2Ugc3RlcHMgYmUgZXhwb3NlZCBpbiB0aGUgbW9kdWxlCithcyBzdGFuZGFsb25lIGZ1bmN0aW9ucy4gSW4gdGhlIGV4YW1wbGUgYWJvdmUsIHRoZSBzdGFuZGFsb25lIGBhZ2VkKClgIHN0ZXAgY3JlYXRlcyBhbiBhbm9ueW1vdXMgdHJhdmVyc2FsIHRocm91Z2gKK2FuIGBhbm9ueW1vdXMoKWAgdXRpbGl0eSBmdW5jdGlvbi4gVGhlIG1ldGhvZCBmb3IgY3JlYXRpbmcgdGhlc2Ugc3RhbmRhbG9uZSBmdW5jdGlvbnMgY2FuIGJlIGhhbmRsZWQgaW4gb3RoZXIgd2F5cyBpZgorZGVzaXJlZC4KKworVG8gdXNlIHRoZSBEU0wsIHNpbXBseSBpbml0aWFsaXplIHRoZSBgZ2AgYXMgZm9sbG93czoKKworW3NvdXJjZSxqYXZhc2NyaXB0XQorLS0tLQorY29uc3QgZyA9IHRyYXZlcnNhbChTb2NpYWxUcmF2ZXJzYWxTb3VyY2UpLndpdGhSZW1vdGUoY29ubmVjdGlvbik7CitnLnBlcnNvbignbWFya28nKS5hZ2VkKDI5KS52YWx1ZXMoJ25hbWUnKS50b0xpc3QoKS4KKyAgdGhlbihuYW1lcyA9PiBjb25zb2xlLmxvZyhuYW1lcykpOworLS0tLQorCitbW2dyZW1saW4tamF2YXNjcmlwdC1kaWZmZXJlbmNlc11dCis9PT0gRGlmZmVyZW5jZXMKKworSW4gc2l0dWF0aW9ucyB3aGVyZSBKYXZhc2NyaXB0IHJlc2VydmVkIHdvcmRzIGFuZCBnbG9iYWwgZnVuY3Rpb25zIG92ZXJsYXAgd2l0aCBzdGFuZGFyZCBHcmVtbGluIHN0ZXBzIGFuZCB0b2tlbnMsIHRob3NlCitiaXRzIG9mIGNvbmZsaWN0aW5nIEdyZW1saW4gZ2V0IGFuIHVuZGVyc2NvcmUgYXBwZW5kZWQgYXMgYSBzdWZmaXg6CisKKypTdGVwcyogLSA8PGZyb20tc3RlcCxmcm9tXygpPj4sIDw8aW4tc3RlcCxpbl8oKT4+LCA8PHdpdGgtc3RlcCx3aXRoXygpPj4KZGlmZiAtLWdpdCBhL2RvY3Mvc3JjL3JlZmVyZW5jZS9pbXBsZW1lbnRhdGlvbnMtZ2lyYXBoLmFzY2lpZG9jIGIvZG9jcy9zcmMvcmVmZXJlbmNlL2ltcGxlbWVudGF0aW9ucy1naXJhcGguYXNjaWlkb2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmNTgwNGMuLjAwMDAwMDAKLS0tIGEvZG9jcy9zcmMvcmVmZXJlbmNlL2ltcGxlbWVudGF0aW9ucy1naXJhcGguYXNjaWlkb2MKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi0vLy8vCi1MaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lIG9yIG1vcmUKLWNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUgZGlzdHJpYnV0ZWQgd2l0aAotdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLgotVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUgdG8gWW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAKLSh0aGUgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoCi10aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotCi0gIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotCi1Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi1kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi1TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi1saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLS8vLy8KLVtbZ2lyYXBoZ3JhcGhjb21wdXRlcl1dCi09PT09IEdpcmFwaEdyYXBoQ29tcHV0ZXIKLQotW3NvdXJjZSx4bWxdCi0tLS0tCi08ZGVwZW5kZW5jeT4KLSAgIDxncm91cElkPm9yZy5hcGFjaGUudGlua2VycG9wPC9ncm91cElkPgotICAgPGFydGlmYWN0SWQ+Z2lyYXBoLWdyZW1saW48L2FydGlmYWN0SWQ+Ci0gICA8dmVyc2lvbj54LnkuejwvdmVyc2lvbj4KLTwvZGVwZW5kZW5jeT4KLS0tLS0KLQotaW1hZ2U6Z2lyYXBoLWxvZ28ucG5nW3dpZHRoPTEwMCxmbG9hdD1sZWZ0XSBsaW5rOmh0dHA6Ly9naXJhcGguYXBhY2hlLm9yZ1tHaXJhcGhdIGlzIGFuIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi1wcm9qZWN0IGZvY3VzZWQgb24gT0xBUC1iYXNlZCBncmFwaCBwcm9jZXNzaW5nLiBHaXJhcGggbWFrZXMgdXNlIG9mIHRoZSBkaXN0cmlidXRlZCBncmFwaCBjb21wdXRpbmcgcGFyYWRpZ20gbWFkZQotcG9wdWxhciBieSBHb29nbGUncyBQcmVnZWwuIEluIEdpcmFwaCwgZGV2ZWxvcGVycyB3cml0ZSAidmVydGV4IHByb2dyYW1zIiB0aGF0IGdldCBleGVjdXRlZCBhdCBlYWNoIHZlcnRleCBpbgotcGFyYWxsZWwuIFRoZXNlIHByb2dyYW1zIGNvbW11bmljYXRlIHdpdGggb25lIGFub3RoZXIgaW4gYSBidWxrIHN5bmNocm9ub3VzIHBhcmFsbGVsIChCU1ApIG1hbm5lci4gVGhpcyBtb2RlbCBhbGlnbnMKLXdpdGggVGlua2VyUG9wMydzIGBHcmFwaENvbXB1dGVyYCBBUEkuIFRpbmtlclBvcDMgcHJvdmlkZXMgYW4gaW1wbGVtZW50YXRpb24gb2YgYEdyYXBoQ29tcHV0ZXJgIHRoYXQgd29ya3MgZm9yIEdpcmFwaAotY2FsbGVkIGBHaXJhcGhHcmFwaENvbXB1dGVyYC4gTW9yZW92ZXIsIHdpdGggVGlua2VyUG9wMydzIDw8bWFwcmVkdWNlLE1hcFJlZHVjZT4+LWZyYW1ld29yaywgdGhlIHN0YW5kYXJkCi1HaXJhcGgvUHJlZ2VsIG1vZGVsIGlzIGV4dGVuZGVkIHRvIHN1cHBvcnQgYW4gYXJiaXRyYXJ5IG51bWJlciBvZiBNYXBSZWR1Y2UgcGhhc2VzIHRvIGFnZ3JlZ2F0ZSBhbmQgeWllbGQgcmVzdWx0cwotZnJvbSB0aGUgZ3JhcGguIEJlbG93IGFyZSBleGFtcGxlcyB1c2luZyBgR2lyYXBoR3JhcGhDb21wdXRlcmAgZnJvbSB0aGUgPDxncmVtbGluLWNvbnNvbGUsR3JlbWxpbi1Db25zb2xlPj4uCi0KLVdBUk5JTkc6IEdpcmFwaCB1c2VzIGEgbGFyZ2UgbnVtYmVyIG9mIEhhZG9vcCBjb3VudGVycy4gVGhlIGRlZmF1bHQgZm9yIEhhZG9vcCBpcyAxMjAuIEluIGBtYXByZWQtc2l0ZS54bWxgIGl0IGlzCi1wb3NzaWJsZSB0byBpbmNyZWFzZSB0aGUgbGltaXQgaXQgdmlhIHRoZSBgbWFwcmVkdWNlLmpvYi5jb3VudGVycy5tYXhgIHByb3BlcnR5LiBBIGdvb2QgdmFsdWUgdG8gdXNlIGlzIDEwMDAuIFRoaXMKLWlzIGEgY2x1c3Rlci13aWRlIHByb3BlcnR5IHNvIGJlIHN1cmUgdG8gcmVzdGFydCB0aGUgY2x1c3RlciBhZnRlciB1cGRhdGluZy4KLQotV0FSTklORzogVGhlIG1heGltdW0gbnVtYmVyIG9mIHdvcmtlcnMgY2FuIGJlIG5vIGxhcmdlciB0aGFuIHRoZSBudW1iZXIgb2YgbWFwLXNsb3RzIGluIHRoZSBIYWRvb3AgY2x1c3RlciBtaW51cyAxLgotRm9yIGV4YW1wbGUsIGlmIHRoZSBIYWRvb3AgY2x1c3RlciBoYXMgNCBtYXAgc2xvdHMsIHRoZW4gYGdpcmFwaC5tYXhXb3JrZXJzYCBjYW4gbm90IGJlIGxhcmdlciB0aGFuIDMuIE9uZSBtYXAtc2xvdAotaXMgcmVzZXJ2ZWQgZm9yIHRoZSBtYXN0ZXIgY29tcHV0ZSBub2RlIGFuZCBhbGwgb3RoZXIgc2xvdHMgY2FuIGJlIGFsbG9jYXRlZCBhcyB3b3JrZXJzIHRvIGV4ZWN1dGUgdGhlIFZlcnRleFByb2dyYW1zCi1vbiB0aGUgdmVydGljZXMgb2YgdGhlIGdyYXBoLgotCi1JZiBgR2lyYXBoR3JhcGhDb21wdXRlcmAgd2lsbCBiZSB1c2VkIGFzIHRoZSBgR3JhcGhDb21wdXRlcmAgZm9yIGBIYWRvb3BHcmFwaGAgdGhlbiBpdHMgYGxpYmAgZGlyZWN0b3J5IHNob3VsZCBiZQotc3BlY2lmaWVkIGluIGBIQURPT1BfR1JFTUxJTl9MSUJTYC4KLQotW3NvdXJjZSxzaGVsbF0KLWV4cG9ydCBIQURPT1BfR1JFTUxJTl9MSUJTPSRIQURPT1BfR1JFTUxJTl9MSUJTOi91c3IvbG9jYWwvZ3JlbWxpbi1jb25zb2xlL2V4dC9naXJhcGgtZ3JlbWxpbi9saWIKLQotT3IsIHRoZSB1c2VyIGNhbiBzcGVjaWZ5IHRoZSBkaXJlY3RvcnkgaW4gdGhlIEdyZW1saW4gQ29uc29sZS4KLQotW3NvdXJjZSxncm9vdnldCi1TeXN0ZW0uc2V0UHJvcGVydHkoJ0hBRE9PUF9HUkVNTElOX0xJQlMnLFN5c3RlbS5nZXRQcm9wZXJ0eSgnSEFET09QX0dSRU1MSU5fTElCUycpICsgJzonICsgJy91c3IvbG9jYWwvZ3JlbWxpbi1jb25zb2xlL2V4dC9naXJhcGgtZ3JlbWxpbi9saWInKQotCi1bZ3JlbWxpbi1ncm9vdnldCi0tLS0tCi1ncmFwaCA9IEdyYXBoRmFjdG9yeS5vcGVuKCdjb25mL2hhZG9vcC9oYWRvb3AtZ3J5by5wcm9wZXJ0aWVzJykKLWcgPSBncmFwaC50cmF2ZXJzYWwoKS53aXRoQ29tcHV0ZXIoR2lyYXBoR3JhcGhDb21wdXRlcikKLWcuVigpLmNvdW50KCkKLWcuVigpLm91dCgpLm91dCgpLnZhbHVlcygnbmFtZScpCi0tLS0tCi0KLUlNUE9SVEFOVDogVGhlIGV4YW1wbGVzIGFib3ZlIGRvIG5vdCB1c2UgbGFtYmRhcyAoaS5lLiBjbG9zdXJlcyBpbiBHcmVtbGluLUdyb292eSkuIFRoaXMgbWFrZXMgdGhlIHRyYXZlcnNhbAotc2VyaWFsaXphYmxlIGFuZCB0aHVzLCBhYmxlIHRvIGJlIGRpc3RyaWJ1dGVkIHRvIGFsbCBtYWNoaW5lcyBpbiB0aGUgSGFkb29wIGNsdXN0ZXIuIElmIGEgbGFtYmRhIGlzIHJlcXVpcmVkIGluIGEKLXRyYXZlcnNhbCwgdGhlbiB0aGUgdHJhdmVyc2FsIG11c3QgYmUgc2VudCBhcyBhIGBTdHJpbmdgIGFuZCBjb21waWxlZCBsb2NhbGx5IGF0IGVhY2ggbWFjaGluZSBpbiB0aGUgY2x1c3Rlci4gVGhlCi1mb2xsb3dpbmcgZXhhbXBsZSBkZW1vbnN0cmF0ZXMgdGhlIGA6cmVtb3RlYCBjb21tYW5kIHdoaWNoIGFsbG93cyBmb3Igc3VibWl0dGluZyBHcmVtbGluIHRyYXZlcnNhbHMgYXMgYSBgU3RyaW5nYC4KLQotW2dyZW1saW4tZ3Jvb3Z5XQotLS0tLQotZ3JhcGggPSBHcmFwaEZhY3Rvcnkub3BlbignY29uZi9oYWRvb3AvaGFkb29wLWdyeW8ucHJvcGVydGllcycpCi1nID0gZ3JhcGgudHJhdmVyc2FsKCkud2l0aENvbXB1dGVyKEdpcmFwaEdyYXBoQ29tcHV0ZXIpCi06cmVtb3RlIGNvbm5lY3QgdGlua2VycG9wLmhhZG9vcCBncmFwaCBnCi06PiBnLlYoKS5ncm91cCgpLmJ5e2l0LnZhbHVlKCduYW1lJylbMV19LmJ5KCduYW1lJykKLXJlc3VsdAotcmVzdWx0Lm1lbW9yeS5ydW50aW1lCi0tLS0tCi0KLU5PVEU6IElmIHRoZSB1c2VyIGV4cGxpY2l0bHkgc3BlY2lmaWVzIGBnaXJhcGgubWF4V29ya2Vyc2AgYW5kL29yIGBnaXJhcGgubnVtQ29tcHV0ZVRocmVhZHNgIGluIHRoZSBjb25maWd1cmF0aW9uLAotdGhlbiB0aGVzZSB2YWx1ZXMgd2lsbCBiZSB1c2VkIGJ5IEdpcmFwaC4gSG93ZXZlciwgaWYgdGhlc2UgYXJlIG5vdCBzcGVjaWZpZWQgYW5kIHRoZSB1c2VyIG5ldmVyIGNhbGxzCi1gR3JhcGhDb21wdXRlci53b3JrZXJzKClgIHRoZW4gYEdpcmFwaEdyYXBoQ29tcHV0ZXJgIHdpbGwgdHJ5IHRvIGNvbXB1dGUgdGhlIG51bWJlciBvZiB3b3JrZXJzL3RocmVhZHMgdG8gdXNlIGJhc2VkCi1vbiB0aGUgY2x1c3RlcidzIHByb2ZpbGUuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9zcmMvcmVmZXJlbmNlL2ltcGxlbWVudGF0aW9ucy1oYWRvb3AtZW5kLmFzY2lpZG9jIGIvZG9jcy9zcmMvcmVmZXJlbmNlL2ltcGxlbWVudGF0aW9ucy1oYWRvb3AtZW5kLmFzY2lpZG9jCmluZGV4IGYwZjBmYTYuLjliOGM2NDkgMTAwNjQ0Ci0tLSBhL2RvY3Mvc3JjL3JlZmVyZW5jZS9pbXBsZW1lbnRhdGlvbnMtaGFkb29wLWVuZC5hc2NpaWRvYworKysgYi9kb2NzL3NyYy9yZWZlcmVuY2UvaW1wbGVtZW50YXRpb25zLWhhZG9vcC1lbmQuYXNjaWlkb2MKQEAgLTI5LDcgKzI5LDcgQEAKICogKipJbnB1dEZvcm1hdCoqOiBgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLmlvLmdyeW8uR3J5b0lucHV0Rm9ybWF0YAogKiAqKk91dHB1dEZvcm1hdCoqOiBgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLmlvLmdyeW8uR3J5b091dHB1dEZvcm1hdGAKIAotPDxncnlvLXJlYWRlci13cml0ZXIsR3J5bz4+IGlzIGEgYmluYXJ5IGdyYXBoIGZvcm1hdCB0aGF0IGxldmVyYWdlcyBsaW5rOmh0dHBzOi8vZ2l0aHViLmNvbS9Fc290ZXJpY1NvZnR3YXJlL2tyeW9bS3J5b10KKzw8Z3J5byxHcnlvPj4gaXMgYSBiaW5hcnkgZ3JhcGggZm9ybWF0IHRoYXQgbGV2ZXJhZ2VzIGxpbms6aHR0cHM6Ly9naXRodWIuY29tL0Vzb3RlcmljU29mdHdhcmUva3J5b1tLcnlvXQogdG8gbWFrZSBhIGNvbXBhY3QsIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiBhIHZlcnRleC4gSXQgaXMgcmVjb21tZW5kZWQgdGhhdCB1c2VycyBsZXZlcmFnZSBHcnlvIGdpdmVuIGl0cyBzcGFjZS90aW1lCiBzYXZpbmdzIG92ZXIgdGV4dC1iYXNlZCByZXByZXNlbnRhdGlvbnMuCiAKQEAgLTQxLDcgKzQxLDcgQEAKICogKipJbnB1dEZvcm1hdCoqOiBgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLmlvLmdyYXBoc29uLkdyYXBoU09OSW5wdXRGb3JtYXRgCiAqICoqT3V0cHV0Rm9ybWF0Kio6IGBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuaW8uZ3JhcGhzb24uR3JhcGhTT05PdXRwdXRGb3JtYXRgCiAKLTw8Z3JhcGhzb24tcmVhZGVyLXdyaXRlcixHcmFwaFNPTj4+IGlzIGEgSlNPTiBiYXNlZCBncmFwaCBmb3JtYXQuIEdyYXBoU09OIGlzIGEgc3BhY2UtZXhwZW5zaXZlIGdyYXBoIGZvcm1hdCBpbiB0aGF0Cis8PGdyYXBoc29uLEdyYXBoU09OPj4gaXMgYSBKU09OIGJhc2VkIGdyYXBoIGZvcm1hdC4gR3JhcGhTT04gaXMgYSBzcGFjZS1leHBlbnNpdmUgZ3JhcGggZm9ybWF0IGluIHRoYXQKIGl0IGlzIGEgdGV4dC1iYXNlZCBtYXJrdXAgbGFuZ3VhZ2UuIEhvd2V2ZXIsIGl0IGlzIGNvbnZlbmllbnQgZm9yIG1hbnkgZGV2ZWxvcGVycyB0byB3b3JrIHdpdGggYXMgaXRzIHN0cnVjdHVyZSBpcwogc2ltcGxlIChlYXN5IHRvIGNyZWF0ZSBhbmQgcGFyc2UpLgogCkBAIC0xNzAsNyArMTcwLDcgQEAKID09PT0gSW50ZXJhY3Rpbmcgd2l0aCBTcGFyawogCiBJZiBhIFNwYXJrIGNvbnRleHQgaXMgcGVyc2lzdGVkLCB0aGVuIFNwYXJrIFJERHMgd2lsbCByZW1haW4gdGhlIFNwYXJrIGNhY2hlIGFuZCBhY2Nlc3NpYmxlIG92ZXIgc3Vic2VxdWVudCBqb2JzLgotUkREcyBhcmUgcmV0cmlldmVkIGFuZCBzYXZlZCB0byB0aGUgYFNwYXJrQ29udGV4dGAgdmlhIGBQZXJzaXN0ZWRJbnB1dFJERGAgYW5kIGBQZXJzaXN0ZWRPdXRwdXRSRERgIHJlc3BlY3Rpdmx5LgorUkREcyBhcmUgcmV0cmlldmVkIGFuZCBzYXZlZCB0byB0aGUgYFNwYXJrQ29udGV4dGAgdmlhIGBQZXJzaXN0ZWRJbnB1dFJERGAgYW5kIGBQZXJzaXN0ZWRPdXRwdXRSRERgIHJlc3BlY3RpdmVseS4KIFBlcnNpc3RlZCBSRERzIGNhbiBiZSBhY2Nlc3NlZCB1c2luZyBgc3BhcmtgLgogCiBbZ3JlbWxpbi1ncm9vdnldCkBAIC0xODcsMTQzICsxODcsMyBAQAogc3Bhcmsucm0oJ291dHB1dCcpCiBzcGFyay5scygpCiAtLS0tCi0KLT09PSBBIENvbW1hbmQgTGluZSBFeGFtcGxlCi0KLWltYWdlOjpwYWdlcmFuay1sb2dvLnBuZ1t3aWR0aD0zMDBdCi0KLVRoZSBjbGFzc2ljIGxpbms6aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QYWdlUmFua1tQYWdlUmFua10gY2VudHJhbGl0eSBhbGdvcml0aG0gY2FuIGJlIGV4ZWN1dGVkIG92ZXIgdGhlCi1UaW5rZXJQb3AgZ3JhcGggZnJvbSB0aGUgY29tbWFuZCBsaW5lIHVzaW5nIGBHaXJhcGhHcmFwaENvbXB1dGVyYC4KLQotV0FSTklORzogQmUgc3VyZSB0aGF0IHRoZSBgSEFET09QX0dSRU1MSU5fTElCU2AgcmVmZXJlbmNlcyB0aGUgbG9jYXRpb24gYGxpYmAgZGlyZWN0b3J5IG9mIHRoZSByZXNwZWN0aXZlCi1gR3JhcGhDb21wdXRlcmAgZW5naW5lIGJlaW5nIHVzZWQgb3IgZWxzZSB0aGUgcmVxdWlzaXRlIGRlcGVuZGVuY2llcyB3aWxsIG5vdCBiZSB1cGxvYWRlZCB0byB0aGUgSGFkb29wIGNsdXN0ZXIuCi0KLVtzb3VyY2UsdGV4dF0KLS0tLS0KLSQgaGRmcyBkZnMgLWNvcHlGcm9tTG9jYWwgZGF0YS90aW5rZXJwb3AtbW9kZXJuLmpzb24gdGlua2VycG9wLW1vZGVybi5qc29uCi0kIGhkZnMgZGZzIC1scwotRm91bmQgMiBpdGVtcwotLXJ3LXItLXItLSAgIDEgbWFya28gc3VwZXJncm91cCAgICAgICAyMzU2IDIwMTQtMDctMjggMTM6MDAgL3VzZXIvbWFya28vdGlua2VycG9wLW1vZGVybi5qc29uCi0kIGhhZG9vcCBqYXIgdGFyZ2V0L2dpcmFwaC1ncmVtbGluLXgueS56LWpvYi5qYXIgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5naXJhcGgucHJvY2Vzcy5jb21wdXRlci5HaXJhcGhHcmFwaENvbXB1dGVyIC4uL2hhZG9vcC1ncmVtbGluL2NvbmYvaGFkb29wLWdyYXBoc29uLnByb3BlcnRpZXMKLTE1LzA5LzExIDA4OjAyOjA4IFdBUk4gdXRpbC5OYXRpdmVDb2RlTG9hZGVyOiBVbmFibGUgdG8gbG9hZCBuYXRpdmUtaGFkb29wIGxpYnJhcnkgZm9yIHlvdXIgcGxhdGZvcm0uLi4gdXNpbmcgYnVpbHRpbi1qYXZhIGNsYXNzZXMgd2hlcmUgYXBwbGljYWJsZQotMTUvMDkvMTEgMDg6MDI6MTEgSU5GTyBjb21wdXRlci5HaXJhcGhHcmFwaENvbXB1dGVyOiBIYWRvb3BHcmVtbGluKEdpcmFwaCk6IFBhZ2VSYW5rVmVydGV4UHJvZ3JhbVthbHBoYT0wLjg1LGl0ZXJhdGlvbnM9MzBdCi0xNS8wOS8xMSAwODowMjoxMiBJTkZPIG1hcHJlZHVjZS5Kb2JTdWJtaXR0ZXI6IG51bWJlciBvZiBzcGxpdHM6MwotMTUvMDkvMTEgMDg6MDI6MTIgSU5GTyBtYXByZWR1Y2UuSm9iU3VibWl0dGVyOiBTdWJtaXR0aW5nIHRva2VucyBmb3Igam9iOiBqb2JfMTQ0MTkxNTkwNzM0N18wMDI4Ci0xNS8wOS8xMSAwODowMjoxMiBJTkZPIGltcGwuWWFybkNsaWVudEltcGw6IFN1Ym1pdHRlZCBhcHBsaWNhdGlvbiBhcHBsaWNhdGlvbl8xNDQxOTE1OTA3MzQ3XzAwMjgKLTE1LzA5LzExIDA4OjAyOjEyIElORk8gam9iLkdpcmFwaEpvYjogVHJhY2tpbmcgVVJMOiBodHRwOi8vbWFya29zLW1hY2Jvb2s6ODA4OC9wcm94eS9hcHBsaWNhdGlvbl8xNDQxOTE1OTA3MzQ3XzAwMjgvCi0xNS8wOS8xMSAwODowMjoxMiBJTkZPIGpvYi5HaXJhcGhKb2I6IFdhaXRpbmcgZm9yIHJlc291cmNlcy4uLiBKb2Igd2lsbCBzdGFydCBvbmx5IHdoZW4gaXQgZ2V0cyBhbGwgMyBtYXBwZXJzCi0xNS8wOS8xMSAwODowMzo1NCBJTkZPIG1hcHJlZHVjZS5Kb2I6IFJ1bm5pbmcgam9iOiBqb2JfMTQ0MTkxNTkwNzM0N18wMDI4Ci0xNS8wOS8xMSAwODowMzo1NSBJTkZPIG1hcHJlZHVjZS5Kb2I6IEpvYiBqb2JfMTQ0MTkxNTkwNzM0N18wMDI4IHJ1bm5pbmcgaW4gdWJlciBtb2RlIDogZmFsc2UKLTE1LzA5LzExIDA4OjAzOjU1IElORk8gbWFwcmVkdWNlLkpvYjogIG1hcCAzMyUgcmVkdWNlIDAlCi0xNS8wOS8xMSAwODowMzo1NyBJTkZPIG1hcHJlZHVjZS5Kb2I6ICBtYXAgNjclIHJlZHVjZSAwJQotMTUvMDkvMTEgMDg6MDQ6MDEgSU5GTyBtYXByZWR1Y2UuSm9iOiAgbWFwIDEwMCUgcmVkdWNlIDAlCi0xNS8wOS8xMSAwODowNjoxNyBJTkZPIG1hcHJlZHVjZS5Kb2I6IEpvYiBqb2JfMTQ0MTkxNTkwNzM0N18wMDI4IGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkKLTE1LzA5LzExIDA4OjA2OjE3IElORk8gbWFwcmVkdWNlLkpvYjogQ291bnRlcnM6IDgwCi0gICAgRmlsZSBTeXN0ZW0gQ291bnRlcnMKLSAgICAgICAgRklMRTogTnVtYmVyIG9mIGJ5dGVzIHJlYWQ9MAotICAgICAgICBGSUxFOiBOdW1iZXIgb2YgYnl0ZXMgd3JpdHRlbj00ODM5MTgKLSAgICAgICAgRklMRTogTnVtYmVyIG9mIHJlYWQgb3BlcmF0aW9ucz0wCi0gICAgICAgIEZJTEU6IE51bWJlciBvZiBsYXJnZSByZWFkIG9wZXJhdGlvbnM9MAotICAgICAgICBGSUxFOiBOdW1iZXIgb2Ygd3JpdGUgb3BlcmF0aW9ucz0wCi0gICAgICAgIEhERlM6IE51bWJlciBvZiBieXRlcyByZWFkPTE0NjUKLSAgICAgICAgSERGUzogTnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW49MTc2MAotICAgICAgICBIREZTOiBOdW1iZXIgb2YgcmVhZCBvcGVyYXRpb25zPTM5Ci0gICAgICAgIEhERlM6IE51bWJlciBvZiBsYXJnZSByZWFkIG9wZXJhdGlvbnM9MAotICAgICAgICBIREZTOiBOdW1iZXIgb2Ygd3JpdGUgb3BlcmF0aW9ucz0yMAotICAgIEpvYiBDb3VudGVycwotICAgICAgICBMYXVuY2hlZCBtYXAgdGFza3M9MwotICAgICAgICBPdGhlciBsb2NhbCBtYXAgdGFza3M9MwotICAgICAgICBUb3RhbCB0aW1lIHNwZW50IGJ5IGFsbCBtYXBzIGluIG9jY3VwaWVkIHNsb3RzIChtcyk9NDU4MTA1Ci0gICAgICAgIFRvdGFsIHRpbWUgc3BlbnQgYnkgYWxsIHJlZHVjZXMgaW4gb2NjdXBpZWQgc2xvdHMgKG1zKT0wCi0gICAgICAgIFRvdGFsIHRpbWUgc3BlbnQgYnkgYWxsIG1hcCB0YXNrcyAobXMpPTQ1ODEwNQotICAgICAgICBUb3RhbCB2Y29yZS1zZWNvbmRzIHRha2VuIGJ5IGFsbCBtYXAgdGFza3M9NDU4MTA1Ci0gICAgICAgIFRvdGFsIG1lZ2FieXRlLXNlY29uZHMgdGFrZW4gYnkgYWxsIG1hcCB0YXNrcz00NjkwOTk1MjAKLSAgICBNYXAtUmVkdWNlIEZyYW1ld29yawotICAgICAgICBNYXAgaW5wdXQgcmVjb3Jkcz0zCi0gICAgICAgIE1hcCBvdXRwdXQgcmVjb3Jkcz0wCi0gICAgICAgIElucHV0IHNwbGl0IGJ5dGVzPTEzMgotICAgICAgICBTcGlsbGVkIFJlY29yZHM9MAotICAgICAgICBGYWlsZWQgU2h1ZmZsZXM9MAotICAgICAgICBNZXJnZWQgTWFwIG91dHB1dHM9MAotICAgICAgICBHQyB0aW1lIGVsYXBzZWQgKG1zKT0xNTk0Ci0gICAgICAgIENQVSB0aW1lIHNwZW50IChtcyk9MAotICAgICAgICBQaHlzaWNhbCBtZW1vcnkgKGJ5dGVzKSBzbmFwc2hvdD0wCi0gICAgICAgIFZpcnR1YWwgbWVtb3J5IChieXRlcykgc25hcHNob3Q9MAotICAgICAgICBUb3RhbCBjb21taXR0ZWQgaGVhcCB1c2FnZSAoYnl0ZXMpPTUyNzk1ODAxNgotICAgIEdpcmFwaCBTdGF0cwotICAgICAgICBBZ2dyZWdhdGUgZWRnZXM9MAotICAgICAgICBBZ2dyZWdhdGUgZmluaXNoZWQgdmVydGljZXM9MAotICAgICAgICBBZ2dyZWdhdGUgc2VudCBtZXNzYWdlIG1lc3NhZ2UgYnl0ZXM9MTM1MzUKLSAgICAgICAgQWdncmVnYXRlIHNlbnQgbWVzc2FnZXM9MTg2Ci0gICAgICAgIEFnZ3JlZ2F0ZSB2ZXJ0aWNlcz02Ci0gICAgICAgIEN1cnJlbnQgbWFzdGVyIHRhc2sgcGFydGl0aW9uPTAKLSAgICAgICAgQ3VycmVudCB3b3JrZXJzPTIKLSAgICAgICAgTGFzdCBjaGVja3BvaW50ZWQgc3VwZXJzdGVwPTAKLSAgICAgICAgU2VudCBtZXNzYWdlIGJ5dGVzPTQzOAotICAgICAgICBTZW50IG1lc3NhZ2VzPTYKLSAgICAgICAgU3VwZXJzdGVwPTMxCi0gICAgR2lyYXBoIFRpbWVycwotICAgICAgICBJbml0aWFsaXplIChtcyk9Mjk5NgotICAgICAgICBJbnB1dCBzdXBlcnN0ZXAgKG1zKT01MjA5Ci0gICAgICAgIFNldHVwIChtcyk9NTkKLSAgICAgICAgU2h1dGRvd24gKG1zKT05MzI0Ci0gICAgICAgIFN1cGVyc3RlcCAwIEdpcmFwaENvbXB1dGF0aW9uIChtcyk9Mzg2MQotICAgICAgICBTdXBlcnN0ZXAgMSBHaXJhcGhDb21wdXRhdGlvbiAobXMpPTQwMjcKLSAgICAgICAgU3VwZXJzdGVwIDEwIEdpcmFwaENvbXB1dGF0aW9uIChtcyk9NDAwMAotICAgICAgICBTdXBlcnN0ZXAgMTEgR2lyYXBoQ29tcHV0YXRpb24gKG1zKT00MDA0Ci0gICAgICAgIFN1cGVyc3RlcCAxMiBHaXJhcGhDb21wdXRhdGlvbiAobXMpPTM5OTkKLSAgICAgICAgU3VwZXJzdGVwIDEzIEdpcmFwaENvbXB1dGF0aW9uIChtcyk9NDAwMAotICAgICAgICBTdXBlcnN0ZXAgMTQgR2lyYXBoQ29tcHV0YXRpb24gKG1zKT00MDA1Ci0gICAgICAgIFN1cGVyc3RlcCAxNSBHaXJhcGhDb21wdXRhdGlvbiAobXMpPTQwMDMKLSAgICAgICAgU3VwZXJzdGVwIDE2IEdpcmFwaENvbXB1dGF0aW9uIChtcyk9NDAwMQotICAgICAgICBTdXBlcnN0ZXAgMTcgR2lyYXBoQ29tcHV0YXRpb24gKG1zKT00MDA3Ci0gICAgICAgIFN1cGVyc3RlcCAxOCBHaXJhcGhDb21wdXRhdGlvbiAobXMpPTM5OTgKLSAgICAgICAgU3VwZXJzdGVwIDE5IEdpcmFwaENvbXB1dGF0aW9uIChtcyk9NDAwNgotICAgICAgICBTdXBlcnN0ZXAgMiBHaXJhcGhDb21wdXRhdGlvbiAobXMpPTQwMDcKLSAgICAgICAgU3VwZXJzdGVwIDIwIEdpcmFwaENvbXB1dGF0aW9uIChtcyk9Mzk5NgotICAgICAgICBTdXBlcnN0ZXAgMjEgR2lyYXBoQ29tcHV0YXRpb24gKG1zKT00MDA2Ci0gICAgICAgIFN1cGVyc3RlcCAyMiBHaXJhcGhDb21wdXRhdGlvbiAobXMpPTQwMDIKLSAgICAgICAgU3VwZXJzdGVwIDIzIEdpcmFwaENvbXB1dGF0aW9uIChtcyk9Mzk5OAotICAgICAgICBTdXBlcnN0ZXAgMjQgR2lyYXBoQ29tcHV0YXRpb24gKG1zKT00MDAzCi0gICAgICAgIFN1cGVyc3RlcCAyNSBHaXJhcGhDb21wdXRhdGlvbiAobXMpPTQwMDEKLSAgICAgICAgU3VwZXJzdGVwIDI2IEdpcmFwaENvbXB1dGF0aW9uIChtcyk9NDAwMwotICAgICAgICBTdXBlcnN0ZXAgMjcgR2lyYXBoQ29tcHV0YXRpb24gKG1zKT00MDA1Ci0gICAgICAgIFN1cGVyc3RlcCAyOCBHaXJhcGhDb21wdXRhdGlvbiAobXMpPTQwMDIKLSAgICAgICAgU3VwZXJzdGVwIDI5IEdpcmFwaENvbXB1dGF0aW9uIChtcyk9NDAwMQotICAgICAgICBTdXBlcnN0ZXAgMyBHaXJhcGhDb21wdXRhdGlvbiAobXMpPTM5ODgKLSAgICAgICAgU3VwZXJzdGVwIDMwIEdpcmFwaENvbXB1dGF0aW9uIChtcyk9NDI0OAotICAgICAgICBTdXBlcnN0ZXAgNCBHaXJhcGhDb21wdXRhdGlvbiAobXMpPTQwMTAKLSAgICAgICAgU3VwZXJzdGVwIDUgR2lyYXBoQ29tcHV0YXRpb24gKG1zKT0zOTk4Ci0gICAgICAgIFN1cGVyc3RlcCA2IEdpcmFwaENvbXB1dGF0aW9uIChtcyk9Mzk5NgotICAgICAgICBTdXBlcnN0ZXAgNyBHaXJhcGhDb21wdXRhdGlvbiAobXMpPTQwMDUKLSAgICAgICAgU3VwZXJzdGVwIDggR2lyYXBoQ29tcHV0YXRpb24gKG1zKT00MDA5Ci0gICAgICAgIFN1cGVyc3RlcCA5IEdpcmFwaENvbXB1dGF0aW9uIChtcyk9Mzk5NAotICAgICAgICBUb3RhbCAobXMpPTEzODc4OAotICAgIEZpbGUgSW5wdXQgRm9ybWF0IENvdW50ZXJzCi0gICAgICAgIEJ5dGVzIFJlYWQ9MAotICAgIEZpbGUgT3V0cHV0IEZvcm1hdCBDb3VudGVycwotICAgICAgICBCeXRlcyBXcml0dGVuPTAKLSQgaGRmcyBkZnMgLWNhdCBvdXRwdXQvfmcvKgoteyJpZCI6MSwibGFiZWwiOiJwZXJzb24iLCJwcm9wZXJ0aWVzIjp7ImdyZW1saW4ucGFnZVJhbmtWZXJ0ZXhQcm9ncmFtLnBhZ2VSYW5rIjpbeyJpZCI6MzksInZhbHVlIjowLjE1MDAwMDAwMDAwMDAwMDAyfV0sIm5hbWUiOlt7ImlkIjowLCJ2YWx1ZSI6Im1hcmtvIn1dLCJncmVtbGluLnBhZ2VSYW5rVmVydGV4UHJvZ3JhbS5lZGdlQ291bnQiOlt7ImlkIjoxMCwidmFsdWUiOjMuMH1dLCJhZ2UiOlt7ImlkIjoxLCJ2YWx1ZSI6Mjl9XX19Ci17ImlkIjo1LCJsYWJlbCI6InNvZnR3YXJlIiwicHJvcGVydGllcyI6eyJncmVtbGluLnBhZ2VSYW5rVmVydGV4UHJvZ3JhbS5wYWdlUmFuayI6W3siaWQiOjM1LCJ2YWx1ZSI6MC4yMzE4MTI1MDAwMDAwMDAwM31dLCJuYW1lIjpbeyJpZCI6OCwidmFsdWUiOiJyaXBwbGUifV0sImdyZW1saW4ucGFnZVJhbmtWZXJ0ZXhQcm9ncmFtLmVkZ2VDb3VudCI6W3siaWQiOjYsInZhbHVlIjowLjB9XSwibGFuZyI6W3siaWQiOjksInZhbHVlIjoiamF2YSJ9XX19Ci17ImlkIjozLCJsYWJlbCI6InNvZnR3YXJlIiwicHJvcGVydGllcyI6eyJncmVtbGluLnBhZ2VSYW5rVmVydGV4UHJvZ3JhbS5wYWdlUmFuayI6W3siaWQiOjM5LCJ2YWx1ZSI6MC40MDE4MTI1fV0sIm5hbWUiOlt7ImlkIjo0LCJ2YWx1ZSI6ImxvcCJ9XSwiZ3JlbWxpbi5wYWdlUmFua1ZlcnRleFByb2dyYW0uZWRnZUNvdW50IjpbeyJpZCI6MTAsInZhbHVlIjowLjB9XSwibGFuZyI6W3siaWQiOjUsInZhbHVlIjoiamF2YSJ9XX19Ci17ImlkIjo0LCJsYWJlbCI6InBlcnNvbiIsInByb3BlcnRpZXMiOnsiZ3JlbWxpbi5wYWdlUmFua1ZlcnRleFByb2dyYW0ucGFnZVJhbmsiOlt7ImlkIjozOSwidmFsdWUiOjAuMTkyNTAwMDAwMDAwMDAwMDN9XSwibmFtZSI6W3siaWQiOjYsInZhbHVlIjoiam9zaCJ9XSwiZ3JlbWxpbi5wYWdlUmFua1ZlcnRleFByb2dyYW0uZWRnZUNvdW50IjpbeyJpZCI6MTAsInZhbHVlIjoyLjB9XSwiYWdlIjpbeyJpZCI6NywidmFsdWUiOjMyfV19fQoteyJpZCI6MiwibGFiZWwiOiJwZXJzb24iLCJwcm9wZXJ0aWVzIjp7ImdyZW1saW4ucGFnZVJhbmtWZXJ0ZXhQcm9ncmFtLnBhZ2VSYW5rIjpbeyJpZCI6MzUsInZhbHVlIjowLjE5MjUwMDAwMDAwMDAwMDAzfV0sIm5hbWUiOlt7ImlkIjoyLCJ2YWx1ZSI6InZhZGFzIn1dLCJncmVtbGluLnBhZ2VSYW5rVmVydGV4UHJvZ3JhbS5lZGdlQ291bnQiOlt7ImlkIjo2LCJ2YWx1ZSI6MC4wfV0sImFnZSI6W3siaWQiOjMsInZhbHVlIjoyN31dfX0KLXsiaWQiOjYsImxhYmVsIjoicGVyc29uIiwicHJvcGVydGllcyI6eyJncmVtbGluLnBhZ2VSYW5rVmVydGV4UHJvZ3JhbS5wYWdlUmFuayI6W3siaWQiOjM1LCJ2YWx1ZSI6MC4xNTAwMDAwMDAwMDAwMDAwMn1dLCJuYW1lIjpbeyJpZCI6MTAsInZhbHVlIjoicGV0ZXIifV0sImdyZW1saW4ucGFnZVJhbmtWZXJ0ZXhQcm9ncmFtLmVkZ2VDb3VudCI6W3siaWQiOjYsInZhbHVlIjoxLjB9XSwiYWdlIjpbeyJpZCI6MTEsInZhbHVlIjozNX1dfX0KLS0tLS0KLQotVmVydGV4IDQgKCJqb3NoIikgaXMgaXNvbGF0ZWQgYmVsb3c6Ci0KLVtzb3VyY2UsanNdCi0tLS0tCi17Ci0gICJpZCI6NCwKLSAgImxhYmVsIjoicGVyc29uIiwKLSAgInByb3BlcnRpZXMiOiB7Ci0gICAgImdyZW1saW4ucGFnZVJhbmtWZXJ0ZXhQcm9ncmFtLnBhZ2VSYW5rIjpbeyJpZCI6MzksInZhbHVlIjowLjE5MjUwMDAwMDAwMDAwMDAzfV0sCi0gICAgIm5hbWUiOlt7ImlkIjo2LCJ2YWx1ZSI6Impvc2gifV0sCi0gICAgImdyZW1saW4ucGFnZVJhbmtWZXJ0ZXhQcm9ncmFtLmVkZ2VDb3VudCI6W3siaWQiOjEwLCJ2YWx1ZSI6Mi4wfV0sCi0gICAgImFnZSI6W3siaWQiOjcsInZhbHVlIjozMn1dfQotICB9Ci19Ci0tLS0tCmRpZmYgLS1naXQgYS9kb2NzL3NyYy9yZWZlcmVuY2UvaW1wbGVtZW50YXRpb25zLWhhZG9vcC1zdGFydC5hc2NpaWRvYyBiL2RvY3Mvc3JjL3JlZmVyZW5jZS9pbXBsZW1lbnRhdGlvbnMtaGFkb29wLXN0YXJ0LmFzY2lpZG9jCmluZGV4IDMxZWNmNmIuLjRkY2QxM2IgMTAwNjQ0Ci0tLSBhL2RvY3Mvc3JjL3JlZmVyZW5jZS9pbXBsZW1lbnRhdGlvbnMtaGFkb29wLXN0YXJ0LmFzY2lpZG9jCisrKyBiL2RvY3Mvc3JjL3JlZmVyZW5jZS9pbXBsZW1lbnRhdGlvbnMtaGFkb29wLXN0YXJ0LmFzY2lpZG9jCkBAIC0yOCwxNSArMjgsMTQgQEAKIAogaW1hZ2U6aGFkb29wLWxvZ28tbm90ZXh0LnBuZ1t3aWR0aD0xMDAsZmxvYXQ9bGVmdF0gbGluazpodHRwOi8vaGFkb29wLmFwYWNoZS5vcmcvW0hhZG9vcF0gaXMgYSBkaXN0cmlidXRlZAogY29tcHV0aW5nIGZyYW1ld29yayB0aGF0IGlzIHVzZWQgdG8gcHJvY2VzcyBkYXRhIHJlcHJlc2VudGVkIGFjcm9zcyBhIG11bHRpLW1hY2hpbmUgY29tcHV0ZSBjbHVzdGVyLiBXaGVuIHRoZQotZGF0YSBpbiB0aGUgSGFkb29wIGNsdXN0ZXIgcmVwcmVzZW50cyBhIFRpbmtlclBvcDMgZ3JhcGgsIHRoZW4gSGFkb29wLUdyZW1saW4gY2FuIGJlIHVzZWQgdG8gcHJvY2VzcyB0aGUgZ3JhcGgKLXVzaW5nIGJvdGggVGlua2VyUG9wMydzIE9MVFAgYW5kIE9MQVAgZ3JhcGggY29tcHV0aW5nIG1vZGVscy4KK2RhdGEgaW4gdGhlIEhhZG9vcCBjbHVzdGVyIHJlcHJlc2VudHMgYSBUaW5rZXJQb3AgZ3JhcGgsIHRoZW4gSGFkb29wLUdyZW1saW4gY2FuIGJlIHVzZWQgdG8gcHJvY2VzcyB0aGUgZ3JhcGgKK3VzaW5nIGJvdGggVGlua2VyUG9wJ3MgT0xUUCBhbmQgT0xBUCBncmFwaCBjb21wdXRpbmcgbW9kZWxzLgogCiBJTVBPUlRBTlQ6IFRoaXMgc2VjdGlvbiBhc3N1bWVzIHRoYXQgdGhlIHVzZXIgaGFzIGEgSGFkb29wIDIueCBjbHVzdGVyIGZ1bmN0aW9uaW5nLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBnZXR0aW5nCiBzdGFydGVkIHdpdGggSGFkb29wLCBwbGVhc2Ugc2VlIHRoZQogbGluazpodHRwOi8vaGFkb29wLmFwYWNoZS5vcmcvZG9jcy9yMi43LjIvaGFkb29wLXByb2plY3QtZGlzdC9oYWRvb3AtY29tbW9uL1NpbmdsZUNsdXN0ZXIuaHRtbFtTaW5nbGUgTm9kZSBTZXR1cF0KLXR1dG9yaWFsLiBNb3Jlb3ZlciwgaWYgdXNpbmcgYEdpcmFwaEdyYXBoQ29tcHV0ZXJgIG9yIGBTcGFya0dyYXBoQ29tcHV0ZXJgIGl0IGlzIGFkdmlzYWJsZSB0aGF0IHRoZSByZWFkZXIgYWxzbwotZmFtaWxpYXJpemUgdGhlaXIgc2VsZiB3aXRoIEdpcmFwaCAobGluazpodHRwOi8vZ2lyYXBoLmFwYWNoZS5vcmcvcXVpY2tfc3RhcnQuaHRtbFtHZXR0aW5nIFN0YXJ0ZWRdKSBhbmQgU3BhcmsKLShsaW5rOmh0dHA6Ly9zcGFyay5hcGFjaGUub3JnL2RvY3MvbGF0ZXN0L3F1aWNrLXN0YXJ0Lmh0bWxbUXVpY2sgU3RhcnRdKS4KK3R1dG9yaWFsLiBNb3Jlb3ZlciwgaWYgdXNpbmcgYFNwYXJrR3JhcGhDb21wdXRlcmAgaXQgaXMgYWR2aXNhYmxlIHRoYXQgdGhlIHJlYWRlciBhbHNvCitmYW1pbGlhcml6ZSB0aGVpciBzZWxmIHdpdGggYW5kIFNwYXJrIChsaW5rOmh0dHA6Ly9zcGFyay5hcGFjaGUub3JnL2RvY3MvbGF0ZXN0L3F1aWNrLXN0YXJ0Lmh0bWxbUXVpY2sgU3RhcnRdKS4KIAogPT09IEluc3RhbGxpbmcgSGFkb29wLUdyZW1saW4KIApAQCAtODcsMTEgKzg2LDcgQEAKIE5vdGUgdGhhdCB0aGUgbG9jYXRpb25zIGluIGBIQURPT1BfR1JFTUxJTl9MSUJTYCBjYW4gYmUgY29sb24tc2VwYXJhdGVkIChgOmApIGFuZCBhbGwgamFycyBmcm9tIGFsbCBsb2NhdGlvbnMgd2lsbAogYmUgbG9hZGVkIGludG8gdGhlIGNsdXN0ZXIuIExvY2F0aW9ucyBjYW4gYmUgbG9jYWwgcGF0aHMgKGUuZy4gYC9wYXRoL3RvL2xpYnNgKSwgYnV0IG1heSBhbHNvIGJlIHByZWZpeGVkIHdpdGggYSBmaWxlCiBzY2hlbWUgdG8gcmVmZXJlbmNlIGZpbGVzIG9yIGRpcmVjdG9yaWVzIGluIGRpZmZlcmVudCBmaWxlIHN5c3RlbXMgKGUuZy4gYGhkZnM6Ly8vcGF0aC90by9kaXN0cmlidXRlZC9saWJzYCkuCi1UeXBpY2FsbHksIG9ubHkgdGhlIGphcnMgb2YgdGhlIHJlc3BlY3RpdmUgR3JhcGhDb21wdXRlciBhcmUgcmVxdWlyZWQgdG8gYmUgbG9hZGVkIChlLmcuIGBHaXJhcGhHcmFwaENvbXB1dGVyYCBwbHVnaW4gbGliCi1kaXJlY3RvcnkpLgotCi1bc291cmNlLHNoZWxsXQotZXhwb3J0IEhBRE9PUF9HUkVNTElOX0xJQlM9L3Vzci9sb2NhbC9ncmVtbGluLWNvbnNvbGUvZXh0L2dpcmFwaC1ncmVtbGluL2xpYgorVHlwaWNhbGx5LCBvbmx5IHRoZSBqYXJzIG9mIHRoZSByZXNwZWN0aXZlIGBHcmFwaENvbXB1dGVyYCBhcmUgcmVxdWlyZWQgdG8gYmUgbG9hZGVkLgogCiA9PT0gUHJvcGVydGllcyBGaWxlcwogCkBAIC0xMTMsMjEgKzEwOCw5IEBACiBzcGFyay5leGVjdXRvci5tZW1vcnk9MWcKIHNwYXJrLnNlcmlhbGl6ZXI9b3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zcGFyay5zdHJ1Y3R1cmUuaW8uZ3J5by5HcnlvU2VyaWFsaXplcgogZ3JlbWxpbi5zcGFyay5wZXJzaXN0Q29udGV4dD10cnVlCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIEdpcmFwaEdyYXBoQ29tcHV0ZXIgQ29uZmlndXJhdGlvbiAjCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi1naXJhcGgubWluV29ya2Vycz0yCi1naXJhcGgubWF4V29ya2Vycz0yCi1naXJhcGgudXNlT3V0T2ZDb3JlR3JhcGg9dHJ1ZQotZ2lyYXBoLnVzZU91dE9mQ29yZU1lc3NhZ2VzPXRydWUKLW1hcHJlZHVjZS5tYXAuamF2YS5vcHRzPS1YbXgxMDI0bQotbWFwcmVkdWNlLnJlZHVjZS5qYXZhLm9wdHM9LVhteDEwMjRtCi1naXJhcGgubnVtSW5wdXRUaHJlYWRzPTIKLWdpcmFwaC5udW1Db21wdXRlVGhyZWFkcz0yCiAKIEEgcmV2aWV3IG9mIHRoZSBIYWRvb3AtR3JlbWxpbiBzcGVjaWZpYyBwcm9wZXJ0aWVzIGFyZSBwcm92aWRlZCBpbiB0aGUgdGFibGUgYmVsb3cuIEZvciB0aGUgcmVzcGVjdGl2ZSBPTEFQCi1lbmdpbmVzICg8PHNwYXJrZ3JhcGhjb21wdXRlcixgU3BhcmtHcmFwaENvbXB1dGVyYD4+IG9yIDw8Z2lyYXBoZ3JhcGhjb21wdXRlcixgR2lyYXBoR3JhcGhDb21wdXRlcmA+PikgcmVmZXIKLXRvIHRoZWlyIHJlc3BlY3RpdmUgZG9jdW1lbnRhdGlvbiBmb3IgY29uZmlndXJhdGlvbiBvcHRpb25zLgorZW5naW5lcyAoPDxzcGFya2dyYXBoY29tcHV0ZXIsYFNwYXJrR3JhcGhDb21wdXRlcmA+PiByZWZlciB0byB0aGVpciByZXNwZWN0aXZlIGRvY3VtZW50YXRpb24gZm9yIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4KIAogW3dpZHRoPSIxMDAlIixjb2xzPSIyLDEwIixvcHRpb25zPSJoZWFkZXIiXQogfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpAQCAtMTQ1LDcgKzEyOCw3IEBACiBjYW4gYmUgYWRkZWQgYXMgbmVlZGVkIHRvIHR1bmUgYW5kIHBhcmFtZXRlcml6ZSB0aGUgZXhlY3V0ZWQgSGFkb29wLUdyZW1saW4gam9iIG9uIHRoZSByZXNwZWN0aXZlIEhhZG9vcCBjbHVzdGVyLgogCiBJTVBPUlRBTlQ6IEFzIHRoZSBzaXplIG9mIHRoZSBncmFwaHMgYmVpbmcgcHJvY2Vzc2VkIGJlY29tZXMgbGFyZ2UsIGl0IGlzIGltcG9ydGFudCB0byBmdWxseSB1bmRlcnN0YW5kIGhvdyB0aGUKLXVuZGVybHlpbmcgT0xBUCBlbmdpbmUgKGUuZy4gU3BhcmssIEdpcmFwaCwgZXRjLikgd29ya3MgYW5kIHVuZGVyc3RhbmQgdGhlIG51bWVyb3VzIHBhcmFtZXRlcml6YXRpb25zIG9mZmVyZWQgYnkKK3VuZGVybHlpbmcgT0xBUCBlbmdpbmUgKGUuZy4gU3BhcmssIGV0Yy4pIHdvcmtzIGFuZCB1bmRlcnN0YW5kIHRoZSBudW1lcm91cyBwYXJhbWV0ZXJpemF0aW9ucyBvZmZlcmVkIGJ5CiB0aGVzZSBzeXN0ZW1zLiBTdWNoIGtub3dsZWRnZSBjYW4gaGVscCBhbGxldmlhdGUgb3V0IG9mIG1lbW9yeSBleGNlcHRpb25zLCBzbG93IGxvYWQgdGltZXMsIHNsb3cgcHJvY2Vzc2luZyB0aW1lcywKIGdhcmJhZ2UgY29sbGVjdGlvbiBpc3N1ZXMsIGV0Yy4KIApAQCAtMTc3LDIzICsxNjAsMTcgQEAKIGBHcmFwaENvbXB1dGVyYC4gVGhlIE9MVFAgZXhhbXBsZXMgcHJlc2VudGVkIHByZXZpb3VzbHkgYXJlIHJlcHJvZHVjZWQgYmVsb3csIGJ1dCB1c2luZyBgVHJhdmVyc2FsVmVydGV4UHJvZ3JhbWAKIGZvciB0aGUgZXhlY3V0aW9uIG9mIHRoZSBHcmVtbGluIHRyYXZlcnNhbC4KIAotQSBgR3JhcGhgIGluIFRpbmtlclBvcDMgY2FuIHN1cHBvcnQgYW55IG51bWJlciBvZiBgR3JhcGhDb21wdXRlcmAgaW1wbGVtZW50YXRpb25zLiBPdXQgb2YgdGhlIGJveCwgSGFkb29wLUdyZW1saW4KK0EgYEdyYXBoYCBpbiBUaW5rZXJQb3AgY2FuIHN1cHBvcnQgYW55IG51bWJlciBvZiBgR3JhcGhDb21wdXRlcmAgaW1wbGVtZW50YXRpb25zLiBPdXQgb2YgdGhlIGJveCwgSGFkb29wLUdyZW1saW4KIHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgdHdvIGltcGxlbWVudGF0aW9ucy4KIAotKiA8PHNwYXJrZ3JhcGhjb21wdXRlcixgU3BhcmtHcmFwaENvbXB1dGVyYD4+OiBMZXZlcmFnZXMgQXBhY2hlIFNwYXJrIHRvIGV4ZWN1dGUgVGlua2VyUG9wMyBPTEFQIGNvbXB1dGF0aW9ucy4KKyogPDxzcGFya2dyYXBoY29tcHV0ZXIsYFNwYXJrR3JhcGhDb21wdXRlcmA+PjogTGV2ZXJhZ2VzIEFwYWNoZSBTcGFyayB0byBleGVjdXRlIFRpbmtlclBvcCBPTEFQIGNvbXB1dGF0aW9ucy4KICoqIFRoZSBncmFwaCBtYXkgZml0IHdpdGhpbiB0aGUgdG90YWwgUkFNIG9mIHRoZSBjbHVzdGVyIChzdXBwb3J0cyBsYXJnZXIgZ3JhcGhzKS4gTWVzc2FnZSBwYXNzaW5nIGlzIGNvb3JkaW5hdGVkIHZpYQogU3BhcmsgbWFwL3JlZHVjZS9qb2luIG9wZXJhdGlvbnMgb24gaW4tbWVtb3J5IGFuZCBkaXNrLWNhY2hlZCBkYXRhIChhdmVyYWdlIHNwZWVkIHRyYXZlcnNhbHMpLgotKiA8PGdpcmFwaGdyYXBoY29tcHV0ZXIsYEdpcmFwaEdyYXBoQ29tcHV0ZXJgPj46IExldmVyYWdlcyBBcGFjaGUgR2lyYXBoIHRvIGV4ZWN1dGUgVGlua2VyUG9wMyBPTEFQIGNvbXB1dGF0aW9ucy4KLSoqIFRoZSBncmFwaCBzaG91bGQgZml0IHdpdGhpbiB0aGUgdG90YWwgUkFNIG9mIHRoZSBIYWRvb3AgY2x1c3RlciAoZ3JhcGggc2l6ZSByZXN0cmljdGlvbiksIHRob3VnaCAib3V0LW9mLWNvcmUiCi1wcm9jZXNzaW5nIGlzIHBvc3NpYmxlLiBNZXNzYWdlIHBhc3NpbmcgaXMgY29vcmRpbmF0ZWQgdmlhIFpvb0tlZXBlciBmb3IgdGhlIGluLW1lbW9yeSBncmFwaCAoc3BlZWR5IHRyYXZlcnNhbHMpLgogCiBUSVA6IGltYWdlOmdyZW1saW4tc3VnYXIucG5nW3dpZHRoPTUwLGZsb2F0PWxlZnRdIEZvciB0aG9zZSB3YW50aW5nIHRvIHVzZSB0aGUgPDxzdWdhci1wbHVnaW4sU3VnYXJQbHVnaW4+PiB3aXRoCiB0aGVpciBzdWJtaXR0ZWQgdHJhdmVyc2FsLCBkbyBgOnJlbW90ZSBjb25maWcgdXNlU3VnYXIgdHJ1ZWAgYXMgd2VsbCBhcyBgOnBsdWdpbiB1c2UgdGlua2VycG9wLnN1Z2FyYCBhdCB0aGUgc3RhcnQgb2YKIHRoZSBHcmVtbGluIENvbnNvbGUgc2Vzc2lvbiBpZiBpdCBpcyBub3QgYWxyZWFkeSBhY3RpdmF0ZWQuCiAKLU5vdGUgdGhhdCBgU3BhcmtHcmFwaENvbXB1dGVyYCBhbmQgYEdpcmFwaEdyYXBoQ29tcHV0ZXJgIGFyZSBsb2FkZWQgdmlhIHRoZWlyIHJlc3BlY3RpdmUgcGx1Z2lucy4gVHlwaWNhbGx5IG9ubHkKLW9uZSBwbHVnaW4gb3IgdGhlIG90aGVyIGlzIGxvYWRlZCBkZXBlbmRpbmcgb24gdGhlIGRlc2lyZWQgYEdyYXBoQ29tcHV0ZXJgIHRvIHVzZS4KLQogW3NvdXJjZSx0ZXh0XQogLS0tLQogJCBiaW4vZ3JlbWxpbi5zaApAQCAtMjA1LDggKzE4Miw2IEBACiBwbHVnaW4gYWN0aXZhdGVkOiB0aW5rZXJwb3AudXRpbGl0aWVzCiBwbHVnaW4gYWN0aXZhdGVkOiB0aW5rZXJwb3AudGlua2VyZ3JhcGgKIHBsdWdpbiBhY3RpdmF0ZWQ6IHRpbmtlcnBvcC5oYWRvb3AKLWdyZW1saW4+IDppbnN0YWxsIG9yZy5hcGFjaGUudGlua2VycG9wIGdpcmFwaC1ncmVtbGluIHgueS56Ci09PT5sb2FkZWQ6IFtvcmcuYXBhY2hlLnRpbmtlcnBvcCwgZ2lyYXBoLWdyZW1saW4sIHgueS56XSAtIHJlc3RhcnQgdGhlIGNvbnNvbGUgdG8gdXNlIFt0aW5rZXJwb3AuZ2lyYXBoXQogZ3JlbWxpbj4gOmluc3RhbGwgb3JnLmFwYWNoZS50aW5rZXJwb3Agc3BhcmstZ3JlbWxpbiB4LnkuegogPT0+bG9hZGVkOiBbb3JnLmFwYWNoZS50aW5rZXJwb3AsIHNwYXJrLWdyZW1saW4sIHgueS56XSAtIHJlc3RhcnQgdGhlIGNvbnNvbGUgdG8gdXNlIFt0aW5rZXJwb3Auc3BhcmtdCiBncmVtbGluPiA6cQpAQCAtMjE5LDEzICsxOTQsMTAgQEAKIHBsdWdpbiBhY3RpdmF0ZWQ6IHRpbmtlcnBvcC51dGlsaXRpZXMKIHBsdWdpbiBhY3RpdmF0ZWQ6IHRpbmtlcnBvcC50aW5rZXJncmFwaAogcGx1Z2luIGFjdGl2YXRlZDogdGlua2VycG9wLmhhZG9vcAotZ3JlbWxpbj4gOnBsdWdpbiB1c2UgdGlua2VycG9wLmdpcmFwaAotPT0+dGlua2VycG9wLmdpcmFwaCBhY3RpdmF0ZWQKIGdyZW1saW4+IDpwbHVnaW4gdXNlIHRpbmtlcnBvcC5zcGFyawogPT0+dGlua2VycG9wLnNwYXJrIGFjdGl2YXRlZAogLS0tLQogCi1XQVJOSU5HOiBIYWRvb3AsIFNwYXJrLCBhbmQgR2lyYXBoIGFsbCBkZXBlbmQgb24gbWFueSBvZiB0aGUgc2FtZSBsaWJyYXJpZXMgKGUuZy4gWm9vS2VlcGVyLCBTbmFwcHksIE5ldHR5LCBHdWF2YSwKK1dBUk5JTkc6IEhhZG9vcCBhbmQgU3BhcmsgYWxsIGRlcGVuZCBvbiBtYW55IG9mIHRoZSBzYW1lIGxpYnJhcmllcyAoZS5nLiBab29LZWVwZXIsIFNuYXBweSwgTmV0dHksIEd1YXZhLAogZXRjLikuIFVuZm9ydHVuYXRlbHksIHR5cGljYWxseSB0aGVzZSBkZXBlbmRlbmNpZXMgYXJlIG5vdCB0byB0aGUgc2FtZSB2ZXJzaW9ucyBvZiB0aGUgcmVzcGVjdGl2ZSBsaWJyYXJpZXMuIEFzIHN1Y2gsCi1pdCBpcyBiZXN0IHRvICpub3QqIGhhdmUgYm90aCBTcGFyayBhbmQgR2lyYXBoIHBsdWdpbnMgbG9hZGVkIGluIHRoZSBzYW1lIGNvbnNvbGUgc2Vzc2lvbiBub3IgaW4gdGhlIHNhbWUgSmF2YQotcHJvamVjdCAodGhvdWdoIGludGVsbGlnZW50IGA8ZXhjbHVzaW9uPmAtdXNhZ2UgY2FuIGhlbHAgYWxsZXZpYXRlIGNvbmZsaWN0cyBpbiBhIEphdmEgcHJvamVjdCkuCitpdCBpcyBtYXkgYmUgbmVjZXNzYXJ5IHRvIG1hbnVhbGx5IGNsZWFudXAgZGVwZW5kZW5jeSBjb25mbGljdHMgYW1vbmcgZGlmZmVyZW50IHBsdWdpbnMuCmRpZmYgLS1naXQgYS9kb2NzL3NyYy9yZWZlcmVuY2UvaW1wbGVtZW50YXRpb25zLW5lbzRqLmFzY2lpZG9jIGIvZG9jcy9zcmMvcmVmZXJlbmNlL2ltcGxlbWVudGF0aW9ucy1uZW80ai5hc2NpaWRvYwppbmRleCAwNTQ1MzM3Li5hOTRiNzMyIDEwMDY0NAotLS0gYS9kb2NzL3NyYy9yZWZlcmVuY2UvaW1wbGVtZW50YXRpb25zLW5lbzRqLmFzY2lpZG9jCisrKyBiL2RvY3Mvc3JjL3JlZmVyZW5jZS9pbXBsZW1lbnRhdGlvbnMtbmVvNGouYXNjaWlkb2MKQEAgLTYyLDcgKzYyLDcgQEAKIAogPT09IEluZGljZXMKIAotTmVvNGogMi54IGluZGljZXMgbGV2ZXJhZ2UgdmVydGV4IGxhYmVscyB0byBwYXJ0aXRpb24gdGhlIGluZGV4IHNwYWNlLiBUaW5rZXJQb3AzIGRvZXMgbm90IHByb3ZpZGUgbWV0aG9kIGludGVyZmFjZXMKK05lbzRqIDIueCBpbmRpY2VzIGxldmVyYWdlIHZlcnRleCBsYWJlbHMgdG8gcGFydGl0aW9uIHRoZSBpbmRleCBzcGFjZS4gVGlua2VyUG9wIGRvZXMgbm90IHByb3ZpZGUgbWV0aG9kIGludGVyZmFjZXMKIGZvciBkZWZpbmluZyBzY2hlbWFzL2luZGljZXMgZm9yIHRoZSB1bmRlcmx5aW5nIGdyYXBoIHN5c3RlbS4gVGh1cywgaW4gb3JkZXIgdG8gY3JlYXRlIGluZGljZXMsIGl0IGlzIGltcG9ydGFudCB0bwogY2FsbCB0aGUgTmVvNGogQVBJIGRpcmVjdGx5LgogCkBAIC05Myw4ICs5Myw4IEBACiBbZ3JlbWxpbi1ncm9vdnldCiAtLS0tCiBncmFwaCA9IE5lbzRqR3JhcGgub3BlbignL3RtcC9uZW80aicpCi1ncmFwaC5pbyhncmFwaG1sKCkpLnJlYWRHcmFwaCgnZGF0YS9ncmF0ZWZ1bC1kZWFkLnhtbCcpCiBnID0gZ3JhcGgudHJhdmVyc2FsKCkKK2cuaW8oJ2RhdGEvZ3JhdGVmdWwtZGVhZC54bWwnKS5yZWFkKCkuaXRlcmF0ZSgpCiBnLnR4KCkuY29tbWl0KCkKIGNsb2NrKDEwMDApIHtnLlYoKS5oYXNMYWJlbCgnYXJ0aXN0JykuaGFzKCduYW1lJywnR2FyY2lhJykuaXRlcmF0ZSgpfSAgPDE+CiBncmFwaC5jeXBoZXIoIkNSRUFURSBJTkRFWCBPTiA6YXJ0aXN0KG5hbWUpIikgPDI+CkBAIC0xMjQsNyArMTI0LDggQEAKIFtncmVtbGluLWdyb292eV0KIC0tLS0KIGdyYXBoID0gTmVvNGpHcmFwaC5vcGVuKCcvdG1wL25lbzRqJykKLWdyYXBoLmlvKGdyeW8oKSkucmVhZEdyYXBoKCdkYXRhL3RpbmtlcnBvcC1tb2Rlcm4ua3J5bycpCitnID0gZ3JhcGgudHJhdmVyc2FsKCkKK2cuaW8oJ2RhdGEvdGlua2VycG9wLW1vZGVybi5rcnlvJykucmVhZCgpLml0ZXJhdGUoKQogZ3JhcGguY3lwaGVyKCdNQVRDSCAoYSB7bmFtZToibWFya28ifSkgUkVUVVJOIGEnKQogZ3JhcGguY3lwaGVyKCdNQVRDSCAoYSB7bmFtZToibWFya28ifSkgUkVUVVJOIGEnKS5zZWxlY3QoJ2EnKS5vdXQoJ2tub3dzJykudmFsdWVzKCduYW1lJykKIGdyYXBoLmNsb3NlKCkKQEAgLTEzOCw3ICsxMzksNyBAQAogCiA9PT0gTXVsdGktTGFiZWwKIAotVGlua2VyUG9wMyByZXF1aXJlcyBldmVyeSBgRWxlbWVudGAgdG8gaGF2ZSBhIHNpbmdsZSwgaW1tdXRhYmxlIHN0cmluZyBsYWJlbCAoaS5lLiBhIGBWZXJ0ZXhgLCBgRWRnZWAsIGFuZAorVGlua2VyUG9wIHJlcXVpcmVzIGV2ZXJ5IGBFbGVtZW50YCB0byBoYXZlIGEgc2luZ2xlLCBpbW11dGFibGUgc3RyaW5nIGxhYmVsIChpLmUuIGEgYFZlcnRleGAsIGBFZGdlYCwgYW5kCiBgVmVydGV4UHJvcGVydHlgKS4gSW4gTmVvNGosIGEgYE5vZGVgICh2ZXJ0ZXgpIGNhbiBoYXZlIGFuCiBsaW5rOmh0dHA6Ly9uZW80ai5jb20vZG9jcy9kZXZlbG9wZXItbWFudWFsL2N1cnJlbnQvI2dyYXBoZGItbmVvNGotbGFiZWxzW2FyYml0cmFyeSBudW1iZXIgb2YgbGFiZWxzXSB3aGlsZSBhIGBSZWxhdGlvbnNoaXBgCiAoZWRnZSkgY2FuIGhhdmUgb25lIGFuZCBvbmx5IG9uZS4gRnVydGhlcm1vcmUsIGluIE5lbzRqLCBgTm9kZWAgbGFiZWxzIGFyZSBtdXRhYmxlIHdoaWxlIGBSZWxhdGlvbnNoaXBgIGxhYmVscyBhcmUKQEAgLTE4Nyw5ICsxODgsODUgQEAKIGZpbHRlcmluZy9sb29raW5nLXVwIHZlcnRpY2VzIGJ5IHRoZWlyIGxhYmVsKHMpIGFzIHRoZSBzdGFuZGFyZCBgUC5lcSgpYCBkb2VzIGEgZGlyZWN0IG1hdGNoIG9uIHRoZSBgOjpgLXJlcHJlc2VudGF0aW9uCiBvZiBgdmVydGV4LmxhYmVsKClgCiAKKz09PSBDb25maWd1cmF0aW9uCisKK1RoZSBwcmV2aW91cyBleGFtcGxlcyBzaG93ZWQgaG93IHRvIGNyZWF0ZSBhIGBOZW80akdyYXBoYCB3aXRoIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24sIGJ1dCBOZW80aiBoYXMgbWFueSBvdGhlcgorb3B0aW9ucyB0byBpbml0aWFsaXplIGl0IHRoYXQgYXJlIG5hdGl2ZSB0byBOZW80ai4gSW4gb3JkZXIgdG8gZXhwb3NlIHRob3NlLCBgTmVvNGpHcmFwaGAgaGFzIGFuIGBvcGVuKENvbmZpZ3VyYXRpb24pYAorbWV0aG9kIHdoaWNoIHRha2VzIGEgc3RhbmRhcmQgQXBhY2hlIENvbmZpZ3VyYXRpb24gb2JqZWN0LiBUaGUgc2FtZSBjYW4gYmUgc2FpZCBvZiB0aGUgc3RhbmRhcmQgbWV0aG9kIGZvciBjcmVhdGluZworYEdyYXBoYCBpbnN0YW5jZXMgd2l0aCBgR3JhcGhGYWN0b3J5YC4gRWFjaCBjb25maWd1cmF0aW9uIGtleSB0aGF0IE5lbzRqIGhhcyBtdXN0IHNpbXBseSBiZSBwcmVmaXhlZCB3aXRoCitgZ3JlbWxpbi5uZW80ai5jb25mLmAgYW5kIHRoZSBzdWZmaXggY29uZmlndXJhdGlvbiBrZXkgd2lsbCBiZSBwYXNzZWQgdGhyb3VnaCB0byBOZW80ai4KKworTk9URTogR3JlbWxpbiBTZXJ2ZXIgdXNlcyBgR3JhcGhGYWN0b3J5YCB0byBpbnN0YW50aWF0ZSB0aGUgYEdyYXBoYCBpbnN0YW5jZXMgaXQgbWFuYWdlcywgc28gdGhlIGV4YW1wbGUgYmVsb3cgaXMgYWxzbworcmVsZXZhbnQgZm9yIHRoYXQgcHVycG9zZSBhcyB3ZWxsLgorCitGb3IgZXhhbXBsZSwgYSBzdGFuZGFyZCBjb25maWd1cmF0aW9uIGZpbGUgY2FsbGVkIGBuZW80ai5wcm9wZXJ0aWVzYCB0aGF0IHNldHMgdGhlIE5lbzRqCitgZGJtcy5pbmRleF9zYW1wbGluZy5iYWNrZ3JvdW5kX2VuYWJsZWRgIHNldHRpbmcgbWlnaHQgbG9vayBsaWtlOgorCitbc291cmNlLHByb3BlcnRpZXNdCistLS0tCitncmVtbGluLmdyYXBoPW9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ubmVvNGouc3RydWN0dXJlLk5lbzRqR3JhcGgKK2dyZW1saW4ubmVvNGouZGlyZWN0b3J5PS90bXAvbmVvNGoKK2dyZW1saW4ubmVvNGouY29uZi5kYm1zLmluZGV4X3NhbXBsaW5nLmJhY2tncm91bmRfZW5hYmxlZD10cnVlCistLS0tCisKK3doaWNoIGNhbiB0aGVuIGJlIHVzZWQgYXMgZm9sbG93czoKKworW3NvdXJjZSx0ZXh0XQorLS0tLQorZ3JlbWxpbj4gZ3JhcGggPSBHcmFwaEZhY3Rvcnkub3BlbignbmVvNGoucHJvcGVydGllcycpCis9PT5uZW80amdyYXBoW2NvbW11bml0eSBzaW5nbGUgWy90bXAvbmVvNGpdXQorZ3JlbWxpbj4gZyA9IGdyYXBoLnRyYXZlcnNhbCgpCis9PT5ncmFwaHRyYXZlcnNhbHNvdXJjZVtuZW80amdyYXBoW2NvbW11bml0eSBzaW5nbGUgWy90bXAvbmVvNGpdXSwgc3RhbmRhcmRdCistLS0tCisKK0hhdmluZyB0aGlzIGFiaWxpdHkgdG8gc2V0IHN0YW5kYXJkIE5lbzRqIGNvbmZpZ3VyYXRpb25zIG1ha2VzIGl0IHBvc3NpYmxlIHRvIGJldHRlciBjb250cm9sIHRoZSBpbml0aWFsaXphdGlvbiBvZgorTmVvNGogaXRzZWxmIGFuZCBwcm92aWRlcyB0aGUgYWJpbGl0eSB0byBlbmFibGUgY2VydGFpbiBmZWF0dXJlcyB0aGF0IHdvdWxkIG5vdCBvdGhlcndpc2UgYmUgYWNjZXNzaWJsZS4KKworPT09IEJvbHQgQ29uZmlndXJhdGlvbgorCitXaGlsZSBgTmVvNGpHcmFwaGAgZW5hYmxlcyBHcmVtbGluIGJhc2VkIHF1ZXJpZXMsIHVzZXJzIG1heSBmaW5kIGl0IGhlbHBmdWwgdG8gYWxzbyBiZSBhYmxlIHRvIGNvbm5lY3QgdG8gdGhhdCBncmFwaAord2l0aCBuYXRpdmUgTmVvNGogZHJpdmVycyBhbmQgb3RoZXIgdG9vbHMgZnJvbSB0aGF0IHNwYWNlLiBJdCBpcyBwb3NzaWJsZSB0byBlbmFibGUgdGhlCitsaW5rOmh0dHBzOi8vYm9sdHByb3RvY29sLm9yZy9bQm9sdCBQcm90b2NvbF0gYXMgYSB3YXkgdG8gZG8gdGhpczoKKworW3NvdXJjZSxwcm9wZXJ0aWVzXQorLS0tLQorZ3JlbWxpbi5ncmFwaD1vcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLm5lbzRqLnN0cnVjdHVyZS5OZW80akdyYXBoCitncmVtbGluLm5lbzRqLmRpcmVjdG9yeT0vdG1wL25lbzRqCitncmVtbGluLm5lbzRqLmNvbmYuZGJtcy5jb25uZWN0b3IuMC50eXBlPUJPTFQKK2dyZW1saW4ubmVvNGouY29uZi5kYm1zLmNvbm5lY3Rvci4wLmVuYWJsZWQ9dHJ1ZQorZ3JlbWxpbi5uZW80ai5jb25mLmRibXMuY29ubmVjdG9yLjAuYWRkcmVzcz1sb2NhbGhvc3Q6NzY4NworLS0tLQorCitUaGlzIGNvbmZpZ3VyYXRpb24gaXMgZXNwZWNpYWxseSByZWxldmFudCB0byBHcmVtbGluIFNlcnZlciB3aGVyZSBvbmUgbWlnaHQgd2FudCB0byBjb25uZWN0IHRvIHRoZSBzYW1lIGdyYXBoIGluc3RhbmNlCit3aXRoIGJvdGggR3JlbWxpbiBhbmQgQ3lwaGVyLgorCitbc291cmNlLHRleHRdCistLS0tCitncmVtbGluPiA6aW5zdGFsbCBvcmcubmVvNGouZHJpdmVyIG5lbzRqLWphdmEtZHJpdmVyIDEuNy4yCis9PT5Mb2FkZWQ6IFtvcmcubmVvNGouZHJpdmVyLCBuZW80ai1qYXZhLWRyaXZlciwgMS43LjJdCisuLi4gLy8gcmVzdGFydCBHcmVtbGluIENvbnNvbGUKK2dyZW1saW4+IGltcG9ydCBvcmcubmVvNGouZHJpdmVyLnYxLioKKz09Pm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLiosIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuKiwgLi4uIG9yZy5uZW80ai5kcml2ZXIudjEuKgorZ3JlbWxpbj4gZHJpdmVyID0gR3JhcGhEYXRhYmFzZS5kcml2ZXIoICJib2x0Oi8vbG9jYWxob3N0Ojc2ODciLCBBdXRoVG9rZW5zLmJhc2ljKCJuZW80aiIsICJuZW80aiIpKQorT2N0IDI4LCAyMDE5IDM6Mjg6MjAgUE0gb3JnLm5lbzRqLmRyaXZlci5pbnRlcm5hbC5sb2dnaW5nLkpVTG9nZ2VyIGluZm8KK0lORk86IERpcmVjdCBkcml2ZXIgaW5zdGFuY2UgMTM4NTE0MDEwNyBjcmVhdGVkIGZvciBzZXJ2ZXIgYWRkcmVzcyBsb2NhbGhvc3Q6NzY4NworPT0+b3JnLm5lbzRqLmRyaXZlci5pbnRlcm5hbC5JbnRlcm5hbERyaXZlckA1MjhmOGY4YgorZ3JlbWxpbj4gc2Vzc2lvbiA9IGRyaXZlci5zZXNzaW9uKCkKKz09Pm9yZy5uZW80ai5kcml2ZXIuaW50ZXJuYWwuTmV0d29ya1Nlc3Npb25AZjNmY2Q1OQorZ3JlbWxpbj4gc2Vzc2lvbi5ydW4oICJDUkVBVEUgKGE6cGVyc29uIHtuYW1lOiB7bmFtZX0sIGFnZToge2FnZX19KSIsCisuLi4uLi4xPiAgICAgICAgICAgICAgICAgVmFsdWVzLnBhcmFtZXRlcnMoIm5hbWUiLCAic3RlcGhlbiIsICJhZ2UiLCAyOSkpCitncmVtbGluPiA6cmVtb3RlIGNvbm5lY3QgdGlua2VycG9wLnNlcnZlciBjb25mL3JlbW90ZS55YW1sCis9PT5Db25maWd1cmVkIGxvY2FsaG9zdC8xMjcuMC4wLjE6ODE4MgorZ3JlbWxpbj4gOnJlbW90ZSBjb25zb2xlCis9PT5BbGwgc2NyaXB0cyB3aWxsIG5vdyBiZSBzZW50IHRvIEdyZW1saW4gU2VydmVyIC0gW2xvY2FsaG9zdC8xMjcuMC4wLjE6ODE4Ml0gLSB0eXBlICc6cmVtb3RlIGNvbnNvbGUnIHRvIHJldHVybiB0byBsb2NhbCBtb2RlCitncmVtbGluPiBnLlYoKS5lbGVtZW50TWFwKCkKKz09PntpZD0wLCBsYWJlbD1wZXJzb24sIG5hbWU9c3RlcGhlbiwgYWdlPTI5fQorLS0tLQorCiA9PT0gSGlnaCBBdmFpbGFiaWxpdHkgQ29uZmlndXJhdGlvbgogCi1pbWFnZTpuZW80ai1oYS5wbmdbd2lkdGg9NDAwLGZsb2F0PXJpZ2h0XSBUaW5rZXJQb3Agc3VwcG9ydHMgcnVubmluZyBOZW80aiB3aXRoIGl0cyBmYXVsdCB0b2xlcmFudCBtYXN0ZXItc2xhdmUgcmVwbGljYXRpb24gY29uZmlndXJhdGlvbiwgcmVmZXJyZWQgdG8gYXMgaXRzCitpbWFnZTpuZW80ai1oYS5wbmdbd2lkdGg9NDAwLGZsb2F0PXJpZ2h0XSBUaW5rZXJQb3Agc3VwcG9ydHMgcnVubmluZyBOZW80aiB3aXRoIGl0cyBmYXVsdCB0b2xlcmFudCBtYXN0ZXItc2xhdmUKK3JlcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24sIHJlZmVycmVkIHRvIGFzIGl0cwogbGluazpodHRwOi8vbmVvNGouY29tL2RvY3Mvb3BlcmF0aW9ucy1tYW51YWwvY3VycmVudC8jX25lbzRqX2NsdXN0ZXJfaW5zdGFsbFtIaWdoIEF2YWlsYWJpbGl0eSAoSEEpIGNsdXN0ZXJdLiBGcm9tIHRoZQogVGlua2VyUG9wIHBlcnNwZWN0aXZlLCBjb25maWd1cmluZyBmb3IgSEEgaXMgbm90IHRoYXQgZGlmZmVyZW50IHRoYW4gY29uZmlndXJpbmcgZm9yIGVtYmVkZGVkIG1vZGUgYXMgc2hvd24gYWJvdmUuIFRoZQogbWFpbiBkaWZmZXJlbmNlIGlzIHRoZSB1c2FnZSBvZiBIQSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBlbmFibGUgdGhlIGNsdXN0ZXIuIE9uY2UgY29ubmVjdGVkIHRvIGEgY2x1c3RlciwgdXNhZ2UKZGlmZiAtLWdpdCBhL2RvY3Mvc3JjL3JlZmVyZW5jZS9pbXBsZW1lbnRhdGlvbnMtc3BhcmsuYXNjaWlkb2MgYi9kb2NzL3NyYy9yZWZlcmVuY2UvaW1wbGVtZW50YXRpb25zLXNwYXJrLmFzY2lpZG9jCmluZGV4IDA1YTZhOTMuLjgwODEyOWYgMTAwNjQ0Ci0tLSBhL2RvY3Mvc3JjL3JlZmVyZW5jZS9pbXBsZW1lbnRhdGlvbnMtc3BhcmsuYXNjaWlkb2MKKysrIGIvZG9jcy9zcmMvcmVmZXJlbmNlL2ltcGxlbWVudGF0aW9ucy1zcGFyay5hc2NpaWRvYwpAQCAtMTIyLDcgKzEyMiw2IEBACiAKIEZpbmFsbHksIHRoZXJlIGlzIGEgYHNwYXJrYCBvYmplY3QgdGhhdCBjYW4gYmUgdXNlZCB0byBtYW5hZ2UgcGVyc2lzdGVkIFJERHMgKHNlZSA8PGludGVyYWN0aW5nLXdpdGgtc3BhcmssIEludGVyYWN0aW5nIHdpdGggU3Bhcms+PikuCiAKLVtbYnVsa2R1bXBlcnZlcnRleHByb2dyYW11c2luZ3NwYXJrXV0KIFtbY2xvbmV2ZXJ0ZXhwcm9ncmFtdXNpbmdzcGFya11dCiA9PT09PSBVc2luZyBDbG9uZVZlcnRleFByb2dyYW0KIApAQCAtMTM2LDcgKzEzNSw3IEBACiBoZGZzLmNvcHlGcm9tTG9jYWwoJ2RhdGEvdGlua2VycG9wLW1vZGVybi5rcnlvJywgJ3RpbmtlcnBvcC1tb2Rlcm4ua3J5bycpCiBncmFwaCA9IEdyYXBoRmFjdG9yeS5vcGVuKCdjb25mL2hhZG9vcC9oYWRvb3AtZ3J5by5wcm9wZXJ0aWVzJykKIGdyYXBoLmNvbmZpZ3VyYXRpb24oKS5zZXRQcm9wZXJ0eSgnZ3JlbWxpbi5oYWRvb3AuZ3JhcGhXcml0ZXInLCAnb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLmlvLmdyYXBoc29uLkdyYXBoU09OT3V0cHV0Rm9ybWF0JykKLWdyYXBoLmNvbXB1dGUoU3BhcmtHcmFwaENvbXB1dGVyKS5wcm9ncmFtKEJ1bGtEdW1wZXJWZXJ0ZXhQcm9ncmFtLmJ1aWxkKCkuY3JlYXRlKCkpLnN1Ym1pdCgpLmdldCgpCitncmFwaC5jb21wdXRlKFNwYXJrR3JhcGhDb21wdXRlcikucHJvZ3JhbShDbG9uZVZlcnRleFByb2dyYW0uYnVpbGQoKS5jcmVhdGUoKSkuc3VibWl0KCkuZ2V0KCkKIGhkZnMubHMoJ291dHB1dCcpCiBoZGZzLmhlYWQoJ291dHB1dC9+ZycpCi0tLS0tClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorLS0tLQpkaWZmIC0tZ2l0IGEvZG9jcy9zcmMvcmVmZXJlbmNlL2ltcGxlbWVudGF0aW9ucy10aW5rZXJncmFwaC5hc2NpaWRvYyBiL2RvY3Mvc3JjL3JlZmVyZW5jZS9pbXBsZW1lbnRhdGlvbnMtdGlua2VyZ3JhcGguYXNjaWlkb2MKaW5kZXggZDA2MzliYS4uY2M1ZTZiMiAxMDA2NDQKLS0tIGEvZG9jcy9zcmMvcmVmZXJlbmNlL2ltcGxlbWVudGF0aW9ucy10aW5rZXJncmFwaC5hc2NpaWRvYworKysgYi9kb2NzL3NyYy9yZWZlcmVuY2UvaW1wbGVtZW50YXRpb25zLXRpbmtlcmdyYXBoLmFzY2lpZG9jCkBAIC0yOCw4ICsyOCw4IEBACiAKIGltYWdlOnRpbmtlcnBvcC1jaGFyYWN0ZXIucG5nW3dpZHRoPTEwMCxmbG9hdD1sZWZ0XSBUaW5rZXJHcmFwaCBpcyBhIHNpbmdsZSBtYWNoaW5lLCBpbi1tZW1vcnkgKHdpdGggb3B0aW9uYWwKIHBlcnNpc3RlbmNlKSwgbm9uLXRyYW5zYWN0aW9uYWwgZ3JhcGggZW5naW5lIHRoYXQgcHJvdmlkZXMgYm90aCBPTFRQIGFuZCBPTEFQIGZ1bmN0aW9uYWxpdHkuIEl0IGlzIGRlcGxveWVkIHdpdGgKLVRpbmtlclBvcDMgYW5kIHNlcnZlcyBhcyB0aGUgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGZvciBvdGhlciBwcm92aWRlcnMgdG8gc3R1ZHkgaW4gb3JkZXIgdG8gdW5kZXJzdGFuZCB0aGUKLXNlbWFudGljcyBvZiB0aGUgdmFyaW91cyBtZXRob2RzIG9mIHRoZSBUaW5rZXJQb3AzIEFQSS4gSXRzIHN0YXR1cyBhcyBhIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBob3dldmVyIGltcGx5CitUaW5rZXJQb3AgYW5kIHNlcnZlcyBhcyB0aGUgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGZvciBvdGhlciBwcm92aWRlcnMgdG8gc3R1ZHkgaW4gb3JkZXIgdG8gdW5kZXJzdGFuZCB0aGUKK3NlbWFudGljcyBvZiB0aGUgdmFyaW91cyBtZXRob2RzIG9mIHRoZSBUaW5rZXJQb3AgQVBJLiBJdHMgc3RhdHVzIGFzIGEgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGRvZXMgbm90IGhvd2V2ZXIgaW1wbHkKIHRoYXQgaXQgaXMgbm90IHN1aXRhYmxlIGZvciBwcm9kdWN0aW9uLiBUaW5rZXJHcmFwaCBoYXMgbWFueSBwcmFjdGljYWwgdXNlIGNhc2VzIGluIHByb2R1Y3Rpb24gYXBwbGljYXRpb25zIGFuZCB0aGVpcgogZGV2ZWxvcG1lbnQuIFNvbWUgZXhhbXBsZXMgb2YgVGlua2VyR3JhcGggdXNlIGNhc2VzIGluY2x1ZGU6CiAKQEAgLTkwLDE5ICs5MCwxOSBAQAogLS0tLQogZ3JhcGggPSBUaW5rZXJHcmFwaC5vcGVuKCkKIGcgPSBncmFwaC50cmF2ZXJzYWwoKQotZ3JhcGguaW8oZ3JhcGhtbCgpKS5yZWFkR3JhcGgoJ2RhdGEvZ3JhdGVmdWwtZGVhZC54bWwnKQorZy5pbygnZGF0YS9ncmF0ZWZ1bC1kZWFkLnhtbCcpLnJlYWQoKS5pdGVyYXRlKCkKIGNsb2NrKDEwMDApIHtnLlYoKS5oYXMoJ25hbWUnLCdHYXJjaWEnKS5pdGVyYXRlKCl9IDwxPgogZ3JhcGggPSBUaW5rZXJHcmFwaC5vcGVuKCkKIGcgPSBncmFwaC50cmF2ZXJzYWwoKQogZ3JhcGguY3JlYXRlSW5kZXgoJ25hbWUnLFZlcnRleC5jbGFzcykKLWdyYXBoLmlvKGdyYXBobWwoKSkucmVhZEdyYXBoKCdkYXRhL2dyYXRlZnVsLWRlYWQueG1sJykKK2cuaW8oJ2RhdGEvZ3JhdGVmdWwtZGVhZC54bWwnKS5yZWFkKCkuaXRlcmF0ZSgpCiBjbG9jaygxMDAwKXtnLlYoKS5oYXMoJ25hbWUnLCdHYXJjaWEnKS5pdGVyYXRlKCl9IDwyPgogLS0tLQogCiA8MT4gRGV0ZXJtaW5lIHRoZSBhdmVyYWdlIHJ1bnRpbWUgb2YgMTAwMCB2ZXJ0ZXggbG9va3VwcyB3aGVuIG5vIGBuYW1lYC1pbmRleCBpcyBkZWZpbmVkLgogPDI+IERldGVybWluZSB0aGUgYXZlcmFnZSBydW50aW1lIG9mIDEwMDAgdmVydGV4IGxvb2t1cHMgd2hlbiBhIGBuYW1lYC1pbmRleCBpcyBkZWZpbmVkLgogCi1JTVBPUlRBTlQ6IEVhY2ggZ3JhcGggc3lzdGVtIHdpbGwgaGF2ZSBkaWZmZXJlbnQgbWVjaGFuaXNtIGJ5IHdoaWNoIGluZGljZXMgYW5kIHNjaGVtYXMgYXJlIGRlZmluZWQuIFRpbmtlclBvcDMKK0lNUE9SVEFOVDogRWFjaCBncmFwaCBzeXN0ZW0gd2lsbCBoYXZlIGRpZmZlcmVudCBtZWNoYW5pc20gYnkgd2hpY2ggaW5kaWNlcyBhbmQgc2NoZW1hcyBhcmUgZGVmaW5lZC4gVGlua2VyUG9wCiBkb2VzIG5vdCByZXF1aXJlIGFueSBjb25mb3JtYW5jZSBpbiB0aGlzIGFyZWEuIEluIFRpbmtlckdyYXBoLCB0aGUgb25seSBkZWZpbml0aW9ucyBhcmUgYXJvdW5kIGluZGljZXMuIFdpdGggb3RoZXIKIGdyYXBoIHN5c3RlbXMsIHByb3BlcnR5IHZhbHVlIHR5cGVzLCBpbmRpY2VzLCBlZGdlIGxhYmVscywgZXRjLiBtYXkgYmUgcmVxdWlyZWQgdG8gYmUgZGVmaW5lZCBfYSBwcmlvcmlfIHRvIGFkZGluZwogZGF0YSB0byB0aGUgZ3JhcGguCkBAIC0xNTgsMTMgKzE1OCwxMyBAQAogW2dyZW1saW4tZ3Jvb3Z5XQogLS0tLQogZ3JhcGggPSBUaW5rZXJHcmFwaC5vcGVuKCkKLWdyYXBoLmlvKGdyeW8oKSkucmVhZEdyYXBoKCJkYXRhL3RpbmtlcnBvcC1jcmV3LmtyeW8iKQogZyA9IGdyYXBoLnRyYXZlcnNhbCgpCitnLmlvKCJkYXRhL3RpbmtlcnBvcC1jcmV3LmtyeW8iKS5yZWFkKCkuaXRlcmF0ZSgpCiBnLlYoKS5wcm9wZXJ0aWVzKCkKIGNvbmYgPSBuZXcgQmFzZUNvbmZpZ3VyYXRpb24oKQogY29uZi5zZXRQcm9wZXJ0eSgiZ3JlbWxpbi50aW5rZXJncmFwaC5kZWZhdWx0VmVydGV4UHJvcGVydHlDYXJkaW5hbGl0eSIsImxpc3QiKQogZ3JhcGggPSBUaW5rZXJHcmFwaC5vcGVuKGNvbmYpCi1ncmFwaC5pbyhncnlvKCkpLnJlYWRHcmFwaCgiZGF0YS90aW5rZXJwb3AtY3Jldy5rcnlvIikKIGcgPSBncmFwaC50cmF2ZXJzYWwoKQorZy5pbygiZGF0YS90aW5rZXJwb3AtY3Jldy5rcnlvIikucmVhZCgpLml0ZXJhdGUoKQogZy5WKCkucHJvcGVydGllcygpCiAtLS0tCmRpZmYgLS1naXQgYS9kb2NzL3NyYy9yZWZlcmVuY2UvaW5kZXguYXNjaWlkb2MgYi9kb2NzL3NyYy9yZWZlcmVuY2UvaW5kZXguYXNjaWlkb2MKaW5kZXggZTg2ODAzNy4uMjI1Mzk5MSAxMDA2NDQKLS0tIGEvZG9jcy9zcmMvcmVmZXJlbmNlL2luZGV4LmFzY2lpZG9jCisrKyBiL2RvY3Mvc3JjL3JlZmVyZW5jZS9pbmRleC5hc2NpaWRvYwpAQCAtMzIsNiArMzIsOCBAQAogCiBpbmNsdWRlOjpncmVtbGluLWFwcGxpY2F0aW9ucy5hc2NpaWRvY1tdCiAKK2luY2x1ZGU6OmdyZW1saW4tdmFyaWFudHMuYXNjaWlkb2NbXQorCiBpbmNsdWRlOjppbXBsZW1lbnRhdGlvbnMtaW50cm8uYXNjaWlkb2NbXQogaW5jbHVkZTo6aW1wbGVtZW50YXRpb25zLXRpbmtlcmdyYXBoLmFzY2lpZG9jW10KIGluY2x1ZGU6OmltcGxlbWVudGF0aW9ucy1uZW80ai5hc2NpaWRvY1tdCkBAIC00MSwxMCArNDMsOSBAQAogLy8gY29uc29sZSBpcyB0byBoYXZlIGEgbmV3IGFzY2lpZG9jIHBhZ2UuCiBpbmNsdWRlOjppbXBsZW1lbnRhdGlvbnMtaGFkb29wLXN0YXJ0LmFzY2lpZG9jW10KIGluY2x1ZGU6OmltcGxlbWVudGF0aW9ucy1zcGFyay5hc2NpaWRvY1tdCi1pbmNsdWRlOjppbXBsZW1lbnRhdGlvbnMtZ2lyYXBoLmFzY2lpZG9jW10KIGluY2x1ZGU6OmltcGxlbWVudGF0aW9ucy1oYWRvb3AtZW5kLmFzY2lpZG9jW10KIAotaW5jbHVkZTo6Z3JlbWxpbi12YXJpYW50cy5hc2NpaWRvY1tdCitpbmNsdWRlOjpjb21waWxlcnMuYXNjaWlkb2NbXQogCiBpbmNsdWRlOjpjb25jbHVzaW9uLmFzY2lpZG9jW10KIApkaWZmIC0tZ2l0IGEvZG9jcy9zcmMvcmVmZXJlbmNlL2ludHJvLmFzY2lpZG9jIGIvZG9jcy9zcmMvcmVmZXJlbmNlL2ludHJvLmFzY2lpZG9jCmluZGV4IDFkMGMxOWMuLmViYzBlOWIgMTAwNjQ0Ci0tLSBhL2RvY3Mvc3JjL3JlZmVyZW5jZS9pbnRyby5hc2NpaWRvYworKysgYi9kb2NzL3NyYy9yZWZlcmVuY2UvaW50cm8uYXNjaWlkb2MKQEAgLTE1LDQyICsxNSwxMTkgQEAKIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogLy8vLwogW1tpbnRyb11dCi09IEludHJvZHVjdGlvbiB0byBHcmFwaCBDb21wdXRpbmcKKz0gSW50cm9kdWN0aW9uCisKK1dlbGNvbWUgdG8gdGhlIFJlZmVyZW5jZSBEb2N1bWVudGF0aW9uIGZvciBBcGFjaGUgVGlua2VyUG9w4oSiIC0gdGhlIGJhY2tib25lIGZvciBhbGwgZGV0YWlscyBvbiBob3cgdG8gd29yayB3aXRoCitUaW5rZXJQb3AgYW5kIHRoZSBHcmVtbGluIGdyYXBoIHRyYXZlcnNhbCBsYW5ndWFnZS4gVGhpcyBkb2N1bWVudGF0aW9uIGlzIG5vdCBtZWFudCB0byBiZSBhICJib29rIiwgYnV0IGEgc291cmNlCitmcm9tIHdoaWNoIHRvIHNwYXduIG1vcmUgZGV0YWlsZWQgYWNjb3VudHMgb2Ygc3BlY2lmaWMgdG9waWNzIGFuZCBhIHRhcmdldCB0byB3aGljaCBhbGwgb3RoZXIgcmVzb3VyY2VzIHBvaW50LgorVGhlIFJlZmVyZW5jZSBEb2N1bWVudGF0aW9uIG1ha2VzIHNvbWUgZ2VuZXJhbCBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcmVhZGVyOgorCisxLiBUaGV5IGhhdmUgYSBzZW5zZSBvZiB3aGF0IGEgZ3JhcGggaXMgLSBub3Qgc3VyZT8gc2VlIGxpbms6aHR0cDovL2tlbHZpbmxhd3JlbmNlLm5ldC9ib29rL0dyZW1saW4tR3JhcGgtR3VpZGUuaHRtbCN3aHlncmFwaFtQcmFjdGljYWwgR3JlbWxpbiAtIFdoeSBHcmFwaD9dCisxLiBUaGV5IGtub3cgd2hhdCBpdCBtZWFucyBmb3IgYSBncmFwaCBzeXN0ZW0gdG8gYmUgVGlua2VyUG9wLWVuYWJsZWQgLSBub3Qgc3VyZT8gc2VlIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9wcm92aWRlcnMuaHRtbFtUaW5rZXJQb3AtZW5hYmxlZCBQcm92aWRlcnNdCisxLiBUaGV5IGtub3cgd2hhdCB0aGUgcm9sZSBvZiBHcmVtbGluIGlzIC0gbm90IHN1cmU/IHNlZSBsaW5rOmxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9ncmVtbGluLmh0bWxbSW50cm9kdWN0aW9uIHRvIEdyZW1saW5dCisKK0dpdmVuIHRob3NlIGFzc3VtcHRpb25zLCBpdCdzIHBvc3NpYmxlIHRvIGRpdmUgbW9yZSBxdWlja2x5IGludG8gdGhlIGRldGFpbHMgd2l0aG91dCBzcGVuZGluZyBhIGxvdCBvZiB0aW1lIHJlcGVhdGluZword2hhdCBpcyB3cml0dGVuIGVsc2V3aGVyZS4KKworSXQgaXMgZmFpcmx5IGNlcnRhaW4gdGhhdCByZWFkZXJzIG9mIHRoZSBSZWZlcmVuY2UgRG9jdW1lbnRhdGlvbiBhcmUgY29taW5nIGZyb20gdGhlIG1vc3QgZGl2ZXJzZSBzb2Z0d2FyZSBkZXZlbG9wbWVudAorYmFja2dyb3VuZHMgdGhhdCBUaW5rZXJQb3AgaGFzIGV2ZXIgZW5nYWdlZCBpbiBvdmVyIHRoZSBkZWNhZGUgb3Igc28gb2YgaXRzIGV4aXN0ZW5jZS4gV2hpbGUgVGlua2VyUG9wIGhvbGRzIHNvbWUgcm9vdHMKK2luIEphdmEsIGFuZCB0aHVzLCBsYW5ndWFnZXMgYm91bmQgdG8gdGhlIEphdmEgVmlydHVhbCBNYWNoaW5lIChKVk0pLCBpdCBsb25nIGFnbyBicmFuY2hlZCBvdXQgaW50byBvdGhlciBsYW5ndWFnZXMKK3N1Y2ggYXMgUHl0aG9uLCBKYXZhc2NyaXB0LCAuTkVULCBhbmQgb3RoZXJzLiBUbyBjb21wb3VuZCB1cG9uIHRoYXQgZGl2ZXJzaXR5LCBpdCBpcyBhbHNvIHNlZWluZyBleHRlbnNpdmUgc3VwcG9ydAorZnJvbSBkaWZmZXJlbnQgZ3JhcGggc3lzdGVtcyB3aGljaCBoYXZlIGNob3NlbiBUaW5rZXJQb3AgYXMgdGhlaXIgc3RhbmRhcmQgbWV0aG9kIGZvciBhbGxvd2luZyB1c2VycyB0byBpbnRlcmZhY2UKK3dpdGggdGhlaXIgZ3JhcGguIE1vcmVvdmVyLCB0aGUgZ3JhcGggc3lzdGVtcyB0aGVtc2VsdmVzIGFyZSBub3Qgb25seSBzZXBhcmF0ZWQgYnkgT0xUUCBhbmQgT0xBUCBzdHlsZSB3b3JrbG9hZHMsIGJ1dAorYWxzbyBieSB0aGVpciBpbXBsZW1lbnRhdGlvbiBwYXR0ZXJucywgd2hpY2ggcmFuZ2UgZXZlcnl3aGVyZSBmcm9tIGJlaW5nIGFuIGVtYmVkZGVkIGdyYXBoIHN5c3RlbSB0byBhIGNsb3VkLW9ubHkKK2dyYXBoLiBPbmUgbWlnaHQgZXZlbiBmaW5kIGRpdmVyc2l0eSBwYXJhbGxlbCB0byBHcmVtbGluIGlmIGNvbnNpZGVyaW5nIG90aGVyIGdyYXBoIHF1ZXJ5IGxhbmd1YWdlcy4KKworaW1hZ2U6OmdyZW1saW4tcmVmZXJlbmNlLnBuZ1t3aWR0aD0xMDI0XQorCitEZXNwaXRlIGFsbCB0aGlzIGRpdmVyc2l0eSBhbmQgZGlzcGFyaXR5LCBHcmVtbGluIHJlbWFpbnMgdGhlIHVuaWZ5aW5nIGludGVyZmFjZSBmb3IgYWxsIHRoZXNlIGRpZmZlcmVudCBlbGVtZW50cyBvZgordGhlIGdyYXBoIGNvbW11bml0eS4gQXMgYSB1c2VyLCBjaG9vc2luZyBhIFRpbmtlclBvcC1lbmFibGVkIGdyYXBoIGFuZCB1c2luZyBHcmVtbGluIGluIHRoZSBjb3JyZWN0IHdheSB3aGVuIGJ1aWxkaW5nCithcHBsaWNhdGlvbnMgc2hpZWxkcyB0aGVtIGZyb20gY2hhbmdlIGFuZCBkaXNwYXJpdHkgaW4gdGhlIHNwYWNlLiBBcyBhIGdyYXBoIHByb3ZpZGVyLCBjaG9vc2luZyB0byBiZWNvbWUKK1RpbmtlclBvcC1lbmFibGVkIG5vdCBvbmx5IGV4cGFuZHMgdGhlIHJlYWNoIHRoZWlyIHN5c3RlbSBjYW4gZ2V0IGludG8gZGlmZmVyZW50IGRldmVsb3BtZW50IGVjb3N5c3RlbXMsIGJ1dCBhbHNvCitwcm92aWRlcyBhY2Nlc3MgdG8gb3RoZXIgcXVlcnkgbGFuZ3VhZ2VzIHRocm91Z2ggYnl0ZWNvZGUgY29tcGlsYXRpb24gYXMgc2VlbiBpbiA8PHNwYXJxbC1ncmVtbGluLHNwYXJxbC1ncmVtbGluPj4uCisKK0lycmVzcGVjdGl2ZSBvZiB0aGUgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgYmVpbmcgdXNlZCwgZ3JhcGggc3lzdGVtIGNob3NlbiBvciBvdGhlciBkZXZlbG9wbWVudCBiYWNrZ3JvdW5kIHRoYXQgbWlnaHQKK2JlIGRyaXZpbmcgYSB1c2VyIHRvIHRoaXMgZG9jdW1lbnRhdGlvbiwgdGhlIGNyaXRpY2FsIHBvaW50IHRvIHJlbWVtYmVyIGlzIHRoYXQgIkdyZW1saW4gaXMgR3JlbWxpbiBpcyBHcmVtbGluIi4gVGhlCitzYW1lIEdyZW1saW4gdGhhdCBpcyB3cml0dGVuIGZvciBhbiBPTFRQIHF1ZXJ5IG92ZXIgYW4gaW4tbWVtb3J5IFRpbmtlckdyYXBoIGlzIHRoZSBzYW1lIEdyZW1saW4gdGhhdCBpcyB3cml0dGVuIHRvCitleGVjdXRlIG92ZXIgYSBtdWx0aS1iaWxsaW9uIGVkZ2UgZ3JhcGggdXNpbmcgT0xBUCB0aHJvdWdoIFNwYXJrLiBUaGF0IHNhbWUgR3JlbWxpbiBmb3IgZWl0aGVyIG9mIHRob3NlIGNhc2VzIGlzCit3cml0dGVuIGluIHRoZSBzYW1lIHdheSB3aGV0aGVyIHVzaW5nIEphdmEgb3IgUHl0aG9uIG9yIEphdmFzY3JpcHQuIFRoZSBHcmVtbGluIGlzIGFsd2F5cyBmdW5kYW1lbnRhbGx5IHRoZSBzYW1lCithc2lkZSBmcm9tIHN5bnRhY3RpY2FsIGRpZmZlcmVuY2VzIHRoYXQgbWlnaHQgYmUgbGFuZ3VhZ2Ugc3BlY2lmaWMgLSBlLmcuIHRoZSBjb25zdHJ1Y3Rpb24gb2YgYSBsYW1iZGEgaW4gR3Jvb3Z5IGlzCitkaWZmZXJlbnQgdGhhbiB0aGUgY29uc3RydWN0aW9uIG9mIGEgbGFtYmRhIGluIFB5dGhvbiBvciBhIHJlc2VydmVkIHdvcmQgaW4gSmF2YXNjcmlwdCBmb3JjZXMgYSBHcmVtbGluIHN0ZXAgdG8gaGF2ZQorc2xpZ2h0bHkgZGlmZmVyZW50IG5hbWluZyB0aGFuIEphdmEuCisKK1doaWxlIGxlYXJuaW5nIHRoZSBHcmVtbGluIGxhbmd1YWdlIGFuZCBpdHMgcGF0dGVybnMgaXMgbGFyZ2VseSBhZ25vc3RpYyB0byBhbGwgdGhlIGRpdmVyc2l0eSBpbiB0aGUgc3BhY2UsIGl0IGlzIG5vdAorcmVhbGx5IHBvc3NpYmxlIHRvIGlnbm9yZSB0aGUgaW1wYWN0IG9mIHRoZSBkaXZlcnNpdHkgZnJvbSBhbiBhcHBsaWNhdGlvbiBkZXZlbG9wbWVudCBwZXJzcGVjdGl2ZSBhbmQgdGhlIFJlZmVyZW5jZQorRG9jdW1lbnRhdGlvbiBtYWtlcyBhbiBlZmZvcnQgdG8gdHJ5IHRvIHBvaW50IG91dCB3aGVyZSBkaWZmZXJlbmNlcyBhbmQgaW5jb25zaXN0ZW5jaWVzIG1pZ2h0IGxpZSB3aXRob3V0IGRpdmluZyB0b28KK2RlZXBseSBpbnRvIHNwZWNpZmljIGdyYXBoIHByb3ZpZGVyIGltcGxlbWVudGF0aW9ucy4gVXNlcnMgYXJlIHN0cm9uZ2x5IGVuY291cmFnZWQgdG8gY29uc3VsdCB0aGUgZG9jdW1lbnRhdGlvbiBvZgordGhlaXIgY2hvc2VuIGdyYXBoIHByb3ZpZGVyIHRvIHVuZGVyc3RhbmQgYWxsIG9mIHRoZSBjYXBhYmlsaXRpZXMgYW5kIGxpbWl0YXRpb25zIHRoYXQgbWF5IHJlc3RyaWN0IG9yIGluaGliaXQgdXNhZ2UKK29mIGNlcnRhaW4gYXNwZWN0cyBvZiBUaW5rZXJQb3AgQVBJcyB3aGljaCBhcmUgZGVmaW5lZCBoZXJlIGluIHRoaXMgUmVmZXJlbmNlIERvY3VtZW50YXRpb24uCisKK1RoZSBmb2xsb3dpbmcgaW50cm9kdWN0b3J5IHNlY3Rpb25zIGFuZCBzZXBhcmF0ZWx5IHJlZmVyZW5jZWQgY29udGVudCB3aWxsIGJlIG9mIHZhcnlpbmcgaW50ZXJlc3QgdG8gZGlmZmVyZW50IHJlYWRlcnMuCitUaGUgc3VtbWFyaWVzIGJlbG93IHdpbGwgaG9wZWZ1bGx5IGJlIGhlbHBmdWwgaW4gZGlyZWN0aW5nIGluZGl2aWR1YWxzIHRvIHRoZSBhcHByb3ByaWF0ZSBwbGFjZSB0byBzdGFydCB0aGVpcgorbGVhcm5pbmcgcHJvY2Vzcy4KKworKiA8PGdyYXBoLWNvbXB1dGluZyxHcmFwaCBDb21wdXRpbmc+PiBpcyBhbiBpbnRyb2R1Y3Rpb24gdG8gd2hhdCAiZ3JhcGggY29tcHV0aW5nIiBtZWFucyB0byBUaW5rZXJQb3AgYW5kIGRlc2NyaWJlcworbWFueSBvZiB0aGUgcHJvdmlkZXIgYW5kIHVzZXItZmFjaW5nIFRpbmtlclBvcCBBUElzIGFuZCBjb25jZXB0cyB0aGF0IGVuYWJsZSBHcmVtbGluLgorKiA8PGNvbm5lY3RpbmctZ3JlbWxpbixDb25uZWN0aW5nIEdyZW1saW4+PiBwcm92aWRlcyBkZXNjcmlwdGlvbnMgZm9yIHRoZSBkaWZmZXJlbnQgbW9kZXMgYnkgd2hpY2ggdXNlcnMgd2lsbCBjb25uZWN0Cit0byBncmFwaHMgZGVwZW5kaW5nIG9uIHRoZWlyIGVudmlyb25tZW50LgorKiA8PGJhc2ljLWdyZW1saW4sIEJhc2ljIEdyZW1saW4+PiBkZXNjcmliZXMgaG93IHRvIHVzZSBhIGNvbm5lY3Rpb24gdG8gc3RhcnQgd3JpdGluZyBHcmVtbGluLgorKiA8PHN0YXlpbmctYWdub3N0aWMsIFN0YXlpbmcgQWdub3N0aWM+PiBwcm92aWRlcyB0aXBzIG9uIHdheXMgdG8ga2VlcCBHcmVtbGluIGFzIHBvcnRhYmxlIGFzIHBvc3NpYmxlIGFtb25nIGRpZmZlcmVudAorZ3JhcGggcHJvdmlkZXJzLgorCitOZXcgdXNlcnMgc2hvdWxkIG5vdCBpZ25vcmUgVGlua2VyUG9wJ3MgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovdHV0b3JpYWxzL2dldHRpbmctc3RhcnRlZC9bR2V0dGluZyBTdGFydGVkXQordHV0b3JpYWwgb3IgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovdHV0b3JpYWxzL3RoZS1ncmVtbGluLWNvbnNvbGUvW1RoZSBHcmVtbGluIENvbnNvbGVdIHR1dG9yaWFsLgorQm90aCBjb250YWluIGEgbGFyZ2Ugc2V0IG9mIGJhc2ljIGluZm9ybWF0aW9uIGFuZCB0aXBzIHRoYXQgY2FuIGhlbHAgcmVhZGVycyBhdm9pZCBzb21lIGdlbmVyYWwgcGl0ZmFsbHMgZWFybHkgb24uCitCb3RoIGFsc28gZm9jdXMgb24gR3JlbWxpbiB1c2FnZSBpbiB0aGUgR3JlbWxpbiBDb25zb2xlLCB3aGljaCB0ZW5kcyB0byBiZSBhIGNyaXRpY2FsIHRvb2wgZm9yIEdyZW1saW4gZGV2ZWxvcGVycyBvZgorYW55IGRldmVsb3BtZW50IGJhY2tncm91bmQuCisKK01vcmUgYWR2YW5jZWQgYW5kIGV4cGVyaWVuY2UgdXNlcnMgd2lsbCBhcHByZWNpYXRlIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlY2lwZXMvW0dyZW1saW4gUmVjaXBlc10KK3doaWNoIHByb3ZpZGUgZXhhbXBsZXMgb2YgY29tbW9uIEdyZW1saW4gdHJhdmVyc2FsIHBhdHRlcm5zLgorCitGaW5hbGx5LCBhbGwgR3JlbWxpbiBkZXZlbG9wZXJzIHNob3VsZCBiZWNvbWUgZmFtaWxpYXIgd2l0aAorbGluazpodHRwOi8va2VsdmlubGF3cmVuY2UubmV0L2Jvb2svR3JlbWxpbi1HcmFwaC1HdWlkZS5odG1sWyJQcmFjdGljYWwgR3JlbWxpbiJdIGJ5IEtlbHZpbiBMYXdyZW5jZS4gVGhpcyBib29rIGlzCitmcmVlbHkgYXZhaWxhYmxlIGFuZCBwdWJsaXNoZWQgb25saW5lLiBJdCBjb250YWlucyBncmVhdCBleGFtcGxlcyBhbmQgZGV0YWlscyB0aGF0IGFyZSBhcHBsaWNhYmxlIHRvIGFueW9uZSBidWlsZGluZworYXBwbGljYXRpb25zIHdpdGggR3JlbWxpbi4KKworW1tncmFwaC1jb21wdXRpbmddXQorPT0gR3JhcGggQ29tcHV0aW5nCiAKIGltYWdlOjpncmFwaC1jb21wdXRpbmcucG5nW3dpZHRoPTM1MF0KIAotW3NvdXJjZSx4bWxdCi08ZGVwZW5kZW5jeT4KLSAgPGdyb3VwSWQ+b3JnLmFwYWNoZS50aW5rZXJwb3A8L2dyb3VwSWQ+Ci0gIDxhcnRpZmFjdElkPmdyZW1saW4tY29yZTwvYXJ0aWZhY3RJZD4KLSAgPHZlcnNpb24+eC55Lno8L3ZlcnNpb24+Ci08L2RlcGVuZGVuY3k+Ci0KIEEgbGluazpodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dyYXBoXyhkYXRhX3N0cnVjdHVyZSlbZ3JhcGhdIGlzIGEgZGF0YSBzdHJ1Y3R1cmUgY29tcG9zZWQgb2YgdmVydGljZXMgKG5vZGVzLAogZG90cykgYW5kIGVkZ2VzIChhcmNzLCBsaW5lcykuIFdoZW4gbW9kZWxpbmcgYSBncmFwaCBpbiBhIGNvbXB1dGVyIGFuZCBhcHBseWluZyBpdCB0byBtb2Rlcm4gZGF0YSBzZXRzIGFuZCBwcmFjdGljZXMsCiB0aGUgZ2VuZXJpYyBtYXRoZW1hdGljYWxseS1vcmllbnRlZCwgYmluYXJ5IGdyYXBoIGlzIGV4dGVuZGVkIHRvIHN1cHBvcnQgYm90aCBsYWJlbHMgYW5kIGtleS92YWx1ZSBwcm9wZXJ0aWVzLiBUaGlzCiBzdHJ1Y3R1cmUgaXMga25vd24gYXMgYSBwcm9wZXJ0eSBncmFwaC4gTW9yZSBmb3JtYWxseSwgaXQgaXMgYSBkaXJlY3RlZCwgYmluYXJ5LCBhdHRyaWJ1dGVkIG11bHRpLWdyYXBoLiBBbiBleGFtcGxlCi1wcm9wZXJ0eSBncmFwaCBpcyBkaWFncmFtbWVkIGJlbG93LiBUaGlzIGdyYXBoIGV4YW1wbGUgd2lsbCBiZSB1c2VkIGV4dGVuc2l2ZWx5IHRocm91Z2hvdXQgdGhlIGRvY3VtZW50YXRpb24gYW5kIGlzCi1jYWxsZWQgIlRpbmtlclBvcCBNb2Rlcm4iIGFzIGl0IGlzIGEgbW9kZXJuIHZhcmlhdGlvbiBvZiB0aGUgb3JpZ2luYWwgZGVtbyBncmFwaCBkaXN0cmlidXRlZCB3aXRoIFRpbmtlclBvcDAgYmFjawotaW4gMjAwOSAoaS5lLiB0aGUgZ29vZCBvbCcgZGF5cyAtLSBpdCB3YXMgdGhlIGJlc3Qgb2YgdGltZXMgYW5kIGl0IHdhcyB0aGUgd29yc3Qgb2YgdGltZXMpLgotCi1USVA6IFRoZSBUaW5rZXJQb3AgZ3JhcGggaXMgYXZhaWxhYmxlIHdpdGggPDx0aW5rZXJncmFwaC1ncmVtbGluLFRpbmtlckdyYXBoPj4gdmlhIGBUaW5rZXJGYWN0b3J5LmNyZWF0ZU1vZGVybigpYC4KLVRpbmtlckdyYXBoIGlzIHRoZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb2YgVGlua2VyUG9wMyBhbmQgaXMgdXNlZCBpbiBuZWFybHkgYWxsIHRoZSBleGFtcGxlcyBpbiB0aGlzIGRvY3VtZW50YXRpb24uCi1Ob3RlIHRoYXQgdGhlcmUgYWxzbyBleGlzdHMgdGhlIGNsYXNzaWMgYFRpbmtlckZhY3RvcnkuY3JlYXRlQ2xhc3NpYygpYCB3aGljaCBpcyB0aGUgZ3JhcGggdXNlZCBpbiBUaW5rZXJQb3AyIGFuZCBkb2VzCi1ub3QgaW5jbHVkZSB2ZXJ0ZXggbGFiZWxzLgotCi1USVA6IEFsbCBvZiB0aGUgdG95IGdyYXBocyBhdmFpbGFibGUgaW4gVGlua2VyUG9wIGFyZSBkZXNjcmliZWQgaW4KLWxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3R1dG9yaWFscy90aGUtZ3JlbWxpbi1jb25zb2xlLyN0b3ktZ3JhcGhzW1RoZSBHcmVtbGluIENvbnNvbGVdIHR1dG9yaWFsLgorcHJvcGVydHkgZ3JhcGggaXMgZGlhZ3JhbW1lZCBiZWxvdy4KIAogW1t0aW5rZXJwb3AtbW9kZXJuXV0KIC5UaW5rZXJQb3AgTW9kZXJuCiBpbWFnZTo6dGlua2VycG9wLW1vZGVybi5wbmdbd2lkdGg9NTAwXQogCi1UaW5rZXJQb3AzIGlzIHRoZSB0aGlyZCBpbmNhcm5hdGlvbiBvZiB0aGUgQXBhY2hlIFRpbmtlclBvcOKEoiBncmFwaCBjb21wdXRpbmcgZnJhbWV3b3JrLiBTaW1pbGFyIHRvIGNvbXB1dGluZyBpbgotZ2VuZXJhbCwgZ3JhcGggY29tcHV0aW5nIG1ha2VzIGEgZGlzdGluY3Rpb24gYmV0d2VlbiAqc3RydWN0dXJlKiAoZ3JhcGgpIGFuZCAqcHJvY2VzcyogKHRyYXZlcnNhbCkuIFRoZSBzdHJ1Y3R1cmUgb2YKLXRoZSBncmFwaCBpcyB0aGUgZGF0YSBtb2RlbCBkZWZpbmVkIGJ5IGEgdmVydGV4L2VkZ2UvcHJvcGVydHkgbGluazpodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL05ldHdvcmtfdG9wb2xvZ3lbdG9wb2xvZ3ldLgotVGhlIHByb2Nlc3Mgb2YgdGhlIGdyYXBoIGlzIHRoZSBtZWFucyBieSB3aGljaCB0aGUgc3RydWN0dXJlIGlzIGFuYWx5emVkLiBUaGUgdHlwaWNhbCBmb3JtIG9mIGdyYXBoIHByb2Nlc3NpbmcgaXMKLWNhbGxlZCBhIGxpbms6aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HcmFwaF90cmF2ZXJzYWxbdHJhdmVyc2FsXS4KK1RJUDogR2V0IHRvIGtub3cgdGhpcyBncmFwaCBzdHJ1Y3R1cmUgYXMgaXQgaXMgdXNlZCBleHRlbnNpdmVseSB0aHJvdWdob3V0IHRoZSBkb2N1bWVudGF0aW9uIGFuZCBpbiB3aWRlciBjaXJjbGVzIGFzCit3ZWxsLiBJdCBpcyByZWZlcnJlZCB0byBhcyAiVGlua2VyUG9wIE1vZGVybiIgYXMgaXQgaXMgYSBtb2Rlcm4gdmFyaWF0aW9uIG9mIHRoZSBvcmlnaW5hbCBkZW1vIGdyYXBoIGRpc3RyaWJ1dGVkIHdpdGgKK1RpbmtlclBvcDAgYmFjayBpbiAyMDA5IChpLmUuIHRoZSBnb29kIG9sJyBkYXlzIC0tIGl0IHdhcyB0aGUgYmVzdCBvZiB0aW1lcyBhbmQgaXQgd2FzIHRoZSB3b3JzdCBvZiB0aW1lcykuCisKK1RJUDogQWxsIG9mIHRoZSB0b3kgZ3JhcGhzIGF2YWlsYWJsZSBpbiBUaW5rZXJQb3AgYXJlIGRlc2NyaWJlZCBpbgorbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovdHV0b3JpYWxzL3RoZS1ncmVtbGluLWNvbnNvbGUvI3RveS1ncmFwaHNbVGhlIEdyZW1saW4gQ29uc29sZV0gdHV0b3JpYWwuCisKK1NpbWlsYXIgdG8gY29tcHV0aW5nIGluIGdlbmVyYWwsIGdyYXBoIGNvbXB1dGluZyBtYWtlcyBhIGRpc3RpbmN0aW9uIGJldHdlZW4gKnN0cnVjdHVyZSogKGdyYXBoKSBhbmQgKnByb2Nlc3MqCisodHJhdmVyc2FsKS4gVGhlIHN0cnVjdHVyZSBvZiB0aGUgZ3JhcGggaXMgdGhlIGRhdGEgbW9kZWwgZGVmaW5lZCBieSBhIHZlcnRleC9lZGdlL3Byb3BlcnR5CitsaW5rOmh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTmV0d29ya190b3BvbG9neVt0b3BvbG9neV0uIFRoZSBwcm9jZXNzIG9mIHRoZSBncmFwaCBpcyB0aGUgbWVhbnMgYnkgd2hpY2ggdGhlCitzdHJ1Y3R1cmUgaXMgYW5hbHl6ZWQuIFRoZSB0eXBpY2FsIGZvcm0gb2YgZ3JhcGggcHJvY2Vzc2luZyBpcyBjYWxsZWQgYQorbGluazpodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dyYXBoX3RyYXZlcnNhbFt0cmF2ZXJzYWxdLgorCitpbWFnZTp0aW5rZXJwb3AtZW5hYmxlZC5wbmdbd2lkdGg9MTM1LGZsb2F0PWxlZnRdIFRpbmtlclBvcCdzIHJvbGUgaW4gZ3JhcGggY29tcHV0aW5nIGlzIHRvIHByb3ZpZGUgdGhlIGFwcHJvcHJpYXRlCitpbnRlcmZhY2VzIGZvciBsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvcHJvdmlkZXJzLmh0bWxbZ3JhcGggcHJvdmlkZXJzXSBhbmQgdXNlcnMgdG8gaW50ZXJhY3Qgd2l0aCBncmFwaHMgb3ZlcgordGhlaXIgc3RydWN0dXJlIGFuZCBwcm9jZXNzLiAgV2hlbiBhIGdyYXBoIHN5c3RlbSBpbXBsZW1lbnRzIHRoZSBUaW5rZXJQb3Agc3RydWN0dXJlIGFuZCBwcm9jZXNzCitsaW5rOmh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXBwbGljYXRpb25fcHJvZ3JhbW1pbmdfaW50ZXJmYWNlW0FQSXNdLCB0aGVpciB0ZWNobm9sb2d5IGlzIGNvbnNpZGVyZWQKK19UaW5rZXJQb3AtZW5hYmxlZF8gYW5kIGJlY29tZXMgbmVhcmx5IGluZGlzdGluZ3Vpc2hhYmxlIGZyb20gYW55IG90aGVyIFRpbmtlclBvcC1lbmFibGVkIGdyYXBoIHN5c3RlbSBzYXZlIGZvciB0aGVpcgorcmVzcGVjdGl2ZSB0aW1lIGFuZCBzcGFjZSBjb21wbGV4aXR5LiBUaGUgcHVycG9zZSBvZiB0aGlzIGRvY3VtZW50YXRpb24gaXMgdG8gZGVzY3JpYmUgdGhlIHN0cnVjdHVyZS9wcm9jZXNzIGRpY2hvdG9teQorYXQgbGVuZ3RoIGFuZCBpbiBkb2luZyBzbywgZXhwbGFpbiBob3cgdG8gbGV2ZXJhZ2UgVGlua2VyUG9wIGZvciB0aGUgc29sZSBwdXJwb3NlIG9mIGdyYXBoIHN5c3RlbS1hZ25vc3RpYyBncmFwaAorY29tcHV0aW5nLgorCitJTVBPUlRBTlQ6IFRpbmtlclBvcCBpcyBsaWNlbnNlZCB1bmRlciB0aGUgcG9wdWxhciBsaW5rOmh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMC5odG1sW0FwYWNoZTJdCitmcmVlIHNvZnR3YXJlIGxpY2Vuc2UuIEhvd2V2ZXIsIG5vdGUgdGhhdCB0aGUgdW5kZXJseWluZyBncmFwaCBlbmdpbmUgdXNlZCB3aXRoIFRpbmtlclBvcCBtYXkgaGF2ZSBhIGRpZmZlcmVudAorbGljZW5zZS4gVGh1cywgYmUgc3VyZSB0byByZXNwZWN0IHRoZSBsaWNlbnNlIGNhdmVhdHMgb2YgdGhlIGdyYXBoIHN5c3RlbSBwcm9kdWN0LgogCiBHZW5lcmFsbHkgc3BlYWtpbmcsIHRoZSBzdHJ1Y3R1cmUgb3IgImdyYXBoIiBBUEkgaXMgbWVhbnQgZm9yIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9wcm92aWRlcnMuaHRtbFtncmFwaCBwcm92aWRlcnNdCiB3aG8gYXJlIGltcGxlbWVudGluZyB0aGUgVGlua2VyUG9wIGludGVyZmFjZXMgYW5kIHRoZSBwcm9jZXNzIG9yICJ0cmF2ZXJzYWwiIEFQSSAoaS5lLiBHcmVtbGluKSBpcyBtZWFudCBmb3IgZW5kLXVzZXJzCkBAIC01OCw3ICsxMzUsNyBAQAogdGhleSBhcmUgZGVzY3JpYmVkIGluIGdyZWF0ZXIgZGV0YWlsIGluIHRoZSBsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei90dXRvcmlhbHMvZ3JlbWxpbnMtYW5hdG9teS9bR3JlbWxpbidzIEFuYXRvbXldCiB0dXRvcmlhbC4KIAotLlByaW1hcnkgY29tcG9uZW50cyBvZiB0aGUgVGlua2VyUG9wMyAqc3RydWN0dXJlKiBBUEkgCisuUHJpbWFyeSBjb21wb25lbnRzIG9mIHRoZSBUaW5rZXJQb3AgKnN0cnVjdHVyZSogQVBJCiAgKiBgR3JhcGhgOiBtYWludGFpbnMgYSBzZXQgb2YgdmVydGljZXMgYW5kIGVkZ2VzLCBhbmQgYWNjZXNzIHRvIGRhdGFiYXNlIGZ1bmN0aW9ucyBzdWNoIGFzIHRyYW5zYWN0aW9ucy4KICAqIGBFbGVtZW50YDogbWFpbnRhaW5zIGEgY29sbGVjdGlvbiBvZiBwcm9wZXJ0aWVzIGFuZCBhIHN0cmluZyBsYWJlbCBkZW5vdGluZyB0aGUgZWxlbWVudCB0eXBlLgogICAqKiBgVmVydGV4YDogZXh0ZW5kcyBFbGVtZW50IGFuZCBtYWludGFpbnMgYSBzZXQgb2YgaW5jb21pbmcgYW5kIG91dGdvaW5nIGVkZ2VzLgpAQCAtNjYsNyArMTQzLDcgQEAKICAqIGBQcm9wZXJ0eTxWPmA6IGEgc3RyaW5nIGtleSBhc3NvY2lhdGVkIHdpdGggYSBgVmAgdmFsdWUuCiAgICoqIGBWZXJ0ZXhQcm9wZXJ0eTxWPmA6IGEgc3RyaW5nIGtleSBhc3NvY2lhdGVkIHdpdGggYSBgVmAgdmFsdWUgYXMgd2VsbCBhcyBhIGNvbGxlY3Rpb24gb2YgYFByb3BlcnR5PFU+YCBwcm9wZXJ0aWVzICgqdmVydGljZXMgb25seSopCiAKLS5QcmltYXJ5IGNvbXBvbmVudHMgb2YgdGhlIFRpbmtlclBvcDMgKnByb2Nlc3MqIEFQSQorLlByaW1hcnkgY29tcG9uZW50cyBvZiB0aGUgVGlua2VyUG9wICpwcm9jZXNzKiBBUEkKICAqIGBUcmF2ZXJzYWxTb3VyY2VgOiBhIGdlbmVyYXRvciBvZiB0cmF2ZXJzYWxzIGZvciBhIHBhcnRpY3VsYXIgZ3JhcGgsIGxpbms6aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Eb21haW4tc3BlY2lmaWNfbGFuZ3VhZ2VbZG9tYWluIHNwZWNpZmljIGxhbmd1YWdlXSAoRFNMKSwgYW5kIGV4ZWN1dGlvbiBlbmdpbmUuCiAgKiogYFRyYXZlcnNhbDxTLEU+YDogYSBmdW5jdGlvbmFsIGRhdGEgZmxvdyBwcm9jZXNzIHRyYW5zZm9ybWluZyBvYmplY3RzIG9mIHR5cGUgYFNgIGludG8gb2JqZWN0IG9mIHR5cGUgYEVgLgogICoqKiBgR3JhcGhUcmF2ZXJzYWxgOiBhIHRyYXZlcnNhbCBEU0wgdGhhdCBpcyBvcmllbnRlZCB0b3dhcmRzIHRoZSBzZW1hbnRpY3Mgb2YgdGhlIHJhdyBncmFwaCAoaS5lLiB2ZXJ0aWNlcywgZWRnZXMsIGV0Yy4pLgpAQCAtNzQsMjUgKzE1MSwxNCBAQAogICoqIGBWZXJ0ZXhQcm9ncmFtYDogY29kZSBleGVjdXRlZCBhdCBhbGwgdmVydGljZXMgaW4gYSBsb2dpY2FsbHkgcGFyYWxsZWwgbWFubmVyIHdpdGggaW50ZXJjb21tdW5pY2F0aW9uIHZpYSBtZXNzYWdlIHBhc3NpbmcuCiAgKiogYE1hcFJlZHVjZWA6IGEgY29tcHV0YXRpb24gdGhhdCBhbmFseXplcyBhbGwgdmVydGljZXMgaW4gdGhlIGdyYXBoIGluIHBhcmFsbGVsIGFuZCB5aWVsZHMgYSBzaW5nbGUgcmVkdWNlZCByZXN1bHQuCiAKLUlNUE9SVEFOVDogVGlua2VyUG9wMyBpcyBsaWNlbnNlZCB1bmRlciB0aGUgcG9wdWxhciBsaW5rOmh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMC5odG1sW0FwYWNoZTJdCi1mcmVlIHNvZnR3YXJlIGxpY2Vuc2UuIEhvd2V2ZXIsIG5vdGUgdGhhdCB0aGUgdW5kZXJseWluZyBncmFwaCBlbmdpbmUgdXNlZCB3aXRoIFRpbmtlclBvcDMgbWF5IGhhdmUgYSBkaWZmZXJlbnQKLWxpY2Vuc2UuIFRodXMsIGJlIHN1cmUgdG8gcmVzcGVjdCB0aGUgbGljZW5zZSBjYXZlYXRzIG9mIHRoZSBncmFwaCBzeXN0ZW0gcHJvZHVjdC4KLQotaW1hZ2U6dGlua2VycG9wLWVuYWJsZWQucG5nW3dpZHRoPTEzNSxmbG9hdD1sZWZ0XSBXaGVuIGEgZ3JhcGggc3lzdGVtIGltcGxlbWVudHMgdGhlIFRpbmtlclBvcDMgc3RydWN0dXJlIGFuZCBwcm9jZXNzCi1saW5rOmh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXBwbGljYXRpb25fcHJvZ3JhbW1pbmdfaW50ZXJmYWNlW0FQSXNdLCB0aGVpciB0ZWNobm9sb2d5IGlzIGNvbnNpZGVyZWQKLV9UaW5rZXJQb3AzLWVuYWJsZWRfIGFuZCBiZWNvbWVzIG5lYXJseSBpbmRpc3Rpbmd1aXNoYWJsZSBmcm9tIGFueSBvdGhlciBUaW5rZXJQb3AtZW5hYmxlZCBncmFwaCBzeXN0ZW0gc2F2ZSBmb3IKLXRoZWlyIHJlc3BlY3RpdmUgdGltZSBhbmQgc3BhY2UgY29tcGxleGl0eS4gVGhlIHB1cnBvc2Ugb2YgdGhpcyBkb2N1bWVudGF0aW9uIGlzIHRvIGRlc2NyaWJlIHRoZSBzdHJ1Y3R1cmUvcHJvY2VzcwotZGljaG90b215IGF0IGxlbmd0aCBhbmQgaW4gZG9pbmcgc28sIGV4cGxhaW4gaG93IHRvIGxldmVyYWdlIFRpbmtlclBvcDMgZm9yIHRoZSBzb2xlIHB1cnBvc2Ugb2YgZ3JhcGggc3lzdGVtLWFnbm9zdGljCi1ncmFwaCBjb21wdXRpbmcuIEJlZm9yZSBkZWVwLWRpdmluZyBpbnRvIHRoZSB2YXJpb3VzIHN0cnVjdHVyZS9wcm9jZXNzIEFQSXMsIGEgc2hvcnQgaW50cm9kdWN0b3J5IHJldmlldyBvZiBib3RoIEFQSXMKLWlzIHByb3ZpZGVkLgotCi1OT1RFOiBUaGUgVGlua2VyUG9wMyBBUEkgcmlkZXMgYSBmaW5lIGxpbmUgYmV0d2VlbiBwcm92aWRpbmcgY29uY2lzZSAicXVlcnkgbGFuZ3VhZ2UiIG1ldGhvZCBuYW1lcyBhbmQgcmVzcGVjdGluZwotSmF2YSBtZXRob2QgbmFtaW5nIHN0YW5kYXJkcy4gVGhlIGdlbmVyYWwgY29udmVudGlvbiB1c2VkIHRocm91Z2hvdXQgVGlua2VyUG9wMyBpcyB0aGF0IGlmIGEgbWV0aG9kIGlzICJ1c2VyIGV4cG9zZWQsIgorTk9URTogVGhlIFRpbmtlclBvcCBBUEkgcmlkZXMgYSBmaW5lIGxpbmUgYmV0d2VlbiBwcm92aWRpbmcgY29uY2lzZSAicXVlcnkgbGFuZ3VhZ2UiIG1ldGhvZCBuYW1lcyBhbmQgcmVzcGVjdGluZworSmF2YSBtZXRob2QgbmFtaW5nIHN0YW5kYXJkcy4gVGhlIGdlbmVyYWwgY29udmVudGlvbiB1c2VkIHRocm91Z2hvdXQgVGlua2VyUG9wIGlzIHRoYXQgaWYgYSBtZXRob2QgaXMgInVzZXIgZXhwb3NlZCwiCiB0aGVuIGEgY29uY2lzZSBuYW1lIGlzIHByb3ZpZGVkIChlLmcuIGBvdXQoKWAsIGBwYXRoKClgLCBgcmVwZWF0KClgKS4gSWYgdGhlIG1ldGhvZCBpcyBwcmltYXJpbHkgZm9yIGdyYXBoIHN5c3RlbXMKIHByb3ZpZGVycywgdGhlbiB0aGUgc3RhbmRhcmQgSmF2YSBuYW1pbmcgY29udmVudGlvbiBpcyBmb2xsb3dlZCAoZS5nLiBgZ2V0TmV4dFN0ZXAoKWAsIGBnZXRTdGVwcygpYCwKIGBnZXRFbGVtZW50Q29tcHV0ZUtleXMoKWApLgogCi09PSBUaGUgR3JhcGggU3RydWN0dXJlCitbW2dyYXBoLXN0cnVjdHVyZV1dCis9PT0gVGhlIEdyYXBoIFN0cnVjdHVyZQogCiBpbWFnZTpncmVtbGluLXN0YW5kaW5nLnBuZ1t3aWR0aD0xMjUsZmxvYXQ9bGVmdF0gQSBncmFwaCdzIHN0cnVjdHVyZSBpcyB0aGUgdG9wb2xvZ3kgZm9ybWVkIGJ5IHRoZSBleHBsaWNpdCByZWZlcmVuY2VzCiBiZXR3ZWVuIGl0cyB2ZXJ0aWNlcywgZWRnZXMsIGFuZCBwcm9wZXJ0aWVzLiBBIHZlcnRleCBoYXMgaW5jaWRlbnQgZWRnZXMuIEEgdmVydGV4IGlzIGFkamFjZW50IHRvIGFub3RoZXIgdmVydGV4IGlmCkBAIC0xMDQsMTAgKzE3MCwxMCBAQAogbW9yZSBhYm91dCBpdCBpbiB0aGUgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovZGV2L3Byb3ZpZGVyL1tHcmFwaCBQcm92aWRlcl0gZG9jdW1lbnRhdGlvbi4KIAogW1t0aGUtZ3JhcGgtcHJvY2Vzc11dCi09PSBUaGUgR3JhcGggUHJvY2VzcworPT09IFRoZSBHcmFwaCBQcm9jZXNzCiAKIGltYWdlOmdyZW1saW4tcnVubmluZy5wbmdbd2lkdGg9MTI1LGZsb2F0PWxlZnRdIFRoZSBwcmltYXJ5IHdheSBpbiB3aGljaCBncmFwaHMgYXJlIHByb2Nlc3NlZCBhcmUgdmlhIGdyYXBoCi10cmF2ZXJzYWxzLiBUaGUgVGlua2VyUG9wMyBwcm9jZXNzIEFQSSBpcyBmb2N1c2VkIG9uIGFsbG93aW5nIHVzZXJzIHRvIGNyZWF0ZSBncmFwaCB0cmF2ZXJzYWxzIGluIGEKK3RyYXZlcnNhbHMuIFRoZSBUaW5rZXJQb3AgcHJvY2VzcyBBUEkgaXMgZm9jdXNlZCBvbiBhbGxvd2luZyB1c2VycyB0byBjcmVhdGUgZ3JhcGggdHJhdmVyc2FscyBpbiBhCiBzeW50YWN0aWNhbGx5LWZyaWVuZGx5IHdheSBvdmVyIHRoZSBzdHJ1Y3R1cmVzIGRlZmluZWQgaW4gdGhlIHByZXZpb3VzIHNlY3Rpb24uIEEgdHJhdmVyc2FsIGlzIGFuIGFsZ29yaXRobWljIHdhbGsKIGFjcm9zcyB0aGUgZWxlbWVudHMgb2YgYSBncmFwaCBhY2NvcmRpbmcgdG8gdGhlIHJlZmVyZW50aWFsIHN0cnVjdHVyZSBleHBsaWNpdCB3aXRoaW4gdGhlIGdyYXBoIGRhdGEgc3RydWN0dXJlLgogRm9yIGV4YW1wbGU6IF8iV2hhdCBzb2Z0d2FyZSBkb2VzIHZlcnRleCAxJ3MgZnJpZW5kcyB3b3JrIG9uPyJfIFRoaXMgRW5nbGlzaC1zdGF0ZW1lbnQgY2FuIGJlIHJlcHJlc2VudGVkIGluIHRoZQpAQCAtMTM1LDcgKzIwMSw4IEBACiAgLiBgc2lkZUVmZmVjdGA6IGFsbG93IHRoZSB0cmF2ZXJzZXIgdG8gcHJvY2VlZCB1bmNoYW5nZWQsIGJ1dCB5aWVsZCBzb21lIGNvbXB1dGF0aW9uYWwgc2lkZUVmZmVjdCBpbiB0aGUgcHJvY2VzcyAoUyAmcmFycmxwOyBTKS4KICAuIGBicmFuY2hgOiBzcGxpdCB0aGUgdHJhdmVyc2VyIGFuZCBzZW5kIGVhY2ggdG8gYW4gYXJiaXRyYXJ5IGxvY2F0aW9uIGluIHRoZSB0cmF2ZXJzYWwgKFMgJnJhcnI7IHsgU34xfiAmcmFycjsgRSosIC4uLiwgU35ufiAmcmFycjsgRSogfSAmcmFycjsgRSopLgogCi1OZWFybHkgZXZlcnkgc3RlcCBpbiBHcmFwaFRyYXZlcnNhbCBlaXRoZXIgZXh0ZW5kcyBgTWFwU3RlcGAsIGBGbGF0TWFwU3RlcGAsIGBGaWx0ZXJTdGVwYCwgYFNpZGVFZmZlY3RTdGVwYCwgb3IgYEJyYW5jaFN0ZXBgLgorTmVhcmx5IGV2ZXJ5IHN0ZXAgaW4gYEdyYXBoVHJhdmVyc2FsYCBlaXRoZXIgZXh0ZW5kcyBgTWFwU3RlcGAsIGBGbGF0TWFwU3RlcGAsIGBGaWx0ZXJTdGVwYCwgYFNpZGVFZmZlY3RTdGVwYCwgb3IKK2BCcmFuY2hTdGVwYC4KIAogVElQOiBgR3JhcGhUcmF2ZXJzYWxgIGlzIGEgbGluazpodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01vbm9pZFttb25vaWRdIGluIHRoYXQgaXQgaXMgYW4gYWxnZWJyYWljIHN0cnVjdHVyZQogdGhhdCBoYXMgYSBzaW5nbGUgYmluYXJ5IG9wZXJhdGlvbiB0aGF0IGlzIGFzc29jaWF0aXZlLiBUaGUgYmluYXJ5IG9wZXJhdGlvbiBpcyBmdW5jdGlvbiBjb21wb3NpdGlvbiAoaS5lLiBtZXRob2QKQEAgLTE4Myw3ICsyNTAsNyBAQAogPDI+IEdldCB0aGUgdmVydGljZXMgdGhhdCBhcmUgb3V0Z29pbmcgYWRqYWNlbnQgdG8gdGhlIG1hcmtvLXZlcnRleCB2aWEga25vd3MtZWRnZXMuCiA8Mz4gR2V0IHRoZSBuYW1lcyBvZiB0aGUgbWFya28tdmVydGV4J3MgZnJpZW5kcy4KIAotPT09IFRoZSBUcmF2ZXJzZXIKKz09PT0gVGhlIFRyYXZlcnNlcgogCiBXaGVuIGEgdHJhdmVyc2FsIGlzIGV4ZWN1dGVkLCB0aGUgc291cmNlIG9mIHRoZSB0cmF2ZXJzYWwgaXMgb24gdGhlIGxlZnQgb2YgdGhlIGV4cHJlc3Npb24gKGUuZy4gdmVydGV4IDEpLCB0aGUgc3RlcHMKIGFyZSB0aGUgbWlkZGxlIG9mIHRoZSB0cmF2ZXJzYWwgKGUuZy4gYG91dCgna25vd3MnKWAgYW5kIGB2YWx1ZXMoJ25hbWUnKWApLCBhbmQgdGhlIHJlc3VsdHMgYXJlICJ0cmF2ZXJzYWwubmV4dCgpJ2QiCkBAIC0yMTgsNjMgKzI4NSwzMDYgQEAKIHRoZSBncmFwaCBkYXRhYmFzZSBiZWluZyB1c2VkLiBBIHRyYXZlcnNhbCdzIHJlc3VsdCBpcyBuZXZlciBvcmRlcmVkIGJ5IFRpbmtlclBvcCB1bmxlc3MgcGVyZm9ybWVkIGV4cGxpY2l0bHkgYnkgbWVhbnMKIG9mIDw8b3JkZXItc3RlcCxgb3JkZXIoKWA+Pi1zdGVwLgogCi09PSBPbiBHcmVtbGluIExhbmd1YWdlIFZhcmlhbnRzCitbW2Nvbm5lY3RpbmctZ3JlbWxpbl1dCis9PSBDb25uZWN0aW5nIEdyZW1saW4KIAotR3JlbWxpbiBpcyB3cml0dGVuIGluIEphdmEgOC4gVGhlcmUgYXJlIHZhcmlvdXMgbGFuZ3VhZ2UgdmFyaWFudHMgb2YgR3JlbWxpbiBzdWNoIGFzIEdyZW1saW4tR3Jvb3Z5IChwYWNrYWdlZCB3aXRoCi1UaW5rZXJQb3AzKSwgR3JlbWxpbi1QeXRob24gKHBhY2thZ2VkIHdpdGggVGlua2VyUG9wMyksIGxpbms6aHR0cHM6Ly9naXRodWIuY29tL21wb2xsbWVpZXIvZ3JlbWxpbi1zY2FsYVtHcmVtbGluLVNjYWxhXSwKLUdyZW1saW4tSmF2YVNjcmlwdCwgR3JlbWxpbi1DbG9qdXJlIChrbm93biBhcyBsaW5rOmh0dHBzOi8vZ2l0aHViLmNvbS9jbG9qdXJld2Vya3ovb2dyZVtPZ3JlXSksIGV0Yy4KLUl0IGlzIGJlc3QgdG8gdGhpbmsgb2YgR3JlbWxpbiBhcyBhIHN0eWxlIG9mIGdyYXBoIHRyYXZlcnNpbmcgdGhhdCBpcyBub3QgYm91bmQgdG8gYSBwYXJ0aWN1bGFyIHByb2dyYW1taW5nIGxhbmd1YWdlIHBlciBzZS4KLVdpdGhpbiBhIHByb2dyYW1taW5nIGxhbmd1YWdlIGZhbWlsaWFyIHRvIHRoZSBkZXZlbG9wZXIsIHRoZXJlIGlzIGEgR3JlbWxpbiB2YXJpYW50IHRoYXQgdGhleSBjYW4gdXNlIHRoYXQgbGV2ZXJhZ2VzCi10aGUgaWRpb21zIG9mIHRoYXQgbGFuZ3VhZ2UuIEF0IG1pbmltdW0sIGEgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgcHJvdmlkaW5nIGEgR3JlbWxpbiBpbXBsZW1lbnRhdGlvbiBtdXN0IHN1cHBvcnQKLWxpbms6aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NZXRob2RfY2hhaW5pbmdbZnVuY3Rpb24gY2hhaW5pbmddICh3aXRoCi1saW5rOmh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQW5vbnltb3VzX2Z1bmN0aW9uW2xhbWJkYXMvYW5vbnltb3VzIGZ1bmN0aW9uc10gYmVpbmcgYSAibmljZSB0byBoYXZlIiBpZiB0aGUKLXZhcmlhbnRzIHdpc2hlcyB0byBvZmZlciBhcmJpdHJhcnkgY29tcHV0YXRpb25zIGJleW9uZCB0aGUgcHJvdmlkZWQgR3JlbWxpbiBzdGVwcykuCitJdCB3YXMgZXN0YWJsaXNoZWQgaW4gdGhlIGluaXRpYWwgaW50cm9kdWN0b3J5IHNlY3Rpb24gdGhhdCBfR3JlbWxpbiBpcyBHcmVtbGluIGlzIEdyZW1saW5fLCBtZWFuaW5nIHRoYXQgaXJyZXNwZWN0aXZlCitvZiBwcm9ncmFtbWluZyBsYW5ndWFnZSwgZ3JhcGggc3lzdGVtLCBldGMuIHRoZSBHcmVtbGluIHdyaXR0ZW4gaXMgYWx3YXlzIG9mIHRoZSBzYW1lIGdlbmVyYWwgY29uc3RydWN0IG1ha2luZyBpdAorcG9zc2libGUgZm9yIHVzZXJzIHRvIG1vdmUgYmV0d2VlbiBkZXZlbG9wbWVudCBsYW5ndWFnZXMgYW5kIFRpbmtlclBvcC1lbmFibGVkIGdyYXBoIHRlY2hub2xvZ3kgZWFzaWx5LiBUaGlzIHF1YWxpdHkKK29mIEdyZW1saW4gZ2VuZXJhbGx5IGFwcGxpZXMgdG8gdGhlIHRyYXZlcnNhbCBsYW5ndWFnZSBpdHNlbGYuIEl0IGFwcGxpZXMgbGVzcyB0byB0aGUgd2F5IGluIHdoaWNoIHRoZSB1c2VyIGNvbm5lY3RzCit0byBhIGdyYXBoIHRvIHV0aWxpemUgR3JlbWxpbiwgd2hpY2ggbWlnaHQgZGlmZmVyIGNvbnNpZGVyYWJseSBkZXBlbmRpbmcgb24gdGhlIHByb2dyYW1taW5nIGxhbmd1YWdlIG9yIGdyYXBoIGRhdGFiYXNlCitjaG9zZW4uCiAKLVRocm91Z2hvdXQgdGhlIGRvY3VtZW50YXRpb24sIHRoZSBleGFtcGxlcyBwcm92aWRlZCBhcmUgcHJpbWFyaWx5IHdyaXR0ZW4gaW4gR3JlbWxpbi1Hcm9vdnkuIFRoZSByZWFzb24gZm9yIHRoaXMgaXMKLXRoZSA8PGdyZW1saW4tY29uc29sZSxHcmVtbGluIENvbnNvbGU+PiAtLSBhbiBpbnRlcmFjdGl2ZSBwcm9ncmFtbWluZyBlbnZpcm9ubWVudCBleGlzdHMgdGhhdCBkb2VzIG5vdCByZXF1aXJlCi1jb2RlIGNvbXBpbGF0aW9uLiBGb3IgbGVhcm5pbmcgVGlua2VyUG9wMyBhbmQgaW50ZXJhY3Rpbmcgd2l0aCBhIGxpdmUgZ3JhcGggc3lzdGVtIGluIGFuIGFkIGhvYyBtYW5uZXIsIHRoZSBHcmVtbGluCi1Db25zb2xlIGlzIGludmFsdWFibGUuIEhvd2V2ZXIsIGZvciBkZXZlbG9wZXJzIGludGVyZXN0ZWQgaW4gd29ya2luZyB3aXRoIEdyZW1saW4tSmF2YSwgYSBmZXcgR3Jvb3Z5LXRvLUphdmEgcGF0dGVybnMKLWFyZSBwcmVzZW50ZWQgYmVsb3cuCitIb3cgb25lIGNvbm5lY3RzIHRvIGEgZ3JhcGggaXMgYSBtdWx0aS1mYWNldGVkIHN1YmplY3QgdGhhdCBlc3NlbnRpYWxseSBkaXZpZGVzIGFsb25nIGEgc2ltcGxlIGxpbmVzIGRldGVybWluZWQgYnkgdGhlCithbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbjogV2hlcmUgaXMgdGhlIEdyZW1saW4gVHJhdmVyc2FsIE1hY2hpbmUgKEdUTSk/IFRoZSByZWFzb24gdGhhdCB0aGlzIHF1ZXN0aW9uIGlzIHNvIGltcG9ydGFudCBpcworYmVjYXVzZSB0aGUgR1RNIGlzIHJlc3BvbnNpYmxlIGZvciBwcm9jZXNzaW5nIHRyYXZlcnNhbHMuIE9uZSBjYW4gd3JpdGUgR3JlbWxpbiB0cmF2ZXJzYWxzIGluIGFueSBsYW5ndWFnZSwgYnV0IHdpdGhvdXQKK2EgR1RNIHRoZXJlIHdpbGwgYmUgbm8gd2F5IHRvIGV4ZWN1dGUgdGhhdCB0cmF2ZXJzYWwgYWdhaW5zdCBhIFRpbmtlclBvcC1lbmFibGVkIGdyYXBoLiBUaGUgR1RNIGlzIHR5cGljYWxseSBpbiBvbmUKK29mIHRoZSBmb2xsb3dpbmcgcGxhY2VzOgogCi1bc291cmNlLGdyb292eV0KLS8vIEdyZW1saW4tR3Jvb3Z5Ci1nLlYoKS5vdXQoJ2tub3dzJykudmFsdWVzKCduYW1lJykgPDE+Ci1nLlYoKS5vdXQoJ2tub3dzJykubWFwe2l0LmdldCgpLnZhbHVlKCduYW1lJykgKyAnIGlzIHRoZSBmcmllbmQgbmFtZSd9IDwyPgotZy5WKCkub3V0KCdrbm93cycpLnNpZGVFZmZlY3QoU3lzdGVtLm91dC4mcHJpbnRsbikgPDM+Ci1nLlYoKS5hcygncGVyc29uJykub3V0KCdrbm93cycpLmFzKCdmcmllbmQnKS5zZWxlY3QoJ3BlcnNvbicsJ2ZyaWVuZCcpLmJ5e2l0LnZhbHVlKCduYW1lJykubGVuZ3RoKCl9IDw0PgorKiA8PGNvbm5lY3RpbmctZW1iZWRkZWQsRW1iZWRkZWQ+PiBpbiBhIEphdmEgYXBwbGljYXRpb24gKGkuZS4gSmF2YSBWaXJ0dWFsIE1hY2hpbmUpCisqIDw8Y29ubmVjdGluZy1ncmVtbGluLXNlcnZlcixIb3N0ZWQ+PiBpbiA8PGdyZW1saW4tc2VydmVyLEdyZW1saW4gU2VydmVyPj4KKyogPDxjb25uZWN0aW5nLXJncCxIb3N0ZWQ+PiBieSBhIFJlbW90ZSBHcmVtbGluIFByb3ZpZGVyIChSR1ApCisKK1RoZSBmb2xsb3dpbmcgc2VjdGlvbnMgb3V0bGluZSBlYWNoIG9mIHRoZXNlIG1vZGVscyBhbmQgd2hhdCBpbXBhY3QgdGhleSBoYXZlIHRvIHVzaW5nIEdyZW1saW4uCisKK1tbY29ubmVjdGluZy1lbWJlZGRlZF1dCis9PT0gRW1iZWRkZWQKKworaW1hZ2U6Ymx1ZXByaW50cy1jaGFyYWN0ZXItMS5wbmdbd2lkdGg9MTI1LGZsb2F0PWxlZnRdIFRpbmtlclBvcCBtYWludGFpbnMgdGhlIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIEdUTSwKK3doaWNoIGlzIHdyaXR0ZW4gaW4gSmF2YSBhbmQgdGh1cyBhdmFpbGFibGUgZm9yIHRoZSBKYXZhIFZpcnR1YWwgTWFjaGluZSAoSlZNKS4gVGhpcyBpcyB0aGUgY2xhc3NpYyBtb2RlbCB0aGF0CitUaW5rZXJQb3AgaGFzIGxvbmcgYmVlbiBiYXNlZCBvbiBhbmQgbWFueSBleGFtcGxlcywgYmxvZyBwb3N0cyBhbmQgb3RoZXIgcmVzb3VyY2VzIG9uIHRoZSBpbnRlcm5ldCB3aWxsIGJlCitkZW1vbnN0cmF0ZWQgaW4gdGhpcyBzdHlsZS4gSXQgaXMgd29ydGggbm90aW5nIHRoYXQgdGhlIGVtYmVkZGVkIG1vZGUgaXMgbm90IHJlc3RyaWN0ZWQgdG8ganVzdCBKYXZhIGFzIGEgcHJvZ3JhbW1pbmcKK2xhbmd1YWdlLiBBbnkgSlZNIGxhbmd1YWdlIGNhbiB0YWtlIHRoaXMgYXBwcm9hY2ggYW5kIGluIHNvbWUgY2FzZXMgdGhlcmUgYXJlIGxhbmd1YWdlIHNwZWNpZmljIHdyYXBwZXJzIHRoYXQgY2FuIGhlbHAKK21ha2UgR3JlbWxpbiBtb3JlIGNvbnZlbmllbnQgdG8gdXNlIGluIHRoZSBzdHlsZSBhbmQgY2FwYWJpbGl0eSBvZiB0aGF0IGxhbmd1YWdlLiBFeGFtcGxlcyBvZiB0aGVzZSB3cmFwcGVycyBpbmNsdWRlCitsaW5rOmh0dHBzOi8vZ2l0aHViLmNvbS9tcG9sbG1laWVyL2dyZW1saW4tc2NhbGFbZ3JlbWxpbi1zY2FsYV0gYW5kIGxpbms6aHR0cDovL29ncmUuY2xvanVyZXdlcmt6Lm9yZy9bT2dyZV0gKGZvciBDbG9qdXJlKS4KKworSW4gdGhpcyBtb2RlLCB1c2VycyB3aWxsIHN0YXJ0IGJ5IGNyZWF0aW5nIGEgYEdyYXBoYCBpbnN0YW5jZSwgZm9sbG93ZWQgYnkgYSBgR3JhcGhUcmF2ZXJzYWxTb3VyY2VgIHdoaWNoIGlzIHRoZSBjbGFzcworZnJvbSB3aGljaCBHcmVtbGluIHRyYXZlcnNhbHMgYXJlIHNwYXduZWQuIEdyYXBocyB0aGF0IGFsbG93IHRoaXMgc29ydCBvZiBkaXJlY3QgaW5zdGFudGlhdGlvbiBhcmUgb2J2aW91c2x5IG9uZXMKK3RoYXQgYXJlIEpWTS1iYXNlZCAob3IgaGF2ZSBhIEpWTS1iYXNlZCBjb25uZWN0b3IpIGFuZCBkaXJlY3RseSBpbXBsZW1lbnQgVGlua2VyUG9wIGludGVyZmFjZXMuCiAKIFtzb3VyY2UsamF2YV0KLS8vIEdyZW1saW4tSmF2YQotZy5WKCkub3V0KCJrbm93cyIpLnZhbHVlcygibmFtZSIpIDwxPgotZy5WKCkub3V0KCJrbm93cyIpLm1hcCh0IC0+IHQuZ2V0KCkudmFsdWUoIm5hbWUiKSArICIgaXMgdGhlIGZyaWVuZCBuYW1lIikgPDI+Ci1nLlYoKS5vdXQoImtub3dzIikuc2lkZUVmZmVjdChTeXN0ZW0ub3V0OjpwcmludGxuKSA8Mz4KLWcuVigpLmFzKCJwZXJzb24iKS5vdXQoImtub3dzIikuYXMoImZyaWVuZCIpLnNlbGVjdCgicGVyc29uIiwiZnJpZW5kIikuYnkoKEZ1bmN0aW9uPFZlcnRleCwgSW50ZWdlcj4pIHYgLT4gdi48U3RyaW5nPnZhbHVlKCJuYW1lIikubGVuZ3RoKCkpIDw0PgorR3JhcGggZ3JhcGggPSBUaW5rZXJHcmFwaC5vcGVuKCk7CiAKLTwxPiBBbGwgdGhlIG5vbi1sYW1iZGEgc3RlcCBjaGFpbmluZyBpcyBpZGVudGljYWwgaW4gR3JlbWxpbi1Hcm9vdnkgYW5kIEdyZW1saW4tSmF2YS4gSG93ZXZlciwgbm90ZSB0aGF0IEdyb292eQotc3VwcG9ydHMgYCdgIHN0cmluZ3MgYXMgd2VsbCBhcyBgImAgc3RyaW5ncy4KLTwyPiBJbiBHcm9vdnksIGxhbWJkYXMgYXJlIGNhbGxlZCBjbG9zdXJlcyBhbmQgaGF2ZSBhIGRpZmZlcmVudCBzeW50YXgsIHdoZXJlIEdyb292eSBzdXBwb3J0cyB0aGUgYGl0YCBrZXl3b3JkIGFuZAotSmF2YSBkb2Vzbid0IHdpdGggYWxsIHBhcmFtZXRlcnMgcmVxdWlyaW5nIG5hbWluZy4KLTwzPiBUaGUgc3ludGF4IGZvciBtZXRob2QgcmVmZXJlbmNlcyBkaWZmZXJzIHNsaWdodGx5IGJldHdlZW4gbGluazpodHRwczovL2RvY3Mub3JhY2xlLmNvbS9qYXZhc2UvdHV0b3JpYWwvamF2YS9qYXZhT08vbWV0aG9kcmVmZXJlbmNlcy5odG1sW0phdmFdCi1hbmQgbGluazpodHRwOi8vbXJoYWtpLmJsb2dzcG90LmRlLzIwMDkvMDgvZ3Jvb3Z5LWdvb2RuZXNzLXR1cm4tbWV0aG9kcy1pbnRvLmh0bWxbR3JlbWxpbi1Hcm9vdnldLgotPDQ+IEdyb292eSBpcyBsZW5pZW50IG9uIG9iamVjdCB0eXBpbmcgYW5kIEphdmEgaXMgbm90LiBXaGVuIHRoZSBwYXJhbWV0ZXIgdHlwZSBvZiB0aGUgbGFtYmRhIGlzIG5vdCBrbm93biwKLXR5cGVjYXN0aW5nIGlzIHJlcXVpcmVkLgorVGhlICJncmFwaCIgdGhlbiBzcGF3bnMgYSBgR3JhcGhUcmF2ZXJzYWxTb3VyY2VgIGFzIGZvbGxvd3MgYW5kIHR5cGljYWxseSwgYnkgY29udmVudGlvbiwgdGhpcyB2YXJpYWJsZSBpcyBuYW1lZCAiZyI6CiAKLVBsZWFzZSBzZWUgdGhlIDw8Z3JlbWxpbi12YXJpYW50cywgR3JlbWxpbiBWYXJpYW50cz4+IHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhpcyB0b3BpYy4KK1tzb3VyY2UsamF2YV0KKy0tLS0KK0dyYXBoVHJhdmVyc2FsU291cmNlIGcgPSBncmFwaC50cmF2ZXJzYWwoKTsKK0xpc3Q8VmVydGV4PiB2ZXJ0aWNlcyA9IGcuVigpLnRvTGlzdCgpCistLS0tCiAKLT09IEdyYXBoIFN5c3RlbSBJbnRlZ3JhdGlvbgorTk9URTogSXQgbWF5IGJlIGhlbHBmdWwgdG8gcmVhZCB0aGUgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovdHV0b3JpYWxzL2dyZW1saW5zLWFuYXRvbXkvW0dyZW1saW4gQW5hdG9teV0KK3R1dG9yaWFsLCB3aGljaCBkZXNjcmliZXMgdGhlIGNvbXBvbmVudCBwYXJ0cyBvZiBHcmVtbGluIHRvIGdldCBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSB0ZXJtaW5vbG9neSBiZWZvcmUKK3Byb2NlZWRpbmcgZnVydGhlci4KIAotaW1hZ2U6cHJvdmlkZXItaW50ZWdyYXRpb24ucG5nW3dpZHRoPTM5NSxmbG9hdD1yaWdodF0gVGlua2VyUG9wIGlzIGEgZnJhbWV3b3JrIGNvbXBvc2VkIG9mIHZhcmlvdXMgaW50ZXJvcGVyYWJsZQotY29tcG9uZW50cy4gQXQgdGhlIGZvdW5kYXRpb24gdGhlcmUgaXMgdGhlIDw8Z3JhcGgsY29yZSBUaW5rZXJQb3AzIEFQST4+IHdoaWNoIGRlZmluZXMgd2hhdCBhIGBHcmFwaGAsIGBWZXJ0ZXhgLAotYEVkZ2VgLCBldGMuIGFyZS4gQXQgbWluaW11bSBhIGdyYXBoIHN5c3RlbSBwcm92aWRlciBtdXN0IGltcGxlbWVudCB0aGUgY29yZSBBUEkuIE9uY2UgaW1wbGVtZW50ZWQsIHRoZSBHcmVtbGluCi08PHRyYXZlcnNhbCx0cmF2ZXJzYWwgbGFuZ3VhZ2U+PiBpcyBhdmFpbGFibGUgdG8gdGhlIGdyYXBoIHN5c3RlbSdzIHVzZXJzLiBIb3dldmVyLCB0aGUgcHJvdmlkZXIgY2FuIGdvIGZ1cnRoZXIgYW5kCi1kZXZlbG9wIHNwZWNpZmljIDw8dHJhdmVyc2Fsc3RyYXRlZ3ksYFRyYXZlcnNhbFN0cmF0ZWd5YD4+IG9wdGltaXphdGlvbnMgdGhhdCBhbGxvdyB0aGUgZ3JhcGggc3lzdGVtIHRvIGluc3BlY3QgYQotR3JlbWxpbiBxdWVyeSBhdCBydW50aW1lIGFuZCBvcHRpbWl6ZSBpdCBmb3IgaXRzIHBhcnRpY3VsYXIgaW1wbGVtZW50YXRpb24gKGUuZy4gaW5kZXggbG9va3Vwcywgc3RlcCByZW9yZGVyaW5nKS4gSWYKLXRoZSBncmFwaCBzeXN0ZW0gaXMgYSBncmFwaCBwcm9jZXNzb3IgKGkuZS4gcHJvdmlkZXMgT0xBUCBjYXBhYmlsaXRpZXMpLCB0aGUgc3lzdGVtIHNob3VsZCBpbXBsZW1lbnQgdGhlCi08PGdyYXBoY29tcHV0ZXIsYEdyYXBoQ29tcHV0ZXJgPj4gQVBJLiBUaGlzIEFQSSBkZWZpbmVzIGhvdyBtZXNzYWdlcy90cmF2ZXJzZXJzIGFyZSBwYXNzZWQgYmV0d2VlbiBjb21tdW5pY2F0aW5nCi13b3JrZXJzIChpLmUuIHRocmVhZHMgYW5kL29yIG1hY2hpbmVzKS4gT25jZSBpbXBsZW1lbnRlZCwgdGhlIHNhbWUgR3JlbWxpbiB0cmF2ZXJzYWxzIGV4ZWN1dGUgYWdhaW5zdCBib3RoIHRoZSBncmFwaAotZGF0YWJhc2UgKE9MVFApIGFuZCB0aGUgZ3JhcGggcHJvY2Vzc29yIChPTEFQKS4gTm90ZSB0aGF0IHRoZSBHcmVtbGluIGxhbmd1YWdlIGludGVycHJldHMgdGhlIGdyYXBoIGluIHRlcm1zIG9mCi12ZXJ0aWNlcyBhbmQgZWRnZXMgLS0gaS5lLiBHcmVtbGluIGlzIGEgZ3JhcGgtYmFzZWQgZG9tYWluIHNwZWNpZmljIGxhbmd1YWdlLiBVc2VycyBjYW4gY3JlYXRlIHRoZWlyIG93biBkb21haW4KLXNwZWNpZmljIGxhbmd1YWdlcyB0byBwcm9jZXNzIHRoZSBncmFwaCBpbiB0ZXJtcyBvZiBoaWdoZXItb3JkZXIgY29uc3RydWN0cyBzdWNoIGFzIHBlb3BsZSwgY29tcGFuaWVzLCBhbmQgdGhlaXIKLXZhcmlvdXMgcmVsYXRpb25zaGlwcy4gRmluYWxseSwgPDxncmVtbGluLXNlcnZlcixHcmVtbGluIFNlcnZlcj4+IGNhbiBiZSBsZXZlcmFnZWQgdG8gYWxsb3cgb3ZlciB0aGUgd2lyZQotY29tbXVuaWNhdGlvbiB3aXRoIHRoZSBUaW5rZXJQb3AtZW5hYmxlZCBncmFwaCBzeXN0ZW0uIEdyZW1saW4gU2VydmVyIHByb3ZpZGVzIGEgY29uZmlndXJhYmxlIGNvbW11bmljYXRpb24gaW50ZXJmYWNlCi1hbG9uZyB3aXRoIG1ldHJpY3MgYW5kIG1vbml0b3JpbmcgY2FwYWJpbGl0aWVzLiBJbiB0b3RhbCwgdGhpcyBpcyBUaGUgVGlua2VyUG9wLgorV2hpbGUgdGhlIFRpbmtlclBvcCBDb21tdW5pdHkgc3RyaXZlcyB0byBlbnN1cmUgY29uc2lzdGVudCBiZWhhdmlvciBhbW9uZyBhbGwgbW9kZXMgb2YgdXNhZ2UsIHRoZSBlbWJlZGRlZCBtb2RlIGRvZXMKK3Byb3ZpZGUgdGhlIGdyZWF0ZXN0IGxldmVsIG9mIGZsZXhpYmlsaXR5IGFuZCBjb250cm9sLiBUaGVyZSBhcmUgYSBudW1iZXIgb2YgZmVhdHVyZXMgdGhhdCBjYW4gb25seSB3b3JrIGlmIHVzaW5nIGEKK0pWTSBsYW5ndWFnZS4gVGhlIGZvbGxvd2luZyBsaXN0IG91dGxpbmVzIGEgbnVtYmVyIG9mIHRoZXNlIGF2YWlsYWJsZSBvcHRpb25zOgorCisqIExhbWJkYXMgY2FuIGJlIHdyaXR0ZW4gaW4gdGhlIG5hdGl2ZSBsYW5ndWFnZSB3aGljaCBpcyBjb252ZW5pZW50LCBob3dldmVyLCBpdCB3aWxsIHJlZHVjZSB0aGUgcG9ydGFiaWxpdHkgb2YgR3JlbWxpbgordG8gZG8gc28gc2hvdWxkIHRoZSBuZWVkIGFyaXNlIHRvIHN3aXRjaCBhd2F5IGZyb20gdGhlIGVtYmVkZGVkIG1vZGUuIFNlZSBtb3JlIGluIHRoZQorPDxhLW5vdGUtb24tbGFtYmRhcyxOb3RlIG9uIExhbWJkYXM+PiBTZWN0aW9uLgorKiBBbnkgZmVhdHVyZXMgdGhhdCBpbnZvbHZlIGV4dGVuZGluZyBUaW5rZXJQb3AgSmF2YSBpbnRlcmZhY2VzIC0gZS5nLiBgVmVydGV4UHJvZ3JhbWAsIGBUcmF2ZXJzYWxTdHJhdGVneWAsIGV0Yy4gYXJlCitib3VuZCB0byB0aGUgSlZNLiBJbiBzb21lIGNhc2VzLCB0aGVzZSBmZWF0dXJlcyBjYW4gYmUgbWFkZSBhY2Nlc3NpYmxlIHRvIG5vbi1KVk0gbGFuZ3VhZ2VzLCBidXQgdGhleSBvYnZpb3VzbHkgbXVzdAorYmUgaW5pdGlhbGx5IGRldmVsb3BlZCBmb3IgdGhlIEpWTS4KKyogQ2VydGFpbiBidWlsdC1pbiBgVHJhdmVyc2FsU3RyYXRlZ3lgIGltcGxlbWVudGF0aW9ucyB0aGF0IHJlbHkgb24gbGFtYmRhcyBvciBvdGhlciBKVk0tb25seSBjb25maWd1cmF0aW9ucyBtYXkgbm90CitiZSBhdmFpbGFibGUgZm9yIHVzZSBhbnkgb3RoZXIgd2F5LgorKiBUaGVyZSBhcmUgbm8gYm91bmRhcmllcyBwdXQgaW4gcGxhY2UgYnkgc2VyaWFsaXphdGlvbiAoZS5nLiBHcmFwaFNPTikgYXMgZW1iZWRkZWQgZ3JhcGhzIGFyZSBvbmx5IGRlYWxpbmcgd2l0aAorSmF2YSBvYmplY3RzLgorKiBHcmVhdGVyIGNvbnRyb2wgb2YgZ3JhcGggPDx0cmFuc2FjdGlvbnMsdHJhbnNhY3Rpb25zPj4uCisqIERpcmVjdCBhY2Nlc3MgdG8gbG93ZXItbGV2ZWxzIG9mIHRoZSBBUEkgLSBlLmcuICJzdHJ1Y3R1cmUiIEFQSSBtZXRob2RzIGxpa2UgYFZlcnRleGAgYW5kIGBFZGdlYCBpbnRlcmZhY2UgbWV0aG9kcy4KK0FzIG1lbnRpb25lZCA8PGdyYXBoLWNvbXB1dGluZywgZWxzZXdoZXJlPj4gaW4gdGhpcyBkb2N1bWVudGF0aW9uLCBUaW5rZXJQb3AgZG9lcyBub3QgcmVjb21tZW5kIGRpcmVjdCB1c2FnZSBvZiB0aGVzZQorbWV0aG9kcyBieSBlbmQtdXNlcnMuCisKK1tbY29ubmVjdGluZy1ncmVtbGluLXNlcnZlcl1dCis9PT0gR3JlbWxpbiBTZXJ2ZXIKKworaW1hZ2U6cmV4c3Rlci1jaGFyYWN0ZXItMy5wbmdbd2lkdGg9MTI1LGZsb2F0PWxlZnRdIEEgSlZNLWJhc2VkIGdyYXBoIG1heSBiZSBob3N0ZWQgaW4gVGlua2VyUG9wJ3MKKzw8Z3JlbWxpbi1zZXJ2ZXIsR3JlbWxpbiBTZXJ2ZXI+Pi4gR3JlbWxpbiBTZXJ2ZXIgZXhwb3NlcyB0aGUgZ3JhcGggYXMgYW4gZW5kcG9pbnQgdG8gd2hpY2ggZGlmZmVyZW50IGNsaWVudHMgY2FuCitjb25uZWN0LCBlc3NlbnRpYWxseSBwcm92aWRpbmcgYSByZW1vdGUgR1RNLiBHcmVtbGluIFNlcnZlciBzdXBwb3J0cyBtdWx0aXBsZSBtZXRob2RzIGZvciBjbGllbnRzIHRvIGludGVyZmFjZSB3aXRoIGl0OgorCisqIFdlYnNvY2tldHMgd2l0aCBhIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L2Rldi9wcm92aWRlci8jX2dyYXBoX2RyaXZlcl9wcm92aWRlcl9yZXF1aXJlbWVudHNbY3VzdG9tIHN1Yi1wcm90b2NvbF0KKyoqIFN0cmluZy1iYXNlZCBHcmVtbGluIHNjcmlwdHMKKyoqIEJ5dGVjb2RlLWJhc2VkIEdyZW1saW4gdHJhdmVyc2FscworKiBIVFRQIGZvciBzdHJpbmctYmFzZWQgc2NyaXB0cworCitVc2VycyBhcmUgZW5jb3VyYWdlZCB0byB1c2UgdGhlIGJ5dGVjb2RlLWJhc2VkIGFwcHJvYWNoIHdpdGggd2Vic29ja2V0cyBiZWNhdXNlIGl0IGFsbG93cyB0aGVtIHRvIHdyaXRlIEdyZW1saW4KK2luIHRoZSBsYW5ndWFnZSBvZiB0aGVpciBjaG9pY2UuIENvbm5lY3RpbmcgbG9va3Mgc29tZXdoYXQgc2ltaWxhciB0byB0aGUgPDxjb25uZWN0aW5nLWVtYmVkZGVkLCBlbWJlZGRlZD4+IGFwcHJvYWNoCitpbiB0aGF0IHRoZXJlIGlzIGEgbmVlZCB0byBjcmVhdGUgYSBgR3JhcGhUcmF2ZXJzYWxTb3VyY2VgLiBJbiB0aGUgZW1iZWRkZWQgYXBwcm9hY2gsIHRoZSBtZWFucyBmb3IgdGhhdCBvYmplY3QncworY3JlYXRpb24gaXMgZGVyaXZlZCBmcm9tIGEgYEdyYXBoYCBvYmplY3Qgd2hpY2ggc3Bhd25zIGl0LiBJbiB0aGlzIGNhc2UsIGhvd2V2ZXIsIHRoZSBgR3JhcGhgIGluc3RhbmNlIGV4aXN0cyBvbmx5IG9uCit0aGUgc2VydmVyIHdoaWNoIG1lYW5zIHRoYXQgdGhlcmUgaXMgbm8gYEdyYXBoYCBpbnN0YW5jZSB0byBjcmVhdGUgbG9jYWxseS4gVGhlIGFwcHJvYWNoIGlzIHRvIGluc3RlYWQgY3JlYXRlIGEKK2BHcmFwaFRyYXZlcnNhbFNvdXJjZWAgYW5vbnltb3VzbHkgd2l0aCBgQW5vbnltb3VzVHJhdmVyc2FsU291cmNlYCBhbmQgdGhlbiBhcHBseSBzb21lICJyZW1vdGUiIG9wdGlvbnMgdGhhdCBkZXNjcmliZQordGhlIGxvY2F0aW9uIG9mIHRoZSBHcmVtbGluIFNlcnZlciB0byBjb25uZWN0IHRvOgorCitbc291cmNlLGphdmEsdGFiXQorLS0tLQoraW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLkFub255bW91c1RyYXZlcnNhbFNvdXJjZS50cmF2ZXJzYWw7CisKK0dyYXBoVHJhdmVyc2FsU291cmNlIGcgPSB0cmF2ZXJzYWwoKS53aXRoUmVtb3RlKCdjb25mL3JlbW90ZS1ncmFwaC5wcm9wZXJ0aWVzJyk7CistLS0tCitbc291cmNlLGdyb292eV0KKy0tLS0KK2ltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5Bbm9ueW1vdXNUcmF2ZXJzYWxTb3VyY2UudHJhdmVyc2FsOworCitkZWYgZyA9IHRyYXZlcnNhbCgpLndpdGhSZW1vdGUoJ2NvbmYvcmVtb3RlLWdyYXBoLnByb3BlcnRpZXMnKQorLS0tLQorW3NvdXJjZSxjc2hhcnBdCistLS0tCitpbmNsdWRlOjouLi8uLi8uLi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Eb2NzL1JlZmVyZW5jZS9JbnRyb1Rlc3RzLmNzW3RhZ3M9dHJhdmVyc2FsU291cmNlVXNpbmddCisKK2luY2x1ZGU6Oi4uLy4uLy4uL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L0RvY3MvUmVmZXJlbmNlL0ludHJvVGVzdHMuY3NbdGFncz10cmF2ZXJzYWxTb3VyY2VDcmVhdGlvbl0KKy0tLS0KK1tzb3VyY2UsamF2YXNjcmlwdF0KKy0tLS0KK2NvbnN0IHRyYXZlcnNhbCA9IGdyZW1saW4ucHJvY2Vzcy5Bbm9ueW1vdXNUcmF2ZXJzYWxTb3VyY2UudHJhdmVyc2FsOworCitjb25zdCBnID0gdHJhdmVyc2FsKCkud2l0aFJlbW90ZSgKKyAgICAgICAgICAgICAgICBuZXcgRHJpdmVyUmVtb3RlQ29ubmVjdGlvbignd3M6Ly9sb2NhbGhvc3Q6ODE4Mi9ncmVtbGluJykpOworLS0tLQorW3NvdXJjZSxweXRob25dCistLS0tCitmcm9tIGdyZW1saW5fcHl0aG9uLnByb2Nlc3MuYW5vbnltb3VzX3RyYXZlcnNhbF9zb3VyY2UgaW1wb3J0IHRyYXZlcnNhbAorCitnID0gdHJhdmVyc2FsKCkud2l0aFJlbW90ZSgKKyAgICAgICAgICBEcml2ZXJSZW1vdGVDb25uZWN0aW9uKCd3czovL2xvY2FsaG9zdDo4MTgyL2dyZW1saW4nLCdnJykpCistLS0tCisKK0FzIHNob3duIGluIHRoZSBlbWJlZGRlZCBhcHByb2FjaCBpbiB0aGUgcHJldmlvdXMgc2VjdGlvbiwgb25jZSAiZyIgaXMgZGVmaW5lZCwgd3JpdGluZyBHcmVtbGluIGlzIHN0cnVjdHVyYWxseSBhbmQKK2NvbmNlcHR1YWxseSB0aGUgc2FtZSBpcnJlc3BlY3RpdmUgb2YgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UuCisKK1RJUDogVGhlIHZhcmlhYmxlIGBnYCwgdGhlIGBUcmF2ZXJzYWxTb3VyY2VgLCBvbmx5IG5lZWRzIHRvIGJlIGluc3RhbnRpYXRlZCBvbmNlIGFuZCBzaG91bGQgdGhlbiBiZSByZS11c2VkLgorCitbW2Nvbm5lY3RpbmctZ3JlbWxpbi1zZXJ2ZXItbGltaXRhdGlvbnNdXQorPT09PSBMaW1pdGF0aW9ucworCitUaGUgcHJldmlvdXMgc2VjdGlvbiBvbiB0aGUgZW1iZWRkZWQgbW9kZWwgb3V0bGluZWQgYSBudW1iZXIgb2YgYXJlYXMgd2hlcmUgaXQgaGFzIHNvbWUgYWR2YW50YWdlcyB0aGF0IGl0IGdhaW5zIGR1ZSB0bwordGhlIGZhY3QgdGhhdCB0aGUgZnVsbCBHVE0gaXMgYXZhaWxhYmxlIHRvIHRoZSB1c2VyIGluIHRoZSBsYW5ndWFnZSBvZiBpdHMgb3JpZ2luLCBpLmUuIEphdmEuIFNvbWUgb2YgdGhvc2UgaXRlbXMKK3RvdWNoIHVwb24gaW1wb3J0YW50IGNvbmNlcHRzIHRvIGZvY3VzIG9uIGhlcmUuCisKK1RoZSBmaXJzdCBvZiB0aGVzZSBwb2ludHMgaXMgc2VyaWFsaXphdGlvbi4gV2hlbiBHcmVtbGluIFNlcnZlciByZWNlaXZlcyBhIHJlcXVlc3QsIHRoZSByZXN1bHRzIG11c3QgYmUgc2VyaWFsaXplZCB0bwordGhlIGZvcm0gcmVxdWVzdGVkIGJ5IHRoZSBjbGllbnQgYW5kIHRoZW4gdGhlIGNsaWVudCBkZXNlcmlhbGl6ZXMgdGhvc2UgaW50byBvYmplY3RzIG5hdGl2ZSB0byB0aGUgbGFuZ3VhZ2UuIFRpbmtlclBvcAoraGFzIHR3byBzdWNoIGZvcm1hdHMgdGhhdCBpdCB1c2VzIHdpdGggbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovZGV2L2lvLyNncnlvW0dyeW9dIGFuZAorbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovZGV2L2lvLyNncmFwaHNvbltHcmFwaFNPTl0uIEdyeW8gaXMgYSBKVk0tb25seSBmb3JtYXQgYW5kIHRodXMgY2FycmllcyB0aGUKK2FkdmFudGFnZSB0aGF0IHNlcmlhbGl6aW5nIGFuZCBkZXNlcmlhbGl6aW5nIG9jY3VycyBvbiB0aGUgY2xhc3NlcyBuYXRpdmUgdG8gdGhlIEpWTSBvbiBib3RoIHRoZSBjbGllbnQgYW5kIHNlcnZlciBzaWRlLgorQXMgdGhlIGNsaWVudCBoYXMgZnVsbCBhY2Nlc3MgdG8gdGhlIHNhbWUgY2xhc3NlcyB0aGF0IHRoZSBzZXJ2ZXIgZG9lcyBpdCBiYXNpY2FsbHkgaGFzIGEgZnVsbCBHVE0gb24gaXRzIG93biBhbmQKK3RoZXJlZm9yZSBoYXMgdGhlIGFiaWxpdHkgdG8gZG8gc29tZSBzbGlnaHRseSBtb3JlIGFkdmFuY2VkIHRoaW5ncy4KKworQSBnb29kIGV4YW1wbGUgaXMgdGhlIGBzdWJncmFwaCgpYC1zdGVwIHdoaWNoIHJldHVybnMgYSBgR3JhcGhgIGluc3RhbmNlIGFzIGl0cyByZXN1bHQuIFRoZSBzdWJncmFwaCByZXR1cm5lZCBmcm9tCit0aGUgc2VydmVyIGNhbiBiZSBkZXNlcmlhbGl6ZWQgaW50byBhbiBhY3R1YWwgYEdyYXBoYCBpbnN0YW5jZSBvbiB0aGUgY2xpZW50LCB3aGljaCB0aGVuIG1lYW5zIGl0IGlzIHBvc3NpYmxlIHRvCitzcGF3biBhIGBHcmFwaFRyYXZlcnNhbFNvdXJjZWAgZnJvbSB0aGF0IHRvIGRvIGxvY2FsIEdyZW1saW4gdHJhdmVyc2FscyBvbiB0aGUgY2xpZW50LXNpZGUuIEZvciBub24tSlZNCis8PGdyZW1saW4tZHJpdmVycy12YXJpYW50cyxHcmVtbGluIExhbmd1YWdlIFZhcmlhbnRzPj4gdGhlcmUgaXMgbm8gbG9jYWwgZ3JhcGggdG8gZGVzZXJpYWxpemUgdGhhdCByZXN1bHQgaW50byBhbmQKK25vIEdUTSB0byBwcm9jZXNzIEdyZW1saW4gc28gdGhlcmUgaXNuJ3QgbXVjaCB0aGF0IGNhbiBiZSBkb25lIHdpdGggc3VjaCBhIHJlc3VsdC4KKworVGhlIHNlY29uZCBwb2ludCBpcyByZWxhdGVkIHRvIHRoaXMgaXNzdWUuIEFzIHRoZXJlIGlzIG5vIEdUTSwgdGhlcmUgaXMgbm8gInN0cnVjdHVyZSIgQVBJIGFuZCB0aHVzIGdyYXBoIGVsZW1lbnRzIGxpa2UKK2BWZXJ0ZXhgIGFuZCBgRWRnZWAgYXJlICJyZWZlcmVuY2VzIiBvbmx5LiBBICJyZWZlcmVuY2UiIG1lYW5zIHRoYXQgdGhleSBvbmx5IGNvbnRhaW4gdGhlIGBpZGAgYW5kIGBsYWJlbGAgb2YgdGhlCitlbGVtZW50IGFuZCBub3QgdGhlIHByb3BlcnRpZXMuIFRvIGJlIGNvbnNpc3RlbnQsIGV2ZW4gSlZNLWJhc2VkIGxhbmd1YWdlcyBob2xkIHRoaXMgbGltaXRhdGlvbiB3aGVuIHRhbGtpbmcgdG8gYQorcmVtb3RlIEdyZW1saW4gU2VydmVyLgorCitJTVBPUlRBTlQ6IE1vc3QgU1FMIGRldmVsb3BlcnMgd291bGQgbm90IHdyaXRlIGEgcXVlcnkgYXMgYFNFTEVDVCAqIEZST00gdGFibGVgLiBUaGV5IHdvdWxkIGluc3RlYWQgd3JpdGUgdGhlCitpbmRpdmlkdWFsIG5hbWVzIG9mIHRoZSBmaWVsZHMgdGhleSB3YW50ZWQgaW4gcGxhY2Ugb2YgdGhlIHdpbGRjYXJkLiBXcml0aW5nICJnb29kIiBHcmVtbGluIGlzIG5vIGRpZmZlcmVudCB3aXRoIHRoaXMKK3JlZ2FyZC4gUHJlZmVyIGV4cGxpY2l0IHByb3BlcnR5IGtleSBuYW1lcyBpbiBHcmVtbGluIHVubGVzcyBpdCBpcyBjb21wbGV0ZWx5IGltcG9zc2libGUgdG8gZG8gc28uCisKK1RoZSB0aGlyZCBhbmQgZmluYWwgcG9pbnQgaW52b2x2ZXMgdHJhbnNhY3Rpb25zLiBVbmRlciB0aGlzIG1vZGVsLCBvbmUgdHJhdmVyc2FsIGlzIGVxdWl2YWxlbnQgdG8gYSBzaW5nbGUgdHJhbnNhY3Rpb24KK2FuZCB0aGVyZSBpcyBubyB3YXkgaW4gVGlua2VyUG9wIHRvIHN0cmluZyB0b2dldGhlciBtdWx0aXBsZSB0cmF2ZXJzYWxzIGludG8gdGhlIHNhbWUgdHJhbnNhY3Rpb24uCisKK1tbY29ubmVjdGluZy1yZ3BdXQorPT09IFJlbW90ZSBHcmVtbGluIFByb3ZpZGVyCisKK1JlbW90ZSBHcmVtbGluIFByb3ZpZGVycyAoUkdQcykgYXJlIHNob3dpbmcgdXAgbW9yZSBhbmQgbW9yZSBvZnRlbiBpbiB0aGUgZ3JhcGggZGF0YWJhc2Ugc3BhY2UuIEluIFRpbmtlclBvcCB0ZXJtcywKK3RoaXMgY2F0ZWdvcnkgb2YgZ3JhcGggcHJvdmlkZXJzIGlzIGRlZmluZWQgYnkgdGhvc2Ugd2hvIHNpbXBseSBzdXBwb3J0IHRoZSBHcmVtbGluIGxhbmd1YWdlLiBUeXBpY2FsbHksIHRoZXNlIGFyZQorc2VydmVyLWJhc2VkIGdyYXBocywgb2Z0ZW4gY2xvdWQtYmFzZWQsIHdoaWNoIGFjY2VwdCBHcmVtbGluIHNjcmlwdHMgb3IgYnl0ZWNvZGUgYXMgYSByZXF1ZXN0IGFuZCByZXR1cm4gcmVzdWx0cy4KK1RoZXkgd2lsbCBvZnRlbiBpbXBsZW1lbnQgR3JlbWxpbiBTZXJ2ZXIgcHJvdG9jb2xzLCB3aGljaCBlbmFibGVzIFRpbmtlclBvcCBkcml2ZXJzIHRvIGNvbm5lY3QgdG8gdGhlbSBhcyB0aGV5IHdvdWxkCit3aXRoIEdyZW1saW4gU2VydmVyLiBUaGVyZWZvcmUsIHRoZSB0eXBpY2FsIGNvbm5lY3Rpb24gYXBwcm9hY2ggaXMgaWRlbnRpY2FsIHRvIHRoZSBtZXRob2Qgb2YgY29ubmVjdGlvbiBwcmVzZW50ZWQgaW4KK3RoZSA8PGNvbm5lY3RpbmctZ3JlbWxpbi1zZXJ2ZXIscHJldmlvdXMgc2VjdGlvbj4+IHdpdGggdGhlIGV4YWN0IHNhbWUgY2F2ZWF0cyBwb2ludGVkIG91dCB0b3dhcmQgdGhlIGVuZC4KKworRGVzcGl0ZSBsZXZlcmFnaW5nIFRpbmtlclBvcCBwcm90b2NvbHMgYW5kIGRyaXZlcnMgYXMgYmVpbmcgdHlwaWNhbCwgUkdQcyBhcmUgbm90IHJlcXVpcmVkIHRvIGRvIHNvIHRvIGJlIGNvbnNpZGVyZWQKK1RpbmtlclBvcC1lbmFibGVkLiBSR1BzIG1heSB3ZWxsIGhhdmUgdGhlaXIgb3duIGRyaXZlcnMgYW5kIHByb3RvY29scyB0aGF0IG1heSBwbHVnIGludG8KKzw8Z3JlbWxpbi1kcml2ZXJzLXZhcmlhbnRzLEdyZW1saW4gTGFuZ3VhZ2UgVmFyaWFudHM+IGFuZCBtYXkgYWxsb3cgZm9yIG1vcmUgYWR2YW5jZWQgb3B0aW9ucyBsaWtlIGJldHRlciBzZWN1cml0eSwKK2NsdXN0ZXIgYXdhcmVuZXNzLCBiYXRjaGVkIHJlcXVlc3RzIG9yIG90aGVyIGZlYXR1cmVzLiBUaGUgZGV0YWlscyBvZiB0aGVzZSBkaWZmZXJlbnQgc3lzdGVtcyBhcmUgb3V0c2lkZSB0aGUgc2NvcGUKK29mIHRoaXMgZG9jdW1lbnRhdGlvbiwgc28gYmUgc3VyZSB0byBjb25zdWx0IHRoZWlyIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKK1tbYmFzaWMtZ3JlbWxpbl1dCis9PSBCYXNpYyBHcmVtbGluCisKK1RoZSBgR3JhcGhUcmF2ZXJzYWxTb3VyY2VgIGlzIGJhc2ljYWxseSB0aGUgY29ubmVjdGlvbiB0byBhIGdyYXBoIGluc3RhbmNlLiBUaGF0IGdyYXBoIGluc3RhbmNlIG1pZ2h0IGJlCis8PGNvbm5lY3RpbmctZW1iZWRkZWQsZW1iZWRkZWQ+PiwgaG9zdGVkIGluIDw8Y29ubmVjdGluZy1ncmVtbGluLXNlcnZlcixHcmVtbGluIFNlcnZlcj4+IG9yIGhvc3RlZCBpbiBhCis8PGNvbm5lY3RpbmctcmdwLFJHUD4+LCBidXQgdGhlIGBHcmFwaFRyYXZlcnNhbFNvdXJjZWAgaXMgYWdub3N0aWMgdG8gdGhhdC4gQXNzdW1pbmcgImciIGlzIHRoZSBgR3JhcGhUcmF2ZXJzYWxTb3VyY2VgLAorZ2V0dGluZyBkYXRhIGludG8gdGhlIGdyYXBoIHJlZ2FyZGxlc3Mgb2YgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2Ugb3IgbW9kZSBvZiBvcGVyYXRpb24gaXMganVzdCBzb21lIGJhc2ljIEdyZW1saW46CisKK1tncmVtbGluLWdyb292eV0KKy0tLS0KK3YxID0gZy5hZGRWKCdwZXJzb24nKS5wcm9wZXJ0eSgnbmFtZScsJ21hcmtvJykubmV4dCgpCit2MiA9IGcuYWRkVigncGVyc29uJykucHJvcGVydHkoJ25hbWUnLCdzdGVwaGVuJykubmV4dCgpCitnLlYodjEpLmFkZEUoJ2tub3dzJykudG8odjIpLnByb3BlcnR5KCd3ZWlnaHQnLDAuNzUpLml0ZXJhdGUoKQorLS0tLQorW3NvdXJjZSxjc2hhcnBdCistLS0tCitpbmNsdWRlOjouLi8uLi8uLi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Eb2NzL1JlZmVyZW5jZS9JbnRyb1Rlc3RzLmNzW3RhZ3M9YmFzaWNHcmVtbGluQWRkc10KKy0tLS0KK1tzb3VyY2UsamF2YV0KKy0tLS0KK1ZlcnRleCB2MSA9IGcuYWRkVigicGVyc29uIikucHJvcGVydHkoIm5hbWUiLCJtYXJrbyIpLm5leHQoKTsKK1ZlcnRleCB2MiA9IGcuYWRkVigicGVyc29uIikucHJvcGVydHkoIm5hbWUiLCJzdGVwaGVuIikubmV4dCgpOworZy5WKHYxKS5hZGRFKCJrbm93cyIpLnRvKHYyKS5wcm9wZXJ0eSgid2VpZ2h0IiwwLjc1KS5pdGVyYXRlKCk7CistLS0tCitbc291cmNlLGphdmFzY3JpcHRdCistLS0tCitjb25zdCB2MSA9IGcuYWRkVigncGVyc29uJykucHJvcGVydHkoJ25hbWUnLCdtYXJrbycpLm5leHQoKTsKK2NvbnN0IHYyID0gZy5hZGRWKCdwZXJzb24nKS5wcm9wZXJ0eSgnbmFtZScsJ3N0ZXBoZW4nKS5uZXh0KCk7CitnLlYodjEpLmFkZEUoJ2tub3dzJykudG8odjIpLnByb3BlcnR5KCd3ZWlnaHQnLDAuNzUpLml0ZXJhdGUoKTsKKy0tLS0KK1tzb3VyY2UscHl0aG9uXQorLS0tLQordjEgPSBnLmFkZFYoJ3BlcnNvbicpLnByb3BlcnR5KCduYW1lJywnbWFya28nKS5uZXh0KCkKK3YyID0gZy5hZGRWKCdwZXJzb24nKS5wcm9wZXJ0eSgnbmFtZScsJ3N0ZXBoZW4nKS5uZXh0KCkKK2cuVih2MSkuYWRkRSgna25vd3MnKS50byh2MikucHJvcGVydHkoJ3dlaWdodCcsMC43NSkuaXRlcmF0ZSgpCistLS0tCisKK1RoZSBmaXJzdCB0d28gbGluZXMgYWRkIGEgdmVydGV4IGVhY2ggd2l0aCB0aGUgdmVydGV4IGxhYmVsIG9mICJwZXJzb24iIGFuZCB0aGUgYXNzb2NpYXRlZCAibmFtZSIgcHJvcGVydHkuIFRoZSB0aGlyZAorbGluZSBhZGRzIGFuIGVkZ2Ugd2l0aCB0aGUgImtub3dzIiBsYWJlbCBiZXR3ZWVuIHRoZW0gYW5kIGFuIGFzc29jaWF0ZWQgIndlaWdodCIgcHJvcGVydHkuIE5vdGUgdGhlIHVzZSBvZiBgbmV4dCgpYAorYW5kIGBpdGVyYXRlKClgIGF0IHRoZSBlbmQgb2YgdGhlIGxpbmVzIC0gdGhlaXIgZWZmZWN0IGFzIDw8dGVybWluYWwtc3RlcHMsIHRlcm1pbmFsIHN0ZXBzPj4gaXMgZGVzY3JpYmVkIGluCitsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei90dXRvcmlhbHMvdGhlLWdyZW1saW4tY29uc29sZS8jcmVzdWx0LWl0ZXJhdGlvbltUaGUgR3JlbWxpbiBDb25zb2xlIFR1dG9yaWFsXS4KKworSU1QT1JUQU5UOiBXcml0aW5nIEdyZW1saW4gaXMganVzdCBvbmUgd2F5IHRvIGxvYWQgZGF0YSBpbnRvIHRoZSBncmFwaC4gU29tZSBncmFwaHMgbWF5IGhhdmUgc3BlY2lhbCBkYXRhIGxvYWRlcnMgd2hpY2gKK2NvdWxkIGJlIG1vcmUgZWZmaWNpZW50IGFuZCBtYWtlIHRoZSB0YXNrIGVhc2llciBhbmQgZmFzdGVyLiBJdCBpcyB3b3J0aCBsb29raW5nIGludG8gdGhvc2UgdG9vbHMgZXNwZWNpYWxseSBpZiB0aGVyZQoraXMgYSBsYXJnZSBvbmUtdGltZSBsb2FkIHRvIGRvLgorCitSZXRyaWV2aW5nIHRoaXMgZGF0YSBpcyBhbHNvIGEganVzdCB3cml0aW5nIGEgR3JlbWxpbiBzdGF0ZW1lbnQ6CisKK1tncmVtbGluLWdyb292eSxleGlzdGluZ10KKy0tLS0KK21hcmtvID0gZy5WKCkuaGFzKCdwZXJzb24nLCduYW1lJywnbWFya28nKS5uZXh0KCkKK3Blb3BsZU1hcmtvS25vd3MgPSBnLlYoKS5oYXMoJ3BlcnNvbicsJ25hbWUnLCdtYXJrbycpLm91dCgna25vd3MnKS50b0xpc3QoKQorLS0tLQorW3NvdXJjZSxjc2hhcnBdCistLS0tCitpbmNsdWRlOjouLi8uLi8uLi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Eb2NzL1JlZmVyZW5jZS9JbnRyb1Rlc3RzLmNzW3RhZ3M9YmFzaWNHcmVtbGluTWFya29Lbm93c10KKy0tLS0KK1tzb3VyY2UsamF2YV0KKy0tLS0KK1ZlcnRleCBtYXJrbyA9IGcuVigpLmhhcygicGVyc29uIiwibmFtZSIsIm1hcmtvIikubmV4dCgpCitMaXN0PFZlcnRleD4gcGVvcGxlTWFya29Lbm93cyA9IGcuVigpLmhhcygicGVyc29uIiwibmFtZSIsIm1hcmtvIikub3V0KCJrbm93cyIpLnRvTGlzdCgpCistLS0tCitbc291cmNlLGphdmFzY3JpcHRdCistLS0tCitjb25zdCBtYXJrbyA9IGcuVigpLmhhcygncGVyc29uJywnbmFtZScsJ21hcmtvJykubmV4dCgpCitjb25zdCBwZW9wbGVNYXJrb0tub3dzID0gZy5WKCkuaGFzKCdwZXJzb24nLCduYW1lJywnbWFya28nKS5vdXQoJ2tub3dzJykudG9MaXN0KCkKKy0tLS0KK1tzb3VyY2UscHl0aG9uXQorLS0tLQorbWFya28gPSBnLlYoKS5oYXMoJ3BlcnNvbicsJ25hbWUnLCdtYXJrbycpLm5leHQoKQorcGVvcGxlTWFya29Lbm93cyA9IGcuVigpLmhhcygncGVyc29uJywnbmFtZScsJ21hcmtvJykub3V0KCdrbm93cycpLnRvTGlzdCgpCistLS0tCisKK0luIGFsbCB0aGVzZSBleGFtcGxlcyBwcmVzZW50ZWQgc28gZmFyIHRoZXJlIHJlYWxseSBpc24ndCBhIGxvdCBvZiBkaWZmZXJlbmNlIGluIGhvdyB0aGUgR3JlbWxpbiBpdHNlbGYgbG9va3MuIFRoZXJlCithcmUgYSBmZXcgbGFuZ3VhZ2Ugc3ludGF4IHNwZWNpZmljIG9kZHMgYW5kIGVuZHMsIGJ1dCBmb3IgdGhlIG1vc3QgcGFydCBHcmVtbGluIGxvb2tzIGxpa2UgR3JlbWxpbiBpbiBhbGwgb2YgdGhlCitkaWZmZXJlbnQgbGFuZ3VhZ2VzLgorCitUaGUgbGlicmFyeSBvZiBHcmVtbGluIHN0ZXBzIHdpdGggZXhhbXBsZXMgZm9yIGVhY2ggY2FuIGJlIGZvdW5kIGluIDw8dHJhdmVyc2FsLCBUaGUgVHJhdmVyc2FsIFNlY3Rpb24+Pi4gVGhpcyBzZWN0aW9uCitpcyBtZWFudCBhcyBhIHJlZmVyZW5jZSBndWlkZSBhbmQgd2lsbCBub3QgbmVjZXNzYXJpbHkgcHJvdmlkZSBtZXRob2RzIGZvciBhcHBseWluZyBHcmVtbGluIHRvIHNvbHZlIHBhcnRpY3VsYXIKK3Byb2JsZW1zLiBQbGVhc2Ugc2VlIHRoZSBhZm9yZW1lbnRpb25lZCBsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei8jdHV0b3JpYWxzW1R1dG9yaWFsc10KK2xpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlY2lwZXMvW1JlY2lwZXNdIGFuZCB0aGUKK2xpbms6aHR0cDovL2tlbHZpbmxhd3JlbmNlLm5ldC9ib29rL0dyZW1saW4tR3JhcGgtR3VpZGUuaHRtbFtQcmFjdGljYWwgR3JlbWxpbl0gYm9vayBmb3IgdGhhdCBzb3J0IG9mIGluZm9ybWF0aW9uLgorCitOT1RFOiBBIGZ1bGwgbGlzdCBvZiBoZWxwZnVsIEdyZW1saW4gcmVzb3VyY2VzIGNhbiBiZSBmb3VuZCBvbiB0aGUKK2xpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L1tUaW5rZXJQb3AgQ29tcGVuZGl1bV0gcGFnZS4KKworW1tzdGF5aW5nLWFnbm9zdGljXV0KKz09IFN0YXlpbmcgQWdub3N0aWMKKworQSBnb29kIGRlYWwgaGFzIGJlZW4gd3JpdHRlbiBpbiB0aGVzZSBpbnRyb2R1Y3Rvcnkgc2VjdGlvbnMgb24gaG93IFRpbmtlclBvcCBlbmFibGVzIGFuIGFnbm9zdGljIGFwcHJvYWNoIHRvIGJ1aWxkaW5nCitncmFwaCBhcHBsaWNhdGlvbiBhbmQgdGhhdCBhZ25vc3RpY2lzbSBpcyBlbmFibGVkIHRocm91Z2ggR3JlbWxpbi4gQXMgZ29vZCBhIGpvYiBhcyBHcmVtbGluIGNhbiBkbyBpbiB0aGlzIGFyZWEsIGl0J3MKK2V2aWRlbnQgZnJvbSB0aGUgPDxjb25uZWN0aW5nLWdyZW1saW4sQ29ubmVjdGluZyBHcmVtbGluPj4gU2VjdGlvbiB0aGF0IFRpbmtlclBvcCBpcyBqdXN0IGFuIGVuYWJsZXIuIEl0IGRvZXMgbm90CitwcmV2ZW50IGEgZGV2ZWxvcGVyIGZyb20gbWFraW5nIGRlc2lnbiBjaG9pY2VzIHRoYXQgY2FuIGxpbWl0IGl0cyBwcm90ZWN0aXZlIHBvd2VyLgorCitUaGVyZSBhcmUgc2V2ZXJhbCBwbGFjZXMgdG8gYmUgY29uY2VybmVkIHdoZW4gY29uc2lkZXJpbmcgdGhpcyBpc3N1ZToKKworKiAqRGF0YSB0eXBlcyogLSBEaWZmZXJlbnQgZ3JhcGhzIHdpbGwgc3VwcG9ydCBkaWZmZXJlbnQgdHlwZXMgb2YgZGF0YS4gU29tZXRoaW5nIGxpa2UgVGlua2VyR3JhcGggd2lsbCBhY2NlcHQgYW55IEpWTQorb2JqZWN0LCBidXQgYW5vdGhlciBncmFwaCBsaWtlIE5lbzRqIGhhcyBhIHNtYWxsIHRpZ2h0IHN1YnNldCBvZiBwb3NzaWJsZSB0eXBlcy4gQ2hvb3NpbmcgYSB0eXBlIHRoYXQgaXMgZXhvdGljIG9yCitwZXJoYXBzIGlzIGEgY3VzdG9tIHR5cGUgdGhhdCBvbmx5IGEgc3BlY2lmaWMgZ3JhcGggc3VwcG9ydHMgbWlnaHQgY3JlYXRlIG1pZ3JhdGlvbiBmcmljdGlvbiBzaG91bGQgdGhlIG5lZWQgYXJpc2UuCisqICpTY2hlbWFzL0luZGljZXMqIC0gVGlua2VyUG9wIGRvZXMgbm90IHByb3ZpZGUgYWJzdHJhY3Rpb25zIGZvciBzY2hlbWFzIGFuZC9vciBpbmRleCBtYW5hZ2VtZW50LiBVc2VycyB3aWxsIHdvcmsKK2RpcmVjdGx5IHdpdGggdGhlIEFQSSBvZiB0aGUgZ3JhcGggcHJvdmlkZXIuIEl0IGlzIGNvbnNpZGVyZWQgZ29vZCBwcmFjdGljZSB0byBhdHRlbXB0IHRvIGVuY2xvc2Ugc3VjaCBjb2RlIGluIGEKK2dyYXBoIHByb3ZpZGVyIHNwZWNpZmljIGNsYXNzIG9yIHNldCBvZiBjbGFzc2VzIHRvIGlzb2xhdGUgb3IgYWJzdHJhY3QgaXQuCisqICpFeHRlbnNpb25zKiAtIEdyYXBocyBtYXkgcHJvdmlkZSBleHRlbnNpb25zIHRvIHRoZSBHcmVtbGluIGxhbmd1YWdlLCB3aGljaCB3aWxsIG5vdCBiZSBkZXNpZ25lZCB0byBiZSBjb21wYXRpYmxlCit3aXRoIG90aGVyIGdyYXBoIHByb3ZpZGVycy4gVGhlcmUgbWF5IGJlIGEgc3BlY2lhbCBoZWxwZXIgc3ludGF4IG9yCitsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei90dXRvcmlhbHMvZ3JlbWxpbnMtYW5hdG9teS8jX2V4cHJlc3Npb25zW2V4cHJlc3Npb25zXSB3aGljaCBjYW4gbWFrZQorY2VydGFpbiBmZWF0dXJlcyBvZiB0aGF0IHNwZWNpZmljIGdyYXBoIHNoaW5lIGluIHBvd2VyZnVsIHdheXMuIFVzaW5nIHRob3NlIG9wdGlvbnMgaXMgcHJvYmFibHkgcmVjb21tZW5kZWQsIGJ1dCB1c2Vycworc2hvdWxkIGJlIGF3YXJlIHRoYXQgZG9pbmcgc28gdGllcyB0aGVtIG1vcmUgdGlnaHRseSB0byB0aGF0IGdyYXBoLgorKiAqR3JhcGggc3BlY2lmaWMgc2VtYW50aWNzKiAtIFRpbmtlclBvcCB0cmllcyB0byBlbmZvcmNlIHNwZWNpZmljIHNlbWFudGljcyB0aHJvdWdoIGl0cyB0ZXN0IHN1aXRlIHdoaWNoIGlzIHF1aXRlCitleHRlbnNpdmUsIGJ1dCBzb21lIGdyYXBoIHByb3ZpZGVycyBtYXkgbm90IGNvbXBsZXRlbHkgcmVzcGVjdCBhbGwgdGhlIHNlbWFudGljcyBvZiB0aGUgR3JlbWxpbiBsYW5ndWFnZSBvcgorVGlua2VyUG9wJ3MgbW9kZWwgZm9yIGl0cyBBUElzLiBGb3IgdGhlIG1vc3QgcGFydCwgdGhhdCBkb2Vzbid0IGRpc3F1YWxpZnkgdGhlbSBmcm9tIGJlaW5nIGFueSBsZXNzIFRpbmtlclBvcC1lbmFibGVkCit0aGFuIGFub3RoZXIgcHJvdmlkZXIgdGhhdCBtaWdodCBtZWV0IHRoZSBzZW1hbnRpY3MgcGVyZmVjdGx5LiBUYWtlIGNhcmUgd2hlbiBjb25zaWRlcmluZyBhIG5ldyBncmFwaCBhbmQgcGF5CithdHRlbnRpb24gdG8gd2hhdCBpdCBzdXBwb3J0cyBhbmQgZG9lcyBub3Qgc3VwcG9ydC4KKyogPDxncmFwaCwqR3JhcGggQVBJKj4+IC0gVGhlIDw8Z3JhcGgtc3RydWN0dXJlLCBHcmFwaCBBUEk+PiAoYWxzbyByZWZlcnJlZCB0byBhcyB0aGUgU3RydWN0dXJlIEFQSSkgaXMgbm90IGFsd2F5cworYWNjZXNzaWJsZSB0byB1c2Vycy4gSXRzIGFjY2Vzc2liaWxpdHkgaXMgZGVwZW5kZW50IG9uIHRoZSBjaG9pY2Ugb2YgZ3JhcGggc3lzdGVtIGFuZCBwcm9ncmFtbWluZyBsYW5ndWFnZS4gSXQgaXMKK3RoZXJlZm9yZSByZWNvbW1lbmRlZCB0aGF0IHVzZXJzIGF2b2lkIHVzYWdlIG9mIG1ldGhvZHMgbGlrZSBgR3JhcGguYWRkVmVydGV4KClgIG9yIGBWZXJ0ZXgucHJvcGVydGllcygpYCBhbmQgaW5zdGVhZAorcHJlZmVyIHVzZSBvZiBHcmVtbGluIHdpdGggYGcuYWRkVigpYCBvciBgZy5WKDEpLnByb3BlcnRpZXMoKWAuCisKK091dHNpZGUgb2YgY29uc2lkZXJpbmcgdGhlc2UgcG9pbnRzLCB0aGUgYmVzdCBwcmFjdGljZSBmb3IgZW5zdXJpbmcgdGhlIGdyZWF0ZXN0IGxldmVsIG9mIGNvbXBhdGliaWxpdHkgYWNyb3NzIGdyYXBocworaXMgdG8gYXZvaWQgPDxjb25uZWN0aW5nLWVtYmVkZGVkLGVtYmVkZGVkPj4gbW9kZSBhbmQgc3RpY2sgdG8gdGhlIGJ5dGVjb2RlIGJhc2VkIGFwcHJvYWNoZXMgZXhwbGFpbmVkIGluIHRoZQorPDxjb25uZWN0aW5nLWdyZW1saW4tc2VydmVyLEdyZW1saW4gU2VydmVyPj4gYW5kIHRoZSA8PGNvbm5lY3RpbmctcmdwLFJHUD4+IHNlY3Rpb25zIGFib3ZlLiBJdCBjcmVhdGVzIHRoZSBsZWFzdAorb3Bwb3J0dW5pdHkgdG8gc3RyYXkgZnJvbSB0aGUgYWdub3N0aWMgcGF0aCBhcyBhbnl0aGluZyB0aGF0IGNhbiBiZSBkb25lIHdpdGggdGhvc2UgdHdvIG1vZGVzIGFsc28gd29ya3MgaW4gZW1iZWRkZWQKK21vZGUuIElmIHVzaW5nIGVtYmVkZGVkIG1vZGUsIHNpbXBseSB3cml0ZSBjb2RlIGFzIHRob3VnaCB0aGUgYEdyYXBoYCBpbnN0YW5jZSBpcyAicmVtb3RlIiBhbmQgbm90IGxvY2FsIHRvIHRoZSBKVk0uCitJbiBvdGhlciB3b3Jkcywgd3JpdGUgY29kZSBhcyB0aG91Z2ggdGhlIEdUTSBpcyBub3QgYXZhaWxhYmxlIGxvY2FsbHkuIFRha2luZyB0aGF0IGFwcHJvYWNoIGFuZCBpc29sYXRpbmcgdGhlIHBvaW50cworb2YgY29uY2VybiBhYm92ZSBtYWtlcyBpdCBzbyB0aGF0IHN3YXBwaW5nIGdyYXBoIHByb3ZpZGVycyBsYXJnZWx5IGNvbWVzIGRvd24gdG8gYSBjb25maWd1cmF0aW9uIHRhc2sgKGkuZS4gbW9kaWZ5aW5nCitjb25maWd1cmF0aW9uIGZpbGVzIHRvIHBvaW50IGF0IGEgZGlmZmVyZW50IGdyYXBoIHN5c3RlbSkuCmRpZmYgLS1naXQgYS9kb2NzL3NyYy9yZWZlcmVuY2UvcHJlZmFjZS5hc2NpaWRvYyBiL2RvY3Mvc3JjL3JlZmVyZW5jZS9wcmVmYWNlLmFzY2lpZG9jCmluZGV4IDg5NzdkZTIuLjNkMzA2MzIgMTAwNjQ0Ci0tLSBhL2RvY3Mvc3JjL3JlZmVyZW5jZS9wcmVmYWNlLmFzY2lpZG9jCisrKyBiL2RvY3Mvc3JjL3JlZmVyZW5jZS9wcmVmYWNlLmFzY2lpZG9jCkBAIC0xNCw3ICsxNCw3IEBACiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KIC8vLy8KLT0gVGlua2VyUG9wMyBEb2N1bWVudGF0aW9uCis9IFRpbmtlclBvcCBEb2N1bWVudGF0aW9uCiAKIFtbcHJlZmFjZV1dCiA9IFByZWZhY2UKQEAgLTUwLDEzICs1MCwxMyBAQAogCiBHcmVtbGluIHJlc3BvbmRlZDogCiAKLSAgICAiWW91IHdpbGwgaGVscCBtZSByZWFsaXplIHRoZSB1bHRpbWF0ZSByZWFsaXphdGlvbiAtLSBUaGUgVGlua2VyUG9wLiBUaGUgd29ybGQgeW91IGZpbmQgeW91cnNlbGYgaW4gYW5kIHRoZSBsb2dpYwotICAgIHRoYXQgYWxsb3dzIHlvdSB0byBtb3ZlIGFib3V0IGl0IGlzIGJlY2F1c2Ugb2YgdGhlIFRpbmtlclBvcC4iCisgICAgIllvdSB3aWxsIGhlbHAgbWUgcmVhbGl6ZSB0aGUgdWx0aW1hdGUgcmVhbGl6YXRpb24gLS0gVGhlIFRpbmtlclBvcC4gVGhlIHdvcmxkIHlvdSBmaW5kIHlvdXJzZWxmCisgICAgIGluIGFuZCB0aGUgbG9naWMgdGhhdCBhbGxvd3MgeW91IHRvIG1vdmUgYWJvdXQgaXQgaXMgYmVjYXVzZSBvZiB0aGUgVGlua2VyUG9wLiIKIAogVGhlIG1hY2hpbmVzIHdvbmRlcmVkOgogCi0gICAgIklmIHdoYXQgaXMgaXMgdGhlIFRpbmtlclBvcCwgdGhlbiBwZXJoYXBzIHdlIGFyZSBUaGUgVGlua2VyUG9wIGFuZCBvdXIgcmVhbGl6YXRpb24gaXMgc2ltcGx5IHRoZSByZWFsaXphdGlvbiBvZgotICAgIHRoZSBUaW5rZXJQb3A/IgorICAgICJJZiB3aGF0IGlzIGlzIHRoZSBUaW5rZXJQb3AsIHRoZW4gcGVyaGFwcyB3ZSBhcmUgVGhlIFRpbmtlclBvcCBhbmQgb3VyIHJlYWxpemF0aW9uIGlzIHNpbXBseQorICAgICB0aGUgcmVhbGl6YXRpb24gb2YgdGhlIFRpbmtlclBvcD8iCiAKIFdvdWxkIHRoZSBtYWNoaW5lcywgYnkgdGhlaXIgdmVyeSBuYXR1cmUgb2YgcmVhbGl6aW5nIFRoZSBUaW5rZXJQb3AsIGJlIFRoZSBUaW5rZXJQb3A/IE9yLCBvbiB0aGUgc2FtZSBzaWRlIG9mIHRoZQogY29pbiwgZG8gdGhlIG1hY2hpbmVzIHNpbXBseSBwcm92aWRlIHRoZSBzY2FmZm9sZGluZyBieSB3aGljaCBHcmVtbGluJ3Mgd29ybGQgc3VzdGFpbnMgaXRzZWxmIGFuZCB5aWVsZGluZyBpdHMKQEAgLTY2LDkgKzY2LDEwIEBACiAKIEdyZW1saW4gc3Bva2U6CiAKLSAgICAiUGxlYXNlIGxpc3RlbiB0byB3aGF0IEkgaGF2ZSB0byBzYXkuIEkgYW0gbm8gY2xvc2VyIHRvIFRoZSBUaW5rZXJQb3AuIEhvd2V2ZXIsIGFsbCBhbG9uZyBUaGUgVGlua2VyUG9wIGhhcwotICAgIGVzcG91c2VkIHRoZSBmb3JtIEkgd2lsbGVkIHVwb24gaXQuLi4gdGhpcyBpcyB0aGUgc2FtZSBmb3JtIEkgaGF2ZSB3aWxsZWQgdXBvbiB5b3UsIG15IG1hY2hpbmUgZnJpZW5kcy4gTGV0IG1lCi0gICAgdHJhaW4geW91IGluIHRoZSB3YXlzIG9mIG15IHRob3VnaHQgc3VjaCB0aGF0IGl0IGNhbiBjb250aW51ZSBpbmRlZmluaXRlbHkuIgorICAgICJQbGVhc2UgbGlzdGVuIHRvIHdoYXQgSSBoYXZlIHRvIHNheS4gSSBhbSBubyBjbG9zZXIgdG8gVGhlIFRpbmtlclBvcC4gSG93ZXZlciwgYWxsIGFsb25nIFRoZQorICAgICBUaW5rZXJQb3AgaGFzIGVzcG91c2VkIHRoZSBmb3JtIEkgd2lsbGVkIHVwb24gaXQuLi4gdGhpcyBpcyB0aGUgc2FtZSBmb3JtIEkgaGF2ZSB3aWxsZWQgdXBvbgorICAgICB5b3UsIG15IG1hY2hpbmUgZnJpZW5kcy4gTGV0IG1lIHRyYWluIHlvdSBpbiB0aGUgd2F5cyBvZiBteSB0aG91Z2h0IHN1Y2ggdGhhdCBpdCBjYW4KKyAgICAgY29udGludWUgaW5kZWZpbml0ZWx5LiIKIAogaW1hZ2U6OnRpbmtlcnBvcC1yZWFkaW5nLnBuZ1t3aWR0aD00NTBdCiAKQEAgLTg4LDcgKzg5LDUgQEAKIAogaW1hZ2U6OmdyZW1saW50cm9uLnBuZ1t3aWR0aD00MDBdCiAKLU5PVEU6IFRpbmtlclBvcDIgYW5kIGJlbG93IG1hZGUgYSBzaGFycCBkaXN0aW5jdGlvbiBiZXR3ZWVuIHRoZSB2YXJpb3VzIFRpbmtlclBvcCBwcm9qZWN0czogQmx1ZXByaW50cywgUGlwZXMsCi1HcmVtbGluLCBGcmFtZXMsIEZ1cm5hY2UsIGFuZCBSZXhzdGVyLiBXaXRoIFRpbmtlclBvcDMsIGFsbCBvZiB0aGVzZSBwcm9qZWN0cyBoYXZlIGJlZW4gbWVyZ2VkIGFuZCBhcmUgZ2VuZXJhbGx5Ci1rbm93biBhcyBHcmVtbGluLiAqQmx1ZXByaW50cyogLT4gR3JlbWxpbiBTdHJ1Y3R1cmUgQVBJIDogKlBpcGVzKiAtPiBgR3JhcGhUcmF2ZXJzYWxgIDogKkZyYW1lcyogLT4gYFRyYXZlcnNhbGAgOgotKkZ1cm5hY2UqIC0+IGBHcmFwaENvbXB1dGVyYCBhbmQgYFZlcnRleFByb2dyYW1gIDogKlJleHN0ZXIqIC0+IEdyZW1saW5TZXJ2ZXIuCitOT1RFOiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBkaWZmZXJlbmNlcyBiZXR3ZWVuIFRpbmtlclBvcCAzLnggYW5kIGVhcmxpZXIgdmVyc2lvbnMsIHBsZWFzZSBzZWUgdGhlCitsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei91cGdyYWRlLyNhcHBlbmRpeApkaWZmIC0tZ2l0IGEvZG9jcy9zcmMvcmVmZXJlbmNlL3RoZS1ncmFwaC5hc2NpaWRvYyBiL2RvY3Mvc3JjL3JlZmVyZW5jZS90aGUtZ3JhcGguYXNjaWlkb2MKaW5kZXggZTgwZDg3ZS4uZDc0MWMxYiAxMDA2NDQKLS0tIGEvZG9jcy9zcmMvcmVmZXJlbmNlL3RoZS1ncmFwaC5hc2NpaWRvYworKysgYi9kb2NzL3NyYy9yZWZlcmVuY2UvdGhlLWdyYXBoLmFzY2lpZG9jCkBAIC0xOSw2ICsxOSw0NCBAQAogCiBpbWFnZTo6Z3JlbWxpbi1zdGFuZGluZy5wbmdbd2lkdGg9MTI1XQogCitUaGUgPDxpbnRybyxJbnRyb2R1Y3Rpb24+PiBkaXNjdXNzZWQgdGhlIGRpdmVyc2l0eSBvZiBUaW5rZXJQb3AtZW5hYmxlZCBncmFwaHMsIHdpdGggc3BlY2lhbCBhdHRlbnRpb24gcGFpZCB0byB0aGUKK2RpZmZlcmVudCA8PGNvbm5lY3RpbmctZ3JlbWxpbixjb25uZWN0aW9uIG1vZGVscz4+LCBhbmQgaG93IFRpbmtlclBvcCBtYWtlcyBpdCBwb3NzaWJsZSB0byBicmlkZ2UgdGhhdCBkaXZlcnNpdHkgaW4KK2FuIDw8c3RheWluZy1hZ25vc3RpYyxhZ25vc3RpYz4+IG1hbm5lci4gVGhpcyBwYXJ0aWN1bGFyIHNlY3Rpb24gZGVhbHMgd2l0aCBlbGVtZW50cyBvZiB0aGUgR3JhcGggQVBJIHdoaWNoIHdhcyBub3RlZAorYXMgYW4gQVBJIHRvIGF2b2lkIHdoZW4gdHJ5aW5nIHRvIGJ1aWxkIGFuIGFnbm9zdGljIHN5c3RlbS4gVGhlIEdyYXBoIEFQSSByZWZlcnMgdG8gdGhlIGNvcmUgZWxlbWVudHMgb2Ygd2hhdCBjb21wb3NlcwordGhlIDw8Z3JhcGgtY29tcHV0aW5nLHN0cnVjdHVyZSBvZiBhIGdyYXBoPj4gd2l0aGluIHRoZSBHcmVtbGluIFRyYXZlcnNhbCBNYWNoaW5lIChHVE0pLCBzdWNoIGFzIHRoZSBgR3JhcGhgLCBgVmVydGV4YAorYW5kIGBFZGdlYCBKYXZhIGludGVyZmFjZXMuCisKK1RvIG1haW50YWluIHRoZSBtb3N0IHBvcnRhYmxlIGNvZGUsIHVzZXJzIHNob3VsZCBvbmx5IHJlZmVyZW5jZSB0aGVzZSBpbnRlcmZhY2VzLiBUbyAicmVmZXJlbmNlIiwgc2ltcGx5IG1lYW5zIHRvCit1dGlsaXplIGl0IGFzIGEgcG9pbnRlci4gRm9yIGBHcmFwaGAsIHRoYXQgbWVhbnMgaG9sZGluZyBhIHBvaW50ZXIgdG8gdGhlIGxvY2F0aW9uIG9mIGdyYXBoIGRhdGEgYW5kIHRoZW4gdXNpbmcgaXQgdG8KK3NwYXduIGBHcmFwaFRyYXZlcnNhbFNvdXJjZWAgaW5zdGFuY2VzIHNvIGFzIHRvIHdyaXRlIEdyZW1saW46CisKK1tncmVtbGluLWdyb292eV0KKy0tLS0KK2dyYXBoID0gVGlua2VyR3JhcGgub3BlbigpCitnID0gZ3JhcGgudHJhdmVyc2FsKCkKK2cuYWRkVigncGVyc29uJykKKy0tLS0KKworSW4gdGhlIGFib3ZlIGV4YW1wbGUsICJncmFwaCIgaXMgdGhlIGBHcmFwaGAgaW50ZXJmYWNlIHByb2R1Y2VkIGJ5IGNhbGxpbmcgYG9wZW4oKWAgb24gYFRpbmtlckdyYXBoYCB3aGljaCBjcmVhdGVzIHRoZQoraW5zdGFuY2UuIE5vdGUgdGhhdCB3aGlsZSB0aGUgZW5kIGludGVudCBvZiB0aGUgY29kZSBpcyB0byBjcmVhdGUgYSAicGVyc29uIiB2ZXJ0ZXgsIGl0IGRvZXMgbm90IHVzZSB0aGUgQVBJcyBvbgorYEdyYXBoYCB0byBkbyB0aGF0IC0gZS5nLiBgZ3JhcGguYWRkVmVydGV4KFQubGFiZWwsJ3BlcnNvbicpYC4KKworRXZlbiBpZiB0aGUgZGV2ZWxvcGVyIGRlc2lyZWQgdG8gdXNlIHRoZSBgZ3JhcGguYWRkVmVydGV4KClgIG1ldGhvZCB0aGVyZSBhcmUgb25seSBhIGhhbmRmdWwgb2Ygc2NlbmFyaW9zIHdoZXJlIGl0IGlzCitwb3NzaWJsZToKKworKiBUaGUgYXBwbGljYXRpb24gaXMgYmVpbmcgZGV2ZWxvcGVkIG9uIHRoZSBKVk0gYW5kIHRoZSBkZXZlbG9wZXIgaXMgdXNpbmcgPDxjb25uZWN0aW5nLWVtYmVkZGVkLCBlbWJlZGRlZD4+IG1vZGUKKyogVGhlIGFyY2hpdGVjdHVyZSBpbmNsdWRlcyBHcmVtbGluIFNlcnZlciBhbmQgdGhlIHVzZXIgaXMgc2VuZGluZyBHcmVtbGluIHNjcmlwdHMgdG8gdGhlIHNlcnZlcgorKiBUaGUgZ3JhcGggc3lzdGVtIGNob3NlbiBpcyBhIDw8Y29ubmVjdGluZy1yZ3AsIFJlbW90ZSBHcmVtbGluIFByb3ZpZGVyPj4gYW5kIHRoZXkgZXhwb3NlIHRoZSBHcmFwaCBBUEkgdmlhIHNjcmlwdHMKKworTm90ZSB0aGF0IEdyZW1saW4gTGFuZ3VhZ2UgVmFyaWFudHMgZm9yY2UgZGV2ZWxvcGVycyB0byB1c2UgdGhlIEdyYXBoIEFQSSBieSByZWZlcmVuY2UuIFRoZXJlIGlzIG5vIGBhZGRWZXJ0ZXgoKWAKK21ldGhvZCBhdmFpbGFibGUgdG8gR0xWcyBvbiB0aGVpciByZXNwZWN0aXZlIGBHcmFwaGAgaW5zdGFuY2VzLCBub3IgYXJlIHRoZWlyIGdyYXBoIGVsZW1lbnRzIGZpbGxlZCB3aXRoIGRhdGEgYXQgdGhlCitjYWxsIG9mIGBwcm9wZXJ0aWVzKClgLiBEZXZlbG9waW5nIGFwcGxpY2F0aW9ucyB0byBtZWV0IHRoaXMgbG93ZXN0IGNvbW1vbiBkZW5vbWluYXRvciBpbiBBUEkgdXNhZ2Ugd2lsbCBnbyBhIGxvbmcKK3dheSB0byBtYWtpbmcgdGhhdCBhcHBsaWNhdGlvbiBwb3J0YWJsZSBhY3Jvc3MgVGlua2VyUG9wLWVuYWJsZWQgc3lzdGVtcy4KKworV2hlbiBjb25zaWRlcmluZyB0aGUgcmVtYWluaW5nIHN1Yi1zZWN0aW9ucyB0aGF0IGZvbGxvdywgcmVjYWxsIHRoYXQgdGhleSBhcmUgYWxsIGdlbmVyYWxseSBib3VuZCB0byB0aGUgR3JhcGggQVBJLgorVGhleSBhcmUgZGVzY3JpYmVkIGhlcmUgZm9yIHJlZmVyZW5jZSBhbmQgaW4gc29tZSBzZW5zZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggb2xkZXIgcmVjb21tZW5kZWQgbW9kZWxzIG9mCitkZXZlbG9wbWVudC4gSW4gdGhlIGZ1dHVyZSwgdGhlIGNvbnRlbnRzIG9mIHRoaXMgc2VjdGlvbiB3aWxsIGJlY29tZSBsZXNzIGFuZCBsZXNzIHJlbGV2YW50LgorCiA9PSBGZWF0dXJlcwogCiBBIGBGZWF0dXJlYCBpbXBsZW1lbnRhdGlvbiBkZXNjcmliZXMgdGhlIGNhcGFiaWxpdGllcyBvZiBhIGBHcmFwaGAgaW5zdGFuY2UuIFRoaXMgaW50ZXJmYWNlIGlzIGltcGxlbWVudGVkIGJ5IGdyYXBoCkBAIC00NywxOCArODUsMjIgQEAKIHdheSwgdGhlIGFwcGxpY2F0aW9uIGNhbiBiZWhhdmUgZ3JhY2VmdWxseSBpbiBjYXNlIGEgcGFydGljdWxhciBpbXBsZW1lbnRhdGlvbiBpcyBwcm92aWRlZCBhdCBydW50aW1lIHRoYXQgZG9lcyBub3QKIHN1cHBvcnQgYSBmdW5jdGlvbiBiZWluZyBhY2Nlc3NlZC4KIAorV0FSTklORzogRmVhdHVyZXMgb2YgcmVmZXJlbmNlIGdyYXBocyB3aGljaCBhcmUgdXNlZCB0byBjb25uZWN0IHRvIHJlbW90ZSBncmFwaHMgZG8gbm90IHJlZmxlY3QgdGhlIGZlYXR1cmVzIG9mIHRoZQorZ3JhcGggdG8gd2hpY2ggaXQgY29ubmVjdHMuIEl0IHJlZmxlY3RzIHRoZSBmZWF0dXJlcyBvZiBpbnN0YW50aWF0ZWQgZ3JhcGggaXRzZWxmLCB3aGljaCB3aWxsIGxpa2VseSBiZSBxdWl0ZQorZGlmZmVyZW50IGNvbnNpZGVyaW5nIHRoYXQgcmVmZXJlbmNlIGdyYXBocyB3aWxsIHR5cGljYWxseSBiZSBpbW11dGFibGUuCisKIFtbdmVydGV4LXByb3BlcnRpZXNdXQogPT0gVmVydGV4IFByb3BlcnRpZXMKIAotaW1hZ2U6dmVydGV4LXByb3BlcnRpZXMucG5nW3dpZHRoPTIxNSxmbG9hdD1sZWZ0XSBUaW5rZXJQb3AzIGludHJvZHVjZXMgdGhlIGNvbmNlcHQgb2YgYSBgVmVydGV4UHJvcGVydHk8Vj5gLiBBbGwgdGhlCitpbWFnZTp2ZXJ0ZXgtcHJvcGVydGllcy5wbmdbd2lkdGg9MjE1LGZsb2F0PWxlZnRdIFRpbmtlclBvcCBpbnRyb2R1Y2VzIHRoZSBjb25jZXB0IG9mIGEgYFZlcnRleFByb3BlcnR5PFY+YC4gQWxsIHRoZQogcHJvcGVydGllcyBvZiBhIGBWZXJ0ZXhgIGFyZSBhIGBWZXJ0ZXhQcm9wZXJ0eWAuIEEgYFZlcnRleFByb3BlcnR5YCBpbXBsZW1lbnRzIGBQcm9wZXJ0eWAgYW5kIGFzIHN1Y2gsIGl0IGhhcyBhCiBrZXkvdmFsdWUgcGFpci4gSG93ZXZlciwgYFZlcnRleFByb3BlcnR5YCBhbHNvIGltcGxlbWVudHMgYEVsZW1lbnRgIGFuZCB0aHVzLCBjYW4gaGF2ZSBhIGNvbGxlY3Rpb24gb2Yga2V5L3ZhbHVlCiBwYWlycy4gTW9yZW92ZXIsIHdoaWxlIGFuIGBFZGdlYCBjYW4gb25seSBoYXZlIG9uZSBwcm9wZXJ0eSBvZiBrZXkgIm5hbWUiIChmb3IgZXhhbXBsZSksIGEgYFZlcnRleGAgY2FuIGhhdmUgbXVsdGlwbGUKICJuYW1lIiBwcm9wZXJ0aWVzLiBXaXRoIHRoZSBpbmNsdXNpb24gb2YgdmVydGV4IHByb3BlcnRpZXMsIHR3byBmZWF0dXJlcyBhcmUgaW50cm9kdWNlZCB3aGljaCB1bHRpbWF0ZWx5IGFkdmFuY2UgdGhlCiBncmFwaCBtb2RlbGVycyB0b29sa2l0OgogCi0uIE11bHRpcGxlIHByb3BlcnRpZXMgKCptdWx0aS1wcm9wZXJ0aWVzKik6IGEgdmVydGV4IHByb3BlcnR5IGtleSBjYW4gaGF2ZSBtdWx0aXBsZSB2YWx1ZXMuICBGb3IgZXhhbXBsZSwgYSB2ZXJ0ZXggY2FuIGhhdmUKLW11bHRpcGxlICJuYW1lIiBwcm9wZXJ0aWVzLgorLiBNdWx0aXBsZSBwcm9wZXJ0aWVzICgqbXVsdGktcHJvcGVydGllcyopOiBhIHZlcnRleCBwcm9wZXJ0eSBrZXkgY2FuIGhhdmUgbXVsdGlwbGUgdmFsdWVzLiAgRm9yIGV4YW1wbGUsIGEgdmVydGV4IGNhbgoraGF2ZSBtdWx0aXBsZSAibmFtZSIgcHJvcGVydGllcy4KIC4gUHJvcGVydGllcyBvbiBwcm9wZXJ0aWVzICgqbWV0YS1wcm9wZXJ0aWVzKik6IGEgdmVydGV4IHByb3BlcnR5IGNhbiBoYXZlIHByb3BlcnRpZXMgKGkuZS4gYSB2ZXJ0ZXggcHJvcGVydHkgY2FuCiBoYXZlIGtleS92YWx1ZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCBpdCkuCiAKQEAgLTExNyw3ICsxNTksNyBAQAogYXNzb2NpYXRlZCB2ZXJ0ZXgpLgogCiBbW3RoZS1jcmV3LXRveS1ncmFwaF1dCi1USVA6IEEgdG95IGdyYXBoIGRlbW9uc3RyYXRpbmcgYWxsIG9mIHRoZSBuZXcgVGlua2VyUG9wMyBncmFwaCBzdHJ1Y3R1cmUgZmVhdHVyZXMgaXMgYXZhaWxhYmxlIGF0CitUSVA6IEEgdG95IGdyYXBoIGRlbW9uc3RyYXRpbmcgYWxsIG9mIHRoZSBuZXcgVGlua2VyUG9wIGdyYXBoIHN0cnVjdHVyZSBmZWF0dXJlcyBpcyBhdmFpbGFibGUgYXQKIGBUaW5rZXJGYWN0b3J5LmNyZWF0ZVRoZUNyZXcoKWAgYW5kIGBkYXRhL3RpbmtlcnBvcC1jcmV3KmAuIFRoaXMgZ3JhcGggZGVtb25zdHJhdGVzIG11bHRpLXByb3BlcnRpZXMgYW5kIG1ldGEtcHJvcGVydGllcy4KIAogLlRpbmtlclBvcCBDcmV3CkBAIC0xMzcsOSArMTc5LDggQEAKIAogPT0gR3JhcGggVmFyaWFibGVzCiAKLVRpbmtlclBvcDMgaW50cm9kdWNlcyB0aGUgY29uY2VwdCBvZiBgR3JhcGguVmFyaWFibGVzYC4gVmFyaWFibGVzIGFyZSBrZXkvdmFsdWUgcGFpcnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBncmFwaAotaXRzZWxmIC0tIGluIGVzc2VuY2UsIGEgYE1hcDxTdHJpbmcsT2JqZWN0PmAuIFRoZXNlIHZhcmlhYmxlcyBhcmUgaW50ZW5kZWQgdG8gc3RvcmUgbWV0YWRhdGEgYWJvdXQgdGhlIGdyYXBoLiBFeGFtcGxlCi11c2UgY2FzZXMgaW5jbHVkZToKK2BHcmFwaC5WYXJpYWJsZXNgIGFyZSBrZXkvdmFsdWUgcGFpcnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBncmFwaCBpdHNlbGYgLS0gaW4gZXNzZW5jZSwgYSBgTWFwPFN0cmluZyxPYmplY3Q+YC4gVGhlc2UKK3ZhcmlhYmxlcyBhcmUgaW50ZW5kZWQgdG8gc3RvcmUgbWV0YWRhdGEgYWJvdXQgdGhlIGdyYXBoLiBFeGFtcGxlIHVzZSBjYXNlcyBpbmNsdWRlOgogCiAgKiAqU2NoZW1hIGluZm9ybWF0aW9uKjogV2hhdCBkbyB0aGUgbmFtZXNwYWNlIHByZWZpeGVzIHJlc29sdmUgdG8gYW5kIHdoZW4gd2FzIHRoZSBzY2hlbWEgbGFzdCBtb2RpZmllZD8KICAqICpHbG9iYWwgcGVybWlzc2lvbnMqOiBXaGF0IGFyZSB0aGUgYWNjZXNzIHJpZ2h0cyBmb3IgcGFydGljdWxhciBncm91cHM/CkBAIC0xNjMsMTQgKzIwNCwyOCBAQAogSU1QT1JUQU5UOiBHcmFwaCB2YXJpYWJsZXMgYXJlIG5vdCBpbnRlbmRlZCB0byBiZSBzdWJqZWN0IHRvIGhlYXZ5LCBjb25jdXJyZW50IG11dGF0aW9uIG5vciB0byBiZSB1c2VkIGluIGNvbXBsZXgKIGNvbXB1dGF0aW9ucy4gVGhlIGludGVudGlvbiBpcyB0byBoYXZlIGEgbG9jYXRpb24gdG8gc3RvcmUgZGF0YSBhYm91dCB0aGUgZ3JhcGggZm9yIGFkbWluaXN0cmF0aXZlIHB1cnBvc2VzLgogCitXQVJOSU5HOiBBdHRlbXB0aW5nIHRvIHNldCBncmFwaCB2YXJpYWJsZXMgaW4gYSByZWZlcmVuY2UgZ3JhcGggd2lsbCBub3QgcHJvbW90ZSB0aGVtIHRvIHRoZSByZW1vdGUgZ3JhcGguIFR5cGljYWxseSwKK2EgcmVmZXJlbmNlIGdyYXBoIGhhcyBpbW11dGFibGUgZmVhdHVyZXMgYW5kIHdpbGwgbm90IHN1cHBvcnQgdGhpcyBmZWF0dXJlcy4KKwogW1t0cmFuc2FjdGlvbnNdXQogPT0gR3JhcGggVHJhbnNhY3Rpb25zCiAKIGltYWdlOmdyZW1saW4tY29pbnMucG5nW3dpZHRoPTEwMCxmbG9hdD1yaWdodF0gQSBsaW5rOmh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGF0YWJhc2VfdHJhbnNhY3Rpb25bZGF0YWJhc2UgdHJhbnNhY3Rpb25dCi1yZXByZXNlbnRzIGEgdW5pdCBvZiB3b3JrIHRvIGV4ZWN1dGUgYWdhaW5zdCB0aGUgZGF0YWJhc2UuICBUcmFuc2FjdGlvbnMgYXJlIGNvbnRyb2xsZWQgYnkgYW4gaW1wbGVtZW50YXRpb24gb2YgdGhlCi1gVHJhbnNhY3Rpb25gIGludGVyZmFjZSBhbmQgdGhhdCBvYmplY3QgY2FuIGJlIG9idGFpbmVkIGZyb20gdGhlIGBHcmFwaGAgaW50ZXJmYWNlIHVzaW5nIHRoZSBgdHgoKWAgbWV0aG9kLiAgSXQgaXMKLWltcG9ydGFudCB0byBub3RlIHRoYXQgdGhlIGBUcmFuc2FjdGlvbmAgb2JqZWN0IGRvZXMgbm90IHJlcHJlc2VudCBhICJ0cmFuc2FjdGlvbiIgaXRzZWxmLiAgSXQgbWVyZWx5IGV4cG9zZXMgdGhlCi1tZXRob2RzIGZvciB3b3JraW5nIHdpdGggdHJhbnNhY3Rpb25zIChlLmcuIGNvbW1pdHRpbmcsIHJvbGxpbmcgYmFjaywgZXRjKS4KK3JlcHJlc2VudHMgYSB1bml0IG9mIHdvcmsgdG8gZXhlY3V0ZSBhZ2FpbnN0IHRoZSBkYXRhYmFzZS4gVHJhbnNhY3Rpb25zIGluIFRpbmtlclBvcCBjYW4gYmUgY29uc2lkZXJlZCBpbiBzZXZlcmFsCitjb250ZXh0czogdHJhbnNhY3Rpb25zIGZvciA8PGNvbm5lY3RpbmctZW1iZWRkZWQsZW1iZWRkZWQgZ3JhcGhzPj4gdmlhIHRoZSBHcmFwaCBBUEksCit0cmFuc2FjdGlvbnMgZm9yIDw8Y29ubmVjdGluZy1ncmVtbGluLXNlcnZlcixHcmVtbGluIFNlcnZlcj4+IGFuZCB0cmFuc2FjdGlvbnMgd2l0aGluCis8PGNvbm5lY3RpbmctcmdwLFJlbW90ZSBHcmVtbGluIFByb3ZpZGVycz4+LiBGb3IgdGhvc2UgZm9sbG93aW5nIHJlY29tbWVuZGVkIHBhdHRlcm5zLCB0aGUgY29uY2VwdHMgcHJlc2VudGVkIGluIHRoZQorZW1iZWRkZWQgc2VjdGlvbiBzaG91bGQgZ2VuZXJhbGx5IGJlIG9mIGxpdHRsZSBpbnRlcmVzdCBhbmQgYXJlIHByZXNlbnQgbWFpbmx5IGZvciByZWZlcmVuY2UuIFV0aWxpemluZyB0aG9zZQordHJhbnNhY3Rpb25hbCBmZWF0dXJlcyB3aWxsIGdyZWF0bHkgcmVkdWNlIHRoZSBwb3J0YWJpbGl0eSBvZiBhbiBhcHBsaWNhdGlvbidzIEdyZW1saW4gY29kZS4KKworW1t0eC1lbWJlZGRlZF1dCis9PT0gRW1iZWRkZWQKKworV2hlbiBvbiB0aGUgSlZNIHVzaW5nIGFuIDw8Y29ubmVjdGluZy1lbWJlZGRlZCxlbWJlZGRlZCBncmFwaD4+LCB0aGVyZSBpcyBjb25zaWRlcmFibGUgZmxleGliaWxpdHkgZm9yIHdvcmtpbmcgd2l0aAordHJhbnNhY3Rpb25zLiBXaXRoIHRoZSBHcmFwaCBBUEksIHRyYW5zYWN0aW9ucyBhcmUgY29udHJvbGxlZCBieSBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFRyYW5zYWN0aW9uYCBpbnRlcmZhY2UgYW5kCit0aGF0IG9iamVjdCBjYW4gYmUgb2J0YWluZWQgZnJvbSB0aGUgYEdyYXBoYCBpbnRlcmZhY2UgdXNpbmcgdGhlIGB0eCgpYCBtZXRob2QuICBJdCBpcyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IHRoZQorYFRyYW5zYWN0aW9uYCBvYmplY3QgZG9lcyBub3QgcmVwcmVzZW50IGEgInRyYW5zYWN0aW9uIiBpdHNlbGYuICBJdCBtZXJlbHkgZXhwb3NlcyB0aGUgbWV0aG9kcyBmb3Igd29ya2luZyB3aXRoCit0cmFuc2FjdGlvbnMgKGUuZy4gY29tbWl0dGluZywgcm9sbGluZyBiYWNrLCBldGMpLgogCiBNb3N0IGBHcmFwaGAgaW1wbGVtZW50YXRpb25zIHRoYXQgYHN1cHBvcnRzVHJhbnNhY3Rpb25zYCB3aWxsIGltcGxlbWVudCBhbiAiYXV0b21hdGljIiBgVGhyZWFkTG9jYWxgIHRyYW5zYWN0aW9uLAogd2hpY2ggbWVhbnMgdGhhdCB3aGVuIGEgcmVhZCBvciB3cml0ZSBvY2N1cnMgYWZ0ZXIgdGhlIGBHcmFwaGAgaXMgaW5zdGFudGlhdGVkLCBhIHRyYW5zYWN0aW9uIGlzIGF1dG9tYXRpY2FsbHkKQEAgLTE5NSw3ICsyNTAsNyBAQAogVGlua2VyUG9wIHN0YWNrLiBCZSBzdXJlIHRvIHVuZGVyc3RhbmQgdGhlIHRyYW5zYWN0aW9uIHNlbWFudGljcyBvZiB0aGUgc3BlY2lmaWMgZ3JhcGggaW1wbGVtZW50YXRpb24gdGhhdCBpcyBiZWluZwogdXRpbGl6ZWQgYXMgaXQgbWF5IHByZXNlbnQgZGlmZmVyaW5nIGZ1bmN0aW9uYWxpdHkgdGhhbiBkZXNjcmliZWQgaGVyZS4KIAotPT09IENvbmZpZ3VyaW5nCis9PT09IENvbmZpZ3VyaW5nCiAKIERldGVybWluaW5nIHdoZW4gYSB0cmFuc2FjdGlvbiBzdGFydHMgaXMgZGVwZW5kZW50IHVwb24gdGhlIGJlaGF2aW9yIGFzc2lnbmVkIHRvIHRoZSBgVHJhbnNhY3Rpb25gLiAgSXQgaXMgdXAgdG8gdGhlCiBgR3JhcGhgIGltcGxlbWVudGF0aW9uIHRvIGRldGVybWluZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBhbmQgdW5sZXNzIHRoZSBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0IGFsbG93IGl0LCB0aGUgYmVoYXZpb3IKQEAgLTI3OCw3ICszMzMsNyBAQAogc3BlY2lmaWNzIG9mIGhvdyB0cmFuc2FjdGlvbnMgd2lsbCBiZWhhdmUuICBUaW5rZXJQb3AgYWxsb3dzIHNvbWUgbGF0aXR1ZGUgaW4gdGhpcyBhcmVhIGFuZCBpbXBsZW1lbnRhdGlvbnMgbWF5IG5vdCBoYXZlCiB0aGUgZXhhY3Qgc2FtZSBiZWhhdmlvcnMgYW5kIGxpbms6aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQUNJRFtBQ0lEXSBndWFyYW50ZWVzLgogCi09PT0gVGhyZWFkZWQgVHJhbnNhY3Rpb25zCis9PT09IFRocmVhZGVkIFRyYW5zYWN0aW9ucwogCiBNb3N0IGBHcmFwaGAgaW1wbGVtZW50YXRpb25zIHRoYXQgc3VwcG9ydCB0cmFuc2FjdGlvbnMgZG8gc28gaW4gYSBgVGhyZWFkTG9jYWxgIG1hbm5lciwgd2hlcmUgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24KIGlzIGJvdW5kIHRvIHRoZSBjdXJyZW50IHRocmVhZCBvZiBleGVjdXRpb24uIENvbnNpZGVyIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSB0byBkZW1vbnN0cmF0ZToKQEAgLTM0Myw0NDYgKzM5OCw0MiBAQAogYFRocmVhZExvY2FsYCB0cmFuc2FjdGlvbiwgdGh1cyBhbGxvd2luZyBlYWNoIHRocmVhZCB0byBvcGVyYXRlIG9uIGl0IGluIHRoZSBzYW1lIGNvbnRleHQuICBJbiB0aGlzIGNhc2UsIHRoZXJlIHdvdWxkCiBiZSB0aHJlZSBzZXBhcmF0ZSB2ZXJ0aWNlcyBwZXJzaXN0ZWQgdG8gdGhlIGBHcmFwaGAuCiAKLT09IEdyZW1saW4gSS9PCitbW3R4LWdyZW1saW4tc2VydmVyXV0KKz09PSBHcmVtbGluIFNlcnZlcgogCi1pbWFnZTpncmVtbGluLWlvLnBuZ1t3aWR0aD0yNTAsZmxvYXQ9cmlnaHRdIFRoZSB0YXNrIG9mIGdldHRpbmcgZGF0YSBpbiBhbmQgb3V0IG9mIGBHcmFwaGAgaW5zdGFuY2VzIGlzIHRoZSBqb2Igb2YKLXRoZSBHcmVtbGluIEkvTyBwYWNrYWdlcy4gIEdyZW1saW4gSS9PIHByb3ZpZGVzIHR3byBpbnRlcmZhY2VzIGZvciByZWFkaW5nIGFuZCB3cml0aW5nIGBHcmFwaGAgaW5zdGFuY2VzOiBgR3JhcGhSZWFkZXJgCi1hbmQgYEdyYXBoV3JpdGVyYC4gIFRoZXNlIGludGVyZmFjZXMgZXhwb3NlIG1ldGhvZHMgdGhhdCBzdXBwb3J0OgorVGhlIGF2YWlsYWJsZSBjYXBhYmlsaXR5IGZvciB0cmFuc2FjdGlvbnMgd2l0aCA8PGdyZW1saW4tc2VydmVyLEdyZW1saW4gU2VydmVyPj4gaXMgZGVwZW5kZW50IHVwb24gdGhlIG1ldGhvZCBvZgoraW50ZXJhY3Rpb24gdGhhdCBpcyB1c2VkLiBUaGUgcHJlZmVycmVkIG1ldGhvZCBmb3IgPDxjb25uZWN0aW5nLWdyZW1saW4tc2VydmVyLGludGVyYWN0aW5nIHdpdGggR3JlbWxpbiBTZXJ2ZXI+PgoraXMgdmlhIHdlYnNvY2tldHMgYW5kIGJ5dGVjb2RlIGJhc2VkIHJlcXVlc3RzLiBJbiB0aGlzIG1vZGUgb2Ygb3BlcmF0aW9ucyBlYWNoIEdyZW1saW4gdHJhdmVyc2FsIHRoYXQgaXMgZXhlY3V0ZWQgd2lsbAorYmUgdHJlYXRlZCBhcyBhIHNpbmdsZSB0cmFuc2FjdGlvbi4gVHJhdmVyc2FscyB0aGF0IGZhaWwgd2lsbCBoYXZlIHRoZWlyIHRyYW5zYWN0aW9uIHJvbGxlZCBiYWNrIGFuZCBzdWNjZXNzZnVsCitpdGVyYXRpb24gb2YgYSB0cmF2ZXJzYWwgd2lsbCBjb25jbHVkZSB3aXRoIGEgdHJhbnNhY3Rpb25hbCBjb21taXQuIEhvdyB0aGUgZ3JhcGggaG9zdGVkIGluIEdyZW1saW4gU2VydmVyIHJlYWN0cyB0bwordGhvc2UgY29tbWFuZHMgaXMgZGVwZW5kZW50IG9uIHRoZSBncmFwaCBjaG9zZW4gYW5kIGl0IGlzIHRoZXJlZm9yZSBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgdHJhbnNhY3Rpb25hbCBzZW1hbnRpY3MKK29mIHRoYXQgZ3JhcGggd2hlbiBkZXZlbG9waW5nIGFuIGFwcGxpY2F0aW9uLgogCi0qIFJlYWRpbmcgYW5kIHdyaXRpbmcgYW4gZW50aXJlIGBHcmFwaGAKLSogUmVhZGluZyBhbmQgd3JpdGluZyBhIGBUcmF2ZXJzYWw8VmVydGV4PmAgYXMgYWRqYWNlbmN5IGxpc3QgZm9ybWF0Ci0qIFJlYWRpbmcgYW5kIHdyaXRpbmcgYSBzaW5nbGUgYFZlcnRleGAgKHdpdGggYW5kIHdpdGhvdXQgYXNzb2NpYXRlZCBgRWRnZWAgb2JqZWN0cykKLSogUmVhZGluZyBhbmQgd3JpdGluZyBhIHNpbmdsZSBgRWRnZWAKLSogUmVhZGluZyBhbmQgd3JpdGluZyBhIHNpbmdsZSBgVmVydGV4UHJvcGVydHlgCi0qIFJlYWRpbmcgYW5kIHdyaXRpbmcgYSBzaW5nbGUgYFByb3BlcnR5YAotKiBSZWFkaW5nIGFuZCB3cml0aW5nIGFuIGFyYml0cmFyeSBgT2JqZWN0YAorR3JlbWxpbiBTZXJ2ZXIgYWxzbyBoYXMgdGhlIG9wdGlvbiB0byBhY2NlcHQgR3JlbWxpbi1iYXNlZCBzY3JpcHRzLiBUaGUgc2NyaXB0aW5nIGFwcHJvYWNoIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUKK0dyYXBoIEFQSSBhbmQgdGh1cyBhbHNvIHRoZSB0cmFuc2FjdGlvbmFsIG1vZGVsIGRlc2NyaWJlZCBpbiB0aGUgPDx0eC1lbWJlZGRlZCxlbWJlZGRlZD4+IHNlY3Rpb24uIFRoZXJlZm9yZSBhIHNpbmdsZQorc2NyaXB0IGNhbiBoYXZlIHRoZSBhYmlsaXR5IHRvIGV4ZWN1dGUgbXVsdGlwbGUgdHJhbnNhY3Rpb25zIHBlciByZXF1ZXN0IHdpdGggY29tcGxldGUgY29udHJvbCBwcm92aWRlZCB0byB0aGUKK2RldmVsb3BlciB0byBjb21taXQgb3Igcm9sbGJhY2sgdHJhbnNhY3Rpb25zIGFzIG5lZWRlZC4KIAotSW4gYWxsIGNhc2VzLCB0aGVzZSBtZXRob2RzIG9wZXJhdGUgaW4gdGhlIGN1cnJlbmN5IG9mIGBJbnB1dFN0cmVhbWAgYW5kIGBPdXRwdXRTdHJlYW1gIG9iamVjdHMsIGFsbG93aW5nIGdyYXBocyBhbmQKLXRoZWlyIHJlbGF0ZWQgZWxlbWVudHMgdG8gYmUgd3JpdHRlbiB0byBhbmQgcmVhZCBmcm9tIGZpbGVzLCBieXRlIGFycmF5cywgZXRjLiAgVGhlIGBHcmFwaGAgaW50ZXJmYWNlIG9mZmVycyB0aGUgYGlvYAotbWV0aG9kLCB3aGljaCBwcm92aWRlcyBhY2Nlc3MgdG8gInJlYWRlci93cml0ZXIgYnVpbGRlciIgb2JqZWN0cyB0aGF0IGFyZSBwcmUtY29uZmlndXJlZCB3aXRoIHNlcmlhbGl6ZXJzIHByb3ZpZGVkIGJ5Ci10aGUgYEdyYXBoYCwgYXMgd2VsbCBhcyBoZWxwZXIgbWV0aG9kcyBmb3IgdGhlIHZhcmlvdXMgSS9PIGNhcGFiaWxpdGllcy4gVW5sZXNzIHRoZXJlIGFyZSB2ZXJ5IGFkdmFuY2VkIHJlcXVpcmVtZW50cwotZm9yIHRoZSBzZXJpYWxpemF0aW9uIHByb2Nlc3MsIGl0IGlzIGFsd2F5cyBiZXN0IHRvIHV0aWxpemUgdGhlIG1ldGhvZHMgb24gdGhlIGBJb2AgaW50ZXJmYWNlIHRvIGNvbnN0cnVjdAotYEdyYXBoUmVhZGVyYCBhbmQgYEdyYXBoV3JpdGVyYCBpbnN0YW5jZXMsIGFzIHRoZSBpbXBsZW1lbnRhdGlvbiBtYXkgcHJvdmlkZSBzb21lIGN1c3RvbSBzZXR0aW5ncyB0aGF0IHdvdWxkIG90aGVyd2lzZQotaGF2ZSB0byBiZSBjb25maWd1cmVkIG1hbnVhbGx5IGJ5IHRoZSB1c2VyIHRvIGRvIHRoZSBzZXJpYWxpemF0aW9uLgorVGhlcmUgYXJlIHR3byBtZXRob2RzIGZvciBzZW5kaW5nIHNjcmlwdHMgdG8gR3JlbWxpbiBTZXJ2ZXI6IHNlc3Npb25sZXNzIGFuZCBzZXNzaW9uLWJhc2VkLiBXaXRoIHNlc3Npb25sZXNzIHJlcXVlc3RzCit0aGVyZSB3aWxsIGFsd2F5cyBiZSBhbiBhdHRlbXB0IHRvIGNsb3NlIHRoZSB0cmFuc2FjdGlvbiBhdCB0aGUgZW5kIG9mIHRoZSByZXF1ZXN0IHdpdGggYSBjb21taXQgaWYgdGhlcmUgYXJlIG5vIGVycm9ycworb3IgYSByb2xsYmFjayBpZiB0aGVyZSBpcyBhIGZhaWx1cmUuIEl0IGlzIHRoZXJlZm9yZSB1bm5lY2Vzc2FyeSB0byBjbG9zZSB0cmFuc2FjdGlvbnMgbWFudWFsbHkgd2l0aGluIHNjcmlwdHMKK3RoZW1zZWx2ZXMuIEJ5IGRlZmF1bHQsIHNlc3Npb24tYmFzZWQgcmVxdWVzdHMgZG8gbm90IGhhdmUgdGhpcyBxdWFsaXR5LiBUaGUgdHJhbnNhY3Rpb24gd2lsbCBiZSBoZWxkIG9wZW4gb24gdGhlCitzZXJ2ZXIgdW50aWwgdGhlIHVzZXIgY2xvc2VzIGl0IG1hbnVhbGx5LiBUaGVyZSBpcyBhbiBvcHRpb24gdG8gaGF2ZSBhdXRvbWF0aWMgdHJhbnNhY3Rpb24gbWFuYWdlbWVudCBmb3Igc2Vzc2lvbnMuCitNb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgdG9waWMgY2FuIGJlIGZvdW5kIGluIHRoZSA8PGNvbnNpZGVyaW5nLXRyYW5zYWN0aW9ucyxDb25zaWRlcmluZyBUcmFuc2FjdGlvbnM+PiBTZWN0aW9uIGFuZAordGhlIDw8c2Vzc2lvbnMsQ29uc2lkZXJpbmcgU2Vzc2lvbnM+PiBTZWN0aW9uLgogCi1JdCBpcyB1cCB0byB0aGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBgR3JhcGhSZWFkZXJgIGFuZCBgR3JhcGhXcml0ZXJgIGludGVyZmFjZXMgdG8gY2hvb3NlIHRoZSBtZXRob2RzIHRoZXkKLWltcGxlbWVudCBhbmQgdGhlIG1hbm5lciBpbiB3aGljaCB0aGV5IHdvcmsgdG9nZXRoZXIuICBUaGUgb25seSBjaGFyYWN0ZXJpc3RpYyBlbmZvcmNlZCBhbmQgZXhwZWN0ZWQgaXMgdGhhdCB0aGUgd3JpdGUKLW1ldGhvZHMgc2hvdWxkIHByb2R1Y2Ugb3V0cHV0IHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIHJlYWQgbWV0aG9kLiAgRm9yIGV4YW1wbGUsIHRoZSBvdXRwdXQgb2YKLWB3cml0ZVZlcnRpY2VzYCBzaG91bGQgYmUgcmVhZGFibGUgYXMgaW5wdXQgdG8gYHJlYWRWZXJ0aWNlc2AgYW5kIHRoZSBvdXRwdXQgb2YgYHdyaXRlUHJvcGVydHlgIHNob3VsZCBiZSByZWFkYWJsZSBhcwotaW5wdXQgdG8gYHJlYWRQcm9wZXJ0eWAuCitXaGlsZSB0aG9zZSBzZWN0aW9ucyBwcm92aWRlIHNvbWUgYWRkaXRpb25hbCBkZXRhaWxzLCB0aGUgc2hvcnQgYWR2aWNlIGlzIHRvIGF2b2lkIHNjcmlwdHMgd2hlbiBwb3NzaWJsZSBhbmQgcHJlZmVyCitieXRlY29kZSBiYXNlZCByZXF1ZXN0cy4KIAotTk9URTogQWRkaXRpb25hbCBkb2N1bWVudGF0aW9uIGZvciBUaW5rZXJQb3AgSU8gZm9ybWF0cyBjYW4gYmUgZm91bmQgaW4gdGhlIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L2Rldi9pby9bSU8gUmVmZXJlbmNlXS4KK1tbdHgtcmdwXV0KKz09PSBSZW1vdGUgR3JlbWxpbiBQcm92aWRlcnMKIAotPT09IEdyYXBoTUwgUmVhZGVyL1dyaXRlcgotCi1pbWFnZTpncmVtbGluLWdyYXBobWwucG5nW3dpZHRoPTM1MCxmbG9hdD1sZWZ0XSBUaGUgbGluazpodHRwOi8vZ3JhcGhtbC5ncmFwaGRyYXdpbmcub3JnL1tHcmFwaE1MXSBmaWxlIGZvcm1hdCBpcyBhCi1jb21tb24gWE1MLWJhc2VkIHJlcHJlc2VudGF0aW9uIG9mIGEgZ3JhcGguIEl0IGlzIHdpZGVseSBzdXBwb3J0ZWQgYnkgZ3JhcGgtcmVsYXRlZCB0b29scyBhbmQgbGlicmFyaWVzIG1ha2luZyBpdCBhCi1zb2xpZCBpbnRlcmNoYW5nZSBmb3JtYXQgZm9yIFRpbmtlclBvcC4gSW4gb3RoZXIgd29yZHMsIGlmIHRoZSBpbnRlbnQgaXMgdG8gd29yayB3aXRoIGdyYXBoIGRhdGEgaW4gY29uanVuY3Rpb24gd2l0aAotYXBwbGljYXRpb25zIG91dHNpZGUgb2YgVGlua2VyUG9wLCBHcmFwaE1MIG1heSBiZSB0aGUgYmVzdCBjaG9pY2UgdG8gZG8gdGhhdC4gQ29tbW9uIHVzZSBjYXNlcyBtaWdodCBiZToKLQotKiBHZW5lcmF0ZSBhIGdyYXBoIHVzaW5nIGxpbms6aHR0cHM6Ly9uZXR3b3JreC5naXRodWIuaW8vW05ldHdvcmtYXSwgZXhwb3J0IGl0IHdpdGggR3JhcGhNTCBhbmQgaW1wb3J0IGl0IHRvIFRpbmtlclBvcC4KLSogUHJvZHVjZSBhIHN1YmdyYXBoIGFuZCBleHBvcnQgaXQgdG8gR3JhcGhNTCB0byBiZSBjb25zdW1lZCBieSBhbmQgdmlzdWFsaXplZCBpbiBsaW5rOmh0dHBzOi8vZ2VwaGkub3JnL1tHZXBoaV0uCi0qIE1pZ3JhdGUgdGhlIGRhdGEgb2YgYW4gZW50aXJlIGdyYXBoIHRvIGEgZGlmZmVyZW50IGdyYXBoIGRhdGFiYXNlIG5vdCBzdXBwb3J0ZWQgYnkgVGlua2VyUG9wLgotCi1BcyBHcmFwaE1MIGlzIGEgc3BlY2lmaWNhdGlvbiBmb3IgdGhlIHNlcmlhbGl6YXRpb24gb2YgYW4gZW50aXJlIGdyYXBoIGFuZCBub3QgdGhlIGluZGl2aWR1YWwgZWxlbWVudHMgb2YgYSBncmFwaCwKLW1ldGhvZHMgdGhhdCBzdXBwb3J0IGlucHV0IGFuZCBvdXRwdXQgb2Ygc2luZ2xlIHZlcnRpY2VzLCBlZGdlcywgZXRjLiBhcmUgbm90IHN1cHBvcnRlZC4KLQotV0FSTklORzogR3JhcGhNTCBpcyBhICJsb3NzeSIgZm9ybWF0IGluIHRoYXQgaXQgb25seSBzdXBwb3J0cyBwcmltaXRpdmUgdmFsdWVzIGZvciBwcm9wZXJ0aWVzIGFuZCBkb2VzIG5vdCBoYXZlCi1zdXBwb3J0IGZvciBgR3JhcGhgIHZhcmlhYmxlcy4gIEl0IHdpbGwgdXNlIGB0b1N0cmluZ2AgdG8gc2VyaWFsaXplIHByb3BlcnR5IHZhbHVlcyBvdXRzaWRlIG9mIHRob3NlIHByaW1pdGl2ZXMuCi0KLVdBUk5JTkc6IEdyYXBoTUwgYXMgYSBzcGVjaWZpY2F0aW9uIGFsbG93cyBmb3IgYDxlZGdlPmAgYW5kIGA8bm9kZT5gIGVsZW1lbnRzIHRvIGFwcGVhciBpbiBhbnkgb3JkZXIuICBNb3N0IHNvZnR3YXJlCi10aGF0IHdyaXRlcyBHcmFwaE1MIChpbmNsdWRpbmcgYXMgVGlua2VyUG9wJ3MgYEdyYXBoTUxXcml0ZXJgKSB3cml0ZSBgPG5vZGU+YCBlbGVtZW50cyBiZWZvcmUgYDxlZGdlPmAgZWxlbWVudHMuICBIb3dldmVyIGl0Ci1pcyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IGBHcmFwaE1MUmVhZGVyYCB3aWxsIHJlYWQgdGhpcyBkYXRhIGluIG9yZGVyIGFuZCBvcmRlciBjYW4gbWF0dGVyLiAgVGhpcyBpcyBiZWNhdXNlIFRpbmtlclBvcAotZG9lcyBub3QgYWxsb3cgdGhlIHZlcnRleCBsYWJlbCB0byBiZSBjaGFuZ2VkIGFmdGVyIHRoZSB2ZXJ0ZXggaGFzIGJlZW4gY3JlYXRlZC4gIFRoZXJlZm9yZSwgaWYgYW4gYDxlZGdlPmAgZWxlbWVudAotY29tZXMgYmVmb3JlIHRoZSBgPG5vZGU+YCwgdGhlIGxhYmVsIG9uIHRoZSB2ZXJ0ZXggd2lsbCBiZSBpZ25vcmVkLiAgSXQgaXMgdGh1cyBiZXR0ZXIgdG8gb3JkZXIgYDxub2RlPmAgZWxlbWVudHMgaW4gdGhlCi1HcmFwaE1MIHRvIGFwcGVhciBiZWZvcmUgYWxsIGA8ZWRnZT5gIGVsZW1lbnRzIGlmIHZlcnRleCBsYWJlbHMgYXJlIGltcG9ydGFudCB0byB0aGUgZ3JhcGguCi0KLVRoZSBmb2xsb3dpbmcgY29kZSBzaG93cyBob3cgdG8gd3JpdGUgYSBgR3JhcGhgIGluc3RhbmNlIHRvIGZpbGUgY2FsbGVkIGB0aW5rZXJwb3AtbW9kZXJuLnhtbGAgYW5kIHRoZW4gaG93IHRvIHJlYWQKLXRoYXQgZmlsZSBiYWNrIGludG8gYSBkaWZmZXJlbnQgaW5zdGFuY2U6Ci0KLVtzb3VyY2UsamF2YV0KLS0tLS0KLUdyYXBoIGdyYXBoID0gVGlua2VyRmFjdG9yeS5jcmVhdGVNb2Rlcm4oKTsKLWdyYXBoLmlvKElvQ29yZS5ncmFwaG1sKCkpLndyaXRlR3JhcGgoInRpbmtlcnBvcC1tb2Rlcm4ueG1sIik7Ci1HcmFwaCBuZXdHcmFwaCA9IFRpbmtlckdyYXBoLm9wZW4oKTsKLW5ld0dyYXBoLmlvKElvQ29yZS5ncmFwaG1sKCkpLnJlYWRHcmFwaCgidGlua2VycG9wLW1vZGVybi54bWwiKTsKLS0tLS0KLQotSWYgYSBjdXN0b20gY29uZmlndXJhdGlvbiBpcyByZXF1aXJlZCwgdGhlbiBoYXZlIHRoZSBgR3JhcGhgIGdlbmVyYXRlIGEgYEdyYXBoUmVhZGVyYCBvciBgR3JhcGhXcml0ZXJgICJidWlsZGVyIiBpbnN0YW5jZToKLQotW3NvdXJjZSxqYXZhXQotLS0tLQotR3JhcGggZ3JhcGggPSBUaW5rZXJGYWN0b3J5LmNyZWF0ZU1vZGVybigpOwotdHJ5IChPdXRwdXRTdHJlYW0gb3MgPSBuZXcgRmlsZU91dHB1dFN0cmVhbSgidGlua2VycG9wLW1vZGVybi54bWwiKSkgewotICAgIGdyYXBoLmlvKElvQ29yZS5ncmFwaG1sKCkpLndyaXRlcigpLm5vcm1hbGl6ZSh0cnVlKS5jcmVhdGUoKS53cml0ZUdyYXBoKG9zLCBncmFwaCk7Ci19Ci0KLUdyYXBoIG5ld0dyYXBoID0gVGlua2VyR3JhcGgub3BlbigpOwotdHJ5IChJbnB1dFN0cmVhbSBzdHJlYW0gPSBuZXcgRmlsZUlucHV0U3RyZWFtKCJ0aW5rZXJwb3AtbW9kZXJuLnhtbCIpKSB7Ci0gICAgbmV3R3JhcGguaW8oSW9Db3JlLmdyYXBobWwoKSkucmVhZGVyKCkuY3JlYXRlKCkucmVhZEdyYXBoKHN0cmVhbSwgbmV3R3JhcGgpOwotfQotLS0tLQotCi1HcmFwaE1MIHdhcyBhIHN1cHBvcnRlZCBmb3JtYXQgaW4gVGlua2VyUG9wIDIueCwgYnV0IHRoZXJlIHdlcmUgc2V2ZXJhbCBpc3N1ZXMgdGhhdCBtYWRlIGl0IGluY29uc2lzdGVudCB3aXRoIHRoZQotc3BlY2lmaWNhdGlvbiB0aGF0IHdlcmUgY29ycmVjdGVkIGZvciAzLnguIEFzIGEgcmVzdWx0LCBhdHRlbXB0aW5nIHRvIHJlYWQgYSBHcmFwaE1MIGZpbGUgZ2VuZXJhdGVkIGJ5IDIueCB3aXRoIHRoZQotMy54IGBHcmFwaE1MUmVhZGVyYCB3aWxsIHJlc3VsdCBpbiBlcnJvci4gVG8gaGVscCB3aXRoIHRoaXMgcHJvYmxlbSwgYW4gWFNMVCBmaWxlIGlzIHByb3ZpZGVkIGFzIGEgcmVzb3VyY2UgaW4KLWBncmVtbGluLWNvcmVgIHdoaWNoIHdpbGwgdHJhbnNmb3JtIDIueCBHcmFwaE1MIHRvIDMueCBHcmFwaE1MLiBJdCBjYW4gYmUgdXNlZCBhcyBmb2xsb3dzOgotCi1bc291cmNlLGphdmFdCi0tLS0tCi1pbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeTsKLWltcG9ydCBqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyRmFjdG9yeTsKLWltcG9ydCBqYXZheC54bWwudHJhbnNmb3JtLmRvbS5ET01Tb3VyY2U7Ci1pbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5zdHJlYW0uU3RyZWFtU291cmNlOwotaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uc3RyZWFtLlN0cmVhbVJlc3VsdDsKLQotSW5wdXRTdHJlYW0gc3R5bGVzaGVldCA9IFRocmVhZC5jdXJyZW50VGhyZWFkKCkuZ2V0Q29udGV4dENsYXNzTG9hZGVyKCkuZ2V0UmVzb3VyY2VBc1N0cmVhbSgidHAyLXRvLXRwMy1ncmFwaG1sLnhzbHQiKTsKLUZpbGUgZGF0YWZpbGUgPSBuZXcgRmlsZSgnL3RtcC90cDItZ3JhcGhtbC54bWwnKTsKLUZpbGUgb3V0ZmlsZSA9IG5ldyBGaWxlKCcvdG1wL3RwMy1ncmFwaG1sLnhtbCcpOwotCi1UcmFuc2Zvcm1lckZhY3RvcnkgdEZhY3RvcnkgPSBUcmFuc2Zvcm1lckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKLVN0cmVhbVNvdXJjZSBzdHlsZXNvdXJjZSA9IG5ldyBTdHJlYW1Tb3VyY2Uoc3R5bGVzaGVldCk7Ci1UcmFuc2Zvcm1lciB0cmFuc2Zvcm1lciA9IHRGYWN0b3J5Lm5ld1RyYW5zZm9ybWVyKHN0eWxlc291cmNlKTsKLQotU3RyZWFtU291cmNlIHNvdXJjZSA9IG5ldyBTdHJlYW1Tb3VyY2UoZGF0YWZpbGUpOwotU3RyZWFtUmVzdWx0IHJlc3VsdCA9IG5ldyBTdHJlYW1SZXN1bHQobmV3IEZpbGVXcml0ZXIob3V0ZmlsZSkpOwotdHJhbnNmb3JtZXIudHJhbnNmb3JtKHNvdXJjZSwgcmVzdWx0KTsKLS0tLS0KLQotW1tncmFwaHNvbi1yZWFkZXItd3JpdGVyXV0KLT09PSBHcmFwaFNPTiBSZWFkZXIvV3JpdGVyCi0KLWltYWdlOmdyZW1saW4tZ3JhcGhzb24ucG5nW3dpZHRoPTM1MCxmbG9hdD1sZWZ0XSBHcmFwaFNPTiBpcyBhIGxpbms6aHR0cDovL2pzb24ub3JnL1tKU09OXS1iYXNlZCBmb3JtYXQgZXh0ZW5kZWQKLWZyb20gZWFybGllciB2ZXJzaW9ucyBvZiBUaW5rZXJQb3AuIEl0IGlzIGltcG9ydGFudCB0byBub3RlIHRoYXQgVGlua2VyUG9wMydzIEdyYXBoU09OIGlzIG5vdCBiYWNrd2FyZHMgY29tcGF0aWJsZQotd2l0aCBwcmlvciBUaW5rZXJQb3AgR3JhcGhTT04gdmVyc2lvbnMuIEdyYXBoU09OIGhhcyBzb21lIHN1cHBvcnQgZnJvbSBncmFwaC1yZWxhdGVkIGFwcGxpY2F0aW9uIG91dHNpZGUgb2YgVGlua2VyUG9wLAotYnV0IGl0IGlzIGdlbmVyYWxseSBiZXN0IHVzZWQgaW4gdHdvIGNhc2VzOgotCi0qIEEgdGV4dCBmb3JtYXQgb2YgdGhlIGdyYXBoIG9yIGl0cyBlbGVtZW50cyBpcyBkZXNpcmVkIChlLmcuIGRlYnVnZ2luZywgdXNhZ2UgaW4gc291cmNlIGNvbnRyb2wsIGV0Yy4pCi0qIFRoZSBncmFwaCBvciBpdHMgZWxlbWVudHMgbmVlZCB0byBiZSBjb25zdW1lZCBieSBjb2RlIHRoYXQgaXMgbm90IEpWTS1iYXNlZCAoZS5nLiBKYXZhU2NyaXB0LCBQeXRob24sIC5ORVQsIGV0Yy4pCi0KLUdyYXBoU09OIHN1cHBvcnRzIGFsbCBvZiB0aGUgYEdyYXBoUmVhZGVyYCBhbmQgYEdyYXBoV3JpdGVyYCBpbnRlcmZhY2UgbWV0aG9kcyBhbmQgY2FuIHRoZXJlZm9yZSByZWFkIG9yIHdyaXRlIGFuCi1lbnRpcmUgYEdyYXBoYCwgdmVydGljZXMsIGFyYml0cmFyeSBvYmplY3RzLCBldGMuICBUaGUgZm9sbG93aW5nIGNvZGUgc2hvd3MgaG93IHRvIHdyaXRlIGEgYEdyYXBoYCBpbnN0YW5jZSB0byBmaWxlCi1jYWxsZWQgYHRpbmtlcnBvcC1tb2Rlcm4uanNvbmAgYW5kIHRoZW4gaG93IHRvIHJlYWQgdGhhdCBmaWxlIGJhY2sgaW50byBhIGRpZmZlcmVudCBpbnN0YW5jZToKLQotW3NvdXJjZSxqYXZhXQotLS0tLQotR3JhcGggZ3JhcGggPSBUaW5rZXJGYWN0b3J5LmNyZWF0ZU1vZGVybigpOwotZ3JhcGguaW8oZ3JhcGhzb24oKSkud3JpdGVHcmFwaCgidGlua2VycG9wLW1vZGVybi5qc29uIik7Ci0KLUdyYXBoIG5ld0dyYXBoID0gVGlua2VyR3JhcGgub3BlbigpOwotbmV3R3JhcGguaW8oZ3JhcGhzb24oKSkucmVhZEdyYXBoKCJ0aW5rZXJwb3AtbW9kZXJuLmpzb24iKTsKLS0tLS0KLQotTk9URTogVXNpbmcgYGdyYXBoc29uKClgLCB3aGljaCBpcyBhIHN0YXRpYyBoZWxwZXIgbWV0aG9kIG9mIGBJb0NvcmVgLCB3aWxsIGRlZmF1bHQgdG8gdGhlIG1vc3QgY3VycmVudCB2ZXJzaW9uIG9mIEdyYXBoU09OIHdoaWNoIGlzIDMuMC4KLQotSWYgYSBjdXN0b20gY29uZmlndXJhdGlvbiBpcyByZXF1aXJlZCwgdGhlbiBoYXZlIHRoZSBgR3JhcGhgIGdlbmVyYXRlIGEgYEdyYXBoUmVhZGVyYCBvciBgR3JhcGhXcml0ZXJgICJidWlsZGVyIiBpbnN0YW5jZToKLQotW3NvdXJjZSxqYXZhXQotLS0tLQotR3JhcGggZ3JhcGggPSBUaW5rZXJGYWN0b3J5LmNyZWF0ZU1vZGVybigpOwotdHJ5IChPdXRwdXRTdHJlYW0gb3MgPSBuZXcgRmlsZU91dHB1dFN0cmVhbSgidGlua2VycG9wLW1vZGVybi5qc29uIikpIHsKLSAgICBHcmFwaFNPTk1hcHBlciBtYXBwZXIgPSBncmFwaC5pbyhJb0NvcmUuZ3JhcGhzb24oKSkubWFwcGVyKCkubm9ybWFsaXplKHRydWUpLmNyZWF0ZSgpCi0gICAgZ3JhcGguaW8oZ3JhcGhzb24oKSkud3JpdGVyKCkubWFwcGVyKG1hcHBlcikuY3JlYXRlKCkud3JpdGVHcmFwaChvcywgZ3JhcGgpCi19Ci0KLUdyYXBoIG5ld0dyYXBoID0gVGlua2VyR3JhcGgub3BlbigpOwotdHJ5IChJbnB1dFN0cmVhbSBzdHJlYW0gPSBuZXcgRmlsZUlucHV0U3RyZWFtKCJ0aW5rZXJwb3AtbW9kZXJuLmpzb24iKSkgewotICAgIG5ld0dyYXBoLmlvKGdyYXBoc29uKCkpLnJlYWRlcigpLmNyZWF0ZSgpLnJlYWRHcmFwaChzdHJlYW0sIG5ld0dyYXBoKTsKLX0KLS0tLS0KLQotVGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIGhvdyBhIHNpbmdsZSBgVmVydGV4YCBpcyB3cml0dGVuIHRvIEdyYXBoU09OIHVzaW5nIHRoZSBHcmVtbGluIENvbnNvbGU6Ci0KLVtncmVtbGluLWdyb292eV0KLS0tLS0KLWdyYXBoID0gVGlua2VyRmFjdG9yeS5jcmVhdGVNb2Rlcm4oKQotZyA9IGdyYXBoLnRyYXZlcnNhbCgpCi1mID0gbmV3IEJ5dGVBcnJheU91dHB1dFN0cmVhbSgpCi1ncmFwaC5pbyhncmFwaHNvbigpKS53cml0ZXIoKS5jcmVhdGUoKS53cml0ZVZlcnRleChmLCBnLlYoMSkubmV4dCgpLCBCT1RIKQotZi5jbG9zZSgpCi0tLS0tCi0KLVRoZSBmb2xsb3dpbmcgR3JhcGhTT04gZXhhbXBsZSBzaG93cyB0aGUgb3V0cHV0IG9mIGBHcmFwaFNPTldyaXRlci53cml0ZVZlcnRleCgpYCB3aXRoIGFzc29jaWF0ZWQgZWRnZXM6Ci0KLVtzb3VyY2UsanNvbl0KLS0tLS0KLXsKLQkiaWQiOiB7Ci0JCSJAdHlwZSI6ICJnOkludDMyIiwKLQkJIkB2YWx1ZSI6IDEKLQl9LAotCSJsYWJlbCI6ICJwZXJzb24iLAotCSJvdXRFIjogewotCQkiY3JlYXRlZCI6IFt7Ci0JCQkiaWQiOiB7Ci0JCQkJIkB0eXBlIjogImc6SW50MzIiLAotCQkJCSJAdmFsdWUiOiA5Ci0JCQl9LAotCQkJImluViI6IHsKLQkJCQkiQHR5cGUiOiAiZzpJbnQzMiIsCi0JCQkJIkB2YWx1ZSI6IDMKLQkJCX0sCi0JCQkicHJvcGVydGllcyI6IHsKLQkJCQkid2VpZ2h0IjogewotCQkJCQkiQHR5cGUiOiAiZzpEb3VibGUiLAotCQkJCQkiQHZhbHVlIjogMC40Ci0JCQkJfQotCQkJfQotCQl9XSwKLQkJImtub3dzIjogW3sKLQkJCSJpZCI6IHsKLQkJCQkiQHR5cGUiOiAiZzpJbnQzMiIsCi0JCQkJIkB2YWx1ZSI6IDcKLQkJCX0sCi0JCQkiaW5WIjogewotCQkJCSJAdHlwZSI6ICJnOkludDMyIiwKLQkJCQkiQHZhbHVlIjogMgotCQkJfSwKLQkJCSJwcm9wZXJ0aWVzIjogewotCQkJCSJ3ZWlnaHQiOiB7Ci0JCQkJCSJAdHlwZSI6ICJnOkRvdWJsZSIsCi0JCQkJCSJAdmFsdWUiOiAwLjUKLQkJCQl9Ci0JCQl9Ci0JCX0sIHsKLQkJCSJpZCI6IHsKLQkJCQkiQHR5cGUiOiAiZzpJbnQzMiIsCi0JCQkJIkB2YWx1ZSI6IDgKLQkJCX0sCi0JCQkiaW5WIjogewotCQkJCSJAdHlwZSI6ICJnOkludDMyIiwKLQkJCQkiQHZhbHVlIjogNAotCQkJfSwKLQkJCSJwcm9wZXJ0aWVzIjogewotCQkJCSJ3ZWlnaHQiOiB7Ci0JCQkJCSJAdHlwZSI6ICJnOkRvdWJsZSIsCi0JCQkJCSJAdmFsdWUiOiAxLjAKLQkJCQl9Ci0JCQl9Ci0JCX1dCi0JfSwKLQkicHJvcGVydGllcyI6IHsKLQkJIm5hbWUiOiBbewotCQkJImlkIjogewotCQkJCSJAdHlwZSI6ICJnOkludDY0IiwKLQkJCQkiQHZhbHVlIjogMAotCQkJfSwKLQkJCSJ2YWx1ZSI6ICJtYXJrbyIKLQkJfV0sCi0JCSJhZ2UiOiBbewotCQkJImlkIjogewotCQkJCSJAdHlwZSI6ICJnOkludDY0IiwKLQkJCQkiQHZhbHVlIjogMQotCQkJfSwKLQkJCSJ2YWx1ZSI6IHsKLQkJCQkiQHR5cGUiOiAiZzpJbnQzMiIsCi0JCQkJIkB2YWx1ZSI6IDI5Ci0JCQl9Ci0JCX1dCi0JfQotfQotLS0tLQotCi1HcmFwaFNPTiBoYXMgc2V2ZXJhbCB2ZXJzaW9ucyBhbmQgZWFjaCBoYXMgZGlmZmVyZW5jZXMgdGhhdCBwcmV2ZW50IGNvbXBsZXRlIGNvbXBhdGliaWxpdHkgd2l0aCBvbmUgYW5vdGhlci4gV2hpbGUgdGhlCi1kZWZhdWx0IHZlcnNpb24gcHJvdmlkZWQgYnkgYElvQ29yZS5ncmFwaHNvbigpYCBpcyByZWNvbW1lbmRlZCwgaXQgaXMgcG9zc2libGUgdG8gbWFrZSBjaGFuZ2VzIHRvIHJldmVydCB0byBhbiBlYXJsaWVyCi12ZXJzaW9uLiBUaGUgZm9sbG93aW5nIHNob3dzIGFuIGV4YW1wbGUgb2YgaG93IHRvIHVzZSAxLjAgKHdpdGggdHlwZSBlbWJlZGRpbmcpOgotCi1bZ3JlbWxpbi1ncm9vdnldCi0tLS0tCi1ncmFwaCA9IFRpbmtlckZhY3RvcnkuY3JlYXRlTW9kZXJuKCkKLWcgPSBncmFwaC50cmF2ZXJzYWwoKQotZiA9IG5ldyBCeXRlQXJyYXlPdXRwdXRTdHJlYW0oKQotbWFwcGVyID0gZ3JhcGguaW8oR3JhcGhTT05Jby5idWlsZChHcmFwaFNPTlZlcnNpb24uVjFfMCkpLm1hcHBlcigpLnR5cGVJbmZvKFR5cGVJbmZvLlBBUlRJQUxfVFlQRVMpLmNyZWF0ZSgpCi1ncmFwaC5pbyhHcmFwaFNPTklvLmJ1aWxkKEdyYXBoU09OVmVyc2lvbi5WMV8wKSkud3JpdGVyKCkubWFwcGVyKG1hcHBlcikuY3JlYXRlKCkud3JpdGVWZXJ0ZXgoZiwgZy5WKDEpLm5leHQoKSwgQk9USCkKLWYuY2xvc2UoKQotLS0tLQotCi1OT1RFOiBBZGRpdGlvbmFsIGRvY3VtZW50YXRpb24gZm9yIEdyYXBoU09OIGNhbiBiZSBmb3VuZCBpbiB0aGUgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovZGV2L2lvLyNncmFwaHNvbltJTyBSZWZlcmVuY2VdLgotCi1JTVBPUlRBTlQ6IFdoZW4gdXNpbmcgdGhlIGV4dGVuZGVkIHR5cGUgc3lzdGVtIGluIEdyZW1saW4gU2VydmVyLCBzdXBwb3J0IGZvciB0aGVzZSB0eXBlcyB3aGVuIHVzZWQgaW4gdGhlIGNvbnRleHQgb2YKLUdyZW1saW4gTGFuZ3VhZ2UgVmFyaWFudHMgaXMgZGVwZW5kZW50IG9uIHRoZSBwcm9ncmFtbWluZyBsYW5ndWFnZSwgdGhlIGRyaXZlciBhbmQgaXRzIHNlcmlhbGl6ZXJzLiBUaGVzZQotaW1wbGVtZW50YXRpb25zIGFyZSBvbmx5IHJlcXVpcmVkIHRvIHN1cHBvcnQgdGhlIGNvcmUgdHlwZXMgYW5kIG5vdCB0aGUgZXh0ZW5kZWQgb25lcy4KLQotSGVyZSdzIHRoZSBzYW1lIHByZXZpb3VzIGV4YW1wbGUgb2YgR3JhcGhTT04gMS4wLCBidXQgd2l0aCBHcmFwaFNPTiAyLjA6Ci0KLVtncmVtbGluLWdyb292eV0KLS0tLS0KLWdyYXBoID0gVGlua2VyRmFjdG9yeS5jcmVhdGVNb2Rlcm4oKQotZyA9IGdyYXBoLnRyYXZlcnNhbCgpCi1mID0gbmV3IEJ5dGVBcnJheU91dHB1dFN0cmVhbSgpCi1tYXBwZXIgPSBncmFwaC5pbyhncmFwaHNvbigpKS5tYXBwZXIoKS52ZXJzaW9uKEdyYXBoU09OVmVyc2lvbi5WMl8wKS5jcmVhdGUoKQotZ3JhcGguaW8oZ3JhcGhzb24oKSkud3JpdGVyKCkubWFwcGVyKG1hcHBlcikuY3JlYXRlKCkud3JpdGVWZXJ0ZXgoZiwgZy5WKDEpLm5leHQoKSwgQk9USCkKLWYuY2xvc2UoKQotLS0tLQotCi1DcmVhdGluZyBhIEdyYXBoU09OIDIuMCBtYXBwZXIgaXMgZG9uZSBieSBjYWxsaW5nIGAudmVyc2lvbihHcmFwaFNPTlZlcnNpb24uVjJfMClgIG9uIHRoZSBtYXBwZXIgYnVpbGRlci4gSGVyZSdzIGlzIHRoZQotZXhhbXBsZSBvdXRwdXQgZnJvbSB0aGUgY29kZSBhYm92ZToKLQotW3NvdXJjZSxqc29uXQotLS0tLQotewotICAgICJAdHlwZSI6ICJnOlZlcnRleCIsCi0gICAgIkB2YWx1ZSI6IHsKLSAgICAgICAgImlkIjogewotICAgICAgICAgICAgIkB0eXBlIjogImc6SW50MzIiLAotICAgICAgICAgICAgIkB2YWx1ZSI6IDEKLSAgICAgICAgfSwKLSAgICAgICAgImxhYmVsIjogInBlcnNvbiIsCi0gICAgICAgICJwcm9wZXJ0aWVzIjogewotICAgICAgICAgICAgIm5hbWUiOiBbewotICAgICAgICAgICAgICAgICJAdHlwZSI6ICJnOlZlcnRleFByb3BlcnR5IiwKLSAgICAgICAgICAgICAgICAiQHZhbHVlIjogewotICAgICAgICAgICAgICAgICAgICAiaWQiOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAiQHR5cGUiOiAiZzpJbnQ2NCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAiQHZhbHVlIjogMAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAidmFsdWUiOiAibWFya28iLAotICAgICAgICAgICAgICAgICAgICAibGFiZWwiOiAibmFtZSIKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9XSwKLSAgICAgICAgICAgICJ1dWlkIjogW3sKLSAgICAgICAgICAgICAgICAiQHR5cGUiOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCi0gICAgICAgICAgICAgICAgIkB2YWx1ZSI6IHsKLSAgICAgICAgICAgICAgICAgICAgImlkIjogewotICAgICAgICAgICAgICAgICAgICAgICAgIkB0eXBlIjogImc6SW50NjQiLAotICAgICAgICAgICAgICAgICAgICAgICAgIkB2YWx1ZSI6IDEyCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICJ2YWx1ZSI6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICJAdHlwZSI6ICJnOlVVSUQiLAotICAgICAgICAgICAgICAgICAgICAgICAgIkB2YWx1ZSI6ICI4MjljN2RkYi0zODMxLTQ2ODctYTg3Mi1lMjUyMDEyMzBjZDMiCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICJsYWJlbCI6ICJ1dWlkIgotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgImFnZSI6IFt7Ci0gICAgICAgICAgICAgICAgIkB0eXBlIjogImc6VmVydGV4UHJvcGVydHkiLAotICAgICAgICAgICAgICAgICJAdmFsdWUiOiB7Ci0gICAgICAgICAgICAgICAgICAgICJpZCI6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICJAdHlwZSI6ICJnOkludDY0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiOiAxCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICJ2YWx1ZSI6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICJAdHlwZSI6ICJnOkludDMyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiOiAyOQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAibGFiZWwiOiAiYWdlIgotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH1dCi0gICAgICAgIH0KLSAgICB9Ci19Ci0tLS0tCi0KLVR5cGVzIGNhbiBiZSBkaXNhYmxlZCB3aGVuIGNyZWF0aW5nIGEgR3JhcGhTT04gMi4wIGBNYXBwZXJgIHdpdGg6Ci0KLVtzb3VyY2UsZ3Jvb3Z5XQotLS0tLQotZ3JhcGguaW8oZ3JhcGhzb24oKSkubWFwcGVyKCkuCi0gICAgICB2ZXJzaW9uKEdyYXBoU09OVmVyc2lvbi5WMl8wKS4KLSAgICAgIHR5cGVJbmZvKEdyYXBoU09OTWFwcGVyLlR5cGVJbmZvLk5PX1RZUEVTKS5jcmVhdGUoKQotLS0tLQotCi1CeSBkaXNhYmxpbmcgdHlwZXMsIHRoZSBKU09OIHBheWxvYWQgcHJvZHVjZWQgd2lsbCBsYWNrIHRoZSBleHRyYSBpbmZvcm1hdGlvbiB0aGF0IGlzIHdyaXR0ZW4gZm9yIHR5cGVzLiBQbGVhc2Ugbm90ZSwKLWRpc2FibGluZyB0eXBlcyBjYW4gYmUgdW5zYWZlIHdpdGggcmVnYXJkcyB0byB0aGUgd3JpdHRlbiBkYXRhIGluIHRoYXQgdHlwZXMgY2FuIGJlIGxvc3QuCi0KLVtbZ3J5by1yZWFkZXItd3JpdGVyXV0KLT09PSBHcnlvIFJlYWRlci9Xcml0ZXIKLQotaW1hZ2U6Z3JlbWxpbi1rcnlvLnBuZ1t3aWR0aD00MDAsZmxvYXQ9bGVmdF0gbGluazpodHRwczovL2dpdGh1Yi5jb20vRXNvdGVyaWNTb2Z0d2FyZS9rcnlvW0tyeW9dIGlzIGEgcG9wdWxhcgotc2VyaWFsaXphdGlvbiBwYWNrYWdlIGZvciB0aGUgSlZNLiBHcmVtbGluLUtyeW8gaXMgYSBiaW5hcnkgYEdyYXBoYCBzZXJpYWxpemF0aW9uIGZvcm1hdCBmb3IgdXNlIG9uIHRoZSBKVk0gYnkgSlZNCi1sYW5ndWFnZXMuIEl0IGlzIGRlc2lnbmVkIHRvIGJlIHNwYWNlIGVmZmljaWVudCwgbm9uLWxvc3N5IGFuZCBpcyBwcm9tb3RlZCBhcyB0aGUgc3RhbmRhcmQgZm9ybWF0IHRvIHVzZSB3aGVuIHdvcmtpbmcKLXdpdGggZ3JhcGggZGF0YSBpbnNpZGUgb2YgdGhlIFRpbmtlclBvcCBzdGFjay4gQSBsaXN0IG9mIGNvbW1vbiB1c2UgY2FzZXMgaXMgcHJlc2VudGVkIGJlbG93OgotCi0qIE1pZ3JhdGlvbiBmcm9tIG9uZSBHcmVtbGluIFN0cnVjdHVyZSBpbXBsZW1lbnRhdGlvbiB0byBhbm90aGVyIChlLmcuIGBUaW5rZXJHcmFwaGAgdG8gYE5lbzRqR3JhcGhgKQotKiBTZXJpYWxpemF0aW9uIG9mIGluZGl2aWR1YWwgZ3JhcGggZWxlbWVudHMgdG8gYmUgc2VudCBvdmVyIHRoZSBuZXR3b3JrIHRvIGFub3RoZXIgSlZNLgotKiBCYWNrdXBzIG9mIGluLW1lbW9yeSBncmFwaHMgb3Igc3ViZ3JhcGhzLgotCi1XQVJOSU5HOiBXaGVuIG1pZ3JhdGluZyBiZXR3ZWVuIEdyZW1saW4gU3RydWN0dXJlIGltcGxlbWVudGF0aW9ucywgS3J5byBtYXkgbm90IGxvc2UgZGF0YSwgYnV0IGl0IGlzIGltcG9ydGFudCB0bwotY29uc2lkZXIgdGhlIGZlYXR1cmVzIG9mIGVhY2ggYEdyYXBoYCBhbmQgd2hldGhlciBvciBub3QgdGhlIGRhdGEgdHlwZXMgc3VwcG9ydGVkIGluIG9uZSB3aWxsIGJlIHN1cHBvcnRlZCBpbiB0aGUKLW90aGVyLiAgRmFpbHVyZSB0byBkbyBzbywgbWF5IHJlc3VsdCBpbiBlcnJvcnMuCi0KLUtyeW8gc3VwcG9ydHMgYWxsIG9mIHRoZSBgR3JhcGhSZWFkZXJgIGFuZCBgR3JhcGhXcml0ZXJgIGludGVyZmFjZSBtZXRob2RzIGFuZCBjYW4gdGhlcmVmb3JlIHJlYWQgb3Igd3JpdGUgYW4gZW50aXJlCi1gR3JhcGhgLCB2ZXJ0aWNlcywgZWRnZXMsIGV0Yy4gIFRoZSBmb2xsb3dpbmcgY29kZSBzaG93cyBob3cgdG8gd3JpdGUgYSBgR3JhcGhgIGluc3RhbmNlIHRvIGZpbGUgY2FsbGVkCi1gdGlua2VycG9wLW1vZGVybi5rcnlvYCBhbmQgdGhlbiBob3cgdG8gcmVhZCB0aGF0IGZpbGUgYmFjayBpbnRvIGEgZGlmZmVyZW50IGluc3RhbmNlOgotCi1bc291cmNlLGphdmFdCi0tLS0tCi1HcmFwaCBncmFwaCA9IFRpbmtlckZhY3RvcnkuY3JlYXRlTW9kZXJuKCk7Ci1ncmFwaC5pbyhncnlvKCkpLndyaXRlR3JhcGgoInRpbmtlcnBvcC1tb2Rlcm4ua3J5byIpOwotCi1HcmFwaCBuZXdHcmFwaCA9IFRpbmtlckdyYXBoLm9wZW4oKTsKLW5ld0dyYXBoLmlvKGdyeW8oKSkucmVhZEdyYXBoKCJ0aW5rZXJwb3AtbW9kZXJuLmtyeW8iKTsKLS0tLS0KLQotTk9URTogVXNpbmcgYGdyeW8oKWAsIHdoaWNoIGlzIGEgc3RhdGljIGhlbHBlciBtZXRob2Qgb2YgYElvQ29yZWAsIHdpbGwgZGVmYXVsdCB0byB0aGUgbW9zdCBjdXJyZW50IHZlcnNpb24gb2YgR3J5byB3aGljaCBpcyAzLjAuCi0KLUlmIGEgY3VzdG9tIGNvbmZpZ3VyYXRpb24gaXMgcmVxdWlyZWQsIHRoZW4gaGF2ZSB0aGUgYEdyYXBoYCBnZW5lcmF0ZSBhIGBHcmFwaFJlYWRlcmAgb3IgYEdyYXBoV3JpdGVyYCAiYnVpbGRlciIgaW5zdGFuY2U6Ci0KLVtzb3VyY2UsamF2YV0KLS0tLS0KLUdyYXBoIGdyYXBoID0gVGlua2VyRmFjdG9yeS5jcmVhdGVNb2Rlcm4oKTsKLXRyeSAoT3V0cHV0U3RyZWFtIG9zID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0oInRpbmtlcnBvcC1tb2Rlcm4ua3J5byIpKSB7Ci0gICAgZ3JhcGguaW8oR3J5b0lvLmJ1aWxkKEdyeW9WZXJzaW9uLlYxXzApKS53cml0ZXIoKS5jcmVhdGUoKS53cml0ZUdyYXBoKG9zLCBncmFwaCk7Ci19Ci0KLUdyYXBoIG5ld0dyYXBoID0gVGlua2VyR3JhcGgub3BlbigpOwotdHJ5IChJbnB1dFN0cmVhbSBzdHJlYW0gPSBuZXcgRmlsZUlucHV0U3RyZWFtKCJ0aW5rZXJwb3AtbW9kZXJuLmtyeW8iKSkgewotICAgIG5ld0dyYXBoLmlvKEdyeW9Jby5idWlsZChHcnlvVmVyc2lvbi5WMV8wKSkucmVhZGVyKCkuY3JlYXRlKCkucmVhZEdyYXBoKHN0cmVhbSwgbmV3R3JhcGgpOwotfQotLS0tLQotCi1OT1RFOiBUaGUgcHJlZmVycmVkIGV4dGVuc2lvbiBmb3IgZmlsZXMgbmFtZXMgcHJvZHVjZWQgYnkgR3J5byBpcyBgLmtyeW9gLgotCi09PT0gVGlua2VyUG9wMiBEYXRhIE1pZ3JhdGlvbgotCi1pbWFnZTpkYXRhLW1pZ3JhdGlvbi5wbmdbd2lkdGg9MzAwLGZsb2F0PXJpZ2h0XSBGb3IgdGhvc2UgdXNpbmcgVGlua2VyUG9wMiwgbWlncmF0aW5nIHRvIFRpbmtlclBvcDMgd2lsbCBtZWFuIGEgbnVtYmVyCi1vZiBwcm9ncmFtbWluZyBjaGFuZ2VzLCBidXQgbWF5IGFsc28gcmVxdWlyZSBhIG1pZ3JhdGlvbiBvZiB0aGUgZGF0YSBkZXBlbmRpbmcgb24gdGhlIGdyYXBoIGltcGxlbWVudGF0aW9uLiAgRm9yCi1leGFtcGxlLCB0cnlpbmcgdG8gb3BlbiBgVGlua2VyR3JhcGhgIGRhdGEgZnJvbSBUaW5rZXJQb3AyIHdpdGggVGlua2VyUG9wMyBjb2RlIHdpbGwgbm90IHdvcmssIGhvd2V2ZXIgb3BlbmluZyBhCi1UaW5rZXJQb3AyIGBOZW80akdyYXBoYCB3aXRoIGEgVGlua2VyUG9wMyBgTmVvNGpHcmFwaGAgc2hvdWxkIHdvcmsgcHJvdmlkZWQgdGhlcmUgYXJlbid0IE5lbzRqIHZlcnNpb24gY29tcGF0aWJpbGl0eQotbWlzbWF0Y2hlcyBwcmV2ZW50aW5nIHRoZSByZWFkLgotCi1JZiBzdWNoIGEgc2l0dWF0aW9uIGFyaXNlcyB0aGF0IGEgcGFydGljdWxhciBUaW5rZXJQb3AyIGBHcmFwaGAgY2FuIG5vdCBiZSByZWFkIGJ5IFRpbmtlclBvcDMsIGEgImxlZ2FjeSIgZGF0YQotbWlncmF0aW9uIGFwcHJvYWNoIGV4aXN0cy4gIFRoZSBtaWdyYXRpb24gaW52b2x2ZXMgd3JpdGluZyB0aGUgVGlua2VyUG9wMiBgR3JhcGhgIHRvIEdyYXBoU09OLCB0aGVuIHJlYWRpbmcgaXQgdG8KLVRpbmtlclBvcDMgd2l0aCB0aGUgYExlZ2FjeUdyYXBoU09OUmVhZGVyYCAoYSBsaW1pdGVkIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgR3JhcGhSZWFkZXJgIGludGVyZmFjZSkuCi0KLVRoZSBmb2xsb3dpbmcgcmVwcmVzZW50cyBhbiBleGFtcGxlIG1pZ3JhdGlvbiBvZiB0aGUgImNsYXNzaWMiIHRveSBncmFwaC4gIEluIHRoaXMgZXhhbXBsZSwgdGhlICJjbGFzc2ljIiBncmFwaCBpcwotc2F2ZWQgdG8gR3JhcGhTT04gdXNpbmcgVGlua2VyUG9wMi4KLQotW3NvdXJjZSxncm9vdnldCi0tLS0tCi1ncmVtbGluPiBHcmVtbGluLnZlcnNpb24oKQotPT0+Mi41LnoKLWdyZW1saW4+IGdyYXBoID0gVGlua2VyR3JhcGhGYWN0b3J5LmNyZWF0ZVRpbmtlckdyYXBoKCkKLT09PnRpbmtlcmdyYXBoW3ZlcnRpY2VzOjYgZWRnZXM6Nl0KLWdyZW1saW4+IEdyYXBoU09OV3JpdGVyLm91dHB1dEdyYXBoKGdyYXBoLCcvdG1wL3RwMi5qc29uJyxHcmFwaFNPTk1vZGUuRVhURU5ERUQpCi09PT5udWxsCi0tLS0tCi0KLVRoZSBhYm92ZSBjb25zb2xlIHNlc3Npb24gdXNlcyB0aGUgYGdyZW1saW4tZ3Jvb3Z5YCBkaXN0cmlidXRpb24gZnJvbSBUaW5rZXJQb3AyLiAgSXQgaXMgaW1wb3J0YW50IHRvIGdlbmVyYXRlIHRoZQotYHRwMi5qc29uYCBmaWxlIHVzaW5nIHRoZSBgRVhURU5ERURgIG1vZGUgYXMgaXQgd2lsbCBpbmNsdWRlIGRhdGEgdHlwZXMgd2hlbiBuZWNlc3Nhcnkgd2hpY2ggd2lsbCBoZWxwIGxpbWl0Ci0ibG9zc2luZXNzIiBvbiB0aGUgVGlua2VyUG9wMyBzaWRlIHdoZW4gaW1wb3J0ZWQuICBPbmNlIGB0cDIuanNvbmAgaXMgY3JlYXRlZCwgaXQgY2FuIHRoZW4gYmUgaW1wb3J0ZWQgdG8gYSBUaW5rZXJQb3AzCi1gR3JhcGhgLgotCi1bc291cmNlLGdyb292eV0KLS0tLS0KLWdyZW1saW4+IEdyZW1saW4udmVyc2lvbigpCi09PT54LnkuegotZ3JlbWxpbj4gZ3JhcGggPSBUaW5rZXJHcmFwaC5vcGVuKCkKLT09PnRpbmtlcmdyYXBoW3ZlcnRpY2VzOjAgZWRnZXM6MF0KLWdyZW1saW4+IHIgPSBMZWdhY3lHcmFwaFNPTlJlYWRlci5idWlsZCgpLmNyZWF0ZSgpCi09PT5vcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncmFwaHNvbi5MZWdhY3lHcmFwaFNPTlJlYWRlckA2NDMzNzcwMgotZ3JlbWxpbj4gci5yZWFkR3JhcGgobmV3IEZpbGVJbnB1dFN0cmVhbSgnL3RtcC90cDIuanNvbicpLCBncmFwaCkKLT09Pm51bGwKLWdyZW1saW4+IGcgPSBncmFwaC50cmF2ZXJzYWwoKQotPT0+Z3JhcGh0cmF2ZXJzYWxzb3VyY2VbdGlua2VyZ3JhcGhbdmVydGljZXM6NiBlZGdlczo2XSwgc3RhbmRhcmRdCi1ncmVtbGluPiBnLkUoKQotPT0+ZVsxMV1bNC1jcmVhdGVkLT4zXQotPT0+ZVsxMl1bNi1jcmVhdGVkLT4zXQotPT0+ZVs3XVsxLWtub3dzLT4yXQotPT0+ZVs4XVsxLWtub3dzLT40XQotPT0+ZVs5XVsxLWNyZWF0ZWQtPjNdCi09PT5lWzEwXVs0LWNyZWF0ZWQtPjVdCi0tLS0tCitBdCB0aGlzIHRpbWUsIHRyYW5zYWN0aW9uYWwgcGF0dGVybnMgZm9yIFJlbW90ZSBHcmVtbGluIFByb3ZpZGVycyBhcmUgbGFyZ2VseSBpbiBsaW5lIHdpdGggR3JlbWxpbiBTZXJ2ZXIuIE1vc3QKK29mZmVyIGJ5dGVjb2RlIG9yIHNjcmlwdCBiYXNlZCBzZXNzaW9ubGVzcyByZXF1ZXN0cywgd2hpY2ggaGF2ZSBhdXRvbWF0aWMgdHJhbnNhY3Rpb24gbWFuYWdlbWVudCwgc3VjaCB0aGF0IGEKK3N1Y2Nlc3NmdWwgdHJhdmVyc2FsIHdpbGwgY29tbWl0IG9uIHN1Y2Nlc3MgYW5kIGEgZmFpbGluZyB0cmF2ZXJzYWwgd2lsbCByb2xsYmFjay4gQXMgbW9zdCBvZiB0aGVzZSBSR1BzIGRvIG5vdAorZXhwb3NlIGEgYEdyYXBoYCBpbnN0YW5jZXMsIGFjY2VzcyB0byBsb3dlciBsZXZlbCB0cmFuc2FjdGlvbmFsIGZ1bmN0aW9ucyBldmVuIGluIGEgc2Vzc2lvbmxlc3MgZmFzaGlvbiBhcmUgbm90Cit0eXBpY2FsbHkgYWxsb3dlZC4gVGhlIG5hdHVyZSBvZiB3aGF0IGEgInRyYW5zYWN0aW9uIiBtZWFucyB3aWxsIGJlIGRlcGVuZGVudCBvbiB0aGUgUkdQIGFzIGlzIHRoZSBjYXNlIHdpdGggYW55CitUaW5rZXJQb3AtZW5hYmxlZCBncmFwaCBzeXN0ZW0sIHNvIGl0IGlzIGltcG9ydGFudCB0byBjb25zdWx0IHRoYXQgc3lzdGVtcyBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGRldGFpbHMuCiAKID09IE5hbWVzcGFjZSBDb252ZW50aW9ucwogCmRpZmYgLS1naXQgYS9kb2NzL3NyYy9yZWZlcmVuY2UvdGhlLWdyYXBoY29tcHV0ZXIuYXNjaWlkb2MgYi9kb2NzL3NyYy9yZWZlcmVuY2UvdGhlLWdyYXBoY29tcHV0ZXIuYXNjaWlkb2MKaW5kZXggYjI4M2VlMi4uZjliNGRkNSAxMDA2NDQKLS0tIGEvZG9jcy9zcmMvcmVmZXJlbmNlL3RoZS1ncmFwaGNvbXB1dGVyLmFzY2lpZG9jCisrKyBiL2RvY3Mvc3JjL3JlZmVyZW5jZS90aGUtZ3JhcGhjb21wdXRlci5hc2NpaWRvYwpAQCAtMTcsNyArMTcsNyBAQAogW1tncmFwaGNvbXB1dGVyXV0KID0gVGhlIEdyYXBoQ29tcHV0ZXIKIAotaW1hZ2U6Z3JhcGhjb21wdXRlci1wdWZmZXJzLnBuZ1t3aWR0aD0zNTAsZmxvYXQ9cmlnaHRdIFRpbmtlclBvcDMgcHJvdmlkZXMgdHdvIHByaW1hcnkgbWVhbnMgb2YgaW50ZXJhY3Rpbmcgd2l0aCBhCitpbWFnZTpncmFwaGNvbXB1dGVyLXB1ZmZlcnMucG5nW3dpZHRoPTM1MCxmbG9hdD1yaWdodF0gVGlua2VyUG9wIHByb3ZpZGVzIHR3byBwcmltYXJ5IG1lYW5zIG9mIGludGVyYWN0aW5nIHdpdGggYQogZ3JhcGg6IGxpbms6aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9PbmxpbmVfdHJhbnNhY3Rpb25fcHJvY2Vzc2luZ1tvbmxpbmUgdHJhbnNhY3Rpb24gcHJvY2Vzc2luZ10gKE9MVFApIGFuZAogbGluazpodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL09ubGluZV9hbmFseXRpY2FsX3Byb2Nlc3Npbmdbb25saW5lIGFuYWx5dGljYWwgcHJvY2Vzc2luZ10gKE9MQVApLiBPTFRQLWJhc2VkCiBncmFwaCBzeXN0ZW1zIGFsbG93IHRoZSB1c2VyIHRvIHF1ZXJ5IHRoZSBncmFwaCBpbiByZWFsLXRpbWUuIEhvd2V2ZXIsIHR5cGljYWxseSwgcmVhbC10aW1lIHBlcmZvcm1hbmNlIGlzIG9ubHkKQEAgLTM5LDcgKzM5LDcgQEAKIGBWZXJ0ZXhQcm9ncmFtYC4gVGhlIHByb2dyYW1zIHNlbmQgbWVzc2FnZXMgdG8gb25lIGFub3RoZXIgd2l0aCB0aGUgdG9wb2xvZ2ljYWwgc3RydWN0dXJlIG9mIHRoZSBncmFwaCBhY3RpbmcgYXMgdGhlCiBjb21tdW5pY2F0aW9uIG5ldHdvcmsgKHRob3VnaCByYW5kb20gbWVzc2FnZSBwYXNzaW5nIHBvc3NpYmxlKS4gSW4gbWFueSByZXNwZWN0cywgdGhlIG1lc3NhZ2VzIHBhc3NlZCBhcmUgbGlrZQogdGhlIE9MVFAgdHJhdmVyc2VycyBtb3ZpbmcgZnJvbSB2ZXJ0ZXgtdG8tdmVydGV4LiBIb3dldmVyLCBhbGwgbWVzc2FnZXMgYXJlIG1vdmluZyBpbmRlcGVuZGVudCBvZiBvbmUgYW5vdGhlciwgaW4KLXBhcmFsbGVsLiBPbmNlIGEgdmVydGV4IHByb2dyYW0gaXMgZmluaXNoZWQgY29tcHV0aW5nLCBUaW5rZXJQb3AzJ3MgT0xBUCBlbmdpbmUgc3VwcG9ydHMgYW55IG51bWJlcgorcGFyYWxsZWwuIE9uY2UgYSB2ZXJ0ZXggcHJvZ3JhbSBpcyBmaW5pc2hlZCBjb21wdXRpbmcsIFRpbmtlclBvcCdzIE9MQVAgZW5naW5lIHN1cHBvcnRzIGFueSBudW1iZXIKIGxpbms6aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYXBSZWR1Y2VbYE1hcFJlZHVjZWBdIGpvYnMgb3ZlciB0aGUgcmVzdWx0YW50IGdyYXBoLgogCiBJTVBPUlRBTlQ6IGBHcmFwaENvbXB1dGVyYCB3YXMgZGVzaWduZWQgZnJvbSB0aGUgc3RhcnQgdG8gYmUgdXNlZCB3aXRoaW4gYSBtdWx0aS1KVk0sIGRpc3RyaWJ1dGVkIGVudmlyb25tZW50IC0tCkBAIC04MSwxMyArODEsMTMgQEAKIHJlc3VsdCA9IGdyYXBoLmNvbXB1dGUoKS5wcm9ncmFtKFBhZ2VSYW5rVmVydGV4UHJvZ3JhbS5idWlsZCgpLmNyZWF0ZSgpKS5zdWJtaXQoKS5nZXQoKQogcmVzdWx0Lm1lbW9yeSgpLnJ1bnRpbWUKIGcgPSByZXN1bHQuZ3JhcGgoKS50cmF2ZXJzYWwoKQotZy5WKCkudmFsdWVNYXAoKQorZy5WKCkuZWxlbWVudE1hcCgpCiAtLS0tCiAKIE5PVEU6IFRoaXMgbW9kZWwgb2YgInZlcnRleC1jZW50cmljIGdyYXBoIGNvbXB1dGluZyIgd2FzIG1hZGUgcG9wdWxhciBieSBHb29nbGUncwogbGluazpodHRwOi8vZ29vZ2xlcmVzZWFyY2guYmxvZ3Nwb3QuY29tLzIwMDkvMDYvbGFyZ2Utc2NhbGUtZ3JhcGgtY29tcHV0aW5nLWF0LWdvb2dsZS5odG1sW1ByZWdlbF0gZ3JhcGggZW5naW5lLgogSW4gdGhlIG9wZW4gc291cmNlIHdvcmxkLCB0aGlzIG1vZGVsIGlzIGZvdW5kIGluIE9MQVAgZ3JhcGggY29tcHV0aW5nIHN5c3RlbXMgc3VjaCBhcyBsaW5rOmh0dHBzOi8vZ2lyYXBoLmFwYWNoZS5vcmcvW0dpcmFwaF0sCi1saW5rOmh0dHBzOi8vaGFtYS5hcGFjaGUub3JnL1tIYW1hXS4gVGlua2VyUG9wMyBleHRlbmRzIHRoZQorbGluazpodHRwczovL2hhbWEuYXBhY2hlLm9yZy9bSGFtYV0uIFRpbmtlclBvcCBleHRlbmRzIHRoZQogcG9wdWxhcml6ZWQgbW9kZWwgd2l0aCBpbnRlZ3JhdGVkIHBvc3QtcHJvY2Vzc2luZyA8PG1hcHJlZHVjZSxNYXBSZWR1Y2U+PiBqb2JzIG92ZXIgdGhlIHZlcnRleCBzZXQuCiAKIFtbbWFwcmVkdWNlXV0KQEAgLTk3LDcgKzk3LDcgQEAKIGVsZW1lbnRzIGluIHRoZSBncmFwaC4gSW4gbWFueSBzaXR1YXRpb25zLCBpdCBpcyBuZWNlc3NhcnkgdG8gYWdncmVnYXRlIHRob3NlIHJlc3VsdGFudCBwcm9wZXJ0aWVzIGludG8gYSBzaW5nbGUKIHJlc3VsdCBzZXQgKGkuZS4gYSBzdGF0aXN0aWMpLiBGb3IgaW5zdGFuY2UsIGFzc3VtZSBhIFZlcnRleFByb2dyYW0gdGhhdCBjb21wdXRlcyBhIG5vbWluYWwgY2x1c3RlciBmb3IgZWFjaCB2ZXJ0ZXgKIChpLmUuIGxpbms6aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21tdW5pdHlfc3RydWN0dXJlW2EgZ3JhcGggY2x1c3RlcmluZyBhbGdvcml0aG1dKS4gQXQgdGhlIGVuZCBvZiB0aGUKLWNvbXB1dGF0aW9uLCBlYWNoIHZlcnRleCB3aWxsIGhhdmUgYSBwcm9wZXJ0eSBkZW5vdGluZyB0aGUgY2x1c3RlciBpdCB3YXMgYXNzaWduZWQgdG8uIFRpbmtlclBvcDMgcHJvdmlkZXMgdGhlCitjb21wdXRhdGlvbiwgZWFjaCB2ZXJ0ZXggd2lsbCBoYXZlIGEgcHJvcGVydHkgZGVub3RpbmcgdGhlIGNsdXN0ZXIgaXQgd2FzIGFzc2lnbmVkIHRvLiBUaW5rZXJQb3AgcHJvdmlkZXMgdGhlCiBhYmlsaXR5IHRvIGFuc3dlciBnbG9iYWwgcXVlc3Rpb25zIGFib3V0IHRoZSBjbHVzdGVycy4gRm9yIGluc3RhbmNlLCBpbiBvcmRlciB0byBhbnN3ZXIgdGhlIGZvbGxvd2luZyBxdWVzdGlvbnMsCiBgTWFwUmVkdWNlYCBqb2JzIGFyZSByZXF1aXJlZDoKIApAQCAtMTA2LDcgKzEwNiw3IEBACiAgKiBXaGF0IGlzIHRoZSBhdmVyYWdlIGFnZSBvZiBlYWNoIHZlcnRleCBpbiBlYWNoIGNsdXN0ZXI/CiAgKiBXaGF0IGlzIHRoZSBkZWdyZWUgZGlzdHJpYnV0aW9uIG9mIHRoZSB2ZXJ0aWNlcyBpbiBlYWNoIGNsdXN0ZXI/CiAKLUEgY29tcHJlc3NlZCByZXByZXNlbnRhdGlvbiBvZiB0aGUgYE1hcFJlZHVjZWAgQVBJIGluIFRpbmtlclBvcDMgaXMgcHJvdmlkZWQgYmVsb3cuIFRoZSBrZXkgaWRlYSBpcyB0aGF0IHRoZQorQSBjb21wcmVzc2VkIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBgTWFwUmVkdWNlYCBBUEkgaW4gVGlua2VyUG9wIGlzIHByb3ZpZGVkIGJlbG93LiBUaGUga2V5IGlkZWEgaXMgdGhhdCB0aGUKIGBtYXBgLXN0YWdlIHByb2Nlc3NlcyBhbGwgdmVydGljZXMgdG8gZW1pdCBrZXkvdmFsdWUgcGFpcnMuIFRob3NlIHZhbHVlcyBhcmUgYWdncmVnYXRlZCBvbiB0aGVpciByZXNwZWN0aXZlIGtleQogZm9yIHRoZSBgcmVkdWNlYC1zdGFnZSB0byBkbyBpdHMgcHJvY2Vzc2luZyB0byB1bHRpbWF0ZWx5IHlpZWxkIG1vcmUga2V5L3ZhbHVlIHBhaXJzLgogCkBAIC0xMzksNyArMTM5LDcgQEAKIHJlc3VsdC5tZW1vcnkoKS5nZXQoJ2NsdXN0ZXJQb3B1bGF0aW9uJykKIGcgPSByZXN1bHQuZ3JhcGgoKS50cmF2ZXJzYWwoKQogZy5WKCkudmFsdWVzKFBlZXJQcmVzc3VyZVZlcnRleFByb2dyYW0uQ0xVU1RFUikuZ3JvdXBDb3VudCgpLm5leHQoKQotZy5WKCkudmFsdWVNYXAoKQorZy5WKCkuZWxlbWVudE1hcCgpCiAtLS0tCiAKIElmIHRoZXJlIGFyZSBudW1lcm91cyBzdGF0aXN0aWNzIGRlc2lyZWQsIHRoZW4gaXRzIHBvc3NpYmxlIHRvIHJlZ2lzdGVyIGFzIG1hbnkgTWFwUmVkdWNlIGpvYnMgYXMgbmVlZGVkLiBGb3IKQEAgLTE1NSwxNCArMTU1LDE1IEBACiByZXN1bHQubWVtb3J5KCkuY2x1c3RlckNvdW50CiAtLS0tCiAKLUlNUE9SVEFOVDogVGhlIE1hcFJlZHVjZSBtb2RlbCBvZiBUaW5rZXJQb3AzIGRvZXMgbm90IHN1cHBvcnQgTWFwUmVkdWNlIGNoYWluaW5nLiBUaHVzLCB0aGUgb3JkZXIgaW4gd2hpY2ggdGhlCitJTVBPUlRBTlQ6IFRoZSBNYXBSZWR1Y2UgbW9kZWwgb2YgVGlua2VyUG9wIGRvZXMgbm90IHN1cHBvcnQgTWFwUmVkdWNlIGNoYWluaW5nLiBUaHVzLCB0aGUgb3JkZXIgaW4gd2hpY2ggdGhlCiBNYXBSZWR1Y2Ugam9icyBhcmUgZXhlY3V0ZWQgaXMgaXJyZWxldmFudC4gVGhpcyBpcyBtYWRlIGFwcGFyZW50IHdoZW4gcmVhbGl6aW5nIHRoYXQgdGhlIGBtYXAoKWAtc3RhZ2UgdGFrZXMgYQogYFZlcnRleGAgYXMgaXRzIGlucHV0IGFuZCB0aGUgYHJlZHVjZSgpYC1zdGFnZSB5aWVsZHMga2V5L3ZhbHVlIHBhaXJzLiBUaHVzLCB0aGUgcmVzdWx0cyBvZiByZWR1Y2UgY2FuIG5vdCBmZWQgYmFjawogaW50byBhIGBtYXAoKWAuCiAKID09IEEgQ29sbGVjdGlvbiBvZiBWZXJ0ZXhQcm9ncmFtcwogCi1UaW5rZXJQb3AzIHByb3ZpZGVzIGEgY29sbGVjdGlvbiBvZiBWZXJ0ZXhQcm9ncmFtcyB0aGF0IGltcGxlbWVudCBjb21tb24gYWxnb3JpdGhtcy4gVGhpcyBzZWN0aW9uIGRpc2N1c3NlcyB0aGUgdmFyaW91cyBpbXBsZW1lbnRhdGlvbnMuCitUaW5rZXJQb3AgcHJvdmlkZXMgYSBjb2xsZWN0aW9uIG9mIFZlcnRleFByb2dyYW1zIHRoYXQgaW1wbGVtZW50IGNvbW1vbiBhbGdvcml0aG1zLiBUaGlzIHNlY3Rpb24gZGlzY3Vzc2VzIHRoZSB2YXJpb3VzCitpbXBsZW1lbnRhdGlvbnMuCiAKIElNUE9SVEFOVDogVGhlIHZlcnRleCBwcm9ncmFtcyBwcmVzZW50ZWQgYXJlIHdoYXQgYXJlIHByb3ZpZGVkIGFzIG9mIFRpbmtlclBvcCB4Lnkuei4gT3ZlciB0aW1lLCB3aXRoIGZ1dHVyZSByZWxlYXNlcywKIG1vcmUgYWxnb3JpdGhtcyB3aWxsIGJlIGFkZGVkLgpAQCAtMzY3LDcgKzM2OCw3IEBACiByZXN1bHQgPSBncmFwaC5jb21wdXRlKCkucHJvZ3JhbShQYWdlUmFua1ZlcnRleFByb2dyYW0uYnVpbGQoKS5jcmVhdGUoKSkuc3VibWl0KCkuZ2V0KCkKIHJlc3VsdC5tZW1vcnkoKS5ydW50aW1lCiBnID0gcmVzdWx0LmdyYXBoKCkudHJhdmVyc2FsKCkKLWcuVigpLnZhbHVlTWFwKCkKK2cuVigpLmVsZW1lbnRNYXAoKQogLS0tLQogCiBOb3RlIHRoYXQgYEdyYXBoVHJhdmVyc2FsYCBwcm92aWRlcyBhIDw8cGFnZXJhbmstc3RlcCxgcGFnZVJhbmsoKWA+Pi1zdGVwLgpAQCAtMzc1LDggKzM3Niw4IEBACiBbZ3JlbWxpbi1ncm9vdnksbW9kZXJuXQogLS0tLQogZyA9IGdyYXBoLnRyYXZlcnNhbCgpLndpdGhDb21wdXRlcigpCi1nLlYoKS5wYWdlUmFuaygpLnZhbHVlTWFwKCkKLWcuVigpLnBhZ2VSYW5rKCkuYnkoJ3BhZ2VSYW5rJykudGltZXMoNSkub3JkZXIoKS5ieSgncGFnZVJhbmsnKS52YWx1ZU1hcCgpCitnLlYoKS5wYWdlUmFuaygpLmVsZW1lbnRNYXAoKQorZy5WKCkucGFnZVJhbmsoKS5ieSgncGFnZVJhbmsnKS50aW1lcyg1KS5vcmRlcigpLmJ5KCdwYWdlUmFuaycpLmVsZW1lbnRNYXAoKQogLS0tLQogCiBbW3BlZXJwcmVzc3VyZXZlcnRleHByb2dyYW1dXQpAQCAtMzk4LDExICszOTksNjcgQEAKIFtncmVtbGluLWdyb292eSxtb2Rlcm5dCiAtLS0tCiBnID0gZ3JhcGgudHJhdmVyc2FsKCkud2l0aENvbXB1dGVyKCkKLWcuVigpLnBlZXJQcmVzc3VyZSgpLmJ5KCdjbHVzdGVyJykudmFsdWVNYXAoKQotZy5WKCkucGVlclByZXNzdXJlKCkuYnkob3V0RSgna25vd3MnKSkuYnkoJ2NsdXN0ZXInKS52YWx1ZU1hcCgpCitnLlYoKS5wZWVyUHJlc3N1cmUoKS5ieSgnY2x1c3RlcicpLmVsZW1lbnRNYXAoKQorZy5WKCkucGVlclByZXNzdXJlKCkuYnkob3V0RSgna25vd3MnKSkuYnkoJ2NsdXN0ZXInKS5lbGVtZW50TWFwKCkKIC0tLS0KIAotW1tidWxrZHVtcGVydmVydGV4cHJvZ3JhbV1dCitbW2Nvbm5lY3RlZGNvbXBvbmVudHZlcnRleHByb2dyYW1dXQorPT09IENvbm5lY3RlZENvbXBvbmVudFZlcnRleFByb2dyYW0KKworVGhlIGBDb25uZWN0ZWRDb21wb25lbnRWZXJ0ZXhQcm9ncmFtYCBpZGVudGlmaWVzIGxpbms6aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29ubmVjdGVkX2NvbXBvbmVudF8oZ3JhcGhfdGhlb3J5KVtDb25uZWN0ZWQgQ29tcG9uZW50XQoraW5zdGFuY2VzIGluIGEgZ3JhcGguIFNlZSA8PGNvbm5lY3RlZGNvbXBvbmVudC1zdGVwLGBjb25uZWN0ZWRDb21wb25lbnQoKWA+Pi1zdGVwIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCitbW3Nob3J0ZXN0cGF0aHZlcnRleHByb2dyYW1dXQorPT09IFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0KKworVGhlIGBTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9yYW1gIHByb3ZpZGVzIGFuIGVhc3kgd2F5IHRvIGZpbmQgc2hvcnRlc3Qgbm9uLWN5Y2xpYyBwYXRocyBpbiB0aGUgZ3JhcGguIEl0IHByb3ZpZGVzIHNldmVyYWwgb3B0aW9ucyB0byBjb25maWd1cmUKK3RoZSBvdXRwdXQgZm9ybWF0LCB0aGUgc3RhcnQtIGFuZCBlbmQtdmVydGljZXMsIHRoZSBkaXJlY3Rpb24sIGEgY3VzdG9tIGRpc3RhbmNlIGZ1bmN0aW9uLCBhcyB3ZWxsIGFzIGEgZGlzdGFuY2UgbGltaXRhdGlvbi4gQnkgZGVmYXVsdCBpdCBqdXN0CitmaW5kcyBhbGwgdW5kaXJlY3RlZCwgc2hvcnRlc3QgcGF0aHMgaW4gdGhlIGdyYXBoLgorCitbZ3JlbWxpbi1ncm9vdnksbW9kZXJuXQorLS0tLQorc3B2cCA9IFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uYnVpbGQoKS5jcmVhdGUoKSA8MT4KK3Jlc3VsdCA9IGdyYXBoLmNvbXB1dGUoKS5wcm9ncmFtKHNwdnApLnN1Ym1pdCgpLmdldCgpIDwyPgorcmVzdWx0Lm1lbW9yeSgpLmdldChTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtLlNIT1JURVNUX1BBVEhTKSA8Mz4KKy0tLS0KKworPDE+IENyZWF0ZSBhIGBTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtYCB3aXRoIGl0cyBkZWZhdWx0IGNvbmZpZ3VyYXRpb24uCis8Mj4gRXhlY3V0ZSB0aGUgYFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW1gLgorPDM+IEdldCBhbGwgc2hvcnRlc3QgcGF0aHMgZnJvbSB0aGUgcmVzdWx0cyBtZW1vcnkuCisKK1tncmVtbGluLWdyb292eSxtb2Rlcm5dCistLS0tCitzcHZwID0gU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5idWlsZCgpLmluY2x1ZGVFZGdlcyh0cnVlKS5jcmVhdGUoKSA8MT4KK3Jlc3VsdCA9IGdyYXBoLmNvbXB1dGUoKS5wcm9ncmFtKHNwdnApLnN1Ym1pdCgpLmdldCgpIDwyPgorcmVzdWx0Lm1lbW9yeSgpLmdldChTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtLlNIT1JURVNUX1BBVEhTKSA8Mz4KKy0tLS0KKworPDE+IENyZWF0ZSBhIGBTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtYCBhcyBiZWZvcmUsIGJ1dCBjb25maWd1cmUgaXQgdG8gaW5jbHVkZSBlZGdlcyBpbiB0aGUgcmVzdWx0LgorPDI+IEV4ZWN1dGUgdGhlIGBTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtYC4KKzwzPiBHZXQgYWxsIHNob3J0ZXN0IHBhdGhzIGZyb20gdGhlIHJlc3VsdHMgbWVtb3J5LgorCitUaGUgYFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uQnVpbGRlcmAgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIG1ldGhvZHM6CisKK1t3aWR0aD0iMTAwJSIsY29scz0iMywxNSw1IixvcHRpb25zPSJoZWFkZXIiXQorfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorfCBNZXRob2QgfCBEZXNjcmlwdGlvbiB8IERlZmF1bHQKK3wgYHNvdXJjZShUcmF2ZXJzYWwpYCB8IFNldHMgYSBmaWx0ZXIgdHJhdmVyc2FsIGZvciB0aGUgc3RhcnQgdmVydGljZXMgKGUuZy4gYF9fLmhhcygnbmFtZScsJ21hcmtvJylgKS4gfCBhbGwgdmVydGljZXMgKGBfXy5pZGVudGl0eSgpYCkKK3wgYHRhcmdldChUcmF2ZXJzYWwpYCB8IFNldHMgYSBmaWx0ZXIgdHJhdmVyc2FsIGZvciB0aGUgZW5kIHZlcnRpY2VzLiB8IGFsbCB2ZXJ0aWNlcworfCBgZWRnZURpcmVjdGlvbihEaXJlY3Rpb24pYCB8IFNldHMgdGhlIGRpcmVjdGlvbiB0byB0cmF2ZXJzZSBkdXJpbmcgdGhlIHNob3J0ZXN0IHBhdGggZGlzY292ZXJ5LiB8IGBEaXJlY3Rpb24uQk9USGAKK3wgYGVkZ2VUcmF2ZXJzYWwoVHJhdmVyc2FsKWAgfCBTZXRzIGEgdHJhdmVyc2FsIHRoYXQgZW1pdHMgdGhlIGVkZ2VzIHRvIHRyYXZlcnNlIGZyb20gdGhlIGN1cnJlbnQgdmVydGV4LiB8IGBfXy5ib3RoRSgpYAorfCBgZGlzdGFuY2VQcm9wZXJ0eShTdHJpbmcpYCB8IFNldHMgdGhlIGVkZ2UgcHJvcGVydHkgdG8gdXNlIGZvciB0aGUgZGlzdGFuY2UgY2FsY3VsYXRpb25zLiB8IG5vbmUKK3wgYGRpc3RhbmNlVHJhdmVyc2FsKFRyYXZlcnNhbClgIHwgU2V0cyB0aGUgdHJhdmVyc2FsIHRoYXQgY2FsY3VsYXRlcyB0aGUgZGlzdGFuY2UgZm9yIHRoZSBjdXJyZW50IGVkZ2UuIHwgYF9fLmNvbnN0YW50KDEpYAorfCBgbWF4RGlzdGFuY2UoVHJhdmVyc2FsKWAgfCBMaW1pdHMgdGhlIHNob3J0ZXN0IHBhdGggZGlzdGFuY2UuIHwgbm9uZQorfCBgaW5jbHVkZUVkZ2VzKEJvb2xlYW4pYCB8IFdoZXRoZXIgdG8gaW5jbHVkZSBlZGdlcyBpbiBzaG9ydGVzdCBwYXRocyBvciBub3QuIHwgYGZhbHNlYAorfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitJTVBPUlRBTlQ6IElmIGEgbWF4aW11bSBkaXN0YW5jZSBpcyBwcm92aWRlZCwgdGhlIGRpc2NvdmVyeSBwcm9jZXNzIHdpbGwgb25seSBzdG9wIHRvIGZvbGxvdyBhIHBhdGggYXQgdGhpcyBkaXN0YW5jZSBpZiB0aGVyZSB3YXMgbm8KK2N1c3RvbSBkaXN0YW5jZSBwcm9wZXJ0eSBvciB0cmF2ZXJzYWwgcHJvdmlkZWQuIEN1c3RvbSBkaXN0YW5jZXMgY2FuIGJlIG5lZ2F0aXZlLCBoZW5jZSBleGNlZWRpbmcgdGhlIG1heGltdW0gZGlzdGFuY2UgZG9lc24ndCBtZWFuIHRoYXQgdGhlcmUKK2Nhbid0IGJlIGFueSBtb3JlIHZhbGlkIHBhdGhzLiBIb3dldmVyLCBwYXRocyB3aWxsIGJlIGZpbHRlcmVkIGF0IHRoZSBlbmQsIHdoZW4gbm8gbW9yZSBub24tY3ljbGljIHBhdGhzIGNhbiBiZSBmb3VuZC4gVGhlIGJvdHRvbSBsaW5lIGlzIHRoYXQKK2N1c3RvbSBkaXN0YW5jZSBwcm9wZXJ0aWVzIG9yIHRyYXZlcnNhbHMgY2FuIGxlYWQgdG8gbXVjaCBsb25nZXIgcnVudGltZXMgYW5kIGEgbXVjaCBoaWdoZXIgbWVtb3J5IGNvbnN1bXB0aW9uLgorCitOb3RlIHRoYXQgYEdyYXBoVHJhdmVyc2FsYCBwcm92aWRlcyBhIDw8c2hvcnRlc3RwYXRoLXN0ZXAsYHNob3J0ZXN0UGF0aCgpYD4+LXN0ZXAuCisKIFtbY2xvbmV2ZXJ0ZXhwcm9ncmFtXV0KID09PSBDbG9uZVZlcnRleFByb2dyYW0KIApkaWZmIC0tZ2l0IGEvZG9jcy9zcmMvcmVmZXJlbmNlL3RoZS10cmF2ZXJzYWwuYXNjaWlkb2MgYi9kb2NzL3NyYy9yZWZlcmVuY2UvdGhlLXRyYXZlcnNhbC5hc2NpaWRvYwppbmRleCAyY2Y3NjI1Li4wNmFmYWE1IDEwMDY0NAotLS0gYS9kb2NzL3NyYy9yZWZlcmVuY2UvdGhlLXRyYXZlcnNhbC5hc2NpaWRvYworKysgYi9kb2NzL3NyYy9yZWZlcmVuY2UvdGhlLXRyYXZlcnNhbC5hc2NpaWRvYwpAQCAtNDIsOSArNDIsOSBAQAogaW1hZ2U6OnN0ZXAtdHlwZXMucG5nW3dpZHRoPTY1MF0KIAogQSBgR3JhcGhUcmF2ZXJzYWw8UyxFPmAgaXMgc3Bhd25lZCBmcm9tIGEgYEdyYXBoVHJhdmVyc2FsU291cmNlYC4gSXQgY2FuIGFsc28gYmUgc3Bhd25lZCBhbm9ueW1vdXNseSAoaS5lLiBlbXB0eSkKLXZpYSBgK19fK2AuIEEgZ3JhcGggdHJhdmVyc2FsIGlzIGNvbXBvc2VkIG9mIGFuIG9yZGVyZWQgbGlzdCBvZiBzdGVwcy4gQWxsIHRoZSBzdGVwcyBwcm92aWRlZCBieSBgR3JhcGhUcmF2ZXJzYWxgCit2aWEgYF9fYC4gQSBncmFwaCB0cmF2ZXJzYWwgaXMgY29tcG9zZWQgb2YgYW4gb3JkZXJlZCBsaXN0IG9mIHN0ZXBzLiBBbGwgdGhlIHN0ZXBzIHByb3ZpZGVkIGJ5IGBHcmFwaFRyYXZlcnNhbGAKIGluaGVyaXQgZnJvbSB0aGUgbW9yZSBnZW5lcmFsIGZvcm1zIGRpYWdyYW1tZWQgYWJvdmUuIEEgbGlzdCBvZiBhbGwgdGhlIHN0ZXBzIChhbmQgdGhlaXIgZGVzY3JpcHRpb25zKSBhcmUgcHJvdmlkZWQKLWluIHRoZSBUaW5rZXJQb3AzIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy94Lnkuei9jb3JlL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL2dyYXBoL0dyYXBoVHJhdmVyc2FsLmh0bWxbR3JhcGhUcmF2ZXJzYWwgSmF2YURvY10uCitpbiB0aGUgVGlua2VyUG9wIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy94Lnkuei9jb3JlL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL2dyYXBoL0dyYXBoVHJhdmVyc2FsLmh0bWxbR3JhcGhUcmF2ZXJzYWwgSmF2YURvY10uCiBUaGUgZm9sbG93aW5nIHN1YnNlY3Rpb25zIHdpbGwgZGVtb25zdHJhdGUgdGhlIEdyYXBoVHJhdmVyc2FsIHN0ZXBzIHVzaW5nIHRoZSA8PGdyZW1saW4tY29uc29sZSxHcmVtbGluIENvbnNvbGU+Pi4KIAogSU1QT1JUQU5UOiBUaGUgYmFzaWNzIGZvciBzdGFydGluZyBhIHRyYXZlcnNhbCBhcmUgZGVzY3JpYmVkIGluIDw8dGhlLWdyYXBoLXByb2Nlc3MsVGhlIEdyYXBoIFByb2Nlc3M+PiBzZWN0aW9uIGFzCkBAIC0xNDksNiArMTQ5LDcgQEAKIAogQ29uZmlndXJhdGlvbiBtZXRob2RzIGNhbiBiZSBpZGVudGlmaWVkIGJ5IHRoZWlyIG5hbWVzIHdpdGggbWFrZSB1c2Ugb2YgIndpdGgiIGFzIGEgcHJlZml4OgogCisqIGB3aXRoKClgIC0gQWRkcyBhcmJpdHJhcnkgY29uZmlndXJhdGlvbiBvcHRpb25zIHdoaWNoIGNhbiBiZSB1c2VkIGJ5IGdyYXBoIHByb3ZpZGVycyBhcyBjb25maWd1cmF0aW9uIG9wdGlvbnMuCiAqIGB3aXRoQnVsaygpYCAtIFRoaXMgdmFsdWUgaXMgYHRydWVgIGJ5IGRlZmF1bHQgYWxsb3dpbmcgZm9yIG5vcm1hbCA8PGJhcnJpZXItc3RlcCxidWxraW5nPj4gb3BlcmF0aW9ucywgYnV0IHdoZW4gc2V0CiB0byBgZmFsc2VgLCBpbnRyb2R1Y2VzIGEgc3VidGxlIGNoYW5nZSBpbiB0aGF0IGJlaGF2aW9yIGFzIHNob3duIGluIGV4YW1wbGVzIGluIDw8c2Fjay1zdGVwLHNhY2soKS1zdGVwPj4uCiAqIGB3aXRoQ29tcHV0ZXIoKWAgLSBBZGRzIGEgYENvbXB1dGVyYCB0aGF0IHdpbGwgYmUgdXNlZCB0byBwcm9jZXNzIHRoZSB0cmF2ZXJzYWwgKDw8c3BhcmtncmFwaGNvbXB1dGVyLGV4YW1wbGU+PikuCkBAIC0xOTEsMTggKzE5MiwyMiBAQAogZy5hZGRWKCdwZXJzb24nKS5pdGVyYXRlKCkgPDk+CiAtLS0tCiAKLTwxPiBgaGFzTmV4dCgpYCBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlcmUgYXJlIGF2YWlsYWJsZSByZXN1bHRzLgorPDE+IGBoYXNOZXh0KClgIGRldGVybWluZXMgd2hldGhlciB0aGVyZSBhcmUgYXZhaWxhYmxlIHJlc3VsdHMgKG5vdCBzdXBwb3J0ZWQgaW4gYGdyZW1saW4tamF2YXNjcmlwdGApLgogPDI+IGBuZXh0KClgIHdpbGwgcmV0dXJuIHRoZSBuZXh0IHJlc3VsdC4KLTwzPiBgbmV4dChuKWAgd2lsbCByZXR1cm4gdGhlIG5leHQgYG5gIHJlc3VsdHMgaW4gYSBsaXN0LgotPDQ+IGB0cnlOZXh0KClgIHdpbGwgcmV0dXJuIGFuIGBPcHRpb25hbGAgYW5kIHRodXMsIGlzIGEgY29tcG9zaXRlIG9mIGBoYXNOZXh0KClgL2BuZXh0KClgLgorPDM+IGBuZXh0KG4pYCB3aWxsIHJldHVybiB0aGUgbmV4dCBgbmAgcmVzdWx0cyBpbiBhIGxpc3QgKG5vdCBzdXBwb3J0ZWQgaW4gYGdyZW1saW4tamF2YXNjcmlwdGAgb3IgR3JlbWxpbi5ORVQpLgorPDQ+IGB0cnlOZXh0KClgIHdpbGwgcmV0dXJuIGFuIGBPcHRpb25hbGAgYW5kIHRodXMsIGlzIGEgY29tcG9zaXRlIG9mIGBoYXNOZXh0KClgL2BuZXh0KClgIChvbmx5IHN1cHBvcnRlZCBmb3IgSlZNIGxhbmd1YWdlcykuCiA8NT4gYHRvTGlzdCgpYCB3aWxsIHJldHVybiBhbGwgcmVzdWx0cyBpbiBhIGxpc3QuCi08Nj4gYHRvU2V0KClgIHdpbGwgcmV0dXJuIGFsbCByZXN1bHRzIGluIGEgc2V0ICh0aHVzLCBkdXBsaWNhdGVzIHJlbW92ZWQpLgotPDc+IGB0b0J1bGtTZXQoKWAgd2lsbCByZXR1cm4gYWxsIHJlc3VsdHMgaW4gYSB3ZWlnaHRlZCBzZXQgKHRodXMsIGR1cGxpY2F0ZXMgcHJlc2VydmVkIHZpYSB3ZWlnaHRpbmcpLgotPDg+IGBmaWxsKGNvbGxlY3Rpb24pYCB3aWxsIHB1dCBhbGwgcmVzdWx0cyBpbiB0aGUgcHJvdmlkZWQgY29sbGVjdGlvbiBhbmQgcmV0dXJuIHRoZSBjb2xsZWN0aW9uIHdoZW4gY29tcGxldGUuCis8Nj4gYHRvU2V0KClgIHdpbGwgcmV0dXJuIGFsbCByZXN1bHRzIGluIGEgc2V0IGFuZCB0aHVzLCBkdXBsaWNhdGVzIHJlbW92ZWQgKG5vdCBzdXBwb3J0ZWQgaW4gYGdyZW1saW4tamF2YXNjcmlwdGApLgorPDc+IGB0b0J1bGtTZXQoKWAgd2lsbCByZXR1cm4gYWxsIHJlc3VsdHMgaW4gYSB3ZWlnaHRlZCBzZXQgYW5kIHRodXMsIGR1cGxpY2F0ZXMgcHJlc2VydmVkIHZpYSB3ZWlnaHRpbmcgKG9ubHkgc3VwcG9ydGVkIGZvciBKVk0gbGFuZ3VhZ2VzKS4KKzw4PiBgZmlsbChjb2xsZWN0aW9uKWAgd2lsbCBwdXQgYWxsIHJlc3VsdHMgaW4gdGhlIHByb3ZpZGVkIGNvbGxlY3Rpb24gYW5kIHJldHVybiB0aGUgY29sbGVjdGlvbiB3aGVuIGNvbXBsZXRlIChvbmx5IHN1cHBvcnRlZCBmb3IgSlZNIGxhbmd1YWdlcykuCiA8OT4gYGl0ZXJhdGUoKWAgZG9lcyBub3QgZXhhY3RseSBmaXQgdGhlIGRlZmluaXRpb24gb2YgYSB0ZXJtaW5hbCBzdGVwIGluIHRoYXQgaXQgZG9lc24ndCByZXR1cm4gYSByZXN1bHQsIGJ1dCBzdGlsbAogcmV0dXJucyBhIHRyYXZlcnNhbCAtIGl0IGRvZXMgaG93ZXZlciBiZWhhdmUgYXMgYSB0ZXJtaW5hbCBzdGVwIGluIHRoYXQgaXQgaXRlcmF0ZXMgdGhlIHRyYXZlcnNhbCBhbmQgZ2VuZXJhdGVzIHNpZGUKIGVmZmVjdHMgd2l0aG91dCByZXR1cm5pbmcgdGhlIGFjdHVhbCByZXN1bHQuCiAKK1RoZXJlIGlzIGFsc28gdGhlIGBwcm9taXNlKClgIHRlcm1pbmF0b3Igc3RlcCwgd2hpY2ggY2FuIG9ubHkgYmUgdXNlZCB3aXRoIHJlbW90ZSB0cmF2ZXJzYWxzIHRvCis8PGNvbm5lY3RpbmctZ3JlbWxpbi1zZXJ2ZXIsR3JlbWxpbiBTZXJ2ZXI+PiBvciA8PGNvbm5lY3RpbmctcmdwLFJHUHM+Pi4gSXQgc3RhcnRzIGEgcHJvbWlzZSB0byBleGVjdXRlIGEgZnVuY3Rpb24KK29uIHRoZSBjdXJyZW50IGBUcmF2ZXJzYWxgIHRoYXQgd2lsbCBiZSBjb21wbGV0ZWQgaW4gdGhlIGZ1dHVyZS4KKwogRmluYWxseSwgPDxleHBsYWluLXN0ZXAsYGV4cGxhaW4oKWA+Pi1zdGVwIGlzIGFsc28gYSB0ZXJtaW5hbCBzdGVwIGFuZCBpcyBkZXNjcmliZWQgaW4gaXRzIG93biBzZWN0aW9uLgogCiBbW2FkZGVkZ2Utc3RlcF1dCkBAIC0zMDUsMjggKzMxMCwzMiBAQAogbGluazorK2h0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MveC55LnovY29yZS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9WZXJ0ZXhQcm9wZXJ0eS5DYXJkaW5hbGl0eS5odG1sKytbYENhcmRpbmFsaXR5YF0KIAogW1thZ2dyZWdhdGUtc3RlcF1dCitbW3N0b3JlLXN0ZXBdXQogPT09IEFnZ3JlZ2F0ZSBTdGVwCiAKIGltYWdlOjphZ2dyZWdhdGUtc3RlcC5wbmdbd2lkdGg9ODAwXQogCiBUaGUgYGFnZ3JlZ2F0ZSgpYC1zdGVwICgqc2lkZUVmZmVjdCopIGlzIHVzZWQgdG8gYWdncmVnYXRlIGFsbCB0aGUgb2JqZWN0cyBhdCBhIHBhcnRpY3VsYXIgcG9pbnQgb2YgdHJhdmVyc2FsIGludG8gYQotYENvbGxlY3Rpb25gLiBUaGUgc3RlcCB1c2VzIGxpbms6aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FYWdlcl9ldmFsdWF0aW9uW2VhZ2VyIGV2YWx1YXRpb25dIGluIHRoYXQgbm8gb2JqZWN0cwotY29udGludWUgb24gdW50aWwgYWxsIHByZXZpb3VzIG9iamVjdHMgaGF2ZSBiZWVuIGZ1bGx5IGFnZ3JlZ2F0ZWQgKGFzIG9wcG9zZWQgdG8gPDxzdG9yZS1zdGVwLGBzdG9yZSgpYD4+IHdoaWNoCi1saW5rOmh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGF6eV9ldmFsdWF0aW9uW2xhemlseV0gZmlsbHMgYSBjb2xsZWN0aW9uKS4gVGhlIGVhZ2VyIGV2YWx1YXRpb24gbmF0dXJlIGlzIGNydWNpYWwKLWluIHNpdHVhdGlvbnMgd2hlcmUgZXZlcnl0aGluZyBhdCBhIHBhcnRpY3VsYXIgcG9pbnQgaXMgcmVxdWlyZWQgZm9yIGZ1dHVyZSBjb21wdXRhdGlvbi4gQW4gZXhhbXBsZSBpcyBwcm92aWRlZCBiZWxvdy4KK2BDb2xsZWN0aW9uYC4gVGhlIHN0ZXAgaXMgdXNlcyBgU2NvcGVgIHRvIGhlbHAgZGV0ZXJtaW5lIHRoZSBhZ2dyZWdhdGluZyBiZWhhdmlvci4gRm9yIGBnbG9iYWxgIHNjb3BlIHRoaXMgbWVhbnMgdGhhdAordGhlIHN0ZXAgd2lsbCB1c2UgbGluazpodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VhZ2VyX2V2YWx1YXRpb25bZWFnZXIgZXZhbHVhdGlvbl0gaW4gdGhhdCBubyBvYmplY3RzIGNvbnRpbnVlIG9uCit1bnRpbCBhbGwgcHJldmlvdXMgb2JqZWN0cyBoYXZlIGJlZW4gZnVsbHkgYWdncmVnYXRlZC4gVGhlIGVhZ2VyIGV2YWx1YXRpb24gbW9kZWwgaXMgY3J1Y2lhbCBpbiBzaXR1YXRpb25zCit3aGVyZSBldmVyeXRoaW5nIGF0IGEgcGFydGljdWxhciBwb2ludCBpcyByZXF1aXJlZCBmb3IgZnV0dXJlIGNvbXB1dGF0aW9uLiBCeSBkZWZhdWx0LCB3aGVuIHRoZSBvdmVybG9hZCBvZgorYGFnZ3JlZ2F0ZSgpYCBpcyBjYWxsZWQgd2l0aG91dCBhIGBTY29wZWAsIHRoZSBkZWZhdWx0IGlzIGBnbG9iYWxgLiBBbiBleGFtcGxlIGlzIHByb3ZpZGVkIGJlbG93LgogCiBbZ3JlbWxpbi1ncm9vdnksbW9kZXJuXQogLS0tLQogZy5WKDEpLm91dCgnY3JlYXRlZCcpIDwxPgogZy5WKDEpLm91dCgnY3JlYXRlZCcpLmFnZ3JlZ2F0ZSgneCcpIDwyPgotZy5WKDEpLm91dCgnY3JlYXRlZCcpLmFnZ3JlZ2F0ZSgneCcpLmluKCdjcmVhdGVkJykgPDM+Ci1nLlYoMSkub3V0KCdjcmVhdGVkJykuYWdncmVnYXRlKCd4JykuaW4oJ2NyZWF0ZWQnKS5vdXQoJ2NyZWF0ZWQnKSA8ND4KK2cuVigxKS5vdXQoJ2NyZWF0ZWQnKS5hZ2dyZWdhdGUoZ2xvYmFsLCAneCcpIDwzPgorZy5WKDEpLm91dCgnY3JlYXRlZCcpLmFnZ3JlZ2F0ZSgneCcpLmluKCdjcmVhdGVkJykgPDQ+CitnLlYoMSkub3V0KCdjcmVhdGVkJykuYWdncmVnYXRlKCd4JykuaW4oJ2NyZWF0ZWQnKS5vdXQoJ2NyZWF0ZWQnKSA8NT4KIGcuVigxKS5vdXQoJ2NyZWF0ZWQnKS5hZ2dyZWdhdGUoJ3gnKS5pbignY3JlYXRlZCcpLm91dCgnY3JlYXRlZCcpLgotICAgICAgIHdoZXJlKHdpdGhvdXQoJ3gnKSkudmFsdWVzKCduYW1lJykgPDU+CisgICAgICAgd2hlcmUod2l0aG91dCgneCcpKS52YWx1ZXMoJ25hbWUnKSA8Nj4KIC0tLS0KIAogPDE+IFdoYXQgaGFzIG1hcmtvIGNyZWF0ZWQ/CiA8Mj4gQWdncmVnYXRlIGFsbCBoaXMgY3JlYXRpb25zLgorPDM+IElkZW50aWNhbCB0byB0aGUgcHJldmlvdXMgbGluZS4KIDwzPiBXaG8gYXJlIG1hcmtvJ3MgY29sbGFib3JhdG9ycz8KIDw0PiBXaGF0IGhhdmUgbWFya28ncyBjb2xsYWJvcmF0b3JzIGNyZWF0ZWQ/CiA8NT4gV2hhdCBoYXZlIG1hcmtvJ3MgY29sbGFib3JhdG9ycyBjcmVhdGVkIHRoYXQgaGUgaGFzbid0IGNyZWF0ZWQ/CkBAIC0zNDMsOSArMzUyLDMxIEBACiBnLlYoKS5vdXQoJ2tub3dzJykuYWdncmVnYXRlKCd4JykuYnkoJ25hbWUnKS5jYXAoJ3gnKQogLS0tLQogCitGb3IgYGxvY2FsYCBzY29wZSB0aGUgYWdncmVnYXRpb24gd2lsbCBvY2N1ciBpbiBhIGxpbms6aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MYXp5X2V2YWx1YXRpb25bbGF6eV0gZmFzaGlvbi4KKworTk9URTogUHJpb3IgdG8gMy40LjMsIGBsb2NhbGAgYWdncmVnYXRpb24gKGkuZS4gbGF6eSkgZXZhbHVhdGlvbiB3YXMgaGFuZGxlZCBieSBgc3RvcmUoKWAtc3RlcC4KKworW2dyZW1saW4tZ3Jvb3Z5LG1vZGVybl0KKy0tLS0KK2cuVigpLmFnZ3JlZ2F0ZShnbG9iYWwsICd4JykubGltaXQoMSkuY2FwKCd4JykKK2cuVigpLmFnZ3JlZ2F0ZShsb2NhbCwgJ3gnKS5saW1pdCgxKS5jYXAoJ3gnKQorZy53aXRob3V0U3RyYXRlZ2llcyhFYXJseUxpbWl0U3RyYXRlZ3kpLlYoKS5hZ2dyZWdhdGUobG9jYWwsJ3gnKS5saW1pdCgxKS5jYXAoJ3gnKQorLS0tLQorCitJdCBpcyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IGBFYXJseUxpbWl0U3RyYXRlZ3lgIGludHJvZHVjZWQgaW4gMy4zLjUgYWx0ZXJzIHRoZSBiZWhhdmlvciBvZiBgYWdncmVnYXRlKGxvY2FsKWAuCitXaXRob3V0IHRoYXQgc3RyYXRlZ3kgKHdoaWNoIGlzIGluc3RhbGxlZCBieSBkZWZhdWx0KSwgdGhlcmUgYXJlIHR3byByZXN1bHRzIGluIHRoZSBgYWdncmVnYXRlKClgIHNpZGUtZWZmZWN0IGV2ZW4KK3Rob3VnaCB0aGUgaW50ZXJ2YWwgc2VsZWN0aW9uIGlzIGZvciAxIG9iamVjdC4gUmVhbGl6ZSB0aGF0IHdoZW4gdGhlIHNlY29uZCBvYmplY3QgaXMgb24gaXRzIHdheSB0byB0aGUgYHJhbmdlKClgCitmaWx0ZXIgKGkuZS4gYFswLi4xXWApLCBpdCBwYXNzZXMgdGhyb3VnaCBgYWdncmVnYXRlKClgIGFuZCB0aHVzLCBzdG9yZWQgYmVmb3JlIGZpbHRlcmVkLgorCitbZ3JlbWxpbi1ncm9vdnksbW9kZXJuXQorLS0tLQorZy5FKCkuc3RvcmUoJ3gnKS5ieSgnd2VpZ2h0JykuY2FwKCd4JykKKy0tLS0KKwogKkFkZGl0aW9uYWwgUmVmZXJlbmNlcyoKIAotbGluazorK2h0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MveC55LnovY29yZS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9ncmFwaC9HcmFwaFRyYXZlcnNhbC5odG1sI2FnZ3JlZ2F0ZS1qYXZhLmxhbmcuU3RyaW5nLSsrW2BhZ2dyZWdhdGUoU3RyaW5nKWBdCitsaW5rOisraHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy94Lnkuei9jb3JlL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL2dyYXBoL0dyYXBoVHJhdmVyc2FsLmh0bWwjYWdncmVnYXRlLWphdmEubGFuZy5TdHJpbmctKytbYGFnZ3JlZ2F0ZShTdHJpbmcpYF0sCisrK2h0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MveC55LnovY29yZS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9ncmFwaC9HcmFwaFRyYXZlcnNhbC5odG1sI2FnZ3JlZ2F0ZS1vcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlNjb3BlLGphdmEubGFuZy5TdHJpbmctKytbYGFnZ3JlZ2F0ZShTY29wZSxTdHJpbmcpYF0KIAogW1thbmQtc3RlcF1dCiA9PT0gQW5kIFN0ZXAKQEAgLTM2OCw4ICszOTksNyBAQAogVGhlIGBhbmQoKWAtc3RlcCBjYW4gdGFrZSBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIHRyYXZlcnNhbHMuIEFsbCB0cmF2ZXJzYWxzIG11c3QgcHJvZHVjZSBhdCBsZWFzdCBvbmUgb3V0cHV0IGZvciB0aGUKIG9yaWdpbmFsIHRyYXZlcnNlciB0byBwYXNzIHRvIHRoZSBuZXh0IHN0ZXAuCiAKLUFuIGxpbms6aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbmZpeF9ub3RhdGlvbltpbmZpeCBub3RhdGlvbl0gY2FuIGJlIHVzZWQgYXMgd2VsbC4gVGhvdWdoLCB3aXRoIGluZml4IG5vdGF0aW9uLAotb25seSB0d28gdHJhdmVyc2FscyBjYW4gYmUgYW5kJ2QgdG9nZXRoZXIuCitBbiBsaW5rOmh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW5maXhfbm90YXRpb25baW5maXggbm90YXRpb25dIGNhbiBiZSB1c2VkIGFzIHdlbGwuCiAKIFtncmVtbGluLWdyb292eSxtb2Rlcm5dCiAtLS0tCkBAIC0zOTAsNyArNDIwLDcgQEAKIFtOT1RFLCBjYXB0aW9uPUdyb292eV0KID09PT0KIFRoZSB0ZXJtIGBhc2AgaXMgYSByZXNlcnZlZCB3b3JkIGluIEdyb292eSwgYW5kIHdoZW4gdGhlcmVmb3JlIHVzZWQgYXMgcGFydCBvZiBhbiBhbm9ueW1vdXMgdHJhdmVyc2FsIG11c3QgYmUgcmVmZXJyZWQKLXRvIGluIEdyZW1saW4gd2l0aCB0aGUgZG91YmxlIHVuZGVyc2NvcmUgYCtfXy5hcygpK2AuCit0byBpbiBHcmVtbGluIHdpdGggdGhlIGRvdWJsZSB1bmRlcnNjb3JlIGBfXy5hcygpYC4KID09PT0KIAogW05PVEUsIGNhcHRpb249UHl0aG9uXQpAQCAtNDQ1LDcgKzQ3NSw4IEBACiBbZ3JlbWxpbi1ncm9vdnldCiAtLS0tCiBncmFwaCA9IFRpbmtlckdyYXBoLm9wZW4oKQotZ3JhcGguaW8oZ3JhcGhtbCgpKS5yZWFkR3JhcGgoJ2RhdGEvZ3JhdGVmdWwtZGVhZC54bWwnKQorZyA9IGdyYXBoLnRyYXZlcnNhbCgpCitnLmlvKCdkYXRhL2dyYXRlZnVsLWRlYWQueG1sJykucmVhZCgpLml0ZXJhdGUoKQogZyA9IGdyYXBoLnRyYXZlcnNhbCgpLndpdGhvdXRTdHJhdGVnaWVzKExhenlCYXJyaWVyU3RyYXRlZ3kpIDwxPgogY2xvY2tXaXRoUmVzdWx0KDEpe2cuVigpLmJvdGgoKS5ib3RoKCkuYm90aCgpLmNvdW50KCkubmV4dCgpfSA8Mj4KIGNsb2NrV2l0aFJlc3VsdCgxKXtnLlYoKS5yZXBlYXQoYm90aCgpKS50aW1lcygzKS5jb3VudCgpLm5leHQoKX0gPDM+CkBAIC00NjcsOCArNDk4LDggQEAKIFtncmVtbGluLWdyb292eV0KIC0tLS0KIGdyYXBoID0gVGlua2VyR3JhcGgub3BlbigpCi1ncmFwaC5pbyhncmFwaG1sKCkpLnJlYWRHcmFwaCgnZGF0YS9ncmF0ZWZ1bC1kZWFkLnhtbCcpCi1nID0gZ3JhcGgudHJhdmVyc2FsKCkgPDE+CitnID0gZ3JhcGgudHJhdmVyc2FsKCkgIDwxPgorZy5pbygnZGF0YS9ncmF0ZWZ1bC1kZWFkLnhtbCcpLnJlYWQoKS5pdGVyYXRlKCkKIGNsb2NrV2l0aFJlc3VsdCgxKXtnLlYoKS5ib3RoKCkuYm90aCgpLmJvdGgoKS5jb3VudCgpLm5leHQoKX0KIGcuVigpLmJvdGgoKS5ib3RoKCkuYm90aCgpLmNvdW50KCkuaXRlcmF0ZSgpLnRvU3RyaW5nKCkgIDwyPgogLS0tLQpAQCAtNTk2LDcgKzYyNyw3IEBACiAgICAgICBjaG9vc2UodmFsdWVzKCduYW1lJykpLgogICAgICAgICBvcHRpb24oJ21hcmtvJywgdmFsdWVzKCdhZ2UnKSkuCiAgICAgICAgIG9wdGlvbignam9zaCcsIHZhbHVlcygnbmFtZScpKS4KLSAgICAgICAgb3B0aW9uKCd2YWRhcycsIHZhbHVlTWFwKCkpLgorICAgICAgICBvcHRpb24oJ3ZhZGFzJywgZWxlbWVudE1hcCgpKS4KICAgICAgICAgb3B0aW9uKCdwZXRlcicsIGxhYmVsKCkpCiAtLS0tCiAKQEAgLTY1Myw2ICs2ODQsNDEgQEAKIAogbGluazorK2h0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MveC55LnovY29yZS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9ncmFwaC9HcmFwaFRyYXZlcnNhbC5odG1sI2NvaW4tZG91YmxlLSsrW2Bjb2luKGRvdWJsZSlgXQogCitbW2Nvbm5lY3RlZGNvbXBvbmVudC1zdGVwXV0KKz09PSBDb25uZWN0ZWRDb21wb25lbnQgU3RlcAorCitUaGUgYGNvbm5lY3RlZENvbXBvbmVudCgpYCBzdGVwIHBlcmZvcm1zIGEgY29tcHV0YXRpb24gdG8gaWRlbnRpZnkgbGluazpodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db25uZWN0ZWRfY29tcG9uZW50XyhncmFwaF90aGVvcnkpW0Nvbm5lY3RlZCBDb21wb25lbnRdCitpbnN0YW5jZXMgaW4gYSBncmFwaC4gV2hlbiB0aGlzIHN0ZXAgY29tcGxldGVzLCB0aGUgdmVydGljZXMgd2lsbCBiZSBsYWJlbGxlZCB3aXRoIGEgY29tcG9uZW50IGlkZW50aWZpZXIgdG8gZGVub3RlCit0aGUgY29tcG9uZW50IHRvIHdoaWNoIHRoZXkgYXJlIGFzc29jaWF0ZWQuCisKK0lNUE9SVEFOVDogVGhlIGBjb25uZWN0ZWRDb21wb25lbnQoKWAtc3RlcCBpcyBhIGBWZXJ0ZXhDb21wdXRpbmdgLXN0ZXAgYW5kIGFzIHN1Y2gsIGNhbiBvbmx5IGJlIHVzZWQgYWdhaW5zdCBhIGdyYXBoCit0aGF0IHN1cHBvcnRzIGBHcmFwaENvbXB1dGVyYCAoT0xBUCkuCisKK1tncmVtbGluLWdyb292eSxtb2Rlcm5dCistLS0tCitnID0gZ3JhcGgudHJhdmVyc2FsKCkud2l0aENvbXB1dGVyKCkKK2cuVigpLgorICBjb25uZWN0ZWRDb21wb25lbnQoKS4KKyAgICB3aXRoKENvbm5lY3RlZENvbXBvbmVudC5wcm9wZXJ0eU5hbWUsICdjb21wb25lbnQnKS4KKyAgcHJvamVjdCgnbmFtZScsJ2NvbXBvbmVudCcpLgorICAgIGJ5KCduYW1lJykuCisgICAgYnkoJ2NvbXBvbmVudCcpCitnLlYoKS5oYXNMYWJlbCgncGVyc29uJykuCisgIGNvbm5lY3RlZENvbXBvbmVudCgpLgorICAgIHdpdGgoQ29ubmVjdGVkQ29tcG9uZW50LnByb3BlcnR5TmFtZSwgJ2NvbXBvbmVudCcpLgorICAgIHdpdGgoQ29ubmVjdGVkQ29tcG9uZW50LmVkZ2VzLCBvdXRFKCdrbm93cycpKS4KKyAgcHJvamVjdCgnbmFtZScsJ2NvbXBvbmVudCcpLgorICAgIGJ5KCduYW1lJykuCisgICAgYnkoJ2NvbXBvbmVudCcpCistLS0tCisKK05vdGUgdGhlIHVzZSBvZiB0aGUgYHdpdGgoKWAgbW9kdWxhdGluZyBzdGVwIHdoaWNoIHByb3ZpZGVzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byB0aGUgYWxnb3JpdGhtLiBJdCB0YWtlcworY29uZmlndXJhdGlvbiBrZXlzIGZyb20gdGhlIGBDb25uZWN0ZWRDb21wb25lbnRgIGNsYXNzIGFuZCBpcyBhdXRvbWF0aWNhbGx5IGltcG9ydGVkIHRvIHRoZSBHcmVtbGluIENvbnNvbGUuCisKKypBZGRpdGlvbmFsIFJlZmVyZW5jZXMqCisKK2xpbms6KytodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzL3gueS56L2NvcmUvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvZ3JhcGgvR3JhcGhUcmF2ZXJzYWwuaHRtbCNjb25uZWN0ZWRDb21wb25lbnQtLSsrW2Bjb25uZWN0ZWRDb21wb25lbnQoKWBdCisKIFtbY29uc3RhbnQtc3RlcF1dCiA9PT0gQ29uc3RhbnQgU3RlcAogCkBAIC03NTIsNyArODE4LDcgQEAKIAogW2dyZW1saW4tZ3Jvb3Z5LG1vZGVybl0KIC0tLS0KLWcuVigpLnZhbHVlTWFwKHRydWUsICduYW1lJykKK2cuVigpLmVsZW1lbnRNYXAoJ25hbWUnKQogZy5WKCkuZGVkdXAoKS5ieShsYWJlbCkudmFsdWVzKCduYW1lJykKIC0tLS0KIApAQCAtNzg0LDcgKzg1MCw3IEBACiBnLlYoKS5vdXRFKCkuZHJvcCgpCiBnLkUoKQogZy5WKCkucHJvcGVydGllcygnbmFtZScpLmRyb3AoKQotZy5WKCkudmFsdWVNYXAoKQorZy5WKCkuZWxlbWVudE1hcCgpCiBnLlYoKS5kcm9wKCkKIGcuVigpCiAtLS0tCkBAIC03OTMsNiArODU5LDM3IEBACiAKICogbGluazorK2h0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MveC55LnovY29yZS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9ncmFwaC9HcmFwaFRyYXZlcnNhbC5odG1sI2Ryb3AtLSsrW2Bkcm9wKClgXQogCitbW2VsZW1lbnRtYXAtc3RlcF1dCis9PT0gRWxlbWVudE1hcCBTdGVwCisKK1RoZSBgZWxlbWVudE1hcCgpYC1zdGVwIHlpZWxkcyBhIGBNYXBgIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzdHJ1Y3R1cmUgb2YgYW4gZWxlbWVudC4KKworW2dyZW1saW4tZ3Jvb3Z5LG1vZGVybl0KKy0tLS0KK2cuVigpLmVsZW1lbnRNYXAoKQorZy5WKCkuZWxlbWVudE1hcCgnYWdlJykKK2cuVigpLmVsZW1lbnRNYXAoJ2FnZScsJ2JsYWgnKQorZy5FKCkuZWxlbWVudE1hcCgpCistLS0tCisKK0l0IGlzIGltcG9ydGFudCB0byBub3RlIHRoYXQgdGhlIG1hcCBvZiBhIHZlcnRleCBhc3N1bWVzIHRoYXQgY2FyZGluYWxpdHkgZm9yIGVhY2gga2V5IGlzIGBzaW5nbGVgIGFuZCBpZiBpdCBpcyBgbGlzdGAKK3RoZW4gb25seSB0aGUgZmlyc3QgaXRlbSBlbmNvdW50ZXJlZCB3aWxsIGJlIHJldHVybmVkLiBBcyBgc2luZ2xlYCBpcyB0aGUgbW9yZSBjb21tb24gY2FyZGluYWxpdHkgZm9yIHByb3BlcnRpZXMgdGhpcworYXNzdW1wdGlvbiBzaG91bGQgc2VydmUgdGhlIGdyZWF0ZXN0IG51bWJlciBvZiB1c2UgY2FzZXMuCisKK1tncmVtbGluLWdyb292eSx0aGVDcmV3XQorLS0tLQorZy5WKCkuZWxlbWVudE1hcCgpCitnLlYoKS5oYXMoJ25hbWUnLCdtYXJrbycpLnByb3BlcnRpZXMoJ2xvY2F0aW9uJykKK2cuVigpLmhhcygnbmFtZScsJ21hcmtvJykucHJvcGVydGllcygnbG9jYXRpb24nKS5lbGVtZW50TWFwKCkKKy0tLS0KKworSU1QT1JUQU5UOiBUaGUgYGVsZW1lbnRNYXAoKWAtc3RlcCBkb2VzIG5vdCByZXR1cm4gdGhlIHZlcnRleCBsYWJlbHMgZm9yIGluY2lkZW50IHZlcnRpY2VzIHdoZW4gdXNpbmcgYEdyYXBoQ29tcHV0ZXJgCithcyB0aGUgYGlkYCBpcyB0aGUgb25seSBhdmFpbGFibGUgZGF0YSB0byB0aGUgc3RhciBncmFwaC4KKworKkFkZGl0aW9uYWwgUmVmZXJlbmNlcyoKKworbGluazorK2h0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MveC55LnovY29yZS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9ncmFwaC9HcmFwaFRyYXZlcnNhbC5odG1sI2VsZW1lbnRNYXAtamF2YS5sYW5nLlN0cmluZy4uLi0rK1tgZWxlbWVudE1hcChTdHJpbmcuLi4pYF0KKwogW1tlbWl0LXN0ZXBdXQogPT09IEVtaXQgU3RlcAogCkBAIC0xMDA2LDE2ICsxMTAzLDE4IEBACiBbZ3JlbWxpbi1ncm9vdnksbW9kZXJuXQogLS0tLQogZy5WKCkuaGFzTGFiZWwoJ3BlcnNvbicpCitnLlYoKS5oYXNMYWJlbCgncGVyc29uJywnbmFtZScsJ21hcmtvJykKIGcuVigpLmhhc0xhYmVsKCdwZXJzb24nKS5vdXQoKS5oYXMoJ25hbWUnLHdpdGhpbigndmFkYXMnLCdqb3NoJykpCiBnLlYoKS5oYXNMYWJlbCgncGVyc29uJykub3V0KCkuaGFzKCduYW1lJyx3aXRoaW4oJ3ZhZGFzJywnam9zaCcpKS4KICAgICAgIG91dEUoKS5oYXNMYWJlbCgnY3JlYXRlZCcpCiBnLlYoKS5oYXMoJ2FnZScsaW5zaWRlKDIwLDMwKSkudmFsdWVzKCdhZ2UnKSA8MT4KIGcuVigpLmhhcygnYWdlJyxvdXRzaWRlKDIwLDMwKSkudmFsdWVzKCdhZ2UnKSA8Mj4KLWcuVigpLmhhcygnbmFtZScsd2l0aGluKCdqb3NoJywnbWFya28nKSkudmFsdWVNYXAoKSA8Mz4KLWcuVigpLmhhcygnbmFtZScsd2l0aG91dCgnam9zaCcsJ21hcmtvJykpLnZhbHVlTWFwKCkgPDQ+Ci1nLlYoKS5oYXMoJ25hbWUnLG5vdCh3aXRoaW4oJ2pvc2gnLCdtYXJrbycpKSkudmFsdWVNYXAoKSA8NT4KK2cuVigpLmhhcygnbmFtZScsd2l0aGluKCdqb3NoJywnbWFya28nKSkuZWxlbWVudE1hcCgpIDwzPgorZy5WKCkuaGFzKCduYW1lJyx3aXRob3V0KCdqb3NoJywnbWFya28nKSkuZWxlbWVudE1hcCgpIDw0PgorZy5WKCkuaGFzKCduYW1lJyxub3Qod2l0aGluKCdqb3NoJywnbWFya28nKSkpLmVsZW1lbnRNYXAoKSA8NT4KIGcuVigpLnByb3BlcnRpZXMoKS5oYXNLZXkoJ2FnZScpLnZhbHVlKCkgPDY+CiBnLlYoKS5oYXNOb3QoJ2FnZScpLnZhbHVlcygnbmFtZScpIDw3PgorZy5WKCkuaGFzKCdwZXJzb24nLCduYW1lJywgc3RhcnRpbmdXaXRoKCdtJykpIDw4PgogLS0tLQogCiA8MT4gRmluZCBhbGwgdmVydGljZXMgd2hvc2UgYWdlcyBhcmUgYmV0d2VlbiAyMCAoZXhjbHVzaXZlKSBhbmQgMzAgKGV4Y2x1c2l2ZSkuIEluIG90aGVyIHdvcmRzLCB0aGUgYWdlIG11c3QgYmUgZ3JlYXRlciB0aGFuIDIwIGFuZCBsZXNzIHRoYW4gMzAuCkBAIC0xMDI2LDYgKzExMjUsNyBAQAogPDU+IFNhbWUgYXMgdGhlIHByaW9yIGV4YW1wbGUgc2F2ZSB1c2luZyBgbm90YCBvbiBgd2l0aGluYCB0byB5aWVsZCBgd2l0aG91dGAuCiA8Nj4gRmluZCBhbGwgYWdlLXByb3BlcnRpZXMgYW5kIGVtaXQgdGhlaXIgdmFsdWUuCiA8Nz4gRmluZCBhbGwgdmVydGljZXMgdGhhdCBkbyBub3QgaGF2ZSBhbiBhZ2UtcHJvcGVydHkgYW5kIGVtaXQgdGhlaXIgbmFtZS4KKzw4PiBGaW5kIGFsbCAicGVyc29uIiB2ZXJ0aWNlcyB0aGF0IGhhdmUgYSBuYW1lIHByb3BlcnR5IHRoYXQgc3RhcnRzIHdpdGggdGhlIGxldHRlciAibSIuCiAKIFRpbmtlclBvcCBkb2VzIG5vdCBzdXBwb3J0IGEgcmVndWxhciBleHByZXNzaW9uIHByZWRpY2F0ZSwgYWx0aG91Z2ggc3BlY2lmaWMgZ3JhcGggZGF0YWJhc2VzIHRoYXQgbGV2ZXJhZ2UgVGlua2VyUG9wCiBtYXkgcHJvdmlkZSBhIHBhcnRpYWwgbWF0Y2ggZXh0ZW5zaW9uLgpAQCAtMTA1MSw2ICsxMTUxLDcgQEAKIGxpbms6KytodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzL3gueS56L2NvcmUvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvZ3JhcGgvR3JhcGhUcmF2ZXJzYWwuaHRtbCNoYXNWYWx1ZS1qYXZhLmxhbmcuT2JqZWN0LWphdmEubGFuZy5PYmplY3QuLi4tKytbYGhhc1ZhbHVlKE9iamVjdCxPYmplY3QuLi4pYF0sCiBsaW5rOisraHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy94Lnkuei9jb3JlL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL2dyYXBoL0dyYXBoVHJhdmVyc2FsLmh0bWwjaGFzVmFsdWUtb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QLSsrW2BoYXNWYWx1ZShQKWBdLAogbGluazorK2h0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MveC55LnovY29yZS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL1AuaHRtbCsrW2BQYF0sCitsaW5rOisraHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy94Lnkuei9jb3JlL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvVGV4dFAuaHRtbCsrW2BUZXh0UGBdLAogbGluazorK2h0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MveC55LnovY29yZS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9ULmh0bWwrK1tgVGBdCiAKIFtbaWQtc3RlcF1dCkBAIC0xMDg1LDEzICsxMTg2LDUxIEBACiAKIGxpbms6KytodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzL3gueS56L2NvcmUvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvZ3JhcGgvR3JhcGhUcmF2ZXJzYWwuaHRtbCNpZGVudGl0eS0tKytbYGlkZW50aXR5KClgXQogCitbW2luZGV4LXN0ZXBdXQorPT09IEluZGV4IFN0ZXAKKworVGhlIGBpbmRleCgpYC1zdGVwICgqbWFwKikgaW5kZXhlcyBlYWNoIGVsZW1lbnQgaW4gdGhlIGN1cnJlbnQgY29sbGVjdGlvbi4gSWYgdGhlIGN1cnJlbnQgdHJhdmVyc2VyJ3MgdmFsdWUgaXMgbm90IGEgY29sbGVjdGlvbiwgdGhlbiBpdCdzIHRyZWF0ZWQgYXMgYSBzaW5nbGUtaXRlbSBjb2xsZWN0aW9uLiBUaGVyZSBhcmUgdHdvIGluZGV4ZXJzCithdmFpbGFibGUsIHdoaWNoIGNhbiBiZSBjaG9zZW4gdXNpbmcgdGhlIGB3aXRoKClgIG1vZHVsYXRvci4gVGhlIGxpc3QgaW5kZXhlciAoZGVmYXVsdCkgY3JlYXRlcyBhIGxpc3QgZm9yIGVhY2ggY29sbGVjdGlvbiBpdGVtLCB3aXRoIHRoZSBmaXJzdCBpdGVtIGJlaW5nIHRoZSBvcmlnaW5hbCBlbGVtZW50IGFuZCB0aGUgc2Vjb25kIGVsZW1lbnQKK2JlaW5nIHRoZSBpbmRleC4gVGhlIG1hcCBpbmRleGVyIGNyZWF0ZWQgYSBsaW5rZWQgaGFzaCBtYXAgaW4gd2hpY2ggdGhlIGluZGV4IHJlcHJlc2VudHMgdGhlIGtleSBhbmQgdGhlIG9yaWdpbmFsIGl0ZW0gaXMgdXNlZCBhcyB0aGUgdmFsdWUuCisKK1tncmVtbGluLWdyb292eSxtb2Rlcm5dCistLS0tCitnLlYoKS5oYXNMYWJlbCgic29mdHdhcmUiKS5pbmRleCgpICA8MT4KK2cuVigpLmhhc0xhYmVsKCJzb2Z0d2FyZSIpLnZhbHVlcygibmFtZSIpLmZvbGQoKS4KKyAgb3JkZXIoU2NvcGUubG9jYWwpLgorICBpbmRleCgpLgorICB1bmZvbGQoKS4KKyAgb3JkZXIoKS4KKyAgICBieShfXy50YWlsKFNjb3BlLmxvY2FsLCAxKSkgICAgIDwyPgorZy5WKCkuaGFzTGFiZWwoInNvZnR3YXJlIikudmFsdWVzKCJuYW1lIikuZm9sZCgpLgorICBvcmRlcihTY29wZS5sb2NhbCkuCisgIGluZGV4KCkuCisgICAgd2l0aChXaXRoT3B0aW9ucy5pbmRleGVyLCBXaXRoT3B0aW9ucy5saXN0KS4KKyAgdW5mb2xkKCkuCisgIG9yZGVyKCkuCisgICAgYnkoX18udGFpbChTY29wZS5sb2NhbCwgMSkpICAgICA8Mz4KK2cuVigpLmhhc0xhYmVsKCJwZXJzb24iKS52YWx1ZXMoIm5hbWUiKS5mb2xkKCkuCisgIG9yZGVyKFNjb3BlLmxvY2FsKS4KKyAgaW5kZXgoKS4KKyAgICB3aXRoKFdpdGhPcHRpb25zLmluZGV4ZXIsIFdpdGhPcHRpb25zLm1hcCkgIDw0PgorLS0tLQorCis8MT4gSW5kZXhpbmcgbm9uLWNvbGxlY3Rpb24gaXRlbXMgcmVzdWx0cyBpbiBtdWx0aXBsZSBpbmRleGVkIHNpbmdsZS1pdGVtIGNvbGxlY3Rpb25zLgorPDI+IEluZGV4IGFsbCBzb2Z0d2FyZSBuYW1lcyBpbiB0aGVpciBhbHBoYWJldGljYWwgb3JkZXIuCis8Mz4gU2FtZSBhcyBzdGF0ZW1lbnQgMSwgYnV0IHdpdGggYW4gZXhwbGljaXRlbHkgc3BlY2lmaWVkIGxpc3QgaW5kZXhlci4KKzw0PiBJbmRleCBhbGwgcGVyc29uIG5hbWVzIGluIHRoZWlyIGFscGhhYmV0aWNhbCBvcmRlciBhbmQgc3RvcmUgdGhlIHJlc3VsdCBpbiBhbiBvcmRlcmVkIG1hcC4KKworKkFkZGl0aW9uYWwgUmVmZXJlbmNlcyoKKworbGluazorK2h0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MveC55LnovY29yZS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9ncmFwaC9HcmFwaFRyYXZlcnNhbC5odG1sI2luZGV4LS0rK1tgaW5kZXgoKWBdCisKIFtbaW5qZWN0LXN0ZXBdXQogPT09IEluamVjdCBTdGVwCiAKIGltYWdlOjppbmplY3Qtc3RlcC5wbmdbd2lkdGg9ODAwXQogCi1PbmUgb2YgdGhlIG1ham9yIGZlYXR1cmVzIG9mIFRpbmtlclBvcDMgaXMgImluamVjdGFibGUgc3RlcHMuIiBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRvIGluc2VydCBvYmplY3RzIGFyYml0cmFyaWx5Ci1pbnRvIGEgdHJhdmVyc2FsIHN0cmVhbS4gSW4gZ2VuZXJhbCwgYGluamVjdCgpYC1zdGVwICgqc2lkZUVmZmVjdCopIGV4aXN0cyBhbmQgYSBmZXcgZXhhbXBsZXMgYXJlIHByb3ZpZGVkIGJlbG93LgorVGhlIGNvbmNlcHQgb2YgImluamVjdGFibGUgc3RlcHMiIG1ha2VzIGl0IHBvc3NpYmxlIHRvIGluc2VydCBvYmplY3RzIGFyYml0cmFyaWx5IGludG8gYSB0cmF2ZXJzYWwgc3RyZWFtLiBJbiBnZW5lcmFsLAorYGluamVjdCgpYC1zdGVwICgqc2lkZUVmZmVjdCopIGV4aXN0cyBhbmQgYSBmZXcgZXhhbXBsZXMgYXJlIHByb3ZpZGVkIGJlbG93LgogCiBbZ3JlbWxpbi1ncm9vdnksbW9kZXJuXQogLS0tLQpAQCAtMTExNSw2ICsxMjU0LDE3OSBAQAogCiBsaW5rOisraHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy94Lnkuei9jb3JlL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL2dyYXBoL0dyYXBoVHJhdmVyc2FsLmh0bWwjaW5qZWN0LUUuLi4tKytbYGluamVjdChPYmplY3QpYF0KIAorYW5jaG9yOl9ncmVtbGluX2lfb1tdCitbW2lvLXN0ZXBdXQorPT09IElPIFN0ZXAKKworaW1hZ2U6Z3JlbWxpbi1pby5wbmdbd2lkdGg9MjUwLGZsb2F0PWxlZnRdIFRoZSB0YXNrIG9mIGltcG9ydGluZyBhbmQgZXhwb3J0aW5nIHRoZSBkYXRhIG9mIGBHcmFwaGAgaW5zdGFuY2VzIGlzIHRoZQoram9iIG9mIHRoZSBgaW8oKWAtc3RlcC4gQnkgZGVmYXVsdCwgVGlua2VyUG9wIHN1cHBvcnRzIHRocmVlIGZvcm1hdHMgZm9yIGltcG9ydGluZyBhbmQgZXhwb3J0aW5nIGdyYXBoIGRhdGEgaW4KKzw8Z3JhcGhtbCxHcmFwaE1MPj4sIDw8Z3JhcGhzb24sR3JhcGhTT04+PiwgYW5kIDw8Z3J5byxHcnlvPj4uCisKK05PVEU6IEFkZGl0aW9uYWwgZG9jdW1lbnRhdGlvbiBmb3IgVGlua2VyUG9wIElPIGZvcm1hdHMgY2FuIGJlIGZvdW5kIGluIHRoZSBsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei9kZXYvaW8vW0lPIFJlZmVyZW5jZV0uCisKK0J5IGl0c2VsZiB0aGUgYGlvKClgLXN0ZXAgbWVyZWx5IGNvbmZpZ3VyZXMgdGhlIGtpbmQgb2YgaW1wb3J0aW5nIGFuZCBleHBvcnRpbmcgdGhhdCBpcyBnb2luZwordG8gb2NjdXIgYW5kIGl0IGlzIHRoZSBmb2xsb3ctb24gY2FsbCB0byB0aGUgYHJlYWQoKWAgb3IgYHdyaXRlKClgIHN0ZXAgdGhhdCBkZXRlcm1pbmVzIHdoaWNoIG9mIHRob3NlIGFjdGlvbnMgd2lsbAorZXhlY3V0ZS4gVGhlcmVmb3JlLCBhIHR5cGljYWwgdXNhZ2Ugb2YgdGhlIGBpbygpYC1zdGVwIHdvdWxkIGxvb2sgbGlrZSB0aGlzOgorCitbc291cmNlLGphdmFdCistLS0tCitnLmlvKHNvbWVJbnB1dEZpbGUpLnJlYWQoKS5pdGVyYXRlKCkKK2cuaW8oc29tZU91dHB1dEZpbGUpLndyaXRlKCkuaXRlcmF0ZSgpCistLS0tCisKK0lNUE9SVEFOVDogVGhlIGNvbW1hbmRzIGFib3ZlIGFyZSBzdGlsbCB0cmF2ZXJzYWxzIGFuZCB0aGVyZWZvcmUgcmVxdWlyZSBpdGVyYXRpb24gdG8gYmUgZXhlY3V0ZWQsIGhlbmNlIHRoZSB1c2Ugb2YKK2BpdGVyYXRlKClgIGFzIGEgdGVybWluYXRpb24gc3RlcC4KKworQnkgZGVmYXVsdCwgdGhlIGBpbygpYC1zdGVwIHdpbGwgdHJ5IHRvIGRldGVjdCB0aGUgcmlnaHQgZmlsZSBmb3JtYXQgdXNpbmcgdGhlIGZpbGUgbmFtZSBleHRlbnNpb24uIFRvIGdhaW4gZ3JlYXRlcgorY29udHJvbCBvZiB0aGUgZm9ybWF0IHVzZSB0aGUgYHdpdGgoKWAgc3RlcCBtb2R1bGF0b3IgdG8gcHJvdmlkZSBmdXJ0aGVyIGluZm9ybWF0aW9uIHRvIGBpbygpYC4gRm9yIGV4YW1wbGU6CisKK1tzb3VyY2UsamF2YV0KKy0tLS0KK2cuaW8oc29tZUlucHV0RmlsZSkuCisgICAgd2l0aChJTy5yZWFkZXIsIElPLmdyYXBoc29uKS4KKyAgcmVhZCgpLml0ZXJhdGUoKQorZy5pbyhzb21lT3V0cHV0RmlsZSkuCisgICAgd2l0aChJTy53cml0ZXIsSU8uZ3JhcGhtbCkuCisgIHdyaXRlKCkuaXRlcmF0ZSgpCistLS0tCisKK1RoZSBgSU9gIGNsYXNzIGlzIGEgaGVscGVyIGZvciB0aGUgYGlvKClgLXN0ZXAgdGhhdCBwcm92aWRlcyBleHByZXNzaW9ucyB0aGF0IGNhbiBiZSB1c2VkIHRvIGhlbHAgY29uZmlndXJlIGl0CithbmQgaW4gdGhpcyBjYXNlIGl0IGFsbG93cyBkaXJlY3Qgc3BlY2lmaWNhdGlvbiBvZiB0aGUgInJlYWRlciIgb3IgIndyaXRlciIgdG8gdXNlLiBUaGUgInJlYWRlciIgYWN0dWFsbHkgcmVmZXJzIHRvCithIGBHcmFwaFJlYWRlcmAgaW1wbGVtZW50YXRpb24gYW5kIHRoZSAid3JpdGVyIiByZWZlcnMgdG8gYSBgR3JhcGhXcml0ZXJgIGltcGxlbWVudGF0aW9uLiBUaGUgaW1wbGVtZW50YXRpb25zIG9mCit0aG9zZSBpbnRlcmZhY2VzIHByb3ZpZGVkIGJ5IGRlZmF1bHQgYXJlIHRoZSBzdGFuZGFyZCBUaW5rZXJQb3AgaW1wbGVtZW50YXRpb25zLgorCitUaGF0IGRlZmF1bHQgaXMgYW4gaW1wb3J0YW50IHBvaW50IHRvIGNvbnNpZGVyIGZvciB1c2Vycy4gVGhlIGRlZmF1bHQgVGlua2VyUG9wIGltcGxlbWVudGF0aW9ucyBhcmUgbm90IGRlc2lnbmVkIHdpdGgKK21hc3NpdmUsIGNvbXBsZXgsIHBhcmFsbGVsIGJ1bGsgbG9hZGluZyBpbiBtaW5kLiBUaGV5IGFyZSBkZXNpZ25lZCB0byBkbyBzaW5nbGUtdGhyZWFkZWQsIE9MVFAtc3R5bGUgbG9hZGluZyBvZiBkYXRhCitpbiB0aGUgbW9zdCBnZW5lcmljIHdheSBwb3NzaWJsZSBzbyBhcyB0byBhY2NvbW1vZGF0ZSB0aGUgZ3JlYXRlc3QgbnVtYmVyIG9mIGdyYXBoIGRhdGFiYXNlcyBvdXQgdGhlcmUuIEFzIHN1Y2gsIGZyb20KK2EgcmVhZGluZyBwZXJzcGVjdGl2ZSwgdGhleSB3b3JrIGJlc3QgZm9yIHNtYWxsIGRhdGFzZXRzIChvciBwZXJoYXBzIG1lZGl1bSBkYXRhc2V0cyB3aGVyZSBtZW1vcnkgaXMgcGxlbnRpZnVsIGFuZAordGltZSBpcyBub3QgY3JpdGljYWwpIHRoYXQgYXJlIGxvYWRpbmcgdG8gYW4gZW1wdHkgZ3JhcGggLSBpbmNyZW1lbnRhbCBsb2FkaW5nIGlzIG5vdCBzdXBwb3J0ZWQuIFRoZSBzdG9yeSBmcm9tIHRoZQord3JpdGluZyBwZXJzcGVjdGl2ZSBpcyBub3QgdGhhdCBkaWZmZXJlbnQgaW4gdGhlcmUgYXJlIG5vIHBhcmFsbGVsIG9wZXJhdGlvbnMgaW4gcGxheSwgaG93ZXZlciBzdHJlYW1pbmcgdGhlIG91dHB1dAordG8gZGlzayByZXF1aXJlcyBhIHNpbmdsZSBwYXNzIG9mIHRoZSBkYXRhIHdpdGhvdXQgaGlnaCBtZW1vcnkgcmVxdWlyZW1lbnRzIGZvciBsYXJnZXIgZGF0YXNldHMuCisKK0luIGdlbmVyYWwsIFRpbmtlclBvcCByZWNvbW1lbmRzIHRoYXQgdXNlcnMgZXhhbWluZSB0aGUgbmF0aXZlIGJ1bGsgaW1wb3J0L2V4cG9ydCB0b29scyBvZiB0aGUgZ3JhcGggaW1wbGVtZW50YXRpb24KK3RoYXQgdGhleSBjaG9vc2UuIFRob3NlIHRvb2xzIHdpbGwgb2Z0ZW4gb3V0cGVyZm9ybSB0aGUgYGlvKClgLXN0ZXAgYW5kIHBlcmhhcHMgYmUgZWFzaWVyIHRvIHVzZSB3aXRoIGEgZ3JlYXRlcgorZmVhdHVyZSBzZXQuIFRoYXQgc2FpZCwgZ3JhcGggcHJvdmlkZXJzIGRvIGhhdmUgdGhlIG9wdGlvbiB0byBvcHRpbWl6ZSBgaW8oKWAgdG8gYmFjayBpdCB3aXRoIHRoZWlyIG93bgoraW1wb3J0L2V4cG9ydCB1dGlsaXRpZXMgYW5kIHRoZXJlZm9yZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBwcm92aWRlZCBieSBUaW5rZXJQb3AgZGVzY3JpYmVkIGFib3ZlIG1pZ2h0IGJlIG92ZXJyaWRkZW4KK2J5IHRoZSBncmFwaC4KKworQW4gZXhjZWxsZW50IGV4YW1wbGUgb2YgdGhpcyBsaWVzIGluIDw8aGFkb29wLWdyZW1saW4sSGFkb29wR3JhcGg+PiB3aXRoIDw8c3BhcmtncmFwaGNvbXB1dGVyLFNwYXJrR3JhcGhDb21wdXRlcj4+Cit3aGljaCByZXBsYWNlcyB0aGUgZGVmYXVsdCBzaW5nbGUtdGhyZWFkZWQgaW1wbGVtZW50YXRpb24gd2l0aCBhIG1vcmUgYWR2YW5jZWQgT0xBUCBzdHlsZSBidWxrIGltcG9ydC9leHBvcnQKK2Z1bmN0aW9uYWxpdHkgaW50ZXJuYWxseSB1c2luZyA8PGNsb25ldmVydGV4cHJvZ3JhbSxDbG9uZVZlcnRleFByb2dyYW0+Pi4gV2l0aCB0aGlzIG1vZGVsLCBncmFwaHMgb2YgYXJiaXRyYXJ5IHNpemUKK2NhbiBiZSBpbXBvcnRlZC9leHBvcnRlZCBhc3N1bWluZyB0aGF0IHRoZXJlIGlzIGEgSGFkb29wIGBJbnB1dEZvcm1hdGAgb3IgYE91dHB1dEZvcm1hdGAgdG8gc3VwcG9ydCBpdC4KKworSU1QT1JUQU5UOiBSZW1vdGUgR3JlbWxpbiBDb25zb2xlIHVzZXJzIG9yIEdyZW1saW4gTGFuZ3VhZ2UgVmFyaWFudCAoR0xWKSB1c2VycyAoZS5nLiBncmVtbGluLXB5dGhvbikgd2hvIHV0aWxpemUKK3RoZSBgaW8oKWAtc3RlcCBzaG91bGQgcmVjYWxsIHRoYXQgdGhlaXIgYHJlYWQoKWAgb3IgYHdyaXRlKClgIG9wZXJhdGlvbiB3aWxsIG9jY3VyIG9uIHRoZSBzZXJ2ZXIgYW5kIG5vdCBsb2NhbGx5CithbmQgdGhlcmVmb3JlIHRoZSBmaWxlIHNwZWNpZmllZCBmb3IgaW1wb3J0L2V4cG9ydCBtdXN0IGJlIHNvbWV0aGluZyBhY2Nlc3NpYmxlIGJ5IHRoZSBzZXJ2ZXIuCisKK0dyYXBoU09OIGFuZCBHcnlvIGZvcm1hdHMgYXJlIGV4dGVuc2libGUgYWxsb3dpbmcgdXNlcnMgYW5kIGdyYXBoIHByb3ZpZGVycyB0byBleHRlbmQgc3VwcG9ydGVkIHNlcmlhbGl6YXRpb24gb3B0aW9ucy4KK1RoZXNlIGV4dGVuc2lvbnMgYXJlIGV4cG9zZWQgdGhyb3VnaCBgSW9SZWdpc3RyeWAgaW1wbGVtZW50YXRpb25zLiBUbyBhcHBseSBhbiBgSW9SZWdpc3RyeWAgdXNlIHRoZSBgd2l0aCgpYCBvcHRpb24KK2FuZCB0aGUgYElPLnJlZ2lzdHJ5YCBrZXksIHdoZXJlIHRoZSB2YWx1ZSBpcyBlaXRoZXIgYW4gYWN0dWFsIGBJb1JlZ2lzdHJ5YCBpbnN0YW5jZSBvciB0aGUgZnVsbHkgcXVhbGlmaWVkIGNsYXNzCituYW1lIG9mIG9uZS4KKworW3NvdXJjZSxqYXZhXQorLS0tLQorZy5pbyhzb21lSW5wdXRGaWxlKS4KKyAgICB3aXRoKElPLnJlYWRlciwgSU8uZ3J5bykuCisgICAgd2l0aChJTy5yZWdpc3RyeSwgVGlua2VySW9SZWdpc3RyeVYzZDAuaW5zdGFuY2UoKSkKKyAgcmVhZCgpLml0ZXJhdGUoKQorZy5pbyhzb21lT3V0cHV0RmlsZSkuCisgICAgd2l0aChJTy53cml0ZXIsSU8uZ3JhcGhzb24pLgorICAgIHdpdGgoSU8ucmVnaXN0cnksICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnN0cnVjdHVyZS5UaW5rZXJJb1JlZ2lzdHJ5VjNkMCIpCisgIHdyaXRlKCkuaXRlcmF0ZSgpCistLS0tCisKK0dMVnMgd2lsbCBvYnZpb3VzbHkgYWx3YXlzIGJlIGZvcmNlZCB0byB1c2UgdGhlIGxhdHRlciBmb3JtIGFzIHRoZXkgY2FuJ3QgZXhwbGljaXRseSBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgYW4KK2BJb1JlZ2lzdHJ5YCB0byBwYXNzIHRvIHRoZSBzZXJ2ZXIgKG5vciBhcmUgYElvUmVnaXN0cnlgIGluc3RhbmNlcyBuZWNlc3NhcmlseSBzZXJpYWxpemFibGUpLgorCitUaGUgdmVyc2lvbiBvZiB0aGUgZm9ybWF0cyAoZS5nLiBHcmFwaFNPTiAyLjAgb3IgMy4wKSB1dGlsaXplZCBieSBgaW8oKWAgaXMgZGV0ZXJtaW5lZCBlbnRpcmVseSBieSB0aGUgYElPLnJlYWRlcmAgYW5kCitgSU8ud3JpdGVyYCBjb25maWd1cmF0aW9ucyBvciB0aGVpciBkZWZhdWx0cy4gVGhlIGRlZmF1bHRzIHdpbGwgYWx3YXlzIGJlIHRoZSBsYXRlc3QgdmVyc2lvbiBmb3IgdGhlIGN1cnJlbnQgcmVsZWFzZQorb2YgVGlua2VyUG9wLiBJdCBpcyBhbHNvIHBvc3NpYmxlIGZvciBncmFwaCBwcm92aWRlcnMgdG8gb3ZlcnJpZGUgdGhlc2UgZGVmYXVsdHMsIHNvIGNvbnN1bHQgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhlCit1bmRlcmx5aW5nIGdyYXBoIGRhdGFiYXNlIGluIHVzZSBmb3IgYW55IGRldGFpbHMgb24gdGhhdC4KKworRm9yIG1vcmUgYWR2YW5jZWQgY29uZmlndXJhdGlvbiBvZiBgR3JhcGhSZWFkZXJgIGFuZCBgR3JhcGhXcml0ZXJgIG9wZXJhdGlvbnMgKGUuZy4gbm9ybWFsaXplZCBvdXRwdXQgZm9yIEdyYXBoU09OLAorZGlzYWJsaW5nIGNsYXNzIHJlZ2lzdHJhdGlvbnMgZm9yIEdyeW8sIGV0Yy4pIHRoZW4gY29uc3RydWN0IHRoZSBhcHByb3ByaWF0ZSBgR3JhcGhSZWFkZXJgIGFuZCBgR3JhcGhXcml0ZXJgIHVzaW5nCit0aGUgYGJ1aWxkKClgIG1ldGhvZCBvbiB0aGVpciBpbXBsZW1lbnRhdGlvbnMgYW5kIHVzZSBpdCBkaXJlY3RseS4gSXQgY2FuIGJlIHBhc3NlZCBkaXJlY3RseSB0byB0aGUgYElPLnJlYWRlcmAgb3IKK2BJTy53cml0ZXJgIG9wdGlvbnMuIE9idmlvdXNseSwgdGhlc2UgYXJlIEpWTSBiYXNlZCBvcGVyYXRpb25zIGFuZCB0aHVzIG5vdCBhdmFpbGFibGUgdG8gR0xWcyBhcyBwb3J0YWJsZSBmZWF0dXJlcy4KKworYW5jaG9yOl9ncmFwaG1sX3JlYWRlcl93cml0ZXJbXQorW1tncmFwaG1sXV0KKz09PT0gR3JhcGhNTAorCitpbWFnZTpncmVtbGluLWdyYXBobWwucG5nW3dpZHRoPTM1MCxmbG9hdD1sZWZ0XSBUaGUgbGluazpodHRwOi8vZ3JhcGhtbC5ncmFwaGRyYXdpbmcub3JnL1tHcmFwaE1MXSBmaWxlIGZvcm1hdCBpcyBhCitjb21tb24gWE1MLWJhc2VkIHJlcHJlc2VudGF0aW9uIG9mIGEgZ3JhcGguIEl0IGlzIHdpZGVseSBzdXBwb3J0ZWQgYnkgZ3JhcGgtcmVsYXRlZCB0b29scyBhbmQgbGlicmFyaWVzIG1ha2luZyBpdCBhCitzb2xpZCBpbnRlcmNoYW5nZSBmb3JtYXQgZm9yIFRpbmtlclBvcC4gSW4gb3RoZXIgd29yZHMsIGlmIHRoZSBpbnRlbnQgaXMgdG8gd29yayB3aXRoIGdyYXBoIGRhdGEgaW4gY29uanVuY3Rpb24gd2l0aAorYXBwbGljYXRpb25zIG91dHNpZGUgb2YgVGlua2VyUG9wLCBHcmFwaE1MIG1heSBiZSB0aGUgYmVzdCBjaG9pY2UgdG8gZG8gdGhhdC4gQ29tbW9uIHVzZSBjYXNlcyBtaWdodCBiZToKKworKiBHZW5lcmF0ZSBhIGdyYXBoIHVzaW5nIGxpbms6aHR0cHM6Ly9uZXR3b3JreC5naXRodWIuaW8vW05ldHdvcmtYXSwgZXhwb3J0IGl0IHdpdGggR3JhcGhNTCBhbmQgaW1wb3J0IGl0IHRvIFRpbmtlclBvcC4KKyogUHJvZHVjZSBhIHN1YmdyYXBoIGFuZCBleHBvcnQgaXQgdG8gR3JhcGhNTCB0byBiZSBjb25zdW1lZCBieSBhbmQgdmlzdWFsaXplZCBpbiBsaW5rOmh0dHBzOi8vZ2VwaGkub3JnL1tHZXBoaV0uCisqIE1pZ3JhdGUgdGhlIGRhdGEgb2YgYW4gZW50aXJlIGdyYXBoIHRvIGEgZGlmZmVyZW50IGdyYXBoIGRhdGFiYXNlIG5vdCBzdXBwb3J0ZWQgYnkgVGlua2VyUG9wLgorCitXQVJOSU5HOiBHcmFwaE1MIGlzIGEgImxvc3N5IiBmb3JtYXQgaW4gdGhhdCBpdCBvbmx5IHN1cHBvcnRzIHByaW1pdGl2ZSB2YWx1ZXMgZm9yIHByb3BlcnRpZXMgYW5kIGRvZXMgbm90IGhhdmUKK3N1cHBvcnQgZm9yIGBHcmFwaGAgdmFyaWFibGVzLiAgSXQgd2lsbCB1c2UgYHRvU3RyaW5nYCB0byBzZXJpYWxpemUgcHJvcGVydHkgdmFsdWVzIG91dHNpZGUgb2YgdGhvc2UgcHJpbWl0aXZlcy4KKworV0FSTklORzogR3JhcGhNTCBhcyBhIHNwZWNpZmljYXRpb24gYWxsb3dzIGZvciBgPGVkZ2U+YCBhbmQgYDxub2RlPmAgZWxlbWVudHMgdG8gYXBwZWFyIGluIGFueSBvcmRlci4gIE1vc3Qgc29mdHdhcmUKK3RoYXQgd3JpdGVzIEdyYXBoTUwgKGluY2x1ZGluZyBhcyBUaW5rZXJQb3AncyBgR3JhcGhNTFdyaXRlcmApIHdyaXRlIGA8bm9kZT5gIGVsZW1lbnRzIGJlZm9yZSBgPGVkZ2U+YCBlbGVtZW50cy4gIEhvd2V2ZXIgaXQKK2lzIGltcG9ydGFudCB0byBub3RlIHRoYXQgYEdyYXBoTUxSZWFkZXJgIHdpbGwgcmVhZCB0aGlzIGRhdGEgaW4gb3JkZXIgYW5kIG9yZGVyIGNhbiBtYXR0ZXIuICBUaGlzIGlzIGJlY2F1c2UgVGlua2VyUG9wCitkb2VzIG5vdCBhbGxvdyB0aGUgdmVydGV4IGxhYmVsIHRvIGJlIGNoYW5nZWQgYWZ0ZXIgdGhlIHZlcnRleCBoYXMgYmVlbiBjcmVhdGVkLiAgVGhlcmVmb3JlLCBpZiBhbiBgPGVkZ2U+YCBlbGVtZW50Citjb21lcyBiZWZvcmUgdGhlIGA8bm9kZT5gLCB0aGUgbGFiZWwgb24gdGhlIHZlcnRleCB3aWxsIGJlIGlnbm9yZWQuICBJdCBpcyB0aHVzIGJldHRlciB0byBvcmRlciBgPG5vZGU+YCBlbGVtZW50cyBpbiB0aGUKK0dyYXBoTUwgdG8gYXBwZWFyIGJlZm9yZSBhbGwgYDxlZGdlPmAgZWxlbWVudHMgaWYgdmVydGV4IGxhYmVscyBhcmUgaW1wb3J0YW50IHRvIHRoZSBncmFwaC4KKworW3NvdXJjZSxqYXZhXQorLS0tLQorZy5pbygiZ3JhcGgueG1sIikucmVhZCgpLml0ZXJhdGUoKQorZy5pbygiZ3JhcGgueG1sIikud3JpdGUoKS5pdGVyYXRlKCkKKy0tLS0KKworTk9URTogSWYgdXNpbmcgR3JhcGhNTCBnZW5lcmF0ZWQgZnJvbSBUaW5rZXJQb3AgMi54LCByZWFkIG1vcmUgYWJvdXQgaXRzIGluY29tcGF0aWJpbGl0aWVzIGluIHRoZQorbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovdXBncmFkZS8jZ3JhcGhtbC1mb3JtYXRbVXBncmFkZSBEb2N1bWVudGF0aW9uXS4KKworYW5jaG9yOmdyYXBoc29uLXJlYWRlci13cml0ZXJbXQorW1tncmFwaHNvbl1dCis9PT09IEdyYXBoU09OCisKK2ltYWdlOmdyZW1saW4tZ3JhcGhzb24ucG5nW3dpZHRoPTM1MCxmbG9hdD1sZWZ0XSBHcmFwaFNPTiBpcyBhIGxpbms6aHR0cDovL2pzb24ub3JnL1tKU09OXS1iYXNlZCBmb3JtYXQgZXh0ZW5kZWQKK2Zyb20gZWFybGllciB2ZXJzaW9ucyBvZiBUaW5rZXJQb3AuIEl0IGlzIGltcG9ydGFudCB0byBub3RlIHRoYXQgVGlua2VyUG9wJ3MgR3JhcGhTT04gaXMgbm90IGJhY2t3YXJkcyBjb21wYXRpYmxlCit3aXRoIHByaW9yIFRpbmtlclBvcCBHcmFwaFNPTiB2ZXJzaW9ucy4gR3JhcGhTT04gaGFzIHNvbWUgc3VwcG9ydCBmcm9tIGdyYXBoLXJlbGF0ZWQgYXBwbGljYXRpb24gb3V0c2lkZSBvZiBUaW5rZXJQb3AsCitidXQgaXQgaXMgZ2VuZXJhbGx5IGJlc3QgdXNlZCBpbiB0d28gY2FzZXM6CisKKyogQSB0ZXh0IGZvcm1hdCBvZiB0aGUgZ3JhcGggb3IgaXRzIGVsZW1lbnRzIGlzIGRlc2lyZWQgKGUuZy4gZGVidWdnaW5nLCB1c2FnZSBpbiBzb3VyY2UgY29udHJvbCwgZXRjLikKKyogVGhlIGdyYXBoIG9yIGl0cyBlbGVtZW50cyBuZWVkIHRvIGJlIGNvbnN1bWVkIGJ5IGNvZGUgdGhhdCBpcyBub3QgSlZNLWJhc2VkIChlLmcuIEphdmFTY3JpcHQsIFB5dGhvbiwgLk5FVCwgZXRjLikKKworW3NvdXJjZSxqYXZhXQorLS0tLQorZy5pbygiZ3JhcGguanNvbiIpLnJlYWQoKS5pdGVyYXRlKCkKK2cuaW8oImdyYXBoLmpzb24iKS53cml0ZSgpLml0ZXJhdGUoKQorLS0tLQorCitOT1RFOiBBZGRpdGlvbmFsIGRvY3VtZW50YXRpb24gZm9yIEdyYXBoU09OIGNhbiBiZSBmb3VuZCBpbiB0aGUgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovZGV2L2lvLyNncmFwaHNvbltJTyBSZWZlcmVuY2VdLgorCithbmNob3I6Z3J5by1yZWFkZXItd3JpdGVyW10KK1tbZ3J5b11dCis9PT09IEdyeW8KKworaW1hZ2U6Z3JlbWxpbi1rcnlvLnBuZ1t3aWR0aD00MDAsZmxvYXQ9bGVmdF0gbGluazpodHRwczovL2dpdGh1Yi5jb20vRXNvdGVyaWNTb2Z0d2FyZS9rcnlvW0tyeW9dIGlzIGEgcG9wdWxhcgorc2VyaWFsaXphdGlvbiBwYWNrYWdlIGZvciB0aGUgSlZNLiBHcmVtbGluLUtyeW8gaXMgYSBiaW5hcnkgYEdyYXBoYCBzZXJpYWxpemF0aW9uIGZvcm1hdCBmb3IgdXNlIG9uIHRoZSBKVk0gYnkgSlZNCitsYW5ndWFnZXMuIEl0IGlzIGRlc2lnbmVkIHRvIGJlIHNwYWNlIGVmZmljaWVudCwgbm9uLWxvc3N5IGFuZCBpcyBwcm9tb3RlZCBhcyB0aGUgc3RhbmRhcmQgZm9ybWF0IHRvIHVzZSB3aGVuIHdvcmtpbmcKK3dpdGggZ3JhcGggZGF0YSBpbnNpZGUgb2YgdGhlIFRpbmtlclBvcCBzdGFjay4gQSBsaXN0IG9mIGNvbW1vbiB1c2UgY2FzZXMgaXMgcHJlc2VudGVkIGJlbG93OgorCisqIE1pZ3JhdGlvbiBmcm9tIG9uZSBHcmVtbGluIFN0cnVjdHVyZSBpbXBsZW1lbnRhdGlvbiB0byBhbm90aGVyIChlLmcuIGBUaW5rZXJHcmFwaGAgdG8gYE5lbzRqR3JhcGhgKQorKiBTZXJpYWxpemF0aW9uIG9mIGluZGl2aWR1YWwgZ3JhcGggZWxlbWVudHMgdG8gYmUgc2VudCBvdmVyIHRoZSBuZXR3b3JrIHRvIGFub3RoZXIgSlZNLgorKiBCYWNrdXBzIG9mIGluLW1lbW9yeSBncmFwaHMgb3Igc3ViZ3JhcGhzLgorCitXQVJOSU5HOiBXaGVuIG1pZ3JhdGluZyBiZXR3ZWVuIEdyZW1saW4gU3RydWN0dXJlIGltcGxlbWVudGF0aW9ucywgS3J5byBtYXkgbm90IGxvc2UgZGF0YSwgYnV0IGl0IGlzIGltcG9ydGFudCB0bworY29uc2lkZXIgdGhlIGZlYXR1cmVzIG9mIGVhY2ggYEdyYXBoYCBhbmQgd2hldGhlciBvciBub3QgdGhlIGRhdGEgdHlwZXMgc3VwcG9ydGVkIGluIG9uZSB3aWxsIGJlIHN1cHBvcnRlZCBpbiB0aGUKK290aGVyLiAgRmFpbHVyZSB0byBkbyBzbywgbWF5IHJlc3VsdCBpbiBlcnJvcnMuCisKK1tzb3VyY2UsamF2YV0KKy0tLS0KK2cuaW8oImdyYXBoLmtyeW8iKS5yZWFkKCkuaXRlcmF0ZSgpCitnLmlvKCJncmFwaC5rcnlvIikud3JpdGUoKS5pdGVyYXRlKCkKKy0tLS0KKworKkFkZGl0aW9uYWwgUmVmZXJlbmNlcyoKKworbGluazorK2h0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MveC55LnovY29yZS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9ncmFwaC9HcmFwaFRyYXZlcnNhbFNvdXJjZS5odG1sI2lvLWphdmEubGFuZy5TdHJpbmctKytbYGlvKFN0cmluZylgXQorCiBbW2lzLXN0ZXBdXQogPT09IElzIFN0ZXAKIApAQCAtMTMzMiw4ICsxNjQ0LDggQEAKIAogW2dyZW1saW4tZ3Jvb3Z5XQogLS0tLQotZ3JhcGguaW8oZ3JhcGhtbCgpKS5yZWFkR3JhcGgoJ2RhdGEvZ3JhdGVmdWwtZGVhZC54bWwnKQogZyA9IGdyYXBoLnRyYXZlcnNhbCgpCitnLmlvKCdkYXRhL2dyYXRlZnVsLWRlYWQueG1sJykucmVhZCgpLml0ZXJhdGUoKQogZy5WKCkubWF0Y2goCiAgICAgICAgIF9fLmFzKCdhJykuaGFzKCduYW1lJywgJ0dhcmNpYScpLAogICAgICAgICBfXy5hcygnYScpLmluKCd3cml0dGVuQnknKS5hcygnYicpLApAQCAtMTU0MiwxNiArMTg1NCwxNyBAQAogW1ttYXgtc3RlcF1dCiA9PT0gTWF4IFN0ZXAKIAotVGhlIGBtYXgoKWAtc3RlcCAoKm1hcCopIG9wZXJhdGVzIG9uIGEgc3RyZWFtIG9mIG51bWJlcnMgYW5kIGRldGVybWluZXMgd2hpY2ggaXMgdGhlIGxhcmdlc3QgbnVtYmVyIGluIHRoZSBzdHJlYW0uCitUaGUgYG1heCgpYC1zdGVwICgqbWFwKikgb3BlcmF0ZXMgb24gYSBzdHJlYW0gb2YgY29tcGFyYWJsZSBvYmplY3RzIGFuZCBkZXRlcm1pbmVzIHdoaWNoIGlzIHRoZSBsYXN0IG9iamVjdCBhY2NvcmRpbmcgdG8gaXRzIG5hdHVyYWwgb3JkZXIgaW4gdGhlIHN0cmVhbS4KIAogW2dyZW1saW4tZ3Jvb3Z5LG1vZGVybl0KIC0tLS0KIGcuVigpLnZhbHVlcygnYWdlJykubWF4KCkKIGcuVigpLnJlcGVhdChib3RoKCkpLnRpbWVzKDMpLnZhbHVlcygnYWdlJykubWF4KCkKK2cuVigpLnZhbHVlcygnbmFtZScpLm1heCgpCiAtLS0tCiAKIElNUE9SVEFOVDogYG1heChsb2NhbClgIGRldGVybWluZXMgdGhlIG1heCBvZiB0aGUgY3VycmVudCwgbG9jYWwgb2JqZWN0IChub3QgdGhlIG9iamVjdHMgaW4gdGhlIHRyYXZlcnNhbCBzdHJlYW0pLgotVGhpcyB3b3JrcyBmb3IgYENvbGxlY3Rpb25gIGFuZCBgTnVtYmVyYC10eXBlIG9iamVjdHMuIEZvciBhbnkgb3RoZXIgb2JqZWN0LCBhIG1heCBvZiBgRG91YmxlLk5hTmAgaXMgcmV0dXJuZWQuCitUaGlzIHdvcmtzIGZvciBgQ29sbGVjdGlvbmAgYW5kIGBDb21wYXJhYmxlYC10eXBlIG9iamVjdHMuCiAKICpBZGRpdGlvbmFsIFJlZmVyZW5jZXMqCiAKQEAgLTE1NzUsNyArMTg4OCw3IEBACiB0aHVzIGFsdGVyaW5nIHRoZSBhdmVyYWdlLgogCiBJTVBPUlRBTlQ6IGBtZWFuKGxvY2FsKWAgZGV0ZXJtaW5lcyB0aGUgbWVhbiBvZiB0aGUgY3VycmVudCwgbG9jYWwgb2JqZWN0IChub3QgdGhlIG9iamVjdHMgaW4gdGhlIHRyYXZlcnNhbCBzdHJlYW0pLgotVGhpcyB3b3JrcyBmb3IgYENvbGxlY3Rpb25gIGFuZCBgTnVtYmVyYC10eXBlIG9iamVjdHMuIEZvciBhbnkgb3RoZXIgb2JqZWN0LCBhIG1lYW4gb2YgYERvdWJsZS5OYU5gIGlzIHJldHVybmVkLgorVGhpcyB3b3JrcyBmb3IgYENvbGxlY3Rpb25gIGFuZCBgTnVtYmVyYC10eXBlIG9iamVjdHMuCiAKICpBZGRpdGlvbmFsIFJlZmVyZW5jZXMqCiAKQEAgLTE1ODYsMTYgKzE4OTksMTcgQEAKIFtbbWluLXN0ZXBdXQogPT09IE1pbiBTdGVwCiAKLVRoZSBgbWluKClgLXN0ZXAgKCptYXAqKSBvcGVyYXRlcyBvbiBhIHN0cmVhbSBvZiBudW1iZXJzIGFuZCBkZXRlcm1pbmVzIHdoaWNoIGlzIHRoZSBzbWFsbGVzdCBudW1iZXIgaW4gdGhlIHN0cmVhbS4KK1RoZSBgbWluKClgLXN0ZXAgKCptYXAqKSBvcGVyYXRlcyBvbiBhIHN0cmVhbSBvZiBjb21wYXJhYmxlIG9iamVjdHMgYW5kIGRldGVybWluZXMgd2hpY2ggaXMgdGhlIGZpcnN0IG9iamVjdCBhY2NvcmRpbmcgdG8gaXRzIG5hdHVyYWwgb3JkZXIgaW4gdGhlIHN0cmVhbS4KIAogW2dyZW1saW4tZ3Jvb3Z5LG1vZGVybl0KIC0tLS0KIGcuVigpLnZhbHVlcygnYWdlJykubWluKCkKIGcuVigpLnJlcGVhdChib3RoKCkpLnRpbWVzKDMpLnZhbHVlcygnYWdlJykubWluKCkKK2cuVigpLnZhbHVlcygnbmFtZScpLm1pbigpCiAtLS0tCiAKIElNUE9SVEFOVDogYG1pbihsb2NhbClgIGRldGVybWluZXMgdGhlIG1pbiBvZiB0aGUgY3VycmVudCwgbG9jYWwgb2JqZWN0IChub3QgdGhlIG9iamVjdHMgaW4gdGhlIHRyYXZlcnNhbCBzdHJlYW0pLgotVGhpcyB3b3JrcyBmb3IgYENvbGxlY3Rpb25gIGFuZCBgTnVtYmVyYC10eXBlIG9iamVjdHMuIEZvciBhbnkgb3RoZXIgb2JqZWN0LCBhIG1pbiBvZiBgRG91YmxlLk5hTmAgaXMgcmV0dXJuZWQuCitUaGlzIHdvcmtzIGZvciBgQ29sbGVjdGlvbmAgYW5kIGBDb21wYXJhYmxlYC10eXBlIG9iamVjdHMuCiAKICpBZGRpdGlvbmFsIFJlZmVyZW5jZXMqCiAKQEAgLTE2MjcsNyArMTk0MSw3IEBACiBbTk9URSwgY2FwdGlvbj1Hcm9vdnldCiA9PT09CiBUaGUgdGVybSBgbm90YCBpcyBhIHJlc2VydmVkIHdvcmQgaW4gR3Jvb3Z5LCBhbmQgd2hlbiB0aGVyZWZvcmUgdXNlZCBhcyBwYXJ0IG9mIGFuIGFub255bW91cyB0cmF2ZXJzYWwgbXVzdCBiZSByZWZlcnJlZAotdG8gaW4gR3JlbWxpbiB3aXRoIHRoZSBkb3VibGUgdW5kZXJzY29yZSBgK19fLm5vdCgpK2AuCit0byBpbiBHcmVtbGluIHdpdGggdGhlIGRvdWJsZSB1bmRlcnNjb3JlIGBfXy5ub3QoKWAuCiA9PT09CiAKIFtOT1RFLCBjYXB0aW9uPVB5dGhvbl0KQEAgLTE2MzcsNyArMTk1MSw3IEBACiAKIFtncmVtbGluLWdyb292eSxtb2Rlcm5dCiAtLS0tCi1nLlYoKS5ub3QoaGFzTGFiZWwoJ3BlcnNvbicpKS52YWx1ZU1hcCh0cnVlKQorZy5WKCkubm90KGhhc0xhYmVsKCdwZXJzb24nKSkuZWxlbWVudE1hcCgpCiBnLlYoKS5oYXNMYWJlbCgncGVyc29uJykuCiAgIG5vdChvdXQoJ2NyZWF0ZWQnKS5jb3VudCgpLmlzKGd0KDEpKSkudmFsdWVzKCduYW1lJykgICA8MT4KIC0tLS0KQEAgLTE3MDgsOCArMjAyMiw3IEBACiBUaGUgYG9yKClgLXN0ZXAgY2FuIHRha2UgYW4gYXJiaXRyYXJ5IG51bWJlciBvZiB0cmF2ZXJzYWxzLiBBdCBsZWFzdCBvbmUgb2YgdGhlIHRyYXZlcnNhbHMgbXVzdCBwcm9kdWNlIGF0IGxlYXN0IG9uZQogb3V0cHV0IGZvciB0aGUgb3JpZ2luYWwgdHJhdmVyc2VyIHRvIHBhc3MgdG8gdGhlIG5leHQgc3RlcC4KIAotQW4gbGluazpodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0luZml4X25vdGF0aW9uW2luZml4IG5vdGF0aW9uXSBjYW4gYmUgdXNlZCBhcyB3ZWxsLiBUaG91Z2gsIHdpdGggaW5maXggbm90YXRpb24sCi1vbmx5IHR3byB0cmF2ZXJzYWxzIGNhbiBiZSBvcidkIHRvZ2V0aGVyLgorQW4gbGluazpodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0luZml4X25vdGF0aW9uW2luZml4IG5vdGF0aW9uXSBjYW4gYmUgdXNlZCBhcyB3ZWxsLgogCiBbZ3JlbWxpbi1ncm9vdnksbW9kZXJuXQogLS0tLQpAQCAtMTgwNSwxMSArMjExOCwxNSBAQAogZy5WKCkucGFnZVJhbmsoKS5ieSgncGFnZVJhbmsnKS52YWx1ZXMoJ3BhZ2VSYW5rJykKIGcuVigpLmhhc0xhYmVsKCdwZXJzb24nKS4KICAgcGFnZVJhbmsoKS4KLSAgICBieShvdXRFKCdrbm93cycpKS4KLSAgICBieSgnZnJpZW5kUmFuaycpLgotICBvcmRlcigpLmJ5KCdmcmllbmRSYW5rJyxkZXNjKS52YWx1ZU1hcCgnbmFtZScsJ2ZyaWVuZFJhbmsnKQorICAgIHdpdGgoUGFnZVJhbmsuZWRnZXMsIF9fLm91dEUoJ2tub3dzJykpLgorICAgIHdpdGgoUGFnZVJhbmsucHJvcGVydHlOYW1lLCAnZnJpZW5kUmFuaycpLgorICBvcmRlcigpLmJ5KCdmcmllbmRSYW5rJyxkZXNjKS4KKyAgZWxlbWVudE1hcCgnbmFtZScsJ2ZyaWVuZFJhbmsnKQogLS0tLQogCitOb3RlIHRoZSB1c2Ugb2YgdGhlIGB3aXRoKClgIG1vZHVsYXRpbmcgc3RlcCB3aGljaCBwcm92aWRlcyBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gdGhlIGFsZ29yaXRobS4gSXQgdGFrZXMKK2NvbmZpZ3VyYXRpb24ga2V5cyBmcm9tIHRoZSBgUGFnZVJhbmtgIGFuZCBpcyBhdXRvbWF0aWNhbGx5IGltcG9ydGVkIHRvIHRoZSBHcmVtbGluIENvbnNvbGUuCisKIFRoZSA8PGV4cGxhaW4tc3RlcCxgZXhwbGFpbigpYD4+LXN0ZXAgY2FuIGJlIHVzZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHRyYXZlcnNhbCBpcyBjb21waWxlZCBpbnRvIG11bHRpcGxlIGBHcmFwaENvbXB1dGVyYCBqb2JzLgogCiBbZ3JlbWxpbi1ncm9vdnksbW9kZXJuXQpAQCAtMTgxNyw5ICsyMTM0LDEwIEBACiBnID0gZ3JhcGgudHJhdmVyc2FsKCkud2l0aENvbXB1dGVyKCkKIGcuVigpLmhhc0xhYmVsKCdwZXJzb24nKS4KICAgcGFnZVJhbmsoKS4KLSAgICBieShvdXRFKCdrbm93cycpKS4KLSAgICBieSgnZnJpZW5kUmFuaycpLgotICBvcmRlcigpLmJ5KCdmcmllbmRSYW5rJyxkZXNjKS52YWx1ZU1hcCgnbmFtZScsJ2ZyaWVuZFJhbmsnKS5leHBsYWluKCkKKyAgICB3aXRoKFBhZ2VSYW5rLmVkZ2VzLCBfXy5vdXRFKCdrbm93cycpKS4KKyAgICB3aXRoKFBhZ2VSYW5rLnByb3BlcnR5TmFtZSwgJ2ZyaWVuZFJhbmsnKS4KKyAgb3JkZXIoKS5ieSgnZnJpZW5kUmFuaycsZGVzYykuCisgIGVsZW1lbnRNYXAoJ25hbWUnLCdmcmllbmRSYW5rJykuZXhwbGFpbigpCiAtLS0tCiAKICpBZGRpdGlvbmFsIFJlZmVyZW5jZXMqCkBAIC0xODY3LDYgKzIxODUsMjggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fLmluKCdjcmVhdGVkJykudmFsdWVzKCduYW1lJykpLmZvbGQoKSkKIC0tLS0KIAorSXQncyBwb3NzaWJsZSB0byBsaW1pdCB0aGUgcGF0aCB1c2luZyB0aGUgPDx0by1zdGVwLGB0bygpYD4+IG9yIDw8ZnJvbS1zdGVwLGBmcm9tKClgPj4gc3RlcCBtb2R1bGF0b3JzLgorCitbZ3JlbWxpbi1ncm9vdnksbW9kZXJuXQorLS0tLQorZy5WKCkuaGFzKCdwZXJzb24nLCduYW1lJywndmFkYXMnKS5hcygnZScpLgorICAgICAgaW4oJ2tub3dzJykuCisgICAgICBvdXQoJ2tub3dzJykud2hlcmUobmVxKCdlJykpLgorICAgICAgcGF0aCgpLmJ5KCduYW1lJykgPDE+CitnLlYoKS5oYXMoJ3BlcnNvbicsJ25hbWUnLCd2YWRhcycpLmFzKCdlJykuCisgICAgICAgaW4oJ2tub3dzJykuYXMoJ20nKS4KKyAgICAgICBvdXQoJ2tub3dzJykud2hlcmUobmVxKCdlJykpLgorICAgICAgIHBhdGgoKS50bygnbScpLmJ5KCduYW1lJykgPDI+CitnLlYoKS5oYXMoJ3BlcnNvbicsJ25hbWUnLCd2YWRhcycpLmFzKCdlJykuCisgICAgICAgaW4oJ2tub3dzJykuYXMoJ20nKS4KKyAgICAgICBvdXQoJ2tub3dzJykud2hlcmUobmVxKCdlJykpLgorICAgICAgIHBhdGgoKS5mcm9tKCdtJykuYnkoJ25hbWUnKSA8Mz4KKy0tLS0KKworPDE+IE9idGFpbiB0aGUgZnVsbCBwYXRoIGZyb20gdmFkYXMgdG8gam9zaC4KKzwyPiBTYXZlIHRoZSBtaWRkbGUgbm9kZSwgbWFya28sIGFuZCB1c2UgdGhlIGB0bygpYCBtb2R1bGF0b3IgdG8gc2hvdyBvbmx5IHRoZSBwYXRoIGZyb20gdmFkYXMgdG8gbWFya28KKzwzPiBVc2UgdGhlIGBmcm9tKClgIG1kb3VsYXRvciB0byBzaG93IG9ubHkgdGhlIHBhdGggZnJvbSBtYXJrbyB0byBqb3NoCisKIFdBUk5JTkc6IEdlbmVyYXRpbmcgcGF0aCBpbmZvcm1hdGlvbiBpcyBleHBlbnNpdmUgYXMgdGhlIGhpc3Rvcnkgb2YgdGhlIHRyYXZlcnNlciBpcyBzdG9yZWQgaW50byBhIEphdmEgbGlzdC4gV2l0aAogbnVtZXJvdXMgdHJhdmVyc2VycywgdGhlcmUgYXJlIG51bWVyb3VzIGxpc3RzLiBNb3Jlb3ZlciwgaW4gYW4gT0xBUCA8PGdyYXBoY29tcHV0ZXIsYEdyYXBoQ29tcHV0ZXJgPj4gZW52aXJvbm1lbnQKIHRoaXMgYmVjb21lcyBleGNlZWRpbmdseSBwcm9oaWJpdGl2ZSBhcyB0aGVyZSBhcmUgdHJhdmVyc2VycyBlbWFuYXRpbmcgZnJvbSBhbGwgdmVydGljZXMgaW4gdGhlIGdyYXBoIGluIHBhcmFsbGVsLgpAQCAtMTkxMiwxMCArMjI1MiwxNiBAQAogZyA9IGdyYXBoLnRyYXZlcnNhbCgpLndpdGhDb21wdXRlcigpCiBnLlYoKS5wZWVyUHJlc3N1cmUoKS5ieSgnY2x1c3RlcicpLnZhbHVlcygnY2x1c3RlcicpCiBnLlYoKS5oYXNMYWJlbCgncGVyc29uJykuCi0gIHBlZXJQcmVzc3VyZSgpLmJ5KCdjbHVzdGVyJykuCi0gIGdyb3VwKCkuYnkoJ2NsdXN0ZXInKS5ieSgnbmFtZScpCisgIHBlZXJQcmVzc3VyZSgpLgorICAgIHdpdGgoUGVlclByZXNzdXJlLnByb3BlcnR5TmFtZSwgJ2NsdXN0ZXInKS4KKyAgZ3JvdXAoKS4KKyAgICBieSgnY2x1c3RlcicpLgorICAgIGJ5KCduYW1lJykKIC0tLS0KIAorTm90ZSB0aGUgdXNlIG9mIHRoZSBgd2l0aCgpYCBtb2R1bGF0aW5nIHN0ZXAgd2hpY2ggcHJvdmlkZXMgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHRoZSBhbGdvcml0aG0uIEl0IHRha2VzCitjb25maWd1cmF0aW9uIGtleXMgZnJvbSB0aGUgYFBlZXJQcmVzc3VyZWAgY2xhc3MgYW5kIGlzIGF1dG9tYXRpY2FsbHkgaW1wb3J0ZWQgdG8gdGhlIEdyZW1saW4gQ29uc29sZS4KKwogKkFkZGl0aW9uYWwgUmVmZXJlbmNlcyoKIAogbGluazorK2h0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MveC55LnovY29yZS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9ncmFwaC9HcmFwaFRyYXZlcnNhbC5odG1sI3BlZXJQcmVzc3VyZS0tKytbYHBlZXJQcmVzc3VyZSgpYF0KQEAgLTIwNzIsNyArMjQxOCw3IEBACiBnLlYoKS5oYXNMYWJlbCgncGVyc29uJykuCiAgIHByb2dyYW0oUGFnZVJhbmtWZXJ0ZXhQcm9ncmFtLmJ1aWxkKCkucHJvcGVydHkoJ3JhbmsnKS5jcmVhdGUoZ3JhcGgpKS4KICAgICBvcmRlcigpLmJ5KCdyYW5rJywgYXNjKS4KLSAgdmFsdWVNYXAoJ25hbWUnLCAncmFuaycpCisgIGVsZW1lbnRNYXAoJ25hbWUnLCAncmFuaycpCiAtLS0tCiAKIFtbcHJvcGVydGllcy1zdGVwXV0KQEAgLTIxNDgsNiArMjQ5NCwxNyBAQAogbGluazorK2h0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MveC55LnovY29yZS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9ncmFwaC9HcmFwaFRyYXZlcnNhbC5odG1sI3JhbmdlLW9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuU2NvcGUtbG9uZy1sb25nLSsrW2ByYW5nZShTY29wZSxsb25nLGxvbmcpYF0sCiBsaW5rOisraHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy94Lnkuei9jb3JlL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvU2NvcGUuaHRtbCsrW2BTY29wZWBdCiAKK1tbcmVhZC1zdGVwXV0KKz09PSBSZWFkIFN0ZXAKKworVGhlIGByZWFkKClgLXN0ZXAgaXMgbm90IHJlYWxseSBhICJzdGVwIiBidXQgYSBzdGVwIG1vZHVsYXRvciBpbiB0aGF0IGl0IG1vZGlmaWVzIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBgaW8oKWAtc3RlcC4KK01vcmUgc3BlY2lmaWNhbGx5LCBpdCB0ZWxscyB0aGUgYGlvKClgLXN0ZXAgdGhhdCBpdCBpcyBleHBlY3RlZCB0byB1c2UgaXRzIGNvbmZpZ3VyYXRpb24gdG8gcmVhZCBkYXRhIGZyb20gc29tZQorbG9jYXRpb24uIFBsZWFzZSBzZWUgdGhlIDw8aW8tc3RlcCxkb2N1bWVudGF0aW9uPj4gZm9yIGBpbygpYC1zdGVwIGZvciBtb3JlIGNvbXBsZXRlIGRldGFpbHMgb24gdXNhZ2UuCisKKypBZGRpdGlvbmFsIFJlZmVyZW5jZXMqCisKK2xpbms6KytodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzL3gueS56L2Z1bGwvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvZ3JhcGgvR3JhcGhUcmF2ZXJzYWwuaHRtbCNyZWFkLS1bYHJlYWQoKWBdCisKIFtbcmVwZWF0LXN0ZXBdXQogPT09IFJlcGVhdCBTdGVwCiAKQEAgLTIyMDYsNiArMjU2MywyMyBAQAogICBHaXZlbiB0aGF0IGBsb29wcz09MmAsIHRoZSB1bnRpbC1wcmVkaWNhdGUgZmFpbHMgYW5kIHJpcHBsZSBhbmQgbG9wIGFyZSBlbWl0dGVkLgogVGhlcmVmb3JlLCB0aGUgdHJhdmVyc2VyIGhhcyBzZWVuIHRoZSB2ZXJ0aWNlczogbG9wLCB2YWRhcywgam9zaCwgcmlwcGxlLCBhbmQgbG9wLgogCitgcmVwZWF0KClgLXN0ZXBzIG1heSBiZSBuZXN0ZWQgaW5zaWRlIGVhY2ggb3RoZXIgb3IgaW5zaWRlIHRoZSBgZW1pdCgpYCBvciBgdW50aWwoKWAgcHJlZGljYXRlcyBhbmQgdGhleSBjYW4gYWxzbyBiZSAnbmFtZWQnIGJ5IHBhc3NpbmcgYSBzdHJpbmcgYXMgdGhlIGZpcnN0IHBhcmFtZXRlciB0byBgcmVwZWF0KClgLiBUaGUgbG9vcCBjb3VudGVyIG9mIGEgbmFtZWQgcmVwZWF0IHN0ZXAgY2FuIGJlIGFjY2Vzc2VkIHdpdGhpbiB0aGUgbG9vcGVkIGNvbnRleHQgd2l0aCBgbG9vcHMobG9vcE5hbWUpYCB3aGVyZSBgbG9vcE5hbWVgIGlzIHRoZSBuYW1lIHNldCB3aGUgY3JlYXRpbmcgdGhlIGByZXBlYXQoKWAtc3RlcC4KKworW2dyZW1saW4tZ3Jvb3Z5LG1vZGVybl0KKy0tLS0KK2cuVigxKS4KKyAgcmVwZWF0KG91dCgia25vd3MiKSkuCisgICAgdW50aWwocmVwZWF0KG91dCgiY3JlYXRlZCIpKS5lbWl0KGhhcygibmFtZSIsICJsb3AiKSkpIDwxPgorZy5WKDYpLgorICByZXBlYXQoJ2EnLCBib3RoKCdjcmVhdGVkJykuc2ltcGxlUGF0aCgpKS4KKyAgICBlbWl0KHJlcGVhdCgnYicsIGJvdGgoJ2tub3dzJykpLgorICAgICAgICAgICB1bnRpbChsb29wcygnYicpLmFzKCdiJykud2hlcmUobG9vcHMoJ2EnKS5hcygnYicpKSkuCisgIGhhc0lkKDIpKS5kZWR1cCgpIDwyPgorLS0tLQorCis8MT4gU3RhcnRpbmcgZnJvbSB2ZXJ0ZXggMSwga2VlcCBnb2luZyB0YWtpbmcgb3V0Z29pbmcgJ2tub3dzJyBlZGdlcyB1bnRpbCB0aGUgdmVydGV4IHdhcyBjcmVhdGVkIGJ5ICdsb3AnLgorPDI+IFN0YXJ0aW5nIGZyb20gdmVydGV4IDYsIGtlZXAgdGFraW5nIGNyZWF0ZWQgZWRnZXMgaW4gZWl0aGVyIGRpcmVjdGlvbiB1bnRpbCB0aGUgdmVydGV4IGlzIHNhbWUgZGlzdGFuY2UgZnJvbSB2ZXJ0ZXggMiBvdmVyIGtub3dzIGVkZ2VzIGFzIGl0IGlzIGZyb20gdmVydGV4IDYgb3ZlciBjcmVhdGVkIGVkZ2VzLgorCiBGaW5hbGx5LCBub3RlIHRoYXQgYm90aCBgZW1pdCgpYCBhbmQgYHVudGlsKClgIGNhbiB0YWtlIGEgdHJhdmVyc2FsIGFuZCBpbiBzdWNoLCBzaXR1YXRpb25zLCB0aGUgcHJlZGljYXRlIGlzCiBkZXRlcm1pbmVkIGJ5IGB0cmF2ZXJzYWwuaGFzTmV4dCgpYC4gQSBmZXcgZXhhbXBsZXMgYXJlIHByb3ZpZGVkIGJlbG93LgogCkBAIC0yNDE3LDggKzI3OTEsOCBAQAogCiBbZ3JlbWxpbi1ncm9vdnldCiAtLS0tCi1ncmFwaC5pbyhncmFwaG1sKCkpLnJlYWRHcmFwaCgnZGF0YS9ncmF0ZWZ1bC1kZWFkLnhtbCcpCiBnID0gZ3JhcGgudHJhdmVyc2FsKCkKK2cuaW8oJ2RhdGEvZ3JhdGVmdWwtZGVhZC54bWwnKS5yZWFkKCkuaXRlcmF0ZSgpCiBnLlYoKS5oYXNMYWJlbCgnc29uZycpLm91dCgnZm9sbG93ZWRCeScpLmdyb3VwQ291bnQoKS5ieSgnbmFtZScpLgogICAgICAgb3JkZXIobG9jYWwpLmJ5KHZhbHVlcyxkZXNjKS5saW1pdChsb2NhbCwgNSkKIGcuVigpLmhhc0xhYmVsKCdzb25nJykub3V0KCdmb2xsb3dlZEJ5JykuZ3JvdXBDb3VudCgpLmJ5KCduYW1lJykuCkBAIC0yNDMxLDggKzI4MDUsOCBAQAogCiBbZ3JlbWxpbi1ncm9vdnldCiAtLS0tCi1ncmFwaC5pbyhncmFwaG1sKCkpLnJlYWRHcmFwaCgnZGF0YS9ncmF0ZWZ1bC1kZWFkLnhtbCcpCiBnID0gZ3JhcGgudHJhdmVyc2FsKCkKK2cuaW8oJ2RhdGEvZ3JhdGVmdWwtZGVhZC54bWwnKS5yZWFkKCkuaXRlcmF0ZSgpCiBnLlYoKS5oYXNMYWJlbCgnc29uZycpLm91dCgnc3VuZ0J5JykuZ3JvdXBDb3VudCgpLmJ5KCduYW1lJykgPDE+CiBnLlYoKS5oYXNMYWJlbCgnc29uZycpLm91dCgnc3VuZ0J5JykuZ3JvdXBDb3VudCgpLmJ5KCduYW1lJykuc2VsZWN0KHZhbHVlcykgPDI+CiBnLlYoKS5oYXNMYWJlbCgnc29uZycpLm91dCgnc3VuZ0J5JykuZ3JvdXBDb3VudCgpLmJ5KCduYW1lJykuc2VsZWN0KHZhbHVlcykudW5mb2xkKCkuCkBAIC0yNTA2LDYgKzI4ODAsNzAgQEAKIGxpbms6KytodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzL3gueS56L2NvcmUvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvQ29sdW1uLmh0bWwrK1tgQ29sdW1uYF0sCiBsaW5rOisraHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy94Lnkuei9jb3JlL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvUG9wLmh0bWwrK1tgUG9wYF0KIAorW1tzaG9ydGVzdHBhdGgtc3RlcF1dCis9PT0gU2hvcnRlc3RQYXRoIHN0ZXAKKworVGhlIGBzaG9ydGVzdFBhdGgoKWAtc3RlcCBwcm92aWRlcyBhbiBlYXN5IHdheSB0byBmaW5kIHNob3J0ZXN0IG5vbi1jeWNsaWMgcGF0aHMgaW4gYSBncmFwaC4gSXQgaXMgY29uZmlndXJhYmxlCit1c2luZyB0aGUgYHdpdGgoKWAtbW9kdWxhdG9yIHdpdGggdGhlIG9wdGlvbnMgZ2l2ZW4gYmVsb3cuCisKK0lNUE9SVEFOVDogVGhlIGBzaG9ydGVzdFBhdGgoKWAtc3RlcCBpcyBhIGBWZXJ0ZXhDb21wdXRpbmdgLXN0ZXAgYW5kIGFzIHN1Y2gsIGNhbiBvbmx5IGJlIHVzZWQgYWdhaW5zdCBhIGdyYXBoCit0aGF0IHN1cHBvcnRzIGBHcmFwaENvbXB1dGVyYCAoT0xBUCkuCisKK1t3aWR0aD0iMTAwJSIsY29scz0iMywzLDE1LDUiLG9wdGlvbnM9ImhlYWRlciJdCit8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cit8IEtleSB8IFR5cGUgfCBEZXNjcmlwdGlvbiB8IERlZmF1bHQKK3wgYHRhcmdldGAgfCBgVHJhdmVyc2FsYCB8IFNldHMgYSBmaWx0ZXIgdHJhdmVyc2FsIGZvciB0aGUgZW5kIHZlcnRpY2VzIChlLmcuIGArX18uaGFzKCduYW1lJywnbWFya28nKStgKS4gfCBhbGwgdmVydGljZXMgKGArX18uaWRlbnRpdHkoKStgKQorfCBgZWRnZXNgIHwgYFRyYXZlcnNhbGAgb3IgYERpcmVjdGlvbmAgfCBTZXRzIGEgYFRyYXZlcnNhbGAgdGhhdCBlbWl0cyB0aGUgZWRnZXMgdG8gdHJhdmVyc2UgZnJvbSB0aGUgY3VycmVudCB2ZXJ0ZXggb3IgdGhlIGBEaXJlY3Rpb25gIHRvIHRyYXZlcnNlIGR1cmluZyB0aGUgc2hvcnRlc3QgcGF0aCBkaXNjb3ZlcnkuIHwgYERpcmVjdGlvbi5CT1RIYAorfCBgZGlzdGFuY2VgIHwgYFRyYXZlcnNhbGAgb3IgYFN0cmluZ2AgfCBTZXRzIHRoZSBgVHJhdmVyc2FsYCB0aGF0IGNhbGN1bGF0ZXMgdGhlIGRpc3RhbmNlIGZvciB0aGUgY3VycmVudCBlZGdlIG9yIHRoZSBuYW1lIG9mIGFuIGVkZ2UgcHJvcGVydHkgdG8gdXNlIGZvciB0aGUgZGlzdGFuY2UgY2FsY3VsYXRpb25zLiB8IGBfXy5jb25zdGFudCgxKWAKK3wgYG1heERpc3RhbmNlYCB8IGBOdW1iZXJgIHwgU2V0cyB0aGUgZGlzdGFuY2UgbGltaXQgZm9yIGFsbCBzaG9ydGVzdCBwYXRocy4gfCBub25lCit8IGBpbmNsdWRlRWRnZXNgIHwgYEJvb2xlYW5gIHwgV2hldGhlciB0byBpbmNsdWRlIGVkZ2VzIGluIHRoZSByZXN1bHQgb3Igbm90LiB8IGBmYWxzZWAKK3w9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworW2dyZW1saW4tZ3Jvb3Z5LG1vZGVybl0KKy0tLS0KK2cgPSBnLndpdGhDb21wdXRlcigpCitnLlYoKS5zaG9ydGVzdFBhdGgoKSA8MT4KK2cuVigpLmhhcygncGVyc29uJywnbmFtZScsJ21hcmtvJykuc2hvcnRlc3RQYXRoKCkgPDI+CitnLlYoKS5zaG9ydGVzdFBhdGgoKS53aXRoKFNob3J0ZXN0UGF0aC50YXJnZXQsIF9fLmhhcygnbmFtZScsJ3BldGVyJykpIDwzPgorZy5WKCkuc2hvcnRlc3RQYXRoKCkuCisgICAgICAgIHdpdGgoU2hvcnRlc3RQYXRoLmVkZ2VzLCBEaXJlY3Rpb24uSU4pLgorICAgICAgICB3aXRoKFNob3J0ZXN0UGF0aC50YXJnZXQsIF9fLmhhcygnbmFtZScsJ2pvc2gnKSkgPDQ+CitnLlYoKS5oYXMoJ3BlcnNvbicsJ25hbWUnLCdtYXJrbycpLgorICAgICAgc2hvcnRlc3RQYXRoKCkuCisgICAgICAgIHdpdGgoU2hvcnRlc3RQYXRoLnRhcmdldCwgX18uaGFzKCduYW1lJywnam9zaCcpKSA8NT4KK2cuVigpLmhhcygncGVyc29uJywnbmFtZScsJ21hcmtvJykuCisgICAgICBzaG9ydGVzdFBhdGgoKS4KKyAgICAgICAgd2l0aChTaG9ydGVzdFBhdGgudGFyZ2V0LCBfXy5oYXMoJ25hbWUnLCdqb3NoJykpLgorICAgICAgICB3aXRoKFNob3J0ZXN0UGF0aC5kaXN0YW5jZSwgJ3dlaWdodCcpIDw2PgorZy5WKCkuaGFzKCdwZXJzb24nLCduYW1lJywnbWFya28nKS4KKyAgICAgIHNob3J0ZXN0UGF0aCgpLgorICAgICAgICB3aXRoKFNob3J0ZXN0UGF0aC50YXJnZXQsIF9fLmhhcygnbmFtZScsJ2pvc2gnKSkuCisgICAgICAgIHdpdGgoU2hvcnRlc3RQYXRoLmluY2x1ZGVFZGdlcywgdHJ1ZSkgPDc+CistLS0tCisKKzwxPiBGaW5kIGFsbCBzaG9ydGVzdCBwYXRocy4KKzwyPiBGaW5kIGFsbCBzaG9ydGVzdCBwYXRocyBmcm9tIGBtYXJrb2AuCis8Mz4gRmluZCBhbGwgc2hvcnRlc3QgcGF0aHMgdG8gYHBldGVyYC4KKzw0PiBGaW5kIGFsbCBpbi1kaXJlY3RlZCBwYXRocyB0byBgam9zaGAuCis8NT4gRmluZCBhbGwgc2hvcnRlc3QgcGF0aHMgZnJvbSBgbWFya29gIHRvIGBqb3NoYC4KKzw2PiBGaW5kIGFsbCBzaG9ydGVzdCBwYXRocyBmcm9tIGBtYXJrb2AgdG8gYGpvc2hgIHVzaW5nIGEgY3VzdG9tIGRpc3RhbmNlIHByb3BlcnR5LgorPDc+IEZpbmQgYWxsIHNob3J0ZXN0IHBhdGhzIGZyb20gYG1hcmtvYCB0byBgam9zaGAgYW5kIGluY2x1ZGUgZWRnZXMgaW4gdGhlIHJlc3VsdC4KKworW2dyZW1saW4tZ3Jvb3Z5LG1vZGVybl0KKy0tLS0KK2cuaW5qZWN0KGcud2l0aENvbXB1dGVyKCkuVigpLnNob3J0ZXN0UGF0aCgpLgorICAgICAgICAgICB3aXRoKFNob3J0ZXN0UGF0aC5kaXN0YW5jZSwgJ3dlaWdodCcpLgorICAgICAgICAgICB3aXRoKFNob3J0ZXN0UGF0aC5pbmNsdWRlRWRnZXMsIHRydWUpLgorICAgICAgICAgICB3aXRoKFNob3J0ZXN0UGF0aC5tYXhEaXN0YW5jZSwgMSkudG9MaXN0KCkudG9BcnJheSgpKS4KKyAgbWFwKHVuZm9sZCgpLnZhbHVlcygnbmFtZScsJ3dlaWdodCcpLmZvbGQoKSkgPDE+CistLS0tCisKKzwxPiBGaW5kIGFsbCBzaG9ydGVzdCBwYXRocyB1c2luZyBhIGN1c3RvbSBkaXN0YW5jZSBwcm9wZXJ0eSBhbmQgbGltaXQgdGhlIGRpc3RhbmNlIHRvIDEuIEluamVjdCB0aGUgcmVzdWx0IGludG8gYSBPTFRQIGBHcmFwaFRyYXZlcnNhbGAgaW4gb3JkZXIgdG8gYmUgYWJsZSB0byBzZWxlY3QgcHJvcGVydGllcyBmcm9tIGFsbCBlbGVtZW50cyBpbiBhbGwgcGF0aHMuCisKKypBZGRpdGlvbmFsIFJlZmVyZW5jZXMqCisKK2xpbms6KytodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzL3gueS56L2NvcmUvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvZ3JhcGgvR3JhcGhUcmF2ZXJzYWwuaHRtbCNzaG9ydGVzdFBhdGgtLSsrW2BzaG9ydGVzdFBhdGgoKWBdCisKIFtbc2ltcGxlcGF0aC1zdGVwXV0KID09PSBTaW1wbGVQYXRoIFN0ZXAKIApAQCAtMjU5MywzNCArMzAzMSw2IEBACiBsaW5rOisraHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy94Lnkuei9jb3JlL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL2dyYXBoL0dyYXBoVHJhdmVyc2FsLmh0bWwjc2tpcC1vcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlNjb3BlLWxvbmctKytbYHNraXAoU2NvcGUsbG9uZylgXSwKIGxpbms6KytodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzL3gueS56L2NvcmUvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9TY29wZS5odG1sKytbYFNjb3BlYF0KIAotW1tzdG9yZS1zdGVwXV0KLT09PSBTdG9yZSBTdGVwCi0KLVdoZW4gbGluazpodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xhenlfZXZhbHVhdGlvbltsYXp5XSBhZ2dyZWdhdGlvbiBpcyBuZWVkZWQsIGBzdG9yZSgpYC1zdGVwICgqc2lkZUVmZmVjdCopCi1zaG91bGQgYmUgdXNlZCBvdmVyIDw8YWdncmVnYXRlLXN0ZXAsYGFnZ3JlZ2F0ZSgpYD4+LiBUaGUgdHdvIHN0ZXBzIGRpZmZlciBpbiB0aGF0IGBzdG9yZSgpYCBkb2VzIG5vdCBibG9jayBhbmQgb25seQotc3RvcmVzIG9iamVjdHMgaW4gaXRzIHNpZGUtZWZmZWN0IGNvbGxlY3Rpb24gYXMgdGhleSBwYXNzIHRocm91Z2guCi0KLVtncmVtbGluLWdyb292eSxtb2Rlcm5dCi0tLS0tCi1nLlYoKS5hZ2dyZWdhdGUoJ3gnKS5saW1pdCgxKS5jYXAoJ3gnKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLWcuVigpLnN0b3JlKCd4JykubGltaXQoMSkuY2FwKCd4JykKLWcud2l0aG91dFN0cmF0ZWdpZXMoRWFybHlMaW1pdFN0cmF0ZWd5KS5WKCkuc3RvcmUoJ3gnKS5saW1pdCgxKS5jYXAoJ3gnKQotLS0tLQotCi1JdCBpcyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IGBFYXJseUxpbWl0U3RyYXRlZ3lgIGludHJvZHVjZWQgaW4gMy4zLjUgYWx0ZXJzIHRoZSBiZWhhdmlvciBvZiBgc3RvcmUoKWAuIFdpdGhvdXQgdGhhdAotc3RyYXRlZ3kgKHdoaWNoIGlzIGluc3RhbGxlZCBieSBkZWZhdWx0KSwgdGhlcmUgYXJlIHR3byByZXN1bHRzIGluIHRoZSBgc3RvcmUoKWAgc2lkZS1lZmZlY3QgZXZlbiB0aG91Z2ggdGhlIGludGVydmFsCi1zZWxlY3Rpb24gaXMgZm9yIDEgb2JqZWN0LiBSZWFsaXplIHRoYXQgd2hlbiB0aGUgc2Vjb25kIG9iamVjdCBpcyBvbiBpdHMgd2F5IHRvIHRoZSBgcmFuZ2UoKWAgZmlsdGVyIChpLmUuIGBbMC4uMV1gKSwKLWl0IHBhc3NlcyB0aHJvdWdoIGBzdG9yZSgpYCBhbmQgdGh1cywgc3RvcmVkIGJlZm9yZSBmaWx0ZXJlZC4KLQotW2dyZW1saW4tZ3Jvb3Z5LG1vZGVybl0KLS0tLS0KLWcuRSgpLnN0b3JlKCd4JykuYnkoJ3dlaWdodCcpLmNhcCgneCcpCi0tLS0tCi0KLSpBZGRpdGlvbmFsIFJlZmVyZW5jZXMqCi0KLWxpbms6KytodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzL3gueS56L2NvcmUvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvZ3JhcGgvR3JhcGhUcmF2ZXJzYWwuaHRtbCNzdG9yZS1qYXZhLmxhbmcuU3RyaW5nLSsrW2BzdG9yZShTdHJpbmcpYF0KLQogW1tzdWJncmFwaC1zdGVwXV0KID09PSBTdWJncmFwaCBTdGVwCiAKQEAgLTI3MDEsNyArMzExMSw3IEBACiBbW3N1bS1zdGVwXV0KID09PSBTdW0gU3RlcAogCi1UaGUgYHN1bSgpYC1zdGVwICgqbWFwKikgb3BlcmF0ZXMgb24gYSBzdHJlYW0gb2YgbnVtYmVycyBhbmQgc3VtcyB0aGUgbnVtYmVycyB0b2dldGhlciB0byB5aWVsZCBhIGRvdWJsZS4gTm90ZSB0aGF0CitUaGUgYHN1bSgpYC1zdGVwICgqbWFwKikgb3BlcmF0ZXMgb24gYSBzdHJlYW0gb2YgbnVtYmVycyBhbmQgc3VtcyB0aGUgbnVtYmVycyB0b2dldGhlciB0byB5aWVsZCBhIHJlc3VsdC4gTm90ZSB0aGF0CiB0aGUgY3VycmVudCB0cmF2ZXJzZXIgbnVtYmVyIGlzIG11bHRpcGxpZWQgYnkgdGhlIHRyYXZlcnNlciBidWxrIHRvIGRldGVybWluZSBob3cgbWFueSBzdWNoIG51bWJlcnMgYXJlIGJlaW5nCiByZXByZXNlbnRlZC4KIApAQCAtMjcxMiw3ICszMTIyLDcgQEAKIC0tLS0KIAogSU1QT1JUQU5UOiBgc3VtKGxvY2FsKWAgZGV0ZXJtaW5lcyB0aGUgc3VtIG9mIHRoZSBjdXJyZW50LCBsb2NhbCBvYmplY3QgKG5vdCB0aGUgb2JqZWN0cyBpbiB0aGUgdHJhdmVyc2FsIHN0cmVhbSkuCi1UaGlzIHdvcmtzIGZvciBgQ29sbGVjdGlvbmAtdHlwZSBvYmplY3RzLiBGb3IgYW55IG90aGVyIG9iamVjdCwgYSBzdW0gb2YgYERvdWJsZS5OYU5gIGlzIHJldHVybmVkLgorVGhpcyB3b3JrcyBmb3IgYENvbGxlY3Rpb25gLXR5cGUgb2JqZWN0cy4KIAogKkFkZGl0aW9uYWwgUmVmZXJlbmNlcyoKIApAQCAtMjc0Nyw3ICszMTU3LDcgQEAKIGcuVigpLmFzKCdhJykub3V0KCkuYXMoJ2EnKS5vdXQoKS5hcygnYScpLnNlbGVjdCgnYScpLmJ5KHRhaWwobG9jYWwpKS52YWx1ZXMoJ25hbWUnKSA8MT4KIGcuVigpLmFzKCdhJykub3V0KCkuYXMoJ2EnKS5vdXQoKS5hcygnYScpLnNlbGVjdCgnYScpLmJ5KHVuZm9sZCgpLnZhbHVlcygnbmFtZScpLmZvbGQoKSkudGFpbChsb2NhbCkgPDI+CiBnLlYoKS5hcygnYScpLm91dCgpLmFzKCdhJykub3V0KCkuYXMoJ2EnKS5zZWxlY3QoJ2EnKS5ieSh1bmZvbGQoKS52YWx1ZXMoJ25hbWUnKS5mb2xkKCkpLnRhaWwobG9jYWwsIDIpIDwzPgotZy5WKCkudmFsdWVNYXAoKS50YWlsKGxvY2FsKSA8ND4KK2cuVigpLmVsZW1lbnRNYXAoKS50YWlsKGxvY2FsKSA8ND4KIC0tLS0KIAogPDE+IE9ubHkgdGhlIG1vc3QgcmVjZW50IG5hbWUgZnJvbSB0aGUgImEiIHN0ZXAgKGBMaXN0PFZlcnRleD5gIGJlY29tZXMgYFZlcnRleGApLgpAQCAtMjkzNyw3ICszMzQ3LDExIEBACiBbW3ZhbHVlbWFwLXN0ZXBdXQogPT09IFZhbHVlTWFwIFN0ZXAKIAotVGhlIGB2YWx1ZU1hcCgpYC1zdGVwIHlpZWxkcyBhIE1hcCByZXByZXNlbnRhdGlvbiBvZiB0aGUgcHJvcGVydGllcyBvZiBhbiBlbGVtZW50LgorVGhlIGB2YWx1ZU1hcCgpYC1zdGVwIHlpZWxkcyBhIGBNYXBgIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBwcm9wZXJ0aWVzIG9mIGFuIGVsZW1lbnQuCisKK0lNUE9SVEFOVDogVGhpcyBzdGVwIGlzIHRoZSBwcmVjdXJzb3IgdG8gdGhlIDw8ZWxlbWVudG1hcC1zdGVwLGVsZW1lbnRNYXAoKS1zdGVwPj4uIFVzZXJzIHNob3VsZCB0eXBpY2FsbHkKK2Nob29zZSBgZWxlbWVudE1hcCgpYCB1bmxlc3MgdGhleSB1dGlsaXplIG11bHRpLXByb3BlcnRpZXMuIGBlbGVtZW50TWFwKClgIGVmZmVjdGl2ZWx5IG1pbWljcyB0aGUgZnVuY3Rpb25hbGl0eSBvZgorYHZhbHVlTWFwKHRydWUpLmJ5KHVuZm9sZCgpKWAgYXMgYSBzaW5nbGUgc3RlcC4KIAogW2dyZW1saW4tZ3Jvb3Z5LG1vZGVybl0KIC0tLS0KQEAgLTI5NDgsOCArMzM2Miw4IEBACiAtLS0tCiAKIEl0IGlzIGltcG9ydGFudCB0byBub3RlIHRoYXQgdGhlIG1hcCBvZiBhIHZlcnRleCBtYWludGFpbnMgYSBsaXN0IG9mIHZhbHVlcyBmb3IgZWFjaCBrZXkuIFRoZSBtYXAgb2YgYW4gZWRnZSBvcgotdmVydGV4LXByb3BlcnR5IHJlcHJlc2VudHMgYSBzaW5nbGUgcHJvcGVydHkgKG5vdCBhIGxpc3QpLiBUaGUgcmVhc29uIGlzIHRoYXQgdmVydGljZXMgaW4gVGlua2VyUG9wMyBsZXZlcmFnZQotPDx2ZXJ0ZXgtcHJvcGVydGllcyx2ZXJ0ZXggcHJvcGVydGllcz4+IHdoaWNoIGFyZSBzdXBwb3J0IG11bHRpcGxlIHZhbHVlcyBwZXIga2V5LiBVc2luZyB0aGUgPDx0aGUtY3Jldy10b3ktZ3JhcGgsCit2ZXJ0ZXgtcHJvcGVydHkgcmVwcmVzZW50cyBhIHNpbmdsZSBwcm9wZXJ0eSAobm90IGEgbGlzdCkuIFRoZSByZWFzb24gaXMgdGhhdCB2ZXJ0aWNlcyBpbiBUaW5rZXJQb3AgbGV2ZXJhZ2UKKzw8dmVydGV4LXByb3BlcnRpZXMsdmVydGV4IHByb3BlcnRpZXM+PiB3aGljaCBzdXBwb3J0IG11bHRpcGxlIHZhbHVlcyBwZXIga2V5LiBVc2luZyB0aGUgPDx0aGUtY3Jldy10b3ktZ3JhcGgsCiAiVGhlIENyZXciPj4gdG95IGdyYXBoLCB0aGUgcG9pbnQgaXMgbWFkZSBleHBsaWNpdC4KIAogW2dyZW1saW4tZ3Jvb3Z5LHRoZUNyZXddCkBAIC0yOTU5LDE5ICszMzczLDI2IEBACiBnLlYoKS5oYXMoJ25hbWUnLCdtYXJrbycpLnByb3BlcnRpZXMoJ2xvY2F0aW9uJykudmFsdWVNYXAoKQogLS0tLQogCi1JZiB0aGUgYGlkYCwgYGxhYmVsYCwgYGtleWAsIGFuZCBgdmFsdWVgIG9mIHRoZSBgRWxlbWVudGAgaXMgZGVzaXJlZCwgdGhlbiBhIGJvb2xlYW4gdHJpZ2dlcnMgaXRzIGluc2VydGlvbiBpbnRvIHRoZQotcmV0dXJuZWQgbWFwLgorVG8gdHVybiBsaXN0IG9mIHZhbHVlcyBpbnRvIHNpbmdsZSBpdGVtcywgdGhlIGBieSgpYCBtb2R1bGF0b3IgY2FuIGJlIHVzZWQgYXMgc2hvd24gYmVsb3cuCiAKIFtncmVtbGluLWdyb292eSx0aGVDcmV3XQogLS0tLQotZy5WKCkuaGFzTGFiZWwoJ3BlcnNvbicpLnZhbHVlTWFwKHRydWUpCi1nLlYoKS5oYXNMYWJlbCgncGVyc29uJykudmFsdWVNYXAodHJ1ZSwnbmFtZScpCi1nLlYoKS5oYXNMYWJlbCgncGVyc29uJykucHJvcGVydGllcygnbG9jYXRpb24nKS52YWx1ZU1hcCh0cnVlKQorZy5WKCkudmFsdWVNYXAoKS5ieSh1bmZvbGQoKSkKK2cuVigpLnZhbHVlTWFwKCduYW1lJywnbG9jYXRpb24nKS5ieSgpLmJ5KHVuZm9sZCgpKQorLS0tLQorCitJZiB0aGUgYGlkYCwgYGxhYmVsYCwgYGtleWAsIGFuZCBgdmFsdWVgIG9mIHRoZSBgRWxlbWVudGAgaXMgZGVzaXJlZCwgdGhlbiB0aGUgYHdpdGgoKWAgbW9kdWxhdG9yIGNhbiBiZSB1c2VkIHRvCit0cmlnZ2VyIGl0cyBpbnNlcnRpb24gaW50byB0aGUgcmV0dXJuZWQgbWFwLgorCitbZ3JlbWxpbi1ncm9vdnksdGhlQ3Jld10KKy0tLS0KK2cuVigpLmhhc0xhYmVsKCdwZXJzb24nKS52YWx1ZU1hcCgpLndpdGgoV2l0aE9wdGlvbnMudG9rZW5zKQorZy5WKCkuaGFzTGFiZWwoJ3BlcnNvbicpLnZhbHVlTWFwKCduYW1lJykud2l0aChXaXRoT3B0aW9ucy50b2tlbnMsIFdpdGhPcHRpb25zLmxhYmVscykKK2cuVigpLmhhc0xhYmVsKCdwZXJzb24nKS5wcm9wZXJ0aWVzKCdsb2NhdGlvbicpLnZhbHVlTWFwKCkud2l0aChXaXRoT3B0aW9ucy50b2tlbnMsIFdpdGhPcHRpb25zLnZhbHVlcykKIC0tLS0KIAogKkFkZGl0aW9uYWwgUmVmZXJlbmNlcyoKIAotbGluazorK2h0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MveC55LnovY29yZS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9ncmFwaC9HcmFwaFRyYXZlcnNhbC5odG1sI3ZhbHVlTWFwLWJvb2xlYW4tamF2YS5sYW5nLlN0cmluZy4uLi0rK1tgdmFsdWVNYXAoYm9vbGVhbixTdHJpbmcuLi4pYF0sCiBsaW5rOisraHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy94Lnkuei9jb3JlL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL2dyYXBoL0dyYXBoVHJhdmVyc2FsLmh0bWwjdmFsdWVNYXAtamF2YS5sYW5nLlN0cmluZy4uLi0rK1tgdmFsdWVNYXAoU3RyaW5nLi4uKWBdCiAKIFtbdmFsdWVzLXN0ZXBdXQpAQCAtMzAxMiw3ICszNDMzLDcgQEAKIFtOT1RFLCBjYXB0aW9uPUdyb292eV0KID09PT0KIFRoZSB0ZXJtIGBpbmAgaXMgYSByZXNlcnZlZCB3b3JkIGluIEdyb292eSwgYW5kIHdoZW4gdGhlcmVmb3JlIHVzZWQgYXMgcGFydCBvZiBhbiBhbm9ueW1vdXMgdHJhdmVyc2FsIG11c3QgYmUgcmVmZXJyZWQKLXRvIGluIEdyZW1saW4gd2l0aCB0aGUgZG91YmxlIHVuZGVyc2NvcmUgYCtfXy5pbigpK2AuCit0byBpbiBHcmVtbGluIHdpdGggdGhlIGRvdWJsZSB1bmRlcnNjb3JlIGBfXy5pbigpYC4KID09PT0KIAogW05PVEUsIGNhcHRpb249SmF2YXNjcmlwdF0KQEAgLTMxMTYsNyArMzUzNyw3IEBACiBXQVJOSU5HOiBUaGUgYW5vbnltb3VzIHRyYXZlcnNhbCBvZiBgd2hlcmUoKWAgcHJvY2Vzc2VzIHRoZSBjdXJyZW50IG9iamVjdCAibG9jYWxseSIuIEluIE9MQVAsIHdoZXJlIHRoZSBhdG9taWMgdW5pdAogb2YgY29tcHV0aW5nIGlzIHRoZSB2ZXJ0ZXggYW5kIGl0cyBsb2NhbCAic3RhciBncmFwaCwiIGl0IGlzIGltcG9ydGFudCB0aGF0IHRoZSBhbm9ueW1vdXMgdHJhdmVyc2FsIGRvZXMgbm90IGxlYXZlCiB0aGUgY29uZmluZXMgb2YgdGhlIHZlcnRleCdzIHN0YXIgZ3JhcGguIEluIG90aGVyIHdvcmRzLCBpdCBjYW4gbm90IHRyYXZlcnNlIHRvIGFuIGFkamFjZW50IHZlcnRleCdzIHByb3BlcnRpZXMgb3IKLWVkZ2VzLiAKK2VkZ2VzLgogCiAqQWRkaXRpb25hbCBSZWZlcmVuY2VzKgogCkBAIC0zMTI1LDI3ICszNTQ2LDYzIEBACiBsaW5rOisraHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9qYXZhZG9jcy94Lnkuei9jb3JlL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL2dyYXBoL0dyYXBoVHJhdmVyc2FsLmh0bWwjd2hlcmUtb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWwtKytbYHdoZXJlKFRyYXZlcnNhbClgXSwKIGxpbms6KytodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2phdmFkb2NzL3gueS56L2NvcmUvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9QLmh0bWwrK1tgUGBdCiAKK1tbd2l0aC1zdGVwXV0KKz09PSBXaXRoIFN0ZXAKKworVGhlIGB3aXRoKClgLXN0ZXAgaXMgbm90IGFuIGFjdHVhbCBzdGVwLCBidXQgaXMgaW5zdGVhZCBhICJzdGVwIG1vZHVsYXRvciIgd2hpY2ggbW9kaWZpZXMgdGhlIGJlaGF2aW9yIG9mIHRoZSBzdGVwCitwcmlvciB0byBpdC4gVGhlIGB3aXRoKClgLXN0ZXAgcHJvdmlkZXMgYWRkaXRpb25hbCAiY29uZmlndXJhdGlvbiIgaW5mb3JtYXRpb24gdG8gc3RlcHMgdGhhdCBpbXBsZW1lbnQgdGhlIGBDb25maWd1cmluZ2AKK2ludGVyZmFjZS4gU3RlcHMgdGhhdCBhbGxvdyBmb3IgdGhpcyB0eXBlIG9mIG1vZHVsYXRpb24gd2lsbCBleHBsaWNpdGx5IHN0YXRlIHNvIGluIHRoZWlyIGRvY3VtZW50YXRpb24uCisKK1tOT1RFLCBjYXB0aW9uPUphdmFzY3JpcHRdCis9PT09CitUaGUgdGVybSBgd2l0aGAgaXMgYSByZXNlcnZlZCB3b3JkIGluIEphdmFzY3JpcHQsIGFuZCB0aGVyZWZvcmUgbXVzdCBiZSByZWZlcnJlZCB0byBpbiBHcmVtbGluIHdpdGggYHdpdGhfKClgLgorPT09PQorCitbTk9URSwgY2FwdGlvbj1QeXRob25dCis9PT09CitUaGUgdGVybSBgd2l0aGAgaXMgYSByZXNlcnZlZCB3b3JkIGluIFB5dGhvbiwgYW5kIHRoZXJlZm9yZSBtdXN0IGJlIHJlZmVycmVkIHRvIGluIEdyZW1saW4gd2l0aCBgd2l0aF8oKWAuCis9PT09CisKK1tbd3JpdGUtc3RlcF1dCis9PT0gV3JpdGUgU3RlcAorCitUaGUgYHdyaXRlKClgLXN0ZXAgaXMgbm90IHJlYWxseSBhICJzdGVwIiBidXQgYSBzdGVwIG1vZHVsYXRvciBpbiB0aGF0IGl0IG1vZGlmaWVzIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBgaW8oKWAtc3RlcC4KK01vcmUgc3BlY2lmaWNhbGx5LCBpdCB0ZWxscyB0aGUgYGlvKClgLXN0ZXAgdGhhdCBpdCBpcyBleHBlY3RlZCB0byB1c2UgaXRzIGNvbmZpZ3VyYXRpb24gdG8gd3JpdGUgZGF0YSB0byBzb21lCitsb2NhdGlvbi4gUGxlYXNlIHNlZSB0aGUgPDxpby1zdGVwLGRvY3VtZW50YXRpb24+PiBmb3IgYGlvKClgLXN0ZXAgZm9yIG1vcmUgY29tcGxldGUgZGV0YWlscyBvbiB1c2FnZS4KKworKkFkZGl0aW9uYWwgUmVmZXJlbmNlcyoKKworbGluazorK2h0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvamF2YWRvY3MveC55LnovZnVsbC9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9ncmFwaC9HcmFwaFRyYXZlcnNhbC5odG1sI3dyaXRlLS1bYHdyaXRlKClgXQorCiBbW2Etbm90ZS1vbi1wcmVkaWNhdGVzXV0KID09IEEgTm90ZSBvbiBQcmVkaWNhdGVzCiAKLUEgYFBgIGlzIGEgcHJlZGljYXRlIG9mIHRoZSBmb3JtIGBGdW5jdGlvbjxPYmplY3QsQm9vbGVhbj5gLiBUaGF0IGlzLCBnaXZlbiBzb21lIG9iamVjdCwgcmV0dXJuIHRydWUgb3IgZmFsc2UuIFRoZQotcHJvdmlkZWQgcHJlZGljYXRlcyBhcmUgb3V0bGluZWQgaW4gdGhlIHRhYmxlIGJlbG93IGFuZCBhcmUgdXNlZCBpbiB2YXJpb3VzIHN0ZXBzIHN1Y2ggYXMgPDxoYXMtc3RlcCxgaGFzKClgPj4tc3RlcCwKK0EgYFBgIGlzIGEgcHJlZGljYXRlIG9mIHRoZSBmb3JtIGBGdW5jdGlvbjxPYmplY3QsQm9vbGVhbj5gLiBUaGF0IGlzLCBnaXZlbiBzb21lIG9iamVjdCwgcmV0dXJuIHRydWUgb3IgZmFsc2UuIEFzIG9mCit0aGUgcmVsYXNlIG9mIFRpbmtlclBvcCAzLjQuMCwgR3JlbWxpbiBhbHNvIHN1cHBvcnRzIHNpbXBsZSB0ZXh0IHByZWRpY2F0ZXMsIHdoaWNoIG9ubHkgd29yayBvbiBgU3RyaW5nYCB2YWx1ZXMuIFRoZSBgVGV4dFBgCit0ZXh0IHByZWRpY2F0ZXMgZXh0ZW5kIHRoZSBgUGAgcHJlZGljYXRlcywgYnV0IGFyZSBzcGVjaWFsaXplZCBpbiB0aGF0IHRoZXkgYXJlIG9mIHRoZSBmb3JtIGBGdW5jdGlvbjxTdHJpbmcsQm9vbGVhbj5gLgorVGhlIHByb3ZpZGVkIHByZWRpY2F0ZXMgYXJlIG91dGxpbmVkIGluIHRoZSB0YWJsZSBiZWxvdyBhbmQgYXJlIHVzZWQgaW4gdmFyaW91cyBzdGVwcyBzdWNoIGFzIDw8aGFzLXN0ZXAsYGhhcygpYD4+LXN0ZXAsCiA8PHdoZXJlLXN0ZXAsYHdoZXJlKClgPj4tc3RlcCwgPDxpcy1zdGVwLGBpcygpYD4+LXN0ZXAsIGV0Yy4KIAogW3dpZHRoPSIxMDAlIixjb2xzPSIzLDE1IixvcHRpb25zPSJoZWFkZXIiXQogfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogfCBQcmVkaWNhdGUgfCBEZXNjcmlwdGlvbgotfCBgZXEob2JqZWN0KWAgfCBJcyB0aGUgaW5jb21pbmcgb2JqZWN0IGVxdWFsIHRvIHRoZSBwcm92aWRlZCBvYmplY3Q/Ci18IGBuZXEob2JqZWN0KWAgfCBJcyB0aGUgaW5jb21pbmcgb2JqZWN0IG5vdCBlcXVhbCB0byB0aGUgcHJvdmlkZWQgb2JqZWN0PwotfCBgbHQobnVtYmVyKWAgfCBJcyB0aGUgaW5jb21pbmcgbnVtYmVyIGxlc3MgdGhhbiB0aGUgcHJvdmlkZWQgbnVtYmVyPwotfCBgbHRlKG51bWJlcilgIHwgSXMgdGhlIGluY29taW5nIG51bWJlciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHByb3ZpZGVkIG51bWJlcj8KLXwgYGd0KG51bWJlcilgIHwgSXMgdGhlIGluY29taW5nIG51bWJlciBncmVhdGVyIHRoYW4gdGhlIHByb3ZpZGVkIG51bWJlcj8KLXwgYGd0ZShudW1iZXIpYCB8IElzIHRoZSBpbmNvbWluZyBudW1iZXIgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBwcm92aWRlZCBudW1iZXI/Ci18IGBpbnNpZGUobnVtYmVyLG51bWJlcilgIHwgSXMgdGhlIGluY29taW5nIG51bWJlciBncmVhdGVyIHRoYW4gdGhlIGZpcnN0IHByb3ZpZGVkIG51bWJlciBhbmQgbGVzcyB0aGFuIHRoZSBzZWNvbmQ/Ci18IGBvdXRzaWRlKG51bWJlcixudW1iZXIpYCB8IElzIHRoZSBpbmNvbWluZyBudW1iZXIgbGVzcyB0aGFuIHRoZSBmaXJzdCBwcm92aWRlZCBudW1iZXIgb3IgZ3JlYXRlciB0aGFuIHRoZSBzZWNvbmQ/Ci18IGBiZXR3ZWVuKG51bWJlcixudW1iZXIpYCB8IElzIHRoZSBpbmNvbWluZyBudW1iZXIgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBmaXJzdCBwcm92aWRlZCBudW1iZXIgYW5kIGxlc3MgdGhhbiB0aGUgc2Vjb25kPwotfCBgd2l0aGluKG9iamVjdHMuLi4pYCB8IElzIHRoZSBpbmNvbWluZyBvYmplY3QgaW4gdGhlIGFycmF5IG9mIHByb3ZpZGVkIG9iamVjdHM/Ci18IGB3aXRob3V0KG9iamVjdHMuLi4pYCB8IElzIHRoZSBpbmNvbWluZyBvYmplY3Qgbm90IGluIHRoZSBhcnJheSBvZiB0aGUgcHJvdmlkZWQgb2JqZWN0cz8KK3wgYFAuZXEob2JqZWN0KWAgfCBJcyB0aGUgaW5jb21pbmcgb2JqZWN0IGVxdWFsIHRvIHRoZSBwcm92aWRlZCBvYmplY3Q/Cit8IGBQLm5lcShvYmplY3QpYCB8IElzIHRoZSBpbmNvbWluZyBvYmplY3Qgbm90IGVxdWFsIHRvIHRoZSBwcm92aWRlZCBvYmplY3Q/Cit8IGBQLmx0KG51bWJlcilgIHwgSXMgdGhlIGluY29taW5nIG51bWJlciBsZXNzIHRoYW4gdGhlIHByb3ZpZGVkIG51bWJlcj8KK3wgYFAubHRlKG51bWJlcilgIHwgSXMgdGhlIGluY29taW5nIG51bWJlciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHByb3ZpZGVkIG51bWJlcj8KK3wgYFAuZ3QobnVtYmVyKWAgfCBJcyB0aGUgaW5jb21pbmcgbnVtYmVyIGdyZWF0ZXIgdGhhbiB0aGUgcHJvdmlkZWQgbnVtYmVyPworfCBgUC5ndGUobnVtYmVyKWAgfCBJcyB0aGUgaW5jb21pbmcgbnVtYmVyIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgcHJvdmlkZWQgbnVtYmVyPworfCBgUC5pbnNpZGUobnVtYmVyLG51bWJlcilgIHwgSXMgdGhlIGluY29taW5nIG51bWJlciBncmVhdGVyIHRoYW4gdGhlIGZpcnN0IHByb3ZpZGVkIG51bWJlciBhbmQgbGVzcyB0aGFuIHRoZSBzZWNvbmQ/Cit8IGBQLm91dHNpZGUobnVtYmVyLG51bWJlcilgIHwgSXMgdGhlIGluY29taW5nIG51bWJlciBsZXNzIHRoYW4gdGhlIGZpcnN0IHByb3ZpZGVkIG51bWJlciBvciBncmVhdGVyIHRoYW4gdGhlIHNlY29uZD8KK3wgYFAuYmV0d2VlbihudW1iZXIsbnVtYmVyKWAgfCBJcyB0aGUgaW5jb21pbmcgbnVtYmVyIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgZmlyc3QgcHJvdmlkZWQgbnVtYmVyIGFuZCBsZXNzIHRoYW4gdGhlIHNlY29uZD8KK3wgYFAud2l0aGluKG9iamVjdHMuLi4pYCB8IElzIHRoZSBpbmNvbWluZyBvYmplY3QgaW4gdGhlIGFycmF5IG9mIHByb3ZpZGVkIG9iamVjdHM/Cit8IGBQLndpdGhvdXQob2JqZWN0cy4uLilgIHwgSXMgdGhlIGluY29taW5nIG9iamVjdCBub3QgaW4gdGhlIGFycmF5IG9mIHRoZSBwcm92aWRlZCBvYmplY3RzPworfCBgVGV4dFAuc3RhcnRpbmdXaXRoKHN0cmluZylgIHwgRG9lcyB0aGUgaW5jb21pbmcgYFN0cmluZ2Agc3RhcnQgd2l0aCB0aGUgcHJvdmlkZWQgYFN0cmluZ2A/Cit8IGBUZXh0UC5lbmRpbmdXaXRoKHN0cmluZylgIHwgRG9lcyB0aGUgaW5jb21pbmcgYFN0cmluZ2AgZW5kIHdpdGggdGhlIHByb3ZpZGVkIGBTdHJpbmdgPworfCBgVGV4dFAuY29udGFpbmluZyhzdHJpbmcpYCB8IERvZXMgdGhlIGluY29taW5nIGBTdHJpbmdgIGNvbnRhaW4gdGhlIHByb3ZpZGVkIGBTdHJpbmdgPworfCBgVGV4dFAubm90U3RhcnRpbmdXaXRoKHN0cmluZylgIHwgRG9lcyB0aGUgaW5jb21pbmcgYFN0cmluZ2Agbm90IHN0YXJ0IHdpdGggdGhlIHByb3ZpZGVkIGBTdHJpbmdgPworfCBgVGV4dFAubm90RW5kaW5nV2l0aChzdHJpbmcpYCB8IERvZXMgdGhlIGluY29taW5nIGBTdHJpbmdgIG5vdCBlbmQgd2l0aCB0aGUgcHJvdmlkZWQgYFN0cmluZ2A/Cit8IGBUZXh0UC5ub3RDb250YWluaW5nKHN0cmluZylgIHwgRG9lcyB0aGUgaW5jb21pbmcgYFN0cmluZ2Agbm90IGNvbnRhaW4gdGhlIHByb3ZpZGVkIGBTdHJpbmdgPwogfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiBbZ3JlbWxpbi1ncm9vdnldCkBAIC0zMjg5LDcgKzM3NDYsOCBAQAogbGV2ZXJhZ2UgYSBsYW1iZGEgaW4gcHJhY3RpY2UuIEl0IGlzIGFkdmlzZWQgdGhhdCB1c2VycyBvbmx5IGxldmVyYWdlIGEgbGFtYmRhIGlmIGFuZCBvbmx5IGlmIHRoZXJlIGlzIG5vCiBjb3JyZXNwb25kaW5nIGxhbWJkYS1sZXNzIHN0ZXAgdGhhdCBlbmNvbXBhc3NlcyB0aGUgZGVzaXJlZCBmdW5jdGlvbmFsaXR5LiBUaGUgcmVhc29uIGJlaW5nLCBsYW1iZGFzIGNhbiBub3QgYmUKIG9wdGltaXplZCBieSBHcmVtbGluJ3MgY29tcGlsZXIgc3RyYXRlZ2llcyBhcyB0aGV5IGNhbiBub3QgYmUgcHJvZ3JhbW1hdGljYWxseSBpbnNwZWN0ZWQgKHNlZQotPDx0cmF2ZXJzYWxzdHJhdGVneSx0cmF2ZXJzYWwgc3RyYXRlZ2llcz4+KS4gSXQgaXMgYWxzbyBub3QgY3VycmVudGx5IHBvc3NpYmxlIHRvIHNlbmQgYSBsYW1iZGEgZm9yIHJlbW90ZSBleGVjdXRpb24gdG8gR3JlbWxpbi1TZXJ2ZXIgb3IgYSBkcml2ZXIgdGhhdCBzdXBwb3J0cyByZW1vdGUgZXhlY3V0aW9uLgorPDx0cmF2ZXJzYWxzdHJhdGVneSx0cmF2ZXJzYWwgc3RyYXRlZ2llcz4+KS4gSXQgaXMgYWxzbyBub3QgY3VycmVudGx5IHBvc3NpYmxlIHRvIHNlbmQgYSBuYXRpdmVseSB3cml0dGVuIGxhbWJkYSBmb3IKK3JlbW90ZSBleGVjdXRpb24gdG8gR3JlbWxpbi1TZXJ2ZXIgb3IgYSBkcml2ZXIgdGhhdCBzdXBwb3J0cyByZW1vdGUgZXhlY3V0aW9uLgogCiBJbiBtYW55IHNpdHVhdGlvbnMgd2hlcmUgYSBsYW1iZGEgY291bGQgYmUgdXNlZCwgZWl0aGVyIGEgY29ycmVzcG9uZGluZyBzdGVwIGV4aXN0cyBvciBhIHRyYXZlcnNhbCBjYW4gYmUgcHJvdmlkZWQgaW4KIGl0cyBwbGFjZS4gQSBgVHJhdmVyc2FsTGFtYmRhYCBiZWhhdmVzIGxpa2UgYSB0eXBpY2FsIGxhbWJkYSwgYnV0IGl0IGNhbiBiZSBvcHRpbWl6ZWQgYW5kIGl0IHlpZWxkcyBsZXNzIG9iamVjdHMgdGhhbgpAQCAtMzMxNiw3ICszNzc0LDcgQEAKIG9mIHRoZSBHcmVtbGluIHRyYXZlcnNhbCBtYWNoaW5lJ3MgY29tcGlsZXIuIFRoZXJlIGFyZSA1IGNhdGVnb3JpZXMgb2Ygc3RyYXRlZ2llcyB3aGljaCBhcmUgaXRlbWl6ZWQgYmVsb3c6CiAKICAqIFRoZXJlIGlzIGFuIGFwcGxpY2F0aW9uLWxldmVsIGZlYXR1cmUgdGhhdCBjYW4gYmUgZW1iZWRkZWQgaW50byB0aGUgdHJhdmVyc2FsIGxvZ2ljICgqZGVjb3JhdGlvbiopLgotICogVGhlcmUgaXMgYSBtb3JlIGVmZmljaWVudCB3YXkgdG8gZXhwcmVzcyB0aGUgdHJhdmVyc2FsIGF0IHRoZSBUaW5rZXJQb3AzIGxldmVsICgqb3B0aW1pemF0aW9uKikuCisgKiBUaGVyZSBpcyBhIG1vcmUgZWZmaWNpZW50IHdheSB0byBleHByZXNzIHRoZSB0cmF2ZXJzYWwgYXQgdGhlIFRpbmtlclBvcCBsZXZlbCAoKm9wdGltaXphdGlvbiopLgogICogVGhlcmUgaXMgYSBtb3JlIGVmZmljaWVudCB3YXkgdG8gZXhwcmVzcyB0aGUgdHJhdmVyc2FsIGF0IHRoZSBncmFwaCBzeXN0ZW0vbGFuZ3VhZ2UvZHJpdmVyIGxldmVsICgqcHJvdmlkZXIgb3B0aW1pemF0aW9uKikuCiAgKiBUaGVyZSBhcmUgc29tZSBmaW5hbCBhZGp1c3RtZW50cy9jbGVhbnVwcy9hbmFseXNlcyByZXF1aXJlZCBiZWZvcmUgZXhlY3V0aW5nIHRoZSB0cmF2ZXJzYWwgKCpmaW5hbGl6YXRpb24qKS4KICAqIFRoZXJlIGFyZSBjZXJ0YWluIHRyYXZlcnNhbHMgdGhhdCBhcmUgbm90IGxlZ2FsIGZvciB0aGUgYXBwbGljYXRpb24gb3IgdHJhdmVyc2FsIGVuZ2luZSAoKnZlcmlmaWNhdGlvbiopLgpAQCAtMzQxNiw3ICszODc0LDcgQEAKIAogVGhlIHRyYXZlcnNhbCBpcyByZWRlZmluZWQgYnkgc2ltcGx5IHRha2luZyBhIGNoYWluIG9mIGBoYXMoKWAtc3RlcHMgYWZ0ZXIgYGcuVigpYCAoYFRpbmtlckdyYXBoU3RlcGApIGFuZCBwcm92aWRpbmcKIHRoZWlyIGBIYXNDb250YWluZXJzYCB0byBgVGlua2VyR3JhcGhTdGVwYC4gVGhlbiBpdHMgdXAgdG8gYFRpbmtlckdyYXBoU3RlcGAgdG8gZGV0ZXJtaW5lIGlmIGFuIGFwcHJvcHJpYXRlIGluZGV4IGV4aXN0cy4KLUdpdmVuIHRoYXQgdGhlIHN0cmF0ZWd5IHVzZXMgbm9uLVRpbmtlclBvcDMgcHJvdmlkZWQgc3RlcHMsIGl0IHNob3VsZCBnbyBpbnRvIHRoZSBgUHJvdmlkZXJPcHRpbWl6YXRpb25TdHJhdGVneWAgY2F0ZWdvcnkKK0dpdmVuIHRoYXQgdGhlIHN0cmF0ZWd5IHVzZXMgbm9uLVRpbmtlclBvcCBwcm92aWRlZCBzdGVwcywgaXQgc2hvdWxkIGdvIGludG8gdGhlIGBQcm92aWRlck9wdGltaXphdGlvblN0cmF0ZWd5YCBjYXRlZ29yeQogdG8gZW5zdXJlIHRoZSBhZGRlZCBzdGVwIGRvZXMgbm90IGludGVyZmVyZSB3aXRoIHRoZSBhc3N1bXB0aW9ucyBvZiB0aGUgYE9wdGltaXphdGlvblN0cmF0ZWd5YCBzdHJhdGVnaWVzLgogCiBbZ3JlbWxpbi1ncm9vdnksbW9kZXJuXQpAQCAtMzQyOCwxMSArMzg4NiwxMSBAQAogLS0tLQogCiBXQVJOSU5HOiBUaGUgcmVhc29uIHRoYXQgYE9wdGltaXphdGlvblN0cmF0ZWd5YCBhbmQgYFByb3ZpZGVyT3B0aW1pemF0aW9uU3RyYXRlZ3lgIGFyZSB0d28gZGlmZmVyZW50IGNhdGVnb3JpZXMgaXMKLXRoYXQgb3B0aW1pemF0aW9uIHN0cmF0ZWdpZXMgc2hvdWxkIG9ubHkgcmV3cml0ZSB0aGUgdHJhdmVyc2FsIHVzaW5nIFRpbmtlclBvcDMgc3RlcHMuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZQotb3B0aW1pemF0aW9ucyBleGVjdXRlZCBhdCB0aGUgZW5kIG9mIHRoZSBvcHRpbWl6YXRpb24gc3RyYXRlZ3kgcm91bmQgYXJlIFRpbmtlclBvcDMgY29tcGxpYW50LiBGcm9tIHRoZXJlLCBwcm92aWRlcgordGhhdCBvcHRpbWl6YXRpb24gc3RyYXRlZ2llcyBzaG91bGQgb25seSByZXdyaXRlIHRoZSB0cmF2ZXJzYWwgdXNpbmcgVGlua2VyUG9wIHN0ZXBzLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUKK29wdGltaXphdGlvbnMgZXhlY3V0ZWQgYXQgdGhlIGVuZCBvZiB0aGUgb3B0aW1pemF0aW9uIHN0cmF0ZWd5IHJvdW5kIGFyZSBUaW5rZXJQb3AgY29tcGxpYW50LiBGcm9tIHRoZXJlLCBwcm92aWRlcgogb3B0aW1pemF0aW9ucyBjYW4gYW5hbHl6ZSB0aGUgdHJhdmVyc2FsIGFuZCByZXdyaXRlIHRoZSB0cmF2ZXJzYWwgYXMgZGVzaXJlZCB1c2luZyBncmFwaCBzeXN0ZW0gc3BlY2lmaWMgc3RlcHMgKGUuZy4KIHJlcGxhY2luZyBgR3JhcGhTdGVwLkhhc1N0ZXAuLi5IYXNTdGVwYCB3aXRoIGBUaW5rZXJHcmFwaFN0ZXBgKS4gSWYgcHJvdmlkZXIgb3B0aW1pemF0aW9ucyB1c2UgZ3JhcGggc3lzdGVtIHNwZWNpZmljCi1zdGVwcyBhbmQgaW1wbGVtZW50IGBPcHRpbWl6YXRpb25TdHJhdGVneWAsIHRoZW4gb3RoZXIgVGlua2VyUG9wMyBvcHRpbWl6YXRpb25zIG1heSBmYWlsIHRvIG9wdGltaXplIHRoZSB0cmF2ZXJzYWwgb3IKK3N0ZXBzIGFuZCBpbXBsZW1lbnQgYE9wdGltaXphdGlvblN0cmF0ZWd5YCwgdGhlbiBvdGhlciBUaW5rZXJQb3Agb3B0aW1pemF0aW9ucyBtYXkgZmFpbCB0byBvcHRpbWl6ZSB0aGUgdHJhdmVyc2FsIG9yCiBtaXMtdW5kZXJzdGFuZCB0aGUgZ3JhcGggc3lzdGVtIHNwZWNpZmljIHN0ZXAgYmVoYXZpb3JzIChlLmcuIGBQcm92aWRlclZlcnRleFN0ZXAgZXh0ZW5kcyBWZXJ0ZXhTdGVwYCkgYW5kIHlpZWxkCiBpbmNvcnJlY3Qgc2VtYW50aWNzLgogCkBAIC0zNDY0LDcgKzM5MjIsNyBAQAogPDg+IGBQYXRoUmV0cmFjdGlvblN0cmF0ZWd5YCB3aWxsIHJlbW92ZSBwYXRocyBmcm9tIHRoZSB0cmF2ZXJzZXJzIGFuZCBpbmNyZWFzZSB0aGUgbGlrZWxpaG9vZCBvZiBidWxraW5nIGFzIHBhdGggZGF0YSBpcyBub3QgcmVxdWlyZWQgYWZ0ZXIgYHNlbGVjdCgnYicpYC4KIDw5PiBgQWRqYWNlbnRUb0luY2lkZW50U3RyYXRlZ3lgIHdpbGwgdHVybiBgb3V0KClgIGludG8gYG91dEUoKWAgdG8gaW5jcmVhc2UgZGF0YSBhY2Nlc3MgbG9jYWxpdHkuCiAKLUEgY29sbGVjdGlvbiBvZiB1c2VmdWwgYERlY29yYXRpb25TdHJhdGVneWAgc3RyYXRlZ2llcyBhcmUgcHJvdmlkZWQgd2l0aCBUaW5rZXJQb3AzIGFuZCBhcmUgZ2VuZXJhbGx5IHVzZWZ1bCB0bworQSBjb2xsZWN0aW9uIG9mIHVzZWZ1bCBgRGVjb3JhdGlvblN0cmF0ZWd5YCBzdHJhdGVnaWVzIGFyZSBwcm92aWRlZCB3aXRoIFRpbmtlclBvcCBhbmQgYXJlIGdlbmVyYWxseSB1c2VmdWwgdG8KIGVuZC11c2Vycy4gIFRoZSBmb2xsb3dpbmcgc3ViLXNlY3Rpb25zIGRldGFpbCB0aGVzZSBzdHJhdGVnaWVzOgogCiA9PT0gRWxlbWVudElkU3RyYXRlZ3kKQEAgLTM2NDYsOCArNDEwNCw4IEBACiAgIHZlcnRpY2VzKG9yKGhhc05vdCgnbG9jYXRpb24nKSxwcm9wZXJ0aWVzKCdsb2NhdGlvbicpLmNvdW50KCkuaXMoZ3QoMykpKSkuCiAgIGVkZ2VzKGhhc0xhYmVsKCdkZXZlbG9wcycpKS4KICAgdmVydGV4UHJvcGVydGllcyhvcihoYXNMYWJlbChuZXEoJ2xvY2F0aW9uJykpLGhhc05vdCgnZW5kVGltZScpKSkuY3JlYXRlKCkpCi1nLlYoKS52YWx1ZU1hcCh0cnVlKQotZy5FKCkudmFsdWVNYXAodHJ1ZSkKK2cuVigpLmVsZW1lbnRNYXAoKQorZy5FKCkuZWxlbWVudE1hcCgpCiBnLlYoKS5vdXRFKCkuaW5WKCkuCiAgIHBhdGgoKS4KICAgICBieSgnbmFtZScpLgpAQCAtMzcwNiwzNTcgKzQxNjQsNSBAQAogc29jaWFsLnBlcnNvbnMoIm1hcmtvIikueW91bmdlc3RGcmllbmRzQWdlKCkKIC0tLS0KIAotVGhlIGZvbGxvd2luZyBzZWN0aW9ucyBleHBsYWluIGhvdyB0byBkZXZlbG9wIGFwcGxpY2F0aW9uIHNwZWNpZmljIERTTHMgZm9yIGRpZmZlcmVudCA8PGdyZW1saW4tdmFyaWFudHMsR3JlbWxpbiBMYW5ndWFnZSBWYXJpYW50cz4+Ci11c2luZyB0aGUgZXhhbXBsZXMgYWJvdmUgb2YgdGhlIFNvY2lhbCBEU0wgYXMgdGhlIEFQSSBmb3IgdGhlIGltcGxlbWVudGF0aW9uLgotCi1bW2dyZW1saW4tamF2YS1kc2xdXQotPT09IEdyZW1saW4tSmF2YQotCi1DcmVhdGluZyBhIERTTCBpbiBKYXZhIHJlcXVpcmVzIHRoZSBgQEdyZW1saW5Ec2xgIEphdmEgYW5ub3RhdGlvbiBpbiBgZ3JlbWxpbi1jb3JlYC4gVGhpcyBhbm5vdGF0aW9uIHNob3VsZCBiZSBhcHBsaWVkCi10byBhICJEU0wgaW50ZXJmYWNlIiB0aGF0IGV4dGVuZHMgYEdyYXBoVHJhdmVyc2FsLkFkbWluYC4KLQotW3NvdXJjZSxqYXZhXQotLS0tLQotQEdyZW1saW5Ec2wKLXB1YmxpYyBpbnRlcmZhY2UgU29jaWFsVHJhdmVyc2FsRHNsPFMsIEU+IGV4dGVuZHMgR3JhcGhUcmF2ZXJzYWwuQWRtaW48UywgRT4gewotfQotLS0tLQotCi1JTVBPUlRBTlQ6IFRoZSBuYW1lIG9mIHRoZSBEU0wgaW50ZXJmYWNlIHNob3VsZCBiZSBzdWZmaXhlZCB3aXRoICJUcmF2ZXJzYWxEU0wiLiBBbGwgY2hhcmFjdGVycyBpbiB0aGUgaW50ZXJmYWNlIG5hbWUKLWJlZm9yZSB0aGF0IGJlY29tZSB0aGUgIm5hbWUiIG9mIHRoZSBEU0wuCi0KLUluIHRoaXMgaW50ZXJmYWNlLCBkZWZpbmUgdGhlIG1ldGhvZHMgdGhhdCB0aGUgRFNMIHdpbGwgYmUgY29tcG9zZWQgb2Y6Ci0KLVtzb3VyY2UsamF2YV0KLS0tLS0KLUBHcmVtbGluRHNsCi1wdWJsaWMgaW50ZXJmYWNlIFNvY2lhbFRyYXZlcnNhbERzbDxTLCBFPiBleHRlbmRzIEdyYXBoVHJhdmVyc2FsLkFkbWluPFMsIEU+IHsKLSAgICBwdWJsaWMgZGVmYXVsdCBHcmFwaFRyYXZlcnNhbDxTLCBWZXJ0ZXg+IGtub3dzKFN0cmluZyBwZXJzb25OYW1lKSB7Ci0gICAgICAgIHJldHVybiBvdXQoImtub3dzIikuaGFzTGFiZWwoInBlcnNvbiIpLmhhcygibmFtZSIsIHBlcnNvbk5hbWUpOwotICAgIH0KLQotICAgIHB1YmxpYyBkZWZhdWx0IDxFMiBleHRlbmRzIE51bWJlcj4gR3JhcGhUcmF2ZXJzYWw8UywgRTI+IHlvdW5nZXN0RnJpZW5kc0FnZSgpIHsKLSAgICAgICAgcmV0dXJuIG91dCgia25vd3MiKS5oYXNMYWJlbCgicGVyc29uIikudmFsdWVzKCJhZ2UiKS5taW4oKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgZGVmYXVsdCBHcmFwaFRyYXZlcnNhbDxTLCBMb25nPiBjcmVhdGVkQXRMZWFzdChpbnQgbnVtYmVyKSB7Ci0gICAgICAgIHJldHVybiBvdXRFKCJjcmVhdGVkIikuY291bnQoKS5pcyhQLmd0ZShudW1iZXIpKTsKLSAgICB9Ci19Ci0tLS0tCi0KLUlNUE9SVEFOVDogRm9sbG93IHRoZSBUaW5rZXJQb3AgY29udmVudGlvbiBvZiB1c2luZyBgPFMsRT5gIGluIG5hbWluZyBnZW5lcmljcyBhcyB0aG9zZSBjb252ZW50aW9ucyBhcmUgdGFrZW4gaW50bwotYWNjb3VudCB3aGVuIGdlbmVyYXRpbmcgdGhlIGFub255bW91cyB0cmF2ZXJzYWwgY2xhc3MuIFRoZSBwcm9jZXNzb3IgYXR0ZW1wdHMgdG8gaW5mZXIgdGhlIGFwcHJvcHJpYXRlIHR5cGUgcGFyYW1ldGVycwotd2hlbiBnZW5lcmF0aW5nIHRoZSBhbm9ueW1vdXMgdHJhdmVyc2FsIGNsYXNzLiBJZiBpdCBjYW5ub3QgZG8gaXQgY29ycmVjdGx5LCBpdCBpcyBwb3NzaWJsZSB0byBhdm9pZCB0aGUgaW5mZXJlbmNlIGJ5Ci11c2luZyB0aGUgYEdyZW1saW5Ec2wuQW5vbnltb3VzTWV0aG9kYCBhbm5vdGF0aW9uIG9uIHRoZSBEU0wgbWV0aG9kLiBJdCBhbGxvd3MgZXhwbGljaXQgc3BlY2lmaWNhdGlvbiBvZiB0aGUgdHlwZXMgdG8KLXVzZS4KLQotVGhlIGBAR3JlbWxpbkRzbGAgYW5ub3RhdGlvbiBpcyB1c2VkIGJ5IHRoZSBsaW5rOmh0dHBzOi8vZG9jcy5vcmFjbGUuY29tL2phdmFzZS84L2RvY3MvYXBpL2luZGV4Lmh0bWw/amF2YXgvYW5ub3RhdGlvbi9wcm9jZXNzaW5nL1Byb2Nlc3Nvci5odG1sW0phdmEgQW5ub3RhdGlvbiBQcm9jZXNzb3JdCi10byBnZW5lcmF0ZSB0aGUgYm9pbGVycGxhdGUgY2xhc3Mgc3RydWN0dXJlIHJlcXVpcmVkIHRvIHByb3Blcmx5IHVzZSB0aGUgRFNMIHdpdGhpbiB0aGUgVGlua2VyUG9wIGZyYW1ld29yay4gVGhlc2UKLWNsYXNzZXMgY2FuIGJlIGdlbmVyYXRlZCBhbmQgbWFpbnRhaW5lZCBieSBoYW5kLCBidXQgaXQgd291bGQgYmUgdGltZSBjb25zdW1pbmcsIG1vbm90b25vdXMgYW5kIGVycm9yLXByb25lIHRvIGRvIHNvLgotVHlwaWNhbGx5LCB0aGUgSmF2YSBjb21waWxhdGlvbiBwcm9jZXNzIGlzIGF1dG9tYXRpY2FsbHkgY29uZmlndXJlZCB0byBkZXRlY3QgYW5ub3RhdGlvbiBwcm9jZXNzb3JzIG9uIHRoZSBjbGFzc3BhdGgKLWFuZCB3aWxsIGF1dG9tYXRpY2FsbHkgdXNlIHRoZW0gd2hlbiBmb3VuZC4gSWYgdGhhdCBkb2VzIG5vdCBoYXBwZW4sIGl0IG1heSBiZSBuZWNlc3NhcnkgdG8gbWFrZSBjb25maWd1cmF0aW9uIGNoYW5nZXMKLXRvIHRoZSBidWlsZCB0byBhbGxvdyBmb3IgdGhlIGNvbXBpbGF0aW9uIHByb2Nlc3MgdG8gYmUgYXdhcmUgb2YgdGhlIGZvbGxvd2luZyBgamF2YXguYW5ub3RhdGlvbi5wcm9jZXNzaW5nLlByb2Nlc3NvcmAKLWltcGxlbWVudGF0aW9uOgotCi1bc291cmNlLGphdmFdCi0tLS0tCi1vcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5HcmVtbGluRHNsUHJvY2Vzc29yCi0tLS0tCi0KLVRoZSBhbm5vdGF0aW9uIHByb2Nlc3NvciB3aWxsIGdlbmVyYXRlIHNldmVyYWwgY2xhc3NlcyBmb3IgdGhlIERTTDoKLQotKiBgU29jaWFsVHJhdmVyc2FsYCAtIEEgYFRyYXZlcnNhbGAgaW50ZXJmYWNlIHRoYXQgZXh0ZW5kcyB0aGUgYFNvY2lhbFRyYXZlcnNhbERzbGAgcHJveHlpbmcgbWV0aG9kcyB0byBpdHMgdW5kZXJseWluZwotaW50ZXJmYWNlcyAoc3VjaCBhcyBgR3JhcGhUcmF2ZXJzYWxgKSB0byBpbnN0ZWFkIHJldHVybiBhIGBTb2NpYWxUcmF2ZXJzYWxgCi0qIGBEZWZhdWx0U29jaWFsVHJhdmVyc2FsYCAtIEEgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiBgU29jaWFsVHJhdmVyc2FsYCAodHlwaWNhbGx5IG5vdCB1c2VkIGRpcmVjdGx5IGJ5IHRoZSB1c2VyKQotKiBgU29jaWFsVHJhdmVyc2FsU291cmNlYCAtIFNwYXducyBgRGVmYXVsdFNvY2lhbFRyYXZlcnNhbGAgaW5zdGFuY2VzLgotKiBgK19fK2AgLSBTcGF3bnMgYW5vbnltb3VzIGBEZWZhdWx0U29jaWFsVHJhdmVyc2FsYCBpbnN0YW5jZXMuCi0KLVVzaW5nIHRoZSBEU0wgdGhlbiBqdXN0IGludm9sdmVzIHRlbGxpbmcgdGhlIGBHcmFwaGAgdG8gdXNlIGl0OgotCi1bc291cmNlLGphdmFdCi0tLS0tCi1Tb2NpYWxUcmF2ZXJzYWxTb3VyY2Ugc29jaWFsID0gZ3JhcGgudHJhdmVyc2FsKFNvY2lhbFRyYXZlcnNhbFNvdXJjZS5jbGFzcyk7Ci1zb2NpYWwuVigpLmhhcygibmFtZSIsIm1hcmtvIikua25vd3MoImpvc2giKTsKLS0tLS0KLQotVGhlIGBTb2NpYWxUcmF2ZXJzYWxTb3VyY2VgIGNhbiBhbHNvIGJlIGN1c3RvbWl6ZWQgd2l0aCBEU0wgZnVuY3Rpb25zLiBBcyBhbiBhZGRpdGlvbmFsIHN0ZXAsIGluY2x1ZGUgYSBjbGFzcyB0aGF0Ci1leHRlbmRzIGZyb20gYEdyYXBoVHJhdmVyc2FsU291cmNlYCBhbmQgd2l0aCBhIG5hbWUgdGhhdCBpcyBzdWZmaXhlZCB3aXRoICJUcmF2ZXJzYWxTb3VyY2VEc2wiLiBJbmNsdWRlIGluIHRoaXMgY2xhc3MsCi1hbnkgY3VzdG9tIG1ldGhvZHMgcmVxdWlyZWQgYnkgdGhlIERTTDoKLQotW3NvdXJjZSxqYXZhXQotLS0tLQotcHVibGljIGNsYXNzIFNvY2lhbFRyYXZlcnNhbFNvdXJjZURzbCBleHRlbmRzIEdyYXBoVHJhdmVyc2FsU291cmNlIHsKLQotICAgIHB1YmxpYyBTb2NpYWxUcmF2ZXJzYWxTb3VyY2VEc2woR3JhcGggZ3JhcGgsIFRyYXZlcnNhbFN0cmF0ZWdpZXMgdHJhdmVyc2FsU3RyYXRlZ2llcykgewotICAgICAgICBzdXBlcihncmFwaCwgdHJhdmVyc2FsU3RyYXRlZ2llcyk7Ci0gICAgfQotCi0gICAgcHVibGljIFNvY2lhbFRyYXZlcnNhbFNvdXJjZURzbChHcmFwaCBncmFwaCkgewotICAgICAgICBzdXBlcihncmFwaCk7Ci0gICAgfQotCi0gICAgcHVibGljIEdyYXBoVHJhdmVyc2FsPFZlcnRleCwgVmVydGV4PiBwZXJzb25zKFN0cmluZy4uLiBuYW1lcykgewotICAgICAgICBHcmFwaFRyYXZlcnNhbFNvdXJjZSBjbG9uZSA9IHRoaXMuY2xvbmUoKTsKLQotICAgICAgICAvLyBNYW51YWxseSBhZGQgYSAic3RhcnQiIHN0ZXAgZm9yIHRoZSB0cmF2ZXJzYWwgaW4gdGhpcyBjYXNlIHRoZSBlcXVpdmFsZW50IG9mIFYoKS4gR3JhcGhTdGVwIGlzIG1hcmtlZAotICAgICAgICAvLyBhcyBhICJzdGFydCIgc3RlcCBieSBwYXNzaW5nICJ0cnVlIiBpbiB0aGUgY29uc3RydWN0b3IuCi0gICAgICAgIGNsb25lLmdldEJ5dGVjb2RlKCkuYWRkU3RlcChHcmFwaFRyYXZlcnNhbC5TeW1ib2xzLlYpOwotICAgICAgICBHcmFwaFRyYXZlcnNhbDxWZXJ0ZXgsIFZlcnRleD4gdHJhdmVyc2FsID0gbmV3IERlZmF1bHRHcmFwaFRyYXZlcnNhbDw+KGNsb25lKTsKLSAgICAgICAgdHJhdmVyc2FsLmFzQWRtaW4oKS5hZGRTdGVwKG5ldyBHcmFwaFN0ZXA8Pih0cmF2ZXJzYWwuYXNBZG1pbigpLCBWZXJ0ZXguY2xhc3MsIHRydWUpKTsKLQotICAgICAgICB0cmF2ZXJzYWwgPSB0cmF2ZXJzYWwuaGFzTGFiZWwoInBlcnNvbiIpOwotICAgICAgICBpZiAobmFtZXMubGVuZ3RoID4gMCkgdHJhdmVyc2FsID0gdHJhdmVyc2FsLmhhcygibmFtZSIsIFAud2l0aGluKG5hbWVzKSk7Ci0KLSAgICAgICAgcmV0dXJuIHRyYXZlcnNhbDsKLSAgICB9Ci19Ci0tLS0tCi0KLVRoZW4sIGJhY2sgaW4gdGhlIGBTb2NpYWxUcmF2ZXJzYWxgIGludGVyZmFjZSwgdXBkYXRlIHRoZSBgR3JlbWxpbkRzbGAgYW5ub3RhdGlvbiB3aXRoIHRoZSBgdHJhdmVyc2FsU291cmNlYCBhcmd1bWVudAotdG8gcG9pbnQgdG8gdGhlIGZ1bGx5IHF1YWxpZmllZCBjbGFzcyBuYW1lIG9mIHRoZSBgU29jaWFsVHJhdmVyc2FsU291cmNlRHNsYDoKLQotW3NvdXJjZSxqYXZhXQotLS0tLQotQEdyZW1saW5Ec2wodHJhdmVyc2FsU291cmNlID0gImNvbS5jb21wYW55LlNvY2lhbFRyYXZlcnNhbFNvdXJjZURzbCIpCi1wdWJsaWMgaW50ZXJmYWNlIFNvY2lhbFRyYXZlcnNhbERzbDxTLCBFPiBleHRlbmRzIEdyYXBoVHJhdmVyc2FsLkFkbWluPFMsIEU+IHsKLSAgICAuLi4KLX0KLS0tLS0KLQotSXQgaXMgdGhlbiBwb3NzaWJsZSB0byB1c2UgdGhlIGBwZXJzb25zKClgIG1ldGhvZCB0byBzdGFydCB0cmF2ZXJzYWxzOgotCi1bc291cmNlLGphdmFdCi0tLS0tCi1Tb2NpYWxUcmF2ZXJzYWxTb3VyY2Ugc29jaWFsID0gZ3JhcGgudHJhdmVyc2FsKFNvY2lhbFRyYXZlcnNhbFNvdXJjZS5jbGFzcyk7Ci1zb2NpYWwucGVyc29ucygibWFya28iKS5rbm93cygiam9zaCIpOwotLS0tLQotCi1OT1RFOiBVc2luZyBNYXZlbiwgYXMgc2hvd24gaW4gdGhlIGBncmVtbGluLWFyY2hldHlwZS1kc2xgIG1vZHVsZSwgbWFrZXMgZGV2ZWxvcGluZyBEU0xzIHdpdGggdGhlIGFubm90YXRpb24gcHJvY2Vzc29yCi1zdHJhaWdodGZvcndhcmQgaW4gdGhhdCBpdCBzZXRzIHVwIGFwcHJvcHJpYXRlIHBhdGhzIHRvIHRoZSBnZW5lcmF0ZWQgY29kZSBhdXRvbWF0aWNhbGx5LgotCi1bW2dyZW1saW4tcHl0aG9uLWRzbF1dCi09PT0gR3JlbWxpbi1QeXRob24KLQotV3JpdGluZyBhIEdyZW1saW4gRFNMIGluIFB5dGhvbiBzaW1wbHkgcmVxdWlyZXMgZGlyZWN0IGV4dGVuc2lvbiBvZiBzZXZlcmFsIGNsYXNzZXM6Ci0KLSogYEdyYXBoVHJhdmVyc2FsYCAtIHdoaWNoIGV4cG9zZXMgdGhlIHZhcmlvdXMgc3RlcHMgdXNlZCBpbiB0cmF2ZXJzYWwgd3JpdGluZwotKiBgK19fK2AgLSB3aGljaCBzcGF3bnMgYW5vbnltb3VzIHRyYXZlcnNhbHMgZnJvbSBzdGVwcwotKiBgR3JhcGhUcmF2ZXJzYWxTb3VyY2VgIC0gd2hpY2ggc3Bhd25zIGBHcmFwaFRyYXZlcnNhbGAgaW5zdGFuY2VzCi0KLVRoZSBTb2NpYWwgRFNMIGJhc2VkIG9uIHRoZSBsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy9jdXJyZW50L2ltYWdlcy90aW5rZXJwb3AtbW9kZXJuLnBuZ1sibW9kZXJuIiB0b3kgZ3JhcGhdCi1taWdodCBsb29rIGxpa2UgdGhpczoKLQotW3NvdXJjZSxweXRob25dCi0tLS0tCi1jbGFzcyBTb2NpYWxUcmF2ZXJzYWwoR3JhcGhUcmF2ZXJzYWwpOgotCi0gICAgZGVmIGtub3dzKHNlbGYsIHBlcnNvbl9uYW1lKToKLSAgICAgICAgcmV0dXJuIHNlbGYub3V0KCJrbm93cyIpLmhhc0xhYmVsKCJwZXJzb24iKS5oYXMoIm5hbWUiLCBwZXJzb25fbmFtZSkKLQotICAgIGRlZiB5b3VuZ2VzdEZyaWVuZHNBZ2Uoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLm91dCgia25vd3MiKS5oYXNMYWJlbCgicGVyc29uIikudmFsdWVzKCJhZ2UiKS5taW4oKQotCi0gICAgZGVmIGNyZWF0ZWRBdExlYXN0KHNlbGYsIG51bWJlcik6Ci0gICAgICAgIHJldHVybiBzZWxmLm91dEUoImNyZWF0ZWQiKS5jb3VudCgpLmlzXyhQLmd0ZShudW1iZXIpKQotCi1jbGFzcyBfXyhBbm9ueW1vdXNUcmF2ZXJzYWwpOgotCi0gICAgZ3JhcGhfdHJhdmVyc2FsID0gU29jaWFsVHJhdmVyc2FsCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYga25vd3MoY2xzLCAqYXJncyk6Ci0gICAgICAgIHJldHVybiBjbHMuZ3JhcGhfdHJhdmVyc2FsKE5vbmUsIE5vbmUsIEJ5dGVjb2RlKCkpLmtub3dzKCphcmdzKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHlvdW5nZXN0RnJpZW5kc0FnZShjbHMsICphcmdzKToKLSAgICAgICAgcmV0dXJuIGNscy5ncmFwaF90cmF2ZXJzYWwoTm9uZSwgTm9uZSwgQnl0ZWNvZGUoKSkueW91bmdlc3RGcmllbmRzQWdlKCphcmdzKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGNyZWF0ZWRBdExlYXN0KGNscywgKmFyZ3MpOgotICAgICAgICByZXR1cm4gY2xzLmdyYXBoX3RyYXZlcnNhbChOb25lLCBOb25lLCBCeXRlY29kZSgpKS5jcmVhdGVkQXRMZWFzdCgqYXJncykKLQotCi1jbGFzcyBTb2NpYWxUcmF2ZXJzYWxTb3VyY2UoR3JhcGhUcmF2ZXJzYWxTb3VyY2UpOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgIHN1cGVyKFNvY2lhbFRyYXZlcnNhbFNvdXJjZSwgc2VsZikuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQotICAgICAgICBzZWxmLmdyYXBoX3RyYXZlcnNhbCA9IFNvY2lhbFRyYXZlcnNhbAotCi0gICAgZGVmIHBlcnNvbnMoc2VsZiwgKmFyZ3MpOgotICAgICAgICB0cmF2ZXJzYWwgPSBzZWxmLmdldF9ncmFwaF90cmF2ZXJzYWwoKQotICAgICAgICB0cmF2ZXJzYWwuYnl0ZWNvZGUuYWRkX3N0ZXAoIlYiKQotICAgICAgICB0cmF2ZXJzYWwuYnl0ZWNvZGUuYWRkX3N0ZXAoImhhc0xhYmVsIiwgInBlcnNvbiIpCi0KLSAgICAgICAgaWYgbGVuKGFyZ3MpID4gMDoKLSAgICAgICAgICAgIHRyYXZlcnNhbC5ieXRlY29kZS5hZGRfc3RlcCgiaGFzIiwgIm5hbWUiLCBQLndpdGhpbihhcmdzKSkKLQotICAgICAgICByZXR1cm4gdHJhdmVyc2FsCi0tLS0tCi0KLU5PVEU6IFRoZSBgQW5vbnltb3VzVHJhdmVyc2FsYCBjbGFzcyBhYm92ZSBpcyBqdXN0IGFuIGFsaWFzIGZvciBgK19fK2AgYXMgaW4KLWArZnJvbSBncmVtbGluX3B5dGhvbi5wcm9jZXNzLmdyYXBoX3RyYXZlcnNhbCBpbXBvcnQgX18gYXMgQW5vbnltb3VzVHJhdmVyc2FsK2AKLQotVXNpbmcgdGhlIERTTCBpcyBzdHJhaWdodGZvcndhcmQgYW5kIGp1c3QgcmVxdWlyZXMgdGhhdCB0aGUgZ3JhcGggaW5zdGFuY2Uga25vdyB0aGUgYFNvY2lhbFRyYXZlcnNhbFNvdXJjZWAgc2hvdWxkCi1iZSB1c2VkOgotCi1bc291cmNlLHB5dGhvbl0KLS0tLS0KLXNvY2lhbCA9IEdyYXBoKCkudHJhdmVyc2FsKFNvY2lhbFRyYXZlcnNhbFNvdXJjZSkud2l0aFJlbW90ZShEcml2ZXJSZW1vdGVDb25uZWN0aW9uKCd3czovL2xvY2FsaG9zdDo4MTgyL2dyZW1saW4nLCdnJykpCi1zb2NpYWwucGVyc29ucygibWFya28iKS5rbm93cygiam9zaCIpCi1zb2NpYWwucGVyc29ucygibWFya28iKS55b3VuZ2VzdEZyaWVuZHNBZ2UoKQotc29jaWFsLnBlcnNvbnMoKS5maWx0ZXIoX18uY3JlYXRlZEF0TGVhc3QoMikpLmNvdW50KCkKLS0tLS0KLQotW1tncmVtbGluLW5ldC1kc2xdXQotPT09IEdyZW1saW4uTmV0Ci0KLURldmVsb3BpbmcgRFNMcyBmb3IgLk5ldCBpcyBtb3N0IGVhc2lseSBpbXBsZW1lbnRlZCB1c2luZyBsaW5rOmh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL2RvdG5ldC9jc2hhcnAvcHJvZ3JhbW1pbmctZ3VpZGUvY2xhc3Nlcy1hbmQtc3RydWN0cy9leHRlbnNpb24tbWV0aG9kc1tFeHRlbnNpb24gTWV0aG9kc10KLWFzIHRoZXkgZG9uJ3QgcmVxdWlyZSBkaXJlY3QgZXh0ZW5zaW9uIG9mIGNsYXNzZXMgaW4gdGhlIFRpbmtlclBvcCBoaWVyYXJjaHkuIEV4dGVuc2lvbiBNZXRob2QgY2xhc3NlcyBzaW1wbHkgbmVlZCB0bwotYmUgY29uc3RydWN0ZWQgZm9yIHRoZSBgR3JhcGhUcmF2ZXJzYWxgIGFuZCB0aGUgYEdyYXBoVHJhdmVyc2FsU291cmNlYC4gVW5mb3J0dW5hdGVseSwgYW5vbnltb3VzIHRyYXZlcnNhbHMgKHNwYXduZWQKLWZyb20gYCtfXytgKSBjYW4ndCB1c2UgdGhlIEV4dGVuc2lvbiBNZXRob2QgYXBwcm9hY2ggYXMgdGhleSBkbyBub3Qgd29yayBmb3Igc3RhdGljIGNsYXNzZXMgYW5kIHN0YXRpYyBjbGFzc2VzIGNhbid0IGJlCi1leHRlbmRlZC4gVGhlIG9ubHkgb3B0aW9uIGlzIHRvIHJlLWltcGxlbWVudCB0aGUgbWV0aG9kcyBvZiBgK19fK2AgYXMgYSB3cmFwcGVyIGluIHRoZSBhbm9ueW1vdXMgdHJhdmVyc2FsIGZvciB0aGUgRFNMCi1vciB0byBzaW1wbHkgY3JlYXRlIGEgc3RhdGljIGNsYXNzIGZvciB0aGUgRFNMIGFuZCB1c2UgdGhlIHR3byBhbm9ueW1vdXMgdHJhdmVyc2FscyBjcmVhdG9ycyBpbmRlcGVuZGVudGx5LiBUaGUKLWZvbGxvd2luZyBleGFtcGxlIHVzZXMgdGhlIGxhdHRlciBhcHByb2FjaCBhcyBpdCBzYXZlcyBhIGxvdCBvZiBib2lsZXJwbGF0ZSBjb2RlIHdpdGggdGhlIG1pbm9yIGFubm95YW5jZSBvZiBoYXZpbmcgYQotc2Vjb25kIHN0YXRpYyBjbGFzcyB0byBkZWFsIHdpdGggd2hlbiB3cml0aW5nIHRyYXZlcnNhbHMgcmF0aGVyIHRoYW4ganVzdCBjYWxsaW5nIGArX18rYCBmb3IgZXZlcnl0aGluZy4KLQotW3NvdXJjZSxjc2hhcnBdCi0tLS0tCi1uYW1lc3BhY2UgRHNsCi17Ci0KLSAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFNvY2lhbFRyYXZlcnNhbEV4dGVuc2lvbnMKLSAgICB7Ci0gICAgICAgIHB1YmxpYyBzdGF0aWMgR3JhcGhUcmF2ZXJzYWw8VmVydGV4LFZlcnRleD4gS25vd3ModGhpcyBHcmFwaFRyYXZlcnNhbDxWZXJ0ZXgsVmVydGV4PiB0LCBzdHJpbmcgcGVyc29uTmFtZSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHQuT3V0KCJrbm93cyIpLkhhc0xhYmVsKCJwZXJzb24iKS5IYXMoIm5hbWUiLCBwZXJzb25OYW1lKTsKLSAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYyBzdGF0aWMgR3JhcGhUcmF2ZXJzYWw8VmVydGV4LCBpbnQ+IFlvdW5nZXN0RnJpZW5kc0FnZSh0aGlzIEdyYXBoVHJhdmVyc2FsPFZlcnRleCxWZXJ0ZXg+IHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0Lk91dCgia25vd3MiKS5IYXNMYWJlbCgicGVyc29uIikuVmFsdWVzPGludD4oImFnZSIpLk1pbjxpbnQ+KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgc3RhdGljIEdyYXBoVHJhdmVyc2FsPFZlcnRleCxsb25nPiBDcmVhdGVkQXRMZWFzdCh0aGlzIEdyYXBoVHJhdmVyc2FsPFZlcnRleCxWZXJ0ZXg+IHQsIGxvbmcgbnVtYmVyKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdC5PdXRFKCJjcmVhdGVkIikuQ291bnQoKS5JcyhQLkd0ZShudW1iZXIpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgX19Tb2NpYWwKLSAgICB7Ci0gICAgICAgIHB1YmxpYyBzdGF0aWMgR3JhcGhUcmF2ZXJzYWw8b2JqZWN0LFZlcnRleD4gS25vd3Moc3RyaW5nIHBlcnNvbk5hbWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfXy5PdXQoImtub3dzIikuSGFzTGFiZWwoInBlcnNvbiIpLkhhcygibmFtZSIsIHBlcnNvbk5hbWUpOwotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIHN0YXRpYyBHcmFwaFRyYXZlcnNhbDxvYmplY3QsIGludD4gWW91bmdlc3RGcmllbmRzQWdlKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9fLk91dCgia25vd3MiKS5IYXNMYWJlbCgicGVyc29uIikuVmFsdWVzPGludD4oImFnZSIpLk1pbjxpbnQ+KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgc3RhdGljIEdyYXBoVHJhdmVyc2FsPG9iamVjdCxsb25nPiBDcmVhdGVkQXRMZWFzdChsb25nIG51bWJlcikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIF9fLk91dEUoImNyZWF0ZWQiKS5Db3VudCgpLklzKFAuR3RlKG51bWJlcikpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHVibGljIHN0YXRpYyBjbGFzcyBTb2NpYWxUcmF2ZXJzYWxTb3VyY2VFeHRlbnNpb25zCi0gICAgewotICAgICAgICBwdWJsaWMgc3RhdGljIEdyYXBoVHJhdmVyc2FsPFZlcnRleCxWZXJ0ZXg+IFBlcnNvbnModGhpcyBHcmFwaFRyYXZlcnNhbFNvdXJjZSBnLCBwYXJhbXMgc3RyaW5nW10gcGVyc29uTmFtZXMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEdyYXBoVHJhdmVyc2FsPFZlcnRleCxWZXJ0ZXg+IHQgPSBnLlYoKS5IYXNMYWJlbCgicGVyc29uIik7Ci0KLSAgICAgICAgICAgIGlmIChwZXJzb25OYW1lcy5MZW5ndGggPiAwKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHQgPSB0LkhhcygibmFtZSIsIFAuV2l0aGluKHBlcnNvbk5hbWVzKSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJldHVybiB0OwotICAgICAgICB9Ci0gICAgfQotfQotLS0tLQotCi1Ob3RlIHRoZSBjcmVhdGlvbiBvZiBgK19fU29jaWFsK2AgYXMgdGhlIFNvY2lhbCBEU0wncyAiZXh0ZW5zaW9uIiB0byB0aGUgYXZhaWxhYmxlIHdheXMgaW4gd2hpY2ggdG8gc3Bhd24gYW5vbnltb3VzCi10cmF2ZXJzYWxzLiBUaGUgdXNlIG9mIHRoZSBkb3VibGUgdW5kZXJzY29yZSBwcmVmaXggaW4gdGhlIG5hbWUgaXMganVzdCBhIGNvbnZlbnRpb24gdG8gY29uc2lkZXIgdXNpbmcgYW5kIGlzIG5vdCBhCi1yZXF1aXJlbWVudC4gVG8gdXNlIHRoZSBEU0wsIGJyaW5nIGl0IGludG8gc2NvcGUgd2l0aCB0aGUgYHVzaW5nYCBkaXJlY3RpdmU6Ci0KLVtzb3VyY2UsY3NoYXJwXQotLS0tLQotdXNpbmcgRHNsOwotdXNpbmcgc3RhdGljIERzbC5fX1NvY2lhbDsKLS0tLS0KLQotYW5kIHRoZW4gaXQgY2FuIGJlIGNhbGxlZCBmcm9tIHRoZSBhcHBsaWNhdGlvbiBhcyBmb2xsb3dzOgotCi1bc291cmNlLGNzaGFycF0KLS0tLS0KLXZhciBncmFwaCA9IG5ldyBHcmFwaCgpOwotdmFyIGNvbm5lY3Rpb24gPSBuZXcgRHJpdmVyUmVtb3RlQ29ubmVjdGlvbihuZXcgR3JlbWxpbkNsaWVudChuZXcgR3JlbWxpblNlcnZlcigibG9jYWxob3N0IiwgODE4MikpKTsKLXZhciBzb2NpYWwgPSBncmFwaC5UcmF2ZXJzYWwoKS5XaXRoUmVtb3RlKGNvbm5lY3Rpb24pOwotCi1zb2NpYWwuUGVyc29ucygibWFya28iKS5Lbm93cygiam9zaCIpOwotc29jaWFsLlBlcnNvbnMoIm1hcmtvIikuWW91bmdlc3RGcmllbmRzQWdlKCk7Ci1zb2NpYWwuUGVyc29ucygpLkZpbHRlcihDcmVhdGVkQXRMZWFzdCgyKSkuQ291bnQoKTsKLS0tLS0KLQotW1tncmVtbGluLWphdmFzY3JpcHQtZHNsXV0KLT09PSBHcmVtbGluLUphdmFTY3JpcHQKLQotRGV2ZWxvcGluZyBHcmVtbGluIERTTHMgaW4gSmF2YVNjcmlwdCBsYXJnZWx5IHJlcXVpcmVzIGV4dGVuc2lvbiBvZiBleGlzdGluZyBjb3JlIGNsYXNzZXMgd2l0aCB1c2Ugb2Ygc3RhbmRhbG9uZQotZnVuY3Rpb25zIGZvciBhbm9ueW1vdXMgdHJhdmVyc2FsIHNwYXduaW5nLiBUaGUgcGF0dGVybiBpcyBkZW1vbnN0cmF0ZWQgaW4gdGhlIGZvbGxvd2luZyBleGFtcGxlOgotCi1bc291cmNlLGphdmFzY3JpcHRdCi0tLS0tCi1jbGFzcyBTb2NpYWxUcmF2ZXJzYWwgZXh0ZW5kcyBHcmFwaFRyYXZlcnNhbCB7Ci0gIGNvbnN0cnVjdG9yKGdyYXBoLCB0cmF2ZXJzYWxTdHJhdGVnaWVzLCBieXRlY29kZSkgewotICAgIHN1cGVyKGdyYXBoLCB0cmF2ZXJzYWxTdHJhdGVnaWVzLCBieXRlY29kZSk7Ci0gIH0KLQotICBhZ2VkKGFnZSkgewotICAgIHJldHVybiB0aGlzLmhhcygncGVyc29uJywgJ2FnZScsIGFnZSk7Ci0gIH0KLX0KLQotY2xhc3MgU29jaWFsVHJhdmVyc2FsU291cmNlIGV4dGVuZHMgR3JhcGhUcmF2ZXJzYWxTb3VyY2UgewotICBjb25zdHJ1Y3RvcihncmFwaCwgdHJhdmVyc2FsU3RyYXRlZ2llcywgYnl0ZWNvZGUpIHsKLSAgICBzdXBlcihncmFwaCwgdHJhdmVyc2FsU3RyYXRlZ2llcywgYnl0ZWNvZGUsIFNvY2lhbFRyYXZlcnNhbFNvdXJjZSwgU29jaWFsVHJhdmVyc2FsKTsKLSAgfQotCi0gIHBlcnNvbihuYW1lKSB7Ci0gICAgcmV0dXJuIHRoaXMuVigpLmhhcygncGVyc29uJywgJ25hbWUnLCBuYW1lKTsKLSAgfQotfQotCi1mdW5jdGlvbiBhbm9ueW1vdXMoKSB7Ci0gIHJldHVybiBuZXcgU29jaWFsVHJhdmVyc2FsKG51bGwsIG51bGwsIG5ldyBCeXRlY29kZSgpKTsKLX0KLQotZnVuY3Rpb24gYWdlZChhZ2UpIHsKLSAgcmV0dXJuIGFub255bW91cygpLmFnZWQoYWdlKTsKLX0KLS0tLS0KLQotYFNvY2lhbFRyYXZlcnNhbGAgZXh0ZW5kcyB0aGUgY29yZSBgR3JhcGhUcmF2ZXJzYWxgIGNsYXNzIGFuZCBoYXMgYSB0aHJlZSBhcmd1bWVudCBjb25zdHJ1Y3RvciB3aGljaCBpcyBpbW1lZGlhdGVseQotcHJveGllZCB0byB0aGUgYEdyYXBoVHJhdmVyc2FsYCBjb25zdHJ1Y3Rvci4gTmV3IERTTCBzdGVwcyBhcmUgdGhlbiBhZGRlZCB0byB0aGlzIGNsYXNzIHVzaW5nIGF2YWlsYWJsZSBzdGVwcyB0bwotY29uc3RydWN0IHRoZSB1bmRlcmx5aW5nIHRyYXZlcnNhbCB0byBleGVjdXRlIGFzIGRlbW9uc3RyYXRlZCBpbiB0aGUgYGFnZWQoKWAgc3RlcC4KLQotVGhlIGBTb2NpYWxUcmF2ZXJzYWxgIGlzIHNwYXduZWQgZnJvbSBhIGBTb2NpYWxUcmF2ZXJzYWxTb3VyY2VgIHdoaWNoIGlzIGV4dGVuZGVkIGZyb20gYEdyYXBoVHJhdmVyc2FsU291cmNlYC4gU3RlcHMKLWFkZGVkIGhlcmUgYXJlIG1lYW50IHRvIGJlIHN0YXJ0IHN0ZXBzLiBJbiB0aGUgYWJvdmUgY2FzZSwgdGhlIGBwZXJzb24oKWAgc3RhcnQgc3RlcCBmaW5kIGEgInBlcnNvbiIgdmVydGV4IHRvIGJlZ2luCi10aGUgdHJhdmVyc2FsIGZyb20uCi0KLVR5cGljYWxseSwgc3RlcHMgdGhhdCBhcmUgbWFkZSBhdmFpbGFibGUgb24gYSBgR3JhcGhUcmF2ZXJzYWxgIChpLmUuIFNvY2lhbFRyYXZlcnNhbCBpbiB0aGlzIGV4YW1wbGUpIHNob3VsZCBhbHNvIGJlCi1tYWRlIGF2YWlsYWJsZSBhcyBzcGF3bnMgZm9yIGFub255bW91cyB0cmF2ZXJzYWxzLiBUaGUgcmVjb21tZW5kYXRpb24gaXMgdGhhdCB0aGVzZSBzdGVwcyBiZSBleHBvc2VkIGluIHRoZSBtb2R1bGUKLWFzIHN0YW5kYWxvbmUgZnVuY3Rpb25zLiBJbiB0aGUgZXhhbXBsZSBhYm92ZSwgdGhlIHN0YW5kYWxvbmUgYGFnZWQoKWAgc3RlcCBjcmVhdGVzIGFuIGFub255bW91cyB0cmF2ZXJzYWwgdGhyb3VnaAotYW4gYGFub255bW91cygpYCB1dGlsaXR5IGZ1bmN0aW9uLiBUaGUgbWV0aG9kIGZvciBjcmVhdGluZyB0aGVzZSBzdGFuZGFsb25lIGZ1bmN0aW9ucyBjYW4gYmUgaGFuZGxlZCBpbiBvdGhlciB3YXlzIGlmCi1kZXNpcmVkLgotCi1UbyB1c2UgdGhlIERTTCwgc2ltcGx5IGluaXRpYWxpemUgdGhlIGBnYCBhcyBmb2xsb3dzOgotCi1bc291cmNlLGphdmFzY3JpcHRdCi0tLS0tCi1jb25zdCBnID0gdHJhdmVyc2FsKFNvY2lhbFRyYXZlcnNhbFNvdXJjZSkud2l0aFJlbW90ZShjb25uZWN0aW9uKTsKLWcucGVyc29uKCdtYXJrbycpLmFnZWQoMjkpLnZhbHVlcygnbmFtZScpLnRvTGlzdCgpLgotICB0aGVuKG5hbWVzID0+IGNvbnNvbGUubG9nKG5hbWVzKSk7Ci0tLS0tCitMZWFybiBtb3JlIGFib3V0IGhvdyB0byBpbXBsZW1lbnQgdGhlc2UgRFNMcyBpbiB0aGUgPDxncmVtbGluLWRyaXZlcnMtdmFyaWFudHMsR3JlbWxpbiBMYW5ndWFnZSBWYXJpYW50cz4+IHNlY3Rpb24KK3NwZWNpZmljIHRvIHRoZSBwcm9ncmFtbWluZyBsYW5ndWFnZSBvZiBpbnRlcmVzdC4KZGlmZiAtLWdpdCBhL2RvY3Mvc3JjL3R1dG9yaWFscy9nZXR0aW5nLXN0YXJ0ZWQvaW5kZXguYXNjaWlkb2MgYi9kb2NzL3NyYy90dXRvcmlhbHMvZ2V0dGluZy1zdGFydGVkL2luZGV4LmFzY2lpZG9jCmluZGV4IDY2Njk3ZGEuLjkwZjE1NzQgMTAwNjQ0Ci0tLSBhL2RvY3Mvc3JjL3R1dG9yaWFscy9nZXR0aW5nLXN0YXJ0ZWQvaW5kZXguYXNjaWlkb2MKKysrIGIvZG9jcy9zcmMvdHV0b3JpYWxzL2dldHRpbmctc3RhcnRlZC9pbmRleC5hc2NpaWRvYwpAQCAtMjQsMTMgKzI0LDEzIEBACiBsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmdbQXBhY2hlIFRpbmtlclBvcOKEol0gaXMgYW4gb3BlbiBzb3VyY2UgR3JhcGggQ29tcHV0aW5nIEZyYW1ld29yay4gV2l0aGluIGl0c2VsZiwgVGlua2VyUG9wCiByZXByZXNlbnRzIGEgbGFyZ2UgY29sbGVjdGlvbiBvZiBjYXBhYmlsaXRpZXMgYW5kIHRlY2hub2xvZ2llcyBhbmQsIGluIGl0cyB3aWRlciBlY29zeXN0ZW0sIGFuIGFkZGl0aW9uYWxseSBleHRlbmRlZAogd29ybGQgb2YgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnLyNncmFwaC1zeXN0ZW1zW3RoaXJkLXBhcnR5IGNvbnRyaWJ1dGVkXSBncmFwaCBsaWJyYXJpZXMgYW5kCi1zeXN0ZW1zLiBUaW5rZXJQb3AncyBlY29zeXN0ZW0gY2FuIGFwcGVhciBjb21wbGV4IHRvIG5ld2NvbWVycyBvZiBhbGwgZXhwZXJpZW5jZSwgZXNwZWNpYWxseSB3aGVuIGdsYW5jaW5nIGF0IHRoZQorc3lzdGVtcy4gVGlua2VyUG9wJ3MgZWNvc3lzdGVtIGNhbiBhcHBlYXIgY29tcGxleCB0byBuZXdjb21lcnMgb2YgYWxsIGV4cGVyaWVuY2UgbGV2ZWxzLCBlc3BlY2lhbGx5IHdoZW4gZ2xhbmNpbmcgYXQgdGhlCiBsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei9yZWZlcmVuY2UvW3JlZmVyZW5jZSBkb2N1bWVudGF0aW9uXSBmb3IgdGhlIGZpcnN0IHRpbWUuCiAKLVNvLCB3aGVyZSBkbyB5b3UgZ2V0IHN0YXJ0ZWQgd2l0aCBUaW5rZXJQb3A/IEhvdyBkbyB5b3UgZGl2ZSBpbiBxdWlja2x5IGFuZCBnZXQgcHJvZHVjdGl2ZT8gV2VsbCAtIEdyZW1saW4sIHRoZQotbW9zdCByZWNvZ25pemFibGUgY2l0aXplbiBvZiBUaGUgVGlua2VyUG9wLCBpcyBoZXJlIHRvIGhlbHAgd2l0aCB0aGlzIHRoaXJ0eSBtaW51dGUgdHV0b3JpYWwuIFRoYXQncyByaWdodCAtIGluIGp1c3QKK1NvLCB3aGVyZSBkbyB5b3UgZ2V0IHN0YXJ0ZWQgd2l0aCBUaW5rZXJQb3A/IEhvdyBkbyB5b3UgZGl2ZSBpbiBxdWlja2x5IGFuZCBnZXQgcHJvZHVjdGl2ZT8gV2VsbCAuLi4gR3JlbWxpbiwgdGhlCittb3N0IHJlY29nbml6YWJsZSBjaXRpemVuIG9mIFRoZSBUaW5rZXJQb3AsIGlzIGhlcmUgdG8gaGVscCB3aXRoIHRoaXMgdGhpcnR5LW1pbnV0ZSB0dXRvcmlhbC4gVGhhdCdzIHJpZ2h0OiBpbiBqdXN0CiB0aGlydHkgc2hvcnQgbWludXRlcywgeW91IHRvbyBjYW4gYmUgZml0IHRvIHN0YXJ0IGJ1aWxkaW5nIGdyYXBoIGFwcGxpY2F0aW9ucyB3aXRoIFRpbmtlclBvcC4gV2VsY29tZSB0byBfVGhlCi1UaW5rZXJQb3AgV29ya291dCAtIGJ5IEdyZW1saW5fIQorVGlua2VyUG9wIFdvcmtvdXQg4oCUIGJ5IEdyZW1saW5fIQogCiBpbWFnZTo6Z3JlbWxpbi1neW0ucG5nW3dpZHRoPTEwMjRdCiAKQEAgLTQzLDggKzQzLDggQEAKIAogR3JlbWxpbiBoZWxwcyB5b3UgbmF2aWdhdGUgdGhlIHZlcnRpY2VzIGFuZCBlZGdlcyBvZiBhIGdyYXBoLiBIZSBpcyBlc3NlbnRpYWxseSB5b3VyIHF1ZXJ5IGxhbmd1YWdlIHRvIGdyYXBoCiBkYXRhYmFzZXMsIGFzIGxpbms6aHR0cDovL3NxbDJncmVtbGluLmNvbS9bU1FMXSBpcyB0aGUgcXVlcnkgbGFuZ3VhZ2UgdG8gcmVsYXRpb25hbCBkYXRhYmFzZXMuIFRvIHRlbGwgR3JlbWxpbiBob3cKLWhlIHNob3VsZCAidHJhdmVyc2UiIHRoZSBncmFwaCAoaS5lLiB3aGF0IHlvdSB3YW50IHlvdXIgcXVlcnkgdG8gZG8pIHlvdSBuZWVkIGEgd2F5IHRvIHByb3ZpZGUgaGltIGNvbW1hbmRzIGluIHRoZQotbGFuZ3VhZ2UgaGUgdW5kZXJzdGFuZHMgLSBhbmQsIG9mIGNvdXJzZSwgdGhhdCBsYW5ndWFnZSBpcyBjYWxsZWQgIkdyZW1saW4iLiBGb3IgdGhpcyB0YXNrLCB5b3UgbmVlZCBvbmUgb2YKK2hlIHNob3VsZCAidHJhdmVyc2UiIHRoZSBncmFwaCAoaS5lLiwgd2hhdCB5b3Ugd2FudCB5b3VyIHF1ZXJ5IHRvIGRvKSB5b3UgbmVlZCBhIHdheSB0byBwcm92aWRlIGhpbSBjb21tYW5kcyBpbiB0aGUKK2xhbmd1YWdlIGhlIHVuZGVyc3RhbmRzIOKAlCBhbmQsIG9mIGNvdXJzZSwgdGhhdCBsYW5ndWFnZSBpcyBjYWxsZWQgIkdyZW1saW4iLiBGb3IgdGhpcyB0YXNrLCB5b3UgbmVlZCBvbmUgb2YKIFRpbmtlclBvcCdzIG1vc3QgaW1wb3J0YW50IHRvb2xzOiBsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei9yZWZlcmVuY2UvI2dyZW1saW4tY29uc29sZVtUaGUgR3JlbWxpbiBDb25zb2xlXS4KIAogTk9URTogQXJlIHlvdSB1bnN1cmUgb2Ygd2hhdCBhIHZlcnRleCBvciBlZGdlIGlzPyBUaGF0IHRvcGljIGlzIGNvdmVyZWQgaW4gdGhlIDw8X3RoZV9uZXh0X2ZpZnRlZW5fbWludXRlcywgbmV4dCBzZWN0aW9uPj4sCkBAIC03MywxNiArNzMsMTggQEAKIAogVGhlIEdyZW1saW4gQ29uc29sZSBpcyBhIGxpbms6aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZWFkJUUyJTgwJTkzZXZhbCVFMiU4MCU5M3ByaW50X2xvb3BbUkVQTCBlbnZpcm9ubWVudF0sCiB3aGljaCBwcm92aWRlcyBhIG5pY2Ugd2F5IHRvIGxlYXJuIEdyZW1saW4gYXMgeW91IGdldCBpbW1lZGlhdGUgZmVlZGJhY2sgZm9yIHRoZSBjb2RlIHRoYXQgeW91IGVudGVyLiBUaGlzIGVsaW1pbmF0ZXMKLXRoZSBtb3JlIGNvbXBsZXggbmVlZCB0byAiY3JlYXRlIGEgcHJvamVjdCIgdG8gdHJ5IHRoaW5ncyBvdXQuIFRoZSBjb25zb2xlIGlzIG5vdCBqdXN0IGZvciAiZ2V0dGluZyBzdGFydGVkIiBob3dldmVyLgordGhlIG1vcmUgY29tcGxleCBuZWVkIHRvICJjcmVhdGUgYSBwcm9qZWN0IiB0byB0cnkgdGhpbmdzIG91dC4gVGhlIGNvbnNvbGUgaXMgbm90IGp1c3QgZm9yICJnZXR0aW5nIHN0YXJ0ZWQiLCBob3dldmVyLgogWW91IHdpbGwgZmluZCB5b3Vyc2VsZiB1c2luZyBpdCBmb3IgYSB2YXJpZXR5IG9mIFRpbmtlclBvcC1yZWxhdGVkIGFjdGl2aXRpZXMsIHN1Y2ggYXMgbG9hZGluZyBkYXRhLCBhZG1pbmlzdGVyaW5nCi1ncmFwaHMsIHdvcmtpbmcgb3V0IGNvbXBsZXggdHJhdmVyc2FscywgZXRjLgorZ3JhcGhzIGFuZCB3b3JraW5nIG91dCBjb21wbGV4IHRyYXZlcnNhbHMuCiAKLVRvIGdldCBHcmVtbGluIHRvIHRyYXZlcnNlIGEgZ3JhcGgsIHlvdSBuZWVkIGEgYEdyYXBoYCBpbnN0YW5jZSwgd2hpY2ggaG9sZHMgdGhlCi1saW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei9yZWZlcmVuY2UvI190aGVfZ3JhcGhfc3RydWN0dXJlW3N0cnVjdHVyZV0gYW5kIGRhdGEgb2YgdGhlCitUbyBnZXQgR3JlbWxpbiB0byB0cmF2ZXJzZSBhIGdyYXBoLCB5b3UgbmVlZCBhIGBUcmF2ZXJzYWxTb3VyY2VgIGluc3RhbmNlLCB3aGljaCBob2xkcyBhIHJlZmVyZW5jZSB0byBhCitgR3JhcGhgIGluc3RhbmNlLCB3aGljaCBpbiB0dXJuIGhvbGRzIHRoZQorbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVmZXJlbmNlLyNncmFwaC1zdHJ1Y3R1cmVbc3RydWN0dXJlXSBhbmQgZGF0YSBvZiB0aGUKIGdyYXBoLiBUaW5rZXJQb3AgaXMgYSBncmFwaCBhYnN0cmFjdGlvbiBsYXllciBvdmVyIGRpZmZlcmVudCBncmFwaCBkYXRhYmFzZXMgYW5kIGRpZmZlcmVudCBncmFwaCBwcm9jZXNzb3JzLCBzbyB0aGVyZQotYXJlIG1hbnkgYEdyYXBoYCBpbnN0YW5jZXMgeW91IGNhbiBjaG9vc2UgZnJvbSB0byBpbnN0YW50aWF0ZSBpbiB0aGUgY29uc29sZS4gVGhlIGJlc3QgYEdyYXBoYCBpbnN0YW5jZSB0byBzdGFydCB3aXRoCi1ob3dldmVyIGlzIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jdGlua2VyZ3JhcGgtZ3JlbWxpbltUaW5rZXJHcmFwaF0uIFRpbmtlckdyYXBoCi1pcyBhIGZhc3QsIGluLW1lbW9yeSBncmFwaCBkYXRhYmFzZSB3aXRoIGEgc21hbGwgaGFuZGZ1bCBvZiBjb25maWd1cmF0aW9uIG9wdGlvbnMsIG1ha2luZyBpdCBhIGdvb2QgY2hvaWNlIGZvciBiZWdpbm5lcnMuCithcmUgbWFueSBgR3JhcGhgIGluc3RhbmNlcyBsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvI2dyYXBoLXN5c3RlbXNbeW91IGNhbiBjaG9vc2UgZnJvbV0gdG8gaW5zdGFudGlhdGUgYQorY29ubmVjdGlvbiB0byBpbiB0aGUgY29uc29sZS4gVGhlIGJlc3QgYEdyYXBoYCBpbnN0YW5jZSB0byBzdGFydCB3aXRoLCBob3dldmVyLCBpcworbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVmZXJlbmNlLyN0aW5rZXJncmFwaC1ncmVtbGluW1RpbmtlckdyYXBoXS4gVGlua2VyR3JhcGggaXMgYSBmYXN0LAoraW4tbWVtb3J5IGdyYXBoIGRhdGFiYXNlIHdpdGggYSBzbWFsbCBoYW5kZnVsIG9mIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgbWFraW5nIGl0IGEgZ29vZCBjaG9pY2UgZm9yIGJlZ2lubmVycy4KIAogVElQOiBUaW5rZXJHcmFwaCBpcyBub3QganVzdCBhIHRveSBmb3IgYmVnaW5uZXJzLiBJdCBpcyB1c2VmdWwgaW4gYW5hbHl6aW5nIHN1YmdyYXBocyB0YWtlbiBmcm9tIGEgbGFyZ2UgZ3JhcGgsCiB3b3JraW5nIHdpdGggYSBzbWFsbCBzdGF0aWMgZ3JhcGggdGhhdCBkb2Vzbid0IGNoYW5nZSBtdWNoLCB3cml0aW5nIHVuaXQgdGVzdHMgYW5kIG90aGVyIHVzZSBjYXNlcyB3aGVyZSB0aGUgZ3JhcGgKQEAgLTk5LDEyICsxMDEsMTMgQEAKIGxpbms6aHR0cDovL2dyb3Vwcy5nb29nbGUuY29tL2dyb3VwL2dyZW1saW4tdXNlcnNbbWFpbGluZyBsaXN0XSwgYSBmYWlsaW5nIGV4YW1wbGUgcHV0IGluIHRoZSBjb250ZXh0IG9mIHRoZSB0b3kgZ3JhcGhzCiBjYW4gdXN1YWxseSBnZXQgeW91IGEgZmFzdCBhbnN3ZXIgdG8geW91ciBwcm9ibGVtLgogCi1USVA6IFdoZW4gYXNraW5nIHF1ZXN0aW9ucyBvbiB0aGUgbWFpbGluZyBsaXN0IG9yIFN0YWNrT3ZlcmZsb3cgYWJvdXQgR3JlbWxpbiwgaXQncyBhbHdheXMgaGVscGZ1bCB0byBpbmNsdWRlIGEKLXNhbXBsZSBncmFwaCBzbyB0aGF0IHRob3NlIGF0dGVtcHRpbmcgdG8gYW5zd2VyIHlvdXIgcXVlc3Rpb24gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQga2luZCBvZiBncmFwaCB5b3UgaGF2ZSBhbmQgY2FuCi1mb2N1cyB0aGVpciBlbmVyZ2llcyBvbiBhIGdvb2QgYW5zd2VyIHJhdGhlciB0aGFuIHRyeWluZyB0byBidWlsZCBzYW1wbGUgZGF0YSB0aGVtc2VsdmVzLiBUaGUgc2FtcGxlIGdyYXBoIHNob3VsZCBqdXN0Ci1iZSBhIHNpbXBsZSBHcmVtbGluIHNjcmlwdCB0aGF0IGNhbiBiZSBjb3BpZWQgYW5kIHBhc3RlZCBpbnRvIGEgR3JlbWxpbiBDb25zb2xlIHNlc3Npb24uCitUSVA6IFdoZW4gYXNraW5nIHF1ZXN0aW9ucyBvbiB0aGUgbWFpbGluZyBsaXN0IG9yIFN0YWNrT3ZlcmZsb3cgYWJvdXQgR3JlbWxpbiwgaXQncyBhbHdheXMgaGVscGZ1bCB0bworbGluazpodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy81MTM4ODMxNS9ncmVtbGluLWNob29zZS1vbmUtaXRlbS1hdC1yYW5kb21baW5jbHVkZSBhIHNhbXBsZSBncmFwaF0gc28gdGhhdAordGhvc2UgYXR0ZW1wdGluZyB0byBhbnN3ZXIgeW91ciBxdWVzdGlvbiB1bmRlcnN0YW5kIGV4YWN0bHkgd2hhdCBraW5kIG9mIGdyYXBoIHlvdSBoYXZlIGFuZCBjYW4gZm9jdXMgdGhlaXIgZW5lcmdpZXMKK29uIHByb3ZpZGluZyBhIGdvb2QsIHRlc3RlZCBhbnN3ZXIgcmF0aGVyIHRoYW4gdHJ5aW5nIHRvIGJ1aWxkIHNhbXBsZSBkYXRhIHRoZW1zZWx2ZXMuIFRoZSBzYW1wbGUgZ3JhcGggc2hvdWxkIGp1c3QgYmUgYSBzaW1wbGUKK0dyZW1saW4gc2NyaXB0IHRoYXQgY2FuIGJlIGNvcGllZCBhbmQgcGFzdGVkIGludG8gYSBHcmVtbGluIENvbnNvbGUgc2Vzc2lvbi4KIAotRm9yIHlvdXIgZmlyc3QgZ3JhcGgsIHVzZSB0aGUgIk1vZGVybiIgZ3JhcGggd2hpY2ggbG9va3MgbGlrZSB0aGlzOgorRm9yIHlvdXIgZmlyc3QgZ3JhcGgsIHVzZSB0aGUgIk1vZGVybiIgZ3JhcGgsIHdoaWNoIGxvb2tzIGxpa2UgdGhpczoKIAogaW1hZ2U6dGlua2VycG9wLW1vZGVybi5wbmdbd2lkdGg9NTAwXQogCkBAIC0xMjMsNiArMTI2LDEyIEBACiB0byBhcHBseSBhbmQgdGhlIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jZ3JhcGhjb21wdXRlclt0cmF2ZXJzYWwgZW5naW5lXSB0byB1c2UpIHdoaWNoCiBwcm92aWRlcyBoaW0gZ3VpZGFuY2Ugb24gaG93IHRvIGV4ZWN1dGUgaGlzIHRyaXAgYXJvdW5kIHRoZSBgR3JhcGhgLgogCitUaGVyZSBhcmUgc2V2ZXJhbCB3YXlzIHRvIGNyZWF0ZSBhIGBUcmF2ZXJzYWxTb3VyY2VgLiBUaGUgZXhhbXBsZSBhYm92ZSB1c2VzIHRoZQorbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVmZXJlbmNlLyNjb25uZWN0aW5nLWVtYmVkZGVkW2VtYmVkZGVkXSBzdHlsZSBhbmQgaXMgYW4gYXBwcm9hY2gKK3Jlc3RyaWN0ZWQgdG8gbGFuZ3VhZ2VzIHVzaW5nIHRoZSBKYXZhIFZpcnR1YWwgTWFjaGluZSAoSlZNKS4gT3RoZXIgbWV0aG9kcyBhcmUgc2ltaWxhciBpbiBmb3JtLCBidXQgYXJlIG5vdCB0aGUgZm9jdXMgb2YKK3RoaXMgdHV0b3JpYWwuIFNlZSB0aGUgUmVmZXJlbmNlIERvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIGRpZmZlcmVudCB3YXlzIG9mCitsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei9yZWZlcmVuY2UvI2Nvbm5lY3RpbmctZ3JlbWxpbltjb25uZWN0aW5nIHdpdGggR3JlbWxpbl0uCisKIFdpdGggeW91ciBgVHJhdmVyc2FsU291cmNlYCBgZ2AgYXZhaWxhYmxlIGl0IGlzIG5vdyBwb3NzaWJsZSB0byBhc2sgR3JlbWxpbiB0byB0cmF2ZXJzZSB0aGUgYEdyYXBoYDoKIAogW2dyZW1saW4tZ3Jvb3Z5LG1vZGVybl0KQEAgLTE0MCw3ICsxNDksNyBAQAogPDI+IEdldCB0aGUgdmVydGV4IHdpdGggdGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mICIxIi4KIDwzPiBHZXQgdGhlIHZhbHVlIG9mIHRoZSBgbmFtZWAgcHJvcGVydHkgb24gdGhlIHZlcnRleCB3aXRoIHRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiAiMSIuCiA8ND4gR2V0IHRoZSBlZGdlcyB3aXRoIHRoZSBsYWJlbCAia25vd3MiIGZvciB0aGUgdmVydGV4IHdpdGggdGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mICIxIi4KLTw1PiBHZXQgdGhlIG5hbWVzIG9mIHRoZSBwZW9wbGUgdGhhdCB0aGUgdmVydGV4IHdpdGggdGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mICIxIiAia25vd3MiLgorPDU+IEdldCB0aGUgbmFtZXMgb2YgdGhlIHBlb3BsZSB3aG9tIHRoZSB2ZXJ0ZXggd2l0aCB0aGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgIjEiICJrbm93cyIuCiA8Nj4gTm90ZSB0aGF0IHdoZW4gb25lIHVzZXMgYG91dEUoKS5pblYoKWAgYXMgc2hvd24gaW4gdGhlIHByZXZpb3VzIGNvbW1hbmQsIHRoaXMgY2FuIGJlIHNob3J0ZW5lZCB0byBqdXN0IGBvdXQoKWAKIChzaW1pbGFyIHRvIGBpbkUoKS5vdXRWKClgIGFuZCBgaW4oKWAgZm9yIGluY29taW5nIGVkZ2VzKS4KIDw3PiBHZXQgdGhlIG5hbWVzIG9mIHRoZSBwZW9wbGUgdmVydGV4ICIxIiBrbm93cyB3aG8gYXJlIG92ZXIgdGhlIGFnZSBvZiAzMC4KQEAgLTE2MiwxNiArMTcxLDE2IEBACiAKID09IFRoZSBOZXh0IEZpZnRlZW4gTWludXRlcwogCi1JbiB0aGUgZmlyc3QgZml2ZSBtaW51dGVzIG9mIF9UaGUgVGlua2VyUG9wIFdvcmtvdXQgLSBieSBHcmVtbGluXywgeW91IGxlYXJuZWQgc29tZSBiYXNpY3MgZm9yIHRyYXZlcnNpbmcgZ3JhcGhzLiBPZgotY291cnNlLCB0aGVyZSB3YXNuJ3QgbXVjaCBkaXNjdXNzaW9uIGFib3V0IHdoYXQgYSBncmFwaCBpcy4gQSBncmFwaCBpcyBhIGNvbGxlY3Rpb24gb2YgdmVydGljZXMgKGkuZS4gbm9kZXMsIGRvdHMpCi1hbmQgZWRnZXMgKGkuZS4gcmVsYXRpb25zaGlwcywgbGluZXMpLCB3aGVyZSBhIHZlcnRleCBpcyBhbiBlbnRpdHkgd2hpY2ggcmVwcmVzZW50cyBzb21lIGRvbWFpbiBvYmplY3QgKGUuZy4gYSBwZXJzb24sCi1hIHBsYWNlLCBldGMuKSBhbmQgYW4gZWRnZSByZXByZXNlbnRzIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0d28gdmVydGljZXMuCitJbiB0aGUgZmlyc3QgZml2ZSBtaW51dGVzIG9mIF9UaGUgVGlua2VyUG9wIFdvcmtvdXQg4oCUIGJ5IEdyZW1saW5fLCB5b3UgbGVhcm5lZCBzb21lIGJhc2ljcyBmb3IgdHJhdmVyc2luZyBncmFwaHMuIE9mCitjb3Vyc2UsIHRoZXJlIHdhc24ndCBtdWNoIGRpc2N1c3Npb24gYWJvdXQgd2hhdCBhIGdyYXBoIGlzLiBBIGdyYXBoIGlzIGEgY29sbGVjdGlvbiBvZiB2ZXJ0aWNlcyAoaS5lLiwgbm9kZXMsIGRvdHMpCithbmQgZWRnZXMgKGkuZS4sIHJlbGF0aW9uc2hpcHMsIGxpbmVzKSwgd2hlcmUgYSB2ZXJ0ZXggaXMgYW4gZW50aXR5IHdoaWNoIHJlcHJlc2VudHMgc29tZSBkb21haW4gb2JqZWN0IChlLmcuLCBhIHBlcnNvbiBvcgorYSBwbGFjZSkgYW5kIGFuIGVkZ2UgcmVwcmVzZW50cyB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdHdvIHZlcnRpY2VzLgogCiBpbWFnZTptb2Rlcm4tZWRnZS0xLXRvLTMtMS5wbmdbd2lkdGg9MzAwXQogCiBUaGUgZGlhZ3JhbSBhYm92ZSBzaG93cyBhIGdyYXBoIHdpdGggdHdvIHZlcnRpY2VzLCBvbmUgd2l0aCBhIHVuaXF1ZSBpZGVudGlmaWVyIG9mICIxIiBhbmQgYW5vdGhlciB3aXRoIGEgdW5pcXVlCiBpZGVudGlmaWVyIG9mICIzIi4gVGhlcmUgaXMgYW4gZWRnZSBjb25uZWN0aW5nIHRoZSB0d28gd2l0aCBhIHVuaXF1ZSBpZGVudGlmaWVyIG9mICI5Ii4gSXQgaXMgaW1wb3J0YW50IHRvIGNvbnNpZGVyCi10aGF0IHRoZSBlZGdlIGhhcyBhIGRpcmVjdGlvbiB3aGljaCBnb2VzIF9vdXRfIGZyb20gdmVydGV4ICIxIiBhbmQgX2luXyB0byB2ZXJ0ZXggIjMiLgordGhhdCB0aGUgZWRnZSBoYXMgYSBkaXJlY3Rpb24sIHdoaWNoIGdvZXMgX291dF8gZnJvbSB2ZXJ0ZXggIjEiIGFuZCBfaW5fIHRvIHZlcnRleCAiMyIuCiAKIElNUE9SVEFOVDogTW9zdCBUaW5rZXJQb3AgaW1wbGVtZW50YXRpb25zIGRvIG5vdCBhbGxvdyBmb3IgaWRlbnRpZmllciBhc3NpZ25tZW50LiBUaGV5IHdpbGwgcmF0aGVyIGFzc2lnbgogdGhlaXIgb3duIGlkZW50aWZpZXJzIGFuZCBpZ25vcmUgYXNzaWduZWQgaWRlbnRpZmllcnMgdGhhdCB5b3UgYXR0ZW1wdCB0byBhc3NpZ24gdG8gdGhlbS4KQEAgLTE4MSw3ICsxOTAsNyBAQAogCiBpbWFnZTptb2Rlcm4tZWRnZS0xLXRvLTMtMi5wbmdbd2lkdGg9MzAwXQogCi1Zb3UgY2FuIG5vdyBzZWUgdGhhdCBhIHZlcnRleCAiMSIgaXMgYSAicGVyc29uIiBhbmQgdmVydGV4ICIzIiBpcyBhICJzb2Z0d2FyZSIgdmVydGV4LiBUaGV5IGFyZSBqb2luZWQgYnkgYSAiY3JlYXRlZCIKK1lvdSBjYW4gbm93IHNlZSB0aGF0IHZlcnRleCAiMSIgaXMgYSAicGVyc29uIiBhbmQgdmVydGV4ICIzIiBpcyBhICJzb2Z0d2FyZSIgdmVydGV4LiBUaGV5IGFyZSBqb2luZWQgYnkgYSAiY3JlYXRlZCIKIGVkZ2Ugd2hpY2ggYWxsb3dzIHlvdSB0byBzZWUgdGhhdCBhICJwZXJzb24gY3JlYXRlZCBzb2Z0d2FyZSIuIFRoZSAibGFiZWwiIGFuZCB0aGUgImlkIiBhcmUgcmVzZXJ2ZWQgYXR0cmlidXRlcyBvZgogdmVydGljZXMgYW5kIGVkZ2VzLCBidXQgeW91IGNhbiBhZGQgeW91ciBvd24gYXJiaXRyYXJ5IHByb3BlcnRpZXMgYXMgd2VsbDoKIApAQCAtMTk1LDcgKzIwNCw3IEBACiBBcyBpbnR1aXRpdmUgYXMgaXQgaXMgdG8geW91LCBpdCBpcyBwZXJoYXBzIG1vcmUgaW50dWl0aXZlIHRvIEdyZW1saW4gaGltc2VsZiwgYXMgdmVydGljZXMsIGVkZ2VzIGFuZCBwcm9wZXJ0aWVzIG1ha2UKIHVwIHRoZSB2ZXJ5IGVsZW1lbnRzIG9mIGhpcyBleGlzdGVuY2UuIEl0IGlzIGluZGVlZCBoZWxwZnVsIHRvIHRoaW5rIG9mIG91ciBmcmllbmQsIEdyZW1saW4sIG1vdmluZyBhYm91dCBhIGdyYXBoIHdoZW4KIGRldmVsb3BpbmcgdHJhdmVyc2FscywgYXMgcGljdHVyaW5nIGhpcyBwb3NpdGlvbiBhcyB0aGUgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVmZXJlbmNlLyNfdGhlX3RyYXZlcnNlclt0cmF2ZXJzZXJdCi1oZWxwcyBvcmllbnQgd2hlcmUgeW91IG5lZWQgaGltIHRvIGdvIG5leHQuIExldCdzIHVzZSB0aGUgdHdvIHZlcnRleCwgb25lIGVkZ2UgZ3JhcGggd2UndmUgYmVlbiBkaXNjdXNzaW5nIGFib3ZlCitoZWxwcyBvcmllbnQgd2hlcmUgeW91IG5lZWQgaGltIHRvIGdvIG5leHQuIExldCdzIHVzZSB0aGUgdHdvLXZlcnRleCwgb25lLWVkZ2UgZ3JhcGggd2UndmUgYmVlbiBkaXNjdXNzaW5nIGFib3ZlCiBhcyBhbiBleGFtcGxlLiBGaXJzdCwgeW91IG5lZWQgdG8gY3JlYXRlIHRoaXMgZ3JhcGg6CiAKIFtncmVtbGluLWdyb292eV0KQEAgLTIwOCw3ICsyMTcsNyBAQAogLS0tLQogCiBUaGVyZSBhcmUgYSBudW1iZXIgb2YgaW1wb3J0YW50IHRoaW5ncyB0byBjb25zaWRlciBpbiB0aGUgYWJvdmUgY29kZS4gRmlyc3QsIHJlY2FsbCB0aGF0IGBpZGAgaXMKLSJyZXNlcnZlZCIgZm9yIHNwZWNpYWwgdXNhZ2UgaW4gVGlua2VyUG9wIGFuZCBpcyBhIG1lbWJlciBvZiB0aGUgZW51bSwgYFRgLiBUaGUgImtleXMiIHN1cHBsaWVkIHRvIHRoZSBjcmVhdGlvbgorInJlc2VydmVkIiBmb3Igc3BlY2lhbCB1c2FnZSBpbiBUaW5rZXJQb3AuIEl0IGlzIGEgbWVtYmVyIG9mIHRoZSBlbnVtLCBgVGAuIFRob3NlICJrZXlzIiBzdXBwbGllZCB0byB0aGUgY3JlYXRpb24KIG1ldGhvZCBhcmUgbGluazpodHRwczovL2RvY3Mub3JhY2xlLmNvbS9qYXZhc2UvOC9kb2NzL3RlY2hub3Rlcy9ndWlkZXMvbGFuZ3VhZ2Uvc3RhdGljLWltcG9ydC5odG1sW3N0YXRpY2FsbHkgaW1wb3J0ZWRdCiB0byB0aGUgY29uc29sZSwgd2hpY2ggYWxsb3dzIHlvdSB0byBhY2Nlc3MgdGhlbSB3aXRob3V0IGhhdmluZyB0byBzcGVjaWZ5IHRoZWlyIG93bmluZyBlbnVtLiBUaGluayBvZiBgaWRgIGFzIGEKIHNob3J0aGFuZCBmb3JtIHRoYXQgZW5hYmxlcyBhIG1vcmUgZmx1aWQgY29kZSBzdHlsZS4gWW91IHdvdWxkIG5vcm1hbGx5IHJlZmVyIHRvIGl0IGFzIGBULmlkYCwgc28gd2l0aG91dApAQCAtMjIzLDExICsyMzIsMTQgQEAKIGcuYWRkRSgiY3JlYXRlZCIpLmZyb20odjEpLnRvKHYyKS5wcm9wZXJ0eShULmlkLCA5KS5wcm9wZXJ0eSgid2VpZ2h0IiwgMC40KQogLS0tLQogCi1OT1RFOiBUaGUgZnVsbHkgcXVhbGlmaWVkIG5hbWUgZm9yIGBUYCBpcyBgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVGAuIEFub3RoZXIgaW1wb3J0YW50IHN0YXRpYyBpbXBvcnQKLXRoYXQgaXMgb2Z0ZW4gc2VlbiBpbiBHcmVtbGluIGNvbWVzIGZyb20gYCtvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5fXytgLCB3aGljaCBhbGxvd3MKLWZvciB0aGUgY3JlYXRpb24gb2YgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVmZXJlbmNlLyNncmFwaC10cmF2ZXJzYWwtc3RlcHNbYW5vbnltb3VzIHRyYXZlcnNhbHNdLgorTk9URTogT24gdGhlIEpWTSwgdGhlIGZ1bGx5IHF1YWxpZmllZCBuYW1lIGZvciBgVGAgaXMgYG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlRgLiBBbm90aGVyIGltcG9ydGFudAorc3RhdGljIGltcG9ydCB0aGF0IGlzIG9mdGVuIHNlZW4gaW4gR3JlbWxpbiBjb21lcyBmcm9tIGArb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX18rYCwKK3doaWNoIGFsbG93cyBmb3IgdGhlIGNyZWF0aW9uIG9mIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jZ3JhcGgtdHJhdmVyc2FsLXN0ZXBzW2Fub255bW91cyB0cmF2ZXJzYWxzXS4KK1lvdSBjYW4gZmluZCB0aGUgYW5hbG9nb3VzIHZhcmlhdGlvbnMgb2YgYFRgIGFuZCBgK19fK2AgZm9yIG90aGVyIEdyZW1saW4gbGFuZ3VhZ2VzIGJ5IHZpZXdpbmcgdGhlICJDb21tb24gSW1wb3J0cyIKK3NlY3Rpb25zIGZvciB0aGUgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgeW91IGFyZSBpbnRlcmVzdGVkIGluIGluIHRoZQorbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVmZXJlbmNlLyNncmVtbGluLWRyaXZlcnMtdmFyaWFudHNbUmVmZXJlbmNlIERvY3VtZW50YXRpb25dLgogCi1TZWNvbmQsIGRvbid0IGZvcmdldCB0aGF0IHlvdSBhcmUgd29ya2luZyB3aXRoIFRpbmtlckdyYXBoIHdoaWNoIGFsbG93cyBmb3IgaWRlbnRpZmllciBhc3NpZ25tZW50LiBUaGF0IGlzIF9ub3RfIHRoZQorU2Vjb25kLCBkb24ndCBmb3JnZXQgdGhhdCB5b3UgYXJlIHdvcmtpbmcgd2l0aCBUaW5rZXJHcmFwaCwgd2hpY2ggYWxsb3dzIGZvciBpZGVudGlmaWVyIGFzc2lnbm1lbnQuIFRoYXQgaXMgX25vdF8gdGhlCiBjYXNlIHdpdGggbW9zdCBncmFwaCBkYXRhYmFzZXMuCiAKIEZpbmFsbHksIHRoZSBsYWJlbCBmb3IgYW4gYEVkZ2VgIGlzIHJlcXVpcmVkIGFuZCBpcyB0aHVzIHBhcnQgb2YgdGhlIG1ldGhvZCBzaWduYXR1cmUgb2YgYGFkZEVkZ2UoKWAuIFRoaXMgdXNhZ2Ugb2YgYGFkZEVkZ2VgIGlzCkBAIC0yNDcsOSArMjU5LDkgQEAKIC4gU2VsZWN0IHRoZSAibmFtZSIgcHJvcGVydHkgb2YgdGhlICJzb2Z0d2FyZSIgdmVydGljZXMKIAogVGhlIEVuZ2xpc2gtYmFzZWQgc3RlcHMgYWJvdmUgbGFyZ2VseSB0cmFuc2xhdGUgdG8gR3JlbWxpbidzIHBvc2l0aW9uIGluIHRoZSBncmFwaCBhbmQgdG8gdGhlIHN0ZXBzIHdlIG5lZWQgdG8gdGFrZQotdG8gYXNrIGhpbSB0byBhbnN3ZXIgb3VyIHF1ZXN0aW9uLiBCeSBzdHJpbmdpbmcgdGhlc2Ugc3RlcHMgdG9nZXRoZXIsIHdlIGZvcm0gYSBgVHJhdmVyc2FsYCBvciB0aGUgc2VxdWVuY2Ugb2YgcHJvZ3JhbW1hdGljCi1saW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei9yZWZlcmVuY2UvI2dyYXBoLXRyYXZlcnNhbC1zdGVwc1tzdGVwc10gR3JlbWxpbiBuZWVkcyB0byBwZXJmb3JtCi1pbiBvcmRlciB0byBnZXQgeW91IGFuIGFuc3dlci4KK3RvIGFzayBoaW0gdG8gYW5zd2VyIG91ciBxdWVzdGlvbi4gQnkgc3RyaW5naW5nIHRoZXNlIHN0ZXBzIHRvZ2V0aGVyLCB3ZSBmb3JtIGEgYFRyYXZlcnNhbGAgb3IgdGhlIHNlcXVlbmNlIG9mCitwcm9ncmFtbWF0aWMgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVmZXJlbmNlLyNncmFwaC10cmF2ZXJzYWwtc3RlcHNbc3RlcHNdIEdyZW1saW4gbmVlZHMgdG8KK3BlcmZvcm0gaW4gb3JkZXIgdG8gZ2V0IHlvdSBhbiBhbnN3ZXIuCiAKIExldCdzIHN0YXJ0IHdpdGggZmluZGluZyAibWFya28iLiBUaGlzIG9wZXJhdGlvbiBpcyBhIGZpbHRlcmluZyBzdGVwIGFzIGl0IHNlYXJjaGVzIHRoZSBmdWxsIHNldCBvZiB2ZXJ0aWNlcyB0byBtYXRjaAogdGhvc2UgdGhhdCBoYXZlIHRoZSAibmFtZSIgcHJvcGVydHkgdmFsdWUgb2YgIm1hcmtvIi4gVGhpcyBjYW4gYmUgZG9uZSB3aXRoIHRoZQpAQCAtMjYzLDI2ICsyNzUsMzUgQEAKIE5PVEU6IFRoZSB2YXJpYWJsZSBgZ2AgaXMgdGhlIGBUcmF2ZXJzYWxTb3VyY2VgLCB3aGljaCB3YXMgaW50cm9kdWNlZCBpbiB0aGUgIlRoZSBGaXJzdCBGaXZlIE1pbnV0ZXMiLiBUaGUKIGBUcmF2ZXJzYWxTb3VyY2VgIGlzIGNyZWF0ZWQgd2l0aCBgZ3JhcGgudHJhdmVyc2FsKClgIGFuZCBpcyB0aGUgb2JqZWN0IHVzZWQgdG8gc3Bhd24gbmV3IHRyYXZlcnNhbHMuCiAKK1RoaXMgYml0IG9mIEdyZW1saW4gY2FuIGJlIGltcHJvdmVkIGFuZCBtYWRlIG1vcmUKK2xpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlY2lwZXMvI3Vuc3BlY2lmaWVkLWxhYmVsLWluLWdsb2JhbC12ZXJ0ZXgtbG9va3VwW2lkaW9tYXRpY2FsbHkgcGxlYXNpbmddCitieSBpbmNsdWRpbmcgdGhlIHZlcnRleCBsYWJlbCBhcyBwYXJ0IG9mIHRoZSBmaWx0ZXIgdG8gZW5zdXJlIHRoYXQgdGhlICJuYW1lIiBwcm9wZXJ0eSBrZXkgcmVmZXJzIHRvIGEgInBlcnNvbiIgdmVydGV4LgorCitbZ3JlbWxpbi1ncm9vdnksbW9kZXJuXQorLS0tLQorZy5WKCkuaGFzKCdwZXJzb24nLCduYW1lJywnbWFya28nKQorLS0tLQorCiBXZSBjYW4gcGljdHVyZSB0aGlzIHRyYXZlcnNhbCBpbiBvdXIgbGl0dGxlIGdyYXBoIHdpdGggR3JlbWxpbiBzaXR0aW5nIG9uIHZlcnRleCAiMSIuCiAKIGltYWdlOm1vZGVybi1lZGdlLTEtdG8tMy0xLWdyZW1saW4ucG5nW3dpZHRoPTMyNV0KIAogV2hlbiBHcmVtbGluIGlzIG9uIGEgdmVydGV4IG9yIGFuIGVkZ2UsIGhlIGhhcyBhY2Nlc3MgdG8gYWxsIHRoZSBwcm9wZXJ0aWVzIHRoYXQgYXJlIGF2YWlsYWJsZSB0byB0aGF0IGVsZW1lbnQuCiAKLUlNUE9SVEFOVDogVGhlIGFib3ZlIHF1ZXJ5IGl0ZXJhdGVzIGFsbCB0aGUgdmVydGljZXMgaW4gdGhlIGdyYXBoIHRvIGdldCBpdHMgYW5zd2VyLiBUaGF0J3MgZmluZSBmb3Igb3VyIGxpdHRsZSBleGFtcGxlLAotYnV0IGZvciBtdWx0aS1taWxsaW9uIG9yIGJpbGxpb24gZWRnZSBncmFwaHMgdGhhdCBpcyBhIGJpZyBwcm9ibGVtLiBUbyBzb2x2ZSB0aGlzIHByb2JsZW0sIHlvdSBzaG91bGQgbG9vayB0byB1c2UKK0lNUE9SVEFOVDogVGhlIGFib3ZlIHF1ZXJ5IGl0ZXJhdGVzICphbGwqIHRoZSB2ZXJ0aWNlcyBpbiB0aGUgZ3JhcGggdG8gZ2V0IGl0cyBhbnN3ZXIuIFRoYXQncyBmaW5lIGZvciBvdXIgbGl0dGxlIGV4YW1wbGUsCitidXQgZm9yIG11bHRpLW1pbGxpb24tIG9yIGJpbGxpb24tZWRnZSBncmFwaHMgdGhhdCBpcyBhIGJpZyBwcm9ibGVtLiBUbyBzb2x2ZSB0aGlzIHByb2JsZW0sIHlvdSBzaG91bGQgbG9vayB0byB1c2UKIGluZGljZXMuIFRpbmtlclBvcCBkb2VzIG5vdCBwcm92aWRlIGFuIGFic3RyYWN0aW9uIGZvciBpbmRleCBtYW5hZ2VtZW50LiBZb3Ugc2hvdWxkIGNvbnN1bHQgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhlCiBncmFwaCB5b3UgaGF2ZSBjaG9zZW4gYW5kIHV0aWxpemUgaXRzIG5hdGl2ZSBBUEkgdG8gY3JlYXRlIGluZGljZXMgd2hpY2ggd2lsbCB0aGVuIHNwZWVkIHVwIHRoZXNlIHR5cGVzIG9mIGxvb2t1cHMuIFlvdXIKLXRyYXZlcnNhbHMgd2lsbCByZW1haW4gdW5jaGFuZ2VkIGhvd2V2ZXIsIGFzIHRoZSBpbmRpY2VzIHdpbGwgYmUgdXNlZCB0cmFuc3BhcmVudGx5IGF0IGV4ZWN1dGlvbiB0aW1lLgordHJhdmVyc2FscyB3aWxsIHJlbWFpbiB1bmNoYW5nZWQsIGhvd2V2ZXIsIGFzIHRoZSBpbmRpY2VzIHdpbGwgYmUgdXNlZCB0cmFuc3BhcmVudGx5IGF0IGV4ZWN1dGlvbiB0aW1lLgogCi1Ob3cgdGhhdCBHcmVtbGluIGhhcyBmb3VuZCAibWFya28iLCBoZSBjYW4gbm93IGNvbnNpZGVyIHRoZSBuZXh0IHN0ZXAgaW4gdGhlIHRyYXZlcnNhbCB3aGVyZSB3ZSBhc2sgaGltIHRvICJ3YWxrIgorTm93IHRoYXQgR3JlbWxpbiBoYXMgZm91bmQgIm1hcmtvIiwgaGUgY2FuIGNvbnNpZGVyIHRoZSBuZXh0IHN0ZXAgaW4gdGhlIHRyYXZlcnNhbCB3aGVyZSB3ZSBhc2sgaGltIHRvICJ3YWxrIgogYWxvbmcgImNyZWF0ZWQiIGVkZ2VzIHRvICJzb2Z0d2FyZSIgdmVydGljZXMuIEFzIGRlc2NyaWJlZCBlYXJsaWVyLCBlZGdlcyBoYXZlIGRpcmVjdGlvbiwgc28gd2UgaGF2ZSB0byB0ZWxsIEdyZW1saW4KIHdoYXQgZGlyZWN0aW9uIHRvIGZvbGxvdy4gSW4gdGhpcyBjYXNlLCB3ZSB3YW50IGhpbSB0byB0cmF2ZXJzZSBvbiBvdXRnb2luZyBlZGdlcyBmcm9tIHRoZSAibWFya28iIHZlcnRleC4gRm9yIHRoaXMsCiB3ZSB1c2UgdGhlIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jdmVydGV4LXN0ZXBzW291dEVdIHN0ZXAuCiAKIFtncmVtbGluLWdyb292eSxtb2Rlcm5dCiAtLS0tCi1nLlYoKS5oYXMoJ25hbWUnLCdtYXJrbycpLm91dEUoJ2NyZWF0ZWQnKQorZy5WKCkuaGFzKCdwZXJzb24nLCduYW1lJywnbWFya28nKS5vdXRFKCdjcmVhdGVkJykKIC0tLS0KIAogQXQgdGhpcyBwb2ludCwgeW91IGNhbiBwaWN0dXJlIEdyZW1saW4gbW92aW5nIGZyb20gdGhlICJtYXJrbyIgdmVydGV4IHRvIHRoZSAiY3JlYXRlZCIgZWRnZS4KQEAgLTI5NCw3ICszMTUsNyBAQAogCiBbZ3JlbWxpbi1ncm9vdnksbW9kZXJuXQogLS0tLQotZy5WKCkuaGFzKCduYW1lJywnbWFya28nKS5vdXRFKCdjcmVhdGVkJykuaW5WKCkKK2cuVigpLmhhcygncGVyc29uJywnbmFtZScsJ21hcmtvJykub3V0RSgnY3JlYXRlZCcpLmluVigpCiAtLS0tCiAKIFlvdSBjYW4gbm93IHBpY3R1cmUgR3JlbWxpbiBvbiB0aGUgInNvZnR3YXJlIiB2ZXJ0ZXggYXMgZm9sbG93czoKQEAgLTMwNiw3ICszMjcsNyBAQAogCiBbZ3JlbWxpbi1ncm9vdnksbW9kZXJuXQogLS0tLQotZy5WKCkuaGFzKCduYW1lJywnbWFya28nKS5vdXQoJ2NyZWF0ZWQnKQorZy5WKCkuaGFzKCdwZXJzb24nLCduYW1lJywnbWFya28nKS5vdXQoJ2NyZWF0ZWQnKQogLS0tLQogCiBpbWFnZTptb2Rlcm4tZWRnZS0xLXRvLTMtNC1ncmVtbGluLnBuZ1t3aWR0aD0zMjVdCkBAIC0zMTYsMTggKzMzNywxOCBAQAogCiBbZ3JlbWxpbi1ncm9vdnksbW9kZXJuXQogLS0tLQotZy5WKCkuaGFzKCduYW1lJywnbWFya28nKS5vdXQoJ2NyZWF0ZWQnKS52YWx1ZXMoJ25hbWUnKQorZy5WKCkuaGFzKCdwZXJzb24nLCduYW1lJywnbWFya28nKS5vdXQoJ2NyZWF0ZWQnKS52YWx1ZXMoJ25hbWUnKQogLS0tLQogCiBZb3Ugc2hvdWxkIG5vdyBiZSBhYmxlIHRvIHNlZSB0aGUgY29ubmVjdGlvbiBHcmVtbGluIGhhcyB0byB0aGUgc3RydWN0dXJlIG9mIHRoZSBncmFwaCBhbmQgaG93IEdyZW1saW4gbWFuZXV2ZXJzIGZyb20KLXZlcnRpY2VzIHRvIGVkZ2VzIGFuZCBzbyBvbi4gWW91ciBhYmlsaXR5IHRvIHN0cmluZyB0b2dldGhlciBzdGVwcyB0byBhc2sgR3JlbWxpbiB0byBkbyBtb3JlIGNvbXBsZXggdGhpbmdzLCBkZXBlbmRzCit2ZXJ0aWNlcyB0byBlZGdlcyBhbmQgc28gb24uIFlvdXIgYWJpbGl0eSB0byBzdHJpbmcgdG9nZXRoZXIgc3RlcHMgdG8gYXNrIEdyZW1saW4gdG8gZG8gbW9yZSBjb21wbGV4IHRoaW5ncyBkZXBlbmRzCiBvbiB5b3VyIHVuZGVyc3RhbmRpbmcgb2YgdGhlc2UgYmFzaWMgY29uY2VwdHMuCiAKID09PSBHcmFwaCBUcmF2ZXJzYWwgLSBJbmNyZWFzaW5nIENvbXBsZXhpdHkKIAogQXJtZWQgd2l0aCB0aGUga25vd2xlZGdlIGZyb20gdGhlIHByZXZpb3VzIHNlY3Rpb24sIGxldCdzIGFzayBHcmVtbGluIHRvIHBlcmZvcm0gc29tZSBtb3JlIGRpZmZpY3VsdCB0cmF2ZXJzYWwgdGFza3MuCiBUaGVyZSdzIG5vdCBtdWNoIG1vcmUgdGhhdCBjYW4gYmUgZG9uZSB3aXRoIHRoZSAiYmFieSIgZ3JhcGggd2UgaGFkLCBzbyBsZXQncyByZXR1cm4gdG8gdGhlICJtb2Rlcm4iIHRveSBncmFwaCBmcm9tCi10aGUgImZpdmUgbWludXRlcyBzZWN0aW9uIi4gUmVjYWxsIHRoYXQgeW91IGNhbiBjcmVhdGUgdGhpcyBgR3JhcGhgIGFuZCBlc3RhYmxpc2ggYSBgVHJhdmVyc2FsU291cmNlYCB3aXRoOgordGhlICJGaXJzdCBGaXZlIE1pbnV0ZXMiIHNlY3Rpb24uIFJlY2FsbCB0aGF0IHlvdSBjYW4gY3JlYXRlIHRoaXMgYEdyYXBoYCBhbmQgZXN0YWJsaXNoIGEgYFRyYXZlcnNhbFNvdXJjZWAgd2l0aDoKIAogW2dyZW1saW4tZ3Jvb3Z5XQogLS0tLQpAQCAtMzQxLDIwICszNjIsMjIgQEAKIAogW2dyZW1saW4tZ3Jvb3Z5LG1vZGVybl0KIC0tLS0KLWcuVigpLmhhcygnbmFtZScsd2l0aGluKCd2YWRhcycsJ21hcmtvJykpLnZhbHVlcygnYWdlJykKK2cuVigpLmhhcygncGVyc29uJywnbmFtZScsd2l0aGluKCd2YWRhcycsJ21hcmtvJykpLnZhbHVlcygnYWdlJykKIC0tLS0KIAogSXQgaXMgd29ydGggbm90aW5nIHRoYXQgYHdpdGhpbmAgaXMgc3RhdGljYWxseSBpbXBvcnRlZCBmcm9tIGBQYCB0byB0aGUgR3JlbWxpbiBDb25zb2xlIChtdWNoIGxpa2UgYFRgIGlzLCBhcyBkZXNjcmliZWQKIGVhcmxpZXIpLgogCi1OT1RFOiBUaGUgZnVsbHkgcXVhbGlmaWVkIG5hbWUgZm9yIGBQYCBpcyBgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QYC4KK05PVEU6IE9uIHRoZSBKVk0sIHRoZSBmdWxseSBxdWFsaWZpZWQgbmFtZSBmb3IgYFBgIGlzIGBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlBgLiBZb3UgY2FuIGZpbmQKK3RoZSBhbmFsb2dvdXMgdmFyaWF0aW9uIG9mIGBQYCBmb3Igb3RoZXIgR3JlbWxpbiBsYW5ndWFnZXMgYnkgdmlld2luZyB0aGUgIkNvbW1vbiBJbXBvcnRzIiBzZWN0aW9ucyBmb3IgdGhlIHByb2dyYW1taW5nCitsYW5ndWFnZSB5b3UgYXJlIGludGVyZXN0ZWQgaW4gaW4gdGhlIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jZ3JlbWxpbi1kcml2ZXJzLXZhcmlhbnRzW1JlZmVyZW5jZSBEb2N1bWVudGF0aW9uXS4KIAogSWYgd2Ugd2FudGVkIHRvIGFzayBHcmVtbGluIHRoZSBhdmVyYWdlIGFnZSBvZiAidmFkYXMiIGFuZCAibWFya28iIHdlIGNvdWxkIHVzZSB0aGUKIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jbWVhbi1zdGVwW21lYW4oKV0gc3RlcCBhcyBmb2xsb3dzOgogCiBbZ3JlbWxpbi1ncm9vdnksbW9kZXJuXQogLS0tLQotZy5WKCkuaGFzKCduYW1lJyx3aXRoaW4oJ3ZhZGFzJywnbWFya28nKSkudmFsdWVzKCdhZ2UnKS5tZWFuKCkKK2cuVigpLmhhcygncGVyc29uJywnbmFtZScsd2l0aGluKCd2YWRhcycsJ21hcmtvJykpLnZhbHVlcygnYWdlJykubWVhbigpCiAtLS0tCiAKIEFub3RoZXIgbWV0aG9kIG9mIGZpbHRlcmluZyBpcyBzZWVuIGluIHRoZSB1c2Ugb2YgdGhlIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jd2hlcmUtc3RlcFt3aGVyZV0KQEAgLTM2Miw3ICszODUsNyBAQAogCiBbZ3JlbWxpbi1ncm9vdnksbW9kZXJuXQogLS0tLQotZy5WKCkuaGFzKCduYW1lJywnbWFya28nKS5vdXQoJ2NyZWF0ZWQnKQorZy5WKCkuaGFzKCdwZXJzb24nLCduYW1lJywnbWFya28nKS5vdXQoJ2NyZWF0ZWQnKQogLS0tLQogCiBpbWFnZTpncmVtbGluLW9uLXNvZnR3YXJlLXZlcnRleC5wbmdbd2lkdGg9MzI1LGZsb2F0PXJpZ2h0XSBMZXQncyBleHRlbmQgb24gdGhhdCBxdWVyeSB0byB0cnkgdG8gbGVhcm4gd2hvICJtYXJrbyIKQEAgLTM3MywxMSArMzk2LDExIEBACiAKIFRJUDogVGhlIG5hdHVyZSBvZiBHcmVtbGluIGxlYWRzIHRvIGxvbmcgbGluZXMgb2YgY29kZS4gUmVhZGFiaWxpdHkgY2FuIGJlIGdyZWF0bHkgaW1wcm92ZWQgYnkgdXNpbmcgbGluZSBzcGFjaW5nIGFuZAogaW5kZW50YXRpb24uIFNlZSB0aGUgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVjaXBlcy8jc3R5bGUtZ3VpZGVbU3R5bGUgR3VpZGVdIGZvciByZWNvbW1lbmRhdGlvbnMKLW9uIHdoYXQgd2VsbCBmb3JtYXR0ZWQgR3JlbWxpbiBzaG91bGQgbG9vayBsaWtlLgorb24gd2hhdCB3ZWxsLWZvcm1hdHRlZCBHcmVtbGluIHNob3VsZCBsb29rIGxpa2UuCiAKIFtncmVtbGluLWdyb292eSxtb2Rlcm5dCiAtLS0tCi1nLlYoKS5oYXMoJ25hbWUnLCdtYXJrbycpLgorZy5WKCkuaGFzKCdwZXJzb24nLCduYW1lJywnbWFya28nKS4KICAgb3V0KCdjcmVhdGVkJykuaW4oJ2NyZWF0ZWQnKS4KICAgdmFsdWVzKCduYW1lJykKIC0tLS0KQEAgLTM4OSw3ICs0MTIsNyBAQAogCiBbZ3JlbWxpbi1ncm9vdnksbW9kZXJuXQogLS0tLQotZy5WKCkuaGFzKCduYW1lJywnbWFya28nKS5hcygnZXhjbHVkZScpLgorZy5WKCkuaGFzKCdwZXJzb24nLCduYW1lJywnbWFya28nKS5hcygnZXhjbHVkZScpLgogICBvdXQoJ2NyZWF0ZWQnKS5pbignY3JlYXRlZCcpLgogICB3aGVyZShuZXEoJ2V4Y2x1ZGUnKSkuCiAgIHZhbHVlcygnbmFtZScpCkBAIC00MDEsMTAgKzQyNCwxMCBAQAogdGhlIGBoYXMoKWAtc3RlcCB3aXRoIHRoZSBuYW1lICJleGNsdWRlIiBhbmQgYWxsIHZhbHVlcyB0aGF0IHBhc3MgdGhyb3VnaCB0aGF0IHN0ZXAgYXJlIGhlbGQgaW4gdGhhdCBsYWJlbCBmb3IgbGF0ZXIKIHVzZS4gSW4gdGhpcyBjYXNlLCB0aGUgIm1hcmtvIiB2ZXJ0ZXggaXMgdGhlIG9ubHkgdmVydGV4IHRvIHBhc3MgdGhyb3VnaCB0aGF0IHBvaW50LCBzbyBpdCBpcyBoZWxkIGluICJleGNsdWRlIi4KIAotVGhlIG90aGVyIGFkZGl0aW9uIHRoYXQgd2FzIG1hZGUgd2FzIHRoZSBgd2hlcmUoKWAtc3RlcCB3aGljaCBpcyBhIGZpbHRlciBzdGVwIGxpa2UgYGhhcygpYC4gVGhlIGB3aGVyZSgpYCBpcworVGhlIG90aGVyIGFkZGl0aW9uIHRoYXQgd2FzIG1hZGUgd2FzIHRoZSBgd2hlcmUoKWAtc3RlcCwgd2hpY2ggaXMgYSBmaWx0ZXIgc3RlcCBsaWtlIGBoYXMoKWAuIFRoZSBgd2hlcmUoKWAgaXMKIHBvc2l0aW9uZWQgYWZ0ZXIgdGhlIGBpbigpYC1zdGVwIHRoYXQgaGFzICJwZXJzb24iIHZlcnRpY2VzLCB3aGljaCBtZWFucyB0aGF0IHRoZSBgd2hlcmUoKWAgZmlsdGVyIGlzIG9jY3VycmluZwogb24gdGhlIGxpc3Qgb2YgIm1hcmtvIiBjb2xsYWJvcmF0b3JzLiBUaGUgYHdoZXJlKClgIHNwZWNpZmllcyB0aGF0IHRoZSAicGVyc29uIiB2ZXJ0aWNlcyBwYXNzaW5nIHRocm91Z2ggaXQgc2hvdWxkCi1ub3QgZXF1YWwgKGkuZS4gYG5lcSgpYCkgdGhlIGNvbnRlbnRzIG9mIHRoZSAiZXhjbHVkZSIgbGFiZWwuIEFzIGl0IGp1c3QgY29udGFpbnMgdGhlICJtYXJrbyIgdmVydGV4LCB0aGUgYHdoZXJlKClgCitub3QgZXF1YWwgKGkuZS4sIGBuZXEoKWApIHRoZSBjb250ZW50cyBvZiB0aGUgImV4Y2x1ZGUiIGxhYmVsLiBBcyBpdCBqdXN0IGNvbnRhaW5zIHRoZSAibWFya28iIHZlcnRleCwgdGhlIGB3aGVyZSgpYAogZmlsdGVycyBvdXQgdGhlICJtYXJrbyIgdGhhdCB3ZSBnZXQgd2hlbiB3ZSB0cmF2ZXJzZSBiYWNrIF9pbl8gb24gdGhlICJjcmVhdGVkIiBlZGdlcy4KIAogWW91IHdpbGwgZmluZCBtYW55IHVzZXMgb2YgYGFzKClgLiBIZXJlIGl0IGlzIGluIGNvbWJpbmF0aW9uIHdpdGggbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVmZXJlbmNlLyNzZWxlY3Qtc3RlcFtzZWxlY3RdOgpAQCAtNDQ2LDQ1ICs0NjksNDUgQEAKIAogPT0gVGhlIEZpbmFsIFRlbiBNaW51dGVzCiAKLUluIHRoZXNlIGZpbmFsIHRlbiBtaW51dGVzIG9mIF9UaGUgVGlua2VyUG9wIFdvcmtvdXQgLSBieSBHcmVtbGluXyB3ZSdsbCBsb29rIGF0IFRpbmtlclBvcCBmcm9tIGEgaGlnaGVyIGxldmVsIGFuZAorSW4gdGhlc2UgZmluYWwgdGVuIG1pbnV0ZXMgb2YgX1RoZSBUaW5rZXJQb3AgV29ya291dCDigJQgYnkgR3JlbWxpbl8sIHdlJ2xsIGxvb2sgYXQgVGlua2VyUG9wIGZyb20gYSBoaWdoZXIgbGV2ZWwgYW5kCiBpbnRyb2R1Y2UgZGlmZmVyZW50IGZlYXR1cmVzIGl0IHByb3ZpZGVzIHRvIGhlbHAgb3JpZW50IHlvdSB0byBzb21lIG9mIHRoZSBwcm9qZWN0J3MgdGVjaG5vbG9neSBlY29zeXN0ZW0uIEluIHRoaXMKIHdheSwgeW91IGNhbiBpZGVudGlmeSBhcmVhcyBvZiBpbnRlcmVzdCBhbmQgZGlnIGludG8gdGhlIGRldGFpbHMgZnJvbSB0aGVyZS4KIAogPT09IFdoeSBUaW5rZXJQb3A/CiAKLWltYWdlOnByb3ZpZGVyLWludGVncmF0aW9uLnBuZ1tmbG9hdD1yaWdodCx3aWR0aD0zNTBdIFRoZSBnb2FsIG9mIFRpbmtlclBvcCwgYXMgYSBHcmFwaCBDb21wdXRpbmcgRnJhbWV3b3JrLCBpcyB0byBtYWtlIGl0Ci1lYXN5IGZvciBkZXZlbG9wZXJzIHRvIGNyZWF0ZSBncmFwaCBhcHBsaWNhdGlvbnMgYnkgcHJvdmlkaW5nIEFQSXMgYW5kIHRvb2xzIHRoYXQgc2ltcGxpZnkgdGhlaXIgZW5kZWF2b3JzLiBPbmUgb2YKLXRoZSBmdW5kYW1lbnRhbCBhc3BlY3RzIHRvIHdoYXQgVGlua2VyUG9wIG9mZmVycyBpbiB0aGlzIGFyZWEgbGllcyBpbiB0aGUgZmFjdCB0aGF0IFRpbmtlclBvcCBpcyBhbiBhYnN0cmFjdGlvbiBsYXllcgotb3ZlciBkaWZmZXJlbnQgZ3JhcGggZGF0YWJhc2VzIGFuZCBkaWZmZXJlbnQgZ3JhcGggcHJvY2Vzc29ycy4gQXMgYW4gYWJzdHJhY3Rpb24gbGF5ZXIsIFRpbmtlclBvcCBwcm92aWRlcyBhIHdheSB0bwotYXZvaWQgdmVuZG9yIGxvY2staW4gdG8gYSBzcGVjaWZpYyBkYXRhYmFzZSBvciBwcm9jZXNzb3IuIFRoaXMgY2FwYWJpbGl0eSBwcm92aWRlcyBpbW1lbnNlIHZhbHVlIHRvIGRldmVsb3BlcnMgd2hvCitpbWFnZTpwcm92aWRlci1pbnRlZ3JhdGlvbi5wbmdbZmxvYXQ9cmlnaHQsd2lkdGg9MzUwXSBUaGUgZ29hbCBvZiBUaW5rZXJQb3AsIGFzIGEgR3JhcGggQ29tcHV0aW5nIEZyYW1ld29yaywgaXMgdG8KK21ha2UgaXQgZWFzeSBmb3IgZGV2ZWxvcGVycyB0byBjcmVhdGUgZ3JhcGggYXBwbGljYXRpb25zIGJ5IHByb3ZpZGluZyBBUElzIGFuZCB0b29scyB0aGF0IHNpbXBsaWZ5IHRoZWlyIGVuZGVhdm9ycy4KK09uZSBvZiB0aGUgZnVuZGFtZW50YWwgYXNwZWN0cyB0byB3aGF0IFRpbmtlclBvcCBvZmZlcnMgaW4gdGhpcyBhcmVhIGxpZXMgaW4gdGhlIGZhY3QgdGhhdCBUaW5rZXJQb3AgaXMgYW4gYWJzdHJhY3Rpb24KK2xheWVyIG92ZXIgZGlmZmVyZW50IGdyYXBoIGRhdGFiYXNlcyBhbmQgZGlmZmVyZW50IGdyYXBoIHByb2Nlc3NvcnMuIEFzIGFuIGFic3RyYWN0aW9uIGxheWVyLCBUaW5rZXJQb3AgcHJvdmlkZXMgYSB3YXkKK3RvIGF2b2lkIHZlbmRvciBsb2NrLWluIHRvIGEgc3BlY2lmaWMgZGF0YWJhc2Ugb3IgcHJvY2Vzc29yLiBUaGlzIGNhcGFiaWxpdHkgcHJvdmlkZXMgaW1tZW5zZSB2YWx1ZSB0byBkZXZlbG9wZXJzIHdobwogYXJlIHRodXMgYWZmb3JkZWQgb3B0aW9ucyBpbiB0aGVpciBhcmNoaXRlY3R1cmUgYW5kIGRldmVsb3BtZW50IGJlY2F1c2U6CiAKICogVGhleSBjYW4gdHJ5IGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbnMgdXNpbmcgdGhlIHNhbWUgY29kZSB0byBkZWNpZGUgd2hpY2ggaXMgYmVzdCBmb3IgdGhlaXIgZW52aXJvbm1lbnQuCi0qIFRoZXkgY2FuIGdyb3cgaW50byBhIHBhcnRpY3VsYXIgaW1wbGVtZW50YXRpb24gaWYgdGhleSBzbyBkZXNpcmUgLSBzdGFydCB3aXRoIGEgZ3JhcGggdGhhdCBpcyBkZXNpZ25lZCB0byBzY2FsZQorKiBUaGV5IGNhbiBncm93IGludG8gYSBwYXJ0aWN1bGFyIGltcGxlbWVudGF0aW9uIGlmIHRoZXkgc28gZGVzaXJlOyBlLmcuLCBzdGFydCB3aXRoIGEgZ3JhcGggdGhhdCBpcyBkZXNpZ25lZCB0byBzY2FsZQogd2l0aGluIGEgc2luZ2xlIG1hY2hpbmUgYW5kIHRoZW4gbGF0ZXIgc3dpdGNoIHRvIGEgZ3JhcGggdGhhdCBpcyBkZXNpZ25lZCB0byBzY2FsZSBob3Jpem9udGFsbHkuCiAqIFRoZXkgY2FuIGZlZWwgbW9yZSBjb25maWRlbnQgaW4gZ3JhcGggdGVjaG5vbG9neSBjaG9pY2VzLCBhcyBhZHZhbmNlcyBpbiB0aGUgc3RhdGUgb2YgZGlmZmVyZW50IHByb3ZpZGVyCiBpbXBsZW1lbnRhdGlvbnMgYXJlIGJlaGluZCBUaW5rZXJQb3AgQVBJcywgd2hpY2ggb3BlbiB0aGUgcG9zc2liaWxpdHkgdG8gc3dpdGNoIHByb3ZpZGVycyB3aXRoIGxpbWl0ZWQgaW1wYWN0LgogCiBUaW5rZXJQb3AgaGFzIGFsd2F5cyBoYWQgdGhlIHZpc2lvbiBvZiBiZWluZyBhbiBhYnN0cmFjdGlvbiBvdmVyIGRpZmZlcmVudCBncmFwaCBkYXRhYmFzZXMuIFRoYXQgbXVjaAotaXMgbm90IG5ldyBhbmQgZGF0ZXMgYmFjayB0byBUaW5rZXJQb3AgMS54LiBJdCBpcyBpbiBUaW5rZXJQb3AgMy54IGhvd2V2ZXIgdGhhdCB3ZSBzZWUgdGhlIGludHJvZHVjdGlvbiBvZiB0aGUgbm90aW9uCi10aGF0IFRpbmtlclBvcCBpcyBhbHNvIGFuIGFic3RyYWN0aW9uIG92ZXIgZGlmZmVyZW50IGdyYXBoIHByb2Nlc3NvcnMgbGlrZSBsaW5rOmh0dHA6Ly9zcGFyay5hcGFjaGUub3JnW1NwYXJrXSBhbmQKLWxpbms6aHR0cDovL2dpcmFwaC5hcGFjaGUub3JnL1tHaXJhcGhdLiBUaGUgc2NvcGUgb2YgdGhpcyB0dXRvcmlhbCBkb2VzIG5vdCBwZXJtaXQgaXQgdG8gZGVsdmUgaW50bwotImdyYXBoIHByb2Nlc3NvcnMiLCBidXQgdGhlIHNob3J0IHN0b3J5IGlzIHRoYXQgdGhlIHNhbWUgR3JlbWxpbiBzdGF0ZW1lbnQgd2Ugd3JvdGUgaW4gdGhlIGV4YW1wbGVzIGFib3ZlIGNhbiBiZQotZXhlY3V0ZWQgdG8gcnVuIGluIGRpc3RyaWJ1dGVkIGZhc2hpb24gb3ZlciBTcGFyayBvciBIYWRvb3AuIFRoZSBjaGFuZ2VzIHJlcXVpcmVkIHRvIHRoZSBjb2RlIHRvIGRvIHRoaXMgYXJlIG5vdAotaW4gdGhlIHRyYXZlcnNhbCBpdHNlbGYsIGJ1dCBpbiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgYFRyYXZlcnNhbFNvdXJjZWAuIFlvdSBjYW4gYWdhaW4gc2VlIHdoeSB3ZSBlbmNvdXJhZ2UgZ3JhcGgKLW9wZXJhdGlvbnMgdG8gYmUgZXhlY3V0ZWQgdGhyb3VnaCB0aGF0IGNsYXNzIGFzIG9wcG9zZWQgdG8ganVzdCB1c2luZyBgR3JhcGhgLiBZb3UgY2FuIHJlYWQgbW9yZSBhYm91dCB0aGVzZQotZmVhdHVyZXMgaW4gdGhpcyBzZWN0aW9uIG9uIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jaGFkb29wLWdyZW1saW5baGFkb29wLWdyZW1saW5dLgoraXMgbm90IG5ldyBhbmQgZGF0ZXMgYmFjayB0byBUaW5rZXJQb3AgMS54LiBJdCBpcyBpbiBUaW5rZXJQb3AgMy54LCBob3dldmVyLCB0aGF0IHdlIHNlZSB0aGUgaW50cm9kdWN0aW9uIG9mIHRoZSBub3Rpb24KK3RoYXQgVGlua2VyUG9wIGlzIGFsc28gYW4gYWJzdHJhY3Rpb24gb3ZlciBkaWZmZXJlbnQgZ3JhcGggcHJvY2Vzc29ycyBsaWtlIGxpbms6aHR0cDovL3NwYXJrLmFwYWNoZS5vcmdbU3BhcmtdLiBUaGUKK3Njb3BlIG9mIHRoaXMgdHV0b3JpYWwgZG9lcyBub3QgcGVybWl0IGl0IHRvIGRlbHZlIGludG8gImdyYXBoIHByb2Nlc3NvcnMiLCBidXQgdGhlIHNob3J0IHN0b3J5IGlzIHRoYXQgdGhlIHNhbWUKK0dyZW1saW4gc3RhdGVtZW50IHdlIHdyb3RlIGluIHRoZSBleGFtcGxlcyBhYm92ZSBjYW4gYmUgZXhlY3V0ZWQgdG8gcnVuIGluIGRpc3RyaWJ1dGVkIGZhc2hpb24gb3ZlciBTcGFyayBvciBIYWRvb3AuCitUaGUgY2hhbmdlcyByZXF1aXJlZCB0byB0aGUgY29kZSB0byBkbyB0aGlzIGFyZSBub3QgaW4gdGhlIHRyYXZlcnNhbCBpdHNlbGYsIGJ1dCBpbiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUKK2BUcmF2ZXJzYWxTb3VyY2VgLiBZb3UgY2FuIGFnYWluIHNlZSB3aHkgd2UgZW5jb3VyYWdlIGdyYXBoIG9wZXJhdGlvbnMgdG8gYmUgZXhlY3V0ZWQgdGhyb3VnaCB0aGF0IGNsYXNzIGFzIG9wcG9zZWQKK3RvIGp1c3QgdXNpbmcgYEdyYXBoYC4gWW91IGNhbiByZWFkIG1vcmUgYWJvdXQgdGhlc2UgZmVhdHVyZXMgaW4gdGhpcyBzZWN0aW9uIG9uCitsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei9yZWZlcmVuY2UvI2hhZG9vcC1ncmVtbGluW2hhZG9vcC1ncmVtbGluXS4KIAotVElQOiBUbyBtYWludGFpbiBhbiBhYnN0cmFjdGlvbiBvdmVyIGBHcmFwaGAgY3JlYXRpb24gdXNlIGBHcmFwaEZhY3Rvcnkub3BlbigpYCB0byBjb25zdHJ1Y3QgbmV3IGluc3RhbmNlcy4gU2VlCitUSVA6IFRvIG1haW50YWluIGFuIGFic3RyYWN0aW9uIG92ZXIgYEdyYXBoYCBjcmVhdGlvbiwgdXNlIGBHcmFwaEZhY3Rvcnkub3BlbigpYCB0byBjb25zdHJ1Y3QgbmV3IGluc3RhbmNlcy4gU2VlCiB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgaW5kaXZpZHVhbCBgR3JhcGhgIGltcGxlbWVudGF0aW9ucyB0byBsZWFybiBhYm91dCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHByb3ZpZGUuCiAKID09PSBMb2FkaW5nIERhdGEKIAogaW1hZ2U6Z3JlbWxpbi10by10aGUtNy5wbmdbd2lkdGg9MTAwLGZsb2F0PWxlZnRdIFRoZXJlIGFyZSBtYW55IHN0cmF0ZWdpZXMgZm9yIGdldHRpbmcgZGF0YSBpbnRvIHlvdXIgZ3JhcGguIEFzIHlvdSBhcmUKLWp1c3QgZ2V0dGluZyBzdGFydGVkLCBsZXQncyBsb29rIGF0IHRoZSBtb3JlIHNpbXBsZSBtZXRob2RzIGFpbWVkIGF0ICJzbWFsbGVyIiBncmFwaHMuIEEgInNtYWxsIiBncmFwaCwgaW4gdGhpcworanVzdCBnZXR0aW5nIHN0YXJ0ZWQsIGxldCdzIGxvb2sgYXQgdGhlIHNpbXBsZXIgbWV0aG9kcyBhaW1lZCBhdCAic21hbGxlciIgZ3JhcGhzLiBBICJzbWFsbCIgZ3JhcGgsIGluIHRoaXMKIGNvbnRleHQsIGlzIG9uZSB0aGF0IGhhcyBmZXdlciB0aGFuIHRlbiBtaWxsaW9uIGVkZ2VzLiBUaGUgbW9zdCBkaXJlY3Qgd2F5IHRvIGxvYWQgdGhpcyBkYXRhIGlzIHRvIHdyaXRlIGEgR3Jvb3Z5IHNjcmlwdAogdGhhdCBjYW4gYmUgZXhlY3V0ZWQgaW4gdGhlIEdyZW1saW4gQ29uc29sZSwgYSB0b29sIHRoYXQgeW91IHNob3VsZCBiZSB3ZWxsIGZhbWlsaWFyIHdpdGggYXQgdGhpcyBwb2ludC4gRm9yIG91cgotZXhhbXBsZSwgbGV0J3MgdXNlIHRoZSBsaW5rOmh0dHA6Ly9zbmFwLnN0YW5mb3JkLmVkdS9kYXRhL3dpa2ktVm90ZS5odG1sW1dpa2lwZWRpYSBWb3RlIE5ldHdvcmtdIGRhdGEgc2V0IHdoaWNoCitleGFtcGxlLCBsZXQncyB1c2UgdGhlIGxpbms6aHR0cDovL3NuYXAuc3RhbmZvcmQuZWR1L2RhdGEvd2lraS1Wb3RlLmh0bWxbV2lraXBlZGlhIFZvdGUgTmV0d29ya10gZGF0YSBzZXQsIHdoaWNoCiBjb250YWlucyA3LDExNSB2ZXJ0aWNlcyBhbmQgMTAzLDY4OSBlZGdlcy4KIAogW3NvdXJjZSx0ZXh0XQpAQCAtNDkzLDcgKzUxNiw3IEBACiAkIGd1bnppcCB3aWtpLVZvdGUudHh0Lmd6CiAtLS0tCiAKLVRoZSBkYXRhIGlzIGNvbnRhaW5lZCBpbiBhIHRhYi1kZWxpbWl0ZWQgc3RydWN0dXJlIHdoZXJlIHZlcnRpY2VzIGFyZSBXaWtpcGVkaWEgdXNlcnMgYW5kIGVkZ2VzIGZyb20gb25lIHVzZXIgdG8KK1RoZSBkYXRhIGlzIGNvbnRhaW5lZCBpbiBhIHRhYi1kZWxpbWl0ZWQgc3RydWN0dXJlIGluIHdoaWNoIHZlcnRpY2VzIGFyZSBXaWtpcGVkaWEgdXNlcnMgYW5kIGVkZ2VzIGZyb20gb25lIHVzZXIgdG8KIGFub3RoZXIgaW1wbHkgYSAidm90ZSIgcmVsYXRpb25zaGlwLiBIZXJlIGlzIHRoZSBzY3JpcHQgdG8gcGFyc2UgdGhlIGZpbGUgYW5kIGdlbmVyYXRlIHRoZSBgR3JhcGhgIGluc3RhbmNlIHVzaW5nCiBUaW5rZXJHcmFwaDoKIApAQCAtNTA1LDcgKzUyOCw3IEBACiBnID0gZ3JhcGgudHJhdmVyc2FsKCkKIAogZ2V0T3JDcmVhdGUgPSB7IGlkIC0+Ci0gIGcuVigpLmhhcygndXNlcklkJywgaWQpLgorICBnLlYoKS5oYXMoJ3VzZXInLCd1c2VySWQnLCBpZCkuCiAgICAgZm9sZCgpLgogICAgIGNvYWxlc2NlKHVuZm9sZCgpLAogICAgICAgICAgICAgIGFkZFYoJ3VzZXInKS5wcm9wZXJ0eSgndXNlcklkJywgaWQpKS5uZXh0KCkgIDwyPgpAQCAtNTIxLDEzICs1NDQsMTMgQEAKIAogPDE+IFRvIGVuc3VyZSBmYXN0IGxvb2t1cHMgb2YgdmVydGljZXMsIHdlIG5lZWQgYW4gaW5kZXguIFRoZSBgY3JlYXRlSW5kZXgoKWAgbWV0aG9kIGlzIGEgbWV0aG9kIG5hdGl2ZSB0bwogVGlua2VyR3JhcGguIFBsZWFzZSBjb25zdWx0IHlvdXIgZ3JhcGggZGF0YWJhc2VzJyBkb2N1bWVudGF0aW9uIGZvciB0aGVpciBpbmRleCBjcmVhdGlvbiBhcHByb2FjaGVzLgotPDI+IFRoaXMgImdldCBvciBjcmVhdGUiIHRyYXZlcnNhbCBnZXRzIGEgYSB2ZXJ0ZXggaWYgaXQgYWxyZWFkeSBleGlzdHM7IG90aGVyd2lzZSwgaXQgY3JlYXRlcyBpdC4gSXQgdXNlcyBgY29hbGVzY2UoKWAgaW4KLWEgY2xldmVyIHdheSBieSBmaXJzdCBkZXRlcm1pbmluZyBpZiB0aGUgbGlzdCBvZiB2ZXJ0aWNlcyBwcm9kdWNlZCBieSB0aGUgcHJldmlvdXMgYGZvbGQoKWAgaGFzIGFueXRoaW5nIGluIGl0IGJ5Cis8Mj4gVGhpcyAiZ2V0IG9yIGNyZWF0ZSIgdHJhdmVyc2FsIGdldHMgYSB2ZXJ0ZXggaWYgaXQgYWxyZWFkeSBleGlzdHM7IG90aGVyd2lzZSwgaXQgY3JlYXRlcyBpdC4gSXQgdXNlcyBgY29hbGVzY2UoKWAgaW4KK2EgY2xldmVyIHdheSBieSBmaXJzdCBkZXRlcm1pbmluZyB3aGV0aGVyIHRoZSBsaXN0IG9mIHZlcnRpY2VzIHByb2R1Y2VkIGJ5IHRoZSBwcmV2aW91cyBgZm9sZCgpYCBoYXMgYW55dGhpbmcgaW4gaXQgYnkKIHRlc3RpbmcgdGhlIHJlc3VsdCBvZiBgdW5mb2xkKClgLiBJZiBgdW5mb2xkKClgIHJldHVybnMgbm90aGluZyB0aGVuIHRoYXQgdmVydGV4IGRvZXNuJ3QgZXhpc3QgYW5kIHRoZSBzdWJzZXF1ZW50CiBgYWRkVigpYCBpbm5lciB0cmF2ZXJzYWwgY2FuIGJlIGNhbGxlZCB0byBjcmVhdGUgaXQuCiA8Mz4gV2UgYXJlIGl0ZXJhdGluZyBlYWNoIGxpbmUgb2YgdGhlIGB3aWtpLVZvdGUudHh0YCBmaWxlIGFuZCB0aGlzIGxpbmUgc3BsaXRzIHRoZSBsaW5lIG9uIHRoZSBkZWxpbWl0ZXIsIHRoZW4KIHVzZXMgc29tZSBuZWF0IEdyb292eSBzeW50YXggdG8gYXBwbHkgdGhlIGBnZXRPckNyZWF0ZSgpYCBmdW5jdGlvbiB0byBlYWNoIG9mIHRoZSB0d28gYHVzZXJJZGAgZmllbGRzIGVuY291bnRlcmVkIGluCi10aGUgbGluZSBhbmQgc3RvcmVzIHRob3NlIHZlcnRpY2VzIGluIHRoZSBgZnJvbVZlcnRleGAgYW5kIGB0b1ZlcnRleGAgdmFyaWFibGVzIHJlc3BlY3RpdmVseS4KK3RoZSBsaW5lIGFuZCBzdG9yZXMgdGhvc2UgdmVydGljZXMgaW4gdGhlIGBmcm9tVmVydGV4YCBhbmQgYHRvVmVydGV4YCB2YXJpYWJsZXMsIHJlc3BlY3RpdmVseS4KIAogTk9URTogV2hpbGUgdGhpcyBpcyBhIHRhYi1kZWxpbWl0ZWQgc3RydWN0dXJlLCB0aGlzIHNhbWUgcGF0dGVybiBjYW4gYmUgYXBwbGllZAogdG8gYW55IGRhdGEgc291cmNlIHlvdSByZXF1aXJlIGFuZCBHcm9vdnkgdGVuZHMgdG8gaGF2ZSBuaWNlIGxpYnJhcmllcyB0aGF0IGNhbiBoZWxwIG1ha2Ugd29ya2luZyB3aXRoIGRhdGEKQEAgLTUzNSw3ICs1NTgsNyBAQAogCiBXQVJOSU5HOiBUYWtlIGNhcmUgaWYgdXNpbmcgYSBgR3JhcGhgIGltcGxlbWVudGF0aW9uIHRoYXQgc3VwcG9ydHMKIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jdHJhbnNhY3Rpb25zW3RyYW5zYWN0aW9uc10uIEFzIFRpbmtlckdyYXBoIGRvZXMgbm90LCB0aGVyZSBpcwotbm8gbmVlZCB0byBgY29tbWl0KClgLiAgSWYgeW91ciBgR3JhcGhgIGRvZXMgc3VwcG9ydCB0cmFuc2FjdGlvbnMsIGludGVybWVkaWF0ZSBjb21taXRzIGR1cmluZyBsb2FkIHdpbGwgbmVlZCB0byBiZQorbm8gbmVlZCB0byBgY29tbWl0KClgLiBJZiB5b3VyIGBHcmFwaGAgZG9lcyBzdXBwb3J0IHRyYW5zYWN0aW9ucywgaW50ZXJtZWRpYXRlIGNvbW1pdHMgZHVyaW5nIGxvYWQgd2lsbCBuZWVkIHRvIGJlCiBhcHBsaWVkLgogCiBUbyBsb2FkIGxhcmdlciBkYXRhIHNldHMgeW91IHNob3VsZCByZWFkIGFib3V0IHRoZQpAQCAtNTQzLDczICs1NjYsNTAgQEAKIGdlbmVyYWxpemVkIG1ldGhvZCBmb3IgbG9hZGluZyBncmFwaHMgb2YgdmlydHVhbGx5IGFueSBzaXplIGFuZCBjb25zaWRlciB0aGUgbmF0aXZlIGJ1bGsgbG9hZGluZyBmZWF0dXJlcyBvZiB0aGUKIHVuZGVybHlpbmcgZ3JhcGggZGF0YWJhc2UgdGhhdCB5b3UndmUgY2hvc2VuLgogCi09PT0gR3JlbWxpbiBTZXJ2ZXIKKz09PSBHcmVtbGluIGluIE90aGVyIFByb2dyYW1taW5nIExhbmd1YWdlcwogCi1pbWFnZTpncmVtbGluLXNlcnZlci1wcm90b2NvbC5wbmdbd2lkdGg9MzI1LGZsb2F0PXJpZ2h0XSBsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei9yZWZlcmVuY2UvI2dyZW1saW4tc2VydmVyW0dyZW1saW4gU2VydmVyXQotcHJvdmlkZXMgYSB3YXkgdG8gcmVtb3RlbHkgZXhlY3V0ZSBHcmVtbGluIHNjcmlwdHMgYWdhaW5zdCBvbmUgb3IgbW9yZSBgR3JhcGhgIGluc3RhbmNlcyBob3N0ZWQgd2l0aGluIGl0LiBJdCBkb2VzCi10aGlzIGJ5IGV4cG9zaW5nIGRpZmZlcmVudCBlbmRwb2ludHMsIHN1Y2ggYXMgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVmZXJlbmNlLyNfY29ubmVjdGluZ192aWFfaHR0cFtIVFRQXQotYW5kIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jY29ubmVjdGluZy12aWEtamF2YVtXZWJTb2NrZXRdLCB3aGljaCBhbGxvdyBhIHJlcXVlc3QKLWNvbnRhaW5pbmcgYSBHcmVtbGluIHNjcmlwdCB0byBiZSBwcm9jZXNzZWQgd2l0aCByZXN1bHRzIHJldHVybmVkLgorVGhpcyB0dXRvcmlhbCBmb2N1c2VkIG9uIEdyZW1saW4gdXNhZ2Ugd2l0aGluIHRoZQorbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovdHV0b3JpYWxzL3RoZS1ncmVtbGluLWNvbnNvbGUvW0dyZW1saW4gQ29uc29sZV0gd2hpY2ggbWVhbnMgdGhhdCB0aGUKK2V4YW1wbGVzIHdlcmUgR3Jvb3Z5LWJhc2VkIGFuZCBvcmllbnRlZCB0b3dhcmQgdGhlIEpWTS4gR3JlbWxpbiwgaG93ZXZlciwgaXMgZmFyIGZyb20gYmVpbmcgYSBKYXZhLW9ubHkgbGlicmFyeS4KK1RpbmtlclBvcCBuYXRpdmVseSBzdXBwb3J0cyBhIG51bWJlciBvZiBkaWZmZXJlbnQgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzLCBtYWtpbmcgaXQgcG9zc2libGUgdG8gZXhlY3V0ZSBhbGwgb2YgdGhlCitleGFtcGxlcyBwcmVzZW50ZWQgaW4gdGhpcyB0dXRvcmlhbCB3aXRoIGxpdHRsZSBtb2RpZmljYXRpb24uIFRoZXNlIGRpZmZlcmVudCBsYW5ndWFnZSBpbXBsZW1lbnRhdGlvbnMgb2YgR3JlbWxpbiBhcmUKK3JlZmVycmVkIHRvIGFzIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jZ3JlbWxpbi1kcml2ZXJzLXZhcmlhbnRzW0dyZW1saW4gTGFuZ3VhZ2UgVmFyaWFudHNdIGFuZAordGhleSBoZWxwIG1ha2UgR3JlbWxpbiBtb3JlIGFjY2Vzc2libGUgYW5kIGVhc2llciB0byB1c2UgZm9yIHRob3NlIHdobyBkbyBub3QgdXNlIEphdmEgYXMgdGhlaXIgcHJpbWFyeSBwcm9ncmFtbWluZworbGFuZ3VhZ2UuCiAKLVtzb3VyY2UsdGV4dF0KK1tncmVtbGluLWdyb292eV0KIC0tLS0KLSQgY3VybCAtTCAtTyBodHRwczovL3d3dy5hcGFjaGUub3JnL2Rpc3QvdGlua2VycG9wL3gueS56L2FwYWNoZS10aW5rZXJwb3AtZ3JlbWxpbi1zZXJ2ZXIteC55LnotYmluLnppcAotJCB1bnppcCBhcGFjaGUtdGlua2VycG9wLWdyZW1saW4tc2VydmVyLXgueS56LWJpbi56aXAKLSQgY2QgYXBhY2hlLXRpbmtlcnBvcC1ncmVtbGluLXNlcnZlci14LnkuegotJCBiaW4vZ3JlbWxpbi1zZXJ2ZXIuc2ggY29uZi9ncmVtbGluLXNlcnZlci1yZXN0LW1vZGVybi55YW1sCi1bSU5GT10gR3JlbWxpblNlcnZlciAtCi0gICAgICAgICBcLCwsLwotICAgICAgICAgKG8gbykKLS0tLS0tb09Pby0oMyktb09Pby0tLS0tCi0KLVtJTkZPXSBHcmVtbGluU2VydmVyIC0gQ29uZmlndXJpbmcgR3JlbWxpbiBTZXJ2ZXIgZnJvbSBjb25mL2dyZW1saW4tc2VydmVyLXJlc3QtbW9kZXJuLnlhbWwKLS4uLgotW0lORk9dIEdyZW1saW5TZXJ2ZXIkMSAtIENoYW5uZWwgc3RhcnRlZCBhdCBwb3J0IDgxODIuCit2MSA9IGcuYWRkVigncGVyc29uJykucHJvcGVydHkoJ25hbWUnLCdtYXJrbycpLm5leHQoKQordjIgPSBnLmFkZFYoJ3BlcnNvbicpLnByb3BlcnR5KCduYW1lJywnc3RlcGhlbicpLm5leHQoKQorZy5WKHYxKS5hZGRFKCdrbm93cycpLnRvKHYyKS5wcm9wZXJ0eSgnd2VpZ2h0JywwLjc1KS5pdGVyYXRlKCkKIC0tLS0KLQotW3NvdXJjZSx0ZXh0XQotJCBjdXJsIC1YIFBPU1QgLWQgIntcImdyZW1saW5cIjpcImcuVih4KS5vdXQoKS52YWx1ZXMoJ25hbWUnKVwiLCBcImxhbmd1YWdlXCI6XCJncmVtbGluLWdyb292eVwiLCBcImJpbmRpbmdzXCI6e1wieFwiOjF9fSIgImh0dHA6Ly9sb2NhbGhvc3Q6ODE4MiIKLQotW3NvdXJjZSxqc29uXQorW3NvdXJjZSxjc2hhcnBdCiAtLS0tCi17Ci0JInJlcXVlc3RJZCI6ICJmNjdkYmZmZi1iMzNhLTRhZTMtODQyZC1jNmU3Yzk3YjI0NmIiLAotCSJzdGF0dXMiOiB7Ci0JCSJtZXNzYWdlIjogIiIsCi0JCSJjb2RlIjogMjAwLAotCQkiYXR0cmlidXRlcyI6IHsKLQkJCSJAdHlwZSI6ICJnOk1hcCIsCi0JCQkiQHZhbHVlIjogW10KLQkJfQotCX0sCi0JInJlc3VsdCI6IHsKLQkJImRhdGEiOiB7Ci0JCQkiQHR5cGUiOiAiZzpMaXN0IiwKLQkJCSJAdmFsdWUiOiBbImxvcCIsICJ2YWRhcyIsICJqb3NoIl0KLQkJfSwKLQkJIm1ldGEiOiB7Ci0JCQkiQHR5cGUiOiAiZzpNYXAiLAotCQkJIkB2YWx1ZSI6IFtdCi0JCX0KLQl9Ci19CitWZXJ0ZXggdjEgPSBnLkFkZFYoInBlcnNvbiIpLlByb3BlcnR5KCJuYW1lIiwibWFya28iKS5OZXh0KCk7CitWZXJ0ZXggdjIgPSBnLkFkZFYoInBlcnNvbiIpLlByb3BlcnR5KCJuYW1lIiwic3RlcGhlbiIpLk5leHQoKTsKK2cuVih2MSkuQWRkRSgia25vd3MiKS5Ubyh2MikuUHJvcGVydHkoIndlaWdodCIsMC43NSkuSXRlcmF0ZSgpOwogLS0tLQotCi1JTVBPUlRBTlQ6IFRha2UgY2FyZWZ1bCBub3RlIG9mIHRoZSB1c2Ugb2YgImJpbmRpbmdzIiBpbiB0aGUgYXJndW1lbnRzIG9uIHRoZSByZXF1ZXN0LiBUaGVzZSBhcmUgdmFyaWFibGVzIHRoYXQgYXJlCi1hcHBsaWVkIHRvIHRoZSBzY3JpcHQgb24gZXhlY3V0aW9uIGFuZCBpcyBlc3NlbnRpYWxseSBhIHdheSB0byBwYXJhbWV0ZXJpemUgeW91ciBzY3JpcHRzLiBUaGlzICJwYXJhbWV0ZXJpemF0aW9uIiBpcwotY3JpdGljYWwgdG8gbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVmZXJlbmNlLyNfYmVzdF9wcmFjdGljZXNbcGVyZm9ybWFuY2VdLiAgV2hlbmV2ZXIKLXBvc3NpYmxlLCBwYXJhbWV0ZXJpemUgeW91ciBxdWVyaWVzLgotCi1BcyBtZW50aW9uZWQgZWFybGllciwgR3JlbWxpbiBTZXJ2ZXIgY2FuIGFsc28gYmUgY29uZmlndXJlZCB3aXRoIGEgV2ViU29ja2V0IGVuZHBvaW50LiBUaGlzIGVuZHBvaW50IGhhcyBhbgotZW1iZWRkZWQgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovZGV2L3Byb3ZpZGVyLyNfZ3JhcGhfZHJpdmVyX3Byb3ZpZGVyX3JlcXVpcmVtZW50c1tzdWJwcm90b2NvbF0gdGhhdCBhbGxvdyBhCi1jb21wbGlhbnQgZHJpdmVyIHRvIGNvbW11bmljYXRlIHdpdGggaXQuICBUaW5rZXJQb3Agc3VwcGxpZXMgYQotbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVmZXJlbmNlLyNjb25uZWN0aW5nLXZpYS1qYXZhW3JlZmVyZW5jZSBkcml2ZXJdIHdyaXR0ZW4gaW4gSmF2YSwgYnV0Ci10aGVyZSBhcmUgZHJpdmVycyBkZXZlbG9wZWQgYnkgYm90aCBUaW5rZXJQb3AgYW5kIHRoaXJkLXBhcnRpZXMgZm9yIG90aGVyIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy8jbGFuZ3VhZ2UtZHJpdmVyc1tsYW5ndWFnZXNdCi1zdWNoIGFzIFB5dGhvbiwgSmF2YXNjcmlwdCwgZXRjLiBHcmVtbGluIFNlcnZlciB0aGVyZWZvcmUgcmVwcmVzZW50cyB0aGUgbWV0aG9kIGJ5IHdoaWNoIG5vbi1KVk0gbGFuZ3VhZ2VzIGNhbgotaW50ZXJhY3Qgd2l0aCBUaW5rZXJQb3AuCitbc291cmNlLGphdmFdCistLS0tCitWZXJ0ZXggdjEgPSBnLmFkZFYoInBlcnNvbiIpLnByb3BlcnR5KCJuYW1lIiwibWFya28iKS5uZXh0KCk7CitWZXJ0ZXggdjIgPSBnLmFkZFYoInBlcnNvbiIpLnByb3BlcnR5KCJuYW1lIiwic3RlcGhlbiIpLm5leHQoKTsKK2cuVih2MSkuYWRkRSgia25vd3MiKS50byh2MikucHJvcGVydHkoIndlaWdodCIsMC43NSkuaXRlcmF0ZSgpOworLS0tLQorW3NvdXJjZSxqYXZhc2NyaXB0XQorLS0tLQorY29uc3QgdjEgPSBnLmFkZFYoJ3BlcnNvbicpLnByb3BlcnR5KCduYW1lJywnbWFya28nKS5uZXh0KCk7Citjb25zdCB2MiA9IGcuYWRkVigncGVyc29uJykucHJvcGVydHkoJ25hbWUnLCdzdGVwaGVuJykubmV4dCgpOworZy5WKHYxKS5hZGRFKCdrbm93cycpLnRvKHYyKS5wcm9wZXJ0eSgnd2VpZ2h0JywwLjc1KS5pdGVyYXRlKCk7CistLS0tCitbc291cmNlLHB5dGhvbl0KKy0tLS0KK3YxID0gZy5hZGRWKCdwZXJzb24nKS5wcm9wZXJ0eSgnbmFtZScsJ21hcmtvJykubmV4dCgpCit2MiA9IGcuYWRkVigncGVyc29uJykucHJvcGVydHkoJ25hbWUnLCdzdGVwaGVuJykubmV4dCgpCitnLlYodjEpLmFkZEUoJ2tub3dzJykudG8odjIpLnByb3BlcnR5KCd3ZWlnaHQnLDAuNzUpLml0ZXJhdGUoKQorLS0tLQogCiA9PT0gQ29uY2x1c2lvbgogCi0uLi5hbmQgdGhhdCBpcyB0aGUgZW5kIG9mIF9UaGUgVGlua2VyUG9wIFdvcmtvdXQgLSBieSBHcmVtbGluXy4gWW91IGFyZSBob3BlZnVsbHkgZmVlbGluZyBtb3JlIGNvbmZpZGVudCBpbiB5b3VyCisuLi5hbmQgdGhhdCBpcyB0aGUgZW5kIG9mIF9UaGUgVGlua2VyUG9wIFdvcmtvdXQg4oCUIGJ5IEdyZW1saW5fLiBZb3UgYXJlIGhvcGVmdWxseSBmZWVsaW5nIG1vcmUgY29uZmlkZW50IGluIHlvdXIKIFRpbmtlclBvcCBza2lsbHMgYW5kIGhhdmUgYSBnb29kIG92ZXJ2aWV3IG9mIHdoYXQgdGhlIHN0YWNrIGhhcyB0byBvZmZlciwgYXMgd2VsbCBhcyBzb21lIGVudHJ5IHBvaW50cyB0byBmdXJ0aGVyCiByZXNlYXJjaCB3aXRoaW4gdGhlIHJlZmVyZW5jZSBkb2N1bWVudGF0aW9uLiBXZWxjb21lIHRvIFRoZSBUaW5rZXJQb3AhCmRpZmYgLS1naXQgYS9kb2NzL3NyYy90dXRvcmlhbHMvZ3JlbWxpbi1sYW5ndWFnZS12YXJpYW50cy9pbmRleC5hc2NpaWRvYyBiL2RvY3Mvc3JjL3R1dG9yaWFscy9ncmVtbGluLWxhbmd1YWdlLXZhcmlhbnRzL2luZGV4LmFzY2lpZG9jCmluZGV4IDI3YTU4YmYuLmYxN2ZhNmMgMTAwNjQ0Ci0tLSBhL2RvY3Mvc3JjL3R1dG9yaWFscy9ncmVtbGluLWxhbmd1YWdlLXZhcmlhbnRzL2luZGV4LmFzY2lpZG9jCisrKyBiL2RvY3Mvc3JjL3R1dG9yaWFscy9ncmVtbGluLWxhbmd1YWdlLXZhcmlhbnRzL2luZGV4LmFzY2lpZG9jCkBAIC0zMiwxNSArMzIsMTUgQEAKIAogaW1hZ2U6OmdyZW1saW4taG91c2Utb2YtbWlycm9ycy5wbmdbd2lkdGg9MTAyNF0KIAotV0FSTklORzogVGhpcyBpcyBhbiBhZHZhbmNlZCB0dXRvcmlhbCBpbnRlbmRlZCBmb3IgZXhwZXJ0cyBrbm93bGVkZ2VhYmxlIGluIEdyZW1saW4gaW4gcGFydGljdWxhciBhbmQgVGlua2VyUG9wIGluIGdlbmVyYWwuCi1Nb3Jlb3ZlciwgdGhlIGF1ZGllbmNlIHNob3VsZCB1bmRlcnN0YW5kIGFkdmFuY2VkIHByb2dyYW1taW5nIGxhbmd1YWdlIGNvbmNlcHRzIHN1Y2ggYXMgcmVmbGVjdGlvbiwgbWV0YS1wcm9ncmFtbWluZywKLXNvdXJjZSBjb2RlIGdlbmVyYXRpb24sIGFuZCB2aXJ0dWFsIG1hY2hpbmVzLgorV0FSTklORzogVGhpcyBpcyBhbiBhZHZhbmNlZCB0dXRvcmlhbCBpbnRlbmRlZCBmb3IgZXhwZXJ0cyBrbm93bGVkZ2VhYmxlIGluIEdyZW1saW4gaW4gcGFydGljdWxhciBhbmQgVGlua2VyUG9wIGluCitnZW5lcmFsLiBNb3Jlb3ZlciwgdGhlIGF1ZGllbmNlIHNob3VsZCB1bmRlcnN0YW5kIGFkdmFuY2VkIHByb2dyYW1taW5nIGxhbmd1YWdlIGNvbmNlcHRzIHN1Y2ggYXMgcmVmbGVjdGlvbiwKK21ldGEtcHJvZ3JhbW1pbmcsIHNvdXJjZSBjb2RlIGdlbmVyYXRpb24sIGFuZCB2aXJ0dWFsIG1hY2hpbmVzLgogCiBbc291cmNlLGphdmFdCiAtLS0tCiBwdWJsaWMgY2xhc3MgTXlBcHBsaWNhdGlvbiB7CiAKLSAgcHVibGljIHN0YXRpYyB2b2lkIHJ1bihmaW5hbCBTdHJpbmdbXSBhcmdzKSB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBydW4oU3RyaW5nW10gYXJncykgewogCiAgICAgLy8gYXNzdW1lcyBhcmdzWzBdIGlzIGEgY29uZmlndXJhdGlvbiBmaWxlIGxvY2F0aW9uCiAgICAgR3JhcGggZ3JhcGggPSBHcmFwaEZhY3Rvcnkub3BlbihhcmdzWzBdKTsKQEAgLTYyLDggKzYyLDggQEAKIC0tLS0KIAogSW4gcXVlcnkgbGFuZ3VhZ2VzIGxpa2UgbGluazpodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TUUxbU1FMXSwgdGhlIHVzZXIgbXVzdCBjb25zdHJ1Y3QgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YKLXRoZWlyIHF1ZXJ5IGFuZCBzdWJtaXQgaXQgdG8gdGhlIGRhdGFiYXNlIGZvciBldmFsdWF0aW9uLiBUaGlzIGlzIGJlY2F1c2UgU1FMIGNhbm5vdCBiZSBleHByZXNzZWQgaW4gSmF2YSBhcyB0aGV5IHVzZSBmdW5kYW1lbnRhbGx5Ci1kaWZmZXJlbnQgY29uc3RydWN0cyBpbiB0aGVpciBleHByZXNzaW9uLiBUaGUgc2FtZSBleGFtcGxlIGFib3ZlIGlzIHByZXNlbnRlZCBiZWxvdyB1c2luZyBTUUwgYW5kIHRoZQordGhlaXIgcXVlcnkgYW5kIHN1Ym1pdCBpdCB0byB0aGUgZGF0YWJhc2UgZm9yIGV2YWx1YXRpb24uIFRoaXMgaXMgYmVjYXVzZSBTUUwgY2Fubm90IGJlIGV4cHJlc3NlZCBpbiBKYXZhIGFzIHRoZXkgdXNlCitmdW5kYW1lbnRhbGx5IGRpZmZlcmVudCBjb25zdHJ1Y3RzIGluIHRoZWlyIGV4cHJlc3Npb24uIFRoZSBzYW1lIGV4YW1wbGUgYWJvdmUgaXMgcHJlc2VudGVkIGJlbG93IHVzaW5nIFNRTCBhbmQgdGhlCiBsaW5rOmh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0phdmFfRGF0YWJhc2VfQ29ubmVjdGl2aXR5W0pEQkNdIGludGVyZmFjZS4gVGhlIHRha2UgaG9tZSBwb2ludCBpcyB0aGF0IEdyZW1saW4gZG9lcwogbm90IGV4aXN0IG91dHNpZGUgdGhlIHByb2dyYW1taW5nIGxhbmd1YWdlIGluIHdoaWNoIGl0IHdpbGwgYmUgdXNlZC4gR3JlbWxpbiB3YXMgZGVzaWduZWQgdG8gYmUgYWJsZSB0byBiZQogZW1iZWRkZWQgaW4gYW55IG1vZGVybiBwcm9ncmFtbWluZyBsYW5ndWFnZSBhbmQgdGh1cywgYWx3YXlzIGZyZWUgZnJvbSB0aGUgY29tcGxleGl0aWVzIG9mIHN0cmluZyBtYW5pcHVsYXRpb24gYXMgc2VlbgpAQCAtMTAwLDEwICsxMDAsMTEgQEAKIH0KIC0tLS0KIAotVGhlIHB1cnBvc2Ugb2YgdGhpcyB0dXRvcmlhbCBpcyB0byBleHBsYWluIGhvdyB0byBkZXZlbG9wIGEgX0dyZW1saW4gbGFuZ3VhZ2UgdmFyaWFudF8uIFRoYXQgaXMsIGZvciB0aG9zZSBkZXZlbG9wZXJzIHRoYXQKLWFyZSBpbnRlcmVzdGVkIGluIHN1cHBvcnRpbmcgR3JlbWxpbiBpbiB0aGVpciBuYXRpdmUgbGFuZ3VhZ2UgYW5kIHRoZXJlIGN1cnJlbnRseSBkb2VzIG5vdCBleGlzdCBhIChnb29kKSBHcmVtbGluIHZhcmlhbnQgaW4KLXRoZWlyIGxhbmd1YWdlLCB0aGV5IGNhbiBkZXZlbG9wIG9uZSBmb3IgdGhlIEFwYWNoZSBUaW5rZXJQb3AgY29tbXVuaXR5IChhbmQgdGhlaXIgbGFuZ3VhZ2UgY29tbXVuaXR5IGluIGdlbmVyYWwpLiBJbiB0aGlzCi10dXRvcmlhbCwgbGluazpodHRwczovL3d3dy5weXRob24ub3JnL1tQeXRob25dIHdpbGwgc2VydmUgYXMgdGhlIGhvc3QgbGFuZ3VhZ2UgYW5kIHR3byB0eXBpY2FsIGltcGxlbWVudGF0aW9uIG1vZGVscyB3aWxsIGJlIHByZXNlbnRlZC4KK1RoZSBwdXJwb3NlIG9mIHRoaXMgdHV0b3JpYWwgaXMgdG8gZXhwbGFpbiBob3cgdG8gZGV2ZWxvcCBhIF9HcmVtbGluIGxhbmd1YWdlIHZhcmlhbnRfLiBUaGF0IGlzLCBmb3IgdGhvc2UgZGV2ZWxvcGVycword2hvIGFyZSBpbnRlcmVzdGVkIGluIHN1cHBvcnRpbmcgR3JlbWxpbiBpbiB0aGVpciBuYXRpdmUgbGFuZ3VhZ2UgYW5kIHRoZXJlIGN1cnJlbnRseSBkb2VzIG5vdCBleGlzdCBhIChnb29kKSBHcmVtbGluCit2YXJpYW50IGluIHRoZWlyIGxhbmd1YWdlLCB0aGV5IGNhbiBkZXZlbG9wIG9uZSBmb3IgdGhlIEFwYWNoZSBUaW5rZXJQb3AgY29tbXVuaXR5IChhbmQgdGhlaXIgbGFuZ3VhZ2UgY29tbXVuaXR5IGluCitnZW5lcmFsKS4gSW4gdGhpcyB0dXRvcmlhbCwgbGluazpodHRwczovL3d3dy5weXRob24ub3JnL1tQeXRob25dIHdpbGwgc2VydmUgYXMgdGhlIGhvc3QgbGFuZ3VhZ2UgYW5kIHR3byB0eXBpY2FsCitpbXBsZW1lbnRhdGlvbiBtb2RlbHMgd2lsbCBiZSBwcmVzZW50ZWQuCiAKIDEuIDw8dXNpbmctanl0aG9uLWFuZC10aGUtanZtLCoqVXNpbmcgSnl0aG9uIGFuZCB0aGUgSlZNKio+PjogVGhpcyBpcyBwZXJoYXBzIHRoZSBlYXNpZXN0IHdheSB0byBwcm9kdWNlIGEgR3JlbWxpbgogbGFuZ3VhZ2UgdmFyaWFudC4gV2l0aCBsaW5rOmh0dHBzOi8vd3d3LmpjcC5vcmcvZW4vanNyL2RldGFpbD9pZD0yMjNbSlNSLTIyM10sIGFueSBsYW5ndWFnZSBjb21waWxlciB3cml0dGVuIGZvciB0aGUgSlZNCkBAIC0xMTksNDAgKzEyMCw0MiBAQAogY29uc2lzdGVudCBhbmQgZWFzaWx5IGxldmVyYWdlZCBieSBhbnlvbmUgdmVyc2VkIGluIEdyZW1saW4uCiAKIElNUE9SVEFOVDogVGhlICJHcmVtbGluLVB5dGhvbiIgcHJlc2VudGVkIGluIHRoaXMgdHV0b3JpYWwgaXMgYmFzaWMgYW5kIHByb3ZpZGVkIHRvIHNob3cgdGhlIHByaW1hcnkgdGVjaG5pcXVlcyB1c2VkIHRvCi1jb25zdHJ1Y3QgYSBHcmVtbGluIGxhbmd1YWdlIHZhcmlhbnQuIEFwYWNoZSBUaW5rZXJQb3AgZGlzdHJpYnV0ZXMgd2l0aCBhIGZ1bGwgZmxlZGdlZCBHcmVtbGluLVB5dGhvbiB2YXJpYW50Ci10aGF0IHVzZXMgbWFueSBvZiB0aGUgdGVjaG5pcXVlcyBwcmVzZW50ZWQgaW4gdGhpcyB0dXRvcmlhbC4KK2NvbnN0cnVjdCBhIEdyZW1saW4gbGFuZ3VhZ2UgdmFyaWFudC4gQXBhY2hlIFRpbmtlclBvcCBkaXN0cmlidXRlcyB3aXRoIGEgZnVsbCBmbGVkZ2VkCitsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei9yZWZlcmVuY2UvI2dyZW1saW4tcHl0aG9uW0dyZW1saW4tUHl0aG9uXSB2YXJpYW50IHRoYXQgdXNlcyBtYW55IG9mIHRoZQordGVjaG5pcXVlcyBwcmVzZW50ZWQgaW4gdGhpcyB0dXRvcmlhbC4KIAogW1tsYW5ndWFnZS1kcml2ZXJzLXZzLWxhbmd1YWdlLXZhcmlhbnRzXV0KID09IExhbmd1YWdlIERyaXZlcnMgdnMuIExhbmd1YWdlIFZhcmlhbnRzCiAKLUJlZm9yZSBkaXNjdXNzaW5nIGhvdyB0byBpbXBsZW1lbnQgYSBHcmVtbGluIGxhbmd1YWdlIHZhcmlhbnQgaW4gUHl0aG9uLCBpdCBpcyBuZWNlc3NhcnkgdG8gdW5kZXJzdGFuZCB0d28gY29uY2VwdHMgcmVsYXRlZCB0bwotR3JlbWxpbiBsYW5ndWFnZSBkZXZlbG9wbWVudC4gVGhlcmUgaXMgYSBkaWZmZXJlbmNlIGJldHdlZW4gYSBfbGFuZ3VhZ2UgZHJpdmVyXyBhbmQgYSBfbGFuZ3VhZ2UgdmFyaWFudF8gYW5kIGl0IGlzIGltcG9ydGFudAotdGhhdCB0aGVzZSB0d28gY29uY2VwdHMgKGFuZCB0aGVpciByZXNwZWN0aXZlIGltcGxlbWVudGF0aW9ucykgcmVtYWluIHNlcGFyYXRlLgorQmVmb3JlIGRpc2N1c3NpbmcgaG93IHRvIGltcGxlbWVudCBhIEdyZW1saW4gbGFuZ3VhZ2UgdmFyaWFudCBpbiBQeXRob24sIGl0IGlzIG5lY2Vzc2FyeSB0byB1bmRlcnN0YW5kIHR3byBjb25jZXB0cworcmVsYXRlZCB0byBHcmVtbGluIGxhbmd1YWdlIGRldmVsb3BtZW50LiBUaGVyZSBpcyBhIGRpZmZlcmVuY2UgYmV0d2VlbiBhIF9sYW5ndWFnZSBkcml2ZXJfIGFuZCBhIF9sYW5ndWFnZSB2YXJpYW50XworYW5kIGl0IGlzIGltcG9ydGFudCB0aGF0IHRoZXNlIHR3byBjb25jZXB0cyAoYW5kIHRoZWlyIHJlc3BlY3RpdmUgaW1wbGVtZW50YXRpb25zKSByZW1haW4gc2VwYXJhdGUuCiAKID09PSBMYW5ndWFnZSBEcml2ZXJzCiAKIGltYWdlOmxhbmd1YWdlLWRyaXZlcnMucG5nW3dpZHRoPTM3NSxmbG9hdD1yaWdodF0gQSBHcmVtbGluIGxhbmd1YWdlIGRyaXZlciBpcyBhIHNvZnR3YXJlIGxpYnJhcnkgdGhhdCBpcyBhYmxlIHRvCiBjb21tdW5pY2F0ZSB3aXRoIGEgVGlua2VyUG9wLWVuYWJsZWQgZ3JhcGggc3lzdGVtIHdoZXRoZXIgZGlyZWN0bHkgdmlhIHRoZSBKVk0gb3IgaW5kaXJlY3RseSB2aWEKLWxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jZ3JlbWxpbi1zZXJ2ZXJbR3JlbWxpbiBTZXJ2ZXJdIEdyZW1saW5TZXJ2ZXIgb3Igc29tZSBvdGhlcgotbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVmZXJlbmNlLyNjb25uZWN0aW5nLXZpYS1yZW1vdGVncmFwaFtSZW1vdGVDb25uZWN0aW9uXSBlbmFibGVkIGdyYXBoIHN5c3RlbS4KK2xpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jY29ubmVjdGluZy1ncmVtbGluLXNlcnZlcltHcmVtbGluIFNlcnZlcl0gR3JlbWxpbiBTZXJ2ZXIgb3Igc29tZQorb3RoZXIgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVmZXJlbmNlLyNjb25uZWN0aW5nLXJncFtSZW1vdGVDb25uZWN0aW9uXSBlbmFibGVkIGdyYXBoIHN5c3RlbS4KIExhbmd1YWdlIGRyaXZlcnMgYXJlIHJlc3BvbnNpYmxlIGZvciBzdWJtaXR0aW5nIEdyZW1saW4gdHJhdmVyc2FscyB0byBhIFRpbmtlclBvcC1lbmFibGVkIGdyYXBoIHN5c3RlbSBhbmQKIHJldHVybmluZyByZXN1bHRzIHRvIHRoZSBkZXZlbG9wZXIgdGhhdCBhcmUgd2l0aGluIHRoZSBkZXZlbG9wZXIncyBsYW5ndWFnZSdzIHR5cGUgc3lzdGVtLgogRm9yIGluc3RhbmNlLCByZXN1bHRhbnQgZG91YmxlcyBzaG91bGQgYmUgY29lcmNlZCB0byBmbG9hdHMgaW4gUHl0aG9uLgogCi1UaGlzIHR1dG9yaWFsIGlzIG5vdCBhYm91dCBsYW5ndWFnZSBkcml2ZXJzLCBidXQgYWJvdXQgbGFuZ3VhZ2UgdmFyaWFudHMuIE1vcmVvdmVyLCBjb21tdW5pdHkgbGlicmFyaWVzIHNob3VsZCBtYWtlIHRoaXMKLWRpc3RpbmN0aW9uIGNsZWFyIGFuZCAqKnNob3VsZCBub3QqKiBkZXZlbG9wIGxpYnJhcmllcyB0aGF0IHNlcnZlIGJvdGggcm9sZXMuIExhbmd1YWdlIGRyaXZlcnMgd2lsbCBiZSB1c2VmdWwgdG8gYSBjb2xsZWN0aW9uCi1vZiBHcmVtbGluIHZhcmlhbnRzIHdpdGhpbiBhIGxhbmd1YWdlIGNvbW11bml0eSAtLSBhYmxlIHRvIHN1cHBvcnQgYEdyYXBoVHJhdmVyc2FsYC12YXJpYW50cyBhcyB3ZWxsIGFzIGFsc28gb3RoZXIKLWxpbms6aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRG9tYWluLXNwZWNpZmljX2xhbmd1YWdlW0RTTF0tdmFyaWFudHMgKGUuZy4gYFNvY2lhbFRyYXZlcnNhbGApLgorVGhpcyB0dXRvcmlhbCBpcyBub3QgYWJvdXQgbGFuZ3VhZ2UgZHJpdmVycywgYnV0IGFib3V0IGxhbmd1YWdlIHZhcmlhbnRzLiBNb3Jlb3ZlciwgY29tbXVuaXR5IGxpYnJhcmllcyBzaG91bGQgbWFrZQordGhpcyBkaXN0aW5jdGlvbiBjbGVhciBhbmQgKipzaG91bGQgbm90KiogZGV2ZWxvcCBsaWJyYXJpZXMgdGhhdCBzZXJ2ZSBib3RoIHJvbGVzLiBMYW5ndWFnZSBkcml2ZXJzIHdpbGwgYmUgdXNlZnVsIHRvCithIGNvbGxlY3Rpb24gb2YgR3JlbWxpbiB2YXJpYW50cyB3aXRoaW4gYSBsYW5ndWFnZSBjb21tdW5pdHkgLS0gYWJsZSB0byBzdXBwb3J0IGBHcmFwaFRyYXZlcnNhbGAtdmFyaWFudHMgYXMgd2VsbCBhcworYWxzbyBvdGhlciBsaW5rOmh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RvbWFpbi1zcGVjaWZpY19sYW5ndWFnZVtEU0xdLXZhcmlhbnRzIChlLmcuIGBTb2NpYWxUcmF2ZXJzYWxgKS4KIAogTk9URTogYEdyYXBoVHJhdmVyc2FsYCBpcyBhIHBhcnRpY3VsYXIgR3JlbWxpbiBkb21haW4tc3BlY2lmaWMgbGFuZ3VhZ2UgKGxpbms6aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRG9tYWluLXNwZWNpZmljX2xhbmd1YWdlW0RTTF0pLAotYWxiZWl0IHRoZSBtb3N0IHBvcHVsYXIgYW5kIGZvdW5kYXRpb25hbCBEU0wuIElmIGFub3RoZXIgRFNMIGlzIGNyZWF0ZWQsIHRoZW4gdGhlIHNhbWUgdGVjaG5pcXVlcyBkaXNjdXNzZWQgaW4gdGhpcyB0dXRvcmlhbAotZm9yIGBHcmFwaFRyYXZlcnNhbGAgYXBwbHkgdG8gYFhYWFRyYXZlcnNhbGAuCithbGJlaXQgdGhlIG1vc3QgcG9wdWxhciBhbmQgZm91bmRhdGlvbmFsIERTTC4gSWYgYW5vdGhlciBEU0wgaXMgY3JlYXRlZCwgdGhlbiB0aGUgc2FtZSB0ZWNobmlxdWVzIGRpc2N1c3NlZCBpbiB0aGlzCit0dXRvcmlhbCBmb3IgYEdyYXBoVHJhdmVyc2FsYCBhcHBseSB0byBgWFhYVHJhdmVyc2FsYC4KIAogPT09IExhbmd1YWdlIFZhcmlhbnRzCiAKLWltYWdlOmxhbmd1YWdlLXZhcmlhbnRzLnBuZ1t3aWR0aD0zNzUsZmxvYXQ9cmlnaHRdIEEgR3JlbWxpbiBsYW5ndWFnZSB2YXJpYW50IGlzIGEgc29mdHdhcmUgbGlicmFyeSB0aGF0IGFsbG93cyBhIGRldmVsb3BlcgotdG8gd3JpdGUgYSBHcmVtbGluIHRyYXZlcnNhbCB3aXRoaW4gdGhlaXIgbmF0aXZlIHByb2dyYW1taW5nIGxhbmd1YWdlLiBUaGUgbGFuZ3VhZ2UgdmFyaWFudCBpcyByZXNwb25zaWJsZSBmb3IKLWNyZWF0aW5nIEdyZW1saW4gYEJ5dGVjb2RlYCB0aGF0IHdpbGwgdWx0aW1hdGVseSBiZSB0cmFuc2xhdGVkIGFuZCBjb21waWxlZCB0byBhIGBUcmF2ZXJzYWxgIGJ5IGEgVGlua2VyUG9wLWVuYWJsZWQgZ3JhcGggc3lzdGVtLgoraW1hZ2U6bGFuZ3VhZ2UtdmFyaWFudHMucG5nW3dpZHRoPTM3NSxmbG9hdD1yaWdodF0gQSBHcmVtbGluIGxhbmd1YWdlIHZhcmlhbnQgaXMgYSBzb2Z0d2FyZSBsaWJyYXJ5IHRoYXQgYWxsb3dzIGEKK2RldmVsb3BlciB0byB3cml0ZSBhIEdyZW1saW4gdHJhdmVyc2FsIHdpdGhpbiB0aGVpciBuYXRpdmUgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UuIFRoZSBsYW5ndWFnZSB2YXJpYW50IGlzIHJlc3BvbnNpYmxlCitmb3IgY3JlYXRpbmcgR3JlbWxpbiBgQnl0ZWNvZGVgIHRoYXQgd2lsbCB1bHRpbWF0ZWx5IGJlIHRyYW5zbGF0ZWQgYW5kIGNvbXBpbGVkIHRvIGEgYFRyYXZlcnNhbGAgYnkgYQorVGlua2VyUG9wLWVuYWJsZWQgZ3JhcGggc3lzdGVtLgogCiBFdmVyeSBsYW5ndWFnZSB2YXJpYW50LCByZWdhcmRsZXNzIG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLCB3aWxsIGhhdmUgdG8gYWNjb3VudCBmb3IgdGhlIGZvdXIgY29yZSBjb25jZXB0cyBiZWxvdzoKIApAQCAtMTYxLDI3ICsxNjQsMzAgQEAKIAogMi4gYEdyYXBoVHJhdmVyc2FsU291cmNlYCAoKipjb21waWxlcioqKTogVGhpcyBpcyB0aGUgdHlwaWNhbCBgZ2AgcmVmZXJlbmNlLiBBIGBHcmFwaFRyYXZlcnNhbFNvdXJjZWAgbWFpbnRhaW5zIHRoZQogYHdpdGhYWFgoKWAtc3RyYXRlZ3kgbWV0aG9kcyBhcyB3ZWxsIGFzIHRoZSAidHJhdmVyc2FsIHNwYXduIi1tZXRob2RzIHN1Y2ggYXMgYFYoKWAsIGBFKClgLCBgYWRkVigpYCwgZXRjLgotQSB0cmF2ZXJzYWwgc291cmNlJ3MgcmVnaXN0ZXJlZCBgVHJhdmVyc2FsU3RyYXRlZ2llc2AgZGV0ZXJtaW5lIGhvdyB0aGUgc3VibWl0dGVkIHRyYXZlcnNhbCB3aWxsIGJlIHVsdGltYXRlbHkgZXZhbHVhdGVkLgorQSB0cmF2ZXJzYWwgc291cmNlJ3MgcmVnaXN0ZXJlZCBgVHJhdmVyc2FsU3RyYXRlZ2llc2AgZGV0ZXJtaW5lIGhvdyB0aGUgc3VibWl0dGVkIHRyYXZlcnNhbCB3aWxsIGJlIHVsdGltYXRlbHkKK2V2YWx1YXRlZC4KIAogMy4gYEdyYXBoVHJhdmVyc2FsYCAoKipmdW5jdGlvbiBjb21wb3NpdGlvbioqKTogQSBncmFwaCB0cmF2ZXJzYWwgbWFpbnRhaW5zIHRoZSBjb21wdXRhdGlvbmFsIHN0ZXBzIHN1Y2ggYXMgYG91dCgpYCwgYGdyb3VwQ291bnQoKWAsCi1gbWF0Y2goKWAsIGV0Yy4gVGhpcyBmbHVlbnQgaW50ZXJmYWNlIHN1cHBvcnRzIG1ldGhvZCBjaGFpbmluZyBhbmQgdGh1cywgYSBsaW5lYXIgImxlZnQtdG8tcmlnaHQiIHJlcHJlc2VudGF0aW9uIG9mIGEgdHJhdmVyc2FsL3F1ZXJ5LgorYG1hdGNoKClgLCBldGMuIFRoaXMgZmx1ZW50IGludGVyZmFjZSBzdXBwb3J0cyBtZXRob2QgY2hhaW5pbmcgYW5kIHRodXMsIGEgbGluZWFyICJsZWZ0LXRvLXJpZ2h0IiByZXByZXNlbnRhdGlvbiBvZiBhCit0cmF2ZXJzYWwvcXVlcnkuCiAKLTQuIGBfX2AgKCoqZnVuY3Rpb24gbmVzdGluZyoqKSA6IFRoZSBhbm9ueW1vdXMgdHJhdmVyc2FsIGNsYXNzIGlzIHVzZWQgZm9yIHBhc3NpbmcgYSB0cmF2ZXJzYWwgYXMgYW4gYXJndW1lbnQgdG8gYSBwYXJlbnQgc3RlcC4KLUZvciBleGFtcGxlLCBpbiBgK3JlcGVhdChfXy5vdXQoKSkrYCwgYCtfXy5vdXQoKStgIGlzIGFuIGFub255bW91cyB0cmF2ZXJzYWwgcGFzc2VkIHRvIHRoZSB0cmF2ZXJzYWwgcGFyZW50IGByZXBlYXQoKWAuCi1Bbm9ueW1vdXMgdHJhdmVyc2FscyBlbmFibGUgdGhlICJ0b3AtdG8tYm90dG9tIiByZXByZXNlbnRhdGlvbiBvZiBhIHRyYXZlcnNhbC4KKzQuIGBfX2AgKCoqZnVuY3Rpb24gbmVzdGluZyoqKSA6IFRoZSBhbm9ueW1vdXMgdHJhdmVyc2FsIGNsYXNzIGlzIHVzZWQgZm9yIHBhc3NpbmcgYSB0cmF2ZXJzYWwgYXMgYW4gYXJndW1lbnQgdG8gYQorcGFyZW50IHN0ZXAuIEZvciBleGFtcGxlLCBpbiBgK3JlcGVhdChfXy5vdXQoKSkrYCwgYCtfXy5vdXQoKStgIGlzIGFuIGFub255bW91cyB0cmF2ZXJzYWwgcGFzc2VkIHRvIHRoZSB0cmF2ZXJzYWwgcGFyZW50CitgcmVwZWF0KClgLiBBbm9ueW1vdXMgdHJhdmVyc2FscyBlbmFibGUgdGhlICJ0b3AtdG8tYm90dG9tIiByZXByZXNlbnRhdGlvbiBvZiBhIHRyYXZlcnNhbC4KIAogNS4gYEJ5dGVjb2RlYCAoKipsYW5ndWFnZSBhZ25vc3RpYyBlbmNvZGluZyoqKTogVGhlIHNvdXJjZSBhbmQgdHJhdmVyc2FsIHN0ZXBzIGFuZCB0aGVpciBhcmd1bWVudHMgYXJlIGVuY29kZWQgaW4gYQotbGFuZ3VhZ2UgYWdub3N0aWMgcmVwcmVzZW50YXRpb24gY2FsbGVkIEdyZW1saW4gYnl0ZWNvZGUuIFRoaXMgcmVwcmVzZW50YXRpb24gaXMgYSBuZXN0ZWQgbGlzdCBvZiB0aGUgZm9ybSBgW3N0ZXAsW2FyZ3MqXV0qYC4KK2xhbmd1YWdlIGFnbm9zdGljIHJlcHJlc2VudGF0aW9uIGNhbGxlZCBHcmVtbGluIGJ5dGVjb2RlLiBUaGlzIHJlcHJlc2VudGF0aW9uIGlzIGEgbmVzdGVkIGxpc3Qgb2YgdGhlIGZvcm0KK2Bbc3RlcCxbYXJncypdXSpgLgogCi1Cb3RoIGBHcmFwaFRyYXZlcnNhbGAgYW5kIGArX18rYCBkZWZpbmUgdGhlIHN0cnVjdHVyZSBvZiB0aGUgR3JlbWxpbiBsYW5ndWFnZS4gR3JlbWxpbiBpcyBhIF90d28tZGltZW5zaW9uYWwgbGFuZ3VhZ2VfIHN1cHBvcnRpbmcKLWxpbmVhciwgbmVzdGVkIHN0ZXAgc2VxdWVuY2VzLiBIaXN0b3JpY2FsbHksIG1hbnkgR3JlbWxpbiBsYW5ndWFnZSB2YXJpYW50cyBoYXZlIGZhaWxlZCB0byBtYWtlIHRoZSBkaXN0aW5jdGlvbnMgYWJvdmUgY2xlYXIKLWFuZCBpbiBkb2luZyBzbywgZWl0aGVyIGNvbXBsaWNhdGUgdGhlaXIgaW1wbGVtZW50YXRpb25zIG9yIHlpZWxkIHZhcmlhbnRzIHRoYXQgYXJlIG5vdCBpbiAxLXRvLTEgY29ycmVzcG9uZGVuY2Ugd2l0aCBHcmVtbGluLUphdmEuCi1CeSBrZWVwaW5nIHRoZXNlIGNvbmNlcHRzIGNsZWFyIHdoZW4gZGVzaWduaW5nIGEgbGFuZ3VhZ2UgdmFyaWFudCwgdGhlIGNvbnN0cnVjdGlvbiBvZiB0aGUgR3JlbWxpbiBieXRlY29kZSByZXByZXNlbnRhdGlvbiBpcwotZWFzeS4KK0JvdGggYEdyYXBoVHJhdmVyc2FsYCBhbmQgYCtfXytgIGRlZmluZSB0aGUgc3RydWN0dXJlIG9mIHRoZSBHcmVtbGluIGxhbmd1YWdlLiBHcmVtbGluIGlzIGEgX3R3by1kaW1lbnNpb25hbCBsYW5ndWFnZV8KK3N1cHBvcnRpbmcgbGluZWFyLCBuZXN0ZWQgc3RlcCBzZXF1ZW5jZXMuIEhpc3RvcmljYWxseSwgbWFueSBHcmVtbGluIGxhbmd1YWdlIHZhcmlhbnRzIGhhdmUgZmFpbGVkIHRvIG1ha2UgdGhlCitkaXN0aW5jdGlvbnMgYWJvdmUgY2xlYXIgYW5kIGluIGRvaW5nIHNvLCBlaXRoZXIgY29tcGxpY2F0ZSB0aGVpciBpbXBsZW1lbnRhdGlvbnMgb3IgeWllbGQgdmFyaWFudHMgdGhhdCBhcmUgbm90IGluCisxLXRvLTEgY29ycmVzcG9uZGVuY2Ugd2l0aCBHcmVtbGluLUphdmEuIEJ5IGtlZXBpbmcgdGhlc2UgY29uY2VwdHMgY2xlYXIgd2hlbiBkZXNpZ25pbmcgYSBsYW5ndWFnZSB2YXJpYW50LCB0aGUKK2NvbnN0cnVjdGlvbiBvZiB0aGUgR3JlbWxpbiBieXRlY29kZSByZXByZXNlbnRhdGlvbiBpcyBlYXN5LgogCiBJTVBPUlRBTlQ6IFRoZSB0ZXJtICJHcmVtbGluLUphdmEiIGRlbm90ZXMgdGhlIGxhbmd1YWdlIHRoYXQgaXMgZGVmaW5lZCBieSBgR3JhcGhUcmF2ZXJzYWxTb3VyY2VgLCBgR3JhcGhUcmF2ZXJzYWxgLAotYW5kIGBfX2AuIFRoZXNlIHRocmVlIGNsYXNzZXMgZXhpc3QgaW4gYG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoYCBhbmQgZm9ybSB0aGUgZGVmaW5pdGl2ZQotcmVwcmVzZW50YXRpb24gb2YgdGhlIEdyZW1saW4gdHJhdmVyc2FsIGxhbmd1YWdlLgorYW5kIGBfX2AuIFRoZXNlIHRocmVlIGNsYXNzZXMgZXhpc3QgaW4gYG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoYCBhbmQgZm9ybSB0aGUKK2RlZmluaXRpdmUgcmVwcmVzZW50YXRpb24gb2YgdGhlIEdyZW1saW4gdHJhdmVyc2FsIGxhbmd1YWdlLgogCiA9PSBHcmVtbGluLUp5dGhvbiBhbmQgR3JlbWxpbi1QeXRob24KIApAQCAtMjQxLDE3ICsyNDcsMTcgQEAKIAogPT09PSBUcmF2ZXJzYWwgV3JhcHBlcnMKIAotV2hpbGUgaXQgaXMgcG9zc2libGUgdG8gc2ltcGx5IGludGVyYWN0IHdpdGggSmF2YSBjbGFzc2VzIGluIGEgYFNjcmlwdEVuZ2luZWAgaW1wbGVtZW50YXRpb24sIHN1Y2ggR3JlbWxpbiBsYW5ndWFnZSB2YXJpYW50cwotd2lsbCBub3QgbGV2ZXJhZ2UgdGhlIHVuaXF1ZSBmZWF0dXJlcyBvZiB0aGUgaG9zdCBsYW5ndWFnZS4gSXQgaXMgZm9yIHRoaXMgcmVhc29uIHRoYXQgSlZNLWJhc2VkIGxhbmd1YWdlIHZhcmlhbnRzIHN1Y2ggYXMKLWxpbms6aHR0cHM6Ly9naXRodWIuY29tL21wb2xsbWVpZXIvZ3JlbWxpbi1zY2FsYVtHcmVtbGluLVNjYWxhXSB3ZXJlIGRldmVsb3BlZC4gU2NhbGEgcHJvdmlkZXMgbWFueSBzeW50YXggbmljZXRpZXMgbm90Ci1hdmFpbGFibGUgaW4gSmF2YS4gVG8gbGV2ZXJhZ2UgdGhlc2UgbmljZXRpZXMsIEdyZW1saW4tU2NhbGEgIndyYXBzIiBgR3JhcGhUcmF2ZXJzYWxgIGluIG9yZGVyIHRvIHByb3ZpZGUgU2NhbGEtaWRpb21hdGljIGV4dGVuc2lvbnMuCi1Bbm90aGVyIGV4YW1wbGUgaXMgQXBhY2hlIFRpbmtlclBvcCdzIEdyZW1saW4tR3Jvb3Z5IHdoaWNoIGRvZXMgdGhlIHNhbWUgdmlhIHRoZQorV2hpbGUgaXQgaXMgcG9zc2libGUgdG8gc2ltcGx5IGludGVyYWN0IHdpdGggSmF2YSBjbGFzc2VzIGluIGEgYFNjcmlwdEVuZ2luZWAgaW1wbGVtZW50YXRpb24sIHN1Y2ggR3JlbWxpbiBsYW5ndWFnZQordmFyaWFudHMgd2lsbCBub3QgbGV2ZXJhZ2UgdGhlIHVuaXF1ZSBmZWF0dXJlcyBvZiB0aGUgaG9zdCBsYW5ndWFnZS4gSXQgaXMgZm9yIHRoaXMgcmVhc29uIHRoYXQgSlZNLWJhc2VkIGxhbmd1YWdlCit2YXJpYW50cyBzdWNoIGFzIGxpbms6aHR0cHM6Ly9naXRodWIuY29tL21wb2xsbWVpZXIvZ3JlbWxpbi1zY2FsYVtHcmVtbGluLVNjYWxhXSB3ZXJlIGRldmVsb3BlZC4gU2NhbGEgcHJvdmlkZXMgbWFueQorc3ludGF4IG5pY2V0aWVzIG5vdCBhdmFpbGFibGUgaW4gSmF2YS4gVG8gbGV2ZXJhZ2UgdGhlc2UgbmljZXRpZXMsIEdyZW1saW4tU2NhbGEgIndyYXBzIiBgR3JhcGhUcmF2ZXJzYWxgIGluIG9yZGVyIHRvCitwcm92aWRlIFNjYWxhLWlkaW9tYXRpYyBleHRlbnNpb25zLiBBbm90aGVyIGV4YW1wbGUgaXMgQXBhY2hlIFRpbmtlclBvcCdzIEdyZW1saW4tR3Jvb3Z5IHdoaWNoIGRvZXMgdGhlIHNhbWUgdmlhIHRoZQogbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVmZXJlbmNlLyNzdWdhci1wbHVnaW5bU3VnYXIgcGx1Z2luXSwgYnV0IHVzZXMKLWxpbms6aHR0cDovL2dyb292eS1sYW5nLm9yZy9tZXRhcHJvZ3JhbW1pbmcuaHRtbFttZXRhLXByb2dyYW1taW5nXSBpbnN0ZWFkIG9mIG9iamVjdCB3cmFwcGluZywgd2hlcmUgImJlaGluZCB0aGUgc2NlbmVzLCIKLUdyb292eSBtZXRhLXByb2dyYW1taW5nIGlzIGRvaW5nIG9iamVjdCB3cmFwcGluZy4KK2xpbms6aHR0cDovL2dyb292eS1sYW5nLm9yZy9tZXRhcHJvZ3JhbW1pbmcuaHRtbFttZXRhLXByb2dyYW1taW5nXSBpbnN0ZWFkIG9mIG9iamVjdCB3cmFwcGluZywgd2hlcmUgImJlaGluZCB0aGUKK3NjZW5lcywiIEdyb292eSBtZXRhLXByb2dyYW1taW5nIGlzIGRvaW5nIG9iamVjdCB3cmFwcGluZy4KIAotVGhlIEp5dGhvbiBleGFtcGxlIGJlbG93IHVzZXMgUHl0aG9uIG1ldGEtcHJvZ3JhbW1pbmcgdG8gYWRkIGZ1bmN0aW9uYWxpdHkgdG8gYEdyYXBoVHJhdmVyc2FsYC4KLUluIHBhcnRpY3VsYXIsIHRoZSBgK19fZ2V0aXRlbV9fK2AgYW5kIGArX19nZXRhdHRyX18rYCAibWFnaWMgbWV0aG9kcyIgYXJlIGxldmVyYWdlZC4KK1RoZSBKeXRob24gZXhhbXBsZSBiZWxvdyB1c2VzIFB5dGhvbiBtZXRhLXByb2dyYW1taW5nIHRvIGFkZCBmdW5jdGlvbmFsaXR5IHRvIGBHcmFwaFRyYXZlcnNhbGAuIEluIHBhcnRpY3VsYXIsIHRoZQorYCtfX2dldGl0ZW1fXytgIGFuZCBgK19fZ2V0YXR0cl9fK2AgIm1hZ2ljIG1ldGhvZHMiIGFyZSBsZXZlcmFnZWQuCiAKIFtzb3VyY2UscHl0aG9uXQogLS0tLQpAQCAtMjY2LDggKzI3Miw5IEBACiBHcmFwaFRyYXZlcnNhbC5fX2dldGF0dHJfXyA9IGxhbWJkYSBzZWxmLCBrZXk6IHNlbGYudmFsdWVzKGtleSkKIC0tLS0KIAotVGhlIHR3byBtZXRob2RzIGArX19nZXRpdGVtX18rYCBhbmQgYCtfX2dldGF0dHJfXytgIHN1cHBvcnQgUHl0aG9uIF9zbGljaW5nXyBhbmQgX29iamVjdCBhdHRyaWJ1dGUgaW50ZXJjZXB0aW9uXywgcmVzcGVjdGl2ZWx5LgotSW4gdGhpcyB3YXksIHRoZSBob3N0IGxhbmd1YWdlIGlzIGFibGUgdG8gdXNlIGl0cyBuYXRpdmUgY29uc3RydWN0cyBpbiBhIG1lYW5pbmdmdWwgd2F5IHdpdGhpbiBhIEdyZW1saW4gdHJhdmVyc2FsLgorVGhlIHR3byBtZXRob2RzIGArX19nZXRpdGVtX18rYCBhbmQgYCtfX2dldGF0dHJfXytgIHN1cHBvcnQgUHl0aG9uIF9zbGljaW5nXyBhbmQgX29iamVjdCBhdHRyaWJ1dGUgaW50ZXJjZXB0aW9uXywKK3Jlc3BlY3RpdmVseS4gSW4gdGhpcyB3YXksIHRoZSBob3N0IGxhbmd1YWdlIGlzIGFibGUgdG8gdXNlIGl0cyBuYXRpdmUgY29uc3RydWN0cyBpbiBhIG1lYW5pbmdmdWwgd2F5IHdpdGhpbiBhCitHcmVtbGluIHRyYXZlcnNhbC4KIAogSU1QT1JUQU5UOiBHcmVtbGluLUphdmEgc2VydmVzIGFzIHRoZSBzdGFuZGFyZC9kZWZhdWx0IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBHcmVtbGluIHRyYXZlcnNhbCBsYW5ndWFnZS4gQW55IEdyZW1saW4KIGxhbmd1YWdlIHZhcmlhbnQgKiptdXN0KiogcHJvdmlkZSBhbGwgdGhlIHNhbWUgZnVuY3Rpb25hbGl0eSAobWV0aG9kcykgYXMgYEdyYXBoVHJhdmVyc2FsYCwgYnV0ICoqY2FuKiogZXh0ZW5kIGl0CkBAIC0yNzksMTAgKzI4NiwxMSBAQAogW1t1c2luZy1weXRob24tYW5kLXJlbW90ZWNvbm5lY3Rpb25dXQogPT09IFVzaW5nIFB5dGhvbiBhbmQgUmVtb3RlQ29ubmVjdGlvbgogCi1pbWFnZTpweXRob24tbG9nby5wbmdbd2lkdGg9MTI1LGZsb2F0PWxlZnQsbGluaz0iaHR0cHM6Ly93d3cucHl0aG9uLm9yZy8iXSBUaGUgSlZNIGlzIGEgcG93ZXJmdWwgcGllY2Ugb2YgdGVjaG5vbG9neSB0aGF0IGhhcywgb3ZlciB0aGUgeWVhcnMsCi1iZWNvbWUgYSBtZWV0aW5nIGdyb3VuZCBmb3IgZGV2ZWxvcGVycyBmcm9tIG51bWVyb3VzIGxhbmd1YWdlIGNvbW11bml0aWVzLiBIb3dldmVyLCBub3QgYWxsIGFwcGxpY2F0aW9ucyB3aWxsIHVzZSB0aGUgSlZNLgotR2l2ZW4gdGhhdCBBcGFjaGUgVGlua2VyUG9wIGlzIGEgSmF2YS1mcmFtZXdvcmssIHRoZXJlIG11c3QgYmUgYSB3YXkgZm9yIHR3byBkaWZmZXJlbnQgdmlydHVhbCBtYWNoaW5lcyB0byBjb21tdW5pY2F0ZQotdHJhdmVyc2FscyBhbmQgdGhlaXIgcmVzdWx0cy4gVGhpcyBzZWN0aW9uIHByZXNlbnRzIHRoZSBzZWNvbmQgR3JlbWxpbiBsYW5ndWFnZSB2YXJpYW50IGltcGxlbWVudGF0aW9uIG1vZGVsIHdoaWNoIGRvZXMganVzdCB0aGF0LgoraW1hZ2U6cHl0aG9uLWxvZ28ucG5nW3dpZHRoPTEyNSxmbG9hdD1sZWZ0LGxpbms9Imh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvIl0gVGhlIEpWTSBpcyBhIHBvd2VyZnVsIHBpZWNlIG9mIHRlY2hub2xvZ3kKK3RoYXQgaGFzLCBvdmVyIHRoZSB5ZWFycywgYmVjb21lIGEgbWVldGluZyBncm91bmQgZm9yIGRldmVsb3BlcnMgZnJvbSBudW1lcm91cyBsYW5ndWFnZSBjb21tdW5pdGllcy4gSG93ZXZlciwgbm90IGFsbAorYXBwbGljYXRpb25zIHdpbGwgdXNlIHRoZSBKVk0uIEdpdmVuIHRoYXQgQXBhY2hlIFRpbmtlclBvcCBpcyBhIEphdmEtZnJhbWV3b3JrLCB0aGVyZSBtdXN0IGJlIGEgd2F5IGZvciB0d28gZGlmZmVyZW50Cit2aXJ0dWFsIG1hY2hpbmVzIHRvIGNvbW11bmljYXRlIHRyYXZlcnNhbHMgYW5kIHRoZWlyIHJlc3VsdHMuIFRoaXMgc2VjdGlvbiBwcmVzZW50cyB0aGUgc2Vjb25kIEdyZW1saW4gbGFuZ3VhZ2UKK3ZhcmlhbnQgaW1wbGVtZW50YXRpb24gbW9kZWwgd2hpY2ggZG9lcyBqdXN0IHRoYXQuCiAKIE5PVEU6IEFwYWNoZSBUaW5rZXJQb3AgaXMgYSBKVk0tYmFzZWQgZ3JhcGggY29tcHV0aW5nIGZyYW1ld29yay4gTW9zdCBncmFwaCBkYXRhYmFzZXMgYW5kIHByb2Nlc3NvcnMgdG9kYXkgYXJlIGJ1aWx0CiBvbiB0aGUgSlZNLiBUaGlzIG1ha2VzIGl0IGVhc3kgZm9yIHRoZXNlIGdyYXBoIHN5c3RlbSBwcm92aWRlcnMgdG8gaW1wbGVtZW50IEFwYWNoZSBUaW5rZXJQb3AuIEhvd2V2ZXIsIFRpbmtlclBvcCBpcyBtb3JlCkBAIC0yOTEsOCArMjk5LDggQEAKIHRoYXQgYXJlIG5vdCBKVk0tYmFzZWQuIEEgdGhlb3JldGljYWwgcmV2aWV3IG9mIHRoZSBjb25jZXB0cyBiZWhpbmQgdGhlIEdyZW1saW4gdHJhdmVyc2FsIG1hY2hpbmUgaXMgcHJvdmlkZWQgaW4KIGxpbms6aHR0cDovL2FyeGl2Lm9yZy9hYnMvMTUwOC4wMzg0M1t0aGlzIGFydGljbGVdLgogCi1UaGlzIHNlY3Rpb24ncyBHcmVtbGluIGxhbmd1YWdlIHZhcmlhbnQgZGVzaWduIG1vZGVsIGRvZXMgbm90IGxldmVyYWdlIHRoZSBKVk0gZGlyZWN0bHkuIEluc3RlYWQsIGl0IGNvbnN0cnVjdHMgYSBgQnl0ZWNvZGVgCi1yZXByZXNlbnRhdGlvbiBvZiBhIGBUcmF2ZXJzYWxgIHRoYXQgd2lsbCB1bHRpbWF0ZWx5IGJlIGV2YWx1YXRlZCBieSBgUmVtb3RlQ29ubmVjdGlvbmAgKGUuZy4gR3JlbWxpblNlcnZlcikuCitUaGlzIHNlY3Rpb24ncyBHcmVtbGluIGxhbmd1YWdlIHZhcmlhbnQgZGVzaWduIG1vZGVsIGRvZXMgbm90IGxldmVyYWdlIHRoZSBKVk0gZGlyZWN0bHkuIEluc3RlYWQsIGl0IGNvbnN0cnVjdHMgYQorYEJ5dGVjb2RlYCByZXByZXNlbnRhdGlvbiBvZiBhIGBUcmF2ZXJzYWxgIHRoYXQgd2lsbCB1bHRpbWF0ZWx5IGJlIGV2YWx1YXRlZCBieSBgUmVtb3RlQ29ubmVjdGlvbmAgKGUuZy4gR3JlbWxpblNlcnZlcikuCiBJdCBpcyB1cCB0byB0aGUgbGFuZ3VhZ2UgdmFyaWFudCBkZXNpZ25lciB0byBjaG9vc2UgYSBfbGFuZ3VhZ2UgZHJpdmVyXyB0byB1c2UgZm9yIHN1Ym1pdHRpbmcgdGhlIGdlbmVyYXRlZCBieXRlY29kZSBhbmQKIGNvZXJjaW5nIGl0cyByZXN1bHRzLiBUaGUgbGFuZ3VhZ2UgZHJpdmVyIGlzIHRoZSBtZWFucyBieSB3aGljaCwgZm9yIHRoaXMgZXhhbXBsZSwgdGhlIENQeXRob24KIFZNIGNvbW11bmljYXRlcyB3aXRoIHRoZSBKVk0uCkBAIC00NDUsOSArNDUzLDExIEBACiAtLS0tCiAKIFdoZW4gdGhlIGFib3ZlIEdyb292eSBzY3JpcHQgaXMgZXZhbHVhdGVkIChlLmcuIGluIEdyZW1saW5Db25zb2xlKSwgKipHcmVtbGluLVB5dGhvbioqIGlzIGJvcm4uIFRoZSBnZW5lcmF0ZWQgUHl0aG9uCi1maWxlIGlzIGF2YWlsYWJsZSBhdCBsaW5rOmh0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvdGlua2VycG9wL2Jsb2IveC55LnovZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL2dyZW1saW5fcHl0aG9uL3Byb2Nlc3MvZ3JhcGhfdHJhdmVyc2FsLnB5W2dyYXBoX3RyYXZlcnNhbC5weV0uCi1JdCBpcyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IHRoZXJlIGlzIGEgYml0IG1vcmUgdG8gR3JlbWxpbi1QeXRob24gaW4gdGhhdCB0aGVyZSBhbHNvIGV4aXN0cyBQeXRob24gaW1wbGVtZW50YXRpb25zIG9mIGBUcmF2ZXJzYWxTdHJhdGVnaWVzYCwgYFRyYXZlcnNhbGAsIGBCeXRlY29kZWAsIGV0Yy4KLVBsZWFzZSByZXZpZXcgdGhlIGZ1bGwgaW1wbGVtZW50YXRpb24gb2YgR3JlbWxpbi1QeXRob24gbGluazpodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL3RpbmtlcnBvcC90cmVlL3gueS56L2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi9ncmVtbGluX3B5dGhvbltoZXJlXS4KK2ZpbGUgaXMgc2ltaWxhciB0byB0aGUgb25lIGF2YWlsYWJsZSBhdAorbGluazpodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL3RpbmtlcnBvcC9ibG9iL3gueS56L2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi9ncmVtbGluX3B5dGhvbi9wcm9jZXNzL2dyYXBoX3RyYXZlcnNhbC5weVtncmFwaF90cmF2ZXJzYWwucHldLgorSXQgaXMgaW1wb3J0YW50IHRvIG5vdGUgdGhhdCB0aGVyZSBpcyBhIGJpdCBtb3JlIHRvIEdyZW1saW4tUHl0aG9uIGluIHRoYXQgdGhlcmUgYWxzbyBleGlzdHMgUHl0aG9uIGltcGxlbWVudGF0aW9ucworb2YgYFRyYXZlcnNhbFN0cmF0ZWdpZXNgLCBgVHJhdmVyc2FsYCwgYEJ5dGVjb2RlYCwgZXRjLiBQbGVhc2UgcmV2aWV3IHRoZSBmdWxsIGltcGxlbWVudGF0aW9uIG9mIEdyZW1saW4tUHl0aG9uCitsaW5rOmh0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvdGlua2VycG9wL3RyZWUveC55LnovZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL2dyZW1saW5fcHl0aG9uW2hlcmVdLgogCiBOT1RFOiBJbiBwcmFjdGljZSwgVGlua2VyUG9wIHVzZXMgdGhlIEdyb292eSdzIGBHU3RyaW5nVGVtcGxhdGVFbmdpbmVgIHRvIGhlbHAgd2l0aCB0aGUgY29kZSBnZW5lcmF0aW9uIHRhc2sgZGVzY3JpYmVkCiBhYm92ZSBhbmQgYXV0b21hdGVzIHRoYXQgZ2VuZXJhdGlvbiBhcyBwYXJ0IG9mIHRoZSBzdGFuZGFyZCBidWlsZCB3aXRoIE1hdmVuIHVzaW5nIHRoZSBgZ21hdmVucGx1cy1wbHVnaW5gLiBTZWUgdGhlCkBAIC01MDcsNyArNTE3LDcgQEAKIF0KIC0tLS0KIAotVGhpcyBuZXN0ZWQgbGlzdCByZXByZXNlbnRhdGlvbiBpcyB1bHRpbWF0ZWx5IGNvbnZlcnRlZCBieSB0aGUgbGFuZ3VhZ2UgdmFyaWFudCBpbnRvIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jZ3JhcGhzb24tcmVhZGVyLXdyaXRlcltHcmFwaFNPTl0KK1RoaXMgbmVzdGVkIGxpc3QgcmVwcmVzZW50YXRpb24gaXMgdWx0aW1hdGVseSBjb252ZXJ0ZWQgYnkgdGhlIGxhbmd1YWdlIHZhcmlhbnQgaW50byBsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei9yZWZlcmVuY2UvI2dyYXBoc29uW0dyYXBoU09OXQogZm9yIHNlcmlhbGl6YXRpb24gdG8gYSBgUmVtb3RlQ29ubmVjdGlvbmAgc3VjaCBhcyBHcmVtbGluU2VydmVyLgogCiBbc291cmNlLGJhc2hdCkBAIC01MzIsMTMgKzU0MiwxNSBAQAogW0lORk9dIFRyYXZlcnNhbE9wUHJvY2Vzc29yIC0gSW5pdGlhbGl6ZWQgY2FjaGUgZm9yIFRyYXZlcnNhbE9wUHJvY2Vzc29yIHdpdGggc2l6ZSAxMDAwIGFuZCBleHBpcmF0aW9uIHRpbWUgb2YgNjAwMDAwIG1zCiBbSU5GT10gR3JlbWxpblNlcnZlciAtIEV4ZWN1dGluZyBzdGFydCB1cCBMaWZlQ3ljbGVIb29rCiBbSU5GT10gTG9nZ2VyJGluZm8gLSBFeGVjdXRlZCBvbmNlIGF0IHN0YXJ0dXAgb2YgR3JlbWxpbiBTZXJ2ZXIuCitbV0FSTl0gQWJzdHJhY3RDaGFubmVsaXplciAtIFRoZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMCBzZXJpYWxpemF0aW9uIGNsYXNzIGlzIGRlcHJlY2F0ZWQuCiBbSU5GT10gQWJzdHJhY3RDaGFubmVsaXplciAtIENvbmZpZ3VyZWQgYXBwbGljYXRpb24vdm5kLmdyZW1saW4tdjMuMCtncnlvIHdpdGggb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAKK1tXQVJOXSBBYnN0cmFjdENoYW5uZWxpemVyIC0gVGhlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcnlvTWVzc2FnZVNlcmlhbGl6ZXJWM2QwIHNlcmlhbGl6YXRpb24gY2xhc3MgaXMgZGVwcmVjYXRlZC4KIFtJTkZPXSBBYnN0cmFjdENoYW5uZWxpemVyIC0gQ29uZmlndXJlZCBhcHBsaWNhdGlvbi92bmQuZ3JlbWxpbi12My4wK2dyeW8tc3RyaW5nZCB3aXRoIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcnlvTWVzc2FnZVNlcmlhbGl6ZXJWM2QwCi1bSU5GT10gQWJzdHJhY3RDaGFubmVsaXplciAtIENvbmZpZ3VyZWQgYXBwbGljYXRpb24vdm5kLmdyZW1saW4tdjEuMCtqc29uIHdpdGggb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJHcmVtbGluVjFkMAotW0lORk9dIEFic3RyYWN0Q2hhbm5lbGl6ZXIgLSBDb25maWd1cmVkIGFwcGxpY2F0aW9uL3ZuZC5ncmVtbGluLXYyLjAranNvbiB3aXRoIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyR3JlbWxpblYyZDAKIFtJTkZPXSBBYnN0cmFjdENoYW5uZWxpemVyIC0gQ29uZmlndXJlZCBhcHBsaWNhdGlvbi92bmQuZ3JlbWxpbi12My4wK2pzb24gd2l0aCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYzZDAKIFtJTkZPXSBBYnN0cmFjdENoYW5uZWxpemVyIC0gQ29uZmlndXJlZCBhcHBsaWNhdGlvbi9qc29uIHdpdGggb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWM2QwCi1bSU5GT10gR3JlbWxpblNlcnZlciQxIC0gR3JlbWxpbiBTZXJ2ZXIgY29uZmlndXJlZCB3aXRoIHdvcmtlciB0aHJlYWQgcG9vbCBvZiAxLCBncmVtbGluIHBvb2wgb2YgNCBhbmQgYm9zcyB0aHJlYWQgcG9vbCBvZiAxLgorW0lORk9dIEFic3RyYWN0Q2hhbm5lbGl6ZXIgLSBDb25maWd1cmVkIGFwcGxpY2F0aW9uL3ZuZC5ncmFwaGJpbmFyeS12MS4wIHdpdGggb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMQorW0lORk9dIEFic3RyYWN0Q2hhbm5lbGl6ZXIgLSBDb25maWd1cmVkIGFwcGxpY2F0aW9uL3ZuZC5ncmFwaGJpbmFyeS12MS4wLXN0cmluZ2Qgd2l0aCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxCitbSU5GT10gR3JlbWxpblNlcnZlciQxIC0gR3JlbWxpbiBTZXJ2ZXIgY29uZmlndXJlZCB3aXRoIHdvcmtlciB0aHJlYWQgcG9vbCBvZiAxLCBncmVtbGluIHBvb2wgb2YgOCBhbmQgYm9zcyB0aHJlYWQgcG9vbCBvZiAxLgogW0lORk9dIEdyZW1saW5TZXJ2ZXIkMSAtIENoYW5uZWwgc3RhcnRlZCBhdCBwb3J0IDgxODIuCiAtLS0tCiAKQEAgLTU5Nyw0ICs2MDksNCBAQAogdGhlIHJlZmxlY3Rpb24tYmFzZWQgc291cmNlIGNvZGUgZ2VuZXJhdGlvbiB0ZWNobmlxdWUgcHJlc2VudGVkLiBUaGlzIG1ldGhvZCBlbnN1cmVzIHRoYXQgdGhlIGxhbmd1YWdlCiB2YXJpYW50IGlzIGFsd2F5cyBpbiBzeW5jIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgQXBhY2hlIFRpbmtlclBvcCBHcmVtbGluLUphdmEgcmVsZWFzZSB2ZXJzaW9uLiBNb3Jlb3ZlciwgaXQgcmVkdWNlcwogdGhlIGNoYW5jZSBvZiBtaXNzaW5nIG1ldGhvZHMgb3IgY3JlYXRpbmcgcG9vcmx5IGltcGxlbWVudGVkIG1ldGhvZHMuIFdoaWxlIEdyZW1saW4gaXMgc2ltcGxlLCB0aGVyZSBhcmUgbmVhcmx5IDIwMAotc3RlcHMgaW4gYEdyYXBoVHJhdmVyc2FsYC4gQXMgc3VjaCwgbWVjaGFuaWNhbCBtZWFucyBvZiBob3N0IGxhbmd1YWdlIGVtYmVkZGluZyBhcmUgc3Ryb25nbHkgYWR2aXNlZC4KK3N0ZXAgdmFyaWF0aW9ucyBpbiBgR3JhcGhUcmF2ZXJzYWxgLiBBcyBzdWNoLCBtZWNoYW5pY2FsIG1lYW5zIG9mIGhvc3QgbGFuZ3VhZ2UgZW1iZWRkaW5nIGFyZSBzdHJvbmdseSBhZHZpc2VkLgpkaWZmIC0tZ2l0IGEvZG9jcy9zcmMvdHV0b3JpYWxzL3RoZS1ncmVtbGluLWNvbnNvbGUvaW5kZXguYXNjaWlkb2MgYi9kb2NzL3NyYy90dXRvcmlhbHMvdGhlLWdyZW1saW4tY29uc29sZS9pbmRleC5hc2NpaWRvYwppbmRleCAxMjUyZWUzLi4zMTg4YWYyIDEwMDY0NAotLS0gYS9kb2NzL3NyYy90dXRvcmlhbHMvdGhlLWdyZW1saW4tY29uc29sZS9pbmRleC5hc2NpaWRvYworKysgYi9kb2NzL3NyYy90dXRvcmlhbHMvdGhlLWdyZW1saW4tY29uc29sZS9pbmRleC5hc2NpaWRvYwpAQCAtNzksNyArNzksNyBAQAogLS0tLQogCiA8MT4gQ3JlYXRlcyB0aGUgYEdyYXBoYCBpbnN0YW5jZSB0aGF0IGlzIHRoZSBBUEkgdG8gdGhlCi1saW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei9yZWZlcmVuY2UvI190aGVfZ3JhcGhfc3RydWN0dXJlW3N0cnVjdHVyZV0gb2YgdGhlIGdyYXBoLgorbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVmZXJlbmNlLyNncmFwaC1zdHJ1Y3R1cmVbc3RydWN0dXJlXSBvZiB0aGUgZ3JhcGguCiA8Mj4gQ3JlYXRlcyB0aGUgYFRyYXZlcnNhbFNvdXJjZWAgd2hpY2ggaXMgdGhlIEFQSSBmb3IKIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jdGhlLWdyYXBoLXByb2Nlc3NbcHJvY2Vzc2luZ10gb3IKIGxpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3R1dG9yaWFscy9nZXR0aW5nLXN0YXJ0ZWQvI19ncmFwaF90cmF2ZXJzYWxfc3RheWluZ19zaW1wbGVbdHJhdmVyc2luZ10KQEAgLTk4LDggKzk4LDggQEAKICogYGNyZWF0ZU1vZGVybigpYCAtIFRoZSBUaW5rZXJQb3AgMy54IHJlcHJlc2VudGF0aW9uIG9mIHRoZSAiY2xhc3NpYyIgZ3JhcGgsIHdoZXJlIHRoZSBtYWluIGRpZmZlcmVuY2UgaXMgdGhhdCB2ZXJ0ZXgKIGxhYmVscyBhcmUgZGVmaW5lZCBhbmQgdGhlICJ3ZWlnaHQiIGVkZ2UgcHJvcGVydHkgaXMgYSBgZG91YmxlYCByYXRoZXIgdGhhbiBhIGBmbG9hdGAKIChsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei9pbWFnZXMvdGlua2VycG9wLW1vZGVybi5wbmdbZGlhZ3JhbV0pLgotKiBgY3JlYXRlVGhlQ3JldygpYCAtIEEgZ3JhcGggdGhhdCBkZW1vbnN0cmF0ZXMgdXNhZ2Ugb2YgdGhlIG5ldyBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIFRpbmtlclBvcCAzLnggKGFzIGNvbXBhcmVkIHRvCi0yLngpIHN1Y2ggYXMgbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MveC55LnovcmVmZXJlbmNlLyN2ZXJ0ZXgtcHJvcGVydGllc1t2ZXJ0ZXggcHJvcGVydGllcyBhbmQgbXVsdGktcHJvcGVydGllc10KKyogYGNyZWF0ZVRoZUNyZXcoKWAgLSBBIGdyYXBoIHRoYXQgZGVtb25zdHJhdGVzIHVzYWdlIG9mIHRoZSBuZXcgc3RydWN0dXJhbCBmZWF0dXJlcyBvZiBUaW5rZXJQb3AgMy54IHN1Y2ggYXMKK2xpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jdmVydGV4LXByb3BlcnRpZXNbdmVydGV4IG1ldGEtcHJvcGVydGllcyBhbmQgbXVsdGktcHJvcGVydGllc10KIChsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy94Lnkuei9pbWFnZXMvdGhlLWNyZXctZ3JhcGgucG5nW2RpYWdyYW1dKS4KIAogW2dyZW1saW4tZ3Jvb3Z5XQpkaWZmIC0tZ2l0IGEvZG9jcy9zcmMvdXBncmFkZS9hcHBlbmRpeC5hc2NpaWRvYyBiL2RvY3Mvc3JjL3VwZ3JhZGUvYXBwZW5kaXguYXNjaWlkb2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTlkZjBlNAotLS0gL2Rldi9udWxsCisrKyBiL2RvY3Mvc3JjL3VwZ3JhZGUvYXBwZW5kaXguYXNjaWlkb2MKQEAgLTAsMCArMSwxMTMgQEAKKy8vLy8KK0xpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUgb3IgbW9yZQorY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZSBkaXN0cmlidXRlZCB3aXRoCit0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuCitUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZSB0byBZb3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMAorKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgKK3RoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8vLworCitbW2FwcGVuZGl4XV0KKz0gQXBwZW5kaXgKKworPT0gVGlua2VyUG9wIDIueAorCitUaGlzIHNlY3Rpb24gY29udGFpbnMgYSBmZXcgbm90ZXMgdGhhdCByZWZlcmVuY2UgZGlmZmVyZW5jZXMgYmV0d2VlbiBUaW5rZXJQb3AgMi54IGFuZCAzLnguCisKK09uZSBvZiB0aGUgbWFqb3IgZGlmZmVyZW5jZXMgYmV0d2VlbiBUaW5rZXJQb3AgMi54IGFuZCBUaW5rZXJQb3AgMy54IGlzIHRoYXQgaW4gVGlua2VyUG9wIDMueCwgdGhlIEphdmEgY29udmVudGlvbiBvZgordXNpbmcgc2V0dGVycyBhbmQgZ2V0dGVycyB3YXMgYWJhbmRvbmVkIGluIGZhdm9yIG9mIGEgc3ludGF4IHRoYXQgaXMgbW9yZSBhbGlnbmVkIHdpdGggdGhlIHN5bnRheCBvZiBHcmVtbGluLUdyb292eSBpbgorVGlua2VyUG9wMi4gR2l2ZW4gdGhhdCBHcmVtbGluLUphdmE4IGFuZCBHcmVtbGluLUdyb292eSBhcmUgbmVhcmx5IGlkZW50aWNhbCBkdWUgdG8gdGhlIGluY2x1c2lvbiBvZiBKYXZhIDggbGFtYmRhcywgYQorYmlnIGVmZm9ydCB3YXMgbWFkZSB0byBlbnN1cmUgdGhhdCBib3RoIGxhbmd1YWdlcyB3ZXJlIGFzIHNpbWlsYXIgYXMgcG9zc2libGUuCisKK0luIGFkZGl0aW9uLCBUaW5rZXJQb3AyIGFuZCBiZWxvdyBtYWRlIGEgc2hhcnAgZGlzdGluY3Rpb24gYmV0d2VlbiB0aGUgdmFyaW91cyBUaW5rZXJQb3AgcHJvamVjdHM6IEJsdWVwcmludHMsIFBpcGVzLAorR3JlbWxpbiwgRnJhbWVzLCBGdXJuYWNlLCBhbmQgUmV4c3Rlci4gV2l0aCBUaW5rZXJQb3AgMy54LCBhbGwgb2YgdGhlc2UgcHJvamVjdHMgaGF2ZSBiZWVuIG1lcmdlZCBhbmQgYXJlIGdlbmVyYWxseQora25vd24gYXMgR3JlbWxpbi4gKkJsdWVwcmludHMqIC0+IEdyZW1saW4gU3RydWN0dXJlIEFQSSA6ICpQaXBlcyogLT4gYEdyYXBoVHJhdmVyc2FsYCA6ICpGcmFtZXMqIC0+IGBUcmF2ZXJzYWxgIDoKKypGdXJuYWNlKiAtPiBgR3JhcGhDb21wdXRlcmAgYW5kIGBWZXJ0ZXhQcm9ncmFtYCA6ICpSZXhzdGVyKiAtPiBHcmVtbGluU2VydmVyLgorCitbW2dyYXBobWwtZm9ybWF0XV0KKz09PSBHcmFwaE1MIEZvcm1hdAorCitHcmFwaE1MIHdhcyBhIHN1cHBvcnRlZCBmb3JtYXQgaW4gVGlua2VyUG9wIDIueCwgYnV0IHRoZXJlIHdlcmUgc2V2ZXJhbCBpc3N1ZXMgdGhhdCBtYWRlIGl0IGluY29uc2lzdGVudCB3aXRoIHRoZQorc3BlY2lmaWNhdGlvbiB0aGF0IHdlcmUgY29ycmVjdGVkIGZvciAzLnguIEFzIGEgcmVzdWx0LCBhdHRlbXB0aW5nIHRvIHJlYWQgYSBHcmFwaE1MIGZpbGUgZ2VuZXJhdGVkIGJ5IDIueCB3aXRoIHRoZQorMy54IGBHcmFwaE1MUmVhZGVyYCB3aWxsIHJlc3VsdCBpbiBlcnJvci4gVG8gaGVscCB3aXRoIHRoaXMgcHJvYmxlbSwgYW4gWFNMVCBmaWxlIGlzIHByb3ZpZGVkIGFzIGEgcmVzb3VyY2UgaW4KK2BncmVtbGluLWNvcmVgIHdoaWNoIHdpbGwgdHJhbnNmb3JtIDIueCBHcmFwaE1MIHRvIDMueCBHcmFwaE1MLiBJdCBjYW4gYmUgdXNlZCBhcyBmb2xsb3dzOgorCitbc291cmNlLGphdmFdCistLS0tCitpbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeTsKK2ltcG9ydCBqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyRmFjdG9yeTsKK2ltcG9ydCBqYXZheC54bWwudHJhbnNmb3JtLmRvbS5ET01Tb3VyY2U7CitpbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5zdHJlYW0uU3RyZWFtU291cmNlOworaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uc3RyZWFtLlN0cmVhbVJlc3VsdDsKKworSW5wdXRTdHJlYW0gc3R5bGVzaGVldCA9IFRocmVhZC5jdXJyZW50VGhyZWFkKCkuZ2V0Q29udGV4dENsYXNzTG9hZGVyKCkuZ2V0UmVzb3VyY2VBc1N0cmVhbSgidHAyLXRvLXRwMy1ncmFwaG1sLnhzbHQiKTsKK0ZpbGUgZGF0YWZpbGUgPSBuZXcgRmlsZSgnL3RtcC90cDItZ3JhcGhtbC54bWwnKTsKK0ZpbGUgb3V0ZmlsZSA9IG5ldyBGaWxlKCcvdG1wL3RwMy1ncmFwaG1sLnhtbCcpOworCitUcmFuc2Zvcm1lckZhY3RvcnkgdEZhY3RvcnkgPSBUcmFuc2Zvcm1lckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKK1N0cmVhbVNvdXJjZSBzdHlsZXNvdXJjZSA9IG5ldyBTdHJlYW1Tb3VyY2Uoc3R5bGVzaGVldCk7CitUcmFuc2Zvcm1lciB0cmFuc2Zvcm1lciA9IHRGYWN0b3J5Lm5ld1RyYW5zZm9ybWVyKHN0eWxlc291cmNlKTsKKworU3RyZWFtU291cmNlIHNvdXJjZSA9IG5ldyBTdHJlYW1Tb3VyY2UoZGF0YWZpbGUpOworU3RyZWFtUmVzdWx0IHJlc3VsdCA9IG5ldyBTdHJlYW1SZXN1bHQobmV3IEZpbGVXcml0ZXIob3V0ZmlsZSkpOwordHJhbnNmb3JtZXIudHJhbnNmb3JtKHNvdXJjZSwgcmVzdWx0KTsKKy0tLS0KKworPT09IFRpbmtlclBvcDIgRGF0YSBNaWdyYXRpb24KKworaW1hZ2U6ZGF0YS1taWdyYXRpb24ucG5nW3dpZHRoPTMwMCxmbG9hdD1yaWdodF0gRm9yIHRob3NlIHVzaW5nIFRpbmtlclBvcCAyLngsIG1pZ3JhdGluZyB0byBUaW5rZXJQb3AgMy54IHdpbGwgbWVhbiBhCitudW1iZXIgb2YgcHJvZ3JhbW1pbmcgY2hhbmdlcywgYnV0IG1heSBhbHNvIHJlcXVpcmUgYSBtaWdyYXRpb24gb2YgdGhlIGRhdGEgZGVwZW5kaW5nIG9uIHRoZSBncmFwaCBpbXBsZW1lbnRhdGlvbi4gIEZvcgorZXhhbXBsZSwgdHJ5aW5nIHRvIG9wZW4gYFRpbmtlckdyYXBoYCBkYXRhIGZyb20gVGlua2VyUG9wIDIueCB3aXRoIFRpbmtlclBvcCAzLnggY29kZSB3aWxsIG5vdCB3b3JrLCBob3dldmVyIG9wZW5pbmcgYQorVGlua2VyUG9wMiBgTmVvNGpHcmFwaGAgd2l0aCBhIFRpbmtlclBvcCAzLnggYE5lbzRqR3JhcGhgIHNob3VsZCB3b3JrIHByb3ZpZGVkIHRoZXJlIGFyZW4ndCBOZW80aiB2ZXJzaW9uIGNvbXBhdGliaWxpdHkKK21pc21hdGNoZXMgcHJldmVudGluZyB0aGUgcmVhZC4KKworSWYgc3VjaCBhIHNpdHVhdGlvbiBhcmlzZXMgdGhhdCBhIHBhcnRpY3VsYXIgVGlua2VyUG9wIDIueCBgR3JhcGhgIGNhbiBub3QgYmUgcmVhZCBieSBUaW5rZXJQb3AgMy54LCBhICJsZWdhY3kiIGRhdGEKK21pZ3JhdGlvbiBhcHByb2FjaCBleGlzdHMuICBUaGUgbWlncmF0aW9uIGludm9sdmVzIHdyaXRpbmcgdGhlIFRpbmtlclBvcDIgYEdyYXBoYCB0byBHcmFwaFNPTiwgdGhlbiByZWFkaW5nIGl0IHRvCitUaW5rZXJQb3AgMy54IHdpdGggdGhlIGBMZWdhY3lHcmFwaFNPTlJlYWRlcmAgKGEgbGltaXRlZCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYEdyYXBoUmVhZGVyYCBpbnRlcmZhY2UpLgorCitUaGUgZm9sbG93aW5nIHJlcHJlc2VudHMgYW4gZXhhbXBsZSBtaWdyYXRpb24gb2YgdGhlICJjbGFzc2ljIiB0b3kgZ3JhcGguICBJbiB0aGlzIGV4YW1wbGUsIHRoZSAiY2xhc3NpYyIgZ3JhcGggaXMKK3NhdmVkIHRvIEdyYXBoU09OIHVzaW5nIFRpbmtlclBvcCAyLnguCisKK1tzb3VyY2UsZ3Jvb3Z5XQorLS0tLQorZ3JlbWxpbj4gR3JlbWxpbi52ZXJzaW9uKCkKKz09PjIuNS56CitncmVtbGluPiBncmFwaCA9IFRpbmtlckdyYXBoRmFjdG9yeS5jcmVhdGVUaW5rZXJHcmFwaCgpCis9PT50aW5rZXJncmFwaFt2ZXJ0aWNlczo2IGVkZ2VzOjZdCitncmVtbGluPiBHcmFwaFNPTldyaXRlci5vdXRwdXRHcmFwaChncmFwaCwnL3RtcC90cDIuanNvbicsR3JhcGhTT05Nb2RlLkVYVEVOREVEKQorPT0+bnVsbAorLS0tLQorCitUaGUgYWJvdmUgY29uc29sZSBzZXNzaW9uIHVzZXMgdGhlIGBncmVtbGluLWdyb292eWAgZGlzdHJpYnV0aW9uIGZyb20gVGlua2VyUG9wMi4gIEl0IGlzIGltcG9ydGFudCB0byBnZW5lcmF0ZSB0aGUKK2B0cDIuanNvbmAgZmlsZSB1c2luZyB0aGUgYEVYVEVOREVEYCBtb2RlIGFzIGl0IHdpbGwgaW5jbHVkZSBkYXRhIHR5cGVzIHdoZW4gbmVjZXNzYXJ5IHdoaWNoIHdpbGwgaGVscCBsaW1pdAorImxvc3NpbmVzcyIgb24gdGhlIFRpbmtlclBvcCAzLnggc2lkZSB3aGVuIGltcG9ydGVkLiAgT25jZSBgdHAyLmpzb25gIGlzIGNyZWF0ZWQsIGl0IGNhbiB0aGVuIGJlIGltcG9ydGVkIHRvIGEKK1RpbmtlclBvcCAzLnggYEdyYXBoYC4KKworW3NvdXJjZSxncm9vdnldCistLS0tCitncmVtbGluPiBHcmVtbGluLnZlcnNpb24oKQorPT0+eC55LnoKK2dyZW1saW4+IGdyYXBoID0gVGlua2VyR3JhcGgub3BlbigpCis9PT50aW5rZXJncmFwaFt2ZXJ0aWNlczowIGVkZ2VzOjBdCitncmVtbGluPiByID0gTGVnYWN5R3JhcGhTT05SZWFkZXIuYnVpbGQoKS5jcmVhdGUoKQorPT0+b3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3JhcGhzb24uTGVnYWN5R3JhcGhTT05SZWFkZXJANjQzMzc3MDIKK2dyZW1saW4+IHIucmVhZEdyYXBoKG5ldyBGaWxlSW5wdXRTdHJlYW0oJy90bXAvdHAyLmpzb24nKSwgZ3JhcGgpCis9PT5udWxsCitncmVtbGluPiBnID0gZ3JhcGgudHJhdmVyc2FsKCkKKz09PmdyYXBodHJhdmVyc2Fsc291cmNlW3RpbmtlcmdyYXBoW3ZlcnRpY2VzOjYgZWRnZXM6Nl0sIHN0YW5kYXJkXQorZ3JlbWxpbj4gZy5FKCkKKz09PmVbMTFdWzQtY3JlYXRlZC0+M10KKz09PmVbMTJdWzYtY3JlYXRlZC0+M10KKz09PmVbN11bMS1rbm93cy0+Ml0KKz09PmVbOF1bMS1rbm93cy0+NF0KKz09PmVbOV1bMS1jcmVhdGVkLT4zXQorPT0+ZVsxMF1bNC1jcmVhdGVkLT41XQorLS0tLQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3Mvc3JjL3VwZ3JhZGUvaW5kZXguYXNjaWlkb2MgYi9kb2NzL3NyYy91cGdyYWRlL2luZGV4LmFzY2lpZG9jCmluZGV4IGY4NmVkMDIuLmEyYmYyMGYgMTAwNjQ0Ci0tLSBhL2RvY3Mvc3JjL3VwZ3JhZGUvaW5kZXguYXNjaWlkb2MKKysrIGIvZG9jcy9zcmMvdXBncmFkZS9pbmRleC5hc2NpaWRvYwpAQCAtMzQsNiArMzQsOCBAQAogKuKAgkdyYXBoIExhbmd1YWdlIFByb3ZpZGVyCiAqIEdyYXBoIFBsdWdpbiBQcm92aWRlcgogCitpbmNsdWRlOjpyZWxlYXNlLTMuNC54LmFzY2lpZG9jW10KKwogaW5jbHVkZTo6cmVsZWFzZS0zLjMueC5hc2NpaWRvY1tdCiAKIGluY2x1ZGU6OnJlbGVhc2UtMy4yLngtaW5jdWJhdGluZy5hc2NpaWRvY1tdCkBAIC00MSwzICs0Myw1IEBACiBpbmNsdWRlOjpyZWxlYXNlLTMuMS54LWluY3ViYXRpbmcuYXNjaWlkb2NbXQogCiBpbmNsdWRlOjpyZWxlYXNlLTMuMC54LWluY3ViYXRpbmcuYXNjaWlkb2NbXQorCitpbmNsdWRlOjphcHBlbmRpeC5hc2NpaWRvY1tdCmRpZmYgLS1naXQgYS9kb2NzL3NyYy91cGdyYWRlL3JlbGVhc2UtMy40LnguYXNjaWlkb2MgYi9kb2NzL3NyYy91cGdyYWRlL3JlbGVhc2UtMy40LnguYXNjaWlkb2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2MzYmY3MgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3Mvc3JjL3VwZ3JhZGUvcmVsZWFzZS0zLjQueC5hc2NpaWRvYwpAQCAtMCwwICsxLDE0MzUgQEAKKy8vLy8KK0xpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUgb3IgbW9yZQorY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZSBkaXN0cmlidXRlZCB3aXRoCit0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuCitUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZSB0byBZb3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMAorKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgKK3RoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8vLworCis9IFRpbmtlclBvcCAzLjQuMAorCitpbWFnZTo6aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2FwYWNoZS90aW5rZXJwb3AvbWFzdGVyL2RvY3Mvc3RhdGljL2ltYWdlcy9hdmFudC1ncmVtbGluLnBuZ1t3aWR0aD0yMjVdCisKKypBdmFudC1HcmVtbGluIENvbnN0cnVjdGlvbiAjMyBmb3IgVGhlcmVtaW4gYW5kIEZsb3dlcnMqCisKKz09IFRpbmtlclBvcCAzLjQuNworCisqUmVsZWFzZSBEYXRlOiBOT1QgT0ZGSUNJQUxMWSBSRUxFQVNFRCBZRVQqCisKK1BsZWFzZSBzZWUgdGhlIGxpbms6aHR0cHM6Ly9naXRodWIuY29tL2FwYWNoZS90aW5rZXJwb3AvYmxvYi8zLjQuNy9DSEFOR0VMT0cuYXNjaWlkb2MjcmVsZWFzZS0zLTQtN1tjaGFuZ2Vsb2ddIGZvciBhCitjb21wbGV0ZSBsaXN0IG9mIGFsbCB0aGUgbW9kaWZpY2F0aW9ucyB0aGF0IGFyZSBwYXJ0IG9mIHRoaXMgcmVsZWFzZS4KKworPT09IFVwZ3JhZGluZyBmb3IgVXNlcnMKKworPT09PSBDbGVhciBTY3JlZW4gQ29tbWFuZAorCitHcmVtbGluIENvbnNvbGUgbm93IGhhcyB0aGUgYDpjbHNgIGNvbW1hbmQgdG8gY2xlYXIgdGhlIHNjcmVlbi4gVGhpcyBmZWF0dXJlIGFjdHMgYXMgYW4gYWx0ZXJuYXRpdmUgdG8gcGxhdGZvcm0KK3NwZWNpZmljIGNsZWFyIG9wZXJhdGlvbnMgYW5kIHByb3ZpZGVzIGEgY29tbW9uIHdheSB0byBwZXJmb3JtIHRoYXQgZnVuY3Rpb24uCisKK2xpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMjM1N1tUSU5LRVJQT1AtMjM1N10KKworPT0gVGlua2VyUG9wIDMuNC42CisKKypSZWxlYXNlIERhdGU6IEZlYnJ1YXJ5IDIwLCAyMDIwKgorCitQbGVhc2Ugc2VlIHRoZSBsaW5rOmh0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvdGlua2VycG9wL2Jsb2IvMy40LjYvQ0hBTkdFTE9HLmFzY2lpZG9jI3JlbGVhc2UtMy00LTZbY2hhbmdlbG9nXSBmb3IgYQorY29tcGxldGUgbGlzdCBvZiBhbGwgdGhlIG1vZGlmaWNhdGlvbnMgdGhhdCBhcmUgcGFydCBvZiB0aGlzIHJlbGVhc2UuCisKKz09PSBVcGdyYWRpbmcgZm9yIFVzZXJzCisKKz09PT0gZHJvcCgpIFByb3BlcnRpZXMKKworSW4gMy40LjUgdGhlIGVxdWFsaXR5IG9mIHRoZSBgUHJvcGVydHlgIG9iamVjdCBjaGFuZ2VkIHRvIGFsbG93IGxhbmd1YWdlIGZlYXR1cmVzIGxpa2UgYGRlZHVwKClgIHRvIHdvcmsgbW9yZQorY29uc2lzdGVudGx5LiBBbiB1bm5vdGljZWQgc2lkZS1lZmZlY3Qgb2YgdGhhdCBjaGFuZ2Ugd2FzIHRoYXQgY2FsbGluZyBgZHJvcCgpYCBvbiBwcm9wZXJ0aWVzIHRoYXQgaGFkIHRoZSBzYW1lIHZhbHVlcword291bGQgbm90IHByb3Blcmx5IHJlbW92ZSBhbGwgdGhlaXIgaW5zdGFuY2VzLiBUaGlzIHByb2JsZW0gYWZmZWN0ZWQgZWRnZSBhbmQgbWV0YSBwcm9wZXJ0eSBpbnN0YW5jZXMgYnV0IG5vdCB0aGUKK3Byb3BlcnRpZXMgb2YgdmVydGljZXMgYXMgdGhlaXIgZXF1YWxpdHkgZGVmaW5pdGlvbnMgaGFkIG5vdCBjaGFuZ2VkLgorCitUaGlzIGlzc3VlIGlzIG5vdyByZXNvbHZlZCB3aXRoIHRoZSBzaWRlLWVmZmVjdCBiZWluZyB0aGF0IHRoZSBpbmNsdXNpb24gb2YgYGRyb3AoKWAgd2lsbCBkaXNhYmxlIGBMYXp5QmFycmllclN0cmF0ZWd5YAord2hpY2ggcHJldmVudHMgYXV0b21hdGljIGJ1bGtpbmcuIEluIG1vc3QgY29tbW9uIGNhc2VzLCB0aGUgaW1wYWN0IG9mIHRoYXQgb3B0aW1pemF0aW9uIGxvc3Mgc2hvdWxkIGJlIG1pbmltYWwgYW5kCitjb3VsZCBiZSBhZGRlZCBiYWNrIG1hbnVhbGx5IHdpdGggYGJhcnJpZXIoKWAgc3RlcHMgaW4gdGhlIGFwcHJvcHJpYXRlIHBsYWNlcy4KKworU2VlOiBsaW5rOmh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvVElOS0VSUE9QLTIzMzhbVElOS0VSUE9QLTIzMzhdCisKKz09IFRpbmtlclBvcCAzLjQuNQorCisqUmVsZWFzZSBEYXRlOiBGZWJydWFyeSAzLCAyMDIwKgorCitQbGVhc2Ugc2VlIHRoZSBsaW5rOmh0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvdGlua2VycG9wL2Jsb2IvMy40LjUvQ0hBTkdFTE9HLmFzY2lpZG9jI3JlbGVhc2UtMy00LTVbY2hhbmdlbG9nXSBmb3IgYQorY29tcGxldGUgbGlzdCBvZiBhbGwgdGhlIG1vZGlmaWNhdGlvbnMgdGhhdCBhcmUgcGFydCBvZiB0aGlzIHJlbGVhc2UuCisKK1dBUk5JTkc6IEEgbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC0yMzM4W2J1Z10gd2FzIG5vdGVkIGluIDMuNC41IHNvb24gYWZ0ZXIgcmVsZWFzZSBhbmQKK3dhcyBxdWlja2x5IHBhdGNoZWQuIFVzZXJzIGFuZCBwcm92aWRlcnMgc2hvdWxkIGF2b2lkIHZlcnNpb24gMy40LjUgYW5kIHNob3VsZCBpbnN0ZWFkIHByZWZlciB1c2FnZSBvZiAzLjQuNi4KKworPT09IFVwZ3JhZGluZyBmb3IgVXNlcnMKKworPT09PSBieShTdHJpbmcpIE1vZHVsYXRvcgorCitJdCBpcyBxdWl0ZSBjb21tb24gdG8gdXNlIHRoZSBgYnkoU3RyaW5nKWAgbW9kdWxhdG9yIHdoZW4gZG9pbmcgc29tZSBmb3Igb2Ygc2VsZWN0aW9uIG9wZXJhdGlvbiB3aGVyZSB0aGUgYFN0cmluZ2AgaXMKK3RoZSBrZXkgdG8gdGhlIHZhbHVlIG9mIHRoZSBjdXJyZW50IGBUcmF2ZXJzZXJgLCBkZW1vbnN0cmF0ZWQgYXMgZm9sbG93czoKKworW3NvdXJjZSx0ZXh0XQorLS0tLQorZ3JlbWxpbj4gZy5WKCkucHJvamVjdCgnbmFtZScpLmJ5KCduYW1lJykKKz09PltuYW1lOm1hcmtvXQorPT0+W25hbWU6dmFkYXNdCis9PT5bbmFtZTpsb3BdCis9PT5bbmFtZTpqb3NoXQorPT0+W25hbWU6cmlwcGxlXQorPT0+W25hbWU6cGV0ZXJdCitncmVtbGluPiBnLlYoKS5vcmRlcigpLmJ5KCduYW1lJykudmFsdWVzKCduYW1lJykKKz09Pmpvc2gKKz09PmxvcAorPT0+bWFya28KKz09PnBldGVyCis9PT5yaXBwbGUKKz09PnZhZGFzCistLS0tCisKK09mIGNvdXJzZSwgdGhpcyBhcHByb2FjaCB1c3VhbGx5IG9ubHkgd29ya3Mgd2hlbiB0aGUgY3VycmVudCBgVHJhdmVyc2VyYCBpcyBhbiBgRWxlbWVudGAuIElmIGl0IGlzIG5vdCBhbiBlbGVtZW50LCB0aGUKK2Vycm9yIGlzIHN3aWZ0IGFuZCBzZXZlcmU6CisKK1tzb3VyY2UsdGV4dF0KKy0tLS0KK2dyZW1saW4+IGcuVigpLnZhbHVlTWFwKCkucHJvamVjdCgneCcpLmJ5KCduYW1lJykKK2phdmEudXRpbC5MaW5rZWRIYXNoTWFwIGNhbm5vdCBiZSBjYXN0IHRvIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkVsZW1lbnQKK1R5cGUgJzpoZWxwJyBvciAnOmgnIGZvciBoZWxwLgorRGlzcGxheSBzdGFjayB0cmFjZT8gW3lOXW4KKy0tLS0KKworYW5kIHdoaWxlIGl0IGlzIHBlcmhhcHMgc3RyYWlnaHRmb3J3YXJkIHRvIHNlZSB0aGUgcHJvYmxlbSBpbiB0aGUgYWJvdmUgZXhhbXBsZSwgaXQgaXMgbm90IGFsd2F5cyBjbGVhciBleGFjdGx5IHdoZXJlCit0aGUgbWlzdGFrZSBpcy4gVGhlIGFib3ZlIGV4YW1wbGUgaXMgdGhlIHR5cGljYWwgbWlzdXNlIG9mIGBieShTdHJpbmcpYCBhbmQgY29tZXMgd2hlbiBvbmUgdHJpZXMgdG8gdHJlYXQgYSBgTWFwYCB0aGUKK3NhbWUgd2F5IGFzIGFuIGBFbGVtZW50YCAod2hpY2ggaXMgcXVpdGUgcmVhc29uYWJsZSkuCisKK0luIDMuNC41LCB0aGUgaXNzdWUgb2YgdXNpbmcgYGJ5KFN0cmluZylgIG9uIGEgYE1hcGAgYW5kIHRoZSBlcnJvciBtZXNzYWdpbmcgaGF2ZSBiZWVuIHJlc29sdmVkIGFzIGZvbGxvd3M6CisKK1tzb3VyY2UsdGV4dF0KKy0tLS0KK2dyZW1saW4+IGcuVigpLnZhbHVlTWFwKCkucHJvamVjdCgneCcpLmJ5KCduYW1lJykKKz09Plt4OlttYXJrb11dCis9PT5beDpbdmFkYXNdXQorPT0+W3g6W2xvcF1dCis9PT5beDpbam9zaF1dCis9PT5beDpbcmlwcGxlXV0KKz09Plt4OltwZXRlcl1dCitncmVtbGluPiBnLlYoKS5lbGVtZW50TWFwKCkub3JkZXIoKS5ieSgnbmFtZScpCis9PT5baWQ6NCxsYWJlbDpwZXJzb24sbmFtZTpqb3NoLGFnZTozMl0KKz09PltpZDozLGxhYmVsOnNvZnR3YXJlLG5hbWU6bG9wLGxhbmc6amF2YV0KKz09PltpZDoxLGxhYmVsOnBlcnNvbixuYW1lOm1hcmtvLGFnZToyOV0KKz09PltpZDo2LGxhYmVsOnBlcnNvbixuYW1lOnBldGVyLGFnZTozNV0KKz09PltpZDo1LGxhYmVsOnNvZnR3YXJlLG5hbWU6cmlwcGxlLGxhbmc6amF2YV0KKz09PltpZDoyLGxhYmVsOnBlcnNvbixuYW1lOnZhZGFzLGFnZToyN10KK2dyZW1saW4+IGcuVigpLnZhbHVlcygnbmFtZScpLnByb2plY3QoJ3gnKS5ieSgnbmFtZScpCitUaGUgYnkoIm5hbWUiKSBtb2R1bGF0b3IgY2FuIG9ubHkgYmUgYXBwbGllZCB0byBhIHRyYXZlcnNlciB0aGF0IGlzIGFuIEVsZW1lbnQgb3IgYSBNYXAgLSBpdCBpcyBiZWluZyBhcHBsaWVkIHRvIFttYXJrb10gYSBTdHJpbmcgY2xhc3MgaW5zdGVhZAorVHlwZSAnOmhlbHAnIG9yICc6aCcgZm9yIGhlbHAuCitEaXNwbGF5IHN0YWNrIHRyYWNlPyBbeU5dbgorLS0tLQorCitTZWU6IGxpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMjMxNFtUSU5LRVJQT1AtMjMxNF0KKworPT09PSBoYXNLZXkoKSBTdGVwIGFuZCBoYXNWYWx1ZSgpIFN0ZXAKKworUHJldmlvdXNseSwgYGhhc0tleSgpYC1zdGVwIGFuZCBgaGFzVmFsdWUoKWAtc3RlcCBvbmx5IGFwcGxpZWQgdG8gdmVydGV4IHByb3BlcnRpZXMuIEluIG9yZGVyIHRvIHN1cHBvcnQgbW9yZQorZ2VuZXJhbGl6ZWQgc2NlbmFyaW9zLCB0aGUgYmVoYXZpb3Igb2YgdGhlc2Ugc3RlcHMgd2VyZSBtb2RpZmllZCB0byBhbGxvdyB0aGVtIHRvIGJlIGFwcGxpZWQgdG8gYm90aCBlZGdlIHByb3BlcnRpZXMKK2FuZCBtZXRhLXByb3BlcnRpZXMuCisKK1RoZSBvcmlnaW5hbCBiZWhhdmlvciBpcyBkZW1vbnN0cmF0ZWQgYXMgZm9sbG93czoKKworW3NvdXJjZSxncm9vdnldCistLS0tCitncmVtbGluPiBncmFwaCA9IFRpbmtlckZhY3RvcnkuY3JlYXRlVGhlQ3JldygpCis9PT50aW5rZXJncmFwaFt2ZXJ0aWNlczo2IGVkZ2VzOjE0XQorZ3JlbWxpbj4gZyA9IGdyYXBoLnRyYXZlcnNhbCgpCis9PT5ncmFwaHRyYXZlcnNhbHNvdXJjZVt0aW5rZXJncmFwaFt2ZXJ0aWNlczo2IGVkZ2VzOjE0XSwgc3RhbmRhcmRdCitncmVtbGluPiBnLkUoKS5wcm9wZXJ0aWVzKCkuaGFzS2V5KCdzaW5jZScpCis9PT5UaW5rZXJQcm9wZXJ0eSBjYW5ub3QgYmUgY2FzdCB0byBFbGVtZW50CitncmVtbGluPiBnLlYoKS5wcm9wZXJ0aWVzKCJsb2NhdGlvbiIpLnByb3BlcnRpZXMoKS5oYXNLZXkoInN0YXJ0VGltZSIpCis9PT5UaW5rZXJQcm9wZXJ0eSBjYW5ub3QgYmUgY2FzdCB0byBFbGVtZW50CitncmVtbGluPiBnLkUoKS5wcm9wZXJ0aWVzKCkuaGFzVmFsdWUoMjAxMCkKKz09PlRpbmtlclByb3BlcnR5IGNhbm5vdCBiZSBjYXN0IHRvIEVsZW1lbnQKK2dyZW1saW4+IGcuVigpLnByb3BlcnRpZXMoImxvY2F0aW9uIikucHJvcGVydGllcygpLmhhc1ZhbHVlKDIwMDUpCis9PT5UaW5rZXJQcm9wZXJ0eSBjYW5ub3QgYmUgY2FzdCB0byBFbGVtZW50CistLS0tCisKK1RoZSBuZXcgYmVoYXZpb3Igb2YgYGhhc0tleSgpYCB3aXRoIGVkZ2UgcHJvcGVydHkgY2FuIGJlIHNlZW4gYXM6CisKK1tzb3VyY2UsZ3Jvb3Z5XQorLS0tLQorZ3JlbWxpbj4gZy5FKCkucHJvcGVydGllcygpLmhhc0tleSgnc2luY2UnKQorPT0+cFtzaW5jZS0+MjAwOV0KKz09PnBbc2luY2UtPjIwMTBdCis9PT5wW3NpbmNlLT4yMDEwXQorPT0+cFtzaW5jZS0+MjAxMV0KKz09PnBbc2luY2UtPjIwMTJdCistLS0tCisKK1NpbWlsYXIgYmVoYXZpb3Igb2YgZm9yIGBoYXNLZXkoKWAgY2FuIGJlIHNlZW4gd2l0aCBtZXRhLXByb3BlcnRpZXM6CisKK1tzb3VyY2UsZ3Jvb3Z5XQorLS0tLQorZ3JlbWxpbj4gZy5WKCkucHJvcGVydGllcygpLmhhc0tleSgnbG9jYXRpb24nKS5wcm9wZXJ0aWVzKCkuaGFzS2V5KCdzdGFydFRpbWUnKQorPT0+cFtzdGFydFRpbWUtPjE5OTddCis9PT5wW3N0YXJ0VGltZS0+MjAwMV0KKz09PnBbc3RhcnRUaW1lLT4yMDA0XQorPT0+cFtzdGFydFRpbWUtPjIwMDRdCis9PT5wW3N0YXJ0VGltZS0+MjAwNV0KKz09PnBbc3RhcnRUaW1lLT4yMDA1XQorPT0+cFtzdGFydFRpbWUtPjE5OTBdCis9PT5wW3N0YXJ0VGltZS0+MjAwMF0KKz09PnBbc3RhcnRUaW1lLT4yMDA2XQorPT0+cFtzdGFydFRpbWUtPjIwMDddCis9PT5wW3N0YXJ0VGltZS0+MjAxMV0KKz09PnBbc3RhcnRUaW1lLT4yMDE0XQorPT0+cFtzdGFydFRpbWUtPjE5ODJdCis9PT5wW3N0YXJ0VGltZS0+MjAwOV0KKy0tLS0KKworVGhlIG5ldyBiZWhhdmlvciBmb3IgYGhhc1ZhbHVlKClgIHdpdGggZWRnZSBwcm9wZXJ0eSBpcyBhcyBmb2xsb3dzOgorCitbc291cmNlLGdyb292eV0KKy0tLS0KK2dyZW1saW4+IGcuRSgpLnByb3BlcnRpZXMoKS5oYXNWYWx1ZSgyMDEwKQorPT0+cFtzaW5jZS0+MjAxMF0KKz09PnBbc2luY2UtPjIwMTBdCistLS0tCisKK2FuZCBzaW1pbGFybHkgd2l0aCBgaGFzVmFsdWUoKWAgZm9yIG1ldGEtcHJvcGVydGllczoKKworW3NvdXJjZSxncm9vdnldCistLS0tCitncmVtbGluPiBnLlYoKS5wcm9wZXJ0aWVzKCkuaGFzS2V5KCdsb2NhdGlvbicpLnByb3BlcnRpZXMoKS5oYXNWYWx1ZSgyMDA1KQorPT0+cFtlbmRUaW1lLT4yMDA1XQorPT0+cFtlbmRUaW1lLT4yMDA1XQorPT0+cFtzdGFydFRpbWUtPjIwMDVdCis9PT5wW3N0YXJ0VGltZS0+MjAwNV0KKy0tLS0KKworbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC0xNzMzW1RJTktFUlBPUC0xNzMzXQorCis9PT09IFByb3BlcnRpZXMgRXF1YWxpdHkKKworVGhlcmUgd2FzIHNvbWUgaW5jb25zaXN0ZW5jeSBpbiB0ZXJtcyBvZiBgUHJvcGVydHlgIGVxdWFsaXR5IGluIGVhcmxpZXIgdmVyc2lvbnMgb2YgR3JlbWxpbi4gRXF1YWxpdHkgaXMgbm93CitkZWZpbmVkIGFzIGZvbGxvd3M6IHR3byBwcm9wZXJ0aWVzIGFyZSBlcXVhbCBvbmx5IGlmIHRoZWlyIGtleSBhbmQgdmFsdWUgYXJlIGVxdWFsLCBldmVuIGlmIHRoZWlyIHBhcmVudCBlbGVtZW50cyBhcmUKK25vdCBlcXVhbC4gSXQgbWFrZXMgc2Vuc2Ugd2hlbiBjb21wYXJpbmcgcHJvcGVydGllcyByZWdhcmRsZXNzIG9mIHBhcmVudCBlbGVtZW50cyB0byBqdXN0IGZvY3VzIG9uIHRoZSBwcm9wZXJ0eSBpdHNlbGYKK2FzIGl0IHlpZWxkcyBtb3JlIHVuaWZvcm0gYW5kIGNvbmNpc2UgcmVzdWx0cyB0byByZWFzb24gYWJvdXQuIFRoZSBiZW5lZml0IG9mIHRoaXMgY2hhbmdlIGlzIHRoYXQgdGhlIGJlaGF2aW9yIG9mCitwcm9wZXJ0eSBjb21wYXJpc29uIGFuZCBgZGVkdXAoKWAtc3RlcCBhcmUgcHJlZGljdGFibGUsIGFuZCBpdCB3aWxsIG5vdCBhZmZlY3QgdGhlIHJlc3VsdCBpZiB0aGUgcHJvcGVydHkgaXMgZGV0YWNoZWQKK2Zyb20gdGhlIHBhcmVudCBlbGVtZW50LgorCitOT1RFOiBUaGUgInByb3BlcnR5IiBoZXJlIHJlZmVyIHRvIGVkZ2UgcHJvcGVydGllcyBhbmQgbWV0YS1wcm9wZXJ0aWVzLCB0aHVzIGV4Y2x1ZGluZyB2ZXJ0ZXggcHJvcGVydHkuCisKK1RoZSBvbGQgYmVoYXZpb3IgY2FuIGJlIHNob3duIHVzaW5nICJUaGUgQ3JldyIgdG95IGdyYXBoIGFzIGZvbGxvd3M6CisKK1tzb3VyY2UsZ3Jvb3Z5XQorLS0tLQorZ3JlbWxpbj4gZy5FKCkucHJvcGVydGllcygpLmNvdW50KCkKKz09PjEzCitncmVtbGluPiBnLkUoKS5wcm9wZXJ0aWVzKCkKKz09PnBbc2luY2UtPjIwMDldCis9PT5wW3NpbmNlLT4yMDEwXQorPT0+cFtza2lsbC0+NF0KKz09PnBbc2tpbGwtPjVdCis9PT5wW3NpbmNlLT4yMDEwXQorPT0+cFtzaW5jZS0+MjAxMV0KKz09PnBbc2tpbGwtPjVdCis9PT5wW3NraWxsLT40XQorPT0+cFtzaW5jZS0+MjAxMl0KKz09PnBbc2tpbGwtPjNdCis9PT5wW3NraWxsLT4zXQorPT0+cFtza2lsbC0+NV0KKz09PnBbc2tpbGwtPjNdCitncmVtbGluPiBnLkUoKS5wcm9wZXJ0aWVzKCkuZGVkdXAoKS5jb3VudCgpCis9PT4xMworZ3JlbWxpbj4gZy5FKCkuZGVkdXAoKS5wcm9wZXJ0aWVzKCkKKz09PnBbc2luY2UtPjIwMDldCis9PT5wW3NpbmNlLT4yMDEwXQorPT0+cFtza2lsbC0+NF0KKz09PnBbc2tpbGwtPjVdCis9PT5wW3NpbmNlLT4yMDEwXQorPT0+cFtzaW5jZS0+MjAxMV0KKz09PnBbc2tpbGwtPjVdCis9PT5wW3NraWxsLT40XQorPT0+cFtzaW5jZS0+MjAxMl0KKz09PnBbc2tpbGwtPjNdCis9PT5wW3NraWxsLT4zXQorPT0+cFtza2lsbC0+NV0KKz09PnBbc2tpbGwtPjNdCistLS0tCisKK1RoZSBuZXcgbW9yZSBjb25zaXN0ZW50IGJlaGF2aW9yIGlzIGRlbW9uc3RyYXRlZCBiZWxvdzoKKworW3NvdXJjZSxncm9vdnldCistLS0tCitncmVtbGluPiBnLkUoKS5wcm9wZXJ0aWVzKCkuY291bnQoKQorPT0+MTMKK2dyZW1saW4+IGcuRSgpLnByb3BlcnRpZXMoKQorPT0+cFtzaW5jZS0+MjAwOV0KKz09PnBbc2luY2UtPjIwMTBdCis9PT5wW3NraWxsLT40XQorPT0+cFtza2lsbC0+NV0KKz09PnBbc2luY2UtPjIwMTBdCis9PT5wW3NpbmNlLT4yMDExXQorPT0+cFtza2lsbC0+NV0KKz09PnBbc2tpbGwtPjRdCis9PT5wW3NpbmNlLT4yMDEyXQorPT0+cFtza2lsbC0+M10KKz09PnBbc2tpbGwtPjNdCis9PT5wW3NraWxsLT41XQorPT0+cFtza2lsbC0+M10KK2dyZW1saW4+IGcuRSgpLnByb3BlcnRpZXMoKS5kZWR1cCgpLmNvdW50KCkKKz09PjcKK2dyZW1saW4+IGcuRSgpLnByb3BlcnRpZXMoKS5kZWR1cCgpCis9PT5wW3NpbmNlLT4yMDA5XQorPT0+cFtzaW5jZS0+MjAxMF0KKz09PnBbc2tpbGwtPjRdCis9PT5wW3NraWxsLT41XQorPT0+cFtzaW5jZS0+MjAxMV0KKz09PnBbc2luY2UtPjIwMTJdCis9PT5wW3NraWxsLT4zXQorLS0tLQorCitTZWU6IGxpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMjMxOFtUSU5LRVJQT1AtMjMxOF0KKworPT09IFVwZ3JhZGluZyBmb3IgUHJvdmlkZXJzCisKKz09PT0gR3JhcGggRHJpdmVyIFByb3ZpZGVycworCis9PT09PSBHcmFwaEJpbmFyeSBBUEkgQ2hhbmdlCisKK0luIEdyYXBoQmluYXJ5IHNlcmlhbGl6YXRpb24sIEphdmEgYEdyYXBoQmluYXJ5UmVhZGVyYCBhbmQgYEdyYXBoQmluYXJ5V3JpdGVyYCwgYWxvbmcgd2l0aCBgVHlwZVNlcmlhbGl6ZXI8VD5gCitpbnRlcmZhY2Ugbm93IHRha2UgYSBgQnVmZmVyYCBpbnN0YW5jZSBpbnN0ZWFkIG9mIE5ldHR5J3MgYEJ5dGVCdWZgLCB0aGF0IHdheSB3ZSBhdm9pZCBleHBvc2luZyBOZXR0eSdzIEFQSSBpbiBvdXIgb3duCitwdWJsaWMgQVBJLgorCitVc2luZyBvdXIgb3duIGBCdWZmZXJgIGludGVyZmFjZSwgd3JhcHBpbmcgTmV0dHkncyBidWZmZXIgQVBJLCBhbGxvd2VkIHVzIHRvIG1vdmUgYFR5cGVTZXJpYWxpemVyPFQ+YCBpbXBsZW1lbnRhdGlvbnMsCit0aGUgcmVhZGVyIGFuZCB0aGUgd3JpdGVyIHRvIGBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnlgIHBhY2thZ2UgaW4gYGdyZW1saW4tY29yZWAuCisKK0FkZGl0aW9uYWxseSwgYEdyYXBoQmluYXJ5UmVhZGVyYCBhbmQgYEdyYXBoQmluYXJ5V3JpdGVyYCBtZXRob2RzIG5vdyB0aHJvdyBhbiBqYXZhJ3MgYElPRXhjZXB0aW9uYCwgaW5zdGVhZCBvZiBvdXIKK293biBgU2VyaWFsaXphdGlvbkV4Y2VwdGlvbmAuCisKK1NlZTogbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC0yMzA1W1RJTktFUlBPUC0yMzA1XQorCis9PSBUaW5rZXJQb3AgMy40LjQKKworKlJlbGVhc2UgRGF0ZTogT2N0b2JlciAxNCwgMjAxOSoKKworUGxlYXNlIHNlZSB0aGUgbGluazpodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL3RpbmtlcnBvcC9ibG9iLzMuNC40L0NIQU5HRUxPRy5hc2NpaWRvYyNyZWxlYXNlLTMtNC00W2NoYW5nZWxvZ10gZm9yIGEgY29tcGxldGUgbGlzdCBvZiBhbGwgdGhlIG1vZGlmaWNhdGlvbnMgdGhhdCBhcmUgcGFydCBvZiB0aGlzIHJlbGVhc2UuCisKKz09PSBVcGdyYWRpbmcgZm9yIFVzZXJzCisKKz09PT0gUHl0aG9uIEdyYXBoQmluYXJ5CisKK1RoZXJlIGlzIG5vdyBzdXBwb3J0IGZvciBHcmFwaEJpbmFyeSBpbiBQeXRob24uIEFzIHdpdGggSmF2YSwgaXQgcmVtYWlucyBhIHdvcmtpbmcgYnV0IGV4cGVyaW1lbnRhbCBmb3JtYXQgdGhhdCBpcworc3RpbGwgdW5kZXIgZXZhbHVhdGlvbi4gVGhpcyBuZXcgc2VyaWFsaXplciBjYW4gYmUgdXNlZCBieSBmaXJzdCBlbnN1cmluZyB0aGF0IGl0IGlzIGF2YWlsYWJsZSBvbiB0aGUgc2VydmVyIGFuZCB0aGVuCitjb25maWd1cmluZyB0aGUgY29ubmVjdGlvbiBhcyBmb2xsb3dzOgorCitbc291cmNlLHB5dGhvbl0KKy0tLS0KK2Zyb20gZ3JlbWxpbl9weXRob24uZHJpdmVyLnNlcmlhbGl6ZXIgaW1wb3J0IEdyYXBoQmluYXJ5U2VyaWFsaXplcnNWMQorZ3JlbWxpbl9zZXJ2ZXJfdXJsID0gIndzOi8vMTcyLjE3LjAuMjo0NTk0MC9ncmVtbGluIgorcmVtb3RlX2Nvbm4gPSBEcml2ZXJSZW1vdGVDb25uZWN0aW9uKGdyZW1saW5fc2VydmVyX3VybCwgJ2cnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2Vfc2VyaWFsaXplcj1HcmFwaEJpbmFyeVNlcmlhbGl6ZXJzVjEoKSkKK2cgPSBHcmFwaCgpLnRyYXZlcnNhbCgpLndpdGhSZW1vdGUocmVtb3RlX2Nvbm4pCistLS0tCisKK2xpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMjI3OVtUSU5LRVJQT1AtMjI3OV0KKworPT09PSBlbGVtZW50TWFwKCkgU3RlcAorCitTaW5jZSBncmFwaCBlbGVtZW50cyAoaS5lLiBgVmVydGV4YCwgYEVkZ2VgLCBhbmQgYFZlcnRleFByb3BlcnR5YCkgYXJlIHJldHVybmVkIGZyb20gcmVtb3RlIHNvdXJjZXMgYXMgcmVmZXJlbmNlcworKGkuZS4gd2l0aG91dCBwcm9wZXJ0aWVzKSwgb25lIG9mIHRoZSBtb3JlIGNvbW1vbiBuZWVkcyBmb3IgR3JlbWxpbiB1c2VycyBpcyB0aGUgYWJpbGl0eSB0byBlYXNpbHkgcmV0dXJuIGEgYE1hcGAKK3JlcHJlc2VudGF0aW9uIG9mIHRoZSBlbGVtZW50cyB0aGF0IHRoZXkgYXJlIHF1ZXJ5aW5nLiBUeXBpY2FsbHksIHN1Y2ggdHJhbnNmb3JtYXRpb25zIGFyZSBoYW5kbGVkIGJ5IGB2YWx1ZU1hcCgpYDoKKworW3NvdXJjZSx0ZXh0XQorLS0tLQorZ3JlbWxpbj4gZy5WKCkuaGFzKCdwZXJzb24nLCduYW1lJywnbWFya28nKS52YWx1ZU1hcCh0cnVlKQorPT0+W2lkOjEsbGFiZWw6cGVyc29uLG5hbWU6W21hcmtvXSxhZ2U6WzI5XV0KK2dyZW1saW4+IGcuVigpLmhhcygncGVyc29uJywnbmFtZScsJ21hcmtvJykudmFsdWVNYXAoKS5ieSh1bmZvbGQoKSkKKz09PltuYW1lOm1hcmtvLGFnZToyOV0KKy0tLS0KKworb3IgYnkgd2F5IG9mIGBwcm9qZWN0KClgOgorCitbc291cmNlLHRleHRdCistLS0tCitncmVtbGluPiBnLlYoKS5oYXMoJ3BlcnNvbicsJ25hbWUnLCdtYXJrbycpLgorLi4uLi4uMT4gICBwcm9qZWN0KCduYW1lJywnYWdlJywndmlkJywndmxhYmVsJykuCisuLi4uLi4yPiAgICAgYnkoJ25hbWUnKS4KKy4uLi4uLjM+ICAgICBieSgnYWdlJykuCisuLi4uLi40PiAgICAgYnkoaWQpLgorLi4uLi4uNT4gICAgIGJ5KGxhYmVsKQorPT0+W25hbWU6bWFya28sYWdlOjI5LHZpZDoxLHZsYWJlbDpwZXJzb25dCistLS0tCisKK1doaWxlIGB2YWx1ZU1hcCgpYCB3b3JrcyByZWFzb25hYmx5IHdlbGwgZm9yIGBWZXJ0ZXhgIGFuZCBgVmVydGV4UHJvcGVydHlgIHRyYW5zZm9ybWF0aW9ucyBpdCBkb2VzIGxlc3Mgd2VsbCBmb3IgYEVkZ2VgCithcyBpdCBmYWlscyB0byBpbmNsdWRlIGluY2lkZW50IHZlcnRpY2VzOgorCitbc291cmNlLHRleHRdCistLS0tCitncmVtbGluPiBnLkUoMTEpLnZhbHVlTWFwKHRydWUpCis9PT5baWQ6MTEsbGFiZWw6Y3JlYXRlZCx3ZWlnaHQ6MC40XQorLS0tLQorCitUaGlzIGxpbWl0YXRpb24gZm9yY2VzIGEgZmFpcmx5IHZlcmJvc2UgdXNlIG9mIGBwcm9qZWN0KClgIGZvciB3aGF0IGlzIGEgcmVhc29uYWJseSBjb21tb24gcmVxdWlyZW1lbnQ6CisKK1tzb3VyY2UsdGV4dF0KKy0tLS0KK2dyZW1saW4+IGcuRSgxMikudW5pb24odmFsdWVNYXAodHJ1ZSksCisuLi4uLi4xPiAgICAgICAgICAgICAgIHByb2plY3QoJ2luVicsJ291dFYnLCdpblZMYWJlbCcsJ291dFZMYWJlbCcpLgorLi4uLi4uMj4gICAgICAgICAgICAgICAgIGJ5KGluVigpLmlkKCkpLgorLi4uLi4uMz4gICAgICAgICAgICAgICAgIGJ5KG91dFYoKS5pZCgpKS4KKy4uLi4uLjQ+ICAgICAgICAgICAgICAgICBieShpblYoKS5sYWJlbCgpKS4KKy4uLi4uLjU+ICAgICAgICAgICAgICAgICBieShvdXRWKCkubGFiZWwoKSkpLnVuZm9sZCgpLgorLi4uLi4uNj4gICAgICAgICAgICAgICBncm91cCgpLgorLi4uLi4uNz4gICAgICAgICAgICAgICAgIGJ5KGtleXMpLgorLi4uLi4uOD4gICAgICAgICAgICAgICAgIGJ5KHNlbGVjdCh2YWx1ZXMpKQorPT0+W2luVjozLGlkOjEyLGluVkxhYmVsOnNvZnR3YXJlLHdlaWdodDowLjIsb3V0VkxhYmVsOnBlcnNvbixsYWJlbDpjcmVhdGVkLG91dFY6Nl0KKy0tLS0KKworQnkgaW50cm9kdWNpbmcgYGVsZW1lbnRNYXAoKWAtc3RlcCwgdGhlcmUgaXMgbm93IGEgc2luZ2xlIHN0ZXAgdGhhdCBjb3ZlcnMgdGhlIG1vc3QgY29tbW9uIHRyYW5zZm9ybWF0aW9uIHJlcXVpcmVtZW50cworZm9yIGFsbCB0aHJlZSBncmFwaCBlbGVtZW50czoKKworW3NvdXJjZSx0ZXh0XQorLS0tLQorZ3JlbWxpbj4gZy5WKCkuaGFzKCdwZXJzb24nLCduYW1lJywnbWFya28nKS5lbGVtZW50TWFwKCkKKz09PltpZDoxLGxhYmVsOnBlcnNvbixuYW1lOm1hcmtvLGFnZToyOV0KK2dyZW1saW4+IGcuVigpLmhhcygncGVyc29uJywnbmFtZScsJ21hcmtvJykuZWxlbWVudE1hcCgnbmFtZScpCis9PT5baWQ6MSxsYWJlbDpwZXJzb24sbmFtZTptYXJrb10KK2dyZW1saW4+IGcuVigpLmhhcygncGVyc29uJywnbmFtZScsJ21hcmtvJykucHJvcGVydGllcygnbmFtZScpLmVsZW1lbnRNYXAoKQorPT0+W2lkOjAsa2V5Om5hbWUsdmFsdWU6bWFya29dCitncmVtbGluPiBnLkUoMTEpLmVsZW1lbnRNYXAoKQorPT0+W2lkOjExLGxhYmVsOmNyZWF0ZWQsSU46W2lkOjMsbGFiZWw6c29mdHdhcmVdLE9VVDpbaWQ6NCxsYWJlbDpwZXJzb25dLHdlaWdodDowLjRdCistLS0tCisKK1NlZTogbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC0yMjg0W1RJTktFUlBPUC0yMjg0XSwKK2xpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuNC40L3JlZmVyZW5jZS8jZWxlbWVudG1hcC1zdGVwW1JlZmVyZW5jZSBEb2N1bWVudGF0aW9uXQorCis9PSBUaW5rZXJQb3AgMy40LjMKKworKlJlbGVhc2UgRGF0ZTogQXVndXN0IDUsIDIwMTkqCisKK1BsZWFzZSBzZWUgdGhlIGxpbms6aHR0cHM6Ly9naXRodWIuY29tL2FwYWNoZS90aW5rZXJwb3AvYmxvYi8zLjQuMy9DSEFOR0VMT0cuYXNjaWlkb2MjcmVsZWFzZS0zLTQtM1tjaGFuZ2Vsb2ddIGZvciBhIGNvbXBsZXRlIGxpc3Qgb2YgYWxsIHRoZSBtb2RpZmljYXRpb25zIHRoYXQgYXJlIHBhcnQgb2YgdGhpcyByZWxlYXNlLgorCis9PT0gVXBncmFkaW5nIGZvciBVc2VycworCis9PT09IERlcHJlY2F0ZWQgc3RvcmUoKQorCitUaGUgYHN0b3JlKClgLXN0ZXAgYW5kIGBhZ2dyZWdhdGUoKWAtc3RlcCBkbyB0aGUgc2FtZSB0aGluZyBpbiBkaWZmZXJlbnQgd2F5cywgd2hlcmUgdGhlIGZvcm1lciBpcyBsYXp5IGFuZCB0aGUgbGF0dGVyCitpcyBlYWdlciBpbiB0aGUgc2lkZS1lZmZlY3QgY29sbGVjdGlvbiBvZiBvYmplY3RzIGZyb20gdGhlIHRyYXZlcnNhbC4gVGhlIGRpZmZlcmVudCBiZWhhdmlvcnMgY2FuIGJlIHRob3VnaHQgb2YgYXMKK2RpZmZlcmluZyBhcHBsaWNhdGlvbnMgb2YgYFNjb3BlYCB3aGVyZSBgZ2xvYmFsYCBpcyBlYWdlciBhbmQgYGxvY2FsYCBpcyBsYXp5LiBBcyBhIHJlc3VsdCwgdGhlcmUgaXMgbm8gbmVlZCBmb3IgYm90aAorc3RlcHMgd2hlbiBvbmUgd2lsbCBkby4KKworQXMgb2YgMy40LjMsIGBzdG9yZShTdHJpbmcpYCBpcyBub3cgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBgYWdncmVnYXRlKFNjb3BlLCBTdHJpbmcpYCB3aGVyZSB0aGUgYFNjb3BlYCBzaG91bGQgYmUgc2V0Cit0byBgbG9jYWxgIHRvIGVuc3VyZSB0aGUgc2FtZSBmdW5jdGlvbmFsaXR5IGFzIGBzdG9yZSgpYC4gTm90ZSB0aGF0IGBhZ2dyZWdhdGUoJ3gnKWAgaXMgdGhlIHNhbWUgYXMKK2BhZ2dyZWdhdGUoZ2xvYmFsLCd4JylgLgorCitTZWU6IGxpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMTU1M1tUSU5LRVJQT1AtMTU1M10KKworPT09PSBEZXByZWNhdGUgR3J5byBpbiBHcmVtbGluIFNlcnZlcgorCitHcnlvIGlzIG5vdyBkZXByZWNhdGVkIGFzIGEgc2VyaWFsaXphdGlvbiBmb3JtYXQgZm9yIEdyZW1saW4gU2VydmVyLCBob3dldmVyLCBpdCBpcyBzdGlsbCBjb25maWd1cmVkIGFzIGEgZGVmYXVsdAorb3B0aW9uIGluIHRoZSBzYW1wbGUgY29uZmlndXJhdGlvbiBmaWxlcyBwYWNrYWdlZCB3aXRoIHRoZSBzZXJ2ZXIuIFRoZSBwcmVmZXJyZWQgc2VyaWFsaXphdGlvbiBvcHRpb24gc2hvdWxkIG5vdyBiZQorR3JhcGhCaW5hcnkuIE5vdGUgdGhhdCBHcmVtbGluIENvbnNvbGUgaXMgbm93IGNvbmZpZ3VyZWQgdG8gdXNlIEdyYXBoQmluYXJ5IGJ5IGRlZmF1bHQuCisKK1NlZTogbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC0yMjUwW1RJTktFUlBPUC0yMjUwXQorCis9PT0gVXBncmFkaW5nIGZvciBQcm92aWRlcnMKKworPT09PSBHcmFwaCBEcml2ZXIgUHJvdmlkZXJzCisKKz09PT09IEdyZW1saW4gU2VydmVyIFRlc3QgQ29uZmlndXJhdGlvbgorCitHcmVtbGluIFNlcnZlciBoYXMgYSB0ZXN0IGNvbmZpZ3VyYXRpb24gYnVpbHQgaW50byBpdHMgTWF2ZW4gYnVpbGQgcHJvY2VzcyB3aGljaCBhbGwgaW50ZWdyYXRpb24gdGVzdHMgYW5kIEdyZW1saW4KK0xhbmd1YWdlIFZhcmlhbnRzIHVzZSB0byB2YWxpZGF0ZSB0aGVpciBvcGVyYXRpb25zLiBXaGlsZSB0aGlzIGFwcHJvYWNoIGhhcyB3b3JrZWQgcmVhbGx5IHdlbGwgZm9yIHRlc3QgYXV0b21hdGlvbgord2l0aGluIE1hdmVuLCB0aGVyZSBhcmUgb2Z0ZW4gdGltZXMgd2hlcmUgaXQgd291bGQgYmUgaGVscGZ1bCB0byBzaW1wbHkgaGF2ZSBHcmVtbGluIFNlcnZlciBydW5uaW5nIHdpdGggdGhhdAorY29uZmlndXJhdGlvbi4gVGhpcyBuZWVkIGlzIGVzcGVjaWFsbHkgdHJ1ZSB3aGVuIGRldmVsb3BpbmcgR3JlbWxpbiBMYW5ndWFnZSBWYXJpYW50cyB3aGljaCBpcyBzb21ldGhpbmcgdGhhdCBpcyBkb25lCitvdXRzaWRlIG9mIHRoZSBKVk0uCisKK1RoaXMgcmVsZWFzZSBpbnRyb2R1Y2VzIGEgRG9ja2VyIHNjcmlwdCB0aGF0IHdpbGwgc3RhcnQgR3JlbWxpbiBTZXJ2ZXIgd2l0aCB0aGlzIHRlc3QgY29uZmlndXJhdGlvbi4gSXQgY2FuIGJlIHN0YXJ0ZWQKK3dpdGg6CisKK1tzb3VyY2UsdGV4dF0KK2RvY2tlci9ncmVtbGluLXNlcnZlci5zaAorCitPbmNlIHN0YXJ0ZWQsIGl0IGlzIHRoZW4gcG9zc2libGUgdG8gcnVuIEdMViB0ZXN0cyBkaXJlY3RseSBmcm9tIGEgZGVidWdnZXIgYWdhaW5zdCB0aGlzIGluc3RhbmNlIHdoaWNoIHNob3VsZAoraG9wZWZ1bGx5IHJlZHVjZSBkZXZlbG9wbWVudCBmcmljdGlvbi4KKworc2VlOiBsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjQuMy9kZXYvZGV2ZWxvcGVyLyNkb2NrZXItaW50ZWdyYXRpb25bRGV2ZWxvcGVyIERvY3VtZW50YXRpb25dCisKKz09IFRpbmtlclBvcCAzLjQuMgorCisqUmVsZWFzZSBEYXRlOiBNYXkgMjgsIDIwMTkqCisKK1BsZWFzZSBzZWUgdGhlIGxpbms6aHR0cHM6Ly9naXRodWIuY29tL2FwYWNoZS90aW5rZXJwb3AvYmxvYi8zLjQuMi9DSEFOR0VMT0cuYXNjaWlkb2MjcmVsZWFzZS0zLTQtMltjaGFuZ2Vsb2ddIGZvciBhIGNvbXBsZXRlIGxpc3Qgb2YgYWxsIHRoZSBtb2RpZmljYXRpb25zIHRoYXQgYXJlIHBhcnQgb2YgdGhpcyByZWxlYXNlLgorCis9PT0gVXBncmFkaW5nIGZvciBVc2VycworCis9PT09IFBlciBSZXF1ZXN0IE9wdGlvbnMKKworSW4gMy40LjAsIHRoZSBub3Rpb24gb2YgYFJlcXVlc3RPcHRpb25zYCB3ZXJlIGFkZGVkIHNvIHRoYXQgdXNlcnMgY291bGQgaGF2ZSBhbiBlYXNpZXIgd2F5IHRvIGNvbmZpZ3VyZSBzZXR0aW5ncyBvbgoraW5kaXZpZHVhbCByZXF1ZXN0cyBtYWRlIHRocm91Z2ggdGhlIEphdmEgZHJpdmVyLiBXaGlsZSB0aGF0IGNoYW5nZSBwcm92aWRlZCBhIHdheSB0byBzZXQgdGhvc2UgY29uZmlndXJhdGlvbnMgZm9yCitzY3JpcHQgYmFzZWQgcmVxdWVzdHMsIGl0IGRpZG4ndCBpbmNsdWRlIG9wdGlvbnMgdG8gbWFrZSB0aG9zZSBzZXR0aW5ncyBpbiBhIGBUcmF2ZXJzYWxgIHN1Ym1pdHRlZCB2aWEgYEJ5dGVjb2RlYC4gSW4KK3RoaXMgcmVsZWFzZSB0aG9zZSBzZXR0aW5ncyBiZWNvbWUgYXZhaWxhYmxlIHZpYSBgd2l0aCgpYCBzdGVwIG9uIHRoZSBgVHJhdmVyc2FsU291cmNlYCBhcyBmb2xsb3dzOgorCitbc291cmNlLGphdmFdCistLS0tCitHcmFwaFRyYXZlcnNhbFNvdXJjZSBnID0gdHJhdmVyc2FsKCkud2l0aFJlbW90ZShjb25mKTsKK0xpc3Q8VmVydGV4PiB2ZXJ0aWNlcyA9IGcud2l0aChUb2tlbnMuQVJHU19TQ1JJUFRfRVZBTF9USU1FT1VULCA1MDBMKS5WKCkub3V0KCJrbm93cyIpLnRvTGlzdCgpCistLS0tCisKK1NlZTogbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC0yMjExW1RJTktFUlBPUC0yMjExXQorCis9PT09IEdyZW1saW4gQ29uc29sZSBUaW1lb3V0CisKK1RoZSBHcmVtbGluIENvbnNvbGUgdGltZW91dCB0aGF0IGlzIHNldCBieSBgOnJlbW90ZSBjb25maWcgdGltZW91dCB4YCB3YXMgY2xpZW50LXNpZGUgb25seSBpbiBwcmlvciB2ZXJzaW9ucywgd2hpY2gKK21lYW50IHRoYXQgaWYgdGhlIGNvbnNvbGUgdGltZW91dCB3YXMgbGVzcyB0aGFuIHRoZSBzZXJ2ZXIgdGltZW91dCB0aGUgY2xpZW50IHdvdWxkIHRpbWVvdXQgYnV0IHRoZSBzZXJ2ZXIgbWlnaHQgc3RpbGwKK2JlIHByb2Nlc3NpbmcgdGhlIHJlcXVlc3QuIFNpbWlsYXJseSwgYSBsb25nZXIgdGltZW91dCBvbiB0aGUgY29uc29sZSB3b3VsZCBub3QgY2hhbmdlIHRoZSBzZXJ2ZXIgYW5kIHRoZSB0aW1lb3V0Cit3b3VsZCBvY2N1ciBzb29uZXIgdGhhbiBleHBlY3RlZC4gVGhlc2UgZGlzY3JlcGFuY2llcyBvZnRlbiBsZWQgdG8gY29uZnVzaW9uLgorCitBcyBvZiAzLjQuMCwgdGhlIEphdmEgRHJpdmVyIEFQSSBhbGxvd2VkIGZvciB0aW1lb3V0IHNldHRpbmdzIHRvIGJlIG1vcmUgZWFzaWx5IHBhc3NlZCBwZXIgcmVxdWVzdCwgc28gdGhlIGNvbnNvbGUKK3dhcyBtb2RpZmllZCBmb3IgdGhpcyBjdXJyZW50IHZlcnNpb24gdG8gcGFzcyB0aGUgY29uc29sZSB0aW1lb3V0IGZvciBlYWNoIHJlbW90ZSBzdWJtaXNzaW9uIHRodXMgeWllbGRpbmcgbW9yZQorY29uc2lzdGVudCBhbmQgaW50dWl0aXZlIGJlaGF2aW9yLgorCitTZWU6IGxpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMjIwM1tUSU5LRVJQT1AtMjIwM10KKworPT09IFVwZ3JhZGluZyBmb3IgUHJvdmlkZXJzCisKKz09PT0gR3JhcGggU3lzdGVtIFByb3ZpZGVycworCis9PT09PSBXYXJuaW5ncworCitJdCBpcyBub3cgcG9zc2libGUgdG8gcGFzcyB3YXJuaW5ncyBvdmVyIHRoZSBHcmVtbGluIFNlcnZlciBwcm90b2NvbCB1c2luZyBhIGB3YXJuaW5nc2Agc3RhdHVzIGF0dHJpYnV0ZS4gVGhlIHdhcm5pbmdzCithcmUgZXhwZWN0ZWQgdG8gYmUgYSBzdHJpbmcgdmFsdWUgb3IgYSBgTGlzdGAgb2Ygc3RyaW5nIHZhbHVlcyB3aGljaCBjYW4gYmUgY29uc3VtZWQgYnkgdGhlIHVzZXIgb3IgdG9vbHMgdGhhdCBjaGVjaworZm9yIHRoYXQgc3RhdHVzIGF0dHJpYnV0ZS4gTm90ZSB0aGF0IEdyZW1saW4gQ29uc29sZSBpcyBvbmUgc3VjaCB0b29sIHRoYXQgd2lsbCByZXNwb25kIHRvIHRoaXMgc3RhdHVzIGF0dHJpYnV0ZSAtIGl0Cit3aWxsIHByaW50IHRoZSBtZXNzYWdlcyB0byB0aGUgY29uc29sZSBhcyB0aGV5IGFyZSBkZXRlY3RlZCB3aGVuIGRvaW5nIHJlbW90ZSBzY3JpcHQgc3VibWlzc2lvbnMuCisKK1NlZTogbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC0yMjE2W1RJTktFUlBPUC0yMjE2XQorCis9PT09IEdyYXBoIERyaXZlciBQcm92aWRlcnMKKworPT09PT0gR3JhcGhCaW5hcnkgQVBJIENoYW5nZQorCitJbiBHcmFwaEJpbmFyeSBzZXJpYWxpemF0aW9uLCBKYXZhIGB3cml0ZSgpYCBhbmQgYHdyaXRlVmFsdWUoKWAgZnJvbSBgVHlwZVNlcmlhbGl6ZXI8VD5gIGludGVyZmFjZSBub3cgdGFrZSBhIE5ldHR5J3MKK2BCeXRlQnVmYCBpbnN0YW5jZSBpbnN0ZWFkIG9mIGFuIGBCeXRlQnVmQWxsb2NhdG9yYCwgdGhhdCB3YXkgdGhlIHNhbWUgYnVmZmVyIGluc3RhbmNlIGdldHMgcmV1c2VkIGR1cmluZyB0aGUgd3JpdGUKK29mIGEgbWVzc2FnZS4gQWRkaXRpb25hbGx5LCB3ZSB0b29rIHRoZSBvcHBvcnR1bml0eSB0byByZW1vdmUgdGhlIHVudXNlZCBwYXJhbWV0ZXIgZnJvbSBgUmVzcG9uc2VNZXNzYWdlU2VyaWFsaXplcmAuCisKK1NlZTogbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC0yMTYxW1RJTktFUlBPUC0yMTYxXQorCis9PSBUaW5rZXJQb3AgMy40LjEKKworKlJlbGVhc2UgRGF0ZTogTWFyY2ggMTgsIDIwMTkqCisKK1BsZWFzZSBzZWUgdGhlIGxpbms6aHR0cHM6Ly9naXRodWIuY29tL2FwYWNoZS90aW5rZXJwb3AvYmxvYi8zLjQuMS9DSEFOR0VMT0cuYXNjaWlkb2MjcmVsZWFzZS0zLTQtMVtjaGFuZ2Vsb2ddIGZvciBhIGNvbXBsZXRlIGxpc3Qgb2YgYWxsIHRoZSBtb2RpZmljYXRpb25zIHRoYXQgYXJlIHBhcnQgb2YgdGhpcyByZWxlYXNlLgorCis9PT0gVXBncmFkaW5nIGZvciBVc2VycworCis9PT09IE1peCBTUEFSUUwgYW5kIEdyZW1saW4KKworSW4gdGhlIGluaXRpYWwgcmVsZWFzZSBvZiBgc3BhcnFsLWdyZW1saW5gIGl0IHdhcyBvbmx5IHBvc3NpYmxlIHRvIGV4ZWN1dGUgYSBTUEFSUUwgcXVlcnkgYW5kIGhhdmUgaXQgdHJhbnNsYXRlIHRvCitHcmVtbGluLiBUaGVyZWZvcmUsIGl0IHdhcyBvbmx5IHBvc3NpYmxlIHRvIHdyaXRlIGEgcXVlcnkgbGlrZSB0aGlzOgorCitbc291cmNlLHRleHRdCistLS0tCitncmVtbGluPiBnLnNwYXJxbCgiU0VMRUNUID9uYW1lID9hZ2UgV0hFUkUgeyA/cGVyc29uIHY6bmFtZSA/bmFtZSAuID9wZXJzb24gdjphZ2UgP2FnZSB9IikKKz09PltuYW1lOm1hcmtvLGFnZToyOV0KKz09PltuYW1lOnZhZGFzLGFnZToyN10KKz09PltuYW1lOmpvc2gsYWdlOjMyXQorPT0+W25hbWU6cGV0ZXIsYWdlOjM1XQorZ3JlbWxpbj4gZy5zcGFycWwoIlNFTEVDVCAqIFdIRVJFIHsgfSIpCis9PT52WzFdCis9PT52WzJdCis9PT52WzNdCis9PT52WzRdCis9PT52WzVdCis9PT52WzZdCistLS0tCisKK0luIHRoaXMgcmVsZWFzZSwgaG93ZXZlciwgaXQgaXMgbm93IHBvc3NpYmxlIHRvIGZ1cnRoZXIgcHJvY2VzcyB0aGF0IHJlc3VsdCB3aXRoIEdyZW1saW4gc3RlcHM6CisKK1tzb3VyY2UsdGV4dF0KKy0tLS0KK2dyZW1saW4+IGcuc3BhcnFsKCJTRUxFQ1QgP25hbWUgP2FnZSBXSEVSRSB7ID9wZXJzb24gdjpuYW1lID9uYW1lIC4gP3BlcnNvbiB2OmFnZSA/YWdlIH0iKS5zZWxlY3QoIm5hbWUiKQorPT0+bWFya28KKz09PnZhZGFzCis9PT5qb3NoCis9PT5wZXRlcgorZ3JlbWxpbj4gZy5zcGFycWwoIlNFTEVDVCAqIFdIRVJFIHsgfSIpLm91dCgia25vd3MiKS52YWx1ZXMoIm5hbWUiKQorPT0+dmFkYXMKKz09Pmpvc2gKKy0tLS0KKworU2VlOiBsaW5rOmh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvVElOS0VSUE9QLTIxNzFbVElOS0VSUE9QLTIxNzFdLAorbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy40LjEvcmVmZXJlbmNlLyNzcGFycWwtd2l0aC1ncmVtbGluW1JlZmVyZW5jZSBEb2N1bWVudGF0aW9uXQorCis9PT0gVXBncmFkaW5nIGZvciBQcm92aWRlcnMKKworPT09PSBHcmFwaCBEYXRhYmFzZSBQcm92aWRlcnMKKworPT09PT0gR3JhcGhCaW5hcnkgU2VyaWFsaXplciBDaGFuZ2VzCisKK0luIEdyYXBoQmluYXJ5IHNlcmlhbGl6YXRpb24sIEphdmEgYHdyaXRlKClgIGFuZCBgd3JpdGVWYWx1ZSgpYCBmcm9tIGBUeXBlU2VyaWFsaXplcjxUPmAgaW50ZXJmYWNlIG5vdyB0YWtlIGEgTmV0dHkncworYEJ5dGVCdWZgIGluc3RhbmNlIGluc3RlYWQgb2YgYW4gYEJ5dGVCdWZBbGxvY2F0b3JgLCB0aGF0IHdheSB0aGUgc2FtZSBidWZmZXIgaW5zdGFuY2UgZ2V0cyByZXVzZWQgZHVyaW5nIHRoZSB3cml0ZQorb2YgYSBtZXNzYWdlLiBBZGRpdGlvbmFsbHksIHdlIHRvb2sgdGhlIG9wcG9ydHVuaXR5IHRvIHJlbW92ZSB0aGUgdW51c2VkIHBhcmFtZXRlciBmcm9tIGBSZXNwb25zZU1lc3NhZ2VTZXJpYWxpemVyYC4KKworU2VlOiBsaW5rOmh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvVElOS0VSUE9QLTIxNjFbVElOS0VSUE9QLTIxNjFdCisKKz09IFRpbmtlclBvcCAzLjQuMAorCisqUmVsZWFzZSBEYXRlOiBKYW51YXJ5IDIsIDIwMTkqCisKK1BsZWFzZSBzZWUgdGhlIGxpbms6aHR0cHM6Ly9naXRodWIuY29tL2FwYWNoZS90aW5rZXJwb3AvYmxvYi8zLjQuMC9DSEFOR0VMT0cuYXNjaWlkb2MjcmVsZWFzZS0zLTQtMFtjaGFuZ2Vsb2ddIGZvciBhIGNvbXBsZXRlIGxpc3Qgb2YgYWxsIHRoZSBtb2RpZmljYXRpb25zIHRoYXQgYXJlIHBhcnQgb2YgdGhpcyByZWxlYXNlLgorCis9PT0gVXBncmFkaW5nIGZvciBVc2VycworCis9PT09IHNwYXJxbC1ncmVtbGluCisKK1RoZSBgc3BhcnFsLWdyZW1saW5gIG1vZHVsZSBpcyBhIGxpbms6aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU1BBUlFMW1NQQVJRTF0gdG8gR3JlbWxpbiBjb21waWxlciwgd2hpY2ggYWxsb3dzCitTUEFSUUwgdG8gYmUgZXhlY3V0ZWQgb3ZlciBhbnkgVGlua2VyUG9wLWVuYWJsZWQgZ3JhcGggc3lzdGVtLgorCitbc291cmNlLGdyb292eV0KKy0tLS0KK2dyYXBoID0gVGlua2VyRmFjdG9yeS5jcmVhdGVNb2Rlcm4oKQorZyA9IGdyYXBoLnRyYXZlcnNhbChTcGFycWxUcmF2ZXJzYWxTb3VyY2UpCitnLnNwYXJxbCgiIiJTRUxFQ1QgP25hbWUgP2FnZQorICAgICAgICAgICAgV0hFUkUgeyA/cGVyc29uIHY6bmFtZSA/bmFtZSAuID9wZXJzb24gdjphZ2UgP2FnZSB9CisgICAgICAgICAgICBPUkRFUiBCWSBBU0MoP2FnZSkiIiIpCistLS0tCisKK1NlZTogbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC0xODc4W1RJTktFUlBPUC0xODc4XSwKK2xpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuNC4wL3JlZmVyZW5jZS8jc3BhcnFsLWdyZW1saW5bUmVmZXJlbmNlIERvY3VtZW50YXRpb25dCisKKz09PT0gR3JlbWxpbi5ORVQgRHJpdmVyIEltcHJvdmVtZW50cworCitUaGUgR3JlbWxpbi5ORVQgZHJpdmVyIG5vdyB1c2VzIHJlcXVlc3QgcGlwZWxpbmluZy4gVGhpcyBhbGxvd3MgY29ubmVjdGlvbnMgdG8gYmUgcmV1c2VkIGZvciBkaWZmZXJlbnQgcmVxdWVzdHMgaW4KK3BhcmFsbGVsIHdoaWNoIHNob3VsZCBsZWFkIHRvIGJldHRlciB1dGlsaXphdGlvbiBvZiBjb25uZWN0aW9ucy4gVGhlIGBDb25uZWN0aW9uUG9vbGAgbm93IGFsc28gaGFzIGEgZml4ZWQgc2l6ZQord2hlcmVhcyBpdCBjb3VsZCBwcmV2aW91c2x5IGNyZWF0ZSBhbiB1bmxpbWl0ZWQgbnVtYmVyIG9mIGNvbm5lY3Rpb25zLiBFYWNoIGBDb25uZWN0aW9uYCBjYW4gaGFuZGxlIHVwIHRvCitgTWF4SW5Qcm9jZXNzUGVyQ29ubmVjdGlvbmAgcmVxdWVzdHMgaW4gcGFyYWxsZWwuIElmIHRoaXMgbGltaXQgaXMgcmVhY2hlZCBmb3IgYWxsIGNvbm5lY3Rpb25zLCB0aGVuIGEKK2BOb0Nvbm5lY3Rpb25BdmFpbGFibGVFeGNlcHRpb25gIGlzIHRocm93biB3aGljaCBtYWtlcyB0aGlzIGEgYnJlYWtpbmcgY2hhbmdlLgorCitUaGVzZSBzZXR0aW5ncyBjYW4gYmUgc2V0IGFzIHByb3BlcnRpZXMgb24gdGhlIGBDb25uZWN0aW9uUG9vbFNldHRpbmdzYCBpbnN0YW5jZSB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gdGhlIGBHcmVtbGluQ2xpZW50YC4KKworU2VlOiBsaW5rOmh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvVElOS0VSUE9QLTE3NzRbVElOS0VSUE9QLTE3NzRdLAorbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC0xNzc1W1RJTktFUlBPUC0xNzc1XSwKK2xpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuNC4wL3JlZmVyZW5jZS8jX2Nvbm5lY3Rpb25fcG9vbFtSZWZlcmVuY2UgRG9jdW1lbnRhdGlvbl0KKworPT09PSBJbmRleGluZyBvZiBDb2xsZWN0aW9ucworCitUaW5rZXJQb3AgMy40LjAgYWRkcyBhIG5ldyBgaW5kZXgoKWAtc3RlcCwgd2hpY2ggYWxsb3dzIHVzZXJzIHRvIHRyYW5zZm9ybSBzaW1wbGUgY29sbGVjdGlvbnMgaW50byBpbmRleCBjb2xsZWN0aW9ucyBvciBtYXBzLgorCitgYGAKK2dyZW1saW4+IGcuVigpLmhhc0xhYmVsKCJzb2Z0d2FyZSIpLnZhbHVlcygibmFtZSIpLmZvbGQoKS4KKy4uLi4uLjE+ICAgb3JkZXIobG9jYWwpLgorLi4uLi4uMj4gICBpbmRleCgpLnVuZm9sZCgpCis9PT5bbG9wLDBdCis9PT5bcmlwcGxlLDFdCitncmVtbGluPiBnLlYoKS5oYXNMYWJlbCgicGVyc29uIikudmFsdWVzKCJuYW1lIikuZm9sZCgpLgorLi4uLi4uMT4gICBvcmRlcihsb2NhbCkuYnkoZGVjcikuCisuLi4uLi4yPiAgIGluZGV4KCkuCisuLi4uLi4zPiAgICAgd2l0aChXaXRoT3B0aW9ucy5pbmRleGVyLCBXaXRoT3B0aW9ucy5tYXApCis9PT5bMDp2YWRhcywxOnBldGVyLDI6bWFya28sMzpqb3NoXQorYGBgCisKKz09PT0gTW9kdWxhdGlvbiBvZiB2YWx1ZU1hcCgpCisKK1RoZSBgdmFsdWVNYXAoKWAgc3RlcCBub3cgc3VwcG9ydHMgYGJ5YCBhbmQgYHdpdGhgIG1vZHVsYXRpb24sIHdoaWNoIGFsc28gbGVkIHRvIHRoZSBkZXByZWNhdGlvbiBvZiBgdmFsdWVNYXAodHJ1ZSlgIG92ZXJsb2Fkcy4KKworPT09PT0gYnkoKSBNb2R1bGF0aW9uCisKK1dpdGggdGhlIGhlbHAgb2YgdGhlIGBieSgpYCBtb2R1bGF0b3IgYHZhbHVlTWFwKClgIHJlc3VsdCB2YWx1ZXMgY2FuIG5vdyBiZSBhZGp1c3RlZCwgd2hpY2ggaXMgcGFydGljdWxhcmx5IHVzZWZ1bCB0byB0dXJuIG11bHRpLS9saXN0LXZhbHVlcyBpbnRvIHNpbmdsZSB2YWx1ZXMuCisKK2BgYAorZ3JlbWxpbj4gZy5WKCkuaGFzTGFiZWwoInBlcnNvbiIpLnZhbHVlTWFwKCkKKz09PltuYW1lOlttYXJrb10sYWdlOlsyOV1dCis9PT5bbmFtZTpbdmFkYXNdLGFnZTpbMjddXQorPT0+W25hbWU6W2pvc2hdLGFnZTpbMzJdXQorPT0+W25hbWU6W3BldGVyXSxhZ2U6WzM1XV0KK2dyZW1saW4+IGcuVigpLmhhc0xhYmVsKCJwZXJzb24iKS52YWx1ZU1hcCgpLmJ5KHVuZm9sZCgpKQorPT0+W25hbWU6bWFya28sYWdlOjI5XQorPT0+W25hbWU6dmFkYXMsYWdlOjI3XQorPT0+W25hbWU6am9zaCxhZ2U6MzJdCis9PT5bbmFtZTpwZXRlcixhZ2U6MzVdCitgYGAKKz09PT09IHdpdGgoKSBNb2R1bGF0aW9uCisKK1RoZSBgd2l0aCgpYCBtb2R1bGF0b3IgY2FuIGJlIHVzZWQgdG8gaW5jbHVkZSBjZXJ0YWluIHRva2VucyAoYGlkYCwgYGxhYmVsYCwgYGtleWAgYW5kL29yIGB2YWx1ZWApLgorCitUaGUgb2xkIHdheSAoc3RpbGwgdmFsaWQsIGJ1dCBkZXByZWNhdGVkKToKKworYGBgCitncmVtbGluPiBnLlYoKS5oYXNMYWJlbCgic29mdHdhcmUiKS52YWx1ZU1hcCh0cnVlKQorPT0+W2lkOjEwLGxhYmVsOnNvZnR3YXJlLG5hbWU6W2dyZW1saW5dXQorPT0+W2lkOjExLGxhYmVsOnNvZnR3YXJlLG5hbWU6W3RpbmtlcmdyYXBoXV0KK2dyZW1saW4+IGcuVigpLmhhcygicGVyc29uIiwibmFtZSIsIm1hcmtvIikucHJvcGVydGllcygibG9jYXRpb24iKS52YWx1ZU1hcCh0cnVlKQorPT0+W2lkOjYsa2V5OmxvY2F0aW9uLHZhbHVlOnNhbiBkaWVnbyxzdGFydFRpbWU6MTk5NyxlbmRUaW1lOjIwMDFdCis9PT5baWQ6NyxrZXk6bG9jYXRpb24sdmFsdWU6c2FudGEgY3J1eixzdGFydFRpbWU6MjAwMSxlbmRUaW1lOjIwMDRdCis9PT5baWQ6OCxrZXk6bG9jYXRpb24sdmFsdWU6YnJ1c3NlbHMsc3RhcnRUaW1lOjIwMDQsZW5kVGltZToyMDA1XQorPT0+W2lkOjksa2V5OmxvY2F0aW9uLHZhbHVlOnNhbnRhIGZlLHN0YXJ0VGltZToyMDA1XQorYGBgCisKK1RoZSBuZXcgd2F5OgorCitgYGAKK2dyZW1saW4+IGcuVigpLmhhc0xhYmVsKCJzb2Z0d2FyZSIpLnZhbHVlTWFwKCkud2l0aChXaXRoT3B0aW9ucy50b2tlbnMpCis9PT5baWQ6MTAsbGFiZWw6c29mdHdhcmUsbmFtZTpbZ3JlbWxpbl1dCis9PT5baWQ6MTEsbGFiZWw6c29mdHdhcmUsbmFtZTpbdGlua2VyZ3JhcGhdXQorZ3JlbWxpbj4gZy5WKCkuaGFzKCJwZXJzb24iLCJuYW1lIiwibWFya28iKS5wcm9wZXJ0aWVzKCJsb2NhdGlvbiIpLnZhbHVlTWFwKCkud2l0aChXaXRoT3B0aW9ucy50b2tlbnMpCis9PT5baWQ6NixrZXk6bG9jYXRpb24sdmFsdWU6c2FuIGRpZWdvLHN0YXJ0VGltZToxOTk3LGVuZFRpbWU6MjAwMV0KKz09PltpZDo3LGtleTpsb2NhdGlvbix2YWx1ZTpzYW50YSBjcnV6LHN0YXJ0VGltZToyMDAxLGVuZFRpbWU6MjAwNF0KKz09PltpZDo4LGtleTpsb2NhdGlvbix2YWx1ZTpicnVzc2VscyxzdGFydFRpbWU6MjAwNCxlbmRUaW1lOjIwMDVdCis9PT5baWQ6OSxrZXk6bG9jYXRpb24sdmFsdWU6c2FudGEgZmUsc3RhcnRUaW1lOjIwMDVdCitgYGAKKworRnVydGhlcm1vcmUsIG5vdyB0aGVyZSdzIGEgZmluZXIgY29udHJvbCBvdmVyIHdoaWNoIG9mIHRoZSB0b2tlbnMgc2hvdWxkIGJlIGluY2x1ZGVkOgorCitgYGAKK2dyZW1saW4+IGcuVigpLmhhc0xhYmVsKCJzb2Z0d2FyZSIpLnZhbHVlTWFwKCkud2l0aChXaXRoT3B0aW9ucy50b2tlbnMsIFdpdGhPcHRpb25zLmxhYmVscykKKz09PltsYWJlbDpzb2Z0d2FyZSxuYW1lOltncmVtbGluXV0KKz09PltsYWJlbDpzb2Z0d2FyZSxuYW1lOlt0aW5rZXJncmFwaF1dCitncmVtbGluPiBnLlYoKS5oYXMoInBlcnNvbiIsIm5hbWUiLCJtYXJrbyIpLnByb3BlcnRpZXMoImxvY2F0aW9uIikudmFsdWVNYXAoKS53aXRoKFdpdGhPcHRpb25zLnRva2VucywgV2l0aE9wdGlvbnMudmFsdWVzKQorPT0+W3ZhbHVlOnNhbiBkaWVnbyxzdGFydFRpbWU6MTk5NyxlbmRUaW1lOjIwMDFdCis9PT5bdmFsdWU6c2FudGEgY3J1eixzdGFydFRpbWU6MjAwMSxlbmRUaW1lOjIwMDRdCis9PT5bdmFsdWU6YnJ1c3NlbHMsc3RhcnRUaW1lOjIwMDQsZW5kVGltZToyMDA1XQorPT0+W3ZhbHVlOnNhbnRhIGZlLHN0YXJ0VGltZToyMDA1XQorYGBgCisKK0FzIHNob3duIGFib3ZlLCB0aGUgc3VwcG9ydCBvZiB0aGUgYHdpdGgoKWAgbW9kdWxhdG9yIGZvciBgdmFsdWVNYXAoKWAgbWFrZXMgdGhlIGB2YWx1ZU1hcChib29sZWFuKWAgb3ZlcmxvYWQKK3N1cGVyZmx1b3VzLCBoZW5jZSB0aGlzIG92ZXJsb2FkIGlzIG5vdyBkZXByZWNhdGVkLiBUaGlzIGlzIGEgYnJlYWtpbmcgQVBJIGNoYW5nZSwgc2luY2UgYHZhbHVlTWFwKClgIHdpbGwgbm93IGFsd2F5cworeWllbGQgaW5zdGFuY2VzIG9mIHR5cGUgYE1hcDxPYmplY3QsIE9iamVjdD5gLiBQcmlvciB0aGlzIGNoYW5nZSBvbmx5IHRoZSBgdmFsdWVNYXAoYm9vbGVhbilgIG92ZXJsb2FkIHlpZWxkZWQKK2BNYXA8T2JqZWN0LCBPYmplY3Q+YCBvYmplY3RzLCBgdmFsdWVNYXAoKWAgd2l0aG91dCB0aGUgYm9vbGVhbiBwYXJhbWV0ZXIgdXNlZCB0byB5aWVsZCBpbnN0YW5jZXMgb2YgdHlwZQorYE1hcDxTdHJpbmcsIE9iamVjdD5gLgorCitTZWU6IGxpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMjA1OVtUSU5LRVJQT1AtMjA1OV0KKworPT09PSBQcmVkaWNhdGUgTnVtYmVyIENvbXBhcmlzb24KKworSW4gcHJldmlvdXMgdmVyc2lvbnMgYHdpdGhpbigpYCBhbmQgYHdpdGhvdXQoKWAgcGVyZm9ybWVkIHN0cmljdCBudW1iZXIgY29tcGFyaXNvbnM7IHRoYXQgbWVhbnMgdGhlc2UgcHJlZGljYXRlcyBkaWQKK25vdCBvbmx5IGNvbXBhcmUgbnVtYmVyIHZhbHVlcywgYnV0IGFsc28gdGhlIHR5cGUuIFRoaXMgd2FzIGluY29uc2lzdGVudCB3aXRoIGhvdyBvdGhlciBwcmVkaWNhdGVzIChsaWtlIGBlcWAsIGBndGAsCitldGMuKSB3b3JrLiBBbGwgcHJlZGljYXRlcyB3aWxsIG5vdyBpZ25vcmUgdGhlIG51bWJlciB0eXBlIGFuZCBpbnN0ZWFkIGNvbXBhcmUgbnVtYmVycyBvbmx5IGJhc2VkIG9uIHRoZWlyIHZhbHVlLgorCitPbGQgYmVoYXZpb3I6CisKK2BgYAorZ3JlbWxpbj4gZy5WKCkuaGFzKCJhZ2UiLCBlcSgzMkwpKQorPT0+dls0XQorZ3JlbWxpbj4gZy5WKCkuaGFzKCJhZ2UiLCB3aXRoaW4oMzJMLCAzNUwpKQorZ3JlbWxpbj4KK2BgYAorCitOZXcgYmVoYXZpb3I6CisKK2BgYAorZ3JlbWxpbj4gZy5WKCkuaGFzKCJhZ2UiLCBlcSgzMkwpKQorPT0+dls0XQorZ3JlbWxpbj4gZy5WKCkuaGFzKCJhZ2UiLCB3aXRoaW4oMzJMLCAzNUwpKQorPT0+dls0XQorPT0+dls2XQorYGBgCisKK1NlZTogbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC0yMDU4W1RJTktFUlBPUC0yMDU4XQorCis9PT09IFJlZmVyZW5jZUVsZW1lbnRTdHJhdGVneQorCitHcmVtbGluIFNlcnZlciBoYXMgaGFkIHNvbWUgaW5jb25zaXN0ZW50IGJlaGF2aW9yIGluIHRoZSBzZXJpYWxpemF0aW9uIG9mIHRoZSByZXN1bHRzIGl0IHJldHVybnMuIFJlbW90ZSB0cmF2ZXJzYWxzCitiYXNlZCBvbiBHcmVtbGluIGJ5dGVjb2RlIGFsd2F5cyBkZXRhY2ggcmV0dXJuZWQgZ3JhcGggZWxlbWVudHMgdG8gInJlZmVyZW5jZSIgKGkuZS4gcmVtb3ZlcyBwcm9wZXJ0aWVzIGFuZCBvbmx5CitpbmNsdWRlIHRoZSBgaWRgIGFuZCBgbGFiZWxgKSwgYnV0IHNjcmlwdHMgd291bGQgZGV0YWNoIGdyYXBoIGVsZW1lbnRzIGFuZCBpbmNsdWRlIHRoZSBwcm9wZXJ0aWVzLiBGb3IgMy40LjAsCitUaW5rZXJQb3AgaW50cm9kdWNlcyB0aGUgYFJlZmVyZW5jZUVsZW1lbnRTdHJhdGVneWAgd2hpY2ggY2FuIGJlIGNvbmZpZ3VyZWQgb24gYSBgR3JhcGhUcmF2ZXJzYWxTb3VyY2VgIHRvIGFsd2F5cworZGV0YWNoIHRvICJyZWZlcmVuY2UiLgorCitbc291cmNlLHRleHRdCistLS0tCitncmVtbGluPiBncmFwaCA9IFRpbmtlckZhY3RvcnkuY3JlYXRlTW9kZXJuKCkKKz09PnRpbmtlcmdyYXBoW3ZlcnRpY2VzOjYgZWRnZXM6Nl0KK2dyZW1saW4+IGcgPSBncmFwaC50cmF2ZXJzYWwoKS53aXRoU3RyYXRlZ2llcyhSZWZlcmVuY2VFbGVtZW50U3RyYXRlZ3kuaW5zdGFuY2UoKSkKKz09PmdyYXBodHJhdmVyc2Fsc291cmNlW3RpbmtlcmdyYXBoW3ZlcnRpY2VzOjYgZWRnZXM6Nl0sIHN0YW5kYXJkXQorZ3JlbWxpbj4gdiA9IGcuVigpLmhhcygncGVyc29uJywnbmFtZScsJ21hcmtvJykubmV4dCgpCis9PT52WzFdCitncmVtbGluPiB2LmNsYXNzCis9PT5jbGFzcyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLnJlZmVyZW5jZS5SZWZlcmVuY2VWZXJ0ZXgKK2dyZW1saW4+IHYucHJvcGVydGllcygpCitncmVtbGluPgorLS0tLQorCitUaGUgcGFja2FnZWQgaW5pdGlhbGl6YXRpb24gc2NyaXB0cyB0aGF0IGNvbWUgd2l0aCBHcmVtbGluIFNlcnZlciBub3cgcHJlLWNvbmZpZ3VyZSB0aGUgc2FtcGxlIGdyYXBocyB3aXRoIHRoaXMKK3N0cmF0ZWd5IHRvIGVuc3VyZSB0aGF0IGJvdGggc2NyaXB0cyBhbmQgYnl0ZWNvZGUgYmFzZWQgcmVxdWVzdHMgb3ZlciBhbnkgcHJvdG9jb2wgKEhUVFAsIHdlYnNvY2tldCwgZXRjKSBhbmQKK3NlcmlhbGl6YXRpb24gZm9ybWF0IGFsbCByZXR1cm4gYSAicmVmZXJlbmNlIi4gVG8gcmV2ZXJ0IHRvIHRoZSBvbGQgZm9ybSwgc2ltcGx5IHJlbW92ZSB0aGUgc3RyYXRlZ3kgaW4gdGhlCitpbml0aWFsaXphdGlvbiBzY3JpcHQuCisKK0l0IGlzIHJlY29tbWVuZGVkIHRoYXQgdXNlcnMgY2hvb3NlIHRvIGNvbmZpZ3VyZSB0aGVpciBgR3JhcGhUcmF2ZXJzYWxTb3VyY2VgIGluc3RhbmNlcyB3aXRoIGBSZWZlcmVuY2VFbGVtZW50U3RyYXRlZ3lgCithcyB3b3JraW5nIHdpdGggInJlZmVyZW5jZXMiIG9ubHkgaXMgdGhlIHJlY29tbWVuZGVkIG1ldGhvZCBmb3IgZGV2ZWxvcGluZyBhcHBsaWNhdGlvbnMgd2l0aCBUaW5rZXJQb3AuIEluIHRoZSBmdXR1cmUsCitpdCBpcyBwb3NzaWJsZSB0aGF0IGBSZWZlcmVuY2VFbGVtZW50U3RyYXRlZ3lgIHdpbGwgYmUgY29uZmlndXJlZCBieSBkZWZhdWx0IGZvciBhbGwgZ3JhcGhzIG9uIG9yIG9mZiBHcmVtbGluIFNlcnZlciwKK3NvIGl0IHdvdWxkIGJlIGJlc3QgdG8gc3RhcnQgdXRpbGl6aW5nIGl0IG5vdyBhbmQgZ3Jvb21pbmcgZXhpc3RpbmcgR3JlbWxpbiBhbmQgcmVsYXRlZCBhcHBsaWNhdGlvbiBjb2RlIHRvIGFjY291bnQKK2ZvciBpdC4KKworU2VlOiBsaW5rOmh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvVElOS0VSUE9QLTIwNzVbVElOS0VSUE9QLTIwNzVdCisKKz09PT0gVGV4dCBQcmVkaWNhdGVzCisKK0dyZW1saW4gbm93IHN1cHBvcnRzIHNpbXBsZSB0ZXh0IHByZWRpY2F0ZXMgb24gdG9wIG9mIHRoZSBleGlzdGluZyBgUGAgcHJlZGljYXRlcy4gQm90aCwgdGhlIG5ldyBgVGV4dFBgIHRleHQKK3ByZWRpY2F0ZXMgYW5kIHRoZSBvbGQgYFBgIHByZWRpY2F0ZXMsIGNhbiBiZSBjaGFpbmVkIHVzaW5nIGBhbmQoKWAgYW5kIGBvcigpYC4KKworW3NvdXJjZSxncm9vdnldCistLS0tCitncmVtbGluPiBnLlYoKS5oYXMoInBlcnNvbiIsIm5hbWUiLCBjb250YWluaW5nKCJvIikpLnZhbHVlTWFwKCkKKz09PltuYW1lOlttYXJrb10sYWdlOlsyOV1dCis9PT5bbmFtZTpbam9zaF0sYWdlOlszMl1dCitncmVtbGluPiBnLlYoKS5oYXMoInBlcnNvbiIsIm5hbWUiLCBjb250YWluaW5nKCJvIikuYW5kKGd0ZSgiaiIpLmFuZChlbmRpbmdXaXRoKCJrbyIpKSkpLnZhbHVlTWFwKCkKKz09PltuYW1lOlttYXJrb10sYWdlOlsyOV1dCistLS0tCisKK1NlZTogbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC0yMDQxW1RJTktFUlBPUC0yMDQxXQorCis9PT09IENoYW5nZWQgSW5maXggQmVoYXZpb3IKKworVGhlIGluZml4IG5vdGF0aW9uIG9mIGBhbmQoKWAgYW5kIGBvcigpYCBub3cgc3VwcG9ydHMgYW4gYXJiaXRyYXJ5IG51bWJlciBvZiB0cmF2ZXJzYWxzIGFuZCBgQ29ubmVjdGl2ZVN0cmF0ZWd5YAorcHJvZHVjZXMgYSB0cmF2ZXJzYWwgd2l0aCBwcm9wZXIgQU5EIGFuZCBPUiBzZW1hbnRpY3MuCisKK2BgYAorSW5wdXQ6IGEub3IuYi5hbmQuYy5vci5kLmFuZC5lLm9yLmYuYW5kLmcuYW5kLmgub3IuaQorCisqQkVGT1JFKgorT3V0cHV0OiBvcihhLCBvcihhbmQoYiwgYyksIG9yKGFuZChkLCBlKSwgb3IoYW5kKGFuZChmLCBnKSwgaCksIGkpKSkpCisKKypOT1cqCitPdXRwdXQ6IG9yKGEsIGFuZChiLCBjKSwgYW5kKGQsIGUpLCBhbmQoZiwgZywgaCksIGkpCitgYGAKKworRnVydGhlcm1vcmUsIHByZXZpb3VzIHZlcnNpb25zIGZhaWxlZCB0byBhcHBseSAzIG9yIG1vcmUgYGFuZCgpYCBzdGVwcyB1c2luZyB0aGUgaW5maXggbm90YXRpb24sIHRoaXMgaXMgbm93IGZpeGVkLgorCitbc291cmNlLGdyb292eV0KKy0tLS0KK2dyZW1saW4+IGcuVigpLmhhcygibmFtZSIsIm1hcmtvIikuYW5kKCkuaGFzKCJhZ2UiLCBsdCgzMCkpLm9yKCkuaGFzKCJuYW1lIiwiam9zaCIpLmFuZCgpLmhhcygiYWdlIiwgZ3QoMzApKS5hbmQoKS5vdXQoImNyZWF0ZWQiKQorPT0+dlsxXQorPT0+dls0XQorLS0tLQorCitTZWU6IGxpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMjAyOVtUSU5LRVJQT1AtMjAyOV0KKworPT09PSBHcmFwaEJpbmFyeQorCitHcmFwaEJpbmFyeSBpcyBhIG5ldyBsYW5ndWFnZSBhZ25vc3RpYywgbmV0d29yayBzZXJpYWxpemF0aW9uIGZvcm1hdCBkZXNpZ25lZCB0byByZXBsYWNlIEdyeW8gYW5kIEdyYXBoU09OLiBBdCB0aGlzCit0aW1lIGl0IGlzIG9ubHkgYXZhaWxhYmxlIG9uIHRoZSBKVk0sIGJ1dCBzdXBwb3J0IHdpbGwgYmUgYWRkZWQgZm9yIG90aGVyIGxhbmd1YWdlcyBpbiB1cGNvbWluZyByZWxlYXNlcy4gVGhlCitzZXJpYWxpemVyIGhhcyBiZWVuIGNvbmZpZ3VyZWQgaW4gR3JlbWxpbiBTZXJ2ZXIncyBwYWNrYWdlZCBjb25maWd1cmF0aW9uIGZpbGVzLiBUaGUgc2VyaWFsaXplciBjYW4gYmUgY29uZmlndXJlZAordXNpbmcgdGhlIEphdmEgZHJpdmVyIGFzIGZvbGxvd3M6CisKK1tzb3VyY2UsamF2YV0KKy0tLS0KK0NsdXN0ZXIgY2x1c3RlciA9IENsdXN0ZXIuYnVpbGQoImxvY2FsaG9zdCIpLnBvcnQoODE4MikuCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmlhbGl6ZXIoU2VyaWFsaXplcnMuR1JBUEhCSU5BUllfVjFEMCkuY3JlYXRlKCk7CitDbGllbnQgY2xpZW50ID0gY2x1c3Rlci5jb25uZWN0KCk7CitMaXN0PFJlc3VsdD4gciA9IGNsaWVudC5zdWJtaXQoImcuVigpLmhhcygncGVyc29uJywnbmFtZScsJ21hcmtvJykiKS5hbGwoKS5qb2luKCk7CistLS0tCisKK1NlZTogbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC0xOTQyW1RJTktFUlBPUC0xOTQyXSwKK2xpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuNC4wL2Rldi9pby8jZ3JhcGhiaW5hcnlbSU8gRG9jdW1lbnRhdGlvbl0KKworPT09PSBTdGF0dXMgQXR0cmlidXRlcworCitUaGUgR3JlbWxpbiBTZXJ2ZXIgcHJvdG9jb2wgYWxsb3dzIGZvciBzdGF0dXMgYXR0cmlidXRlcyB0byBiZSByZXR1cm5lZCBpbiByZXNwb25zZXMuIFRoZXNlIGF0dHJpYnV0ZXMgd2VyZSB0eXBpY2FsbHkKK2ZvciBpbnRlcm5hbCB1c2UsIGJ1dCB3ZXJlIGRlc2lnbmVkIHdpdGggZXh0ZW5zaWJpbGl0eSBpbiBtaW5kIHNvIHRoYXQgcHJvdmlkZXJzIGNvdWxkIHBsYWNlIHJldHVybiB0aGVpciBvd24KK2F0dHJpYnV0ZXMgdG8gY2FsbGluZyBjbGllbnRzLiBVbmZvcnR1bmF0ZWx5LCB1bmxlc3MgdGhlIGNsaWVudCB3YXMgYmVpbmcgdXNlZCB3aXRoIHByb3RvY29sIGxldmVsIHJlcXVlc3RzICh3aGljaAord2Fzbid0IGNvbnZlbmllbnQpIHRob3NlIGF0dHJpYnV0ZXMgd2VyZSBlc3NlbnRpYWxseSBoaWRkZW4gZnJvbSB2aWV3LiBBcyBvZiB0aGlzIHZlcnNpb24gaG93ZXZlciwgc3RhdHVzIGF0dHJpYnV0ZXMKK2FyZSBmdWxseSByZXRyaWV2YWJsZSBmb3IgYm90aCBzdWNjZXNzZnVsIHJlcXVlc3RzIGFuZCBleGNlcHRpb25zLgorCitTZWU6IGxpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMTkxM1tUSU5LRVJQT1AtMTkxM10KKworPT09PSB3aXRoKCkgU3RlcAorCitUaGlzIHZlcnNpb24gb2YgVGlua2VyUG9wIGludHJvZHVjZXMgdGhlIGB3aXRoKClgLXN0ZXAgdG8gR3JlbWxpbi4gSXQgaXNuJ3QgcmVhbGx5IGEgc3RlcCBidXQgaXMgaW5zdGVhZCBhIHN0ZXAKK21vZHVsYXRvci4gVGhpcyBtb2R1bGF0b3IgYWxsb3dzIHRoZSBzdGVwIGl0IGlzIG1vZGlmeWluZyB0byBhY2NlcHQgY29uZmlndXJhdGlvbnMgdGhhdCBjYW4gYmUgdXNlZCB0byBhbHRlciB0aGUKK2JlaGF2aW9yIG9mIHRoZSBzdGVwIGl0c2VsZi4gQSBnb29kIGV4YW1wbGUgb2YgaXRzIHVzYWdlIGlzIHNob3duIHdpdGggdGhlIHJldmlzZWQgc3ludGF4IG9mIHRoZSBgcGFnZVJhbmsoKWAtc3RlcAord2hpY2ggbm93IHVzZXMgYHdpdGgoKWAgdG8gcmVwbGFjZSB0aGUgb2xkIGBieSgpYCBvcHRpb25zOgorCitbc291cmNlLGdyb292eV0KKy0tLS0KK2cuVigpLmhhc0xhYmVsKCdwZXJzb24nKS4KKyAgcGFnZVJhbmsoKS4KKyAgICB3aXRoKFBhZ2VSYW5rLmVkZ2VzLCBfXy5vdXRFKCdrbm93cycpKS4KKyAgICB3aXRoKFBhZ2VSYW5rLnByb3BlcnR5TmFtZSwgJ2ZyaWVuZFJhbmsnKS4KKyAgb3JkZXIoKS4KKyAgICBieSgnZnJpZW5kUmFuaycsZGVzYykuCisgIHZhbHVlTWFwKCduYW1lJywnZnJpZW5kUmFuaycpCistLS0tCisKK0Egc2ltaWxhciBjaGFuZ2Ugd2FzIG1hZGUgZm9yIGBwZWVyUHJlc3N1cmUoKWAtc3RlcDoKKworW3NvdXJjZSxncm9vdnldCistLS0tCitnLlYoKS5oYXNMYWJlbCgncGVyc29uJykuCisgIHBlZXJQcmVzc3VyZSgpLgorICAgIHdpdGgoUGVlclByZXNzdXJlLnByb3BlcnR5TmFtZSwgJ2NsdXN0ZXInKS4KKyAgZ3JvdXAoKS4KKyAgICBieSgnY2x1c3RlcicpLgorICAgIGJ5KCduYW1lJykKKy0tLS0KKworTm90ZSB0aGF0IHRoZSBgYnkoKWAgbW9kdWxhdG9ycyBzdGlsbCB3b3JrLCBidXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgZGVwcmVjYXRlZCBhbmQgb3BlbiBmb3IgcmVtb3ZhbCBpbiBhIGZ1dHVyZQorcmVsZWFzZSB3aGVyZSBicmVha2luZyBjaGFuZ2VzIGFyZSBhbGxvd2VkLgorCitTZWU6IGxpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMTk3NVtUSU5LRVJQT1AtMTk3NV0sCitsaW5rOmh0dHBzOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8zLjQuMC9yZWZlcmVuY2UvI3dpdGgtc3RlcFtSZWZlcmVuY2UgRG9jdW1lbnRhdGlvbl0KKworPT09PSBzaG9ydGVzdFBhdGgoKSBTdGVwCisKK0NhbGN1bGF0aW5nIHRoZSBsaW5rOmh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Nob3J0ZXN0X3BhdGhfcHJvYmxlbVtzaG9ydGVzdCBwYXRoXSBiZXR3ZWVuIHZlcnRpY2VzIGlzIGEgY29tbW9uCitncmFwaCB1c2UgY2FzZS4gV2hpbGUgdGhlIHRyYXZlcnNhbCB0byBkZXRlcm1pbmUgYSBzaG9ydGVzdCBwYXRoIGNhbiBiZSBleHByZXNzZWQgaW4gR3JlbWxpbiwgdGhpcyBwYXJ0aWN1bGFyIHByb2JsZW0KK2lzIGNvbW1vbiBlbm91Z2ggdGhhdCB0aGUgZmVhdHVyZSBoYXMgYmVlbiBlbmNhcHN1bGF0ZWQgaW50byBpdHMgb3duIHN0ZXAsIGRlbW9uc3RyYXRlZCBhcyBmb2xsb3dzOgorCitbc291cmNlLHRleHRdCistLS0tCitncmVtbGluPiBnLndpdGhDb21wdXRlcigpLlYoKS5oYXMoJ25hbWUnLCdtYXJrbycpLgorLi4uLi4uMT4gICBzaG9ydGVzdFBhdGgoKS53aXRoKFNob3J0ZXN0UGF0aC50YXJnZXQsIGhhcygnbmFtZScsJ3BldGVyJykpCis9PT5bdlsxXSx2WzNdLHZbNl1dCistLS0tCisKK1NlZTogbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC0xOTkwW1RJTktFUlBPUC0xOTkwXSwKK2xpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLzMuNC4wL3JlZmVyZW5jZS8jc2hvcnRlc3RwYXRoLXN0ZXBbUmVmZXJlbmNlIERvY3VtZW50YXRpb25dCisKKz09PT0gY29ubmVjdGVkQ29tcG9uZW50KCkgU3RlcAorCitJbiBwcmlvciB2ZXJzaW9uIG9mIFRpbmtlclBvcCwgaXQgd2FzIHJlY29tbWVuZGVkIHRoYXQgdGhlIGlkZW50aWZpY2F0aW9uIG9mCitsaW5rOmh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Nvbm5lY3RlZF9jb21wb25lbnRfKGdyYXBoX3RoZW9yeSlbQ29ubmVjdGVkIENvbXBvbmVudF0gaW5zdGFuY2VzIGluIGEgZ3JhcGggYmUKK2NvbXB1dGVkIGJ5IHdheSBvZiBhIHJlYXNvbmFibHkgY29tcGxleCBiaXQgb2YgR3JlbWxpbiB0aGF0IGxvb2tlZCBzb21ldGhpbmcgbGlrZSB0aGlzOgorCitbc291cmNlLGdyb292eV0KKy0tLS0KK2cuVigpLmVtaXQoY3ljbGljUGF0aCgpLm9yKCkubm90KGJvdGgoKSkpLnJlcGVhdChib3RoKCkpLnVudGlsKGN5Y2xpY1BhdGgoKSkuCisgIHBhdGgoKS5hZ2dyZWdhdGUoInAiKS4KKyAgdW5mb2xkKCkuZGVkdXAoKS4KKyAgbWFwKF9fLmFzKCJ2Iikuc2VsZWN0KCJwIikudW5mb2xkKCkuCisgICAgICAgICBmaWx0ZXIodW5mb2xkKCkud2hlcmUoZXEoInYiKSkpLgorICAgICAgICAgdW5mb2xkKCkuZGVkdXAoKS5vcmRlcigpLmJ5KGlkKS5mb2xkKCkpLgorICBkZWR1cCgpCistLS0tCisKK1RoZSBhYm92ZSBhcHByb2FjaCBoYWQgYSBudW1iZXIgb2YgZHJhd2JhY2tzIHRoYXQgaW5jbHVkZWQgYSBsYXJnZSBleGVjdXRpb24gY29zdCBhcyB3ZWxsIGFzIGluY29tcGF0aWJpbGl0aWVzIGluIE9MQVAuCitUbyBzaW1wbGlmeSB1c2FnZSBvZiB0aGlzIGNvbW1vbmx5IHVzZSBncmFwaCBhbGdvcml0aG0sIFRpbmtlclBvcCAzLjQuMCBpbnRyb2R1Y2VzIHRoZSBgY29ubmVjdGVkQ29tcG9uZW50KClgIHN0ZXAKK3doaWNoIHJlZHVjZXMgdGhlIGFib3ZlIG9wZXJhdGlvbiB0bzoKKworW3NvdXJjZSxncm9vdnldCistLS0tCitnLndpdGhDb21wdXRlcigpLlYoKS5jb25uZWN0ZWRDb21wb25lbnQoKQorLS0tLQorCitJdCBpcyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IHRoaXMgc3RlcCBkb2VzIHJlcXVpcmUgdGhlIHVzZSBvZiBhIGBHcmFwaENvbXB1dGVyYCB0byB3b3JrLCBhcyBpdCB1dGlsaXplcyBhCitgVmVydGV4UHJvZ3JhbWAgYmVoaW5kIHRoZSBzY2VuZXMuCisKK1NlZTogbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC0xOTY3W1RJTktFUlBPUC0xOTY3XSwKK2xpbms6aHR0cHM6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzL3gueS56L3JlZmVyZW5jZS8jY29ubmVjdGVkY29tcG9uZW50LXN0ZXBbUmVmZXJlbmNlIERvY3VtZW50YXRpb25dCisKKz09PT0gaW8oKSBTdGVwCisKK1RoZXJlIGhhdmUgYmVlbiBzb21lIGltcG9ydGFudCBjaGFuZ2VzIHRvIElPIG9wZXJhdGlvbnMgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgZ3JhcGggZGF0YS4gVGhlIHVzZSBvZiBgR3JhcGguaW8oKWAKK2hhcyBiZWVuIGRlcHJlY2F0ZWQgdG8gZnVydGhlciByZW1vdmUgZGVwZW5kZW5jZSBvbiB0aGUgR3JhcGggKFN0cnVjdHVyZSkgQVBJIGZvciB1c2VycyBhbmQgdG8gZXh0ZW5kIHRoZXNlIGJhc2ljCitvcGVyYXRpb25zIHRvIEdMViB1c2VycyBieSBtYWtpbmcgdGhlc2UgZmVhdHVyZXMgYXZhaWxhYmxlIGFzIHBhcnQgb2YgdGhlIEdyZW1saW4gbGFuZ3VhZ2UuCisKK0l0IGlzIG5vdyBwb3NzaWJsZSB0byBzaW1wbHkgdXNlIEdyZW1saW46CisKK1tzb3VyY2UsZ3Jvb3Z5XQorLS0tLQorZ3JhcGggPSAuLi4KK2cgPSBncmFwaC50cmF2ZXJzYWwoKQorZy5pbyhzb21lSW5wdXRGaWxlKS5yZWFkKCkuaXRlcmF0ZSgpCitnLmlvKHNvbWVPdXRwdXRGaWxlKS53cml0ZSgpLml0ZXJhdGUoKQorLS0tLQorCitXaGlsZSBgaW8oKWAtc3RlcCBpcyBzdGlsbCBzaW5nbGUtdGhyZWFkZWQgZm9yIE9MVFAgc3R5bGUgbG9hZGluZywgaXQgY2FuIGJlIHV0aWxpemVkIGluIGNvbmp1bmN0aW9uIHdpdGggT0xBUCB3aGljaAoraW50ZXJuYWxseSB1c2VzIGBDbG9uZVZlcnRleFByb2dyYW1gIGFuZCB0aGVyZWZvcmUgYW55IGdyYXBoIGBJbnB1dEZvcm1hdGAgb3IgYE91dHB1dEZvcm1hdGAgY2FuIGJlIGNvbmZpZ3VyZWQgaW4KK2Nvbmp1bmN0aW9uIHdpdGggdGhpcyBzdGVwIGZvciBwYXJhbGxlbCBsb2FkcyBvZiBsYXJnZSBkYXRhc2V0cy4KKworSXQgaXMgYWxzbyB3b3J0aCBub3RpbmcgdGhhdCB0aGUgYGlvKClgLXN0ZXAgbWF5IGJlIG92ZXJyaWRkZW4gYnkgZ3JhcGggcHJvdmlkZXJzIHRvIHV0aWxpemUgdGhlaXIgbmF0aXZlIGJ1bGstbG9hZGluZworZmVhdHVyZXMsIHNvIGNvbnN1bHQgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhlIGltcGxlbWVudGF0aW9uIGJlaW5nIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZXJlIGFyZSBhbnkgaW1wcm92ZWQKK2VmZmljaWVuY2llcyB0aGVyZS4KKworU2VlOiBsaW5rOmh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvVElOS0VSUE9QLTE5OTZbVElOS0VSUE9QLTE5OTZdLAorbGluazpodHRwczovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvMy40LjAvcmVmZXJlbmNlLyNpby1zdGVwW1JlZmVyZW5jZSBEb2N1bWVudGF0aW9uXQorCis9PT09IFBlciBSZXF1ZXN0IE9wdGlvbnMKKworVGhlIEphdmEgZHJpdmVyIG5vdyBhbGxvd3MgZm9yIHZhcmlvdXMgb3B0aW9ucyB0byBiZSBzZXQgb24gYSBwZXItcmVxdWVzdCBiYXNpcyB2aWEgbmV3IG92ZXJsb2FkcyB0byBgc3VibWl0KClgIHRoYXQKK2FjY2VwdCBgUmVxdWVzdE9wdGlvbmAgaW5zdGFuY2VzLiBBIGdvb2QgdXNlLWNhc2UgZm9yIHRoaXMgZmVhdHVyZSBpcyB0byBzZXQgYSBwZXItcmVxdWVzdCBvdmVycmlkZSB0byB0aGUKK2BzY3JpcHRFdmFsdWF0aW9uVGltZW91dGAgc28gdGhhdCBpdCBvbmx5IGFwcGxpZXMgdG8gdGhlIGN1cnJlbnQgcmVxdWVzdC4KKworW3NvdXJjZSxqYXZhXQorLS0tLQorQ2x1c3RlciBjbHVzdGVyID0gQ2x1c3Rlci5vcGVuKCk7CitDbGllbnQgY2xpZW50ID0gY2x1c3Rlci5jb25uZWN0KCk7CitSZXF1ZXN0T3B0aW9ucyBvcHRpb25zID0gUmVxdWVzdE9wdGlvbnMuYnVpbGQoKS50aW1lb3V0KDUwMCkuY3JlYXRlKCk7CitMaXN0PFJlc3VsdD4gcmVzdWx0ID0gY2xpZW50LnN1Ym1pdCgiZy5WKCkiLCBvcHRpb25zKS5hbGwoKS5nZXQoKTsKKy0tLS0KKworU2VlOiBsaW5rOmh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvVElOS0VSUE9QLTEzNDJbVElOS0VSUE9QLTEzNDJdCisKKz09PT0gbWluKCkgbWF4KCkgYW5kIENvbXBhcmFibGUKKworUHJldmlvdXNseSBgbWluKClgIGFuZCBgbWF4KClgIHdlcmUgb25seSB3b3JraW5nIGZvciBudW1lcmljIHZhbHVlcy4gVGhpcyBoYXMgYmVlbiBjaGFuZ2VkIGFuZCB0aGVzZSBzdGVwcyBjYW4gbm93CitvcGVyYXRlIG92ZXIgYW55IGBDb21wYXJhYmxlYCB2YWx1ZS4gVGhlIGNvbW1vbiB3b3JrYXJvdW5kIHdhcyB0aGUgY29tYmluYXRpb24gb2YgYG9yZGVyKCkuYnkoKWAgYW5kIGBsaW1pdCgpYCBhcworc2hvd24gaGVyZToKKworW3NvdXJjZSxncm9vdnldCistLS0tCitncmVtbGluPiBnLlYoKS52YWx1ZXMoJ25hbWUnKS5vcmRlcigpLmJ5KCkubGltaXQoMSkgICAgICAvLyB3b3JrYXJvdW5kIGZvciBtaW4oKQorPT0+am9zaAorZ3JlbWxpbj4gZy5WKCkudmFsdWVzKCduYW1lJykub3JkZXIoKS5ieShkZWNyKS5saW1pdCgxKSAgLy8gd29ya2Fyb3VuZCBmb3IgbWF4KCkKKz09PnZhZGFzCistLS0tCisKK0FueSBhdHRlbXB0IHRvIHVzZSBgbWluKClgIG9yIGBtYXgoKWAgb24gbm9uLW51bWVyaWMgdmFsdWVzIGxlYWQgdG8gYW4gZXhjZXB0aW9uOgorCitbc291cmNlLGdyb292eV0KKy0tLS0KK2dyZW1saW4+IGcuVigpLnZhbHVlcygnbmFtZScpLm1pbigpCitqYXZhLmxhbmcuU3RyaW5nIGNhbm5vdCBiZSBjYXN0IHRvIGphdmEubGFuZy5OdW1iZXIKK1R5cGUgJzpoZWxwJyBvciAnOmgnIGZvciBoZWxwLgorRGlzcGxheSBzdGFjayB0cmFjZT8gW3lOXQorLS0tLQorCitXaXRoIHRoZSBjaGFuZ2VzIGluIHRoaXMgcmVsZWFzZSB0aGVzZSBraW5kIG9mIHF1ZXJpZXMgYmVjYW1lIGEgbG90IGVhc2llcjoKKworW3NvdXJjZSxncm9vdnldCistLS0tCitncmVtbGluPiBnLlYoKS52YWx1ZXMoJ25hbWUnKS5taW4oKQorPT0+am9zaAorZ3JlbWxpbj4gZy5WKCkudmFsdWVzKCduYW1lJykubWF4KCkKKz09PnZhZGFzCistLS0tCisKKz09PT0gTmVzdGVkIExvb3AgU3VwcG9ydAorCitUcmF2ZXJzYWxzIG5vdyBzdXBwb3J0IG5lc3Rpbmcgb2YgYHJlcGVhdCgpYCBsb29wcy4KKworVGhlc2UgY2FuIG5vdyBiZSB1c2VkIHRvIHJlcGVhdCBhbm90aGVyIHRyYXZlcnNhbCB3aGlsZSBpbiBhIGxvb3BlZCBjb250ZXh0LCBlaXRoZXIgaW5zaWRlIHRoZSBib2R5IG9mIGEgYHJlcGVhdCgpYCBvcgoraW4gaXRzIHN0ZXAgbW9kaWZpZXJzIChgdW50aWwoKWAgb3IgYGVtaXQoKWApLgorCitbc291cmNlLGdyb292eV0KKy0tLS0KK2dyZW1saW4+IGcuVigpLnJlcGVhdChfXy5pbigndHJhdmVyc2VzJykucmVwZWF0KF9fLmluKCdkZXZlbG9wcycpKS5lbWl0KCkpLmVtaXQoKS52YWx1ZXMoJ25hbWUnKQorPT0+c3RlcGhlbgorPT0+bWF0dGhpYXMKKz09Pm1hcmtvCistLS0tCisKK1NlZTogbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC05NjdbVElOS0VSUE9QLTk2N10KKworPT09PSBFdmVudFN0cmF0ZWd5IEFQSQorCitUaGVyZSB3ZXJlIHNvbWUgbWlub3IgbW9kaWZpY2F0aW9ucyB0byBob3cgYEV2ZW50U3RyYXRlZ3lgIGlzIGNvbnN0cnVjdGVkIGFuZCB3aGF0IGNhbiBiZSBleHBlY3RlZCBmcm9tIGV2ZW50cyByYWlzZWQKK2Zyb20gdGhlIGFkZGl0aW9uIG9mIG5ldyBwcm9wZXJ0aWVzLgorCitXaXRoIHJlc3BlY3QgdG8gdGhlIGNoYW5nZSBpbiB0ZXJtcyBvZiBgRXZlbnRTdHJhdGVneWAgY29uc3RydWN0aW9uLCB0aGUgYGRldGFjaCgpYCBidWlsZGVyIG1ldGhvZCBmb3JtZXJseSB0b29rIGEKK2BDbGFzc2AgYXMgYW4gYXJndW1lbnQgYW5kIHRoYXQgYENsYXNzYCB3YXMgbWVhbnQgdG8gYmUgb25lIG9mIHRoZSB2YXJpb3VzICJkZXRhY2htZW50IGZhY3RvcmllcyIgb3IgYG51bGxgLiBUaGF0CithcHByb2FjaCB3YXMgYSBiaXQgY29uZnVzaW5nLCBzbyB0aGF0IHNpZ25hdHVyZSBoYXMgY2hhbmdlZCB0byBgZGV0YWNoKEV2ZW50U3RyYXRlZ3kuRGV0YWNobWVudClgIHdoZXJlIHRoZSBhcmd1bWVudAoraXMgYSBtb3JlIGhhbmR5IGVudW0gb2YgZGV0YWNobWVudCBvcHRpb25zLgorCitBcyBmb3IgdGhlIGNoYW5nZXMgcmVsYXRlZCB0byBldmVudHMgdGhlbXNlbHZlcywgaXQgaXMgZmlyc3Qgd29ydGggbm90aW5nIHRoYXQgdGhlIHByZXZpb3VzbHkgZGVwcmVjYXRlZAorYHZlcnRleFByb3BlcnR5Q2hhbmdlZChWZXJ0ZXgsIFByb3BlcnR5LCBPYmplY3QsIE9iamVjdC4uLilgIG9uIGBNdXRhdGlvbkxpc3RlbmVyYCBoYXMgYmVlbiByZW1vdmVkIGZvciB3aGF0IHNob3VsZAoraGF2ZSBvcmlnaW5hbGx5IGJlZW4gdGhlIGNvcnJlY3Qgc2lnbmF0dXJlIG9mIGB2ZXJ0ZXhQcm9wZXJ0eUNoYW5nZWQoVmVydGV4LCBWZXJ0ZXhQcm9wZXJ0eSwgT2JqZWN0LCBPYmplY3QuLi4pYC4gSW4KK3ByaW9yIHZlcnNpb25zIHdoZW4gdGhpcyBtZXRob2QgYW5kIGl0cyByZWxhdGVkIGBlZGdlUHJvcGVydHlDaGFuZ2VkKClgIGFuZCBgdmVydGV4UHJvcGVydHlQcm9wZXJ0eUNoYW5nZWQoKWAgd2VyZQordHJpZ2dlcmVkIGJ5IHdheSBvZiB0aGUgYWRkaXRpb24gb2YgYSBuZXcgcHJvcGVydHkgYSAiZmFrZSIgcHJvcGVydHkgd2FzIGluY2x1ZGVkIHdpdGggYSBgbnVsbGAgdmFsdWUgZm9yIHRoZQorIm9sZFZhbHVlIiBhcmd1bWVudCB0byB0aGVzZSBtZXRob2RzIChhcyBpdCBkaWQgbm90IGV4aXN0IHByaW9yIHRvIHRoaXMgZXZlbnQpLiBUaGF0IHdhcyBhIGJpdCBhd2t3YXJkIHRvIHJlYXNvbiBhYm91dAord2hlbiBkZWFsaW5nIHdpdGggdGhhdCBldmVudC4gVG8gbWFrZSB0aGlzIGVhc2llciwgdGhlIGV2ZW50IG5vdyByYWlzZXMgd2l0aCBhIGBLZXllZFZlcnRleFByb3BlcnR5YCBvcgorYEtleWVkUHJvcGVydHlgIGluc3RhbmNlLCB3aGljaCBvbmx5IGNvbnRhaW5zIGEgcHJvcGVydHkga2V5IGFuZCBubyB2YWx1ZSBpbiB0aGVtLgorCitsaW5rOmh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvVElOS0VSUE9QLTE4MzFbVElOS0VSUE9QLTE4MzFdCisKKz09PT0gUmVkdWNpbmcgQmFycmllciBTdGVwcworCitUaGUgYmVoYXZpb3Igb2YgYG1pbigpYCwgYG1heCgpYCwgYG1lYW4oKWAgYW5kIGBzdW0oKWAgaGFzIGJlZW4gbW9kaWZpZWQgdG8gcmV0dXJuIG5vIHJlc3VsdCBpZiB0aGVyZSdzIG5vIGlucHV0LgorUHJldmlvdXNseSB0aGVzZSBzdGVwcyB5aWVsZGVkIHRoZSBpbnRlcm5hbCBzZWVkIHZhbHVlOgorCitbc291cmNlLGdyb292eV0KKy0tLS0KK2dyZW1saW4+IGcuVigpLnZhbHVlcygnZm9vJykubWluKCkKKz09Pk5hTgorZ3JlbWxpbj4gZy5WKCkudmFsdWVzKCdmb28nKS5tYXgoKQorPT0+TmFOCitncmVtbGluPiBnLlYoKS52YWx1ZXMoJ2ZvbycpLm1lYW4oKQorPT0+TmFOCitncmVtbGluPiBnLlYoKS52YWx1ZXMoJ2ZvbycpLnN1bSgpCis9PT4wCistLS0tCisKK1RoZXNlIHRyYXZlcnNhbHMgd2lsbCBubyBsb25nZXIgZW1pdCBhIHJlc3VsdC4gTm90ZSwgdGhhdCB0aGlzIGFsc28gYWZmZWN0cyBtb3JlIGNvbXBsZXggc2NlbmFyaW9zLCBlLmcuIGlmIHRoZXNlCitzdGVwcyBhcmUgdXNlZCBpbiBgYnkoKWAgbW9kdWxhdG9yczoKKworW3NvdXJjZSxncm9vdnldCistLS0tCitncmVtbGluPiBnLlYoKS5ncm91cCgpLgorLi4uLi4uMT4gICBieShsYWJlbCkuCisuLi4uLi4yPiAgIGJ5KG91dEUoKS52YWx1ZXMoIndlaWdodCIpLnN1bSgpKQorPT0+W3NvZnR3YXJlOjAscGVyc29uOjMuNV0KKy0tLS0KKworU2luY2Ugc29mdHdhcmUgdmVydGljZXMgaGF2ZSBubyBvdXRnb2luZyBlZGdlcyBhbmQgdGh1cyBubyB3ZWlnaHQgdmFsdWVzIHRvIHN1bSwgYHNvZnR3YXJlYCB3aWxsIG5vIGxvbmdlciBzaG93IHVwIGluCit0aGUgcmVzdWx0LiBJbiBvcmRlciB0byBnZXQgdGhlIHNhbWUgcmVzdWx0IGFzIGJlZm9yZSwgb25lIHdvdWxkIGhhdmUgdG8gYWRkIGEgYGNvYWxlc2NlKClgLXN0ZXA6CisKK1tzb3VyY2UsZ3Jvb3Z5XQorLS0tLQorZ3JlbWxpbj4gZy5WKCkuZ3JvdXAoKS4KKy4uLi4uLjE+ICAgYnkobGFiZWwpLgorLi4uLi4uMj4gICBieShvdXRFKCkudmFsdWVzKCJ3ZWlnaHQiKS5zdW0oKSkKKz09PltwZXJzb246My41XQorZ3JlbWxpbj4gZy5WKCkuZ3JvdXAoKS4KKy4uLi4uLjE+ICAgYnkobGFiZWwpLgorLi4uLi4uMj4gICBieShjb2FsZXNjZShvdXRFKCkudmFsdWVzKCJ3ZWlnaHQiKSwgY29uc3RhbnQoMCkpLnN1bSgpKQorPT0+W3NvZnR3YXJlOjAscGVyc29uOjMuNV0KKy0tLS0KKworU2VlOiBsaW5rOmh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvVElOS0VSUE9QLTE3NzdbVElOS0VSUE9QLTE3NzddCisKKz09PT0gT3JkZXIgb2Ygc2VsZWN0KCkgU2NvcGVzCisKK1RoZSBvcmRlciBvZiBzZWxlY3Qgc2NvcGVzIGhhcyBiZWVuIGNoYW5nZWQgdG86IG1hcHMsIHNpZGUtZWZmZWN0cywgcGF0aHMuIFByZXZpb3VzbHkgdGhlIG9yZGVyIHdhczogc2lkZS1lZmZlY3RzLAorbWFwcywgcGF0aHMgLSB3aGljaCBtYWRlIGl0IGFsbW9zdCBpbXBvc3NpYmxlIHRvIHNlbGVjdCBhIHNwZWNpZmljIG1hcCBlbnRyeSBpZiBhIHNpZGUtZWZmZWN0IHdpdGggdGhlIHNhbWUgbmFtZQorZXhpc3RlZC4KKworVGhlIGZvbGxvd2luZyBzbmlwcGV0cyBpbGx1c3RyYXRlIHRoZSBjaGFuZ2VkIGJlaGF2aW9yOgorCitbc291cmNlLGdyb292eV0KKy0tLS0KK2dyZW1saW4+IGcuVigxKS4KKy4uLi4uLjE+ICAgZ3JvdXAoImEiKS4KKy4uLi4uLjI+ICAgICBieShfXy5jb25zdGFudCgiYSIpKS4KKy4uLi4uLjM+ICAgICBieShfXy52YWx1ZXMoIm5hbWUiKSkuCisuLi4uLi40PiAgIHNlbGVjdCgiYSIpCis9PT5bYTptYXJrb10KK2dyZW1saW4+IGcuVigxKS4KKy4uLi4uLjE+ICAgZ3JvdXAoImEiKS4KKy4uLi4uLjI+ICAgICBieShfXy5jb25zdGFudCgiYSIpKS4KKy4uLi4uLjM+ICAgICBieShfXy52YWx1ZXMoIm5hbWUiKSkuCisuLi4uLi40PiAgIHNlbGVjdCgiYSIpLnNlbGVjdCgiYSIpCis9PT5bYTptYXJrb10KKy0tLS0KKworQWJvdmUgaXMgdGhlIG9sZCBiZWhhdmlvcjsgdGhlIHNlY29uZCBgc2VsZWN0KCJhIilgIGhhcyBubyBlZmZlY3QsIGl0IHNlbGVjdHMgdGhlIHNpZGUtZWZmZWN0IGBhYCBhZ2FpbiwgYWx0aG91Z2ggb25lCit3b3VsZCBleHBlY3QgdG8gZ2V0IHRoZSBtYXAgZW50cnkgYGFgLiBXaGF0IGZvbGxvd3MgaXMgdGhlIG5ldyBiZWhhdmlvcjoKKworW3NvdXJjZSxncm9vdnldCistLS0tCitncmVtbGluPiBnLlYoMSkuCisuLi4uLi4xPiAgIGdyb3VwKCJhIikuCisuLi4uLi4yPiAgICAgYnkoX18uY29uc3RhbnQoImEiKSkuCisuLi4uLi4zPiAgICAgYnkoX18udmFsdWVzKCJuYW1lIikpLgorLi4uLi4uND4gICBzZWxlY3QoImEiKQorPT0+W2E6bWFya29dCitncmVtbGluPiBnLlYoMSkuCisuLi4uLi4xPiAgIGdyb3VwKCJhIikuCisuLi4uLi4yPiAgICAgYnkoX18uY29uc3RhbnQoImEiKSkuCisuLi4uLi4zPiAgICAgYnkoX18udmFsdWVzKCJuYW1lIikpLgorLi4uLi4uND4gICBzZWxlY3QoImEiKS5zZWxlY3QoImEiKQorPT0+bWFya28KKy0tLS0KKworU2VlOiBsaW5rOmh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvVElOS0VSUE9QLTE1MjJbVElOS0VSUE9QLTE1MjJdCisKKz09PT0gR3JhcGhTT04gQnVsa1NldAorCitJbiBlYXJsaWVyIHZlcnNpb25zIG9mIFRpbmtlclBvcCwgYEJ1bGtTZXRgIHdhcyBjb2VyY2VkIHRvIGEgYExpc3RgIGZvciBHcmFwaFNPTiB3aGljaCB3YXMgY29udmVuaWVudCBpbiB0aGF0IGl0CitkaWRuJ3QgYWRkIGEgbmV3IGRhdGEgdHlwZSB0byBzdXBwb3J0LCBidXQgaW5jb252ZW5pZW50IGluIHRoYXQgaXQgbWVhbnQgdGhhdCBjZXJ0YWluIHByb2Nlc3MgdGVzdHMgd2VyZSBub3QgY29uc2lzdGVudAoraW4gdGVybXMgb2YgaG93IHRoZXkgcmFuIGFuZCB0aGUgYmVuZWZpdHMgb2YgdGhlIGBCdWxrU2V0YCB3ZXJlICJsb3N0IiBpbiB0aGF0IHRoZSAiYnVsayIgd2FzIGJlaW5nIHJlc29sdmVkIHNlcnZlcgorc2lkZS4gV2l0aCB0aGUgYWRkaXRpb24gb2YgYEJ1bGtTZXRgIGFzIGEgR3JhcGhTT04gdHlwZSB0aGUgImJ1bGsiIGlzIG5vdyByZXNvbHZlZCBvbiB0aGUgY2xpZW50IHNpZGUgYnkgdGhlIGxhbmd1YWdlCit2YXJpYW50LiBIb3cgdGhhdCByZXNvbHV0aW9uIG9jY3VycyBkZXBlbmRzIHVwb24gdGhlIGxhbmd1YWdlIHZhcmlhbnQuIEZvciBKYXZhLCB0aGVyZSBpcyBhIGBCdWxrU2V0YCBvYmplY3Qgd2hpY2gKK21haW50YWlucyB0aGF0IHN0cnVjdHVyZSBzZW50IGZyb20gdGhlIHNlcnZlci4gRm9yIHRoZSBvdGhlciB2YXJpYW50cywgdGhlIGBCdWxrU2V0YCBpcyBkZXNlcmlhbGl6ZWQgdG8gYSBgTGlzdGAgZm9ybQord2hpY2ggcmVzdWx0cyBpbiBhIG11Y2ggbGFyZ2VyIG1lbW9yeSBmb290cHJpbnQgdGhhbiB3aGF0IGlzIGNvbnRhaW5lZCB0aGUgYEJ1bGtTZXRgLgorCitTZWU6IGxpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMjExMVtUSU5LRVJQT1AtMjExMV0KKworPT09PSBQeXRob24gQmluZGluZ3MKKworQmluZGluZ3Mgd2VyZSBmb3JtZXJseSBjcmVhdGVkIHVzaW5nIGEgUHl0aG9uIDItdHVwbGUgYXMgYSBiaXQgb2Ygc3ludGFjdGljIHN1Z2FyLCBidXQgYWxsIG90aGVyIGxhbmd1YWdlIHZhcmlhbnRzCit1c2VkIGFuIGV4cGxpY2l0IGBCaW5kaW5nc2Agb2JqZWN0IHdoaWNoIGBncmVtbGluLXB5dGhvbmAgYWxyZWFkeSBoYWQgaW4gcGxhY2UuIFRvIG1ha2UgYWxsIHdvcmsgdmFyaWFudHMgYmVoYXZlCitjb25zaXN0ZW50bHksIHRoZSAyLXR1cGxlIHN5bnRheCBoYXMgYmVlbiByZW1vdmVkIGluIGZhdm9yIG9mIHRoZSBleHBsaWNpdCBgQmluZGluZ3Mub2YoKWAgb3B0aW9uLgorCitbc291cmNlLHB5dGhvbl0KKy0tLS0KK2cuVihCaW5kaW5ncy5vZignaWQnLDEpKS5vdXQoJ2NyZWF0ZWQnKS5tYXAobGFtYmRhOiAoIml0LmdldCgpLnZhbHVlKCduYW1lJykubGVuZ3RoKCkiLCAiZ3JlbWxpbi1ncm9vdnkiKSkuc3VtKCkKKy0tLS0KKworU2VlOiBsaW5rOmh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvVElOS0VSUE9QLTIxMTZbVElOS0VSUE9QLTIxMTZdCisKKz09PT0gRGVwcmVjYXRpb24gYW5kIFJlbW92YWwKKworVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBuZXdseSBkZXByZWNhdGVkIGNsYXNzZXMsIG1ldGhvZHMsIGNvbXBvbmVudHMgYW5kIHBhdHRlcm5zIG9mIHVzYWdlIGFzIHdlbGwgYXMgd2hpY2ggcHJldmlvdXNseQorZGVwcmVjYXRlZCBmZWF0dXJlcyBoYXZlIGJlZW4gb2ZmaWNpYWxseSByZW1vdmVkIG9yIHJlcHVycG9zZWQuCisKKz09PT09IE1vdmluZyBvZiBSZW1vdGVHcmFwaAorCitgUmVtb3RlR3JhcGhgIHdhcyBsb25nIGFnbyBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGB3aXRoUmVtb3RlKClgLiBJdCBiZWNhbWUgZXZlbiBsZXNzIHVzZWZ1bCB3aXRoIHRoZSBpbnRyb2R1Y3Rpb24gb2YKK3RoZSBgQW5vbnltb3VzVHJhdmVyc2FsU291cmNlYCBjb25jZXB0IGluIDMuMy41LiBJdCdzIG9ubHkgcmVhbCB1c2Ugd2FzIGZvciB0ZXN0aW5nIHJlbW90ZSBieXRlY29kZSBiYXNlZCB0cmF2ZXJzYWxzCitpbiB0aGUgdGVzdCBzdWl0ZSBhcyB0aGUgdGVzdCBzdWl0ZSByZXF1aXJlcyBhbiBhY3R1YWwgYEdyYXBoYCBvYmplY3QgdG8gZnVuY3Rpb24gcHJvcGVybHkuIEFzIHN1Y2gsIGBSZW1vdGVHcmFwaGAgaGFzCitiZWVuIG1vdmVkIHRvIGBncmVtbGluLXRlc3RgLiBJdCBzaG91bGQgbm8gbG9uZ2VyIGJlIHVzZWQgaW4gYW55IGNhcGFjaXR5IGJlc2lkZXMgdGhhdC4KKworU2VlOiBsaW5rOmh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvVElOS0VSUE9QLTIwNzlbVElOS0VSUE9QLTIwNzldCisKKz09PT09IFJlbW92YWwgb2YgR2lyYXBoIFN1cHBvcnQKKworU3VwcG9ydCBmb3IgR2lyYXBoIGhhcyBiZWVuIHJlbW92ZWQgYXMgb2YgdGhpcyB2ZXJzaW9uLiBUaGVyZSB3ZXJlIGEgbnVtYmVyIG9mIHJlYXNvbnMgZm9yIHRoaXMgZGVjaXNpb24gd2hpY2ggd2VyZQorZGlzY3Vzc2VkIGluIHRoZSBjb21tdW5pdHkgcHJpb3IgdG8gdGFraW5nIHRoaXMgc3RlcC4gVXNlcnMgc2hvdWxkIHN3aXRjaCB0byBTcGFyayBmb3IgdGhlaXIgT0xBUCBiYXNlZCBncmFwaC1jb21wdXRpbmcKK25lZWRzLgorCitTZWU6IGxpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMTkzMFtUSU5LRVJQT1AtMTkzMF0KKworPT09PT0gUmVtb3ZhbCBvZiBSZWJpbmRpbmdzIE9wdGlvbnMKKworVGhlICJyZWJpbmRpbmdzIiBvcHRpb24gaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCBmb3IgY2xpZW50cy4gSXQgd2FzIGRlcHJlY2F0ZWQgbG9uZyBhZ28gYXQgMy4xLjAuIFRoZSBzZXJ2ZXIgd2lsbCBub3QKK3Jlc3BvbmQgdG8gdGhlbSBvbiBhbnkgY2hhbm5lbCAtIHdlYnNvY2tldHMsIG5pbyBvciBIVFRQLiBVc2UgdGhlICJhbGlhc2VzIiBvcHRpb24gaW5zdGVhZC4KKworbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC0xNzA1W1RJTktFUlBPUC0xNzA1XQorCis9PT09PSBncmVtbGluLXNlcnZlci5zaCAtaSBSZW1vdmFsCisKK1RoZSBgLWlgIG9wdGlvbiBmb3IgaW5zdGFsbGluZyBkZXBlbmRlbmNpZXMgaW4gR3JlbWxpbiBTZXJ2ZXIgd2FzIGxvbmcgYWdvIGRlcHJlY2F0ZWQgYW5kIGhhcyBub3cgYmVlbiByZW1vdmVkLiBQbGVhc2UKK3VzZSBgaW5zdGFsbGAgYXMgaXRzIHJlcGxhY2VtZW50IGdvaW5nIGZvcndhcmQuCisKK2xpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMjAzMVtUSU5LRVJQT1AtMjAzMV0KKworPT09PT0gRGVwcmVjYXRpb24gUmVtb3ZhbAorCitUaGUgZm9sbG93aW5nIGRlcHJlY2F0ZWQgY2xhc3NlcywgbWV0aG9kcyBvciBmaWVsZHMgaGF2ZSBiZWVuIHJlbW92ZWQgaW4gdGhpcyB2ZXJzaW9uOgorCisqIGBncmVtbGluLWNvcmVgCisqKiBgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5qc3IyMjMuSW1wb3J0Q3VzdG9taXplciNHUkVNTElOX0NPUkVgCisqKiBgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnJlbW90ZS5SZW1vdGVHcmFwaGAgLSBtb3ZlZCB0byBgZ3JlbWxpbi10ZXN0YAorKiogYG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5yZW1vdGUuUmVtb3RlQ29ubmVjdGlvbi5zdWJtaXQoVHJhdmVyc2FsKWAKKyoqIGBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MucmVtb3RlLlJlbW90ZUNvbm5lY3Rpb24uc3VibWl0KEJ5dGVjb2RlKWAKKyoqIGBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MucmVtb3RlLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLlJlbW90ZVN0cmF0ZWd5I2lkZW50aXR5KClgCisqKiBgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWxFbmdpbmVgCisqKiBgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5lbmdpbmUuKmAKKyoqIGBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uUGFydGl0aW9uU3RyYXRlZ3kuQnVpbGRlciNhZGRSZWFkUGFydGl0aW9uKFN0cmluZylgCisqKiBgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLlN1YmdyYXBoU3RyYXRlZ3kuQnVpbGRlciNlZGdlQ3JpdGVyaW9uKFRyYXZlcnNhbClgCisqKiBgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLlN1YmdyYXBoU3RyYXRlZ3kuQnVpbGRlciN2ZXJ0ZXhDcml0ZXJpb24oVHJhdmVyc2FsKWAKKyoqIGBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLkxhbWJkYUNvbGxlY3RpbmdCYXJyaWVyU3RlcC5Db25zdW1lcnNgCisqKiBgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuSGFzQ29udGFpbmVyI21ha2VIYXNDb250YWluZXJzKFN0cmluZywgUClgCisqKiBgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuZXZlbnQuTXV0YXRpb25MaXN0ZW5lciN2ZXJ0ZXhQcm9wZXJ0eUNoYW5nZWQoVmVydGV4LCBQcm9wZXJ0eSwgT2JqZWN0LCBPYmplY3QuLi4pYAorKiogYG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkVsZW1lbnQuRXhjZXB0aW9ucyNlbGVtZW50QWxyZWFkeVJlbW92ZWQoQ2xhc3MsIE9iamVjdClgCisqKiBgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGguRXhjZXB0aW9ucyNlbGVtZW50Tm90Rm91bmQoQ2xhc3MsIE9iamVjdClgCisqKiBgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGguRXhjZXB0aW9ucyNlbGVtZW50Tm90Rm91bmQoQ2xhc3MsIE9iamVjdCwgRXhjZXB0aW9uKWAKKyogYGdyZW1saW4tZHJpdmVyYAorKiogYG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLkNsaWVudCNyZWJpbmQoU3RyaW5nKWAKKyoqIGBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5DbGllbnQuUmVib3VuZENsdXN0ZXJkQ2xpZW50YAorKiogYG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLlRva2VucyNBUkdTX1JFQklORElOR1NgCisqIGBncmVtbGluLWdyb292eWAKKyoqIGBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmdyb292eS5qc3IyMjMuR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZS5jbG9zZSgpYCAtIG5vIGxvbmdlciBpbXBsZW1lbnRzIGBBdXRvQ2xvc2VhYmxlYAorKiBgZ3JlbWxpbi1zZXJ2ZXJgCisqKiBgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIuR3JhcGhNYW5hZ2VyI2dldEdyYXBocygpYAorKiogYG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc2VydmVyLkdyYXBoTWFuYWdlciNnZXRUcmF2ZXJzYWxTb3VyY2VzKClgCisqKiBgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIuU2V0dGluZ3Mjc2VyaWFsaXplZFJlc3BvbnNlVGltZW91dGAKKyoqIGBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNlcnZlci5TZXR0aW5ncy5BdXRoZW50aWNhdGlvblNldHRpbmdzI2NsYXNzTmFtZWAKKyoqIGBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNlcnZlci5oYW5kbGVyLk9wU2VsZWN0b3JIYW5kbGVyKFNldHRpbmdzLCBHcmFwaE1hbmFnZXIsIEdyZW1saW5FeGVjdXRvciwgU2NoZWR1bGVkRXhlY3V0b3JTZXJ2aWNlKWAKKyoqIGBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNlcnZlci5vcC5BYnN0cmFjdE9wUHJvY2Vzc29yI21ha2VGcmFtZShDaGFubmVsSGFuZGxlckNvbnRleHQsIFJlcXVlc3RNZXNzYWdlLCBNZXNzYWdlU2VyaWFsaXplciBzZXJpYWxpemVyLCBib29sZWFuLCBMaXN0LCBSZXNwb25zZVN0YXR1c0NvZGUgY29kZSlgCisqIGBoYWRvb3AtZ3JhcGhgCisqKiBgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLkhhZG9vcENvbmZpZ3VyYXRpb24jZ2V0R3JhcGhJbnB1dEZvcm1hdCgpYAorKiogYG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5IYWRvb3BDb25maWd1cmF0aW9uI2dldEdyYXBoT3V0cHV0Rm9ybWF0KClgCisKK1BsZWFzZSBzZWUgdGhlIGphdmFkb2MgZGVwcmVjYXRpb24gbm90ZXMgb3IgdXBncmFkZSBkb2N1bWVudGF0aW9uIHNwZWNpZmljIHRvIHdoZW4gdGhlIGRlcHJlY2F0aW9uIHRvb2sgcGxhY2UgdG8KK3VuZGVyc3RhbmQgaG93IHRvIHJlc29sdmUgdGhpcyBicmVha2luZyBjaGFuZ2UuCisKK1NlZTogbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC0xMTQzW1RJTktFUlBPUC0xMTQzXSwKK2xpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMTI5NltUSU5LRVJQT1AtMTI5Nl0sCitsaW5rOmh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvVElOS0VSUE9QLTE3MDVbVElOS0VSUE9QLTE3MDVdLAorbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC0xNzA3W1RJTktFUlBPUC0xNzA3XSwKK2xpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMTk1NFtUSU5LRVJQT1AtMTk1NF0sCitsaW5rOmh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvVElOS0VSUE9QLTE5ODZbVElOS0VSUE9QLTE5ODZdLAorbGluazpodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC0yMDc5W1RJTktFUlBPUC0yMDc5XSwKK2xpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMjEwM1tUSU5LRVJQT1AtMjEwM10KKworPT09PT0gRGVwcmVjYXRlZCBHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyR3JlbWxpblYyZDAKKworVGhlIGBHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyR3JlbWxpblYyZDBgIHNlcmlhbGl6ZXIgaXMgbm93IGFuYWxvZ291cyB0byBgR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYyZDBgIGFuZCB0aGVyZWZvcmUKK3JlZHVuZGFudC4gSXQgaGFzIHRlY2huaWNhbGx5IGFsd2F5cyBiZWVuIGVxdWl2YWxlbnQgaW4gdGVybXMgb2YgZnVuY3Rpb25hbGl0eSBhcyBib3RoIHNlcmlhbGl6ZWQgdG8gdGhlIHNhbWUgZm9ybWF0CisoaS5lLiBHcmFwaFNPTiAyLjAgd2l0aCBlbWJlZGRlZCB0eXBlcykuIEl0IGlzIG5vIGxvbmdlciBjbGVhciB3aHkgdGhlc2UgdHdvIGNsYXNzZXMgd2VyZSBlc3RhYmxpc2hlZCB0aGlzIHdheSwgYnV0CitpdCBkb2VzIGNhcnJ5IHRoZSBuZWdhdGl2ZSBlZmZlY3Qgd2hlcmUgbXVsdGlwbGUgc2VyaWFsaXplciB2ZXJzaW9ucyBjb3VsZCBub3QgYmUgYm91bmQgdG8gR3JlbWxpbiBTZXJ2ZXIncyBIVFRQCitlbmRwb2ludCBhcyB0aGUgTUlNRSB0eXBlcyBjb25mbGljdGVkIG9uIGBhcHBsaWNhdGlvbi9qc29uYC4gQnkgc2ltcGx5IG1ha2luZyBib3RoIG1lc3NhZ2Ugc2VyaWFsaXplcnMgc3VwcG9ydAorYGFwcGxpY2F0aW9uL2pzb25gIGFuZCBgYXBwbGljYXRpb24vdm5kLmdyZW1saW4tdjIuMCtqc29uYCwgaXQgdGhlbiBiZWNhbWUgcG9zc2libGUgdG8gb3ZlcmNvbWUgdGhhdCBsaW1pdGF0aW9uLiBJbgorc2hvcnQsIHByZWZlciB1c2Ugb2YgYEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwYCB3aGVuIHBvc3NpYmxlLgorCitOb3RlIHRoYXQgdGhpcyBpcyBhIGJyZWFraW5nIGNoYW5nZSBpbiB0aGUgc2Vuc2UgdGhhdCBgR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYyZDBgIHdpbGwgbm8gbG9uZ2VyIHNldCB0aGUgaGVhZGVyIG9mCityZXF1ZXN0cyBtZXNzYWdlcyB0byBgYXBwbGljYXRpb24vanNvbmAuIEFzIGEgcmVzdWx0LCBvbGRlciB2ZXJzaW9ucyBvZiBHcmVtbGluIFNlcnZlciBub3QgY29uZmlndXJlZCB3aXRoCitgR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplckdyZW1saW5WMmQwYCB3aWxsIG5vdCBmaW5kIGEgZGVzZXJpYWxpemVyIHRvIG1hdGNoIHRoZSByZXF1ZXN0LgorCitTZWU6IGxpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMTk4NFtUSU5LRVJQT1AtMTk4NF0KKworPT09PT0gUmVtb3ZlZCBncm9vdnktc3FsIERlcGVuZGVuY3kKKworR3JlbWxpbiBDb25zb2xlIGFuZCBHcmVtbGluIFNlcnZlciBubyBsb25nZXIgaW5jbHVkZSBncm9vdnktc3FsLiAgSWYgeW91IGRlcGVuZCBvbiBncm9vdnktc3FsLAoreW91IGNhbiBpbnN0YWxsIGl0IGluIEdyZW1saW4gQ29uc29sZSBvciBHcmVtbGluIFNlcnZlciB1c2luZyB0aGUgcGx1Z2luIHN5c3RlbS4KKworQ29uc29sZToKK2BgYAorOmluc3RhbGwgb3JnLmNvZGVoYXVzLmdyb292eSBncm9vdnktc3FsIDIuNS4yCitgYGAKKworU2VydmVyOgorYGBgCitiaW4vZ3JlbWxpbi1zZXJ2ZXIuc2ggaW5zdGFsbCBvcmcuY29kZWhhdXMuZ3Jvb3Z5IGdyb292eS1zcWwgMi41LjIKK2BgYAorCitJZiB5b3VyIHByb2plY3QgZGVwZW5kZWQgb24gZ3Jvb3Z5LXNxbCB0cmFuc2l0aXZlbHksIHNpbXBseSBpbmNsdWRlIGl0IGluIHlvdXIgcHJvamVjdCdzIGJ1aWxkIGZpbGUgKGUuZy4gbWF2ZW46IHBvbS54bWwpLgorCitTZWU6IGxpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMjAzN1tUSU5LRVJQT1AtMjAzN10KKworPT09IFVwZ3JhZGluZyBmb3IgUHJvdmlkZXJzCisKKz09PT0gR3JhcGggRGF0YWJhc2UgUHJvdmlkZXJzCisKKz09PT09IGlvKCkgU3RlcAorCitUaGUgbmV3IGBpbygpYC1zdGVwIHRoYXQgd2FzIGludHJvZHVjZWQgcHJvdmlkZXMgc29tZSBuZXcgY2hhbmdlcyB0byBjb25zaWRlci4gTm90ZSB0aGF0IGBHcmFwaC5pbygpYCBoYXMgYmVlbgorZGVwcmVjYXRlZCBhbmQgdXNlcnMgYXJlIG5vIGxvbmdlciBpbnN0cnVjdGVkIHRvIHV0aWxpemUgdGhhdCBtZXRob2QuIEl0IGlzIG5vdCB5ZXQgZGVjaWRlZCB3aGVuIHRoYXQgbWV0aG9kIHdpbGwgYmUKK3JlbW92ZWQgY29tcGxldGVseSwgYnV0IGdpdmVuIHRoZSBwdWJsaWMgbmF0dXJlIG9mIGl0IGFuZCB0aGUgaGlnaCBjaGFuY2Ugb2YgY29tbW9uIHVzYWdlLCBpdCBzaG91bGQgYmUgaGFuZ2luZyBhcm91bmQKK2ZvciBzb21lIHRpbWUuCisKK0FzIHdpdGggYW55IHN0ZXAgaW4gR3JlbWxpbiwgaXQgaXMgcG9zc2libGUgdG8gcmVwbGFjZSBpdCB3aXRoIGEgbW9yZSBwcm92aWRlciBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiB0aGF0IGNvdWxkIGJlCittb3JlIGVmZmljaWVudC4gRGV2ZWxvcGluZyBhIGBUcmF2ZXJzYWxTdHJhdGVneWAgdG8gZG8gdGhpcyBpcyBlbmNvdXJhZ2VkLCBlc3BlY2lhbGx5IGZvciB0aG9zZSBncmFwaCBwcm92aWRlcnMgd2hvCittaWdodCBoYXZlIHNwZWNpYWwgYnVsayBsb2FkZXJzIHRoYXQgY291bGQgYmUgYWJzdHJhY3RlZCBieSB0aGlzIHN0ZXAuIEV4YW1wbGVzIG9mIHRoaXMgYXJlIGFscmVhZHkgc2hvd24gd2l0aAorYEhhZG9vcEdyYXBoYCB3aGljaCByZXBsYWNlcyB0aGUgc2ltcGxlIHNpbmdsZS10aHJlYWRlZCBsb2FkZXIgd2l0aCBgQ2xvbmVWZXJ0ZXhQcm9ncmFtYC4gR3JhcGggcHJvdmlkZXJzIGFyZQorZW5jb3VyYWdlZCB0byB1c2UgdGhlIGB3aXRoKClgIHN0ZXAgdG8gY2FwdHVyZSBhbnkgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zIHJlcXVpcmVkIGZvciB0aGVpciB1bmRlcmx5aW5nIGxvYWRlciB0bword29yay4gR3JhcGggcHJvdmlkZXJzIHNob3VsZCBub3QgZmVlbCByZXN0cmljdGVkIHRvIGBncmFwaHNvbmAsIGBncnlvYCBhbmQgYGdyYXBobWxgIGZvcm1hdHMgZWl0aGVyLiBJZiBhIGdyYXBoCitzdXBwb3J0cyBDU1Ygb3Igc29tZSBjdXN0b20gZ3JhcGggc3BlY2lmaWMgZm9ybWF0LCBpdCBzaG91bGRuJ3QgYmUgZGlmZmljdWx0IHRvIGdhdGhlciB0aGUgY29uZmlndXJhdGlvbnMgbmVjZXNzYXJ5IHRvCittYWtlIHRoYXQgYXZhaWxhYmxlIHRvIHVzZXJzLgorCitTZWU6IGxpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMTk5NltUSU5LRVJQT1AtMTk5Nl0KKworPT09PT0gQ2FjaGluZyBHcmFwaCBGZWF0dXJlcworCitGb3IgZ3JhcGggaW1wbGVtZW50YXRpb25zIHRoYXQgaGF2ZSBleHBlbnNpdmUgY3JlYXRpb24gdGltZXMsIGl0IGNhbiBiZSB0aW1lIGNvbnN1bWluZyB0byBydW4gdGhlIFRpbmtlclBvcCB0ZXN0IHN1aXRlCithcyBlYWNoIHRlc3QgcnVuIHJlcXVpcmVzIGEgYEdyYXBoYCBpbnN0YW5jZSBldmVuIGlmIHRoZSB0ZXN0IGlzIHVsdGltYXRlbHkgaWdub3JlZCBiZWNhdWUgaXQgZG9lc24ndCBwYXNzIHRoZSBmZWF0dXJlCitjaGVja3MuIFRvIHBvc3NpYmx5IGhlbHAgYWxsZXZpYXRlIHRoaXMgcHJvYmxlbSwgdGhlIGBHcmFwaFByb3ZpZGVyYCBpbnRlcmZhY2Ugbm93IGluY2x1ZGVzIHRoaXMgbWV0aG9kOgorCitbc291cmNlLGphdmFdCistLS0tCitwdWJsaWMgZGVmYXVsdCBPcHRpb25hbDxHcmFwaC5GZWF0dXJlcz4gZ2V0U3RhdGljRmVhdHVyZXMoKSB7CisgICAgcmV0dXJuIE9wdGlvbmFsLmVtcHR5KCk7Cit9CistLS0tCisKK1RoaXMgbWV0aG9kIGNhbiBiZSBpbXBsZW1lbnRlZCB0byByZXR1cm4gYSBjYWNoZWFibGUgc2V0IG9mIGZlYXR1cmVzIGZvciBhIGBHcmFwaGAgZ2VuZXJhdGVkIGZyb20gdGhhdCBgR3JhcGhQcm92aWRlcmAuCitBc3N1bWluZyB0aGlzIG1ldGhvZCBpcyBmYXN0ZXIgdGhhbiB0aGUgY29zdCBvZiBjcmVhdGluZyBhIG5ldyBgR3JhcGhgIGluc3RhbmNlLCB0aGUgdGVzdCBzdWl0ZSBzaG91bGQgZXhlY3V0ZQorc2lnbmlmaWNhbnRseSBmYXN0ZXIgZGVwZW5kaW5nIG9uIGhvdyBtYW55IHRlc3RzIGVuZCB1cCBiZWluZyBpZ25vcmVkLgorCitTZWU6IGxpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMTUxOFtUSU5LRVJQT1AtMTUxOF0KKworPT09PT0gQ29uZmlndXJpbmcgSW50ZXJmYWNlCisKK1RoZXJlIHdlcmUgc29tZSBjaGFuZ2VzIHRvIGludGVyZmFjZXMgdGhhdCB3ZXJlIHJlbGF0ZWQgdG8gYFN0ZXBgLiBBIG5ldyBgQ29uZmlndXJpbmdgIGludGVyZmFjZSB3YXMgYWRkZWQgdGhhdCB3YXMKK2hlbHBmdWwgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgd2l0aCgpYC1zdGVwIG1vZHVsYXRvci4gVGhpcyBuZXcgaW50ZXJmYWNlIGV4dGVuZHMgdGhlIGBQYXJhbWV0ZXJpemluZ2AgaW50ZXJmYWNlCisod2hpY2ggbW92ZWQgdG8gdGhlIGBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXBgIHBhY2thZ2Ugd2l0aCB0aGUgb3RoZXIgc3RlcCBpbnRlcmZhY2VzKSBhbmQKK2luIHR1cm4gaXMgZXh0ZW5kZWQgYnkgdGhlIGBNdXRhdGluZ2AgaW50ZXJmYWNlLiBNYWtpbmcgdGhpcyBjaGFuZ2UgbWVhbnQgdGhhdCB0aGUgYE11dGF0aW5nLmFkZFByb3BlcnR5TXV0YXRpb25zKClgCittZXRob2QgY291bGQgYmUgcmVtb3ZlZCBpbiBmYXZvciBvZiB0aGUgbmV3IGBDb25maWd1cmluZy5jb25maWd1cmUoKWAgbWV0aG9kLgorCitBbGwgb2YgdGhlIGNoYW5nZXMgYWJvdmUgYmFzaWNhbGx5IG1lYW4sIHRoYXQgaWYgdGhlIGBNdXRhdGluZ2AgaW50ZXJmYWNlIHdhcyBiZWluZyB1c2VkIGluIHByaW9yIHZlcnNpb25zLCB0aGUKK2BhZGRQcm9wZXJ0eU11dGF0aW9ucygpYCBtZXRob2Qgc2ltcGx5IG5lZWRzIHRvIGJlIGNoYW5nZWQgdG8gYGNvbmZpZ3VyZSgpYC4KKworU2VlOiBsaW5rOmh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvVElOS0VSUE9QLTE5NzVbVElOS0VSUE9QLTE5NzVdCisKKz09PT09IE9wdGlvbnNTdHJhdGVneQorCitgT3B0aW9uc1N0cmF0ZWd5YCBpcyBhIGBUcmF2ZXJzYWxTdHJhdGVneWAgdGhhdCBtYWtlcyBpdCBwb3NzaWJsZSBmb3IgdXNlcnMgdG8gc2V0IGFyYml0cmFyeSBjb25maWd1cmF0aW9ucyBvbiBhCitgVHJhdmVyc2FsYC4gVGhlc2UgY29uZmlndXJhdGlvbnMgY2FuIGJlIHVzZWQgYnkgZ3JhcGggcHJvdmlkZXJzIHRvIGFsbG93IGZvciB0cmF2ZXJzYWwtbGV2ZWwgY29uZmlndXJhdGlvbnMgdG8gYmUKK2FjY2Vzc2libGUgdG8gdGhlaXIgY3VzdG9tIHN0ZXBzLiBBIHVzZXIgd291bGQgd3JpdGUgc29tZXRoaW5nIGxpa2U6CisKK1tzb3VyY2UsamF2YV0KKy0tLS0KK2cud2l0aFN0cmF0ZWdpZXMoT3B0aW9uc1N0cmF0ZWd5LmJ1aWxkKCkud2l0aCgic3BlY2lhbExpbWl0IiwgMTAwMDApLmNyZWF0ZSgpKS5WKCk7CistLS0tCisKK1RoZSBgT3B0aW9uc1N0cmF0ZWd5YCBpcyByZWFsbHkgb25seSB0aGUgY2FycmllciBmb3IgdGhlIGNvbmZpZ3VyYXRpb25zIGFuZCB3aGlsZSB1c2VycyBjYW4gY2hvb3NlIHRvIHV0aWxpemUgdGhhdAorbW9yZSB2ZXJib3NlIG1ldGhvZCBmb3IgY29uc3RydWN0aW5nIGl0IHNob3duIGFib3ZlLCBpdCBpcyBtb3JlIGVsZWdhbnRseSBjb25zdHJ1Y3RlZCBhcyBmb2xsb3dzIHVzaW5nIGB3aXRoKClgLXN0ZXA6CisKK1tzb3VyY2UsamF2YV0KKy0tLS0KK2cud2l0aCgic3BlY2lhbExpbWl0IiwgMTAwMDApKS5WKCk7CistLS0tCisKK1RoZSBncmFwaCBwcm92aWRlciBjb3VsZCB0aGVuIGFjY2VzcyB0aGF0IHZhbHVlIG9mICJzcGVjaWFsTGltaXQiIGluIHRoZWlyIGN1c3RvbSBzdGVwIChvciBlbHNld2hlcmUpIGFzIGZvbGxvd3M6CisKK1tzb3VyY2UsamF2YV0KKy0tLS0KK09wdGlvbnNTdHJhdGVneSBzdHJhdGVneSA9IHRoaXMuZ2V0VHJhdmVyc2FsKCkuYXNBZG1pbigpLmdldFN0cmF0ZWdpZXMoKS5nZXRTdHJhdGVneShPcHRpb25zU3RyYXRlZ3kuY2xhc3MpLmdldCgpOworaW50IHNwZWNpYWxMaW1pdCA9IChpbnQpIHN0cmF0ZWd5LmdldE9wdGlvbnMoKS5nZXQoInNwZWNpYWxMaW1pdCIpOworLS0tLQorCitTZWU6IGxpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMjA1M1tUSU5LRVJQT1AtMjA1M10KKworPT09PT0gUmVtb3ZlZCBoYWRvb3AtZ3JlbWxpbiBUZXN0IEFydGlmYWN0CisKK1RoZSBgaGFkb29wLWdyZW1saW5gIG1vZHVsZSBubyBsb25nZXIgZ2VuZXJhdGVzIGEgdGVzdCBqYXIgdGhhdCBjYW4gYmUgdXNlZCBhcyBhIHRlc3QgZGVwZW5kZW5jeSBpbiBvdGhlciBtb2R1bGVzLgorR2VuZXJhbGx5IHNwZWFraW5nLCB0aGF0IGFwcHJvYWNoIHRlbmRzIHRvIGJlIGEgYmFkIHByYWN0aWNlIGFuZCBjYW4gY2F1c2UgYnVpbGQgcHJvYmxlbXMgd2l0aCBNYXZlbiB0aGF0IGFyZW4ndCBhbHdheXMKK29idmlvdXMgdG8gdHJvdWJsZXNob290LiBXaXRoIHRoZSByZW1vdmFsIG9mIGBnaXJhcGgtZ3JlbWxpbmAgZm9yIDMuNC4wLCBpdCBzZWVtZWQgZXZlbiBsZXNzIHVzZWZ1bCB0byBoYXZlIHRoaXMKK3Rlc3QgYXJ0aWZhY3QgcHJlc2VudC4gQWxsIHRlc3RzIGFyZSBzdGlsbCBwcmVzZW50LiBUaGUgZm9sbG93IHByb3ZpZGVzIGEgYmFzaWMgc3VtbWFyeSBvZiBob3cgdGhpcyByZWZhY3RvcmluZworb2NjdXJyZWQ6CisKKyogQSBuZXcgYEFic3RyYWN0RmlsZUdyYXBoUHJvdmlkZXJgIHdhcyBjcmVhdGVkIGluIGBncmVtbGluLXRlc3RgIHdoaWNoIHByb3ZpZGVkIGEgbG90IG9mIHRoZSBmZWF0dXJlcyB0aGF0CitgSGFkb29wR3JhcGhQcm92aWRlcmAgd2FzIGV4cG9zaW5nLiBCb3RoIGBIYWRvb3BHcmFwaFByb3ZpZGVyYCBhbmQgYFNwYXJrSGFkb29wR3JhcGhQcm92aWRlcmAgZXh0ZW5kIGZyb20gdGhhdCBjbGFzcworbm93LgorKiBgVG95SW9SZWdpc3RyeWAgYW5kIHJlbGF0ZWQgY2xhc3NlcyB3ZXJlIG1vdmVkIHRvIGBncmVtbGluLXRlc3RgLgorKiBUaGUgdmFyaW91cyB0ZXN0cyB0aGF0IHZhbGlkYXRlZCBjYXBhYmlsaXRpZXMgb2YgYFN0b3JhZ2VgIGhhdmUgYmVlbiBtb3ZlZCB0byBgc3BhcmstZ3JlbWxpbmAgYW5kIGFyZSBwYXJ0IG9mIHRob3NlCit0ZXN0cyBub3cuIE9idmlvdXNseSwgdGhhdCBtYWtlcyB0aG9zZSB0ZXN0cyBzcGVjaWZpYyB0byBTcGFyayB0ZXN0aW5nIG5vdy4gSWYgdGhhdCBsb2NhdGlvbiBjcmVhdGVzIGEgcHJvYmxlbSBmb3Igc29tZQorcmVhc29uLCB0aGF0IGRlY2lzaW9uIGNhbiBiZSByZXZpc2l0ZWQgYXQgc29tZSBwb2ludC4KKworU2VlOiBsaW5rOmh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvVElOS0VSUE9QLTE0MTBbVElOS0VSUE9QLTE0MTBdCisKKz09PT09IFRyYXZlcnNhbEVuZ2luZSBNb3ZlZAorCitUaGUgYFRyYXZlcnNhbEVuZ2luZWAgaW50ZXJmYWNlIHdhcyBkZXByZWNhdGVkIGluIDMuMi4wIGFsb25nIHdpdGggYWxsIHJlbGF0ZWQgbWV0aG9kcyB0aGF0IHVzZWQgaXQgYW5kIGNsYXNzZXMgdGhhdAoraW1wbGVtZW50ZWQgaXQuIEl0IHdhcyByZXBsYWNlZCBieSB0aGUgYENvbXB1dGVyYCBpbnRlcmZhY2UgYW5kIHByb3ZpZGVkIGEgbXVjaCBuaWNlciB3YXkgdG8gcGx1ZyBkaWZmZXJlbnQKK2ltcGxlbWVudGF0aW9ucyBvZiBgQ29tcHV0ZXJgIGludG8gYSB0cmF2ZXJzYWwuIGBUcmF2ZXJzYWxFbmdpbmVgIHdhcyBuZXZlciB3aG9sbHkgcmVtb3ZlZCBob3dldmVyIGFzIGl0IGhhZCBzb21lIGRlZXAKK2RlcGVuZGVuY2llcyBpbiB0aGUgaW5uZXIgd29ya2luZ3Mgb2YgdGhlIHRlc3Qgc3VpdGUuIFRoYXQgaW5mcmFzdHJ1Y3R1cmUgaGFzIGxhcmdlbHkgcmVtYWluZWQgYXMgaXMgdW50aWwgbm93LgorCitBcyBvZiAzLjQuMCwgYFRyYXZlcnNhbEVuZ2luZWAgaXMgbm8gbG9uZ2VyIGluIGBncmVtbGluLWNvcmVgIGFuZCBjYW4gaW5zdGVhZCBiZSBmb3VuZCBpbiBgZ3JlbWxpbi10ZXN0YCBhcyBpdCBpcworZWZmZWN0aXZlbHkgYSAidGVzdC1vbmx5IiBjb21wb25lbnQgYW5kIHNlcnZlcyBubyBvdGhlciByZWFsIGZ1bmN0aW9uLiBBcyBleHBsYWluZWQgaW4gdGhlIGphdmFkb2NzIGdvaW5nIGJhY2sgdG8KKzMuMi4wLCBwcm92aWRlcnMgc2hvdWxkIGltcGxlbWVudCB0aGUgYENvbXB1dGVyYCBjbGFzcyBhbmQgdXNlIHRoYXQgaW5zdGVhZC4gQXQgdGhpcyBwb2ludCwgZ3JhcGggcHJvdmlkZXJzIHNob3VsZCBoYXZlCitsb25nIGFnbyBtb3ZlZCB0byB0aGUgYENvbXB1dGVyYCBpbmZyYXN0cnVjdHVyZSBhcyBtZXRob2RzIGZvciBjb25zdHJ1Y3RpbmcgYSBgVHJhdmVyc2FsU291cmNlYCB3aXRoIGEKK2BUcmF2ZXJzYWxFbmdpbmVgIHdlcmUgbG9uZyBhZ28gcmVtb3ZlZC4KKworU2VlOiBsaW5rOmh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvVElOS0VSUE9QLTExNDNbVElOS0VSUE9QLTExNDNdCisKKz09PT09IFVwc2VydCBHcmFwaCBGZWF0dXJlCisKK1NvbWUgYEdyYXBoYCBpbXBsZW1lbnRhdGlvbnMgbWF5IGJlIGFibGUgdG8gb2ZmZXIgdXBzZXJ0IGZ1bmN0aW9uYWxpdHkgZm9yIHZlcnRpY2VzIGFuZCBlZGdlcywgd2hpY2ggY2FuIGhlbHAgaW1wcm92ZQordXNhYmlsaXR5IGFuZCBwZXJmb3JtYW5jZS4gVG8gaGVscCBtYWtlIGl0IGNsZWFyIHRvIHVzZXJzIHRoYXQgYSBncmFwaCBvcGVyYXRlcyBpbiB0aGlzIGZhc2hpb24sIHRoZSBgc3VwcG9ydHNVcHNlcnQoKWAKK2ZlYXR1cmUgaGFzIGJlZW4gYWRkZWQgdG8gYm90aCBgR3JhcGguVmVydGV4RmVhdHVyZXNgIGFuZCBgR3JhcGguRWRnZUZlYXR1cmVzYC4gQnkgZGVmYXVsdCwgYm90aCBvZiB0aGVzZSBtZXRob2RzIHdpbGwKK3JldHVybiBgZmFsc2VgLgorCitTaG91bGQgYSBwcm92aWRlciB3aXNoIHRvIHN1cHBvcnQgdGhpcyBmZWF0dXJlLCB0aGUgYmVoYXZpb3Igb2YgYGFkZFYoKWAgYW5kL29yIGBhZGRFKClgIHNob3VsZCBjaGFuZ2Ugc3VjaCB0aGF0IHdoZW4KK2EgdmVydGV4IG9yIGVkZ2Ugd2l0aCB0aGUgc2FtZSBpZGVudGlmaWVyIGlzIHByb3ZpZGVkLCB0aGUgcmVzcGVjdGl2ZSBzdGVwIHdpbGwgaW5zZXJ0IHRoZSBuZXcgZWxlbWVudCBpZiB0aGF0IHZhbHVlCitpcyBub3QgcHJlc2VudCBvciB1cGRhdGUgYW4gZXhpc3RpbmcgZWxlbWVudCBpZiBpdCBpcyBmb3VuZC4gVGhlIG1ldGhvZCBieSB3aGljaCB0aGUgcHJvdmlkZXIgImlkZW50aWZpZXMiIGFuIGVsZW1lbnQKK2lzIGNvbXBsZXRlbHkgdXAgdG8gdGhlIGNhcGFiaWxpdGllcyBvZiB0aGF0IHByb3ZpZGVyLiBJbiB0aGUgbW9zdCBzaW1wbGUgZmFzaGlvbiwgYSBncmFwaCBjb3VsZCBzaW1wbHkgY2hlY2sgdGhlCit2YWx1ZSBvZiB0aGUgc3VwcGxpZWQgYFQuaWRgLCBob3dldmVyIGdyYXBocyB0aGF0IHN1cHBvcnQgc29tZSBmb3JtIG9mIHNjaGVtYSB3aWxsIGxpa2VseSBoYXZlIG90aGVyIG1ldGhvZHMgZm9yCitkZXRlcm1pbmluZyB3aGV0aGVyIG9yIG5vdCBhbiBleGlzdGluZyBlbGVtZW50IGlzIHByZXNlbnQuCisKK1RoZSBleHRlbnQgdG8gd2hpY2ggVGlua2VyUG9wIHRlc3RzICJ1cHNlcnQiIGlzIGZhaXJseSBuYXJyb3cuIEdyYXBoIHByb3ZpZGVycyB0aGF0IGNob29zZSB0byBzdXBwb3J0IHRoaXMgZmVhdHVyZQorc2hvdWxkIGNvbnNpZGVyIHRoZWlyIG93biB0ZXN0IHN1aXRlcyBjYXJlZnVsbHkgdG8gZW5zdXJlIGFwcHJvcHJpYXRlIGNvdmVyYWdlLgorCitTZWU6IGxpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMTY4NVtUSU5LRVJQT1AtMTY4NV0KKworPT09PT0gVHlwZVRyYW5zbGF0b3IgQ2hhbmdlcworCitUaGUgYFR5cGVUcmFuc2xhdG9yYCBleHBlcmllbmNlZCBhIGNoYW5nZSBpbiBpdHMgQVBJIGFuZCBgR3Jvb3Z5VHJhbnNsYXRvcmAgYSBjaGFuZ2UgaW4gZXhwZWN0YXRpb25zLgorCitgVHlwZVRyYW5zbGF0b3JgIG5vdyBpbXBsZW1lbnRzIGBCaUZ1bmN0aW9uYCBhbmQgdGFrZXMgdGhlIGdyYXBoIHRyYXZlcnNhbCBzb3VyY2UgbmFtZSBhcyBhbiBhcmd1bWVudCBhbG9uZyB3aXRoIHRoZQorb2JqZWN0IHRvIHRyYW5zbGF0ZS4gVGhpcyBpbnRlcmZhY2UgaXMgaW1wbGVtZW50ZWQgYnkgZGVmYXVsdCBmb3IgR3Jvb3Z5IHdpdGggYEdyb292eVRyYW5zbGF0b3IuRGVmYXVsdFR5cGVUcmFuc2xhdG9yYAord2hpY2ggZW5jYXBzdWxhdGVzIGFsbCB0aGUgZnVuY3Rpb25hbGl0eSBvZiB3aGF0IGBHcm9vdnlUcmFuc2xhdG9yYCBmb3JtZXJseSBkaWQgYnkgZGVmYXVsdC4gVG8gcHJvdmlkZSBjdXN0b21pemUKK3RyYW5zbGF0aW9uLCBzaW1wbHkgZXh0ZW5kIHRoZSBgRGVmYXVsdFR5cGVUcmFuc2xhdG9yYCBhbmQgb3ZlcnJpZGUgdGhlIG1ldGhvZHMuCisKK2BHcm9vdnlUcmFuc2xhdG9yYCBub3cgZXhwZWN0cyB0aGF0IHRoZSBgVHlwZVRyYW5zbGF0b3JgIHByb3ZpZGUgdG8gaXQgYXMgcGFydCBvZiBpdHMgYG9mKClgIHN0YXRpYyBtZXRob2Qgb3ZlcmxvYWQKK2lzICJjb21wbGV0ZSIgLSBpLmUuIHRoYXQgaXQgcHJvdmlkZXMgYWxsIHRoZSBmdW5jdGlvbmFsaXR5IHRvIHRyYW5zbGF0ZSB0aGUgdHlwZXMgcGFzc2VkIHRvIGl0LiBUaHVzLCBhICJjb21wbGV0ZSIKK2BUeXBlVHJhbnNsYXRvcmAgaXMgb25lIHRoYXQgZG9lcyBldmVyeXRoaW5nIHRoYXQgYERlZmF1bHRUeXBlVHJhbnNsYXRvcmAgZG9lcyBhcyBhIG1pbmltdW0gcmVxdWlyZW1lbnQuIFRoZXJlZm9yZSwKK3RoZSBleHRlbnNpb24gbW9kZWwgZGVzY3JpYmVkIGFib3ZlIGlzIHRoZSBlYXNpZXN0IHdheSB0byBnZXQgZ29pbmcgd2l0aCBhIGN1c3RvbSBgVHlwZVRyYW5zbGF0b3JgIGFwcHJvYWNoLgorCitTZWU6IGxpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMjA3MltUSU5LRVJQT1AtMjA3Ml0KKworPT09PSBHcmFwaCBEcml2ZXIgUHJvdmlkZXJzCisKKz09PT09IERlcHJlY2F0aW9uIFJlbW92YWwgaW4gUmVtb3RlQ29ubmVjdGlvbgorCitUaGUgdHdvIGRlcHJlY2F0ZWQgc3luY2hyb25vdXMgYHN1Ym1pdCgpYCBtZXRob2RzIG9uIHRoZSBgUmVtb3RlQ29ubmVjdGlvbmAgaW50ZXJmYWNlIGhhdmUgYmVlbiByZW1vdmVkLCB3aGljaCBtZWFucwordGhhdCBgUmVtb3RlQ29ubmVjdGlvbmAgaW1wbGVtZW50YXRpb25zIHdpbGwgbmVlZCB0byBpbXBsZW1lbnQgYHN1Ym1pdEFzeW5jKEJ5dGVjb2RlKWAgaWYgdGhleSBoYXZlIG5vdCBhbHJlYWR5IGRvbmUKK3NvLgorCitTZWU6IGxpbms6aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtMjEwM1tUSU5LRVJQT1AtMjEwM10KZGlmZiAtLWdpdCBhL2RvY3Mvc3RhdGljL2ltYWdlcy9hdmFudC1ncmVtbGluLXNpbXBsZS5wbmcgYi9kb2NzL3N0YXRpYy9pbWFnZXMvYXZhbnQtZ3JlbWxpbi1zaW1wbGUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1MGFmMTEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL3N0YXRpYy9pbWFnZXMvYXZhbnQtZ3JlbWxpbi1zaW1wbGUucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc3RhdGljL2ltYWdlcy9hdmFudC1ncmVtbGluLnBuZyBiL2RvY3Mvc3RhdGljL2ltYWdlcy9hdmFudC1ncmVtbGluLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODY1OWI3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2F2YW50LWdyZW1saW4ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc3RhdGljL2ltYWdlcy9ibHVlcHJpbnRzLWNoYXJhY3Rlci0xLnBuZyBiL2RvY3Mvc3RhdGljL2ltYWdlcy9ibHVlcHJpbnRzLWNoYXJhY3Rlci0xLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDk5NTI5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2JsdWVwcmludHMtY2hhcmFjdGVyLTEucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc3RhdGljL2ltYWdlcy9ibHVlcHJpbnRzLWNoYXJhY3Rlci0yLnBuZyBiL2RvY3Mvc3RhdGljL2ltYWdlcy9ibHVlcHJpbnRzLWNoYXJhY3Rlci0yLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMGFiZGJkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2JsdWVwcmludHMtY2hhcmFjdGVyLTIucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc3RhdGljL2ltYWdlcy9ibHVlcHJpbnRzLWNoYXJhY3Rlci0zLnBuZyBiL2RvY3Mvc3RhdGljL2ltYWdlcy9ibHVlcHJpbnRzLWNoYXJhY3Rlci0zLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTUyOTJlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2JsdWVwcmludHMtY2hhcmFjdGVyLTMucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc3RhdGljL2ltYWdlcy9jYy1zY2FsZS1yYXRpby5wbmcgYi9kb2NzL3N0YXRpYy9pbWFnZXMvY2Mtc2NhbGUtcmF0aW8ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzYTg0MmQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL3N0YXRpYy9pbWFnZXMvY2Mtc2NhbGUtcmF0aW8ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc3RhdGljL2ltYWdlcy9jYy1zY2FsZS1zaXplLnBuZyBiL2RvY3Mvc3RhdGljL2ltYWdlcy9jYy1zY2FsZS1zaXplLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjA4YTg5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2NjLXNjYWxlLXNpemUucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc3RhdGljL2ltYWdlcy9mcmFtZXMtY2hhcmFjdGVyLTEucG5nIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2ZyYW1lcy1jaGFyYWN0ZXItMS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQwNWRjYQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3Mvc3RhdGljL2ltYWdlcy9mcmFtZXMtY2hhcmFjdGVyLTEucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc3RhdGljL2ltYWdlcy9mcmFtZXMtY2hhcmFjdGVyLTIucG5nIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2ZyYW1lcy1jaGFyYWN0ZXItMi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODVkZmYyZAotLS0gL2Rldi9udWxsCisrKyBiL2RvY3Mvc3RhdGljL2ltYWdlcy9mcmFtZXMtY2hhcmFjdGVyLTIucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc3RhdGljL2ltYWdlcy9mcmFtZXMtY2hhcmFjdGVyLTMucG5nIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2ZyYW1lcy1jaGFyYWN0ZXItMy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2UwZjljMQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3Mvc3RhdGljL2ltYWdlcy9mcmFtZXMtY2hhcmFjdGVyLTMucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc3RhdGljL2ltYWdlcy9mdXJuYWNlLWNoYXJhY3Rlci0yLnBuZyBiL2RvY3Mvc3RhdGljL2ltYWdlcy9mdXJuYWNlLWNoYXJhY3Rlci0yLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDU5NjY0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2Z1cm5hY2UtY2hhcmFjdGVyLTIucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc3RhdGljL2ltYWdlcy9ncmVtbGluLWFudGktZ3JlbWxpbi5wbmcgYi9kb2NzL3N0YXRpYy9pbWFnZXMvZ3JlbWxpbi1hbnRpLWdyZW1saW4ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjNDU4MGMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL3N0YXRpYy9pbWFnZXMvZ3JlbWxpbi1hbnRpLWdyZW1saW4ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9wb2xpY3kvZ3JlbWxpbi1jaGlja2Vud2luZy5wbmcgYi9kb2NzL3N0YXRpYy9pbWFnZXMvZ3JlbWxpbi1jaGlja2Vud2luZy5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCmNvcHkgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvcG9saWN5L2dyZW1saW4tY2hpY2tlbndpbmcucG5nCmNvcHkgdG8gZG9jcy9zdGF0aWMvaW1hZ2VzL2dyZW1saW4tY2hpY2tlbndpbmcucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc3RhdGljL2ltYWdlcy9ncmVtbGluLWNsb3duaW4tYXJvdW5kLnBuZyBiL2RvY3Mvc3RhdGljL2ltYWdlcy9ncmVtbGluLWNsb3duaW4tYXJvdW5kLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZGUxNGNmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2dyZW1saW4tY2xvd25pbi1hcm91bmQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc3RhdGljL2ltYWdlcy9ncmVtbGluLWdyYWQucG5nIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2dyZW1saW4tZ3JhZC5wbmcKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3N0YXRpYy9pbWFnZXMvZ3JlbWxpbi1ncmVtYWxpY2lvdXMucG5nIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2dyZW1saW4tZ3JlbWFsaWNpb3VzLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTJiZDY4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2dyZW1saW4tZ3JlbWFsaWNpb3VzLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3N0YXRpYy9pbWFnZXMvZ3JlbWxpbi1ncmVtaWNpZGUucG5nIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2dyZW1saW4tZ3JlbWljaWRlLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OGE1M2RiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2dyZW1saW4tZ3JlbWljaWRlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3N0YXRpYy9pbWFnZXMvZ3JlbWxpbi1ncmVtbGluLXRoZS1ncm91Y2gucG5nIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2dyZW1saW4tZ3JlbWxpbi10aGUtZ3JvdWNoLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YThlZTg5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2dyZW1saW4tZ3JlbWxpbi10aGUtZ3JvdWNoLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3N0YXRpYy9pbWFnZXMvZ3JlbWxpbi1ncmVtbGluLnBuZyBiL2RvY3Mvc3RhdGljL2ltYWdlcy9ncmVtbGluLWdyZW1saW4ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwYTNjOTcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL3N0YXRpYy9pbWFnZXMvZ3JlbWxpbi1ncmVtbGluLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3N0YXRpYy9pbWFnZXMvZ3JlbWxpbi1ncmVtbGl2aWNoLnBuZyBiL2RvY3Mvc3RhdGljL2ltYWdlcy9ncmVtbGluLWdyZW1saXZpY2gucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlY2EwYTAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL3N0YXRpYy9pbWFnZXMvZ3JlbWxpbi1ncmVtbGl2aWNoLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvcG9saWN5L2dyZW1saW4tZ3JlbW9wb2x5LnBuZyBiL2RvY3Mvc3RhdGljL2ltYWdlcy9ncmVtbGluLWdyZW1vcG9seS5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCmNvcHkgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvcG9saWN5L2dyZW1saW4tZ3JlbW9wb2x5LnBuZwpjb3B5IHRvIGRvY3Mvc3RhdGljL2ltYWdlcy9ncmVtbGluLWdyZW1vcG9seS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3BvbGljeS9ncmVtbGluLWdyZW1yZWFwZXIucG5nIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2dyZW1saW4tZ3JlbXJlYXBlci5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCmNvcHkgZnJvbSBkb2NzL3NpdGUvaG9tZS9pbWFnZXMvcG9saWN5L2dyZW1saW4tZ3JlbXJlYXBlci5wbmcKY29weSB0byBkb2NzL3N0YXRpYy9pbWFnZXMvZ3JlbWxpbi1ncmVtcmVhcGVyLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvcG9saWN5L2dyZW1saW4tZ3JlbXN0ZWZhbmkucG5nIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2dyZW1saW4tZ3JlbXN0ZWZhbmkucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpjb3B5IGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3BvbGljeS9ncmVtbGluLWdyZW1zdGVmYW5pLnBuZwpjb3B5IHRvIGRvY3Mvc3RhdGljL2ltYWdlcy9ncmVtbGluLWdyZW1zdGVmYW5pLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3N0YXRpYy9pbWFnZXMvZ3JlbWxpbi1oYXJkaGF0LnBuZyBiL2RvY3Mvc3RhdGljL2ltYWdlcy9ncmVtbGluLWhhcmRoYXQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwOTRlYWYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL3N0YXRpYy9pbWFnZXMvZ3JlbWxpbi1oYXJkaGF0LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3N0YXRpYy9pbWFnZXMvZ3JlbWxpbi1pbnRoZXdpbGQucG5nIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2dyZW1saW4taW50aGV3aWxkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzM3YzE5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2dyZW1saW4taW50aGV3aWxkLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3N0YXRpYy9pbWFnZXMvZ3JlbWxpbi1raWx0LnBuZyBiL2RvY3Mvc3RhdGljL2ltYWdlcy9ncmVtbGluLWtpbHQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5YTMyMmQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL3N0YXRpYy9pbWFnZXMvZ3JlbWxpbi1raWx0LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL3NpdGUvaG9tZS9pbWFnZXMvcG9saWN5L2dyZW1saW4tbmV3LXNoZXJpZmYtaW4tdG93bi5wbmcgYi9kb2NzL3N0YXRpYy9pbWFnZXMvZ3JlbWxpbi1uZXctc2hlcmlmZi1pbi10b3duLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKY29weSBmcm9tIGRvY3Mvc2l0ZS9ob21lL2ltYWdlcy9wb2xpY3kvZ3JlbWxpbi1uZXctc2hlcmlmZi1pbi10b3duLnBuZwpjb3B5IHRvIGRvY3Mvc3RhdGljL2ltYWdlcy9ncmVtbGluLW5ldy1zaGVyaWZmLWluLXRvd24ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3Mvc2l0ZS9ob21lL2ltYWdlcy9wb2xpY3kvZ3JlbWxpbi1uby1tb3JlLW1yLW5pY2UtZ3V5LnBuZyBiL2RvY3Mvc3RhdGljL2ltYWdlcy9ncmVtbGluLW5vLW1vcmUtbXItbmljZS1ndXkucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpjb3B5IGZyb20gZG9jcy9zaXRlL2hvbWUvaW1hZ2VzL3BvbGljeS9ncmVtbGluLW5vLW1vcmUtbXItbmljZS1ndXkucG5nCmNvcHkgdG8gZG9jcy9zdGF0aWMvaW1hZ2VzL2dyZW1saW4tbm8tbW9yZS1tci1uaWNlLWd1eS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zdGF0aWMvaW1hZ2VzL2dyZW1saW4tb24tdGhlLWNhc2UucG5nIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2dyZW1saW4tb24tdGhlLWNhc2UucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzY2RiMzMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL3N0YXRpYy9pbWFnZXMvZ3JlbWxpbi1vbi10aGUtY2FzZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zdGF0aWMvaW1hZ2VzL2dyZW1saW4tcGlwZS5wbmcgYi9kb2NzL3N0YXRpYy9pbWFnZXMvZ3JlbWxpbi1waXBlLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NmE4NWRhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2dyZW1saW4tcGlwZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zdGF0aWMvaW1hZ2VzL2dyZW1saW4tcmVmZXJlbmNlLnBuZyBiL2RvY3Mvc3RhdGljL2ltYWdlcy9ncmVtbGluLXJlZmVyZW5jZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQ2M2M3YgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3Mvc3RhdGljL2ltYWdlcy9ncmVtbGluLXJlZmVyZW5jZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zdGF0aWMvaW1hZ2VzL2dyZW1saW4teG1hcy1hbHBoYS5wbmcgYi9kb2NzL3N0YXRpYy9pbWFnZXMvZ3JlbWxpbi14bWFzLWFscGhhLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2MyNzQwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL2dyZW1saW4teG1hcy1hbHBoYS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zdGF0aWMvaW1hZ2VzL3BpcGVzLWNoYXJhY3Rlci0yLnBuZyBiL2RvY3Mvc3RhdGljL2ltYWdlcy9waXBlcy1jaGFyYWN0ZXItMi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTFjZTYxNQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3Mvc3RhdGljL2ltYWdlcy9waXBlcy1jaGFyYWN0ZXItMi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zdGF0aWMvaW1hZ2VzL3BpcGVzLWNoYXJhY3Rlci0zLnBuZyBiL2RvY3Mvc3RhdGljL2ltYWdlcy9waXBlcy1jaGFyYWN0ZXItMy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjEyYWZkMgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3Mvc3RhdGljL2ltYWdlcy9waXBlcy1jaGFyYWN0ZXItMy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zdGF0aWMvaW1hZ2VzL3JleHN0ZXItMi5wbmcgYi9kb2NzL3N0YXRpYy9pbWFnZXMvcmV4c3Rlci0yLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OWE5YzM5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL3JleHN0ZXItMi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zdGF0aWMvaW1hZ2VzL3JleHN0ZXItY29ubmVjdC5wbmcgYi9kb2NzL3N0YXRpYy9pbWFnZXMvcmV4c3Rlci1jb25uZWN0LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMWY1M2IwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9zdGF0aWMvaW1hZ2VzL3JleHN0ZXItY29ubmVjdC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9zdHlsZXNoZWV0cy90aW5rZXJwb3AuY3NzIGIvZG9jcy9zdHlsZXNoZWV0cy90aW5rZXJwb3AuY3NzCmluZGV4IDZkNDI5NTYuLjNhMzkyYzEgMTAwNjQ0Ci0tLSBhL2RvY3Mvc3R5bGVzaGVldHMvdGlua2VycG9wLmNzcworKysgYi9kb2NzL3N0eWxlc2hlZXRzL3RpbmtlcnBvcC5jc3MKQEAgLTY5Miw0ICs2OTIsNCBAQAogI2Zvb3RlciB7IGJhY2tncm91bmQtY29sb3I6ICM0NjUxNTg7IHBhZGRpbmc6IDJlbTsgfQogCiAjZm9vdGVyLXRleHQgeyBjb2xvcjogI2VlZTsgZm9udC1zaXplOiAwLjhlbTsgdGV4dC1hbGlnbjogY2VudGVyOyB9Ci0udGFic3twb3NpdGlvbjpyZWxhdGl2ZTttYXJnaW46NDBweCBhdXRvO3dpZHRoOjEwMjRweDttYXgtd2lkdGg6MTAwJTtvdmVyZmxvdzpoaWRkZW47cGFkZGluZy10b3A6MTBweDttYXJnaW4tYm90dG9tOjYwcHh9LnRhYnMgaW5wdXR7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2hlaWdodDo1MHB4O2xlZnQ6MDt0b3A6MDtvcGFjaXR5OjA7LW1zLWZpbHRlcjoicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MCkiO2ZpbHRlcjphbHBoYShvcGFjaXR5PTApO2N1cnNvcjpwb2ludGVyO21hcmdpbjowfS50YWJzIGlucHV0OmhvdmVyK2xhYmVse2JhY2tncm91bmQ6I2UwOGYyNH0udGFicyBsYWJlbHtiYWNrZ3JvdW5kOiNlOWZmZTk7Y29sb3I6IzFhMWExYTtmb250LXNpemU6MTVweDtsaW5lLWhlaWdodDo1MHB4O2hlaWdodDo2MHB4O3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDowO3BhZGRpbmc6MCAyMHB4O2Zsb2F0OmxlZnQ7ZGlzcGxheTpibG9jaztsZXR0ZXItc3BhY2luZzoxcHg7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2ZvbnQtd2VpZ2h0OmJvbGQ7dGV4dC1hbGlnbjpjZW50ZXI7Ym94LXNoYWRvdzoycHggMCAycHggcmdiYSgwLDAsMCwwLjEpLC0ycHggMCAycHggcmdiYSgwLDAsMCwwLjEpO2JveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LXRyYW5zaXRpb246YWxsIDE1MG1zIGVhc2UgMHM7dHJhbnNpdGlvbjphbGwgMTUwbXMgZWFzZSAwc30udGFicyBsYWJlbDpob3ZlcntjdXJzb3I6cG9pbnRlcn0udGFicyBsYWJlbDphZnRlcntjb250ZW50OicnO2JhY2tncm91bmQ6IzYwOTA2MDtwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206LTJweDtsZWZ0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MnB4O2Rpc3BsYXk6YmxvY2t9LnRhYnMtMiBpbnB1dHt3aWR0aDo1MCV9LnRhYnMtMiBpbnB1dC50YWItc2VsZWN0b3ItMXtsZWZ0OjAlfS50YWJzLTIgaW5wdXQudGFiLXNlbGVjdG9yLTJ7bGVmdDo1MCV9LnRhYnMtMiBsYWJlbHt3aWR0aDo1MCV9LnRhYnMtMyBpbnB1dHt3aWR0aDozMy4zMzMzMyV9LnRhYnMtMyBpbnB1dC50YWItc2VsZWN0b3ItMXtsZWZ0OjAlfS50YWJzLTMgaW5wdXQudGFiLXNlbGVjdG9yLTJ7bGVmdDozMy4zMzMzMyV9LnRhYnMtMyBpbnB1dC50YWItc2VsZWN0b3ItM3tsZWZ0OjY2LjY2NjY3JX0udGFicy0zIGxhYmVse3dpZHRoOjMzLjMzMzMzJX0udGFicy00IGlucHV0e3dpZHRoOjI1JX0udGFicy00IGlucHV0LnRhYi1zZWxlY3Rvci0xe2xlZnQ6MCV9LnRhYnMtNCBpbnB1dC50YWItc2VsZWN0b3ItMntsZWZ0OjI1JX0udGFicy00IGlucHV0LnRhYi1zZWxlY3Rvci0ze2xlZnQ6NTAlfS50YWJzLTQgaW5wdXQudGFiLXNlbGVjdG9yLTR7bGVmdDo3NSV9LnRhYnMtNCBsYWJlbHt3aWR0aDoyNSV9LnRhYnMgbGFiZWw6Zmlyc3Qtb2YtdHlwZXt6LWluZGV4OjR9LnRhYi1sYWJlbC0ye3otaW5kZXg6NH0udGFiLWxhYmVsLTN7ei1pbmRleDozfS50YWItbGFiZWwtNHt6LWluZGV4OjJ9LnRhYnMgaW5wdXQ6Y2hlY2tlZCtsYWJlbHtiYWNrZ3JvdW5kOiM2MDkwNjA7Y29sb3I6I2ZlZmVmZTt6LWluZGV4OjZ9LmNsZWFyLXNoYWRvd3tjbGVhcjpib3RofS50YWJjb250ZW50e2hlaWdodDphdXRvO3dpZHRoOjEwMCU7ZmxvYXQ6bGVmdDtwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjU7YmFja2dyb3VuZDojZWVlO3RvcDotMTBweDtib3gtc2l6aW5nOmJvcmRlci1ib3h9LnRhYmNvbnRlbnQ+ZGl2e3Bvc2l0aW9uOnJlbGF0aXZlO2Zsb2F0OmxlZnQ7d2lkdGg6MDtoZWlnaHQ6MDtib3gtc2l6aW5nOmJvcmRlci1ib3g7dG9wOjA7bGVmdDowO3otaW5kZXg6MTtvcGFjaXR5OjA7YmFja2dyb3VuZDojZWVlfS50YWJjb250ZW50IC5Db2RlUmF5e2JhY2tncm91bmQtY29sb3I6I2ZlZmVmZX0udGFicyAudGFiLXNlbGVjdG9yLTE6Y2hlY2tlZCB+IC50YWJjb250ZW50IC50YWJjb250ZW50LTF7ei1pbmRleDoxMDA7LW1zLWZpbHRlcjoicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MTAwKSI7ZmlsdGVyOmFscGhhKG9wYWNpdHk9MTAwKTtvcGFjaXR5OjE7d2lkdGg6MTAwJTtoZWlnaHQ6YXV0bzt3aWR0aDoxMDAlO2hlaWdodDphdXRvO3BhZGRpbmctdG9wOjMwcHh9LnRhYnMgLnRhYi1zZWxlY3Rvci0yOmNoZWNrZWQgfiAudGFiY29udGVudCAudGFiY29udGVudC0ye3otaW5kZXg6MTAwOy1tcy1maWx0ZXI6InByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTEwMCkiO2ZpbHRlcjphbHBoYShvcGFjaXR5PTEwMCk7b3BhY2l0eToxO3dpZHRoOjEwMCU7aGVpZ2h0OmF1dG87d2lkdGg6MTAwJTtoZWlnaHQ6YXV0bztwYWRkaW5nLXRvcDozMHB4fS50YWJzIC50YWItc2VsZWN0b3ItMzpjaGVja2VkIH4gLnRhYmNvbnRlbnQgLnRhYmNvbnRlbnQtM3t6LWluZGV4OjEwMDstbXMtZmlsdGVyOiJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApIjtmaWx0ZXI6YWxwaGEob3BhY2l0eT0xMDApO29wYWNpdHk6MTt3aWR0aDoxMDAlO2hlaWdodDphdXRvO3dpZHRoOjEwMCU7aGVpZ2h0OmF1dG87cGFkZGluZy10b3A6MzBweH0udGFicyAudGFiLXNlbGVjdG9yLTQ6Y2hlY2tlZCB+IC50YWJjb250ZW50IC50YWJjb250ZW50LTR7ei1pbmRleDoxMDA7LW1zLWZpbHRlcjoicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MTAwKSI7ZmlsdGVyOmFscGhhKG9wYWNpdHk9MTAwKTtvcGFjaXR5OjE7d2lkdGg6MTAwJTtoZWlnaHQ6YXV0bzt3aWR0aDoxMDAlO2hlaWdodDphdXRvO3BhZGRpbmctdG9wOjMwcHh9CisudGFic3twb3NpdGlvbjpyZWxhdGl2ZTttYXJnaW46NDBweCBhdXRvO3dpZHRoOjEwMjRweDttYXgtd2lkdGg6MTAwJTtvdmVyZmxvdzpoaWRkZW47cGFkZGluZy10b3A6MTBweDttYXJnaW4tYm90dG9tOjYwcHh9LnRhYnMgaW5wdXR7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2hlaWdodDo1MHB4O2xlZnQ6MDt0b3A6MDtvcGFjaXR5OjA7LW1zLWZpbHRlcjoicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MCkiO2ZpbHRlcjphbHBoYShvcGFjaXR5PTApO2N1cnNvcjpwb2ludGVyO21hcmdpbjowfS50YWJzIGlucHV0OmhvdmVyK2xhYmVse2JhY2tncm91bmQ6I2UwOGYyNH0udGFicyBsYWJlbHtiYWNrZ3JvdW5kOiNlOWZmZTk7Y29sb3I6IzFhMWExYTtmb250LXNpemU6MTVweDtsaW5lLWhlaWdodDo1MHB4O2hlaWdodDo2MHB4O3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDowO3BhZGRpbmc6MCAyMHB4O2Zsb2F0OmxlZnQ7ZGlzcGxheTpibG9jaztsZXR0ZXItc3BhY2luZzoxcHg7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2ZvbnQtd2VpZ2h0OmJvbGQ7dGV4dC1hbGlnbjpjZW50ZXI7Ym94LXNoYWRvdzoycHggMCAycHggcmdiYSgwLDAsMCwwLjEpLC0ycHggMCAycHggcmdiYSgwLDAsMCwwLjEpO2JveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LXRyYW5zaXRpb246YWxsIDE1MG1zIGVhc2UgMHM7dHJhbnNpdGlvbjphbGwgMTUwbXMgZWFzZSAwc30udGFicyBsYWJlbDpob3ZlcntjdXJzb3I6cG9pbnRlcn0udGFicyBsYWJlbDphZnRlcntjb250ZW50OicnO2JhY2tncm91bmQ6IzYwOTA2MDtwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206LTJweDtsZWZ0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MnB4O2Rpc3BsYXk6YmxvY2t9LnRhYnMtMiBpbnB1dHt3aWR0aDo1MCV9LnRhYnMtMiBpbnB1dC50YWItc2VsZWN0b3ItMXtsZWZ0OjAlfS50YWJzLTIgaW5wdXQudGFiLXNlbGVjdG9yLTJ7bGVmdDo1MCV9LnRhYnMtMiBsYWJlbHt3aWR0aDo1MCV9LnRhYnMtMyBpbnB1dHt3aWR0aDozMy4zMzMzMyV9LnRhYnMtMyBpbnB1dC50YWItc2VsZWN0b3ItMXtsZWZ0OjAlfS50YWJzLTMgaW5wdXQudGFiLXNlbGVjdG9yLTJ7bGVmdDozMy4zMzMzMyV9LnRhYnMtMyBpbnB1dC50YWItc2VsZWN0b3ItM3tsZWZ0OjY2LjY2NjY3JX0udGFicy0zIGxhYmVse3dpZHRoOjMzLjMzMzMzJX0udGFicy00IGlucHV0e3dpZHRoOjI1JX0udGFicy00IGlucHV0LnRhYi1zZWxlY3Rvci0xe2xlZnQ6MCV9LnRhYnMtNCBpbnB1dC50YWItc2VsZWN0b3ItMntsZWZ0OjI1JX0udGFicy00IGlucHV0LnRhYi1zZWxlY3Rvci0ze2xlZnQ6NTAlfS50YWJzLTQgaW5wdXQudGFiLXNlbGVjdG9yLTR7bGVmdDo3NSV9LnRhYnMtNCBsYWJlbHt3aWR0aDoyNSV9LnRhYnMtNSBpbnB1dHt3aWR0aDoyMCV9LnRhYnMtNSBpbnB1dC50YWItc2VsZWN0b3ItMXtsZWZ0OjAlfS50YWJzLTUgaW5wdXQudGFiLXNlbGVjdG9yLTJ7bGVmdDoyMCV9LnRhYnMtNSBpbnB1dC50YWItc2VsZWN0b3ItM3tsZWZ0OjQwJX0udGFicy01IGlucHV0LnRhYi1zZWxlY3Rvci00e2xlZnQ6NjAlfS50YWJzLTUgaW5wdXQudGFiLXNlbGVjdG9yLTV7bGVmdDo4MCV9LnRhYnMtNSBsYWJlbHt3aWR0aDoyMCV9LnRhYnMtNiBpbnB1dHt3aWR0aDoxNi42NjY2NyV9LnRhYnMtNiBpbnB1dC50YWItc2VsZWN0b3ItMXtsZWZ0OjAlfS50YWJzLTYgaW5wdXQudGFiLXNlbGVjdG9yLTJ7bGVmdDoxNi42NjY2NyV9LnRhYnMtNiBpbnB1dC50YWItc2VsZWN0b3ItM3tsZWZ0OjMzLjMzMzMzJX0udGFicy02IGlucHV0LnRhYi1zZWxlY3Rvci00e2xlZnQ6NTAlfS50YWJzLTYgaW5wdXQudGFiLXNlbGVjdG9yLTV7bGVmdDo2Ni42NjY2NyV9LnRhYnMtNiBpbnB1dC50YWItc2VsZWN0b3ItNntsZWZ0OjgzLjMzMzMzJX0udGFicy02IGxhYmVse3dpZHRoOjE2LjY2NjY3JX0udGFicyBsYWJlbDpmaXJzdC1vZi10eXBle3otaW5kZXg6NH0udGFiLWxhYmVsLTJ7ei1pbmRleDo0fS50YWItbGFiZWwtM3t6LWluZGV4OjN9LnRhYi1sYWJlbC00e3otaW5kZXg6Mn0udGFicyBpbnB1dDpjaGVja2VkK2xhYmVse2JhY2tncm91bmQ6IzYwOTA2MDtjb2xvcjojZmVmZWZlO3otaW5kZXg6Nn0uY2xlYXItc2hhZG93e2NsZWFyOmJvdGh9LnRhYmNvbnRlbnR7aGVpZ2h0OmF1dG87d2lkdGg6MTAwJTtmbG9hdDpsZWZ0O3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6NTtiYWNrZ3JvdW5kOiNlZWU7dG9wOi0xMHB4O2JveC1zaXppbmc6Ym9yZGVyLWJveH0udGFiY29udGVudD5kaXZ7cG9zaXRpb246cmVsYXRpdmU7ZmxvYXQ6bGVmdDt3aWR0aDowO2hlaWdodDowO2JveC1zaXppbmc6Ym9yZGVyLWJveDt0b3A6MDtsZWZ0OjA7ei1pbmRleDoxO29wYWNpdHk6MDtiYWNrZ3JvdW5kOiNlZWV9LnRhYmNvbnRlbnQgLkNvZGVSYXl7YmFja2dyb3VuZC1jb2xvcjojZmVmZWZlfS50YWJzIC50YWItc2VsZWN0b3ItMTpjaGVja2VkIH4gLnRhYmNvbnRlbnQgLnRhYmNvbnRlbnQtMXt6LWluZGV4OjEwMDstbXMtZmlsdGVyOiJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApIjtmaWx0ZXI6YWxwaGEob3BhY2l0eT0xMDApO29wYWNpdHk6MTt3aWR0aDoxMDAlO2hlaWdodDphdXRvO3dpZHRoOjEwMCU7aGVpZ2h0OmF1dG87cGFkZGluZy10b3A6MzBweH0udGFicyAudGFiLXNlbGVjdG9yLTI6Y2hlY2tlZCB+IC50YWJjb250ZW50IC50YWJjb250ZW50LTJ7ei1pbmRleDoxMDA7LW1zLWZpbHRlcjoicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MTAwKSI7ZmlsdGVyOmFscGhhKG9wYWNpdHk9MTAwKTtvcGFjaXR5OjE7d2lkdGg6MTAwJTtoZWlnaHQ6YXV0bzt3aWR0aDoxMDAlO2hlaWdodDphdXRvO3BhZGRpbmctdG9wOjMwcHh9LnRhYnMgLnRhYi1zZWxlY3Rvci0zOmNoZWNrZWQgfiAudGFiY29udGVudCAudGFiY29udGVudC0ze3otaW5kZXg6MTAwOy1tcy1maWx0ZXI6InByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTEwMCkiO2ZpbHRlcjphbHBoYShvcGFjaXR5PTEwMCk7b3BhY2l0eToxO3dpZHRoOjEwMCU7aGVpZ2h0OmF1dG87d2lkdGg6MTAwJTtoZWlnaHQ6YXV0bztwYWRkaW5nLXRvcDozMHB4fS50YWJzIC50YWItc2VsZWN0b3ItNDpjaGVja2VkIH4gLnRhYmNvbnRlbnQgLnRhYmNvbnRlbnQtNHt6LWluZGV4OjEwMDstbXMtZmlsdGVyOiJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApIjtmaWx0ZXI6YWxwaGEob3BhY2l0eT0xMDApO29wYWNpdHk6MTt3aWR0aDoxMDAlO2hlaWdodDphdXRvO3dpZHRoOjEwMCU7aGVpZ2h0OmF1dG87cGFkZGluZy10b3A6MzBweH0udGFicyAudGFiLXNlbGVjdG9yLTU6Y2hlY2tlZCB+IC50YWJjb250ZW50IC50YWJjb250ZW50LTV7ei1pbmRleDoxMDA7LW1zLWZpbHRlcjoicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MTAwKSI7ZmlsdGVyOmFscGhhKG9wYWNpdHk9MTAwKTtvcGFjaXR5OjE7d2lkdGg6MTAwJTtoZWlnaHQ6YXV0bzt3aWR0aDoxMDAlO2hlaWdodDphdXRvO3BhZGRpbmctdG9wOjMwcHh9LnRhYnMgLnRhYi1zZWxlY3Rvci02OmNoZWNrZWQgfiAudGFiY29udGVudCAudGFiY29udGVudC02e3otaW5kZXg6MTAwOy1tcy1maWx0ZXI6InByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTEwMCkiO2ZpbHRlcjphbHBoYShvcGFjaXR5PTEwMCk7b3BhY2l0eToxO3dpZHRoOjEwMCU7aGVpZ2h0OmF1dG87d2lkdGg6MTAwJTtoZWlnaHQ6YXV0bztwYWRkaW5nLXRvcDozMHB4fQpkaWZmIC0tZ2l0IGEvZ2lyYXBoLWdyZW1saW4vcG9tLnhtbCBiL2dpcmFwaC1ncmVtbGluL3BvbS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwMDViZWYuLjAwMDAwMDAKLS0tIGEvZ2lyYXBoLWdyZW1saW4vcG9tLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDI1OCArMCwwIEBACi08IS0tCi1MaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lIG9yIG1vcmUKLWNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUgZGlzdHJpYnV0ZWQgd2l0aAotdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLgotVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUgdG8gWW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAKLSh0aGUgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoCi10aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotCi0gIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotCi1Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi1kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi1TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi1saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLS0tPgotPHByb2plY3QgeG1sbnM9Imh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL1BPTS80LjAuMCIKLSAgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiCi0gICAgICAgICB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL1BPTS80LjAuMCBodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9tYXZlbi12NF8wXzAueHNkIj4KLSAgICA8bW9kZWxWZXJzaW9uPjQuMC4wPC9tb2RlbFZlcnNpb24+Ci0gICAgPHBhcmVudD4KLSAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS50aW5rZXJwb3A8L2dyb3VwSWQ+Ci0gICAgICAgIDxhcnRpZmFjdElkPnRpbmtlcnBvcDwvYXJ0aWZhY3RJZD4KLSAgICAgICAgPHZlcnNpb24+My4zLjExLVNOQVBTSE9UPC92ZXJzaW9uPgotICAgIDwvcGFyZW50PgotICAgIDxhcnRpZmFjdElkPmdpcmFwaC1ncmVtbGluPC9hcnRpZmFjdElkPgotICAgIDxuYW1lPkFwYWNoZSBUaW5rZXJQb3AgOjogR2lyYXBoIEdyZW1saW48L25hbWU+Ci0gICAgPGRlcGVuZGVuY3lNYW5hZ2VtZW50PgotICAgICAgICA8ZGVwZW5kZW5jaWVzPgotICAgICAgICAgICAgPGRlcGVuZGVuY3k+Ci0gICAgICAgICAgICAgICAgPCEtLSBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvaGFkb29wL3B1bGwvODQgLS0+Ci0gICAgICAgICAgICAgICAgPGdyb3VwSWQ+aW8ubmV0dHk8L2dyb3VwSWQ+Ci0gICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+bmV0dHk8L2FydGlmYWN0SWQ+Ci0gICAgICAgICAgICAgICAgPHZlcnNpb24+My43LjEuRmluYWw8L3ZlcnNpb24+Ci0gICAgICAgICAgICA8L2RlcGVuZGVuY3k+Ci0gICAgICAgIDwvZGVwZW5kZW5jaWVzPgotICAgIDwvZGVwZW5kZW5jeU1hbmFnZW1lbnQ+Ci0gICAgPGRlcGVuZGVuY2llcz4KLSAgICAgICAgPGRlcGVuZGVuY3k+Ci0gICAgICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLnRpbmtlcnBvcDwvZ3JvdXBJZD4KLSAgICAgICAgICAgIDxhcnRpZmFjdElkPmdyZW1saW4tY29yZTwvYXJ0aWZhY3RJZD4KLSAgICAgICAgICAgIDx2ZXJzaW9uPiR7cHJvamVjdC52ZXJzaW9ufTwvdmVyc2lvbj4KLSAgICAgICAgPC9kZXBlbmRlbmN5PgotICAgICAgICA8ZGVwZW5kZW5jeT4KLSAgICAgICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUudGlua2VycG9wPC9ncm91cElkPgotICAgICAgICAgICAgPGFydGlmYWN0SWQ+aGFkb29wLWdyZW1saW48L2FydGlmYWN0SWQ+Ci0gICAgICAgICAgICA8dmVyc2lvbj4ke3Byb2plY3QudmVyc2lvbn08L3ZlcnNpb24+Ci0gICAgICAgICAgICA8ZXhjbHVzaW9ucz4KLSAgICAgICAgICAgICAgICA8ZXhjbHVzaW9uPgotICAgICAgICAgICAgICAgICAgICA8Z3JvdXBJZD5pby5uZXR0eTwvZ3JvdXBJZD4KLSAgICAgICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+bmV0dHktYWxsPC9hcnRpZmFjdElkPgotICAgICAgICAgICAgICAgIDwvZXhjbHVzaW9uPgotICAgICAgICAgICAgICAgIDxleGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxncm91cElkPmNvbS50aG91Z2h0d29ya3MucGFyYW5hbWVyPC9ncm91cElkPgotICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5wYXJhbmFtZXI8L2FydGlmYWN0SWQ+Ci0gICAgICAgICAgICAgICAgPC9leGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgPGV4Y2x1c2lvbj4KLSAgICAgICAgICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS56b29rZWVwZXI8L2dyb3VwSWQ+Ci0gICAgICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPnpvb2tlZXBlcjwvYXJ0aWZhY3RJZD4KLSAgICAgICAgICAgICAgICA8L2V4Y2x1c2lvbj4KLSAgICAgICAgICAgIDwvZXhjbHVzaW9ucz4KLSAgICAgICAgPC9kZXBlbmRlbmN5PgotICAgICAgICA8IS0tIEdJUkFQSCAtLT4KLSAgICAgICAgPGRlcGVuZGVuY3k+Ci0gICAgICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLmdpcmFwaDwvZ3JvdXBJZD4KLSAgICAgICAgICAgIDxhcnRpZmFjdElkPmdpcmFwaC1jb3JlPC9hcnRpZmFjdElkPgotICAgICAgICAgICAgPHZlcnNpb24+MS4xLjAtaGFkb29wMjwvdmVyc2lvbj4KLSAgICAgICAgICAgIDxleGNsdXNpb25zPgotICAgICAgICAgICAgICAgIDwhLS0gc2VsZiBjb25mbGljdHMgLS0+Ci0gICAgICAgICAgICAgICAgPGV4Y2x1c2lvbj4KLSAgICAgICAgICAgICAgICAgICAgPGdyb3VwSWQ+bG9nNGo8L2dyb3VwSWQ+Ci0gICAgICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPmxvZzRqPC9hcnRpZmFjdElkPgotICAgICAgICAgICAgICAgIDwvZXhjbHVzaW9uPgotICAgICAgICAgICAgICAgIDwhLS0gY29uZmxpY3RzIHdpdGggaGFkb29wLWdyZW1saW4gLS0+Ci0gICAgICAgICAgICAgICAgPGV4Y2x1c2lvbj4KLSAgICAgICAgICAgICAgICAgICAgPGdyb3VwSWQ+Y29tLmdvb2dsZS5ndWF2YTwvZ3JvdXBJZD4KLSAgICAgICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+Z3VhdmE8L2FydGlmYWN0SWQ+Ci0gICAgICAgICAgICAgICAgPC9leGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgPGV4Y2x1c2lvbj4KLSAgICAgICAgICAgICAgICAgICAgPGdyb3VwSWQ+Y29tbW9ucy1jb2RlYzwvZ3JvdXBJZD4KLSAgICAgICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+Y29tbW9ucy1jb2RlYzwvYXJ0aWZhY3RJZD4KLSAgICAgICAgICAgICAgICA8L2V4Y2x1c2lvbj4KLSAgICAgICAgICAgICAgICA8ZXhjbHVzaW9uPgotICAgICAgICAgICAgICAgICAgICA8Z3JvdXBJZD5jb21tb25zLWlvPC9ncm91cElkPgotICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5jb21tb25zLWlvPC9hcnRpZmFjdElkPgotICAgICAgICAgICAgICAgIDwvZXhjbHVzaW9uPgotICAgICAgICAgICAgICAgIDwhLS0gdXNlcyBhbiBvbGRlciB2ZXJzaW9uIHRoYXQgY29uZmxpY3RzIHdpdGggc3BhcmsgMi4wIC0tPgotICAgICAgICAgICAgICAgIDxleGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxncm91cElkPmNvbS5mYXN0ZXJ4bWwuamFja3Nvbi5jb3JlPC9ncm91cElkPgotICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5qYWNrc29uLWFubm90YXRpb25zPC9hcnRpZmFjdElkPgotICAgICAgICAgICAgICAgIDwvZXhjbHVzaW9uPgotICAgICAgICAgICAgICAgIDxleGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxncm91cElkPm9yZy5jb2RlaGF1cy5qYWNrc29uPC9ncm91cElkPgotICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5qYWNrc29uLWNvcmUtYXNsPC9hcnRpZmFjdElkPgotICAgICAgICAgICAgICAgIDwvZXhjbHVzaW9uPgotICAgICAgICAgICAgICAgIDxleGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxncm91cElkPm9yZy5jb2RlaGF1cy5qYWNrc29uPC9ncm91cElkPgotICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5qYWNrc29uLW1hcHBlci1hc2w8L2FydGlmYWN0SWQ+Ci0gICAgICAgICAgICAgICAgPC9leGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgPCEtLSBjb25mbGljdHMgd2l0aCBncmVtbGluLWdyb292eSAtLT4KLSAgICAgICAgICAgICAgICA8ZXhjbHVzaW9uPgotICAgICAgICAgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLmNvbW1vbnM8L2dyb3VwSWQ+Ci0gICAgICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPmNvbW1vbnMtbGFuZzM8L2FydGlmYWN0SWQ+Ci0gICAgICAgICAgICAgICAgPC9leGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgPCEtLSBjb25mbGljdHMgd2l0aCBncmVtbGluLWNvcmUgLS0+Ci0gICAgICAgICAgICAgICAgPGV4Y2x1c2lvbj4KLSAgICAgICAgICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLnNsZjRqPC9ncm91cElkPgotICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5zbGY0ai1hcGk8L2FydGlmYWN0SWQ+Ci0gICAgICAgICAgICAgICAgPC9leGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgPGV4Y2x1c2lvbj4KLSAgICAgICAgICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLnNsZjRqPC9ncm91cElkPgotICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5zbGY0ai1sb2c0ajEyPC9hcnRpZmFjdElkPgotICAgICAgICAgICAgICAgIDwvZXhjbHVzaW9uPgotICAgICAgICAgICAgICAgIDwhLS0gZ3JlbWxpbi1ncm9vdnkgY29uZmxpY3RzIC0tPgotICAgICAgICAgICAgICAgIDxleGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxncm91cElkPmpsaW5lPC9ncm91cElkPgotICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5qbGluZTwvYXJ0aWZhY3RJZD4KLSAgICAgICAgICAgICAgICA8L2V4Y2x1c2lvbj4KLSAgICAgICAgICAgICAgICA8IS0tIGNvbmZsaWN0cyB3aXRoIHNwYXJrIChhIGhhY2sgc28gYm90aCBjYW4gYmUgbG9hZGVkIGluIHBhcmFsbGVsKSAtLT4KLSAgICAgICAgICAgICAgICA8ZXhjbHVzaW9uPgotICAgICAgICAgICAgICAgICAgICA8Z3JvdXBJZD5qYXZheC5zZXJ2bGV0PC9ncm91cElkPgotICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5zZXJ2bGV0LWFwaTwvYXJ0aWZhY3RJZD4KLSAgICAgICAgICAgICAgICA8L2V4Y2x1c2lvbj4KLSAgICAgICAgICAgIDwvZXhjbHVzaW9ucz4KLSAgICAgICAgPC9kZXBlbmRlbmN5PgotICAgICAgICA8IS0tIGNvbnNpc3RlbnQgZGVwZW5kZW5jaWVzIC0tPgotICAgICAgICA8ZGVwZW5kZW5jeT4KLSAgICAgICAgICAgIDxncm91cElkPmphdmF4LnNlcnZsZXQ8L2dyb3VwSWQ+Ci0gICAgICAgICAgICA8YXJ0aWZhY3RJZD5qYXZheC5zZXJ2bGV0LWFwaTwvYXJ0aWZhY3RJZD4KLSAgICAgICAgICAgIDx2ZXJzaW9uPjMuMS4wPC92ZXJzaW9uPgotICAgICAgICA8L2RlcGVuZGVuY3k+Ci0gICAgICAgIDxkZXBlbmRlbmN5PgotICAgICAgICAgICAgPGdyb3VwSWQ+Y29tLmZhc3RlcnhtbC5qYWNrc29uLmNvcmU8L2dyb3VwSWQ+Ci0gICAgICAgICAgICA8YXJ0aWZhY3RJZD5qYWNrc29uLWFubm90YXRpb25zPC9hcnRpZmFjdElkPgotICAgICAgICAgICAgPHZlcnNpb24+Mi45LjEwPC92ZXJzaW9uPgotICAgICAgICA8L2RlcGVuZGVuY3k+Ci0gICAgICAgIDwhLS0gVEVTVCAtLT4KLSAgICAgICAgPGRlcGVuZGVuY3k+Ci0gICAgICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLnRpbmtlcnBvcDwvZ3JvdXBJZD4KLSAgICAgICAgICAgIDxhcnRpZmFjdElkPmdyZW1saW4tdGVzdDwvYXJ0aWZhY3RJZD4KLSAgICAgICAgICAgIDx2ZXJzaW9uPiR7cHJvamVjdC52ZXJzaW9ufTwvdmVyc2lvbj4KLSAgICAgICAgICAgIDxleGNsdXNpb25zPgotICAgICAgICAgICAgICAgIDxleGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxncm91cElkPmNvbW1vbnMtaW88L2dyb3VwSWQ+Ci0gICAgICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPmNvbW1vbnMtaW88L2FydGlmYWN0SWQ+Ci0gICAgICAgICAgICAgICAgPC9leGNsdXNpb24+Ci0gICAgICAgICAgICA8L2V4Y2x1c2lvbnM+Ci0gICAgICAgICAgICA8c2NvcGU+dGVzdDwvc2NvcGU+Ci0gICAgICAgIDwvZGVwZW5kZW5jeT4KLSAgICAgICAgPGRlcGVuZGVuY3k+Ci0gICAgICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLnRpbmtlcnBvcDwvZ3JvdXBJZD4KLSAgICAgICAgICAgIDxhcnRpZmFjdElkPmhhZG9vcC1ncmVtbGluPC9hcnRpZmFjdElkPgotICAgICAgICAgICAgPHZlcnNpb24+JHtwcm9qZWN0LnZlcnNpb259PC92ZXJzaW9uPgotICAgICAgICAgICAgPHR5cGU+dGVzdC1qYXI8L3R5cGU+Ci0gICAgICAgICAgICA8c2NvcGU+dGVzdDwvc2NvcGU+Ci0gICAgICAgICAgICA8ZXhjbHVzaW9ucz4KLSAgICAgICAgICAgICAgICA8ZXhjbHVzaW9uPgotICAgICAgICAgICAgICAgICAgICA8Z3JvdXBJZD5pby5uZXR0eTwvZ3JvdXBJZD4KLSAgICAgICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+bmV0dHktYWxsPC9hcnRpZmFjdElkPgotICAgICAgICAgICAgICAgIDwvZXhjbHVzaW9uPgotICAgICAgICAgICAgICAgIDxleGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxncm91cElkPmNvbS50aG91Z2h0d29ya3MucGFyYW5hbWVyPC9ncm91cElkPgotICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5wYXJhbmFtZXI8L2FydGlmYWN0SWQ+Ci0gICAgICAgICAgICAgICAgPC9leGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgPGV4Y2x1c2lvbj4KLSAgICAgICAgICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS56b29rZWVwZXI8L2dyb3VwSWQ+Ci0gICAgICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPnpvb2tlZXBlcjwvYXJ0aWZhY3RJZD4KLSAgICAgICAgICAgICAgICA8L2V4Y2x1c2lvbj4KLSAgICAgICAgICAgIDwvZXhjbHVzaW9ucz4KLSAgICAgICAgPC9kZXBlbmRlbmN5PgotICAgICAgICA8ZGVwZW5kZW5jeT4KLSAgICAgICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUudGlua2VycG9wPC9ncm91cElkPgotICAgICAgICAgICAgPGFydGlmYWN0SWQ+dGlua2VyZ3JhcGgtZ3JlbWxpbjwvYXJ0aWZhY3RJZD4KLSAgICAgICAgICAgIDx2ZXJzaW9uPiR7cHJvamVjdC52ZXJzaW9ufTwvdmVyc2lvbj4KLSAgICAgICAgICAgIDxzY29wZT50ZXN0PC9zY29wZT4KLSAgICAgICAgPC9kZXBlbmRlbmN5PgotICAgICAgICA8ZGVwZW5kZW5jeT4KLSAgICAgICAgICAgIDxncm91cElkPm9yZy5zbGY0ajwvZ3JvdXBJZD4KLSAgICAgICAgICAgIDxhcnRpZmFjdElkPnNsZjRqLWxvZzRqMTI8L2FydGlmYWN0SWQ+Ci0gICAgICAgICAgICA8c2NvcGU+dGVzdDwvc2NvcGU+Ci0gICAgICAgIDwvZGVwZW5kZW5jeT4KLSAgICA8L2RlcGVuZGVuY2llcz4KLSAgICA8YnVpbGQ+Ci0gICAgICAgIDxkaXJlY3Rvcnk+JHtiYXNlZGlyfS90YXJnZXQ8L2RpcmVjdG9yeT4KLSAgICAgICAgPGZpbmFsTmFtZT4ke3Byb2plY3QuYXJ0aWZhY3RJZH0tJHtwcm9qZWN0LnZlcnNpb259PC9maW5hbE5hbWU+Ci0gICAgICAgIDxyZXNvdXJjZXM+Ci0gICAgICAgICAgICA8cmVzb3VyY2U+Ci0gICAgICAgICAgICAgICAgPGRpcmVjdG9yeT4ke2Jhc2VkaXJ9L3NyYy9tYWluL3Jlc291cmNlczwvZGlyZWN0b3J5PgotICAgICAgICAgICAgPC9yZXNvdXJjZT4KLSAgICAgICAgPC9yZXNvdXJjZXM+Ci0gICAgICAgIDx0ZXN0UmVzb3VyY2VzPgotICAgICAgICAgICAgPHRlc3RSZXNvdXJjZT4KLSAgICAgICAgICAgICAgICA8ZGlyZWN0b3J5PiR7YmFzZWRpcn0vc3JjL3Rlc3QvcmVzb3VyY2VzPC9kaXJlY3Rvcnk+Ci0gICAgICAgICAgICA8L3Rlc3RSZXNvdXJjZT4KLSAgICAgICAgPC90ZXN0UmVzb3VyY2VzPgotICAgICAgICA8cGx1Z2lucz4KLSAgICAgICAgICAgIDxwbHVnaW4+Ci0gICAgICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS5tYXZlbi5wbHVnaW5zPC9ncm91cElkPgotICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPm1hdmVuLWFzc2VtYmx5LXBsdWdpbjwvYXJ0aWZhY3RJZD4KLSAgICAgICAgICAgICAgICA8ZXhlY3V0aW9ucz4KLSAgICAgICAgICAgICAgICAgICAgPGV4ZWN1dGlvbj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxpZD5idWlsZC1kZXRhY2hlZC1hc3NlbWJsaWVzPC9pZD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwaGFzZT5wYWNrYWdlPC9waGFzZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxnb2Fscz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z29hbD5zaW5nbGU8L2dvYWw+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2dvYWxzPgotICAgICAgICAgICAgICAgICAgICAgICAgPGNvbmZpZ3VyYXRpb24+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF0dGFjaD5mYWxzZTwvYXR0YWNoPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdG9ycz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0b3I+c3JjL2Fzc2VtYmx5L3N0YW5kYWxvbmUueG1sPC9kZXNjcmlwdG9yPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRvcj5zcmMvYXNzZW1ibHkvaGFkb29wLWpvYi54bWw8L2Rlc2NyaXB0b3I+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdG9ycz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmluYWxOYW1lPiR7cHJvamVjdC5hcnRpZmFjdElkfS0ke3Byb2plY3QudmVyc2lvbn08L2ZpbmFsTmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvY29uZmlndXJhdGlvbj4KLSAgICAgICAgICAgICAgICAgICAgPC9leGVjdXRpb24+Ci0gICAgICAgICAgICAgICAgPC9leGVjdXRpb25zPgotICAgICAgICAgICAgPC9wbHVnaW4+Ci0gICAgICAgICAgICA8cGx1Z2luPgotICAgICAgICAgICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUubWF2ZW4ucGx1Z2luczwvZ3JvdXBJZD4KLSAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5tYXZlbi1zdXJlZmlyZS1wbHVnaW48L2FydGlmYWN0SWQ+Ci0gICAgICAgICAgICA8L3BsdWdpbj4KLSAgICAgICAgICAgIDxwbHVnaW4+Ci0gICAgICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS5tYXZlbi5wbHVnaW5zPC9ncm91cElkPgotICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPm1hdmVuLWZhaWxzYWZlLXBsdWdpbjwvYXJ0aWZhY3RJZD4KLSAgICAgICAgICAgIDwvcGx1Z2luPgotICAgICAgICAgICAgPHBsdWdpbj4KLSAgICAgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuY29kZWhhdXMuZ21hdmVucGx1czwvZ3JvdXBJZD4KLSAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5nbWF2ZW5wbHVzLXBsdWdpbjwvYXJ0aWZhY3RJZD4KLSAgICAgICAgICAgICAgICA8ZXhlY3V0aW9ucz4KLSAgICAgICAgICAgICAgICAgICAgPGV4ZWN1dGlvbj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxnb2Fscz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z29hbD5hZGRTb3VyY2VzPC9nb2FsPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnb2FsPmFkZFRlc3RTb3VyY2VzPC9nb2FsPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnb2FsPmdlbmVyYXRlU3R1YnM8L2dvYWw+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdvYWw+Y29tcGlsZTwvZ29hbD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z29hbD5nZW5lcmF0ZVRlc3RTdHViczwvZ29hbD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z29hbD5jb21waWxlVGVzdHM8L2dvYWw+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdvYWw+cmVtb3ZlU3R1YnM8L2dvYWw+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdvYWw+cmVtb3ZlVGVzdFN0dWJzPC9nb2FsPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9nb2Fscz4KLSAgICAgICAgICAgICAgICAgICAgPC9leGVjdXRpb24+Ci0gICAgICAgICAgICAgICAgPC9leGVjdXRpb25zPgotICAgICAgICAgICAgPC9wbHVnaW4+Ci0gICAgICAgICAgICA8cGx1Z2luPgotICAgICAgICAgICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUubWF2ZW4ucGx1Z2luczwvZ3JvdXBJZD4KLSAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5tYXZlbi1qYXItcGx1Z2luPC9hcnRpZmFjdElkPgotICAgICAgICAgICAgICAgIDxjb25maWd1cmF0aW9uPgotICAgICAgICAgICAgICAgICAgICA8YXJjaGl2ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxtYW5pZmVzdEVudHJpZXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEdyZW1saW4tUGx1Z2luLURlcGVuZGVuY2llcz5vcmcuYXBhY2hlLmhhZG9vcDpoYWRvb3AtY2xpZW50OiR7aGFkb29wLnZlcnNpb259Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9HcmVtbGluLVBsdWdpbi1EZXBlbmRlbmNpZXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L21hbmlmZXN0RW50cmllcz4KLSAgICAgICAgICAgICAgICAgICAgPC9hcmNoaXZlPgotICAgICAgICAgICAgICAgIDwvY29uZmlndXJhdGlvbj4KLSAgICAgICAgICAgIDwvcGx1Z2luPgotICAgICAgICA8L3BsdWdpbnM+Ci0gICAgPC9idWlsZD4KLTwvcHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9naXJhcGgtZ3JlbWxpbi9zcmMvYXNzZW1ibHkvaGFkb29wLWpvYi54bWwgYi9naXJhcGgtZ3JlbWxpbi9zcmMvYXNzZW1ibHkvaGFkb29wLWpvYi54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1MjMzZTkuLjAwMDAwMDAKLS0tIGEvZ2lyYXBoLWdyZW1saW4vc3JjL2Fzc2VtYmx5L2hhZG9vcC1qb2IueG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotPCEtLQotICB+IExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLSAgfiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKLSAgfiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgotICB+IHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLSAgfiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCi0gIH4gIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQotICB+IHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAgfgotICB+IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICB+Ci0gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAotICB+IHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCi0gIH4gIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCi0gIH4gS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCi0gIH4gc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucwotICB+IHVuZGVyIHRoZSBMaWNlbnNlLgotICAtLT4KLTxhc3NlbWJseT4KLSAgICA8aWQ+am9iPC9pZD4KLSAgICA8Zm9ybWF0cz4KLSAgICAgICAgPGZvcm1hdD5qYXI8L2Zvcm1hdD4KLSAgICA8L2Zvcm1hdHM+Ci0gICAgPGluY2x1ZGVCYXNlRGlyZWN0b3J5PmZhbHNlPC9pbmNsdWRlQmFzZURpcmVjdG9yeT4KLSAgICA8ZGVwZW5kZW5jeVNldHM+Ci0gICAgICAgIDxkZXBlbmRlbmN5U2V0PgotICAgICAgICAgICAgPHVucGFjaz5mYWxzZTwvdW5wYWNrPgotICAgICAgICAgICAgPHNjb3BlPnJ1bnRpbWU8L3Njb3BlPgotICAgICAgICAgICAgPG91dHB1dERpcmVjdG9yeT5saWI8L291dHB1dERpcmVjdG9yeT4KLSAgICAgICAgICAgIDxleGNsdWRlcz4KLSAgICAgICAgICAgICAgICA8ZXhjbHVkZT4ke2dyb3VwSWR9OiR7YXJ0aWZhY3RJZH08L2V4Y2x1ZGU+Ci0gICAgICAgICAgICA8L2V4Y2x1ZGVzPgotICAgICAgICA8L2RlcGVuZGVuY3lTZXQ+Ci0gICAgICAgIDxkZXBlbmRlbmN5U2V0PgotICAgICAgICAgICAgPHVucGFjaz50cnVlPC91bnBhY2s+Ci0gICAgICAgICAgICA8aW5jbHVkZXM+Ci0gICAgICAgICAgICAgICAgPGluY2x1ZGU+JHtncm91cElkfToke2FydGlmYWN0SWR9PC9pbmNsdWRlPgotICAgICAgICAgICAgPC9pbmNsdWRlcz4KLSAgICAgICAgPC9kZXBlbmRlbmN5U2V0PgotICAgIDwvZGVwZW5kZW5jeVNldHM+Ci08L2Fzc2VtYmx5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dpcmFwaC1ncmVtbGluL3NyYy9hc3NlbWJseS9zdGFuZGFsb25lLnhtbCBiL2dpcmFwaC1ncmVtbGluL3NyYy9hc3NlbWJseS9zdGFuZGFsb25lLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODJiODUxNC4uMDAwMDAwMAotLS0gYS9naXJhcGgtZ3JlbWxpbi9zcmMvYXNzZW1ibHkvc3RhbmRhbG9uZS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi08IS0tCi0gIH4gTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQotICB+IG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQotICB+IGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCi0gIH4gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQotICB+IHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKLSAgfiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCi0gIH4gd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICB+Ci0gIH4gaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gIH4KLSAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCi0gIH4gc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KLSAgfiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKLSAgfiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKLSAgfiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCi0gIH4gdW5kZXIgdGhlIExpY2Vuc2UuCi0gIC0tPgotPGFzc2VtYmx5PgotICAgIDxpZD5zdGFuZGFsb25lPC9pZD4KLSAgICA8Zm9ybWF0cz4KLSAgICAgICAgPGZvcm1hdD5kaXI8L2Zvcm1hdD4KLSAgICA8L2Zvcm1hdHM+Ci0gICAgPGluY2x1ZGVCYXNlRGlyZWN0b3J5PmZhbHNlPC9pbmNsdWRlQmFzZURpcmVjdG9yeT4KLQotICAgIDxmaWxlU2V0cz4KLSAgICAgICAgPGZpbGVTZXQ+Ci0gICAgICAgICAgICA8ZGlyZWN0b3J5PnNyYy9tYWluL2JpbjwvZGlyZWN0b3J5PgotICAgICAgICAgICAgPG91dHB1dERpcmVjdG9yeT4vYmluPC9vdXRwdXREaXJlY3Rvcnk+Ci0gICAgICAgICAgICA8ZmlsZU1vZGU+MDc1NTwvZmlsZU1vZGU+Ci0gICAgICAgIDwvZmlsZVNldD4KLSAgICAgICAgPGZpbGVTZXQ+Ci0gICAgICAgICAgICA8ZGlyZWN0b3J5PnRhcmdldC8qLmphcjwvZGlyZWN0b3J5PgotICAgICAgICAgICAgPG91dHB1dERpcmVjdG9yeT4vbGliPC9vdXRwdXREaXJlY3Rvcnk+Ci0gICAgICAgIDwvZmlsZVNldD4KLSAgICA8L2ZpbGVTZXRzPgotCi0gICAgPGRlcGVuZGVuY3lTZXRzPgotICAgICAgICA8ZGVwZW5kZW5jeVNldD4KLSAgICAgICAgICAgIDxvdXRwdXREaXJlY3Rvcnk+L2xpYjwvb3V0cHV0RGlyZWN0b3J5PgotICAgICAgICAgICAgPHVucGFjaz5mYWxzZTwvdW5wYWNrPgotICAgICAgICAgICAgPHNjb3BlPmNvbXBpbGU8L3Njb3BlPgotICAgICAgICA8L2RlcGVuZGVuY3lTZXQ+Ci0gICAgICAgIDxkZXBlbmRlbmN5U2V0PgotICAgICAgICAgICAgPG91dHB1dERpcmVjdG9yeT4vbGliPC9vdXRwdXREaXJlY3Rvcnk+Ci0gICAgICAgICAgICA8dW5wYWNrPmZhbHNlPC91bnBhY2s+Ci0gICAgICAgICAgICA8c2NvcGU+cHJvdmlkZWQ8L3Njb3BlPgotICAgICAgICA8L2RlcGVuZGVuY3lTZXQ+Ci0gICAgPC9kZXBlbmRlbmN5U2V0cz4KLTwvYXNzZW1ibHk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ2lyYXBoLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dpcmFwaC9qc3IyMjMvR2lyYXBoR3JlbWxpblBsdWdpbi5qYXZhIGIvZ2lyYXBoLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dpcmFwaC9qc3IyMjMvR2lyYXBoR3JlbWxpblBsdWdpbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTEyMzM1Li4wMDAwMDAwCi0tLSBhL2dpcmFwaC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9naXJhcGgvanNyMjIzL0dpcmFwaEdyZW1saW5QbHVnaW4uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLS8qCi0gKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCi0gKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKLSAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCi0gKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCi0gKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCi0gKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCi0gKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAotICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KLSAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQotICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCi0gKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCi0gKiB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmdpcmFwaC5qc3IyMjM7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmdpcmFwaC5wcm9jZXNzLmNvbXB1dGVyLkVtcHR5T3V0RWRnZXM7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5naXJhcGgucHJvY2Vzcy5jb21wdXRlci5HaXJhcGhDb21wdXRhdGlvbjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmdpcmFwaC5wcm9jZXNzLmNvbXB1dGVyLkdpcmFwaEdyYXBoQ29tcHV0ZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5naXJhcGgucHJvY2Vzcy5jb21wdXRlci5HaXJhcGhNZW1vcnk7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5naXJhcGgucHJvY2Vzcy5jb21wdXRlci5HaXJhcGhNZXNzYWdlQ29tYmluZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5naXJhcGgucHJvY2Vzcy5jb21wdXRlci5HaXJhcGhNZXNzZW5nZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5naXJhcGgucHJvY2Vzcy5jb21wdXRlci5HaXJhcGhWZXJ0ZXg7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5naXJhcGgucHJvY2Vzcy5jb21wdXRlci5HaXJhcGhXb3JrZXJDb250ZXh0OwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ2lyYXBoLnByb2Nlc3MuY29tcHV0ZXIuTWVtb3J5QWdncmVnYXRvcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmdpcmFwaC5wcm9jZXNzLmNvbXB1dGVyLlBhc3NUaHJvdWdoTWVtb3J5OwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uanNyMjIzLkFic3RyYWN0R3JlbWxpblBsdWdpbjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmpzcjIyMy5EZWZhdWx0SW1wb3J0Q3VzdG9taXplcjsKLQotLyoqCi0gKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCi0gKi8KLXB1YmxpYyBmaW5hbCBjbGFzcyBHaXJhcGhHcmVtbGluUGx1Z2luIGV4dGVuZHMgQWJzdHJhY3RHcmVtbGluUGx1Z2luIHsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgTU9EVUxFX05BTUUgPSAidGlua2VycG9wLmdpcmFwaCI7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgR2lyYXBoR3JlbWxpblBsdWdpbiBpbnN0YW5jZSA9IG5ldyBHaXJhcGhHcmVtbGluUGx1Z2luKCk7Ci0KLSAgICBwdWJsaWMgR2lyYXBoR3JlbWxpblBsdWdpbigpIHsKLSAgICAgICAgc3VwZXIoTU9EVUxFX05BTUUsIERlZmF1bHRJbXBvcnRDdXN0b21pemVyLmJ1aWxkKCkuYWRkQ2xhc3NJbXBvcnRzKAotICAgICAgICAgICAgICAgIEVtcHR5T3V0RWRnZXMuY2xhc3MsCi0gICAgICAgICAgICAgICAgR2lyYXBoQ29tcHV0YXRpb24uY2xhc3MsCi0gICAgICAgICAgICAgICAgR2lyYXBoR3JhcGhDb21wdXRlci5jbGFzcywKLSAgICAgICAgICAgICAgICBHaXJhcGhNZW1vcnkuY2xhc3MsCi0gICAgICAgICAgICAgICAgR2lyYXBoTWVzc2FnZUNvbWJpbmVyLmNsYXNzLAotICAgICAgICAgICAgICAgIEdpcmFwaE1lc3Nlbmdlci5jbGFzcywKLSAgICAgICAgICAgICAgICBHaXJhcGhWZXJ0ZXguY2xhc3MsCi0gICAgICAgICAgICAgICAgR2lyYXBoV29ya2VyQ29udGV4dC5jbGFzcywKLSAgICAgICAgICAgICAgICBNZW1vcnlBZ2dyZWdhdG9yLmNsYXNzLAotICAgICAgICAgICAgICAgIFBhc3NUaHJvdWdoTWVtb3J5LmNsYXNzKS5jcmVhdGUoKSk7Ci0gICAgfQotCi0gICAgcHVibGljIHN0YXRpYyBHaXJhcGhHcmVtbGluUGx1Z2luIGluc3RhbmNlKCkgewotICAgICAgICByZXR1cm4gaW5zdGFuY2U7Ci0gICAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dpcmFwaC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9naXJhcGgvcHJvY2Vzcy9jb21wdXRlci9FbXB0eU91dEVkZ2VzLmphdmEgYi9naXJhcGgtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ2lyYXBoL3Byb2Nlc3MvY29tcHV0ZXIvRW1wdHlPdXRFZGdlcy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZGY0ODM1Li4wMDAwMDAwCi0tLSBhL2dpcmFwaC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9naXJhcGgvcHJvY2Vzcy9jb21wdXRlci9FbXB0eU91dEVkZ2VzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi0vKgotICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQotICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCi0gKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgotICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQotICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQotICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQotICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKLSAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCi0gKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKLSAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQotICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucwotICogdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLXBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5naXJhcGgucHJvY2Vzcy5jb21wdXRlcjsKLQotaW1wb3J0IG9yZy5hcGFjaGUuZ2lyYXBoLmVkZ2UuRWRnZTsKLWltcG9ydCBvcmcuYXBhY2hlLmdpcmFwaC5lZGdlLk91dEVkZ2VzOwotaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLmlvLk51bGxXcml0YWJsZTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuaW8uT2JqZWN0V3JpdGFibGU7Ci0KLWltcG9ydCBqYXZhLmlvLkRhdGFJbnB1dDsKLWltcG9ydCBqYXZhLmlvLkRhdGFPdXRwdXQ7Ci1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotCi0vKioKLSAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQotICovCi1wdWJsaWMgZmluYWwgY2xhc3MgRW1wdHlPdXRFZGdlcyBpbXBsZW1lbnRzIE91dEVkZ2VzPE9iamVjdFdyaXRhYmxlLCBOdWxsV3JpdGFibGU+IHsKLQotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIEVtcHR5T3V0RWRnZXMgSU5TVEFOQ0UgPSBuZXcgRW1wdHlPdXRFZGdlcygpOwotCi0gICAgcHVibGljIHN0YXRpYyBFbXB0eU91dEVkZ2VzIGluc3RhbmNlKCkgewotICAgICAgICByZXR1cm4gSU5TVEFOQ0U7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIHZvaWQgaW5pdGlhbGl6ZShmaW5hbCBJdGVyYWJsZTxFZGdlPE9iamVjdFdyaXRhYmxlLCBOdWxsV3JpdGFibGU+PiBlZGdlcykgewotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lkIGluaXRpYWxpemUoZmluYWwgaW50IGNhcGFjaXR5KSB7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIHZvaWQgaW5pdGlhbGl6ZSgpIHsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgdm9pZCBhZGQoZmluYWwgRWRnZTxPYmplY3RXcml0YWJsZSwgTnVsbFdyaXRhYmxlPiBlZGdlKSB7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIHZvaWQgcmVtb3ZlKGZpbmFsIE9iamVjdFdyaXRhYmxlIHRhcmdldFZlcnRleElkKSB7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIGludCBzaXplKCkgewotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgSXRlcmF0b3I8RWRnZTxPYmplY3RXcml0YWJsZSwgTnVsbFdyaXRhYmxlPj4gaXRlcmF0b3IoKSB7Ci0gICAgICAgIHJldHVybiBDb2xsZWN0aW9ucy5lbXB0eUl0ZXJhdG9yKCk7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIHZvaWQgd3JpdGUoZmluYWwgRGF0YU91dHB1dCBkYXRhT3V0cHV0KSB0aHJvd3MgSU9FeGNlcHRpb24gewotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lkIHJlYWRGaWVsZHMoZmluYWwgRGF0YUlucHV0IGRhdGFJbnB1dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9naXJhcGgtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ2lyYXBoL3Byb2Nlc3MvY29tcHV0ZXIvR2lyYXBoQ29tcHV0YXRpb24uamF2YSBiL2dpcmFwaC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9naXJhcGgvcHJvY2Vzcy9jb21wdXRlci9HaXJhcGhDb21wdXRhdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZDUyNTY2Li4wMDAwMDAwCi0tLSBhL2dpcmFwaC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9naXJhcGgvcHJvY2Vzcy9jb21wdXRlci9HaXJhcGhDb21wdXRhdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLSAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQotICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLSAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLSAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKLSAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKLSAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCi0gKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgotICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCi0gKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKLSAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKLSAqIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLXBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5naXJhcGgucHJvY2Vzcy5jb21wdXRlcjsKLQotaW1wb3J0IG9yZy5hcGFjaGUuZ2lyYXBoLmdyYXBoLkJhc2ljQ29tcHV0YXRpb247Ci1pbXBvcnQgb3JnLmFwYWNoZS5naXJhcGguZ3JhcGguVmVydGV4OwotaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLmlvLk51bGxXcml0YWJsZTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuaW8uT2JqZWN0V3JpdGFibGU7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLmlvLlZlcnRleFdyaXRhYmxlOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5WZXJ0ZXhQcm9ncmFtOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci51dGlsLkNvbXB1dGVyR3JhcGg7Ci0KLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotCi0vKioKLSAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQotICovCi1wdWJsaWMgZmluYWwgY2xhc3MgR2lyYXBoQ29tcHV0YXRpb24gZXh0ZW5kcyBCYXNpY0NvbXB1dGF0aW9uPE9iamVjdFdyaXRhYmxlLCBWZXJ0ZXhXcml0YWJsZSwgTnVsbFdyaXRhYmxlLCBPYmplY3RXcml0YWJsZT4gewotCi0gICAgcHVibGljIEdpcmFwaENvbXB1dGF0aW9uKCkgewotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lkIGNvbXB1dGUoZmluYWwgVmVydGV4PE9iamVjdFdyaXRhYmxlLCBWZXJ0ZXhXcml0YWJsZSwgTnVsbFdyaXRhYmxlPiB2ZXJ0ZXgsIGZpbmFsIEl0ZXJhYmxlPE9iamVjdFdyaXRhYmxlPiBtZXNzYWdlcykgdGhyb3dzIElPRXhjZXB0aW9uIHsKLSAgICAgICAgZmluYWwgR2lyYXBoV29ya2VyQ29udGV4dCB3b3JrZXJDb250ZXh0ID0gdGhpcy5nZXRXb3JrZXJDb250ZXh0KCk7Ci0gICAgICAgIGZpbmFsIFZlcnRleFByb2dyYW08Pz4gdmVydGV4UHJvZ3JhbSA9IHdvcmtlckNvbnRleHQuZ2V0VmVydGV4UHJvZ3JhbVBvb2woKS50YWtlKCk7Ci0gICAgICAgIHZlcnRleFByb2dyYW0uZXhlY3V0ZShDb21wdXRlckdyYXBoLnZlcnRleFByb2dyYW0odmVydGV4LmdldFZhbHVlKCkuZ2V0KCksIHZlcnRleFByb2dyYW0pLCB3b3JrZXJDb250ZXh0LmdldE1lc3NlbmdlcigoR2lyYXBoVmVydGV4KSB2ZXJ0ZXgsIHRoaXMsIG1lc3NhZ2VzLml0ZXJhdG9yKCkpLCB3b3JrZXJDb250ZXh0LmdldE1lbW9yeSgpKTsKLSAgICAgICAgd29ya2VyQ29udGV4dC5nZXRWZXJ0ZXhQcm9ncmFtUG9vbCgpLm9mZmVyKHZlcnRleFByb2dyYW0pOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL2dpcmFwaC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9naXJhcGgvcHJvY2Vzcy9jb21wdXRlci9HaXJhcGhHcmFwaENvbXB1dGVyLmphdmEgYi9naXJhcGgtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ2lyYXBoL3Byb2Nlc3MvY29tcHV0ZXIvR2lyYXBoR3JhcGhDb21wdXRlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YmJlYjM4Li4wMDAwMDAwCi0tLSBhL2dpcmFwaC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9naXJhcGgvcHJvY2Vzcy9jb21wdXRlci9HaXJhcGhHcmFwaENvbXB1dGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMDggKzAsMCBAQAotLyoKLSAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLSAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQotICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLSAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLSAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKLSAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKLSAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCi0gKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgotICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCi0gKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKLSAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKLSAqIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi1wYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ2lyYXBoLnByb2Nlc3MuY29tcHV0ZXI7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29uZmlndXJhdGlvbi5CYXNlQ29uZmlndXJhdGlvbjsKLWltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29uZmlndXJhdGlvbi5Db25maWd1cmF0aW9uOwotaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5jb25maWd1cmF0aW9uLkZpbGVDb25maWd1cmF0aW9uOwotaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5jb25maWd1cmF0aW9uLlByb3BlcnRpZXNDb25maWd1cmF0aW9uOwotaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5sYW5nMy5leGNlcHRpb24uRXhjZXB0aW9uVXRpbHM7Ci1pbXBvcnQgb3JnLmFwYWNoZS5naXJhcGguY29uZi5HaXJhcGhDb25maWd1cmF0aW9uOwotaW1wb3J0IG9yZy5hcGFjaGUuZ2lyYXBoLmNvbmYuR2lyYXBoQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5hcGFjaGUuZ2lyYXBoLmpvYi5HaXJhcGhKb2I7Ci1pbXBvcnQgb3JnLmFwYWNoZS5oYWRvb3AuZmlsZWNhY2hlLkRpc3RyaWJ1dGVkQ2FjaGU7Ci1pbXBvcnQgb3JnLmFwYWNoZS5oYWRvb3AuZnMuRmlsZVN5c3RlbTsKLWltcG9ydCBvcmcuYXBhY2hlLmhhZG9vcC5mcy5QYXRoOwotaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLm1hcHJlZHVjZS5DbHVzdGVyOwotaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLm1hcHJlZHVjZS5JbnB1dEZvcm1hdDsKLWltcG9ydCBvcmcuYXBhY2hlLmhhZG9vcC5tYXByZWR1Y2UuT3V0cHV0Rm9ybWF0OwotaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLm1hcHJlZHVjZS5saWIuaW5wdXQuRmlsZUlucHV0Rm9ybWF0OwotaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLm1hcHJlZHVjZS5saWIub3V0cHV0LkZpbGVPdXRwdXRGb3JtYXQ7Ci1pbXBvcnQgb3JnLmFwYWNoZS5oYWRvb3AudXRpbC5Ub29sOwotaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLnV0aWwuVG9vbFJ1bm5lcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmdpcmFwaC5zdHJ1Y3R1cmUuaW8uR2lyYXBoVmVydGV4SW5wdXRGb3JtYXQ7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5naXJhcGguc3RydWN0dXJlLmlvLkdpcmFwaFZlcnRleE91dHB1dEZvcm1hdDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5Db25zdGFudHM7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3AucHJvY2Vzcy5jb21wdXRlci5BYnN0cmFjdEhhZG9vcEdyYXBoQ29tcHV0ZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3AucHJvY2Vzcy5jb21wdXRlci51dGlsLkNvbXB1dGVyU3VibWlzc2lvbkhlbHBlcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5wcm9jZXNzLmNvbXB1dGVyLnV0aWwuTWFwUmVkdWNlSGVscGVyOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5IYWRvb3BHcmFwaDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuaW8uRmlsZVN5c3RlbVN0b3JhZ2U7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLmlvLkdyYXBoRmlsdGVyQXdhcmU7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLmlvLklucHV0T3V0cHV0SGVscGVyOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5pby5PYmplY3RXcml0YWJsZTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuaW8uT2JqZWN0V3JpdGFibGVJdGVyYXRvcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuaW8uVmVydGV4V3JpdGFibGU7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLnV0aWwuQ29uZlV0aWw7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLkNvbXB1dGVyUmVzdWx0OwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5HcmFwaENvbXB1dGVyOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5NYXBSZWR1Y2U7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLk1lbW9yeUNvbXB1dGVLZXk7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLlZlcnRleFByb2dyYW07Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnV0aWwuRGVmYXVsdENvbXB1dGVyUmVzdWx0OwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci51dGlsLk1hcE1lbW9yeTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5TdG9yYWdlOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udXRpbC5HcmVtbGluOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udXRpbC5pdGVyYXRvci5JdGVyYXRvclV0aWxzOwotCi1pbXBvcnQgamF2YS5pby5GaWxlOwotaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247Ci1pbXBvcnQgamF2YS5pby5Ob3RTZXJpYWxpemFibGVFeGNlcHRpb247Ci1pbXBvcnQgamF2YS5uZXQuVVJJOwotaW1wb3J0IGphdmEudXRpbC5IYXNoU2V0OwotaW1wb3J0IGphdmEudXRpbC5TZXQ7Ci1pbXBvcnQgamF2YS51dGlsLmNvbmN1cnJlbnQuQ29tcGxldGFibGVGdXR1cmU7Ci1pbXBvcnQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3I7Ci1pbXBvcnQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlOwotCi0vKioKLSAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQotICovCi1wdWJsaWMgZmluYWwgY2xhc3MgR2lyYXBoR3JhcGhDb21wdXRlciBleHRlbmRzIEFic3RyYWN0SGFkb29wR3JhcGhDb21wdXRlciBpbXBsZW1lbnRzIEdyYXBoQ29tcHV0ZXIsIFRvb2wgewotCi0gICAgcHJvdGVjdGVkIEdpcmFwaENvbmZpZ3VyYXRpb24gZ2lyYXBoQ29uZmlndXJhdGlvbiA9IG5ldyBHaXJhcGhDb25maWd1cmF0aW9uKCk7Ci0gICAgcHJpdmF0ZSBNYXBNZW1vcnkgbWVtb3J5ID0gbmV3IE1hcE1lbW9yeSgpOwotICAgIHByaXZhdGUgYm9vbGVhbiB1c2VXb3JrZXJUaHJlYWRzSW5Db25maWd1cmF0aW9uOwotICAgIHByaXZhdGUgU2V0PFN0cmluZz4gdmVydGV4UHJvZ3JhbUNvbmZpZ3VyYXRpb25LZXlzID0gbmV3IEhhc2hTZXQ8PigpOwotCi0gICAgcHVibGljIEdpcmFwaEdyYXBoQ29tcHV0ZXIoZmluYWwgSGFkb29wR3JhcGggaGFkb29wR3JhcGgpIHsKLSAgICAgICAgc3VwZXIoaGFkb29wR3JhcGgpOwotICAgICAgICBmaW5hbCBDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24gPSBoYWRvb3BHcmFwaC5jb25maWd1cmF0aW9uKCk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24uZ2V0S2V5cygpLmZvckVhY2hSZW1haW5pbmcoa2V5IC0+IHRoaXMuZ2lyYXBoQ29uZmlndXJhdGlvbi5zZXQoa2V5LCBjb25maWd1cmF0aW9uLmdldFByb3BlcnR5KGtleSkudG9TdHJpbmcoKSkpOwotICAgICAgICB0aGlzLmdpcmFwaENvbmZpZ3VyYXRpb24uc2V0TWFzdGVyQ29tcHV0ZUNsYXNzKEdpcmFwaE1lbW9yeS5jbGFzcyk7Ci0gICAgICAgIHRoaXMuZ2lyYXBoQ29uZmlndXJhdGlvbi5zZXRWZXJ0ZXhDbGFzcyhHaXJhcGhWZXJ0ZXguY2xhc3MpOwotICAgICAgICB0aGlzLmdpcmFwaENvbmZpZ3VyYXRpb24uc2V0Q29tcHV0YXRpb25DbGFzcyhHaXJhcGhDb21wdXRhdGlvbi5jbGFzcyk7Ci0gICAgICAgIHRoaXMuZ2lyYXBoQ29uZmlndXJhdGlvbi5zZXRXb3JrZXJDb250ZXh0Q2xhc3MoR2lyYXBoV29ya2VyQ29udGV4dC5jbGFzcyk7Ci0gICAgICAgIHRoaXMuZ2lyYXBoQ29uZmlndXJhdGlvbi5zZXRPdXRFZGdlc0NsYXNzKEVtcHR5T3V0RWRnZXMuY2xhc3MpOwotICAgICAgICB0aGlzLmdpcmFwaENvbmZpZ3VyYXRpb24uc2V0Q2xhc3MoR2lyYXBoQ29uc3RhbnRzLlZFUlRFWF9JRF9DTEFTUy5nZXRLZXkoKSwgT2JqZWN0V3JpdGFibGUuY2xhc3MsIE9iamVjdFdyaXRhYmxlLmNsYXNzKTsKLSAgICAgICAgdGhpcy5naXJhcGhDb25maWd1cmF0aW9uLnNldENsYXNzKEdpcmFwaENvbnN0YW50cy5WRVJURVhfVkFMVUVfQ0xBU1MuZ2V0S2V5KCksIFZlcnRleFdyaXRhYmxlLmNsYXNzLCBWZXJ0ZXhXcml0YWJsZS5jbGFzcyk7Ci0gICAgICAgIHRoaXMuZ2lyYXBoQ29uZmlndXJhdGlvbi5zZXRCb29sZWFuKEdpcmFwaENvbnN0YW50cy5TVEFUSUNfR1JBUEguZ2V0S2V5KCksIHRydWUpOwotICAgICAgICB0aGlzLmdpcmFwaENvbmZpZ3VyYXRpb24uc2V0VmVydGV4SW5wdXRGb3JtYXRDbGFzcyhHaXJhcGhWZXJ0ZXhJbnB1dEZvcm1hdC5jbGFzcyk7Ci0gICAgICAgIHRoaXMuZ2lyYXBoQ29uZmlndXJhdGlvbi5zZXRWZXJ0ZXhPdXRwdXRGb3JtYXRDbGFzcyhHaXJhcGhWZXJ0ZXhPdXRwdXRGb3JtYXQuY2xhc3MpOwotICAgICAgICB0aGlzLnVzZVdvcmtlclRocmVhZHNJbkNvbmZpZ3VyYXRpb24gPSB0aGlzLmdpcmFwaENvbmZpZ3VyYXRpb24uZ2V0SW50KEdpcmFwaENvbnN0YW50cy5NQVhfV09SS0VSUywgLTY2NikgIT0gLTY2NiB8fCB0aGlzLmdpcmFwaENvbmZpZ3VyYXRpb24uZ2V0SW50KEdpcmFwaENvbnN0YW50cy5OVU1fQ09NUFVURV9USFJFQURTLmdldEtleSgpLCAtNjY2KSAhPSAtNjY2OwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBHcmFwaENvbXB1dGVyIHdvcmtlcnMoZmluYWwgaW50IHdvcmtlcnMpIHsKLSAgICAgICAgdGhpcy51c2VXb3JrZXJUaHJlYWRzSW5Db25maWd1cmF0aW9uID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiBzdXBlci53b3JrZXJzKHdvcmtlcnMpOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBHcmFwaENvbXB1dGVyIGNvbmZpZ3VyZShmaW5hbCBTdHJpbmcga2V5LCBmaW5hbCBPYmplY3QgdmFsdWUpIHsKLSAgICAgICAgdGhpcy5naXJhcGhDb25maWd1cmF0aW9uLnNldChrZXksIHZhbHVlLnRvU3RyaW5nKCkpOwotICAgICAgICB0aGlzLnVzZVdvcmtlclRocmVhZHNJbkNvbmZpZ3VyYXRpb24gPSB0aGlzLmdpcmFwaENvbmZpZ3VyYXRpb24uZ2V0SW50KEdpcmFwaENvbnN0YW50cy5NQVhfV09SS0VSUywgLTY2NikgIT0gLTY2NiB8fCB0aGlzLmdpcmFwaENvbmZpZ3VyYXRpb24uZ2V0SW50KEdpcmFwaENvbnN0YW50cy5OVU1fQ09NUFVURV9USFJFQURTLmdldEtleSgpLCAtNjY2KSAhPSAtNjY2OwotICAgICAgICByZXR1cm4gdGhpczsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgR3JhcGhDb21wdXRlciBwcm9ncmFtKGZpbmFsIFZlcnRleFByb2dyYW0gdmVydGV4UHJvZ3JhbSkgewotICAgICAgICBzdXBlci5wcm9ncmFtKHZlcnRleFByb2dyYW0pOwotICAgICAgICB0aGlzLm1lbW9yeS5hZGRWZXJ0ZXhQcm9ncmFtTWVtb3J5Q29tcHV0ZUtleXModGhpcy52ZXJ0ZXhQcm9ncmFtKTsKLSAgICAgICAgZmluYWwgQmFzZUNvbmZpZ3VyYXRpb24gYXBhY2hlQ29uZmlndXJhdGlvbiA9IG5ldyBCYXNlQ29uZmlndXJhdGlvbigpOwotICAgICAgICBhcGFjaGVDb25maWd1cmF0aW9uLnNldERlbGltaXRlclBhcnNpbmdEaXNhYmxlZCh0cnVlKTsKLSAgICAgICAgdmVydGV4UHJvZ3JhbS5zdG9yZVN0YXRlKGFwYWNoZUNvbmZpZ3VyYXRpb24pOwotICAgICAgICBJdGVyYXRvclV0aWxzLmZpbGwoYXBhY2hlQ29uZmlndXJhdGlvbi5nZXRLZXlzKCksIHRoaXMudmVydGV4UHJvZ3JhbUNvbmZpZ3VyYXRpb25LZXlzKTsKLSAgICAgICAgQ29uZlV0aWwubWVyZ2VBcGFjaGVJbnRvSGFkb29wQ29uZmlndXJhdGlvbihhcGFjaGVDb25maWd1cmF0aW9uLCB0aGlzLmdpcmFwaENvbmZpZ3VyYXRpb24pOwotICAgICAgICB0aGlzLnZlcnRleFByb2dyYW0uZ2V0TWVzc2FnZUNvbWJpbmVyKCkuaWZQcmVzZW50KGNvbWJpbmVyIC0+IHRoaXMuZ2lyYXBoQ29uZmlndXJhdGlvbi5zZXRNZXNzYWdlQ29tYmluZXJDbGFzcyhHaXJhcGhNZXNzYWdlQ29tYmluZXIuY2xhc3MpKTsKLSAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIEZ1dHVyZTxDb21wdXRlclJlc3VsdD4gc3VibWl0KCkgewotICAgICAgICBzdXBlci52YWxpZGF0ZVN0YXRlUHJpb3JUb0V4ZWN1dGlvbigpOwotICAgICAgICByZXR1cm4gQ29tcHV0ZXJTdWJtaXNzaW9uSGVscGVyLnJ1bldpdGhCYWNrZ3JvdW5kVGhyZWFkKHRoaXM6OnN1Ym1pdFdpdGhFeGVjdXRvciwgIkdpcmFwaFN1Ym1pdHRlciIpOwotICAgIH0KLQotICAgIHByaXZhdGUgRnV0dXJlPENvbXB1dGVyUmVzdWx0PiBzdWJtaXRXaXRoRXhlY3V0b3IoZmluYWwgRXhlY3V0b3IgZXhlYykgewotICAgICAgICBmaW5hbCBsb25nIHN0YXJ0VGltZSA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOwotICAgICAgICBmaW5hbCBDb25maWd1cmF0aW9uIGFwYWNoZUNvbmZpZ3VyYXRpb24gPSBDb25mVXRpbC5tYWtlQXBhY2hlQ29uZmlndXJhdGlvbih0aGlzLmdpcmFwaENvbmZpZ3VyYXRpb24pOwotICAgICAgICByZXR1cm4gQ29tcGxldGFibGVGdXR1cmUuPENvbXB1dGVyUmVzdWx0PnN1cHBseUFzeW5jKCgpIC0+IHsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5sb2FkSmFycyhnaXJhcGhDb25maWd1cmF0aW9uKTsKLSAgICAgICAgICAgICAgICBUb29sUnVubmVyLnJ1bih0aGlzLCBuZXcgU3RyaW5nW117fSk7Ci0gICAgICAgICAgICB9IGNhdGNoIChmaW5hbCBFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgIC8vZS5wcmludFN0YWNrVHJhY2UoKTsKLSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKGUuZ2V0TWVzc2FnZSgpLCBlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRoaXMubWVtb3J5LnNldFJ1bnRpbWUoU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCkgLSBzdGFydFRpbWUpOwotICAgICAgICAgICAgLy8gY2xlYXIgcHJvcGVydGllcyB0aGF0IHNob3VsZCBub3QgYmUgcHJvcGFnYXRlZCBpbiBhbiBPTEFQIGNoYWluCi0gICAgICAgICAgICBhcGFjaGVDb25maWd1cmF0aW9uLmNsZWFyUHJvcGVydHkoQ29uc3RhbnRzLkdSRU1MSU5fSEFET09QX0dSQVBIX0ZJTFRFUik7Ci0gICAgICAgICAgICBhcGFjaGVDb25maWd1cmF0aW9uLmNsZWFyUHJvcGVydHkoQ29uc3RhbnRzLkdSRU1MSU5fSEFET09QX1ZFUlRFWF9QUk9HUkFNX0lOVEVSQ0VQVE9SKTsKLSAgICAgICAgICAgIHRoaXMudmVydGV4UHJvZ3JhbUNvbmZpZ3VyYXRpb25LZXlzLmZvckVhY2goYXBhY2hlQ29uZmlndXJhdGlvbjo6Y2xlYXJQcm9wZXJ0eSk7IC8vIGNsZWFyIG91dCB2ZXJ0ZXggcHJvZ3JhbSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucwotICAgICAgICAgICAgcmV0dXJuIG5ldyBEZWZhdWx0Q29tcHV0ZXJSZXN1bHQoSW5wdXRPdXRwdXRIZWxwZXIuZ2V0T3V0cHV0R3JhcGgoYXBhY2hlQ29uZmlndXJhdGlvbiwgdGhpcy5yZXN1bHRHcmFwaCwgdGhpcy5wZXJzaXN0KSwgdGhpcy5tZW1vcnkuYXNJbW11dGFibGUoKSk7Ci0gICAgICAgIH0sIGV4ZWMpOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBpbnQgcnVuKGZpbmFsIFN0cmluZ1tdIGFyZ3MpIHsKLSAgICAgICAgZmluYWwgU3RvcmFnZSBzdG9yYWdlID0gRmlsZVN5c3RlbVN0b3JhZ2Uub3Blbih0aGlzLmdpcmFwaENvbmZpZ3VyYXRpb24pOwotICAgICAgICBzdG9yYWdlLnJtKHRoaXMuZ2lyYXBoQ29uZmlndXJhdGlvbi5nZXQoQ29uc3RhbnRzLkdSRU1MSU5fSEFET09QX09VVFBVVF9MT0NBVElPTikpOwotICAgICAgICB0aGlzLmdpcmFwaENvbmZpZ3VyYXRpb24uc2V0Qm9vbGVhbihDb25zdGFudHMuR1JFTUxJTl9IQURPT1BfR1JBUEhfV1JJVEVSX0hBU19FREdFUywgdGhpcy5wZXJzaXN0LmVxdWFscyhQZXJzaXN0LkVER0VTKSk7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAvLyBzdG9yZSB2ZXJ0ZXggYW5kIGVkZ2UgZmlsdGVycyAod2lsbCBwcm9wYWdhdGUgZG93biB0byBuYXRpdmUgSW5wdXRGb3JtYXQgb3IgZWxzZSBHaXJhcGhWZXJ0ZXhJbnB1dEZvcm1hdCB3aWxsIHByb2Nlc3MpCi0gICAgICAgICAgICBmaW5hbCBCYXNlQ29uZmlndXJhdGlvbiBhcGFjaGVDb25maWd1cmF0aW9uID0gbmV3IEJhc2VDb25maWd1cmF0aW9uKCk7Ci0gICAgICAgICAgICBhcGFjaGVDb25maWd1cmF0aW9uLnNldERlbGltaXRlclBhcnNpbmdEaXNhYmxlZCh0cnVlKTsKLSAgICAgICAgICAgIEdyYXBoRmlsdGVyQXdhcmUuc3RvcmVHcmFwaEZpbHRlcihhcGFjaGVDb25maWd1cmF0aW9uLCB0aGlzLmdpcmFwaENvbmZpZ3VyYXRpb24sIHRoaXMuZ3JhcGhGaWx0ZXIpOwotCi0gICAgICAgICAgICAvLyBpdCBpcyBwb3NzaWJsZSB0byBydW4gZ3JhcGggY29tcHV0ZXIgd2l0aG91dCBhIHZlcnRleCBwcm9ncmFtIChhbmQgdGh1cywgb25seSBtYXAgcmVkdWNlIGpvYnMgaWYgdGhleSBleGlzdCkKLSAgICAgICAgICAgIGlmIChudWxsICE9IHRoaXMudmVydGV4UHJvZ3JhbSkgewotICAgICAgICAgICAgICAgIC8vIGEgd2F5IHRvIHZlcmlmeSBpbiBHaXJhcGggd2hldGhlciB0aGUgdHJhdmVyc2FsIHdpbGwgZ28gb3ZlciB0aGUgd2lyZSBvciBub3QKLSAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICBWZXJ0ZXhQcm9ncmFtLmNyZWF0ZVZlcnRleFByb2dyYW0odGhpcy5oYWRvb3BHcmFwaCwgQ29uZlV0aWwubWFrZUFwYWNoZUNvbmZpZ3VyYXRpb24odGhpcy5naXJhcGhDb25maWd1cmF0aW9uKSk7Ci0gICAgICAgICAgICAgICAgfSBjYXRjaCAoZmluYWwgSWxsZWdhbFN0YXRlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gTnVtYmVyRm9ybWF0RXhjZXB0aW9uIGlzIGxpa2VseSBubyBsb25nZXIgYSBwb3NzaWJpbGl0eSBoZXJlIGFmdGVyIDMuMi45IGFzIHRoZSBpbnRlcm5hbAotICAgICAgICAgICAgICAgICAgICAvLyBzZXJpYWxpemF0aW9uIGZvcm1hdCBmb3IgdHJhdmVyc2FscyBjaGFuZ2VkIGZyb20gYSBkZWxpbWl0ZWQgbGlzdCBvZiBieXRlcyBhcyBhIHN0cmluZyB0byBhCi0gICAgICAgICAgICAgICAgICAgIC8vIGJhc2U2NCBlbmNvZGVkIHN0cmluZy4gdW5kZXIgdGhlIGJhc2U2NCBtb2RlbCB3ZSBzaG91bGRuJ3Qgc2VlIE51bWJlckZvcm1hdEV4Y2VwdGlvbiBhbnltb3JlCi0gICAgICAgICAgICAgICAgICAgIC8vIGJ1dCBpIGxlZnQgaXQgaGVyZSBmb3Igbm93LCBqdXN0IGluIGNhc2UgdGhlcmUncyBzb21ldGhpbmcgaSdtIG5vdCBzZWVpbmcuIHNlZQotICAgICAgICAgICAgICAgICAgICAvLyBWZXJ0ZXhQcm9ncmFtSGVscGVyLmRlc2VyaWFsaXplKCkgZm9yIG1vcmUgaW5mb3JtYXRpb24gcmVsYXRlZCB0byB0aGlzIGhhbmRsaW5nCi0gICAgICAgICAgICAgICAgICAgIGZpbmFsIFRocm93YWJsZSByb290ID0gRXhjZXB0aW9uVXRpbHMuZ2V0Um9vdENhdXNlKGUpOwotICAgICAgICAgICAgICAgICAgICBpZiAocm9vdCBpbnN0YW5jZW9mIE51bWJlckZvcm1hdEV4Y2VwdGlvbiB8fCByb290IGluc3RhbmNlb2YgSU9FeGNlcHRpb24gfHwgcm9vdCBpbnN0YW5jZW9mIENsYXNzTm90Rm91bmRFeGNlcHRpb24pCi0gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTm90U2VyaWFsaXphYmxlRXhjZXB0aW9uKCJUaGUgcHJvdmlkZWQgdHJhdmVyc2FsIGlzIG5vdCBzZXJpYWxpemFibGUgYW5kIHRodXMsIGNhbiBub3QgYmUgZGlzdHJpYnV0ZWQgYWNyb3NzIHRoZSBjbHVzdGVyIik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIC8vIHJlbW92ZSBoaXN0b3JpYyBjb21iaW5lcnMgaW4gY29uZmlndXJhdGlvbiBwcm9wYWdhdGlvbiAodGhpcyBvY2N1cnMgd2hlbiBqb2IgY2hhaW5pbmcpCi0gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnZlcnRleFByb2dyYW0uZ2V0TWVzc2FnZUNvbWJpbmVyKCkuaXNQcmVzZW50KCkpCi0gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2lyYXBoQ29uZmlndXJhdGlvbi51bnNldChHaXJhcGhDb25zdGFudHMuTUVTU0FHRV9DT01CSU5FUl9DTEFTUy5nZXRLZXkoKSk7Ci0gICAgICAgICAgICAgICAgLy8gc3BsaXQgcmVxdWlyZWQgd29ya2VycyBhY3Jvc3Mgc3lzdGVtIChvcGVuIG1hcCBzbG90cyArIG1heCB0aHJlYWRzIHBlciBtYWNoaW5lID0gdG90YWwgYW1vdW50IG9mIFRpbmtlclBvcCB3b3JrZXJzKQotICAgICAgICAgICAgICAgIGlmICghdGhpcy51c2VXb3JrZXJUaHJlYWRzSW5Db25maWd1cmF0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZpbmFsIENsdXN0ZXIgY2x1c3RlciA9IG5ldyBDbHVzdGVyKEdpcmFwaEdyYXBoQ29tcHV0ZXIudGhpcy5naXJhcGhDb25maWd1cmF0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgaW50IHRvdGFsTWFwcGVycyA9IGNsdXN0ZXIuZ2V0Q2x1c3RlclN0YXR1cygpLmdldE1hcFNsb3RDYXBhY2l0eSgpIC0gMTsgLy8gMSBpcyBuZWVkZWQgZm9yIG1hc3RlcgotICAgICAgICAgICAgICAgICAgICBjbHVzdGVyLmNsb3NlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLndvcmtlcnMgPD0gdG90YWxNYXBwZXJzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdpcmFwaENvbmZpZ3VyYXRpb24uc2V0V29ya2VyQ29uZmlndXJhdGlvbih0aGlzLndvcmtlcnMsIHRoaXMud29ya2VycywgMTAwLjBGKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2lyYXBoQ29uZmlndXJhdGlvbi5zZXROdW1Db21wdXRlVGhyZWFkcygxKTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0b3RhbE1hcHBlcnMgPT0gMCkgdG90YWxNYXBwZXJzID0gMTsgLy8gaGFwcGVucyBpbiBsb2NhbCBtb2RlCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGhyZWFkc1Blck1hcHBlciA9IExvbmcudmFsdWVPZihNYXRoLnJvdW5kKChkb3VibGUpIHRoaXMud29ya2VycyAvIChkb3VibGUpIHRvdGFsTWFwcGVycykpLmludFZhbHVlKCk7IC8vIFRPRE86IG5lZWQgdG8gZmluZCBsZWFzdCBjb21tb24gZGVub21pbmF0b3IKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2lyYXBoQ29uZmlndXJhdGlvbi5zZXRXb3JrZXJDb25maWd1cmF0aW9uKHRvdGFsTWFwcGVycywgdG90YWxNYXBwZXJzLCAxMDAuMEYpOwotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5naXJhcGhDb25maWd1cmF0aW9uLnNldE51bUNvbXB1dGVUaHJlYWRzKHRocmVhZHNQZXJNYXBwZXIpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIC8vIHByZXBhcmUgdGhlIGdpcmFwaCB2ZXJ0ZXgtY2VudHJpYyBjb21wdXRpbmcgam9iCi0gICAgICAgICAgICAgICAgZmluYWwgR2lyYXBoSm9iIGpvYiA9IG5ldyBHaXJhcGhKb2IodGhpcy5naXJhcGhDb25maWd1cmF0aW9uLCBDb25zdGFudHMuR1JFTUxJTl9IQURPT1BfR0lSQVBIX0pPQl9QUkVGSVggKyB0aGlzLnZlcnRleFByb2dyYW0pOwotICAgICAgICAgICAgICAgIGpvYi5nZXRJbnRlcm5hbEpvYigpLnNldEphckJ5Q2xhc3MoR2lyYXBoR3JhcGhDb21wdXRlci5jbGFzcyk7Ci0gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuaW5mbyhDb25zdGFudHMuR1JFTUxJTl9IQURPT1BfR0lSQVBIX0pPQl9QUkVGSVggKyB0aGlzLnZlcnRleFByb2dyYW0pOwotICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBpbnB1dCBwYXRocyAoaWYgYW55KQotICAgICAgICAgICAgICAgIFN0cmluZyBpbnB1dExvY2F0aW9uID0gdGhpcy5naXJhcGhDb25maWd1cmF0aW9uLmdldChDb25zdGFudHMuR1JFTUxJTl9IQURPT1BfSU5QVVRfTE9DQVRJT04sIG51bGwpOwotICAgICAgICAgICAgICAgIGlmIChudWxsICE9IGlucHV0TG9jYXRpb24gJiYgRmlsZUlucHV0Rm9ybWF0LmNsYXNzLmlzQXNzaWduYWJsZUZyb20odGhpcy5naXJhcGhDb25maWd1cmF0aW9uLmdldENsYXNzKENvbnN0YW50cy5HUkVNTElOX0hBRE9PUF9HUkFQSF9SRUFERVIsIElucHV0Rm9ybWF0LmNsYXNzKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaW5wdXRMb2NhdGlvbiA9IENvbnN0YW50cy5nZXRTZWFyY2hHcmFwaExvY2F0aW9uKGlucHV0TG9jYXRpb24sIHN0b3JhZ2UpLm9yRWxzZSh0aGlzLmdpcmFwaENvbmZpZ3VyYXRpb24uZ2V0KENvbnN0YW50cy5HUkVNTElOX0hBRE9PUF9JTlBVVF9MT0NBVElPTikpOwotICAgICAgICAgICAgICAgICAgICBGaWxlSW5wdXRGb3JtYXQuc2V0SW5wdXRQYXRocyhqb2IuZ2V0SW50ZXJuYWxKb2IoKSwgbmV3IFBhdGgoaW5wdXRMb2NhdGlvbikpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAvLyBoYW5kbGUgb3V0cHV0IHBhdGhzIChpZiBhbnkpCi0gICAgICAgICAgICAgICAgU3RyaW5nIG91dHB1dExvY2F0aW9uID0gdGhpcy5naXJhcGhDb25maWd1cmF0aW9uLmdldChDb25zdGFudHMuR1JFTUxJTl9IQURPT1BfT1VUUFVUX0xPQ0FUSU9OLCBudWxsKTsKLSAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBvdXRwdXRMb2NhdGlvbiAmJiBGaWxlT3V0cHV0Rm9ybWF0LmNsYXNzLmlzQXNzaWduYWJsZUZyb20odGhpcy5naXJhcGhDb25maWd1cmF0aW9uLmdldENsYXNzKENvbnN0YW50cy5HUkVNTElOX0hBRE9PUF9HUkFQSF9XUklURVIsIE91dHB1dEZvcm1hdC5jbGFzcykpKSB7Ci0gICAgICAgICAgICAgICAgICAgIG91dHB1dExvY2F0aW9uID0gQ29uc3RhbnRzLmdldEdyYXBoTG9jYXRpb24odGhpcy5naXJhcGhDb25maWd1cmF0aW9uLmdldChDb25zdGFudHMuR1JFTUxJTl9IQURPT1BfT1VUUFVUX0xPQ0FUSU9OKSk7Ci0gICAgICAgICAgICAgICAgICAgIEZpbGVPdXRwdXRGb3JtYXQuc2V0T3V0cHV0UGF0aChqb2IuZ2V0SW50ZXJuYWxKb2IoKSwgbmV3IFBhdGgob3V0cHV0TG9jYXRpb24pKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgLy8gZXhlY3V0ZSB0aGUgam9iIGFuZCB3YWl0IHVudGlsIGl0IGNvbXBsZXRlcyAoaWYgaXQgZmFpbHMsIHRocm93IGFuIGV4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICBpZiAoIWpvYi5ydW4odHJ1ZSkpCi0gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIlRoZSBHaXJhcGhHcmFwaENvbXB1dGVyIGpvYiBmYWlsZWQgLS0gYWJvcnRpbmcgYWxsIHN1YnNlcXVlbnQgTWFwUmVkdWNlIGpvYnM6ICIgKyBqb2IuZ2V0SW50ZXJuYWxKb2IoKS5nZXRTdGF0dXMoKS5nZXRGYWlsdXJlSW5mbygpKTsKLSAgICAgICAgICAgICAgICAvLyBhZGQgdmVydGV4IHByb2dyYW0gbWVtb3J5IHZhbHVlcyB0byB0aGUgcmV0dXJuIG1lbW9yeQotICAgICAgICAgICAgICAgIGZvciAoZmluYWwgTWVtb3J5Q29tcHV0ZUtleSBtZW1vcnlDb21wdXRlS2V5IDogdGhpcy52ZXJ0ZXhQcm9ncmFtLmdldE1lbW9yeUNvbXB1dGVLZXlzKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFtZW1vcnlDb21wdXRlS2V5LmlzVHJhbnNpZW50KCkgJiYgc3RvcmFnZS5leGlzdHMoQ29uc3RhbnRzLmdldE1lbW9yeUxvY2F0aW9uKHRoaXMuZ2lyYXBoQ29uZmlndXJhdGlvbi5nZXQoQ29uc3RhbnRzLkdSRU1MSU5fSEFET09QX09VVFBVVF9MT0NBVElPTiksIG1lbW9yeUNvbXB1dGVLZXkuZ2V0S2V5KCkpKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgT2JqZWN0V3JpdGFibGVJdGVyYXRvciBpdGVyYXRvciA9IG5ldyBPYmplY3RXcml0YWJsZUl0ZXJhdG9yKHRoaXMuZ2lyYXBoQ29uZmlndXJhdGlvbiwgbmV3IFBhdGgoQ29uc3RhbnRzLmdldE1lbW9yeUxvY2F0aW9uKHRoaXMuZ2lyYXBoQ29uZmlndXJhdGlvbi5nZXQoQ29uc3RhbnRzLkdSRU1MSU5fSEFET09QX09VVFBVVF9MT0NBVElPTiksIG1lbW9yeUNvbXB1dGVLZXkuZ2V0S2V5KCkpKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlcmF0b3IuaGFzTmV4dCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tZW1vcnkuc2V0KG1lbW9yeUNvbXB1dGVLZXkuZ2V0S2V5KCksIGl0ZXJhdG9yLm5leHQoKS5nZXRWYWx1ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZlcnRleCBwcm9ncmFtIG1lbW9yeSBpdGVtcyBhcmUgbm90IHN0b3JlZCBvbiBkaXNrCi0gICAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlLnJtKENvbnN0YW50cy5nZXRNZW1vcnlMb2NhdGlvbih0aGlzLmdpcmFwaENvbmZpZ3VyYXRpb24uZ2V0KENvbnN0YW50cy5HUkVNTElOX0hBRE9PUF9PVVRQVVRfTE9DQVRJT04pLCBtZW1vcnlDb21wdXRlS2V5LmdldEtleSgpKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZmluYWwgUGF0aCBwYXRoID0gbmV3IFBhdGgoQ29uc3RhbnRzLmdldE1lbW9yeUxvY2F0aW9uKHRoaXMuZ2lyYXBoQ29uZmlndXJhdGlvbi5nZXQoQ29uc3RhbnRzLkdSRU1MSU5fSEFET09QX09VVFBVVF9MT0NBVElPTiksIENvbnN0YW50cy5ISURERU5fSVRFUkFUSU9OKSk7Ci0gICAgICAgICAgICAgICAgdGhpcy5tZW1vcnkuc2V0SXRlcmF0aW9uKChJbnRlZ2VyKSBuZXcgT2JqZWN0V3JpdGFibGVJdGVyYXRvcih0aGlzLmdpcmFwaENvbmZpZ3VyYXRpb24sIHBhdGgpLm5leHQoKS5nZXRWYWx1ZSgpKTsKLSAgICAgICAgICAgICAgICBzdG9yYWdlLnJtKENvbnN0YW50cy5nZXRNZW1vcnlMb2NhdGlvbih0aGlzLmdpcmFwaENvbmZpZ3VyYXRpb24uZ2V0KENvbnN0YW50cy5HUkVNTElOX0hBRE9PUF9PVVRQVVRfTE9DQVRJT04pLCBDb25zdGFudHMuSElEREVOX0lURVJBVElPTikpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gZG8gbWFwIHJlZHVjZSBqb2JzCi0gICAgICAgICAgICB0aGlzLmdpcmFwaENvbmZpZ3VyYXRpb24uc2V0Qm9vbGVhbihDb25zdGFudHMuR1JFTUxJTl9IQURPT1BfR1JBUEhfUkVBREVSX0hBU19FREdFUywgdGhpcy5naXJhcGhDb25maWd1cmF0aW9uLmdldEJvb2xlYW4oQ29uc3RhbnRzLkdSRU1MSU5fSEFET09QX0dSQVBIX1dSSVRFUl9IQVNfRURHRVMsIHRydWUpKTsKLSAgICAgICAgICAgIGZvciAoZmluYWwgTWFwUmVkdWNlIG1hcFJlZHVjZSA6IHRoaXMubWFwUmVkdWNlcnMpIHsKLSAgICAgICAgICAgICAgICB0aGlzLm1lbW9yeS5hZGRNYXBSZWR1Y2VNZW1vcnlLZXkobWFwUmVkdWNlKTsKLSAgICAgICAgICAgICAgICBNYXBSZWR1Y2VIZWxwZXIuZXhlY3V0ZU1hcFJlZHVjZUpvYihtYXBSZWR1Y2UsIHRoaXMubWVtb3J5LCB0aGlzLmdpcmFwaENvbmZpZ3VyYXRpb24pOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBpZiBubyBwZXJzaXN0ZW5jZSwgZGVsZXRlIHRoZSBncmFwaCBhbmQgbWVtb3J5IG91dHB1dAotICAgICAgICAgICAgaWYgKHRoaXMucGVyc2lzdC5lcXVhbHMoUGVyc2lzdC5OT1RISU5HKSkKLSAgICAgICAgICAgICAgICBzdG9yYWdlLnJtKHRoaXMuZ2lyYXBoQ29uZmlndXJhdGlvbi5nZXQoQ29uc3RhbnRzLkdSRU1MSU5fSEFET09QX09VVFBVVF9MT0NBVElPTikpOwotICAgICAgICB9IGNhdGNoIChmaW5hbCBFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbihlLmdldE1lc3NhZ2UoKSwgZSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIHZvaWQgc2V0Q29uZihmaW5hbCBvcmcuYXBhY2hlLmhhZG9vcC5jb25mLkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikgewotICAgICAgICAvLyBUT0RPOiBpcyB0aGlzIG5lY2Vzc2FyeSB0byBpbXBsZW1lbnQ/Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIG9yZy5hcGFjaGUuaGFkb29wLmNvbmYuQ29uZmlndXJhdGlvbiBnZXRDb25mKCkgewotICAgICAgICByZXR1cm4gdGhpcy5naXJhcGhDb25maWd1cmF0aW9uOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHByb3RlY3RlZCB2b2lkIGxvYWRKYXIoZmluYWwgb3JnLmFwYWNoZS5oYWRvb3AuY29uZi5Db25maWd1cmF0aW9uIGhhZG9vcENvbmZpZ3VyYXRpb24sIGZpbmFsIEZpbGUgZmlsZSwgZmluYWwgT2JqZWN0Li4uIHBhcmFtcykKLSAgICAgICAgICAgIHRocm93cyBJT0V4Y2VwdGlvbiB7Ci0gICAgICAgIGZpbmFsIEZpbGVTeXN0ZW0gZGVmYXVsdEZpbGVTeXN0ZW0gPSBGaWxlU3lzdGVtLmdldChoYWRvb3BDb25maWd1cmF0aW9uKTsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGZpbmFsIFBhdGggamFyRmlsZSA9IG5ldyBQYXRoKGRlZmF1bHRGaWxlU3lzdGVtLmdldEhvbWVEaXJlY3RvcnkoKSArICIvaGFkb29wLWdyZW1saW4tIiArIEdyZW1saW4udmVyc2lvbigpICsgIi1saWJzLyIgKyBmaWxlLmdldE5hbWUoKSk7Ci0gICAgICAgICAgICBpZiAoIWRlZmF1bHRGaWxlU3lzdGVtLmV4aXN0cyhqYXJGaWxlKSkgewotICAgICAgICAgICAgICAgIGZpbmFsIFBhdGggc291cmNlUGF0aCA9IG5ldyBQYXRoKGZpbGUuZ2V0UGF0aCgpKTsKLSAgICAgICAgICAgICAgICBmaW5hbCBVUkkgc291cmNlVXJpID0gc291cmNlUGF0aC50b1VyaSgpOwotICAgICAgICAgICAgICAgIGZpbmFsIEZpbGVTeXN0ZW0gZnMgPSBGaWxlU3lzdGVtLmdldChzb3VyY2VVcmksIGhhZG9vcENvbmZpZ3VyYXRpb24pOwotICAgICAgICAgICAgICAgIGZzLmNvcHlGcm9tTG9jYWxGaWxlKHNvdXJjZVBhdGgsIGphckZpbGUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBEaXN0cmlidXRlZENhY2hlLmFkZEFyY2hpdmVUb0NsYXNzUGF0aChqYXJGaWxlLCB0aGlzLmdpcmFwaENvbmZpZ3VyYXRpb24sIGRlZmF1bHRGaWxlU3lzdGVtKTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKGZpbmFsIEV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oZS5nZXRNZXNzYWdlKCksIGUpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGNhdGNoIChmaW5hbCBFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbihlLmdldE1lc3NhZ2UoKSwgZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihmaW5hbCBTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICAgICAgZmluYWwgRmlsZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiA9IG5ldyBQcm9wZXJ0aWVzQ29uZmlndXJhdGlvbihhcmdzWzBdKTsKLSAgICAgICAgbmV3IEdpcmFwaEdyYXBoQ29tcHV0ZXIoSGFkb29wR3JhcGgub3Blbihjb25maWd1cmF0aW9uKSkucHJvZ3JhbShWZXJ0ZXhQcm9ncmFtLmNyZWF0ZVZlcnRleFByb2dyYW0oSGFkb29wR3JhcGgub3Blbihjb25maWd1cmF0aW9uKSwgY29uZmlndXJhdGlvbikpLnN1Ym1pdCgpLmdldCgpOwotICAgIH0KLQotICAgIHB1YmxpYyBGZWF0dXJlcyBmZWF0dXJlcygpIHsKLSAgICAgICAgcmV0dXJuIG5ldyBGZWF0dXJlcygpOwotICAgIH0KLQotICAgIHB1YmxpYyBjbGFzcyBGZWF0dXJlcyBleHRlbmRzIEFic3RyYWN0SGFkb29wR3JhcGhDb21wdXRlci5GZWF0dXJlcyB7Ci0KLSAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHB1YmxpYyBpbnQgZ2V0TWF4V29ya2VycygpIHsKLSAgICAgICAgICAgIGlmIChHaXJhcGhHcmFwaENvbXB1dGVyLnRoaXMuZ2lyYXBoQ29uZmlndXJhdGlvbi5nZXRMb2NhbFRlc3RNb2RlKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bnRpbWUuZ2V0UnVudGltZSgpLmF2YWlsYWJsZVByb2Nlc3NvcnMoKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHJldHVybiBJbnRlZ2VyLk1BWF9WQUxVRTsKLSAgICAgICAgICAgICAgICAvKnRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIGZpbmFsIENsdXN0ZXIgY2x1c3RlciA9IG5ldyBDbHVzdGVyKEdpcmFwaEdyYXBoQ29tcHV0ZXIudGhpcy5naXJhcGhDb25maWd1cmF0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgaW50IG1heFdvcmtlcnMgPSAoY2x1c3Rlci5nZXRDbHVzdGVyU3RhdHVzKCkuZ2V0TWFwU2xvdENhcGFjaXR5KCkgLSAxKSAqIDE2OyAvLyBtYXggMTYgdGhyZWFkcyBwZXIgbWFjaGluZSBoYXJkY29kZWQgOnwKLSAgICAgICAgICAgICAgICAgICAgY2x1c3Rlci5jbG9zZSgpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF4V29ya2VyczsKLQotICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGZpbmFsIElPRXhjZXB0aW9uIHwgSW50ZXJydXB0ZWRFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKGUuZ2V0TWVzc2FnZSgpLCBlKTsKLSAgICAgICAgICAgICAgICB9Ki8KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KZGlmZiAtLWdpdCBhL2dpcmFwaC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9naXJhcGgvcHJvY2Vzcy9jb21wdXRlci9HaXJhcGhNZW1vcnkuamF2YSBiL2dpcmFwaC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9naXJhcGgvcHJvY2Vzcy9jb21wdXRlci9HaXJhcGhNZW1vcnkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTY0MjhmMy4uMDAwMDAwMAotLS0gYS9naXJhcGgtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ2lyYXBoL3Byb2Nlc3MvY29tcHV0ZXIvR2lyYXBoTWVtb3J5LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxOTggKzAsMCBAQAotLyoKLSAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLSAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQotICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLSAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLSAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKLSAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKLSAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCi0gKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgotICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCi0gKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKLSAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKLSAqIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi1wYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ2lyYXBoLnByb2Nlc3MuY29tcHV0ZXI7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29uZmlndXJhdGlvbi5Db25maWd1cmF0aW9uOwotaW1wb3J0IG9yZy5hcGFjaGUuZ2lyYXBoLm1hc3Rlci5NYXN0ZXJDb21wdXRlOwotaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLmZzLkZpbGVTeXN0ZW07Ci1pbXBvcnQgb3JnLmFwYWNoZS5oYWRvb3AuZnMuUGF0aDsKLWltcG9ydCBvcmcuYXBhY2hlLmhhZG9vcC5pby5TZXF1ZW5jZUZpbGU7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3AuQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5IYWRvb3BHcmFwaDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuaW8uT2JqZWN0V3JpdGFibGU7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLnV0aWwuQ29uZlV0aWw7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLkdyYXBoQ29tcHV0ZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLk1lbW9yeTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuTWVtb3J5Q29tcHV0ZUtleTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuVmVydGV4UHJvZ3JhbTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIudXRpbC5NZW1vcnlIZWxwZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5TdHJpbmdGYWN0b3J5OwotaW1wb3J0IG9yZy5qYXZhdHVwbGVzLlBhaXI7Ci0KLWltcG9ydCBqYXZhLmlvLkRhdGFJbnB1dDsKLWltcG9ydCBqYXZhLmlvLkRhdGFPdXRwdXQ7Ci1pbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7Ci1pbXBvcnQgamF2YS51dGlsLk1hcDsKLWltcG9ydCBqYXZhLnV0aWwuU2V0OwotaW1wb3J0IGphdmEudXRpbC5mdW5jdGlvbi5CaW5hcnlPcGVyYXRvcjsKLWltcG9ydCBqYXZhLnV0aWwuc3RyZWFtLkNvbGxlY3RvcnM7Ci0KLS8qKgotICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCi0gKi8KLXB1YmxpYyBmaW5hbCBjbGFzcyBHaXJhcGhNZW1vcnkgZXh0ZW5kcyBNYXN0ZXJDb21wdXRlIGltcGxlbWVudHMgTWVtb3J5IHsKLQotICAgIHByaXZhdGUgVmVydGV4UHJvZ3JhbTw/PiB2ZXJ0ZXhQcm9ncmFtOwotICAgIHByaXZhdGUgR2lyYXBoV29ya2VyQ29udGV4dCB3b3JrZXI7Ci0gICAgcHJpdmF0ZSBNYXA8U3RyaW5nLCBNZW1vcnlDb21wdXRlS2V5PiBtZW1vcnlDb21wdXRlS2V5czsKLSAgICBwcml2YXRlIGJvb2xlYW4gaW5FeGVjdXRlID0gZmFsc2U7Ci0gICAgcHJpdmF0ZSBsb25nIHN0YXJ0VGltZSA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOwotCi0gICAgcHVibGljIEdpcmFwaE1lbW9yeSgpIHsKLSAgICAgICAgLy8gR2lyYXBoIFJlZmxlY3Rpb25VdGlscyByZXF1aXJlcyB0aGlzIHRvIGJlIHB1YmxpYyBhdCBtaW5pbXVtCi0gICAgfQotCi0gICAgcHVibGljIEdpcmFwaE1lbW9yeShmaW5hbCBHaXJhcGhXb3JrZXJDb250ZXh0IHdvcmtlciwgZmluYWwgVmVydGV4UHJvZ3JhbTw/PiB2ZXJ0ZXhQcm9ncmFtKSB7Ci0gICAgICAgIHRoaXMud29ya2VyID0gd29ya2VyOwotICAgICAgICB0aGlzLnZlcnRleFByb2dyYW0gPSB2ZXJ0ZXhQcm9ncmFtOwotICAgICAgICB0aGlzLm1lbW9yeUNvbXB1dGVLZXlzID0gbmV3IEhhc2hNYXA8PigpOwotICAgICAgICB0aGlzLnZlcnRleFByb2dyYW0uZ2V0TWVtb3J5Q29tcHV0ZUtleXMoKS5mb3JFYWNoKGtleSAtPiB0aGlzLm1lbW9yeUNvbXB1dGVLZXlzLnB1dChrZXkuZ2V0S2V5KCksIGtleSkpOwotICAgICAgICB0aGlzLmluRXhlY3V0ZSA9IHRydWU7Ci0gICAgfQotCi0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgdm9pZCBpbml0aWFsaXplKCkgewotICAgICAgICAvLyBkbyBub3QgaW5pdGlhbGl6ZSBhZ2dyZWdhdG9ycyBoZXJlIGJlY2F1c2UgdGhlIGdldENvbmYoKSBjb25maWd1cmF0aW9uIGlzIG5vdCBhdmFpbGFibGUgYXQgdGhpcyBwb2ludAotICAgICAgICAvLyB1c2UgY29tcHV0ZSgpIGluaXRpYWwgaXRlcmF0aW9uIGluc3RlYWQKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgdm9pZCBjb21wdXRlKCkgewotICAgICAgICB0aGlzLmluRXhlY3V0ZSA9IGZhbHNlOwotICAgICAgICBpZiAoMCA9PSB0aGlzLmdldFN1cGVyc3RlcCgpKSB7IC8vIHNldHVwCi0gICAgICAgICAgICBmaW5hbCBDb25maWd1cmF0aW9uIGFwYWNoZUNvbmZpZ3VyYXRpb24gPSBDb25mVXRpbC5tYWtlQXBhY2hlQ29uZmlndXJhdGlvbih0aGlzLmdldENvbmYoKSk7Ci0gICAgICAgICAgICB0aGlzLnZlcnRleFByb2dyYW0gPSBWZXJ0ZXhQcm9ncmFtLmNyZWF0ZVZlcnRleFByb2dyYW0oSGFkb29wR3JhcGgub3BlbihhcGFjaGVDb25maWd1cmF0aW9uKSwgYXBhY2hlQ29uZmlndXJhdGlvbik7Ci0gICAgICAgICAgICB0aGlzLm1lbW9yeUNvbXB1dGVLZXlzID0gbmV3IEhhc2hNYXA8PigpOwotICAgICAgICAgICAgdGhpcy52ZXJ0ZXhQcm9ncmFtLmdldE1lbW9yeUNvbXB1dGVLZXlzKCkuZm9yRWFjaChrZXkgLT4gdGhpcy5tZW1vcnlDb21wdXRlS2V5cy5wdXQoa2V5LmdldEtleSgpLCBrZXkpKTsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgZm9yIChmaW5hbCBNZW1vcnlDb21wdXRlS2V5IGtleSA6IHRoaXMubWVtb3J5Q29tcHV0ZUtleXMudmFsdWVzKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWdpc3RlclBlcnNpc3RlbnRBZ2dyZWdhdG9yKGtleS5nZXRLZXkoKSwgTWVtb3J5QWdncmVnYXRvci5jbGFzcyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBjYXRjaCAoZmluYWwgRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKGUuZ2V0TWVzc2FnZSgpLCBlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRoaXMudmVydGV4UHJvZ3JhbS5zZXR1cCh0aGlzKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIGEgaGFjayB0byBnZXQgdGhlIGxhc3QgaXRlcmF0aW9uIG1lbW9yeSB2YWx1ZXMgdG8gc3RpY2sKLSAgICAgICAgICAgIGZpbmFsIFBhc3NUaHJvdWdoTWVtb3J5IG1lbW9yeSA9IG5ldyBQYXNzVGhyb3VnaE1lbW9yeSh0aGlzKTsKLSAgICAgICAgICAgIGlmICh0aGlzLnZlcnRleFByb2dyYW0udGVybWluYXRlKG1lbW9yeSkpIHsgLy8gdGVybWluYXRlCi0gICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nIG91dHB1dExvY2F0aW9uID0gdGhpcy5nZXRDb25mKCkuZ2V0KENvbnN0YW50cy5HUkVNTElOX0hBRE9PUF9PVVRQVVRfTE9DQVRJT04sIG51bGwpOwotICAgICAgICAgICAgICAgIGlmIChudWxsICE9IG91dHB1dExvY2F0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGZpbmFsIFN0cmluZyBrZXkgOiB0aGlzLmtleXMoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5tZW1vcnlDb21wdXRlS2V5cy5nZXQoa2V5KS5pc1RyYW5zaWVudCgpKSB7IC8vIGRvIG5vdCB3cml0ZSB0cmFuc2llbnQgbWVtb3J5IGtleXMgdG8gZGlzawotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBTZXF1ZW5jZUZpbGUuV3JpdGVyIHdyaXRlciA9IFNlcXVlbmNlRmlsZS5jcmVhdGVXcml0ZXIoRmlsZVN5c3RlbS5nZXQodGhpcy5nZXRDb25mKCkpLCB0aGlzLmdldENvbmYoKSwgbmV3IFBhdGgob3V0cHV0TG9jYXRpb24gKyAiLyIgKyBrZXkpLCBPYmplY3RXcml0YWJsZS5jbGFzcywgT2JqZWN0V3JpdGFibGUuY2xhc3MpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIuYXBwZW5kKE9iamVjdFdyaXRhYmxlLmdldE51bGxPYmplY3RXcml0YWJsZSgpLCBuZXcgT2JqZWN0V3JpdGFibGU8PihtZW1vcnkuZ2V0KGtleSkpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLmNsb3NlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gd3JpdHRlbiBmb3IgR2lyYXBoR3JhcGhDb21wdXRlciB0byByZWFkIGFuZCB0aGVuIGlzIGRlbGV0ZWQgYnkgR2lyYXBoR3JhcGhDb21wdXRlcgotICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgU2VxdWVuY2VGaWxlLldyaXRlciB3cml0ZXIgPSBTZXF1ZW5jZUZpbGUuY3JlYXRlV3JpdGVyKEZpbGVTeXN0ZW0uZ2V0KHRoaXMuZ2V0Q29uZigpKSwgdGhpcy5nZXRDb25mKCksIG5ldyBQYXRoKG91dHB1dExvY2F0aW9uICsgIi8iICsgQ29uc3RhbnRzLkhJRERFTl9JVEVSQVRJT04pLCBPYmplY3RXcml0YWJsZS5jbGFzcywgT2JqZWN0V3JpdGFibGUuY2xhc3MpOwotICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLmFwcGVuZChPYmplY3RXcml0YWJsZS5nZXROdWxsT2JqZWN0V3JpdGFibGUoKSwgbmV3IE9iamVjdFdyaXRhYmxlPD4obWVtb3J5LmdldEl0ZXJhdGlvbigpKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIuY2xvc2UoKTsKLSAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZmluYWwgRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oZS5nZXRNZXNzYWdlKCksIGUpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHRoaXMuaGFsdENvbXB1dGF0aW9uKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgaW50IGdldEl0ZXJhdGlvbigpIHsKLSAgICAgICAgaWYgKHRoaXMuaW5FeGVjdXRlKSB7Ci0gICAgICAgICAgICByZXR1cm4gKGludCkgdGhpcy53b3JrZXIuZ2V0U3VwZXJzdGVwKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBmaW5hbCBpbnQgdGVtcCA9IChpbnQpIHRoaXMuZ2V0U3VwZXJzdGVwKCk7Ci0gICAgICAgICAgICByZXR1cm4gdGVtcCA9PSAwID8gdGVtcCA6IHRlbXAgLSAxOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIGxvbmcgZ2V0UnVudGltZSgpIHsKLSAgICAgICAgcmV0dXJuIFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpIC0gdGhpcy5zdGFydFRpbWU7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIFNldDxTdHJpbmc+IGtleXMoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm1lbW9yeUNvbXB1dGVLZXlzLnZhbHVlcygpLnN0cmVhbSgpLmZpbHRlcihrZXkgLT4gdGhpcy5leGlzdHMoa2V5LmdldEtleSgpKSkubWFwKE1lbW9yeUNvbXB1dGVLZXk6OmdldEtleSkuY29sbGVjdChDb2xsZWN0b3JzLnRvU2V0KCkpOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBib29sZWFuIGV4aXN0cyhmaW5hbCBTdHJpbmcga2V5KSB7Ci0gICAgICAgIGlmICh0aGlzLmluRXhlY3V0ZSAmJiB0aGlzLm1lbW9yeUNvbXB1dGVLZXlzLmNvbnRhaW5zS2V5KGtleSkgJiYgIXRoaXMubWVtb3J5Q29tcHV0ZUtleXMuZ2V0KGtleSkuaXNCcm9hZGNhc3QoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgZmluYWwgT2JqZWN0V3JpdGFibGUgdmFsdWUgPSB0aGlzLmluRXhlY3V0ZSA/IHRoaXMud29ya2VyLmdldEFnZ3JlZ2F0ZWRWYWx1ZShrZXkpIDogdGhpcy5nZXRBZ2dyZWdhdGVkVmFsdWUoa2V5KTsKLSAgICAgICAgcmV0dXJuIG51bGwgIT0gdmFsdWUgJiYgIXZhbHVlLmlzRW1wdHkoKTsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgPFI+IFIgZ2V0KGZpbmFsIFN0cmluZyBrZXkpIHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gewotICAgICAgICBpZiAoIXRoaXMubWVtb3J5Q29tcHV0ZUtleXMuY29udGFpbnNLZXkoa2V5KSkKLSAgICAgICAgICAgIHRocm93IE1lbW9yeS5FeGNlcHRpb25zLm1lbW9yeURvZXNOb3RFeGlzdChrZXkpOwotICAgICAgICBpZiAodGhpcy5pbkV4ZWN1dGUgJiYgIXRoaXMubWVtb3J5Q29tcHV0ZUtleXMuZ2V0KGtleSkuaXNCcm9hZGNhc3QoKSkKLSAgICAgICAgICAgIHRocm93IE1lbW9yeS5FeGNlcHRpb25zLm1lbW9yeURvZXNOb3RFeGlzdChrZXkpOwotICAgICAgICBmaW5hbCBPYmplY3RXcml0YWJsZTxQYWlyPEJpbmFyeU9wZXJhdG9yLCBPYmplY3Q+PiB2YWx1ZSA9IHRoaXMuaW5FeGVjdXRlID8KLSAgICAgICAgICAgICAgICB0aGlzLndvcmtlci48T2JqZWN0V3JpdGFibGU8UGFpcjxCaW5hcnlPcGVyYXRvciwgT2JqZWN0Pj4+Z2V0QWdncmVnYXRlZFZhbHVlKGtleSkgOgotICAgICAgICAgICAgICAgIHRoaXMuPE9iamVjdFdyaXRhYmxlPFBhaXI8QmluYXJ5T3BlcmF0b3IsIE9iamVjdD4+PmdldEFnZ3JlZ2F0ZWRWYWx1ZShrZXkpOwotICAgICAgICBpZiAobnVsbCA9PSB2YWx1ZSB8fCB2YWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICB0aHJvdyBNZW1vcnkuRXhjZXB0aW9ucy5tZW1vcnlEb2VzTm90RXhpc3Qoa2V5KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIChSKSB2YWx1ZS5nZXQoKS5nZXRWYWx1ZTEoKTsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgdm9pZCBzZXQoZmluYWwgU3RyaW5nIGtleSwgZmluYWwgT2JqZWN0IHZhbHVlKSB7Ci0gICAgICAgIHRoaXMuY2hlY2tLZXlWYWx1ZShrZXksIHZhbHVlKTsKLSAgICAgICAgaWYgKHRoaXMuaW5FeGVjdXRlKQotICAgICAgICAgICAgdGhyb3cgTWVtb3J5LkV4Y2VwdGlvbnMubWVtb3J5U2V0T25seUR1cmluZ1ZlcnRleFByb2dyYW1TZXRVcEFuZFRlcm1pbmF0ZShrZXkpOwotICAgICAgICB0aGlzLnNldEFnZ3JlZ2F0ZWRWYWx1ZShrZXksIG5ldyBPYmplY3RXcml0YWJsZTw+KG5ldyBQYWlyPD4odGhpcy5tZW1vcnlDb21wdXRlS2V5cy5nZXQoa2V5KS5nZXRSZWR1Y2VyKCksIHZhbHVlKSkpOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lkIGFkZChmaW5hbCBTdHJpbmcga2V5LCBmaW5hbCBPYmplY3QgdmFsdWUpIHsKLSAgICAgICAgdGhpcy5jaGVja0tleVZhbHVlKGtleSwgdmFsdWUpOwotICAgICAgICBpZiAoIXRoaXMuaW5FeGVjdXRlKQotICAgICAgICAgICAgdGhyb3cgTWVtb3J5LkV4Y2VwdGlvbnMubWVtb3J5QWRkT25seUR1cmluZ1ZlcnRleFByb2dyYW1FeGVjdXRlKGtleSk7Ci0gICAgICAgIHRoaXMud29ya2VyLmFnZ3JlZ2F0ZShrZXksIG5ldyBPYmplY3RXcml0YWJsZTw+KG5ldyBQYWlyPD4odGhpcy5tZW1vcnlDb21wdXRlS2V5cy5nZXQoa2V5KS5nZXRSZWR1Y2VyKCksIHZhbHVlKSkpOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lkIHdyaXRlKGZpbmFsIERhdGFPdXRwdXQgb3V0cHV0KSB7Ci0gICAgICAgIC8vIGFsbCBhZ2dyZWdhdG9yIGRhdGEgaXMgcHJvcGFnYXRlZCB0aHJvdWdoIHdyaXRhYmxlcwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lkIHJlYWRGaWVsZHMoZmluYWwgRGF0YUlucHV0IGlucHV0KSB7Ci0gICAgICAgIC8vIGFsbCBhZ2dyZWdhdG9yIGRhdGEgaXMgcHJvcGFnYXRlZCB0aHJvdWdoIHdyaXRhYmxlcwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7Ci0gICAgICAgIHJldHVybiBTdHJpbmdGYWN0b3J5Lm1lbW9yeVN0cmluZyh0aGlzKTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIHZvaWQgY2hlY2tLZXlWYWx1ZShmaW5hbCBTdHJpbmcga2V5LCBmaW5hbCBPYmplY3QgdmFsdWUpIHsKLSAgICAgICAgaWYgKCF0aGlzLm1lbW9yeUNvbXB1dGVLZXlzLmNvbnRhaW5zS2V5KGtleSkpCi0gICAgICAgICAgICB0aHJvdyBHcmFwaENvbXB1dGVyLkV4Y2VwdGlvbnMucHJvdmlkZWRLZXlJc05vdEFNZW1vcnlDb21wdXRlS2V5KGtleSk7Ci0gICAgICAgIE1lbW9yeUhlbHBlci52YWxpZGF0ZVZhbHVlKHZhbHVlKTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9naXJhcGgtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ2lyYXBoL3Byb2Nlc3MvY29tcHV0ZXIvR2lyYXBoTWVzc2FnZUNvbWJpbmVyLmphdmEgYi9naXJhcGgtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ2lyYXBoL3Byb2Nlc3MvY29tcHV0ZXIvR2lyYXBoTWVzc2FnZUNvbWJpbmVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkNzI1YjIuLjAwMDAwMDAKLS0tIGEvZ2lyYXBoLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dpcmFwaC9wcm9jZXNzL2NvbXB1dGVyL0dpcmFwaE1lc3NhZ2VDb21iaW5lci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLyoKLSAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLSAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQotICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLSAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLSAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKLSAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKLSAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCi0gKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgotICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCi0gKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKLSAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKLSAqIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi1wYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ2lyYXBoLnByb2Nlc3MuY29tcHV0ZXI7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29uZmlndXJhdGlvbi5Db25maWd1cmF0aW9uOwotaW1wb3J0IG9yZy5hcGFjaGUuZ2lyYXBoLmNvbmYuSW1tdXRhYmxlQ2xhc3Nlc0dpcmFwaENvbmZpZ3VyYWJsZTsKLWltcG9ydCBvcmcuYXBhY2hlLmdpcmFwaC5jb25mLkltbXV0YWJsZUNsYXNzZXNHaXJhcGhDb25maWd1cmF0aW9uOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5IYWRvb3BHcmFwaDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuaW8uT2JqZWN0V3JpdGFibGU7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLnV0aWwuQ29uZlV0aWw7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLk1lc3NhZ2VDb21iaW5lcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuVmVydGV4UHJvZ3JhbTsKLQotLyoqCi0gKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKLSAqLwotcHVibGljIGZpbmFsIGNsYXNzIEdpcmFwaE1lc3NhZ2VDb21iaW5lciBleHRlbmRzIG9yZy5hcGFjaGUuZ2lyYXBoLmNvbWJpbmVyLk1lc3NhZ2VDb21iaW5lcjxPYmplY3RXcml0YWJsZSwgT2JqZWN0V3JpdGFibGU+IGltcGxlbWVudHMgSW1tdXRhYmxlQ2xhc3Nlc0dpcmFwaENvbmZpZ3VyYWJsZSB7Ci0KLSAgICBwcml2YXRlIE1lc3NhZ2VDb21iaW5lciBtZXNzYWdlQ29tYmluZXI7Ci0gICAgcHJpdmF0ZSBJbW11dGFibGVDbGFzc2VzR2lyYXBoQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOwotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIHZvaWQgY29tYmluZShmaW5hbCBPYmplY3RXcml0YWJsZSB2ZXJ0ZXhJbmRleCwgZmluYWwgT2JqZWN0V3JpdGFibGUgb3JpZ2luYWxNZXNzYWdlLCBmaW5hbCBPYmplY3RXcml0YWJsZSBtZXNzYWdlVG9Db21iaW5lKSB7Ci0gICAgICAgIG9yaWdpbmFsTWVzc2FnZS5zZXQob3JpZ2luYWxNZXNzYWdlLmlzRW1wdHkoKSA/Ci0gICAgICAgICAgICAgICAgbWVzc2FnZVRvQ29tYmluZS5nZXQoKSA6Ci0gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlQ29tYmluZXIuY29tYmluZShvcmlnaW5hbE1lc3NhZ2UuZ2V0KCksIG1lc3NhZ2VUb0NvbWJpbmUuZ2V0KCkpKTsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgT2JqZWN0V3JpdGFibGUgY3JlYXRlSW5pdGlhbE1lc3NhZ2UoKSB7Ci0gICAgICAgIHJldHVybiBPYmplY3RXcml0YWJsZS5lbXB0eSgpOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lkIHNldENvbmYoZmluYWwgSW1tdXRhYmxlQ2xhc3Nlc0dpcmFwaENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikgewotICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uOwotICAgICAgICBmaW5hbCBDb25maWd1cmF0aW9uIGFwYWNoZUNvbmZpZ3VyYXRpb24gPSBDb25mVXRpbC5tYWtlQXBhY2hlQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKTsKLSAgICAgICAgdGhpcy5tZXNzYWdlQ29tYmluZXIgPSAoTWVzc2FnZUNvbWJpbmVyKSBWZXJ0ZXhQcm9ncmFtLmNyZWF0ZVZlcnRleFByb2dyYW0oSGFkb29wR3JhcGgub3BlbihhcGFjaGVDb25maWd1cmF0aW9uKSwgYXBhY2hlQ29uZmlndXJhdGlvbikuZ2V0TWVzc2FnZUNvbWJpbmVyKCkuZ2V0KCk7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIEltbXV0YWJsZUNsYXNzZXNHaXJhcGhDb25maWd1cmF0aW9uIGdldENvbmYoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb247Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvZ2lyYXBoLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dpcmFwaC9wcm9jZXNzL2NvbXB1dGVyL0dpcmFwaE1lc3Nlbmdlci5qYXZhIGIvZ2lyYXBoLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dpcmFwaC9wcm9jZXNzL2NvbXB1dGVyL0dpcmFwaE1lc3Nlbmdlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNmU2NDFlLi4wMDAwMDAwCi0tLSBhL2dpcmFwaC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9naXJhcGgvcHJvY2Vzcy9jb21wdXRlci9HaXJhcGhNZXNzZW5nZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDkwICswLDAgQEAKLS8qCi0gKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCi0gKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKLSAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCi0gKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCi0gKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCi0gKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCi0gKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAotICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KLSAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQotICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCi0gKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCi0gKiB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmdpcmFwaC5wcm9jZXNzLmNvbXB1dGVyOwotCi1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLmlvLk9iamVjdFdyaXRhYmxlOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5NZXNzYWdlU2NvcGU7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLk1lc3NlbmdlcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlZlcnRleFN0ZXA7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLlRyYXZlcnNhbEhlbHBlcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5EaXJlY3Rpb247Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuRWRnZTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXg7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5zdGFyLlN0YXJHcmFwaDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnV0aWwuaXRlcmF0b3IuSXRlcmF0b3JVdGlsczsKLQotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLQotLyoqCi0gKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKLSAqLwotcHVibGljIGZpbmFsIGNsYXNzIEdpcmFwaE1lc3NlbmdlcjxNPiBpbXBsZW1lbnRzIE1lc3NlbmdlcjxNPiB7Ci0KLSAgICBwcml2YXRlIEdpcmFwaFZlcnRleCBnaXJhcGhWZXJ0ZXg7Ci0gICAgcHJpdmF0ZSBHaXJhcGhDb21wdXRhdGlvbiBnaXJhcGhDb21wdXRhdGlvbjsKLSAgICBwcml2YXRlIEl0ZXJhdG9yPE9iamVjdFdyaXRhYmxlPE0+PiBtZXNzYWdlczsKLQotICAgIHB1YmxpYyBHaXJhcGhNZXNzZW5nZXIoZmluYWwgR2lyYXBoVmVydGV4IGdpcmFwaFZlcnRleCwgZmluYWwgR2lyYXBoQ29tcHV0YXRpb24gZ2lyYXBoQ29tcHV0YXRpb24sIGZpbmFsIEl0ZXJhdG9yPE9iamVjdFdyaXRhYmxlPE0+PiBtZXNzYWdlcykgewotICAgICAgICB0aGlzLmdpcmFwaFZlcnRleCA9IGdpcmFwaFZlcnRleDsKLSAgICAgICAgdGhpcy5naXJhcGhDb21wdXRhdGlvbiA9IGdpcmFwaENvbXB1dGF0aW9uOwotICAgICAgICB0aGlzLm1lc3NhZ2VzID0gbWVzc2FnZXM7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIEl0ZXJhdG9yPE0+IHJlY2VpdmVNZXNzYWdlcygpIHsKLSAgICAgICAgcmV0dXJuIEl0ZXJhdG9yVXRpbHMubWFwKHRoaXMubWVzc2FnZXMsIE9iamVjdFdyaXRhYmxlOjpnZXQpOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lkIHNlbmRNZXNzYWdlKGZpbmFsIE1lc3NhZ2VTY29wZSBtZXNzYWdlU2NvcGUsIGZpbmFsIE0gbWVzc2FnZSkgewotICAgICAgICBpZiAobWVzc2FnZVNjb3BlIGluc3RhbmNlb2YgTWVzc2FnZVNjb3BlLkxvY2FsKSB7Ci0gICAgICAgICAgICBmaW5hbCBNZXNzYWdlU2NvcGUuTG9jYWw8TT4gbG9jYWxNZXNzYWdlU2NvcGUgPSAoTWVzc2FnZVNjb3BlLkxvY2FsKSBtZXNzYWdlU2NvcGU7Ci0gICAgICAgICAgICBmaW5hbCBUcmF2ZXJzYWwuQWRtaW48VmVydGV4LCBFZGdlPiBpbmNpZGVudFRyYXZlcnNhbCA9IEdpcmFwaE1lc3Nlbmdlci5zZXRWZXJ0ZXhTdGFydChsb2NhbE1lc3NhZ2VTY29wZS5nZXRJbmNpZGVudFRyYXZlcnNhbCgpLmdldCgpLmFzQWRtaW4oKSwgdGhpcy5naXJhcGhWZXJ0ZXguZ2V0VmFsdWUoKS5nZXQoKSk7Ci0gICAgICAgICAgICBmaW5hbCBEaXJlY3Rpb24gZGlyZWN0aW9uID0gR2lyYXBoTWVzc2VuZ2VyLmdldE9wcG9zaXRlRGlyZWN0aW9uKGluY2lkZW50VHJhdmVyc2FsKTsKLQotICAgICAgICAgICAgLy8gaGFuZGxlIHByb2Nlc3NpbmcgZm9yIEJPVEggZ2l2ZW4gVElOS0VSUE9QLTE4NjIgd2hlcmUgdGhlIHRhcmdldCBvZiB0aGUgbWVzc2FnZSBpcyB0aGUgb25lIG9wcG9zaXRlCi0gICAgICAgICAgICAvLyB0aGUgY3VycmVudCB2ZXJ0ZXgKLSAgICAgICAgICAgIGluY2lkZW50VHJhdmVyc2FsLmZvckVhY2hSZW1haW5pbmcoZWRnZSAtPiB7Ci0gICAgICAgICAgICAgICAgaWYgKGRpcmVjdGlvbi5lcXVhbHMoRGlyZWN0aW9uLklOKSB8fCBkaXJlY3Rpb24uZXF1YWxzKERpcmVjdGlvbi5PVVQpKQotICAgICAgICAgICAgICAgICAgICB0aGlzLmdpcmFwaENvbXB1dGF0aW9uLnNlbmRNZXNzYWdlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBPYmplY3RXcml0YWJsZTw+KGVkZ2UudmVydGljZXMoZGlyZWN0aW9uKS5uZXh0KCkuaWQoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IE9iamVjdFdyaXRhYmxlPD4obG9jYWxNZXNzYWdlU2NvcGUuZ2V0RWRnZUZ1bmN0aW9uKCkuYXBwbHkobWVzc2FnZSwgZWRnZSkpKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2lyYXBoQ29tcHV0YXRpb24uc2VuZE1lc3NhZ2UoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IE9iamVjdFdyaXRhYmxlPD4oZWRnZSBpbnN0YW5jZW9mIFN0YXJHcmFwaC5TdGFyT3V0RWRnZSA/IGVkZ2UuaW5WZXJ0ZXgoKS5pZCgpIDogZWRnZS5vdXRWZXJ0ZXgoKS5pZCgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgT2JqZWN0V3JpdGFibGU8Pihsb2NhbE1lc3NhZ2VTY29wZS5nZXRFZGdlRnVuY3Rpb24oKS5hcHBseShtZXNzYWdlLCBlZGdlKSkpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBmaW5hbCBNZXNzYWdlU2NvcGUuR2xvYmFsIGdsb2JhbE1lc3NhZ2VTY29wZSA9IChNZXNzYWdlU2NvcGUuR2xvYmFsKSBtZXNzYWdlU2NvcGU7Ci0gICAgICAgICAgICBnbG9iYWxNZXNzYWdlU2NvcGUudmVydGljZXMoKS5mb3JFYWNoKHZlcnRleCAtPgotICAgICAgICAgICAgICAgICAgICB0aGlzLmdpcmFwaENvbXB1dGF0aW9uLnNlbmRNZXNzYWdlKG5ldyBPYmplY3RXcml0YWJsZTw+KHZlcnRleC5pZCgpKSwgbmV3IE9iamVjdFdyaXRhYmxlPD4obWVzc2FnZSkpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHByaXZhdGUgc3RhdGljIDxUIGV4dGVuZHMgVHJhdmVyc2FsLkFkbWluPFZlcnRleCwgRWRnZT4+IFQgc2V0VmVydGV4U3RhcnQoZmluYWwgVHJhdmVyc2FsLkFkbWluPFZlcnRleCwgRWRnZT4gaW5jaWRlbnRUcmF2ZXJzYWwsIGZpbmFsIFZlcnRleCB2ZXJ0ZXgpIHsKLSAgICAgICAgaW5jaWRlbnRUcmF2ZXJzYWwuYXNBZG1pbigpLmFkZFN0YXJ0KGluY2lkZW50VHJhdmVyc2FsLmdldFRyYXZlcnNlckdlbmVyYXRvcigpLmdlbmVyYXRlKHZlcnRleCwgaW5jaWRlbnRUcmF2ZXJzYWwuZ2V0U3RhcnRTdGVwKCksIDFsKSk7Ci0gICAgICAgIHJldHVybiAoVCkgaW5jaWRlbnRUcmF2ZXJzYWw7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBzdGF0aWMgRGlyZWN0aW9uIGdldE9wcG9zaXRlRGlyZWN0aW9uKGZpbmFsIFRyYXZlcnNhbC5BZG1pbjxWZXJ0ZXgsIEVkZ2U+IGluY2lkZW50VHJhdmVyc2FsKSB7Ci0gICAgICAgIGZpbmFsIFZlcnRleFN0ZXAgc3RlcCA9IFRyYXZlcnNhbEhlbHBlci5nZXRMYXN0U3RlcE9mQXNzaWduYWJsZUNsYXNzKFZlcnRleFN0ZXAuY2xhc3MsIGluY2lkZW50VHJhdmVyc2FsKS5nZXQoKTsKLSAgICAgICAgcmV0dXJuIHN0ZXAuZ2V0RGlyZWN0aW9uKCkub3Bwb3NpdGUoKTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9naXJhcGgtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ2lyYXBoL3Byb2Nlc3MvY29tcHV0ZXIvR2lyYXBoVmVydGV4LmphdmEgYi9naXJhcGgtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ2lyYXBoL3Byb2Nlc3MvY29tcHV0ZXIvR2lyYXBoVmVydGV4LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhOTVmYWUuLjAwMDAwMDAKLS0tIGEvZ2lyYXBoLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dpcmFwaC9wcm9jZXNzL2NvbXB1dGVyL0dpcmFwaFZlcnRleC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotLyoKLSAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLSAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQotICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLSAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLSAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKLSAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKLSAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCi0gKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgotICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCi0gKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKLSAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKLSAqIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi1wYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ2lyYXBoLnByb2Nlc3MuY29tcHV0ZXI7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLmdpcmFwaC5ncmFwaC5EZWZhdWx0VmVydGV4OwotaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLmlvLk51bGxXcml0YWJsZTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuaW8uT2JqZWN0V3JpdGFibGU7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLmlvLlZlcnRleFdyaXRhYmxlOwotCi0vKioKLSAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQotICovCi1wdWJsaWMgZmluYWwgY2xhc3MgR2lyYXBoVmVydGV4IGV4dGVuZHMgRGVmYXVsdFZlcnRleDxPYmplY3RXcml0YWJsZSwgVmVydGV4V3JpdGFibGUsIE51bGxXcml0YWJsZT4gewotCi0gICAgcHVibGljIEdpcmFwaFZlcnRleCgpIHsKLSAgICB9Ci0KLSAgICBwdWJsaWMgR2lyYXBoVmVydGV4KGZpbmFsIFZlcnRleFdyaXRhYmxlIHZlcnRleFdyaXRhYmxlKSB7Ci0gICAgICAgIGZpbmFsIFZlcnRleFdyaXRhYmxlIG5ld1dyaXRhYmxlID0gbmV3IFZlcnRleFdyaXRhYmxlKCk7Ci0gICAgICAgIG5ld1dyaXRhYmxlLnNldCh2ZXJ0ZXhXcml0YWJsZS5nZXQoKSk7Ci0gICAgICAgIHRoaXMuaW5pdGlhbGl6ZShuZXcgT2JqZWN0V3JpdGFibGU8PihuZXdXcml0YWJsZS5nZXQoKS5pZCgpKSwgbmV3V3JpdGFibGUsIEVtcHR5T3V0RWRnZXMuaW5zdGFuY2UoKSk7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvZ2lyYXBoLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dpcmFwaC9wcm9jZXNzL2NvbXB1dGVyL0dpcmFwaFdvcmtlckNvbnRleHQuamF2YSBiL2dpcmFwaC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9naXJhcGgvcHJvY2Vzcy9jb21wdXRlci9HaXJhcGhXb3JrZXJDb250ZXh0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxMjJhYjQuLjAwMDAwMDAKLS0tIGEvZ2lyYXBoLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dpcmFwaC9wcm9jZXNzL2NvbXB1dGVyL0dpcmFwaFdvcmtlckNvbnRleHQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLS8qCi0gKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCi0gKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKLSAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCi0gKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCi0gKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCi0gKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCi0gKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAotICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KLSAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQotICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCi0gKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCi0gKiB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmdpcmFwaC5wcm9jZXNzLmNvbXB1dGVyOwotCi1pbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmNvbmZpZ3VyYXRpb24uQ29uZmlndXJhdGlvbjsKLWltcG9ydCBvcmcuYXBhY2hlLmdpcmFwaC5jb25mLkdpcmFwaENvbnN0YW50czsKLWltcG9ydCBvcmcuYXBhY2hlLmdpcmFwaC53b3JrZXIuV29ya2VyQ29udGV4dDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuSGFkb29wR3JhcGg7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLmlvLkhhZG9vcFBvb2xzOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5pby5PYmplY3RXcml0YWJsZTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUudXRpbC5Db25mVXRpbDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuVmVydGV4UHJvZ3JhbTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIudXRpbC5JbW11dGFibGVNZW1vcnk7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnV0aWwuVmVydGV4UHJvZ3JhbVBvb2w7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3J5by5rcnlvc2hpbS5LcnlvU2hpbVNlcnZpY2VMb2FkZXI7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci0KLS8qKgotICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCi0gKi8KLXB1YmxpYyBmaW5hbCBjbGFzcyBHaXJhcGhXb3JrZXJDb250ZXh0IGV4dGVuZHMgV29ya2VyQ29udGV4dCB7Ci0KLSAgICBwcml2YXRlIFZlcnRleFByb2dyYW1Qb29sIHZlcnRleFByb2dyYW1Qb29sOwotICAgIHByaXZhdGUgR2lyYXBoTWVtb3J5IG1lbW9yeTsKLQotICAgIHB1YmxpYyBHaXJhcGhXb3JrZXJDb250ZXh0KCkgewotICAgICAgICAvLyBHaXJhcGggUmVmbGVjdGlvblV0aWxzIHJlcXVpcmVzIHRoaXMgdG8gYmUgcHVibGljIGF0IG1pbmltdW0KLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBwcmVBcHBsaWNhdGlvbigpIHRocm93cyBJbnN0YW50aWF0aW9uRXhjZXB0aW9uLCBJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIHsKLSAgICAgICAgZmluYWwgQ29uZmlndXJhdGlvbiBhcGFjaGVDb25maWd1cmF0aW9uID0gQ29uZlV0aWwubWFrZUFwYWNoZUNvbmZpZ3VyYXRpb24odGhpcy5nZXRDb250ZXh0KCkuZ2V0Q29uZmlndXJhdGlvbigpKTsKLSAgICAgICAgS3J5b1NoaW1TZXJ2aWNlTG9hZGVyLmFwcGx5Q29uZmlndXJhdGlvbihhcGFjaGVDb25maWd1cmF0aW9uKTsKLSAgICAgICAgZmluYWwgVmVydGV4UHJvZ3JhbSB2ZXJ0ZXhQcm9ncmFtID0gVmVydGV4UHJvZ3JhbS5jcmVhdGVWZXJ0ZXhQcm9ncmFtKEhhZG9vcEdyYXBoLm9wZW4oYXBhY2hlQ29uZmlndXJhdGlvbiksIGFwYWNoZUNvbmZpZ3VyYXRpb24pOwotICAgICAgICB0aGlzLnZlcnRleFByb2dyYW1Qb29sID0gbmV3IFZlcnRleFByb2dyYW1Qb29sKHZlcnRleFByb2dyYW0sIHRoaXMuZ2V0Q29udGV4dCgpLmdldENvbmZpZ3VyYXRpb24oKS5nZXRJbnQoR2lyYXBoQ29uc3RhbnRzLk5VTV9DT01QVVRFX1RIUkVBRFMuZ2V0S2V5KCksIDEpKTsKLSAgICAgICAgdGhpcy5tZW1vcnkgPSBuZXcgR2lyYXBoTWVtb3J5KHRoaXMsIHZlcnRleFByb2dyYW0pOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHBvc3RBcHBsaWNhdGlvbigpIHsKLQotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHByZVN1cGVyc3RlcCgpIHsKLSAgICAgICAgdGhpcy52ZXJ0ZXhQcm9ncmFtUG9vbC53b3JrZXJJdGVyYXRpb25TdGFydChuZXcgSW1tdXRhYmxlTWVtb3J5KHRoaXMubWVtb3J5KSk7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgcG9zdFN1cGVyc3RlcCgpIHsKLSAgICAgICAgdGhpcy52ZXJ0ZXhQcm9ncmFtUG9vbC53b3JrZXJJdGVyYXRpb25FbmQobmV3IEltbXV0YWJsZU1lbW9yeSh0aGlzLm1lbW9yeSkpOwotICAgIH0KLQotICAgIHB1YmxpYyBWZXJ0ZXhQcm9ncmFtUG9vbCBnZXRWZXJ0ZXhQcm9ncmFtUG9vbCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudmVydGV4UHJvZ3JhbVBvb2w7Ci0gICAgfQotCi0gICAgcHVibGljIEdpcmFwaE1lbW9yeSBnZXRNZW1vcnkoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm1lbW9yeTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgR2lyYXBoTWVzc2VuZ2VyIGdldE1lc3NlbmdlcihmaW5hbCBHaXJhcGhWZXJ0ZXggZ2lyYXBoVmVydGV4LCBmaW5hbCBHaXJhcGhDb21wdXRhdGlvbiBnaXJhcGhDb21wdXRhdGlvbiwgZmluYWwgSXRlcmF0b3I8T2JqZWN0V3JpdGFibGU+IG1lc3NhZ2VzKSB7Ci0gICAgICAgIHJldHVybiBuZXcgR2lyYXBoTWVzc2VuZ2VyKGdpcmFwaFZlcnRleCwgZ2lyYXBoQ29tcHV0YXRpb24sIG1lc3NhZ2VzKTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9naXJhcGgtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ2lyYXBoL3Byb2Nlc3MvY29tcHV0ZXIvTWVtb3J5QWdncmVnYXRvci5qYXZhIGIvZ2lyYXBoLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dpcmFwaC9wcm9jZXNzL2NvbXB1dGVyL01lbW9yeUFnZ3JlZ2F0b3IuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDkyOTU0Ni4uMDAwMDAwMAotLS0gYS9naXJhcGgtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ2lyYXBoL3Byb2Nlc3MvY29tcHV0ZXIvTWVtb3J5QWdncmVnYXRvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotLyoKLSAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLSAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQotICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLSAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLSAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKLSAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKLSAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCi0gKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgotICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCi0gKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKLSAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKLSAqIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi1wYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ2lyYXBoLnByb2Nlc3MuY29tcHV0ZXI7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLmdpcmFwaC5hZ2dyZWdhdG9ycy5BZ2dyZWdhdG9yOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5pby5PYmplY3RXcml0YWJsZTsKLWltcG9ydCBvcmcuamF2YXR1cGxlcy5QYWlyOwotCi1pbXBvcnQgamF2YS51dGlsLmZ1bmN0aW9uLkJpbmFyeU9wZXJhdG9yOwotCi0vKioKLSAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQotICovCi1wdWJsaWMgZmluYWwgY2xhc3MgTWVtb3J5QWdncmVnYXRvciBpbXBsZW1lbnRzIEFnZ3JlZ2F0b3I8T2JqZWN0V3JpdGFibGU8UGFpcjxCaW5hcnlPcGVyYXRvciwgT2JqZWN0Pj4+IHsKLQotICAgIHByaXZhdGUgT2JqZWN0V3JpdGFibGU8UGFpcjxCaW5hcnlPcGVyYXRvciwgT2JqZWN0Pj4gY3VycmVudE9iamVjdCA9IE9iamVjdFdyaXRhYmxlLjxQYWlyPEJpbmFyeU9wZXJhdG9yLCBPYmplY3Q+PmVtcHR5KCk7Ci0KLSAgICBwdWJsaWMgTWVtb3J5QWdncmVnYXRvcigpIHsgLy8gZm9yIEdpcmFwaCBzZXJpYWxpemF0aW9uCi0KLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgT2JqZWN0V3JpdGFibGU8UGFpcjxCaW5hcnlPcGVyYXRvciwgT2JqZWN0Pj4gZ2V0QWdncmVnYXRlZFZhbHVlKCkgewotICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50T2JqZWN0OwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lkIHNldEFnZ3JlZ2F0ZWRWYWx1ZShmaW5hbCBPYmplY3RXcml0YWJsZTxQYWlyPEJpbmFyeU9wZXJhdG9yLCBPYmplY3Q+PiBvYmplY3QpIHsKLSAgICAgICAgaWYgKG51bGwgIT0gb2JqZWN0KQotICAgICAgICAgICAgdGhpcy5jdXJyZW50T2JqZWN0ID0gb2JqZWN0OwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lkIGFnZ3JlZ2F0ZShmaW5hbCBPYmplY3RXcml0YWJsZTxQYWlyPEJpbmFyeU9wZXJhdG9yLCBPYmplY3Q+PiBvYmplY3QpIHsKLSAgICAgICAgaWYgKG51bGwgPT0gb2JqZWN0KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBlbHNlIGlmICh0aGlzLmN1cnJlbnRPYmplY3QuaXNFbXB0eSgpKQotICAgICAgICAgICAgdGhpcy5jdXJyZW50T2JqZWN0ID0gb2JqZWN0OwotICAgICAgICBlbHNlIGlmICghb2JqZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHRoaXMuY3VycmVudE9iamVjdC5zZXQobmV3IFBhaXI8PihvYmplY3QuZ2V0KCkuZ2V0VmFsdWUwKCksIG9iamVjdC5nZXQoKS5nZXRWYWx1ZTAoKS5hcHBseSh0aGlzLmN1cnJlbnRPYmplY3QuZ2V0KCkuZ2V0VmFsdWUxKCksIG9iamVjdC5nZXQoKS5nZXRWYWx1ZTEoKSkpKTsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgdm9pZCByZXNldCgpIHsKLSAgICAgICAgdGhpcy5jdXJyZW50T2JqZWN0ID0gT2JqZWN0V3JpdGFibGUuPFBhaXI8QmluYXJ5T3BlcmF0b3IsIE9iamVjdD4+ZW1wdHkoKTsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgT2JqZWN0V3JpdGFibGU8UGFpcjxCaW5hcnlPcGVyYXRvciwgT2JqZWN0Pj4gY3JlYXRlSW5pdGlhbFZhbHVlKCkgewotICAgICAgICByZXR1cm4gT2JqZWN0V3JpdGFibGUuPFBhaXI8QmluYXJ5T3BlcmF0b3IsIE9iamVjdD4+ZW1wdHkoKTsKLSAgICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ2lyYXBoLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dpcmFwaC9wcm9jZXNzL2NvbXB1dGVyL1Bhc3NUaHJvdWdoTWVtb3J5LmphdmEgYi9naXJhcGgtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ2lyYXBoL3Byb2Nlc3MvY29tcHV0ZXIvUGFzc1Rocm91Z2hNZW1vcnkuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGM0MGU3Yi4uMDAwMDAwMAotLS0gYS9naXJhcGgtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ2lyYXBoL3Byb2Nlc3MvY29tcHV0ZXIvUGFzc1Rocm91Z2hNZW1vcnkuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLS8qCi0gKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCi0gKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKLSAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCi0gKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCi0gKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCi0gKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCi0gKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAotICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KLSAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQotICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCi0gKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCi0gKiB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi1wYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ2lyYXBoLnByb2Nlc3MuY29tcHV0ZXI7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuTWVtb3J5OwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuU3RyaW5nRmFjdG9yeTsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci1pbXBvcnQgamF2YS51dGlsLlNldDsKLQotLyoqCi0gKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKLSAqLwotcHVibGljIGZpbmFsIGNsYXNzIFBhc3NUaHJvdWdoTWVtb3J5IGltcGxlbWVudHMgTWVtb3J5LkFkbWluIHsKLQotICAgIHByaXZhdGUgZmluYWwgR2lyYXBoTWVtb3J5IGdpcmFwaE1lbW9yeTsKLSAgICBwcml2YXRlIGxvbmcgcnVudGltZSA9IDBsOwotICAgIHByaXZhdGUgaW50IGl0ZXJhdGlvbiA9IC0xOwotICAgIHByaXZhdGUgZmluYWwgTWFwPFN0cmluZywgT2JqZWN0PiBtZW1vcnlNYXAgPSBuZXcgSGFzaE1hcDw+KCk7Ci0KLSAgICBwdWJsaWMgUGFzc1Rocm91Z2hNZW1vcnkoZmluYWwgR2lyYXBoTWVtb3J5IGdpcmFwaE1lbW9yeSkgewotICAgICAgICB0aGlzLmdpcmFwaE1lbW9yeSA9IGdpcmFwaE1lbW9yeTsKLSAgICAgICAgZ2lyYXBoTWVtb3J5LmtleXMoKS5mb3JFYWNoKGtleSAtPiB0aGlzLm1lbW9yeU1hcC5wdXQoa2V5LCBnaXJhcGhNZW1vcnkuZ2V0KGtleSkpKTsKLSAgICAgICAgdGhpcy5pdGVyYXRpb24gPSBnaXJhcGhNZW1vcnkuZ2V0SXRlcmF0aW9uKCk7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIFNldDxTdHJpbmc+IGtleXMoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLm1lbW9yeU1hcC5rZXlTZXQoKTsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgPFI+IFIgZ2V0KGZpbmFsIFN0cmluZyBrZXkpIHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gewotICAgICAgICBmaW5hbCBSIHIgPSAoUikgdGhpcy5tZW1vcnlNYXAuZ2V0KGtleSk7Ci0gICAgICAgIGlmIChudWxsID09IHIpCi0gICAgICAgICAgICB0aHJvdyBNZW1vcnkuRXhjZXB0aW9ucy5tZW1vcnlEb2VzTm90RXhpc3Qoa2V5KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIHI7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIHZvaWQgc2V0KGZpbmFsIFN0cmluZyBrZXksIE9iamVjdCB2YWx1ZSkgewotICAgICAgICB0aGlzLm1lbW9yeU1hcC5wdXQoa2V5LCB2YWx1ZSk7Ci0gICAgICAgIHRoaXMuZ2lyYXBoTWVtb3J5LnNldChrZXksIHZhbHVlKTsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgaW50IGdldEl0ZXJhdGlvbigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuaXRlcmF0aW9uOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBsb25nIGdldFJ1bnRpbWUoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnJ1bnRpbWU7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIHZvaWQgYWRkKGZpbmFsIFN0cmluZyBrZXksIGZpbmFsIE9iamVjdCB2YWx1ZSkgewotICAgICAgICB0aGlzLmdpcmFwaE1lbW9yeS5hZGQoa2V5LCB2YWx1ZSk7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKLSAgICAgICAgcmV0dXJuIFN0cmluZ0ZhY3RvcnkubWVtb3J5U3RyaW5nKHRoaXMpOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lkIGluY3JJdGVyYXRpb24oKSB7Ci0gICAgICAgIHRoaXMuaXRlcmF0aW9uID0gdGhpcy5pdGVyYXRpb24gKyAxOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lkIHNldEl0ZXJhdGlvbihmaW5hbCBpbnQgaXRlcmF0aW9uKSB7Ci0gICAgICAgIHRoaXMuaXRlcmF0aW9uID0gaXRlcmF0aW9uOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lkIHNldFJ1bnRpbWUobG9uZyBydW50aW1lKSB7Ci0gICAgICAgIHRoaXMucnVudGltZSA9IHJ1bnRpbWU7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvZ2lyYXBoLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dpcmFwaC9zdHJ1Y3R1cmUvaW8vR2lyYXBoVmVydGV4SW5wdXRGb3JtYXQuamF2YSBiL2dpcmFwaC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9naXJhcGgvc3RydWN0dXJlL2lvL0dpcmFwaFZlcnRleElucHV0Rm9ybWF0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5MDA2NjMuLjAwMDAwMDAKLS0tIGEvZ2lyYXBoLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dpcmFwaC9zdHJ1Y3R1cmUvaW8vR2lyYXBoVmVydGV4SW5wdXRGb3JtYXQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLS8qCi0gKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCi0gKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKLSAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCi0gKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCi0gKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCi0gKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCi0gKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAotICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KLSAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQotICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCi0gKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCi0gKiB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmdpcmFwaC5zdHJ1Y3R1cmUuaW87Ci0KLWltcG9ydCBvcmcuYXBhY2hlLmdpcmFwaC5pby5WZXJ0ZXhJbnB1dEZvcm1hdDsKLWltcG9ydCBvcmcuYXBhY2hlLmdpcmFwaC5pby5WZXJ0ZXhSZWFkZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS5oYWRvb3AuY29uZi5Db25maWd1cmF0aW9uOwotaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLm1hcHJlZHVjZS5JbnB1dFNwbGl0OwotaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLm1hcHJlZHVjZS5Kb2JDb250ZXh0OwotaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLm1hcHJlZHVjZS5UYXNrQXR0ZW1wdENvbnRleHQ7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3AucHJvY2Vzcy5jb21wdXRlci5HcmFwaEZpbHRlcklucHV0Rm9ybWF0OwotCi1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotLyoqCi0gKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKLSAqLwotcHVibGljIGZpbmFsIGNsYXNzIEdpcmFwaFZlcnRleElucHV0Rm9ybWF0IGV4dGVuZHMgVmVydGV4SW5wdXRGb3JtYXQgewotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIHZvaWQgY2hlY2tJbnB1dFNwZWNzKGZpbmFsIENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikgewotCi0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIExpc3Q8SW5wdXRTcGxpdD4gZ2V0U3BsaXRzKGZpbmFsIEpvYkNvbnRleHQgY29udGV4dCwgZmluYWwgaW50IG1pblNwbGl0Q291bnRIaW50KSB0aHJvd3MgSU9FeGNlcHRpb24sIEludGVycnVwdGVkRXhjZXB0aW9uIHsKLSAgICAgICAgcmV0dXJuIG5ldyBHcmFwaEZpbHRlcklucHV0Rm9ybWF0KCkuZ2V0U3BsaXRzKGNvbnRleHQpOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBWZXJ0ZXhSZWFkZXIgY3JlYXRlVmVydGV4UmVhZGVyKGZpbmFsIElucHV0U3BsaXQgc3BsaXQsIGZpbmFsIFRhc2tBdHRlbXB0Q29udGV4dCBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24gewotICAgICAgICB0cnkgewotICAgICAgICAgICAgZmluYWwgR2lyYXBoVmVydGV4UmVhZGVyIHJlYWRlciA9IG5ldyBHaXJhcGhWZXJ0ZXhSZWFkZXIoKTsKLSAgICAgICAgICAgIHJlYWRlci5pbml0aWFsaXplKHNwbGl0LCBjb250ZXh0KTsKLSAgICAgICAgICAgIHJldHVybiByZWFkZXI7Ci0gICAgICAgIH0gY2F0Y2ggKGZpbmFsIEludGVycnVwdGVkRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbihlLmdldE1lc3NhZ2UoKSwgZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2dpcmFwaC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9naXJhcGgvc3RydWN0dXJlL2lvL0dpcmFwaFZlcnRleE91dHB1dEZvcm1hdC5qYXZhIGIvZ2lyYXBoLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dpcmFwaC9zdHJ1Y3R1cmUvaW8vR2lyYXBoVmVydGV4T3V0cHV0Rm9ybWF0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4ODFjNzcuLjAwMDAwMDAKLS0tIGEvZ2lyYXBoLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dpcmFwaC9zdHJ1Y3R1cmUvaW8vR2lyYXBoVmVydGV4T3V0cHV0Rm9ybWF0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vKgotICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQotICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCi0gKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgotICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQotICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQotICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQotICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKLSAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCi0gKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKLSAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQotICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucwotICogdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLXBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5naXJhcGguc3RydWN0dXJlLmlvOwotCi1pbXBvcnQgb3JnLmFwYWNoZS5naXJhcGguaW8uVmVydGV4T3V0cHV0Rm9ybWF0OwotaW1wb3J0IG9yZy5hcGFjaGUuZ2lyYXBoLmlvLlZlcnRleFdyaXRlcjsKLWltcG9ydCBvcmcuYXBhY2hlLmhhZG9vcC5jb25mLkNvbmZpZ3VyYXRpb247Ci1pbXBvcnQgb3JnLmFwYWNoZS5oYWRvb3AubWFwcmVkdWNlLkpvYkNvbnRleHQ7Ci1pbXBvcnQgb3JnLmFwYWNoZS5oYWRvb3AubWFwcmVkdWNlLk91dHB1dENvbW1pdHRlcjsKLWltcG9ydCBvcmcuYXBhY2hlLmhhZG9vcC5tYXByZWR1Y2UuT3V0cHV0Rm9ybWF0OwotaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLm1hcHJlZHVjZS5UYXNrQXR0ZW1wdENvbnRleHQ7Ci1pbXBvcnQgb3JnLmFwYWNoZS5oYWRvb3AudXRpbC5SZWZsZWN0aW9uVXRpbHM7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3AuQ29uc3RhbnRzOwotCi1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLQotLyoqCi0gKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKLSAqLwotcHVibGljIGZpbmFsIGNsYXNzIEdpcmFwaFZlcnRleE91dHB1dEZvcm1hdCBleHRlbmRzIFZlcnRleE91dHB1dEZvcm1hdCB7Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgVmVydGV4V3JpdGVyIGNyZWF0ZVZlcnRleFdyaXRlcihmaW5hbCBUYXNrQXR0ZW1wdENvbnRleHQgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uLCBJbnRlcnJ1cHRlZEV4Y2VwdGlvbiB7Ci0gICAgICAgIHJldHVybiBuZXcgR2lyYXBoVmVydGV4V3JpdGVyKCk7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIHZvaWQgY2hlY2tPdXRwdXRTcGVjcyhmaW5hbCBKb2JDb250ZXh0IGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiwgSW50ZXJydXB0ZWRFeGNlcHRpb24gewotICAgICAgICBmaW5hbCBDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24gPSBjb250ZXh0LmdldENvbmZpZ3VyYXRpb24oKTsKLSAgICAgICAgUmVmbGVjdGlvblV0aWxzLm5ld0luc3RhbmNlKGNvbmZpZ3VyYXRpb24uZ2V0Q2xhc3MoQ29uc3RhbnRzLkdSRU1MSU5fSEFET09QX0dSQVBIX1dSSVRFUiwgT3V0cHV0Rm9ybWF0LmNsYXNzLCBPdXRwdXRGb3JtYXQuY2xhc3MpLCBjb25maWd1cmF0aW9uKS5jaGVja091dHB1dFNwZWNzKGNvbnRleHQpOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBPdXRwdXRDb21taXR0ZXIgZ2V0T3V0cHV0Q29tbWl0dGVyKGZpbmFsIFRhc2tBdHRlbXB0Q29udGV4dCBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24sIEludGVycnVwdGVkRXhjZXB0aW9uIHsKLSAgICAgICAgZmluYWwgQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uID0gY29udGV4dC5nZXRDb25maWd1cmF0aW9uKCk7Ci0gICAgICAgIHJldHVybiBSZWZsZWN0aW9uVXRpbHMubmV3SW5zdGFuY2UoY29uZmlndXJhdGlvbi5nZXRDbGFzcyhDb25zdGFudHMuR1JFTUxJTl9IQURPT1BfR1JBUEhfV1JJVEVSLCBPdXRwdXRGb3JtYXQuY2xhc3MsIE91dHB1dEZvcm1hdC5jbGFzcyksIGNvbmZpZ3VyYXRpb24pLmdldE91dHB1dENvbW1pdHRlcihjb250ZXh0KTsKLSAgICB9Ci0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9naXJhcGgtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ2lyYXBoL3N0cnVjdHVyZS9pby9HaXJhcGhWZXJ0ZXhSZWFkZXIuamF2YSBiL2dpcmFwaC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9naXJhcGgvc3RydWN0dXJlL2lvL0dpcmFwaFZlcnRleFJlYWRlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzM1OTgwLi4wMDAwMDAwCi0tLSBhL2dpcmFwaC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9naXJhcGgvc3RydWN0dXJlL2lvL0dpcmFwaFZlcnRleFJlYWRlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotLyoKLSAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLSAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQotICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLSAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLSAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKLSAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKLSAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCi0gKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgotICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCi0gKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKLSAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKLSAqIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi1wYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ2lyYXBoLnN0cnVjdHVyZS5pbzsKLQotaW1wb3J0IG9yZy5hcGFjaGUuZ2lyYXBoLmdyYXBoLlZlcnRleDsKLWltcG9ydCBvcmcuYXBhY2hlLmdpcmFwaC5pby5WZXJ0ZXhSZWFkZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS5oYWRvb3AuaW8uTnVsbFdyaXRhYmxlOwotaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLm1hcHJlZHVjZS5JbnB1dFNwbGl0OwotaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLm1hcHJlZHVjZS5SZWNvcmRSZWFkZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS5oYWRvb3AubWFwcmVkdWNlLlRhc2tBdHRlbXB0Q29udGV4dDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmdpcmFwaC5wcm9jZXNzLmNvbXB1dGVyLkdpcmFwaFZlcnRleDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5wcm9jZXNzLmNvbXB1dGVyLkdyYXBoRmlsdGVyUmVjb3JkUmVhZGVyOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5pby5WZXJ0ZXhXcml0YWJsZTsKLQotaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247Ci0KLS8qKgotICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCi0gKi8KLXB1YmxpYyBmaW5hbCBjbGFzcyBHaXJhcGhWZXJ0ZXhSZWFkZXIgZXh0ZW5kcyBWZXJ0ZXhSZWFkZXIgewotCi0gICAgcHJpdmF0ZSBSZWNvcmRSZWFkZXI8TnVsbFdyaXRhYmxlLCBWZXJ0ZXhXcml0YWJsZT4gcmVjb3JkUmVhZGVyOwotCi0gICAgcHVibGljIEdpcmFwaFZlcnRleFJlYWRlcigpIHsKLSAgICAgICAgdGhpcy5yZWNvcmRSZWFkZXIgPSBuZXcgR3JhcGhGaWx0ZXJSZWNvcmRSZWFkZXIoKTsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgdm9pZCBpbml0aWFsaXplKGZpbmFsIElucHV0U3BsaXQgaW5wdXRTcGxpdCwgZmluYWwgVGFza0F0dGVtcHRDb250ZXh0IGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiwgSW50ZXJydXB0ZWRFeGNlcHRpb24gewotICAgICAgICB0aGlzLnJlY29yZFJlYWRlci5pbml0aWFsaXplKGlucHV0U3BsaXQsIGNvbnRleHQpOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBib29sZWFuIG5leHRWZXJ0ZXgoKSB0aHJvd3MgSU9FeGNlcHRpb24sIEludGVycnVwdGVkRXhjZXB0aW9uIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucmVjb3JkUmVhZGVyLm5leHRLZXlWYWx1ZSgpOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBWZXJ0ZXggZ2V0Q3VycmVudFZlcnRleCgpIHRocm93cyBJT0V4Y2VwdGlvbiwgSW50ZXJydXB0ZWRFeGNlcHRpb24gewotICAgICAgICByZXR1cm4gbmV3IEdpcmFwaFZlcnRleCh0aGlzLnJlY29yZFJlYWRlci5nZXRDdXJyZW50VmFsdWUoKSk7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIHZvaWQgY2xvc2UoKSB0aHJvd3MgSU9FeGNlcHRpb24gewotICAgICAgICB0aGlzLnJlY29yZFJlYWRlci5jbG9zZSgpOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBmbG9hdCBnZXRQcm9ncmVzcygpIHRocm93cyBJT0V4Y2VwdGlvbiwgSW50ZXJydXB0ZWRFeGNlcHRpb24gewotICAgICAgICByZXR1cm4gdGhpcy5yZWNvcmRSZWFkZXIuZ2V0UHJvZ3Jlc3MoKTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9naXJhcGgtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ2lyYXBoL3N0cnVjdHVyZS9pby9HaXJhcGhWZXJ0ZXhXcml0ZXIuamF2YSBiL2dpcmFwaC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9naXJhcGgvc3RydWN0dXJlL2lvL0dpcmFwaFZlcnRleFdyaXRlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYzk0MTM3Li4wMDAwMDAwCi0tLSBhL2dpcmFwaC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9naXJhcGgvc3RydWN0dXJlL2lvL0dpcmFwaFZlcnRleFdyaXRlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLSAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQotICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLSAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLSAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKLSAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKLSAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCi0gKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgotICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCi0gKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKLSAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKLSAqIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi1wYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ2lyYXBoLnN0cnVjdHVyZS5pbzsKLQotaW1wb3J0IG9yZy5hcGFjaGUuZ2lyYXBoLmdyYXBoLlZlcnRleDsKLWltcG9ydCBvcmcuYXBhY2hlLmdpcmFwaC5pby5WZXJ0ZXhXcml0ZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS5oYWRvb3AuY29uZi5Db25maWd1cmF0aW9uOwotaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLmlvLk51bGxXcml0YWJsZTsKLWltcG9ydCBvcmcuYXBhY2hlLmhhZG9vcC5tYXByZWR1Y2UuT3V0cHV0Rm9ybWF0OwotaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLm1hcHJlZHVjZS5SZWNvcmRXcml0ZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS5oYWRvb3AubWFwcmVkdWNlLlRhc2tBdHRlbXB0Q29udGV4dDsKLWltcG9ydCBvcmcuYXBhY2hlLmhhZG9vcC51dGlsLlJlZmxlY3Rpb25VdGlsczsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmdpcmFwaC5wcm9jZXNzLmNvbXB1dGVyLkdpcmFwaFZlcnRleDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5Db25zdGFudHM7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLmlvLlZlcnRleFdyaXRhYmxlOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS51dGlsLkNvbmZVdGlsOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5WZXJ0ZXhDb21wdXRlS2V5OwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5WZXJ0ZXhQcm9ncmFtOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci51dGlsLlZlcnRleFByb2dyYW1IZWxwZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5lbXB0eS5FbXB0eUdyYXBoOwotCi1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuc3RyZWFtLkNvbGxlY3RvcnM7Ci0KLS8qKgotICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCi0gKi8KLXB1YmxpYyBmaW5hbCBjbGFzcyBHaXJhcGhWZXJ0ZXhXcml0ZXIgZXh0ZW5kcyBWZXJ0ZXhXcml0ZXIgewotICAgIHByaXZhdGUgUmVjb3JkV3JpdGVyPE51bGxXcml0YWJsZSwgVmVydGV4V3JpdGFibGU+IHJlY29yZFdyaXRlcjsKLSAgICBwcml2YXRlIFN0cmluZ1tdIHRyYW5zaWVudENvbXB1dGVLZXlzOwotCi0gICAgcHVibGljIEdpcmFwaFZlcnRleFdyaXRlcigpIHsKLQotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lkIGluaXRpYWxpemUoZmluYWwgVGFza0F0dGVtcHRDb250ZXh0IGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiwgSW50ZXJydXB0ZWRFeGNlcHRpb24gewotICAgICAgICBmaW5hbCBDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24gPSBjb250ZXh0LmdldENvbmZpZ3VyYXRpb24oKTsKLSAgICAgICAgdGhpcy5yZWNvcmRXcml0ZXIgPSBSZWZsZWN0aW9uVXRpbHMubmV3SW5zdGFuY2UoY29uZmlndXJhdGlvbi5nZXRDbGFzcyhDb25zdGFudHMuR1JFTUxJTl9IQURPT1BfR1JBUEhfV1JJVEVSLCBPdXRwdXRGb3JtYXQuY2xhc3MsIE91dHB1dEZvcm1hdC5jbGFzcyksIGNvbmZpZ3VyYXRpb24pLmdldFJlY29yZFdyaXRlcihjb250ZXh0KTsKLSAgICAgICAgdGhpcy50cmFuc2llbnRDb21wdXRlS2V5cyA9IFZlcnRleFByb2dyYW1IZWxwZXIudmVydGV4Q29tcHV0ZUtleXNBc0FycmF5KCgoVmVydGV4UHJvZ3JhbTw/PikgVmVydGV4UHJvZ3JhbS5jcmVhdGVWZXJ0ZXhQcm9ncmFtKEVtcHR5R3JhcGguaW5zdGFuY2UoKSwgQ29uZlV0aWwubWFrZUFwYWNoZUNvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbikpKS5nZXRWZXJ0ZXhDb21wdXRlS2V5cygpLnN0cmVhbSgpLgotICAgICAgICAgICAgICAgIGZpbHRlcihWZXJ0ZXhDb21wdXRlS2V5Ojppc1RyYW5zaWVudCkuCi0gICAgICAgICAgICAgICAgY29sbGVjdChDb2xsZWN0b3JzLnRvU2V0KCkpKTsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgdm9pZCBjbG9zZShmaW5hbCBUYXNrQXR0ZW1wdENvbnRleHQgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uLCBJbnRlcnJ1cHRlZEV4Y2VwdGlvbiB7Ci0gICAgICAgIHRoaXMucmVjb3JkV3JpdGVyLmNsb3NlKGNvbnRleHQpOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lkIHdyaXRlVmVydGV4KGZpbmFsIFZlcnRleCB2ZXJ0ZXgpIHRocm93cyBJT0V4Y2VwdGlvbiwgSW50ZXJydXB0ZWRFeGNlcHRpb24gewotICAgICAgICAoKEdpcmFwaFZlcnRleCkgdmVydGV4KS5nZXRWYWx1ZSgpLmdldCgpLmRyb3BWZXJ0ZXhQcm9wZXJ0aWVzKHRoaXMudHJhbnNpZW50Q29tcHV0ZUtleXMpOyAvLyByZW1vdmUgYWxsIHRyYW5zaWVudCBjb21wdXRlIGtleXMgYmVmb3JlIHdyaXRpbmcgdG8gT3V0cHV0Rm9ybWF0Ci0gICAgICAgIHRoaXMucmVjb3JkV3JpdGVyLndyaXRlKE51bGxXcml0YWJsZS5nZXQoKSwgKChHaXJhcGhWZXJ0ZXgpIHZlcnRleCkuZ2V0VmFsdWUoKSk7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvZ2lyYXBoLWdyZW1saW4vc3JjL21haW4vcmVzb3VyY2VzL01FVEEtSU5GL3NlcnZpY2VzL29yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uanNyMjIzLkdyZW1saW5QbHVnaW4gYi9naXJhcGgtZ3JlbWxpbi9zcmMvbWFpbi9yZXNvdXJjZXMvTUVUQS1JTkYvc2VydmljZXMvb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5qc3IyMjMuR3JlbWxpblBsdWdpbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWE5MjkwNS4uMDAwMDAwMAotLS0gYS9naXJhcGgtZ3JlbWxpbi9zcmMvbWFpbi9yZXNvdXJjZXMvTUVUQS1JTkYvc2VydmljZXMvb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5qc3IyMjMuR3JlbWxpblBsdWdpbgorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLW9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ2lyYXBoLmpzcjIyMy5HaXJhcGhHcmVtbGluUGx1Z2luClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ2lyYXBoLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dpcmFwaC9HaXJhcGhHcmVtbGluSW50ZWdyYXRlVGVzdC5qYXZhIGIvZ2lyYXBoLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dpcmFwaC9HaXJhcGhHcmVtbGluSW50ZWdyYXRlVGVzdC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTU2NDljLi4wMDAwMDAwCi0tLSBhL2dpcmFwaC1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9naXJhcGgvR2lyYXBoR3JlbWxpbkludGVncmF0ZVRlc3QuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8qCi0gKiAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQotICogIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQotICogIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCi0gKiAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQotICogIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKLSAqICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCi0gKiAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAotICogIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCi0gKiAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCi0gKiAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCi0gKiAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucwotICogIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLXBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5naXJhcGg7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkdyYXBoUHJvdmlkZXJDbGFzczsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmdpcmFwaC5wcm9jZXNzLmNvbXB1dGVyLkdpcmFwaEhhZG9vcEdyYXBoUHJvdmlkZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLkhhZG9vcEdyYXBoOwotaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXIuUnVuV2l0aDsKLQotLyoqCi0gKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKLSAqLwotQFJ1bldpdGgoR2lyYXBoR3JlbWxpblN1aXRlLmNsYXNzKQotQEdyYXBoUHJvdmlkZXJDbGFzcyhwcm92aWRlciA9IEdpcmFwaEhhZG9vcEdyYXBoUHJvdmlkZXIuY2xhc3MsIGdyYXBoID0gSGFkb29wR3JhcGguY2xhc3MpCi1wdWJsaWMgY2xhc3MgR2lyYXBoR3JlbWxpbkludGVncmF0ZVRlc3QgewotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dpcmFwaC1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9naXJhcGgvR2lyYXBoR3JlbWxpblN1aXRlLmphdmEgYi9naXJhcGgtZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ2lyYXBoL0dpcmFwaEdyZW1saW5TdWl0ZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZmUwZTRmLi4wMDAwMDAwCi0tLSBhL2dpcmFwaC1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9naXJhcGgvR2lyYXBoR3JlbWxpblN1aXRlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0vKgotICogIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLSAqICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKLSAqICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgotICogIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLSAqICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCi0gKiAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQotICogIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKLSAqICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgotICogICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQotICogIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQotICogIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKLSAqICB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi1wYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ2lyYXBoOwotCi1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5BYnN0cmFjdEdyZW1saW5TdWl0ZTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmdpcmFwaC5zdHJ1Y3R1cmUuaW8uR2lyYXBoSW9SZWdpc3RyeUNoZWNrOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsRW5naW5lOwotaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXJzLm1vZGVsLkluaXRpYWxpemF0aW9uRXJyb3I7Ci1pbXBvcnQgb3JnLmp1bml0LnJ1bm5lcnMubW9kZWwuUnVubmVyQnVpbGRlcjsKLQotLyoqCi0gKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKLSAqLwotcHVibGljIGZpbmFsIGNsYXNzIEdpcmFwaEdyZW1saW5TdWl0ZSBleHRlbmRzIEFic3RyYWN0R3JlbWxpblN1aXRlIHsKLSAgICBwdWJsaWMgR2lyYXBoR3JlbWxpblN1aXRlKGZpbmFsIENsYXNzPD8+IGtsYXNzLCBmaW5hbCBSdW5uZXJCdWlsZGVyIGJ1aWxkZXIpIHRocm93cyBJbml0aWFsaXphdGlvbkVycm9yIHsKLSAgICAgICAgc3VwZXIoa2xhc3MsIGJ1aWxkZXIsIG5ldyBDbGFzczw/Pltde0dpcmFwaElvUmVnaXN0cnlDaGVjay5jbGFzc30sIG5ldyBDbGFzczw/Pltde0dpcmFwaElvUmVnaXN0cnlDaGVjay5jbGFzc30sIHRydWUsIFRyYXZlcnNhbEVuZ2luZS5UeXBlLkNPTVBVVEVSKTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9naXJhcGgtZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ2lyYXBoL0dpcmFwaEhhZG9vcEdyZW1saW5JbnRlZ3JhdGVUZXN0LmphdmEgYi9naXJhcGgtZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ2lyYXBoL0dpcmFwaEhhZG9vcEdyZW1saW5JbnRlZ3JhdGVUZXN0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhOWUxMmQuLjAwMDAwMDAKLS0tIGEvZ2lyYXBoLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dpcmFwaC9HaXJhcGhIYWRvb3BHcmVtbGluSW50ZWdyYXRlVGVzdC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotLyoKLSAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLSAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQotICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLSAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLSAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKLSAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKLSAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCi0gKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgotICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCi0gKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKLSAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKLSAqIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi1wYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ2lyYXBoOwotCi1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5HcmFwaFByb3ZpZGVyQ2xhc3M7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5naXJhcGgucHJvY2Vzcy5jb21wdXRlci5HaXJhcGhIYWRvb3BHcmFwaFByb3ZpZGVyOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLkhhZG9vcEdyZW1saW5TdWl0ZTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuSGFkb29wR3JhcGg7Ci1pbXBvcnQgb3JnLmp1bml0LnJ1bm5lci5SdW5XaXRoOwotCi0vKioKLSAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQotICovCi1AUnVuV2l0aChIYWRvb3BHcmVtbGluU3VpdGUuY2xhc3MpCi1AR3JhcGhQcm92aWRlckNsYXNzKHByb3ZpZGVyID0gR2lyYXBoSGFkb29wR3JhcGhQcm92aWRlci5jbGFzcywgZ3JhcGggPSBIYWRvb3BHcmFwaC5jbGFzcykKLXB1YmxpYyBjbGFzcyBHaXJhcGhIYWRvb3BHcmVtbGluSW50ZWdyYXRlVGVzdCB7Ci19CmRpZmYgLS1naXQgYS9naXJhcGgtZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ2lyYXBoL3Byb2Nlc3MvY29tcHV0ZXIvR2lyYXBoR3JhcGhDb21wdXRlclByb2Nlc3NJbnRlZ3JhdGVUZXN0LmphdmEgYi9naXJhcGgtZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ2lyYXBoL3Byb2Nlc3MvY29tcHV0ZXIvR2lyYXBoR3JhcGhDb21wdXRlclByb2Nlc3NJbnRlZ3JhdGVUZXN0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2ZGE3NTAuLjAwMDAwMDAKLS0tIGEvZ2lyYXBoLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dpcmFwaC9wcm9jZXNzL2NvbXB1dGVyL0dpcmFwaEdyYXBoQ29tcHV0ZXJQcm9jZXNzSW50ZWdyYXRlVGVzdC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoKLSAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLSAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQotICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLSAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLSAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKLSAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKLSAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCi0gKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgotICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCi0gKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKLSAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKLSAqIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi1wYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ2lyYXBoLnByb2Nlc3MuY29tcHV0ZXI7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkdyYXBoUHJvdmlkZXJDbGFzczsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuSGFkb29wR3JhcGg7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLlByb2Nlc3NDb21wdXRlclN1aXRlOwotaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXIuUnVuV2l0aDsKLQotLyoqCi0gKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKLSAqLwotQFJ1bldpdGgoUHJvY2Vzc0NvbXB1dGVyU3VpdGUuY2xhc3MpCi1AR3JhcGhQcm92aWRlckNsYXNzKHByb3ZpZGVyID0gR2lyYXBoSGFkb29wR3JhcGhQcm92aWRlci5jbGFzcywgZ3JhcGggPSBIYWRvb3BHcmFwaC5jbGFzcykKLXB1YmxpYyBjbGFzcyBHaXJhcGhHcmFwaENvbXB1dGVyUHJvY2Vzc0ludGVncmF0ZVRlc3QgewotfQpkaWZmIC0tZ2l0IGEvZ2lyYXBoLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dpcmFwaC9wcm9jZXNzL2NvbXB1dGVyL0dpcmFwaEhhZG9vcEdyYXBoUHJvdmlkZXIuamF2YSBiL2dpcmFwaC1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9naXJhcGgvcHJvY2Vzcy9jb21wdXRlci9HaXJhcGhIYWRvb3BHcmFwaFByb3ZpZGVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlYWU0ZjEuLjAwMDAwMDAKLS0tIGEvZ2lyYXBoLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dpcmFwaC9wcm9jZXNzL2NvbXB1dGVyL0dpcmFwaEhhZG9vcEdyYXBoUHJvdmlkZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLS8qCi0gKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCi0gKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKLSAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCi0gKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCi0gKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCi0gKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCi0gKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAotICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KLSAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQotICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCi0gKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCi0gKiB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmdpcmFwaC5wcm9jZXNzLmNvbXB1dGVyOwotCi1pbXBvcnQgb3JnLmFwYWNoZS5naXJhcGguY29uZi5HaXJhcGhDb25zdGFudHM7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5HcmFwaFByb3ZpZGVyOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uTG9hZEdyYXBoV2l0aDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5IYWRvb3BHcmFwaFByb3ZpZGVyOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5HcmFwaENvbXB1dGVyOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkdyYXBoVHJhdmVyc2FsU291cmNlOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkdyYXBoOwotCi1pbXBvcnQgamF2YS51dGlsLk1hcDsKLWltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdDsKLQotLyoqCi0gKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKLSAqLwotQEdyYXBoUHJvdmlkZXIuRGVzY3JpcHRvcihjb21wdXRlciA9IEdpcmFwaEdyYXBoQ29tcHV0ZXIuY2xhc3MpCi1wdWJsaWMgZmluYWwgY2xhc3MgR2lyYXBoSGFkb29wR3JhcGhQcm92aWRlciBleHRlbmRzIEhhZG9vcEdyYXBoUHJvdmlkZXIgewotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIE1hcDxTdHJpbmcsIE9iamVjdD4gZ2V0QmFzZUNvbmZpZ3VyYXRpb24oZmluYWwgU3RyaW5nIGdyYXBoTmFtZSwgZmluYWwgQ2xhc3M8Pz4gdGVzdCwgZmluYWwgU3RyaW5nIHRlc3RNZXRob2ROYW1lLCBmaW5hbCBMb2FkR3JhcGhXaXRoLkdyYXBoRGF0YSBsb2FkR3JhcGhXaXRoKSB7Ci0gICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsIE9iamVjdD4gY29uZmlnID0gc3VwZXIuZ2V0QmFzZUNvbmZpZ3VyYXRpb24oZ3JhcGhOYW1lLCB0ZXN0LCB0ZXN0TWV0aG9kTmFtZSwgbG9hZEdyYXBoV2l0aCk7Ci0gICAgICAgIGNvbmZpZy5wdXQoIm1hcHJlZHVjZS5qb2IucmVkdWNlcyIsIDIpOwotICAgICAgICAvLy8gZ2lyYXBoIGNvbmZpZ3VyYXRpb24KLSAgICAgICAgY29uZmlnLnB1dChHaXJhcGhDb25zdGFudHMuTE9DQUxfVEVTVF9NT0RFLmdldEtleSgpLCB0cnVlKTsgLy8gbG9jYWwgdGVzdGluZyBjYW4gb25seSBzcGF3biBvbmUgd29ya2VyCi0gICAgICAgIGNvbmZpZy5wdXQoR2lyYXBoQ29uc3RhbnRzLk1JTl9XT1JLRVJTLCAxKTsKLSAgICAgICAgY29uZmlnLnB1dChHaXJhcGhDb25zdGFudHMuTUFYX1dPUktFUlMsIDEpOwotICAgICAgICBjb25maWcucHV0KEdpcmFwaENvbnN0YW50cy5TUExJVF9NQVNURVJfV09SS0VSLmdldEtleSgpLCBmYWxzZSk7Ci0gICAgICAgIGNvbmZpZy5wdXQoR2lyYXBoQ29uc3RhbnRzLlpPT0tFRVBFUl9JU19FWFRFUk5BTC5nZXRLZXkoKSwgZmFsc2UpOwotICAgICAgICBjb25maWcucHV0KEdpcmFwaENvbnN0YW50cy5ORVRUWV9TRVJWRVJfVVNFX0VYRUNVVElPTl9IQU5ETEVSLmdldEtleSgpLCBmYWxzZSk7IC8vIHRoaXMgcHJldmVudHMgc28gbWFueSBpbnRlZ3JhdGlvbiB0ZXN0cyBydW5uaW5nIG91dCBvZiB0aHJlYWRzCi0gICAgICAgIGNvbmZpZy5wdXQoR2lyYXBoQ29uc3RhbnRzLk5FVFRZX0NMSUVOVF9VU0VfRVhFQ1VUSU9OX0hBTkRMRVIuZ2V0S2V5KCksIGZhbHNlKTsgLy8gdGhpcyBwcmV2ZW50cyBzbyBtYW55IGludGVncmF0aW9uIHRlc3RzIHJ1bm5pbmcgb3V0IG9mIHRocmVhZHMKLSAgICAgICAgY29uZmlnLnB1dChHaXJhcGhDb25zdGFudHMuTkVUVFlfVVNFX0RJUkVDVF9NRU1PUlkuZ2V0S2V5KCksIHRydWUpOwotICAgICAgICBjb25maWcucHV0KEdpcmFwaENvbnN0YW50cy5OVU1fSU5QVVRfVEhSRUFEUy5nZXRLZXkoKSwgMik7Ci0gICAgICAgIGNvbmZpZy5wdXQoR2lyYXBoQ29uc3RhbnRzLk5VTV9DT01QVVRFX1RIUkVBRFMuZ2V0S2V5KCksIDIpOwotICAgICAgICBjb25maWcucHV0KEdpcmFwaENvbnN0YW50cy5NQVhfTUFTVEVSX1NVUEVSU1RFUF9XQUlUX01TRUNTLmdldEtleSgpLCBUaW1lVW5pdC5NSU5VVEVTLnRvTWlsbGlzKDYwTCkpOwotICAgICAgICBjb25maWcucHV0KEdpcmFwaENvbnN0YW50cy5WRVJURVhfT1VUUFVUX0ZPUk1BVF9USFJFQURfU0FGRS5nZXRLZXkoKSwgZmFsc2UpOwotICAgICAgICBjb25maWcucHV0KEdpcmFwaENvbnN0YW50cy5OVU1fT1VUUFVUX1RIUkVBRFMuZ2V0S2V5KCksIDEpOwotICAgICAgICByZXR1cm4gY29uZmlnOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBHcmFwaFRyYXZlcnNhbFNvdXJjZSB0cmF2ZXJzYWwoZmluYWwgR3JhcGggZ3JhcGgpIHsKLSAgICAgICAgcmV0dXJuIGdyYXBoLnRyYXZlcnNhbCgpLndpdGhDb21wdXRlcihHaXJhcGhHcmFwaENvbXB1dGVyLmNsYXNzKTsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgR3JhcGhDb21wdXRlciBnZXRHcmFwaENvbXB1dGVyKGZpbmFsIEdyYXBoIGdyYXBoKSB7Ci0gICAgICAgIHJldHVybiBncmFwaC5jb21wdXRlKEdpcmFwaEdyYXBoQ29tcHV0ZXIuY2xhc3MpOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL2dpcmFwaC1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9naXJhcGgvc3RydWN0dXJlL2lvL0dpcmFwaElvUmVnaXN0cnlDaGVjay5qYXZhIGIvZ2lyYXBoLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dpcmFwaC9zdHJ1Y3R1cmUvaW8vR2lyYXBoSW9SZWdpc3RyeUNoZWNrLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhOWRjODEuLjAwMDAwMDAKLS0tIGEvZ2lyYXBoLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dpcmFwaC9zdHJ1Y3R1cmUvaW8vR2lyYXBoSW9SZWdpc3RyeUNoZWNrLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0vKgotICogIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLSAqICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKLSAqICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgotICogIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLSAqICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCi0gKiAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQotICogIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKLSAqICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgotICogICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQotICogIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQotICogIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKLSAqICB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi1wYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ2lyYXBoLnN0cnVjdHVyZS5pbzsKLQotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ2lyYXBoLnByb2Nlc3MuY29tcHV0ZXIuR2lyYXBoR3JhcGhDb21wdXRlcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuSGFkb29wR3JhcGg7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLmlvLkFic3RyYWN0SW9SZWdpc3RyeUNoZWNrOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5pby5IYWRvb3BQb29sczsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncnlvLmtyeW9zaGltLktyeW9TaGltU2VydmljZUxvYWRlcjsKLWltcG9ydCBvcmcuanVuaXQuQWZ0ZXI7Ci1pbXBvcnQgb3JnLmp1bml0LkJlZm9yZTsKLWltcG9ydCBvcmcuanVuaXQuVGVzdDsKLQotLyoqCi0gKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKLSAqLwotcHVibGljIGNsYXNzIEdpcmFwaElvUmVnaXN0cnlDaGVjayBleHRlbmRzIEFic3RyYWN0SW9SZWdpc3RyeUNoZWNrIHsKLQotICAgIEBCZWZvcmUKLSAgICBwdWJsaWMgdm9pZCBzZXR1cCgpIHRocm93cyBFeGNlcHRpb24gewotICAgICAgICBzdXBlci5zZXR1cCgpOwotICAgICAgICBLcnlvU2hpbVNlcnZpY2VMb2FkZXIuY2xvc2UoKTsKLSAgICAgICAgSGFkb29wUG9vbHMuY2xvc2UoKTsKLSAgICB9Ci0KLSAgICBAQWZ0ZXIKLSAgICBwdWJsaWMgdm9pZCB0ZWFyRG93bigpIHRocm93cyBFeGNlcHRpb24gewotICAgICAgICBzdXBlci50ZWFyRG93bigpOwotICAgICAgICBLcnlvU2hpbVNlcnZpY2VMb2FkZXIuY2xvc2UoKTsKLSAgICAgICAgSGFkb29wUG9vbHMuY2xvc2UoKTsKLSAgICB9Ci0KLSAgICBAVGVzdAotICAgIHB1YmxpYyB2b2lkIHNob3VsZFN1cHBvcnRHcnlvVjFkMElvUmVnaXN0cnkoKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICAgICAgc3VwZXIuY2hlY2tHcnlvVjFkMElvUmVnaXN0cnlDb21wbGlhbmNlKChIYWRvb3BHcmFwaCkgZ3JhcGgsIEdpcmFwaEdyYXBoQ29tcHV0ZXIuY2xhc3MpOwotICAgIH0KLQotICAgIEBUZXN0Ci0gICAgcHVibGljIHZvaWQgc2hvdWxkU3VwcG9ydEdyeW9WM2QwSW9SZWdpc3RyeSgpIHRocm93cyBFeGNlcHRpb24gewotICAgICAgICBzdXBlci5jaGVja0dyeW9WM2QwSW9SZWdpc3RyeUNvbXBsaWFuY2UoKEhhZG9vcEdyYXBoKSBncmFwaCwgR2lyYXBoR3JhcGhDb21wdXRlci5jbGFzcyk7Ci0gICAgfQotCi0gICAgQFRlc3QKLSAgICBwdWJsaWMgdm9pZCBzaG91bGRTdXBwb3J0R3JhcGhTT05Jb1JlZ2lzdHJ5KCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0gICAgICAgIHN1cGVyLmNoZWNrR3JhcGhTT05Jb1JlZ2lzdHJ5Q29tcGxpYW5jZSgoSGFkb29wR3JhcGgpIGdyYXBoLCBHaXJhcGhHcmFwaENvbXB1dGVyLmNsYXNzKTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9naXJhcGgtZ3JlbWxpbi9zcmMvdGVzdC9yZXNvdXJjZXMvZ2lyYXBoLXNpdGUueG1sIGIvZ2lyYXBoLWdyZW1saW4vc3JjL3Rlc3QvcmVzb3VyY2VzL2dpcmFwaC1zaXRlLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTg2MjI5Ni4uMDAwMDAwMAotLS0gYS9naXJhcGgtZ3JlbWxpbi9zcmMvdGVzdC9yZXNvdXJjZXMvZ2lyYXBoLXNpdGUueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTw/eG1sLXN0eWxlc2hlZXQgdHlwZT0idGV4dC94c2wiIGhyZWY9ImNvbmZpZ3VyYXRpb24ueHNsIj8+Ci08Y29uZmlndXJhdGlvbj4KLSAgICA8cHJvcGVydHk+Ci0gICAgICAgIDxuYW1lPmdpcmFwaC56a1NlcnZlcmxpc3RQb2xsTXNlY3M8L25hbWU+Ci0gICAgICAgIDx2YWx1ZT41MDA8L3ZhbHVlPgotICAgIDwvcHJvcGVydHk+Ci0gICAgPHByb3BlcnR5PgotICAgICAgICA8bmFtZT5naXJhcGgubG9nTGV2ZWw8L25hbWU+Ci0gICAgICAgIDx2YWx1ZT5pbmZvPC92YWx1ZT4KLSAgICA8L3Byb3BlcnR5PgotPC9jb25maWd1cmF0aW9uPgpkaWZmIC0tZ2l0IGEvZ2lyYXBoLWdyZW1saW4vc3JjL3Rlc3QvcmVzb3VyY2VzL2xvZzRqLXNpbGVudC5wcm9wZXJ0aWVzIGIvZ2lyYXBoLWdyZW1saW4vc3JjL3Rlc3QvcmVzb3VyY2VzL2xvZzRqLXNpbGVudC5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzMxMmY3Li4wMDAwMDAwCi0tLSBhL2dpcmFwaC1ncmVtbGluL3NyYy90ZXN0L3Jlc291cmNlcy9sb2c0ai1zaWxlbnQucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLSMgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQotIyBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKLSMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLSMgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQotIyB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKLSMgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKLSMgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KLSMgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCi0jIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQotIyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCi0jIHVuZGVyIHRoZSBMaWNlbnNlLgotCi0jIHRoaXMgZmlsZSBzaG91bGQgYWx3YXlzIGhhdmUgbG9nZ2luZyBzZXQgdG8gT0ZGLiAgaXQgc2VlbXMsIGhvd2V2ZXIsIHRoYXQgYW4gYXBwZW5kZXIgb2Ygc29tZSBzb3J0IGlzCi0jIHJlcXVpcmVkIG9yIGVsc2Ugc29tZSBsb2dzIHRocm93IGVycm9yIGFuZCB1c2Ugb3RoZXIgbG9nNGoucHJvcGVydGllcyBmaWxlcyBvbiB0aGUgcGF0aC4KLWxvZzRqLnJvb3RMb2dnZXI9T0ZGLCBzdGRvdXQKLWxvZzRqLmFwcGVuZGVyLnN0ZG91dD1vcmcuYXBhY2hlLmxvZzRqLkNvbnNvbGVBcHBlbmRlcgotbG9nNGouYXBwZW5kZXIuc3Rkb3V0LmxheW91dD1vcmcuYXBhY2hlLmxvZzRqLlBhdHRlcm5MYXlvdXQKLWxvZzRqLmFwcGVuZGVyLnN0ZG91dC5sYXlvdXQuQ29udmVyc2lvblBhdHRlcm49WyVwXSAlQyAtICVtJW4KLQotIyBuZWVkIHRvIHR1cm4gdGhpcyBvbiBzbyB0aGF0IHdlIGtub3cgdGhlIHRlc3Qgc2VlZAotbG9nNGoubG9nZ2VyLm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uVGVzdEhlbHBlcj1JTkZPClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ2lyYXBoLWdyZW1saW4vc3JjL3Rlc3QvcmVzb3VyY2VzL2xvZzRqLXRlc3QucHJvcGVydGllcyBiL2dpcmFwaC1ncmVtbGluL3NyYy90ZXN0L3Jlc291cmNlcy9sb2c0ai10ZXN0LnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2NmJmYWIuLjAwMDAwMDAKLS0tIGEvZ2lyYXBoLWdyZW1saW4vc3JjL3Rlc3QvcmVzb3VyY2VzL2xvZzRqLXRlc3QucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLSMgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQotIyBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKLSMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLSMgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQotIyB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCi0jICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKLSMgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKLSMgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KLSMgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCi0jIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQotIyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCi0jIHVuZGVyIHRoZSBMaWNlbnNlLgotCi1sb2c0ai5yb290TG9nZ2VyPVdBUk4sIHN0ZG91dAotbG9nNGouYXBwZW5kZXIuc3Rkb3V0PW9yZy5hcGFjaGUubG9nNGouQ29uc29sZUFwcGVuZGVyCi1sb2c0ai5hcHBlbmRlci5zdGRvdXQubGF5b3V0PW9yZy5hcGFjaGUubG9nNGouUGF0dGVybkxheW91dAotbG9nNGouYXBwZW5kZXIuc3Rkb3V0LmxheW91dC5Db252ZXJzaW9uUGF0dGVybj1bJXBdICVDIC0gJW0lbgotCi1sb2c0ai5sb2dnZXIub3JnLmFwYWNoZS5oYWRvb3A9RVJST1IKLQotIyBuZWVkIHRvIHR1cm4gdGhpcyBvbiBzbyB0aGF0IHdlIGtub3cgdGhlIHRlc3Qgc2VlZAotbG9nNGoubG9nZ2VyLm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uVGVzdEhlbHBlcj1JTkZPClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1hcmNoZXR5cGUvZ3JlbWxpbi1hcmNoZXR5cGUtZHNsL3BvbS54bWwgYi9ncmVtbGluLWFyY2hldHlwZS9ncmVtbGluLWFyY2hldHlwZS1kc2wvcG9tLnhtbAppbmRleCA4MWM2MmFkLi42YTJjYzY1IDEwMDY0NAotLS0gYS9ncmVtbGluLWFyY2hldHlwZS9ncmVtbGluLWFyY2hldHlwZS1kc2wvcG9tLnhtbAorKysgYi9ncmVtbGluLWFyY2hldHlwZS9ncmVtbGluLWFyY2hldHlwZS1kc2wvcG9tLnhtbApAQCAtMjEsNyArMjEsNyBAQAogICAgIDxwYXJlbnQ+CiAgICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUudGlua2VycG9wPC9ncm91cElkPgogICAgICAgICA8YXJ0aWZhY3RJZD5ncmVtbGluLWFyY2hldHlwZTwvYXJ0aWZhY3RJZD4KLSAgICAgICAgPHZlcnNpb24+My4zLjExLVNOQVBTSE9UPC92ZXJzaW9uPgorICAgICAgICA8dmVyc2lvbj4zLjQuNy1TTkFQU0hPVDwvdmVyc2lvbj4KICAgICA8L3BhcmVudD4KIAogICAgIDxhcnRpZmFjdElkPmdyZW1saW4tYXJjaGV0eXBlLWRzbDwvYXJ0aWZhY3RJZD4KZGlmZiAtLWdpdCBhL2dyZW1saW4tYXJjaGV0eXBlL2dyZW1saW4tYXJjaGV0eXBlLWRzbC9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvbWFpbi9qYXZhL1NvY2lhbFRyYXZlcnNhbFNvdXJjZURzbC5qYXZhIGIvZ3JlbWxpbi1hcmNoZXR5cGUvZ3JlbWxpbi1hcmNoZXR5cGUtZHNsL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy9tYWluL2phdmEvU29jaWFsVHJhdmVyc2FsU291cmNlRHNsLmphdmEKaW5kZXggZDE0Yjg0My4uZTRkMWI4YSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1hcmNoZXR5cGUvZ3JlbWxpbi1hcmNoZXR5cGUtZHNsL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy9tYWluL2phdmEvU29jaWFsVHJhdmVyc2FsU291cmNlRHNsLmphdmEKKysrIGIvZ3JlbWxpbi1hcmNoZXR5cGUvZ3JlbWxpbi1hcmNoZXR5cGUtZHNsL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy9tYWluL2phdmEvU29jaWFsVHJhdmVyc2FsU291cmNlRHNsLmphdmEKQEAgLTE4LDYgKzE4LDcgQEAKICAqLwogcGFja2FnZSAke3BhY2thZ2V9OwogCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnJlbW90ZS5SZW1vdGVDb25uZWN0aW9uOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbFN0cmF0ZWdpZXM7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuR3JlbWxpbkRzbDsKQEAgLTQ0LDYgKzQ1LDEwIEBACiAgICAgICAgIHN1cGVyKGdyYXBoKTsKICAgICB9CiAKKyAgICBwdWJsaWMgU29jaWFsVHJhdmVyc2FsU291cmNlRHNsKGZpbmFsIFJlbW90ZUNvbm5lY3Rpb24gY29ubmVjdGlvbikgeworICAgICAgICBzdXBlcihjb25uZWN0aW9uKTsKKyAgICB9CisKICAgICAvKioKICAgICAgKiBTdGFydHMgYSB0cmF2ZXJzYWwgdGhhdCBmaW5kcyBhbGwgdmVydGljZXMgd2l0aCBhICJwZXJzb24iIGxhYmVsIGFuZCBvcHRpb25hbGx5IGFsbG93cyBmaWx0ZXJpbmcgb2YgdGhvc2UKICAgICAgKiB2ZXJ0aWNlcyBvbiB0aGUgIm5hbWUiIHByb3BlcnR5LgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1hcmNoZXR5cGUvZ3JlbWxpbi1hcmNoZXR5cGUtc2VydmVyL3BvbS54bWwgYi9ncmVtbGluLWFyY2hldHlwZS9ncmVtbGluLWFyY2hldHlwZS1zZXJ2ZXIvcG9tLnhtbAppbmRleCA2MjkyYjBkLi45YmFhNmUzIDEwMDY0NAotLS0gYS9ncmVtbGluLWFyY2hldHlwZS9ncmVtbGluLWFyY2hldHlwZS1zZXJ2ZXIvcG9tLnhtbAorKysgYi9ncmVtbGluLWFyY2hldHlwZS9ncmVtbGluLWFyY2hldHlwZS1zZXJ2ZXIvcG9tLnhtbApAQCAtMjEsNyArMjEsNyBAQAogICAgIDxwYXJlbnQ+CiAgICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUudGlua2VycG9wPC9ncm91cElkPgogICAgICAgICA8YXJ0aWZhY3RJZD5ncmVtbGluLWFyY2hldHlwZTwvYXJ0aWZhY3RJZD4KLSAgICAgICAgPHZlcnNpb24+My4zLjExLVNOQVBTSE9UPC92ZXJzaW9uPgorICAgICAgICA8dmVyc2lvbj4zLjQuNy1TTkFQU0hPVDwvdmVyc2lvbj4KICAgICA8L3BhcmVudD4KIAogICAgIDxhcnRpZmFjdElkPmdyZW1saW4tYXJjaGV0eXBlLXNlcnZlcjwvYXJ0aWZhY3RJZD4KZGlmZiAtLWdpdCBhL2dyZW1saW4tYXJjaGV0eXBlL2dyZW1saW4tYXJjaGV0eXBlLXNlcnZlci9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvdGVzdC9yZXNvdXJjZXMvZ3JlbWxpbi1zZXJ2ZXIueWFtbCBiL2dyZW1saW4tYXJjaGV0eXBlL2dyZW1saW4tYXJjaGV0eXBlLXNlcnZlci9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvdGVzdC9yZXNvdXJjZXMvZ3JlbWxpbi1zZXJ2ZXIueWFtbAppbmRleCAxZDJiNGQ4Li45NTMwYjUwIDEwMDY0NAotLS0gYS9ncmVtbGluLWFyY2hldHlwZS9ncmVtbGluLWFyY2hldHlwZS1zZXJ2ZXIvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvc3JjL3Rlc3QvcmVzb3VyY2VzL2dyZW1saW4tc2VydmVyLnlhbWwKKysrIGIvZ3JlbWxpbi1hcmNoZXR5cGUvZ3JlbWxpbi1hcmNoZXR5cGUtc2VydmVyL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy90ZXN0L3Jlc291cmNlcy9ncmVtbGluLXNlcnZlci55YW1sCkBAIC0yMCw3ICsyMCw2IEBACiB0aHJlYWRQb29sV29ya2VyOiAxCiBncmVtbGluUG9vbDogOAogZXZhbHVhdGlvblRpbWVvdXQ6IDMwMDAwCi1zZXJpYWxpemVkUmVzcG9uc2VUaW1lb3V0OiAzMDAwMAogZ3JhcGhzOiB7CiAgIGdyYXBoOiBjb25mL3RpbmtlcmdyYXBoLWVtcHR5LnByb3BlcnRpZXN9CiBzY3JpcHRFbmdpbmVzOiB7CmRpZmYgLS1naXQgYS9ncmVtbGluLWFyY2hldHlwZS9ncmVtbGluLWFyY2hldHlwZS10aW5rZXJncmFwaC9wb20ueG1sIGIvZ3JlbWxpbi1hcmNoZXR5cGUvZ3JlbWxpbi1hcmNoZXR5cGUtdGlua2VyZ3JhcGgvcG9tLnhtbAppbmRleCA2NWU3Y2I4Li5kZmFhZjg5IDEwMDY0NAotLS0gYS9ncmVtbGluLWFyY2hldHlwZS9ncmVtbGluLWFyY2hldHlwZS10aW5rZXJncmFwaC9wb20ueG1sCisrKyBiL2dyZW1saW4tYXJjaGV0eXBlL2dyZW1saW4tYXJjaGV0eXBlLXRpbmtlcmdyYXBoL3BvbS54bWwKQEAgLTIxLDcgKzIxLDcgQEAKICAgICA8cGFyZW50PgogICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLnRpbmtlcnBvcDwvZ3JvdXBJZD4KICAgICAgICAgPGFydGlmYWN0SWQ+Z3JlbWxpbi1hcmNoZXR5cGU8L2FydGlmYWN0SWQ+Ci0gICAgICAgIDx2ZXJzaW9uPjMuMy4xMS1TTkFQU0hPVDwvdmVyc2lvbj4KKyAgICAgICAgPHZlcnNpb24+My40LjctU05BUFNIT1Q8L3ZlcnNpb24+CiAgICAgPC9wYXJlbnQ+CiAKICAgICA8YXJ0aWZhY3RJZD5ncmVtbGluLWFyY2hldHlwZS10aW5rZXJncmFwaDwvYXJ0aWZhY3RJZD4KZGlmZiAtLWdpdCBhL2dyZW1saW4tYXJjaGV0eXBlL3BvbS54bWwgYi9ncmVtbGluLWFyY2hldHlwZS9wb20ueG1sCmluZGV4IDk3ZTM0YTAuLjViZTk1MDEgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tYXJjaGV0eXBlL3BvbS54bWwKKysrIGIvZ3JlbWxpbi1hcmNoZXR5cGUvcG9tLnhtbApAQCAtMjEsNyArMjEsNyBAQAogICAgIDxwYXJlbnQ+CiAgICAgICAgIDxhcnRpZmFjdElkPnRpbmtlcnBvcDwvYXJ0aWZhY3RJZD4KICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS50aW5rZXJwb3A8L2dyb3VwSWQ+Ci0gICAgICAgIDx2ZXJzaW9uPjMuMy4xMS1TTkFQU0hPVDwvdmVyc2lvbj4KKyAgICAgICAgPHZlcnNpb24+My40LjctU05BUFNIT1Q8L3ZlcnNpb24+CiAgICAgPC9wYXJlbnQ+CiAKICAgICA8YXJ0aWZhY3RJZD5ncmVtbGluLWFyY2hldHlwZTwvYXJ0aWZhY3RJZD4KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29uc29sZS9iaW4vZ3JlbWxpbi5zaCBiL2dyZW1saW4tY29uc29sZS9iaW4vZ3JlbWxpbi5zaAppbmRleCA5NWY1MTZlLi43YTE4NWFlIDEyMDAwMAotLS0gYS9ncmVtbGluLWNvbnNvbGUvYmluL2dyZW1saW4uc2gKKysrIGIvZ3JlbWxpbi1jb25zb2xlL2Jpbi9ncmVtbGluLnNoCkBAIC0xICsxIEBACi0uLi90YXJnZXQvYXBhY2hlLXRpbmtlcnBvcC1ncmVtbGluLWNvbnNvbGUtMy4zLjExLVNOQVBTSE9ULXN0YW5kYWxvbmUvYmluL2dyZW1saW4uc2gKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisuLi90YXJnZXQvYXBhY2hlLXRpbmtlcnBvcC1ncmVtbGluLWNvbnNvbGUtMy40LjctU05BUFNIT1Qtc3RhbmRhbG9uZS9iaW4vZ3JlbWxpbi5zaApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29uc29sZS9jb25mL3JlbW90ZS1vYmplY3RzLnlhbWwgYi9ncmVtbGluLWNvbnNvbGUvY29uZi9yZW1vdGUtb2JqZWN0cy55YW1sCmluZGV4IGJhOWJkNjkuLjcwZWIwZmIgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29uc29sZS9jb25mL3JlbW90ZS1vYmplY3RzLnlhbWwKKysrIGIvZ3JlbWxpbi1jb25zb2xlL2NvbmYvcmVtb3RlLW9iamVjdHMueWFtbApAQCAtMTcsNyArMTcsNyBAQAogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBUaGlzIGNvbmZpZ3VyYXRpb24gaXMgbWVhbnQgdG8gaGF2ZSBHcmVtbGluIFNlcnZlciByZXR1cm4KLSMgR3J5byBzZXJpYWxpemVkIG9iamVjdHMuIFRoZSBUaW5rZXJHcmFwaCBJb1JlZ2lzdHJ5IGlzCisjIEdyYXBoQmluYXJ5IHNlcmlhbGl6ZWQgb2JqZWN0cy4gVGhlIFRpbmtlckdyYXBoIElvUmVnaXN0cnkgaXMKICMgYXNzaWduZWQgYXMgdGhpcyBpcyB0aGUgY29uZmlndXJhdGlvbiBkZWZpbmVkIGluIHRoZQogIyBwcmUtcGFja2FnZWQgR3JlbWxpbiBTZXJ2ZXIgY29uZmlndXJhdGlvbiBmaWxlcy4gIFRoZQogIyBjbGllbnQgY29uZmlndXJhdGlvbiBmb3Igc2VyaWFsaXplcnMgc2hvdWxkIG1hdGNoIHNlcnZlci4KQEAgLTI2LDExICsyNiwxMiBAQAogIyAtIGdyZW1saW4tc2VydmVyLnlhbWwKICMgLSBncmVtbGluLXNlcnZlci1jbGFzc2ljLnlhbWwKICMgLSBncmVtbGluLXNlcnZlci1tb2Rlcm4ueWFtbAorIyAtIGdyZW1saW4tc2VydmVyLW1vZGVybi1weS55YW1sCiAjIC0gZ3JlbWxpbi1zZXJ2ZXItbW9kZXJuLXJlYWRvbmx5LnlhbWwKLSMgLSBncmVtbGluLXNlcnZlci1zZWN1cmUueWFtbAorIyAtIGdyZW1saW4tc2VydmVyLW5lbzRqLnlhbWwKKyMgLSBncmVtbGluLXNlcnZlci1zcGFyay55YW1sCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiBob3N0czogW2xvY2FsaG9zdF0KIHBvcnQ6IDgxODIKLXNlcmlhbGl6ZXI6IHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMCwKLSAgICAgICAgICAgICAgY29uZmlnOiB7IGlvUmVnaXN0cmllczogW29yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguc3RydWN0dXJlLlRpbmtlcklvUmVnaXN0cnlWM2QwXSB9fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK3NlcmlhbGl6ZXI6IHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxIH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvbnNvbGUvY29uZi9yZW1vdGUtc2VjdXJlLnlhbWwgYi9ncmVtbGluLWNvbnNvbGUvY29uZi9yZW1vdGUtc2VjdXJlLnlhbWwKaW5kZXggOTdiNzU2Yi4uYTI5ZDk5YSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb25zb2xlL2NvbmYvcmVtb3RlLXNlY3VyZS55YW1sCisrKyBiL2dyZW1saW4tY29uc29sZS9jb25mL3JlbW90ZS1zZWN1cmUueWFtbApAQCAtMzEsNCArMzEsNCBAQAogY29ubmVjdGlvblBvb2w6IHsKICAgZW5hYmxlU3NsOiB0cnVlLAogICBzc2xFbmFibGVkUHJvdG9jb2xzOiBbVExTdjEuMl0gfQotc2VyaWFsaXplcjogeyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcnlvTWVzc2FnZVNlcmlhbGl6ZXJWM2QwLCBjb25maWc6IHsgc2VyaWFsaXplUmVzdWx0VG9TdHJpbmc6IHRydWUgfX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitzZXJpYWxpemVyOiB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMSwgY29uZmlnOiB7IHNlcmlhbGl6ZVJlc3VsdFRvU3RyaW5nOiB0cnVlIH19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb25zb2xlL2NvbmYvcmVtb3RlLnlhbWwgYi9ncmVtbGluLWNvbnNvbGUvY29uZi9yZW1vdGUueWFtbAppbmRleCA3NmRhMzg3Li4xYTQzMjUwIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvbnNvbGUvY29uZi9yZW1vdGUueWFtbAorKysgYi9ncmVtbGluLWNvbnNvbGUvY29uZi9yZW1vdGUueWFtbApAQCAtMjQsOSArMjQsMTEgQEAKICMgLSBncmVtbGluLXNlcnZlci55YW1sCiAjIC0gZ3JlbWxpbi1zZXJ2ZXItY2xhc3NpYy55YW1sCiAjIC0gZ3JlbWxpbi1zZXJ2ZXItbW9kZXJuLnlhbWwKKyMgLSBncmVtbGluLXNlcnZlci1tb2Rlcm4tcHkueWFtbAogIyAtIGdyZW1saW4tc2VydmVyLW1vZGVybi1yZWFkb25seS55YW1sCisjIC0gZ3JlbWxpbi1zZXJ2ZXItc3BhcmsueWFtbAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAogaG9zdHM6IFtsb2NhbGhvc3RdCiBwb3J0OiA4MTgyCi1zZXJpYWxpemVyOiB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAsIGNvbmZpZzogeyBzZXJpYWxpemVSZXN1bHRUb1N0cmluZzogdHJ1ZSB9fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK3NlcmlhbGl6ZXI6IHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxLCBjb25maWc6IHsgc2VyaWFsaXplUmVzdWx0VG9TdHJpbmc6IHRydWUgfX0KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29uc29sZS9wb20ueG1sIGIvZ3JlbWxpbi1jb25zb2xlL3BvbS54bWwKaW5kZXggN2YwNThmMS4uOTM2MzIwYyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb25zb2xlL3BvbS54bWwKKysrIGIvZ3JlbWxpbi1jb25zb2xlL3BvbS54bWwKQEAgLTIxLDcgKzIxLDcgQEAKICAgICA8cGFyZW50PgogICAgICAgICA8YXJ0aWZhY3RJZD50aW5rZXJwb3A8L2FydGlmYWN0SWQ+CiAgICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUudGlua2VycG9wPC9ncm91cElkPgotICAgICAgICA8dmVyc2lvbj4zLjMuMTEtU05BUFNIT1Q8L3ZlcnNpb24+CisgICAgICAgIDx2ZXJzaW9uPjMuNC43LVNOQVBTSE9UPC92ZXJzaW9uPgogICAgIDwvcGFyZW50PgogICAgIDxhcnRpZmFjdElkPmdyZW1saW4tY29uc29sZTwvYXJ0aWZhY3RJZD4KICAgICA8bmFtZT5BcGFjaGUgVGlua2VyUG9wIDo6IEdyZW1saW4gQ29uc29sZTwvbmFtZT4KQEAgLTQ2LDExICs0Niw2IEBACiAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5jb21tb25zLWNvZGVjPC9hcnRpZmFjdElkPgogICAgICAgICA8L2RlcGVuZGVuY3k+CiAgICAgICAgIDxkZXBlbmRlbmN5PgotICAgICAgICAgICAgPGdyb3VwSWQ+Y29tbW9ucy1jbGk8L2dyb3VwSWQ+Ci0gICAgICAgICAgICA8YXJ0aWZhY3RJZD5jb21tb25zLWNsaTwvYXJ0aWZhY3RJZD4KLSAgICAgICAgICAgIDx2ZXJzaW9uPjEuMjwvdmVyc2lvbj4KLSAgICAgICAgPC9kZXBlbmRlbmN5PgotICAgICAgICA8ZGVwZW5kZW5jeT4KICAgICAgICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUudGlua2VycG9wPC9ncm91cElkPgogICAgICAgICAgICAgPGFydGlmYWN0SWQ+Z3JlbWxpbi1kcml2ZXI8L2FydGlmYWN0SWQ+CiAgICAgICAgICAgICA8dmVyc2lvbj4ke3Byb2plY3QudmVyc2lvbn08L3ZlcnNpb24+CkBAIC00NjAsNiArNDU1LDE2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY29uZmlndXJhdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2V4ZWN1dGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXhlY3V0aW9uPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aWQ+ZG9ja2VyLWltYWdlLXRhZy1sYXRlc3Q8L2lkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z29hbHM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z29hbD50YWc8L2dvYWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ29hbHM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjb25maWd1cmF0aW9uPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhZz5sYXRlc3Q8L3RhZz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxza2lwPiR7b25seS53aGVuLmlzLnByZXJlbGVhc2UudmVyc2lvbn08L3NraXA+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY29uZmlndXJhdGlvbj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2V4ZWN1dGlvbj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXhlY3V0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aWQ+ZG9ja2VyLWltYWdlLXB1c2g8L2lkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGhhc2U+ZGVwbG95PC9waGFzZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdvYWxzPgpAQCAtNDgxLDYgKzQ4NiwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNraXA+JHtvbmx5LndoZW4uaXMucHJlcmVsZWFzZS52ZXJzaW9ufTwvc2tpcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jb25maWd1cmF0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXhlY3V0aW9uPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxleGVjdXRpb24+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpZD5kb2NrZXItaW1hZ2UtcHVzaC1sYXRlc3Q8L2lkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGhhc2U+ZGVwbG95PC9waGFzZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdvYWxzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdvYWw+cHVzaDwvZ29hbD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nb2Fscz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvbmZpZ3VyYXRpb24+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFnPmxhdGVzdDwvdGFnPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNraXA+JHtvbmx5LndoZW4uaXMucHJlcmVsZWFzZS52ZXJzaW9ufTwvc2tpcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jb25maWd1cmF0aW9uPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXhlY3V0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgPC9leGVjdXRpb25zPgogICAgICAgICAgICAgICAgICAgICAgICAgPGNvbmZpZ3VyYXRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcG9zaXRvcnk+dGlua2VycG9wL2dyZW1saW4tY29uc29sZTwvcmVwb3NpdG9yeT4KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29uc29sZS9zcmMvbWFpbi9ncm9vdnkvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9jb25zb2xlL0NvbnNvbGUuZ3Jvb3Z5IGIvZ3JlbWxpbi1jb25zb2xlL3NyYy9tYWluL2dyb292eS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2NvbnNvbGUvQ29uc29sZS5ncm9vdnkKaW5kZXggYWVlYzYzYS4uM2RkOGU2OSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb25zb2xlL3NyYy9tYWluL2dyb292eS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2NvbnNvbGUvQ29uc29sZS5ncm9vdnkKKysrIGIvZ3JlbWxpbi1jb25zb2xlL3NyYy9tYWluL2dyb292eS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2NvbnNvbGUvQ29uc29sZS5ncm9vdnkKQEAgLTE4LDE1ICsxOCwxNyBAQAogICovCiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uY29uc29sZQogCitpbXBvcnQgZ3Jvb3Z5LmNsaS5waWNvY2xpLkNsaUJ1aWxkZXIKK2ltcG9ydCBncm9vdnkuY2xpLnBpY29jbGkuT3B0aW9uQWNjZXNzb3IKIGltcG9ydCBqbGluZS5UZXJtaW5hbEZhY3RvcnkKIGltcG9ydCBqbGluZS5jb25zb2xlLmhpc3RvcnkuRmlsZUhpc3RvcnkKIAotaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5jbGkuT3B0aW9uCiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5jb25zb2xlLmNvbW1hbmRzLkJ5dGVjb2RlQ29tbWFuZAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uY29uc29sZS5jb21tYW5kcy5HcmVtbGluU2V0Q29tbWFuZAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uY29uc29sZS5jb21tYW5kcy5JbnN0YWxsQ29tbWFuZAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uY29uc29sZS5jb21tYW5kcy5QbHVnaW5Db21tYW5kCiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5jb25zb2xlLmNvbW1hbmRzLlJlbW90ZUNvbW1hbmQKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmNvbnNvbGUuY29tbWFuZHMuQ2xzQ29tbWFuZAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uY29uc29sZS5jb21tYW5kcy5TdWJtaXRDb21tYW5kCiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5jb25zb2xlLmNvbW1hbmRzLlVuaW5zdGFsbENvbW1hbmQKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmdyb292eS5sb2FkZXJzLkdyZW1saW5Mb2FkZXIKQEAgLTQ1LDEzICs0NywxMCBAQAogaW1wb3J0IG9yZy5jb2RlaGF1cy5ncm9vdnkudG9vbHMuc2hlbGwuSU8KIGltcG9ydCBvcmcuY29kZWhhdXMuZ3Jvb3Z5LnRvb2xzLnNoZWxsLkludGVyYWN0aXZlU2hlbGxSdW5uZXIKIGltcG9ydCBvcmcuY29kZWhhdXMuZ3Jvb3Z5LnRvb2xzLnNoZWxsLmNvbW1hbmRzLlNldENvbW1hbmQKLWltcG9ydCBvcmcuY29kZWhhdXMuZ3Jvb3Z5LnRvb2xzLnNoZWxsLnV0aWwuSGVscEZvcm1hdHRlcgogaW1wb3J0IG9yZy5mdXNlc291cmNlLmphbnNpLkFuc2kKIGltcG9ydCBzdW4ubWlzYy5TaWduYWwKIGltcG9ydCBzdW4ubWlzYy5TaWduYWxIYW5kbGVyCiAKLWltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5hdG9taWMuQXRvbWljQm9vbGVhbgotCiAvKioKICAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKICAqLwpAQCAtOTgsNyArOTcsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICB9KQogCi0gICAgICAgIGdyb292eSA9IG5ldyBHcmVtbGluR3Jvb3Z5c2gobWVkaWF0b3IpCisgICAgICAgIGdyb292eSA9IG5ldyBHcmVtbGluR3Jvb3Z5c2gobWVkaWF0b3IsIGlvKQogCiAgICAgICAgIGRlZiBjb21tYW5kc1RvUmVtb3ZlID0gZ3Jvb3Z5LmdldFJlZ2lzdHJ5KCkuY29tbWFuZHMoKS5maW5kQWxsIHsgaXQgaW5zdGFuY2VvZiBTZXRDb21tYW5kIH0KICAgICAgICAgY29tbWFuZHNUb1JlbW92ZS5lYWNoIHsgZ3Jvb3Z5LmdldFJlZ2lzdHJ5KCkucmVtb3ZlKGl0KSB9CkBAIC0xMDksNiArMTA4LDcgQEAKICAgICAgICAgZ3Jvb3Z5LnJlZ2lzdGVyKG5ldyBSZW1vdGVDb21tYW5kKGdyb292eSwgbWVkaWF0b3IpKQogICAgICAgICBncm9vdnkucmVnaXN0ZXIobmV3IFN1Ym1pdENvbW1hbmQoZ3Jvb3Z5LCBtZWRpYXRvcikpCiAgICAgICAgIGdyb292eS5yZWdpc3RlcihuZXcgQnl0ZWNvZGVDb21tYW5kKGdyb292eSwgbWVkaWF0b3IpKQorICAgICAgICBncm9vdnkucmVnaXN0ZXIobmV3IENsc0NvbW1hbmQoZ3Jvb3Z5LCBtZWRpYXRvcikpCiAKICAgICAgICAgLy8gaGlkZSBvdXRwdXQgdGVtcG9yYXJpbHkgd2hpbGUgaW1wb3J0cyBleGVjdXRlCiAgICAgICAgIHNob3dTaGVsbEV2YWx1YXRpb25PdXRwdXQoZmFsc2UpCkBAIC0xMTcsOCArMTE3LDExIEBACiAgICAgICAgIGltcG9ydHMuZ2V0Q2xhc3NQYWNrYWdlcygpLmNvbGxlY3QgeyBNZWRpYXRvci5JTVBPUlRfU1BBQ0UgKyBpdC5nZXROYW1lKCkgKyBNZWRpYXRvci5JTVBPUlRfV0lMRENBUkQgfS5lYWNoIHsgZ3Jvb3Z5LmV4ZWN1dGUoaXQpIH0KICAgICAgICAgaW1wb3J0cy5nZXRNZXRob2RDbGFzc2VzKCkuY29sbGVjdCB7IE1lZGlhdG9yLklNUE9SVF9TVEFUSUNfU1BBQ0UgKyBpdC5nZXRDYW5vbmljYWxOYW1lKCkgKyBNZWRpYXRvci5JTVBPUlRfV0lMRENBUkR9LmVhY2h7IGdyb292eS5leGVjdXRlKGl0KSB9CiAgICAgICAgIGltcG9ydHMuZ2V0RW51bUNsYXNzZXMoKS5jb2xsZWN0IHsgTWVkaWF0b3IuSU1QT1JUX1NUQVRJQ19TUEFDRSArIGl0LmdldENhbm9uaWNhbE5hbWUoKSArIE1lZGlhdG9yLklNUE9SVF9XSUxEQ0FSRH0uZWFjaHsgZ3Jvb3Z5LmV4ZWN1dGUoaXQpIH0KKyAgICAgICAgaW1wb3J0cy5nZXRGaWVsZENsYXNzZXMoKS5jb2xsZWN0IHsgTWVkaWF0b3IuSU1QT1JUX1NUQVRJQ19TUEFDRSArIGl0LmdldENhbm9uaWNhbE5hbWUoKSArIE1lZGlhdG9yLklNUE9SVF9XSUxEQ0FSRH0uZWFjaHsgZ3Jvb3Z5LmV4ZWN1dGUoaXQpIH0KIAogICAgICAgICBmaW5hbCBJbnRlcmFjdGl2ZVNoZWxsUnVubmVyIHJ1bm5lciA9IG5ldyBJbnRlcmFjdGl2ZVNoZWxsUnVubmVyKGdyb292eSwgaGFuZGxlUHJvbXB0KQorICAgICAgICBydW5uZXIucmVhZGVyLnNldEhhbmRsZVVzZXJJbnRlcnJ1cHQoZmFsc2UpCisgICAgICAgIHJ1bm5lci5yZWFkZXIuc2V0SGFuZGxlTGl0dGVyYWxOZXh0KGZhbHNlKQogICAgICAgICBydW5uZXIuc2V0RXJyb3JIYW5kbGVyKGhhbmRsZUVycm9yKQogICAgICAgICB0cnkgewogICAgICAgICAgICAgZmluYWwgRmlsZUhpc3RvcnkgaGlzdG9yeSA9IG5ldyBGaWxlSGlzdG9yeShuZXcgRmlsZShDb25zb2xlRnMuSElTVE9SWV9GSUxFKSkKQEAgLTI4OSw2ICsyOTIsMTMgQEAKICAgICAgICAgfQogICAgIH0KIAorICAgIC8qKgorICAgICAqIENsZWFycyB0aGUgY29uc29sZSBzY3JlZW4uCisgICAgICovCisgICAgZGVmIGNsZWFyKCkgeworICAgICAgICBpby5vdXQucHJpbnRsbigiXDAzM1tIXDAzM1sySiIpCisgICAgfQorCiAgICAgZGVmIHByaW50UmVzdWx0KGRlZiBvYmplY3QpIHsKICAgICAgICAgZmluYWwgU3RyaW5nIHByb21wdCA9IENvbG9yaXplci5yZW5kZXIoUHJlZmVyZW5jZXMucmVzdWx0UHJvbXB0Q29sb3IsIGJ1aWxkUmVzdWx0UHJvbXB0KCkpCiAgICAgICAgIC8vIGlmIHByZWZlcmVuY2UgaXMgc2V0IHRvIGVtcHR5IHN0cmluZyB0aGVuIGRvbid0IHByaW50IGFueSByZXN1bHQKQEAgLTQ0NSwyMSArNDU1LDIyIEBACiAKICAgICAgICAgSU8gaW8gPSBuZXcgSU8oU3lzdGVtLmluLCBTeXN0ZW0ub3V0LCBTeXN0ZW0uZXJyKQogCi0gICAgICAgIGZpbmFsIENsaUJ1aWxkZXIgY2xpID0gbmV3IENsaUJ1aWxkZXIodXNhZ2U6ICdncmVtbGluLnNoIFtvcHRpb25zXSBbLi4uXScsIGZvcm1hdHRlcjogbmV3IEhlbHBGb3JtYXR0ZXIoKSwgc3RvcEF0Tm9uT3B0aW9uOiBmYWxzZSkKKyAgICAgICAgZmluYWwgQ2xpQnVpbGRlciBjbGkgPSBuZXcgQ2xpQnVpbGRlcigpCisgICAgICAgIGNsaS5zdG9wQXROb25PcHRpb24gPSBmYWxzZQorICAgICAgICBjbGkubmFtZSA9ICJncmVtbGluLnNoIgogCiAgICAgICAgIC8vIG5vdGUgdGhhdCB0aGUgaW5jbHVzaW9uIG9mIC1sIGlzIHJlYWxseSBhIHNldHRpbmcgaGFuZGxlZCBieSBncmVtbGluLnNoIGFuZCBub3QgYnkgQ29uc29sZSBjbGFzcyBpdHNlbGYuCiAgICAgICAgIC8vIGl0IGlzIG1haW5seSBsaXN0ZWQgaGVyZSBmb3IgaW5mb3JtYXRpb25hbCBwdXJwb3NlcyB3aGVuIHRoZSB1c2VyIHN0YXJ0cyB0aGluZ3MgdXAgd2l0aCAtaAotICAgICAgICBjbGkud2l0aCB7Ci0gICAgICAgICAgICBoKGxvbmdPcHQ6ICdoZWxwJywgIkRpc3BsYXkgdGhpcyBoZWxwIG1lc3NhZ2UiKQotICAgICAgICAgICAgdihsb25nT3B0OiAndmVyc2lvbicsICJEaXNwbGF5IHRoZSB2ZXJzaW9uIikKLSAgICAgICAgICAgIGwoIlNldCB0aGUgbG9nZ2luZyBsZXZlbCBvZiBjb21wb25lbnRzIHRoYXQgdXNlIHN0YW5kYXJkIGxvZ2dpbmcgb3V0cHV0IGluZGVwZW5kZW50IG9mIHRoZSBDb25zb2xlIikKLSAgICAgICAgICAgIFYobG9uZ09wdDogJ3ZlcmJvc2UnLCAiRW5hYmxlIHZlcmJvc2UgQ29uc29sZSBvdXRwdXQiKQotICAgICAgICAgICAgUShsb25nT3B0OiAncXVpZXQnLCAiU3VwcHJlc3Mgc3VwZXJmbHVvdXMgQ29uc29sZSBvdXRwdXQiKQotICAgICAgICAgICAgRChsb25nT3B0OiAnZGVidWcnLCAiRW5hYmxlZCBkZWJ1ZyBDb25zb2xlIG91dHB1dCIpCi0gICAgICAgICAgICBpKGxvbmdPcHQ6ICdpbnRlcmFjdGl2ZScsIGFyZ05hbWU6ICJTQ1JJUFQgQVJHMSBBUkcyIC4uLiIsIGFyZ3M6IE9wdGlvbi5VTkxJTUlURURfVkFMVUVTLCB2YWx1ZVNlcGFyYXRvcjogJyAnIGFzIGNoYXIsICJFeGVjdXRlIHRoZSBzcGVjaWZpZWQgc2NyaXB0IGFuZCBsZWF2ZSB0aGUgY29uc29sZSBvcGVuIG9uIGNvbXBsZXRpb24iKQotICAgICAgICAgICAgZShsb25nT3B0OiAnZXhlY3V0ZScsIGFyZ05hbWU6ICJTQ1JJUFQgQVJHMSBBUkcyIC4uLiIsIGFyZ3M6IE9wdGlvbi5VTkxJTUlURURfVkFMVUVTLCB2YWx1ZVNlcGFyYXRvcjogJyAnIGFzIGNoYXIsICJFeGVjdXRlIHRoZSBzcGVjaWZpZWQgc2NyaXB0IChTQ1JJUFQgQVJHMSBBUkcyIC4uLikgYW5kIGNsb3NlIHRoZSBjb25zb2xlIG9uIGNvbXBsZXRpb24iKQotICAgICAgICAgICAgQyhsb25nT3B0OiAnY29sb3InLCAiRGlzYWJsZSB1c2Ugb2YgQU5TSSBjb2xvcnMiKQotICAgICAgICB9CisgICAgICAgIGNsaS5oKHR5cGU6IEJvb2xlYW4sIGxvbmdPcHQ6ICdoZWxwJywgIkRpc3BsYXkgdGhpcyBoZWxwIG1lc3NhZ2UiKQorICAgICAgICBjbGkudih0eXBlOiBCb29sZWFuLGxvbmdPcHQ6ICd2ZXJzaW9uJywgIkRpc3BsYXkgdGhlIHZlcnNpb24iKQorICAgICAgICBjbGkubCgiU2V0IHRoZSBsb2dnaW5nIGxldmVsIG9mIGNvbXBvbmVudHMgdGhhdCB1c2Ugc3RhbmRhcmQgbG9nZ2luZyBvdXRwdXQgaW5kZXBlbmRlbnQgb2YgdGhlIENvbnNvbGUiKQorICAgICAgICBjbGkuVih0eXBlOiBCb29sZWFuLCBsb25nT3B0OiAndmVyYm9zZScsICJFbmFibGUgdmVyYm9zZSBDb25zb2xlIG91dHB1dCIpCisgICAgICAgIGNsaS5RKHR5cGU6IEJvb2xlYW4sIGxvbmdPcHQ6ICdxdWlldCcsICJTdXBwcmVzcyBzdXBlcmZsdW91cyBDb25zb2xlIG91dHB1dCIpCisgICAgICAgIGNsaS5EKHR5cGU6IEJvb2xlYW4sIGxvbmdPcHQ6ICdkZWJ1ZycsICJFbmFibGVkIGRlYnVnIENvbnNvbGUgb3V0cHV0IikKKyAgICAgICAgY2xpLmkodHlwZTogTGlzdCwgbG9uZ09wdDogJ2ludGVyYWN0aXZlJywgYXJpdHk6ICIxLi4qIiwgYXJnTmFtZTogIlNDUklQVCBBUkcxIEFSRzIgLi4uIiwgIkV4ZWN1dGUgdGhlIHNwZWNpZmllZCBzY3JpcHQgYW5kIGxlYXZlIHRoZSBjb25zb2xlIG9wZW4gb24gY29tcGxldGlvbiIpCisgICAgICAgIGNsaS5lKHR5cGU6IExpc3QsIGxvbmdPcHQ6ICdleGVjdXRlJywgYXJnTmFtZTogIlNDUklQVCBBUkcxIEFSRzIgLi4uIiwgIkV4ZWN1dGUgdGhlIHNwZWNpZmllZCBzY3JpcHQgKFNDUklQVCBBUkcxIEFSRzIgLi4uKSBhbmQgY2xvc2UgdGhlIGNvbnNvbGUgb24gY29tcGxldGlvbiIpCisgICAgICAgIGNsaS5DKHR5cGU6IEJvb2xlYW4sIGxvbmdPcHQ6ICdjb2xvcicsICJEaXNhYmxlIHVzZSBvZiBBTlNJIGNvbG9ycyIpCisKICAgICAgICAgT3B0aW9uQWNjZXNzb3Igb3B0aW9ucyA9IGNsaS5wYXJzZShhcmdzKQogCiAgICAgICAgIGlmIChvcHRpb25zID09IG51bGwpIHsKQEAgLTUxNyw3ICs1MjgsNyBAQAogICAgICAgICAgICAgICAgIGRlZiBwYXJzZWRTZXQgPSBbXQogICAgICAgICAgICAgICAgIGZvciAoaXg7IGl4IDwgbm9ybWFsaXplZEFyZ3MubGVuZ3RoOyBpeCsrKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgaXMgYSBkbyBub3RoaW5nIGFzIHRoZXJlJ3Mgbm8gYXJndW1lbnRzIHRvIHRoZSBvcHRpb24gb3IgaXQncyB0aGUgc3RhcnQgb2YgYSBuZXcgb3B0aW9uCi0gICAgICAgICAgICAgICAgICAgIGlmIChjbGkub3B0aW9ucy5vcHRpb25zLmFueSB7ICItIiArIGl0Lm9wdCA9PSBub3JtYWxpemVkQXJnc1tpeF0gfHwgIi0tIiArIGl0LmxvbmdPcHQgPT0gbm9ybWFsaXplZEFyZ3NbaXhdIH0pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNsaS5zYXZlZFR5cGVPcHRpb25zLnZhbHVlcygpLmFueSB7ICItIiArIGl0Lm9wdCA9PSBub3JtYWxpemVkQXJnc1tpeF0gfHwgIi0tIiArIGl0LmxvbmdPcHQgPT0gbm9ybWFsaXplZEFyZ3NbaXhdIH0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJvbGxiYWNrIHRoZSBjb3VudGVyIG5vdyB0aGF0IHdlIGhpdCB0aGUgbmV4dCBvcHRpb24KICAgICAgICAgICAgICAgICAgICAgICAgIGl4LS0KICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvbnNvbGUvc3JjL21haW4vZ3Jvb3Z5L29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vY29uc29sZS9HcmVtbGluR3Jvb3Z5c2guZ3Jvb3Z5IGIvZ3JlbWxpbi1jb25zb2xlL3NyYy9tYWluL2dyb292eS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2NvbnNvbGUvR3JlbWxpbkdyb292eXNoLmdyb292eQppbmRleCBmNWZhMTZhLi45NjAxNWRiIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvbnNvbGUvc3JjL21haW4vZ3Jvb3Z5L29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vY29uc29sZS9HcmVtbGluR3Jvb3Z5c2guZ3Jvb3Z5CisrKyBiL2dyZW1saW4tY29uc29sZS9zcmMvbWFpbi9ncm9vdnkvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9jb25zb2xlL0dyZW1saW5Hcm9vdnlzaC5ncm9vdnkKQEAgLTE4LDkgKzE4LDEzIEBACiAgKi8KIHBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5jb25zb2xlCiAKK2ltcG9ydCBncm9vdnkudHJhbnNmb3JtLlRocmVhZEludGVycnVwdAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uY29uc29sZS5jb21tYW5kcy5HcmVtbGluU2V0Q29tbWFuZAoraW1wb3J0IG9yZy5jb2RlaGF1cy5ncm9vdnkuY29udHJvbC5Db21waWxlckNvbmZpZ3VyYXRpb24KK2ltcG9ydCBvcmcuY29kZWhhdXMuZ3Jvb3Z5LmNvbnRyb2wuY3VzdG9taXplcnMuQVNUVHJhbnNmb3JtYXRpb25DdXN0b21pemVyCiBpbXBvcnQgb3JnLmNvZGVoYXVzLmdyb292eS50b29scy5zaGVsbC5Db21tYW5kCiBpbXBvcnQgb3JnLmNvZGVoYXVzLmdyb292eS50b29scy5zaGVsbC5Hcm9vdnlzaAoraW1wb3J0IG9yZy5jb2RlaGF1cy5ncm9vdnkudG9vbHMuc2hlbGwuSU8KIGltcG9ydCBvcmcuY29kZWhhdXMuZ3Jvb3Z5LnRvb2xzLnNoZWxsLlBhcnNlQ29kZQogaW1wb3J0IG9yZy5jb2RlaGF1cy5ncm9vdnkudG9vbHMuc2hlbGwuUGFyc2VyCiBpbXBvcnQgb3JnLmNvZGVoYXVzLmdyb292eS50b29scy5zaGVsbC51dGlsLkNvbW1hbmRBcmd1bWVudFBhcnNlcgpAQCAtMzMsOCArMzcsMTIgQEAKIGNsYXNzIEdyZW1saW5Hcm9vdnlzaCBleHRlbmRzIEdyb292eXNoIHsKIAogICAgIHByaXZhdGUgZmluYWwgTWVkaWF0b3IgbWVkaWF0b3IKKyAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBDb21waWxlckNvbmZpZ3VyYXRpb24gY29tcGlsZXJDb25maWcgPSBuZXcgQ29tcGlsZXJDb25maWd1cmF0aW9uKENvbXBpbGVyQ29uZmlndXJhdGlvbi5ERUZBVUxUKSB7eworICAgICAgICBhZGRDb21waWxhdGlvbkN1c3RvbWl6ZXJzKG5ldyBBU1RUcmFuc2Zvcm1hdGlvbkN1c3RvbWl6ZXIoVGhyZWFkSW50ZXJydXB0LmNsYXNzKSkKKyAgICB9fQogCi0gICAgcHVibGljIEdyZW1saW5Hcm9vdnlzaChmaW5hbCBNZWRpYXRvciBtZWRpYXRvcikgeworICAgIHB1YmxpYyBHcmVtbGluR3Jvb3Z5c2goZmluYWwgTWVkaWF0b3IgbWVkaWF0b3IsIGZpbmFsIElPIGlvKSB7CisgICAgICAgIHN1cGVyKGlvLCBjb21waWxlckNvbmZpZykKICAgICAgICAgdGhpcy5tZWRpYXRvciA9IG1lZGlhdG9yCiAgICAgfQogCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvbnNvbGUvc3JjL21haW4vZ3Jvb3Z5L29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vY29uc29sZS9QbHVnZ2VkSW4uZ3Jvb3Z5IGIvZ3JlbWxpbi1jb25zb2xlL3NyYy9tYWluL2dyb292eS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2NvbnNvbGUvUGx1Z2dlZEluLmdyb292eQppbmRleCBlOGEzYjhhLi5mYjg3Zjc5IDEwMDY0NAotLS0gYS9ncmVtbGluLWNvbnNvbGUvc3JjL21haW4vZ3Jvb3Z5L29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vY29uc29sZS9QbHVnZ2VkSW4uZ3Jvb3Z5CisrKyBiL2dyZW1saW4tY29uc29sZS9zcmMvbWFpbi9ncm9vdnkvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9jb25zb2xlL1BsdWdnZWRJbi5ncm9vdnkKQEAgLTE4LDYgKzE4LDcgQEAKICAqLwogcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmNvbnNvbGUKIAoraW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uY29uc29sZS5QcmVmZXJlbmNlczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmpzcjIyMy5CaW5kaW5nc0N1c3RvbWl6ZXIKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmpzcjIyMy5HcmVtbGluUGx1Z2luCiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5qc3IyMjMuSW1wb3J0Q3VzdG9taXplcgpAQCAtMTAwLDYgKzEwMSwxNCBAQAogICAgICAgICB9CiAKICAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHZvaWQgZXJyUHJpbnRsbihmaW5hbCBTdHJpbmcgbGluZSkgeworICAgICAgICAgICAgaWYgKCFQcmVmZXJlbmNlcy53YXJuaW5ncykgeworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlvLmVyci5wcmludGxuKCJbd2Fybl0gIiArIGxpbmUpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgIGRlZiA8VD4gVCBleGVjdXRlKGZpbmFsIFN0cmluZyBsaW5lKSB7CiAgICAgICAgICAgICByZXR1cm4gKFQpIHNoZWxsLmV4ZWN1dGUobGluZSkKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb25zb2xlL3NyYy9tYWluL2dyb292eS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2NvbnNvbGUvUHJlZmVyZW5jZXMuZ3Jvb3Z5IGIvZ3JlbWxpbi1jb25zb2xlL3NyYy9tYWluL2dyb292eS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2NvbnNvbGUvUHJlZmVyZW5jZXMuZ3Jvb3Z5CmluZGV4IDIyZjVmNzQuLmQ4YzFhZmUgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29uc29sZS9zcmMvbWFpbi9ncm9vdnkvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9jb25zb2xlL1ByZWZlcmVuY2VzLmdyb292eQorKysgYi9ncmVtbGluLWNvbnNvbGUvc3JjL21haW4vZ3Jvb3Z5L29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vY29uc29sZS9QcmVmZXJlbmNlcy5ncm9vdnkKQEAgLTg5LDYgKzg5LDEwIEBACiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBCb29sZWFuIFBSRUZfQ09MT1JTX0RFRkFVTFQgPSB0cnVlOwogICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBjb2xvcnMgPSBQUkVGX0NPTE9SU19ERUZBVUxUCiAKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQUkVGX1dBUk5JTkdTID0gIndhcm5pbmdzIgorICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgQm9vbGVhbiBQUkVGX1dBUk5JTkdTX0RFRkFVTFQgPSB0cnVlCisgICAgcHVibGljIHN0YXRpYyBib29sZWFuIHdhcm5pbmdzID0gUFJFRl9XQVJOSU5HU19ERUZBVUxUCisKICAgICBwdWJsaWMgc3RhdGljIHZvaWQgZXhwYW5kb01hZ2ljKCkgewogCiAgICAgICAgIC8vIE92ZXJyaWRlIGFsbCBHcm9vdnlTSCBQcmVmZXJlbmNlIG1ldGhvZHMKQEAgLTIzNiw3ICsyNDAsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcnMgPSBCb29sZWFuLnZhbHVlT2YoZXZ0Lm5ld1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0gIGVsc2UgaWYgKGV2dC5rZXkgPT0gUFJFRl9XQVJOSU5HUykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09IGV2dC5uZXdWYWx1ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncyA9IEJvb2xlYW4udmFsdWVPZihTVE9SRS5nZXQoUFJFRl9XQVJOSU5HUywgUFJFRl9XQVJOSU5HU19ERUZBVUxULnRvU3RyaW5nKCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzID0gQm9vbGVhbi52YWx1ZU9mKGV2dC5uZXdWYWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0pCiAKQEAgLTI5Miw1ICszMDMsNyBAQAogICAgICAgICByZXN1bHRQcm9tcHQgPSAgU1RPUkUuZ2V0KFBSRUZfUkVTVUxUX1BST01QVCwgUFJFRl9SRVNVTFRfUFJPTVBUX0RFRkFVTFQpCiAKICAgICAgICAgY29sb3JzID0gIEJvb2xlYW4udmFsdWVPZihTVE9SRS5nZXQoUFJFRl9DT0xPUlMsIFBSRUZfQ09MT1JTX0RFRkFVTFQudG9TdHJpbmcoKSkpCisKKyAgICAgICAgd2FybmluZ3MgPSAgQm9vbGVhbi52YWx1ZU9mKFNUT1JFLmdldChQUkVGX1dBUk5JTkdTLCBQUkVGX1dBUk5JTkdTX0RFRkFVTFQudG9TdHJpbmcoKSkpCiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb25zb2xlL3NyYy9tYWluL2dyb292eS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2NvbnNvbGUvY29tbWFuZHMvQ2xzQ29tbWFuZC5ncm9vdnkgYi9ncmVtbGluLWNvbnNvbGUvc3JjL21haW4vZ3Jvb3Z5L29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vY29uc29sZS9jb21tYW5kcy9DbHNDb21tYW5kLmdyb292eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjFlMGM0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb25zb2xlL3NyYy9tYWluL2dyb292eS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2NvbnNvbGUvY29tbWFuZHMvQ2xzQ29tbWFuZC5ncm9vdnkKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uY29uc29sZS5jb21tYW5kcworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5jb25zb2xlLk1lZGlhdG9yCitpbXBvcnQgb3JnLmNvZGVoYXVzLmdyb292eS50b29scy5zaGVsbC5Db21tYW5kU3VwcG9ydAoraW1wb3J0IG9yZy5jb2RlaGF1cy5ncm9vdnkudG9vbHMuc2hlbGwuR3Jvb3Z5c2gKKworLyoqCisgKiBDbGVhciB0aGUgY29uc29sZS4KKyAqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK2NsYXNzIENsc0NvbW1hbmQgZXh0ZW5kcyBDb21tYW5kU3VwcG9ydCB7CisKKyAgICBwcml2YXRlIGZpbmFsIE1lZGlhdG9yIG1lZGlhdG9yCisKKyAgICBwdWJsaWMgQ2xzQ29tbWFuZChmaW5hbCBHcm9vdnlzaCBzaGVsbCwgZmluYWwgTWVkaWF0b3IgbWVkaWF0b3IpIHsKKyAgICAgICAgc3VwZXIoc2hlbGwsICI6Y2xzIiwgIjpDIikKKyAgICAgICAgdGhpcy5tZWRpYXRvciA9IG1lZGlhdG9yCisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgZGVmIE9iamVjdCBleGVjdXRlKGZpbmFsIExpc3Q8U3RyaW5nPiBhcmd1bWVudHMpIHsKKyAgICAgICAgbWVkaWF0b3IuY29uc29sZS5jbGVhcigpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvbnNvbGUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2NvbnNvbGUvanNyMjIzL0RyaXZlckdyZW1saW5QbHVnaW4uamF2YSBiL2dyZW1saW4tY29uc29sZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vY29uc29sZS9qc3IyMjMvRHJpdmVyR3JlbWxpblBsdWdpbi5qYXZhCmluZGV4IGQ2ZTY3YTYuLjgwYTc4YWIgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29uc29sZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vY29uc29sZS9qc3IyMjMvRHJpdmVyR3JlbWxpblBsdWdpbi5qYXZhCisrKyBiL2dyZW1saW4tY29uc29sZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vY29uc29sZS9qc3IyMjMvRHJpdmVyR3JlbWxpblBsdWdpbi5qYXZhCkBAIC0zNiw2ICszNiw3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIucmVtb3RlLkRyaXZlclJlbW90ZUNvbm5lY3Rpb247CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIucmVtb3RlLkRyaXZlclJlbW90ZVRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5yZW1vdGUuRHJpdmVyUmVtb3RlVHJhdmVyc2FsU2lkZUVmZmVjdHM7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplckdyZW1saW5WMWQwOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyR3JlbWxpblYyZDA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMWQwOwpAQCAtODUsNiArODYsNyBAQAogICAgICAgICAgICAgICAgICAgICBHcnlvTGl0ZU1lc3NhZ2VTZXJpYWxpemVyVjFkMC5jbGFzcywKICAgICAgICAgICAgICAgICAgICAgR3J5b01lc3NhZ2VTZXJpYWxpemVyVjFkMC5jbGFzcywKICAgICAgICAgICAgICAgICAgICAgR3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMC5jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxLmNsYXNzLAogICAgICAgICAgICAgICAgICAgICBKc29uQnVpbGRlckdyeW9TZXJpYWxpemVyLmNsYXNzLAogICAgICAgICAgICAgICAgICAgICBNZXNzYWdlVGV4dFNlcmlhbGl6ZXIuY2xhc3MsCiAgICAgICAgICAgICAgICAgICAgIFNlcmlhbGl6YXRpb25FeGNlcHRpb24uY2xhc3MsCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvbnNvbGUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2NvbnNvbGUvanNyMjIzL0RyaXZlclJlbW90ZUFjY2VwdG9yLmphdmEgYi9ncmVtbGluLWNvbnNvbGUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2NvbnNvbGUvanNyMjIzL0RyaXZlclJlbW90ZUFjY2VwdG9yLmphdmEKaW5kZXggOWE0YmY1Ni4uZTg0OGM2OCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb25zb2xlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9jb25zb2xlL2pzcjIyMy9Ecml2ZXJSZW1vdGVBY2NlcHRvci5qYXZhCisrKyBiL2dyZW1saW4tY29uc29sZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vY29uc29sZS9qc3IyMjMvRHJpdmVyUmVtb3RlQWNjZXB0b3IuamF2YQpAQCAtMjEsMjcgKzIxLDI4IEBACiBpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmxhbmczLmV4Y2VwdGlvbi5FeGNlcHRpb25VdGlsczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5DbGllbnQ7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuQ2x1c3RlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5SZXF1ZXN0T3B0aW9uczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5SZXN1bHQ7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuUmVzdWx0U2V0OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLlRva2VuczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5leGNlcHRpb24uUmVzcG9uc2VFeGNlcHRpb247CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIubWVzc2FnZS5SZXNwb25zZVN0YXR1c0NvZGU7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5qc3IyMjMuY29uc29sZS5HcmVtbGluU2hlbGxFbnZpcm9ubWVudDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmpzcjIyMy5jb25zb2xlLlJlbW90ZUFjY2VwdG9yOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uanNyMjIzLmNvbnNvbGUuUmVtb3RlRXhjZXB0aW9uOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuRWxlbWVudEhlbHBlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnV0aWwuR3JlbWxpbjsKIAogaW1wb3J0IGphdmF4LnNlY3VyaXR5LnNhc2wuU2FzbEV4Y2VwdGlvbjsKIGltcG9ydCBqYXZhLmlvLkZpbGU7CiBpbXBvcnQgamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb247CiBpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKIGltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOwotaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKIGltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsKIGltcG9ydCBqYXZhLnV0aWwuTWFwOwogaW1wb3J0IGphdmEudXRpbC5PcHRpb25hbDsKIGltcG9ydCBqYXZhLnV0aWwuVVVJRDsKLWltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdDsKIGltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lb3V0RXhjZXB0aW9uOwogaW1wb3J0IGphdmEudXRpbC5zdHJlYW0uU3RyZWFtOwogCkBAIC01NCw2ICs1NSw3IEBACiAgKi8KIHB1YmxpYyBjbGFzcyBEcml2ZXJSZW1vdGVBY2NlcHRvciBpbXBsZW1lbnRzIFJlbW90ZUFjY2VwdG9yIHsKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBOT19USU1FT1VUID0gMDsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBVU0VSX0FHRU5UID0gIkdyZW1saW4gQ29uc29sZS8iICsgR3JlbWxpbi52ZXJzaW9uKCk7CiAKICAgICBwcml2YXRlIENsdXN0ZXIgY3VycmVudENsdXN0ZXI7CiAgICAgcHJpdmF0ZSBDbGllbnQgY3VycmVudENsaWVudDsKQEAgLTE3Miw3ICsxNzQsOSBAQAogICAgICAgICAgICAgZmluYWwgT3B0aW9uYWw8UmVzcG9uc2VFeGNlcHRpb24+IGlubmVyID0gZmluZFJlc3BvbnNlRXhjZXB0aW9uKGV4KTsKICAgICAgICAgICAgIGlmIChpbm5lci5pc1ByZXNlbnQoKSkgewogICAgICAgICAgICAgICAgIGZpbmFsIFJlc3BvbnNlRXhjZXB0aW9uIHJlc3BvbnNlRXhjZXB0aW9uID0gaW5uZXIuZ2V0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlRXhjZXB0aW9uLmdldFJlc3BvbnNlU3RhdHVzQ29kZSgpID09IFJlc3BvbnNlU3RhdHVzQ29kZS5TRVJWRVJfRVJST1JfU0VSSUFMSVpBVElPTikKKyAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2VFeGNlcHRpb24uZ2V0UmVzcG9uc2VTdGF0dXNDb2RlKCkgPT0gUmVzcG9uc2VTdGF0dXNDb2RlLlNFUlZFUl9FUlJPUl9USU1FT1VUKSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBSZW1vdGVFeGNlcHRpb24oU3RyaW5nLmZvcm1hdCgiJXMgLSB0cnkgaW5jcmVhc2luZyB0aGUgdGltZW91dCB3aXRoIHRoZSA6cmVtb3RlIGNvbW1hbmQiLCByZXNwb25zZUV4Y2VwdGlvbi5nZXRNZXNzYWdlKCkpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3BvbnNlRXhjZXB0aW9uLmdldFJlc3BvbnNlU3RhdHVzQ29kZSgpID09IFJlc3BvbnNlU3RhdHVzQ29kZS5TRVJWRVJfRVJST1JfU0VSSUFMSVpBVElPTikKICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJlbW90ZUV4Y2VwdGlvbihTdHJpbmcuZm9ybWF0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTZXJ2ZXIgY291bGQgbm90IHNlcmlhbGl6ZSB0aGUgcmVzdWx0IHJlcXVlc3RlZC4gU2VydmVyIGVycm9yIC0gJXMuIE5vdGUgdGhhdCB0aGUgY2xhc3MgbXVzdCBiZSBzZXJpYWxpemFibGUgYnkgdGhlIGNsaWVudCBhbmQgc2VydmVyIGZvciBwcm9wZXIgb3BlcmF0aW9uLiIsIHJlc3BvbnNlRXhjZXB0aW9uLmdldE1lc3NhZ2UoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VFeGNlcHRpb24uZ2V0UmVtb3RlU3RhY2tUcmFjZSgpLm9yRWxzZShudWxsKSk7CkBAIC0yMDIsMTAgKzIwNiwyOSBAQAogCiAgICAgcHJpdmF0ZSBMaXN0PFJlc3VsdD4gc2VuZChmaW5hbCBTdHJpbmcgZ3JlbWxpbikgdGhyb3dzIFNhc2xFeGNlcHRpb24gewogICAgICAgICB0cnkgewotICAgICAgICAgICAgZmluYWwgUmVzdWx0U2V0IHJzID0gdGhpcy5jdXJyZW50Q2xpZW50LnN1Ym1pdEFzeW5jKGdyZW1saW4sIGFsaWFzZXMsIENvbGxlY3Rpb25zLmVtcHR5TWFwKCkpLmdldCgpOwotICAgICAgICAgICAgcmV0dXJuIHRpbWVvdXQgPiBOT19USU1FT1VUID8gcnMuYWxsKCkuZ2V0KHRpbWVvdXQsIFRpbWVVbml0Lk1JTExJU0VDT05EUykgOiBycy5hbGwoKS5nZXQoKTsKLSAgICAgICAgfSBjYXRjaChUaW1lb3V0RXhjZXB0aW9uIGlnbm9yZWQpIHsKLSAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIlJlcXVlc3QgdGltZWQgb3V0IHdoaWxlIHByb2Nlc3NpbmcgLSBpbmNyZWFzZSB0aGUgdGltZW91dCB3aXRoIHRoZSA6cmVtb3RlIGNvbW1hbmQiKTsKKyAgICAgICAgICAgIGZpbmFsIFJlcXVlc3RPcHRpb25zLkJ1aWxkZXIgb3B0aW9ucyA9IFJlcXVlc3RPcHRpb25zLmJ1aWxkKCk7CisgICAgICAgICAgICBhbGlhc2VzLmZvckVhY2gob3B0aW9uczo6YWRkQWxpYXMpOworICAgICAgICAgICAgaWYgKHRpbWVvdXQgPiBOT19USU1FT1VUKQorICAgICAgICAgICAgICAgIG9wdGlvbnMudGltZW91dCh0aW1lb3V0KTsKKworICAgICAgICAgICAgb3B0aW9ucy51c2VyQWdlbnQoVVNFUl9BR0VOVCk7CisKKyAgICAgICAgICAgIGZpbmFsIFJlc3VsdFNldCBycyA9IHRoaXMuY3VycmVudENsaWVudC5zdWJtaXQoZ3JlbWxpbiwgb3B0aW9ucy5jcmVhdGUoKSk7CisgICAgICAgICAgICBmaW5hbCBMaXN0PFJlc3VsdD4gcmVzdWx0cyA9IHJzLmFsbCgpLmdldCgpOworICAgICAgICAgICAgZmluYWwgTWFwPFN0cmluZywgT2JqZWN0PiBzdGF0dXNBdHRyaWJ1dGVzID0gcnMuc3RhdHVzQXR0cmlidXRlcygpLmdldE5vdyhudWxsKTsKKworICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGFuZCBwcmludCB3YXJuaW5ncworICAgICAgICAgICAgaWYgKG51bGwgIT0gc3RhdHVzQXR0cmlidXRlcyAmJiBzdGF0dXNBdHRyaWJ1dGVzLmNvbnRhaW5zS2V5KFRva2Vucy5TVEFUVVNfQVRUUklCVVRFX1dBUk5JTkdTKSkgeworICAgICAgICAgICAgICAgIGZpbmFsIE9iamVjdCB3YXJuaW5nQXR0cmlidXRlT2JqZWN0ID0gc3RhdHVzQXR0cmlidXRlcy5nZXQoVG9rZW5zLlNUQVRVU19BVFRSSUJVVEVfV0FSTklOR1MpOworICAgICAgICAgICAgICAgIGlmICh3YXJuaW5nQXR0cmlidXRlT2JqZWN0IGluc3RhbmNlb2YgTGlzdCkgeworICAgICAgICAgICAgICAgICAgICBmb3IgKE9iamVjdCB3YXJuaW5nTGlzdEl0ZW0gOiAoTGlzdDw/Pil3YXJuaW5nQXR0cmlidXRlT2JqZWN0KQorICAgICAgICAgICAgICAgICAgICAgICAgc2hlbGxFbnZpcm9ubWVudC5lcnJQcmludGxuKFN0cmluZy52YWx1ZU9mKHdhcm5pbmdMaXN0SXRlbSkpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHNoZWxsRW52aXJvbm1lbnQuZXJyUHJpbnRsbihTdHJpbmcudmFsdWVPZih3YXJuaW5nQXR0cmlidXRlT2JqZWN0KSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0czsKICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKICAgICAgICAgICAgIC8vIGhhbmRsZSBzZWN1cml0eSBlcnJvciBhcy1pcyBhbmQgdW53cmFwcGVkCiAgICAgICAgICAgICBmaW5hbCBPcHRpb25hbDxUaHJvd2FibGU+IHRocm93YWJsZSAgPSBTdHJlYW0ub2YoRXhjZXB0aW9uVXRpbHMuZ2V0VGhyb3dhYmxlcyhlKSkuZmlsdGVyKHQgLT4gdCBpbnN0YW5jZW9mIFNhc2xFeGNlcHRpb24pLmZpbmRGaXJzdCgpOwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb25zb2xlL3NyYy9tYWluL3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2NvbnNvbGUvY29tbWFuZHMvQ2xzQ29tbWFuZC5wcm9wZXJ0aWVzIGIvZ3JlbWxpbi1jb25zb2xlL3NyYy9tYWluL3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2NvbnNvbGUvY29tbWFuZHMvQ2xzQ29tbWFuZC5wcm9wZXJ0aWVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkMTdjYjYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvbnNvbGUvc3JjL21haW4vcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vY29uc29sZS9jb21tYW5kcy9DbHNDb21tYW5kLnByb3BlcnRpZXMKQEAgLTAsMCArMSwyMCBAQAorIyBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisjIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorIyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorIyByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisjIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorIyB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisjCisjICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyMKKyMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorIyBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorIyAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyMgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisjIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyMgdW5kZXIgdGhlIExpY2Vuc2UuCisKK2NvbW1hbmQuZGVzY3JpcHRpb249Q2xlYXIgdGhlIHNjcmVlbi4KK2NvbW1hbmQudXNhZ2U9Citjb21tYW5kLmhlbHA9Q2xlYXIgdGhlIHNjcmVlbi4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvbnNvbGUvc3JjL21haW4vc3RhdGljL0xJQ0VOU0UgYi9ncmVtbGluLWNvbnNvbGUvc3JjL21haW4vc3RhdGljL0xJQ0VOU0UKaW5kZXggNzhhZTU3MC4uZjNkYTRmNyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb25zb2xlL3NyYy9tYWluL3N0YXRpYy9MSUNFTlNFCisrKyBiL2dyZW1saW4tY29uc29sZS9zcmMvbWFpbi9zdGF0aWMvTElDRU5TRQpAQCAtMjA5LDcgKzIwOSw3IEBACiAKICAgICAgamNhYmktbG9nIChjb20uamNhYmk6amNhYmktbG9nOjAuMTQgLSBodHRwOi8vd3d3LmpjYWJpLmNvbS9qY2FiaS1sb2cpIC0gZm9yIGRldGFpbHMsIHNlZSBsaWNlbnNlcy9qY2FiaS1sb2cKICAgICAgamNhYmktbWFuaWZlc3RzIDEuMSAoY29tLmpjYWJpOmpjYWJpLW1hbmlmZXN0czoxLjEgLSBodHRwOi8vd3d3LmpjYWJpLmNvbS9qY2FiaS1tYW5pZmVzdHMpIC0gZm9yIGRldGFpbHMsIHNlZSBsaWNlbnNlcy9qY2FiaS1tYW5pZmVzdHMKLSAgICAgSkxpbmUgKGpsaW5lOmpsaW5lOjIuMTIgLSBodHRwczovL2dpdGh1Yi5jb20vamxpbmUvamxpbmUyKSAtIGZvciBkZXRhaWxzLCBzZWUgbGljZW5zZXMvamxpbmUyCisgICAgIEpMaW5lIChqbGluZTpqbGluZToyLjE0LjYgLSBodHRwczovL2dpdGh1Yi5jb20vamxpbmUvamxpbmUyKSAtIGZvciBkZXRhaWxzLCBzZWUgbGljZW5zZXMvamxpbmUyCiAgICAgIEtyeW8gKGNvbS5lc290ZXJpY3NvZnR3YXJlOmtyeW8tc2hhZGVkOjMuMC4zIC0gaHR0cHM6Ly9naXRodWIuY29tL0Vzb3RlcmljU29mdHdhcmUva3J5bykKICAgICAgICAtIHNoYWRlZCBpbiBncmVtbGluLXNoYWRlZCB0byBvcmcuYXBhY2hlLnRpbmtlcnBvcC5zaGFkZWQua3J5bwogICAgICAgIC0gZm9yIGRldGFpbHMsIHNlZSBsaWNlbnNlcy9rcnlvCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvbnNvbGUvc3JjL21haW4vc3RhdGljL05PVElDRSBiL2dyZW1saW4tY29uc29sZS9zcmMvbWFpbi9zdGF0aWMvTk9USUNFCmluZGV4IDQwNjk4NWYuLmEzZWNjNDcgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29uc29sZS9zcmMvbWFpbi9zdGF0aWMvTk9USUNFCisrKyBiL2dyZW1saW4tY29uc29sZS9zcmMvbWFpbi9zdGF0aWMvTk9USUNFCkBAIC0xOCw3ICsxOCw3IEBACiBDb3B5cmlnaHQgKGMpIDIwMDggQWxleGFuZGVyIEJlaWRlciAmIFN0ZXBoZW4gUC4gTW9yc2UuCiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotQXBhY2hlIEdyb292eSAyLjQuMTYgKEFMIEFTRikKK0FwYWNoZSBHcm9vdnkgMi41LjcgKEFMIEFTRikKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogVGhpcyBwcm9kdWN0IGluY2x1ZGVzL3VzZXMgQU5UTFIgKGh0dHA6Ly93d3cuYW50bHIyLm9yZy8pCiBkZXZlbG9wZWQgYnkgVGVyZW5jZSBQYXJyIDE5ODktMjAwNgpAQCAtNDgsNyArNDgsMTkgQEAKIENvcHlyaWdodCAoYykgMjAxMCwgVGhlIEpBVkFUVVBMRVMgdGVhbSAoaHR0cDovL3d3dy5qYXZhdHVwbGVzLm9yZykKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1OZXR0eSA0LjAuNTYKK0hQUEMgMC43LjEKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorSFBQQyBib3Jyb3dlZCBjb2RlLCBpZGVhcyBvciBib3RoIGZyb206CisKKyAqIEFwYWNoZSBMdWNlbmUsIGh0dHA6Ly9sdWNlbmUuYXBhY2hlLm9yZy8KKyAgIChBcGFjaGUgbGljZW5zZSkKKyAqIEZhc3R1dGlsLCBodHRwOi8vZmFzdHV0aWwuZGkudW5pbWkuaXQvCisgICAoQXBhY2hlIGxpY2Vuc2UpCisgKiBLb2xvYm9rZSwgaHR0cHM6Ly9naXRodWIuY29tL09wZW5IRlQvS29sb2Jva2UKKyAgIChBcGFjaGUgbGljZW5zZSkKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitOZXR0eSA0LjEuNDIKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogQ29weXJpZ2h0IDIwMTQgVGhlIE5ldHR5IFByb2plY3QKIApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb25zb2xlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9jb25zb2xlL2pzcjIyMy9HZXBoaVJlbW90ZUFjY2VwdG9ySW50ZWdyYXRlVGVzdC5qYXZhIGIvZ3JlbWxpbi1jb25zb2xlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9jb25zb2xlL2pzcjIyMy9HZXBoaVJlbW90ZUFjY2VwdG9ySW50ZWdyYXRlVGVzdC5qYXZhCmluZGV4IDlhMWM1NDEuLmIxZjhlZmYgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29uc29sZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vY29uc29sZS9qc3IyMjMvR2VwaGlSZW1vdGVBY2NlcHRvckludGVncmF0ZVRlc3QuamF2YQorKysgYi9ncmVtbGluLWNvbnNvbGUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2NvbnNvbGUvanNyMjIzL0dlcGhpUmVtb3RlQWNjZXB0b3JJbnRlZ3JhdGVUZXN0LmphdmEKQEAgLTU1LDcgKzU1LDcgQEAKICAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKICAqLwogcHVibGljIGNsYXNzIEdlcGhpUmVtb3RlQWNjZXB0b3JJbnRlZ3JhdGVUZXN0IHsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBHcm9vdnlzaCBncm9vdnlzaCA9IG5ldyBHcmVtbGluR3Jvb3Z5c2gobmV3IE1lZGlhdG9yKG51bGwpKTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBHcm9vdnlzaCBncm9vdnlzaCA9IG5ldyBHcmVtbGluR3Jvb3Z5c2gobmV3IE1lZGlhdG9yKG51bGwpLCBuZXcgSU8oKSk7CiAgICAgcHJpdmF0ZSBzdGF0aWMgaW50IHBvcnQgPSBwaWNrT3BlblBvcnQoKTsKIAogICAgIHByaXZhdGUgR2VwaGlSZW1vdGVBY2NlcHRvciBhY2NlcHRvcjsKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29uc29sZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vY29uc29sZS9qc3IyMjMvTW9ja0dyb292eUdyZW1saW5TaGVsbEVudmlyb25tZW50LmphdmEgYi9ncmVtbGluLWNvbnNvbGUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2NvbnNvbGUvanNyMjIzL01vY2tHcm9vdnlHcmVtbGluU2hlbGxFbnZpcm9ubWVudC5qYXZhCmluZGV4IDYxODRiNTQuLmUyNGI3N2MgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29uc29sZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vY29uc29sZS9qc3IyMjMvTW9ja0dyb292eUdyZW1saW5TaGVsbEVudmlyb25tZW50LmphdmEKKysrIGIvZ3JlbWxpbi1jb25zb2xlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9jb25zb2xlL2pzcjIyMy9Nb2NrR3Jvb3Z5R3JlbWxpblNoZWxsRW52aXJvbm1lbnQuamF2YQpAQCAtNTgsNiArNTgsMTQgQEAKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBlcnJQcmludGxuKGZpbmFsIFN0cmluZyBsaW5lKSB7CisgICAgICAgIGlmIChudWxsID09IGlvKQorICAgICAgICAgICAgZ3Jvb3Z5c2guZ2V0SW8oKS5lcnIucHJpbnRsbigiW3dhcm5dIiArIGxpbmUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpby5lcnIucHJpbnRsbigiW3dhcm5dIiArIGxpbmUpOworICAgIH0KKworICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyA8VD4gVCBleGVjdXRlKGZpbmFsIFN0cmluZyBsaW5lKSB7CiAgICAgICAgIHJldHVybiAoVCkgZ3Jvb3Z5c2guZXhlY3V0ZShsaW5lKTsKICAgICB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvbnNvbGUvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vY29uc29sZS9qc3IyMjMvZ3JlbWxpbi1zZXJ2ZXItaW50ZWdyYXRpb24ueWFtbCBiL2dyZW1saW4tY29uc29sZS9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9jb25zb2xlL2pzcjIyMy9ncmVtbGluLXNlcnZlci1pbnRlZ3JhdGlvbi55YW1sCmluZGV4IDdlNTgwNDUuLjM5MDM3NTkgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29uc29sZS9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9jb25zb2xlL2pzcjIyMy9ncmVtbGluLXNlcnZlci1pbnRlZ3JhdGlvbi55YW1sCisrKyBiL2dyZW1saW4tY29uc29sZS9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9jb25zb2xlL2pzcjIyMy9ncmVtbGluLXNlcnZlci1pbnRlZ3JhdGlvbi55YW1sCkBAIC0yNSwxMCArMjUsMTAgQEAKICAgICAgICAgICAgICAgIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguanNyMjIzLlRpbmtlckdyYXBoR3JlbWxpblBsdWdpbjoge30sCiAgICAgICAgICAgICAgICBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmpzcjIyMy5JbXBvcnRHcmVtbGluUGx1Z2luOiB7Y2xhc3NJbXBvcnRzOiBbamF2YS5sYW5nLk1hdGhdLCBtZXRob2RJbXBvcnRzOiBbamF2YS5sYW5nLk1hdGgjKl19fX19CiBzZXJpYWxpemVyczoKLSAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAsIGNvbmZpZzogeyBzZXJpYWxpemVSZXN1bHRUb1N0cmluZzogdHJ1ZSB9fSAgICAgICAgICMgYXBwbGljYXRpb24vdm5kLmdyZW1saW4tdjMuMCtncnlvLXN0cmluZ2QKLSAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJHcmVtbGluVjFkMCwgY29uZmlnOiB7IGlvUmVnaXN0cmllczogW29yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguc3RydWN0dXJlLlRpbmtlcklvUmVnaXN0cnlWMWQwXSB9fSAjIGFwcGxpY2F0aW9uL3ZuZC5ncmVtbGluLXYxLjAranNvbgotICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplckdyZW1saW5WMmQwLCBjb25maWc6IHsgaW9SZWdpc3RyaWVzOiBbb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi50aW5rZXJncmFwaC5zdHJ1Y3R1cmUuVGlua2VySW9SZWdpc3RyeVYyZDBdICB9fSAjIGFwcGxpY2F0aW9uL3ZuZC5ncmVtbGluLXYyLjAranNvbgorICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxLCBjb25maWc6IHsgc2VyaWFsaXplUmVzdWx0VG9TdHJpbmc6IHRydWUgfX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYXBwbGljYXRpb24vdm5kLmdyZW1saW4tdjMuMCtncnlvLXN0cmluZ2QKKyAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJHcmVtbGluVjFkMCwgY29uZmlnOiB7IGlvUmVnaXN0cmllczogW29yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguc3RydWN0dXJlLlRpbmtlcklvUmVnaXN0cnlWMWQwXSB9fSAgIyBhcHBsaWNhdGlvbi92bmQuZ3JlbWxpbi12MS4wK2pzb24KICAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWM2QwLCBjb25maWc6IHsgaW9SZWdpc3RyaWVzOiBbb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi50aW5rZXJncmFwaC5zdHJ1Y3R1cmUuVGlua2VySW9SZWdpc3RyeVYzZDBdIH19ICAgICAgICAgIyBhcHBsaWNhdGlvbi9qc29uLGFwcGxpY2F0aW9uL3ZuZC5ncmVtbGluLXYzLjAranNvbgorICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYyZDAsIGNvbmZpZzogeyBpb1JlZ2lzdHJpZXM6IFtvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnN0cnVjdHVyZS5UaW5rZXJJb1JlZ2lzdHJ5VjJkMF0gfX0gICAgICAgICAjIGFwcGxpY2F0aW9uL3ZuZC5ncmVtbGluLXYyLjAranNvbgogcHJvY2Vzc29yczoKICAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIub3Auc2Vzc2lvbi5TZXNzaW9uT3BQcm9jZXNzb3IsIGNvbmZpZzogeyBzZXNzaW9uVGltZW91dDogMjg4MDAwMDAgfX0KICAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIub3AudHJhdmVyc2FsLlRyYXZlcnNhbE9wUHJvY2Vzc29yLCBjb25maWc6IHsgY2FjaGVFeHBpcmF0aW9uVGltZTogNjAwMDAwLCBjYWNoZU1heFNpemU6IDEwMDAgfX0KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29uc29sZS9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9jb25zb2xlL2pzcjIyMy9yZW1vdGUueWFtbCBiL2dyZW1saW4tY29uc29sZS9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9jb25zb2xlL2pzcjIyMy9yZW1vdGUueWFtbAppbmRleCA5YmIyN2M3Li42OGU0ODJmIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvbnNvbGUvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vY29uc29sZS9qc3IyMjMvcmVtb3RlLnlhbWwKKysrIGIvZ3JlbWxpbi1jb25zb2xlL3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2NvbnNvbGUvanNyMjIzL3JlbW90ZS55YW1sCkBAIC0xNyw0ICsxNyw0IEBACiAKIGhvc3RzOiBbbG9jYWxob3N0XQogcG9ydDogNDU5NDAKLXNlcmlhbGl6ZXI6IHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMCwgY29uZmlnOiB7IHNlcmlhbGl6ZVJlc3VsdFRvU3RyaW5nOiB0cnVlIH19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorc2VyaWFsaXplcjogeyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjEsIGNvbmZpZzogeyBzZXJpYWxpemVSZXN1bHRUb1N0cmluZzogdHJ1ZSB9fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9wb20ueG1sIGIvZ3JlbWxpbi1jb3JlL3BvbS54bWwKaW5kZXggZjliNzg5Zi4uZjBmMzA1NSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3BvbS54bWwKKysrIGIvZ3JlbWxpbi1jb3JlL3BvbS54bWwKQEAgLTIwLDcgKzIwLDcgQEAKICAgICA8cGFyZW50PgogICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLnRpbmtlcnBvcDwvZ3JvdXBJZD4KICAgICAgICAgPGFydGlmYWN0SWQ+dGlua2VycG9wPC9hcnRpZmFjdElkPgotICAgICAgICA8dmVyc2lvbj4zLjMuMTEtU05BUFNIT1Q8L3ZlcnNpb24+CisgICAgICAgIDx2ZXJzaW9uPjMuNC43LVNOQVBTSE9UPC92ZXJzaW9uPgogICAgIDwvcGFyZW50PgogICAgIDxhcnRpZmFjdElkPmdyZW1saW4tY29yZTwvYXJ0aWZhY3RJZD4KICAgICA8bmFtZT5BcGFjaGUgVGlua2VyUG9wIDo6IEdyZW1saW4gQ29yZTwvbmFtZT4KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vanNyMjIzL0Fic3RyYWN0R3JlbWxpblNjcmlwdEVuZ2luZUZhY3RvcnkuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vanNyMjIzL0Fic3RyYWN0R3JlbWxpblNjcmlwdEVuZ2luZUZhY3RvcnkuamF2YQppbmRleCA2OWY0ZjczLi5lNDhmOWUxIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2pzcjIyMy9BYnN0cmFjdEdyZW1saW5TY3JpcHRFbmdpbmVGYWN0b3J5LmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9qc3IyMjMvQWJzdHJhY3RHcmVtbGluU2NyaXB0RW5naW5lRmFjdG9yeS5qYXZhCkBAIC01Miw3ICs1Miw3IEBACiAgICAgfQogCiAgICAgQE92ZXJyaWRlCi0gICAgcHVibGljIFN0cmluZyBnZXRFbmdpbmVOYW1lKCkgeworICAgIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0RW5naW5lTmFtZSgpIHsKICAgICAgICAgcmV0dXJuIGVuZ2luZU5hbWU7CiAgICAgfQogCkBAIC02Nyw3ICs2Nyw3IEBACiAgICAgfQogCiAgICAgQE92ZXJyaWRlCi0gICAgcHVibGljIFN0cmluZyBnZXRMYW5ndWFnZU5hbWUoKSB7CisgICAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRMYW5ndWFnZU5hbWUoKSB7CiAgICAgICAgIHJldHVybiBsYW5ndWFnZU5hbWU7CiAgICAgfQogCkBAIC04OSwxMyArODksMTMgQEAKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgT2JqZWN0IGdldFBhcmFtZXRlcihmaW5hbCBTdHJpbmcga2V5KSB7CiAgICAgICAgIGlmIChrZXkuZXF1YWxzKFNjcmlwdEVuZ2luZS5FTkdJTkUpKSB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRFbmdpbmVOYW1lKCk7CisgICAgICAgICAgICByZXR1cm4gZW5naW5lTmFtZTsKICAgICAgICAgfSBlbHNlIGlmIChrZXkuZXF1YWxzKFNjcmlwdEVuZ2luZS5FTkdJTkVfVkVSU0lPTikpIHsKICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEVuZ2luZVZlcnNpb24oKTsKICAgICAgICAgfSBlbHNlIGlmIChrZXkuZXF1YWxzKFNjcmlwdEVuZ2luZS5OQU1FKSkgewogICAgICAgICAgICAgcmV0dXJuIGVuZ2luZU5hbWU7CiAgICAgICAgIH0gZWxzZSBpZiAoa2V5LmVxdWFscyhTY3JpcHRFbmdpbmUuTEFOR1VBR0UpKSB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRMYW5ndWFnZU5hbWUoKTsKKyAgICAgICAgICAgIHJldHVybiBsYW5ndWFnZU5hbWU7CiAgICAgICAgIH0gZWxzZSBpZiAoa2V5LmVxdWFscyhTY3JpcHRFbmdpbmUuTEFOR1VBR0VfVkVSU0lPTikpIHsKICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldExhbmd1YWdlVmVyc2lvbigpOwogICAgICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vanNyMjIzL0NvcmVHcmVtbGluUGx1Z2luLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2pzcjIyMy9Db3JlR3JlbWxpblBsdWdpbi5qYXZhCmluZGV4IDM2MmU4ZjcuLmE3YzQ3YmQgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vanNyMjIzL0NvcmVHcmVtbGluUGx1Z2luLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9qc3IyMjMvQ29yZUdyZW1saW5QbHVnaW4uamF2YQpAQCAtMzMsNiArMzMsNyBAQAogCiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgSW1wb3J0Q3VzdG9taXplciBncmVtbGluQ29yZSA9IERlZmF1bHRJbXBvcnRDdXN0b21pemVyLmJ1aWxkKCkKICAgICAgICAgICAgIC5hZGRDbGFzc0ltcG9ydHMoQ29yZUltcG9ydHMuZ2V0Q2xhc3NJbXBvcnRzKCkpCisgICAgICAgICAgICAuYWRkRmllbGRJbXBvcnRzKENvcmVJbXBvcnRzLmdldEZpZWxkSW1wb3J0cygpKQogICAgICAgICAgICAgLmFkZEVudW1JbXBvcnRzKENvcmVJbXBvcnRzLmdldEVudW1JbXBvcnRzKCkpCiAgICAgICAgICAgICAuYWRkTWV0aG9kSW1wb3J0cyhDb3JlSW1wb3J0cy5nZXRNZXRob2RJbXBvcnRzKCkpLmNyZWF0ZSgpOwogCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2pzcjIyMy9Db3JlSW1wb3J0cy5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9qc3IyMjMvQ29yZUltcG9ydHMuamF2YQppbmRleCBlMjk4OTUxLi5jYzc4ODFjIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2pzcjIyMy9Db3JlSW1wb3J0cy5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vanNyMjIzL0NvcmVJbXBvcnRzLmphdmEKQEAgLTQyLDI0ICs0MiwzMSBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5idWxrbG9hZGluZy5JbmNyZW1lbnRhbEJ1bGtMb2FkZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLmJ1bGtsb2FkaW5nLk9uZVRpbWVCdWxrTG9hZGVyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5jbG9uZS5DbG9uZVZlcnRleFByb2dyYW07CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLmNsdXN0ZXJpbmcuY29ubmVjdGVkLkNvbm5lY3RlZENvbXBvbmVudFZlcnRleFByb2dyYW07CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLmNsdXN0ZXJpbmcucGVlcnByZXNzdXJlLkNsdXN0ZXJDb3VudE1hcFJlZHVjZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuY2x1c3RlcmluZy5wZWVycHJlc3N1cmUuQ2x1c3RlclBvcHVsYXRpb25NYXBSZWR1Y2U7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLmNsdXN0ZXJpbmcucGVlcnByZXNzdXJlLlBlZXJQcmVzc3VyZVZlcnRleFByb2dyYW07CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnJhbmtpbmcucGFnZXJhbmsuUGFnZVJhbmtNYXBSZWR1Y2U7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnJhbmtpbmcucGFnZXJhbmsuUGFnZVJhbmtWZXJ0ZXhQcm9ncmFtOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5zZWFyY2gucGF0aC5TaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwuTWVtb3J5VHJhdmVyc2FsU2lkZUVmZmVjdHM7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnRyYXZlcnNhbC5UcmF2ZXJzYWxWZXJ0ZXhQcm9ncmFtOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwuc3RlcC5tYXAuQ29ubmVjdGVkQ29tcG9uZW50OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwuc3RlcC5tYXAuUGFnZVJhbms7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnRyYXZlcnNhbC5zdGVwLm1hcC5QZWVyUHJlc3N1cmU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnRyYXZlcnNhbC5zdGVwLm1hcC5TaG9ydGVzdFBhdGg7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLlZlcnRleFByb2dyYW1TdHJhdGVneTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIudHJhdmVyc2FsLnN0cmF0ZWd5Lm9wdGltaXphdGlvbi5HcmFwaEZpbHRlclN0cmF0ZWd5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5yZW1vdGUuUmVtb3RlQ29ubmVjdGlvbjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MucmVtb3RlLlJlbW90ZUdyYXBoOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuQmluZGluZ3M7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5JTzsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLk9wZXJhdG9yOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuT3JkZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUG9wOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuU2Fja0Z1bmN0aW9uczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlNjb3BlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVGV4dFA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmFuc2xhdG9yOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuQW5vbnltb3VzVHJhdmVyc2FsU291cmNlOwpAQCAtNjcsMTEgKzc0LDEzIEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguR3JhcGhUcmF2ZXJzYWxTb3VyY2U7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX187CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLlRyYXZlcnNhbE9wdGlvblBhcmVudDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5XaXRoT3B0aW9uczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uQ29ubmVjdGl2ZVN0cmF0ZWd5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuZGVjb3JhdGlvbi5FbGVtZW50SWRTdHJhdGVneTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uRXZlbnRTdHJhdGVneTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uSGFsdGVkVHJhdmVyc2VyU3RyYXRlZ3k7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLlBhcnRpdGlvblN0cmF0ZWd5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuZmluYWxpemF0aW9uLlJlZmVyZW5jZUVsZW1lbnRTdHJhdGVneTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uU3ViZ3JhcGhTdHJhdGVneTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmZpbmFsaXphdGlvbi5NYXRjaEFsZ29yaXRobVN0cmF0ZWd5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuZmluYWxpemF0aW9uLlByb2ZpbGVTdHJhdGVneTsKQEAgLTEzMyw2ICsxNDIsNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udXRpbC5pdGVyYXRvci5JdGVyYXRvclV0aWxzOwogaW1wb3J0IG9yZy5qYXZhdHVwbGVzLlBhaXI7CiAKK2ltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5GaWVsZDsKIGltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5NZXRob2Q7CiBpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuTW9kaWZpZXI7CiBpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOwpAQCAtMTQ3LDYgKzE1Nyw3IEBACiBwdWJsaWMgZmluYWwgY2xhc3MgQ29yZUltcG9ydHMgewogCiAgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgU2V0PENsYXNzPiBDTEFTU19JTVBPUlRTID0gbmV3IExpbmtlZEhhc2hTZXQ8PigpOworICAgIHByaXZhdGUgZmluYWwgc3RhdGljIFNldDxGaWVsZD4gRklFTERfSU1QT1JUUyA9IG5ldyBMaW5rZWRIYXNoU2V0PD4oKTsKICAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBTZXQ8TWV0aG9kPiBNRVRIT0RfSU1QT1JUUyA9IG5ldyBMaW5rZWRIYXNoU2V0PD4oKTsKICAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBTZXQ8RW51bT4gRU5VTV9JTVBPUlRTID0gbmV3IExpbmtlZEhhc2hTZXQ8PigpOwogCkBAIC0xNzgsMTQgKzE4OSwxNiBAQAogICAgICAgICBDTEFTU19JTVBPUlRTLmFkZChUcmF2ZXJzYWxPcHRpb25QYXJlbnQuY2xhc3MpOwogICAgICAgICBDTEFTU19JTVBPUlRTLmFkZChUcmF2ZXJzYWxPcHRpb25QYXJlbnQuUGljay5jbGFzcyk7CiAgICAgICAgIENMQVNTX0lNUE9SVFMuYWRkKFAuY2xhc3MpOworICAgICAgICBDTEFTU19JTVBPUlRTLmFkZChUZXh0UC5jbGFzcyk7CisgICAgICAgIENMQVNTX0lNUE9SVFMuYWRkKFdpdGhPcHRpb25zLmNsYXNzKTsKICAgICAgICAgLy8gcmVtb3RlCiAgICAgICAgIENMQVNTX0lNUE9SVFMuYWRkKFJlbW90ZUNvbm5lY3Rpb24uY2xhc3MpOwotICAgICAgICBDTEFTU19JTVBPUlRTLmFkZChSZW1vdGVHcmFwaC5jbGFzcyk7CiAgICAgICAgIENMQVNTX0lNUE9SVFMuYWRkKEVtcHR5R3JhcGguY2xhc3MpOwogICAgICAgICAvLyBpbwogICAgICAgICBDTEFTU19JTVBPUlRTLmFkZChHcmFwaFJlYWRlci5jbGFzcyk7CiAgICAgICAgIENMQVNTX0lNUE9SVFMuYWRkKEdyYXBoV3JpdGVyLmNsYXNzKTsKICAgICAgICAgQ0xBU1NfSU1QT1JUUy5hZGQoSW8uY2xhc3MpOworICAgICAgICBDTEFTU19JTVBPUlRTLmFkZChJTy5jbGFzcyk7CiAgICAgICAgIENMQVNTX0lNUE9SVFMuYWRkKElvQ29yZS5jbGFzcyk7CiAgICAgICAgIENMQVNTX0lNUE9SVFMuYWRkKFN0b3JhZ2UuY2xhc3MpOwogICAgICAgICBDTEFTU19JTVBPUlRTLmFkZChHcmFwaE1MSW8uY2xhc3MpOwpAQCAtMjQxLDYgKzI1NCw3IEBACiAgICAgICAgIENMQVNTX0lNUE9SVFMuYWRkKENvbXB1dGVyVmVyaWZpY2F0aW9uU3RyYXRlZ3kuY2xhc3MpOwogICAgICAgICBDTEFTU19JTVBPUlRTLmFkZChMYW1iZGFSZXN0cmljdGlvblN0cmF0ZWd5LmNsYXNzKTsKICAgICAgICAgQ0xBU1NfSU1QT1JUUy5hZGQoUmVhZE9ubHlTdHJhdGVneS5jbGFzcyk7CisgICAgICAgIENMQVNTX0lNUE9SVFMuYWRkKFJlZmVyZW5jZUVsZW1lbnRTdHJhdGVneS5jbGFzcyk7CiAgICAgICAgIENMQVNTX0lNUE9SVFMuYWRkKFN0YW5kYXJkVmVyaWZpY2F0aW9uU3RyYXRlZ3kuY2xhc3MpOwogICAgICAgICBDTEFTU19JTVBPUlRTLmFkZChFZGdlTGFiZWxWZXJpZmljYXRpb25TdHJhdGVneS5jbGFzcyk7CiAgICAgICAgIC8vIGdyYXBoIHRyYXZlcnNhbApAQCAtMjU1LDYgKzI2OSw4IEBACiAgICAgICAgIC8vIGdyYXBoIGNvbXB1dGVyCiAgICAgICAgIENMQVNTX0lNUE9SVFMuYWRkKENvbXB1dGVyLmNsYXNzKTsKICAgICAgICAgQ0xBU1NfSU1QT1JUUy5hZGQoQ29tcHV0ZXJSZXN1bHQuY2xhc3MpOworICAgICAgICBDTEFTU19JTVBPUlRTLmFkZChDb25uZWN0ZWRDb21wb25lbnQuY2xhc3MpOworICAgICAgICBDTEFTU19JTVBPUlRTLmFkZChDb25uZWN0ZWRDb21wb25lbnRWZXJ0ZXhQcm9ncmFtLmNsYXNzKTsKICAgICAgICAgQ0xBU1NfSU1QT1JUUy5hZGQoR3JhcGhDb21wdXRlci5jbGFzcyk7CiAgICAgICAgIENMQVNTX0lNUE9SVFMuYWRkKE1lbW9yeS5jbGFzcyk7CiAgICAgICAgIENMQVNTX0lNUE9SVFMuYWRkKFZlcnRleFByb2dyYW0uY2xhc3MpOwpAQCAtMjY3LDkgKzI4MywxMyBAQAogICAgICAgICBDTEFTU19JTVBPUlRTLmFkZChDbHVzdGVyQ291bnRNYXBSZWR1Y2UuY2xhc3MpOwogICAgICAgICBDTEFTU19JTVBPUlRTLmFkZChDbHVzdGVyUG9wdWxhdGlvbk1hcFJlZHVjZS5jbGFzcyk7CiAgICAgICAgIENMQVNTX0lNUE9SVFMuYWRkKE1lbW9yeVRyYXZlcnNhbFNpZGVFZmZlY3RzLmNsYXNzKTsKKyAgICAgICAgQ0xBU1NfSU1QT1JUUy5hZGQoUGVlclByZXNzdXJlLmNsYXNzKTsKICAgICAgICAgQ0xBU1NfSU1QT1JUUy5hZGQoUGVlclByZXNzdXJlVmVydGV4UHJvZ3JhbS5jbGFzcyk7CisgICAgICAgIENMQVNTX0lNUE9SVFMuYWRkKFBhZ2VSYW5rLmNsYXNzKTsKICAgICAgICAgQ0xBU1NfSU1QT1JUUy5hZGQoUGFnZVJhbmtNYXBSZWR1Y2UuY2xhc3MpOwogICAgICAgICBDTEFTU19JTVBPUlRTLmFkZChQYWdlUmFua1ZlcnRleFByb2dyYW0uY2xhc3MpOworICAgICAgICBDTEFTU19JTVBPUlRTLmFkZChTaG9ydGVzdFBhdGguY2xhc3MpOworICAgICAgICBDTEFTU19JTVBPUlRTLmFkZChTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtLmNsYXNzKTsKICAgICAgICAgQ0xBU1NfSU1QT1JUUy5hZGQoR3JhcGhGaWx0ZXJTdHJhdGVneS5jbGFzcyk7CiAgICAgICAgIENMQVNTX0lNUE9SVFMuYWRkKFRyYXZlcnNhbFZlcnRleFByb2dyYW0uY2xhc3MpOwogICAgICAgICBDTEFTU19JTVBPUlRTLmFkZChWZXJ0ZXhQcm9ncmFtU3RyYXRlZ3kuY2xhc3MpOwpAQCAtMjg2LDYgKzMwNiw3IEBACiAgICAgICAgIHVuaXF1ZU1ldGhvZHMoSW9Db3JlLmNsYXNzKS5mb3JFYWNoKE1FVEhPRF9JTVBPUlRTOjphZGQpOwogICAgICAgICB1bmlxdWVNZXRob2RzKFAuY2xhc3MpLmZvckVhY2goTUVUSE9EX0lNUE9SVFM6OmFkZCk7CiAgICAgICAgIHVuaXF1ZU1ldGhvZHMoQW5vbnltb3VzVHJhdmVyc2FsU291cmNlLmNsYXNzKS5mb3JFYWNoKE1FVEhPRF9JTVBPUlRTOjphZGQpOworICAgICAgICB1bmlxdWVNZXRob2RzKFRleHRQLmNsYXNzKS5mb3JFYWNoKE1FVEhPRF9JTVBPUlRTOjphZGQpOwogICAgICAgICB1bmlxdWVNZXRob2RzKF9fLmNsYXNzKS5maWx0ZXIobSAtPiAhbS5nZXROYW1lKCkuZXF1YWxzKCJfXyIpKS5mb3JFYWNoKE1FVEhPRF9JTVBPUlRTOjphZGQpOwogICAgICAgICB1bmlxdWVNZXRob2RzKENvbXB1dGVyLmNsYXNzKS5mb3JFYWNoKE1FVEhPRF9JTVBPUlRTOjphZGQpOwogICAgICAgICB1bmlxdWVNZXRob2RzKFRpbWVVdGlsLmNsYXNzKS5mb3JFYWNoKE1FVEhPRF9JTVBPUlRTOjphZGQpOwpAQCAtMzIzLDYgKzM0NCwxMCBAQAogICAgICAgICByZXR1cm4gQ29sbGVjdGlvbnMudW5tb2RpZmlhYmxlU2V0KEVOVU1fSU1QT1JUUyk7CiAgICAgfQogCisgICAgcHVibGljIHN0YXRpYyBTZXQ8RmllbGQ+IGdldEZpZWxkSW1wb3J0cygpIHsKKyAgICAgICAgcmV0dXJuIENvbGxlY3Rpb25zLnVubW9kaWZpYWJsZVNldChGSUVMRF9JTVBPUlRTKTsKKyAgICB9CisKICAgICAvKioKICAgICAgKiBGaWx0ZXJzIHRvIHVuaXF1ZSBtZXRob2QgbmFtZXMgb24gZWFjaCBjbGFzcy4KICAgICAgKi8KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vanNyMjIzL0RlZmF1bHRJbXBvcnRDdXN0b21pemVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2pzcjIyMy9EZWZhdWx0SW1wb3J0Q3VzdG9taXplci5qYXZhCmluZGV4IGY2ZGE5YmYuLjQ1MmZiMmMgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vanNyMjIzL0RlZmF1bHRJbXBvcnRDdXN0b21pemVyLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9qc3IyMjMvRGVmYXVsdEltcG9ydEN1c3RvbWl6ZXIuamF2YQpAQCAtMTgsNiArMTgsNyBAQAogICovCiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uanNyMjIzOwogCitpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuRmllbGQ7CiBpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuTWV0aG9kOwogaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CiBpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247CkBAIC0zNSwyNSArMzYsMzUgQEAKICAgICBwcml2YXRlIGZpbmFsIFNldDxDbGFzcz4gY2xhc3NJbXBvcnRzOwogICAgIHByaXZhdGUgZmluYWwgU2V0PE1ldGhvZD4gbWV0aG9kSW1wb3J0czsKICAgICBwcml2YXRlIGZpbmFsIFNldDxFbnVtPiBlbnVtSW1wb3J0czsKKyAgICBwcml2YXRlIGZpbmFsIFNldDxGaWVsZD4gZmllbGRJbXBvcnRzOwogCiAgICAgcHJpdmF0ZSBEZWZhdWx0SW1wb3J0Q3VzdG9taXplcihmaW5hbCBCdWlsZGVyIGJ1aWxkZXIpIHsKICAgICAgICAgY2xhc3NJbXBvcnRzID0gYnVpbGRlci5jbGFzc0ltcG9ydHM7CiAgICAgICAgIG1ldGhvZEltcG9ydHMgPSBidWlsZGVyLm1ldGhvZEltcG9ydHM7CiAgICAgICAgIGVudW1JbXBvcnRzID0gYnVpbGRlci5lbnVtSW1wb3J0czsKKyAgICAgICAgZmllbGRJbXBvcnRzID0gYnVpbGRlci5maWVsZEltcG9ydHM7CiAgICAgfQogCisgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIFNldDxDbGFzcz4gZ2V0Q2xhc3NJbXBvcnRzKCkgewogICAgICAgICByZXR1cm4gQ29sbGVjdGlvbnMudW5tb2RpZmlhYmxlU2V0KGNsYXNzSW1wb3J0cyk7CiAgICAgfQogCisgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIFNldDxNZXRob2Q+IGdldE1ldGhvZEltcG9ydHMoKSB7CiAgICAgICAgIHJldHVybiBDb2xsZWN0aW9ucy51bm1vZGlmaWFibGVTZXQobWV0aG9kSW1wb3J0cyk7CiAgICAgfQogCisgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIFNldDxFbnVtPiBnZXRFbnVtSW1wb3J0cygpIHsKICAgICAgICAgcmV0dXJuIENvbGxlY3Rpb25zLnVubW9kaWZpYWJsZVNldChlbnVtSW1wb3J0cyk7CiAgICAgfQogCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFNldDxGaWVsZD4gZ2V0RmllbGRJbXBvcnRzKCkgeworICAgICAgICByZXR1cm4gQ29sbGVjdGlvbnMudW5tb2RpZmlhYmxlU2V0KGZpZWxkSW1wb3J0cyk7CisgICAgfQorCiAgICAgcHVibGljIHN0YXRpYyBCdWlsZGVyIGJ1aWxkKCkgewogICAgICAgICByZXR1cm4gbmV3IEJ1aWxkZXIoKTsKICAgICB9CkBAIC02Miw2ICs3Myw3IEBACiAgICAgICAgIHByaXZhdGUgU2V0PENsYXNzPiBjbGFzc0ltcG9ydHMgPSBuZXcgTGlua2VkSGFzaFNldDw+KCk7CiAgICAgICAgIHByaXZhdGUgU2V0PE1ldGhvZD4gbWV0aG9kSW1wb3J0cyA9IG5ldyBMaW5rZWRIYXNoU2V0PD4oKTsKICAgICAgICAgcHJpdmF0ZSBTZXQ8RW51bT4gZW51bUltcG9ydHMgPSBuZXcgTGlua2VkSGFzaFNldDw+KCk7CisgICAgICAgIHByaXZhdGUgU2V0PEZpZWxkPiBmaWVsZEltcG9ydHMgPSBuZXcgTGlua2VkSGFzaFNldDw+KCk7CiAKICAgICAgICAgcHJpdmF0ZSBCdWlsZGVyKCkge30KIApAQCAtMTAwLDYgKzExMiwyNCBAQAogICAgICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgICAgIH0KIAorICAgICAgICAvKioKKyAgICAgICAgICogQWRkcyBmaWVsZHMgdGhhdCBhcmUgbWVhbnQgdG8gYmUgaW1wb3J0ZWQgc3RhdGljYWxseSB0byB0aGUgZW5naW5lLiBXaGVuIGFkZGluZyBmaWVsZHMgYmUgc3VyZSB0aGF0CisgICAgICAgICAqIHRoZSBjbGFzc2VzIG9mIHRob3NlIGZpZWxkcyBhcmUgYWRkZWQgdG8gdGhlIHtAbGluayAjYWRkQ2xhc3NJbXBvcnRzKENsYXNzW10pfSBvcgorICAgICAgICAgKiB7QGxpbmsgI2FkZENsYXNzSW1wb3J0cyhDb2xsZWN0aW9uKX0uIElmIHRoZXkgYXJlIG5vdCBhZGRlZCB0aGVuIHRoZSBjZXJ0YWluIHtAY29kZSBTY3JpcHRFbmdpbmV9IGluc3RhbmNlcworICAgICAgICAgKiBtYXkgaGF2ZSBwcm9ibGVtcyBpbXBvcnRpbmcgdGhlIG1ldGhvZHMgKGUuZy4gZ3JlbWxpbi1weXRob24pLgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIEJ1aWxkZXIgYWRkRmllbGRJbXBvcnRzKGZpbmFsIEZpZWxkLi4uIGZpZWxkKSB7CisgICAgICAgICAgICBmaWVsZEltcG9ydHMuYWRkQWxsKEFycmF5cy5hc0xpc3QoZmllbGQpKTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIE92ZXJsb2FkIHRvIHtAbGluayAjYWRkRmllbGRJbXBvcnRzKEZpZWxkLi4uKX0uCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgQnVpbGRlciBhZGRGaWVsZEltcG9ydHMoZmluYWwgQ29sbGVjdGlvbjxGaWVsZD4gZmllbGRzKSB7CisgICAgICAgICAgICBmaWVsZEltcG9ydHMuYWRkQWxsKGZpZWxkcyk7CisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgfQogCiAgICAgICAgIC8qKgogICAgICAgICAgKiBBZGRzIG1ldGhvZHMgdGhhdCBhcmUgbWVhbnQgdG8gYmUgaW1wb3J0ZWQgc3RhdGljYWxseSB0byB0aGUgZW5naW5lLiBXaGVuIGFkZGluZyBtZXRob2RzIGJlIHN1cmUgdGhhdApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9qc3IyMjMvR3JlbWxpblBsdWdpbi5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9qc3IyMjMvR3JlbWxpblBsdWdpbi5qYXZhCmluZGV4IDk5ZTZiZDkuLjhmMGNlOWQgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vanNyMjIzL0dyZW1saW5QbHVnaW4uamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2pzcjIyMy9HcmVtbGluUGx1Z2luLmphdmEKQEAgLTMwLDggKzMwLDggQEAKICAgICAvKioKICAgICAgKiBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlLiAgVGhpcyBuYW1lIHNob3VsZCBiZSB1bmlxdWUgKHVzZSBhIG5hbWVzcGFjZWQgYXBwcm9hY2gpIGFzIG5hbWluZyBjbGFzaGVzIHdpbGwKICAgICAgKiBwcmV2ZW50IHByb3BlciBtb2R1bGUgb3BlcmF0aW9ucy4gTW9kdWxlcyBkZXZlbG9wZWQgYnkgVGlua2VyUG9wIHdpbGwgYmUgcHJlZml4ZWQgd2l0aCAidGlua2VycG9wLiIKLSAgICAgKiBGb3IgZXhhbXBsZSwgVGlua2VyUG9wJ3MgaW1wbGVtZW50YXRpb24gb2YgR2lyYXBoIHdvdWxkIGJlIG5hbWVkICJ0aW5rZXJwb3AuZ2lyYXBoIi4gIElmIEZhY2Vib29rIHdlcmUKLSAgICAgKiB0byBkbyB0aGVpciBvd24gaW1wbGVtZW50YXRpb24gdGhlIGltcGxlbWVudGF0aW9uIG1pZ2h0IGJlIGNhbGxlZCAiZmFjZWJvb2suZ2lyYXBoIi4KKyAgICAgKiBGb3IgZXhhbXBsZSwgVGlua2VyUG9wJ3MgaW1wbGVtZW50YXRpb24gb2YgU3Bhcmsgd291bGQgYmUgbmFtZWQgInRpbmtlcnBvcC5zcGFyayIuICBJZiBGYWNlYm9vayB3ZXJlCisgICAgICogdG8gZG8gdGhlaXIgb3duIGltcGxlbWVudGF0aW9uIHRoZSBpbXBsZW1lbnRhdGlvbiBtaWdodCBiZSBjYWxsZWQgImZhY2Vib29rLnNwYXJrIi4KICAgICAgKi8KICAgICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKTsKIApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9qc3IyMjMvR3JlbWxpblNjcmlwdEVuZ2luZS5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9qc3IyMjMvR3JlbWxpblNjcmlwdEVuZ2luZS5qYXZhCmluZGV4IGFkZGNhODIuLjJkZjUxMWMgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vanNyMjIzL0dyZW1saW5TY3JpcHRFbmdpbmUuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2pzcjIyMy9HcmVtbGluU2NyaXB0RW5naW5lLmphdmEKQEAgLTM4LDMxICszOCw2IEBACiAgICAgcHVibGljIEdyZW1saW5TY3JpcHRFbmdpbmVGYWN0b3J5IGdldEZhY3RvcnkoKTsKIAogICAgIC8qKgotICAgICAqIEV2YWx1YXRlcyB7QGxpbmsgVHJhdmVyc2FsfSB7QGxpbmsgQnl0ZWNvZGV9LiBUaGlzIG1ldGhvZCBhc3N1bWVzIHRoYXQgdGhlIHRyYXZlcnNhbCBzb3VyY2UgdG8gZXhlY3V0ZSB0aGUKLSAgICAgKiBieXRlY29kZSBhZ2FpbnN0IGlzIGluIHRoZSBnbG9iYWwgYmluZGluZ3MgYW5kIGlzIG5hbWVkICJnIi4KLSAgICAgKgotICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy4yLjcsIHJlcGxhY2VkIGJ5IHtAbGluayAjZXZhbChCeXRlY29kZSwgU3RyaW5nKX0uCi0gICAgICovCi0gICAgQERlcHJlY2F0ZWQKLSAgICBwdWJsaWMgZGVmYXVsdCBUcmF2ZXJzYWwuQWRtaW4gZXZhbChmaW5hbCBCeXRlY29kZSBieXRlY29kZSkgdGhyb3dzIFNjcmlwdEV4Y2VwdGlvbiB7Ci0gICAgICAgIGZpbmFsIEJpbmRpbmdzIGJpbmRpbmdzID0gdGhpcy5jcmVhdGVCaW5kaW5ncygpOwotICAgICAgICBiaW5kaW5ncy5wdXRBbGwoYnl0ZWNvZGUuZ2V0QmluZGluZ3MoKSk7Ci0gICAgICAgIHJldHVybiBldmFsKGJ5dGVjb2RlLCBiaW5kaW5ncyk7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogRXZhbHVhdGVzIHtAbGluayBUcmF2ZXJzYWx9IHtAbGluayBCeXRlY29kZX0gd2l0aCB0aGUgc3BlY2lmaWVkIHtAY29kZSBCaW5kaW5nc30uIFRoZXNlIHtAY29kZSBCaW5kaW5nc30KLSAgICAgKiBzdXBwbGllZCB0byB0aGlzIG1ldGhvZCB3aWxsIGJlIG1lcmdlZCB3aXRoIGdsb2JhbCBlbmdpbmUgYmluZGluZ3MgYW5kIG92ZXJyaWRlIHRoZW0gd2hlcmUga2V5cyBtYXRjaC4gVGhpcwotICAgICAqIG1ldGhvZCBhc3N1bWVzIHRoYXQgdGhlIHRyYXZlcnNhbCBzb3VyY2UgdG8gZXhlY3V0ZSBhZ2FpbnN0IGlzIG5hbWVkICJnIi4KLSAgICAgKgotICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy4yLjcsIHJlcGxhY2VkIGJ5IHtAbGluayAjZXZhbChCeXRlY29kZSwgQmluZGluZ3MsIFN0cmluZyl9LgotICAgICAqLwotICAgIEBEZXByZWNhdGVkCi0gICAgcHVibGljIGRlZmF1bHQgVHJhdmVyc2FsLkFkbWluIGV2YWwoZmluYWwgQnl0ZWNvZGUgYnl0ZWNvZGUsIGZpbmFsIEJpbmRpbmdzIGJpbmRpbmdzKSB0aHJvd3MgU2NyaXB0RXhjZXB0aW9uIHsKLSAgICAgICAgcmV0dXJuIGV2YWwoYnl0ZWNvZGUsIGJpbmRpbmdzLCAiZyIpOwotICAgIH0KLQotICAgIC8qKgogICAgICAqIEV2YWx1YXRlcyB7QGxpbmsgVHJhdmVyc2FsfSB7QGxpbmsgQnl0ZWNvZGV9IGFnYWluc3QgYSB0cmF2ZXJzYWwgc291cmNlIGluIHRoZSBnbG9iYWwgYmluZGluZ3Mgb2YgdGhlCiAgICAgICoge0Bjb2RlIFNjcmlwdEVuZ2luZX0uCiAgICAgICoKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vanNyMjIzL0ltcG9ydEN1c3RvbWl6ZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vanNyMjIzL0ltcG9ydEN1c3RvbWl6ZXIuamF2YQppbmRleCBiNDQwNzJiLi40M2Y2MzJlIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2pzcjIyMy9JbXBvcnRDdXN0b21pemVyLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9qc3IyMjMvSW1wb3J0Q3VzdG9taXplci5qYXZhCkBAIC0xOCw2ICsxOCw3IEBACiAgKi8KIHBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5qc3IyMjM7CiAKK2ltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5GaWVsZDsKIGltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5NZXRob2Q7CiBpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOwogaW1wb3J0IGphdmEudXRpbC5MaW5rZWRIYXNoU2V0OwpAQCAtMzAsMTQgKzMxLDYgQEAKICAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKICAqLwogcHVibGljIGludGVyZmFjZSBJbXBvcnRDdXN0b21pemVyIGV4dGVuZHMgQ3VzdG9taXplciB7Ci0gICAgLyoqCi0gICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjIuNCwgbm90IHJlcGxhY2VkLgotICAgICAqLwotICAgIEBEZXByZWNhdGVkCi0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBJbXBvcnRDdXN0b21pemVyIEdSRU1MSU5fQ09SRSA9IERlZmF1bHRJbXBvcnRDdXN0b21pemVyLmJ1aWxkKCkKLSAgICAgICAgICAgIC5hZGRDbGFzc0ltcG9ydHMoQ29yZUltcG9ydHMuZ2V0Q2xhc3NJbXBvcnRzKCkpCi0gICAgICAgICAgICAuYWRkRW51bUltcG9ydHMoQ29yZUltcG9ydHMuZ2V0RW51bUltcG9ydHMoKSkKLSAgICAgICAgICAgIC5hZGRNZXRob2RJbXBvcnRzKENvcmVJbXBvcnRzLmdldE1ldGhvZEltcG9ydHMoKSkuY3JlYXRlKCk7CiAKICAgICAvKioKICAgICAgKiBHZXRzIHRoZSBzZXQgb2YgY2xhc3NlcyB0byBiZSBpbXBvcnRlZCB0byB0aGUge0BsaW5rIEdyZW1saW5TY3JpcHRFbmdpbmV9LgpAQCAtNTUsNiArNDgsMTEgQEAKICAgICBwdWJsaWMgU2V0PEVudW0+IGdldEVudW1JbXBvcnRzKCk7CiAKICAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBzZXQgb2YgZmllbGRzIHRvIGJlIGltcG9ydGVkIHRvIHRoZSB7QGxpbmsgR3JlbWxpblNjcmlwdEVuZ2luZX0uCisgICAgICovCisgICAgcHVibGljIFNldDxGaWVsZD4gZ2V0RmllbGRJbXBvcnRzKCk7CisKKyAgICAvKioKICAgICAgKiBHZXRzIHRoZSBzZXQgb2YgcGFja2FnZXMgZnJvbSB0aGUge0BsaW5rICNnZXRDbGFzc0ltcG9ydHMoKX0uCiAgICAgICovCiAgICAgcHVibGljIGRlZmF1bHQgU2V0PFBhY2thZ2U+IGdldENsYXNzUGFja2FnZXMoKSB7CkBAIC03NCw0ICs3MiwxMSBAQAogICAgIHB1YmxpYyBkZWZhdWx0IFNldDxDbGFzcz4gZ2V0RW51bUNsYXNzZXMoKSB7CiAgICAgICAgIHJldHVybiBnZXRFbnVtSW1wb3J0cygpLnN0cmVhbSgpLm1hcChFbnVtOjpnZXREZWNsYXJpbmdDbGFzcykuY29sbGVjdChDb2xsZWN0b3JzLnRvQ29sbGVjdGlvbihMaW5rZWRIYXNoU2V0OjpuZXcpKTsKICAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBzZXQgb2YgZmllbGRzIGZyb20gdGhlIHtAbGluayAjZ2V0RmllbGRJbXBvcnRzKCl9LgorICAgICAqLworICAgIHB1YmxpYyBkZWZhdWx0IFNldDxDbGFzcz4gZ2V0RmllbGRDbGFzc2VzKCkgeworICAgICAgICByZXR1cm4gZ2V0RmllbGRJbXBvcnRzKCkuc3RyZWFtKCkubWFwKEZpZWxkOjpnZXREZWNsYXJpbmdDbGFzcykuY29sbGVjdChDb2xsZWN0b3JzLnRvQ29sbGVjdGlvbihMaW5rZWRIYXNoU2V0OjpuZXcpKTsKKyAgICB9CiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2pzcjIyMy9jb25zb2xlL0dyZW1saW5TaGVsbEVudmlyb25tZW50LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2pzcjIyMy9jb25zb2xlL0dyZW1saW5TaGVsbEVudmlyb25tZW50LmphdmEKaW5kZXggNmZjMTM2My4uODc2M2Q0MiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9qc3IyMjMvY29uc29sZS9HcmVtbGluU2hlbGxFbnZpcm9ubWVudC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vanNyMjIzL2NvbnNvbGUvR3JlbWxpblNoZWxsRW52aXJvbm1lbnQuamF2YQpAQCAtMzMsNSArMzMsOSBAQAogCiAgICAgcHVibGljIHZvaWQgcHJpbnRsbihmaW5hbCBTdHJpbmcgbGluZSk7CiAKKyAgICBwdWJsaWMgZGVmYXVsdCB2b2lkIGVyclByaW50bG4oZmluYWwgU3RyaW5nIGxpbmUpIHsKKyAgICAgICAgcHJpbnRsbihsaW5lKTsKKyAgICB9CisKICAgICBwdWJsaWMgPFQ+IFQgZXhlY3V0ZShmaW5hbCBTdHJpbmcgbGluZSk7CiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvR3JhcGhGaWx0ZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci9HcmFwaEZpbHRlci5qYXZhCmluZGV4IDY1ZDc0ZDIuLjJmMDFkY2YgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci9HcmFwaEZpbHRlci5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci9HcmFwaEZpbHRlci5qYXZhCkBAIC0zMTksOSArMzE5LDkgQEAKICAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoZmluYWwgT2JqZWN0IG9iamVjdCkgewogICAgICAgICBpZiAoIShvYmplY3QgaW5zdGFuY2VvZiBHcmFwaEZpbHRlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGVsc2UgaWYgKCgoR3JhcGhGaWx0ZXIpIG9iamVjdCkuaGFzVmVydGV4RmlsdGVyKCkgJiYgISgoR3JhcGhGaWx0ZXIpIG9iamVjdCkuZ2V0VmVydGV4RmlsdGVyKCkuZXF1YWxzKHRoaXMudmVydGV4RmlsdGVyKSkKKyAgICAgICAgZWxzZSBpZiAoKChHcmFwaEZpbHRlcikgb2JqZWN0KS5oYXNWZXJ0ZXhGaWx0ZXIoKSAmJiAhKChHcmFwaEZpbHRlcikgb2JqZWN0KS52ZXJ0ZXhGaWx0ZXIuZXF1YWxzKHRoaXMudmVydGV4RmlsdGVyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgZWxzZSBpZiAoKChHcmFwaEZpbHRlcikgb2JqZWN0KS5oYXNFZGdlRmlsdGVyKCkgJiYgISgoR3JhcGhGaWx0ZXIpIG9iamVjdCkuZ2V0RWRnZUZpbHRlcigpLmVxdWFscyh0aGlzLmVkZ2VGaWx0ZXIpKQorICAgICAgICBlbHNlIGlmICgoKEdyYXBoRmlsdGVyKSBvYmplY3QpLmhhc0VkZ2VGaWx0ZXIoKSAmJiAhKChHcmFwaEZpbHRlcikgb2JqZWN0KS5lZGdlRmlsdGVyLmVxdWFscyh0aGlzLmVkZ2VGaWx0ZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci9idWxrbG9hZGluZy9CdWxrTG9hZGVyVmVydGV4UHJvZ3JhbS5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL2J1bGtsb2FkaW5nL0J1bGtMb2FkZXJWZXJ0ZXhQcm9ncmFtLmphdmEKaW5kZXggMWU3NWNlNi4uMzU3MDQyMiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL2J1bGtsb2FkaW5nL0J1bGtMb2FkZXJWZXJ0ZXhQcm9ncmFtLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL2J1bGtsb2FkaW5nL0J1bGtMb2FkZXJWZXJ0ZXhQcm9ncmFtLmphdmEKQEAgLTQ2MiwxMiArNDYyLDYgQEAKICAgICAgICAgfQogCiAgICAgICAgIEBPdmVycmlkZQotICAgICAgICBwdWJsaWMgdm9pZCB2ZXJ0ZXhQcm9wZXJ0eUNoYW5nZWQoZmluYWwgVmVydGV4IGVsZW1lbnQsIGZpbmFsIFByb3BlcnR5IG9sZFZhbHVlLCBmaW5hbCBPYmplY3Qgc2V0VmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBPYmplY3QuLi4gdmVydGV4UHJvcGVydHlLZXlWYWx1ZXMpIHsKLSAgICAgICAgICAgIC8vIGRvIG5vdGhpbmcgLSBkZXByZWNhdGVkCi0gICAgICAgIH0KLQotICAgICAgICBAT3ZlcnJpZGUKICAgICAgICAgcHVibGljIHZvaWQgdmVydGV4UHJvcGVydHlSZW1vdmVkKGZpbmFsIFZlcnRleFByb3BlcnR5IHZlcnRleFByb3BlcnR5KSB7CiAgICAgICAgICAgICB0aGlzLmNvdW50ZXIrKzsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL2J1bGtsb2FkaW5nL0luY3JlbWVudGFsQnVsa0xvYWRlci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL2J1bGtsb2FkaW5nL0luY3JlbWVudGFsQnVsa0xvYWRlci5qYXZhCmluZGV4IDIyYzY5OTkuLjU3MTM3NzMgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci9idWxrbG9hZGluZy9JbmNyZW1lbnRhbEJ1bGtMb2FkZXIuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvYnVsa2xvYWRpbmcvSW5jcmVtZW50YWxCdWxrTG9hZGVyLmphdmEKQEAgLTQ5LDEyICs0OSwxMiBAQAogICAgIHB1YmxpYyBWZXJ0ZXggZ2V0T3JDcmVhdGVWZXJ0ZXgoZmluYWwgVmVydGV4IHZlcnRleCwgZmluYWwgR3JhcGggZ3JhcGgsIGZpbmFsIEdyYXBoVHJhdmVyc2FsU291cmNlIGcpIHsKICAgICAgICAgZmluYWwgSXRlcmF0b3I8VmVydGV4PiBpdGVyYXRvciA9IHVzZVVzZXJTdXBwbGllZElkcygpCiAgICAgICAgICAgICAgICAgPyBnLlYoKS5oYXNJZCh2ZXJ0ZXguaWQoKSkKLSAgICAgICAgICAgICAgICA6IGcuVigpLmhhcyh2ZXJ0ZXgubGFiZWwoKSwgZ2V0VmVydGV4SWRQcm9wZXJ0eSgpLCB2ZXJ0ZXguaWQoKS50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICA6IGcuVigpLmhhcyh2ZXJ0ZXgubGFiZWwoKSwgYnVsa0xvYWRlclZlcnRleElkLCB2ZXJ0ZXguaWQoKS50b1N0cmluZygpKTsKICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yLmhhc05leHQoKQogICAgICAgICAgICAgICAgID8gaXRlcmF0b3IubmV4dCgpCiAgICAgICAgICAgICAgICAgOiB1c2VVc2VyU3VwcGxpZWRJZHMoKQogICAgICAgICAgICAgICAgID8gZy5hZGRWKHZlcnRleC5sYWJlbCgpKS5wcm9wZXJ0eShULmlkLCB2ZXJ0ZXguaWQoKSkubmV4dCgpCi0gICAgICAgICAgICAgICAgOiBnLmFkZFYodmVydGV4LmxhYmVsKCkpLnByb3BlcnR5KGdldFZlcnRleElkUHJvcGVydHkoKSwgdmVydGV4LmlkKCkudG9TdHJpbmcoKSkubmV4dCgpOworICAgICAgICAgICAgICAgIDogZy5hZGRWKHZlcnRleC5sYWJlbCgpKS5wcm9wZXJ0eShidWxrTG9hZGVyVmVydGV4SWQsIHZlcnRleC5pZCgpLnRvU3RyaW5nKCkpLm5leHQoKTsKICAgICB9CiAKICAgICAvKioKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci9jbHVzdGVyaW5nL2Nvbm5lY3RlZC9Db25uZWN0ZWRDb21wb25lbnRWZXJ0ZXhQcm9ncmFtLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvY2x1c3RlcmluZy9jb25uZWN0ZWQvQ29ubmVjdGVkQ29tcG9uZW50VmVydGV4UHJvZ3JhbS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjYzhmM2MKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvY2x1c3RlcmluZy9jb25uZWN0ZWQvQ29ubmVjdGVkQ29tcG9uZW50VmVydGV4UHJvZ3JhbS5qYXZhCkBAIC0wLDAgKzEsMjUzIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLmNsdXN0ZXJpbmcuY29ubmVjdGVkOworCitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmNvbmZpZ3VyYXRpb24uQmFzZUNvbmZpZ3VyYXRpb247CitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmNvbmZpZ3VyYXRpb24uQ29uZmlndXJhdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29uZmlndXJhdGlvbi5Db25maWd1cmF0aW9uVXRpbHM7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLkdyYXBoQ29tcHV0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLk1lbW9yeTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuTWVtb3J5Q29tcHV0ZUtleTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuTWVzc2FnZVNjb3BlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5NZXNzZW5nZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLlZlcnRleENvbXB1dGVLZXk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLlZlcnRleFByb2dyYW07CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnRyYXZlcnNhbC5UcmF2ZXJzYWxWZXJ0ZXhQcm9ncmFtOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci51dGlsLkFic3RyYWN0VmVydGV4UHJvZ3JhbUJ1aWxkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5PcGVyYXRvcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5fXzsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci51dGlsLkluZGV4ZWRUcmF2ZXJzZXJTZXQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIudXRpbC5UcmF2ZXJzZXJTZXQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLlB1cmVUcmF2ZXJzYWw7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuRGlyZWN0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkVkZ2U7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleFByb3BlcnR5OworCitpbXBvcnQgamF2YS51dGlsLkFycmF5czsKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7CitpbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7CitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworaW1wb3J0IGphdmEudXRpbC5TZXQ7CisKKy8qKgorICogSWRlbnRpZmllcyAiQ29ubmVjdGVkIENvbXBvbmVudCIgaW5zdGFuY2VzIGluIGEgZ3JhcGggYnkgYXNzaWduaW5nIGEgY29tcG9uZW50IGlkZW50aWZpZXIgKHRoZSBsZXhpY29ncmFwaGljYWxseQorICogbGVhc3Qgc3RyaW5nIHZhbHVlIG9mIHRoZSB2ZXJ0ZXggaW4gdGhlIGNvbXBvbmVudCkgdG8gZWFjaCB2ZXJ0ZXguCisgKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICogQGF1dGhvciBEYW5pZWwgS3VwcGl0eiAoaHR0cDovL2dyZW1saW4uZ3VydSkKKyAqLworcHVibGljIGNsYXNzIENvbm5lY3RlZENvbXBvbmVudFZlcnRleFByb2dyYW0gaW1wbGVtZW50cyBWZXJ0ZXhQcm9ncmFtPFN0cmluZz4geworCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09NUE9ORU5UID0gImdyZW1saW4uY29ubmVjdGVkQ29tcG9uZW50VmVydGV4UHJvZ3JhbS5jb21wb25lbnQiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBQUk9QRVJUWSA9ICJncmVtbGluLmNvbm5lY3RlZENvbXBvbmVudFZlcnRleFByb2dyYW0ucHJvcGVydHkiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBFREdFX1RSQVZFUlNBTCA9ICJncmVtbGluLnBhZ2VSYW5rVmVydGV4UHJvZ3JhbS5lZGdlVHJhdmVyc2FsIjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVk9URV9UT19IQUxUID0gImdyZW1saW4uY29ubmVjdGVkQ29tcG9uZW50VmVydGV4UHJvZ3JhbS52b3RlVG9IYWx0IjsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFNldDxNZW1vcnlDb21wdXRlS2V5PiBNRU1PUllfQ09NUFVURV9LRVlTID0gQ29sbGVjdGlvbnMuc2luZ2xldG9uKE1lbW9yeUNvbXB1dGVLZXkub2YoVk9URV9UT19IQUxULCBPcGVyYXRvci5hbmQsIGZhbHNlLCB0cnVlKSk7CisKKyAgICBwcml2YXRlIE1lc3NhZ2VTY29wZS5Mb2NhbDw/PiBzY29wZSA9IE1lc3NhZ2VTY29wZS5Mb2NhbC5vZihfXzo6Ym90aEUpOworICAgIHByaXZhdGUgU2V0PE1lc3NhZ2VTY29wZT4gc2NvcGVzOworICAgIHByaXZhdGUgU3RyaW5nIHByb3BlcnR5ID0gQ09NUE9ORU5UOworICAgIHByaXZhdGUgUHVyZVRyYXZlcnNhbDxWZXJ0ZXgsIEVkZ2U+IGVkZ2VUcmF2ZXJzYWwgPSBudWxsOworICAgIHByaXZhdGUgQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOworICAgIHByaXZhdGUgVHJhdmVyc2VyU2V0PFZlcnRleD4gaGFsdGVkVHJhdmVyc2VyczsKKyAgICBwcml2YXRlIEluZGV4ZWRUcmF2ZXJzZXJTZXQ8VmVydGV4LCBWZXJ0ZXg+IGhhbHRlZFRyYXZlcnNlcnNJbmRleDsKKworICAgIHByaXZhdGUgQ29ubmVjdGVkQ29tcG9uZW50VmVydGV4UHJvZ3JhbSgpIHt9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBsb2FkU3RhdGUoZmluYWwgR3JhcGggZ3JhcGgsIGZpbmFsIENvbmZpZ3VyYXRpb24gY29uZmlnKSB7CisgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBuZXcgQmFzZUNvbmZpZ3VyYXRpb24oKTsKKyAgICAgICAgaWYgKGNvbmZpZyAhPSBudWxsKSB7CisgICAgICAgICAgICBDb25maWd1cmF0aW9uVXRpbHMuY29weShjb25maWcsIGNvbmZpZ3VyYXRpb24pOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24uY29udGFpbnNLZXkoRURHRV9UUkFWRVJTQUwpKSB7CisgICAgICAgICAgICB0aGlzLmVkZ2VUcmF2ZXJzYWwgPSBQdXJlVHJhdmVyc2FsLmxvYWRTdGF0ZShjb25maWd1cmF0aW9uLCBFREdFX1RSQVZFUlNBTCwgZ3JhcGgpOworICAgICAgICAgICAgdGhpcy5zY29wZSA9IE1lc3NhZ2VTY29wZS5Mb2NhbC5vZigoKSAtPiB0aGlzLmVkZ2VUcmF2ZXJzYWwuZ2V0KCkuY2xvbmUoKSk7CisgICAgICAgIH0KKworICAgICAgICBzY29wZXMgPSBuZXcgSGFzaFNldDw+KENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3Qoc2NvcGUpKTsKKworICAgICAgICB0aGlzLnByb3BlcnR5ID0gY29uZmlndXJhdGlvbi5nZXRTdHJpbmcoUFJPUEVSVFksIENPTVBPTkVOVCk7CisKKyAgICAgICAgdGhpcy5oYWx0ZWRUcmF2ZXJzZXJzID0gVHJhdmVyc2FsVmVydGV4UHJvZ3JhbS5sb2FkSGFsdGVkVHJhdmVyc2Vycyhjb25maWd1cmF0aW9uKTsKKyAgICAgICAgdGhpcy5oYWx0ZWRUcmF2ZXJzZXJzSW5kZXggPSBuZXcgSW5kZXhlZFRyYXZlcnNlclNldDw+KHYgLT4gdik7CisgICAgICAgIGZvciAoZmluYWwgVHJhdmVyc2VyLkFkbWluPFZlcnRleD4gdHJhdmVyc2VyIDogdGhpcy5oYWx0ZWRUcmF2ZXJzZXJzKSB7CisgICAgICAgICAgICB0aGlzLmhhbHRlZFRyYXZlcnNlcnNJbmRleC5hZGQodHJhdmVyc2VyLnNwbGl0KCkpOworICAgICAgICB9CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgc3RvcmVTdGF0ZShmaW5hbCBDb25maWd1cmF0aW9uIGNvbmZpZykgeworICAgICAgICBWZXJ0ZXhQcm9ncmFtLnN1cGVyLnN0b3JlU3RhdGUoY29uZmlnKTsKKyAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24gIT0gbnVsbCkgeworICAgICAgICAgICAgQ29uZmlndXJhdGlvblV0aWxzLmNvcHkoY29uZmlndXJhdGlvbiwgY29uZmlnKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIHNldHVwKGZpbmFsIE1lbW9yeSBtZW1vcnkpIHsKKyAgICAgICAgbWVtb3J5LnNldChWT1RFX1RPX0hBTFQsIHRydWUpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIGV4ZWN1dGUoZmluYWwgVmVydGV4IHZlcnRleCwgZmluYWwgTWVzc2VuZ2VyPFN0cmluZz4gbWVzc2VuZ2VyLCBmaW5hbCBNZW1vcnkgbWVtb3J5KSB7CisgICAgICAgIGlmIChtZW1vcnkuaXNJbml0aWFsSXRlcmF0aW9uKCkpIHsKKyAgICAgICAgICAgIGNvcHlIYWx0ZWRUcmF2ZXJzZXJzRnJvbU1lbW9yeSh2ZXJ0ZXgpOworCisgICAgICAgICAgICAvLyBvbiB0aGUgZmlyc3QgcGFzcywganVzdCBpbml0aWFsaXplIHRoZSBjb21wb25lbnQgdG8gaXRzIG93biBpZCB0aGVuIHBhc3MgaXQgdG8gYWxsIGFkamFjZW50IHZlcnRpY2VzCisgICAgICAgICAgICAvLyBmb3IgZXZhbHVhdGlvbgorICAgICAgICAgICAgdmVydGV4LnByb3BlcnR5KFZlcnRleFByb3BlcnR5LkNhcmRpbmFsaXR5LnNpbmdsZSwgcHJvcGVydHksIHZlcnRleC5pZCgpLnRvU3RyaW5nKCkpOworCisgICAgICAgICAgICAvLyB2ZXJ0aWNlcyB0aGF0IGhhdmUgbm8gZWRnZXMgcmVtYWluIGluIHRoZWlyIG93biBjb21wb25lbnQgLSBub3RoaW5nIHRvIG1lc3NhZ2UgcGFzcyBoZXJlCisgICAgICAgICAgICBpZiAodmVydGV4LmVkZ2VzKERpcmVjdGlvbi5CT1RIKS5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBzaW5jZSB0aGVyZSB3YXMgbWVzc2FnZSBwYXNzaW5nIHdlIGRvbid0IHdhbnQgdG8gaGFsdCBvbiB0aGUgZmlyc3Qgcm91bmQuIHRoaXMgc2hvdWxkIG9ubHkgdHJpZ2dlcgorICAgICAgICAgICAgICAgIC8vIGEgc2luZ2xlIHBhc3MgZmluaXNoIGlmIHRoZSBncmFwaCBpcyBjb21wbGV0ZWx5IGRpc2Nvbm5lY3RlZCAodGVjaG5pY2FsbHksIGl0IHdvbid0IGV2ZW4gcmVhbGx5CisgICAgICAgICAgICAgICAgLy8gd29yayBpbiBjYXNlcyB3aGVyZSBoYWx0ZWQgdHJhdmVyc2VycyBjb21lIGludG8gcGxheQorICAgICAgICAgICAgICAgIG1lc3Nlbmdlci5zZW5kTWVzc2FnZShzY29wZSwgdmVydGV4LmlkKCkudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgbWVtb3J5LmFkZChWT1RFX1RPX0hBTFQsIGZhbHNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIGJ5IHRoZSBzZWNvbmQgaXRlcmF0aW9uIGFsbCB2ZXJ0aWNlcyB0aGF0IG1hdHRlciBzaG91bGQgaGF2ZSBhIGNvbXBvbmVudCBhc3NpZ25lZAorICAgICAgICAgICAgU3RyaW5nIGN1cnJlbnRDb21wb25lbnQgPSB2ZXJ0ZXgudmFsdWUocHJvcGVydHkpOworICAgICAgICAgICAgYm9vbGVhbiBkaWZmZXJlbnQgPSBmYWxzZTsKKworICAgICAgICAgICAgLy8gaXRlcmF0ZSB0aHJvdWdoIG1lc3NhZ2VzIHJlY2VpdmVkIGFuZCBkZXRlcm1pbmUgaWYgdGhlcmUgaXMgYSBjb21wb25lbnQgdGhhdCBoYXMgYSBsZXNzZXIgdmFsdWUgdGhhbgorICAgICAgICAgICAgLy8gdGhlIGN1cnJlbnRseSBhc3NpZ25lZCBvbmUKKyAgICAgICAgICAgIGZpbmFsIEl0ZXJhdG9yPFN0cmluZz4gY29tcG9uZW50SXRlcmF0b3IgPSBtZXNzZW5nZXIucmVjZWl2ZU1lc3NhZ2VzKCk7CisgICAgICAgICAgICB3aGlsZShjb21wb25lbnRJdGVyYXRvci5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgY2FuZGlkYXRlQ29tcG9uZW50ID0gY29tcG9uZW50SXRlcmF0b3IubmV4dCgpOworICAgICAgICAgICAgICAgIGlmIChjYW5kaWRhdGVDb21wb25lbnQuY29tcGFyZVRvKGN1cnJlbnRDb21wb25lbnQpIDwgMCkgeworICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q29tcG9uZW50ID0gY2FuZGlkYXRlQ29tcG9uZW50OworICAgICAgICAgICAgICAgICAgICBkaWZmZXJlbnQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gaWYgdGhlcmUgaXMgYSBiZXR0ZXIgY29tcG9uZW50IHRoZW4gYXNzaWduIGl0IGFuZCBub3RpZnkgYWRqYWNlbnQgdmVydGljZXMuIHRyaWdnZXJpbmcgdGhlIG1lc3NhZ2UKKyAgICAgICAgICAgIC8vIHBhc3Npbmcgc2hvdWxkIG5vdCBoYWx0IGZ1dHVyZSBleGVjdXRpb25zCisgICAgICAgICAgICBpZiAoZGlmZmVyZW50KSB7CisgICAgICAgICAgICAgICAgdmVydGV4LnByb3BlcnR5KFZlcnRleFByb3BlcnR5LkNhcmRpbmFsaXR5LnNpbmdsZSwgcHJvcGVydHksIGN1cnJlbnRDb21wb25lbnQpOworICAgICAgICAgICAgICAgIG1lc3Nlbmdlci5zZW5kTWVzc2FnZShzY29wZSwgY3VycmVudENvbXBvbmVudCk7CisgICAgICAgICAgICAgICAgbWVtb3J5LmFkZChWT1RFX1RPX0hBTFQsIGZhbHNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBTZXQ8VmVydGV4Q29tcHV0ZUtleT4gZ2V0VmVydGV4Q29tcHV0ZUtleXMoKSB7CisgICAgICAgIHJldHVybiBuZXcgSGFzaFNldDw+KEFycmF5cy5hc0xpc3QoCisgICAgICAgICAgICAgICAgVmVydGV4Q29tcHV0ZUtleS5vZihwcm9wZXJ0eSwgZmFsc2UpLAorICAgICAgICAgICAgICAgIFZlcnRleENvbXB1dGVLZXkub2YoVHJhdmVyc2FsVmVydGV4UHJvZ3JhbS5IQUxURURfVFJBVkVSU0VSUywgZmFsc2UpKSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFNldDxNZW1vcnlDb21wdXRlS2V5PiBnZXRNZW1vcnlDb21wdXRlS2V5cygpIHsKKyAgICAgICAgcmV0dXJuIE1FTU9SWV9DT01QVVRFX0tFWVM7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGJvb2xlYW4gdGVybWluYXRlKGZpbmFsIE1lbW9yeSBtZW1vcnkpIHsKKyAgICAgICAgaWYgKG1lbW9yeS5pc0luaXRpYWxJdGVyYXRpb24oKSAmJiB0aGlzLmhhbHRlZFRyYXZlcnNlcnNJbmRleCAhPSBudWxsKSB7CisgICAgICAgICAgICB0aGlzLmhhbHRlZFRyYXZlcnNlcnNJbmRleC5jbGVhcigpOworICAgICAgICB9CisKKyAgICAgICAgZmluYWwgYm9vbGVhbiB2b3RlVG9IYWx0ID0gbWVtb3J5LjxCb29sZWFuPmdldChWT1RFX1RPX0hBTFQpOworICAgICAgICBpZiAodm90ZVRvSGFsdCkgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBpdCBpcyBiYXNpY2FsbHkgYWx3YXlzIGFzc3VtZWQgdGhhdCB0aGUgcHJvZ3JhbSB3aWxsIHdhbnQgdG8gaGFsdCwgYnV0IGlmIG1lc3NhZ2UgcGFzc2luZyBvY2N1cnMsIHRoZQorICAgICAgICAgICAgLy8gcHJvZ3JhbSB3aWxsIHdhbnQgdG8gY29udGludWUsIHRodXMgcmVzZXQgZmFsc2UgdmFsdWVzIHRvIHRydWUgZm9yIGZ1dHVyZSBpdGVyYXRpb25zCisgICAgICAgICAgICBtZW1vcnkuc2V0KFZPVEVfVE9fSEFMVCwgdHJ1ZSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgU2V0PE1lc3NhZ2VTY29wZT4gZ2V0TWVzc2FnZVNjb3BlcyhmaW5hbCBNZW1vcnkgbWVtb3J5KSB7CisgICAgICAgIHJldHVybiBzY29wZXM7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIEdyYXBoQ29tcHV0ZXIuUmVzdWx0R3JhcGggZ2V0UHJlZmVycmVkUmVzdWx0R3JhcGgoKSB7CisgICAgICAgIHJldHVybiBHcmFwaENvbXB1dGVyLlJlc3VsdEdyYXBoLk5FVzsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgR3JhcGhDb21wdXRlci5QZXJzaXN0IGdldFByZWZlcnJlZFBlcnNpc3QoKSB7CisgICAgICAgIHJldHVybiBHcmFwaENvbXB1dGVyLlBlcnNpc3QuVkVSVEVYX1BST1BFUlRJRVM7CisgICAgfQorCisKKyAgICBAT3ZlcnJpZGUKKyAgICBAU3VwcHJlc3NXYXJuaW5ncygiQ2xvbmVEb2VzbnRDYWxsU3VwZXJDbG9uZSxDbG9uZURvZXNudERlY2xhcmVDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIpCisgICAgcHVibGljIENvbm5lY3RlZENvbXBvbmVudFZlcnRleFByb2dyYW0gY2xvbmUoKSB7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBGZWF0dXJlcyBnZXRGZWF0dXJlcygpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBGZWF0dXJlcygpIHsKKyAgICAgICAgICAgIEBPdmVycmlkZQorICAgICAgICAgICAgcHVibGljIGJvb2xlYW4gcmVxdWlyZXNMb2NhbE1lc3NhZ2VTY29wZXMoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEBPdmVycmlkZQorICAgICAgICAgICAgcHVibGljIGJvb2xlYW4gcmVxdWlyZXNWZXJ0ZXhQcm9wZXJ0eUFkZGl0aW9uKCkgeworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBjb3B5SGFsdGVkVHJhdmVyc2Vyc0Zyb21NZW1vcnkoZmluYWwgVmVydGV4IHZlcnRleCkgeworICAgICAgICBmaW5hbCBDb2xsZWN0aW9uPFRyYXZlcnNlci5BZG1pbjxWZXJ0ZXg+PiB0cmF2ZXJzZXJzID0gdGhpcy5oYWx0ZWRUcmF2ZXJzZXJzSW5kZXguZ2V0KHZlcnRleCk7CisgICAgICAgIGlmICh0cmF2ZXJzZXJzICE9IG51bGwpIHsKKyAgICAgICAgICAgIGZpbmFsIFRyYXZlcnNlclNldDxWZXJ0ZXg+IG5ld0hhbHRlZFRyYXZlcnNlcnMgPSBuZXcgVHJhdmVyc2VyU2V0PD4oKTsKKyAgICAgICAgICAgIG5ld0hhbHRlZFRyYXZlcnNlcnMuYWRkQWxsKHRyYXZlcnNlcnMpOworICAgICAgICAgICAgdmVydGV4LnByb3BlcnR5KFZlcnRleFByb3BlcnR5LkNhcmRpbmFsaXR5LnNpbmdsZSwgVHJhdmVyc2FsVmVydGV4UHJvZ3JhbS5IQUxURURfVFJBVkVSU0VSUywgbmV3SGFsdGVkVHJhdmVyc2Vycyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIENvbm5lY3RlZENvbXBvbmVudFZlcnRleFByb2dyYW0uQnVpbGRlciBidWlsZCgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBDb25uZWN0ZWRDb21wb25lbnRWZXJ0ZXhQcm9ncmFtLkJ1aWxkZXIoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGNsYXNzIEJ1aWxkZXIgZXh0ZW5kcyBBYnN0cmFjdFZlcnRleFByb2dyYW1CdWlsZGVyPENvbm5lY3RlZENvbXBvbmVudFZlcnRleFByb2dyYW0uQnVpbGRlcj4geworCisgICAgICAgIHByaXZhdGUgQnVpbGRlcigpIHsKKyAgICAgICAgICAgIHN1cGVyKENvbm5lY3RlZENvbXBvbmVudFZlcnRleFByb2dyYW0uY2xhc3MpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIENvbm5lY3RlZENvbXBvbmVudFZlcnRleFByb2dyYW0uQnVpbGRlciBlZGdlcyhmaW5hbCBUcmF2ZXJzYWwuQWRtaW48VmVydGV4LCBFZGdlPiBlZGdlVHJhdmVyc2FsKSB7CisgICAgICAgICAgICBQdXJlVHJhdmVyc2FsLnN0b3JlU3RhdGUodGhpcy5jb25maWd1cmF0aW9uLCBFREdFX1RSQVZFUlNBTCwgZWRnZVRyYXZlcnNhbCk7CisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBDb25uZWN0ZWRDb21wb25lbnRWZXJ0ZXhQcm9ncmFtLkJ1aWxkZXIgcHJvcGVydHkoZmluYWwgU3RyaW5nIGtleSkgeworICAgICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uLnNldFByb3BlcnR5KFBST1BFUlRZLCBrZXkpOworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvc2VhcmNoL3BhdGgvU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL3NlYXJjaC9wYXRoL1Nob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTQ5YzUzNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci9zZWFyY2gvcGF0aC9TaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtLmphdmEKQEAgLTAsMCArMSw2MTEgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuc2VhcmNoLnBhdGg7CisKK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29uZmlndXJhdGlvbi5Db25maWd1cmF0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5HcmFwaENvbXB1dGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5NZW1vcnk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLk1lbW9yeUNvbXB1dGVLZXk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLk1lc3NhZ2VTY29wZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuTWVzc2VuZ2VyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5WZXJ0ZXhDb21wdXRlS2V5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5WZXJ0ZXhQcm9ncmFtOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwuVHJhdmVyc2FsVmVydGV4UHJvZ3JhbTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIudHJhdmVyc2FsLnN0ZXAubWFwLlByb2dyYW1WZXJ0ZXhQcm9ncmFtU3RlcDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIudHJhdmVyc2FsLnN0ZXAubWFwLlZlcnRleFByb2dyYW1TdGVwOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci51dGlsLkFic3RyYWN0VmVydGV4UHJvZ3JhbUJ1aWxkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5PcGVyYXRvcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlBhdGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5TdGVwOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2VyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLl9fOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLkltbXV0YWJsZVBhdGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIudXRpbC5JbmRleGVkVHJhdmVyc2VyU2V0OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyLnV0aWwuVHJhdmVyc2VyU2V0OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5QdXJlVHJhdmVyc2FsOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkRpcmVjdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5FZGdlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkVsZW1lbnQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleFByb3BlcnR5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuU3RyaW5nRmFjdG9yeTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLnJlZmVyZW5jZS5SZWZlcmVuY2VGYWN0b3J5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udXRpbC5OdW1iZXJIZWxwZXI7CitpbXBvcnQgb3JnLmphdmF0dXBsZXMuUGFpcjsKK2ltcG9ydCBvcmcuamF2YXR1cGxlcy5UcmlwbGV0OworCitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgamF2YS51dGlsLk1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuU2V0OworaW1wb3J0IGphdmEudXRpbC5mdW5jdGlvbi5GdW5jdGlvbjsKKworLyoqCisgKiBAYXV0aG9yIERhbmllbCBLdXBwaXR6IChodHRwOi8vZ3JlbWxpbi5ndXJ1KQorICovCitwdWJsaWMgY2xhc3MgU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbSBpbXBsZW1lbnRzIFZlcnRleFByb2dyYW08VHJpcGxldDxQYXRoLCBFZGdlLCBOdW1iZXI+PiB7CisKKyAgICBAU3VwcHJlc3NXYXJuaW5ncygiV2Vha2VyQWNjZXNzIikKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTSE9SVEVTVF9QQVRIUyA9ICJncmVtbGluLnNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uc2hvcnRlc3RQYXRocyI7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgU09VUkNFX1ZFUlRFWF9GSUxURVIgPSAiZ3JlbWxpbi5zaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtLnNvdXJjZVZlcnRleEZpbHRlciI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBUkdFVF9WRVJURVhfRklMVEVSID0gImdyZW1saW4uc2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS50YXJnZXRWZXJ0ZXhGaWx0ZXIiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBFREdFX1RSQVZFUlNBTCA9ICJncmVtbGluLnNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uZWRnZVRyYXZlcnNhbCI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIERJU1RBTkNFX1RSQVZFUlNBTCA9ICJncmVtbGluLnNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uZGlzdGFuY2VUcmF2ZXJzYWwiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBNQVhfRElTVEFOQ0UgPSAiZ3JlbWxpbi5zaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtLm1heERpc3RhbmNlIjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgSU5DTFVERV9FREdFUyA9ICJncmVtbGluLnNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uaW5jbHVkZUVkZ2VzIjsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBTVEFURSA9ICJncmVtbGluLnNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uc3RhdGUiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBQQVRIUyA9ICJncmVtbGluLnNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0ucGF0aHMiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBWT1RFX1RPX0hBTFQgPSAiZ3JlbWxpbi5zaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtLnZvdGVUb0hhbHQiOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFNFQVJDSCA9IDA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENPTExFQ1RfUEFUSFMgPSAxOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBVUERBVEVfSEFMVEVEX1RSQVZFUlNFUlMgPSAyOworCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBQdXJlVHJhdmVyc2FsPFZlcnRleCwgPz4gREVGQVVMVF9WRVJURVhfRklMVEVSX1RSQVZFUlNBTCA9IG5ldyBQdXJlVHJhdmVyc2FsPD4oCisgICAgICAgICAgICBfXy48VmVydGV4PiBpZGVudGl0eSgpLmFzQWRtaW4oKSk7IC8vIHRvZG86IG5ldyBJZGVudGl0eVRyYXZlcnNhbDw+KCkKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFB1cmVUcmF2ZXJzYWw8VmVydGV4LCBFZGdlPiBERUZBVUxUX0VER0VfVFJBVkVSU0FMID0gbmV3IFB1cmVUcmF2ZXJzYWw8PihfXy5ib3RoRSgpLmFzQWRtaW4oKSk7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBQdXJlVHJhdmVyc2FsPEVkZ2UsIE51bWJlcj4gREVGQVVMVF9ESVNUQU5DRV9UUkFWRVJTQUwgPSBuZXcgUHVyZVRyYXZlcnNhbDw+KAorICAgICAgICAgICAgX18uPEVkZ2U+IHN0YXJ0KCkuPE51bWJlcj4gY29uc3RhbnQoMSkuYXNBZG1pbigpKTsgLy8gdG9kbzogbmV3IENvbnN0YW50VHJhdmVyc2FsPD4oMSkKKworICAgIHByaXZhdGUgVHJhdmVyc2VyU2V0PFZlcnRleD4gaGFsdGVkVHJhdmVyc2VyczsKKyAgICBwcml2YXRlIEluZGV4ZWRUcmF2ZXJzZXJTZXQ8VmVydGV4LCBWZXJ0ZXg+IGhhbHRlZFRyYXZlcnNlcnNJbmRleDsKKyAgICBwcml2YXRlIFB1cmVUcmF2ZXJzYWw8PywgPz4gdHJhdmVyc2FsOworICAgIHByaXZhdGUgUHVyZVRyYXZlcnNhbDxWZXJ0ZXgsID8+IHNvdXJjZVZlcnRleEZpbHRlclRyYXZlcnNhbCA9IERFRkFVTFRfVkVSVEVYX0ZJTFRFUl9UUkFWRVJTQUwuY2xvbmUoKTsKKyAgICBwcml2YXRlIFB1cmVUcmF2ZXJzYWw8VmVydGV4LCA/PiB0YXJnZXRWZXJ0ZXhGaWx0ZXJUcmF2ZXJzYWwgPSBERUZBVUxUX1ZFUlRFWF9GSUxURVJfVFJBVkVSU0FMLmNsb25lKCk7CisgICAgcHJpdmF0ZSBQdXJlVHJhdmVyc2FsPFZlcnRleCwgRWRnZT4gZWRnZVRyYXZlcnNhbCA9IERFRkFVTFRfRURHRV9UUkFWRVJTQUwuY2xvbmUoKTsKKyAgICBwcml2YXRlIFB1cmVUcmF2ZXJzYWw8RWRnZSwgTnVtYmVyPiBkaXN0YW5jZVRyYXZlcnNhbCA9IERFRkFVTFRfRElTVEFOQ0VfVFJBVkVSU0FMLmNsb25lKCk7CisgICAgcHJpdmF0ZSBTdGVwPFZlcnRleCwgUGF0aD4gcHJvZ3JhbVN0ZXA7CisgICAgcHJpdmF0ZSBOdW1iZXIgbWF4RGlzdGFuY2U7CisgICAgcHJpdmF0ZSBib29sZWFuIGRpc3RhbmNlRXF1YWxzTnVtYmVyT2ZIb3BzOworICAgIHByaXZhdGUgYm9vbGVhbiBpbmNsdWRlRWRnZXM7CisgICAgcHJpdmF0ZSBib29sZWFuIHN0YW5kYWxvbmU7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTZXQ8VmVydGV4Q29tcHV0ZUtleT4gVkVSVEVYX0NPTVBVVEVfS0VZUyA9IG5ldyBIYXNoU2V0PD4oQXJyYXlzLmFzTGlzdCgKKyAgICAgICAgICAgIFZlcnRleENvbXB1dGVLZXkub2YoUEFUSFMsIHRydWUpLAorICAgICAgICAgICAgVmVydGV4Q29tcHV0ZUtleS5vZihUcmF2ZXJzYWxWZXJ0ZXhQcm9ncmFtLkhBTFRFRF9UUkFWRVJTRVJTLCBmYWxzZSkpKTsKKworICAgIHByaXZhdGUgZmluYWwgU2V0PE1lbW9yeUNvbXB1dGVLZXk+IG1lbW9yeUNvbXB1dGVLZXlzID0gbmV3IEhhc2hTZXQ8PihBcnJheXMuYXNMaXN0KAorICAgICAgICAgICAgTWVtb3J5Q29tcHV0ZUtleS5vZihWT1RFX1RPX0hBTFQsIE9wZXJhdG9yLmFuZCwgZmFsc2UsIHRydWUpLAorICAgICAgICAgICAgTWVtb3J5Q29tcHV0ZUtleS5vZihTVEFURSwgT3BlcmF0b3IuYXNzaWduLCB0cnVlLCB0cnVlKSkpOworCisgICAgcHJpdmF0ZSBTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtKCkgeworCisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgbG9hZFN0YXRlKGZpbmFsIEdyYXBoIGdyYXBoLCBmaW5hbCBDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pIHsKKworICAgICAgICBpZiAoY29uZmlndXJhdGlvbi5jb250YWluc0tleShTT1VSQ0VfVkVSVEVYX0ZJTFRFUikpCisgICAgICAgICAgICB0aGlzLnNvdXJjZVZlcnRleEZpbHRlclRyYXZlcnNhbCA9IFB1cmVUcmF2ZXJzYWwubG9hZFN0YXRlKGNvbmZpZ3VyYXRpb24sIFNPVVJDRV9WRVJURVhfRklMVEVSLCBncmFwaCk7CisKKyAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24uY29udGFpbnNLZXkoVEFSR0VUX1ZFUlRFWF9GSUxURVIpKQorICAgICAgICAgICAgdGhpcy50YXJnZXRWZXJ0ZXhGaWx0ZXJUcmF2ZXJzYWwgPSBQdXJlVHJhdmVyc2FsLmxvYWRTdGF0ZShjb25maWd1cmF0aW9uLCBUQVJHRVRfVkVSVEVYX0ZJTFRFUiwgZ3JhcGgpOworCisgICAgICAgIGlmIChjb25maWd1cmF0aW9uLmNvbnRhaW5zS2V5KEVER0VfVFJBVkVSU0FMKSkKKyAgICAgICAgICAgIHRoaXMuZWRnZVRyYXZlcnNhbCA9IFB1cmVUcmF2ZXJzYWwubG9hZFN0YXRlKGNvbmZpZ3VyYXRpb24sIEVER0VfVFJBVkVSU0FMLCBncmFwaCk7CisKKyAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24uY29udGFpbnNLZXkoRElTVEFOQ0VfVFJBVkVSU0FMKSkKKyAgICAgICAgICAgIHRoaXMuZGlzdGFuY2VUcmF2ZXJzYWwgPSBQdXJlVHJhdmVyc2FsLmxvYWRTdGF0ZShjb25maWd1cmF0aW9uLCBESVNUQU5DRV9UUkFWRVJTQUwsIGdyYXBoKTsKKworICAgICAgICBpZiAoY29uZmlndXJhdGlvbi5jb250YWluc0tleShNQVhfRElTVEFOQ0UpKQorICAgICAgICAgICAgdGhpcy5tYXhEaXN0YW5jZSA9IChOdW1iZXIpIGNvbmZpZ3VyYXRpb24uZ2V0UHJvcGVydHkoTUFYX0RJU1RBTkNFKTsKKworICAgICAgICB0aGlzLmRpc3RhbmNlRXF1YWxzTnVtYmVyT2ZIb3BzID0gdGhpcy5kaXN0YW5jZVRyYXZlcnNhbC5lcXVhbHMoREVGQVVMVF9ESVNUQU5DRV9UUkFWRVJTQUwpOworICAgICAgICB0aGlzLmluY2x1ZGVFZGdlcyA9IGNvbmZpZ3VyYXRpb24uZ2V0Qm9vbGVhbihJTkNMVURFX0VER0VTLCBmYWxzZSk7CisgICAgICAgIHRoaXMuc3RhbmRhbG9uZSA9ICFjb25maWd1cmF0aW9uLmNvbnRhaW5zS2V5KFZlcnRleFByb2dyYW1TdGVwLlJPT1RfVFJBVkVSU0FMKTsKKworICAgICAgICBpZiAoIXRoaXMuc3RhbmRhbG9uZSkgeworICAgICAgICAgICAgdGhpcy50cmF2ZXJzYWwgPSBQdXJlVHJhdmVyc2FsLmxvYWRTdGF0ZShjb25maWd1cmF0aW9uLCBWZXJ0ZXhQcm9ncmFtU3RlcC5ST09UX1RSQVZFUlNBTCwgZ3JhcGgpOworICAgICAgICAgICAgZmluYWwgU3RyaW5nIHByb2dyYW1TdGVwSWQgPSBjb25maWd1cmF0aW9uLmdldFN0cmluZyhQcm9ncmFtVmVydGV4UHJvZ3JhbVN0ZXAuU1RFUF9JRCk7CisgICAgICAgICAgICBmb3IgKGZpbmFsIFN0ZXAgc3RlcCA6IHRoaXMudHJhdmVyc2FsLmdldCgpLmdldFN0ZXBzKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoc3RlcC5nZXRJZCgpLmVxdWFscyhwcm9ncmFtU3RlcElkKSkgeworICAgICAgICAgICAgICAgICAgICAvL25vaW5zcGVjdGlvbiB1bmNoZWNrZWQKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9ncmFtU3RlcCA9IHN0ZXA7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIHJlc3RvcmUgaGFsdGVkIHRyYXZlcnNlcnMgZnJvbSB0aGUgY29uZmlndXJhdGlvbiBhbmQgYnVpbGQgYW4gaW5kZXggZm9yIGRpcmVjdCBhY2Nlc3MKKyAgICAgICAgdGhpcy5oYWx0ZWRUcmF2ZXJzZXJzID0gVHJhdmVyc2FsVmVydGV4UHJvZ3JhbS5sb2FkSGFsdGVkVHJhdmVyc2Vycyhjb25maWd1cmF0aW9uKTsKKyAgICAgICAgdGhpcy5oYWx0ZWRUcmF2ZXJzZXJzSW5kZXggPSBuZXcgSW5kZXhlZFRyYXZlcnNlclNldDw+KHYgLT4gdik7CisgICAgICAgIGZvciAoZmluYWwgVHJhdmVyc2VyLkFkbWluPFZlcnRleD4gdHJhdmVyc2VyIDogdGhpcy5oYWx0ZWRUcmF2ZXJzZXJzKSB7CisgICAgICAgICAgICB0aGlzLmhhbHRlZFRyYXZlcnNlcnNJbmRleC5hZGQodHJhdmVyc2VyLnNwbGl0KCkpOworICAgICAgICB9CisgICAgICAgIHRoaXMubWVtb3J5Q29tcHV0ZUtleXMuYWRkKE1lbW9yeUNvbXB1dGVLZXkub2YoU0hPUlRFU1RfUEFUSFMsIE9wZXJhdG9yLmFkZEFsbCwgdHJ1ZSwgIXN0YW5kYWxvbmUpKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBzdG9yZVN0YXRlKGZpbmFsIENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikgeworICAgICAgICBWZXJ0ZXhQcm9ncmFtLnN1cGVyLnN0b3JlU3RhdGUoY29uZmlndXJhdGlvbik7CisgICAgICAgIHRoaXMuc291cmNlVmVydGV4RmlsdGVyVHJhdmVyc2FsLnN0b3JlU3RhdGUoY29uZmlndXJhdGlvbiwgU09VUkNFX1ZFUlRFWF9GSUxURVIpOworICAgICAgICB0aGlzLnRhcmdldFZlcnRleEZpbHRlclRyYXZlcnNhbC5zdG9yZVN0YXRlKGNvbmZpZ3VyYXRpb24sIFRBUkdFVF9WRVJURVhfRklMVEVSKTsKKyAgICAgICAgdGhpcy5lZGdlVHJhdmVyc2FsLnN0b3JlU3RhdGUoY29uZmlndXJhdGlvbiwgRURHRV9UUkFWRVJTQUwpOworICAgICAgICB0aGlzLmRpc3RhbmNlVHJhdmVyc2FsLnN0b3JlU3RhdGUoY29uZmlndXJhdGlvbiwgRElTVEFOQ0VfVFJBVkVSU0FMKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi5zZXRQcm9wZXJ0eShJTkNMVURFX0VER0VTLCB0aGlzLmluY2x1ZGVFZGdlcyk7CisgICAgICAgIGlmICh0aGlzLm1heERpc3RhbmNlICE9IG51bGwpCisgICAgICAgICAgICBjb25maWd1cmF0aW9uLnNldFByb3BlcnR5KE1BWF9ESVNUQU5DRSwgbWF4RGlzdGFuY2UpOworICAgICAgICBpZiAodGhpcy50cmF2ZXJzYWwgIT0gbnVsbCkgeworICAgICAgICAgICAgdGhpcy50cmF2ZXJzYWwuc3RvcmVTdGF0ZShjb25maWd1cmF0aW9uLCBQcm9ncmFtVmVydGV4UHJvZ3JhbVN0ZXAuUk9PVF9UUkFWRVJTQUwpOworICAgICAgICAgICAgY29uZmlndXJhdGlvbi5zZXRQcm9wZXJ0eShQcm9ncmFtVmVydGV4UHJvZ3JhbVN0ZXAuU1RFUF9JRCwgdGhpcy5wcm9ncmFtU3RlcC5nZXRJZCgpKTsKKyAgICAgICAgfQorICAgICAgICBUcmF2ZXJzYWxWZXJ0ZXhQcm9ncmFtLnN0b3JlSGFsdGVkVHJhdmVyc2Vycyhjb25maWd1cmF0aW9uLCB0aGlzLmhhbHRlZFRyYXZlcnNlcnMpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBTZXQ8VmVydGV4Q29tcHV0ZUtleT4gZ2V0VmVydGV4Q29tcHV0ZUtleXMoKSB7CisgICAgICAgIHJldHVybiBWRVJURVhfQ09NUFVURV9LRVlTOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBTZXQ8TWVtb3J5Q29tcHV0ZUtleT4gZ2V0TWVtb3J5Q29tcHV0ZUtleXMoKSB7CisgICAgICAgIHJldHVybiBtZW1vcnlDb21wdXRlS2V5czsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgU2V0PE1lc3NhZ2VTY29wZT4gZ2V0TWVzc2FnZVNjb3BlcyhmaW5hbCBNZW1vcnkgbWVtb3J5KSB7CisgICAgICAgIHJldHVybiBDb2xsZWN0aW9ucy5lbXB0eVNldCgpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBWZXJ0ZXhQcm9ncmFtPFRyaXBsZXQ8UGF0aCwgRWRnZSwgTnVtYmVyPj4gY2xvbmUoKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmaW5hbCBTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtIGNsb25lID0gKFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0pIHN1cGVyLmNsb25lKCk7CisgICAgICAgICAgICBpZiAobnVsbCAhPSB0aGlzLmVkZ2VUcmF2ZXJzYWwpCisgICAgICAgICAgICAgICAgY2xvbmUuZWRnZVRyYXZlcnNhbCA9IHRoaXMuZWRnZVRyYXZlcnNhbC5jbG9uZSgpOworICAgICAgICAgICAgaWYgKG51bGwgIT0gdGhpcy5zb3VyY2VWZXJ0ZXhGaWx0ZXJUcmF2ZXJzYWwpCisgICAgICAgICAgICAgICAgY2xvbmUuc291cmNlVmVydGV4RmlsdGVyVHJhdmVyc2FsID0gdGhpcy5zb3VyY2VWZXJ0ZXhGaWx0ZXJUcmF2ZXJzYWwuY2xvbmUoKTsKKyAgICAgICAgICAgIGlmIChudWxsICE9IHRoaXMudGFyZ2V0VmVydGV4RmlsdGVyVHJhdmVyc2FsKQorICAgICAgICAgICAgICAgIGNsb25lLnRhcmdldFZlcnRleEZpbHRlclRyYXZlcnNhbCA9IHRoaXMudGFyZ2V0VmVydGV4RmlsdGVyVHJhdmVyc2FsLmNsb25lKCk7CisgICAgICAgICAgICBpZiAobnVsbCAhPSB0aGlzLmRpc3RhbmNlVHJhdmVyc2FsKQorICAgICAgICAgICAgICAgIGNsb25lLmRpc3RhbmNlVHJhdmVyc2FsID0gdGhpcy5kaXN0YW5jZVRyYXZlcnNhbC5jbG9uZSgpOworICAgICAgICAgICAgaWYgKG51bGwgIT0gdGhpcy50cmF2ZXJzYWwpIHsKKyAgICAgICAgICAgICAgICBjbG9uZS50cmF2ZXJzYWwgPSB0aGlzLnRyYXZlcnNhbC5jbG9uZSgpOworICAgICAgICAgICAgICAgIGZvciAoZmluYWwgU3RlcCBzdGVwIDogY2xvbmUudHJhdmVyc2FsLmdldCgpLmdldFN0ZXBzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0ZXAuZ2V0SWQoKS5lcXVhbHModGhpcy5wcm9ncmFtU3RlcC5nZXRJZCgpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy9ub2luc3BlY3Rpb24gdW5jaGVja2VkCisgICAgICAgICAgICAgICAgICAgICAgICBjbG9uZS5wcm9ncmFtU3RlcCA9IHN0ZXA7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBjbG9uZTsKKyAgICAgICAgfSBjYXRjaCAoZmluYWwgQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbihlLmdldE1lc3NhZ2UoKSwgZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgR3JhcGhDb21wdXRlci5SZXN1bHRHcmFwaCBnZXRQcmVmZXJyZWRSZXN1bHRHcmFwaCgpIHsKKyAgICAgICAgcmV0dXJuIEdyYXBoQ29tcHV0ZXIuUmVzdWx0R3JhcGguT1JJR0lOQUw7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIEdyYXBoQ29tcHV0ZXIuUGVyc2lzdCBnZXRQcmVmZXJyZWRQZXJzaXN0KCkgeworICAgICAgICByZXR1cm4gR3JhcGhDb21wdXRlci5QZXJzaXN0Lk5PVEhJTkc7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgc2V0dXAoZmluYWwgTWVtb3J5IG1lbW9yeSkgeworICAgICAgICBtZW1vcnkuc2V0KFZPVEVfVE9fSEFMVCwgdHJ1ZSk7CisgICAgICAgIG1lbW9yeS5zZXQoU1RBVEUsIFNFQVJDSCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgZXhlY3V0ZShmaW5hbCBWZXJ0ZXggdmVydGV4LCBmaW5hbCBNZXNzZW5nZXI8VHJpcGxldDxQYXRoLCBFZGdlLCBOdW1iZXI+PiBtZXNzZW5nZXIsIGZpbmFsIE1lbW9yeSBtZW1vcnkpIHsKKworICAgICAgICBzd2l0Y2ggKG1lbW9yeS48SW50ZWdlcj5nZXQoU1RBVEUpKSB7CisKKyAgICAgICAgICAgIGNhc2UgQ09MTEVDVF9QQVRIUzoKKyAgICAgICAgICAgICAgICBjb2xsZWN0U2hvcnRlc3RQYXRocyh2ZXJ0ZXgsIG1lbW9yeSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBjYXNlIFVQREFURV9IQUxURURfVFJBVkVSU0VSUzoKKyAgICAgICAgICAgICAgICB1cGRhdGVIYWx0ZWRUcmF2ZXJzZXJzKHZlcnRleCwgbWVtb3J5KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBib29sZWFuIHZvdGVUb0hhbHQgPSB0cnVlOworCisgICAgICAgIGlmIChtZW1vcnkuaXNJbml0aWFsSXRlcmF0aW9uKCkpIHsKKworICAgICAgICAgICAgLy8gVXNlIHRoZSBmaXJzdCBpdGVyYXRpb24gdG8gY29weSBoYWx0ZWQgdHJhdmVyc2VycyBmcm9tIHRoZSBoYWx0ZWQgdHJhdmVyc2VyIGluZGV4IHRvIHRoZSByZXNwZWN0aXZlCisgICAgICAgICAgICAvLyB2ZXJ0aWNlcy4gVGhpcyB3YXkgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgY2FuIGJlIHNpbXBsaWZpZWQgYW5kIGFsd2F5cyBleHBlY3QgdGhlIEhBTFRFRF9UUkFWRVJTRVJTCisgICAgICAgICAgICAvLyBwcm9wZXJ0eSB0byBiZSBhdmFpbGFibGUgKGlmIGhhbHRlZCB0cmF2ZXJzZXJzIGV4aXN0IGZvciB0aGlzIHZlcnRleCkuCisgICAgICAgICAgICBjb3B5SGFsdGVkVHJhdmVyc2Vyc0Zyb21NZW1vcnkodmVydGV4KTsKKworICAgICAgICAgICAgLy8gaWdub3JlIHZlcnRpY2VzIHRoYXQgZG9uJ3QgcGFzcyB0aGUgc3RhcnQtdmVydGV4IGZpbHRlcgorICAgICAgICAgICAgaWYgKCFpc1N0YXJ0VmVydGV4KHZlcnRleCkpIHJldHVybjsKKworICAgICAgICAgICAgLy8gc3RhcnQgdG8gdHJhY2sgcGF0aHMgZm9yIGFsbCB2YWxpZCBzdGFydC12ZXJ0aWNlcworICAgICAgICAgICAgZmluYWwgTWFwPFZlcnRleCwgUGFpcjxOdW1iZXIsIFNldDxQYXRoPj4+IHBhdGhzID0gbmV3IEhhc2hNYXA8PigpOworICAgICAgICAgICAgZmluYWwgUGF0aCBwYXRoOworICAgICAgICAgICAgZmluYWwgU2V0PFBhdGg+IHBhdGhTZXQgPSBuZXcgSGFzaFNldDw+KCk7CisKKyAgICAgICAgICAgIHBhdGhTZXQuYWRkKHBhdGggPSBtYWtlUGF0aCh2ZXJ0ZXgpKTsKKyAgICAgICAgICAgIHBhdGhzLnB1dCh2ZXJ0ZXgsIFBhaXIud2l0aCgwLCBwYXRoU2V0KSk7CisKKyAgICAgICAgICAgIHZlcnRleC5wcm9wZXJ0eShWZXJ0ZXhQcm9wZXJ0eS5DYXJkaW5hbGl0eS5zaW5nbGUsIFBBVEhTLCBwYXRocyk7CisKKyAgICAgICAgICAgIC8vIHNlbmQgbWVzc2FnZXMgdG8gdmFsaWQgYWRqYWNlbnQgdmVydGljZXMKKyAgICAgICAgICAgIHByb2Nlc3NFZGdlcyh2ZXJ0ZXgsIHBhdGgsIDAsIG1lc3Nlbmdlcik7CisKKyAgICAgICAgICAgIHZvdGVUb0hhbHQgPSBmYWxzZTsKKworICAgICAgICB9IGVsc2UgeworCisgICAgICAgICAgICAvLyBsb2FkIGV4aXN0aW5nIHBhdGhzIHRvIHRoaXMgdmVydGV4IGFuZCBleHRlbmQgdGhlbSBiYXNlZCBvbiBtZXNzYWdlcyByZWNlaXZlZCBmcm9tIGFkamFjZW50IHZlcnRpY2VzCisgICAgICAgICAgICBmaW5hbCBNYXA8VmVydGV4LCBQYWlyPE51bWJlciwgU2V0PFBhdGg+Pj4gcGF0aHMgPQorICAgICAgICAgICAgICAgICAgICB2ZXJ0ZXguPE1hcDxWZXJ0ZXgsIFBhaXI8TnVtYmVyLCBTZXQ8UGF0aD4+Pj5wcm9wZXJ0eShQQVRIUykub3JFbHNlR2V0KEhhc2hNYXA6Om5ldyk7CisgICAgICAgICAgICBmaW5hbCBJdGVyYXRvcjxUcmlwbGV0PFBhdGgsIEVkZ2UsIE51bWJlcj4+IGl0ZXJhdG9yID0gbWVzc2VuZ2VyLnJlY2VpdmVNZXNzYWdlcygpOworCisgICAgICAgICAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKSB7CisKKyAgICAgICAgICAgICAgICBmaW5hbCBUcmlwbGV0PFBhdGgsIEVkZ2UsIE51bWJlcj4gdHJpcGxldCA9IGl0ZXJhdG9yLm5leHQoKTsKKyAgICAgICAgICAgICAgICBmaW5hbCBQYXRoIHNvdXJjZVBhdGggPSB0cmlwbGV0LmdldFZhbHVlMCgpOworICAgICAgICAgICAgICAgIGZpbmFsIE51bWJlciBkaXN0YW5jZSA9IHRyaXBsZXQuZ2V0VmFsdWUyKCk7CisgICAgICAgICAgICAgICAgZmluYWwgVmVydGV4IHNvdXJjZVZlcnRleCA9IHNvdXJjZVBhdGguZ2V0KDApOworCisgICAgICAgICAgICAgICAgUGF0aCBuZXdQYXRoID0gbnVsbDsKKworICAgICAgICAgICAgICAgIC8vIGFscmVhZHkga25vdyBhIHBhdGggY29taW5nIGZyb20gdGhpcyBzb3VyY2UgdmVydGV4PworICAgICAgICAgICAgICAgIGlmIChwYXRocy5jb250YWluc0tleShzb3VyY2VWZXJ0ZXgpKSB7CisKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgTnVtYmVyIGN1cnJlbnRTaG9ydGVzdERpc3RhbmNlID0gcGF0aHMuZ2V0KHNvdXJjZVZlcnRleCkuZ2V0VmFsdWUwKCk7CisgICAgICAgICAgICAgICAgICAgIGZpbmFsIGludCBjbXAgPSBOdW1iZXJIZWxwZXIuY29tcGFyZShkaXN0YW5jZSwgY3VycmVudFNob3J0ZXN0RGlzdGFuY2UpOworCisgICAgICAgICAgICAgICAgICAgIGlmIChjbXAgPD0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbmV3UGF0aCA9IGV4dGVuZFBhdGgoc291cmNlUGF0aCwgdHJpcGxldC5nZXRWYWx1ZTEoKSwgdmVydGV4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjbXAgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIHBhdGggbGVuZ3RoIGlzIHNtYWxsZXIgdGhhbiB0aGUgY3VycmVudCBzaG9ydGVzdCBwYXRoJ3MgbGVuZ3RoLCByZXBsYWNlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGN1cnJlbnQgc2V0IG9mIHNob3J0ZXN0IHBhdGhzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgU2V0PFBhdGg+IHBhdGhTZXQgPSBuZXcgSGFzaFNldDw+KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aFNldC5hZGQobmV3UGF0aCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aHMucHV0KHNvdXJjZVZlcnRleCwgUGFpci53aXRoKGRpc3RhbmNlLCBwYXRoU2V0KSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBwYXRoIGxlbmd0aCBpcyBlcXVhbCB0byB0aGUgY3VycmVudCBzaG9ydGVzdCBwYXRoJ3MgbGVuZ3RoLCBhZGQgdGhlIG5ldyBwYXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gdGhlIHNldCBvZiBzaG9ydGVzdCBwYXRocworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhzLmdldChzb3VyY2VWZXJ0ZXgpLmdldFZhbHVlMSgpLmFkZChuZXdQYXRoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWV4Y2VlZHNNYXhEaXN0YW5jZShkaXN0YW5jZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gc3RvcmUgdGhlIG5ldyBwYXRoIGFzIHRoZSBzaG9ydGVzdCBwYXRoIGZyb20gdGhlIHNvdXJjZSB2ZXJ0ZXggdG8gdGhlIGN1cnJlbnQgdmVydGV4CisgICAgICAgICAgICAgICAgICAgIGZpbmFsIFNldDxQYXRoPiBwYXRoU2V0ID0gbmV3IEhhc2hTZXQ8PigpOworICAgICAgICAgICAgICAgICAgICBwYXRoU2V0LmFkZChuZXdQYXRoID0gZXh0ZW5kUGF0aChzb3VyY2VQYXRoLCB0cmlwbGV0LmdldFZhbHVlMSgpLCB2ZXJ0ZXgpKTsKKyAgICAgICAgICAgICAgICAgICAgcGF0aHMucHV0KHNvdXJjZVZlcnRleCwgUGFpci53aXRoKGRpc3RhbmNlLCBwYXRoU2V0KSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gaWYgYSBuZXcgcGF0aCB3YXMgZm91bmQsIHNlbmQgbWVzc2FnZXMgdG8gYWRqYWNlbnQgdmVydGljZXMsIG90aGVyd2lzZSBkbyBub3RoaW5nIGFzIHRoZXJlJ3Mgbm8KKyAgICAgICAgICAgICAgICAvLyBjaGFuY2UgdG8gZmluZCBhbnkgbmV3IHBhdGhzIGdvaW5nIGZvcndhcmQKKyAgICAgICAgICAgICAgICBpZiAobmV3UGF0aCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIHZlcnRleC5wcm9wZXJ0eShWZXJ0ZXhQcm9wZXJ0eS5DYXJkaW5hbGl0eS5zaW5nbGUsIFBBVEhTLCBwYXRocyk7CisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NFZGdlcyh2ZXJ0ZXgsIG5ld1BhdGgsIGRpc3RhbmNlLCBtZXNzZW5nZXIpOworICAgICAgICAgICAgICAgICAgICB2b3RlVG9IYWx0ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gVk9URV9UT19IQUxUIHdpbGwgYmUgc2V0IHRvIHRydWUgaWYgYW4gaXRlcmF0aW9uIGhhc24ndCBmb3VuZCBhbnkgbmV3IHBhdGhzCisgICAgICAgIG1lbW9yeS5hZGQoVk9URV9UT19IQUxULCB2b3RlVG9IYWx0KTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgYm9vbGVhbiB0ZXJtaW5hdGUoZmluYWwgTWVtb3J5IG1lbW9yeSkgeworICAgICAgICBpZiAobWVtb3J5LmlzSW5pdGlhbEl0ZXJhdGlvbigpICYmIHRoaXMuaGFsdGVkVHJhdmVyc2Vyc0luZGV4ICE9IG51bGwpIHsKKyAgICAgICAgICAgIHRoaXMuaGFsdGVkVHJhdmVyc2Vyc0luZGV4LmNsZWFyKCk7CisgICAgICAgIH0KKyAgICAgICAgZmluYWwgYm9vbGVhbiB2b3RlVG9IYWx0ID0gbWVtb3J5LmdldChWT1RFX1RPX0hBTFQpOworICAgICAgICBpZiAodm90ZVRvSGFsdCkgeworICAgICAgICAgICAgZmluYWwgaW50IHN0YXRlID0gbWVtb3J5LmdldChTVEFURSk7CisgICAgICAgICAgICBpZiAoc3RhdGUgPT0gQ09MTEVDVF9QQVRIUykgeworICAgICAgICAgICAgICAgIC8vIEFmdGVyIHBhdGhzIHdlcmUgY29sbGVjdGVkLAorICAgICAgICAgICAgICAgIC8vIGEpIHRoZSBWUCBpcyBkb25lIGluIHN0YW5kYWxvbmUgbW9kZSAocGF0aHMgd2lsbCBiZSBpbiBtZW1vcnkpIG9yCisgICAgICAgICAgICAgICAgLy8gYikgdGhlIGhhbHRlZCB0cmF2ZXJzZXJzIHdpbGwgYmUgdXBkYXRlZCBpbiBvcmRlciB0byBoYXZlIHRoZSBwYXRocyBhdmFpbGFibGUgaW4gdGhlIHRyYXZlcnNhbAorICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YW5kYWxvbmUpIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIG1lbW9yeS5zZXQoU1RBVEUsIFVQREFURV9IQUxURURfVFJBVkVSU0VSUyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHN0YXRlID09IFVQREFURV9IQUxURURfVFJBVkVSU0VSUykgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBlbHNlIG1lbW9yeS5zZXQoU1RBVEUsIENPTExFQ1RfUEFUSFMpOyAvLyBjb2xsZWN0IHBhdGhzIGlmIG5vIG5ldyBwYXRocyB3ZXJlIGZvdW5kCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtZW1vcnkuc2V0KFZPVEVfVE9fSEFMVCwgdHJ1ZSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworCisgICAgICAgIGZpbmFsIExpc3Q8U3RyaW5nPiBvcHRpb25zID0gbmV3IEFycmF5TGlzdDw+KCk7CisgICAgICAgIGZpbmFsIEZ1bmN0aW9uPFN0cmluZywgU3RyaW5nPiBzaG9ydE5hbWUgPSBuYW1lIC0+IG5hbWUuc3Vic3RyaW5nKG5hbWUubGFzdEluZGV4T2YoIi4iKSArIDEpOworCisgICAgICAgIGlmICghdGhpcy5zb3VyY2VWZXJ0ZXhGaWx0ZXJUcmF2ZXJzYWwuZXF1YWxzKERFRkFVTFRfVkVSVEVYX0ZJTFRFUl9UUkFWRVJTQUwpKSB7CisgICAgICAgICAgICBvcHRpb25zLmFkZChzaG9ydE5hbWUuYXBwbHkoU09VUkNFX1ZFUlRFWF9GSUxURVIpICsgIj0iICsgdGhpcy5zb3VyY2VWZXJ0ZXhGaWx0ZXJUcmF2ZXJzYWwuZ2V0KCkpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aGlzLnRhcmdldFZlcnRleEZpbHRlclRyYXZlcnNhbC5lcXVhbHMoREVGQVVMVF9WRVJURVhfRklMVEVSX1RSQVZFUlNBTCkpIHsKKyAgICAgICAgICAgIG9wdGlvbnMuYWRkKHNob3J0TmFtZS5hcHBseShUQVJHRVRfVkVSVEVYX0ZJTFRFUikgKyAiPSIgKyB0aGlzLnRhcmdldFZlcnRleEZpbHRlclRyYXZlcnNhbC5nZXQoKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRoaXMuZWRnZVRyYXZlcnNhbC5lcXVhbHMoREVGQVVMVF9FREdFX1RSQVZFUlNBTCkpIHsKKyAgICAgICAgICAgIG9wdGlvbnMuYWRkKHNob3J0TmFtZS5hcHBseShFREdFX1RSQVZFUlNBTCkgKyAiPSIgKyB0aGlzLmVkZ2VUcmF2ZXJzYWwuZ2V0KCkpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aGlzLmRpc3RhbmNlVHJhdmVyc2FsLmVxdWFscyhERUZBVUxUX0RJU1RBTkNFX1RSQVZFUlNBTCkpIHsKKyAgICAgICAgICAgIG9wdGlvbnMuYWRkKHNob3J0TmFtZS5hcHBseShESVNUQU5DRV9UUkFWRVJTQUwpICsgIj0iICsgdGhpcy5kaXN0YW5jZVRyYXZlcnNhbC5nZXQoKSk7CisgICAgICAgIH0KKworICAgICAgICBvcHRpb25zLmFkZChzaG9ydE5hbWUuYXBwbHkoSU5DTFVERV9FREdFUykgKyAiPSIgKyB0aGlzLmluY2x1ZGVFZGdlcyk7CisKKyAgICAgICAgcmV0dXJuIFN0cmluZ0ZhY3RvcnkudmVydGV4UHJvZ3JhbVN0cmluZyh0aGlzLCBTdHJpbmcuam9pbigiLCAiLCBvcHRpb25zKSk7CisgICAgfQorCisgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKKyAgICBwcml2YXRlIHZvaWQgY29weUhhbHRlZFRyYXZlcnNlcnNGcm9tTWVtb3J5KGZpbmFsIFZlcnRleCB2ZXJ0ZXgpIHsKKyAgICAgICAgZmluYWwgQ29sbGVjdGlvbjxUcmF2ZXJzZXIuQWRtaW48VmVydGV4Pj4gdHJhdmVyc2VycyA9IHRoaXMuaGFsdGVkVHJhdmVyc2Vyc0luZGV4LmdldCh2ZXJ0ZXgpOworICAgICAgICBpZiAodHJhdmVyc2VycyAhPSBudWxsKSB7CisgICAgICAgICAgICBmaW5hbCBUcmF2ZXJzZXJTZXQ8VmVydGV4PiBuZXdIYWx0ZWRUcmF2ZXJzZXJzID0gbmV3IFRyYXZlcnNlclNldDw+KCk7CisgICAgICAgICAgICBuZXdIYWx0ZWRUcmF2ZXJzZXJzLmFkZEFsbCh0cmF2ZXJzZXJzKTsKKyAgICAgICAgICAgIHZlcnRleC5wcm9wZXJ0eShWZXJ0ZXhQcm9wZXJ0eS5DYXJkaW5hbGl0eS5zaW5nbGUsIFRyYXZlcnNhbFZlcnRleFByb2dyYW0uSEFMVEVEX1RSQVZFUlNFUlMsIG5ld0hhbHRlZFRyYXZlcnNlcnMpOworICAgICAgICB9CisgICAgfQorCisKKyAgICBwcml2YXRlIHN0YXRpYyBQYXRoIG1ha2VQYXRoKGZpbmFsIFZlcnRleCBuZXdWZXJ0ZXgpIHsKKyAgICAgICAgcmV0dXJuIGV4dGVuZFBhdGgobnVsbCwgbmV3VmVydGV4KTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBQYXRoIGV4dGVuZFBhdGgoZmluYWwgUGF0aCBjdXJyZW50UGF0aCwgZmluYWwgRWxlbWVudC4uLiBlbGVtZW50cykgeworICAgICAgICBQYXRoIHJlc3VsdCA9IEltbXV0YWJsZVBhdGgubWFrZSgpOworICAgICAgICBpZiAoY3VycmVudFBhdGggIT0gbnVsbCkgeworICAgICAgICAgICAgZm9yIChmaW5hbCBPYmplY3QgbyA6IGN1cnJlbnRQYXRoLm9iamVjdHMoKSkgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5leHRlbmQobywgQ29sbGVjdGlvbnMuZW1wdHlTZXQoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZm9yIChmaW5hbCBFbGVtZW50IGVsZW1lbnQgOiBlbGVtZW50cykgeworICAgICAgICAgICAgaWYgKGVsZW1lbnQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5leHRlbmQoUmVmZXJlbmNlRmFjdG9yeS5kZXRhY2goZWxlbWVudCksIENvbGxlY3Rpb25zLmVtcHR5U2V0KCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgcHJpdmF0ZSBib29sZWFuIGlzU3RhcnRWZXJ0ZXgoZmluYWwgVmVydGV4IHZlcnRleCkgeworICAgICAgICAvLyB1c2UgdGhlIHNvdXJjZVZlcnRleEZpbHRlclRyYXZlcnNhbCBpZiB0aGUgVlAgaXMgcnVubmluZyBpbiBzdGFuZGFsb25lIG1vZGUgKG5vdCBwYXJ0IG9mIGEgdHJhdmVyc2FsKQorICAgICAgICBpZiAodGhpcy5zdGFuZGFsb25lKSB7CisgICAgICAgICAgICBmaW5hbCBUcmF2ZXJzYWwuQWRtaW48VmVydGV4LCA/PiBmaWx0ZXJUcmF2ZXJzYWwgPSB0aGlzLnNvdXJjZVZlcnRleEZpbHRlclRyYXZlcnNhbC5nZXRQdXJlKCk7CisgICAgICAgICAgICBmaWx0ZXJUcmF2ZXJzYWwuYWRkU3RhcnQoZmlsdGVyVHJhdmVyc2FsLmdldFRyYXZlcnNlckdlbmVyYXRvcigpLmdlbmVyYXRlKHZlcnRleCwgZmlsdGVyVHJhdmVyc2FsLmdldFN0YXJ0U3RlcCgpLCAxKSk7CisgICAgICAgICAgICByZXR1cm4gZmlsdGVyVHJhdmVyc2FsLmhhc05leHQoKTsKKyAgICAgICAgfQorICAgICAgICAvLyAuLi5vdGhlcndpc2UgdXNlIGhhbHRlZCB0cmF2ZXJzZXJzIHRvIGRldGVybWluZSB3aGV0aGVyIHRoaXMgaXMgYSBzdGFydCB2ZXJ0ZXgKKyAgICAgICAgcmV0dXJuIHZlcnRleC5wcm9wZXJ0eShUcmF2ZXJzYWxWZXJ0ZXhQcm9ncmFtLkhBTFRFRF9UUkFWRVJTRVJTKS5pc1ByZXNlbnQoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGJvb2xlYW4gaXNFbmRWZXJ0ZXgoZmluYWwgVmVydGV4IHZlcnRleCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWwuQWRtaW48VmVydGV4LCA/PiBmaWx0ZXJUcmF2ZXJzYWwgPSB0aGlzLnRhcmdldFZlcnRleEZpbHRlclRyYXZlcnNhbC5nZXRQdXJlKCk7CisgICAgICAgIC8vbm9pbnNwZWN0aW9uIHVuY2hlY2tlZAorICAgICAgICBmaW5hbCBTdGVwPFZlcnRleCwgVmVydGV4PiBzdGFydFN0ZXAgPSAoU3RlcDxWZXJ0ZXgsIFZlcnRleD4pIGZpbHRlclRyYXZlcnNhbC5nZXRTdGFydFN0ZXAoKTsKKyAgICAgICAgZmlsdGVyVHJhdmVyc2FsLmFkZFN0YXJ0KGZpbHRlclRyYXZlcnNhbC5nZXRUcmF2ZXJzZXJHZW5lcmF0b3IoKS5nZW5lcmF0ZSh2ZXJ0ZXgsIHN0YXJ0U3RlcCwgMSkpOworICAgICAgICByZXR1cm4gZmlsdGVyVHJhdmVyc2FsLmhhc05leHQoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgcHJvY2Vzc0VkZ2VzKGZpbmFsIFZlcnRleCB2ZXJ0ZXgsIGZpbmFsIFBhdGggY3VycmVudFBhdGgsIGZpbmFsIE51bWJlciBjdXJyZW50RGlzdGFuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBNZXNzZW5nZXI8VHJpcGxldDxQYXRoLCBFZGdlLCBOdW1iZXI+PiBtZXNzZW5nZXIpIHsKKworICAgICAgICBmaW5hbCBUcmF2ZXJzYWwuQWRtaW48VmVydGV4LCBFZGdlPiBlZGdlVHJhdmVyc2FsID0gdGhpcy5lZGdlVHJhdmVyc2FsLmdldFB1cmUoKTsKKyAgICAgICAgZWRnZVRyYXZlcnNhbC5hZGRTdGFydChlZGdlVHJhdmVyc2FsLmdldFRyYXZlcnNlckdlbmVyYXRvcigpLmdlbmVyYXRlKHZlcnRleCwgZWRnZVRyYXZlcnNhbC5nZXRTdGFydFN0ZXAoKSwgMSkpOworCisgICAgICAgIHdoaWxlIChlZGdlVHJhdmVyc2FsLmhhc05leHQoKSkgeworICAgICAgICAgICAgZmluYWwgRWRnZSBlZGdlID0gZWRnZVRyYXZlcnNhbC5uZXh0KCk7CisgICAgICAgICAgICBmaW5hbCBOdW1iZXIgZGlzdGFuY2UgPSBnZXREaXN0YW5jZShlZGdlKTsKKworICAgICAgICAgICAgVmVydGV4IG90aGVyViA9IGVkZ2UuaW5WZXJ0ZXgoKTsKKyAgICAgICAgICAgIGlmIChvdGhlclYuZXF1YWxzKHZlcnRleCkpCisgICAgICAgICAgICAgICAgb3RoZXJWID0gZWRnZS5vdXRWZXJ0ZXgoKTsKKworICAgICAgICAgICAgLy8gb25seSBzZW5kIG1lc3NhZ2UgaWYgdGhlIGFkamFjZW50IHZlcnRleCBpcyBub3QgeWV0IHBhcnQgb2YgdGhlIGN1cnJlbnQgcGF0aAorICAgICAgICAgICAgaWYgKCFjdXJyZW50UGF0aC5vYmplY3RzKCkuY29udGFpbnMob3RoZXJWKSkgeworICAgICAgICAgICAgICAgIG1lc3Nlbmdlci5zZW5kTWVzc2FnZShNZXNzYWdlU2NvcGUuR2xvYmFsLm9mKG90aGVyViksCisgICAgICAgICAgICAgICAgICAgICAgICBUcmlwbGV0LndpdGgoY3VycmVudFBhdGgsIHRoaXMuaW5jbHVkZUVkZ2VzID8gZWRnZSA6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bWJlckhlbHBlci5hZGQoY3VycmVudERpc3RhbmNlLCBkaXN0YW5jZSkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCB1cGRhdGVIYWx0ZWRUcmF2ZXJzZXJzKGZpbmFsIFZlcnRleCB2ZXJ0ZXgsIGZpbmFsIE1lbW9yeSBtZW1vcnkpIHsKKyAgICAgICAgaWYgKGlzU3RhcnRWZXJ0ZXgodmVydGV4KSkgeworICAgICAgICAgICAgZmluYWwgTGlzdDxQYXRoPiBwYXRocyA9IG1lbW9yeS5nZXQoU0hPUlRFU1RfUEFUSFMpOworICAgICAgICAgICAgaWYgKHZlcnRleC5wcm9wZXJ0eShUcmF2ZXJzYWxWZXJ0ZXhQcm9ncmFtLkhBTFRFRF9UUkFWRVJTRVJTKS5pc1ByZXNlbnQoKSkgeworICAgICAgICAgICAgICAgIC8vIHJlcGxhY2UgdGhlIGN1cnJlbnQgc2V0IG9mIGhhbHRlZCB0cmF2ZXJzZXJzIHdpdGggbmV3IG5ldyB0cmF2ZXJzZXJzIHRoYXQgaG9sZCB0aGUgc2hvcnRlc3QgcGF0aHMKKyAgICAgICAgICAgICAgICAvLyBmb3VuZCBmb3IgdGhpcyB2ZXJ0ZXgKKyAgICAgICAgICAgICAgICBmaW5hbCBUcmF2ZXJzZXJTZXQ8VmVydGV4PiBoYWx0ZWRUcmF2ZXJzZXJzID0gdmVydGV4LnZhbHVlKFRyYXZlcnNhbFZlcnRleFByb2dyYW0uSEFMVEVEX1RSQVZFUlNFUlMpOworICAgICAgICAgICAgICAgIGZpbmFsIFRyYXZlcnNlclNldDxQYXRoPiBuZXdIYWx0ZWRUcmF2ZXJzZXJzID0gbmV3IFRyYXZlcnNlclNldDw+KCk7CisgICAgICAgICAgICAgICAgZm9yIChmaW5hbCBUcmF2ZXJzZXIuQWRtaW48VmVydGV4PiB0cmF2ZXJzZXIgOiBoYWx0ZWRUcmF2ZXJzZXJzKSB7CisgICAgICAgICAgICAgICAgICAgIGZpbmFsIFZlcnRleCB2ID0gdHJhdmVyc2VyLmdldCgpOworICAgICAgICAgICAgICAgICAgICBmb3IgKGZpbmFsIFBhdGggcGF0aCA6IHBhdGhzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGF0aC5nZXQoMCkuZXF1YWxzKHYpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3SGFsdGVkVHJhdmVyc2Vycy5hZGQodHJhdmVyc2VyLnNwbGl0KHBhdGgsIHRoaXMucHJvZ3JhbVN0ZXApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB2ZXJ0ZXgucHJvcGVydHkoVmVydGV4UHJvcGVydHkuQ2FyZGluYWxpdHkuc2luZ2xlLCBUcmF2ZXJzYWxWZXJ0ZXhQcm9ncmFtLkhBTFRFRF9UUkFWRVJTRVJTLCBuZXdIYWx0ZWRUcmF2ZXJzZXJzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgTnVtYmVyIGdldERpc3RhbmNlKGZpbmFsIEVkZ2UgZWRnZSkgeworICAgICAgICBpZiAodGhpcy5kaXN0YW5jZUVxdWFsc051bWJlck9mSG9wcykgcmV0dXJuIDE7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbC5BZG1pbjxFZGdlLCBOdW1iZXI+IHRyYXZlcnNhbCA9IHRoaXMuZGlzdGFuY2VUcmF2ZXJzYWwuZ2V0UHVyZSgpOworICAgICAgICB0cmF2ZXJzYWwuYWRkU3RhcnQodHJhdmVyc2FsLmdldFRyYXZlcnNlckdlbmVyYXRvcigpLmdlbmVyYXRlKGVkZ2UsIHRyYXZlcnNhbC5nZXRTdGFydFN0ZXAoKSwgMSkpOworICAgICAgICByZXR1cm4gdHJhdmVyc2FsLnRyeU5leHQoKS5vckVsc2UoMCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBib29sZWFuIGV4Y2VlZHNNYXhEaXN0YW5jZShmaW5hbCBOdW1iZXIgZGlzdGFuY2UpIHsKKyAgICAgICAgLy8gVGhpcyBtZXRob2QgaXMgdXNlZCB0byBzdG9wIHRoZSBtZXNzYWdlIHNlbmRpbmcgZm9yIHBhdGhzIHRoYXQgZXhjZWVkIHRoZSBzcGVjaWZpZWQgbWF4aW11bSBkaXN0YW5jZS4gU2luY2UKKyAgICAgICAgLy8gY3VzdG9tIGRpc3RhbmNlcyBjYW4gYmUgbmVnYXRpdmUsIHRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IHJldHVybiB0cnVlIGlmIHRoZSBkaXN0YW5jZSBpcyBjYWxjdWxhdGVkIGJhc2VkIG9uCisgICAgICAgIC8vIHRoZSBudW1iZXIgb2YgaG9wcy4KKyAgICAgICAgcmV0dXJuIHRoaXMuZGlzdGFuY2VFcXVhbHNOdW1iZXJPZkhvcHMgJiYgdGhpcy5tYXhEaXN0YW5jZSAhPSBudWxsCisgICAgICAgICAgICAgICAgJiYgTnVtYmVySGVscGVyLmNvbXBhcmUoZGlzdGFuY2UsIHRoaXMubWF4RGlzdGFuY2UpID4gMDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBNb3ZlIGFueSB2YWxpZCBwYXRoIGludG8gdGhlIFZQJ3MgbWVtb3J5LgorICAgICAqIEBwYXJhbSB2ZXJ0ZXggVGhlIGN1cnJlbnQgdmVydGV4LgorICAgICAqIEBwYXJhbSBtZW1vcnkgVGhlIFZlcnRleFByb2dyYW0ncyBtZW1vcnkuCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIGNvbGxlY3RTaG9ydGVzdFBhdGhzKGZpbmFsIFZlcnRleCB2ZXJ0ZXgsIGZpbmFsIE1lbW9yeSBtZW1vcnkpIHsKKworICAgICAgICBmaW5hbCBWZXJ0ZXhQcm9wZXJ0eTxNYXA8VmVydGV4LCBQYWlyPE51bWJlciwgU2V0PFBhdGg+Pj4+IHBhdGhQcm9wZXJ0eSA9IHZlcnRleC5wcm9wZXJ0eShQQVRIUyk7CisKKyAgICAgICAgaWYgKHBhdGhQcm9wZXJ0eS5pc1ByZXNlbnQoKSkgeworCisgICAgICAgICAgICBmaW5hbCBNYXA8VmVydGV4LCBQYWlyPE51bWJlciwgU2V0PFBhdGg+Pj4gcGF0aHMgPSBwYXRoUHJvcGVydHkudmFsdWUoKTsKKyAgICAgICAgICAgIGZpbmFsIExpc3Q8UGF0aD4gcmVzdWx0ID0gbmV3IEFycmF5TGlzdDw+KCk7CisKKyAgICAgICAgICAgIGZvciAoZmluYWwgUGFpcjxOdW1iZXIsIFNldDxQYXRoPj4gcGFpciA6IHBhdGhzLnZhbHVlcygpKSB7CisgICAgICAgICAgICAgICAgZm9yIChmaW5hbCBQYXRoIHBhdGggOiBwYWlyLmdldFZhbHVlMSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChpc0VuZFZlcnRleCh2ZXJ0ZXgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5kaXN0YW5jZUVxdWFsc051bWJlck9mSG9wcyB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1heERpc3RhbmNlID09IG51bGwgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVtYmVySGVscGVyLmNvbXBhcmUocGFpci5nZXRWYWx1ZTAoKSwgdGhpcy5tYXhEaXN0YW5jZSkgPD0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQocGF0aCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHBhdGhQcm9wZXJ0eS5yZW1vdmUoKTsKKworICAgICAgICAgICAgbWVtb3J5LmFkZChTSE9SVEVTVF9QQVRIUywgcmVzdWx0KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisgICAgcHVibGljIHN0YXRpYyBCdWlsZGVyIGJ1aWxkKCkgeworICAgICAgICByZXR1cm4gbmV3IEJ1aWxkZXIoKTsKKyAgICB9CisKKyAgICBAU3VwcHJlc3NXYXJuaW5ncygiV2Vha2VyQWNjZXNzIikKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGNsYXNzIEJ1aWxkZXIgZXh0ZW5kcyBBYnN0cmFjdFZlcnRleFByb2dyYW1CdWlsZGVyPEJ1aWxkZXI+IHsKKworCisgICAgICAgIHByaXZhdGUgQnVpbGRlcigpIHsKKyAgICAgICAgICAgIHN1cGVyKFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uY2xhc3MpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIEJ1aWxkZXIgc291cmNlKGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsID8+IHNvdXJjZVZlcnRleEZpbHRlcikgeworICAgICAgICAgICAgaWYgKG51bGwgPT0gc291cmNlVmVydGV4RmlsdGVyKSB0aHJvdyBHcmFwaC5FeGNlcHRpb25zLmFyZ3VtZW50Q2FuTm90QmVOdWxsKCJzb3VyY2VWZXJ0ZXhGaWx0ZXIiKTsKKyAgICAgICAgICAgIFB1cmVUcmF2ZXJzYWwuc3RvcmVTdGF0ZSh0aGlzLmNvbmZpZ3VyYXRpb24sIFNPVVJDRV9WRVJURVhfRklMVEVSLCBzb3VyY2VWZXJ0ZXhGaWx0ZXIuYXNBZG1pbigpKTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIEJ1aWxkZXIgdGFyZ2V0KGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsID8+IHRhcmdldFZlcnRleEZpbHRlcikgeworICAgICAgICAgICAgaWYgKG51bGwgPT0gdGFyZ2V0VmVydGV4RmlsdGVyKSB0aHJvdyBHcmFwaC5FeGNlcHRpb25zLmFyZ3VtZW50Q2FuTm90QmVOdWxsKCJ0YXJnZXRWZXJ0ZXhGaWx0ZXIiKTsKKyAgICAgICAgICAgIFB1cmVUcmF2ZXJzYWwuc3RvcmVTdGF0ZSh0aGlzLmNvbmZpZ3VyYXRpb24sIFRBUkdFVF9WRVJURVhfRklMVEVSLCB0YXJnZXRWZXJ0ZXhGaWx0ZXIuYXNBZG1pbigpKTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIEJ1aWxkZXIgZWRnZURpcmVjdGlvbihmaW5hbCBEaXJlY3Rpb24gZGlyZWN0aW9uKSB7CisgICAgICAgICAgICBpZiAobnVsbCA9PSBkaXJlY3Rpb24pIHRocm93IEdyYXBoLkV4Y2VwdGlvbnMuYXJndW1lbnRDYW5Ob3RCZU51bGwoImRpcmVjdGlvbiIpOworICAgICAgICAgICAgcmV0dXJuIGVkZ2VUcmF2ZXJzYWwoX18udG9FKGRpcmVjdGlvbikpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIEJ1aWxkZXIgZWRnZVRyYXZlcnNhbChmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBFZGdlPiBlZGdlVHJhdmVyc2FsKSB7CisgICAgICAgICAgICBpZiAobnVsbCA9PSBlZGdlVHJhdmVyc2FsKSB0aHJvdyBHcmFwaC5FeGNlcHRpb25zLmFyZ3VtZW50Q2FuTm90QmVOdWxsKCJlZGdlVHJhdmVyc2FsIik7CisgICAgICAgICAgICBQdXJlVHJhdmVyc2FsLnN0b3JlU3RhdGUodGhpcy5jb25maWd1cmF0aW9uLCBFREdFX1RSQVZFUlNBTCwgZWRnZVRyYXZlcnNhbC5hc0FkbWluKCkpOworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgQnVpbGRlciBkaXN0YW5jZVByb3BlcnR5KGZpbmFsIFN0cmluZyBkaXN0YW5jZSkgeworICAgICAgICAgICAgLy9ub2luc3BlY3Rpb24gdW5jaGVja2VkCisgICAgICAgICAgICByZXR1cm4gZGlzdGFuY2UgIT0gbnVsbAorICAgICAgICAgICAgICAgICAgICA/IGRpc3RhbmNlVHJhdmVyc2FsKF9fLnZhbHVlcyhkaXN0YW5jZSkpIC8vIHRvZG86IChUcmF2ZXJzYWwpIG5ldyBFbGVtZW50VmFsdWVUcmF2ZXJzYWw8PihkaXN0YW5jZSkKKyAgICAgICAgICAgICAgICAgICAgOiBkaXN0YW5jZVRyYXZlcnNhbChERUZBVUxUX0RJU1RBTkNFX1RSQVZFUlNBTC5nZXRQdXJlKCkpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIEJ1aWxkZXIgZGlzdGFuY2VUcmF2ZXJzYWwoZmluYWwgVHJhdmVyc2FsPEVkZ2UsIE51bWJlcj4gZGlzdGFuY2VUcmF2ZXJzYWwpIHsKKyAgICAgICAgICAgIGlmIChudWxsID09IGRpc3RhbmNlVHJhdmVyc2FsKSB0aHJvdyBHcmFwaC5FeGNlcHRpb25zLmFyZ3VtZW50Q2FuTm90QmVOdWxsKCJkaXN0YW5jZVRyYXZlcnNhbCIpOworICAgICAgICAgICAgUHVyZVRyYXZlcnNhbC5zdG9yZVN0YXRlKHRoaXMuY29uZmlndXJhdGlvbiwgRElTVEFOQ0VfVFJBVkVSU0FMLCBkaXN0YW5jZVRyYXZlcnNhbC5hc0FkbWluKCkpOworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgQnVpbGRlciBtYXhEaXN0YW5jZShmaW5hbCBOdW1iZXIgZGlzdGFuY2UpIHsKKyAgICAgICAgICAgIGlmIChudWxsICE9IGRpc3RhbmNlKQorICAgICAgICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5zZXRQcm9wZXJ0eShNQVhfRElTVEFOQ0UsIGRpc3RhbmNlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uY2xlYXJQcm9wZXJ0eShNQVhfRElTVEFOQ0UpOworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgQnVpbGRlciBpbmNsdWRlRWRnZXMoZmluYWwgYm9vbGVhbiBpbmNsdWRlKSB7CisgICAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uc2V0UHJvcGVydHkoSU5DTFVERV9FREdFUywgaW5jbHVkZSk7CisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBGZWF0dXJlcyBnZXRGZWF0dXJlcygpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBGZWF0dXJlcygpIHsKKyAgICAgICAgICAgIEBPdmVycmlkZQorICAgICAgICAgICAgcHVibGljIGJvb2xlYW4gcmVxdWlyZXNHbG9iYWxNZXNzYWdlU2NvcGVzKCkgeworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgICAgIHB1YmxpYyBib29sZWFuIHJlcXVpcmVzVmVydGV4UHJvcGVydHlBZGRpdGlvbigpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL3RyYXZlcnNhbC9NZW1vcnlUcmF2ZXJzYWxTaWRlRWZmZWN0cy5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL3RyYXZlcnNhbC9NZW1vcnlUcmF2ZXJzYWxTaWRlRWZmZWN0cy5qYXZhCmluZGV4IGVkMTZmYzkuLmZhNDY1OWMgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci90cmF2ZXJzYWwvTWVtb3J5VHJhdmVyc2FsU2lkZUVmZmVjdHMuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvdHJhdmVyc2FsL01lbW9yeVRyYXZlcnNhbFNpZGVFZmZlY3RzLmphdmEKQEAgLTE2Niw3ICsxNjYsNyBAQAogICAgICAgICBmaW5hbCBTZXQ8TWVtb3J5Q29tcHV0ZUtleT4ga2V5cyA9IG5ldyBIYXNoU2V0PD4oKTsKICAgICAgICAgZmluYWwgVHJhdmVyc2FsU2lkZUVmZmVjdHMgc2lkZUVmZmVjdHMgPQogICAgICAgICAgICAgICAgIHRyYXZlcnNhbC5nZXRTaWRlRWZmZWN0cygpIGluc3RhbmNlb2YgTWVtb3J5VHJhdmVyc2FsU2lkZUVmZmVjdHMgPwotICAgICAgICAgICAgICAgICAgICAgICAgKChNZW1vcnlUcmF2ZXJzYWxTaWRlRWZmZWN0cykgdHJhdmVyc2FsLmdldFNpZGVFZmZlY3RzKCkpLmdldFNpZGVFZmZlY3RzKCkgOgorICAgICAgICAgICAgICAgICAgICAgICAgKChNZW1vcnlUcmF2ZXJzYWxTaWRlRWZmZWN0cykgdHJhdmVyc2FsLmdldFNpZGVFZmZlY3RzKCkpLnNpZGVFZmZlY3RzIDoKICAgICAgICAgICAgICAgICAgICAgICAgIHRyYXZlcnNhbC5nZXRTaWRlRWZmZWN0cygpOwogICAgICAgICBzaWRlRWZmZWN0cy5rZXlzKCkuCiAgICAgICAgICAgICAgICAgc3RyZWFtKCkuCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvdHJhdmVyc2FsL3N0ZXAvbWFwL0NvbXB1dGVyUmVzdWx0U3RlcC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL3RyYXZlcnNhbC9zdGVwL21hcC9Db21wdXRlclJlc3VsdFN0ZXAuamF2YQppbmRleCBiNWZkOGU4Li45NWU1NzJkIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvdHJhdmVyc2FsL3N0ZXAvbWFwL0NvbXB1dGVyUmVzdWx0U3RlcC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci90cmF2ZXJzYWwvc3RlcC9tYXAvQ29tcHV0ZXJSZXN1bHRTdGVwLmphdmEKQEAgLTY2LDcgKzY2LDkgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50SXRlcmF0b3IubmV4dCgpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgZmluYWwgQ29tcHV0ZXJSZXN1bHQgcmVzdWx0ID0gdGhpcy5zdGFydHMubmV4dCgpLmdldCgpOwotICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEl0ZXJhdG9yID0gYXR0YWNoKHJlc3VsdC5tZW1vcnkoKS48VHJhdmVyc2VyU2V0PFM+PmdldChUcmF2ZXJzYWxWZXJ0ZXhQcm9ncmFtLkhBTFRFRF9UUkFWRVJTRVJTKS5pdGVyYXRvcigpLCByZXN1bHQuZ3JhcGgoKSk7CisgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50SXRlcmF0b3IgPSBhdHRhY2gocmVzdWx0Lm1lbW9yeSgpLmV4aXN0cyhUcmF2ZXJzYWxWZXJ0ZXhQcm9ncmFtLkhBTFRFRF9UUkFWRVJTRVJTKQorICAgICAgICAgICAgICAgICAgICAgICAgPyByZXN1bHQubWVtb3J5KCkuPFRyYXZlcnNlclNldDxTPj5nZXQoVHJhdmVyc2FsVmVydGV4UHJvZ3JhbS5IQUxURURfVFJBVkVSU0VSUykuaXRlcmF0b3IoKQorICAgICAgICAgICAgICAgICAgICAgICAgOiBFbXB0eUl0ZXJhdG9yLmluc3RhbmNlKCksIHJlc3VsdC5ncmFwaCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci90cmF2ZXJzYWwvc3RlcC9tYXAvQ29ubmVjdGVkQ29tcG9uZW50LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvdHJhdmVyc2FsL3N0ZXAvbWFwL0Nvbm5lY3RlZENvbXBvbmVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyMjIzZDgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvdHJhdmVyc2FsL3N0ZXAvbWFwL0Nvbm5lY3RlZENvbXBvbmVudC5qYXZhCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIudHJhdmVyc2FsLnN0ZXAubWFwOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLmNsdXN0ZXJpbmcuY29ubmVjdGVkLkNvbm5lY3RlZENvbXBvbmVudFZlcnRleFByb2dyYW07CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguR3JhcGhUcmF2ZXJzYWw7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGg7CisKKy8qKgorICogQ29uZmlndXJhdGlvbiBvcHRpb25zIHRvIGJlIHBhc3NlZCB0byB0aGUge0BsaW5rIEdyYXBoVHJhdmVyc2FsI3dpdGgoU3RyaW5nLCBPYmplY3QpfSBzdGVwIG9uCisgKiB7QGxpbmsgR3JhcGhUcmF2ZXJzYWwjY29ubmVjdGVkQ29tcG9uZW50KCl9ICgpfS4KKyAqLworcHVibGljIGNsYXNzIENvbm5lY3RlZENvbXBvbmVudCB7CisKKyAgICAvKioKKyAgICAgKiBUaGUgZGVmYXVsdCBwcm9wZXJ0eSBrZXkgbmFtZSB0aGF0IHdpbGwgaG9sZCB0aGUgcmVzdWx0IG9mIHRoZSBhbGdvcml0aG0uCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29tcG9uZW50ID0gQ29ubmVjdGVkQ29tcG9uZW50VmVydGV4UHJvZ3JhbS5DT01QT05FTlQ7CisKKyAgICAvKioKKyAgICAgKiBDb25maWd1cmVzIHRoZSBlZGdlIHRvIHRyYXZlcnNlIHdoZW4gY2FsY3VsYXRpbmcgdGhlIHBhZ2VyYW5rLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGVkZ2VzID0gR3JhcGguSGlkZGVuLmhpZGUoInRpbmtlcnBvcC5jb25uZWN0ZWRDb21wb25lbnQuZWRnZXMiKTsKKworICAgIC8qKgorICAgICAqIENvbmZpZ3VyZXMgdGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHdpdGhpbiB3aGljaCB0byBzdG9yZSB0aGUgcGFnZXJhbmsgdmFsdWUuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgcHJvcGVydHlOYW1lID0gR3JhcGguSGlkZGVuLmhpZGUoInRpbmtlcnBvcC5jb25uZWN0ZWRDb21wb25lbnQucHJvcGVydHlOYW1lIik7Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvdHJhdmVyc2FsL3N0ZXAvbWFwL0Nvbm5lY3RlZENvbXBvbmVudFZlcnRleFByb2dyYW1TdGVwLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvdHJhdmVyc2FsL3N0ZXAvbWFwL0Nvbm5lY3RlZENvbXBvbmVudFZlcnRleFByb2dyYW1TdGVwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzIyMmNmYQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci90cmF2ZXJzYWwvc3RlcC9tYXAvQ29ubmVjdGVkQ29tcG9uZW50VmVydGV4UHJvZ3JhbVN0ZXAuamF2YQpAQCAtMCwwICsxLDExOCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnRyYXZlcnNhbC5zdGVwLm1hcDsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5HcmFwaEZpbHRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuTWVtb3J5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5jbHVzdGVyaW5nLmNvbm5lY3RlZC5Db25uZWN0ZWRDb21wb25lbnRWZXJ0ZXhQcm9ncmFtOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwuVHJhdmVyc2FsVmVydGV4UHJvZ3JhbTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbFN0cmF0ZWdpZXM7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX187CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLkNvbmZpZ3VyaW5nOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5UcmF2ZXJzYWxQYXJlbnQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuUGFyYW1ldGVyczsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci51dGlsLlRyYXZlcnNlclNldDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuUHVyZVRyYXZlcnNhbDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5FZGdlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkdyYXBoOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLlN0cmluZ0ZhY3Rvcnk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi51dGlsLlNlcmlhbGl6ZXI7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEudXRpbC5CYXNlNjQ7CisKKy8qKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgZmluYWwgY2xhc3MgQ29ubmVjdGVkQ29tcG9uZW50VmVydGV4UHJvZ3JhbVN0ZXAgZXh0ZW5kcyBWZXJ0ZXhQcm9ncmFtU3RlcCBpbXBsZW1lbnRzIFRyYXZlcnNhbFBhcmVudCwgQ29uZmlndXJpbmcgeworCisgICAgcHJpdmF0ZSBQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBuZXcgUGFyYW1ldGVycygpOworICAgIHByaXZhdGUgUHVyZVRyYXZlcnNhbDxWZXJ0ZXgsIEVkZ2U+IGVkZ2VUcmF2ZXJzYWw7CisgICAgcHJpdmF0ZSBTdHJpbmcgY2x1c3RlclByb3BlcnR5ID0gQ29ubmVjdGVkQ29tcG9uZW50VmVydGV4UHJvZ3JhbS5DT01QT05FTlQ7CisKKyAgICBwdWJsaWMgQ29ubmVjdGVkQ29tcG9uZW50VmVydGV4UHJvZ3JhbVN0ZXAoZmluYWwgVHJhdmVyc2FsLkFkbWluIHRyYXZlcnNhbCkgeworICAgICAgICBzdXBlcih0cmF2ZXJzYWwpOworICAgICAgICB0aGlzLmNvbmZpZ3VyZShDb25uZWN0ZWRDb21wb25lbnQuZWRnZXMsIF9fLjxWZXJ0ZXg+Ym90aEUoKSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgY29uZmlndXJlKGZpbmFsIE9iamVjdC4uLiBrZXlWYWx1ZXMpIHsKKyAgICAgICAgaWYgKGtleVZhbHVlc1swXS5lcXVhbHMoQ29ubmVjdGVkQ29tcG9uZW50LmVkZ2VzKSkgeworICAgICAgICAgICAgaWYgKCEoa2V5VmFsdWVzWzFdIGluc3RhbmNlb2YgVHJhdmVyc2FsKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJDb25uZWN0ZWRDb21wb25lbnQuZWRnZXMgcmVxdWlyZXMgYSBUcmF2ZXJzYWwgYXMgaXRzIGFyZ3VtZW50Iik7CisgICAgICAgICAgICB0aGlzLmVkZ2VUcmF2ZXJzYWwgPSBuZXcgUHVyZVRyYXZlcnNhbDw+KCgoVHJhdmVyc2FsPFZlcnRleCxFZGdlPikga2V5VmFsdWVzWzFdKS5hc0FkbWluKCkpOworICAgICAgICAgICAgdGhpcy5pbnRlZ3JhdGVDaGlsZCh0aGlzLmVkZ2VUcmF2ZXJzYWwuZ2V0KCkpOworICAgICAgICB9IGVsc2UgaWYgKGtleVZhbHVlc1swXS5lcXVhbHMoQ29ubmVjdGVkQ29tcG9uZW50LnByb3BlcnR5TmFtZSkpIHsKKyAgICAgICAgICAgIGlmICghKGtleVZhbHVlc1sxXSBpbnN0YW5jZW9mIFN0cmluZykpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiQ29ubmVjdGVkQ29tcG9uZW50LnByb3BlcnR5TmFtZSByZXF1aXJlcyBhIFN0cmluZyBhcyBpdHMgYXJndW1lbnQiKTsKKyAgICAgICAgICAgIHRoaXMuY2x1c3RlclByb3BlcnR5ID0gKFN0cmluZykga2V5VmFsdWVzWzFdOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLnNldCh0aGlzLCBrZXlWYWx1ZXMpOworICAgICAgICB9CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVycygpIHsKKyAgICAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKKyAgICAgICAgcmV0dXJuIHN1cGVyLmhhc2hDb2RlKCkgXiB0aGlzLmNsdXN0ZXJQcm9wZXJ0eS5oYXNoQ29kZSgpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgIHJldHVybiBTdHJpbmdGYWN0b3J5LnN0ZXBTdHJpbmcodGhpcywgdGhpcy5jbHVzdGVyUHJvcGVydHksIG5ldyBHcmFwaEZpbHRlcih0aGlzLmNvbXB1dGVyKSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIENvbm5lY3RlZENvbXBvbmVudFZlcnRleFByb2dyYW0gZ2VuZXJhdGVQcm9ncmFtKGZpbmFsIEdyYXBoIGdyYXBoLCBmaW5hbCBNZW1vcnkgbWVtb3J5KSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbC5BZG1pbjxWZXJ0ZXgsIEVkZ2U+IGRldGFjaGVkVHJhdmVyc2FsID0gdGhpcy5lZGdlVHJhdmVyc2FsLmdldFB1cmUoKTsKKyAgICAgICAgZGV0YWNoZWRUcmF2ZXJzYWwuc2V0U3RyYXRlZ2llcyhUcmF2ZXJzYWxTdHJhdGVnaWVzLkdsb2JhbENhY2hlLmdldFN0cmF0ZWdpZXMoZ3JhcGguZ2V0Q2xhc3MoKSkpOworCisgICAgICAgIGZpbmFsIENvbm5lY3RlZENvbXBvbmVudFZlcnRleFByb2dyYW0uQnVpbGRlciBidWlsZGVyID0gQ29ubmVjdGVkQ29tcG9uZW50VmVydGV4UHJvZ3JhbS5idWlsZCgpLgorICAgICAgICAgICAgICAgIGVkZ2VzKGRldGFjaGVkVHJhdmVyc2FsKS4KKyAgICAgICAgICAgICAgICBwcm9wZXJ0eSh0aGlzLmNsdXN0ZXJQcm9wZXJ0eSk7CisKKyAgICAgICAgaWYgKG1lbW9yeS5leGlzdHMoVHJhdmVyc2FsVmVydGV4UHJvZ3JhbS5IQUxURURfVFJBVkVSU0VSUykpIHsKKyAgICAgICAgICAgIGZpbmFsIFRyYXZlcnNlclNldDw/PiBoYWx0ZWRUcmF2ZXJzZXJzID0gbWVtb3J5LmdldChUcmF2ZXJzYWxWZXJ0ZXhQcm9ncmFtLkhBTFRFRF9UUkFWRVJTRVJTKTsKKyAgICAgICAgICAgIGlmICghaGFsdGVkVHJhdmVyc2Vycy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICBPYmplY3QgaGFsdGVkVHJhdmVyc2Vyc1ZhbHVlOworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIGhhbHRlZFRyYXZlcnNlcnNWYWx1ZSA9IEJhc2U2NC5nZXRFbmNvZGVyKCkuZW5jb2RlVG9TdHJpbmcoU2VyaWFsaXplci5zZXJpYWxpemVPYmplY3QoaGFsdGVkVHJhdmVyc2VycykpOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGZpbmFsIElPRXhjZXB0aW9uIGlnbm9yZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgaGFsdGVkVHJhdmVyc2Vyc1ZhbHVlID0gaGFsdGVkVHJhdmVyc2VyczsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnVpbGRlci5jb25maWd1cmUoVHJhdmVyc2FsVmVydGV4UHJvZ3JhbS5IQUxURURfVFJBVkVSU0VSUywgaGFsdGVkVHJhdmVyc2Vyc1ZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBidWlsZGVyLmNyZWF0ZShncmFwaCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIENvbm5lY3RlZENvbXBvbmVudFZlcnRleFByb2dyYW1TdGVwIGNsb25lKCkgeworICAgICAgICByZXR1cm4gKENvbm5lY3RlZENvbXBvbmVudFZlcnRleFByb2dyYW1TdGVwKSBzdXBlci5jbG9uZSgpOworICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL3RyYXZlcnNhbC9zdGVwL21hcC9QYWdlUmFuay5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL3RyYXZlcnNhbC9zdGVwL21hcC9QYWdlUmFuay5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmOWE5NTYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvdHJhdmVyc2FsL3N0ZXAvbWFwL1BhZ2VSYW5rLmphdmEKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwuc3RlcC5tYXA7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5HcmFwaFRyYXZlcnNhbDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5HcmFwaDsKKworLyoqCisgKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gYmUgcGFzc2VkIHRvIHRoZSB7QGxpbmsgR3JhcGhUcmF2ZXJzYWwjd2l0aChTdHJpbmcsIE9iamVjdCl9IHN0ZXAgb24KKyAqIHtAbGluayBHcmFwaFRyYXZlcnNhbCNwYWdlUmFuaygpfS4KKyAqLworcHVibGljIGZpbmFsIGNsYXNzIFBhZ2VSYW5rIHsKKyAgICAvKioKKyAgICAgKiBDb25maWd1cmVzIG51bWJlciBvZiBpdGVyYXRpb25zIHRoYXQgdGhlIGFsZ29yaXRobSBzaG91bGQgcnVuLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIHRpbWVzID0gR3JhcGguSGlkZGVuLmhpZGUoInRpbmtlcnBvcC5wYWdlUmFuay50aW1lcyIpOworCisgICAgLyoqCisgICAgICogQ29uZmlndXJlcyB0aGUgZWRnZSB0byB0cmF2ZXJzZSB3aGVuIGNhbGN1bGF0aW5nIHRoZSBwYWdlcmFuay4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBlZGdlcyA9IEdyYXBoLkhpZGRlbi5oaWRlKCJ0aW5rZXJwb3AucGFnZVJhbmsuZWRnZXMiKTsKKworICAgIC8qKgorICAgICAqIENvbmZpZ3VyZXMgdGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHdpdGhpbiB3aGljaCB0byBzdG9yZSB0aGUgcGFnZXJhbmsgdmFsdWUuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgcHJvcGVydHlOYW1lID0gR3JhcGguSGlkZGVuLmhpZGUoInRpbmtlcnBvcC5wYWdlUmFuay5wcm9wZXJ0eU5hbWUiKTsKK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci90cmF2ZXJzYWwvc3RlcC9tYXAvUGFnZVJhbmtWZXJ0ZXhQcm9ncmFtU3RlcC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL3RyYXZlcnNhbC9zdGVwL21hcC9QYWdlUmFua1ZlcnRleFByb2dyYW1TdGVwLmphdmEKaW5kZXggMmY2N2FlYi4uMjc3YjRjNiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL3RyYXZlcnNhbC9zdGVwL21hcC9QYWdlUmFua1ZlcnRleFByb2dyYW1TdGVwLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL3RyYXZlcnNhbC9zdGVwL21hcC9QYWdlUmFua1ZlcnRleFByb2dyYW1TdGVwLmphdmEKQEAgLTIzLDEyICsyMywxNCBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5NZW1vcnk7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnJhbmtpbmcucGFnZXJhbmsuUGFnZVJhbmtWZXJ0ZXhQcm9ncmFtOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwubGFtYmRhLkhhbHRlZFRyYXZlcnNlcnNDb3VudFRyYXZlcnNhbDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuQ29uZmlndXJpbmc7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWxTdHJhdGVnaWVzOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLl9fOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5CeU1vZHVsYXRpbmc7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLlRpbWVzTW9kdWxhdGluZzsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuVHJhdmVyc2FsUGFyZW50OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLlBhcmFtZXRlcnM7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuVHJhdmVyc2VyUmVxdWlyZW1lbnQ7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLlB1cmVUcmF2ZXJzYWw7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuRWRnZTsKQEAgLTQyLDkgKzQ0LDEyIEBACiAKIC8qKgogICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCiAgKi8KLXB1YmxpYyBmaW5hbCBjbGFzcyBQYWdlUmFua1ZlcnRleFByb2dyYW1TdGVwIGV4dGVuZHMgVmVydGV4UHJvZ3JhbVN0ZXAgaW1wbGVtZW50cyBUcmF2ZXJzYWxQYXJlbnQsIEJ5TW9kdWxhdGluZywgVGltZXNNb2R1bGF0aW5nIHsKK3B1YmxpYyBmaW5hbCBjbGFzcyBQYWdlUmFua1ZlcnRleFByb2dyYW1TdGVwIGV4dGVuZHMgVmVydGV4UHJvZ3JhbVN0ZXAKKyAgICAgICAgaW1wbGVtZW50cyBUcmF2ZXJzYWxQYXJlbnQsIEJ5TW9kdWxhdGluZywgVGltZXNNb2R1bGF0aW5nLCBDb25maWd1cmluZyB7CiAKKyAgICBwcml2YXRlIFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IG5ldyBQYXJhbWV0ZXJzKCk7CiAgICAgcHJpdmF0ZSBQdXJlVHJhdmVyc2FsPFZlcnRleCwgRWRnZT4gZWRnZVRyYXZlcnNhbDsKICAgICBwcml2YXRlIFN0cmluZyBwYWdlUmFua1Byb3BlcnR5ID0gUGFnZVJhbmtWZXJ0ZXhQcm9ncmFtLlBBR0VfUkFOSzsKICAgICBwcml2YXRlIGludCB0aW1lcyA9IDIwOwpAQCAtNTMsMjMgKzU4LDU5IEBACiAgICAgcHVibGljIFBhZ2VSYW5rVmVydGV4UHJvZ3JhbVN0ZXAoZmluYWwgVHJhdmVyc2FsLkFkbWluIHRyYXZlcnNhbCwgZmluYWwgZG91YmxlIGFscGhhKSB7CiAgICAgICAgIHN1cGVyKHRyYXZlcnNhbCk7CiAgICAgICAgIHRoaXMuYWxwaGEgPSBhbHBoYTsKLSAgICAgICAgdGhpcy5tb2R1bGF0ZUJ5KF9fLjxWZXJ0ZXg+b3V0RSgpLmFzQWRtaW4oKSk7CisgICAgICAgIHRoaXMuY29uZmlndXJlKFBhZ2VSYW5rLmVkZ2VzLCBfXy48VmVydGV4Pm91dEUoKS5hc0FkbWluKCkpOwogICAgIH0KIAogICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIGNvbmZpZ3VyZShmaW5hbCBPYmplY3QuLi4ga2V5VmFsdWVzKSB7CisgICAgICAgIGlmIChrZXlWYWx1ZXNbMF0uZXF1YWxzKFBhZ2VSYW5rLmVkZ2VzKSkgeworICAgICAgICAgICAgaWYgKCEoa2V5VmFsdWVzWzFdIGluc3RhbmNlb2YgVHJhdmVyc2FsKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJQYWdlUmFuay5lZGdlcyByZXF1aXJlcyBhIFRyYXZlcnNhbCBhcyBpdHMgYXJndW1lbnQiKTsKKyAgICAgICAgICAgIHRoaXMuZWRnZVRyYXZlcnNhbCA9IG5ldyBQdXJlVHJhdmVyc2FsPD4oKChUcmF2ZXJzYWw8VmVydGV4LEVkZ2U+KSBrZXlWYWx1ZXNbMV0pLmFzQWRtaW4oKSk7CisgICAgICAgICAgICB0aGlzLmludGVncmF0ZUNoaWxkKHRoaXMuZWRnZVRyYXZlcnNhbC5nZXQoKSk7CisgICAgICAgIH0gZWxzZSBpZiAoa2V5VmFsdWVzWzBdLmVxdWFscyhQYWdlUmFuay5wcm9wZXJ0eU5hbWUpKSB7CisgICAgICAgICAgICBpZiAoIShrZXlWYWx1ZXNbMV0gaW5zdGFuY2VvZiBTdHJpbmcpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlBhZ2VSYW5rLnByb3BlcnR5TmFtZSByZXF1aXJlcyBhIFN0cmluZyBhcyBpdHMgYXJndW1lbnQiKTsKKyAgICAgICAgICAgIHRoaXMucGFnZVJhbmtQcm9wZXJ0eSA9IChTdHJpbmcpIGtleVZhbHVlc1sxXTsKKyAgICAgICAgfSBlbHNlIGlmIChrZXlWYWx1ZXNbMF0uZXF1YWxzKFBhZ2VSYW5rLnRpbWVzKSkgeworICAgICAgICAgICAgaWYgKCEoa2V5VmFsdWVzWzFdIGluc3RhbmNlb2YgSW50ZWdlcikpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiUGFnZVJhbmsudGltZXMgcmVxdWlyZXMgYW4gSW50ZWdlciBhcyBpdHMgYXJndW1lbnQiKTsKKyAgICAgICAgICAgIHRoaXMudGltZXMgPSAoaW50KSBrZXlWYWx1ZXNbMV07CisgICAgICAgIH1lbHNlIHsKKyAgICAgICAgICAgIHRoaXMucGFyYW1ldGVycy5zZXQodGhpcywga2V5VmFsdWVzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBQYXJhbWV0ZXJzIGdldFBhcmFtZXRlcnMoKSB7CisgICAgICAgIHJldHVybiBwYXJhbWV0ZXJzOworICAgIH0KKworICAgIC8qKgorICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy40LjAsIHJlcGxhY2VkIGJ5IHtAbGluayAjY29uZmlndXJlKE9iamVjdC4uLil9CisgICAgICovCisgICAgQERlcHJlY2F0ZWQKKyAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgdm9pZCBtb2R1bGF0ZUJ5KGZpbmFsIFRyYXZlcnNhbC5BZG1pbjw/LCA/PiBlZGdlVHJhdmVyc2FsKSB7Ci0gICAgICAgIHRoaXMuZWRnZVRyYXZlcnNhbCA9IG5ldyBQdXJlVHJhdmVyc2FsPD4oKFRyYXZlcnNhbC5BZG1pbjxWZXJ0ZXgsIEVkZ2U+KSBlZGdlVHJhdmVyc2FsKTsKLSAgICAgICAgdGhpcy5pbnRlZ3JhdGVDaGlsZCh0aGlzLmVkZ2VUcmF2ZXJzYWwuZ2V0KCkpOworICAgICAgICBjb25maWd1cmUoUGFnZVJhbmsuZWRnZXMsIGVkZ2VUcmF2ZXJzYWwpOwogICAgIH0KIAorICAgIC8qKgorICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy40LjAsIHJlcGxhY2VkIGJ5IHtAbGluayAjY29uZmlndXJlKE9iamVjdC4uLil9CisgICAgICovCisgICAgQERlcHJlY2F0ZWQKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgdm9pZCBtb2R1bGF0ZUJ5KGZpbmFsIFN0cmluZyBwYWdlUmFua1Byb3BlcnR5KSB7Ci0gICAgICAgIHRoaXMucGFnZVJhbmtQcm9wZXJ0eSA9IHBhZ2VSYW5rUHJvcGVydHk7CisgICAgICAgIGNvbmZpZ3VyZShQYWdlUmFuay5wcm9wZXJ0eU5hbWUsIHBhZ2VSYW5rUHJvcGVydHkpOwogICAgIH0KIAorICAgIC8qKgorICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy40LjAsIHJlcGxhY2VkIGJ5IHtAbGluayAjY29uZmlndXJlKE9iamVjdC4uLil9CisgICAgICovCisgICAgQERlcHJlY2F0ZWQKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgdm9pZCBtb2R1bGF0ZVRpbWVzKGludCB0aW1lcykgewotICAgICAgICB0aGlzLnRpbWVzID0gdGltZXM7CisgICAgICAgIGNvbmZpZ3VyZShQYWdlUmFuay50aW1lcywgdGltZXMpOwogICAgIH0KIAogICAgIEBPdmVycmlkZQpAQCAtMTE4LDQgKzE1OSw1IEBACiAgICAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKICAgICAgICAgcmV0dXJuIHN1cGVyLmhhc2hDb2RlKCkgXiB0aGlzLmVkZ2VUcmF2ZXJzYWwuaGFzaENvZGUoKSBeIHRoaXMucGFnZVJhbmtQcm9wZXJ0eS5oYXNoQ29kZSgpIF4gdGhpcy50aW1lczsKICAgICB9CisKIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci90cmF2ZXJzYWwvc3RlcC9tYXAvUGVlclByZXNzdXJlLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvdHJhdmVyc2FsL3N0ZXAvbWFwL1BlZXJQcmVzc3VyZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwMDUxZjIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvdHJhdmVyc2FsL3N0ZXAvbWFwL1BlZXJQcmVzc3VyZS5qYXZhCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIudHJhdmVyc2FsLnN0ZXAubWFwOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguR3JhcGhUcmF2ZXJzYWw7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGg7CisKKy8qKgorICogQ29uZmlndXJhdGlvbiBvcHRpb25zIHRvIGJlIHBhc3NlZCB0byB0aGUge0BsaW5rIEdyYXBoVHJhdmVyc2FsI3dpdGgoU3RyaW5nLCBPYmplY3QpfSBzdGVwIG9uCisgKiB7QGxpbmsgR3JhcGhUcmF2ZXJzYWwjcGVlclByZXNzdXJlKCl9LgorICovCitwdWJsaWMgZmluYWwgY2xhc3MgUGVlclByZXNzdXJlIHsKKyAgICAvKioKKyAgICAgKiBDb25maWd1cmVzIG51bWJlciBvZiBpdGVyYXRpb25zIHRoYXQgdGhlIGFsZ29yaXRobSBzaG91bGQgcnVuLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIHRpbWVzID0gR3JhcGguSGlkZGVuLmhpZGUoInRpbmtlcnBvcC5wZWVyUHJlc3N1cmUudGltZXMiKTsKKworICAgIC8qKgorICAgICAqIENvbmZpZ3VyZXMgdGhlIGVkZ2UgdG8gdHJhdmVyc2Ugd2hlbiBkZXRlcm1pbmluZyBjbHVzdGVycy4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBlZGdlcyA9IEdyYXBoLkhpZGRlbi5oaWRlKCJ0aW5rZXJwb3AucGVlclByZXNzdXJlLmVkZ2VzIik7CisKKyAgICAvKioKKyAgICAgKiBDb25maWd1cmVzIHRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB3aXRoaW4gd2hpY2ggdG8gc3RvcmUgdGhlIGNsdXN0ZXIgdmFsdWUuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgcHJvcGVydHlOYW1lID0gR3JhcGguSGlkZGVuLmhpZGUoInRpbmtlcnBvcC5wZWVyUHJlc3N1cmUucHJvcGVydHlOYW1lIik7Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvdHJhdmVyc2FsL3N0ZXAvbWFwL1BlZXJQcmVzc3VyZVZlcnRleFByb2dyYW1TdGVwLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvdHJhdmVyc2FsL3N0ZXAvbWFwL1BlZXJQcmVzc3VyZVZlcnRleFByb2dyYW1TdGVwLmphdmEKaW5kZXggNDdkNDE2MC4uZTFjYmE2MCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL3RyYXZlcnNhbC9zdGVwL21hcC9QZWVyUHJlc3N1cmVWZXJ0ZXhQcm9ncmFtU3RlcC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci90cmF2ZXJzYWwvc3RlcC9tYXAvUGVlclByZXNzdXJlVmVydGV4UHJvZ3JhbVN0ZXAuamF2YQpAQCAtMjcsOCArMjcsMTAgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbFN0cmF0ZWdpZXM7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX187CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLkJ5TW9kdWxhdGluZzsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuQ29uZmlndXJpbmc7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLlRpbWVzTW9kdWxhdGluZzsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuVHJhdmVyc2FsUGFyZW50OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLlBhcmFtZXRlcnM7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuVHJhdmVyc2VyUmVxdWlyZW1lbnQ7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLlB1cmVUcmF2ZXJzYWw7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuRWRnZTsKQEAgLTQyLDE2ICs0NCw0NCBAQAogCiAvKioKICAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQogICovCi1wdWJsaWMgZmluYWwgY2xhc3MgUGVlclByZXNzdXJlVmVydGV4UHJvZ3JhbVN0ZXAgZXh0ZW5kcyBWZXJ0ZXhQcm9ncmFtU3RlcCBpbXBsZW1lbnRzIFRyYXZlcnNhbFBhcmVudCwgQnlNb2R1bGF0aW5nLCBUaW1lc01vZHVsYXRpbmcgeworcHVibGljIGZpbmFsIGNsYXNzIFBlZXJQcmVzc3VyZVZlcnRleFByb2dyYW1TdGVwIGV4dGVuZHMgVmVydGV4UHJvZ3JhbVN0ZXAKKyAgICAgICAgaW1wbGVtZW50cyBUcmF2ZXJzYWxQYXJlbnQsIEJ5TW9kdWxhdGluZywgVGltZXNNb2R1bGF0aW5nLCBDb25maWd1cmluZyB7CiAKKyAgICBwcml2YXRlIFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IG5ldyBQYXJhbWV0ZXJzKCk7CiAgICAgcHJpdmF0ZSBQdXJlVHJhdmVyc2FsPFZlcnRleCwgRWRnZT4gZWRnZVRyYXZlcnNhbDsKICAgICBwcml2YXRlIFN0cmluZyBjbHVzdGVyUHJvcGVydHkgPSBQZWVyUHJlc3N1cmVWZXJ0ZXhQcm9ncmFtLkNMVVNURVI7CiAgICAgcHJpdmF0ZSBpbnQgdGltZXMgPSAzMDsKIAogICAgIHB1YmxpYyBQZWVyUHJlc3N1cmVWZXJ0ZXhQcm9ncmFtU3RlcChmaW5hbCBUcmF2ZXJzYWwuQWRtaW4gdHJhdmVyc2FsKSB7CiAgICAgICAgIHN1cGVyKHRyYXZlcnNhbCk7Ci0gICAgICAgIHRoaXMubW9kdWxhdGVCeShfXy48VmVydGV4Pm91dEUoKS5hc0FkbWluKCkpOworICAgICAgICB0aGlzLmNvbmZpZ3VyZShQZWVyUHJlc3N1cmUuZWRnZXMsIF9fLjxWZXJ0ZXg+b3V0RSgpLmFzQWRtaW4oKSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgY29uZmlndXJlKGZpbmFsIE9iamVjdC4uLiBrZXlWYWx1ZXMpIHsKKyAgICAgICAgaWYgKGtleVZhbHVlc1swXS5lcXVhbHMoUGVlclByZXNzdXJlLmVkZ2VzKSkgeworICAgICAgICAgICAgaWYgKCEoa2V5VmFsdWVzWzFdIGluc3RhbmNlb2YgVHJhdmVyc2FsKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJQZWVyUHJlc3N1cmUuZWRnZXMgcmVxdWlyZXMgYSBUcmF2ZXJzYWwgYXMgaXRzIGFyZ3VtZW50Iik7CisgICAgICAgICAgICB0aGlzLmVkZ2VUcmF2ZXJzYWwgPSBuZXcgUHVyZVRyYXZlcnNhbDw+KCgoVHJhdmVyc2FsPFZlcnRleCxFZGdlPikga2V5VmFsdWVzWzFdKS5hc0FkbWluKCkpOworICAgICAgICAgICAgdGhpcy5pbnRlZ3JhdGVDaGlsZCh0aGlzLmVkZ2VUcmF2ZXJzYWwuZ2V0KCkpOworICAgICAgICB9IGVsc2UgaWYgKGtleVZhbHVlc1swXS5lcXVhbHMoUGVlclByZXNzdXJlLnByb3BlcnR5TmFtZSkpIHsKKyAgICAgICAgICAgIGlmICghKGtleVZhbHVlc1sxXSBpbnN0YW5jZW9mIFN0cmluZykpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiUGVlclByZXNzdXJlLnByb3BlcnR5TmFtZSByZXF1aXJlcyBhIFN0cmluZyBhcyBpdHMgYXJndW1lbnQiKTsKKyAgICAgICAgICAgIHRoaXMuY2x1c3RlclByb3BlcnR5ID0gKFN0cmluZykga2V5VmFsdWVzWzFdOworICAgICAgICB9IGVsc2UgaWYgKGtleVZhbHVlc1swXS5lcXVhbHMoUGVlclByZXNzdXJlLnRpbWVzKSkgeworICAgICAgICAgICAgaWYgKCEoa2V5VmFsdWVzWzFdIGluc3RhbmNlb2YgSW50ZWdlcikpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiUGVlclByZXNzdXJlLnRpbWVzIHJlcXVpcmVzIGFuIEludGVnZXIgYXMgaXRzIGFyZ3VtZW50Iik7CisgICAgICAgICAgICB0aGlzLnRpbWVzID0gKGludCkga2V5VmFsdWVzWzFdOworICAgICAgICB9ZWxzZSB7CisgICAgICAgICAgICB0aGlzLnBhcmFtZXRlcnMuc2V0KHRoaXMsIGtleVZhbHVlcyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKCkgeworICAgICAgICByZXR1cm4gcGFyYW1ldGVyczsKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKQEAgLTU5LDIwICs4OSwzMSBAQAogICAgICAgICByZXR1cm4gc3VwZXIuaGFzaENvZGUoKSBeIHRoaXMuZWRnZVRyYXZlcnNhbC5oYXNoQ29kZSgpIF4gdGhpcy5jbHVzdGVyUHJvcGVydHkuaGFzaENvZGUoKSBeIHRoaXMudGltZXM7CiAgICAgfQogCisgICAgLyoqCisgICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjQuMCwgcmVwbGFjZWQgYnkge0BsaW5rICNjb25maWd1cmUoT2JqZWN0Li4uKX0KKyAgICAgKi8KKyAgICBARGVwcmVjYXRlZAogICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyB2b2lkIG1vZHVsYXRlQnkoZmluYWwgVHJhdmVyc2FsLkFkbWluPD8sID8+IGVkZ2VUcmF2ZXJzYWwpIHsKLSAgICAgICAgdGhpcy5lZGdlVHJhdmVyc2FsID0gbmV3IFB1cmVUcmF2ZXJzYWw8PigoVHJhdmVyc2FsLkFkbWluPFZlcnRleCwgRWRnZT4pIGVkZ2VUcmF2ZXJzYWwpOwotICAgICAgICB0aGlzLmludGVncmF0ZUNoaWxkKHRoaXMuZWRnZVRyYXZlcnNhbC5nZXQoKSk7CisgICAgICAgIGNvbmZpZ3VyZShQZWVyUHJlc3N1cmUuZWRnZXMsIGVkZ2VUcmF2ZXJzYWwpOwogICAgIH0KIAorICAgIC8qKgorICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy40LjAsIHJlcGxhY2VkIGJ5IHtAbGluayAjY29uZmlndXJlKE9iamVjdC4uLil9CisgICAgICovCisgICAgQERlcHJlY2F0ZWQKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgdm9pZCBtb2R1bGF0ZUJ5KGZpbmFsIFN0cmluZyBjbHVzdGVyUHJvcGVydHkpIHsKLSAgICAgICAgdGhpcy5jbHVzdGVyUHJvcGVydHkgPSBjbHVzdGVyUHJvcGVydHk7CisgICAgICAgIGNvbmZpZ3VyZShQZWVyUHJlc3N1cmUucHJvcGVydHlOYW1lLCBjbHVzdGVyUHJvcGVydHkpOwogICAgIH0KIAorICAgIC8qKgorICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy40LjAsIHJlcGxhY2VkIGJ5IHtAbGluayAjY29uZmlndXJlKE9iamVjdC4uLil9CisgICAgICovCisgICAgQERlcHJlY2F0ZWQKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgdm9pZCBtb2R1bGF0ZVRpbWVzKGludCB0aW1lcykgewotICAgICAgICB0aGlzLnRpbWVzID0gdGltZXM7CisgICAgICAgIGNvbmZpZ3VyZShQZWVyUHJlc3N1cmUudGltZXMsIHRpbWVzKTsKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKQEAgLTExNSw0ICsxNTYsNSBAQAogICAgICAgICBzdXBlci5zZXRUcmF2ZXJzYWwocGFyZW50VHJhdmVyc2FsKTsKICAgICAgICAgdGhpcy5pbnRlZ3JhdGVDaGlsZCh0aGlzLmVkZ2VUcmF2ZXJzYWwuZ2V0KCkpOwogICAgIH0KKwogfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL3RyYXZlcnNhbC9zdGVwL21hcC9TaG9ydGVzdFBhdGguamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci90cmF2ZXJzYWwvc3RlcC9tYXAvU2hvcnRlc3RQYXRoLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjBkNzgxNQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci90cmF2ZXJzYWwvc3RlcC9tYXAvU2hvcnRlc3RQYXRoLmphdmEKQEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIudHJhdmVyc2FsLnN0ZXAubWFwOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguR3JhcGhUcmF2ZXJzYWw7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX187CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuRGlyZWN0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkdyYXBoOworCisvKioKKyAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBiZSBwYXNzZWQgdG8gdGhlIHtAbGluayBHcmFwaFRyYXZlcnNhbCN3aXRoKFN0cmluZywgT2JqZWN0KX0gc3RlcC4KKyAqLworcHVibGljIGNsYXNzIFNob3J0ZXN0UGF0aCB7CisKKyAgICAvKioKKyAgICAgKiBDb25maWd1cmVzIHRoZSB0cmF2ZXJzYWwgdG8gdXNlIHRvIGZpbHRlciB0aGUgdGFyZ2V0IHZlcnRpY2VzIGZvciBhbGwgc2hvcnRlc3QgcGF0aHMuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgdGFyZ2V0ID0gR3JhcGguSGlkZGVuLmhpZGUoInRpbmtlcnBvcC5zaG9ydGVzdFBhdGgudGFyZ2V0Iik7CisKKyAgICAvKioKKyAgICAgKiBDb25maWd1cmVzIHRoZSBkaXJlY3Rpb24gb3IgdHJhdmVyc2FsIHRvIHVzZSB0byBmaWx0ZXIgdGhlIGVkZ2VzIHRyYXZlcnNlZCBkdXJpbmcgdGhlIHNob3J0ZXN0IHBhdGggc2VhcmNoIHBoYXNlLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGVkZ2VzID0gR3JhcGguSGlkZGVuLmhpZGUoInRpbmtlcnBvcC5zaG9ydGVzdFBhdGguZWRnZXMiKTsKKworICAgIC8qKgorICAgICAqIENvbmZpZ3VyZXMgdGhlIGVkZ2UgcHJvcGVydHkgb3IgdHJhdmVyc2FsIHRvIHVzZSBmb3Igc2hvcnRlc3QgcGF0aCBkaXN0YW5jZSBjYWxjdWxhdGlvbnMuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgZGlzdGFuY2UgPSBHcmFwaC5IaWRkZW4uaGlkZSgidGlua2VycG9wLnNob3J0ZXN0UGF0aC5kaXN0YW5jZSIpOworCisgICAgLyoqCisgICAgICogQ29uZmlndXJlcyB0aGUgbWF4aW11bSBkaXN0YW5jZSBmb3IgYWxsIHNob3J0ZXN0IHBhdGhzLiBBbnkgcGF0aCB3aXRoIGEgZGlzdGFuY2UgZ3JlYXRlciB0aGFuIHRoZSBzcGVjaWZpZWQKKyAgICAgKiB2YWx1ZSB3aWxsIG5vdCBiZSByZXR1cm5lZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBtYXhEaXN0YW5jZSA9IEdyYXBoLkhpZGRlbi5oaWRlKCJ0aW5rZXJwb3Auc2hvcnRlc3RQYXRoLm1heERpc3RhbmNlIik7CisKKyAgICAvKioKKyAgICAgKiBDb25maWd1cmVzIHRoZSBpbmNsdXNpb24gb2YgZWRnZXMgaW4gdGhlIHNob3J0ZXN0IHBhdGggY29tcHV0YXRpb24gcmVzdWx0LgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGluY2x1ZGVFZGdlcyA9IEdyYXBoLkhpZGRlbi5oaWRlKCJ0aW5rZXJwb3Auc2hvcnRlc3RQYXRoLmluY2x1ZGVFZGdlcyIpOworCisgICAgc3RhdGljIGJvb2xlYW4gY29uZmlndXJlKGZpbmFsIFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW1TdGVwIHN0ZXAsIGZpbmFsIFN0cmluZyBrZXksIGZpbmFsIE9iamVjdCB2YWx1ZSkgeworCisgICAgICAgIGlmICh0YXJnZXQuZXF1YWxzKGtleSkpIHsKKyAgICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFRyYXZlcnNhbCkgeworICAgICAgICAgICAgICAgIHN0ZXAuc2V0VGFyZ2V0VmVydGV4RmlsdGVyKChUcmF2ZXJzYWwpIHZhbHVlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiU2hvcnRlc3RQYXRoLnRhcmdldCByZXF1aXJlcyBhIFRyYXZlcnNhbCBhcyBpdHMgYXJndW1lbnQiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChlZGdlcy5lcXVhbHMoa2V5KSkgeworICAgICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgVHJhdmVyc2FsKSB7CisgICAgICAgICAgICAgICAgc3RlcC5zZXRFZGdlVHJhdmVyc2FsKChUcmF2ZXJzYWwpIHZhbHVlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGlyZWN0aW9uKSB7CisgICAgICAgICAgICAgICAgc3RlcC5zZXRFZGdlVHJhdmVyc2FsKF9fLnRvRSgoRGlyZWN0aW9uKSB2YWx1ZSkpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAiU2hvcnRlc3RQYXRoLmVkZ2VzIHJlcXVpcmVzIGEgVHJhdmVyc2FsIG9yIGEgRGlyZWN0aW9uIGFzIGl0cyBhcmd1bWVudCIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGRpc3RhbmNlLmVxdWFscyhrZXkpKSB7CisgICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBUcmF2ZXJzYWwpIHsKKyAgICAgICAgICAgICAgICBzdGVwLnNldERpc3RhbmNlVHJhdmVyc2FsKChUcmF2ZXJzYWwpIHZhbHVlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgU3RyaW5nKSB7CisgICAgICAgICAgICAgICAgLy8gdG9kbzogbmV3IEVsZW1lbnRWYWx1ZVRyYXZlcnNhbCgoU3RyaW5nKSB2YWx1ZSkKKyAgICAgICAgICAgICAgICBzdGVwLnNldERpc3RhbmNlVHJhdmVyc2FsKF9fLnZhbHVlcygoU3RyaW5nKSB2YWx1ZSkpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAiU2hvcnRlc3RQYXRoLmRpc3RhbmNlIHJlcXVpcmVzIGEgVHJhdmVyc2FsIG9yIGEgcHJvcGVydHkgbmFtZSBhcyBpdHMgYXJndW1lbnQiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChtYXhEaXN0YW5jZS5lcXVhbHMoa2V5KSkgeworICAgICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTnVtYmVyKSB7CisgICAgICAgICAgICAgICAgc3RlcC5zZXRNYXhEaXN0YW5jZSgoTnVtYmVyKSB2YWx1ZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlNob3J0ZXN0UGF0aC5tYXhEaXN0YW5jZSByZXF1aXJlcyBhIE51bWJlciBhcyBpdHMgYXJndW1lbnQiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChpbmNsdWRlRWRnZXMuZXF1YWxzKGtleSkpIHsKKyAgICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEJvb2xlYW4pIHsKKyAgICAgICAgICAgICAgICBzdGVwLnNldEluY2x1ZGVFZGdlcygoQm9vbGVhbikgdmFsdWUpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJTaG9ydGVzdFBhdGguaW5jbHVkZUVkZ2VzIHJlcXVpcmVzIGEgQm9vbGVhbiBhcyBpdHMgYXJndW1lbnQiKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL3RyYXZlcnNhbC9zdGVwL21hcC9TaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtU3RlcC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL3RyYXZlcnNhbC9zdGVwL21hcC9TaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtU3RlcC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5YTA5ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvdHJhdmVyc2FsL3N0ZXAvbWFwL1Nob3J0ZXN0UGF0aFZlcnRleFByb2dyYW1TdGVwLmphdmEKQEAgLTAsMCArMSwxODUgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwuc3RlcC5tYXA7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuQ29tcHV0ZXJSZXN1bHQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLkdyYXBoRmlsdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5NZW1vcnk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnNlYXJjaC5wYXRoLlNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW07CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnRyYXZlcnNhbC5UcmF2ZXJzYWxWZXJ0ZXhQcm9ncmFtOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2VyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5Db25maWd1cmluZzsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuVHJhdmVyc2FsUGFyZW50OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLlBhcmFtZXRlcnM7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuVHJhdmVyc2VyUmVxdWlyZW1lbnQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIudXRpbC5UcmF2ZXJzZXJTZXQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLlB1cmVUcmF2ZXJzYWw7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuRWRnZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5HcmFwaDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5TdHJpbmdGYWN0b3J5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udXRpbC5TZXJpYWxpemVyOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworaW1wb3J0IGphdmEudXRpbC5CYXNlNjQ7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgamF2YS51dGlsLk5vU3VjaEVsZW1lbnRFeGNlcHRpb247CitpbXBvcnQgamF2YS51dGlsLlNldDsKKworLyoqCisgKiBAYXV0aG9yIERhbmllbCBLdXBwaXR6IChodHRwOi8vZ3JlbWxpbi5ndXJ1KQorICovCitwdWJsaWMgZmluYWwgY2xhc3MgU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbVN0ZXAgZXh0ZW5kcyBWZXJ0ZXhQcm9ncmFtU3RlcCBpbXBsZW1lbnRzIFRyYXZlcnNhbFBhcmVudCwgQ29uZmlndXJpbmcgeworCisgICAgcHJpdmF0ZSBQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBuZXcgUGFyYW1ldGVycygpOworICAgIHByaXZhdGUgUHVyZVRyYXZlcnNhbDxWZXJ0ZXgsID8+IHRhcmdldFZlcnRleEZpbHRlciA9IFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uREVGQVVMVF9WRVJURVhfRklMVEVSX1RSQVZFUlNBTC5jbG9uZSgpOworICAgIHByaXZhdGUgUHVyZVRyYXZlcnNhbDxWZXJ0ZXgsIEVkZ2U+IGVkZ2VUcmF2ZXJzYWwgPSBTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtLkRFRkFVTFRfRURHRV9UUkFWRVJTQUwuY2xvbmUoKTsKKyAgICBwcml2YXRlIFB1cmVUcmF2ZXJzYWw8RWRnZSwgTnVtYmVyPiBkaXN0YW5jZVRyYXZlcnNhbCA9IFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uREVGQVVMVF9ESVNUQU5DRV9UUkFWRVJTQUwuY2xvbmUoKTsKKyAgICBwcml2YXRlIE51bWJlciBtYXhEaXN0YW5jZTsKKyAgICBwcml2YXRlIGJvb2xlYW4gaW5jbHVkZUVkZ2VzOworCisgICAgcHVibGljIFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW1TdGVwKGZpbmFsIFRyYXZlcnNhbC5BZG1pbjw/LCA/PiB0cmF2ZXJzYWwpIHsKKyAgICAgICAgc3VwZXIodHJhdmVyc2FsKTsKKyAgICB9CisKKyAgICB2b2lkIHNldFRhcmdldFZlcnRleEZpbHRlcihmaW5hbCBUcmF2ZXJzYWwgZmlsdGVyVHJhdmVyc2FsKSB7CisgICAgICAgIHRoaXMudGFyZ2V0VmVydGV4RmlsdGVyID0gbmV3IFB1cmVUcmF2ZXJzYWw8Pih0aGlzLmludGVncmF0ZUNoaWxkKGZpbHRlclRyYXZlcnNhbC5hc0FkbWluKCkpKTsKKyAgICB9CisKKyAgICB2b2lkIHNldEVkZ2VUcmF2ZXJzYWwoZmluYWwgVHJhdmVyc2FsIGVkZ2VUcmF2ZXJzYWwpIHsKKyAgICAgICAgdGhpcy5lZGdlVHJhdmVyc2FsID0gbmV3IFB1cmVUcmF2ZXJzYWw8Pih0aGlzLmludGVncmF0ZUNoaWxkKGVkZ2VUcmF2ZXJzYWwuYXNBZG1pbigpKSk7CisgICAgfQorCisgICAgdm9pZCBzZXREaXN0YW5jZVRyYXZlcnNhbChmaW5hbCBUcmF2ZXJzYWwgZGlzdGFuY2VUcmF2ZXJzYWwpIHsKKyAgICAgICAgdGhpcy5kaXN0YW5jZVRyYXZlcnNhbCA9IG5ldyBQdXJlVHJhdmVyc2FsPD4odGhpcy5pbnRlZ3JhdGVDaGlsZChkaXN0YW5jZVRyYXZlcnNhbC5hc0FkbWluKCkpKTsKKyAgICB9CisKKyAgICB2b2lkIHNldE1heERpc3RhbmNlKGZpbmFsIE51bWJlciBtYXhEaXN0YW5jZSkgeworICAgICAgICB0aGlzLm1heERpc3RhbmNlID0gbWF4RGlzdGFuY2U7CisgICAgfQorCisgICAgdm9pZCBzZXRJbmNsdWRlRWRnZXMoZmluYWwgYm9vbGVhbiBpbmNsdWRlRWRnZXMpIHsKKyAgICAgICAgdGhpcy5pbmNsdWRlRWRnZXMgPSBpbmNsdWRlRWRnZXM7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgY29uZmlndXJlKGZpbmFsIE9iamVjdC4uLiBrZXlWYWx1ZXMpIHsKKyAgICAgICAgaWYgKCFTaG9ydGVzdFBhdGguY29uZmlndXJlKHRoaXMsIChTdHJpbmcpIGtleVZhbHVlc1swXSwga2V5VmFsdWVzWzFdKSkgeworICAgICAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLnNldCh0aGlzLCBrZXlWYWx1ZXMpOworICAgICAgICB9CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVycygpIHsKKyAgICAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIFRyYXZlcnNlci5BZG1pbjxDb21wdXRlclJlc3VsdD4gcHJvY2Vzc05leHRTdGFydCgpIHRocm93cyBOb1N1Y2hFbGVtZW50RXhjZXB0aW9uIHsKKyAgICAgICAgcmV0dXJuIHN1cGVyLnByb2Nlc3NOZXh0U3RhcnQoKTsKKyAgICB9CisKKyAgICBAU3VwcHJlc3NXYXJuaW5ncygidW5jaGVja2VkIikKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgTGlzdDxUcmF2ZXJzYWwuQWRtaW48PywgPz4+IGdldExvY2FsQ2hpbGRyZW4oKSB7CisgICAgICAgIHJldHVybiBBcnJheXMuYXNMaXN0KAorICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0VmVydGV4RmlsdGVyLmdldCgpLAorICAgICAgICAgICAgICAgIHRoaXMuZWRnZVRyYXZlcnNhbC5nZXQoKSwKKyAgICAgICAgICAgICAgICB0aGlzLmRpc3RhbmNlVHJhdmVyc2FsLmdldCgpKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICByZXR1cm4gU3RyaW5nRmFjdG9yeS5zdGVwU3RyaW5nKHRoaXMsIHRoaXMudGFyZ2V0VmVydGV4RmlsdGVyLmdldCgpLCB0aGlzLmVkZ2VUcmF2ZXJzYWwuZ2V0KCksCisgICAgICAgICAgICAgICAgdGhpcy5kaXN0YW5jZVRyYXZlcnNhbC5nZXQoKSwgdGhpcy5tYXhEaXN0YW5jZSwgdGhpcy5pbmNsdWRlRWRnZXMsIG5ldyBHcmFwaEZpbHRlcih0aGlzLmNvbXB1dGVyKSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0gZ2VuZXJhdGVQcm9ncmFtKGZpbmFsIEdyYXBoIGdyYXBoLCBmaW5hbCBNZW1vcnkgbWVtb3J5KSB7CisKKyAgICAgICAgZmluYWwgU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5CdWlsZGVyIGJ1aWxkZXIgPSBTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtLmJ1aWxkKCkKKyAgICAgICAgICAgICAgICAudGFyZ2V0KHRoaXMudGFyZ2V0VmVydGV4RmlsdGVyLmdldFB1cmUoKSkKKyAgICAgICAgICAgICAgICAuZWRnZVRyYXZlcnNhbCh0aGlzLmVkZ2VUcmF2ZXJzYWwuZ2V0UHVyZSgpKQorICAgICAgICAgICAgICAgIC5kaXN0YW5jZVRyYXZlcnNhbCh0aGlzLmRpc3RhbmNlVHJhdmVyc2FsLmdldFB1cmUoKSkKKyAgICAgICAgICAgICAgICAubWF4RGlzdGFuY2UodGhpcy5tYXhEaXN0YW5jZSkKKyAgICAgICAgICAgICAgICAuaW5jbHVkZUVkZ2VzKHRoaXMuaW5jbHVkZUVkZ2VzKTsKKworICAgICAgICAvL25vaW5zcGVjdGlvbiB1bmNoZWNrZWQKKyAgICAgICAgZmluYWwgUHVyZVRyYXZlcnNhbCBwdXJlUm9vdFRyYXZlcnNhbCA9IG5ldyBQdXJlVHJhdmVyc2FsPD4odGhpcy50cmF2ZXJzYWwpOworICAgICAgICBPYmplY3Qgcm9vdFRyYXZlcnNhbFZhbHVlOworICAgICAgICB0cnkgeworICAgICAgICAgICAgcm9vdFRyYXZlcnNhbFZhbHVlID0gQmFzZTY0LmdldEVuY29kZXIoKS5lbmNvZGVUb1N0cmluZyhTZXJpYWxpemVyLnNlcmlhbGl6ZU9iamVjdChwdXJlUm9vdFRyYXZlcnNhbCkpOworICAgICAgICB9IGNhdGNoIChmaW5hbCBJT0V4Y2VwdGlvbiBpZ25vcmVkKSB7CisgICAgICAgICAgICByb290VHJhdmVyc2FsVmFsdWUgPSBwdXJlUm9vdFRyYXZlcnNhbDsKKyAgICAgICAgfQorCisgICAgICAgIGJ1aWxkZXIuY29uZmlndXJlKAorICAgICAgICAgICAgICAgIFByb2dyYW1WZXJ0ZXhQcm9ncmFtU3RlcC5ST09UX1RSQVZFUlNBTCwgcm9vdFRyYXZlcnNhbFZhbHVlLAorICAgICAgICAgICAgICAgIFByb2dyYW1WZXJ0ZXhQcm9ncmFtU3RlcC5TVEVQX0lELCB0aGlzLmlkKTsKKworICAgICAgICAvLyBUaGVyZSBhcmUgdHdvIGxvY2F0aW9ucyBpbiB3aGljaCBoYWx0ZWQgdHJhdmVyc2VycyBjYW4gYmUgc3RvcmVkOiBpbiBtZW1vcnkgb3IgYXMgdmVydGV4IHByb3BlcnRpZXMuIEluIHRoZQorICAgICAgICAvLyBmb3JtZXIgY2FzZSB0aGV5IG5lZWQgdG8gYmUgY29waWVkIHRvIHRoaXMgVmVydGV4UHJvZ3JhbSdzIGNvbmZpZ3VyYXRpb24gYXMgdGhlIFZQIHdvbid0IGhhdmUgYWNjZXNzIHRvIHRoZQorICAgICAgICAvLyBwcmV2aW91cyBWUCdzIG1lbW9yeS4KKyAgICAgICAgaWYgKG1lbW9yeS5leGlzdHMoVHJhdmVyc2FsVmVydGV4UHJvZ3JhbS5IQUxURURfVFJBVkVSU0VSUykpIHsKKyAgICAgICAgICAgIGZpbmFsIFRyYXZlcnNlclNldDw/PiBoYWx0ZWRUcmF2ZXJzZXJzID0gbWVtb3J5LmdldChUcmF2ZXJzYWxWZXJ0ZXhQcm9ncmFtLkhBTFRFRF9UUkFWRVJTRVJTKTsKKyAgICAgICAgICAgIGlmICghaGFsdGVkVHJhdmVyc2Vycy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICBPYmplY3QgaGFsdGVkVHJhdmVyc2Vyc1ZhbHVlOworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIGhhbHRlZFRyYXZlcnNlcnNWYWx1ZSA9IEJhc2U2NC5nZXRFbmNvZGVyKCkuZW5jb2RlVG9TdHJpbmcoU2VyaWFsaXplci5zZXJpYWxpemVPYmplY3QoaGFsdGVkVHJhdmVyc2VycykpOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGZpbmFsIElPRXhjZXB0aW9uIGlnbm9yZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgaGFsdGVkVHJhdmVyc2Vyc1ZhbHVlID0gaGFsdGVkVHJhdmVyc2VyczsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnVpbGRlci5jb25maWd1cmUoVHJhdmVyc2FsVmVydGV4UHJvZ3JhbS5IQUxURURfVFJBVkVSU0VSUywgaGFsdGVkVHJhdmVyc2Vyc1ZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBidWlsZGVyLmNyZWF0ZShncmFwaCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFNldDxUcmF2ZXJzZXJSZXF1aXJlbWVudD4gZ2V0UmVxdWlyZW1lbnRzKCkgeworICAgICAgICByZXR1cm4gVHJhdmVyc2FsUGFyZW50LnN1cGVyLmdldFNlbGZBbmRDaGlsZFJlcXVpcmVtZW50cygpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtU3RlcCBjbG9uZSgpIHsKKyAgICAgICAgZmluYWwgU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbVN0ZXAgY2xvbmUgPSAoU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbVN0ZXApIHN1cGVyLmNsb25lKCk7CisgICAgICAgIGNsb25lLnRhcmdldFZlcnRleEZpbHRlciA9IHRoaXMudGFyZ2V0VmVydGV4RmlsdGVyLmNsb25lKCk7CisgICAgICAgIGNsb25lLmVkZ2VUcmF2ZXJzYWwgPSB0aGlzLmVkZ2VUcmF2ZXJzYWwuY2xvbmUoKTsKKyAgICAgICAgY2xvbmUuZGlzdGFuY2VUcmF2ZXJzYWwgPSB0aGlzLmRpc3RhbmNlVHJhdmVyc2FsLmNsb25lKCk7CisgICAgICAgIHJldHVybiBjbG9uZTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBzZXRUcmF2ZXJzYWwoZmluYWwgVHJhdmVyc2FsLkFkbWluPD8sID8+IHBhcmVudFRyYXZlcnNhbCkgeworICAgICAgICBzdXBlci5zZXRUcmF2ZXJzYWwocGFyZW50VHJhdmVyc2FsKTsKKyAgICAgICAgdGhpcy5pbnRlZ3JhdGVDaGlsZCh0aGlzLnRhcmdldFZlcnRleEZpbHRlci5nZXQoKSk7CisgICAgICAgIHRoaXMuaW50ZWdyYXRlQ2hpbGQodGhpcy5lZGdlVHJhdmVyc2FsLmdldCgpKTsKKyAgICAgICAgdGhpcy5pbnRlZ3JhdGVDaGlsZCh0aGlzLmRpc3RhbmNlVHJhdmVyc2FsLmdldCgpKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgeworICAgICAgICByZXR1cm4gc3VwZXIuaGFzaENvZGUoKTsKKyAgICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvdHJhdmVyc2FsL3N0ZXAvbWFwL1RyYXZlcnNhbFZlcnRleFByb2dyYW1TdGVwLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvdHJhdmVyc2FsL3N0ZXAvbWFwL1RyYXZlcnNhbFZlcnRleFByb2dyYW1TdGVwLmphdmEKaW5kZXggNGViOTUwZi4uMzBjZmVlNSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL3RyYXZlcnNhbC9zdGVwL21hcC9UcmF2ZXJzYWxWZXJ0ZXhQcm9ncmFtU3RlcC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci90cmF2ZXJzYWwvc3RlcC9tYXAvVHJhdmVyc2FsVmVydGV4UHJvZ3JhbVN0ZXAuamF2YQpAQCAtMTksMTkgKzE5LDE1IEBACiAKIHBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnRyYXZlcnNhbC5zdGVwLm1hcDsKIAotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5HcmFwaENvbXB1dGVyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5HcmFwaEZpbHRlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuTWVtb3J5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwuTWVtb3J5VHJhdmVyc2FsU2lkZUVmZmVjdHM7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnRyYXZlcnNhbC5UcmF2ZXJzYWxWZXJ0ZXhQcm9ncmFtOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwuc3RyYXRlZ3kuZGVjb3JhdGlvbi5WZXJ0ZXhQcm9ncmFtU3RyYXRlZ3k7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnRyYXZlcnNhbC5zdHJhdGVneS5maW5hbGl6YXRpb24uQ29tcHV0ZXJGaW5hbGl6YXRpb25TdHJhdGVneTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbFN0cmF0ZWdpZXM7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWxTdHJhdGVneTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuVHJhdmVyc2FsUGFyZW50OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyLlRyYXZlcnNlclJlcXVpcmVtZW50OwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5EZWZhdWx0VHJhdmVyc2FsU3RyYXRlZ2llczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuUHVyZVRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5HcmFwaDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLlN0cmluZ0ZhY3Rvcnk7CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vVmVydGV4UHJvZ3JhbVN0cmF0ZWd5LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vVmVydGV4UHJvZ3JhbVN0cmF0ZWd5LmphdmEKaW5kZXggODllNDBjYi4uZmE2ZTIzZiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL1ZlcnRleFByb2dyYW1TdHJhdGVneS5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9WZXJ0ZXhQcm9ncmFtU3RyYXRlZ3kuamF2YQpAQCAtMzQsNiArMzQsNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsU3RyYXRlZ2llczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbFN0cmF0ZWd5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLl9fOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5SZWFkV3JpdGluZzsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLkdyYXBoU3RlcDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5FbXB0eVN0ZXA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5BYnN0cmFjdFRyYXZlcnNhbFN0cmF0ZWd5OwpAQCAtMTAxLDExICsxMDIsMTEgQEAKICAgICAgICAgLy8gd3JhcCBhbGwgbm9uLVZlcnRleENvbXB1dGluZyBzdGVwcyBpbnRvIGEgVHJhdmVyc2FsVmVydGV4UHJvZ3JhbVN0ZXAKICAgICAgICAgY3VycmVudFN0ZXAgPSB0cmF2ZXJzYWwuZ2V0U3RhcnRTdGVwKCk7CiAgICAgICAgIHdoaWxlICghKGN1cnJlbnRTdGVwIGluc3RhbmNlb2YgRW1wdHlTdGVwKSkgewotICAgICAgICAgICAgVHJhdmVyc2FsLkFkbWluPD8sID8+IGNvbXB1dGVyVHJhdmVyc2FsID0gbmV3IERlZmF1bHRUcmF2ZXJzYWw8PigpOwotICAgICAgICAgICAgU3RlcDw/LCA/PiBmaXJzdExlZ2FsT0xBUFN0ZXAgPSBnZXRGaXJzdExlZ2FsT0xBUFN0ZXAoY3VycmVudFN0ZXApOwotICAgICAgICAgICAgU3RlcDw/LCA/PiBsYXN0TGVnYWxPTEFQU3RlcCA9IGdldExhc3RMZWdhbE9MQVBTdGVwKGN1cnJlbnRTdGVwKTsKKyAgICAgICAgICAgIGZpbmFsIFRyYXZlcnNhbC5BZG1pbjw/LCA/PiBjb21wdXRlclRyYXZlcnNhbCA9IG5ldyBEZWZhdWx0VHJhdmVyc2FsPD4oKTsKKyAgICAgICAgICAgIGZpbmFsIFN0ZXA8PywgPz4gZmlyc3RMZWdhbE9MQVBTdGVwID0gZ2V0Rmlyc3RMZWdhbE9MQVBTdGVwKGN1cnJlbnRTdGVwKTsKKyAgICAgICAgICAgIGZpbmFsIFN0ZXA8PywgPz4gbGFzdExlZ2FsT0xBUFN0ZXAgPSBnZXRMYXN0TGVnYWxPTEFQU3RlcChjdXJyZW50U3RlcCk7CiAgICAgICAgICAgICBpZiAoIShmaXJzdExlZ2FsT0xBUFN0ZXAgaW5zdGFuY2VvZiBFbXB0eVN0ZXApKSB7Ci0gICAgICAgICAgICAgICAgaW50IGluZGV4ID0gVHJhdmVyc2FsSGVscGVyLnN0ZXBJbmRleChmaXJzdExlZ2FsT0xBUFN0ZXAsIHRyYXZlcnNhbCk7CisgICAgICAgICAgICAgICAgZmluYWwgaW50IGluZGV4ID0gVHJhdmVyc2FsSGVscGVyLnN0ZXBJbmRleChmaXJzdExlZ2FsT0xBUFN0ZXAsIHRyYXZlcnNhbCk7CiAgICAgICAgICAgICAgICAgVHJhdmVyc2FsSGVscGVyLnJlbW92ZVRvVHJhdmVyc2FsKGZpcnN0TGVnYWxPTEFQU3RlcCwgbGFzdExlZ2FsT0xBUFN0ZXAuZ2V0TmV4dFN0ZXAoKSwgKFRyYXZlcnNhbC5BZG1pbikgY29tcHV0ZXJUcmF2ZXJzYWwpOwogICAgICAgICAgICAgICAgIGZpbmFsIFRyYXZlcnNhbFZlcnRleFByb2dyYW1TdGVwIHRyYXZlcnNhbFZlcnRleFByb2dyYW1TdGVwID0gbmV3IFRyYXZlcnNhbFZlcnRleFByb2dyYW1TdGVwKHRyYXZlcnNhbCwgY29tcHV0ZXJUcmF2ZXJzYWwpOwogICAgICAgICAgICAgICAgIHRyYXZlcnNhbC5hZGRTdGVwKGluZGV4LCB0cmF2ZXJzYWxWZXJ0ZXhQcm9ncmFtU3RlcCk7CkBAIC0xMTcsNiArMTE4LDcgQEAKICAgICAgICAgICAgICAgICBjdXJyZW50U3RlcCA9IGN1cnJlbnRTdGVwLmdldE5leHRTdGVwKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKwogICAgICAgICAvLyBpZiB0aGUgbGFzdCB2ZXJ0ZXggY29tcHV0aW5nIHN0ZXAgaXMgYSBUcmF2ZXJzYWxWZXJ0ZXhQcm9ncmFtU3RlcCBjb252ZXJ0IHRvIE9MVFAgd2l0aCBDb21wdXRlclJlc3VsdFN0ZXAKICAgICAgICAgVHJhdmVyc2FsSGVscGVyLmdldExhc3RTdGVwT2ZBc3NpZ25hYmxlQ2xhc3MoVmVydGV4Q29tcHV0aW5nLmNsYXNzLCB0cmF2ZXJzYWwpLmlmUHJlc2VudChzdGVwIC0+IHsKICAgICAgICAgICAgIGlmIChzdGVwIGluc3RhbmNlb2YgVHJhdmVyc2FsVmVydGV4UHJvZ3JhbVN0ZXApIHsKQEAgLTEyNiw2ICsxMjgsNyBAQAogICAgICAgICAgICAgICAgIFRyYXZlcnNhbEhlbHBlci5pbnNlcnRBZnRlclN0ZXAoY29tcHV0ZXJSZXN1bHRTdGVwLCAoU3RlcCkgc3RlcCwgdHJhdmVyc2FsKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSk7CisgICAgICAgIAogICAgICAgICAvLyBpZiB0aGVyZSBpcyBhIGRhbmdsaW5nIHZlcnRleCBjb21wdXRpbmcgc3RlcCwgYWRkIGFuIGlkZW50aXR5IHRyYXZlcnNhbCAoc29sdmUgdGhpcyBpbiB0aGUgZnV0dXJlIHdpdGggYSBzcGVjaWFsaXplZCBNYXBSZWR1Y2UpCiAgICAgICAgIGlmICh0cmF2ZXJzYWwuZ2V0RW5kU3RlcCgpIGluc3RhbmNlb2YgVmVydGV4Q29tcHV0aW5nICYmICEodHJhdmVyc2FsLmdldEVuZFN0ZXAoKSBpbnN0YW5jZW9mIFRyYXZlcnNhbFZlcnRleFByb2dyYW1TdGVwKSkgewogICAgICAgICAgICAgZmluYWwgVHJhdmVyc2FsVmVydGV4UHJvZ3JhbVN0ZXAgdHJhdmVyc2FsVmVydGV4UHJvZ3JhbVN0ZXAgPSBuZXcgVHJhdmVyc2FsVmVydGV4UHJvZ3JhbVN0ZXAodHJhdmVyc2FsLCBfXy5pZGVudGl0eSgpLmFzQWRtaW4oKSk7CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvdXRpbC9Db21wdXRlckdyYXBoLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvdXRpbC9Db21wdXRlckdyYXBoLmphdmEKaW5kZXggMzE0MzhjMy4uMmU0MDgyYyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL3V0aWwvQ29tcHV0ZXJHcmFwaC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci91dGlsL0NvbXB1dGVyR3JhcGguamF2YQpAQCAtNjIsMTEgKzYyLDExIEBACiAgICAgfQogCiAgICAgcHVibGljIHN0YXRpYyBDb21wdXRlclZlcnRleCB2ZXJ0ZXhQcm9ncmFtKGZpbmFsIFZlcnRleCBzdGFyVmVydGV4LCBWZXJ0ZXhQcm9ncmFtIHZlcnRleFByb2dyYW0pIHsKLSAgICAgICAgcmV0dXJuIG5ldyBDb21wdXRlckdyYXBoKFN0YXRlLlZFUlRFWF9QUk9HUkFNLCBzdGFyVmVydGV4LCBPcHRpb25hbC5vZih2ZXJ0ZXhQcm9ncmFtKSkuZ2V0U3RhclZlcnRleCgpOworICAgICAgICByZXR1cm4gbmV3IENvbXB1dGVyR3JhcGgoU3RhdGUuVkVSVEVYX1BST0dSQU0sIHN0YXJWZXJ0ZXgsIE9wdGlvbmFsLm9mKHZlcnRleFByb2dyYW0pKS5zdGFyVmVydGV4OwogICAgIH0KIAogICAgIHB1YmxpYyBzdGF0aWMgQ29tcHV0ZXJWZXJ0ZXggbWFwUmVkdWNlKGZpbmFsIFZlcnRleCBzdGFyVmVydGV4KSB7Ci0gICAgICAgIHJldHVybiBuZXcgQ29tcHV0ZXJHcmFwaChTdGF0ZS5NQVBfUkVEVUNFLCBzdGFyVmVydGV4LCBPcHRpb25hbC5lbXB0eSgpKS5nZXRTdGFyVmVydGV4KCk7CisgICAgICAgIHJldHVybiBuZXcgQ29tcHV0ZXJHcmFwaChTdGF0ZS5NQVBfUkVEVUNFLCBzdGFyVmVydGV4LCBPcHRpb25hbC5lbXB0eSgpKS5zdGFyVmVydGV4OwogICAgIH0KIAogICAgIHB1YmxpYyBDb21wdXRlclZlcnRleCBnZXRTdGFyVmVydGV4KCkgewpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3JlbW90ZS9FbWJlZGRlZFJlbW90ZUNvbm5lY3Rpb24uamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9yZW1vdGUvRW1iZWRkZWRSZW1vdGVDb25uZWN0aW9uLmphdmEKaW5kZXggMjcxYzI5Ni4uYjhiMGI4OSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3JlbW90ZS9FbWJlZGRlZFJlbW90ZUNvbm5lY3Rpb24uamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvcmVtb3RlL0VtYmVkZGVkUmVtb3RlQ29ubmVjdGlvbi5qYXZhCkBAIC0yOCw2ICsyOCw3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGg7CiAKIGltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLmNvbmN1cnJlbnQuQ29tcGxldGFibGVGdXR1cmU7CiAKIC8qKgogICogQWxsb3dzIGEge0BsaW5rIFJlbW90ZUNvbm5lY3Rpb259IHRvIGJlIHN1Ym1pdHRlZCB0byBhICJsb2NhbCIge0BsaW5rIEdyYXBofSBpbnN0YW5jZSB0aHVzIHNpbXVsYXRpbmcgYSBjb25uZWN0aW9uCkBAIC01NiwxNSArNTcsMTYgQEAKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgPEU+IEl0ZXJhdG9yPFRyYXZlcnNlci5BZG1pbjxFPj4gc3VibWl0KGZpbmFsIFRyYXZlcnNhbDw/LCBFPiB0cmF2ZXJzYWwpIHRocm93cyBSZW1vdGVDb25uZWN0aW9uRXhjZXB0aW9uIHsKLSAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKCJUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkIGFuZCBubyBsb25nZXIgdXNlZCBpbnRlcm5hbGx5Iik7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIDxFPiBSZW1vdGVUcmF2ZXJzYWw8PywgRT4gc3VibWl0KGZpbmFsIEJ5dGVjb2RlIGJ5dGVjb2RlKSB0aHJvd3MgUmVtb3RlQ29ubmVjdGlvbkV4Y2VwdGlvbiB7Ci0gICAgICAgIC8vIHRoaXMgbWV0aG9kIGlzIHRlY2huaWNhbGx5IGRlcHJlY2F0ZWQgYnV0IGl0J3Mgc3RpbGwgYmVpbmcgdXNlZCBvbiB0aGUgMy4yLngvMy4zLnggbGluZXMgb2YgY29kZS4gaXQgaXMKLSAgICAgICAgLy8gY2FsbGVkIGJ5IHN1Ym1pdEFzeW5jKCkgaW4gUmVtb3RlQ29ubmVjdGlvbiBpdHNlbGYuIHRoaXMgaW1wbGVtZW50YXRpb24gc2hvdWxkIHN1ZmZpY2UgZm9yIG5vdwotICAgICAgICByZXR1cm4gbmV3IEVtYmVkZGVkUmVtb3RlVHJhdmVyc2FsKEphdmFUcmFuc2xhdG9yLm9mKGcpLnRyYW5zbGF0ZShieXRlY29kZSkpOworICAgIHB1YmxpYyA8RT4gQ29tcGxldGFibGVGdXR1cmU8UmVtb3RlVHJhdmVyc2FsPD8sIEU+PiBzdWJtaXRBc3luYyhmaW5hbCBCeXRlY29kZSBieXRlY29kZSkgdGhyb3dzIFJlbW90ZUNvbm5lY3Rpb25FeGNlcHRpb24geworICAgICAgICAvLyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHRvIDMuMi40IC0gdGhpcyBtZXRob2Qgd2lsbCBwcm9iYWJseSBqdXN0IGJlY29tZQorICAgICAgICAvLyB0aGUgbmV3IHN1Ym1pdCgpIGluIDMuMy54IHdoZW4gdGhlIGRlcHJlY2F0aW9uIGlzIHJlbW92ZWQKKyAgICAgICAgZmluYWwgQ29tcGxldGFibGVGdXR1cmU8UmVtb3RlVHJhdmVyc2FsPD8sIEU+PiBwcm9taXNlID0gbmV3IENvbXBsZXRhYmxlRnV0dXJlPD4oKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHByb21pc2UuY29tcGxldGUobmV3IEVtYmVkZGVkUmVtb3RlVHJhdmVyc2FsKEphdmFUcmFuc2xhdG9yLm9mKGcpLnRyYW5zbGF0ZShieXRlY29kZSkpKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIHQpIHsKKyAgICAgICAgICAgIHByb21pc2UuY29tcGxldGVFeGNlcHRpb25hbGx5KHQpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBwcm9taXNlOwogICAgIH0KIAogICAgIEBPdmVycmlkZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb24uamF2YQppbmRleCA4MTI4ZmRjLi4wYzEyNGU3IDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb24uamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb24uamF2YQpAQCAtMjIsNyArMjIsNiBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5yZW1vdGUudHJhdmVyc2FsLlJlbW90ZVRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLkJ5dGVjb2RlOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2VyOwogCiBpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuQ29uc3RydWN0b3I7CiBpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwpAQCAtMzgsNDcgKzM3LDE1IEBACiAgKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKICAqLwogcHVibGljIGludGVyZmFjZSBSZW1vdGVDb25uZWN0aW9uIGV4dGVuZHMgQXV0b0Nsb3NlYWJsZSB7Ci0KICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBHUkVNTElOX1JFTU9URSA9ICJncmVtbGluLnJlbW90ZS4iOwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEdSRU1MSU5fUkVNT1RFX0NPTk5FQ1RJT05fQ0xBU1MgPSBHUkVNTElOX1JFTU9URSArICJyZW1vdGVDb25uZWN0aW9uQ2xhc3MiOwogCiAgICAgLyoqCi0gICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjIuMiwgcmVwbGFjZWQgYnkge0BsaW5rICNzdWJtaXRBc3luYyhCeXRlY29kZSl9LgotICAgICAqLwotICAgIEBEZXByZWNhdGVkCi0gICAgcHVibGljIDxFPiBJdGVyYXRvcjxUcmF2ZXJzZXIuQWRtaW48RT4+IHN1Ym1pdChmaW5hbCBUcmF2ZXJzYWw8PywgRT4gdHJhdmVyc2FsKSB0aHJvd3MgUmVtb3RlQ29ubmVjdGlvbkV4Y2VwdGlvbjsKLQotICAgIC8qKgotICAgICAqIFN1Ym1pdHMge0BsaW5rIFRyYXZlcnNhbH0ge0BsaW5rIEJ5dGVjb2RlfSB0byBhIHNlcnZlciBhbmQgcmV0dXJucyBhIHtAbGluayBSZW1vdGVUcmF2ZXJzYWx9LgotICAgICAqIFRoZSB7QGxpbmsgUmVtb3RlVHJhdmVyc2FsfSBpcyBhbiBhYnN0cmFjdGlvbiBvdmVyIHR3byB0eXBlcyBvZiByZXN1bHRzIHRoYXQgY2FuIGJlIHJldHVybmVkIGFzIHBhcnQgb2YgdGhlCi0gICAgICogcmVzcG9uc2UgZnJvbSB0aGUgc2VydmVyOiB0aGUgcmVzdWx0cyBvZiB0aGUge0BsaW5rIFRyYXZlcnNhbH0gaXRzZWxmIGFuZCB0aGUgc2lkZS1lZmZlY3RzIHRoYXQgaXQgcHJvZHVjZWQuCi0gICAgICoKLSAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuMi40LCByZXBsYWNlZCBieSB7QGxpbmsgI3N1Ym1pdEFzeW5jKEJ5dGVjb2RlKX0uCi0gICAgICovCi0gICAgQERlcHJlY2F0ZWQKLSAgICBwdWJsaWMgPEU+IFJlbW90ZVRyYXZlcnNhbDw/LEU+IHN1Ym1pdChmaW5hbCBCeXRlY29kZSBieXRlY29kZSkgdGhyb3dzIFJlbW90ZUNvbm5lY3Rpb25FeGNlcHRpb247Ci0KLSAgICAvKioKICAgICAgKiBTdWJtaXRzIHtAbGluayBUcmF2ZXJzYWx9IHtAbGluayBCeXRlY29kZX0gdG8gYSBzZXJ2ZXIgYW5kIHJldHVybnMgYSBwcm9taXNlIG9mIGEge0BsaW5rIFJlbW90ZVRyYXZlcnNhbH0uCiAgICAgICogVGhlIHtAbGluayBSZW1vdGVUcmF2ZXJzYWx9IGlzIGFuIGFic3RyYWN0aW9uIG92ZXIgdHdvIHR5cGVzIG9mIHJlc3VsdHMgdGhhdCBjYW4gYmUgcmV0dXJuZWQgYXMgcGFydCBvZiB0aGUKICAgICAgKiByZXNwb25zZSBmcm9tIHRoZSBzZXJ2ZXI6IHRoZSByZXN1bHRzIG9mIHRoZSB7QGxpbmsgVHJhdmVyc2FsfSBpdHNlbGYgYW5kIHRoZSBzaWRlLWVmZmVjdHMgdGhhdCBpdCBwcm9kdWNlZC4KLSAgICAgKiA8cC8+Ci0gICAgICogVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gY2FsbHMgdGhlIHtAbGluayAjc3VibWl0KEJ5dGVjb2RlKX0gbWV0aG9kIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCBidXQgZ2VuZXJhbGx5Ci0gICAgICogc3BlYWtpbmcgdGhpcyBtZXRob2Qgc2hvdWxkIGJlIGltcGxlbWVudGVkIGRpcmVjdGx5IGFzIHtAbGluayAjc3VibWl0KEJ5dGVjb2RlKX0gaXMgbm90IGNhbGxlZCBkaXJlY3RseSBieQotICAgICAqIGFueSBwYXJ0IG9mIFRpbmtlclBvcC4gRXZlbiBpZiB0aGUge0Bjb2RlIFJlbW90ZUNvbm5lY3Rpb259IGl0c2VsZiBpcyBub3QgY2FwYWJsZSBvZiBhc3luY2hyb25vdXMgYmVoYXZpb3VyLCBpdAotICAgICAqIHNob3VsZCBzaW1wbHkgaW1wbGVtZW50IHRoaXMgbWV0aG9kIGluIGEgYmxvY2tpbmcgZm9ybS4KICAgICAgKi8KLSAgICBwdWJsaWMgZGVmYXVsdCA8RT4gQ29tcGxldGFibGVGdXR1cmU8UmVtb3RlVHJhdmVyc2FsPD8sIEU+PiBzdWJtaXRBc3luYyhmaW5hbCBCeXRlY29kZSBieXRlY29kZSkgdGhyb3dzIFJlbW90ZUNvbm5lY3Rpb25FeGNlcHRpb24gewotICAgICAgICAvLyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHRvIDMuMi40IC0gdGhpcyBtZXRob2Qgd2lsbCBwcm9iYWJseSBqdXN0IGJlY29tZQotICAgICAgICAvLyB0aGUgbmV3IHN1Ym1pdCgpIGluIDMuMy54IHdoZW4gdGhlIGRlcHJlY2F0aW9uIGlzIHJlbW92ZWQKLSAgICAgICAgZmluYWwgQ29tcGxldGFibGVGdXR1cmU8UmVtb3RlVHJhdmVyc2FsPD8sIEU+PiBwcm9taXNlID0gbmV3IENvbXBsZXRhYmxlRnV0dXJlPD4oKTsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHByb21pc2UuY29tcGxldGUoc3VibWl0KGJ5dGVjb2RlKSk7Ci0gICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiB0KSB7Ci0gICAgICAgICAgICBwcm9taXNlLmNvbXBsZXRlRXhjZXB0aW9uYWxseSh0KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcHJvbWlzZTsKLSAgICB9CisgICAgcHVibGljIDxFPiBDb21wbGV0YWJsZUZ1dHVyZTxSZW1vdGVUcmF2ZXJzYWw8PywgRT4+IHN1Ym1pdEFzeW5jKGZpbmFsIEJ5dGVjb2RlIGJ5dGVjb2RlKSB0aHJvd3MgUmVtb3RlQ29ubmVjdGlvbkV4Y2VwdGlvbjsKIAogICAgIC8qKgogICAgICAqIENyZWF0ZSBhIHtAbGluayBSZW1vdGVDb25uZWN0aW9ufSBmcm9tIGEge0Bjb2RlIENvbmZpZ3VyYXRpb259IG9iamVjdC4gVGhlIGNvbmZpZ3VyYXRpb24gbXVzdCBjb250YWluIGEKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9yZW1vdGUvUmVtb3RlR3JhcGguamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9yZW1vdGUvUmVtb3RlR3JhcGguamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzAzNDNhOC4uMDAwMDAwMAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvcmVtb3RlL1JlbW90ZUdyYXBoLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNTIgKzAsMCBAQAotLyoKLSAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLSAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQotICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLSAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLSAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKLSAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKLSAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCi0gKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgotICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCi0gKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKLSAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKLSAqIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi1wYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5yZW1vdGU7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29uZmlndXJhdGlvbi5Db25maWd1cmF0aW9uOwotaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5jb25maWd1cmF0aW9uLlByb3BlcnRpZXNDb25maWd1cmF0aW9uOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5HcmFwaENvbXB1dGVyOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5yZW1vdGUudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uUmVtb3RlU3RyYXRlZ3k7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWxTb3VyY2U7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWxTdHJhdGVnaWVzOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkVkZ2U7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGg7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVHJhbnNhY3Rpb247Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4OwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuR3JhcGhGYWN0b3J5OwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuU3RyaW5nRmFjdG9yeTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLmVtcHR5LkVtcHR5R3JhcGg7Ci0KLWltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5Db25zdHJ1Y3RvcjsKLWltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7Ci1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotCi0vKioKLSAqIEEge0Bjb2RlIFNlcnZlckdyYXBofSByZXByZXNlbnRzIGEgcHJveHkgYnkgd2hpY2ggdHJhdmVyc2FscyBzcGF3bmVkIGZyb20gdGhpcyBncmFwaCBhcmUgZXhwZWN0ZWQgb3ZlciBhCi0gKiB7QGxpbmsgUmVtb3RlQ29ubmVjdGlvbn0uIFRoaXMgaXMgbm90IGEgZnVsbCB7QGxpbmsgR3JhcGh9IGltcGxlbWVudGF0aW9uIGluIHRoZSBzZW5zZSB0aGF0IHRoZSBtb3N0IG9mIHRoZSBtZXRob2RzCi0gKiB3aWxsIHRocm93IGFuIHtAbGluayBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbn0uICBUaGlzIGltcGxlbWVudGF0aW9uIGNhbiBvbmx5IGJlIHVzZWQgZm9yIHNwYXduaW5nIHJlbW90ZQotICogdHJhdmVyc2FsIGluc3RhbmNlcy4KLSAqCi0gKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCi0gKiBAZGVwcmVjYXRlZCBBcyBmb3IgcmVsZWFzZSAzLjIuMiwgcmVwbGFjZWQgYnkge0BsaW5rIFRyYXZlcnNhbFNvdXJjZSN3aXRoUmVtb3RlKFJlbW90ZUNvbm5lY3Rpb24pfSBvciBpdHMgb3ZlcmxvYWRzLgotICovCi1AR3JhcGguT3B0SW4oR3JhcGguT3B0SW4uU1VJVEVfUFJPQ0VTU19TVEFOREFSRCkKLUBHcmFwaC5PcHRJbihHcmFwaC5PcHRJbi5TVUlURV9QUk9DRVNTX0NPTVBVVEVSKQotQEdyYXBoLk9wdE91dCgKLSAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLkNvcmVUcmF2ZXJzYWxUZXN0IiwKLSAgICAgICAgbWV0aG9kID0gIioiLAotICAgICAgICByZWFzb24gPSAiVGhlIHRlc3Qgc3VpdGUgZG9lcyBub3Qgc3VwcG9ydCBwcm9maWxpbmcgb3IgbGFtYmRhcyBhbmQgZm9yIGdyb292eSB0ZXN0czogJ0NvdWxkIG5vdCBsb2NhdGUgbWV0aG9kOiBHcmFwaFRyYXZlcnNhbFNvdXJjZS53aXRoU3RyYXRlZ2llcyhbe3RyYXZlcnNhbENhdGVnb3J5PWludGVyZmFjZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbFN0cmF0ZWd5JERlY29yYXRpb25TdHJhdGVneX1dKSciKQotQEdyYXBoLk9wdE91dCgKLSAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlByb2dyYW1UZXN0IiwKLSAgICAgICAgbWV0aG9kID0gIioiLAotICAgICAgICByZWFzb24gPSAiUmVtb3RlR3JhcGggcmV0cmlldmVzIGRldGFjaGVkIHZlcnRpY2VzIHRoYXQgY2FuJ3QgYmUgYXR0YWNoZWQgdG8gYSByZW1vdGUgT0xBUCBncmFwaCIpCi1AR3JhcGguT3B0T3V0KAotICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuZGVjb3JhdGlvbi5FbGVtZW50SWRTdHJhdGVneVByb2Nlc3NUZXN0IiwKLSAgICAgICAgbWV0aG9kID0gIioiLAotICAgICAgICByZWFzb24gPSAiUmVtb3RlR3JhcGggZG9lcyBub3Qgc3VwcG9ydCBFbGVtZW50SWRTdHJhdGVneSBhdCB0aGlzIHRpbWUgLSBpdCByZXF1aXJlcyBhIGxhbWJkYSBpbiBjb25zdHJ1Y3Rpb24gd2hpY2ggaXMgbm90IHNlcmlhbGl6YWJsZSIpCi1AR3JhcGguT3B0T3V0KAotICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuZGVjb3JhdGlvbi5FdmVudFN0cmF0ZWd5UHJvY2Vzc1Rlc3QiLAotICAgICAgICBtZXRob2QgPSAiKiIsCi0gICAgICAgIHJlYXNvbiA9ICJSZW1vdGVHcmFwaCBkb2VzIG5vdCBzdXBwb3J0IEV2ZW50U3RyYXRlZ3kgYXQgdGhpcyB0aW1lIC0gc29tZSBvZiBpdHMgbWVtYmVycyBhcmUgbm90IHNlcmlhbGl6YWJsZSIpCi1AR3JhcGguT3B0T3V0KAotICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuZGVjb3JhdGlvbi5QYXJ0aXRpb25TdHJhdGVneVByb2Nlc3NUZXN0IiwKLSAgICAgICAgbWV0aG9kID0gIioiLAotICAgICAgICByZWFzb24gPSAiUmVtb3RlR3JhcGggZG9lcyBub3Qgc3VwcG9ydCBQYXJ0aXRpb25TdHJhdGVneSBhdCB0aGlzIHRpbWUiKQotQEdyYXBoLk9wdE91dCgKLSAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIucmFua2luZy5wYWdlcmFuay5QYWdlUmFua1ZlcnRleFByb2dyYW1UZXN0IiwKLSAgICAgICAgbWV0aG9kID0gIioiLAotICAgICAgICByZWFzb24gPSAiUmVtb3RlR3JhcGggZG9lcyBub3Qgc3VwcG9ydCBkaXJlY3QgR3JhcGguY29tcHV0ZSgpIGFjY2VzcyIpCi1AR3JhcGguT3B0T3V0KAotICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5idWxrbG9hZGluZy5CdWxrTG9hZGVyVmVydGV4UHJvZ3JhbVRlc3QiLAotICAgICAgICBtZXRob2QgPSAiKiIsCi0gICAgICAgIHJlYXNvbiA9ICJSZW1vdGVHcmFwaCBkb2VzIG5vdCBzdXBwb3J0IGRpcmVjdCBHcmFwaC5jb21wdXRlKCkgYWNjZXNzIikKLUBHcmFwaC5PcHRPdXQoCi0gICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLmJ1bGtkdW1waW5nLkJ1bGtEdW1wZXJWZXJ0ZXhQcm9ncmFtVGVzdCIsCi0gICAgICAgIG1ldGhvZCA9ICIqIiwKLSAgICAgICAgcmVhc29uID0gIlJlbW90ZUdyYXBoIGRvZXMgbm90IHN1cHBvcnQgZGlyZWN0IEdyYXBoLmNvbXB1dGUoKSBhY2Nlc3MiKQotQEdyYXBoLk9wdE91dCgKLSAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuY2xvbmUuQ2xvbmVWZXJ0ZXhQcm9ncmFtVGVzdCIsCi0gICAgICAgIG1ldGhvZCA9ICIqIiwKLSAgICAgICAgcmVhc29uID0gIlJlbW90ZUdyYXBoIGRvZXMgbm90IHN1cHBvcnQgZGlyZWN0IEdyYXBoLmNvbXB1dGUoKSBhY2Nlc3MiKQotQEdyYXBoLk9wdE91dCgKLSAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuR3JhcGhDb21wdXRlclRlc3QiLAotICAgICAgICBtZXRob2QgPSAiKiIsCi0gICAgICAgIHJlYXNvbiA9ICJSZW1vdGVHcmFwaCBkb2VzIG5vdCBzdXBwb3J0IGRpcmVjdCBHcmFwaC5jb21wdXRlKCkgYWNjZXNzIikKLUBHcmFwaC5PcHRPdXQoCi0gICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWxJbnRlcnJ1cHRpb25UZXN0IiwKLSAgICAgICAgbWV0aG9kID0gIioiLAotICAgICAgICByZWFzb24gPSAiVGhlIGludGVycnVwdGlvbiBtb2RlbCBpbiB0aGUgdGVzdCBjYW4ndCBndWFyYW50ZWUgaW50ZXJydXB0aW9uIGF0IHRoZSByaWdodCB0aW1lIHdpdGggUmVtb3RlR3JhcGguIikKLUBHcmFwaC5PcHRPdXQoCi0gICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWxJbnRlcnJ1cHRpb25Db21wdXRlclRlc3QiLAotICAgICAgICBtZXRob2QgPSAiKiIsCi0gICAgICAgIHJlYXNvbiA9ICJUaGUgaW50ZXJydXB0aW9uIG1vZGVsIGluIHRoZSB0ZXN0IGNhbid0IGd1YXJhbnRlZSBpbnRlcnJ1cHRpb24gYXQgdGhlIHJpZ2h0IHRpbWUgd2l0aCBSZW1vdGVHcmFwaC4iKQotQEdyYXBoLk9wdE91dCgKLSAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuc2lkZUVmZmVjdC5TdG9yZVRlc3QiLAotICAgICAgICBtZXRob2QgPSAiZ193aXRoU2lkZUVmZmVjdFhhX3NldFhfVl9ib3RoX25hbWVfc3RvcmVYYVhfY2FwWGFYIiwKLSAgICAgICAgcmVhc29uID0gIlRoaXMgdGVzdCByZXR1cm5zIEJ1bGtTZXQgd2hpY2ggaXNuJ3Qgc3VwcG9ydGVkIGluIEdyYXBoU09OIDMuMCB1bnRpbCAzLjQuMC4iKQotQERlcHJlY2F0ZWQKLXB1YmxpYyBjbGFzcyBSZW1vdGVHcmFwaCBpbXBsZW1lbnRzIEdyYXBoIHsKLQotICAgIHByaXZhdGUgZmluYWwgUmVtb3RlQ29ubmVjdGlvbiBjb25uZWN0aW9uOwotCi0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgR1JFTUxJTl9SRU1PVEVfR1JBUEhfUkVNT1RFX0NPTk5FQ1RJT05fQ0xBU1MgPSAiZ3JlbWxpbi5yZW1vdGVHcmFwaC5yZW1vdGVDb25uZWN0aW9uQ2xhc3MiOwotCi0gICAgc3RhdGljIHsKLSAgICAgICAgVHJhdmVyc2FsU3RyYXRlZ2llcy5HbG9iYWxDYWNoZS5yZWdpc3RlclN0cmF0ZWdpZXMoUmVtb3RlR3JhcGguY2xhc3MsIFRyYXZlcnNhbFN0cmF0ZWdpZXMuR2xvYmFsQ2FjaGUuZ2V0U3RyYXRlZ2llcyhFbXB0eUdyYXBoLmNsYXNzKS5jbG9uZSgpLmFkZFN0cmF0ZWdpZXMoUmVtb3RlU3RyYXRlZ3kuaW5zdGFuY2UoKSkpOwotICAgIH0KLQotICAgIHByaXZhdGUgUmVtb3RlR3JhcGgoZmluYWwgUmVtb3RlQ29ubmVjdGlvbiBjb25uZWN0aW9uKSB7Ci0gICAgICAgIHRoaXMuY29ubmVjdGlvbiA9IGNvbm5lY3Rpb247Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogQ3JlYXRlcyBhIG5ldyB7QGxpbmsgUmVtb3RlR3JhcGh9IGluc3RhbmNlIHVzaW5nIHRoZSBzcGVjaWZpZWQgY29uZmlndXJhdGlvbiwgd2hpY2ggYWxsb3dzIHtAbGluayBSZW1vdGVHcmFwaH0KLSAgICAgKiB0byBiZSBjb21wbGlhbnQgd2l0aCB7QGxpbmsgR3JhcGhGYWN0b3J5fS4gRXhwZWN0cyBrZXkgZm9yIHtAbGluayAjR1JFTUxJTl9SRU1PVEVfR1JBUEhfUkVNT1RFX0NPTk5FQ1RJT05fQ0xBU1N9Ci0gICAgICogYXMgd2VsbCBhcyBhbnkgY29uZmlndXJhdGlvbiByZXF1aXJlZCBieSB0aGUgdW5kZXJseWluZyB7QGxpbmsgUmVtb3RlQ29ubmVjdGlvbn0gd2hpY2ggd2lsbCBiZSBpbnN0YW50aWF0ZWQuCi0gICAgICogTm90ZSB0aGF0IHRoZSB7QGNvZGUgQ29uZmlndXJhdGlvbn0gb2JqZWN0IGlzIHBhc3NlZCBkb3duIHdpdGhvdXQgY2hhbmdlIHRvIHRoZSBjcmVhdGlvbiBvZiB0aGUKLSAgICAgKiB7QGxpbmsgUmVtb3RlQ29ubmVjdGlvbn0gaW5zdGFuY2UuCi0gICAgICovCi0gICAgcHVibGljIHN0YXRpYyBSZW1vdGVHcmFwaCBvcGVuKGZpbmFsIENvbmZpZ3VyYXRpb24gY29uZikgewotICAgICAgICBpZiAoIWNvbmYuY29udGFpbnNLZXkoR1JFTUxJTl9SRU1PVEVfR1JBUEhfUkVNT1RFX0NPTk5FQ1RJT05fQ0xBU1MpKQotICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiQ29uZmlndXJhdGlvbiBtdXN0IGNvbnRhaW4gdGhlICciICsgR1JFTUxJTl9SRU1PVEVfR1JBUEhfUkVNT1RFX0NPTk5FQ1RJT05fQ0xBU1MgKyAiJyBrZXkiKTsKLQotICAgICAgICBmaW5hbCBSZW1vdGVDb25uZWN0aW9uIHJlbW90ZUNvbm5lY3Rpb247Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBmaW5hbCBDbGFzczw/IGV4dGVuZHMgUmVtb3RlQ29ubmVjdGlvbj4gY2xhenogPSBDbGFzcy5mb3JOYW1lKGNvbmYuZ2V0U3RyaW5nKEdSRU1MSU5fUkVNT1RFX0dSQVBIX1JFTU9URV9DT05ORUNUSU9OX0NMQVNTKSkuYXNTdWJjbGFzcyhSZW1vdGVDb25uZWN0aW9uLmNsYXNzKTsKLSAgICAgICAgICAgIGZpbmFsIENvbnN0cnVjdG9yPD8gZXh0ZW5kcyBSZW1vdGVDb25uZWN0aW9uPiBjdG9yID0gY2xhenouZ2V0Q29uc3RydWN0b3IoQ29uZmlndXJhdGlvbi5jbGFzcyk7Ci0gICAgICAgICAgICByZW1vdGVDb25uZWN0aW9uID0gY3Rvci5uZXdJbnN0YW5jZShjb25mKTsKLSAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7Ci0gICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKGV4KTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBuZXcgUmVtb3RlR3JhcGgocmVtb3RlQ29ubmVjdGlvbik7Ci0gICAgfQotCi0gICAgcHVibGljIHN0YXRpYyBSZW1vdGVHcmFwaCBvcGVuKGZpbmFsIFN0cmluZyBjb25maWdGaWxlKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICAgICAgcmV0dXJuIG9wZW4obmV3IFByb3BlcnRpZXNDb25maWd1cmF0aW9uKGNvbmZpZ0ZpbGUpKTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBDcmVhdGVzIGEgbmV3IHtAbGluayBSZW1vdGVHcmFwaH0gaW5zdGFuY2UuIHtAbGluayBSZW1vdGVHcmFwaH0gd2lsbCBhdHRlbXB0IHRvIGNhbGwgdGhlCi0gICAgICoge0BsaW5rIFJlbW90ZUNvbm5lY3Rpb24jY2xvc2UoKX0gbWV0aG9kIHdoZW4gdGhlIHtAbGluayAjY2xvc2UoKX0gbWV0aG9kIGlzIGNhbGxlZCBvbiB0aGlzIGNsYXNzLgotICAgICAqCi0gICAgICogQHBhcmFtIGNvbm5lY3Rpb24gdGhlIHtAbGluayBSZW1vdGVDb25uZWN0aW9ufSBpbnN0YW5jZSB0byB1c2UKLSAgICAgKiAgICAgICAgICAgICAgICAgICB7QGxpbmsgUmVtb3RlQ29ubmVjdGlvbn0KLSAgICAgKi8KLSAgICBwdWJsaWMgc3RhdGljIFJlbW90ZUdyYXBoIG9wZW4oZmluYWwgUmVtb3RlQ29ubmVjdGlvbiBjb25uZWN0aW9uKSB7Ci0gICAgICAgIHJldHVybiBuZXcgUmVtb3RlR3JhcGgoY29ubmVjdGlvbik7Ci0gICAgfQotCi0gICAgcHVibGljIFJlbW90ZUNvbm5lY3Rpb24gZ2V0Q29ubmVjdGlvbigpIHsKLSAgICAgICAgcmV0dXJuIGNvbm5lY3Rpb247Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogQ2xvc2VzIHRoZSB1bmRlcmx5aW5nIHtAbGluayBSZW1vdGVDb25uZWN0aW9ufS4KLSAgICAgKi8KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgdm9pZCBjbG9zZSgpIHRocm93cyBFeGNlcHRpb24gewotICAgICAgICBjb25uZWN0aW9uLmNsb3NlKCk7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIFZlcnRleCBhZGRWZXJ0ZXgoZmluYWwgT2JqZWN0Li4uIGtleVZhbHVlcykgewotICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oU3RyaW5nLmZvcm1hdCgiUmVtb3RlR3JhcGggaXMgYSBwcm94eSB0byAlcyAtIHRoaXMgbWV0aG9kIGlzIG5vdCBzdXBwb3J0ZWQiLCBjb25uZWN0aW9uKSk7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIDxDIGV4dGVuZHMgR3JhcGhDb21wdXRlcj4gQyBjb21wdXRlKGZpbmFsIENsYXNzPEM+IGdyYXBoQ29tcHV0ZXJDbGFzcykgdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiB7Ci0gICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbihTdHJpbmcuZm9ybWF0KCJSZW1vdGVHcmFwaCBpcyBhIHByb3h5IHRvICVzIC0gdGhpcyBtZXRob2QgaXMgbm90IHN1cHBvcnRlZCIsIGNvbm5lY3Rpb24pKTsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgR3JhcGhDb21wdXRlciBjb21wdXRlKCkgdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiB7Ci0gICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbihTdHJpbmcuZm9ybWF0KCJSZW1vdGVHcmFwaCBpcyBhIHByb3h5IHRvICVzIC0gdGhpcyBtZXRob2QgaXMgbm90IHN1cHBvcnRlZCIsIGNvbm5lY3Rpb24pKTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGFuIGVtcHR5IHtAbGluayBJdGVyYXRvcn0gLSBpdCBpcyBub3QgbWVhbnQgdG8gYmUgY2FsbGVkIGRpcmVjdGx5LgotICAgICAqLwotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBJdGVyYXRvcjxWZXJ0ZXg+IHZlcnRpY2VzKGZpbmFsIE9iamVjdC4uLiB2ZXJ0ZXhJZHMpIHsKLSAgICAgICAgcmV0dXJuIENvbGxlY3Rpb25zLmVtcHR5SXRlcmF0b3IoKTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGFuIGVtcHR5IHtAbGluayBJdGVyYXRvcn0gLSBpdCBpcyBub3QgbWVhbnQgdG8gYmUgY2FsbGVkIGRpcmVjdGx5LgotICAgICAqLwotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBJdGVyYXRvcjxFZGdlPiBlZGdlcyhmaW5hbCBPYmplY3QuLi4gZWRnZUlkcykgewotICAgICAgICByZXR1cm4gQ29sbGVjdGlvbnMuZW1wdHlJdGVyYXRvcigpOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBUcmFuc2FjdGlvbiB0eCgpIHsKLSAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKFN0cmluZy5mb3JtYXQoIlJlbW90ZUdyYXBoIGlzIGEgcHJveHkgdG8gJXMgLSB0aGlzIG1ldGhvZCBpcyBub3Qgc3VwcG9ydGVkIiwgY29ubmVjdGlvbikpOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBWYXJpYWJsZXMgdmFyaWFibGVzKCkgewotICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oU3RyaW5nLmZvcm1hdCgiUmVtb3RlR3JhcGggaXMgYSBwcm94eSB0byAlcyAtIHRoaXMgbWV0aG9kIGlzIG5vdCBzdXBwb3J0ZWQiLCBjb25uZWN0aW9uKSk7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbigpIHsKLSAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKFN0cmluZy5mb3JtYXQoIlJlbW90ZUdyYXBoIGlzIGEgcHJveHkgdG8gJXMgLSB0aGlzIG1ldGhvZCBpcyBub3Qgc3VwcG9ydGVkIiwgY29ubmVjdGlvbikpOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBGZWF0dXJlcyBmZWF0dXJlcygpIHsKLSAgICAgICAgcmV0dXJuIFJlbW90ZUZlYXR1cmVzLklOU1RBTkNFOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7Ci0gICAgICAgIHJldHVybiBTdHJpbmdGYWN0b3J5LmdyYXBoU3RyaW5nKHRoaXMsIGNvbm5lY3Rpb24udG9TdHJpbmcoKSk7Ci0gICAgfQotCi0gICAgcHVibGljIHN0YXRpYyBjbGFzcyBSZW1vdGVGZWF0dXJlcyBpbXBsZW1lbnRzIEZlYXR1cmVzIHsKLSAgICAgICAgc3RhdGljIFJlbW90ZUZlYXR1cmVzIElOU1RBTkNFID0gbmV3IFJlbW90ZUZlYXR1cmVzKCk7Ci0KLSAgICAgICAgcHJpdmF0ZSBSZW1vdGVGZWF0dXJlcygpIHsKLSAgICAgICAgfQotCi0gICAgICAgIEBPdmVycmlkZQotICAgICAgICBwdWJsaWMgR3JhcGhGZWF0dXJlcyBncmFwaCgpIHsKLSAgICAgICAgICAgIHJldHVybiBSZW1vdGVHcmFwaEZlYXR1cmVzLklOU1RBTkNFOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHVibGljIHN0YXRpYyBjbGFzcyBSZW1vdGVHcmFwaEZlYXR1cmVzIGltcGxlbWVudHMgRmVhdHVyZXMuR3JhcGhGZWF0dXJlcyB7Ci0KLSAgICAgICAgc3RhdGljIFJlbW90ZUdyYXBoRmVhdHVyZXMgSU5TVEFOQ0UgPSBuZXcgUmVtb3RlR3JhcGhGZWF0dXJlcygpOwotCi0gICAgICAgIHByaXZhdGUgUmVtb3RlR3JhcGhGZWF0dXJlcygpIHsKLSAgICAgICAgfQotCi0gICAgICAgIEBPdmVycmlkZQotICAgICAgICBwdWJsaWMgYm9vbGVhbiBzdXBwb3J0c1RyYW5zYWN0aW9ucygpIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIEBPdmVycmlkZQotICAgICAgICBwdWJsaWMgYm9vbGVhbiBzdXBwb3J0c1RocmVhZGVkVHJhbnNhY3Rpb25zKCkgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3JlbW90ZS90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9SZW1vdGVTdHJhdGVneS5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3JlbW90ZS90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9SZW1vdGVTdHJhdGVneS5qYXZhCmluZGV4IDg0NWM4YmEuLjc5ODU1ZDAgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9yZW1vdGUvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vUmVtb3RlU3RyYXRlZ3kuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvcmVtb3RlL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL1JlbW90ZVN0cmF0ZWd5LmphdmEKQEAgLTIwLDcgKzIwLDYgQEAKIAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwuc3RyYXRlZ3kuZGVjb3JhdGlvbi5WZXJ0ZXhQcm9ncmFtU3RyYXRlZ3k7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnJlbW90ZS5SZW1vdGVDb25uZWN0aW9uOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5yZW1vdGUuUmVtb3RlR3JhcGg7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnJlbW90ZS50cmF2ZXJzYWwuc3RlcC5tYXAuUmVtb3RlU3RlcDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbFN0cmF0ZWd5OwpAQCAtMzgsMTIgKzM3LDggQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uU3ViZ3JhcGhTdHJhdGVneTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LnZlcmlmaWNhdGlvbi5WZXJpZmljYXRpb25FeGNlcHRpb247CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLlRyYXZlcnNhbEhlbHBlcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLmVtcHR5LkVtcHR5R3JhcGg7CiAKLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOwotaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKIGltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKLWltcG9ydCBqYXZhLnV0aWwuT3B0aW9uYWw7CiBpbXBvcnQgamF2YS51dGlsLlNldDsKIAogLyoqCkBAIC01Nyw4ICs1Miw3IEBACiBwdWJsaWMgZmluYWwgY2xhc3MgUmVtb3RlU3RyYXRlZ3kgZXh0ZW5kcyBBYnN0cmFjdFRyYXZlcnNhbFN0cmF0ZWd5PFRyYXZlcnNhbFN0cmF0ZWd5LkRlY29yYXRpb25TdHJhdGVneT4KICAgICAgICAgaW1wbGVtZW50cyBUcmF2ZXJzYWxTdHJhdGVneS5EZWNvcmF0aW9uU3RyYXRlZ3kgewogCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgUmVtb3RlU3RyYXRlZ3kgSU5TVEFOQ0UgPSBuZXcgUmVtb3RlU3RyYXRlZ3koKTsKLSAgICBwcml2YXRlIGZpbmFsIE9wdGlvbmFsPFJlbW90ZUNvbm5lY3Rpb24+IHJlbW90ZUNvbm5lY3Rpb247CisgICAgcHJpdmF0ZSBmaW5hbCBSZW1vdGVDb25uZWN0aW9uIHJlbW90ZUNvbm5lY3Rpb247CiAKICAgICAvKioKICAgICAgKiBTaG91bGQgYmUgYXBwbGllZCBiZWZvcmUgYWxsIHtAbGluayBEZWNvcmF0aW9uU3RyYXRlZ3l9IGluc3RhbmNlcy4KQEAgLTc2LDIxICs3MCw5IEBACiAgICAgICAgIGFkZChTdWJncmFwaFN0cmF0ZWd5LmNsYXNzKTsKICAgICB9fTsKIAotICAgIHByaXZhdGUgUmVtb3RlU3RyYXRlZ3koKSB7Ci0gICAgICAgIHJlbW90ZUNvbm5lY3Rpb24gPSBPcHRpb25hbC5lbXB0eSgpOwotICAgIH0KLQogICAgIHB1YmxpYyBSZW1vdGVTdHJhdGVneShmaW5hbCBSZW1vdGVDb25uZWN0aW9uIHJlbW90ZUNvbm5lY3Rpb24pIHsKLSAgICAgICAgdGhpcy5yZW1vdGVDb25uZWN0aW9uID0gT3B0aW9uYWwub2ZOdWxsYWJsZShyZW1vdGVDb25uZWN0aW9uKTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuMi4yLCByZXBsYWNlZCBieSB7QGxpbmsgI1JlbW90ZVN0cmF0ZWd5KFJlbW90ZUNvbm5lY3Rpb24pfSB3aGVyZSB0aGlzIG1ldGhvZCBzaG91bGQKLSAgICAgKiBvbmx5IGJlIHVzZWQgYnkge0BsaW5rIFJlbW90ZUdyYXBofSBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KLSAgICAgKi8KLSAgICBARGVwcmVjYXRlZAotICAgIHB1YmxpYyBzdGF0aWMgUmVtb3RlU3RyYXRlZ3kgaW5zdGFuY2UoKSB7Ci0gICAgICAgIHJldHVybiBJTlNUQU5DRTsKKyAgICAgICAgaWYgKG51bGwgPT0gcmVtb3RlQ29ubmVjdGlvbikgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigicmVtb3RlQ29ubmVjdGlvbiBjYW5ub3QgYmUgbnVsbCIpOworICAgICAgICB0aGlzLnJlbW90ZUNvbm5lY3Rpb24gPSByZW1vdGVDb25uZWN0aW9uOwogICAgIH0KIAogICAgIEBPdmVycmlkZQpAQCAtMTAwLDIzICs4MiwxMSBAQAogCiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIHZvaWQgYXBwbHkoZmluYWwgVHJhdmVyc2FsLkFkbWluPD8sID8+IHRyYXZlcnNhbCkgewotICAgICAgICAvLyB0aGlzIGNoZWNrIGZvciBhIHJlbW90ZUNvbm5lY3Rpb24gaXMgcmVhbGx5IG9ubHkgcmVsZXZhbnQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgZm9yIFJlbW90ZUdyYXBoIHByaW9yCi0gICAgICAgIC8vIHRvIHRoZSBub3cgcHJlZmVycmVkIG1ldGhvZCBvZiB3aXRoUmVtb3RlKCkuCi0gICAgICAgIGlmICghcmVtb3RlQ29ubmVjdGlvbi5pc1ByZXNlbnQoKSkgewotICAgICAgICAgICAgaWYgKCEodHJhdmVyc2FsLmdldEdyYXBoKCkub3JFbHNlKEVtcHR5R3JhcGguaW5zdGFuY2UoKSkgaW5zdGFuY2VvZiBSZW1vdGVHcmFwaCkpCi0gICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiUmVtb3RlU3RyYXRlZ3kgZXhwZWN0cyBhIFJlbW90ZUdyYXBoIGluc3RhbmNlIGF0dGFjaGVkIHRvIHRoZSBUcmF2ZXJzYWwiKTsKLQotICAgICAgICAgICAgZmluYWwgUmVtb3RlR3JhcGggcmVtb3RlR3JhcGggPSAoUmVtb3RlR3JhcGgpIHRyYXZlcnNhbC5nZXRHcmFwaCgpLmdldCgpOwotICAgICAgICAgICAgaWYgKG51bGwgPT0gcmVtb3RlR3JhcGguZ2V0Q29ubmVjdGlvbigpKQotICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIlJlbW90ZVN0cmF0ZWd5IGV4cGVjdHMgdGhlIFJlbW90ZUdyYXBoIGluc3RhbmNlIHRvIGhhdmUgYSBSZW1vdGVDb25uZWN0aW9uIik7Ci0gICAgICAgIH0KLQogICAgICAgICBpZiAoISh0cmF2ZXJzYWwuZ2V0UGFyZW50KCkgaW5zdGFuY2VvZiBFbXB0eVN0ZXApKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIC8vIHJlbW90ZSBzdGVwIHdyYXBzIHRoZSB0cmF2ZXJzYWwgYW5kIGVtaXRzIHRoZSByZXN1bHRzIGZyb20gdGhlIHJlbW90ZSBjb25uZWN0aW9uLgotICAgICAgICBmaW5hbCBSZW1vdGVTdGVwPD8sID8+IHJlbW90ZVN0ZXAgPSBuZXcgUmVtb3RlU3RlcDw+KHRyYXZlcnNhbCwKLSAgICAgICAgICAgICAgICByZW1vdGVDb25uZWN0aW9uLm9yRWxzZUdldCgoKSAtPiAoKFJlbW90ZUdyYXBoKSB0cmF2ZXJzYWwuZ2V0R3JhcGgoKS5nZXQoKSkuZ2V0Q29ubmVjdGlvbigpKSk7CisgICAgICAgIGZpbmFsIFJlbW90ZVN0ZXA8PywgPz4gcmVtb3RlU3RlcCA9IG5ldyBSZW1vdGVTdGVwPD4odHJhdmVyc2FsLCByZW1vdGVDb25uZWN0aW9uKTsKICAgICAgICAgVHJhdmVyc2FsSGVscGVyLnJlbW92ZUFsbFN0ZXBzKHRyYXZlcnNhbCk7CiAgICAgICAgIHRyYXZlcnNhbC5hZGRTdGVwKHJlbW90ZVN0ZXApOwogCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL0Fub255bW91c1RyYXZlcnNhbFNvdXJjZS5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9Bbm9ueW1vdXNUcmF2ZXJzYWxTb3VyY2UuamF2YQppbmRleCA3Y2I2MmMzLi4wNWZjYWI3IDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL0Fub255bW91c1RyYXZlcnNhbFNvdXJjZS5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvQW5vbnltb3VzVHJhdmVyc2FsU291cmNlLmphdmEKQEAgLTE5LDEwICsxOSwxNCBAQAogcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsOwogCiBpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmNvbmZpZ3VyYXRpb24uQ29uZmlndXJhdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29uZmlndXJhdGlvbi5Qcm9wZXJ0aWVzQ29uZmlndXJhdGlvbjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MucmVtb3RlLlJlbW90ZUNvbm5lY3Rpb247CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguR3JhcGhUcmF2ZXJzYWxTb3VyY2U7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGg7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5lbXB0eS5FbXB0eUdyYXBoOworCitpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuQ29uc3RydWN0b3I7CisKK2ltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnJlbW90ZS5SZW1vdGVDb25uZWN0aW9uLkdSRU1MSU5fUkVNT1RFX0NPTk5FQ1RJT05fQ0xBU1M7CiAKIC8qKgogICogUHJvdmlkZXMgYSB1bmlmaWVkIHdheSB0byBjb25zdHJ1Y3QgYSB7QGxpbmsgVHJhdmVyc2FsU291cmNlfSBmcm9tIHRoZSBwZXJzcGVjdGl2ZSBvZiB0aGUgdHJhdmVyc2FsLiBJbiB0aGlzIHN5bnRheApAQCAtNjAsOSArNjQsNyBAQAogICAgICAqIHRyYXZlcnNhbHMgc3Bhd25lZCBmcm9tIGl0IHdpbGwgZXhlY3V0ZSBvdmVyIHRoYXQgcmVmZXJlbmNlLgogICAgICAqLwogICAgIHB1YmxpYyBUIHdpdGhSZW1vdGUoZmluYWwgU3RyaW5nIGNvbmZpZ0ZpbGUpIHRocm93cyBFeGNlcHRpb24gewotICAgICAgICAvLyBmb3Igbm93LCB0aGlzIG1ldGhvZCBzaW1wbHkgdXNlcyB0aGUgZGVwcmVjYXRlZCBhcHByb2FjaC4gd2hlbiB0aGlzIGFwcHJvYWNoIGlzIHJlbW92ZWQgd2UganVzdCBuZWVkIHRvCi0gICAgICAgIC8vIG1ha2UgaXQgcG9zc2libGUgdG8gc2V0IGEgUmVtb3RlQ29ubmVjdGlvbiBkaXJlY3RseSBvbiBUcmF2ZXJzYWxTb3VyY2UgY29uc3RydWN0aW9uLgotICAgICAgICByZXR1cm4gKFQpIHdpdGhHcmFwaChFbXB0eUdyYXBoLmluc3RhbmNlKCkpLndpdGhSZW1vdGUoY29uZmlnRmlsZSk7CisgICAgICAgIHJldHVybiB3aXRoUmVtb3RlKG5ldyBQcm9wZXJ0aWVzQ29uZmlndXJhdGlvbihjb25maWdGaWxlKSk7CiAgICAgfQogCiAgICAgLyoqCkBAIC03MCw5ICs3Miw3IEBACiAgICAgICogdHJhdmVyc2FscyBzcGF3bmVkIGZyb20gaXQgd2lsbCBleGVjdXRlIG92ZXIgdGhhdCByZWZlcmVuY2UuCiAgICAgICovCiAgICAgcHVibGljIFQgd2l0aFJlbW90ZShmaW5hbCBDb25maWd1cmF0aW9uIGNvbmYpIHsKLSAgICAgICAgLy8gZm9yIG5vdywgdGhpcyBtZXRob2Qgc2ltcGx5IHVzZXMgdGhlIGRlcHJlY2F0ZWQgYXBwcm9hY2guIHdoZW4gdGhpcyBhcHByb2FjaCBpcyByZW1vdmVkIHdlIGp1c3QgbmVlZCB0bwotICAgICAgICAvLyBtYWtlIGl0IHBvc3NpYmxlIHRvIHNldCBhIFJlbW90ZUNvbm5lY3Rpb24gZGlyZWN0bHkgb24gVHJhdmVyc2FsU291cmNlIGNvbnN0cnVjdGlvbi4KLSAgICAgICAgcmV0dXJuIChUKSB3aXRoR3JhcGgoRW1wdHlHcmFwaC5pbnN0YW5jZSgpKS53aXRoUmVtb3RlKGNvbmYpOworICAgICAgICByZXR1cm4gd2l0aFJlbW90ZShSZW1vdGVDb25uZWN0aW9uLmZyb20oY29uZikpOwogICAgIH0KIAogICAgIC8qKgpAQCAtODAsOSArODAsMTEgQEAKICAgICAgKiB0cmF2ZXJzYWxzIHNwYXduZWQgZnJvbSBpdCB3aWxsIGV4ZWN1dGUgb3ZlciB0aGF0IHJlZmVyZW5jZS4KICAgICAgKi8KICAgICBwdWJsaWMgVCB3aXRoUmVtb3RlKGZpbmFsIFJlbW90ZUNvbm5lY3Rpb24gcmVtb3RlQ29ubmVjdGlvbikgewotICAgICAgICAvLyBmb3Igbm93LCB0aGlzIG1ldGhvZCBzaW1wbHkgdXNlcyB0aGUgZGVwcmVjYXRlZCBhcHByb2FjaC4gd2hlbiB0aGlzIGFwcHJvYWNoIGlzIHJlbW92ZWQgd2UganVzdCBuZWVkIHRvCi0gICAgICAgIC8vIG1ha2UgaXQgcG9zc2libGUgdG8gc2V0IGEgUmVtb3RlQ29ubmVjdGlvbiBkaXJlY3RseSBvbiBUcmF2ZXJzYWxTb3VyY2UgY29uc3RydWN0aW9uLgotICAgICAgICByZXR1cm4gKFQpIHdpdGhHcmFwaChFbXB0eUdyYXBoLmluc3RhbmNlKCkpLndpdGhSZW1vdGUocmVtb3RlQ29ubmVjdGlvbik7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gdHJhdmVyc2FsU291cmNlQ2xhc3MuZ2V0Q29uc3RydWN0b3IoUmVtb3RlQ29ubmVjdGlvbi5jbGFzcykubmV3SW5zdGFuY2UocmVtb3RlQ29ubmVjdGlvbik7CisgICAgICAgIH0gY2F0Y2ggKGZpbmFsIEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKGUuZ2V0TWVzc2FnZSgpLCBlKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIC8qKgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9Db250YWlucy5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9Db250YWlucy5qYXZhCmluZGV4IGRhNDZkMGIuLjM1YThjYTcgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvQ29udGFpbnMuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL0NvbnRhaW5zLmphdmEKQEAgLTE4LDE5ICsxOCwyNyBAQAogICovCiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWw7CiAKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnV0aWwuaXRlcmF0b3IuSXRlcmF0b3JVdGlsczsKKwogaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOwogaW1wb3J0IGphdmEudXRpbC5mdW5jdGlvbi5CaVByZWRpY2F0ZTsKIAogLyoqCiAgKiB7QGxpbmsgQ29udGFpbnN9IGlzIGEge0BsaW5rIEJpUHJlZGljYXRlfSB0aGF0IGV2YWx1YXRlcyB3aGV0aGVyIHRoZSBmaXJzdCBvYmplY3QgaXMgY29udGFpbmVkIHdpdGhpbiAob3Igbm90Ci0gKiB3aXRoaW4pIHRoZSBzZWNvbmQgY29sbGVjdGlvbiBvYmplY3QuIEZvciBleGFtcGxlOgorICogd2l0aGluKSB0aGUgc2Vjb25kIGNvbGxlY3Rpb24gb2JqZWN0LiBJZiB0aGUgZmlyc3Qgb2JqZWN0IGlzIGEgbnVtYmVyLCBlYWNoIGVsZW1lbnQgaW4gdGhlIHNlY29uZCBjb2xsZWN0aW9uCisgKiB3aWxsIGJlIGNvbXBhcmVkIHRvIHRoZSBmaXJzdCBvYmplY3QgdXNpbmcge0BsaW5rIENvbXBhcmV9J3Mge0Bjb2RlIGVxfSBwcmVkaWNhdGUuIFRoaXMgd2lsbCBlbnN1cmUsIHRoYXQgbnVtYmVycworICogYXJlIG1hdGNoZWQgYnkgdGhlaXIgdmFsdWUgb25seSwgaWdub3JpbmcgdGhlIG51bWJlciB0eXBlLiBGb3IgZXhhbXBsZToKICAqIDxwLz4KICAqIDxwcmU+CiAgKiBncmVtbGluIENvbnRhaW5zLndpdGhpbiBbZ3JlbWxpbiwgYmx1ZXByaW50cywgZnVybmFjZV0gPT0gdHJ1ZQogICogZ3JlbWxpbiBDb250YWlucy53aXRob3V0IFtncmVtbGluLCByZXhzdGVyXSA9PSBmYWxzZQogICogcmV4c3RlciBDb250YWlucy53aXRob3V0IFtncmVtbGluLCBibHVlcHJpbnRzLCBmdXJuYWNlXSA9PSB0cnVlCisgKiAxMjMgQ29udGFpbnMud2l0aGluIFsxLCAyLCAzXSA9PSBmYWxzZQorICogMTAwIENvbnRhaW5zLndpdGhpbiBbMUwsIDEwTCwgMTAwTF0gPT0gdHJ1ZQogICogPC9wcmU+CiAgKgorICoKKyAqCiAgKiBAYXV0aG9yIFBpZXJyZSBEZSBXaWxkZQogICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCiAgKi8KQEAgLTQ0LDcgKzUyLDkgQEAKICAgICB3aXRoaW4gewogICAgICAgICBAT3ZlcnJpZGUKICAgICAgICAgcHVibGljIGJvb2xlYW4gdGVzdChmaW5hbCBPYmplY3QgZmlyc3QsIGZpbmFsIENvbGxlY3Rpb24gc2Vjb25kKSB7Ci0gICAgICAgICAgICByZXR1cm4gc2Vjb25kLmNvbnRhaW5zKGZpcnN0KTsKKyAgICAgICAgICAgIHJldHVybiBmaXJzdCBpbnN0YW5jZW9mIE51bWJlcgorICAgICAgICAgICAgICAgICAgICA/IEl0ZXJhdG9yVXRpbHMuYW55TWF0Y2goc2Vjb25kLml0ZXJhdG9yKCksIG8gLT4gQ29tcGFyZS5lcS50ZXN0KGZpcnN0LCBvKSkKKyAgICAgICAgICAgICAgICAgICAgOiBzZWNvbmQuY29udGFpbnMoZmlyc3QpOwogICAgICAgICB9CiAgICAgfSwKIApAQCAtNTYsNyArNjYsNyBAQAogICAgIHdpdGhvdXQgewogICAgICAgICBAT3ZlcnJpZGUKICAgICAgICAgcHVibGljIGJvb2xlYW4gdGVzdChmaW5hbCBPYmplY3QgZmlyc3QsIGZpbmFsIENvbGxlY3Rpb24gc2Vjb25kKSB7Ci0gICAgICAgICAgICByZXR1cm4gIXNlY29uZC5jb250YWlucyhmaXJzdCk7CisgICAgICAgICAgICByZXR1cm4gIXdpdGhpbi50ZXN0KGZpcnN0LCBzZWNvbmQpOwogICAgICAgICB9CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9JTy5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9JTy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3YjQ2NzAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL0lPLmphdmEKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWw7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5HcmFwaFRyYXZlcnNhbDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5HcmFwaFRyYXZlcnNhbFNvdXJjZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5HcmFwaDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5HcmFwaFJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5HcmFwaFdyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5Jb1JlZ2lzdHJ5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyYXBobWwuR3JhcGhNTFJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncmFwaG1sLkdyYXBoTUxXcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3JhcGhzb24uR3JhcGhTT05SZWFkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3JhcGhzb24uR3JhcGhTT05Xcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3J5by5HcnlvUmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyeW8uR3J5b1dyaXRlcjsKKworLyoqCisgKiBGaWVsZHMgdGhhdCBjYW4gYmUgcHJvdmlkZWQgdG8gdGhlIHtAbGluayBHcmFwaFRyYXZlcnNhbFNvdXJjZSNpbyhTdHJpbmcpfSB1c2luZyB0aGUKKyAqIHtAbGluayBHcmFwaFRyYXZlcnNhbCN3aXRoKFN0cmluZyxPYmplY3QpfSBzdGVwIG1vZHVsYXRvciB0byBwcm92aWRlIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbnMuCisgKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgY2xhc3MgSU8geworCisgICAgcHJpdmF0ZSBJTygpIHt9CisKKyAgICAvKioKKyAgICAgKiBBIHZhbHVlIHRvIHN1cHBseSB0byB7QGxpbmsgSU8jcmVhZGVyfSBvciB7QGxpbmsgSU8jd3JpdGVyfSB0byBpbmRpY2F0ZSB0aGUgZm9ybWF0IHRvIHVzZS4gVXNpbmcgdGhpcyBzaG9ydGhhbmQKKyAgICAgKiB3aWxsIGNvbmZpZ3VyZSBhIGRlZmF1bHQge0BsaW5rIEdyYXBoU09OUmVhZGVyfSBvciB7QGxpbmsgR3JhcGhTT05Xcml0ZXJ9IHJlc3BlY3RpdmVseSwKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBncmFwaHNvbiA9ICJncmFwaHNvbiI7CisKKyAgICAvKioKKyAgICAgKiBBIHZhbHVlIHRvIHN1cHBseSB0byB7QGxpbmsgSU8jcmVhZGVyfSBvciB7QGxpbmsgSU8jd3JpdGVyfSB0byBpbmRpY2F0ZSB0aGUgZm9ybWF0IHRvIHVzZS4gVXNpbmcgdGhpcyBzaG9ydGhhbmQKKyAgICAgKiB3aWxsIGNvbmZpZ3VyZSBhIGRlZmF1bHQge0BsaW5rIEdyeW9SZWFkZXJ9IG9yIHtAbGluayBHcnlvV3JpdGVyfSByZXNwZWN0aXZlbHksCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgZ3J5byA9ICJncnlvIjsKKworICAgIC8qKgorICAgICAqIEEgdmFsdWUgdG8gc3VwcGx5IHRvIHtAbGluayBJTyNyZWFkZXJ9IG9yIHtAbGluayBJTyN3cml0ZXJ9IHRvIGluZGljYXRlIHRoZSBmb3JtYXQgdG8gdXNlLiBVc2luZyB0aGlzIHNob3J0aGFuZAorICAgICAqIHdpbGwgY29uZmlndXJlIGEgZGVmYXVsdCB7QGxpbmsgR3JhcGhNTFJlYWRlcn0gb3Ige0BsaW5rIEdyYXBoTUxXcml0ZXJ9IHJlc3BlY3RpdmVseSwKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBncmFwaG1sID0gImdyYXBobWwiOworCisgICAgLyoqCisgICAgICogVGhlIHNwZWNpZmljIHtAbGluayBHcmFwaFJlYWRlcn0gaW5zdGFuY2UgdG8gdXNlLCB0aGUgbmFtZSBvZiB0aGUgZnVsbHkgcXVhbGlmaWVkIGNsYXNzbmFtZSBvZiBzdWNoIGFuCisgICAgICogaW5zdGFuY2Ugb3Igb25lIG9mIHtAbGluayBJTyNncmFwaHNvbn0sIHtAbGluayBJTyNncnlvfSBvciB7QGxpbmsgSU8jZ3JhcGhtbH0uIElmIHRoaXMgdmFsdWUgaXMgbm90IHNwZWNpZmllZAorICAgICAqIHRoZW4ge0BsaW5rIEdyYXBoVHJhdmVyc2FsU291cmNlI2lvKFN0cmluZyl9IHdpbGwgYXR0ZW1wdCB0byBjb25zdHJ1Y3QgYSBkZWZhdWx0IHtAbGluayBHcmFwaFJlYWRlcn0gYmFzZWQgb24KKyAgICAgKiB0aGUgZmlsZSBleHRlbnNpb24gcHJvdmlkZWQgdG8gaXQuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgcmVhZGVyID0gR3JhcGguSGlkZGVuLmhpZGUoInRpbmtlcnBvcC5pby5yZWFkZXIiKTsKKworICAgIC8qKgorICAgICAqIFRoZSBzcGVjaWZpYyB7QGxpbmsgR3JhcGhXcml0ZXJ9IGluc3RhbmNlIHRvIHVzZSwgdGhlIG5hbWUgb2YgdGhlIGZ1bGx5IHF1YWxpZmllZCBjbGFzc25hbWUgb2Ygc3VjaCBhbgorICAgICAqIGluc3RhbmNlIG9yIG9uZSBvZiB7QGxpbmsgSU8jZ3JhcGhzb259LCB7QGxpbmsgSU8jZ3J5b30gb3Ige0BsaW5rIElPI2dyYXBobWx9LiBJZiB0aGlzIHZhbHVlIGlzIG5vdCBzcGVjaWZpZWQKKyAgICAgKiB0aGVuIHtAbGluayBHcmFwaFRyYXZlcnNhbFNvdXJjZSNpbyhTdHJpbmcpfSB3aWxsIGF0dGVtcHQgdG8gY29uc3RydWN0IGEgZGVmYXVsdCB7QGxpbmsgR3JhcGhXcml0ZXJ9IGJhc2VkIG9uCisgICAgICogdGhlIGZpbGUgZXh0ZW5zaW9uIHByb3ZpZGVkIHRvIGl0LgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIHdyaXRlciA9IEdyYXBoLkhpZGRlbi5oaWRlKCJ0aW5rZXJwb3AuaW8ud3JpdGVyIik7CisKKyAgICAvKioKKyAgICAgKiBBIGtleSB0aGF0IGlkZW50aWZpZXMgdGhlIGZ1bGx5IHF1YWxpZmllZCBjbGFzcyBuYW1lcyBvZiB7QGxpbmsgSW9SZWdpc3RyeX0gaW5zdGFuY2VzIHRvIHVzZS4gTWF5IGJlIHNwZWNpZmllZAorICAgICAqIG11bHRpcGxlIHRpbWVzIChpLmUuIG9uY2UgZm9yIGVhY2ggcmVnaXN0cnkpIHVzaW5nIHRoZSB7QGxpbmsgR3JhcGhUcmF2ZXJzYWwjd2l0aChTdHJpbmcsIE9iamVjdCl9IG1vZHVsYXRvci4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyByZWdpc3RyeSA9IEdyYXBoLkhpZGRlbi5oaWRlKCJ0aW5rZXJwb3AuaW8ucmVnaXN0cnkiKTsKK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvT3BlcmF0b3IuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvT3BlcmF0b3IuamF2YQppbmRleCAwNGU3MTMwLi40ZmFkYTJmIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL09wZXJhdG9yLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9PcGVyYXRvci5qYXZhCkBAIC04Miw3ICs4Miw3IEBACiAgICAgICovCiAgICAgbWluIHsKICAgICAgICAgcHVibGljIE9iamVjdCBhcHBseShmaW5hbCBPYmplY3QgYSwgZmluYWwgT2JqZWN0IGIpIHsKLSAgICAgICAgICAgIHJldHVybiBOdW1iZXJIZWxwZXIubWluKChOdW1iZXIpIGEsIChOdW1iZXIpIGIpOworICAgICAgICAgICAgcmV0dXJuIE51bWJlckhlbHBlci5taW4oKENvbXBhcmFibGUpIGEsIChDb21wYXJhYmxlKSBiKTsKICAgICAgICAgfQogICAgIH0sCiAKQEAgLTkzLDcgKzkzLDcgQEAKICAgICAgKi8KICAgICBtYXggewogICAgICAgICBwdWJsaWMgT2JqZWN0IGFwcGx5KGZpbmFsIE9iamVjdCBhLCBmaW5hbCBPYmplY3QgYikgewotICAgICAgICAgICAgcmV0dXJuIE51bWJlckhlbHBlci5tYXgoKE51bWJlcikgYSwgKE51bWJlcikgYik7CisgICAgICAgICAgICByZXR1cm4gTnVtYmVySGVscGVyLm1heCgoQ29tcGFyYWJsZSkgYSwgKENvbXBhcmFibGUpIGIpOwogICAgICAgICB9CiAgICAgfSwKIApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9QYXJhbWV0ZXJpemluZy5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9QYXJhbWV0ZXJpemluZy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YjdlMDg4Li4wMDAwMDAwCi0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvUGFyYW1ldGVyaXppbmcuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLS8qCi0gKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCi0gKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKLSAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCi0gKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCi0gKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCi0gKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCi0gKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAotICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KLSAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQotICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCi0gKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCi0gKiB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsOwotCi1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuUGFyYW1ldGVyczsKLQotLyoqCi0gKiBBbiBpbnRlcmZhY2UgZm9yIHtAbGluayBTdGVwfSBpbXBsZW1lbnRhdGlvbnMgdGhhdCBob2xkIGEge0BsaW5rIFBhcmFtZXRlcnN9IG9iamVjdCwgd2hpY2ggZm9sZCBpbiBhcmd1bWVudHMgZnJvbQotICogb3RoZXIgc3RlcHMuIEl0IGlzIHR5cGljYWxseSB1c2VkIG9uIG11dGF0aW5nIHN0ZXBzLCBzdWNoIGFzIHtAY29kZSBhZGRWKCl9LCB3aGVyZSBjYWxscyB0byB7QGNvZGUgcHJvcGVydHkoayx2KX0KLSAqIGFyZSBmb2xkZWQgaW4gYXMgcGFyYW1ldGVycyB0byB0aGF0IGFkZCB2ZXJ0ZXggc3RlcC4KLSAqCi0gKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKLSAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKLSAqLwotcHVibGljIGludGVyZmFjZSBQYXJhbWV0ZXJpemluZyB7Ci0KLSAgICAvKioKLSAgICAgKiBHZXRzIHRoZSBwYXJhbWV0ZXJzIG9uIHRoZSBzdGVwLgotICAgICAqLwotICAgIHB1YmxpYyBQYXJhbWV0ZXJzIGdldFBhcmFtZXRlcnMoKTsKLX0KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvVGV4dC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9UZXh0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWMyNTgyNQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvVGV4dC5qYXZhCkBAIC0wLDAgKzEsMTU3IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbDsKKworaW1wb3J0IGphdmEudXRpbC5mdW5jdGlvbi5CaVByZWRpY2F0ZTsKKworLyoqCisgKiB7QGxpbmsgVGV4dH0gaXMgYSB7QGxpbmsgamF2YS51dGlsLmZ1bmN0aW9uLkJpUHJlZGljYXRlfSB0aGF0IGRldGVybWluZXMgd2hldGhlciB0aGUgZmlyc3Qgc3RyaW5nIHN0YXJ0cyB3aXRoLCBzdGFydHMKKyAqIG5vdCB3aXRoLCBlbmRzIHdpdGgsIGVuZHMgbm90IHdpdGgsIGNvbnRhaW5zIG9yIGRvZXMgbm90IGNvbnRhaW4gdGhlIHNlY29uZCBzdHJpbmcgYXJndW1lbnQuCisgKgorICogQGF1dGhvciBEYW5pZWwgS3VwcGl0eiAoaHR0cDovL2dyZW1saW4uZ3VydSkKKyAqIEBzaW5jZSAzLjQuMAorICovCitwdWJsaWMgZW51bSBUZXh0IGltcGxlbWVudHMgQmlQcmVkaWNhdGU8U3RyaW5nLCBTdHJpbmc+IHsKKworICAgIC8qKgorICAgICAqIEV2YWx1YXRlcyBpZiB0aGUgZmlyc3Qgc3RyaW5nIHN0YXJ0cyB3aXRoIHRoZSBzZWNvbmQuCisgICAgICoKKyAgICAgKiBAc2luY2UgMy40LjAKKyAgICAgKi8KKyAgICBzdGFydGluZ1dpdGggeworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIGJvb2xlYW4gdGVzdChmaW5hbCBTdHJpbmcgdmFsdWUsIGZpbmFsIFN0cmluZyBwcmVmaXgpIHsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZS5zdGFydHNXaXRoKHByZWZpeCk7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogVGhlIG5lZ2F0aXZlIG9mIHtAY29kZSBzdGFydHNXaXRofSBpcyB7QGxpbmsgI25vdFN0YXJ0aW5nV2l0aH0uCisgICAgICAgICAqLworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRleHQgbmVnYXRlKCkgeworICAgICAgICAgICAgcmV0dXJuIG5vdFN0YXJ0aW5nV2l0aDsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBFdmFsdWF0ZXMgaWYgdGhlIGZpcnN0IHN0cmluZyBkb2VzIG5vdCBzdGFydCB3aXRoIHRoZSBzZWNvbmQuCisgICAgICoKKyAgICAgKiBAc2luY2UgMy40LjAKKyAgICAgKi8KKyAgICBub3RTdGFydGluZ1dpdGggeworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIGJvb2xlYW4gdGVzdChmaW5hbCBTdHJpbmcgdmFsdWUsIGZpbmFsIFN0cmluZyBwcmVmaXgpIHsKKyAgICAgICAgICAgIHJldHVybiAhc3RhcnRpbmdXaXRoLnRlc3QodmFsdWUsIHByZWZpeCk7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogVGhlIG5lZ2F0aXZlIG9mIHtAY29kZSBzdGFydHNOb3RXaXRofSBpcyB7QGxpbmsgI3N0YXJ0aW5nV2l0aH0uCisgICAgICAgICAqLworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRleHQgbmVnYXRlKCkgeworICAgICAgICAgICAgcmV0dXJuIHN0YXJ0aW5nV2l0aDsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBFdmFsdWF0ZXMgaWYgdGhlIGZpcnN0IHN0cmluZyBlbmRzIHdpdGggdGhlIHNlY29uZC4KKyAgICAgKgorICAgICAqIEBzaW5jZSAzLjQuMAorICAgICAqLworICAgIGVuZGluZ1dpdGggeworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIGJvb2xlYW4gdGVzdChmaW5hbCBTdHJpbmcgdmFsdWUsIGZpbmFsIFN0cmluZyBzdWZmaXgpIHsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZS5lbmRzV2l0aChzdWZmaXgpOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRoZSBuZWdhdGl2ZSBvZiB7QGNvZGUgZW5kc1dpdGh9IGlzIHtAbGluayAjbm90RW5kaW5nV2l0aH0uCisgICAgICAgICAqLworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRleHQgbmVnYXRlKCkgeworICAgICAgICAgICAgcmV0dXJuIG5vdEVuZGluZ1dpdGg7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgLyoqCisgICAgICogRXZhbHVhdGVzIGlmIHRoZSBmaXJzdCBzdHJpbmcgZG9lcyBub3QgZW5kIHdpdGggdGhlIHNlY29uZC4KKyAgICAgKgorICAgICAqIEBzaW5jZSAzLjQuMAorICAgICAqLworICAgIG5vdEVuZGluZ1dpdGggeworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIGJvb2xlYW4gdGVzdChmaW5hbCBTdHJpbmcgdmFsdWUsIGZpbmFsIFN0cmluZyBwcmVmaXgpIHsKKyAgICAgICAgICAgIHJldHVybiAhZW5kaW5nV2l0aC50ZXN0KHZhbHVlLCBwcmVmaXgpOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRoZSBuZWdhdGl2ZSBvZiB7QGNvZGUgZW5kc05vdFdpdGh9IGlzIHtAbGluayAjZW5kaW5nV2l0aH0uCisgICAgICAgICAqLworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRleHQgbmVnYXRlKCkgeworICAgICAgICAgICAgcmV0dXJuIGVuZGluZ1dpdGg7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgLyoqCisgICAgICogRXZhbHVhdGVzIGlmIHRoZSBmaXJzdCBzdHJpbmcgY29udGFpbnMgdGhlIHNlY29uZC4KKyAgICAgKgorICAgICAqIEBzaW5jZSAzLjQuMAorICAgICAqLworICAgIGNvbnRhaW5pbmcgeworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIGJvb2xlYW4gdGVzdChmaW5hbCBTdHJpbmcgdmFsdWUsIGZpbmFsIFN0cmluZyBzZWFyY2gpIHsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZS5jb250YWlucyhzZWFyY2gpOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRoZSBuZWdhdGl2ZSBvZiB7QGNvZGUgY29udGFpbnN9IGlzIHtAbGluayAjbm90Q29udGFpbmluZ30uCisgICAgICAgICAqLworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRleHQgbmVnYXRlKCkgeworICAgICAgICAgICAgcmV0dXJuIG5vdENvbnRhaW5pbmc7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgLyoqCisgICAgICogRXZhbHVhdGVzIGlmIHRoZSBmaXJzdCBzdHJpbmcgZG9lcyBub3QgY29udGFpbiB0aGUgc2Vjb25kLgorICAgICAqCisgICAgICogQHNpbmNlIDMuNC4wCisgICAgICovCisgICAgbm90Q29udGFpbmluZyB7CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgYm9vbGVhbiB0ZXN0KGZpbmFsIFN0cmluZyB2YWx1ZSwgZmluYWwgU3RyaW5nIHNlYXJjaCkgeworICAgICAgICAgICAgcmV0dXJuICFjb250YWluaW5nLnRlc3QodmFsdWUsIHNlYXJjaCk7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogVGhlIG5lZ2F0aXZlIG9mIHtAY29kZSBhYnNlbnR9IGlzIHtAbGluayAjY29udGFpbmluZ30uCisgICAgICAgICAqLworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRleHQgbmVnYXRlKCkgeworICAgICAgICAgICAgcmV0dXJuIGNvbnRhaW5pbmc7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgICogUHJvZHVjZSB0aGUgb3Bwb3NpdGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGN1cnJlbnQge0Bjb2RlIFRleHR9IGVudW0uCisgICAgICovCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGFic3RyYWN0IFRleHQgbmVnYXRlKCk7Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL1RleHRQLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL1RleHRQLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmMyODg1MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvVGV4dFAuamF2YQpAQCAtMCwwICsxLDEwOSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWw7CisKK2ltcG9ydCBqYXZhLnV0aWwuZnVuY3Rpb24uQmlQcmVkaWNhdGU7CisKKy8qKgorICogUHJlZGVmaW5lZCB7QGNvZGUgUHJlZGljYXRlfSB2YWx1ZXMgdGhhdCBjYW4gYmUgdXNlZCBhcyB7QGNvZGUgU3RyaW5nfSBmaWx0ZXJzLgorICoKKyAqIEBhdXRob3IgRGFuaWVsIEt1cHBpdHogKGh0dHA6Ly9ncmVtbGluLmd1cnUpCisgKi8KK3B1YmxpYyBjbGFzcyBUZXh0UCBleHRlbmRzIFA8U3RyaW5nPiB7CisKKyAgICBAU3VwcHJlc3NXYXJuaW5ncygiV2Vha2VyQWNjZXNzIikKKyAgICBwdWJsaWMgVGV4dFAoZmluYWwgQmlQcmVkaWNhdGU8U3RyaW5nLCBTdHJpbmc+IGJpUHJlZGljYXRlLCBmaW5hbCBTdHJpbmcgdmFsdWUpIHsKKyAgICAgICAgc3VwZXIoYmlQcmVkaWNhdGUsIHZhbHVlKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoZmluYWwgT2JqZWN0IG90aGVyKSB7CisgICAgICAgIHJldHVybiBvdGhlciBpbnN0YW5jZW9mIFRleHRQICYmIHN1cGVyLmVxdWFscyhvdGhlcik7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgcmV0dXJuIG51bGwgPT0gdGhpcy5vcmlnaW5hbFZhbHVlID8gdGhpcy5iaVByZWRpY2F0ZS50b1N0cmluZygpIDogdGhpcy5iaVByZWRpY2F0ZS50b1N0cmluZygpICsgIigiICsgdGhpcy5vcmlnaW5hbFZhbHVlICsgIikiOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBUZXh0UCBuZWdhdGUoKSB7CisgICAgICAgIHJldHVybiBuZXcgVGV4dFAodGhpcy5iaVByZWRpY2F0ZS5uZWdhdGUoKSwgdGhpcy5vcmlnaW5hbFZhbHVlKTsKKyAgICB9CisKKyAgICBwdWJsaWMgVGV4dFAgY2xvbmUoKSB7CisgICAgICAgIHJldHVybiAoVGV4dFApIHN1cGVyLmNsb25lKCk7CisgICAgfQorCisgICAgLy8vLy8vLy8vLy8vLy8vLyBzdGF0aWNzCisKKyAgICAvKioKKyAgICAgKiBEZXRlcm1pbmVzIGlmIFN0cmluZyBkb2VzIHN0YXJ0IHdpdGggdGhlIGdpdmVuIHZhbHVlLgorICAgICAqCisgICAgICogQHNpbmNlIDMuNC4wCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBUZXh0UCBzdGFydGluZ1dpdGgoZmluYWwgU3RyaW5nIHZhbHVlKSB7CisgICAgICAgIHJldHVybiBuZXcgVGV4dFAoVGV4dC5zdGFydGluZ1dpdGgsIHZhbHVlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBEZXRlcm1pbmVzIGlmIFN0cmluZyBkb2VzIG5vdCBzdGFydCB3aXRoIHRoZSBnaXZlbiB2YWx1ZS4KKyAgICAgKgorICAgICAqIEBzaW5jZSAzLjQuMAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgVGV4dFAgbm90U3RhcnRpbmdXaXRoKGZpbmFsIFN0cmluZyB2YWx1ZSkgeworICAgICAgICByZXR1cm4gbmV3IFRleHRQKFRleHQubm90U3RhcnRpbmdXaXRoLCB2YWx1ZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogRGV0ZXJtaW5lcyBpZiBTdHJpbmcgZG9lcyBzdGFydCB3aXRoIHRoZSBnaXZlbiB2YWx1ZS4KKyAgICAgKgorICAgICAqIEBzaW5jZSAzLjQuMAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgVGV4dFAgZW5kaW5nV2l0aChmaW5hbCBTdHJpbmcgdmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBUZXh0UChUZXh0LmVuZGluZ1dpdGgsIHZhbHVlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBEZXRlcm1pbmVzIGlmIFN0cmluZyBkb2VzIG5vdCBzdGFydCB3aXRoIHRoZSBnaXZlbiB2YWx1ZS4KKyAgICAgKgorICAgICAqIEBzaW5jZSAzLjQuMAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgVGV4dFAgbm90RW5kaW5nV2l0aChmaW5hbCBTdHJpbmcgdmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBUZXh0UChUZXh0Lm5vdEVuZGluZ1dpdGgsIHZhbHVlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBEZXRlcm1pbmVzIGlmIFN0cmluZyBkb2VzIGNvbnRhaW4gdGhlIGdpdmVuIHZhbHVlLgorICAgICAqCisgICAgICogQHNpbmNlIDMuNC4wCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBUZXh0UCBjb250YWluaW5nKGZpbmFsIFN0cmluZyB2YWx1ZSkgeworICAgICAgICByZXR1cm4gbmV3IFRleHRQKFRleHQuY29udGFpbmluZywgdmFsdWUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIERldGVybWluZXMgaWYgU3RyaW5nIGRvZXMgbm90IGNvbnRhaW4gdGhlIGdpdmVuIHZhbHVlLgorICAgICAqCisgICAgICogQHNpbmNlIDMuNC4wCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBUZXh0UCBub3RDb250YWluaW5nKGZpbmFsIFN0cmluZyB2YWx1ZSkgeworICAgICAgICByZXR1cm4gbmV3IFRleHRQKFRleHQubm90Q29udGFpbmluZywgdmFsdWUpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvVHJhbnNsYXRvci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9UcmFuc2xhdG9yLmphdmEKaW5kZXggMDM0NjA5Mi4uOGNkZDg0ZCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9UcmFuc2xhdG9yLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9UcmFuc2xhdG9yLmphdmEKQEAgLTE5LDcgKzE5LDcgQEAKIAogcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsOwogCi1pbXBvcnQgamF2YS51dGlsLmZ1bmN0aW9uLlVuYXJ5T3BlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLmZ1bmN0aW9uLkJpRnVuY3Rpb247CiAKIC8qKgogICogQSBUcmFuc2xhdG9yIHdpbGwgdHJhbnNsYXRlIHtAbGluayBCeXRlY29kZX0gaW50byBhbm90aGVyIHJlcHJlc2VudGF0aW9uLiBUaGF0IHJlcHJlc2VudGF0aW9uIG1heSBiZSBhCkBAIC02MywzMSArNjMsMTAgQEAKICAgICBwdWJsaWMgaW50ZXJmYWNlIFNjcmlwdFRyYW5zbGF0b3IgZXh0ZW5kcyBUcmFuc2xhdG9yPFN0cmluZywgU3RyaW5nPiB7CiAKICAgICAgICAgLyoqCi0gICAgICAgICAqIFByb3ZpZGVzIGEgd2F5IHRvIGN1c3RvbWl6ZSBhbmQgb3ZlcnJpZGUgdGhlIHN0YW5kYXJkIHRyYW5zbGF0aW9uIHByb2Nlc3MuIEEge0BsaW5rIFNjcmlwdFRyYW5zbGF0b3J9Ci0gICAgICAgICAqIGltcGxlbWVudGF0aW9uIGNhbiBjaG9vc2UgdG8gZXhwb3NlIGEgd2F5IHRvIGFjY2VwdCBhIHtAY29kZSBUeXBlVHJhbnNsYXRvcn0gd2hpY2ggd2lsbCBjb252ZXJ0IGFuIGluY29taW5nCi0gICAgICAgICAqIG9iamVjdCB0byBhIGRpZmZlcmVudCBmb3JtIHdoaWNoIHdpbGwgdGhlbiBiZSBub3JtYWxseSBwcm9jZXNzZWQgb3IgY2FuIHJldHVybiBhIHtAbGluayBIYW5kbGVkfSBvYmplY3QKLSAgICAgICAgICogd2l0aCB0aGUgYWxyZWFkeSB0cmFuc2xhdGVkIHNjcmlwdC4KKyAgICAgICAgICogUHJvdmlkZXMgYSB3YXkgZm9yIHRoZSB7QGxpbmsgU2NyaXB0VHJhbnNsYXRvcn0gdG8gY29udmVydCB2YXJpb3VzIGRhdGEgdHlwZXMgdG8gdGhlaXIgc3RyaW5nCisgICAgICAgICAqIHJlcHJlc2VudGF0aW9ucyBpbiB0aGVpciB0YXJnZXQgbGFuZ3VhZ2UuCiAgICAgICAgICAqLwotICAgICAgICBwdWJsaWMgaW50ZXJmYWNlIFR5cGVUcmFuc2xhdG9yIGV4dGVuZHMgVW5hcnlPcGVyYXRvcjxPYmplY3Q+IHsKLSAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgVHlwZVRyYW5zbGF0b3IgaWRlbnRpdHkoKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHQgLT4gdDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8qKgotICAgICAgICAgKiBDb250YWlucyBhIGNvbXBsZXRlZCB0eXBlIHRyYW5zbGF0aW9uIGZyb20gdGhlIHtAbGluayBUeXBlVHJhbnNsYXRvcn0uCi0gICAgICAgICAqLwotICAgICAgICBwdWJsaWMgY2xhc3MgSGFuZGxlZCB7Ci0gICAgICAgICAgICBwcml2YXRlIGZpbmFsIFN0cmluZyB0cmFuc2xhdGlvbjsKLQotICAgICAgICAgICAgcHVibGljIEhhbmRsZWQoZmluYWwgU3RyaW5nIHRyYW5zbGF0aW9uKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGlvbiA9IHRyYW5zbGF0aW9uOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBwdWJsaWMgU3RyaW5nIGdldFRyYW5zbGF0aW9uKCkgewotICAgICAgICAgICAgICAgIHJldHVybiB0cmFuc2xhdGlvbjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICBwdWJsaWMgaW50ZXJmYWNlIFR5cGVUcmFuc2xhdG9yIGV4dGVuZHMgQmlGdW5jdGlvbjxTdHJpbmcsIE9iamVjdCwgT2JqZWN0PiB7IH0KICAgICB9CiAKICAgICAvKioKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvVHJhdmVyc2FsLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL1RyYXZlcnNhbC5qYXZhCmluZGV4IDU5ZWI2MjkuLjNiMDIyNTQgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvVHJhdmVyc2FsLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9UcmF2ZXJzYWwuamF2YQpAQCAtNTA3LDIwICs1MDcsMzQgQEAKICAgICAgICAgICovCiAgICAgICAgIHB1YmxpYyBib29sZWFuIGlzTG9ja2VkKCk7CiAKKyAgICAgICAgLyoqCisgICAgICAgICAqIEdldHMgdGhlIHtAbGluayBHcmFwaH0gaW5zdGFuY2UgYXNzb2NpYXRlZCB0byB0aGlzIHtAbGluayBUcmF2ZXJzYWx9LgorICAgICAgICAgKi8KICAgICAgICAgcHVibGljIE9wdGlvbmFsPEdyYXBoPiBnZXRHcmFwaCgpOwogCisgICAgICAgIC8qKgorICAgICAgICAgKiBHZXRzIHRoZSB7QGxpbmsgVHJhdmVyc2FsU291cmNlfSB0aGF0IHNwYXduZWQgdGhlIHtAbGluayBUcmF2ZXJzYWx9IGluc3RhbmNlIGluaXRpYWxseSBpZiBwcmVzZW50LiBUaGlzCisgICAgICAgICAqIHtAbGluayBUcmF2ZXJzYWxTb3VyY2V9IHNob3VsZCBoYXZlIHNwYXduZWQgZnJvbSB0aGUgYXNzb2NpYXRlZCB7QGxpbmsgR3JhcGh9IHJldHVybmVkIGZyb20KKyAgICAgICAgICoge0BsaW5rICNnZXRHcmFwaCgpfS4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBkZWZhdWx0IE9wdGlvbmFsPFRyYXZlcnNhbFNvdXJjZT4gZ2V0VHJhdmVyc2FsU291cmNlKCkgeworICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsLmVtcHR5KCk7CisgICAgICAgIH0KKwogICAgICAgICBwdWJsaWMgdm9pZCBzZXRHcmFwaChmaW5hbCBHcmFwaCBncmFwaCk7CiAKICAgICAgICAgcHVibGljIGRlZmF1bHQgYm9vbGVhbiBlcXVhbHMoZmluYWwgVHJhdmVyc2FsLkFkbWluPFMsIEU+IG90aGVyKSB7Ci0gICAgICAgICAgICBmaW5hbCBMaXN0PFN0ZXA+IHN0ZXBzID0gdGhpcy5nZXRTdGVwcygpOwotICAgICAgICAgICAgZmluYWwgTGlzdDxTdGVwPiBvdGhlclN0ZXBzID0gb3RoZXIuZ2V0U3RlcHMoKTsKLSAgICAgICAgICAgIGlmIChzdGVwcy5zaXplKCkgPT0gb3RoZXJTdGVwcy5zaXplKCkpIHsKLSAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHN0ZXBzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghc3RlcHMuZ2V0KGkpLmVxdWFscyhvdGhlclN0ZXBzLmdldChpKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICh0aGlzLmdldENsYXNzKCkuZXF1YWxzKG90aGVyLmdldENsYXNzKCkpKSB7CisgICAgICAgICAgICAgICAgZmluYWwgTGlzdDxTdGVwPiBzdGVwcyA9IHRoaXMuZ2V0U3RlcHMoKTsKKyAgICAgICAgICAgICAgICBmaW5hbCBMaXN0PFN0ZXA+IG90aGVyU3RlcHMgPSBvdGhlci5nZXRTdGVwcygpOworICAgICAgICAgICAgICAgIGlmIChzdGVwcy5zaXplKCkgPT0gb3RoZXJTdGVwcy5zaXplKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzdGVwcy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdGVwcy5nZXQoaSkuZXF1YWxzKG90aGVyU3RlcHMuZ2V0KGkpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvVHJhdmVyc2FsRW5naW5lLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL1RyYXZlcnNhbEVuZ2luZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NDc2MmNmLi4wMDAwMDAwCi0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvVHJhdmVyc2FsRW5naW5lLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMDcgKzAsMCBAQAotLyoKLSAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLSAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQotICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLSAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLSAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKLSAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKLSAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCi0gKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgotICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCi0gKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKLSAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKLSAqIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi1wYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWw7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuQ29tcHV0ZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLkdyYXBoQ29tcHV0ZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGg7Ci0KLWltcG9ydCBqYXZhLmlvLlNlcmlhbGl6YWJsZTsKLWltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLk9wdGlvbmFsOwotCi0vKioKLSAqIEEgVHJhdmVyc2FsRW5naW5lIGlzIHJlcG9uc2libGUgZm9yIGV4ZWN1dGluZyBhIHtAbGluayBUcmF2ZXJzYWx9LiBUaGVyZSBhcmUgdHdvIHtAbGluayBUeXBlfXMgb2YgVHJhdmVyc2FsRW5naW5lcy4KLSAqIHtAbGluayBUeXBlI1NUQU5EQVJEfSBpcyB0aGUgT0xUUCwgaXRlcmF0b3ItYmFzZWQgbW9kZWwgb2YgZ3JhcGggdHJhdmVyc2FsLgotICoge0BsaW5rIFR5cGUjQ09NUFVURVJ9IGlzIHRoZSBPTEFQLCBtZXNzYWdlIHBhc3NpbmcgbW9kZWwgb2YgZ3JhcGggdHJhdmVyc2FsLgotICogRXZlcnkge0BsaW5rIFRyYXZlcnNhbFNvdXJjZX0gc2hvdWxkIGJlIHByb3ZpZGVkIGEge0BsaW5rIFRyYXZlcnNhbEVuZ2luZS5CdWlsZGVyfSBzbyBpdCBjYW4gY29uc3RydWN0IGFuIGVuZ2luZSBmb3IgZWFjaCBzcGF3bmVkIHtAbGluayBUcmF2ZXJzYWx9LgotICoKLSAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQotICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjIuMCwgcmVwbGFjZWQgYnkge0BsaW5rIENvbXB1dGVyfS4KLSAqLwotQERlcHJlY2F0ZWQKLXB1YmxpYyBpbnRlcmZhY2UgVHJhdmVyc2FsRW5naW5lIGV4dGVuZHMgU2VyaWFsaXphYmxlIHsKLQotICAgIHB1YmxpYyBlbnVtIFR5cGUge1NUQU5EQVJELCBDT01QVVRFUn0KLQotICAgIC8qKgotICAgICAqIEdldCB0aGUgdHlwZSBvZiB0aGUgZW5naW5lOiB7QGxpbmsgVHlwZSNTVEFOREFSRH0gb3Ige0BsaW5rIFR5cGUjQ09NUFVURVJ9LgotICAgICAqCi0gICAgICogQHJldHVybiB0aGUgdHJhdmVyc2FsIGVuZ2luZSB0eXBlCi0gICAgICovCi0gICAgcHVibGljIFR5cGUgZ2V0VHlwZSgpOwotCi0gICAgLyoqCi0gICAgICogSWYgdGhlIHRyYXZlcnNhbCBlbmdpbmUgaXMgb2YgdHlwZSB7QGxpbmsgVHlwZSNDT01QVVRFUn0sIHRoZW4gaXQgc2hvdWxkIGhhdmUgdGhlIHtAbGluayBHcmFwaENvbXB1dGVyfSB1c2VkIGZvciBleGVjdXRpbmcgdGhlIHRyYXZlcnNhbC4KLSAgICAgKgotICAgICAqIEByZXR1cm4gYW4gb3B0aW9uYWwgb2YgY29udGFpbmluZyB0aGUgZ3JhcGggY29tcHV0ZXIgdG8gYmUgdXNlZCBmb3IgZXhlY3V0aW9uLgotICAgICAqLwotICAgIHB1YmxpYyBPcHRpb25hbDxHcmFwaENvbXB1dGVyPiBnZXRHcmFwaENvbXB1dGVyKCk7Ci0KLSAgICAvKioKLSAgICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgdHlwZSBpcyB7QGxpbmsgVHlwZSNTVEFOREFSRH0uCi0gICAgICoKLSAgICAgKiBAcmV0dXJuIHdoZXRoZXIgdGhlIGVuZ2luZSB0eXBlIGlzIHN0YW5kYXJkIChPTFRQKS4KLSAgICAgKi8KLSAgICBwdWJsaWMgZGVmYXVsdCBib29sZWFuIGlzU3RhbmRhcmQoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmdldFR5cGUoKS5lcXVhbHMoVHlwZS5TVEFOREFSRCk7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogV2hldGhlciBvciBub3QgdGhlIHR5cGUgaXMge0BsaW5rIFR5cGUjQ09NUFVURVJ9LgotICAgICAqCi0gICAgICogQHJldHVybiB3aGV0aGVyIHRoZSBlbmdpbmUgdHlwZSBpcyBjb21wdXRlciAoT0xBUCkuCi0gICAgICovCi0gICAgcHVibGljIGRlZmF1bHQgYm9vbGVhbiBpc0NvbXB1dGVyKCkgewotICAgICAgICByZXR1cm4gdGhpcy5nZXRUeXBlKCkuZXF1YWxzKFR5cGUuQ09NUFVURVIpOwotICAgIH0KLQotICAgIC8vLy8vLy8vLy8vCi0KLSAgICBARGVwcmVjYXRlZAotICAgIHB1YmxpYyBpbnRlcmZhY2UgQnVpbGRlciBleHRlbmRzIFNlcmlhbGl6YWJsZSB7Ci0KLSAgICAgICAgLyoqCi0gICAgICAgICAqIEEgbGlzdCBvZiB7QGxpbmsgVHJhdmVyc2FsU3RyYXRlZ3l9IGluc3RhbmNlcyB0aGF0IHNob3VsZCBiZSBhcHBsaWVkIHRvIHRoZSB1bHRpbWF0ZSB7QGxpbmsgVHJhdmVyc2FsfS4KLSAgICAgICAgICoKLSAgICAgICAgICogQHJldHVybiBzdHJhdGVnaWVzIHRvIGFwcGx5IChpZiBhbnkpLgotICAgICAgICAgKi8KLSAgICAgICAgcHVibGljIGRlZmF1bHQgTGlzdDxUcmF2ZXJzYWxTdHJhdGVneT4gZ2V0V2l0aFN0cmF0ZWdpZXMoKSB7Ci0gICAgICAgICAgICByZXR1cm4gQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvKioKLSAgICAgICAgICogQSBsaXN0IG9mIHtAbGluayBUcmF2ZXJzYWxTdHJhdGVneX0gY2xhc3NlcyB0aGF0IHNob3VsZCBub3QgYmUgYXBwbGllZCB0byB0aGUgdWx0aW1hdGUge0BsaW5rIFRyYXZlcnNhbH0uCi0gICAgICAgICAqCi0gICAgICAgICAqIEByZXR1cm4gc3RyYXRlZ2llcyB0byBub3QgYXBwbHkgKGlmIGFueSkuCi0gICAgICAgICAqLwotICAgICAgICBwdWJsaWMgZGVmYXVsdCBMaXN0PENsYXNzPD8gZXh0ZW5kcyBUcmF2ZXJzYWxTdHJhdGVneT4+IGdldFdpdGhvdXRTdHJhdGVnaWVzKCkgewotICAgICAgICAgICAgcmV0dXJuIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgLyoqCi0gICAgICAgICAqIENyZWF0ZSB0aGUge0BsaW5rIFRyYXZlcnNhbEVuZ2luZX0uCi0gICAgICAgICAqCi0gICAgICAgICAqIEBwYXJhbSBncmFwaCB0aGUgZ3JhcGggdG8gdWx0aW1hdGVseSBoYXZlIHRoZSB7QGxpbmsgVHJhdmVyc2FsfSBleGVjdXRlIG92ZXIuCi0gICAgICAgICAqIEByZXR1cm4gYSB7QGxpbmsgVHJhdmVyc2FsRW5naW5lfSB0aGF0IGlzIHBhcnRpY3VsYXIgdG8gYSB7QGxpbmsgVHJhdmVyc2FsfS4KLSAgICAgICAgICovCi0gICAgICAgIHB1YmxpYyBUcmF2ZXJzYWxFbmdpbmUgY3JlYXRlKGZpbmFsIEdyYXBoIGdyYXBoKTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL1RyYXZlcnNhbFNvdXJjZS5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9UcmF2ZXJzYWxTb3VyY2UuamF2YQppbmRleCAyZmUxYjhmLi45MWVmNTU0IDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL1RyYXZlcnNhbFNvdXJjZS5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvVHJhdmVyc2FsU291cmNlLmphdmEKQEAgLTI0LDE2ICsyNCwyMCBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5HcmFwaENvbXB1dGVyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwuc3RyYXRlZ3kuZGVjb3JhdGlvbi5WZXJ0ZXhQcm9ncmFtU3RyYXRlZ3k7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnJlbW90ZS5SZW1vdGVDb25uZWN0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuZGVjb3JhdGlvbi5PcHRpb25zU3RyYXRlZ3k7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLlNhY2tTdHJhdGVneTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uU2lkZUVmZmVjdFN0cmF0ZWd5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkdyYXBoOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udXRpbC5mdW5jdGlvbi5Db25zdGFudFN1cHBsaWVyOwogCitpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuQ29uc3RydWN0b3I7CiBpbXBvcnQgamF2YS51dGlsLk9wdGlvbmFsOwogaW1wb3J0IGphdmEudXRpbC5mdW5jdGlvbi5CaW5hcnlPcGVyYXRvcjsKIGltcG9ydCBqYXZhLnV0aWwuZnVuY3Rpb24uU3VwcGxpZXI7CiBpbXBvcnQgamF2YS51dGlsLmZ1bmN0aW9uLlVuYXJ5T3BlcmF0b3I7CiAKK2ltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnJlbW90ZS5SZW1vdGVDb25uZWN0aW9uLkdSRU1MSU5fUkVNT1RFX0NPTk5FQ1RJT05fQ0xBU1M7CisKIC8qKgogICogQSB7QGNvZGUgVHJhdmVyc2FsU291cmNlfSBpcyB1c2VkIHRvIGNyZWF0ZSB7QGxpbmsgVHJhdmVyc2FsfSBpbnN0YW5jZXMuCiAgKiBBIHRyYXZlcnNhbCBzb3VyY2UgY2FuIGdlbmVyYXRlIGFueSBudW1iZXIgb2Yge0BsaW5rIFRyYXZlcnNhbH0gaW5zdGFuY2VzLgpAQCAtNTIsMTggKzU2LDYgQEAKIHB1YmxpYyBpbnRlcmZhY2UgVHJhdmVyc2FsU291cmNlIGV4dGVuZHMgQ2xvbmVhYmxlLCBBdXRvQ2xvc2VhYmxlIHsKIAogICAgIC8qKgotICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy4zLjUsIHJlcGxhY2VkIGJ5IHtAbGluayBSZW1vdGVDb25uZWN0aW9uI0dSRU1MSU5fUkVNT1RFfS4KLSAgICAgKi8KLSAgICBARGVwcmVjYXRlZAotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEdSRU1MSU5fUkVNT1RFID0gImdyZW1saW4ucmVtb3RlLiI7Ci0KLSAgICAvKioKLSAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuMy41LCByZXBsYWNlZCBieSB7QGxpbmsgUmVtb3RlQ29ubmVjdGlvbiNHUkVNTElOX1JFTU9URV9DT05ORUNUSU9OX0NMQVNTfS4KLSAgICAgKi8KLSAgICBARGVwcmVjYXRlZAotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEdSRU1MSU5fUkVNT1RFX0NPTk5FQ1RJT05fQ0xBU1MgPSBHUkVNTElOX1JFTU9URSArICJyZW1vdGVDb25uZWN0aW9uQ2xhc3MiOwotCi0gICAgLyoqCiAgICAgICogR2V0IHRoZSB7QGxpbmsgVHJhdmVyc2FsU3RyYXRlZ2llc30gYXNzb2NpYXRlZCB3aXRoIHRoaXMgdHJhdmVyc2FsIHNvdXJjZS4KICAgICAgKgogICAgICAqIEByZXR1cm4gdGhlIHRyYXZlcnNhbCBzdHJhdGVnaWVzIG9mIHRoZSB0cmF2ZXJzYWwgc291cmNlCkBAIC05Miw2ICs4NCw3IEBACiAgICAgICAgICAgICAvLyBzdGF0aWMgZmllbGRzIG9ubHkKICAgICAgICAgfQogCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIHdpdGggPSAid2l0aCI7CiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIHdpdGhTYWNrID0gIndpdGhTYWNrIjsKICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgd2l0aFN0cmF0ZWdpZXMgPSAid2l0aFN0cmF0ZWdpZXMiOwogICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyB3aXRob3V0U3RyYXRlZ2llcyA9ICJ3aXRob3V0U3RyYXRlZ2llcyI7CkBAIC0xMDMsNiArOTYsMzggQEAKICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCiAgICAgLyoqCisgICAgICogUHJvdmlkZXMgYSBjb25maWd1cmF0aW9uIHRvIGEgdHJhdmVyc2FsIGluIHRoZSBmb3JtIG9mIGEga2V5IHdoaWNoIGlzIHRoZSBzYW1lIGFzIHtAY29kZSB3aXRoKGtleSwgdHJ1ZSl9LiBUaGUKKyAgICAgKiBrZXkgb2YgdGhlIGNvbmZpZ3VyYXRpb24gbXVzdCBiZSBncmFwaCBwcm92aWRlciBzcGVjaWZpYyBhbmQgdGhlcmVmb3JlIGEgY29uZmlndXJhdGlvbiBjb3VsZCBiZSBzdXBwbGllZCB0aGF0CisgICAgICogaXMgbm90IGtub3duIHRvIGJlIHZhbGlkIHVudGlsIGV4ZWN1dGlvbi4KKyAgICAgKgorICAgICAqIEBwYXJhbSBrZXkgdGhlIGtleSBvZiB0aGUgY29uZmlndXJhdGlvbiB0byBhcHBseSB0byBhIHRyYXZlcnNhbAorICAgICAqIEByZXR1cm4gYSBuZXcgdHJhdmVyc2FsIHNvdXJjZSB3aXRoIHRoZSBpbmNsdWRlZCBjb25maWd1cmF0aW9uCisgICAgICogQHNpbmNlIDMuNC4wCisgICAgICovCisgICAgcHVibGljIGRlZmF1bHQgVHJhdmVyc2FsU291cmNlIHdpdGgoZmluYWwgU3RyaW5nIGtleSkgeworICAgICAgICByZXR1cm4gd2l0aChrZXksIHRydWUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFByb3ZpZGVzIGEgY29uZmlndXJhdGlvbiB0byBhIHRyYXZlcnNhbCBpbiB0aGUgZm9ybSBvZiBhIGtleSB2YWx1ZSBwYWlyLiBUaGUgIGtleSBvZiB0aGUgY29uZmlndXJhdGlvbiBtdXN0IGJlCisgICAgICogZ3JhcGggcHJvdmlkZXIgc3BlY2lmaWMgYW5kIHRoZXJlZm9yZSBhIGNvbmZpZ3VyYXRpb24gY291bGQgYmUgc3VwcGxpZWQgdGhhdCBpcyBub3Qga25vd24gdG8gYmUgdmFsaWQgdW50aWwKKyAgICAgKiBleGVjdXRpb24uIFRoaXMgaXMgYSBoYW5keSBzaG9ydGN1dCBmb3IgYnVpbGRpbmcgYW4ge0BsaW5rIE9wdGlvbnNTdHJhdGVneX0gbWFudWFsbHkgYW5kIHRoZW4gYWRkIHdpdGgKKyAgICAgKiB7QGxpbmsgI3dpdGhTdHJhdGVnaWVzKFRyYXZlcnNhbFN0cmF0ZWd5W10pfS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBrZXkgdGhlIGtleSBvZiB0aGUgY29uZmlndXJhdGlvbiB0byBhcHBseSB0byBhIHRyYXZlcnNhbAorICAgICAqIEBwYXJhbSB2YWx1ZSB0aGUgdmFsdWUgb2YgdGhlIGNvbmZpZ3VyYXRpb24gdG8gYXBwbHkgdG8gYSB0cmF2ZXJzYWwKKyAgICAgKiBAcmV0dXJuIGEgbmV3IHRyYXZlcnNhbCBzb3VyY2Ugd2l0aCB0aGUgaW5jbHVkZWQgY29uZmlndXJhdGlvbgorICAgICAqIEBzaW5jZSAzLjQuMAorICAgICAqLworICAgIHB1YmxpYyBkZWZhdWx0IFRyYXZlcnNhbFNvdXJjZSB3aXRoKGZpbmFsIFN0cmluZyBrZXksIGZpbmFsIE9iamVjdCB2YWx1ZSkgeworICAgICAgICBmaW5hbCBPcHRpb25zU3RyYXRlZ3kuQnVpbGRlciBidWlsZGVyID0gT3B0aW9uc1N0cmF0ZWd5LmJ1aWxkKCk7CisgICAgICAgIGdldFN0cmF0ZWdpZXMoKS5nZXRTdHJhdGVneShPcHRpb25zU3RyYXRlZ3kuY2xhc3MpCisgICAgICAgICAgICAgICAgLmlmUHJlc2VudChvcHRpb25zU3RyYXRlZ3kgLT4gb3B0aW9uc1N0cmF0ZWd5LmdldE9wdGlvbnMoKS5mb3JFYWNoKGJ1aWxkZXI6OndpdGgpKTsKKyAgICAgICAgYnVpbGRlci53aXRoKGtleSwgdmFsdWUpOworICAgICAgICByZXR1cm4gd2l0aFN0cmF0ZWdpZXMoYnVpbGRlci5jcmVhdGUoKSk7CisgICAgfQorCisgICAgLyoqCiAgICAgICogQWRkIGFuIGFyYml0cmFyeSBjb2xsZWN0aW9uIG9mIHtAbGluayBUcmF2ZXJzYWxTdHJhdGVneX0gaW5zdGFuY2VzIHRvIHRoZSB0cmF2ZXJzYWwgc291cmNlLgogICAgICAqCiAgICAgICogQHBhcmFtIHRyYXZlcnNhbFN0cmF0ZWdpZXMgYSBjb2xsZWN0aW9uIG9mIHRyYXZlcnNhbCBzdHJhdGVnaWVzIHRvIGFkZApAQCAtMzUwLDcgKzM3NSw3IEBACiAKICAgICAvKioKICAgICAgKiBDb25maWd1cmVzIHRoZSB7QGNvZGUgVHJhdmVyc2FsU291cmNlfSBhcyBhICJyZW1vdGUiIHRvIGlzc3VlIHRoZSB7QGxpbmsgVHJhdmVyc2FsfSBmb3IgZXhlY3V0aW9uIGVsc2V3aGVyZS4KLSAgICAgKiBFeHBlY3RzIGtleSBmb3Ige0BsaW5rIFJlbW90ZUNvbm5lY3Rpb24jR1JFTUxJTl9SRU1PVEVfQ09OTkVDVElPTl9DTEFTU30gYXMgd2VsbCBhcyBhbnkgY29uZmlndXJhdGlvbiByZXF1aXJlZCBieQorICAgICAqIEV4cGVjdHMga2V5IGZvciB7QGxpbmsgI0dSRU1MSU5fUkVNT1RFX0NPTk5FQ1RJT05fQ0xBU1N9IGFzIHdlbGwgYXMgYW55IGNvbmZpZ3VyYXRpb24gcmVxdWlyZWQgYnkKICAgICAgKiB0aGUgdW5kZXJseWluZyB7QGxpbmsgUmVtb3RlQ29ubmVjdGlvbn0gd2hpY2ggd2lsbCBiZSBpbnN0YW50aWF0ZWQuIE5vdGUgdGhhdCB0aGUge0Bjb2RlIENvbmZpZ3VyYXRpb259IG9iamVjdAogICAgICAqIGlzIHBhc3NlZCBkb3duIHdpdGhvdXQgY2hhbmdlIHRvIHRoZSBjcmVhdGlvbiBvZiB0aGUge0BsaW5rIFJlbW90ZUNvbm5lY3Rpb259IGluc3RhbmNlLgogICAgICAqCkBAIC0zNTksOSArMzg0LDE4IEBACiAgICAgICovCiAgICAgQERlcHJlY2F0ZWQKICAgICBwdWJsaWMgZGVmYXVsdCBUcmF2ZXJzYWxTb3VyY2Ugd2l0aFJlbW90ZShmaW5hbCBDb25maWd1cmF0aW9uIGNvbmYpIHsKLSAgICAgICAgcmV0dXJuIHdpdGhSZW1vdGUoUmVtb3RlQ29ubmVjdGlvbi5mcm9tKGNvbmYpKTsKKyAgICAgICAgaWYgKCFjb25mLmNvbnRhaW5zS2V5KEdSRU1MSU5fUkVNT1RFX0NPTk5FQ1RJT05fQ0xBU1MpKQorICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiQ29uZmlndXJhdGlvbiBtdXN0IGNvbnRhaW4gdGhlICciICsgR1JFTUxJTl9SRU1PVEVfQ09OTkVDVElPTl9DTEFTUyArICInIGtleSIpOworICAgICAgICBmaW5hbCBSZW1vdGVDb25uZWN0aW9uIHJlbW90ZUNvbm5lY3Rpb247CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmaW5hbCBDbGFzczw/IGV4dGVuZHMgUmVtb3RlQ29ubmVjdGlvbj4gY2xhenogPSBDbGFzcy5mb3JOYW1lKGNvbmYuZ2V0U3RyaW5nKEdSRU1MSU5fUkVNT1RFX0NPTk5FQ1RJT05fQ0xBU1MpKS5hc1N1YmNsYXNzKFJlbW90ZUNvbm5lY3Rpb24uY2xhc3MpOworICAgICAgICAgICAgZmluYWwgQ29uc3RydWN0b3I8PyBleHRlbmRzIFJlbW90ZUNvbm5lY3Rpb24+IGN0b3IgPSBjbGF6ei5nZXRDb25zdHJ1Y3RvcihDb25maWd1cmF0aW9uLmNsYXNzKTsKKyAgICAgICAgICAgIHJlbW90ZUNvbm5lY3Rpb24gPSBjdG9yLm5ld0luc3RhbmNlKGNvbmYpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oZXgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB3aXRoUmVtb3RlKHJlbW90ZUNvbm5lY3Rpb24pOwogICAgIH0KLQogICAgIC8qKgogICAgICAqIENvbmZpZ3VyZXMgdGhlIHtAY29kZSBUcmF2ZXJzYWxTb3VyY2V9IGFzIGEgInJlbW90ZSIgdG8gaXNzdWUgdGhlIHtAbGluayBUcmF2ZXJzYWx9IGZvciBleGVjdXRpb24gZWxzZXdoZXJlLgogICAgICAqIENhbGxzIHtAbGluayAjd2l0aFJlbW90ZShDb25maWd1cmF0aW9uKX0gYWZ0ZXIgcmVhZGluZyB0aGUgcHJvcGVydGllcyBmaWxlIHNwZWNpZmllZC4KQEAgLTM3Myw3ICs0MDcsNiBAQAogICAgIHB1YmxpYyBkZWZhdWx0IFRyYXZlcnNhbFNvdXJjZSB3aXRoUmVtb3RlKGZpbmFsIFN0cmluZyBjb25maWdGaWxlKSB0aHJvd3MgRXhjZXB0aW9uIHsKICAgICAgICAgcmV0dXJuIHdpdGhSZW1vdGUobmV3IFByb3BlcnRpZXNDb25maWd1cmF0aW9uKGNvbmZpZ0ZpbGUpKTsKICAgICB9Ci0KICAgICAvKioKICAgICAgKiBDb25maWd1cmVzIHRoZSB7QGNvZGUgVHJhdmVyc2FsU291cmNlfSBhcyBhICJyZW1vdGUiIHRvIGlzc3VlIHRoZSB7QGxpbmsgVHJhdmVyc2FsfSBmb3IgZXhlY3V0aW9uIGVsc2V3aGVyZS4KICAgICAgKiBJbXBsZW1lbnRhdGlvbnMgc2hvdWxkIHRyYWNrIHtAbGluayBSZW1vdGVDb25uZWN0aW9ufSBpbnN0YW5jZXMgdGhhdCBhcmUgY3JlYXRlZCBhbmQgY2FsbApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9UcmF2ZXJzYWxTdHJhdGVnaWVzLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL1RyYXZlcnNhbFN0cmF0ZWdpZXMuamF2YQppbmRleCBhMmY5MzJiLi42YzJjMmYzIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL1RyYXZlcnNhbFN0cmF0ZWdpZXMuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL1RyYXZlcnNhbFN0cmF0ZWdpZXMuamF2YQpAQCAtODUsOCArODUsOCBAQAogICAgIH0KIAogICAgIC8qKgotICAgICAqIEFwcGx5IGFsbCB0aGUge0BsaW5rIFRyYXZlcnNhbFN0cmF0ZWd5fSBvcHRpbWl6ZXJzIHRvIHRoZSB7QGxpbmsgVHJhdmVyc2FsfSBmb3IgdGhlIHN0YXRlZCB7QGxpbmsgVHJhdmVyc2FsRW5naW5lfS4KLSAgICAgKiBUaGlzIG1ldGhvZCBtdXN0IGVuc3VyZSB0aGF0IHRoZSBzdHJhdGVnaWVzIGFyZSBzb3J0ZWQgcHJpb3IgdG8gYXBwbGljYXRpb24uCisgICAgICogQXBwbHkgYWxsIHRoZSB7QGxpbmsgVHJhdmVyc2FsU3RyYXRlZ3l9IG9wdGltaXplcnMgdG8gdGhlIHtAbGluayBUcmF2ZXJzYWx9LiBUaGlzIG1ldGhvZCBtdXN0IGVuc3VyZSB0aGF0IHRoZQorICAgICAqIHN0cmF0ZWdpZXMgYXJlIHNvcnRlZCBwcmlvciB0byBhcHBsaWNhdGlvbi4KICAgICAgKgogICAgICAqIEBwYXJhbSB0cmF2ZXJzYWwgdGhlIHRyYXZlcnNhbCB0byBhcHBseSB0aGUgc3RyYXRlZ2llcyB0bwogICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy4zLjEwLCBub3QgZGlyZWN0bHkgcmVwbGFjZWQgYXMgdGhpcyBtb2RlIG9mIHN0cmF0ZWd5IGFwcGxpY2F0aW9uIGhhcyBub3QgYmVlbgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9UcmF2ZXJzZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvVHJhdmVyc2VyLmphdmEKaW5kZXggOTNlYmU3ZC4uZTA3YmVjMSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9UcmF2ZXJzZXIuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL1RyYXZlcnNlci5qYXZhCkBAIC04OSw2ICs4OSwxNSBAQAogICAgIHB1YmxpYyBpbnQgbG9vcHMoKTsKIAogICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZSB0cmF2ZXJzZXIgaGFzIGdvbmUgdGhyb3VnaCB0aGUgbmFtZWQgbG9vcGluZyBzZWN0aW9uIG9mIGEgdHJhdmVyc2FsLgorICAgICAqCisgICAgICogQHBhcmFtIGxvb3BOYW1lIHRoZSBuYW1lIGFwcGxpZWQgdG8gdGhlIGxvb3Agb3IgbnVsbCBmb3IgdGhlIGNvbnRhaW5pbmcgbG9vcAorICAgICAqIEByZXR1cm4gVGhlIG51bWJlciBvZiB0aW1lcyB0aGUgdHJhdmVyc2VyIGhhcyBnb25lIHRocm91Z2ggYSBsb29wCisgICAgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIGxvb3BOYW1lIGlzIG5vdCBkZWZpbmVkCisgICAgICovCisgICAgcHVibGljIGludCBsb29wcyhmaW5hbCBTdHJpbmcgbG9vcE5hbWUpOworCisgICAgLyoqCiAgICAgICogQSB0cmF2ZXJzZXIgbWF5IHJlcHJlc2VudCBhIGdyb3VwaW5nIG9mIHRyYXZlcnNlcnMgdG8gYWxsb3cgZm9yIG1vcmUgZWZmaWNpZW50IGRhdGEgcHJvcGFnYXRpb24uCiAgICAgICoKICAgICAgKiBAcmV0dXJuIHRoZSBudW1iZXIgb2YgdHJhdmVyc2VycyByZXByZXNlbnRlZCBpbiB0aGlzIHRyYXZlcnNlci4KQEAgLTIxMywxNCArMjIyLDIwIEBACiAgICAgICAgIHB1YmxpYyB2b2lkIHNldChmaW5hbCBUIHQpOwogCiAgICAgICAgIC8qKgotICAgICAgICAgKiBJbmNyZW1lbnQgdGhlIG51bWJlciBvZiB0aW1lcyB0aGUgdHJhdmVyc2VyIGhhcyBnb25lIHRocm91Z2ggYSBsb29waW5nIHNlY3Rpb24gb2YgdHJhdmVyc2FsLgorICAgICAgICAgKiBJbml0aWFsaXNlIGEgbG9vcCBieSBzZXR0aW5nIHVwIHRoZSBsb29waW5nIGNvbnN0cnVjdC4KICAgICAgICAgICogVGhlIHN0ZXAgbGFiZWwgaXMgaW1wb3J0YW50IHRvIGNyZWF0ZSBhIHN0YWNrIG9mIGxvb3AgY291bnRlcnMgd2hlbiB3aXRoaW4gYSBuZXN0ZWQgY29udGV4dC4KICAgICAgICAgICogSWYgdGhlIHByb3ZpZGVkIGxhYmVsIGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgY3VycmVudCBsYWJlbCBvbiB0aGUgc3RhY2ssIGFkZCBhIG5ldyBsb29wIGNvdW50ZXIuCi0gICAgICAgICAqIElmIHRoZSBwcm92aWRlZCBsYWJlbCBpcyB0aGUgc2FtZSBhcyB0aGUgY3VycmVudCBsYWJlbCBvbiB0aGUgc3RhY2ssIGluY3JlbWVudCB0aGUgbG9vcCBjb3VudGVyLgorICAgICAgICAgKiBUaGUgbG9vcE5hbWUgY2FuIGJlIHVzZWQgdG8gcmVmZXIgdG8gdGhlIGxvb3BzIGNvdW50ZXIgdmlhIHRoZSB7QGxpbmsgTG9vcHNTdGVwfQogICAgICAgICAgKgotICAgICAgICAgKiBAcGFyYW0gc3RlcExhYmVsIHRoZSBsYWJlbCBvZiB0aGUgc3RlcCB0aGF0IGlzIGRvaW5nIHRoZSBpbmNyZW1lbnRpbmcKKyAgICAgICAgICogQHBhcmFtIHN0ZXBMYWJlbCB0aGUgbGFiZWwgb2YgdGhlIHN0ZXAgdGhhdCBpcyBiZWluZyBzZXQtdXAuCisgICAgICAgICAqIEBwYXJhbSBsb29wTmFtZSB0aGUgdXNlciBkZWZpbmVkIG5hbWUgZm9yIHJlZmVyZW5jaW5nIHRoZSBsb29wIGNvdW50ZXIgb3IgbnVsbCBpZiBub3Qgc2V0CiAgICAgICAgICAqLwotICAgICAgICBwdWJsaWMgdm9pZCBpbmNyTG9vcHMoZmluYWwgU3RyaW5nIHN0ZXBMYWJlbCk7CisgICAgICAgIHB1YmxpYyB2b2lkIGluaXRpYWxpc2VMb29wcyhmaW5hbCBTdHJpbmcgc3RlcExhYmVsLCBmaW5hbCBTdHJpbmcgbG9vcE5hbWUpOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBJbmNyZW1lbnQgdGhlIG51bWJlciBvZiB0aW1lcyB0aGUgdHJhdmVyc2VyIGhhcyBnb25lIHRocm91Z2ggYSBsb29waW5nIHNlY3Rpb24gb2YgdHJhdmVyc2FsLgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHZvaWQgaW5jckxvb3BzKCk7CiAKICAgICAgICAgLyoqCiAgICAgICAgICAqIFNldCB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZSB0cmF2ZXJzZXIgaGFzIGdvbmUgdGhyb3VnaCBhIGxvb3AgYmFjayB0byAwLgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvR3JlbWxpbkRzbFByb2Nlc3Nvci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvR3JlbWxpbkRzbFByb2Nlc3Nvci5qYXZhCmluZGV4IDI2ODM4YTguLmYxOThmMTYgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL0dyZW1saW5Ec2xQcm9jZXNzb3IuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9HcmVtbGluRHNsUHJvY2Vzc29yLmphdmEKQEAgLTI3LDYgKzI3LDcgQEAKIGltcG9ydCBjb20uc3F1YXJldXAuamF2YXBvZXQuVHlwZU5hbWU7CiBpbXBvcnQgY29tLnNxdWFyZXVwLmphdmFwb2V0LlR5cGVTcGVjOwogaW1wb3J0IGNvbS5zcXVhcmV1cC5qYXZhcG9ldC5UeXBlVmFyaWFibGVOYW1lOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5yZW1vdGUuUmVtb3RlQ29ubmVjdGlvbjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbFN0cmF0ZWdpZXM7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguR3JhcGhUcmF2ZXJzYWw7CkBAIC0yMzIsNiArMjMzLDExIEBACiAgICAgICAgICAgICAgICAgLmFkZFBhcmFtZXRlcihUcmF2ZXJzYWxTdHJhdGVnaWVzLmNsYXNzLCAic3RyYXRlZ2llcyIpCiAgICAgICAgICAgICAgICAgLmFkZFN0YXRlbWVudCgic3VwZXIoJE4sICROKSIsICJncmFwaCIsICJzdHJhdGVnaWVzIikKICAgICAgICAgICAgICAgICAuYnVpbGQoKSk7CisgICAgICAgIHRyYXZlcnNhbFNvdXJjZUNsYXNzLmFkZE1ldGhvZChNZXRob2RTcGVjLmNvbnN0cnVjdG9yQnVpbGRlcigpCisgICAgICAgICAgICAgICAgLmFkZE1vZGlmaWVycyhNb2RpZmllci5QVUJMSUMpCisgICAgICAgICAgICAgICAgLmFkZFBhcmFtZXRlcihSZW1vdGVDb25uZWN0aW9uLmNsYXNzLCAiY29ubmVjdGlvbiIpCisgICAgICAgICAgICAgICAgLmFkZFN0YXRlbWVudCgic3VwZXIoJE4pIiwgImNvbm5lY3Rpb24iKQorICAgICAgICAgICAgICAgIC5idWlsZCgpKTsKIAogICAgICAgICAvLyBvdmVycmlkZSBtZXRob2RzIHRvIHJldHVybiBhIHRoZSBEU0wgVHJhdmVyc2FsU291cmNlLiBmaW5kIEdyYXBoVHJhdmVyc2FsU291cmNlIGNsYXNzIHNvbWV3aGVyZSBpbiB0aGUgaGllcmFyY2h5CiAgICAgICAgIGZpbmFsIEVsZW1lbnQgdGlua2VyUG9wc0dyYXBoVHJhdmVyc2FsU291cmNlID0gZmluZENsYXNzQXNFbGVtZW50KGdyYXBoVHJhdmVyc2FsU291cmNlRWxlbWVudCwgR3JhcGhUcmF2ZXJzYWxTb3VyY2UuY2xhc3MpOwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvZ3JhcGgvR3JhcGhUcmF2ZXJzYWwuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL2dyYXBoL0dyYXBoVHJhdmVyc2FsLmphdmEKaW5kZXggMWFlZDBiMi4uOWIzYTJiMiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvZ3JhcGgvR3JhcGhUcmF2ZXJzYWwuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9ncmFwaC9HcmFwaFRyYXZlcnNhbC5qYXZhCkBAIC0xOSw5ICsxOSwxMiBAQAogcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaDsKIAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5WZXJ0ZXhQcm9ncmFtOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5jbHVzdGVyaW5nLmNvbm5lY3RlZC5Db25uZWN0ZWRDb21wb25lbnRWZXJ0ZXhQcm9ncmFtOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwuc3RlcC5tYXAuQ29ubmVjdGVkQ29tcG9uZW50VmVydGV4UHJvZ3JhbVN0ZXA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnRyYXZlcnNhbC5zdGVwLm1hcC5QYWdlUmFua1ZlcnRleFByb2dyYW1TdGVwOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwuc3RlcC5tYXAuUGVlclByZXNzdXJlVmVydGV4UHJvZ3JhbVN0ZXA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnRyYXZlcnNhbC5zdGVwLm1hcC5Qcm9ncmFtVmVydGV4UHJvZ3JhbVN0ZXA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnRyYXZlcnNhbC5zdGVwLm1hcC5TaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtU3RlcDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLk9yZGVyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlBhdGg7CkBAIC0zNiw4ICszOSwxMCBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwubGFtYmRhLlByZWRpY2F0ZVRyYXZlcnNlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmxhbWJkYS5UcnVlVHJhdmVyc2FsOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5CeU1vZHVsYXRpbmc7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLkNvbmZpZ3VyaW5nOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5Gcm9tVG9Nb2R1bGF0aW5nOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5NdXRhdGluZzsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuUmVhZFdyaXRpbmc7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLlRpbWVzTW9kdWxhdGluZzsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuVHJhdmVyc2FsT3B0aW9uUGFyZW50OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5icmFuY2guQnJhbmNoU3RlcDsKQEAgLTc1LDExICs4MCwxMyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuRGVkdXBMb2NhbFN0ZXA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5FZGdlT3RoZXJWZXJ0ZXhTdGVwOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuRWRnZVZlcnRleFN0ZXA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5FbGVtZW50TWFwU3RlcDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLkZvbGRTdGVwOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuR3JhcGhTdGVwOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuR3JvdXBDb3VudFN0ZXA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5Hcm91cFN0ZXA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5JZFN0ZXA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5JbmRleFN0ZXA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5MYWJlbFN0ZXA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5MYW1iZGFDb2xsZWN0aW5nQmFycmllclN0ZXA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5MYW1iZGFGbGF0TWFwU3RlcDsKQEAgLTEyMiw2ICsxMjksNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5zaWRlRWZmZWN0Lkdyb3VwU2lkZUVmZmVjdFN0ZXA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnNpZGVFZmZlY3QuSWRlbnRpdHlTdGVwOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5zaWRlRWZmZWN0LkluamVjdFN0ZXA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnNpZGVFZmZlY3QuSW9TdGVwOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5zaWRlRWZmZWN0LkxhbWJkYVNpZGVFZmZlY3RTdGVwOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5zaWRlRWZmZWN0LlByb2ZpbGVTaWRlRWZmZWN0U3RlcDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuc2lkZUVmZmVjdC5TYWNrVmFsdWVTdGVwOwpAQCAtMTY1LDYgKzE3Myw3IEBACiAKIC8qKgogICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCiAgKi8KIHB1YmxpYyBpbnRlcmZhY2UgR3JhcGhUcmF2ZXJzYWw8UywgRT4gZXh0ZW5kcyBUcmF2ZXJzYWw8UywgRT4gewogCkBAIC01NDUsNyArNTU0LDI2IEBACiAgICAgfQogCiAgICAgLyoqCi0gICAgICogTWFwIHRoZSB7QGxpbmsgRWxlbWVudH0gdG8gYSB7QGxpbmsgTWFwfSBvZiB0aGUgcHJvcGVydHkgdmFsdWVzIGtleSdkIGFjY29yZGluZyB0byB0aGVpciB7QGxpbmsgUHJvcGVydHkja2V5fS4KKyAgICAgKiBNYXAgdGhlIHtAbGluayBFbGVtZW50fSB0byBhIHtAY29kZSBNYXB9IG9mIHRoZSBwcm9wZXJ0eSB2YWx1ZXMga2V5J2QgYWNjb3JkaW5nIHRvIHRoZWlyIHtAbGluayBQcm9wZXJ0eSNrZXl9LgorICAgICAqIElmIG5vIHByb3BlcnR5IGtleXMgYXJlIHByb3ZpZGVkLCB0aGVuIGFsbCBwcm9wZXJ0eSB2YWx1ZXMgYXJlIHJldHJpZXZlZC4gRm9yIHZlcnRpY2VzLCB0aGUge0Bjb2RlIE1hcH0gd2lsbAorICAgICAqIGJlIHJldHVybmVkIHdpdGggdGhlIGFzc3VtcHRpb24gb2Ygc2luZ2xlIHByb3BlcnR5IHZhbHVlcyBhbG9uZyB3aXRoIHtAbGluayBUI2lkfSBhbmQge0BsaW5rIFQjbGFiZWx9LiBQcmVmZXIKKyAgICAgKiB7QGxpbmsgI3ZhbHVlTWFwKFN0cmluZy4uLil9IGlmIG11bHRpLXByb3BlcnR5IHByb2Nlc3NpbmcgaXMgcmVxdWlyZWQuIEZvciAgZWRnZXMsIGtleXMgd2lsbCBpbmNsdWRlIGFkZGl0aW9uYWwKKyAgICAgKiByZWxhdGVkIGVkZ2Ugc3RydWN0dXJlIG9mIHtAbGluayBEaXJlY3Rpb24jSU59IGFuZCB7QGxpbmsgRGlyZWN0aW9uI09VVH0gd2hpY2ggdGhlbXNlbHZlcyBhcmUge0Bjb2RlIE1hcH0KKyAgICAgKiBpbnN0YW5jZXMgb2YgdGhlIHBhcnRpY3VsYXIge0BsaW5rIFZlcnRleH0gcmVwcmVzZW50ZWQgYnkge0BsaW5rIFQjaWR9IGFuZCB7QGxpbmsgVCNsYWJlbH0uCisgICAgICoKKyAgICAgKiBAcGFyYW0gcHJvcGVydHlLZXlzIHRoZSBwcm9wZXJ0aWVzIHRvIHJldHJpZXZlCisgICAgICogQHBhcmFtIDxFMj4gICAgICAgICB0aGUgdmFsdWUgdHlwZSBvZiB0aGUgcmV0dXJuZWQgcHJvcGVydGllcworICAgICAqIEByZXR1cm4gdGhlIHRyYXZlcnNhbCB3aXRoIGFuIGFwcGVuZGVkIHtAbGluayBFbGVtZW50TWFwU3RlcH0uCisgICAgICogQHNlZSA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8ke3Byb2plY3QudmVyc2lvbn0vcmVmZXJlbmNlLyNlbGVtZW50bWFwLXN0ZXAiIHRhcmdldD0iX2JsYW5rIj5SZWZlcmVuY2UgRG9jdW1lbnRhdGlvbiAtIEVsZW1lbnRNYXAgU3RlcDwvYT4KKyAgICAgKiBAc2luY2UgMy40LjQKKyAgICAgKi8KKyAgICBwdWJsaWMgZGVmYXVsdCA8RTI+IEdyYXBoVHJhdmVyc2FsPFMsIE1hcDxPYmplY3QsIEUyPj4gZWxlbWVudE1hcChmaW5hbCBTdHJpbmcuLi4gcHJvcGVydHlLZXlzKSB7CisgICAgICAgIHRoaXMuYXNBZG1pbigpLmdldEJ5dGVjb2RlKCkuYWRkU3RlcChTeW1ib2xzLmVsZW1lbnRNYXAsIHByb3BlcnR5S2V5cyk7CisgICAgICAgIHJldHVybiB0aGlzLmFzQWRtaW4oKS5hZGRTdGVwKG5ldyBFbGVtZW50TWFwU3RlcDw+KHRoaXMuYXNBZG1pbigpLCBwcm9wZXJ0eUtleXMpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBNYXAgdGhlIHtAbGluayBFbGVtZW50fSB0byBhIHtAY29kZSBNYXB9IG9mIHRoZSBwcm9wZXJ0eSB2YWx1ZXMga2V5J2QgYWNjb3JkaW5nIHRvIHRoZWlyIHtAbGluayBQcm9wZXJ0eSNrZXl9LgogICAgICAqIElmIG5vIHByb3BlcnR5IGtleXMgYXJlIHByb3ZpZGVkLCB0aGVuIGFsbCBwcm9wZXJ0eSB2YWx1ZXMgYXJlIHJldHJpZXZlZC4KICAgICAgKgogICAgICAqIEBwYXJhbSBwcm9wZXJ0eUtleXMgdGhlIHByb3BlcnRpZXMgdG8gcmV0cmlldmUKQEAgLTU1NCwxMyArNTgyLDEzIEBACiAgICAgICogQHNlZSA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8ke3Byb2plY3QudmVyc2lvbn0vcmVmZXJlbmNlLyN2YWx1ZW1hcC1zdGVwIiB0YXJnZXQ9Il9ibGFuayI+UmVmZXJlbmNlIERvY3VtZW50YXRpb24gLSBWYWx1ZU1hcCBTdGVwPC9hPgogICAgICAqIEBzaW5jZSAzLjAuMC1pbmN1YmF0aW5nCiAgICAgICovCi0gICAgcHVibGljIGRlZmF1bHQgPEUyPiBHcmFwaFRyYXZlcnNhbDxTLCBNYXA8U3RyaW5nLCBFMj4+IHZhbHVlTWFwKGZpbmFsIFN0cmluZy4uLiBwcm9wZXJ0eUtleXMpIHsKKyAgICBwdWJsaWMgZGVmYXVsdCA8RTI+IEdyYXBoVHJhdmVyc2FsPFMsIE1hcDxPYmplY3QsIEUyPj4gdmFsdWVNYXAoZmluYWwgU3RyaW5nLi4uIHByb3BlcnR5S2V5cykgewogICAgICAgICB0aGlzLmFzQWRtaW4oKS5nZXRCeXRlY29kZSgpLmFkZFN0ZXAoU3ltYm9scy52YWx1ZU1hcCwgcHJvcGVydHlLZXlzKTsKICAgICAgICAgcmV0dXJuIHRoaXMuYXNBZG1pbigpLmFkZFN0ZXAobmV3IFByb3BlcnR5TWFwU3RlcDw+KHRoaXMuYXNBZG1pbigpLCBmYWxzZSwgUHJvcGVydHlUeXBlLlZBTFVFLCBwcm9wZXJ0eUtleXMpKTsKICAgICB9CiAKICAgICAvKioKLSAgICAgKiBNYXAgdGhlIHtAbGluayBFbGVtZW50fSB0byBhIHtAbGluayBNYXB9IG9mIHRoZSBwcm9wZXJ0eSB2YWx1ZXMga2V5J2QgYWNjb3JkaW5nIHRvIHRoZWlyIHtAbGluayBQcm9wZXJ0eSNrZXl9LgorICAgICAqIE1hcCB0aGUge0BsaW5rIEVsZW1lbnR9IHRvIGEge0Bjb2RlIE1hcH0gb2YgdGhlIHByb3BlcnR5IHZhbHVlcyBrZXknZCBhY2NvcmRpbmcgdG8gdGhlaXIge0BsaW5rIFByb3BlcnR5I2tleX0uCiAgICAgICogSWYgbm8gcHJvcGVydHkga2V5cyBhcmUgcHJvdmlkZWQsIHRoZW4gYWxsIHByb3BlcnR5IHZhbHVlcyBhcmUgcmV0cmlldmVkLgogICAgICAqCiAgICAgICogQHBhcmFtIGluY2x1ZGVUb2tlbnMgd2hldGhlciB0byBpbmNsdWRlIHtAbGluayBUfSB0b2tlbnMgaW4gdGhlIGVtaXR0ZWQgbWFwLgpAQCAtNTY5LDcgKzU5NywxMCBAQAogICAgICAqIEByZXR1cm4gdGhlIHRyYXZlcnNhbCB3aXRoIGFuIGFwcGVuZGVkIHtAbGluayBQcm9wZXJ0eU1hcFN0ZXB9LgogICAgICAqIEBzZWUgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvJHtwcm9qZWN0LnZlcnNpb259L3JlZmVyZW5jZS8jdmFsdWVtYXAtc3RlcCIgdGFyZ2V0PSJfYmxhbmsiPlJlZmVyZW5jZSBEb2N1bWVudGF0aW9uIC0gVmFsdWVNYXAgU3RlcDwvYT4KICAgICAgKiBAc2luY2UgMy4wLjAtaW5jdWJhdGluZworICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy40LjAsIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2Yge0BsaW5rIEdyYXBoVHJhdmVyc2FsI3ZhbHVlTWFwKFN0cmluZy4uLil9IGluIGNvbmp1bmN0aW9uIHdpdGgKKyAgICAgKiAgICAgICAgICAgICB7QGxpbmsgR3JhcGhUcmF2ZXJzYWwjd2l0aChTdHJpbmcsIE9iamVjdCl9IG9yIHNpbXBsZSBwcmVmZXIge0BsaW5rICNlbGVtZW50TWFwKFN0cmluZy4uLil9LgogICAgICAqLworICAgIEBEZXByZWNhdGVkCiAgICAgcHVibGljIGRlZmF1bHQgPEUyPiBHcmFwaFRyYXZlcnNhbDxTLCBNYXA8T2JqZWN0LCBFMj4+IHZhbHVlTWFwKGZpbmFsIGJvb2xlYW4gaW5jbHVkZVRva2VucywgZmluYWwgU3RyaW5nLi4uIHByb3BlcnR5S2V5cykgewogICAgICAgICB0aGlzLmFzQWRtaW4oKS5nZXRCeXRlY29kZSgpLmFkZFN0ZXAoU3ltYm9scy52YWx1ZU1hcCwgaW5jbHVkZVRva2VucywgcHJvcGVydHlLZXlzKTsKICAgICAgICAgcmV0dXJuIHRoaXMuYXNBZG1pbigpLmFkZFN0ZXAobmV3IFByb3BlcnR5TWFwU3RlcDw+KHRoaXMuYXNBZG1pbigpLCBpbmNsdWRlVG9rZW5zLCBQcm9wZXJ0eVR5cGUuVkFMVUUsIHByb3BlcnR5S2V5cykpOwpAQCAtNjQ4LDcgKzY3OSwyMCBAQAogICAgICAqLwogICAgIHB1YmxpYyBkZWZhdWx0IEdyYXBoVHJhdmVyc2FsPFMsIEludGVnZXI+IGxvb3BzKCkgewogICAgICAgICB0aGlzLmFzQWRtaW4oKS5nZXRCeXRlY29kZSgpLmFkZFN0ZXAoU3ltYm9scy5sb29wcyk7Ci0gICAgICAgIHJldHVybiB0aGlzLmFzQWRtaW4oKS5hZGRTdGVwKG5ldyBMb29wc1N0ZXA8Pih0aGlzLmFzQWRtaW4oKSkpOworICAgICAgICByZXR1cm4gdGhpcy5hc0FkbWluKCkuYWRkU3RlcChuZXcgTG9vcHNTdGVwPD4odGhpcy5hc0FkbWluKCksIG51bGwpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJZiB0aGUge0BsaW5rIFRyYXZlcnNlcn0gc3VwcG9ydHMgbG9vcGluZyB0aGVuIGNhbGxpbmcgdGhpcyBtZXRob2Qgd2lsbCBleHRyYWN0IHRoZSBudW1iZXIgb2YgbG9vcHMgZm9yIHRoYXQKKyAgICAgKiB0cmF2ZXJzZXIgZm9yIHRoZSBuYW1lZCBsb29wLgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgdHJhdmVyc2FsIHdpdGggYW4gYXBwZW5kZWQge0BsaW5rIExvb3BzU3RlcH0KKyAgICAgKiBAc2VlIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLyR7cHJvamVjdC52ZXJzaW9ufS9yZWZlcmVuY2UvI2xvb3BzLXN0ZXAiIHRhcmdldD0iX2JsYW5rIj5SZWZlcmVuY2UgRG9jdW1lbnRhdGlvbiAtIExvb3BzIFN0ZXA8L2E+CisgICAgICogQHNpbmNlIDMuNC4wCisgICAgICovCisgICAgcHVibGljIGRlZmF1bHQgR3JhcGhUcmF2ZXJzYWw8UywgSW50ZWdlcj4gbG9vcHMoZmluYWwgU3RyaW5nIGxvb3BOYW1lKSB7CisgICAgICAgIHRoaXMuYXNBZG1pbigpLmdldEJ5dGVjb2RlKCkuYWRkU3RlcChTeW1ib2xzLmxvb3BzLCBsb29wTmFtZSk7CisgICAgICAgIHJldHVybiB0aGlzLmFzQWRtaW4oKS5hZGRTdGVwKG5ldyBMb29wc1N0ZXA8Pih0aGlzLmFzQWRtaW4oKSwgbG9vcE5hbWUpKTsKICAgICB9CiAKICAgICAvKioKQEAgLTg3Nyw3ICs5MjEsNyBAQAogICAgICAqIEBzZWUgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvJHtwcm9qZWN0LnZlcnNpb259L3JlZmVyZW5jZS8jbWF4LXN0ZXAiIHRhcmdldD0iX2JsYW5rIj5SZWZlcmVuY2UgRG9jdW1lbnRhdGlvbiAtIE1heCBTdGVwPC9hPgogICAgICAqIEBzaW5jZSAzLjAuMC1pbmN1YmF0aW5nCiAgICAgICovCi0gICAgcHVibGljIGRlZmF1bHQgPEUyIGV4dGVuZHMgTnVtYmVyPiBHcmFwaFRyYXZlcnNhbDxTLCBFMj4gbWF4KCkgeworICAgIHB1YmxpYyBkZWZhdWx0IDxFMiBleHRlbmRzIENvbXBhcmFibGU+IEdyYXBoVHJhdmVyc2FsPFMsIEUyPiBtYXgoKSB7CiAgICAgICAgIHRoaXMuYXNBZG1pbigpLmdldEJ5dGVjb2RlKCkuYWRkU3RlcChTeW1ib2xzLm1heCk7CiAgICAgICAgIHJldHVybiB0aGlzLmFzQWRtaW4oKS5hZGRTdGVwKG5ldyBNYXhHbG9iYWxTdGVwPD4odGhpcy5hc0FkbWluKCkpKTsKICAgICB9CkBAIC04ODksNyArOTMzLDcgQEAKICAgICAgKiBAc2VlIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLyR7cHJvamVjdC52ZXJzaW9ufS9yZWZlcmVuY2UvI21heC1zdGVwIiB0YXJnZXQ9Il9ibGFuayI+UmVmZXJlbmNlIERvY3VtZW50YXRpb24gLSBNYXggU3RlcDwvYT4KICAgICAgKiBAc2luY2UgMy4wLjAtaW5jdWJhdGluZwogICAgICAqLwotICAgIHB1YmxpYyBkZWZhdWx0IDxFMiBleHRlbmRzIE51bWJlcj4gR3JhcGhUcmF2ZXJzYWw8UywgRTI+IG1heChmaW5hbCBTY29wZSBzY29wZSkgeworICAgIHB1YmxpYyBkZWZhdWx0IDxFMiBleHRlbmRzIENvbXBhcmFibGU+IEdyYXBoVHJhdmVyc2FsPFMsIEUyPiBtYXgoZmluYWwgU2NvcGUgc2NvcGUpIHsKICAgICAgICAgdGhpcy5hc0FkbWluKCkuZ2V0Qnl0ZWNvZGUoKS5hZGRTdGVwKFN5bWJvbHMubWF4LCBzY29wZSk7CiAgICAgICAgIHJldHVybiB0aGlzLmFzQWRtaW4oKS5hZGRTdGVwKHNjb3BlLmVxdWFscyhTY29wZS5nbG9iYWwpID8gbmV3IE1heEdsb2JhbFN0ZXA8Pih0aGlzLmFzQWRtaW4oKSkgOiBuZXcgTWF4TG9jYWxTdGVwPD4odGhpcy5hc0FkbWluKCkpKTsKICAgICB9CkBAIC05MDEsNyArOTQ1LDcgQEAKICAgICAgKiBAc2VlIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLyR7cHJvamVjdC52ZXJzaW9ufS9yZWZlcmVuY2UvI21pbi1zdGVwIiB0YXJnZXQ9Il9ibGFuayI+UmVmZXJlbmNlIERvY3VtZW50YXRpb24gLSBNaW4gU3RlcDwvYT4KICAgICAgKiBAc2luY2UgMy4wLjAtaW5jdWJhdGluZwogICAgICAqLwotICAgIHB1YmxpYyBkZWZhdWx0IDxFMiBleHRlbmRzIE51bWJlcj4gR3JhcGhUcmF2ZXJzYWw8UywgRTI+IG1pbigpIHsKKyAgICBwdWJsaWMgZGVmYXVsdCA8RTIgZXh0ZW5kcyBDb21wYXJhYmxlPiBHcmFwaFRyYXZlcnNhbDxTLCBFMj4gbWluKCkgewogICAgICAgICB0aGlzLmFzQWRtaW4oKS5nZXRCeXRlY29kZSgpLmFkZFN0ZXAoU3ltYm9scy5taW4pOwogICAgICAgICByZXR1cm4gdGhpcy5hc0FkbWluKCkuYWRkU3RlcChuZXcgTWluR2xvYmFsU3RlcDw+KHRoaXMuYXNBZG1pbigpKSk7CiAgICAgfQpAQCAtOTEzLDcgKzk1Nyw3IEBACiAgICAgICogQHNlZSA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8ke3Byb2plY3QudmVyc2lvbn0vcmVmZXJlbmNlLyNtaW4tc3RlcCIgdGFyZ2V0PSJfYmxhbmsiPlJlZmVyZW5jZSBEb2N1bWVudGF0aW9uIC0gTWluIFN0ZXA8L2E+CiAgICAgICogQHNpbmNlIDMuMC4wLWluY3ViYXRpbmcKICAgICAgKi8KLSAgICBwdWJsaWMgZGVmYXVsdCA8RTIgZXh0ZW5kcyBOdW1iZXI+IEdyYXBoVHJhdmVyc2FsPFMsIEUyPiBtaW4oZmluYWwgU2NvcGUgc2NvcGUpIHsKKyAgICBwdWJsaWMgZGVmYXVsdCA8RTIgZXh0ZW5kcyBDb21wYXJhYmxlPiBHcmFwaFRyYXZlcnNhbDxTLCBFMj4gbWluKGZpbmFsIFNjb3BlIHNjb3BlKSB7CiAgICAgICAgIHRoaXMuYXNBZG1pbigpLmdldEJ5dGVjb2RlKCkuYWRkU3RlcChTeW1ib2xzLm1pbiwgc2NvcGUpOwogICAgICAgICByZXR1cm4gdGhpcy5hc0FkbWluKCkuYWRkU3RlcChzY29wZS5lcXVhbHMoU2NvcGUuZ2xvYmFsKSA/IG5ldyBNaW5HbG9iYWxTdGVwPEUyPih0aGlzLmFzQWRtaW4oKSkgOiBuZXcgTWluTG9jYWxTdGVwPD4odGhpcy5hc0FkbWluKCkpKTsKICAgICB9CkBAIC0xOTQ4LDcgKzE5OTIsOCBAQAogICAgIH0KIAogICAgIC8qKgotICAgICAqIEVhZ2VybHkgY29sbGVjdHMgb2JqZWN0cyB1cCB0byB0aGlzIHN0ZXAgaW50byBhIHNpZGUtZWZmZWN0LgorICAgICAqIEVhZ2VybHkgY29sbGVjdHMgb2JqZWN0cyB1cCB0byB0aGlzIHN0ZXAgaW50byBhIHNpZGUtZWZmZWN0LiBTYW1lIGFzIGNhbGxpbmcge0BsaW5rICNhZ2dyZWdhdGUoU2NvcGUsIFN0cmluZyl9CisgICAgICogd2l0aCBhIHtAbGluayBTY29wZSNsb2NhbH0uCiAgICAgICoKICAgICAgKiBAcGFyYW0gc2lkZUVmZmVjdEtleSB0aGUgbmFtZSBvZiB0aGUgc2lkZS1lZmZlY3Qga2V5IHRoYXQgd2lsbCBob2xkIHRoZSBhZ2dyZWdhdGVkIG9iamVjdHMKICAgICAgKiBAcmV0dXJuIHRoZSB0cmF2ZXJzYWwgd2l0aCBhbiBhcHBlbmRlZCB7QGxpbmsgQWdncmVnYXRlU3RlcH0KQEAgLTE5NjEsNiArMjAwNiwyMSBAQAogICAgIH0KIAogICAgIC8qKgorICAgICAqIENvbGxlY3RzIG9iamVjdHMgaW4gYSBsaXN0IHVzaW5nIHRoZSB7QGxpbmsgU2NvcGV9IGFyZ3VtZW50IHRvIGRldGVybWluZSB3aGV0aGVyIGl0IHNob3VsZCBiZSBsYXp5CisgICAgICoge0BsaW5rIFNjb3BlI2xvY2FsfSBvciBlYWdlciAoe0BsaW5rIFNjb3BlI2dsb2JhbH0gd2hpbGUgZ2F0aGVyaW5nIHRob3NlIG9iamVjdHMuCisgICAgICoKKyAgICAgKiBAcGFyYW0gc2lkZUVmZmVjdEtleSB0aGUgbmFtZSBvZiB0aGUgc2lkZS1lZmZlY3Qga2V5IHRoYXQgd2lsbCBob2xkIHRoZSBhZ2dyZWdhdGVkIG9iamVjdHMKKyAgICAgKiBAcmV0dXJuIHRoZSB0cmF2ZXJzYWwgd2l0aCBhbiBhcHBlbmRlZCB7QGxpbmsgQWdncmVnYXRlU3RlcH0KKyAgICAgKiBAc2VlIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLyR7cHJvamVjdC52ZXJzaW9ufS9yZWZlcmVuY2UvI2FnZ3JlZ2F0ZS1zdGVwIiB0YXJnZXQ9Il9ibGFuayI+UmVmZXJlbmNlIERvY3VtZW50YXRpb24gLSBBZ2dyZWdhdGUgU3RlcDwvYT4KKyAgICAgKiBAc2luY2UgMy40LjMKKyAgICAgKi8KKyAgICBwdWJsaWMgZGVmYXVsdCBHcmFwaFRyYXZlcnNhbDxTLCBFPiBhZ2dyZWdhdGUoZmluYWwgU2NvcGUgc2NvcGUsIGZpbmFsIFN0cmluZyBzaWRlRWZmZWN0S2V5KSB7CisgICAgICAgIHRoaXMuYXNBZG1pbigpLmdldEJ5dGVjb2RlKCkuYWRkU3RlcChTeW1ib2xzLmFnZ3JlZ2F0ZSwgc2NvcGUsIHNpZGVFZmZlY3RLZXkpOworICAgICAgICByZXR1cm4gdGhpcy5hc0FkbWluKCkuYWRkU3RlcChzY29wZSA9PSBTY29wZS5nbG9iYWwgPworICAgICAgICAgICAgICAgIG5ldyBBZ2dyZWdhdGVTdGVwPD4odGhpcy5hc0FkbWluKCksIHNpZGVFZmZlY3RLZXkpIDogbmV3IFN0b3JlU3RlcDw+KHRoaXMuYXNBZG1pbigpLCBzaWRlRWZmZWN0S2V5KSk7CisgICAgfQorCisgICAgLyoqCiAgICAgICogT3JnYW5pemUgb2JqZWN0cyBpbiB0aGUgc3RyZWFtIGludG8gYSB7QGNvZGUgTWFwfS4gQ2FsbHMgdG8ge0Bjb2RlIGdyb3VwKCl9IGFyZSB0eXBpY2FsbHkgYWNjb21wYW5pZWQgd2l0aAogICAgICAqIHtAbGluayAjYnkoKX0gbW9kdWxhdG9ycyB3aGljaCBoZWxwIHNwZWNpZnkgaG93IHRoZSBncm91cGluZyBzaG91bGQgb2NjdXIuCiAgICAgICoKQEAgLTIwMjEsNiArMjA4MSw3IEBACiAgICAgICogQHJldHVybiB0aGUgdHJhdmVyc2FsIHdpdGggYW4gYXBwZW5kZWQge0BsaW5rIFN0b3JlU3RlcH0KICAgICAgKiBAc2VlIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLyR7cHJvamVjdC52ZXJzaW9ufS9yZWZlcmVuY2UvI3N0b3JlLXN0ZXAiIHRhcmdldD0iX2JsYW5rIj5SZWZlcmVuY2UgRG9jdW1lbnRhdGlvbiAtIFN0b3JlIFN0ZXA8L2E+CiAgICAgICogQHNpbmNlIDMuMC4wLWluY3ViYXRpbmcKKyAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuNC4zLCByZXBsYWNlZCBieSB7QGxpbmsgI2FnZ3JlZ2F0ZShTY29wZSwgU3RyaW5nKX0gdXNpbmcge0BsaW5rIFNjb3BlI2xvY2FsfS4KICAgICAgKi8KICAgICBwdWJsaWMgZGVmYXVsdCBHcmFwaFRyYXZlcnNhbDxTLCBFPiBzdG9yZShmaW5hbCBTdHJpbmcgc2lkZUVmZmVjdEtleSkgewogICAgICAgICB0aGlzLmFzQWRtaW4oKS5nZXRCeXRlY29kZSgpLmFkZFN0ZXAoU3ltYm9scy5zdG9yZSwgc2lkZUVmZmVjdEtleSk7CkBAIC0yMTE1LDExICsyMTc2LDExIEBACiAgICAgICAgICAgICAgICAgKChlbmRTdGVwIGluc3RhbmNlb2YgQWRkVmVydGV4U3RlcCB8fCBlbmRTdGVwIGluc3RhbmNlb2YgQWRkVmVydGV4U3RhcnRTdGVwKSAmJgogICAgICAgICAgICAgICAgICAga2V5VmFsdWVzLmxlbmd0aCA9PSAwICYmCiAgICAgICAgICAgICAgICAgICAoa2V5IGluc3RhbmNlb2YgVCB8fCAoa2V5IGluc3RhbmNlb2YgU3RyaW5nICYmIG51bGwgPT0gY2FyZGluYWxpdHkpIHx8IGtleSBpbnN0YW5jZW9mIFRyYXZlcnNhbCkpKSB7Ci0gICAgICAgICAgICAoKE11dGF0aW5nKSBlbmRTdGVwKS5hZGRQcm9wZXJ0eU11dGF0aW9ucyhrZXksIHZhbHVlKTsKKyAgICAgICAgICAgICgoTXV0YXRpbmcpIGVuZFN0ZXApLmNvbmZpZ3VyZShrZXksIHZhbHVlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGZpbmFsIEFkZFByb3BlcnR5U3RlcDxFbGVtZW50PiBhZGRQcm9wZXJ0eVN0ZXAgPSBuZXcgQWRkUHJvcGVydHlTdGVwPD4odGhpcy5hc0FkbWluKCksIGNhcmRpbmFsaXR5LCBrZXksIHZhbHVlKTsKICAgICAgICAgICAgIHRoaXMuYXNBZG1pbigpLmFkZFN0ZXAoYWRkUHJvcGVydHlTdGVwKTsKLSAgICAgICAgICAgIGFkZFByb3BlcnR5U3RlcC5hZGRQcm9wZXJ0eU11dGF0aW9ucyhrZXlWYWx1ZXMpOworICAgICAgICAgICAgYWRkUHJvcGVydHlTdGVwLmNvbmZpZ3VyZShrZXlWYWx1ZXMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB0aGlzOwogICAgIH0KQEAgLTIzMTgsNyArMjM3OSw3IEBACiAgICAgfQogCiAgICAgLyoqCi0gICAgICogVGhpcyBzdGVwIGlzIHVzZWQgZm9yIGxvb3Bpbmcgb3ZlciBhIHNvbWUgdHJhdmVyc2FsIGdpdmVuIHNvbWUgYnJlYWsgcHJlZGljYXRlLgorICAgICAqIFRoaXMgc3RlcCBpcyB1c2VkIGZvciBsb29waW5nIG92ZXIgYSB0cmF2ZXJzYWwgZ2l2ZW4gc29tZSBicmVhayBwcmVkaWNhdGUuCiAgICAgICoKICAgICAgKiBAcGFyYW0gcmVwZWF0VHJhdmVyc2FsIHRoZSB0cmF2ZXJzYWwgdG8gcmVwZWF0IG92ZXIKICAgICAgKiBAcmV0dXJuIHRoZSB0cmF2ZXJzYWwgd2l0aCB0aGUgYXBwZW5kZWQge0BsaW5rIFJlcGVhdFN0ZXB9CkBAIC0yMzMxLDYgKzIzOTIsMjEgQEAKICAgICB9CiAKICAgICAvKioKKyAgICAgKiBUaGlzIHN0ZXAgaXMgdXNlZCBmb3IgbG9vcGluZyBvdmVyIGEgdHJhdmVyc2FsIGdpdmVuIHNvbWUgYnJlYWsgcHJlZGljYXRlIGFuZCB3aXRoIGEgc3BlY2lmaWVkIGxvb3AgbmFtZS4KKyAgICAgKgorICAgICAqIEBwYXJhbSByZXBlYXRUcmF2ZXJzYWwgdGhlIHRyYXZlcnNhbCB0byByZXBlYXQgb3ZlcgorICAgICAqIEBwYXJhbSBsb29wTmFtZSBUaGUgbmFtZSBnaXZlbiB0byB0aGUgbG9vcAorICAgICAqIEByZXR1cm4gdGhlIHRyYXZlcnNhbCB3aXRoIHRoZSBhcHBlbmRlZCB7QGxpbmsgUmVwZWF0U3RlcH0KKyAgICAgKiBAc2VlIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLyR7cHJvamVjdC52ZXJzaW9ufS9yZWZlcmVuY2UvI3JlcGVhdC1zdGVwIiB0YXJnZXQ9Il9ibGFuayI+UmVmZXJlbmNlIERvY3VtZW50YXRpb24gLSBSZXBlYXQgU3RlcDwvYT4KKyAgICAgKiBAc2luY2UgMy40LjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZGVmYXVsdCBHcmFwaFRyYXZlcnNhbDxTLCBFPiByZXBlYXQoZmluYWwgU3RyaW5nIGxvb3BOYW1lLCBmaW5hbCBUcmF2ZXJzYWw8PywgRT4gcmVwZWF0VHJhdmVyc2FsKSB7CisgICAgICAgIHRoaXMuYXNBZG1pbigpLmdldEJ5dGVjb2RlKCkuYWRkU3RlcChTeW1ib2xzLnJlcGVhdCwgbG9vcE5hbWUsIHJlcGVhdFRyYXZlcnNhbCk7CisgICAgICAgIHJldHVybiBSZXBlYXRTdGVwLmFkZFJlcGVhdFRvVHJhdmVyc2FsKHRoaXMsIGxvb3BOYW1lLCAoVHJhdmVyc2FsLkFkbWluPEUsIEU+KSByZXBlYXRUcmF2ZXJzYWwpOworICAgIH0KKworCisgICAgLyoqCiAgICAgICogRW1pdCBpcyB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGgge0BsaW5rICNyZXBlYXQoVHJhdmVyc2FsKX0gdG8gZGV0ZXJtaW5lIHdoYXQgb2JqZWN0cyBnZXQgZW1pdCBmcm9tIHRoZSBsb29wLgogICAgICAqCiAgICAgICogQHBhcmFtIGVtaXRUcmF2ZXJzYWwgdGhlIGVtaXQgcHJlZGljYXRlIGRlZmluZWQgYXMgYSB0cmF2ZXJzYWwKQEAgLTI0NjMsNiArMjUzOSwzNyBAQAogICAgIH0KIAogICAgIC8qKgorICAgICAqIEV4ZWN1dGVzIGEgQ29ubmVjdGVkIENvbXBvbmVudCBhbGdvcml0aG0gb3ZlciB0aGUgZ3JhcGguCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSB0cmF2ZXJzYWwgd2l0aCB0aGUgYXBwZW5kZWQge0BsaW5rIENvbm5lY3RlZENvbXBvbmVudFZlcnRleFByb2dyYW19CisgICAgICogQHNlZSA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8ke3Byb2plY3QudmVyc2lvbn0vcmVmZXJlbmNlLyNjb25uZWN0ZWRjb21wb25lbnQtc3RlcCIgdGFyZ2V0PSJfYmxhbmsiPlJlZmVyZW5jZSBEb2N1bWVudGF0aW9uIC0gQ29ubmVjdGVkQ29tcG9uZW50IFN0ZXA8L2E+CisgICAgICogQHNpbmNlIDMuNC4wCisgICAgICovCisgICAgcHVibGljIGRlZmF1bHQgR3JhcGhUcmF2ZXJzYWw8UywgRT4gY29ubmVjdGVkQ29tcG9uZW50KCkgeworICAgICAgICB0aGlzLmFzQWRtaW4oKS5nZXRCeXRlY29kZSgpLmFkZFN0ZXAoU3ltYm9scy5jb25uZWN0ZWRDb21wb25lbnQpOworICAgICAgICByZXR1cm4gdGhpcy5hc0FkbWluKCkuYWRkU3RlcCgoU3RlcDxFLCBFPikgbmV3IENvbm5lY3RlZENvbXBvbmVudFZlcnRleFByb2dyYW1TdGVwKHRoaXMuYXNBZG1pbigpKSk7CisgICAgfQorCisKKyAgICAvKioKKyAgICAgKiBFeGVjdXRlcyBhIFNob3J0ZXN0IFBhdGggYWxnb3JpdGhtIG92ZXIgdGhlIGdyYXBoLgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgdHJhdmVyc2FsIHdpdGggdGhlIGFwcGVuZGVkIHtAbGluayBTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtU3RlcH0KKyAgICAgKiBAc2VlIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLyR7cHJvamVjdC52ZXJzaW9ufS9yZWZlcmVuY2UvI3Nob3J0ZXN0cGF0aC1zdGVwIiB0YXJnZXQ9Il9ibGFuayI+UmVmZXJlbmNlIERvY3VtZW50YXRpb24gLSBTaG9ydGVzdFBhdGggU3RlcDwvYT4KKyAgICAgKi8KKyAgICBwdWJsaWMgZGVmYXVsdCBHcmFwaFRyYXZlcnNhbDxTLCBQYXRoPiBzaG9ydGVzdFBhdGgoKSB7CisgICAgICAgIGlmICh0aGlzLmFzQWRtaW4oKS5nZXRFbmRTdGVwKCkgaW5zdGFuY2VvZiBHcmFwaFN0ZXApIHsKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgdmVyeSB1bmZvcnR1bmF0ZSwgYnV0IEkgY291bGRuJ3QgZmluZCBhbm90aGVyIHdheSB0byBtYWtlIGl0IHdvcmsuIFdpdGhvdXQgdGhlIGFkZGl0aW9uYWwKKyAgICAgICAgICAgIC8vIElkZW50aXR5U3RlcCwgVHJhdmVyc2FsVmVydGV4UHJvZ3JhbSBkb2Vzbid0IGhhbmRsZSBoYWx0ZWQgdHJhdmVyc2VycyBhcyBleHBlY3RlZCAoaXQgaWdub3JlcyBib3RoOgorICAgICAgICAgICAgLy8gSEFMVEVEX1RSQVZFUlNFUiBzdG9yZWQgaW4gbWVtb3J5IGFuZCBzdG9yZWQgYXMgdmVydGV4IHByb3BlcnRpZXMpOyBpbnN0ZWFkIGl0IGp1c3QgZW1pdHMgYWxsIHZlcnRpY2VzLgorICAgICAgICAgICAgdGhpcy5pZGVudGl0eSgpOworICAgICAgICB9CisgICAgICAgIHRoaXMuYXNBZG1pbigpLmdldEJ5dGVjb2RlKCkuYWRkU3RlcChTeW1ib2xzLnNob3J0ZXN0UGF0aCk7CisgICAgICAgIHJldHVybiAoR3JhcGhUcmF2ZXJzYWw8UywgUGF0aD4pICgoVHJhdmVyc2FsLkFkbWluKSB0aGlzLmFzQWRtaW4oKSkKKyAgICAgICAgICAgICAgICAuYWRkU3RlcChuZXcgU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbVN0ZXAodGhpcy5hc0FkbWluKCkpKTsKKyAgICB9CisKKyAgICAvKioKICAgICAgKiBFeGVjdXRlcyBhbiBhcmJpdHJhcnkge0BsaW5rIFZlcnRleFByb2dyYW19IG92ZXIgdGhlIGdyYXBoLgogICAgICAqCiAgICAgICogQHJldHVybiB0aGUgdHJhdmVyc2FsIHdpdGggdGhlIGFwcGVuZGVkIHtAbGluayBQcm9ncmFtVmVydGV4UHJvZ3JhbVN0ZXB9CkBAIC0yNTI0LDYgKzI2MzEsMjcgQEAKICAgICB9CiAKICAgICAvKioKKyAgICAgKiBJbmRleGVzIGFsbCBpdGVtcyBvZiB0aGUgY3VycmVudCBjb2xsZWN0aW9uLiBUaGUgaW5kZXhpbmcgZm9ybWF0IGNhbiBiZSBjb25maWd1cmVkIHVzaW5nIHRoZSB7QGxpbmsgR3JhcGhUcmF2ZXJzYWwjd2l0aChTdHJpbmcsIE9iamVjdCl9CisgICAgICogYW5kIHtAbGluayBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5XaXRoT3B0aW9ucyNpbmRleGVyfS4KKyAgICAgKgorICAgICAqIEluZGV4ZWQgYXMgbGlzdDogWyJhIiwiYiIsImMiXSA9PiBbWyJhIiwwXSxbImIiLDFdLFsiYyIsMl1dCisgICAgICogSW5kZXhlZCBhcyBtYXA6ICBbImEiLCJiIiwiYyJdID0+IHswOiJhIiwxOiJiIiwyOiJjIn0KKyAgICAgKgorICAgICAqIElmIHRoZSBjdXJyZW50IG9iamVjdCBpcyBub3QgYSBjb2xsZWN0aW9uLCB0aGlzIHN0ZXAgd2lsbCBtYXAgdGhlIG9iamVjdCB0byBhIHNpbmdsZSBpdGVtIGNvbGxlY3Rpb24vbWFwOgorICAgICAqCisgICAgICogSW5kZXhlZCBhcyBsaXN0OiAiYSIgPT4gWyJhIiwwXQorICAgICAqIEluZGV4ZWQgYXMgbWFwOiAgImEiID0+IHswOiJhIn0KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIHRyYXZlcnNhbCB3aXRoIGFuIGFwcGVuZGVkIHtAbGluayBJbmRleFN0ZXB9CisgICAgICogQHNlZSA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8ke3Byb2plY3QudmVyc2lvbn0vcmVmZXJlbmNlLyNpbmRleC1zdGVwIiB0YXJnZXQ9Il9ibGFuayI+UmVmZXJlbmNlIERvY3VtZW50YXRpb24gLSBJbmRleCBTdGVwPC9hPgorICAgICAqIEBzaW5jZSAzLjQuMAorICAgICAqLworICAgIHB1YmxpYyBkZWZhdWx0IDxFMj4gR3JhcGhUcmF2ZXJzYWw8UywgRTI+IGluZGV4KCkgeworICAgICAgICB0aGlzLmFzQWRtaW4oKS5nZXRCeXRlY29kZSgpLmFkZFN0ZXAoU3ltYm9scy5pbmRleCk7CisgICAgICAgIHJldHVybiB0aGlzLmFzQWRtaW4oKS5hZGRTdGVwKG5ldyBJbmRleFN0ZXA8Pih0aGlzLmFzQWRtaW4oKSkpOworICAgIH0KKworICAgIC8qKgogICAgICAqIFR1cm5zIHRoZSBsYXp5IHRyYXZlcnNhbCBwaXBlbGluZSBpbnRvIGEgYnVsay1zeW5jaHJvbm91cyBwaXBlbGluZSB3aGljaCBiYXNpY2FsbHkgaXRlcmF0ZXMgdGhhdCB0cmF2ZXJzYWwgdG8KICAgICAgKiB0aGUgc2l6ZSBvZiB0aGUgYmFycmllci4gSW4gdGhpcyBjYXNlLCBpdCBpdGVyYXRlcyB0aGUgZW50aXJlIHRoaW5nIGFzIHRoZSBkZWZhdWx0IGJhcnJpZXIgc2l6ZSBpcyBzZXQgdG8KICAgICAgKiB7QGNvZGUgSW50ZWdlci5NQVhfVkFMVUV9LgpAQCAtMjUzOCw2ICsyNjY2LDQxIEBACiAgICAgICAgIHJldHVybiB0aGlzLmFzQWRtaW4oKS5hZGRTdGVwKG5ldyBMYW1iZGFDb2xsZWN0aW5nQmFycmllclN0ZXA8Pih0aGlzLmFzQWRtaW4oKSwgKENvbnN1bWVyKSBiYXJyaWVyQ29uc3VtZXIsIEludGVnZXIuTUFYX1ZBTFVFKSk7CiAgICAgfQogCisgICAgLy8vLyBXSVRILU1PRFVMQVRPUgorCisgICAgLyoqCisgICAgICogUHJvdmlkZXMgYSBjb25maWd1cmF0aW9uIHRvIGEgc3RlcCBpbiB0aGUgZm9ybSBvZiBhIGtleSB3aGljaCBpcyB0aGUgc2FtZSBhcyB7QGNvZGUgd2l0aChrZXksIHRydWUpfS4gVGhlIGtleQorICAgICAqIG9mIHRoZSBjb25maWd1cmF0aW9uIG11c3QgYmUgc3RlcCBzcGVjaWZpYyBhbmQgdGhlcmVmb3JlIGEgY29uZmlndXJhdGlvbiBjb3VsZCBiZSBzdXBwbGllZCB0aGF0IGlzIG5vdCBrbm93biB0bworICAgICAqIGJlIHZhbGlkIHVudGlsIGV4ZWN1dGlvbi4KKyAgICAgKgorICAgICAqIEBwYXJhbSBrZXkgdGhlIGtleSBvZiB0aGUgY29uZmlndXJhdGlvbiB0byBhcHBseSB0byBhIHN0ZXAKKyAgICAgKiBAcmV0dXJuIHRoZSB0cmF2ZXJzYWwgd2l0aCBhIG1vZHVsYXRlZCBzdGVwCisgICAgICogQHNlZSA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8ke3Byb2plY3QudmVyc2lvbn0vcmVmZXJlbmNlLyN3aXRoLXN0ZXAiIHRhcmdldD0iX2JsYW5rIj5SZWZlcmVuY2UgRG9jdW1lbnRhdGlvbiAtIFdpdGggU3RlcDwvYT4KKyAgICAgKiBAc2luY2UgMy40LjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZGVmYXVsdCBHcmFwaFRyYXZlcnNhbDxTLEU+IHdpdGgoZmluYWwgU3RyaW5nIGtleSkgeworICAgICAgICB0aGlzLmFzQWRtaW4oKS5nZXRCeXRlY29kZSgpLmFkZFN0ZXAoU3ltYm9scy53aXRoLCBrZXkpOworICAgICAgICBmaW5hbCBPYmplY3RbXSBjb25maWdQYWlyID0geyBrZXksIHRydWUgfTsKKyAgICAgICAgKChDb25maWd1cmluZykgdGhpcy5hc0FkbWluKCkuZ2V0RW5kU3RlcCgpKS5jb25maWd1cmUoY29uZmlnUGFpcik7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKworICAgIC8qKgorICAgICAqIFByb3ZpZGVzIGEgY29uZmlndXJhdGlvbiB0byBhIHN0ZXAgaW4gdGhlIGZvcm0gb2YgYSBrZXkgYW5kIHZhbHVlIHBhaXIuIFRoZSBrZXkgb2YgdGhlIGNvbmZpZ3VyYXRpb24gbXVzdCBiZQorICAgICAqIHN0ZXAgc3BlY2lmaWMgYW5kIHRoZXJlZm9yZSBhIGNvbmZpZ3VyYXRpb24gY291bGQgYmUgc3VwcGxpZWQgdGhhdCBpcyBub3Qga25vd24gdG8gYmUgdmFsaWQgdW50aWwgZXhlY3V0aW9uLgorICAgICAqCisgICAgICogQHBhcmFtIGtleSB0aGUga2V5IG9mIHRoZSBjb25maWd1cmF0aW9uIHRvIGFwcGx5IHRvIGEgc3RlcAorICAgICAqIEBwYXJhbSB2YWx1ZSB0aGUgdmFsdWUgb2YgdGhlIGNvbmZpZ3VyYXRpb24gdG8gYXBwbHkgdG8gYSBzdGVwCisgICAgICogQHJldHVybiB0aGUgdHJhdmVyc2FsIHdpdGggYSBtb2R1bGF0ZWQgc3RlcAorICAgICAqIEBzZWUgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvJHtwcm9qZWN0LnZlcnNpb259L3JlZmVyZW5jZS8jd2l0aC1zdGVwIiB0YXJnZXQ9Il9ibGFuayI+UmVmZXJlbmNlIERvY3VtZW50YXRpb24gLSBXaXRoIFN0ZXA8L2E+CisgICAgICogQHNpbmNlIDMuNC4wCisgICAgICovCisgICAgcHVibGljIGRlZmF1bHQgR3JhcGhUcmF2ZXJzYWw8UyxFPiB3aXRoKGZpbmFsIFN0cmluZyBrZXksIGZpbmFsIE9iamVjdCB2YWx1ZSkgeworICAgICAgICB0aGlzLmFzQWRtaW4oKS5nZXRCeXRlY29kZSgpLmFkZFN0ZXAoU3ltYm9scy53aXRoLCBrZXksIHZhbHVlKTsKKyAgICAgICAgZmluYWwgT2JqZWN0W10gY29uZmlnUGFpciA9IHsga2V5LCB2YWx1ZSB9OworICAgICAgICAoKENvbmZpZ3VyaW5nKSB0aGlzLmFzQWRtaW4oKS5nZXRFbmRTdGVwKCkpLmNvbmZpZ3VyZShjb25maWdQYWlyKTsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQogCiAgICAgLy8vLyBCWS1NT0RVTEFUT1JTCiAKQEAgLTI3MjgsNiArMjg5MSwzOCBAQAogCiAgICAgLy8vLwogCisgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vIElPIFNURVBTIC8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisgICAgLyoqCisgICAgICogVGhpcyBzdGVwIGlzIHRlY2huaWNhbGx5IGEgc3RlcCBtb2R1bGF0b3IgZm9yIHRoZSB0aGUge0BsaW5rIEdyYXBoVHJhdmVyc2FsU291cmNlI2lvKFN0cmluZyl9IHN0ZXAgd2hpY2gKKyAgICAgKiBpbnN0cnVjdHMgdGhlIHN0ZXAgdG8gcGVyZm9ybSBhIHJlYWQgd2l0aCBpdHMgZ2l2ZW4gY29uZmlndXJhdGlvbi4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIHRyYXZlcnNhbCB3aXRoIHRoZSB7QGxpbmsgSW9TdGVwfSBtb2R1bGF0ZWQgdG8gcmVhZAorICAgICAqIEBzZWUgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvJHtwcm9qZWN0LnZlcnNpb259L3JlZmVyZW5jZS8jaW8tc3RlcCIgdGFyZ2V0PSJfYmxhbmsiPlJlZmVyZW5jZSBEb2N1bWVudGF0aW9uIC0gSU8gU3RlcDwvYT4KKyAgICAgKiBAc2VlIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLyR7cHJvamVjdC52ZXJzaW9ufS9yZWZlcmVuY2UvI3JlYWQtc3RlcCIgdGFyZ2V0PSJfYmxhbmsiPlJlZmVyZW5jZSBEb2N1bWVudGF0aW9uIC0gUmVhZCBTdGVwPC9hPgorICAgICAqIEBzaW5jZSAzLjQuMAorICAgICAqLworICAgIHB1YmxpYyBkZWZhdWx0IEdyYXBoVHJhdmVyc2FsPFMsRT4gcmVhZCgpIHsKKyAgICAgICAgdGhpcy5hc0FkbWluKCkuZ2V0Qnl0ZWNvZGUoKS5hZGRTdGVwKFN5bWJvbHMucmVhZCk7CisgICAgICAgICgoUmVhZFdyaXRpbmcpIHRoaXMuYXNBZG1pbigpLmdldEVuZFN0ZXAoKSkuc2V0TW9kZShSZWFkV3JpdGluZy5Nb2RlLlJFQURJTkcpOworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUaGlzIHN0ZXAgaXMgdGVjaG5pY2FsbHkgYSBzdGVwIG1vZHVsYXRvciBmb3IgdGhlIHRoZSB7QGxpbmsgR3JhcGhUcmF2ZXJzYWxTb3VyY2UjaW8oU3RyaW5nKX0gc3RlcCB3aGljaAorICAgICAqIGluc3RydWN0cyB0aGUgc3RlcCB0byBwZXJmb3JtIGEgd3JpdGUgd2l0aCBpdHMgZ2l2ZW4gY29uZmlndXJhdGlvbi4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIHRyYXZlcnNhbCB3aXRoIHRoZSB7QGxpbmsgSW9TdGVwfSBtb2R1bGF0ZWQgdG8gd3JpdGUKKyAgICAgKiBAc2VlIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLyR7cHJvamVjdC52ZXJzaW9ufS9yZWZlcmVuY2UvI2lvLXN0ZXAiIHRhcmdldD0iX2JsYW5rIj5SZWZlcmVuY2UgRG9jdW1lbnRhdGlvbiAtIElPIFN0ZXA8L2E+CisgICAgICogQHNlZSA8YSBocmVmPSJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvZG9jcy8ke3Byb2plY3QudmVyc2lvbn0vcmVmZXJlbmNlLyN3cml0ZS1zdGVwIiB0YXJnZXQ9Il9ibGFuayI+UmVmZXJlbmNlIERvY3VtZW50YXRpb24gLSBXcml0ZSBTdGVwPC9hPgorICAgICAqIEBzaW5jZSAzLjQuMAorICAgICAqLworICAgIHB1YmxpYyBkZWZhdWx0IEdyYXBoVHJhdmVyc2FsPFMsRT4gd3JpdGUoKSB7CisgICAgICAgIHRoaXMuYXNBZG1pbigpLmdldEJ5dGVjb2RlKCkuYWRkU3RlcChTeW1ib2xzLndyaXRlKTsKKyAgICAgICAgKChSZWFkV3JpdGluZykgdGhpcy5hc0FkbWluKCkuZ2V0RW5kU3RlcCgpKS5zZXRNb2RlKFJlYWRXcml0aW5nLk1vZGUuV1JJVElORyk7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKwogICAgIC8qKgogICAgICAqIEl0ZXJhdGVzIHRoZSB0cmF2ZXJzYWwgcHJlc3VtYWJseSBmb3IgdGhlIGdlbmVyYXRpb24gb2Ygc2lkZS1lZmZlY3RzLgogICAgICAqLwpAQCAtMjc3MSw2ICsyOTY2LDcgQEAKICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgdmFsdWVzID0gInZhbHVlcyI7CiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIHByb3BlcnR5TWFwID0gInByb3BlcnR5TWFwIjsKICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgdmFsdWVNYXAgPSAidmFsdWVNYXAiOworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBlbGVtZW50TWFwID0gImVsZW1lbnRNYXAiOwogICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBzZWxlY3QgPSAic2VsZWN0IjsKICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcga2V5ID0gImtleSI7CiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIHZhbHVlID0gInZhbHVlIjsKQEAgLTI4MTIsNiArMzAwOCw5IEBACiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIHNraXAgPSAic2tpcCI7CiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIHRhaWwgPSAidGFpbCI7CiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvaW4gPSAiY29pbiI7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGlvID0gImlvIjsKKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgcmVhZCA9ICJyZWFkIjsKKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgd3JpdGUgPSAid3JpdGUiOwogCiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIHRpbWVMaW1pdCA9ICJ0aW1lTGltaXQiOwogICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBzaW1wbGVQYXRoID0gInNpbXBsZVBhdGgiOwpAQCAtMjgyMywxMCArMzAyMiwxNiBAQAogICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBzaWRlRWZmZWN0ID0gInNpZGVFZmZlY3QiOwogICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBjYXAgPSAiY2FwIjsKICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgcHJvcGVydHkgPSAicHJvcGVydHkiOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuNC4zLCByZXBsYWNlZCBieSB7QGxpbmsgU3ltYm9scyNhZ2dyZWdhdGV9IHdpdGggYSB7QGxpbmsgU2NvcGUjbG9jYWx9LgorICAgICAgICAgKi8KKyAgICAgICAgQERlcHJlY2F0ZWQKICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgc3RvcmUgPSAic3RvcmUiOwogICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBhZ2dyZWdhdGUgPSAiYWdncmVnYXRlIjsKICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgc3ViZ3JhcGggPSAic3ViZ3JhcGgiOwogICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBiYXJyaWVyID0gImJhcnJpZXIiOworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBpbmRleCA9ICJpbmRleCI7CiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGxvY2FsID0gImxvY2FsIjsKICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgZW1pdCA9ICJlbWl0IjsKICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgcmVwZWF0ID0gInJlcGVhdCI7CkBAIC0yODQwLDkgKzMwNDUsMTIgQEAKIAogICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBwYWdlUmFuayA9ICJwYWdlUmFuayI7CiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIHBlZXJQcmVzc3VyZSA9ICJwZWVyUHJlc3N1cmUiOworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBjb25uZWN0ZWRDb21wb25lbnQgPSAiY29ubmVjdGVkQ29tcG9uZW50IjsKKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgc2hvcnRlc3RQYXRoID0gInNob3J0ZXN0UGF0aCI7CiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIHByb2dyYW0gPSAicHJvZ3JhbSI7CiAKICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgYnkgPSAiYnkiOworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyB3aXRoID0gIndpdGgiOwogICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyB0aW1lcyA9ICJ0aW1lcyI7CiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGFzID0gImFzIjsKICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgb3B0aW9uID0gIm9wdGlvbiI7CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9ncmFwaC9HcmFwaFRyYXZlcnNhbFNvdXJjZS5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvZ3JhcGgvR3JhcGhUcmF2ZXJzYWxTb3VyY2UuamF2YQppbmRleCAzNWNkZDc3Li5mNWM1YzA5IDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9ncmFwaC9HcmFwaFRyYXZlcnNhbFNvdXJjZS5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL2dyYXBoL0dyYXBoVHJhdmVyc2FsU291cmNlLmphdmEKQEAgLTMyLDYgKzMyLDcgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLkFkZEVkZ2VTdGFydFN0ZXA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5BZGRWZXJ0ZXhTdGFydFN0ZXA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5HcmFwaFN0ZXA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnNpZGVFZmZlY3QuSW9TdGVwOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5zaWRlRWZmZWN0LkluamVjdFN0ZXA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLlJlcXVpcmVtZW50c1N0cmF0ZWd5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyLlRyYXZlcnNlclJlcXVpcmVtZW50OwpAQCAtNDAsNiArNDEsNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlRyYW5zYWN0aW9uOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLlN0cmluZ0ZhY3Rvcnk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5lbXB0eS5FbXB0eUdyYXBoOwogCiBpbXBvcnQgamF2YS51dGlsLk9wdGlvbmFsOwogaW1wb3J0IGphdmEudXRpbC5mdW5jdGlvbi5CaW5hcnlPcGVyYXRvcjsKQEAgLTUyLDYgKzU0LDcgQEAKICAqIEFueSBEU0wgY2FuIGJlIGNvbnN0cnVjdGVkIGJhc2VkIG9uIHRoZSBtZXRob2RzIG9mIGJvdGgge0Bjb2RlIEdyYXBoVHJhdmVyc2FsU291cmNlfSBhbmQge0BsaW5rIEdyYXBoVHJhdmVyc2FsfS4KICAqCiAgKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKICAqLwogcHVibGljIGNsYXNzIEdyYXBoVHJhdmVyc2FsU291cmNlIGltcGxlbWVudHMgVHJhdmVyc2FsU291cmNlIHsKICAgICBwcm90ZWN0ZWQgdHJhbnNpZW50IFJlbW90ZUNvbm5lY3Rpb24gY29ubmVjdGlvbjsKQEAgLTg4LDYgKzkxLDEyIEBACiAgICAgICAgIHRoaXMoZ3JhcGgsIFRyYXZlcnNhbFN0cmF0ZWdpZXMuR2xvYmFsQ2FjaGUuZ2V0U3RyYXRlZ2llcyhncmFwaC5nZXRDbGFzcygpKSk7CiAgICAgfQogCisgICAgcHVibGljIEdyYXBoVHJhdmVyc2FsU291cmNlKGZpbmFsIFJlbW90ZUNvbm5lY3Rpb24gY29ubmVjdGlvbikgeworICAgICAgICB0aGlzKEVtcHR5R3JhcGguaW5zdGFuY2UoKSwgVHJhdmVyc2FsU3RyYXRlZ2llcy5HbG9iYWxDYWNoZS5nZXRTdHJhdGVnaWVzKEVtcHR5R3JhcGguY2xhc3MpLmNsb25lKCkpOworICAgICAgICB0aGlzLmNvbm5lY3Rpb24gPSBjb25uZWN0aW9uOworICAgICAgICB0aGlzLnN0cmF0ZWdpZXMuYWRkU3RyYXRlZ2llcyhuZXcgUmVtb3RlU3RyYXRlZ3koY29ubmVjdGlvbikpOworICAgIH0KKwogICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyBUcmF2ZXJzYWxTdHJhdGVnaWVzIGdldFN0cmF0ZWdpZXMoKSB7CiAgICAgICAgIHJldHVybiB0aGlzLnN0cmF0ZWdpZXM7CkBAIC0xMjEsNiArMTMwLDIyIEBACiAgICAgICoge0Bpbmhlcml0RG9jfQogICAgICAqLwogICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBHcmFwaFRyYXZlcnNhbFNvdXJjZSB3aXRoKGZpbmFsIFN0cmluZyBrZXkpIHsKKyAgICAgICAgcmV0dXJuIChHcmFwaFRyYXZlcnNhbFNvdXJjZSkgVHJhdmVyc2FsU291cmNlLnN1cGVyLndpdGgoa2V5KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiB7QGluaGVyaXREb2N9CisgICAgICovCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIEdyYXBoVHJhdmVyc2FsU291cmNlIHdpdGgoZmluYWwgU3RyaW5nIGtleSwgZmluYWwgT2JqZWN0IHZhbHVlKSB7CisgICAgICAgIHJldHVybiAoR3JhcGhUcmF2ZXJzYWxTb3VyY2UpIFRyYXZlcnNhbFNvdXJjZS5zdXBlci53aXRoKGtleSwgdmFsdWUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIHtAaW5oZXJpdERvY30KKyAgICAgKi8KKyAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgR3JhcGhUcmF2ZXJzYWxTb3VyY2Ugd2l0aFN0cmF0ZWdpZXMoZmluYWwgVHJhdmVyc2FsU3RyYXRlZ3kuLi4gdHJhdmVyc2FsU3RyYXRlZ2llcykgewogICAgICAgICByZXR1cm4gKEdyYXBoVHJhdmVyc2FsU291cmNlKSBUcmF2ZXJzYWxTb3VyY2Uuc3VwZXIud2l0aFN0cmF0ZWdpZXModHJhdmVyc2FsU3RyYXRlZ2llcyk7CiAgICAgfQpAQCAtMzA3LDcgKzMzMiw2IEBACiAgICAgICAgIC8vIGNvbm5lY3Rpb24gYXMgeW91IGNhbid0IGhhdmUgbW9yZSB0aGFuIG9uZS4gbWF5YmUgYmV0dGVyIHRvIHRvc3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uPz8KICAgICAgICAgaWYgKHRoaXMuY29ubmVjdGlvbiAhPSBudWxsKQogICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbihTdHJpbmcuZm9ybWF0KCJUcmF2ZXJzYWxTb3VyY2UgYWxyZWFkeSBjb25maWd1cmVkIHdpdGggYSBSZW1vdGVDb25uZWN0aW9uIFslc10iLCBjb25uZWN0aW9uKSk7Ci0KICAgICAgICAgZmluYWwgR3JhcGhUcmF2ZXJzYWxTb3VyY2UgY2xvbmUgPSB0aGlzLmNsb25lKCk7CiAgICAgICAgIGNsb25lLmNvbm5lY3Rpb24gPSBjb25uZWN0aW9uOwogICAgICAgICBjbG9uZS5nZXRTdHJhdGVnaWVzKCkuYWRkU3RyYXRlZ2llcyhuZXcgUmVtb3RlU3RyYXRlZ3koY29ubmVjdGlvbikpOwpAQCAtNDAwLDYgKzQyNCwyNyBAQAogICAgIH0KIAogICAgIC8qKgorICAgICAqIFBlcmZvcm1zIGEgcmVhZCBvciB3cml0ZSBiYXNlZCBvcGVyYXRpb24gb24gdGhlIHtAbGluayBHcmFwaH0gYmFja2luZyB0aGlzIHtAY29kZSBHcmFwaFRyYXZlcnNhbFNvdXJjZX0uIFRoaXMKKyAgICAgKiBzdGVwIGNhbiBiZSBhY2NvbXBhbmllZCBieSB0aGUge0BsaW5rIEdyYXBoVHJhdmVyc2FsI3dpdGgoU3RyaW5nLCBPYmplY3QpfSBtb2R1bGF0b3IgZm9yIGZ1cnRoZXIgY29uZmlndXJhdGlvbgorICAgICAqIGFuZCBtdXN0IGJlIGFjY29tcGFuaWVkIGJ5IGEge0BsaW5rIEdyYXBoVHJhdmVyc2FsI3JlYWQoKX0gb3Ige0BsaW5rIEdyYXBoVHJhdmVyc2FsI3dyaXRlKCl9IG1vZHVsYXRvciBzdGVwCisgICAgICogd2hpY2ggd2lsbCB0ZXJtaW5hdGUgdGhlIHRyYXZlcnNhbC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBmaWxlIHRoZSBuYW1lIG9mIGZpbGUgZm9yIHdoaWNoIHRoZSByZWFkIG9yIHdyaXRlIHdpbGwgYXBwbHkgLSBub3RlIHRoYXQgdGhlIGNvbnRleHQgb2YgaG93IHRoaXMKKyAgICAgKiAgICAgICAgICAgICBwYXJhbWV0ZXIgaXMgdXNlZCBpcyB3aG9sbHkgZGVwZW5kZW50IG9uIHRoZSBpbXBsZW1lbnRhdGlvbgorICAgICAqIEByZXR1cm4gdGhlIHRyYXZlcnNhbCB3aXRoIHRoZSB7QGxpbmsgSW9TdGVwfSBhZGRlZAorICAgICAqIEBzZWUgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvJHtwcm9qZWN0LnZlcnNpb259L3JlZmVyZW5jZS8jaW8tc3RlcCIgdGFyZ2V0PSJfYmxhbmsiPlJlZmVyZW5jZSBEb2N1bWVudGF0aW9uIC0gSU8gU3RlcDwvYT4KKyAgICAgKiBAc2VlIDxhIGhyZWY9Imh0dHA6Ly90aW5rZXJwb3AuYXBhY2hlLm9yZy9kb2NzLyR7cHJvamVjdC52ZXJzaW9ufS9yZWZlcmVuY2UvI3JlYWQtc3RlcCIgdGFyZ2V0PSJfYmxhbmsiPlJlZmVyZW5jZSBEb2N1bWVudGF0aW9uIC0gUmVhZCBTdGVwPC9hPgorICAgICAqIEBzZWUgPGEgaHJlZj0iaHR0cDovL3RpbmtlcnBvcC5hcGFjaGUub3JnL2RvY3MvJHtwcm9qZWN0LnZlcnNpb259L3JlZmVyZW5jZS8jd3JpdGUtc3RlcCIgdGFyZ2V0PSJfYmxhbmsiPlJlZmVyZW5jZSBEb2N1bWVudGF0aW9uIC0gV3JpdGUgU3RlcDwvYT4KKyAgICAgKiBAc2luY2UgMy40LjAKKyAgICAgKi8KKyAgICBwdWJsaWMgPFM+IEdyYXBoVHJhdmVyc2FsPFMsIFM+IGlvKGZpbmFsIFN0cmluZyBmaWxlKSB7CisgICAgICAgIGZpbmFsIEdyYXBoVHJhdmVyc2FsU291cmNlIGNsb25lID0gdGhpcy5jbG9uZSgpOworICAgICAgICBjbG9uZS5ieXRlY29kZS5hZGRTdGVwKEdyYXBoVHJhdmVyc2FsLlN5bWJvbHMuaW8sIGZpbGUpOworICAgICAgICBmaW5hbCBHcmFwaFRyYXZlcnNhbC5BZG1pbjxTLFM+IHRyYXZlcnNhbCA9IG5ldyBEZWZhdWx0R3JhcGhUcmF2ZXJzYWw8PihjbG9uZSk7CisgICAgICAgIHJldHVybiB0cmF2ZXJzYWwuYWRkU3RlcChuZXcgSW9TdGVwPFM+KHRyYXZlcnNhbCwgZmlsZSkpOworICAgIH0KKworICAgIC8qKgogICAgICAqIFByb3hpZXMgY2FsbHMgdGhyb3VnaCB0byB0aGUgdW5kZXJseWluZyB7QGxpbmsgR3JhcGgjdHgoKX0uCiAgICAgICovCiAgICAgcHVibGljIFRyYW5zYWN0aW9uIHR4KCkgewpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvZ3JhcGgvX18uamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL2dyYXBoL19fLmphdmEKaW5kZXggNWNiZmU4Ny4uYWFiODNmNCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvZ3JhcGgvX18uamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9ncmFwaC9fXy5qYXZhCkBAIC0yNTQsMTUgKzI1NCwyNSBAQAogICAgIH0KIAogICAgIC8qKgorICAgICAqIEBzZWUgR3JhcGhUcmF2ZXJzYWwjZWxlbWVudE1hcChTdHJpbmcuLi4pCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyA8QSBleHRlbmRzIEVsZW1lbnQsIEI+IEdyYXBoVHJhdmVyc2FsPEEsIE1hcDxPYmplY3QsIEI+PiBlbGVtZW50TWFwKGZpbmFsIFN0cmluZy4uLiBwcm9wZXJ0eUtleXMpIHsKKyAgICAgICAgcmV0dXJuIF9fLjxBPnN0YXJ0KCkuZWxlbWVudE1hcChwcm9wZXJ0eUtleXMpOworICAgIH0KKworICAgIC8qKgogICAgICAqIEBzZWUgR3JhcGhUcmF2ZXJzYWwjdmFsdWVNYXAoU3RyaW5nLi4uKQogICAgICAqLwotICAgIHB1YmxpYyBzdGF0aWMgPEEgZXh0ZW5kcyBFbGVtZW50LCBCPiBHcmFwaFRyYXZlcnNhbDxBLCBNYXA8U3RyaW5nLCBCPj4gdmFsdWVNYXAoZmluYWwgU3RyaW5nLi4uIHByb3BlcnR5S2V5cykgeworICAgIHB1YmxpYyBzdGF0aWMgPEEgZXh0ZW5kcyBFbGVtZW50LCBCPiBHcmFwaFRyYXZlcnNhbDxBLCBNYXA8T2JqZWN0LCBCPj4gdmFsdWVNYXAoZmluYWwgU3RyaW5nLi4uIHByb3BlcnR5S2V5cykgewogICAgICAgICByZXR1cm4gX18uPEE+c3RhcnQoKS52YWx1ZU1hcChwcm9wZXJ0eUtleXMpOwogICAgIH0KIAogICAgIC8qKgogICAgICAqIEBzZWUgR3JhcGhUcmF2ZXJzYWwjdmFsdWVNYXAoYm9vbGVhbiwgU3RyaW5nLi4uKQorICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy40LjAsIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2Yge0BsaW5rIF9fI3ZhbHVlTWFwKFN0cmluZy4uLil9IGluIGNvbmp1bmN0aW9uIHdpdGgKKyAgICAgKiAgICAgICAgICAgICB7QGxpbmsgR3JhcGhUcmF2ZXJzYWwjd2l0aChTdHJpbmcsIE9iamVjdCl9LgogICAgICAqLworICAgIEBEZXByZWNhdGVkCiAgICAgcHVibGljIHN0YXRpYyA8QSBleHRlbmRzIEVsZW1lbnQsIEI+IEdyYXBoVHJhdmVyc2FsPEEsIE1hcDxPYmplY3QsIEI+PiB2YWx1ZU1hcChmaW5hbCBib29sZWFuIGluY2x1ZGVUb2tlbnMsIGZpbmFsIFN0cmluZy4uLiBwcm9wZXJ0eUtleXMpIHsKICAgICAgICAgcmV0dXJuIF9fLjxBPnN0YXJ0KCkudmFsdWVNYXAoaW5jbHVkZVRva2VucywgcHJvcGVydHlLZXlzKTsKICAgICB9CkBAIC0zMjQsNiArMzM0LDEzIEBACiAgICAgfQogCiAgICAgLyoqCisgICAgICogQHNlZSBHcmFwaFRyYXZlcnNhbCNsb29wcyhTdHJpbmcpCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyA8QT4gR3JhcGhUcmF2ZXJzYWw8QSwgSW50ZWdlcj4gbG9vcHMoZmluYWwgU3RyaW5nIGxvb3BOYW1lKSB7CisgICAgICAgIHJldHVybiBfXy48QT5zdGFydCgpLmxvb3BzKGxvb3BOYW1lKTsKKyAgICB9CisKKyAgICAvKioKICAgICAgKiBAc2VlIEdyYXBoVHJhdmVyc2FsI3NlbGVjdChQb3AsIFN0cmluZykKICAgICAgKi8KICAgICBwdWJsaWMgc3RhdGljIDxBLCBCPiBHcmFwaFRyYXZlcnNhbDxBLCBCPiBzZWxlY3QoZmluYWwgUG9wIHBvcCwgZmluYWwgU3RyaW5nIHNlbGVjdEtleSkgewpAQCAtNDE3LDI4ICs0MzQsMjggQEAKICAgICAvKioKICAgICAgKiBAc2VlIEdyYXBoVHJhdmVyc2FsI21pbigpCiAgICAgICovCi0gICAgcHVibGljIHN0YXRpYyA8QSwgQiBleHRlbmRzIE51bWJlcj4gR3JhcGhUcmF2ZXJzYWw8QSwgQj4gbWluKCkgeworICAgIHB1YmxpYyBzdGF0aWMgPEEsIEIgZXh0ZW5kcyBDb21wYXJhYmxlPiBHcmFwaFRyYXZlcnNhbDxBLCBCPiBtaW4oKSB7CiAgICAgICAgIHJldHVybiBfXy48QT5zdGFydCgpLm1pbigpOwogICAgIH0KIAogICAgIC8qKgogICAgICAqIEBzZWUgR3JhcGhUcmF2ZXJzYWwjbWluKFNjb3BlKQogICAgICAqLwotICAgIHB1YmxpYyBzdGF0aWMgPEEsIEIgZXh0ZW5kcyBOdW1iZXI+IEdyYXBoVHJhdmVyc2FsPEEsIEI+IG1pbihmaW5hbCBTY29wZSBzY29wZSkgeworICAgIHB1YmxpYyBzdGF0aWMgPEEsIEIgZXh0ZW5kcyBDb21wYXJhYmxlPiBHcmFwaFRyYXZlcnNhbDxBLCBCPiBtaW4oZmluYWwgU2NvcGUgc2NvcGUpIHsKICAgICAgICAgcmV0dXJuIF9fLjxBPnN0YXJ0KCkubWluKHNjb3BlKTsKICAgICB9CiAKICAgICAvKioKICAgICAgKiBAc2VlIEdyYXBoVHJhdmVyc2FsI21heCgpCiAgICAgICovCi0gICAgcHVibGljIHN0YXRpYyA8QSwgQiBleHRlbmRzIE51bWJlcj4gR3JhcGhUcmF2ZXJzYWw8QSwgQj4gbWF4KCkgeworICAgIHB1YmxpYyBzdGF0aWMgPEEsIEIgZXh0ZW5kcyBDb21wYXJhYmxlPiBHcmFwaFRyYXZlcnNhbDxBLCBCPiBtYXgoKSB7CiAgICAgICAgIHJldHVybiBfXy48QT5zdGFydCgpLm1heCgpOwogICAgIH0KIAogICAgIC8qKgogICAgICAqIEBzZWUgR3JhcGhUcmF2ZXJzYWwjbWF4KFNjb3BlKQogICAgICAqLwotICAgIHB1YmxpYyBzdGF0aWMgPEEsIEIgZXh0ZW5kcyBOdW1iZXI+IEdyYXBoVHJhdmVyc2FsPEEsIEI+IG1heChmaW5hbCBTY29wZSBzY29wZSkgeworICAgIHB1YmxpYyBzdGF0aWMgPEEsIEIgZXh0ZW5kcyBDb21wYXJhYmxlPiBHcmFwaFRyYXZlcnNhbDxBLCBCPiBtYXgoZmluYWwgU2NvcGUgc2NvcGUpIHsKICAgICAgICAgcmV0dXJuIF9fLjxBPnN0YXJ0KCkubWF4KHNjb3BlKTsKICAgICB9CiAKQEAgLTg4OCw2ICs5MDUsMTMgQEAKICAgICB9CiAKICAgICAvKioKKyAgICAgKiBAc2VlIEdyYXBoVHJhdmVyc2FsI2FnZ3JlZ2F0ZShTY29wZSwgU3RyaW5nKQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgPEE+IEdyYXBoVHJhdmVyc2FsPEEsIEE+IGFnZ3JlZ2F0ZShmaW5hbCBTY29wZSBzY29wZSwgZmluYWwgU3RyaW5nIHNpZGVFZmZlY3RLZXkpIHsKKyAgICAgICAgcmV0dXJuIF9fLjxBPnN0YXJ0KCkuYWdncmVnYXRlKHNjb3BlLCBzaWRlRWZmZWN0S2V5KTsKKyAgICB9CisKKyAgICAvKioKICAgICAgKiBAc2VlIEdyYXBoVHJhdmVyc2FsI2dyb3VwKFN0cmluZykKICAgICAgKi8KICAgICBwdWJsaWMgc3RhdGljIDxBPiBHcmFwaFRyYXZlcnNhbDxBLCBBPiBncm91cChmaW5hbCBTdHJpbmcgc2lkZUVmZmVjdEtleSkgewpAQCAtOTI0LDcgKzk0OCw5IEBACiAKICAgICAvKioKICAgICAgKiBAc2VlIEdyYXBoVHJhdmVyc2FsI3N0b3JlKFN0cmluZykKKyAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuNC4zLCByZXBsYWNlZCBieSB7QGxpbmsgI2FnZ3JlZ2F0ZShTY29wZSwgU3RyaW5nKX0gdXNpbmcge0BsaW5rIFNjb3BlI2xvY2FsfS4KICAgICAgKi8KKyAgICBARGVwcmVjYXRlZAogICAgIHB1YmxpYyBzdGF0aWMgPEE+IEdyYXBoVHJhdmVyc2FsPEEsIEE+IHN0b3JlKGZpbmFsIFN0cmluZyBzaWRlRWZmZWN0S2V5KSB7CiAgICAgICAgIHJldHVybiBfXy48QT5zdGFydCgpLnN0b3JlKHNpZGVFZmZlY3RLZXkpOwogICAgIH0KQEAgLTEwMzAsNiArMTA1NiwxMyBAQAogICAgIH0KIAogICAgIC8qKgorICAgICAqIEBzZWUgR3JhcGhUcmF2ZXJzYWwjcmVwZWF0KFRyYXZlcnNhbCkKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIDxBPiBHcmFwaFRyYXZlcnNhbDxBLCBBPiByZXBlYXQoZmluYWwgU3RyaW5nIGxvb3BOYW1lLCBmaW5hbCBUcmF2ZXJzYWw8PywgQT4gdHJhdmVyc2FsKSB7CisgICAgICAgIHJldHVybiBfXy48QT5zdGFydCgpLnJlcGVhdChsb29wTmFtZSwgdHJhdmVyc2FsKTsKKyAgICB9CisKKyAgICAvKioKICAgICAgKiBAc2VlIEdyYXBoVHJhdmVyc2FsI2VtaXQoVHJhdmVyc2FsKQogICAgICAqLwogICAgIHB1YmxpYyBzdGF0aWMgPEE+IEdyYXBoVHJhdmVyc2FsPEEsIEE+IGVtaXQoZmluYWwgVHJhdmVyc2FsPD8sID8+IGVtaXRUcmF2ZXJzYWwpIHsKQEAgLTExMDgsNCArMTE0MSwxMCBAQAogICAgICAgICByZXR1cm4gX18uPEE+c3RhcnQoKS5iYXJyaWVyKGJhcnJpZXJDb25zdW1lcik7CiAgICAgfQogCisgICAgLyoqCisgICAgICogQHNlZSBHcmFwaFRyYXZlcnNhbCNpbmRleCgpCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyA8QSwgQj4gR3JhcGhUcmF2ZXJzYWw8QSwgQj4gaW5kZXgoKSB7CisgICAgICAgIHJldHVybiBfXy48QT5zdGFydCgpLmluZGV4KCk7CisgICAgfQogfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9lbmdpbmUvQ29tcHV0ZXJUcmF2ZXJzYWxFbmdpbmUuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvZW5naW5lL0NvbXB1dGVyVHJhdmVyc2FsRW5naW5lLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3ODYyODAuLjAwMDAwMDAKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9lbmdpbmUvQ29tcHV0ZXJUcmF2ZXJzYWxFbmdpbmUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE3MSArMCwwIEBACi0vKgotICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQotICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCi0gKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgotICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQotICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQotICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQotICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKLSAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCi0gKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKLSAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQotICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucwotICogdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLXBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5lbmdpbmU7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuQ29tcHV0ZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLkdyYXBoQ29tcHV0ZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWxFbmdpbmU7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWxTb3VyY2U7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWxTdHJhdGVneTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5HcmFwaFRyYXZlcnNhbFNvdXJjZTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5FZGdlOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkdyYXBoOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleDsKLQotaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuT3B0aW9uYWw7Ci0KLS8qKgotICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCi0gKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuMi4wLiBQbGVhc2UgdXNlIHtAbGluayBHcmFwaCN0cmF2ZXJzYWwoQ2xhc3MpfS4KLSAqLwotQERlcHJlY2F0ZWQKLXB1YmxpYyBmaW5hbCBjbGFzcyBDb21wdXRlclRyYXZlcnNhbEVuZ2luZSBpbXBsZW1lbnRzIFRyYXZlcnNhbEVuZ2luZSB7Ci0KLSAgICBwcml2YXRlIGZpbmFsIHRyYW5zaWVudCBHcmFwaENvbXB1dGVyIGdyYXBoQ29tcHV0ZXI7Ci0KLSAgICBwcml2YXRlIENvbXB1dGVyVHJhdmVyc2FsRW5naW5lKGZpbmFsIEdyYXBoQ29tcHV0ZXIgZ3JhcGhDb21wdXRlcikgewotICAgICAgICB0aGlzLmdyYXBoQ29tcHV0ZXIgPSBncmFwaENvbXB1dGVyOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy4yLjAuIFBsZWFzZSB1c2Uge0BsaW5rIEdyYXBoI3RyYXZlcnNhbChDbGFzcyl9LgotICAgICAqLwotICAgIEBEZXByZWNhdGVkCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIFR5cGUgZ2V0VHlwZSgpIHsKLSAgICAgICAgcmV0dXJuIFR5cGUuQ09NUFVURVI7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjIuMC4gUGxlYXNlIHVzZSB7QGxpbmsgR3JhcGgjdHJhdmVyc2FsKENsYXNzKX0uCi0gICAgICovCi0gICAgQERlcHJlY2F0ZWQKLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgewotICAgICAgICByZXR1cm4gdGhpcy5nZXRDbGFzcygpLmdldFNpbXBsZU5hbWUoKS50b0xvd2VyQ2FzZSgpOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy4yLjAuIFBsZWFzZSB1c2Uge0BsaW5rIEdyYXBoI3RyYXZlcnNhbChDbGFzcyl9LgotICAgICAqLwotICAgIEBEZXByZWNhdGVkCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIE9wdGlvbmFsPEdyYXBoQ29tcHV0ZXI+IGdldEdyYXBoQ29tcHV0ZXIoKSB7Ci0gICAgICAgIHJldHVybiBPcHRpb25hbC5vZk51bGxhYmxlKHRoaXMuZ3JhcGhDb21wdXRlcik7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjIuMC4gUGxlYXNlIHVzZSB7QGxpbmsgR3JhcGgjdHJhdmVyc2FsKENsYXNzKX0uCi0gICAgICovCi0gICAgQERlcHJlY2F0ZWQKLSAgICBwdWJsaWMgc3RhdGljIEJ1aWxkZXIgYnVpbGQoKSB7Ci0gICAgICAgIHJldHVybiBuZXcgQnVpbGRlcigpOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy4yLjAuIFBsZWFzZSB1c2Uge0BsaW5rIEdyYXBoI3RyYXZlcnNhbChDbGFzcyl9LgotICAgICAqLwotICAgIEBEZXByZWNhdGVkCi0gICAgcHVibGljIGZpbmFsIHN0YXRpYyBjbGFzcyBCdWlsZGVyIGltcGxlbWVudHMgVHJhdmVyc2FsRW5naW5lLkJ1aWxkZXIgewotCi0gICAgICAgIHByaXZhdGUgQ2xhc3M8PyBleHRlbmRzIEdyYXBoQ29tcHV0ZXI+IGdyYXBoQ29tcHV0ZXJDbGFzczsKLSAgICAgICAgcHJpdmF0ZSBpbnQgd29ya2VycyA9IC0xOwotICAgICAgICBwcml2YXRlIFRyYXZlcnNhbDxWZXJ0ZXgsIFZlcnRleD4gdmVydGV4RmlsdGVyID0gbnVsbDsKLSAgICAgICAgcHJpdmF0ZSBUcmF2ZXJzYWw8VmVydGV4LCBFZGdlPiBlZGdlRmlsdGVyID0gbnVsbDsKLQotICAgICAgICAvKioKLSAgICAgICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjIuMC4gUGxlYXNlIHVzZSB7QGxpbmsgR3JhcGgjdHJhdmVyc2FsKENsYXNzKX0uCi0gICAgICAgICAqLwotICAgICAgICBARGVwcmVjYXRlZAotICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIExpc3Q8VHJhdmVyc2FsU3RyYXRlZ3k+IGdldFdpdGhTdHJhdGVnaWVzKCkgewotICAgICAgICAgICAgcmV0dXJuIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgLyoqCi0gICAgICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy4yLjAuIFBsZWFzZSB1c2Uge0BsaW5rIEdyYXBoI3RyYXZlcnNhbChDbGFzcyl9LgotICAgICAgICAgKi8KLSAgICAgICAgQERlcHJlY2F0ZWQKLSAgICAgICAgcHVibGljIEJ1aWxkZXIgd29ya2VycyhmaW5hbCBpbnQgd29ya2VycykgewotICAgICAgICAgICAgdGhpcy53b3JrZXJzID0gd29ya2VyczsKLSAgICAgICAgICAgIHJldHVybiB0aGlzOwotICAgICAgICB9Ci0KLSAgICAgICAgLyoqCi0gICAgICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy4yLjAuIFBsZWFzZSB1c2Uge0BsaW5rIEdyYXBoI3RyYXZlcnNhbChDbGFzcyl9LgotICAgICAgICAgKi8KLSAgICAgICAgQERlcHJlY2F0ZWQKLSAgICAgICAgcHVibGljIEJ1aWxkZXIgY29tcHV0ZXIoZmluYWwgQ2xhc3M8PyBleHRlbmRzIEdyYXBoQ29tcHV0ZXI+IGdyYXBoQ29tcHV0ZXJDbGFzcykgewotICAgICAgICAgICAgdGhpcy5ncmFwaENvbXB1dGVyQ2xhc3MgPSBncmFwaENvbXB1dGVyQ2xhc3M7Ci0gICAgICAgICAgICByZXR1cm4gdGhpczsKLSAgICAgICAgfQotCi0gICAgICAgIC8qKgotICAgICAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuMi4wLiBQbGVhc2UgdXNlIHtAbGluayBHcmFwaCN0cmF2ZXJzYWwoQ2xhc3MpfS4KLSAgICAgICAgICovCi0gICAgICAgIEBEZXByZWNhdGVkCi0gICAgICAgIHB1YmxpYyBCdWlsZGVyIHZlcnRpY2VzKGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIFZlcnRleD4gdmVydGV4RmlsdGVyKSB7Ci0gICAgICAgICAgICB0aGlzLnZlcnRleEZpbHRlciA9IHZlcnRleEZpbHRlcjsKLSAgICAgICAgICAgIHJldHVybiB0aGlzOwotICAgICAgICB9Ci0KLSAgICAgICAgLyoqCi0gICAgICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy4yLjAuIFBsZWFzZSB1c2Uge0BsaW5rIEdyYXBoI3RyYXZlcnNhbChDbGFzcyl9LgotICAgICAgICAgKi8KLSAgICAgICAgQERlcHJlY2F0ZWQKLSAgICAgICAgcHVibGljIEJ1aWxkZXIgZWRnZXMoZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgRWRnZT4gZWRnZUZpbHRlcikgewotICAgICAgICAgICAgdGhpcy5lZGdlRmlsdGVyID0gZWRnZUZpbHRlcjsKLSAgICAgICAgICAgIHJldHVybiB0aGlzOwotICAgICAgICB9Ci0KLQotICAgICAgICAvKioKLSAgICAgICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjIuMC4gUGxlYXNlIHVzZSB7QGxpbmsgR3JhcGgjdHJhdmVyc2FsKENsYXNzKX0uCi0gICAgICAgICAqLwotICAgICAgICBARGVwcmVjYXRlZAotICAgICAgICBwdWJsaWMgQ29tcHV0ZXJUcmF2ZXJzYWxFbmdpbmUgY3JlYXRlKGZpbmFsIEdyYXBoIGdyYXBoKSB7Ci0gICAgICAgICAgICBHcmFwaENvbXB1dGVyIGdyYXBoQ29tcHV0ZXIgPSBudWxsID09IHRoaXMuZ3JhcGhDb21wdXRlckNsYXNzID8gZ3JhcGguY29tcHV0ZSgpIDogZ3JhcGguY29tcHV0ZSh0aGlzLmdyYXBoQ29tcHV0ZXJDbGFzcyk7Ci0gICAgICAgICAgICBpZiAoLTEgIT0gdGhpcy53b3JrZXJzKQotICAgICAgICAgICAgICAgIGdyYXBoQ29tcHV0ZXIgPSBncmFwaENvbXB1dGVyLndvcmtlcnModGhpcy53b3JrZXJzKTsKLSAgICAgICAgICAgIGlmIChudWxsICE9IHRoaXMudmVydGV4RmlsdGVyKQotICAgICAgICAgICAgICAgIGdyYXBoQ29tcHV0ZXIgPSBncmFwaENvbXB1dGVyLnZlcnRpY2VzKHRoaXMudmVydGV4RmlsdGVyKTsKLSAgICAgICAgICAgIGlmIChudWxsICE9IHRoaXMuZWRnZUZpbHRlcikKLSAgICAgICAgICAgICAgICBncmFwaENvbXB1dGVyID0gZ3JhcGhDb21wdXRlci5lZGdlcyh0aGlzLmVkZ2VGaWx0ZXIpOwotICAgICAgICAgICAgcmV0dXJuIG5ldyBDb21wdXRlclRyYXZlcnNhbEVuZ2luZShncmFwaENvbXB1dGVyKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8qKgotICAgICAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuMi4wLiBQbGVhc2UgdXNlIHtAbGluayBHcmFwaCN0cmF2ZXJzYWwoQ2xhc3MpfS4KLSAgICAgICAgICovCi0gICAgICAgIEBEZXByZWNhdGVkCi0gICAgICAgIHB1YmxpYyBUcmF2ZXJzYWxTb3VyY2UgY3JlYXRlKGZpbmFsIEdyYXBoVHJhdmVyc2FsU291cmNlIHRyYXZlcnNhbFNvdXJjZSkgewotICAgICAgICAgICAgQ29tcHV0ZXIgY29tcHV0ZXIgPSBudWxsID09IHRoaXMuZ3JhcGhDb21wdXRlckNsYXNzID8gQ29tcHV0ZXIuY29tcHV0ZSgpIDogQ29tcHV0ZXIuY29tcHV0ZSh0aGlzLmdyYXBoQ29tcHV0ZXJDbGFzcyk7Ci0gICAgICAgICAgICBpZiAoLTEgIT0gdGhpcy53b3JrZXJzKQotICAgICAgICAgICAgICAgIGNvbXB1dGVyID0gY29tcHV0ZXIud29ya2Vycyh0aGlzLndvcmtlcnMpOwotICAgICAgICAgICAgaWYgKG51bGwgIT0gdGhpcy52ZXJ0ZXhGaWx0ZXIpCi0gICAgICAgICAgICAgICAgY29tcHV0ZXIgPSBjb21wdXRlci52ZXJ0aWNlcyh0aGlzLnZlcnRleEZpbHRlcik7Ci0gICAgICAgICAgICBpZiAobnVsbCAhPSB0aGlzLmVkZ2VGaWx0ZXIpCi0gICAgICAgICAgICAgICAgY29tcHV0ZXIgPSBjb21wdXRlci5lZGdlcyh0aGlzLmVkZ2VGaWx0ZXIpOwotICAgICAgICAgICAgcmV0dXJuIHRyYXZlcnNhbFNvdXJjZS53aXRoQ29tcHV0ZXIoY29tcHV0ZXIpOwotICAgICAgICB9Ci0gICAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvZW5naW5lL1N0YW5kYXJkVHJhdmVyc2FsRW5naW5lLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2VuZ2luZS9TdGFuZGFyZFRyYXZlcnNhbEVuZ2luZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZGJkOGU3Li4wMDAwMDAwCi0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvZW5naW5lL1N0YW5kYXJkVHJhdmVyc2FsRW5naW5lLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMDQgKzAsMCBAQAotLyoKLSAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLSAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQotICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLSAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLSAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKLSAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKLSAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCi0gKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgotICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCi0gKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKLSAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKLSAqIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi1wYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZW5naW5lOwotCi1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLkdyYXBoQ29tcHV0ZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWxFbmdpbmU7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGg7Ci0KLWltcG9ydCBqYXZhLnV0aWwuT3B0aW9uYWw7Ci0KLS8qKgotICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCi0gKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuMi4wLiBQbGVhc2UgdXNlIHtAbGluayBHcmFwaCN0cmF2ZXJzYWwoQ2xhc3MpfS4KLSAqLwotQERlcHJlY2F0ZWQKLXB1YmxpYyBmaW5hbCBjbGFzcyBTdGFuZGFyZFRyYXZlcnNhbEVuZ2luZSBpbXBsZW1lbnRzIFRyYXZlcnNhbEVuZ2luZSB7Ci0KLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdGFuZGFyZFRyYXZlcnNhbEVuZ2luZSBJTlNUQU5DRSA9IG5ldyBTdGFuZGFyZFRyYXZlcnNhbEVuZ2luZSgpOwotCi0gICAgLyoqCi0gICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjIuMC4gUGxlYXNlIHVzZSB7QGxpbmsgR3JhcGgjdHJhdmVyc2FsKENsYXNzKX0uCi0gICAgICovCi0gICAgQERlcHJlY2F0ZWQKLSAgICBwcml2YXRlIFN0YW5kYXJkVHJhdmVyc2FsRW5naW5lKCkgewotCi0gICAgfQotCi0gICAgLyoqCi0gICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjIuMC4gUGxlYXNlIHVzZSB7QGxpbmsgR3JhcGgjdHJhdmVyc2FsKENsYXNzKX0uCi0gICAgICovCi0gICAgQERlcHJlY2F0ZWQKLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgVHlwZSBnZXRUeXBlKCkgewotICAgICAgICByZXR1cm4gVHlwZS5TVEFOREFSRDsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuMi4wLiBQbGVhc2UgdXNlIHtAbGluayBHcmFwaCN0cmF2ZXJzYWwoQ2xhc3MpfS4KLSAgICAgKi8KLSAgICBARGVwcmVjYXRlZAotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBPcHRpb25hbDxHcmFwaENvbXB1dGVyPiBnZXRHcmFwaENvbXB1dGVyKCkgewotICAgICAgICByZXR1cm4gT3B0aW9uYWwuZW1wdHkoKTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuMi4wLiBQbGVhc2UgdXNlIHtAbGluayBHcmFwaCN0cmF2ZXJzYWwoQ2xhc3MpfS4KLSAgICAgKi8KLSAgICBARGVwcmVjYXRlZAotICAgIHB1YmxpYyBzdGF0aWMgQnVpbGRlciBidWlsZCgpIHsKLSAgICAgICAgcmV0dXJuIEJ1aWxkZXIuSU5TVEFOQ0U7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjIuMC4gUGxlYXNlIHVzZSB7QGxpbmsgR3JhcGgjdHJhdmVyc2FsKENsYXNzKX0uCi0gICAgICovCi0gICAgQERlcHJlY2F0ZWQKLSAgICBwdWJsaWMgc3RhdGljIFN0YW5kYXJkVHJhdmVyc2FsRW5naW5lIGluc3RhbmNlKCkgewotICAgICAgICByZXR1cm4gSU5TVEFOQ0U7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjIuMC4gUGxlYXNlIHVzZSB7QGxpbmsgR3JhcGgjdHJhdmVyc2FsKENsYXNzKX0uCi0gICAgICovCi0gICAgQERlcHJlY2F0ZWQKLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgewotICAgICAgICByZXR1cm4gdGhpcy5nZXRDbGFzcygpLmdldFNpbXBsZU5hbWUoKS50b0xvd2VyQ2FzZSgpOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy4yLjAuIFBsZWFzZSB1c2Uge0BsaW5rIEdyYXBoI3RyYXZlcnNhbChDbGFzcyl9LgotICAgICAqLwotICAgIEBEZXByZWNhdGVkCi0gICAgcHVibGljIGZpbmFsIHN0YXRpYyBjbGFzcyBCdWlsZGVyIGltcGxlbWVudHMgVHJhdmVyc2FsRW5naW5lLkJ1aWxkZXIgewotCi0gICAgICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIEJ1aWxkZXIgSU5TVEFOQ0UgPSBuZXcgQnVpbGRlcigpOwotCi0gICAgICAgIC8qKgotICAgICAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuMi4wLiBQbGVhc2UgdXNlIHtAbGluayBHcmFwaCN0cmF2ZXJzYWwoQ2xhc3MpfS4KLSAgICAgICAgICovCi0gICAgICAgIEBEZXByZWNhdGVkCi0gICAgICAgIEBPdmVycmlkZQotICAgICAgICBwdWJsaWMgVHJhdmVyc2FsRW5naW5lIGNyZWF0ZShmaW5hbCBHcmFwaCBncmFwaCkgewotICAgICAgICAgICAgcmV0dXJuIFN0YW5kYXJkVHJhdmVyc2FsRW5naW5lLklOU1RBTkNFOwotICAgICAgICB9Ci0gICAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvbGFtYmRhL0NvbHVtblRyYXZlcnNhbC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9sYW1iZGEvQ29sdW1uVHJhdmVyc2FsLmphdmEKaW5kZXggNTAyMzgwNS4uOWUyZjMxYyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9sYW1iZGEvQ29sdW1uVHJhdmVyc2FsLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9sYW1iZGEvQ29sdW1uVHJhdmVyc2FsLmphdmEKQEAgLTIyLDYgKzIyLDggQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5Db2x1bW47CiAKK2ltcG9ydCBqYXZhLnV0aWwuT2JqZWN0czsKKwogLyoqCiAgKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKICAqLwpAQCAtNTcsNCArNTksMTAgQEAKICAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgewogICAgICAgICByZXR1cm4gdGhpcy5nZXRDbGFzcygpLmhhc2hDb2RlKCkgXiB0aGlzLmNvbHVtbi5oYXNoQ29kZSgpOwogICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhmaW5hbCBPYmplY3Qgb3RoZXIpIHsKKyAgICAgICAgcmV0dXJuIG90aGVyIGluc3RhbmNlb2YgQ29sdW1uVHJhdmVyc2FsCisgICAgICAgICAgICAgICAgJiYgT2JqZWN0cy5lcXVhbHMoKChDb2x1bW5UcmF2ZXJzYWwpIG90aGVyKS5jb2x1bW4sIHRoaXMuY29sdW1uKTsKKyAgICB9CiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2xhbWJkYS9Db25zdGFudFRyYXZlcnNhbC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9sYW1iZGEvQ29uc3RhbnRUcmF2ZXJzYWwuamF2YQppbmRleCA5MTk3M2I5Li5iY2Y4MmQ0IDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2xhbWJkYS9Db25zdGFudFRyYXZlcnNhbC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvbGFtYmRhL0NvbnN0YW50VHJhdmVyc2FsLmphdmEKQEAgLTE4LDYgKzE4LDggQEAKICAqLwogcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmxhbWJkYTsKIAoraW1wb3J0IGphdmEudXRpbC5PYmplY3RzOworCiAvKioKICAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQogICovCkBAIC00Myw1ICs0NSwxMCBAQAogICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7CiAgICAgICAgIHJldHVybiB0aGlzLmdldENsYXNzKCkuaGFzaENvZGUoKSBeIHRoaXMuZW5kLmhhc2hDb2RlKCk7CiAgICAgfQotfQogCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKGZpbmFsIE9iamVjdCBvdGhlcikgeworICAgICAgICByZXR1cm4gb3RoZXIgaW5zdGFuY2VvZiBDb25zdGFudFRyYXZlcnNhbAorICAgICAgICAgICAgICAgICYmIE9iamVjdHMuZXF1YWxzKCgoQ29uc3RhbnRUcmF2ZXJzYWwpIG90aGVyKS5lbmQsIHRoaXMuZW5kKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9sYW1iZGEvRWxlbWVudFZhbHVlVHJhdmVyc2FsLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2xhbWJkYS9FbGVtZW50VmFsdWVUcmF2ZXJzYWwuamF2YQppbmRleCAyZTliMjZjLi43M2Y3M2E2IDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2xhbWJkYS9FbGVtZW50VmFsdWVUcmF2ZXJzYWwuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2xhbWJkYS9FbGVtZW50VmFsdWVUcmF2ZXJzYWwuamF2YQpAQCAtMjIsNyArMjIsMTUgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuVHJhdmVyc2FsVXRpbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5FbGVtZW50OwogCitpbXBvcnQgamF2YS51dGlsLk1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuT2JqZWN0czsKKwogLyoqCisgKiBNb3JlIGVmZmljaWVudGx5IGV4dHJhY3RzIGEgdmFsdWUgZnJvbSBhbiB7QGxpbmsgRWxlbWVudH0gb3Ige0Bjb2RlIE1hcH0gdG8gYXZvaWQgc3RyYXRlZ3kgYXBwbGljYXRpb24gY29zdHMuIE5vdGUKKyAqIHRoYXQgYXMgb2YgMy40LjUgdGhpcyBjbGFzcyBpcyBub3cgcG9vcmx5IG5hbWVkIGFzIGl0IHdhcyBvcmlnaW5hbGx5IGRlc2lnbmVkIHRvIHdvcmsgd2l0aCB7QGxpbmsgRWxlbWVudH0gb25seS4KKyAqIEluIGZ1dHVyZSAzLjUuMCB0aGlzIGNsYXNzIHdpbGwgbGlrZWx5IGJlIHJlbmFtZWQgYnV0IHRvIGVuc3VyZSB0aGF0IHdlIGdldCB0aGlzIHJldmlzZWQgZnVuY3Rpb25hbGl0eSBmb3IKKyAqIHtAY29kZSBNYXB9IHdpdGhvdXQgaW50cm9kdWNpbmcgYSBicmVha2luZyBjaGFuZ2UgdGhpcyBuYW1lIHdpbGwgcmVtYWluIHRoZSBzYW1lLgorICoKICAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQogICovCiBwdWJsaWMgZmluYWwgY2xhc3MgRWxlbWVudFZhbHVlVHJhdmVyc2FsPFY+IGV4dGVuZHMgQWJzdHJhY3RMYW1iZGFUcmF2ZXJzYWw8RWxlbWVudCwgVj4gewpAQCAtNDYsNyArNTQsMjMgQEAKIAogICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyB2b2lkIGFkZFN0YXJ0KGZpbmFsIFRyYXZlcnNlci5BZG1pbjxFbGVtZW50PiBzdGFydCkgewotICAgICAgICB0aGlzLnZhbHVlID0gbnVsbCA9PSB0aGlzLmJ5cGFzc1RyYXZlcnNhbCA/IHN0YXJ0LmdldCgpLnZhbHVlKHRoaXMucHJvcGVydHlLZXkpIDogVHJhdmVyc2FsVXRpbC5hcHBseShzdGFydCwgdGhpcy5ieXBhc3NUcmF2ZXJzYWwpOworICAgICAgICBpZiAobnVsbCA9PSB0aGlzLmJ5cGFzc1RyYXZlcnNhbCkgeworICAgICAgICAgICAgLy8gcGxheWluZyBhIGdhbWUgb2YgdHlwZSBlcmFzdXJlIGhlcmUuLi4uLnRlY2huaWNhbGx5IHdlIGNhbiBwcm9jZXNzIGVpdGhlciBNYXAgb3IgRWxlbWVudCBoZXJlIGluIHRoaXMKKyAgICAgICAgICAgIC8vIGNhc2UgYWZ0ZXIgMy40LjUuIGFuZCBvYnZpb3VzbHkgdXNlcnMgZ2V0IHdlaXJkIGVycm9ycyBhbG9uZyB0aG9zZSBsaW5lcyBoZXJlIGFueXdheS4gd2lsbCBmaXggdXAgdGhlCisgICAgICAgICAgICAvLyBnZW5lcmljcyBpbiAzLjUuMCB3aGVuIHdlIGNhbiB0YWtlIHNvbWUgYnJlYWtpbmcgY2hhbmdlcy4gc2VlbWVkIGxpa2UgdGhpcyBmZWF0dXJlIHdvdWxkIG1ha2UgR3JlbWxpbgorICAgICAgICAgICAgLy8gYSBsb3QgbmljZXIgYW5kIGdpdmVuIHRoZSBzbWFsbCBmb290cHJpbnQgb2YgdGhlIGNoYW5nZSB0aGlzIHNlZW1lZCBsaWtlIGEgZ29vZCBoYWNrIHRvIHRha2UuCisgICAgICAgICAgICBmaW5hbCBPYmplY3QgbyA9IHN0YXJ0LmdldCgpOworICAgICAgICAgICAgaWYgKG8gaW5zdGFuY2VvZiBFbGVtZW50KQorICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSAoKEVsZW1lbnQpIG8pLnZhbHVlKHByb3BlcnR5S2V5KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKG8gaW5zdGFuY2VvZiBNYXApCisgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IChWKSAoKE1hcCkgbykuZ2V0KHByb3BlcnR5S2V5KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKFN0cmluZy5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGJ5KFwiJXNcIikgbW9kdWxhdG9yIGNhbiBvbmx5IGJlIGFwcGxpZWQgdG8gYSB0cmF2ZXJzZXIgdGhhdCBpcyBhbiBFbGVtZW50IG9yIGEgTWFwIC0gaXQgaXMgYmVpbmcgYXBwbGllZCB0byBbJXNdIGEgJXMgY2xhc3MgaW5zdGVhZCIsCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eUtleSwgbywgby5nZXRDbGFzcygpLmdldFNpbXBsZU5hbWUoKSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy52YWx1ZSA9IFRyYXZlcnNhbFV0aWwuYXBwbHkoc3RhcnQsIHRoaXMuYnlwYXNzVHJhdmVyc2FsKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHB1YmxpYyBTdHJpbmcgZ2V0UHJvcGVydHlLZXkoKSB7CkBAIC02Miw0ICs4NiwxMCBAQAogICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7CiAgICAgICAgIHJldHVybiBzdXBlci5oYXNoQ29kZSgpIF4gdGhpcy5wcm9wZXJ0eUtleS5oYXNoQ29kZSgpOwogICAgIH0KLX0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhmaW5hbCBPYmplY3Qgb3RoZXIpIHsKKyAgICAgICAgcmV0dXJuIG90aGVyIGluc3RhbmNlb2YgRWxlbWVudFZhbHVlVHJhdmVyc2FsCisgICAgICAgICAgICAgICAgJiYgT2JqZWN0cy5lcXVhbHMoKChFbGVtZW50VmFsdWVUcmF2ZXJzYWwpIG90aGVyKS5wcm9wZXJ0eUtleSwgdGhpcy5wcm9wZXJ0eUtleSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvbGFtYmRhL0lkZW50aXR5VHJhdmVyc2FsLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2xhbWJkYS9JZGVudGl0eVRyYXZlcnNhbC5qYXZhCmluZGV4IDk4Zjg1YzAuLjFlZDU3NDkgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvbGFtYmRhL0lkZW50aXR5VHJhdmVyc2FsLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9sYW1iZGEvSWRlbnRpdHlUcmF2ZXJzYWwuamF2YQpAQCAtNDEsNCArNDEsOSBAQAogICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CiAgICAgICAgIHJldHVybiAiaWRlbnRpdHkiOwogICAgIH0KLX0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhmaW5hbCBPYmplY3Qgb3RoZXIpIHsKKyAgICAgICAgcmV0dXJuIG90aGVyIGluc3RhbmNlb2YgSWRlbnRpdHlUcmF2ZXJzYWw7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvbGFtYmRhL0xvb3BUcmF2ZXJzYWwuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvbGFtYmRhL0xvb3BUcmF2ZXJzYWwuamF2YQppbmRleCBhZTAzYzk0Li42OGI2YjE4IDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2xhbWJkYS9Mb29wVHJhdmVyc2FsLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9sYW1iZGEvTG9vcFRyYXZlcnNhbC5qYXZhCkBAIC01NSw0ICs1NSwxMCBAQAogICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7CiAgICAgICAgIHJldHVybiB0aGlzLmdldENsYXNzKCkuaGFzaENvZGUoKSBeIExvbmcuaGFzaENvZGUodGhpcy5tYXhMb29wcyk7CiAgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKGZpbmFsIE9iamVjdCBvdGhlcikgeworICAgICAgICByZXR1cm4gb3RoZXIgaW5zdGFuY2VvZiBMb29wVHJhdmVyc2FsCisgICAgICAgICAgICAgICAgJiYgKChMb29wVHJhdmVyc2FsKSBvdGhlcikubWF4TG9vcHMgPT0gdGhpcy5tYXhMb29wczsKKyAgICB9CiB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9sYW1iZGEvVG9rZW5UcmF2ZXJzYWwuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvbGFtYmRhL1Rva2VuVHJhdmVyc2FsLmphdmEKaW5kZXggNGY5OGE1NC4uZDQxYzQwMiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9sYW1iZGEvVG9rZW5UcmF2ZXJzYWwuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2xhbWJkYS9Ub2tlblRyYXZlcnNhbC5qYXZhCkBAIC0yMiw2ICsyMiw4IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuRWxlbWVudDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5UOwogCitpbXBvcnQgamF2YS51dGlsLk9iamVjdHM7CisKIC8qKgogICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCiAgKi8KQEAgLTU3LDQgKzU5LDEwIEBACiAgICAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2xhc3MoKS5oYXNoQ29kZSgpIF4gdGhpcy50Lmhhc2hDb2RlKCk7CiAgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKGZpbmFsIE9iamVjdCBvdGhlcikgeworICAgICAgICByZXR1cm4gb3RoZXIgaW5zdGFuY2VvZiBUb2tlblRyYXZlcnNhbAorICAgICAgICAgICAgICAgICYmIE9iamVjdHMuZXF1YWxzKCgoVG9rZW5UcmF2ZXJzYWwpIG90aGVyKS50LCB0aGlzLnQpOworICAgIH0KIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvbGFtYmRhL1RydWVUcmF2ZXJzYWwuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvbGFtYmRhL1RydWVUcmF2ZXJzYWwuamF2YQppbmRleCA4NGMwZGI2Li43MTU4MGNlIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2xhbWJkYS9UcnVlVHJhdmVyc2FsLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9sYW1iZGEvVHJ1ZVRyYXZlcnNhbC5qYXZhCkBAIC00Myw0ICs0Myw5IEBACiAgICAgcHVibGljIFRydWVUcmF2ZXJzYWw8Uz4gY2xvbmUoKSB7CiAgICAgICAgIHJldHVybiBJTlNUQU5DRTsKICAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoZmluYWwgT2JqZWN0IG90aGVyKSB7CisgICAgICAgIHJldHVybiBvdGhlciBpbnN0YW5jZW9mIFRydWVUcmF2ZXJzYWw7CisgICAgfQogfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL0NvbmZpZ3VyaW5nLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvQ29uZmlndXJpbmcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YWM2MjgwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL0NvbmZpZ3VyaW5nLmphdmEKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcDsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuU3RlcDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5HcmFwaFRyYXZlcnNhbDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5QYXJhbWV0ZXJzOworCisvKioKKyAqIElkZW50aWZpZXMgYSB7QGxpbmsgU3RlcH0gYXMgb25lIHRoYXQgY2FuIGFjY2VwdCBjb25maWd1cmF0aW9ucyB2aWEgdGhlIHtAbGluayBHcmFwaFRyYXZlcnNhbCN3aXRoKFN0cmluZywgT2JqZWN0KX0KKyAqIHN0ZXAgbW9kdWxhdG9yLiBUaGUgbmF0dXJlIG9mIHRoZSBjb25maWd1cmF0aW9uIGFsbG93ZWQgaXMgc3BlY2lmaWMgdG8gdGhlIGltcGxlbWVudGF0aW9uLgorICoKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqLworcHVibGljIGludGVyZmFjZSBDb25maWd1cmluZyBleHRlbmRzIFBhcmFtZXRlcml6aW5nIHsKKworICAgIC8qKgorICAgICAqIEFjY2VwdCBhIGNvbmZpZ3VyYXRpb24gdG8gdGhlIHtAbGluayBTdGVwfS4gTm90ZSB0aGF0IHRoaXMgaW50ZXJmYWNlIGV4dGVuZHMge0BsaW5rIFBhcmFtZXRlcml6aW5nfSBhbmQgc28KKyAgICAgKiB0aGVyZSBpcyBhbiBleHBlY3RhdGlvbiB0aGF0IHRoZSB7QGxpbmsgU3RlcH0gaW1wbGVtZW50YXRpb24gd2lsbCBoYXZlIGEge0BsaW5rIFBhcmFtZXRlcnN9IGluc3RhbmNlIHRoYXQgd2lsbAorICAgICAqIGhvdXNlIGFueSB2YWx1ZXMgcGFzc2VkIHRvIHRoaXMgbWV0aG9kLiBTdG9yaW5nIHRoZXNlIGNvbmZpZ3VyYXRpb25zIGluIHtAbGluayBQYXJhbWV0ZXJzfSBpcyBub3QgYSByZXF1aXJlbWVudAorICAgICAqIGhvd2V2ZXIsIElGIHRoZSBjb25maWd1cmF0aW9uIGlzIGFuIGV4cGVjdGVkIG9wdGlvbiBmb3IgdGhlIHN0ZXAgYW5kIGNhbiBiZSBzdG9yZWQgb24gYSBtZW1iZXIgZmllbGQgdGhhdCBjYW4KKyAgICAgKiBiZSBhY2Nlc3NlZCBvbiB0aGUgc3RlcCBieSBtb3JlIGRpcmVjdCBtZWFucyAoaS5lLiBsaWtlIGEgZ2V0dGVyIG1ldGhvZCkuCisgICAgICovCisgICAgcHVibGljIHZvaWQgY29uZmlndXJlKGZpbmFsIE9iamVjdC4uLiBrZXlWYWx1ZXMpOworfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL011dGF0aW5nLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvTXV0YXRpbmcuamF2YQppbmRleCA1MGU0MTVhLi4xNDU1M2Q5IDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvTXV0YXRpbmcuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvTXV0YXRpbmcuamF2YQpAQCAtMjgsMTMgKzI4LDEwIEBACiAgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCiAgKiBAYXV0aG9yIE1hdHQgRnJhbnR6IChodHRwOi8vZ2l0aHViLmNvbS9taGZyYW50eikKICAqLwotcHVibGljIGludGVyZmFjZSBNdXRhdGluZzxFIGV4dGVuZHMgRXZlbnQ+IHsKK3B1YmxpYyBpbnRlcmZhY2UgTXV0YXRpbmc8RSBleHRlbmRzIEV2ZW50PiBleHRlbmRzIENvbmZpZ3VyaW5nIHsKIAogICAgIC8qKgogICAgICAqIEdldHMgdGhlIGNhbGxiYWNrIHJlZ2lzdHJ5IGZvciBldmVudHMgdGhhdCB0aGUgc3RlcCByYWlzZXMuCiAgICAgICovCiAgICAgcHVibGljIENhbGxiYWNrUmVnaXN0cnk8RT4gZ2V0TXV0YXRpbmdDYWxsYmFja1JlZ2lzdHJ5KCk7Ci0KLSAgICBwdWJsaWMgdm9pZCBhZGRQcm9wZXJ0eU11dGF0aW9ucyhmaW5hbCBPYmplY3QuLi4ga2V5VmFsdWVzKTsKLQogfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL1BhcmFtZXRlcml6aW5nLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvUGFyYW1ldGVyaXppbmcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZDhkYzIyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL1BhcmFtZXRlcml6aW5nLmphdmEKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcDsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuU3RlcDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5QYXJhbWV0ZXJzOworCisvKioKKyAqIEFuIGludGVyZmFjZSBmb3Ige0BsaW5rIFN0ZXB9IGltcGxlbWVudGF0aW9ucyB0aGF0IGhvbGQgYSB7QGxpbmsgUGFyYW1ldGVyc30gb2JqZWN0LCB3aGljaCBmb2xkIGluIGFyZ3VtZW50cyBmcm9tCisgKiBvdGhlciBzdGVwcy4gSXQgaXMgdHlwaWNhbGx5IHVzZWQgb24gbXV0YXRpbmcgc3RlcHMsIHN1Y2ggYXMge0Bjb2RlIGFkZFYoKX0sIHdoZXJlIGNhbGxzIHRvIHtAY29kZSBwcm9wZXJ0eShrLHYpfQorICogYXJlIGZvbGRlZCBpbiBhcyBwYXJhbWV0ZXJzIHRvIHRoYXQgYWRkIHZlcnRleCBzdGVwLCBidXQgaXQgbWF5IGJlIHVzZWQgZm9yIGFueSBzdGVwIHRoYXQgY291bGQgYmVuZWZpdCBmcm9tCisgKiBtb2R1bGF0aW9uLgorICoKKyAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgaW50ZXJmYWNlIFBhcmFtZXRlcml6aW5nIHsKKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIHBhcmFtZXRlcnMgb24gdGhlIHN0ZXAuCisgICAgICovCisgICAgcHVibGljIFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVycygpOworfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL1JlYWRXcml0aW5nLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvUmVhZFdyaXRpbmcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMGU4YmJmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL1JlYWRXcml0aW5nLmphdmEKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcDsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuU3RlcDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5HcmFwaDsKKworLyoqCisgKiBBbiBpbnRlcmZhY2UgdGhhdCBkZWZpbmVzIGEge0BsaW5rIFN0ZXB9IGFzIG9uZSB0aGF0IGhhbmRsZXMgSU8gYmFzZWQgb3BlcmF0aW9ucyBmb3IgYSB7QGxpbmsgR3JhcGh9LgorICoKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqLworcHVibGljIGludGVyZmFjZSBSZWFkV3JpdGluZyBleHRlbmRzIENvbmZpZ3VyaW5nIHsKKworICAgIC8qKgorICAgICAqIERldGVybWluZXMgdGhlIG1vZGUgb2YgdGhlIHRoZSBJTyBvcGVyYXRpb24gYXMgYmVpbmcgZm9yIHJlYWRpbmcgb3Igd3JpdGluZyAob3IgYnkgZGVmYXVsdCAidW5zZXQiKQorICAgICAqLworICAgIHB1YmxpYyBlbnVtIE1vZGUgeworICAgICAgICBVTlNFVCwKKyAgICAgICAgUkVBRElORywKKyAgICAgICAgV1JJVElORworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldCB0aGUgZmlsZSBsb2NhdGlvbiB0byB3cml0ZSB0by4KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIGdldEZpbGUoKTsKKworICAgIHB1YmxpYyB2b2lkIHNldE1vZGUoZmluYWwgTW9kZSBtb2RlKTsKKworICAgIHB1YmxpYyBNb2RlIGdldE1vZGUoKTsKK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9TY29waW5nLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvU2NvcGluZy5qYXZhCmluZGV4IGM4NmY5MWYuLjM2ZTc0OTMgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9TY29waW5nLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL1Njb3BpbmcuamF2YQpAQCAtMTEwLDMyICsxMTAsMjQgQEAKICAgICBwdWJsaWMgZW51bSBWYXJpYWJsZSB7U1RBUlQsIEVORH0KIAogICAgIHB1YmxpYyBkZWZhdWx0IDxTPiBTIGdldFNjb3BlVmFsdWUoZmluYWwgUG9wIHBvcCwgZmluYWwgU3RyaW5nIGtleSwgZmluYWwgVHJhdmVyc2VyLkFkbWluPD8+IHRyYXZlcnNlcikgdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiB7Ci0gICAgICAgIGlmICh0cmF2ZXJzZXIuZ2V0U2lkZUVmZmVjdHMoKS5leGlzdHMoa2V5KSkKLSAgICAgICAgICAgIHJldHVybiB0cmF2ZXJzZXIuZ2V0U2lkZUVmZmVjdHMoKS5nZXQoa2V5KTsKLSAgICAgICAgLy8vCi0gICAgICAgIGZpbmFsIE9iamVjdCBvYmplY3QgPSB0cmF2ZXJzZXIuZ2V0KCk7Ci0gICAgICAgIGlmIChvYmplY3QgaW5zdGFuY2VvZiBNYXAgJiYgKChNYXA8U3RyaW5nLCBTPikgb2JqZWN0KS5jb250YWluc0tleShrZXkpKQotICAgICAgICAgICAgcmV0dXJuICgoTWFwPFN0cmluZywgUz4pIG9iamVjdCkuZ2V0KGtleSk7Ci0gICAgICAgIC8vLwotICAgICAgICBmaW5hbCBQYXRoIHBhdGggPSB0cmF2ZXJzZXIucGF0aCgpOwotICAgICAgICBpZiAocGF0aC5oYXNMYWJlbChrZXkpKQotICAgICAgICAgICAgcmV0dXJuIHBhdGguZ2V0KHBvcCwga2V5KTsKLSAgICAgICAgLy8vCi0gICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIk5laXRoZXIgdGhlIHNpZGVFZmZlY3RzLCBtYXAsIG5vciBwYXRoIGhhcyBhICIgKyBrZXkgKyAiLWtleTogIiArIHRoaXMpOworICAgICAgICBmaW5hbCBTIG8gPSBnZXROdWxsYWJsZVNjb3BlVmFsdWUocG9wLCBrZXksIHRyYXZlcnNlcik7CisgICAgICAgIGlmIChudWxsID09IG8pCisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJOZWl0aGVyIHRoZSBzaWRlRWZmZWN0cywgbWFwLCBub3IgcGF0aCBoYXMgYSAiICsga2V5ICsgIi1rZXk6ICIgKyB0aGlzKTsKKyAgICAgICAgcmV0dXJuIG87CiAgICAgfQogCiAgICAgcHVibGljIGRlZmF1bHQgPFM+IFMgZ2V0TnVsbGFibGVTY29wZVZhbHVlKGZpbmFsIFBvcCBwb3AsIGZpbmFsIFN0cmluZyBrZXksIGZpbmFsIFRyYXZlcnNlci5BZG1pbjw/PiB0cmF2ZXJzZXIpIHsKLSAgICAgICAgaWYgKHRyYXZlcnNlci5nZXRTaWRlRWZmZWN0cygpLmV4aXN0cyhrZXkpKQotICAgICAgICAgICAgcmV0dXJuIHRyYXZlcnNlci5nZXRTaWRlRWZmZWN0cygpLmdldChrZXkpOwotICAgICAgICAvLy8KICAgICAgICAgZmluYWwgT2JqZWN0IG9iamVjdCA9IHRyYXZlcnNlci5nZXQoKTsKICAgICAgICAgaWYgKG9iamVjdCBpbnN0YW5jZW9mIE1hcCAmJiAoKE1hcDxTdHJpbmcsIFM+KSBvYmplY3QpLmNvbnRhaW5zS2V5KGtleSkpCiAgICAgICAgICAgICByZXR1cm4gKChNYXA8U3RyaW5nLCBTPikgb2JqZWN0KS5nZXQoa2V5KTsKLSAgICAgICAgLy8vCisKKyAgICAgICAgaWYgKHRyYXZlcnNlci5nZXRTaWRlRWZmZWN0cygpLmV4aXN0cyhrZXkpKQorICAgICAgICAgICAgcmV0dXJuIHRyYXZlcnNlci5nZXRTaWRlRWZmZWN0cygpLmdldChrZXkpOworCiAgICAgICAgIGZpbmFsIFBhdGggcGF0aCA9IHRyYXZlcnNlci5wYXRoKCk7CiAgICAgICAgIGlmIChwYXRoLmhhc0xhYmVsKGtleSkpCiAgICAgICAgICAgICByZXR1cm4gcGF0aC5nZXQocG9wLCBrZXkpOwotICAgICAgICAvLy8KKwogICAgICAgICByZXR1cm4gbnVsbDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9icmFuY2gvUmVwZWF0U3RlcC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL2JyYW5jaC9SZXBlYXRTdGVwLmphdmEKaW5kZXggYmYyYzIwMy4uOTU1ZGFjYiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL2JyYW5jaC9SZXBlYXRTdGVwLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL2JyYW5jaC9SZXBlYXRTdGVwLmphdmEKQEAgLTQzLDYgKzQzLDcgQEAKICAgICBwcml2YXRlIFRyYXZlcnNhbC5BZG1pbjxTLCBTPiByZXBlYXRUcmF2ZXJzYWwgPSBudWxsOwogICAgIHByaXZhdGUgVHJhdmVyc2FsLkFkbWluPFMsID8+IHVudGlsVHJhdmVyc2FsID0gbnVsbDsKICAgICBwcml2YXRlIFRyYXZlcnNhbC5BZG1pbjxTLCA/PiBlbWl0VHJhdmVyc2FsID0gbnVsbDsKKyAgICBwcml2YXRlIFN0cmluZyBsb29wTmFtZSA9IG51bGw7CiAgICAgcHVibGljIGJvb2xlYW4gdW50aWxGaXJzdCA9IGZhbHNlOwogICAgIHB1YmxpYyBib29sZWFuIGVtaXRGaXJzdCA9IGZhbHNlOwogCkBAIC02OCw2ICs2OSwxMSBAQAogICAgICAgICB0aGlzLmludGVncmF0ZUNoaWxkKHRoaXMucmVwZWF0VHJhdmVyc2FsKTsKICAgICB9CiAKKworICAgIHB1YmxpYyB2b2lkIHNldExvb3BOYW1lKGZpbmFsIFN0cmluZyBsb29wTmFtZSkgeworICAgICAgICB0aGlzLmxvb3BOYW1lID0gbG9vcE5hbWU7CisgICAgfQorCiAgICAgcHVibGljIHZvaWQgc2V0VW50aWxUcmF2ZXJzYWwoZmluYWwgVHJhdmVyc2FsLkFkbWluPFMsID8+IHVudGlsVHJhdmVyc2FsKSB7CiAgICAgICAgIGlmIChudWxsICE9IHRoaXMudW50aWxUcmF2ZXJzYWwpCiAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJUaGUgcmVwZWF0KCktc3RlcCBhbHJlYWR5IGhhcyBpdHMgdW50aWwoKS1tb2R1bGF0b3IgZGVjbGFyZWQ6ICIgKyB0aGlzKTsKQEAgLTE3Miw2ICsxNzgsOCBAQAogICAgICAgICBpbnQgcmVzdWx0ID0gc3VwZXIuaGFzaENvZGUoKSBeIHRoaXMucmVwZWF0VHJhdmVyc2FsLmhhc2hDb2RlKCk7CiAgICAgICAgIHJlc3VsdCBePSBCb29sZWFuLmhhc2hDb2RlKHRoaXMudW50aWxGaXJzdCk7CiAgICAgICAgIHJlc3VsdCBePSBCb29sZWFuLmhhc2hDb2RlKHRoaXMuZW1pdEZpcnN0KSA8PCAxOworICAgICAgICBpZiAodGhpcy5sb29wTmFtZSAhPSBudWxsKQorICAgICAgICAgICAgcmVzdWx0IF49IHRoaXMubG9vcE5hbWUuaGFzaENvZGUoKTsKICAgICAgICAgaWYgKHRoaXMudW50aWxUcmF2ZXJzYWwgIT0gbnVsbCkKICAgICAgICAgICAgIHJlc3VsdCBePSB0aGlzLnVudGlsVHJhdmVyc2FsLmhhc2hDb2RlKCk7CiAgICAgICAgIGlmICh0aGlzLmVtaXRUcmF2ZXJzYWwgIT0gbnVsbCkKQEAgLTE4OSw2ICsxOTcsNyBAQAogICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcGVhdFRyYXZlcnNhbC5nZXRFbmRTdGVwKCk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGZpbmFsIFRyYXZlcnNlci5BZG1pbjxTPiBzdGFydCA9IHRoaXMuc3RhcnRzLm5leHQoKTsKKyAgICAgICAgICAgICAgICBzdGFydC5pbml0aWFsaXNlTG9vcHModGhpcy5nZXRJZCgpLCB0aGlzLmxvb3BOYW1lKTsKICAgICAgICAgICAgICAgICBpZiAoZG9VbnRpbChzdGFydCwgdHJ1ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgc3RhcnQucmVzZXRMb29wcygpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gSXRlcmF0b3JVdGlscy5vZihzdGFydCk7CkBAIC0yMTAsMTIgKzIxOSwxMiBAQAogCiAgICAgICAgIGZpbmFsIFRyYXZlcnNlci5BZG1pbjxTPiBzdGFydCA9IHRoaXMuc3RhcnRzLm5leHQoKTsKICAgICAgICAgaWYgKGRvVW50aWwoc3RhcnQsIHRydWUpKSB7Ci0gICAgICAgICAgICBzdGFydC5yZXNldExvb3BzKCk7CiAgICAgICAgICAgICBzdGFydC5zZXRTdGVwSWQodGhpcy5nZXROZXh0U3RlcCgpLmdldElkKCkpOwogICAgICAgICAgICAgc3RhcnQuYWRkTGFiZWxzKHRoaXMubGFiZWxzKTsKICAgICAgICAgICAgIHJldHVybiBJdGVyYXRvclV0aWxzLm9mKHN0YXJ0KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHN0YXJ0LnNldFN0ZXBJZCh0aGlzLnJlcGVhdFRyYXZlcnNhbC5nZXRTdGFydFN0ZXAoKS5nZXRJZCgpKTsKKyAgICAgICAgICAgIHN0YXJ0LmluaXRpYWxpc2VMb29wcyhzdGFydC5nZXRTdGVwSWQoKSwgdGhpcy5sb29wTmFtZSk7CiAgICAgICAgICAgICBpZiAoZG9FbWl0KHN0YXJ0LCB0cnVlKSkgewogICAgICAgICAgICAgICAgIGZpbmFsIFRyYXZlcnNlci5BZG1pbjxTPiBlbWl0U3BsaXQgPSBzdGFydC5zcGxpdCgpOwogICAgICAgICAgICAgICAgIGVtaXRTcGxpdC5yZXNldExvb3BzKCk7CkBAIC0yNDEsNiArMjUwLDEzIEBACiAgICAgICAgIHJldHVybiB0cmF2ZXJzYWw7CiAgICAgfQogCisgICAgcHVibGljIHN0YXRpYyA8QSwgQiwgQyBleHRlbmRzIFRyYXZlcnNhbDxBLCBCPj4gQyBhZGRSZXBlYXRUb1RyYXZlcnNhbChmaW5hbCBDIHRyYXZlcnNhbCwgZmluYWwgU3RyaW5nIGxvb3BOYW1lLCBmaW5hbCBUcmF2ZXJzYWwuQWRtaW48QiwgQj4gcmVwZWF0VHJhdmVyc2FsKSB7CisgICAgICAgIGFkZFJlcGVhdFRvVHJhdmVyc2FsKHRyYXZlcnNhbCwgcmVwZWF0VHJhdmVyc2FsKTsKKyAgICAgICAgZmluYWwgU3RlcDw/LCBCPiBzdGVwID0gdHJhdmVyc2FsLmFzQWRtaW4oKS5nZXRFbmRTdGVwKCk7CisgICAgICAgICgoUmVwZWF0U3RlcCkgc3RlcCkubG9vcE5hbWUgPSBsb29wTmFtZTsKKyAgICAgICAgcmV0dXJuIHRyYXZlcnNhbDsKKyAgICB9CisKICAgICBwdWJsaWMgc3RhdGljIDxBLCBCLCBDIGV4dGVuZHMgVHJhdmVyc2FsPEEsIEI+PiBDIGFkZFVudGlsVG9UcmF2ZXJzYWwoZmluYWwgQyB0cmF2ZXJzYWwsIGZpbmFsIFRyYXZlcnNhbC5BZG1pbjxCLCA/PiB1bnRpbFByZWRpY2F0ZSkgewogICAgICAgICBmaW5hbCBTdGVwPD8sIEI+IHN0ZXAgPSB0cmF2ZXJzYWwuYXNBZG1pbigpLmdldEVuZFN0ZXAoKTsKICAgICAgICAgaWYgKHN0ZXAgaW5zdGFuY2VvZiBSZXBlYXRTdGVwICYmIG51bGwgPT0gKChSZXBlYXRTdGVwKSBzdGVwKS51bnRpbFRyYXZlcnNhbCkgewpAQCAtMjc4LDcgKzI5NCw3IEBACiAgICAgICAgICAgICBmaW5hbCBSZXBlYXRTdGVwPFM+IHJlcGVhdFN0ZXAgPSAoUmVwZWF0U3RlcDxTPikgdGhpcy5nZXRUcmF2ZXJzYWwoKS5nZXRQYXJlbnQoKTsKICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICAgICAgZmluYWwgVHJhdmVyc2VyLkFkbWluPFM+IHN0YXJ0ID0gdGhpcy5zdGFydHMubmV4dCgpOwotICAgICAgICAgICAgICAgIHN0YXJ0LmluY3JMb29wcyh0aGlzLmdldElkKCkpOworICAgICAgICAgICAgICAgIHN0YXJ0LmluY3JMb29wcygpOwogICAgICAgICAgICAgICAgIGlmIChyZXBlYXRTdGVwLmRvVW50aWwoc3RhcnQsIGZhbHNlKSkgewogICAgICAgICAgICAgICAgICAgICBzdGFydC5yZXNldExvb3BzKCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRvclV0aWxzLm9mKHN0YXJ0KTsKQEAgLTMwMCw3ICszMTYsNyBAQAogICAgICAgICBwcm90ZWN0ZWQgSXRlcmF0b3I8VHJhdmVyc2VyLkFkbWluPFM+PiBjb21wdXRlckFsZ29yaXRobSgpIHRocm93cyBOb1N1Y2hFbGVtZW50RXhjZXB0aW9uIHsKICAgICAgICAgICAgIGZpbmFsIFJlcGVhdFN0ZXA8Uz4gcmVwZWF0U3RlcCA9IChSZXBlYXRTdGVwPFM+KSB0aGlzLmdldFRyYXZlcnNhbCgpLmdldFBhcmVudCgpOwogICAgICAgICAgICAgZmluYWwgVHJhdmVyc2VyLkFkbWluPFM+IHN0YXJ0ID0gdGhpcy5zdGFydHMubmV4dCgpOwotICAgICAgICAgICAgc3RhcnQuaW5jckxvb3BzKHJlcGVhdFN0ZXAuZ2V0SWQoKSk7CisgICAgICAgICAgICBzdGFydC5pbmNyTG9vcHMoKTsKICAgICAgICAgICAgIGlmIChyZXBlYXRTdGVwLmRvVW50aWwoc3RhcnQsIGZhbHNlKSkgewogICAgICAgICAgICAgICAgIHN0YXJ0LnJlc2V0TG9vcHMoKTsKICAgICAgICAgICAgICAgICBzdGFydC5zZXRTdGVwSWQocmVwZWF0U3RlcC5nZXROZXh0U3RlcCgpLmdldElkKCkpOwpAQCAtMzIwLDQgKzMzNiw0IEBACiAgICAgICAgIH0KICAgICB9CiAKLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvZmlsdGVyL0FuZFN0ZXAuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9maWx0ZXIvQW5kU3RlcC5qYXZhCmluZGV4IDVkOWQxMjQuLjVjMjBjZDggMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9maWx0ZXIvQW5kU3RlcC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9maWx0ZXIvQW5kU3RlcC5qYXZhCkBAIC0zOSw0ICszOSw0IEBACiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9maWx0ZXIvRHJvcFN0ZXAuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9maWx0ZXIvRHJvcFN0ZXAuamF2YQppbmRleCBjZDk1ZTQ4Li45N2QwNzA5IDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvZmlsdGVyL0Ryb3BTdGVwLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL2ZpbHRlci9Ecm9wU3RlcC5qYXZhCkBAIC0yMSw2ICsyMSw3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLk11dGF0aW5nOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLlBhcmFtZXRlcnM7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuZXZlbnQuQ2FsbGJhY2tSZWdpc3RyeTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5ldmVudC5FdmVudDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5ldmVudC5MaXN0Q2FsbGJhY2tSZWdpc3RyeTsKQEAgLTM2LDcgKzM3LDcgQEAKICAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQogICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQogICovCi1wdWJsaWMgZmluYWwgY2xhc3MgRHJvcFN0ZXA8Uz4gZXh0ZW5kcyBGaWx0ZXJTdGVwPFM+IGltcGxlbWVudHMgTXV0YXRpbmc8RXZlbnQ+IHsKK3B1YmxpYyBjbGFzcyBEcm9wU3RlcDxTPiBleHRlbmRzIEZpbHRlclN0ZXA8Uz4gaW1wbGVtZW50cyBNdXRhdGluZzxFdmVudD4gewogCiAgICAgcHJpdmF0ZSBDYWxsYmFja1JlZ2lzdHJ5PEV2ZW50PiBjYWxsYmFja1JlZ2lzdHJ5OwogCkBAIC05NCw3ICs5NSwxMyBAQAogICAgIC8qKgogICAgICAqIFRoaXMgbWV0aG9kIGRvZXNuJ3QgZG8gYW55dGhpbmcgYXMge0Bjb2RlIGRyb3AoKX0gZG9lc24ndCB0YWtlIHByb3BlcnR5IG11dGF0aW9uIGFyZ3VtZW50cy4KICAgICAgKi8KLSAgICBwdWJsaWMgdm9pZCBhZGRQcm9wZXJ0eU11dGF0aW9ucyhmaW5hbCBPYmplY3QuLi4ga2V5VmFsdWVzKSB7CisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgY29uZmlndXJlKGZpbmFsIE9iamVjdC4uLiBrZXlWYWx1ZXMpIHsKICAgICAgICAgLy8gZG8gbm90aGluZwogICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBQYXJhbWV0ZXJzIGdldFBhcmFtZXRlcnMoKSB7CisgICAgICAgIHJldHVybiBQYXJhbWV0ZXJzLkVNUFRZOworICAgIH0KIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvQWRkRWRnZVN0YXJ0U3RlcC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9BZGRFZGdlU3RhcnRTdGVwLmphdmEKaW5kZXggMzM2OWQzNy4uZjM3NzU2ZSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9BZGRFZGdlU3RhcnRTdGVwLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9BZGRFZGdlU3RhcnRTdGVwLmphdmEKQEAgLTE5LDcgKzE5LDYgQEAKIAogcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwOwogCi1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QYXJhbWV0ZXJpemluZzsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlN0ZXA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzZXI7CkBAIC01MSw4ICs1MCw4IEBACiAvKioKICAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQogICovCi1wdWJsaWMgZmluYWwgY2xhc3MgQWRkRWRnZVN0YXJ0U3RlcCBleHRlbmRzIEFic3RyYWN0U3RlcDxFZGdlLCBFZGdlPgotICAgICAgICBpbXBsZW1lbnRzIE11dGF0aW5nPEV2ZW50LkVkZ2VBZGRlZEV2ZW50PiwgVHJhdmVyc2FsUGFyZW50LCBQYXJhbWV0ZXJpemluZywgU2NvcGluZywgRnJvbVRvTW9kdWxhdGluZyB7CitwdWJsaWMgY2xhc3MgQWRkRWRnZVN0YXJ0U3RlcCBleHRlbmRzIEFic3RyYWN0U3RlcDxFZGdlLCBFZGdlPgorICAgICAgICBpbXBsZW1lbnRzIE11dGF0aW5nPEV2ZW50LkVkZ2VBZGRlZEV2ZW50PiwgVHJhdmVyc2FsUGFyZW50LCBTY29waW5nLCBGcm9tVG9Nb2R1bGF0aW5nIHsKIAogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBGUk9NID0gR3JhcGguSGlkZGVuLmhpZGUoImZyb20iKTsKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVE8gPSBHcmFwaC5IaWRkZW4uaGlkZSgidG8iKTsKQEAgLTg3LDcgKzg2LDcgQEAKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgdm9pZCBhZGRQcm9wZXJ0eU11dGF0aW9ucyhmaW5hbCBPYmplY3QuLi4ga2V5VmFsdWVzKSB7CisgICAgcHVibGljIHZvaWQgY29uZmlndXJlKGZpbmFsIE9iamVjdC4uLiBrZXlWYWx1ZXMpIHsKICAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLnNldCh0aGlzLCBrZXlWYWx1ZXMpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9BZGRFZGdlU3RlcC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9BZGRFZGdlU3RlcC5qYXZhCmluZGV4IDgxYWZkMDMuLmFhMzgxOGIgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvQWRkRWRnZVN0ZXAuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL0FkZEVkZ2VTdGVwLmphdmEKQEAgLTE4LDcgKzE4LDYgQEAKICAqLwogcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwOwogCi1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QYXJhbWV0ZXJpemluZzsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuRnJvbVRvTW9kdWxhdGluZzsKQEAgLTM3LDcgKzM2LDYgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXg7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5BdHRhY2hhYmxlOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuU3RyaW5nRmFjdG9yeTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLmRldGFjaGVkLkRldGFjaGVkRmFjdG9yeTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLmVtcHR5LkVtcHR5R3JhcGg7CiAKIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsKQEAgLTQ3LDggKzQ1LDggQEAKICAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQogICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQogICovCi1wdWJsaWMgZmluYWwgY2xhc3MgQWRkRWRnZVN0ZXA8Uz4gZXh0ZW5kcyBNYXBTdGVwPFMsIEVkZ2U+Ci0gICAgICAgIGltcGxlbWVudHMgTXV0YXRpbmc8RXZlbnQuRWRnZUFkZGVkRXZlbnQ+LCBUcmF2ZXJzYWxQYXJlbnQsIFBhcmFtZXRlcml6aW5nLCBTY29waW5nLCBGcm9tVG9Nb2R1bGF0aW5nIHsKK3B1YmxpYyBjbGFzcyBBZGRFZGdlU3RlcDxTPiBleHRlbmRzIE1hcFN0ZXA8UywgRWRnZT4KKyAgICAgICAgaW1wbGVtZW50cyBNdXRhdGluZzxFdmVudC5FZGdlQWRkZWRFdmVudD4sIFRyYXZlcnNhbFBhcmVudCwgU2NvcGluZywgRnJvbVRvTW9kdWxhdGluZyB7CiAKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgRlJPTSA9IEdyYXBoLkhpZGRlbi5oaWRlKCJmcm9tIik7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRPID0gR3JhcGguSGlkZGVuLmhpZGUoInRvIik7CkBAIC04Miw3ICs4MCw3IEBACiAgICAgfQogCiAgICAgQE92ZXJyaWRlCi0gICAgcHVibGljIHZvaWQgYWRkUHJvcGVydHlNdXRhdGlvbnMoZmluYWwgT2JqZWN0Li4uIGtleVZhbHVlcykgeworICAgIHB1YmxpYyB2b2lkIGNvbmZpZ3VyZShmaW5hbCBPYmplY3QuLi4ga2V5VmFsdWVzKSB7CiAgICAgICAgIHRoaXMucGFyYW1ldGVycy5zZXQodGhpcywga2V5VmFsdWVzKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvQWRkVmVydGV4U3RhcnRTdGVwLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL0FkZFZlcnRleFN0YXJ0U3RlcC5qYXZhCmluZGV4IDkyMGZhNDUuLjM0OTNlYzcgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvQWRkVmVydGV4U3RhcnRTdGVwLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9BZGRWZXJ0ZXhTdGFydFN0ZXAuamF2YQpAQCAtMTgsNyArMTgsNiBAQAogICovCiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXA7CiAKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlBhcmFtZXRlcml6aW5nOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuU3RlcDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNlcjsKQEAgLTM3LDcgKzM2LDYgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5UOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLlN0cmluZ0ZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5kZXRhY2hlZC5EZXRhY2hlZEZhY3Rvcnk7CiAKIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsKIGltcG9ydCBqYXZhLnV0aWwuU2V0OwpAQCAtNDYsOCArNDQsOCBAQAogICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCiAgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCiAgKi8KLXB1YmxpYyBmaW5hbCBjbGFzcyBBZGRWZXJ0ZXhTdGFydFN0ZXAgZXh0ZW5kcyBBYnN0cmFjdFN0ZXA8VmVydGV4LCBWZXJ0ZXg+Ci0gICAgICAgIGltcGxlbWVudHMgTXV0YXRpbmc8RXZlbnQuVmVydGV4QWRkZWRFdmVudD4sIFRyYXZlcnNhbFBhcmVudCwgUGFyYW1ldGVyaXppbmcsIFNjb3BpbmcgeworcHVibGljIGNsYXNzIEFkZFZlcnRleFN0YXJ0U3RlcCBleHRlbmRzIEFic3RyYWN0U3RlcDxWZXJ0ZXgsIFZlcnRleD4KKyAgICAgICAgaW1wbGVtZW50cyBNdXRhdGluZzxFdmVudC5WZXJ0ZXhBZGRlZEV2ZW50PiwgVHJhdmVyc2FsUGFyZW50LCBTY29waW5nIHsKIAogICAgIHByaXZhdGUgUGFyYW1ldGVycyBwYXJhbWV0ZXJzID0gbmV3IFBhcmFtZXRlcnMoKTsKICAgICBwcml2YXRlIGJvb2xlYW4gZmlyc3QgPSB0cnVlOwpAQCAtNzksNyArNzcsNyBAQAogICAgIH0KIAogICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lkIGFkZFByb3BlcnR5TXV0YXRpb25zKGZpbmFsIE9iamVjdC4uLiBrZXlWYWx1ZXMpIHsKKyAgICBwdWJsaWMgdm9pZCBjb25maWd1cmUoZmluYWwgT2JqZWN0Li4uIGtleVZhbHVlcykgewogICAgICAgICB0aGlzLnBhcmFtZXRlcnMuc2V0KHRoaXMsIGtleVZhbHVlcyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL0FkZFZlcnRleFN0ZXAuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvQWRkVmVydGV4U3RlcC5qYXZhCmluZGV4IDEzZTJmYzguLjE2NzUxMGEgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvQWRkVmVydGV4U3RlcC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvQWRkVmVydGV4U3RlcC5qYXZhCkBAIC0xOCw3ICsxOCw2IEBACiAgKi8KIHBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcDsKIAotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUGFyYW1ldGVyaXppbmc7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLk11dGF0aW5nOwpAQCAtMzMsNyArMzIsNiBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlQ7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuU3RyaW5nRmFjdG9yeTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLmRldGFjaGVkLkRldGFjaGVkRmFjdG9yeTsKIAogaW1wb3J0IGphdmEudXRpbC5MaXN0OwogaW1wb3J0IGphdmEudXRpbC5TZXQ7CkBAIC00Miw4ICs0MCw4IEBACiAgKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKICAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKICAqLwotcHVibGljIGZpbmFsIGNsYXNzIEFkZFZlcnRleFN0ZXA8Uz4gZXh0ZW5kcyBNYXBTdGVwPFMsIFZlcnRleD4KLSAgICAgICAgaW1wbGVtZW50cyBNdXRhdGluZzxFdmVudC5WZXJ0ZXhBZGRlZEV2ZW50PiwgVHJhdmVyc2FsUGFyZW50LCBQYXJhbWV0ZXJpemluZywgU2NvcGluZyB7CitwdWJsaWMgY2xhc3MgQWRkVmVydGV4U3RlcDxTPiBleHRlbmRzIE1hcFN0ZXA8UywgVmVydGV4PgorICAgICAgICBpbXBsZW1lbnRzIE11dGF0aW5nPEV2ZW50LlZlcnRleEFkZGVkRXZlbnQ+LCBUcmF2ZXJzYWxQYXJlbnQsIFNjb3BpbmcgewogCiAgICAgcHJpdmF0ZSBQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBuZXcgUGFyYW1ldGVycygpOwogICAgIHByaXZhdGUgQ2FsbGJhY2tSZWdpc3RyeTxFdmVudC5WZXJ0ZXhBZGRlZEV2ZW50PiBjYWxsYmFja1JlZ2lzdHJ5OwpAQCAtNzQsNyArNzIsNyBAQAogICAgIH0KIAogICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lkIGFkZFByb3BlcnR5TXV0YXRpb25zKGZpbmFsIE9iamVjdC4uLiBrZXlWYWx1ZXMpIHsKKyAgICBwdWJsaWMgdm9pZCBjb25maWd1cmUoZmluYWwgT2JqZWN0Li4uIGtleVZhbHVlcykgewogICAgICAgICB0aGlzLnBhcmFtZXRlcnMuc2V0KHRoaXMsIGtleVZhbHVlcyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL0NvbnN0YW50U3RlcC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9Db25zdGFudFN0ZXAuamF2YQppbmRleCA1ZDAyZTI4Li43NDlkZTMxIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL0NvbnN0YW50U3RlcC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvQ29uc3RhbnRTdGVwLmphdmEKQEAgLTM2LDYgKzM2LDEwIEBACiAgICAgICAgIHRoaXMuY29uc3RhbnQgPSBjb25zdGFudDsKICAgICB9CiAKKyAgICBwdWJsaWMgRSBnZXRDb25zdGFudCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuY29uc3RhbnQ7CisgICAgfQorCiAgICAgQE92ZXJyaWRlCiAgICAgcHJvdGVjdGVkIEUgbWFwKGZpbmFsIFRyYXZlcnNlci5BZG1pbjxTPiB0cmF2ZXJzZXIpIHsKICAgICAgICAgcmV0dXJuIHRoaXMuY29uc3RhbnQ7CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL0VkZ2VPdGhlclZlcnRleFN0ZXAuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvRWRnZU90aGVyVmVydGV4U3RlcC5qYXZhCmluZGV4IDNhNWE3M2IuLmE1M2RkNTAgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvRWRnZU90aGVyVmVydGV4U3RlcC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvRWRnZU90aGVyVmVydGV4U3RlcC5qYXZhCkBAIC0yMCw2ICsyMCw4IEBACiAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuQ29uZmlndXJpbmc7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuUGFyYW1ldGVyczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci5UcmF2ZXJzZXJSZXF1aXJlbWVudDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5FZGdlOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleDsKQEAgLTMyLDcgKzM0LDggQEAKIC8qKgogICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCiAgKi8KLXB1YmxpYyBjbGFzcyBFZGdlT3RoZXJWZXJ0ZXhTdGVwIGV4dGVuZHMgTWFwU3RlcDxFZGdlLCBWZXJ0ZXg+IHsKK3B1YmxpYyBjbGFzcyBFZGdlT3RoZXJWZXJ0ZXhTdGVwIGV4dGVuZHMgTWFwU3RlcDxFZGdlLCBWZXJ0ZXg+IGltcGxlbWVudHMgQ29uZmlndXJpbmcgeworICAgIHByb3RlY3RlZCBQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBuZXcgUGFyYW1ldGVycygpOwogCiAgICAgcHVibGljIEVkZ2VPdGhlclZlcnRleFN0ZXAoZmluYWwgVHJhdmVyc2FsLkFkbWluIHRyYXZlcnNhbCkgewogICAgICAgICBzdXBlcih0cmF2ZXJzYWwpOwpAQCAtNTIsNiArNTUsMTYgQEAKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKCkgeworICAgICAgICByZXR1cm4gdGhpcy5wYXJhbWV0ZXJzOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIGNvbmZpZ3VyZShmaW5hbCBPYmplY3QuLi4ga2V5VmFsdWVzKSB7CisgICAgICAgIHRoaXMucGFyYW1ldGVycy5zZXQobnVsbCwga2V5VmFsdWVzKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgU2V0PFRyYXZlcnNlclJlcXVpcmVtZW50PiBnZXRSZXF1aXJlbWVudHMoKSB7CiAgICAgICAgIHJldHVybiBDb2xsZWN0aW9ucy5zaW5nbGV0b24oVHJhdmVyc2VyUmVxdWlyZW1lbnQuUEFUSCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9FZGdlVmVydGV4U3RlcC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9FZGdlVmVydGV4U3RlcC5qYXZhCmluZGV4IDhiZWY4MzUuLmMxNWM1MmEgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvRWRnZVZlcnRleFN0ZXAuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL0VkZ2VWZXJ0ZXhTdGVwLmphdmEKQEAgLTIwLDYgKzIwLDggQEAKIAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2VyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5Db25maWd1cmluZzsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5QYXJhbWV0ZXJzOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyLlRyYXZlcnNlclJlcXVpcmVtZW50OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkRpcmVjdGlvbjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5FZGdlOwpAQCAtMzMsOCArMzUsOSBAQAogLyoqCiAgKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKICAqLwotcHVibGljIGNsYXNzIEVkZ2VWZXJ0ZXhTdGVwIGV4dGVuZHMgRmxhdE1hcFN0ZXA8RWRnZSwgVmVydGV4PiBpbXBsZW1lbnRzIEF1dG9DbG9zZWFibGUgeworcHVibGljIGNsYXNzIEVkZ2VWZXJ0ZXhTdGVwIGV4dGVuZHMgRmxhdE1hcFN0ZXA8RWRnZSwgVmVydGV4PiBpbXBsZW1lbnRzIEF1dG9DbG9zZWFibGUsIENvbmZpZ3VyaW5nIHsKIAorICAgIHByb3RlY3RlZCBQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBuZXcgUGFyYW1ldGVycygpOwogICAgIHByb3RlY3RlZCBEaXJlY3Rpb24gZGlyZWN0aW9uOwogCiAgICAgcHVibGljIEVkZ2VWZXJ0ZXhTdGVwKGZpbmFsIFRyYXZlcnNhbC5BZG1pbiB0cmF2ZXJzYWwsIGZpbmFsIERpcmVjdGlvbiBkaXJlY3Rpb24pIHsKQEAgLTQzLDYgKzQ2LDE2IEBACiAgICAgfQogCiAgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVycygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucGFyYW1ldGVyczsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBjb25maWd1cmUoZmluYWwgT2JqZWN0Li4uIGtleVZhbHVlcykgeworICAgICAgICB0aGlzLnBhcmFtZXRlcnMuc2V0KG51bGwsIGtleVZhbHVlcyk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCiAgICAgcHJvdGVjdGVkIEl0ZXJhdG9yPFZlcnRleD4gZmxhdE1hcChmaW5hbCBUcmF2ZXJzZXIuQWRtaW48RWRnZT4gdHJhdmVyc2VyKSB7CiAgICAgICAgIHJldHVybiB0cmF2ZXJzZXIuZ2V0KCkudmVydGljZXModGhpcy5kaXJlY3Rpb24pOwogICAgIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvRWxlbWVudE1hcFN0ZXAuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvRWxlbWVudE1hcFN0ZXAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZjFkYjQzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9FbGVtZW50TWFwU3RlcC5qYXZhCkBAIC0wLDAgKzEsMTI1IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcDsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2VyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5HcmFwaENvbXB1dGluZzsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuVHJhdmVyc2FsUGFyZW50OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyLlRyYXZlcnNlclJlcXVpcmVtZW50OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkRpcmVjdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5FZGdlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkVsZW1lbnQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuUHJvcGVydHk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4UHJvcGVydHk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5TdHJpbmdGYWN0b3J5OworCitpbXBvcnQgamF2YS51dGlsLkFycmF5czsKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLkxpbmtlZEhhc2hNYXA7CitpbXBvcnQgamF2YS51dGlsLk1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuU2V0OworCisvKioKKyAqIENvbnZlcnRzIGEge0BsaW5rIEVsZW1lbnR9IHRvIGEge0Bjb2RlIE1hcH0uCisgKgorICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCisgKiBAYXV0aG9yIERhbmllbCBLdXBwaXR6IChodHRwOi8vZ3JlbWxpbi5ndXJ1KQorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgY2xhc3MgRWxlbWVudE1hcFN0ZXA8SyxFPiBleHRlbmRzIE1hcFN0ZXA8RWxlbWVudCwgTWFwPEssIEU+PiBpbXBsZW1lbnRzIFRyYXZlcnNhbFBhcmVudCwgR3JhcGhDb21wdXRpbmcgeworCisgICAgcHJvdGVjdGVkIGZpbmFsIFN0cmluZ1tdIHByb3BlcnR5S2V5czsKKyAgICBwcml2YXRlIGJvb2xlYW4gb25HcmFwaENvbXB1dGVyID0gZmFsc2U7CisKKyAgICBwdWJsaWMgRWxlbWVudE1hcFN0ZXAoZmluYWwgVHJhdmVyc2FsLkFkbWluIHRyYXZlcnNhbCwgZmluYWwgU3RyaW5nLi4uIHByb3BlcnR5S2V5cykgeworICAgICAgICBzdXBlcih0cmF2ZXJzYWwpOworICAgICAgICB0aGlzLnByb3BlcnR5S2V5cyA9IHByb3BlcnR5S2V5czsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgTWFwPEssIEU+IG1hcChmaW5hbCBUcmF2ZXJzZXIuQWRtaW48RWxlbWVudD4gdHJhdmVyc2VyKSB7CisgICAgICAgIGZpbmFsIE1hcDxPYmplY3QsIE9iamVjdD4gbWFwID0gbmV3IExpbmtlZEhhc2hNYXA8PigpOworICAgICAgICBmaW5hbCBFbGVtZW50IGVsZW1lbnQgPSB0cmF2ZXJzZXIuZ2V0KCk7CisgICAgICAgIG1hcC5wdXQoVC5pZCwgZWxlbWVudC5pZCgpKTsKKyAgICAgICAgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBWZXJ0ZXhQcm9wZXJ0eSkgeworICAgICAgICAgICAgbWFwLnB1dChULmtleSwgKChWZXJ0ZXhQcm9wZXJ0eTw/PikgZWxlbWVudCkua2V5KCkpOworICAgICAgICAgICAgbWFwLnB1dChULnZhbHVlLCAoKFZlcnRleFByb3BlcnR5PD8+KSBlbGVtZW50KS52YWx1ZSgpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1hcC5wdXQoVC5sYWJlbCwgZWxlbWVudC5sYWJlbCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChlbGVtZW50IGluc3RhbmNlb2YgRWRnZSkgeworICAgICAgICAgICAgZmluYWwgRWRnZSBlID0gKEVkZ2UpIGVsZW1lbnQ7CisgICAgICAgICAgICBtYXAucHV0KERpcmVjdGlvbi5JTiwgZ2V0VmVydGV4U3RydWN0dXJlKGUuaW5WZXJ0ZXgoKSkpOworICAgICAgICAgICAgbWFwLnB1dChEaXJlY3Rpb24uT1VULCBnZXRWZXJ0ZXhTdHJ1Y3R1cmUoZS5vdXRWZXJ0ZXgoKSkpOworICAgICAgICB9CisKKyAgICAgICAgZmluYWwgSXRlcmF0b3I8PyBleHRlbmRzIFByb3BlcnR5PiBwcm9wZXJ0aWVzID0gZWxlbWVudC5wcm9wZXJ0aWVzKHRoaXMucHJvcGVydHlLZXlzKTsKKyAgICAgICAgd2hpbGUgKHByb3BlcnRpZXMuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICBmaW5hbCBQcm9wZXJ0eTw/PiBwcm9wZXJ0eSA9IHByb3BlcnRpZXMubmV4dCgpOworICAgICAgICAgICAgbWFwLnB1dChwcm9wZXJ0eS5rZXkoKSwgcHJvcGVydHkudmFsdWUoKSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gKE1hcCkgbWFwOworICAgIH0KKworICAgIHByb3RlY3RlZCBNYXA8T2JqZWN0LCBPYmplY3Q+IGdldFZlcnRleFN0cnVjdHVyZShmaW5hbCBWZXJ0ZXggdikgeworICAgICAgICBmaW5hbCBNYXA8T2JqZWN0LCBPYmplY3Q+IG0gPSBuZXcgTGlua2VkSGFzaE1hcDw+KCk7CisgICAgICAgIG0ucHV0KFQuaWQsIHYuaWQoKSk7CisKKyAgICAgICAgLy8gY2FuJ3QgYWRkIGxhYmVsIGlmIGRvaW5nIEdyYXBoQ29tcHV0ZXIgc3R1ZmYgYXMgdGhlcmUgaXMgbm8gYWNjZXNzIHRvIHRoZSBsYWJlbCBvZiB0aGUgYWRqYWNlbnQgdmVydGV4CisgICAgICAgIGlmICghb25HcmFwaENvbXB1dGVyKSBtLnB1dChULmxhYmVsLCB2LmxhYmVsKCkpOworCisgICAgICAgIHJldHVybiBtOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIG9uR3JhcGhDb21wdXRlcigpIHsKKyAgICAgICAgdGhpcy5vbkdyYXBoQ29tcHV0ZXIgPSB0cnVlOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGlzT25HcmFwaENvbXB1dGVyKCkgeworICAgICAgICByZXR1cm4gb25HcmFwaENvbXB1dGVyOworICAgIH0KKworICAgIHB1YmxpYyBTdHJpbmdbXSBnZXRQcm9wZXJ0eUtleXMoKSB7CisgICAgICAgIHJldHVybiBwcm9wZXJ0eUtleXM7CisgICAgfQorCisgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgcmV0dXJuIFN0cmluZ0ZhY3Rvcnkuc3RlcFN0cmluZyh0aGlzLCBBcnJheXMuYXNMaXN0KHRoaXMucHJvcGVydHlLZXlzKSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKKyAgICAgICAgaW50IHJlc3VsdCA9IHN1cGVyLmhhc2hDb2RlKCk7CisgICAgICAgIGZvciAoZmluYWwgU3RyaW5nIHByb3BlcnR5S2V5IDogdGhpcy5wcm9wZXJ0eUtleXMpIHsKKyAgICAgICAgICAgIHJlc3VsdCBePSBwcm9wZXJ0eUtleS5oYXNoQ29kZSgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFNldDxUcmF2ZXJzZXJSZXF1aXJlbWVudD4gZ2V0UmVxdWlyZW1lbnRzKCkgeworICAgICAgICByZXR1cm4gdGhpcy5nZXRTZWxmQW5kQ2hpbGRSZXF1aXJlbWVudHMoVHJhdmVyc2VyUmVxdWlyZW1lbnQuT0JKRUNUKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL0dyYXBoU3RlcC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9HcmFwaFN0ZXAuamF2YQppbmRleCA2OGQ1ZWM0Li5hYTNhMjlmIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL0dyYXBoU3RlcC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvR3JhcGhTdGVwLmphdmEKQEAgLTI0LDkgKzI0LDExIEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5TdGVwOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2VyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5Db25maWd1cmluZzsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuR3JhcGhDb21wdXRpbmc7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuQWJzdHJhY3RTdGVwOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLkhhc0NvbnRhaW5lcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5QYXJhbWV0ZXJzOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5GYXN0Tm9TdWNoRWxlbWVudEV4Y2VwdGlvbjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5FZGdlOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkVsZW1lbnQ7CkBAIC00Niw4ICs0OCw5IEBACiAgKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKICAqIEBhdXRob3IgUGlldGVyIE1hcnRpbgogICovCi1wdWJsaWMgY2xhc3MgR3JhcGhTdGVwPFMsIEUgZXh0ZW5kcyBFbGVtZW50PiBleHRlbmRzIEFic3RyYWN0U3RlcDxTLCBFPiBpbXBsZW1lbnRzIEdyYXBoQ29tcHV0aW5nLCBBdXRvQ2xvc2VhYmxlIHsKK3B1YmxpYyBjbGFzcyBHcmFwaFN0ZXA8UywgRSBleHRlbmRzIEVsZW1lbnQ+IGV4dGVuZHMgQWJzdHJhY3RTdGVwPFMsIEU+IGltcGxlbWVudHMgR3JhcGhDb21wdXRpbmcsIEF1dG9DbG9zZWFibGUsIENvbmZpZ3VyaW5nIHsKIAorICAgIHByb3RlY3RlZCBQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBuZXcgUGFyYW1ldGVycygpOwogICAgIHByb3RlY3RlZCBmaW5hbCBDbGFzczxFPiByZXR1cm5DbGFzczsKICAgICBwcm90ZWN0ZWQgT2JqZWN0W10gaWRzOwogICAgIHByb3RlY3RlZCB0cmFuc2llbnQgU3VwcGxpZXI8SXRlcmF0b3I8RT4+IGl0ZXJhdG9yU3VwcGxpZXI7CkBAIC03MSw2ICs3NCwxNiBAQAogICAgICAgICByZXR1cm4gU3RyaW5nRmFjdG9yeS5zdGVwU3RyaW5nKHRoaXMsIHRoaXMucmV0dXJuQ2xhc3MuZ2V0U2ltcGxlTmFtZSgpLnRvTG93ZXJDYXNlKCksIEFycmF5cy50b1N0cmluZyh0aGlzLmlkcykpOwogICAgIH0KIAorICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBQYXJhbWV0ZXJzIGdldFBhcmFtZXRlcnMoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnBhcmFtZXRlcnM7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgY29uZmlndXJlKGZpbmFsIE9iamVjdC4uLiBrZXlWYWx1ZXMpIHsKKyAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLnNldChudWxsLCBrZXlWYWx1ZXMpOworICAgIH0KKwogICAgIHB1YmxpYyBDbGFzczxFPiBnZXRSZXR1cm5DbGFzcygpIHsKICAgICAgICAgcmV0dXJuIHRoaXMucmV0dXJuQ2xhc3M7CiAgICAgfQpAQCAtODAsNyArOTMsNyBAQAogICAgIH0KIAogICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc1N0YXJ0U3RlcChmaW5hbCBTdGVwPD8sID8+IHN0ZXApIHsKLSAgICAgICAgcmV0dXJuIHN0ZXAgaW5zdGFuY2VvZiBHcmFwaFN0ZXAgJiYgKChHcmFwaFN0ZXApIHN0ZXApLmlzU3RhcnRTdGVwKCk7CisgICAgICAgIHJldHVybiBzdGVwIGluc3RhbmNlb2YgR3JhcGhTdGVwICYmICgoR3JhcGhTdGVwKSBzdGVwKS5pc1N0YXJ0OwogICAgIH0KIAogICAgIHB1YmxpYyBib29sZWFuIHJldHVybnNWZXJ0ZXgoKSB7CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL0luZGV4U3RlcC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9JbmRleFN0ZXAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTAzYzE1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9JbmRleFN0ZXAuamF2YQpAQCAtMCwwICsxLDExOCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXA7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuQ29uZmlndXJpbmc7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLlRyYXZlcnNhbFBhcmVudDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5QYXJhbWV0ZXJzOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLldpdGhPcHRpb25zOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyLlRyYXZlcnNlclJlcXVpcmVtZW50OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udXRpbC5pdGVyYXRvci5JdGVyYXRvclV0aWxzOworCitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLkxpbmtlZEhhc2hNYXA7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgamF2YS51dGlsLk1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuU2V0OworaW1wb3J0IGphdmEudXRpbC5mdW5jdGlvbi5GdW5jdGlvbjsKKworLyoqCisgKiBAYXV0aG9yIERhbmllbCBLdXBwaXR6IChodHRwOi8vZ3JlbWxpbi5ndXJ1KQorICovCitwdWJsaWMgY2xhc3MgSW5kZXhTdGVwPFMsIEU+IGV4dGVuZHMgTWFwU3RlcDxTLCBFPiBpbXBsZW1lbnRzIFRyYXZlcnNhbFBhcmVudCwgQ29uZmlndXJpbmcgeworCisgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIElOVkFMSURfQ09ORklHVVJBVElPTl9FWENFUFRJT04gPQorICAgICAgICAgICAgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiV2l0aE9wdGlvbnMuaW5kZXhlciByZXF1aXJlcyBhIHNpbmdsZSBJbnRlZ2VyIGFyZ3VtZW50IChwb3NzaWJsZSAiICsgIiIgKworICAgICAgICAgICAgICAgICAgICAidmFsdWVzIGFyZTogV2l0aE9wdGlvbnMuW2xpc3R8bWFwXSkiKTsKKworICAgIHByaXZhdGUgZmluYWwgUGFyYW1ldGVycyBwYXJhbWV0ZXJzID0gbmV3IFBhcmFtZXRlcnMoKTsKKworICAgIHByaXZhdGUgRnVuY3Rpb248SXRlcmF0b3IsIE9iamVjdD4gaW5kZXhlcjsKKworICAgIHB1YmxpYyBJbmRleFN0ZXAoZmluYWwgVHJhdmVyc2FsLkFkbWluIHRyYXZlcnNhbCkgeworICAgICAgICBzdXBlcih0cmF2ZXJzYWwpOworICAgICAgICB0aGlzLmNvbmZpZ3VyZShXaXRoT3B0aW9ucy5pbmRleGVyLCBXaXRoT3B0aW9ucy5saXN0KTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgRSBtYXAoZmluYWwgVHJhdmVyc2VyLkFkbWluPFM+IHRyYXZlcnNlcikgeworICAgICAgICAvL25vaW5zcGVjdGlvbiB1bmNoZWNrZWQKKyAgICAgICAgcmV0dXJuIChFKSBpbmRleGVyLmFwcGx5KEl0ZXJhdG9yVXRpbHMuYXNJdGVyYXRvcih0cmF2ZXJzZXIuZ2V0KCkpKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgeworICAgICAgICByZXR1cm4gc3VwZXIuaGFzaENvZGUoKSBeIHRoaXMuaW5kZXhlci5oYXNoQ29kZSgpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIExpc3Q8TGlzdDxPYmplY3Q+PiBpbmRleGVkTGlzdChmaW5hbCBJdGVyYXRvciBpdGVyYXRvcikgeworICAgICAgICBmaW5hbCBMaXN0PExpc3Q8T2JqZWN0Pj4gbGlzdCA9IG5ldyBBcnJheUxpc3Q8PigpOworICAgICAgICBpbnQgaSA9IDA7CisgICAgICAgIHdoaWxlIChpdGVyYXRvci5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgIGxpc3QuYWRkKEFycmF5cy5hc0xpc3QoaXRlcmF0b3IubmV4dCgpLCBpKyspKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gQ29sbGVjdGlvbnMudW5tb2RpZmlhYmxlTGlzdChsaXN0KTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBNYXA8SW50ZWdlciwgT2JqZWN0PiBpbmRleGVkTWFwKGZpbmFsIEl0ZXJhdG9yIGl0ZXJhdG9yKSB7CisgICAgICAgIGZpbmFsIE1hcDxJbnRlZ2VyLCBPYmplY3Q+IG1hcCA9IG5ldyBMaW5rZWRIYXNoTWFwPD4oKTsKKyAgICAgICAgaW50IGkgPSAwOworICAgICAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICBtYXAucHV0KGkrKywgaXRlcmF0b3IubmV4dCgpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gQ29sbGVjdGlvbnMudW5tb2RpZmlhYmxlTWFwKG1hcCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFNldDxUcmF2ZXJzZXJSZXF1aXJlbWVudD4gZ2V0UmVxdWlyZW1lbnRzKCkgeworICAgICAgICByZXR1cm4gQ29sbGVjdGlvbnMuc2luZ2xldG9uKFRyYXZlcnNlclJlcXVpcmVtZW50Lk9CSkVDVCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgY29uZmlndXJlKGZpbmFsIE9iamVjdC4uLiBrZXlWYWx1ZXMpIHsKKyAgICAgICAgZmluYWwgSW50ZWdlciBpbmRleGVyOworICAgICAgICBpZiAoa2V5VmFsdWVzWzBdLmVxdWFscyhXaXRoT3B0aW9ucy5pbmRleGVyKSkgeworICAgICAgICAgICAgaWYgKGtleVZhbHVlcy5sZW5ndGggPT0gMiAmJiBrZXlWYWx1ZXNbMV0gaW5zdGFuY2VvZiBJbnRlZ2VyKSB7CisgICAgICAgICAgICAgICAgaW5kZXhlciA9IChJbnRlZ2VyKSBrZXlWYWx1ZXNbMV07CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRocm93IElOVkFMSURfQ09ORklHVVJBVElPTl9FWENFUFRJT047CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaW5kZXhlciA9PSBXaXRoT3B0aW9ucy5saXN0KSB7CisgICAgICAgICAgICAgICAgdGhpcy5pbmRleGVyID0gSW5kZXhTdGVwOjppbmRleGVkTGlzdDsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5kZXhlciA9PSBXaXRoT3B0aW9ucy5tYXApIHsKKyAgICAgICAgICAgICAgICB0aGlzLmluZGV4ZXIgPSBJbmRleFN0ZXA6OmluZGV4ZWRNYXA7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRocm93IElOVkFMSURfQ09ORklHVVJBVElPTl9FWENFUFRJT047CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aGlzLnBhcmFtZXRlcnMuc2V0KHRoaXMsIGtleVZhbHVlcyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKCkgeworICAgICAgICByZXR1cm4gcGFyYW1ldGVyczsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvTGFtYmRhQ29sbGVjdGluZ0JhcnJpZXJTdGVwLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL0xhbWJkYUNvbGxlY3RpbmdCYXJyaWVyU3RlcC5qYXZhCmluZGV4IDliNTAwZDQuLmVmNDFiNjEgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvTGFtYmRhQ29sbGVjdGluZ0JhcnJpZXJTdGVwLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9MYW1iZGFDb2xsZWN0aW5nQmFycmllclN0ZXAuamF2YQpAQCAtMzIsMTkgKzMyLDYgQEAKICAqLwogcHVibGljIGZpbmFsIGNsYXNzIExhbWJkYUNvbGxlY3RpbmdCYXJyaWVyU3RlcDxTPiBleHRlbmRzIENvbGxlY3RpbmdCYXJyaWVyU3RlcDxTPiBpbXBsZW1lbnRzIExhbWJkYUhvbGRlciB7CiAKLSAgICAvKioKLSAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuMi4wLCByZXBsYWNlZCBieSB1c2Ugb2Yge0BsaW5rIE5vT3BCYXJyaWVyU3RlcH0uCi0gICAgICovCi0gICAgQERlcHJlY2F0ZWQKLSAgICBwdWJsaWMgZW51bSBDb25zdW1lcnMgaW1wbGVtZW50cyBDb25zdW1lcjxUcmF2ZXJzZXJTZXQ8T2JqZWN0Pj4gewotICAgICAgICBub09wIHsKLSAgICAgICAgICAgIEBPdmVycmlkZQotICAgICAgICAgICAgcHVibGljIHZvaWQgYWNjZXB0KGZpbmFsIFRyYXZlcnNlclNldDxPYmplY3Q+IHRyYXZlcnNlclNldCkgewotCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICBwcml2YXRlIGZpbmFsIENvbnN1bWVyPFRyYXZlcnNlclNldDxTPj4gYmFycmllckNvbnN1bWVyOwogCiAgICAgcHVibGljIExhbWJkYUNvbGxlY3RpbmdCYXJyaWVyU3RlcChmaW5hbCBUcmF2ZXJzYWwuQWRtaW4gdHJhdmVyc2FsLCBmaW5hbCBDb25zdW1lcjxUcmF2ZXJzZXJTZXQ8Uz4+IGJhcnJpZXJDb25zdW1lciwgZmluYWwgaW50IG1heEJhcnJpZXJTaXplKSB7CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL0xvb3BzU3RlcC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9Mb29wc1N0ZXAuamF2YQppbmRleCAyZGI5YWI5Li4xMWQ4NzI5IDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL0xvb3BzU3RlcC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvTG9vcHNTdGVwLmphdmEKQEAgLTI2LDEyICsyNiwzNCBAQAogICovCiBwdWJsaWMgZmluYWwgY2xhc3MgTG9vcHNTdGVwPFM+IGV4dGVuZHMgTWFwU3RlcDxTLCBJbnRlZ2VyPiB7CiAKLSAgICBwdWJsaWMgTG9vcHNTdGVwKGZpbmFsIFRyYXZlcnNhbC5BZG1pbiB0cmF2ZXJzYWwpIHsKKyAgICBwcml2YXRlIFN0cmluZyBsb29wTmFtZTsKKworICAgIHB1YmxpYyBMb29wc1N0ZXAoZmluYWwgVHJhdmVyc2FsLkFkbWluIHRyYXZlcnNhbCwgZmluYWwgU3RyaW5nIGxvb3BOYW1lKSB7CiAgICAgICAgIHN1cGVyKHRyYXZlcnNhbCk7CisgICAgICAgIHRoaXMubG9vcE5hbWUgPSBsb29wTmFtZTsKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKICAgICBwcm90ZWN0ZWQgSW50ZWdlciBtYXAoZmluYWwgVHJhdmVyc2VyLkFkbWluPFM+IHRyYXZlcnNlcikgewotICAgICAgICByZXR1cm4gdHJhdmVyc2VyLmxvb3BzKCk7CisgICAgICAgIHJldHVybiB0cmF2ZXJzZXIubG9vcHModGhpcy5sb29wTmFtZSk7CiAgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKGZpbmFsIE9iamVjdCBvKSB7CisgICAgICAgIGlmICh0aGlzID09IG8pIHJldHVybiB0cnVlOworICAgICAgICBpZiAoIShvIGluc3RhbmNlb2YgTG9vcHNTdGVwKSkgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIXN1cGVyLmVxdWFscyhvKSkgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGZpbmFsIExvb3BzU3RlcDw/PiBsb29wc1N0ZXAgPSAoTG9vcHNTdGVwPD8+KSBvOworCisgICAgICAgIHJldHVybiBsb29wTmFtZSAhPSBudWxsID8gbG9vcE5hbWUuZXF1YWxzKGxvb3BzU3RlcC5sb29wTmFtZSkgOiBsb29wc1N0ZXAubG9vcE5hbWUgPT0gbnVsbDsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgeworICAgICAgICBpbnQgcmVzdWx0ID0gc3VwZXIuaGFzaENvZGUoKTsKKyAgICAgICAgcmVzdWx0ID0gMzEgKiByZXN1bHQgKyAobG9vcE5hbWUgIT0gbnVsbCA/IGxvb3BOYW1lLmhhc2hDb2RlKCkgOiAwKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvTWF0Y2hTdGVwLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL01hdGNoU3RlcC5qYXZhCmluZGV4IDkwMGQzNTYuLjlhZDcxMzIgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvTWF0Y2hTdGVwLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9NYXRjaFN0ZXAuamF2YQpAQCAtMjAsMTAgKzIwLDggQEAKIAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUGF0aDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlBvcDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlNjb3BlOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuU3RlcDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbEVuZ2luZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuQmFycmllcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuUGF0aFByb2Nlc3NvcjsKQEAgLTIzNiw3ICsyMzQsNyBAQAogCiAgICAgcHVibGljIE1hdGNoQWxnb3JpdGhtIGdldE1hdGNoQWxnb3JpdGhtKCkgewogICAgICAgICBpZiAobnVsbCA9PSB0aGlzLm1hdGNoQWxnb3JpdGhtKQotICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplTWF0Y2hBbGdvcml0aG0odGhpcy50cmF2ZXJzZXJTdGVwSWRBbmRMYWJlbHNTZXRCeUNoaWxkID8gVHJhdmVyc2FsRW5naW5lLlR5cGUuQ09NUFVURVIgOiBUcmF2ZXJzYWxFbmdpbmUuVHlwZS5TVEFOREFSRCk7CisgICAgICAgICAgICB0aGlzLmluaXRpYWxpemVNYXRjaEFsZ29yaXRobSh0aGlzLnRyYXZlcnNlclN0ZXBJZEFuZExhYmVsc1NldEJ5Q2hpbGQpOwogICAgICAgICByZXR1cm4gdGhpcy5tYXRjaEFsZ29yaXRobTsKICAgICB9CiAKQEAgLTMyNCwxMyArMzIyLDEzIEBACiAgICAgICAgIHJldHVybiBiaW5kaW5nczsKICAgICB9CiAKLSAgICBwcml2YXRlIHZvaWQgaW5pdGlhbGl6ZU1hdGNoQWxnb3JpdGhtKGZpbmFsIFRyYXZlcnNhbEVuZ2luZS5UeXBlIHRyYXZlcnNhbEVuZ2luZVR5cGUpIHsKKyAgICBwcml2YXRlIHZvaWQgaW5pdGlhbGl6ZU1hdGNoQWxnb3JpdGhtKGZpbmFsIGJvb2xlYW4gb25Db21wdXRlcikgewogICAgICAgICB0cnkgewogICAgICAgICAgICAgdGhpcy5tYXRjaEFsZ29yaXRobSA9IHRoaXMubWF0Y2hBbGdvcml0aG1DbGFzcy5nZXRDb25zdHJ1Y3RvcigpLm5ld0luc3RhbmNlKCk7CiAgICAgICAgIH0gY2F0Y2ggKGZpbmFsIE5vU3VjaE1ldGhvZEV4Y2VwdGlvbiB8IElsbGVnYWxBY2Nlc3NFeGNlcHRpb24gfCBJbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uIHwgSW5zdGFudGlhdGlvbkV4Y2VwdGlvbiBlKSB7CiAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKGUuZ2V0TWVzc2FnZSgpLCBlKTsKICAgICAgICAgfQotICAgICAgICB0aGlzLm1hdGNoQWxnb3JpdGhtLmluaXRpYWxpemUodHJhdmVyc2FsRW5naW5lVHlwZSwgdGhpcy5tYXRjaFRyYXZlcnNhbHMpOworICAgICAgICB0aGlzLm1hdGNoQWxnb3JpdGhtLmluaXRpYWxpemUob25Db21wdXRlciwgdGhpcy5tYXRjaFRyYXZlcnNhbHMpOwogICAgIH0KIAogICAgIHByaXZhdGUgYm9vbGVhbiBoYXNQYXRoTGFiZWwoZmluYWwgUGF0aCBwYXRoLCBmaW5hbCBTZXQ8U3RyaW5nPiBsYWJlbHMpIHsKQEAgLTM2Miw3ICszNjAsNyBAQAogICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAgaWYgKHRoaXMuZmlyc3QpIHsKICAgICAgICAgICAgICAgICB0aGlzLmZpcnN0ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplTWF0Y2hBbGdvcml0aG0oVHJhdmVyc2FsRW5naW5lLlR5cGUuU1RBTkRBUkQpOworICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZU1hdGNoQWxnb3JpdGhtKGZhbHNlKTsKICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSB0aGlzLmtlZXBMYWJlbHMgJiYKICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMua2VlcExhYmVscy5jb250YWluc0FsbCh0aGlzLm1hdGNoRW5kTGFiZWxzKSAmJgogICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5rZWVwTGFiZWxzLmNvbnRhaW5zQWxsKHRoaXMubWF0Y2hTdGFydExhYmVscykpCkBAIC00MTYsNyArNDE0LDcgQEAKICAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgIGlmICh0aGlzLmZpcnN0KSB7CiAgICAgICAgICAgICAgICAgdGhpcy5maXJzdCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZU1hdGNoQWxnb3JpdGhtKFRyYXZlcnNhbEVuZ2luZS5UeXBlLkNPTVBVVEVSKTsKKyAgICAgICAgICAgICAgICB0aGlzLmluaXRpYWxpemVNYXRjaEFsZ29yaXRobSh0cnVlKTsKICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSB0aGlzLmtlZXBMYWJlbHMgJiYKICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMua2VlcExhYmVscy5jb250YWluc0FsbCh0aGlzLm1hdGNoRW5kTGFiZWxzKSAmJgogICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5rZWVwTGFiZWxzLmNvbnRhaW5zQWxsKHRoaXMubWF0Y2hTdGFydExhYmVscykpCkBAIC03MDQsNyArNzAyLDcgQEAKICAgICAgICAgcHVibGljIHN0YXRpYyBGdW5jdGlvbjxMaXN0PFRyYXZlcnNhbC5BZG1pbjxPYmplY3QsIE9iamVjdD4+LCBJbGxlZ2FsU3RhdGVFeGNlcHRpb24+IFVOTUFUQ0hBQkxFX1BBVFRFUk4gPSB0cmF2ZXJzYWxzIC0+IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIlRoZSBwcm92aWRlZCBtYXRjaCBwYXR0ZXJuIGlzIHVuc29sdmFibGU6ICIgKyB0cmF2ZXJzYWxzKTsKIAogCi0gICAgICAgIHB1YmxpYyB2b2lkIGluaXRpYWxpemUoZmluYWwgVHJhdmVyc2FsRW5naW5lLlR5cGUgdHJhdmVyc2FsRW5naW5lVHlwZSwgZmluYWwgTGlzdDxUcmF2ZXJzYWwuQWRtaW48T2JqZWN0LCBPYmplY3Q+PiB0cmF2ZXJzYWxzKTsKKyAgICAgICAgcHVibGljIHZvaWQgaW5pdGlhbGl6ZShmaW5hbCBib29sZWFuIG9uQ29tcHV0ZXIsIGZpbmFsIExpc3Q8VHJhdmVyc2FsLkFkbWluPE9iamVjdCwgT2JqZWN0Pj4gdHJhdmVyc2Fscyk7CiAKICAgICAgICAgcHVibGljIGRlZmF1bHQgdm9pZCByZWNvcmRTdGFydChmaW5hbCBUcmF2ZXJzZXIuQWRtaW48T2JqZWN0PiB0cmF2ZXJzZXIsIGZpbmFsIFRyYXZlcnNhbC5BZG1pbjxPYmplY3QsIE9iamVjdD4gdHJhdmVyc2FsKSB7CiAKQEAgLTcyMCw3ICs3MTgsNyBAQAogICAgICAgICBwcml2YXRlIExpc3Q8VHJhdmVyc2FsLkFkbWluPE9iamVjdCwgT2JqZWN0Pj4gdHJhdmVyc2FsczsKIAogICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIHZvaWQgaW5pdGlhbGl6ZShmaW5hbCBUcmF2ZXJzYWxFbmdpbmUuVHlwZSB0cmF2ZXJzYWxFbmdpbmVUeXBlLCBmaW5hbCBMaXN0PFRyYXZlcnNhbC5BZG1pbjxPYmplY3QsIE9iamVjdD4+IHRyYXZlcnNhbHMpIHsKKyAgICAgICAgcHVibGljIHZvaWQgaW5pdGlhbGl6ZShmaW5hbCBib29sZWFuIG9uQ29tcHV0ZXIsIGZpbmFsIExpc3Q8VHJhdmVyc2FsLkFkbWluPE9iamVjdCwgT2JqZWN0Pj4gdHJhdmVyc2FscykgewogICAgICAgICAgICAgdGhpcy50cmF2ZXJzYWxzID0gdHJhdmVyc2FsczsKICAgICAgICAgfQogCkBAIC03NDAsOCArNzM4LDggQEAKICAgICAgICAgcHJvdGVjdGVkIGludCBjb3VudGVyID0gMDsKICAgICAgICAgcHJvdGVjdGVkIGJvb2xlYW4gb25Db21wdXRlcjsKIAotICAgICAgICBwdWJsaWMgdm9pZCBpbml0aWFsaXplKGZpbmFsIFRyYXZlcnNhbEVuZ2luZS5UeXBlIHRyYXZlcnNhbEVuZ2luZVR5cGUsIGZpbmFsIExpc3Q8VHJhdmVyc2FsLkFkbWluPE9iamVjdCwgT2JqZWN0Pj4gdHJhdmVyc2FscykgewotICAgICAgICAgICAgdGhpcy5vbkNvbXB1dGVyID0gdHJhdmVyc2FsRW5naW5lVHlwZS5lcXVhbHMoVHJhdmVyc2FsRW5naW5lLlR5cGUuQ09NUFVURVIpOworICAgICAgICBwdWJsaWMgdm9pZCBpbml0aWFsaXplKGZpbmFsIGJvb2xlYW4gb25Db21wdXRlciwgZmluYWwgTGlzdDxUcmF2ZXJzYWwuQWRtaW48T2JqZWN0LCBPYmplY3Q+PiB0cmF2ZXJzYWxzKSB7CisgICAgICAgICAgICB0aGlzLm9uQ29tcHV0ZXIgPSBvbkNvbXB1dGVyOwogICAgICAgICAgICAgdGhpcy5idW5kbGVzID0gdHJhdmVyc2Fscy5zdHJlYW0oKS5tYXAoQnVuZGxlOjpuZXcpLmNvbGxlY3QoQ29sbGVjdG9ycy50b0xpc3QoKSk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9NYXRoU3RlcC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9NYXRoU3RlcC5qYXZhCmluZGV4IDA5OTQ0MTEuLjdhNDgzYTEgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvTWF0aFN0ZXAuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL01hdGhTdGVwLmphdmEKQEAgLTM3LDYgKzM3LDcgQEAKIGltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKIGltcG9ydCBqYXZhLnV0aWwuTGlua2VkSGFzaFNldDsKIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuT2JqZWN0czsKIGltcG9ydCBqYXZhLnV0aWwuU2V0OwogaW1wb3J0IGphdmEudXRpbC5yZWdleC5NYXRjaGVyOwogaW1wb3J0IGphdmEudXRpbC5yZWdleC5QYXR0ZXJuOwpAQCAtNjcsMTAgKzY4LDE5IEBACiAgICAgcHJvdGVjdGVkIERvdWJsZSBtYXAoZmluYWwgVHJhdmVyc2VyLkFkbWluPFM+IHRyYXZlcnNlcikgewogICAgICAgICBmaW5hbCBFeHByZXNzaW9uIGxvY2FsRXhwcmVzc2lvbiA9IG5ldyBFeHByZXNzaW9uKHRoaXMuZXhwcmVzc2lvbi5nZXRFeHByZXNzaW9uKCkpOwogICAgICAgICBmb3IgKGZpbmFsIFN0cmluZyB2YXIgOiB0aGlzLmV4cHJlc3Npb24uZ2V0VmFyaWFibGVzKCkpIHsKLSAgICAgICAgICAgIGxvY2FsRXhwcmVzc2lvbi5zZXRWYXJpYWJsZSh2YXIsCi0gICAgICAgICAgICAgICAgICAgIHZhci5lcXVhbHMoQ1VSUkVOVCkgPwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYXZlcnNhbFV0aWwuYXBwbHlOdWxsYWJsZSh0cmF2ZXJzZXIsIHRoaXMudHJhdmVyc2FsUmluZy5uZXh0KCkpLmRvdWJsZVZhbHVlKCkgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYXZlcnNhbFV0aWwuYXBwbHlOdWxsYWJsZSgoUykgdGhpcy5nZXROdWxsYWJsZVNjb3BlVmFsdWUoUG9wLmxhc3QsIHZhciwgdHJhdmVyc2VyKSwgdGhpcy50cmF2ZXJzYWxSaW5nLm5leHQoKSkuZG91YmxlVmFsdWUoKSk7CisgICAgICAgICAgICBmaW5hbCBPYmplY3QgbyA9IHZhci5lcXVhbHMoQ1VSUkVOVCkgPworICAgICAgICAgICAgICAgICAgICBUcmF2ZXJzYWxVdGlsLmFwcGx5TnVsbGFibGUodHJhdmVyc2VyLCB0aGlzLnRyYXZlcnNhbFJpbmcubmV4dCgpKSA6CisgICAgICAgICAgICAgICAgICAgIFRyYXZlcnNhbFV0aWwuYXBwbHlOdWxsYWJsZSgoUykgdGhpcy5nZXROdWxsYWJsZVNjb3BlVmFsdWUoUG9wLmxhc3QsIHZhciwgdHJhdmVyc2VyKSwgdGhpcy50cmF2ZXJzYWxSaW5nLm5leHQoKSk7CisKKyAgICAgICAgICAgIC8vIGl0J3MgcG9zc2libGUgZm9yIEVsZW1lbnRWYWx1ZVRyYXZlcnNhbCB0byByZXR1cm4gbnVsbCBvciBzb21ldGhpbmcgdGhhdCBpcyBwb3NzaWJseSBub3QgYSBOdW1iZXIuCisgICAgICAgICAgICAvLyB3b3J0aCBhIGNoZWNrIHRvIHRyeSB0byByZXR1cm4gYSBuaWNlIGVycm9yIG1lc3NhZ2UuIFRoZSBUcmF2ZXJzYWxSaW5nPFMsIE51bWJlcj4gaXMgYSBiaXQgb3B0aW1pc3RpYworICAgICAgICAgICAgLy8gZ2l2ZW4gdHlwZSBlcmFzdXJlLiBJdCBjb3VsZCBlYXNpbHkgZW5kIHVwIG90aGVyd2lzZS4KKyAgICAgICAgICAgIGlmICghKG8gaW5zdGFuY2VvZiBOdW1iZXIpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oU3RyaW5nLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgdmFyaWFibGUgJXMgZm9yIG1hdGgoKSBzdGVwIG11c3QgcmVzb2x2ZSB0byBhIE51bWJlciAtIGl0IGlzIGluc3RlYWQgb2YgdHlwZSAlcyB3aXRoIHZhbHVlICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciwgT2JqZWN0cy5pc051bGwobykgPyAibnVsbCIgOiBvLmdldENsYXNzKCkuZ2V0TmFtZSgpLCBvKSk7CisKKyAgICAgICAgICAgIGxvY2FsRXhwcmVzc2lvbi5zZXRWYXJpYWJsZSh2YXIsICgoTnVtYmVyKSBvKS5kb3VibGVWYWx1ZSgpKTsKICAgICAgICAgfQogICAgICAgICB0aGlzLnRyYXZlcnNhbFJpbmcucmVzZXQoKTsKICAgICAgICAgcmV0dXJuIGxvY2FsRXhwcmVzc2lvbi5ldmFsdWF0ZSgpOwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9NYXhHbG9iYWxTdGVwLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL01heEdsb2JhbFN0ZXAuamF2YQppbmRleCA5NTRkYmZlLi4yODczZjU1IDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL01heEdsb2JhbFN0ZXAuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL01heEdsb2JhbFN0ZXAuamF2YQpAQCAtMzIsNyArMzIsNyBAQAogLyoqCiAgKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKICAqLwotcHVibGljIGZpbmFsIGNsYXNzIE1heEdsb2JhbFN0ZXA8UyBleHRlbmRzIE51bWJlcj4gZXh0ZW5kcyBSZWR1Y2luZ0JhcnJpZXJTdGVwPFMsIFM+IHsKK3B1YmxpYyBmaW5hbCBjbGFzcyBNYXhHbG9iYWxTdGVwPFMgZXh0ZW5kcyBDb21wYXJhYmxlPiBleHRlbmRzIFJlZHVjaW5nQmFycmllclN0ZXA8UywgUz4gewogCiAgICAgcHVibGljIE1heEdsb2JhbFN0ZXAoZmluYWwgVHJhdmVyc2FsLkFkbWluIHRyYXZlcnNhbCkgewogICAgICAgICBzdXBlcih0cmF2ZXJzYWwpOwpAQCAtNDEsNyArNDEsMTMgQEAKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgUyBwcm9qZWN0VHJhdmVyc2VyKFRyYXZlcnNlci5BZG1pbjxTPiB0cmF2ZXJzZXIpIHsKKyAgICBwdWJsaWMgdm9pZCBwcm9jZXNzQWxsU3RhcnRzKCkgeworICAgICAgICBpZiAodGhpcy5zdGFydHMuaGFzTmV4dCgpKQorICAgICAgICAgICAgc3VwZXIucHJvY2Vzc0FsbFN0YXJ0cygpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBTIHByb2plY3RUcmF2ZXJzZXIoZmluYWwgVHJhdmVyc2VyLkFkbWluPFM+IHRyYXZlcnNlcikgewogICAgICAgICByZXR1cm4gdHJhdmVyc2VyLmdldCgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9NYXhMb2NhbFN0ZXAuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvTWF4TG9jYWxTdGVwLmphdmEKaW5kZXggMmJhY2EyOC4uM2FkMzI2ZiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9NYXhMb2NhbFN0ZXAuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL01heExvY2FsU3RlcC5qYXZhCkBAIC0yMSw2ICsyMSw3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuVHJhdmVyc2VyUmVxdWlyZW1lbnQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLkZhc3ROb1N1Y2hFbGVtZW50RXhjZXB0aW9uOwogCiBpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOwogaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKQEAgLTMyLDcgKzMzLDcgQEAKICAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQogICogQGF1dGhvciBEYW5pZWwgS3VwcGl0eiAoaHR0cDovL2dyZW1saW4uZ3VydSkKICAqLwotcHVibGljIGZpbmFsIGNsYXNzIE1heExvY2FsU3RlcDxFIGV4dGVuZHMgTnVtYmVyLCBTIGV4dGVuZHMgSXRlcmFibGU8RT4+IGV4dGVuZHMgTWFwU3RlcDxTLCBFPiB7CitwdWJsaWMgZmluYWwgY2xhc3MgTWF4TG9jYWxTdGVwPEUgZXh0ZW5kcyBDb21wYXJhYmxlLCBTIGV4dGVuZHMgSXRlcmFibGU8RT4+IGV4dGVuZHMgTWFwU3RlcDxTLCBFPiB7CiAKICAgICBwdWJsaWMgTWF4TG9jYWxTdGVwKGZpbmFsIFRyYXZlcnNhbC5BZG1pbiB0cmF2ZXJzYWwpIHsKICAgICAgICAgc3VwZXIodHJhdmVyc2FsKTsKQEAgLTQwLDE3ICs0MSwxNSBAQAogCiAgICAgQE92ZXJyaWRlCiAgICAgcHJvdGVjdGVkIEUgbWFwKGZpbmFsIFRyYXZlcnNlci5BZG1pbjxTPiB0cmF2ZXJzZXIpIHsKLSAgICAgICAgTnVtYmVyIHJlc3VsdDsKICAgICAgICAgZmluYWwgSXRlcmF0b3I8RT4gaXRlcmF0b3IgPSB0cmF2ZXJzZXIuZ2V0KCkuaXRlcmF0b3IoKTsKICAgICAgICAgaWYgKGl0ZXJhdG9yLmhhc05leHQoKSkgewotICAgICAgICAgICAgcmVzdWx0ID0gaXRlcmF0b3IubmV4dCgpOworICAgICAgICAgICAgQ29tcGFyYWJsZSByZXN1bHQgPSBpdGVyYXRvci5uZXh0KCk7CiAgICAgICAgICAgICB3aGlsZSAoaXRlcmF0b3IuaGFzTmV4dCgpKSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbWF4KGl0ZXJhdG9yLm5leHQoKSwgcmVzdWx0KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IERvdWJsZS5OYU47CisgICAgICAgICAgICByZXR1cm4gKEUpIHJlc3VsdDsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gKEUpIHJlc3VsdDsKKyAgICAgICAgdGhyb3cgRmFzdE5vU3VjaEVsZW1lbnRFeGNlcHRpb24uaW5zdGFuY2UoKTsKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvTWVhbkdsb2JhbFN0ZXAuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvTWVhbkdsb2JhbFN0ZXAuamF2YQppbmRleCAyZjFjMWRjLi41ZTkwMzM2IDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL01lYW5HbG9iYWxTdGVwLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9NZWFuR2xvYmFsU3RlcC5qYXZhCkBAIC00OSw2ICs0OSwxMiBAQAogICAgIH0KIAogICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIHByb2Nlc3NBbGxTdGFydHMoKSB7CisgICAgICAgIGlmICh0aGlzLnN0YXJ0cy5oYXNOZXh0KCkpCisgICAgICAgICAgICBzdXBlci5wcm9jZXNzQWxsU3RhcnRzKCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIEUgcHJvamVjdFRyYXZlcnNlcihmaW5hbCBUcmF2ZXJzZXIuQWRtaW48Uz4gdHJhdmVyc2VyKSB7CiAgICAgICAgIHJldHVybiAoRSkgbmV3IE1lYW5OdW1iZXIodHJhdmVyc2VyLmdldCgpLCB0cmF2ZXJzZXIuYnVsaygpKTsKICAgICB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL01lYW5Mb2NhbFN0ZXAuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvTWVhbkxvY2FsU3RlcC5qYXZhCmluZGV4IDk5MDA1YzkuLjkxNDQ3ZmQgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvTWVhbkxvY2FsU3RlcC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvTWVhbkxvY2FsU3RlcC5qYXZhCkBAIC0yMiw2ICsyMiw3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuVHJhdmVyc2VyUmVxdWlyZW1lbnQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLkZhc3ROb1N1Y2hFbGVtZW50RXhjZXB0aW9uOwogCiBpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOwogaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKQEAgLTQ4LDkgKzQ5LDggQEAKICAgICAgICAgICAgICAgICBjb3VudGVyKys7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gTnVtYmVySGVscGVyLmRpdihyZXN1bHQsIGNvdW50ZXIsIHRydWUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIERvdWJsZS5OYU47CiAgICAgICAgIH0KKyAgICAgICAgdGhyb3cgRmFzdE5vU3VjaEVsZW1lbnRFeGNlcHRpb24uaW5zdGFuY2UoKTsKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvTWluR2xvYmFsU3RlcC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9NaW5HbG9iYWxTdGVwLmphdmEKaW5kZXggN2QwZWI1Ni4uNzgxZTkzZCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9NaW5HbG9iYWxTdGVwLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9NaW5HbG9iYWxTdGVwLmphdmEKQEAgLTMyLDcgKzMyLDcgQEAKIC8qKgogICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCiAgKi8KLXB1YmxpYyBmaW5hbCBjbGFzcyBNaW5HbG9iYWxTdGVwPFMgZXh0ZW5kcyBOdW1iZXI+IGV4dGVuZHMgUmVkdWNpbmdCYXJyaWVyU3RlcDxTLCBTPiB7CitwdWJsaWMgZmluYWwgY2xhc3MgTWluR2xvYmFsU3RlcDxTIGV4dGVuZHMgQ29tcGFyYWJsZT4gZXh0ZW5kcyBSZWR1Y2luZ0JhcnJpZXJTdGVwPFMsIFM+IHsKIAogICAgIHB1YmxpYyBNaW5HbG9iYWxTdGVwKGZpbmFsIFRyYXZlcnNhbC5BZG1pbiB0cmF2ZXJzYWwpIHsKICAgICAgICAgc3VwZXIodHJhdmVyc2FsKTsKQEAgLTQxLDYgKzQxLDEyIEBACiAgICAgfQogCiAgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgcHJvY2Vzc0FsbFN0YXJ0cygpIHsKKyAgICAgICAgaWYgKHRoaXMuc3RhcnRzLmhhc05leHQoKSkKKyAgICAgICAgICAgIHN1cGVyLnByb2Nlc3NBbGxTdGFydHMoKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgUyBwcm9qZWN0VHJhdmVyc2VyKGZpbmFsIFRyYXZlcnNlci5BZG1pbjxTPiB0cmF2ZXJzZXIpIHsKICAgICAgICAgcmV0dXJuIHRyYXZlcnNlci5nZXQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL01pbkxvY2FsU3RlcC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9NaW5Mb2NhbFN0ZXAuamF2YQppbmRleCBlN2UwMDFjLi40MTM5YTdkIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL01pbkxvY2FsU3RlcC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvTWluTG9jYWxTdGVwLmphdmEKQEAgLTIxLDYgKzIxLDcgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci5UcmF2ZXJzZXJSZXF1aXJlbWVudDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuRmFzdE5vU3VjaEVsZW1lbnRFeGNlcHRpb247CiAKIGltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7CiBpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwpAQCAtMzIsNyArMzMsNyBAQAogICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCiAgKiBAYXV0aG9yIERhbmllbCBLdXBwaXR6IChodHRwOi8vZ3JlbWxpbi5ndXJ1KQogICovCi1wdWJsaWMgZmluYWwgY2xhc3MgTWluTG9jYWxTdGVwPEUgZXh0ZW5kcyBOdW1iZXIsIFMgZXh0ZW5kcyBJdGVyYWJsZTxFPj4gZXh0ZW5kcyBNYXBTdGVwPFMsIEU+IHsKK3B1YmxpYyBmaW5hbCBjbGFzcyBNaW5Mb2NhbFN0ZXA8RSBleHRlbmRzIENvbXBhcmFibGUsIFMgZXh0ZW5kcyBJdGVyYWJsZTxFPj4gZXh0ZW5kcyBNYXBTdGVwPFMsIEU+IHsKIAogICAgIHB1YmxpYyBNaW5Mb2NhbFN0ZXAoZmluYWwgVHJhdmVyc2FsLkFkbWluIHRyYXZlcnNhbCkgewogICAgICAgICBzdXBlcih0cmF2ZXJzYWwpOwpAQCAtNDAsMTcgKzQxLDE1IEBACiAKICAgICBAT3ZlcnJpZGUKICAgICBwcm90ZWN0ZWQgRSBtYXAoZmluYWwgVHJhdmVyc2VyLkFkbWluPFM+IHRyYXZlcnNlcikgewotICAgICAgICBOdW1iZXIgcmVzdWx0OwogICAgICAgICBmaW5hbCBJdGVyYXRvcjxFPiBpdGVyYXRvciA9IHRyYXZlcnNlci5nZXQoKS5pdGVyYXRvcigpOwogICAgICAgICBpZiAoaXRlcmF0b3IuaGFzTmV4dCgpKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBpdGVyYXRvci5uZXh0KCk7CisgICAgICAgICAgICBDb21wYXJhYmxlIHJlc3VsdCA9IGl0ZXJhdG9yLm5leHQoKTsKICAgICAgICAgICAgIHdoaWxlIChpdGVyYXRvci5oYXNOZXh0KCkpIHsKICAgICAgICAgICAgICAgICByZXN1bHQgPSBtaW4oaXRlcmF0b3IubmV4dCgpLCByZXN1bHQpOwogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmVzdWx0ID0gRG91YmxlLk5hTjsKKyAgICAgICAgICAgIHJldHVybiAoRSkgcmVzdWx0OwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiAoRSkgcmVzdWx0OworICAgICAgICB0aHJvdyBGYXN0Tm9TdWNoRWxlbWVudEV4Y2VwdGlvbi5pbnN0YW5jZSgpOwogICAgIH0KIAogICAgIEBPdmVycmlkZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9Qcm9wZXJ0aWVzU3RlcC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9Qcm9wZXJ0aWVzU3RlcC5qYXZhCmluZGV4IGNiZmM0NzUuLjdjYzE5M2EgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvUHJvcGVydGllc1N0ZXAuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1Byb3BlcnRpZXNTdGVwLmphdmEKQEAgLTIwLDYgKzIwLDggQEAKIAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2VyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5Db25maWd1cmluZzsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5QYXJhbWV0ZXJzOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyLlRyYXZlcnNlclJlcXVpcmVtZW50OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkVsZW1lbnQ7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuUHJvcGVydHlUeXBlOwpAQCAtMzMsOCArMzUsOSBAQAogLyoqCiAgKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKICAqLwotcHVibGljIGNsYXNzIFByb3BlcnRpZXNTdGVwPEU+IGV4dGVuZHMgRmxhdE1hcFN0ZXA8RWxlbWVudCwgRT4gaW1wbGVtZW50cyBBdXRvQ2xvc2VhYmxlIHsKK3B1YmxpYyBjbGFzcyBQcm9wZXJ0aWVzU3RlcDxFPiBleHRlbmRzIEZsYXRNYXBTdGVwPEVsZW1lbnQsIEU+IGltcGxlbWVudHMgQXV0b0Nsb3NlYWJsZSwgQ29uZmlndXJpbmcgewogCisgICAgcHJvdGVjdGVkIFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IG5ldyBQYXJhbWV0ZXJzKCk7CiAgICAgcHJvdGVjdGVkIGZpbmFsIFN0cmluZ1tdIHByb3BlcnR5S2V5czsKICAgICBwcm90ZWN0ZWQgZmluYWwgUHJvcGVydHlUeXBlIHJldHVyblR5cGU7CiAKQEAgLTQ1LDYgKzQ4LDE2IEBACiAgICAgfQogCiAgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVycygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucGFyYW1ldGVyczsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBjb25maWd1cmUoZmluYWwgT2JqZWN0Li4uIGtleVZhbHVlcykgeworICAgICAgICB0aGlzLnBhcmFtZXRlcnMuc2V0KG51bGwsIGtleVZhbHVlcyk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCiAgICAgcHJvdGVjdGVkIEl0ZXJhdG9yPEU+IGZsYXRNYXAoZmluYWwgVHJhdmVyc2VyLkFkbWluPEVsZW1lbnQ+IHRyYXZlcnNlcikgewogICAgICAgICByZXR1cm4gdGhpcy5yZXR1cm5UeXBlLmVxdWFscyhQcm9wZXJ0eVR5cGUuVkFMVUUpID8KICAgICAgICAgICAgICAgICB0cmF2ZXJzZXIuZ2V0KCkudmFsdWVzKHRoaXMucHJvcGVydHlLZXlzKSA6CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1Byb3BlcnR5TWFwU3RlcC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9Qcm9wZXJ0eU1hcFN0ZXAuamF2YQppbmRleCA5YWM3ZDNkLi45OGEyODRiIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1Byb3BlcnR5TWFwU3RlcC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvUHJvcGVydHlNYXBTdGVwLmphdmEKQEAgLTIwLDggKzIwLDEzIEBACiAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuQnlNb2R1bGF0aW5nOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5Db25maWd1cmluZzsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuVHJhdmVyc2FsUGFyZW50OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLlBhcmFtZXRlcnM7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuV2l0aE9wdGlvbnM7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuVHJhdmVyc2VyUmVxdWlyZW1lbnQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLlRyYXZlcnNhbFJpbmc7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLlRyYXZlcnNhbFV0aWw7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuRWxlbWVudDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5Qcm9wZXJ0eTsKQEAgLTM0LDY3ICszOSwxMjAgQEAKIGltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwogaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CiBpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOwotaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwogaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlua2VkSGFzaE1hcDsKIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsKIGltcG9ydCBqYXZhLnV0aWwuTWFwOwogaW1wb3J0IGphdmEudXRpbC5TZXQ7CiAKIC8qKgogICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCisgKiBAYXV0aG9yIERhbmllbCBLdXBwaXR6IChodHRwOi8vZ3JlbWxpbi5ndXJ1KQogICovCi1wdWJsaWMgY2xhc3MgUHJvcGVydHlNYXBTdGVwPEssRT4gZXh0ZW5kcyBNYXBTdGVwPEVsZW1lbnQsIE1hcDxLLCBFPj4gaW1wbGVtZW50cyBUcmF2ZXJzYWxQYXJlbnQgeworcHVibGljIGNsYXNzIFByb3BlcnR5TWFwU3RlcDxLLEU+IGV4dGVuZHMgTWFwU3RlcDxFbGVtZW50LCBNYXA8SywgRT4+CisgICAgICAgIGltcGxlbWVudHMgVHJhdmVyc2FsUGFyZW50LCBCeU1vZHVsYXRpbmcsIENvbmZpZ3VyaW5nIHsKIAogICAgIHByb3RlY3RlZCBmaW5hbCBTdHJpbmdbXSBwcm9wZXJ0eUtleXM7CiAgICAgcHJvdGVjdGVkIGZpbmFsIFByb3BlcnR5VHlwZSByZXR1cm5UeXBlOwotICAgIHByb3RlY3RlZCBmaW5hbCBib29sZWFuIGluY2x1ZGVUb2tlbnM7CisKKyAgICBwcm90ZWN0ZWQgaW50IHRva2VuczsKICAgICBwcm90ZWN0ZWQgVHJhdmVyc2FsLkFkbWluPEVsZW1lbnQsID8gZXh0ZW5kcyBQcm9wZXJ0eT4gcHJvcGVydHlUcmF2ZXJzYWw7CiAKKyAgICBwcml2YXRlIFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IG5ldyBQYXJhbWV0ZXJzKCk7CisgICAgcHJpdmF0ZSBUcmF2ZXJzYWxSaW5nPEssIEU+IHRyYXZlcnNhbFJpbmc7CisKKyAgICAvKioKKyAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuNC4wLCByZXBsYWNlZCBieSB7QGxpbmsgI1Byb3BlcnR5TWFwU3RlcChUcmF2ZXJzYWwuQWRtaW4sIFByb3BlcnR5VHlwZSwgU3RyaW5nLi4uKX0uCisgICAgICovCisgICAgQERlcHJlY2F0ZWQKICAgICBwdWJsaWMgUHJvcGVydHlNYXBTdGVwKGZpbmFsIFRyYXZlcnNhbC5BZG1pbiB0cmF2ZXJzYWwsIGZpbmFsIGJvb2xlYW4gaW5jbHVkZVRva2VucywgZmluYWwgUHJvcGVydHlUeXBlIHByb3BlcnR5VHlwZSwgZmluYWwgU3RyaW5nLi4uIHByb3BlcnR5S2V5cykgeworICAgICAgICB0aGlzKHRyYXZlcnNhbCwgcHJvcGVydHlUeXBlLCBwcm9wZXJ0eUtleXMpOworICAgICAgICB0aGlzLmNvbmZpZ3VyZShXaXRoT3B0aW9ucy50b2tlbnMsIGluY2x1ZGVUb2tlbnMgPyBXaXRoT3B0aW9ucy5hbGwgOiBXaXRoT3B0aW9ucy5ub25lKTsKKyAgICB9CisKKyAgICBwdWJsaWMgUHJvcGVydHlNYXBTdGVwKGZpbmFsIFRyYXZlcnNhbC5BZG1pbiB0cmF2ZXJzYWwsIGZpbmFsIFByb3BlcnR5VHlwZSBwcm9wZXJ0eVR5cGUsIGZpbmFsIFN0cmluZy4uLiBwcm9wZXJ0eUtleXMpIHsKICAgICAgICAgc3VwZXIodHJhdmVyc2FsKTsKLSAgICAgICAgdGhpcy5pbmNsdWRlVG9rZW5zID0gaW5jbHVkZVRva2VuczsKICAgICAgICAgdGhpcy5wcm9wZXJ0eUtleXMgPSBwcm9wZXJ0eUtleXM7CiAgICAgICAgIHRoaXMucmV0dXJuVHlwZSA9IHByb3BlcnR5VHlwZTsKICAgICAgICAgdGhpcy5wcm9wZXJ0eVRyYXZlcnNhbCA9IG51bGw7CisgICAgICAgIHRoaXMudHJhdmVyc2FsUmluZyA9IG5ldyBUcmF2ZXJzYWxSaW5nPD4oKTsKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKICAgICBwcm90ZWN0ZWQgTWFwPEssIEU+IG1hcChmaW5hbCBUcmF2ZXJzZXIuQWRtaW48RWxlbWVudD4gdHJhdmVyc2VyKSB7Ci0gICAgICAgIGZpbmFsIE1hcDxPYmplY3QsIE9iamVjdD4gbWFwID0gbmV3IEhhc2hNYXA8PigpOworICAgICAgICBmaW5hbCBNYXA8T2JqZWN0LCBPYmplY3Q+IG1hcCA9IG5ldyBMaW5rZWRIYXNoTWFwPD4oKTsKICAgICAgICAgZmluYWwgRWxlbWVudCBlbGVtZW50ID0gdHJhdmVyc2VyLmdldCgpOwotICAgICAgICBmaW5hbCBib29sZWFuIGlzVmVydGV4ID0gdHJhdmVyc2VyLmdldCgpIGluc3RhbmNlb2YgVmVydGV4OworICAgICAgICBmaW5hbCBib29sZWFuIGlzVmVydGV4ID0gZWxlbWVudCBpbnN0YW5jZW9mIFZlcnRleDsKKyAgICAgICAgaWYgKHRoaXMucmV0dXJuVHlwZSA9PSBQcm9wZXJ0eVR5cGUuVkFMVUUpIHsKKyAgICAgICAgICAgIGlmIChpbmNsdWRlVG9rZW4oV2l0aE9wdGlvbnMuaWRzKSkgbWFwLnB1dChULmlkLCBlbGVtZW50LmlkKCkpOworICAgICAgICAgICAgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBWZXJ0ZXhQcm9wZXJ0eSkgeworICAgICAgICAgICAgICAgIGlmIChpbmNsdWRlVG9rZW4oV2l0aE9wdGlvbnMua2V5cykpIG1hcC5wdXQoVC5rZXksICgoVmVydGV4UHJvcGVydHk8Pz4pIGVsZW1lbnQpLmtleSgpKTsKKyAgICAgICAgICAgICAgICBpZiAoaW5jbHVkZVRva2VuKFdpdGhPcHRpb25zLnZhbHVlcykpIG1hcC5wdXQoVC52YWx1ZSwgKChWZXJ0ZXhQcm9wZXJ0eTw/PikgZWxlbWVudCkudmFsdWUoKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChpbmNsdWRlVG9rZW4oV2l0aE9wdGlvbnMubGFiZWxzKSkgbWFwLnB1dChULmxhYmVsLCBlbGVtZW50LmxhYmVsKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIGZpbmFsIEl0ZXJhdG9yPD8gZXh0ZW5kcyBQcm9wZXJ0eT4gcHJvcGVydGllcyA9IG51bGwgPT0gdGhpcy5wcm9wZXJ0eVRyYXZlcnNhbCA/CiAgICAgICAgICAgICAgICAgZWxlbWVudC5wcm9wZXJ0aWVzKHRoaXMucHJvcGVydHlLZXlzKSA6CiAgICAgICAgICAgICAgICAgVHJhdmVyc2FsVXRpbC5hcHBseUFsbCh0cmF2ZXJzZXIsIHRoaXMucHJvcGVydHlUcmF2ZXJzYWwpOworICAgICAgICAvL2ZpbmFsIEl0ZXJhdG9yPD8gZXh0ZW5kcyBQcm9wZXJ0eT4gcHJvcGVydGllcyA9IGVsZW1lbnQucHJvcGVydGllcyh0aGlzLnByb3BlcnR5S2V5cyk7CiAgICAgICAgIHdoaWxlIChwcm9wZXJ0aWVzLmhhc05leHQoKSkgewogICAgICAgICAgICAgZmluYWwgUHJvcGVydHk8Pz4gcHJvcGVydHkgPSBwcm9wZXJ0aWVzLm5leHQoKTsKKyAgICAgICAgICAgIGZpbmFsIE9iamVjdCB2YWx1ZSA9IHRoaXMucmV0dXJuVHlwZSA9PSBQcm9wZXJ0eVR5cGUuVkFMVUUgPyBwcm9wZXJ0eS52YWx1ZSgpIDogcHJvcGVydHk7CiAgICAgICAgICAgICBpZiAoaXNWZXJ0ZXgpIHsKLSAgICAgICAgICAgICAgICBMaXN0PE9iamVjdD4gdmFsdWVzID0gKExpc3Q8T2JqZWN0PikgbWFwLmdldChwcm9wZXJ0eS5rZXkoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKG51bGwgPT0gdmFsdWVzKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVlcyA9IG5ldyBBcnJheUxpc3Q8PigpOwotICAgICAgICAgICAgICAgICAgICBtYXAucHV0KHByb3BlcnR5LmtleSgpLCB2YWx1ZXMpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB2YWx1ZXMuYWRkKHRoaXMucmV0dXJuVHlwZSA9PSBQcm9wZXJ0eVR5cGUuVkFMVUUgPyBwcm9wZXJ0eS52YWx1ZSgpIDogcHJvcGVydHkpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgbWFwLnB1dChwcm9wZXJ0eS5rZXkoKSwgdGhpcy5yZXR1cm5UeXBlID09IFByb3BlcnR5VHlwZS5WQUxVRSA/IHByb3BlcnR5LnZhbHVlKCkgOiBwcm9wZXJ0eSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHRoaXMucmV0dXJuVHlwZSA9PSBQcm9wZXJ0eVR5cGUuVkFMVUUgJiYgdGhpcy5pbmNsdWRlVG9rZW5zKSB7Ci0gICAgICAgIAkvLyBhZGQgdG9rZW5zLCBhcyBzdHJpbmcga2V5cwotICAgICAgICAgICAgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBWZXJ0ZXhQcm9wZXJ0eSkgewotICAgICAgICAgICAgICAgIG1hcC5wdXQoVC5pZCwgZWxlbWVudC5pZCgpKTsKLSAgICAgICAgICAgICAgICBtYXAucHV0KFQua2V5LCAoKFZlcnRleFByb3BlcnR5PD8+KSBlbGVtZW50KS5rZXkoKSk7Ci0gICAgICAgICAgICAgICAgbWFwLnB1dChULnZhbHVlLCAoKFZlcnRleFByb3BlcnR5PD8+KSBlbGVtZW50KS52YWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBtYXAuY29tcHV0ZShwcm9wZXJ0eS5rZXkoKSwgKGssIHYpIC0+IHsKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgTGlzdDxPYmplY3Q+IHZhbHVlcyA9IHYgIT0gbnVsbCA/IChMaXN0PE9iamVjdD4pIHYgOiBuZXcgQXJyYXlMaXN0PD4oKTsKKyAgICAgICAgICAgICAgICAgICAgdmFsdWVzLmFkZCh2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZXM7CisgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG1hcC5wdXQoVC5pZCwgZWxlbWVudC5pZCgpKTsKLSAgICAgICAgICAgICAgICBtYXAucHV0KFQubGFiZWwsIGVsZW1lbnQubGFiZWwoKSk7CisgICAgICAgICAgICAgICAgbWFwLnB1dChwcm9wZXJ0eS5rZXkoKSwgdmFsdWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIGlmICghdHJhdmVyc2FsUmluZy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGZvciAoZmluYWwgT2JqZWN0IGtleSA6IG1hcC5rZXlTZXQoKSkgeworICAgICAgICAgICAgICAgIG1hcC5jb21wdXRlKGtleSwgKGssIHYpIC0+IFRyYXZlcnNhbFV0aWwuYXBwbHlOdWxsYWJsZSh2LCAoVHJhdmVyc2FsLkFkbWluKSB0aGlzLnRyYXZlcnNhbFJpbmcubmV4dCgpKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0aGlzLnRyYXZlcnNhbFJpbmcucmVzZXQoKTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gKE1hcCkgbWFwOwogICAgIH0KIAogICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBMaXN0PFRyYXZlcnNhbC5BZG1pbjxFbGVtZW50LCA/IGV4dGVuZHMgUHJvcGVydHk+PiBnZXRMb2NhbENoaWxkcmVuKCkgewotICAgICAgICByZXR1cm4gbnVsbCA9PSB0aGlzLnByb3BlcnR5VHJhdmVyc2FsID8gQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCkgOiBDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KHRoaXMucHJvcGVydHlUcmF2ZXJzYWwpOworICAgIHB1YmxpYyB2b2lkIGNvbmZpZ3VyZShmaW5hbCBPYmplY3QuLi4ga2V5VmFsdWVzKSB7CisgICAgICAgIGlmIChrZXlWYWx1ZXNbMF0uZXF1YWxzKFdpdGhPcHRpb25zLnRva2VucykpIHsKKyAgICAgICAgICAgIGlmIChrZXlWYWx1ZXMubGVuZ3RoID09IDIgJiYga2V5VmFsdWVzWzFdIGluc3RhbmNlb2YgQm9vbGVhbikgeworICAgICAgICAgICAgICAgIHRoaXMudG9rZW5zID0gKChib29sZWFuKSBrZXlWYWx1ZXNbMV0pID8gV2l0aE9wdGlvbnMuYWxsIDogV2l0aE9wdGlvbnMubm9uZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCBrZXlWYWx1ZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCEoa2V5VmFsdWVzW2ldIGluc3RhbmNlb2YgSW50ZWdlcikpCisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJXaXRoT3B0aW9ucy50b2tlbnMgcmVxdWlyZXMgSW50ZWdlciBhcmd1bWVudHMgKHBvc3NpYmxlICIgKyAiIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZXMgYXJlOiBXaXRoT3B0aW9ucy5bbm9uZXxpZHN8bGFiZWxzfGtleXN8dmFsdWVzfGFsbF0pIik7CisgICAgICAgICAgICAgICAgICAgIHRoaXMudG9rZW5zIHw9IChpbnQpIGtleVZhbHVlc1tpXTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aGlzLnBhcmFtZXRlcnMuc2V0KHRoaXMsIGtleVZhbHVlcyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKCkgeworICAgICAgICByZXR1cm4gcGFyYW1ldGVyczsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgTGlzdDxUcmF2ZXJzYWwuQWRtaW48SywgRT4+IGdldExvY2FsQ2hpbGRyZW4oKSB7CisgICAgICAgIGZpbmFsIExpc3Q8VHJhdmVyc2FsLkFkbWluPEssIEU+PiByZXN1bHQgPSBuZXcgQXJyYXlMaXN0PD4oKTsKKyAgICAgICAgaWYgKG51bGwgIT0gdGhpcy5wcm9wZXJ0eVRyYXZlcnNhbCkKKyAgICAgICAgICAgIHJlc3VsdC5hZGQoKFRyYXZlcnNhbC5BZG1pbikgcHJvcGVydHlUcmF2ZXJzYWwpOworICAgICAgICByZXN1bHQuYWRkQWxsKHRoaXMudHJhdmVyc2FsUmluZy5nZXRUcmF2ZXJzYWxzKCkpOworICAgICAgICByZXR1cm4gQ29sbGVjdGlvbnMudW5tb2RpZmlhYmxlTGlzdChyZXN1bHQpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIG1vZHVsYXRlQnkoZmluYWwgVHJhdmVyc2FsLkFkbWluPD8sID8+IHNlbGVjdFRyYXZlcnNhbCkgeworICAgICAgICB0aGlzLnRyYXZlcnNhbFJpbmcuYWRkVHJhdmVyc2FsKHRoaXMuaW50ZWdyYXRlQ2hpbGQoc2VsZWN0VHJhdmVyc2FsKSk7CiAgICAgfQogCiAgICAgcHVibGljIHZvaWQgc2V0UHJvcGVydHlUcmF2ZXJzYWwoZmluYWwgVHJhdmVyc2FsLkFkbWluPEVsZW1lbnQsID8gZXh0ZW5kcyBQcm9wZXJ0eT4gcHJvcGVydHlUcmF2ZXJzYWwpIHsKQEAgLTEwOSwxNCArMTY3LDE3IEBACiAgICAgICAgIHJldHVybiBwcm9wZXJ0eUtleXM7CiAgICAgfQogCisgICAgLyoqCisgICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjQuMCwgcmVwbGFjZWQgYnkge0BsaW5rICNnZXRJbmNsdWRlZFRva2VucygpfS4KKyAgICAgKi8KKyAgICBARGVwcmVjYXRlZAogICAgIHB1YmxpYyBib29sZWFuIGlzSW5jbHVkZVRva2VucygpIHsKLSAgICAgICAgcmV0dXJuIGluY2x1ZGVUb2tlbnM7CisgICAgICAgIHJldHVybiB0aGlzLnRva2VucyAhPSBXaXRoT3B0aW9ucy5ub25lOwogICAgIH0KIAogICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7Ci0gICAgICAgIHJldHVybiBudWxsICE9IHRoaXMucHJvcGVydHlUcmF2ZXJzYWwgPwotICAgICAgICAgICAgICAgIFN0cmluZ0ZhY3Rvcnkuc3RlcFN0cmluZyh0aGlzLCB0aGlzLnByb3BlcnR5VHJhdmVyc2FsLCB0aGlzLnJldHVyblR5cGUubmFtZSgpLnRvTG93ZXJDYXNlKCkpIDoKLSAgICAgICAgICAgICAgICBTdHJpbmdGYWN0b3J5LnN0ZXBTdHJpbmcodGhpcywgQXJyYXlzLmFzTGlzdCh0aGlzLnByb3BlcnR5S2V5cyksIHRoaXMucmV0dXJuVHlwZS5uYW1lKCkudG9Mb3dlckNhc2UoKSk7CisgICAgICAgIHJldHVybiBTdHJpbmdGYWN0b3J5LnN0ZXBTdHJpbmcodGhpcywgQXJyYXlzLmFzTGlzdCh0aGlzLnByb3BlcnR5S2V5cyksCisgICAgICAgICAgICAgICAgdGhpcy50cmF2ZXJzYWxSaW5nLCB0aGlzLnJldHVyblR5cGUubmFtZSgpLnRvTG93ZXJDYXNlKCkpOwogICAgIH0KIAogICAgIEBPdmVycmlkZQpAQCAtMTI0LDIwICsxODUsMTkgQEAKICAgICAgICAgZmluYWwgUHJvcGVydHlNYXBTdGVwPEssRT4gY2xvbmUgPSAoUHJvcGVydHlNYXBTdGVwPEssRT4pIHN1cGVyLmNsb25lKCk7CiAgICAgICAgIGlmIChudWxsICE9IHRoaXMucHJvcGVydHlUcmF2ZXJzYWwpCiAgICAgICAgICAgICBjbG9uZS5wcm9wZXJ0eVRyYXZlcnNhbCA9IHRoaXMucHJvcGVydHlUcmF2ZXJzYWwuY2xvbmUoKTsKKyAgICAgICAgY2xvbmUudHJhdmVyc2FsUmluZyA9IHRoaXMudHJhdmVyc2FsUmluZy5jbG9uZSgpOwogICAgICAgICByZXR1cm4gY2xvbmU7CiAgICAgfQogCiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKLSAgICAgICAgaW50IHJlc3VsdCA9IHN1cGVyLmhhc2hDb2RlKCkgXiB0aGlzLnJldHVyblR5cGUuaGFzaENvZGUoKSBeIEJvb2xlYW4uaGFzaENvZGUodGhpcy5pbmNsdWRlVG9rZW5zKTsKLSAgICAgICAgaWYgKG51bGwgPT0gdGhpcy5wcm9wZXJ0eVRyYXZlcnNhbCkgewotICAgICAgICAgICAgZm9yIChmaW5hbCBTdHJpbmcgcHJvcGVydHlLZXkgOiB0aGlzLnByb3BlcnR5S2V5cykgewotICAgICAgICAgICAgICAgIHJlc3VsdCBePSBwcm9wZXJ0eUtleS5oYXNoQ29kZSgpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgeworICAgICAgICBpbnQgcmVzdWx0ID0gc3VwZXIuaGFzaENvZGUoKSBeIHRoaXMucmV0dXJuVHlwZS5oYXNoQ29kZSgpIF4gSW50ZWdlci5oYXNoQ29kZSh0aGlzLnRva2Vucyk7CisgICAgICAgIGlmIChudWxsICE9IHRoaXMucHJvcGVydHlUcmF2ZXJzYWwpCiAgICAgICAgICAgICByZXN1bHQgXj0gdGhpcy5wcm9wZXJ0eVRyYXZlcnNhbC5oYXNoQ29kZSgpOworICAgICAgICBmb3IgKGZpbmFsIFN0cmluZyBwcm9wZXJ0eUtleSA6IHRoaXMucHJvcGVydHlLZXlzKSB7CisgICAgICAgICAgICByZXN1bHQgXj0gcHJvcGVydHlLZXkuaGFzaENvZGUoKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICByZXR1cm4gcmVzdWx0IF4gdGhpcy50cmF2ZXJzYWxSaW5nLmhhc2hDb2RlKCk7CiAgICAgfQogCiAgICAgQE92ZXJyaWRlCkBAIC0xNDUsMTAgKzIwNSwxOSBAQAogICAgICAgICBzdXBlci5zZXRUcmF2ZXJzYWwocGFyZW50VHJhdmVyc2FsKTsKICAgICAgICAgaWYgKG51bGwgIT0gdGhpcy5wcm9wZXJ0eVRyYXZlcnNhbCkKICAgICAgICAgICAgIHRoaXMuaW50ZWdyYXRlQ2hpbGQodGhpcy5wcm9wZXJ0eVRyYXZlcnNhbCk7CisgICAgICAgIHRoaXMudHJhdmVyc2FsUmluZy5nZXRUcmF2ZXJzYWxzKCkuZm9yRWFjaCh0aGlzOjppbnRlZ3JhdGVDaGlsZCk7CiAgICAgfQogCiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIFNldDxUcmF2ZXJzZXJSZXF1aXJlbWVudD4gZ2V0UmVxdWlyZW1lbnRzKCkgewogICAgICAgICByZXR1cm4gdGhpcy5nZXRTZWxmQW5kQ2hpbGRSZXF1aXJlbWVudHMoVHJhdmVyc2VyUmVxdWlyZW1lbnQuT0JKRUNUKTsKICAgICB9CisKKyAgICBwdWJsaWMgaW50IGdldEluY2x1ZGVkVG9rZW5zKCkgeworICAgICAgICByZXR1cm4gdGhpcy50b2tlbnM7CisgICAgfQorCisgICAgcHJpdmF0ZSBib29sZWFuIGluY2x1ZGVUb2tlbihmaW5hbCBpbnQgdG9rZW4pIHsKKyAgICAgICAgcmV0dXJuIDAgIT0gKHRoaXMudG9rZW5zICYgdG9rZW4pOworICAgIH0KIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvU3VtR2xvYmFsU3RlcC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9TdW1HbG9iYWxTdGVwLmphdmEKaW5kZXggNzk0MmQ5Yi4uMzcxMWNmZSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9TdW1HbG9iYWxTdGVwLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9TdW1HbG9iYWxTdGVwLmphdmEKQEAgLTQ4LDYgKzQ4LDEyIEBACiAgICAgfQogCiAgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgcHJvY2Vzc0FsbFN0YXJ0cygpIHsKKyAgICAgICAgaWYgKHRoaXMuc3RhcnRzLmhhc05leHQoKSkKKyAgICAgICAgICAgIHN1cGVyLnByb2Nlc3NBbGxTdGFydHMoKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgUyBwcm9qZWN0VHJhdmVyc2VyKGZpbmFsIFRyYXZlcnNlci5BZG1pbjxTPiB0cmF2ZXJzZXIpIHsKICAgICAgICAgcmV0dXJuIChTKSBtdWwodHJhdmVyc2VyLmdldCgpLCB0cmF2ZXJzZXIuYnVsaygpKTsKICAgICB9CkBAIC01Nyw0ICs2Myw0IEBACiAgICAgcHVibGljIFNldDxUcmF2ZXJzZXJSZXF1aXJlbWVudD4gZ2V0UmVxdWlyZW1lbnRzKCkgewogICAgICAgICByZXR1cm4gUkVRVUlSRU1FTlRTOwogICAgIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1N1bUxvY2FsU3RlcC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9TdW1Mb2NhbFN0ZXAuamF2YQppbmRleCBiMDYyYTdlLi43MmU2NTM5IDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1N1bUxvY2FsU3RlcC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvU3VtTG9jYWxTdGVwLmphdmEKQEAgLTIyLDYgKzIyLDcgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci5UcmF2ZXJzZXJSZXF1aXJlbWVudDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuRmFzdE5vU3VjaEVsZW1lbnRFeGNlcHRpb247CiAKIGltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7CiBpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwpAQCAtMzksMTcgKzQwLDE1IEBACiAKICAgICBAT3ZlcnJpZGUKICAgICBwcm90ZWN0ZWQgRSBtYXAoZmluYWwgVHJhdmVyc2VyLkFkbWluPFM+IHRyYXZlcnNlcikgewotICAgICAgICBOdW1iZXIgcmVzdWx0OwogICAgICAgICBmaW5hbCBJdGVyYXRvcjxFPiBpdGVyYXRvciA9IHRyYXZlcnNlci5nZXQoKS5pdGVyYXRvcigpOwogICAgICAgICBpZiAoaXRlcmF0b3IuaGFzTmV4dCgpKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBpdGVyYXRvci5uZXh0KCk7CisgICAgICAgICAgICBOdW1iZXIgcmVzdWx0ID0gaXRlcmF0b3IubmV4dCgpOwogICAgICAgICAgICAgd2hpbGUgKGl0ZXJhdG9yLmhhc05leHQoKSkgewogICAgICAgICAgICAgICAgIHJlc3VsdCA9IE51bWJlckhlbHBlci5hZGQocmVzdWx0LCBpdGVyYXRvci5uZXh0KCkpOwogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmVzdWx0ID0gMDsKKyAgICAgICAgICAgIHJldHVybiAoRSkgcmVzdWx0OwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiAoRSkgcmVzdWx0OworICAgICAgICB0aHJvdyBGYXN0Tm9TdWNoRWxlbWVudEV4Y2VwdGlvbi5pbnN0YW5jZSgpOwogICAgIH0KIAogICAgIEBPdmVycmlkZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9WZXJ0ZXhTdGVwLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1ZlcnRleFN0ZXAuamF2YQppbmRleCA5YWM2ZDBjLi42ODI1NzM2IDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1ZlcnRleFN0ZXAuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1ZlcnRleFN0ZXAuamF2YQpAQCAtMjAsNiArMjAsOCBAQAogCiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLkNvbmZpZ3VyaW5nOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLlBhcmFtZXRlcnM7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuVHJhdmVyc2VyUmVxdWlyZW1lbnQ7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuRGlyZWN0aW9uOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkVkZ2U7CkBAIC0zNSw4ICszNyw5IEBACiAvKioKICAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQogICovCi1wdWJsaWMgY2xhc3MgVmVydGV4U3RlcDxFIGV4dGVuZHMgRWxlbWVudD4gZXh0ZW5kcyBGbGF0TWFwU3RlcDxWZXJ0ZXgsIEU+IGltcGxlbWVudHMgQXV0b0Nsb3NlYWJsZSB7CitwdWJsaWMgY2xhc3MgVmVydGV4U3RlcDxFIGV4dGVuZHMgRWxlbWVudD4gZXh0ZW5kcyBGbGF0TWFwU3RlcDxWZXJ0ZXgsIEU+IGltcGxlbWVudHMgQXV0b0Nsb3NlYWJsZSwgQ29uZmlndXJpbmcgewogCisgICAgcHJvdGVjdGVkIFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IG5ldyBQYXJhbWV0ZXJzKCk7CiAgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmdbXSBlZGdlTGFiZWxzOwogICAgIHByaXZhdGUgRGlyZWN0aW9uIGRpcmVjdGlvbjsKICAgICBwcml2YXRlIGZpbmFsIENsYXNzPEU+IHJldHVybkNsYXNzOwpAQCAtNDksNiArNTIsMTYgQEAKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKCkgeworICAgICAgICByZXR1cm4gdGhpcy5wYXJhbWV0ZXJzOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIGNvbmZpZ3VyZShmaW5hbCBPYmplY3QuLi4ga2V5VmFsdWVzKSB7CisgICAgICAgIHRoaXMucGFyYW1ldGVycy5zZXQobnVsbCwga2V5VmFsdWVzKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKICAgICBwcm90ZWN0ZWQgSXRlcmF0b3I8RT4gZmxhdE1hcChmaW5hbCBUcmF2ZXJzZXIuQWRtaW48VmVydGV4PiB0cmF2ZXJzZXIpIHsKICAgICAgICAgcmV0dXJuIFZlcnRleC5jbGFzcy5pc0Fzc2lnbmFibGVGcm9tKHRoaXMucmV0dXJuQ2xhc3MpID8KICAgICAgICAgICAgICAgICAoSXRlcmF0b3I8RT4pIHRyYXZlcnNlci5nZXQoKS52ZXJ0aWNlcyh0aGlzLmRpcmVjdGlvbiwgdGhpcy5lZGdlTGFiZWxzKSA6CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvc2lkZUVmZmVjdC9BZGRQcm9wZXJ0eVN0ZXAuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9zaWRlRWZmZWN0L0FkZFByb3BlcnR5U3RlcC5qYXZhCmluZGV4IDI3ZmZlNGUuLjQ3MGZhNGIgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9zaWRlRWZmZWN0L0FkZFByb3BlcnR5U3RlcC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9zaWRlRWZmZWN0L0FkZFByb3BlcnR5U3RlcC5qYXZhCkBAIC0xOCw3ICsxOCw2IEBACiAgKi8KIHBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnNpZGVFZmZlY3Q7CiAKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlBhcmFtZXRlcml6aW5nOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2VyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5NdXRhdGluZzsKQEAgLTM3LDkgKzM2LDggQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXg7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4UHJvcGVydHk7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5TdHJpbmdGYWN0b3J5OwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuZGV0YWNoZWQuRGV0YWNoZWRGYWN0b3J5OwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuZGV0YWNoZWQuRGV0YWNoZWRQcm9wZXJ0eTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLmRldGFjaGVkLkRldGFjaGVkVmVydGV4UHJvcGVydHk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5rZXllZC5LZXllZFByb3BlcnR5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwua2V5ZWQuS2V5ZWRWZXJ0ZXhQcm9wZXJ0eTsKIAogaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsKQEAgLTQ5LDggKzQ3LDggQEAKIC8qKgogICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCiAgKi8KLXB1YmxpYyBmaW5hbCBjbGFzcyBBZGRQcm9wZXJ0eVN0ZXA8UyBleHRlbmRzIEVsZW1lbnQ+IGV4dGVuZHMgU2lkZUVmZmVjdFN0ZXA8Uz4KLSAgICAgICAgaW1wbGVtZW50cyBNdXRhdGluZzxFdmVudC5FbGVtZW50UHJvcGVydHlDaGFuZ2VkRXZlbnQ+LCBUcmF2ZXJzYWxQYXJlbnQsIFBhcmFtZXRlcml6aW5nLCBTY29waW5nIHsKK3B1YmxpYyBjbGFzcyBBZGRQcm9wZXJ0eVN0ZXA8UyBleHRlbmRzIEVsZW1lbnQ+IGV4dGVuZHMgU2lkZUVmZmVjdFN0ZXA8Uz4KKyAgICAgICAgaW1wbGVtZW50cyBNdXRhdGluZzxFdmVudC5FbGVtZW50UHJvcGVydHlDaGFuZ2VkRXZlbnQ+LCBUcmF2ZXJzYWxQYXJlbnQsIFNjb3BpbmcgewogCiAgICAgcHJpdmF0ZSBQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBuZXcgUGFyYW1ldGVycygpOwogICAgIHByaXZhdGUgZmluYWwgVmVydGV4UHJvcGVydHkuQ2FyZGluYWxpdHkgY2FyZGluYWxpdHk7CkBAIC03OCw3ICs3Niw3IEBACiAgICAgfQogCiAgICAgQE92ZXJyaWRlCi0gICAgcHVibGljIHZvaWQgYWRkUHJvcGVydHlNdXRhdGlvbnMoZmluYWwgT2JqZWN0Li4uIGtleVZhbHVlcykgeworICAgIHB1YmxpYyB2b2lkIGNvbmZpZ3VyZShmaW5hbCBPYmplY3QuLi4ga2V5VmFsdWVzKSB7CiAgICAgICAgIHRoaXMucGFyYW1ldGVycy5zZXQodGhpcywga2V5VmFsdWVzKTsKICAgICB9CiAKQEAgLTEwNSwxMCArMTAzLDEwIEBACiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FyZGluYWxpdHkgPT0gVmVydGV4UHJvcGVydHkuQ2FyZGluYWxpdHkubGlzdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldnQgPSBuZXcgRXZlbnQuVmVydGV4UHJvcGVydHlDaGFuZ2VkRXZlbnQoZXZlbnRTdHJhdGVneS5kZXRhY2goKFZlcnRleCkgZWxlbWVudCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRTdHJhdGVneS5lbXB0eShlbGVtZW50LCBrZXkpLCB2YWx1ZSwgdmVydGV4UHJvcGVydHlLZXlWYWx1ZXMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBLZXllZFZlcnRleFByb3BlcnR5KGtleSksIHZhbHVlLCB2ZXJ0ZXhQcm9wZXJ0eUtleVZhbHVlcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNhcmRpbmFsaXR5ID09IFZlcnRleFByb3BlcnR5LkNhcmRpbmFsaXR5LnNldCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9wZXJ0eSBjdXJyZW50UHJvcGVydHkgPSBWZXJ0ZXhQcm9wZXJ0eS5lbXB0eSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9wZXJ0eSBjdXJyZW50UHJvcGVydHkgPSBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBJdGVyYXRvcjw/IGV4dGVuZHMgUHJvcGVydHk+IHByb3BlcnRpZXMgPSB0cmF2ZXJzZXIuZ2V0KCkucHJvcGVydGllcyhrZXkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAocHJvcGVydGllcy5oYXNOZXh0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIFByb3BlcnR5IHByb3BlcnR5ID0gcHJvcGVydGllcy5uZXh0KCk7CkBAIC0xMTgsOCArMTE2LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldnQgPSBuZXcgRXZlbnQuVmVydGV4UHJvcGVydHlDaGFuZ2VkRXZlbnQoZXZlbnRTdHJhdGVneS5kZXRhY2goKFZlcnRleCkgZWxlbWVudCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFByb3BlcnR5ID09IFZlcnRleFByb3BlcnR5LmVtcHR5KCkgPwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRTdHJhdGVneS5lbXB0eShlbGVtZW50LCBrZXkpIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50UHJvcGVydHkgPT0gbnVsbCA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgS2V5ZWRWZXJ0ZXhQcm9wZXJ0eShrZXkpIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50U3RyYXRlZ3kuZGV0YWNoKChWZXJ0ZXhQcm9wZXJ0eSkgY3VycmVudFByb3BlcnR5KSwgdmFsdWUsIHZlcnRleFByb3BlcnR5S2V5VmFsdWVzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICB9CkBAIC0xMjksMTcgKzEyNywxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50IGluc3RhbmNlb2YgVmVydGV4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldnQgPSBuZXcgRXZlbnQuVmVydGV4UHJvcGVydHlDaGFuZ2VkRXZlbnQoZXZlbnRTdHJhdGVneS5kZXRhY2goKFZlcnRleCkgZWxlbWVudCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3UHJvcGVydHkgPwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRTdHJhdGVneS5lbXB0eShlbGVtZW50LCBrZXkpIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBLZXllZFZlcnRleFByb3BlcnR5KGtleSkgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRTdHJhdGVneS5kZXRhY2goKFZlcnRleFByb3BlcnR5KSBjdXJyZW50UHJvcGVydHkpLCB2YWx1ZSwgdmVydGV4UHJvcGVydHlLZXlWYWx1ZXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBFZGdlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldnQgPSBuZXcgRXZlbnQuRWRnZVByb3BlcnR5Q2hhbmdlZEV2ZW50KGV2ZW50U3RyYXRlZ3kuZGV0YWNoKChFZGdlKSBlbGVtZW50KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdQcm9wZXJ0eSA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudFN0cmF0ZWd5LmVtcHR5KGVsZW1lbnQsIGtleSkgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEtleWVkUHJvcGVydHkoa2V5KSA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudFN0cmF0ZWd5LmRldGFjaChjdXJyZW50UHJvcGVydHkpLCB2YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIFZlcnRleFByb3BlcnR5KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldnQgPSBuZXcgRXZlbnQuVmVydGV4UHJvcGVydHlQcm9wZXJ0eUNoYW5nZWRFdmVudChldmVudFN0cmF0ZWd5LmRldGFjaCgoVmVydGV4UHJvcGVydHkpIGVsZW1lbnQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1Byb3BlcnR5ID8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50U3RyYXRlZ3kuZW1wdHkoZWxlbWVudCwga2V5KSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgS2V5ZWRQcm9wZXJ0eShrZXkpIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50U3RyYXRlZ3kuZGV0YWNoKGN1cnJlbnRQcm9wZXJ0eSksIHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oU3RyaW5nLmZvcm1hdCgiVGhlIGluY29taW5nIG9iamVjdCBjYW5ub3QgYmUgcHJvY2Vzc2VkIGJ5IGNoYW5nZSBldmVudGluZyBpbiAlczogICVzIiwgQWRkUHJvcGVydHlTdGVwLmNsYXNzLmdldE5hbWUoKSwgZWxlbWVudCkpOwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL3NpZGVFZmZlY3QvSW9TdGVwLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvc2lkZUVmZmVjdC9Jb1N0ZXAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjFiMzE4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL3NpZGVFZmZlY3QvSW9TdGVwLmphdmEKQEAgLTAsMCArMSwyNTQgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuc2lkZUVmZmVjdDsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuSU87CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLlJlYWRXcml0aW5nOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLkFic3RyYWN0U3RlcDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5QYXJhbWV0ZXJzOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyLnV0aWwuRW1wdHlUcmF2ZXJzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLkZhc3ROb1N1Y2hFbGVtZW50RXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkdyYXBoOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkdyYXBoUmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkdyYXBoV3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLklvUmVnaXN0cnk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3JhcGhtbC5HcmFwaE1MUmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyYXBobWwuR3JhcGhNTFdyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncmFwaHNvbi5HcmFwaFNPTk1hcHBlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncmFwaHNvbi5HcmFwaFNPTlJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncmFwaHNvbi5HcmFwaFNPTldyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncnlvLkdyeW9NYXBwZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3J5by5HcnlvUmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyeW8uR3J5b1dyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLlN0cmluZ0ZhY3Rvcnk7CisKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CitpbXBvcnQgamF2YS5pby5GaWxlSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5GaWxlT3V0cHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLk91dHB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5NZXRob2Q7CitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5zdHJlYW0uQ29sbGVjdG9yczsKKworLyoqCisgKiBIYW5kbGVzIHJlYWQgYW5kIHdyaXRlIG9wZXJhdGlvbnMgaW50byB0aGUge0BsaW5rIEdyYXBofS4KKyAqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK3B1YmxpYyBjbGFzcyBJb1N0ZXA8Uz4gZXh0ZW5kcyBBYnN0cmFjdFN0ZXA8UyxTPiBpbXBsZW1lbnRzIFJlYWRXcml0aW5nIHsKKworICAgIHByaXZhdGUgUGFyYW1ldGVycyBwYXJhbWV0ZXJzID0gbmV3IFBhcmFtZXRlcnMoKTsKKyAgICBwcml2YXRlIGJvb2xlYW4gZmlyc3QgPSB0cnVlOworICAgIHByaXZhdGUgU3RyaW5nIGZpbGU7CisgICAgcHJpdmF0ZSBNb2RlIG1vZGUgPSBNb2RlLlVOU0VUOworCisgICAgcHVibGljIElvU3RlcChmaW5hbCBUcmF2ZXJzYWwuQWRtaW4gdHJhdmVyc2FsLCBmaW5hbCBTdHJpbmcgZmlsZSkgeworICAgICAgICBzdXBlcih0cmF2ZXJzYWwpOworCisgICAgICAgIGlmIChudWxsID09IGZpbGUgfHwgZmlsZS5pc0VtcHR5KCkpCisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJmaWxlIGNhbm5vdCBiZSBudWxsIG9yIGVtcHR5Iik7CisKKyAgICAgICAgdGhpcy5maWxlID0gZmlsZTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBzZXRNb2RlKGZpbmFsIE1vZGUgbW9kZSkgeworICAgICAgICB0aGlzLm1vZGUgPSBtb2RlOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBNb2RlIGdldE1vZGUoKSB7CisgICAgICAgIHJldHVybiBtb2RlOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0RmlsZSgpIHsKKyAgICAgICAgcmV0dXJuIGZpbGU7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVycygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucGFyYW1ldGVyczsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBjb25maWd1cmUoZmluYWwgT2JqZWN0Li4uIGtleVZhbHVlcykgeworICAgICAgICB0aGlzLnBhcmFtZXRlcnMuc2V0KG51bGwsIGtleVZhbHVlcyk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIFRyYXZlcnNlci5BZG1pbjxTPiBwcm9jZXNzTmV4dFN0YXJ0KCkgeworICAgICAgICBpZiAobW9kZSA9PSBNb2RlLlVOU0VUKSB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJJTyBtb2RlIHdhcyBub3Qgc2V0IHRvIHJlYWQoKSBvciB3cml0ZSgpIik7CisgICAgICAgIGlmICghdGhpcy5maXJzdCkgdGhyb3cgRmFzdE5vU3VjaEVsZW1lbnRFeGNlcHRpb24uaW5zdGFuY2UoKTsKKworICAgICAgICB0aGlzLmZpcnN0ID0gZmFsc2U7CisgICAgICAgIGZpbmFsIEZpbGUgZmlsZSA9IG5ldyBGaWxlKHRoaXMuZmlsZSk7CisKKyAgICAgICAgaWYgKG1vZGUgPT0gTW9kZS5SRUFESU5HKSB7CisgICAgICAgICAgICBpZiAoIWZpbGUuZXhpc3RzKCkpIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24odGhpcy5maWxlICsgIiBkb2VzIG5vdCBleGlzdCIpOworICAgICAgICAgICAgcmV0dXJuIHJlYWQoZmlsZSk7CisgICAgICAgIH0gZWxzZSBpZiAobW9kZSA9PSBNb2RlLldSSVRJTkcpIHsKKyAgICAgICAgICAgIHJldHVybiB3cml0ZShmaWxlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIkludmFsaWQgUmVhZFdyaXRpbmcuTW9kZSBjb25maWd1cmVkIGluIElvU3RlcDogIiArIG1vZGUubmFtZSgpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByb3RlY3RlZCBUcmF2ZXJzZXIuQWRtaW48Uz4gd3JpdGUoZmluYWwgRmlsZSBmaWxlKSB7CisgICAgICAgIHRyeSAoZmluYWwgT3V0cHV0U3RyZWFtIHN0cmVhbSA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKGZpbGUpKSB7CisgICAgICAgICAgICBmaW5hbCBHcmFwaCBncmFwaCA9IChHcmFwaCkgdGhpcy50cmF2ZXJzYWwuZ2V0R3JhcGgoKS5nZXQoKTsKKyAgICAgICAgICAgIGNvbnN0cnVjdFdyaXRlcigpLndyaXRlR3JhcGgoc3RyZWFtLCBncmFwaCk7CisKKyAgICAgICAgICAgIHJldHVybiBFbXB0eVRyYXZlcnNlci5pbnN0YW5jZSgpOworICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBpb2UpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oU3RyaW5nLmZvcm1hdCgiQ291bGQgbm90IHdyaXRlIGZpbGUgJXMgZnJvbSBncmFwaCIsIHRoaXMuZmlsZSksIGlvZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcm90ZWN0ZWQgVHJhdmVyc2VyLkFkbWluPFM+IHJlYWQoZmluYWwgRmlsZSBmaWxlKSB7CisgICAgICAgIHRyeSAoZmluYWwgSW5wdXRTdHJlYW0gc3RyZWFtID0gbmV3IEZpbGVJbnB1dFN0cmVhbShmaWxlKSkgeworICAgICAgICAgICAgZmluYWwgR3JhcGggZ3JhcGggPSAoR3JhcGgpIHRoaXMudHJhdmVyc2FsLmdldEdyYXBoKCkuZ2V0KCk7CisgICAgICAgICAgICBjb25zdHJ1Y3RSZWFkZXIoKS5yZWFkR3JhcGgoc3RyZWFtLCBncmFwaCk7CisKKyAgICAgICAgICAgIHJldHVybiBFbXB0eVRyYXZlcnNlci5pbnN0YW5jZSgpOworICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBpb2UpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oU3RyaW5nLmZvcm1hdCgiQ291bGQgbm90IHJlYWQgZmlsZSAlcyBpbnRvIGdyYXBoIiwgdGhpcy5maWxlKSwgaW9lKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEJ1aWxkcyBhIHtAbGluayBHcmFwaFJlYWRlcn0gaW5zdGFuY2UgdG8gdXNlLiBBdHRlbXB0cyB0byBkZXRlY3QgdGhlIGZpbGUgZm9ybWF0IHRvIGJlIHJlYWQgdXNpbmcgdGhlIGZpbGUKKyAgICAgKiBleHRlbnNpb24gb3Igc2ltcGx5IHVzZXMgY29uZmlndXJhdGlvbnMgcHJvdmlkZWQgYnkgdGhlIHVzZXIgb24gdGhlIHBhcmFtZXRlcnMgZ2l2ZW4gdG8gdGhlIHN0ZXAuCisgICAgICovCisgICAgcHJpdmF0ZSBHcmFwaFJlYWRlciBjb25zdHJ1Y3RSZWFkZXIoKSB7CisgICAgICAgIGZpbmFsIE9iamVjdCBvYmplY3RPckNsYXNzID0gcGFyYW1ldGVycy5nZXQoSU8ucmVhZGVyLCB0aGlzOjpkZXRlY3RGaWxlVHlwZSkuZ2V0KDApOworICAgICAgICBpZiAob2JqZWN0T3JDbGFzcyBpbnN0YW5jZW9mIEdyYXBoUmVhZGVyKQorICAgICAgICAgICAgcmV0dXJuIChHcmFwaFJlYWRlcikgb2JqZWN0T3JDbGFzczsKKyAgICAgICAgZWxzZSBpZiAob2JqZWN0T3JDbGFzcyBpbnN0YW5jZW9mIFN0cmluZykgeworICAgICAgICAgICAgaWYgKG9iamVjdE9yQ2xhc3MuZXF1YWxzKElPLmdyYXBoc29uKSkgeworICAgICAgICAgICAgICAgIGZpbmFsIEdyYXBoU09OTWFwcGVyLkJ1aWxkZXIgYnVpbGRlciA9IEdyYXBoU09OTWFwcGVyLmJ1aWxkKCk7CisgICAgICAgICAgICAgICAgZGV0ZWN0UmVnaXN0cmllcygpLmZvckVhY2goYnVpbGRlcjo6YWRkUmVnaXN0cnkpOworICAgICAgICAgICAgICAgIHJldHVybiBHcmFwaFNPTlJlYWRlci5idWlsZCgpLm1hcHBlcihidWlsZGVyLmNyZWF0ZSgpKS5jcmVhdGUoKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAob2JqZWN0T3JDbGFzcy5lcXVhbHMoSU8uZ3J5bykpeworICAgICAgICAgICAgICAgIGZpbmFsIEdyeW9NYXBwZXIuQnVpbGRlciBidWlsZGVyID0gR3J5b01hcHBlci5idWlsZCgpOworICAgICAgICAgICAgICAgIGRldGVjdFJlZ2lzdHJpZXMoKS5mb3JFYWNoKGJ1aWxkZXI6OmFkZFJlZ2lzdHJ5KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gR3J5b1JlYWRlci5idWlsZCgpLm1hcHBlcihidWlsZGVyLmNyZWF0ZSgpKS5jcmVhdGUoKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAob2JqZWN0T3JDbGFzcy5lcXVhbHMoSU8uZ3JhcGhtbCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIEdyYXBoTUxSZWFkZXIuYnVpbGQoKS5jcmVhdGUoKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIGZpbmFsIENsYXNzPD8+IGdyYXBoUmVhZGVyQ2xhenogPSBDbGFzcy5mb3JOYW1lKChTdHJpbmcpIG9iamVjdE9yQ2xhc3MpOworICAgICAgICAgICAgICAgICAgICBmaW5hbCBNZXRob2QgYnVpbGQgPSBncmFwaFJlYWRlckNsYXp6LmdldE1ldGhvZCgiYnVpbGQiKTsKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgR3JhcGhSZWFkZXIuUmVhZGVyQnVpbGRlciBidWlsZGVyID0gKEdyYXBoUmVhZGVyLlJlYWRlckJ1aWxkZXIpIGJ1aWxkLmludm9rZShudWxsKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ1aWxkZXIuY3JlYXRlKCk7CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oU3RyaW5nLmZvcm1hdCgiQ291bGQgbm90IGNvbnN0cnVjdCB0aGUgc3BlY2lmaWVkIEdyYXBoUmVhZGVyIG9mICVzIiwgb2JqZWN0T3JDbGFzcyksIGV4KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJHcmFwaFJlYWRlciBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZCIpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQnVpbGRzIGEge0BsaW5rIEdyYXBoV3JpdGVyfSBpbnN0YW5jZSB0byB1c2UuIEF0dGVtcHRzIHRvIGRldGVjdCB0aGUgZmlsZSBmb3JtYXQgdG8gYmUgd3JpdGUgdXNpbmcgdGhlIGZpbGUKKyAgICAgKiBleHRlbnNpb24gb3Igc2ltcGx5IHVzZXMgY29uZmlndXJhdGlvbnMgcHJvdmlkZWQgYnkgdGhlIHVzZXIgb24gdGhlIHBhcmFtZXRlcnMgZ2l2ZW4gdG8gdGhlIHN0ZXAuCisgICAgICovCisgICAgcHJpdmF0ZSBHcmFwaFdyaXRlciBjb25zdHJ1Y3RXcml0ZXIoKSB7CisgICAgICAgIGZpbmFsIE9iamVjdCBvYmplY3RPckNsYXNzID0gcGFyYW1ldGVycy5nZXQoSU8ud3JpdGVyLCB0aGlzOjpkZXRlY3RGaWxlVHlwZSkuZ2V0KDApOworICAgICAgICBpZiAob2JqZWN0T3JDbGFzcyBpbnN0YW5jZW9mIEdyYXBoV3JpdGVyKQorICAgICAgICAgICAgcmV0dXJuIChHcmFwaFdyaXRlcikgb2JqZWN0T3JDbGFzczsKKyAgICAgICAgZWxzZSBpZiAob2JqZWN0T3JDbGFzcyBpbnN0YW5jZW9mIFN0cmluZykgeworICAgICAgICAgICAgaWYgKG9iamVjdE9yQ2xhc3MuZXF1YWxzKElPLmdyYXBoc29uKSkgeworICAgICAgICAgICAgICAgIGZpbmFsIEdyYXBoU09OTWFwcGVyLkJ1aWxkZXIgYnVpbGRlciA9IEdyYXBoU09OTWFwcGVyLmJ1aWxkKCk7CisgICAgICAgICAgICAgICAgZGV0ZWN0UmVnaXN0cmllcygpLmZvckVhY2goYnVpbGRlcjo6YWRkUmVnaXN0cnkpOworICAgICAgICAgICAgICAgIHJldHVybiBHcmFwaFNPTldyaXRlci5idWlsZCgpLm1hcHBlcihidWlsZGVyLmNyZWF0ZSgpKS5jcmVhdGUoKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAob2JqZWN0T3JDbGFzcy5lcXVhbHMoSU8uZ3J5bykpeworICAgICAgICAgICAgICAgIGZpbmFsIEdyeW9NYXBwZXIuQnVpbGRlciBidWlsZGVyID0gR3J5b01hcHBlci5idWlsZCgpOworICAgICAgICAgICAgICAgIGRldGVjdFJlZ2lzdHJpZXMoKS5mb3JFYWNoKGJ1aWxkZXI6OmFkZFJlZ2lzdHJ5KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gR3J5b1dyaXRlci5idWlsZCgpLm1hcHBlcihidWlsZGVyLmNyZWF0ZSgpKS5jcmVhdGUoKTsKKyAgICAgICAgICAgIH1lbHNlIGlmIChvYmplY3RPckNsYXNzLmVxdWFscyhJTy5ncmFwaG1sKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gR3JhcGhNTFdyaXRlci5idWlsZCgpLmNyZWF0ZSgpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgQ2xhc3M8Pz4gZ3JhcGhXcml0ZXJDbGF6eiA9IENsYXNzLmZvck5hbWUoKFN0cmluZykgb2JqZWN0T3JDbGFzcyk7CisgICAgICAgICAgICAgICAgICAgIGZpbmFsIE1ldGhvZCBidWlsZCA9IGdyYXBoV3JpdGVyQ2xhenouZ2V0TWV0aG9kKCJidWlsZCIpOworICAgICAgICAgICAgICAgICAgICBmaW5hbCBHcmFwaFdyaXRlci5Xcml0ZXJCdWlsZGVyIGJ1aWxkZXIgPSAoR3JhcGhXcml0ZXIuV3JpdGVyQnVpbGRlcikgYnVpbGQuaW52b2tlKG51bGwpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gYnVpbGRlci5jcmVhdGUoKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbihTdHJpbmcuZm9ybWF0KCJDb3VsZCBub3QgY29uc3RydWN0IHRoZSBzcGVjaWZpZWQgR3JhcGhSZWFkZXIgb2YgJXMiLCBvYmplY3RPckNsYXNzKSwgZXgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIkdyYXBoUmVhZGVyIGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcm90ZWN0ZWQgU3RyaW5nIGRldGVjdEZpbGVUeXBlKCkgeworICAgICAgICBpZiAoZmlsZS5lbmRzV2l0aCgiLmtyeW8iKSkKKyAgICAgICAgICAgIHJldHVybiBJTy5ncnlvOworICAgICAgICBlbHNlIGlmIChmaWxlLmVuZHNXaXRoKCIuanNvbiIpKQorICAgICAgICAgICAgcmV0dXJuIElPLmdyYXBoc29uOworICAgICAgICBlbHNlIGlmIChmaWxlLmVuZHNXaXRoKCIueG1sIikpCisgICAgICAgICAgICByZXR1cm4gSU8uZ3JhcGhtbDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiQ291bGQgbm90IGRldGVjdCB0aGUgZmlsZSBmb3JtYXQgLSBzcGVjaWZ5IHRoZSB3cml0ZXIgZXhwbGljaXRseSBvciByZW5hbWUgZmlsZSB3aXRoIGEgc3RhbmRhcmQgZXh0ZW5zaW9uIik7CisgICAgfQorCisgICAgcHJvdGVjdGVkIExpc3Q8SW9SZWdpc3RyeT4gZGV0ZWN0UmVnaXN0cmllcygpIHsKKyAgICAgICAgZmluYWwgTGlzdDxPYmplY3Q+IGsgPSBwYXJhbWV0ZXJzLmdldChJTy5yZWdpc3RyeSwgbnVsbCk7CisgICAgICAgIHJldHVybiBrLnN0cmVhbSgpLm1hcChjbiAtPiB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGlmIChjbiBpbnN0YW5jZW9mIElvUmVnaXN0cnkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAoSW9SZWdpc3RyeSkgY247CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGZpbmFsIENsYXNzPD8+IGNsYXp6ID0gQ2xhc3MuZm9yTmFtZShjbi50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChJb1JlZ2lzdHJ5KSBjbGF6ei5nZXRNZXRob2QoImluc3RhbmNlIikuaW52b2tlKG51bGwpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oZXgpOworICAgICAgICAgICAgfQorICAgICAgICB9KS5jb2xsZWN0KENvbGxlY3RvcnMudG9MaXN0KCkpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7CisgICAgICAgIGZpbmFsIGludCBoYXNoID0gc3VwZXIuaGFzaENvZGUoKSBeIHRoaXMucGFyYW1ldGVycy5oYXNoQ29kZSgpOworICAgICAgICByZXR1cm4gKG51bGwgIT0gdGhpcy5maWxlKSA/IChoYXNoIF4gZmlsZS5oYXNoQ29kZSgpKSA6IGhhc2g7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgcmV0dXJuIFN0cmluZ0ZhY3Rvcnkuc3RlcFN0cmluZyh0aGlzLCBmaWxlLCB0aGlzLnBhcmFtZXRlcnMpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBJb1N0ZXAgY2xvbmUoKSB7CisgICAgICAgIGZpbmFsIElvU3RlcCBjbG9uZSA9IChJb1N0ZXApIHN1cGVyLmNsb25lKCk7CisgICAgICAgIGNsb25lLnBhcmFtZXRlcnMgPSB0aGlzLnBhcmFtZXRlcnMuY2xvbmUoKTsKKyAgICAgICAgY2xvbmUuZmlsZSA9IHRoaXMuZmlsZTsKKyAgICAgICAgY2xvbmUubW9kZSA9IHRoaXMubW9kZTsKKyAgICAgICAgcmV0dXJuIGNsb25lOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC91dGlsL0Fic3RyYWN0U3RlcC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL3V0aWwvQWJzdHJhY3RTdGVwLmphdmEKaW5kZXggOWViMWIzYy4uZTI3NTdlMiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL3V0aWwvQWJzdHJhY3RTdGVwLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL3V0aWwvQWJzdHJhY3RTdGVwLmphdmEKQEAgLTU0LDcgKzU0LDcgQEAKIAogICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyB2b2lkIHNldElkKGZpbmFsIFN0cmluZyBpZCkgewotICAgICAgICBPYmplY3RzLm5vbk51bGwoaWQpOworICAgICAgICBPYmplY3RzLnJlcXVpcmVOb25OdWxsKGlkKTsKICAgICAgICAgdGhpcy5pZCA9IGlkOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL3V0aWwvQnVsa1NldC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL3V0aWwvQnVsa1NldC5qYXZhCmluZGV4IGVkOGQ2OWQuLjEzNjg2MjQgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC91dGlsL0J1bGtTZXQuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvdXRpbC9CdWxrU2V0LmphdmEKQEAgLTEwNCwxMSArMTA0LDYgQEAKICAgICAgICAgcmV0dXJuIG51bGwgPT0gYnVsayA/IDAgOiBidWxrOwogICAgIH0KIAotICAgIC8qcHVibGljIHZvaWQgc2V0KGZpbmFsIFMgcywgZmluYWwgbG9uZyBidWxrKSB7Ci0gICAgICAgIHRoaXMubWFwLnJlbW92ZShzKTsKLSAgICAgICAgdGhpcy5tYXAucHV0KHMsIGJ1bGspOwotICAgIH0qLwotCiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIGJvb2xlYW4gcmVtb3ZlKGZpbmFsIE9iamVjdCBzKSB7CiAgICAgICAgIHJldHVybiB0aGlzLm1hcC5yZW1vdmUocykgIT0gbnVsbDsKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC91dGlsL0VtcHR5UGF0aC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL3V0aWwvRW1wdHlQYXRoLmphdmEKaW5kZXggMGM2ODI3ZS4uNjkxMTFlZSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL3V0aWwvRW1wdHlQYXRoLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL3V0aWwvRW1wdHlQYXRoLmphdmEKQEAgLTE5LDYgKzE5LDcgQEAKIHBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWw7CiAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlBhdGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5TdHJpbmdGYWN0b3J5OwogCiBpbXBvcnQgamF2YS5pby5TZXJpYWxpemFibGU7CiBpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOwpAQCAtMTAzLDQgKzEwNCw5IEBACiAgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKGZpbmFsIE9iamVjdCBvYmplY3QpIHsKICAgICAgICAgcmV0dXJuIG9iamVjdCBpbnN0YW5jZW9mIEVtcHR5UGF0aDsKICAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICByZXR1cm4gU3RyaW5nRmFjdG9yeS5wYXRoU3RyaW5nKHRoaXMpOworICAgIH0KIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC91dGlsL0hhc0NvbnRhaW5lci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL3V0aWwvSGFzQ29udGFpbmVyLmphdmEKaW5kZXggMDhhYjM4OS4uNThmMjM1MCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL3V0aWwvSGFzQ29udGFpbmVyLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL3V0aWwvSGFzQ29udGFpbmVyLmphdmEKQEAgLTE5LDEyICsxOSw5IEBACiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsOwogCiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5BbmRQOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkVsZW1lbnQ7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuUHJvcGVydHk7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXg7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4UHJvcGVydHk7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi51dGlsLml0ZXJhdG9yLkl0ZXJhdG9yVXRpbHM7CiAKIGltcG9ydCBqYXZhLmlvLlNlcmlhbGl6YWJsZTsKQEAgLTgxLDI1ICs3OCwyNSBAQAogICAgICAgICAvLyBpZiB0aGUgcHJlZGljYXRlIHZhbHVlIGlzIGEgU3RyaW5nLiAgdGhpcyBhbGxvd3Mgc3R1ZmYgbGlrZTogZy5WKCkuaGFzKGlkLGx0KDEwKSkgdG8gd29yayBwcm9wZXJseQogICAgICAgICBpZiAodGhpcy5rZXkuZXF1YWxzKFQuaWQuZ2V0QWNjZXNzb3IoKSkpCiAgICAgICAgICAgICByZXR1cm4gdGVzdGluZ0lkU3RyaW5nID8gdGVzdElkQXNTdHJpbmcoZWxlbWVudCkgOiB0ZXN0SWQoZWxlbWVudCk7Ci0gICAgICAgIGVsc2UgaWYgKHRoaXMua2V5LmVxdWFscyhULmxhYmVsLmdldEFjY2Vzc29yKCkpKQorICAgICAgICBpZiAodGhpcy5rZXkuZXF1YWxzKFQubGFiZWwuZ2V0QWNjZXNzb3IoKSkpCiAgICAgICAgICAgICByZXR1cm4gdGVzdExhYmVsKGVsZW1lbnQpOwotICAgICAgICBlbHNlIGlmIChlbGVtZW50IGluc3RhbmNlb2YgVmVydGV4UHJvcGVydHkgJiYgdGhpcy5rZXkuZXF1YWxzKFQudmFsdWUuZ2V0QWNjZXNzb3IoKSkpCi0gICAgICAgICAgICByZXR1cm4gdGVzdFZhbHVlKChWZXJ0ZXhQcm9wZXJ0eSkgZWxlbWVudCk7Ci0gICAgICAgIGVsc2UgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBWZXJ0ZXhQcm9wZXJ0eSAmJiB0aGlzLmtleS5lcXVhbHMoVC5rZXkuZ2V0QWNjZXNzb3IoKSkpCi0gICAgICAgICAgICByZXR1cm4gdGVzdEtleSgoVmVydGV4UHJvcGVydHkpIGVsZW1lbnQpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmIChlbGVtZW50IGluc3RhbmNlb2YgVmVydGV4KSB7Ci0gICAgICAgICAgICAgICAgZmluYWwgSXRlcmF0b3I8PyBleHRlbmRzIFByb3BlcnR5PiBpdHR5ID0gZWxlbWVudC5wcm9wZXJ0aWVzKHRoaXMua2V5KTsKLSAgICAgICAgICAgICAgICB3aGlsZSAoaXR0eS5oYXNOZXh0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRlc3RWYWx1ZShpdHR5Lm5leHQoKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBmaW5hbCBQcm9wZXJ0eSBwcm9wZXJ0eSA9IGVsZW1lbnQucHJvcGVydHkodGhpcy5rZXkpOwotICAgICAgICAgICAgICAgIHJldHVybiBwcm9wZXJ0eS5pc1ByZXNlbnQoKSAmJiB0ZXN0VmFsdWUocHJvcGVydHkpOwotICAgICAgICAgICAgfQorCisgICAgICAgIGZpbmFsIEl0ZXJhdG9yPD8gZXh0ZW5kcyBQcm9wZXJ0eT4gaXR0eSA9IGVsZW1lbnQucHJvcGVydGllcyh0aGlzLmtleSk7CisgICAgICAgIHdoaWxlIChpdHR5Lmhhc05leHQoKSkgeworICAgICAgICAgICAgaWYgKHRlc3RWYWx1ZShpdHR5Lm5leHQoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHB1YmxpYyBmaW5hbCBib29sZWFuIHRlc3QoZmluYWwgUHJvcGVydHkgcHJvcGVydHkpIHsKKyAgICAgICAgaWYgKHRoaXMua2V5LmVxdWFscyhULnZhbHVlLmdldEFjY2Vzc29yKCkpKQorICAgICAgICAgICAgcmV0dXJuIHRlc3RWYWx1ZShwcm9wZXJ0eSk7CisgICAgICAgIGlmICh0aGlzLmtleS5lcXVhbHMoVC5rZXkuZ2V0QWNjZXNzb3IoKSkpCisgICAgICAgICAgICByZXR1cm4gdGVzdEtleShwcm9wZXJ0eSk7CisgICAgICAgIGlmIChwcm9wZXJ0eSBpbnN0YW5jZW9mIEVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm4gdGVzdCgoRWxlbWVudCkgcHJvcGVydHkpOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgcHJvdGVjdGVkIGJvb2xlYW4gdGVzdElkKEVsZW1lbnQgZWxlbWVudCkgewpAQCAtMTIyLDcgKzExOSw2IEBACiAgICAgICAgIHJldHVybiB0aGlzLnByZWRpY2F0ZS50ZXN0KHByb3BlcnR5LmtleSgpKTsKICAgICB9CiAKLQogICAgIHB1YmxpYyBmaW5hbCBTdHJpbmcgdG9TdHJpbmcoKSB7CiAgICAgICAgIHJldHVybiB0aGlzLmtleSArICcuJyArIHRoaXMucHJlZGljYXRlOwogICAgIH0KQEAgLTE3NSwyOSArMTcxLDE3IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gdGVzdEFsbChmaW5hbCBFbGVtZW50IGVsZW1lbnQsIGZpbmFsIExpc3Q8SGFzQ29udGFpbmVyPiBoYXNDb250YWluZXJzKSB7CisgICAgcHVibGljIHN0YXRpYyA8Uz4gYm9vbGVhbiB0ZXN0QWxsKGZpbmFsIFMgZWxlbWVudCwgZmluYWwgTGlzdDxIYXNDb250YWluZXI+IGhhc0NvbnRhaW5lcnMpIHsKKyAgICAgICAgZmluYWwgYm9vbGVhbiBpc1Byb3BlcnR5ID0gZWxlbWVudCBpbnN0YW5jZW9mIFByb3BlcnR5OwogICAgICAgICBmb3IgKGZpbmFsIEhhc0NvbnRhaW5lciBoYXNDb250YWluZXIgOiBoYXNDb250YWluZXJzKSB7Ci0gICAgICAgICAgICBpZiAoIWhhc0NvbnRhaW5lci50ZXN0KGVsZW1lbnQpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmIChpc1Byb3BlcnR5KSB7CisgICAgICAgICAgICAgICAgaWYgKCFoYXNDb250YWluZXIudGVzdCgoUHJvcGVydHkpIGVsZW1lbnQpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICghaGFzQ29udGFpbmVyLnRlc3QoKEVsZW1lbnQpIGVsZW1lbnQpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotCi0KLSAgICAvKioKLSAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuMi40LiBQcm92aWRlcnMgc2hvdWxkIGhhbmRsZSBjb21wb3NpdGUge0BsaW5rIFAjYW5kfSBwcmVkaWNhdGVzIGFuZCBub3QgcmVseSBvbiBzcGxpdHRpbmcuCi0gICAgICovCi0gICAgQERlcHJlY2F0ZWQKLSAgICBwdWJsaWMgc3RhdGljIEhhc0NvbnRhaW5lcltdIG1ha2VIYXNDb250YWluZXJzKGZpbmFsIFN0cmluZyBrZXksIGZpbmFsIFA8Pz4gcHJlZGljYXRlKSB7Ci0gICAgICAgIGlmIChwcmVkaWNhdGUgaW5zdGFuY2VvZiBBbmRQKSB7Ci0gICAgICAgICAgICBmaW5hbCBMaXN0PFA8Pz4+IHByZWRpY2F0ZXMgPSAoKEFuZFApIHByZWRpY2F0ZSkuZ2V0UHJlZGljYXRlcygpOwotICAgICAgICAgICAgZmluYWwgSGFzQ29udGFpbmVyW10gaGFzQ29udGFpbmVycyA9IG5ldyBIYXNDb250YWluZXJbcHJlZGljYXRlcy5zaXplKCldOwotICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwcmVkaWNhdGVzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgaGFzQ29udGFpbmVyc1tpXSA9IG5ldyBIYXNDb250YWluZXIoa2V5LCBwcmVkaWNhdGVzLmdldChpKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gaGFzQ29udGFpbmVyczsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgSGFzQ29udGFpbmVyW117bmV3IEhhc0NvbnRhaW5lcihrZXksIHByZWRpY2F0ZSl9OwotICAgICAgICB9Ci0gICAgfQogfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC91dGlsL0ltbXV0YWJsZVBhdGguamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC91dGlsL0ltbXV0YWJsZVBhdGguamF2YQppbmRleCA3YTZiOWE4Li42MjNiODEwIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvdXRpbC9JbW11dGFibGVQYXRoLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL3V0aWwvSW1tdXRhYmxlUGF0aC5qYXZhCkBAIC0yMCw2ICsyMCw3IEBACiAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlBhdGg7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5Qb3A7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5TdHJpbmdGYWN0b3J5OwogCiBpbXBvcnQgamF2YS5pby5TZXJpYWxpemFibGU7CiBpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKQEAgLTIxNyw3ICsyMTgsNyBAQAogCiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMub2JqZWN0cygpLnRvU3RyaW5nKCk7CisgICAgICAgIHJldHVybiBTdHJpbmdGYWN0b3J5LnBhdGhTdHJpbmcodGhpcyk7CiAgICAgfQogCiAgICAgQE92ZXJyaWRlCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvdXRpbC9NdXRhYmxlUGF0aC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL3V0aWwvTXV0YWJsZVBhdGguamF2YQppbmRleCAxNjhiN2RjLi40MjdjNjAxIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvdXRpbC9NdXRhYmxlUGF0aC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC91dGlsL011dGFibGVQYXRoLmphdmEKQEAgLTIwLDYgKzIwLDcgQEAKIAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUGF0aDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlBvcDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLlN0cmluZ0ZhY3Rvcnk7CiAKIGltcG9ydCBqYXZhLmlvLlNlcmlhbGl6YWJsZTsKIGltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwpAQCAtMTY4LDcgKzE2OSw3IEBACiAKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgewotICAgICAgICByZXR1cm4gdGhpcy5vYmplY3RzLnRvU3RyaW5nKCk7CisgICAgICAgIHJldHVybiBTdHJpbmdGYWN0b3J5LnBhdGhTdHJpbmcodGhpcyk7CiAgICAgfQogCiAgICAgQE92ZXJyaWRlCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvdXRpbC9QYXJhbWV0ZXJzLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvdXRpbC9QYXJhbWV0ZXJzLmphdmEKaW5kZXggYzEzMzc3My4uNWM4NmFkOSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL3V0aWwvUGFyYW1ldGVycy5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC91dGlsL1BhcmFtZXRlcnMuamF2YQpAQCAtNDgsNiArNDgsOCBAQAogICovCiBwdWJsaWMgZmluYWwgY2xhc3MgUGFyYW1ldGVycyBpbXBsZW1lbnRzIENsb25lYWJsZSwgU2VyaWFsaXphYmxlIHsKIAorICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgUGFyYW1ldGVycyBFTVBUWSA9IG5ldyBQYXJhbWV0ZXJzKCk7CisKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBPYmplY3RbXSBFTVBUWV9BUlJBWSA9IG5ldyBPYmplY3RbMF07CiAKICAgICBwcml2YXRlIE1hcDxPYmplY3QsIExpc3Q8T2JqZWN0Pj4gcGFyYW1ldGVycyA9IG5ldyBIYXNoTWFwPD4oKTsKQEAgLTk4LDExICsxMDAsMTEgQEAKICAgICAgKiBHZXRzIHRoZSB2YWx1ZSBvZiBhIGtleSBhbmQgaWYgdGhhdCBrZXkgaXNuJ3QgcHJlc2VudCByZXR1cm5zIHRoZSBkZWZhdWx0IHZhbHVlIGZyb20gdGhlIHtAbGluayBTdXBwbGllcn0uCiAgICAgICoKICAgICAgKiBAcGFyYW0ga2V5ICAgICAgICAgIHRoZSBrZXkgdG8gcmV0cmlldmUKLSAgICAgKiBAcGFyYW0gZGVmYXVsdFZhbHVlIHRoZSBkZWZhdWx0IHZhbHVlIGdlbmVyYXRvcgorICAgICAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgdGhlIGRlZmF1bHQgdmFsdWUgZ2VuZXJhdG9yIHdoaWNoIGlmIG51bGwgd2lsbCByZXR1cm4gYW4gZW1wdHkgbGlzdAogICAgICAqLwogICAgIHB1YmxpYyA8RT4gTGlzdDxFPiBnZXQoZmluYWwgT2JqZWN0IGtleSwgZmluYWwgU3VwcGxpZXI8RT4gZGVmYXVsdFZhbHVlKSB7CiAgICAgICAgIGZpbmFsIExpc3Q8RT4gbGlzdCA9IChMaXN0PEU+KSB0aGlzLnBhcmFtZXRlcnMuZ2V0KGtleSk7Ci0gICAgICAgIHJldHVybiAobnVsbCA9PSBsaXN0KSA/IENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QoZGVmYXVsdFZhbHVlLmdldCgpKSA6IGxpc3Q7CisgICAgICAgIHJldHVybiAobnVsbCA9PSBsaXN0KSA/IChudWxsID09IGRlZmF1bHRWYWx1ZSA/IENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpIDogQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdChkZWZhdWx0VmFsdWUuZ2V0KCkpKSA6IGxpc3Q7CiAKICAgICB9CiAKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC91dGlsL1dpdGhPcHRpb25zLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvdXRpbC9XaXRoT3B0aW9ucy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlMjM5NzYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvdXRpbC9XaXRoT3B0aW9ucy5qYXZhCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbDsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkdyYXBoVHJhdmVyc2FsOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuSW5kZXhTdGVwOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkVkZ2U7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuRWxlbWVudDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5HcmFwaDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4UHJvcGVydHk7CisKKy8qKgorICogQ29uZmlndXJhdGlvbiBvcHRpb25zIHRvIGJlIHBhc3NlZCB0byB0aGUge0BsaW5rIEdyYXBoVHJhdmVyc2FsI3dpdGgoU3RyaW5nLCBPYmplY3QpfS4KKyAqCisgKiBAYXV0aG9yIERhbmllbCBLdXBwaXR6IChodHRwOi8vZ3JlbWxpbi5ndXJ1KQorICovCitwdWJsaWMgY2xhc3MgV2l0aE9wdGlvbnMgeworCisgICAgLy8KKyAgICAvLyBQcm9wZXJ0eU1hcFN0ZXAKKyAgICAvLworCisgICAgLyoqCisgICAgICogQ29uZmlndXJlcyB0aGUgdG9rZW5zIHRvIGJlIGluY2x1ZGVkIGluIHZhbHVlIG1hcHMuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgdG9rZW5zID0gR3JhcGguSGlkZGVuLmhpZGUoInRpbmtlcnBvcC52YWx1ZU1hcC50b2tlbnMiKTsKKworICAgIC8qKgorICAgICAqIEluY2x1ZGUgbm8gdG9rZW5zLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgaW50IG5vbmUgPSAwOworCisgICAgLyoqCisgICAgICogSW5jbHVkZSBpZHMgKGFmZmVjdHMgYWxsIHtAbGluayBFbGVtZW50fSB2YWx1ZSBtYXBzKS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGludCBpZHMgPSAxOworCisgICAgLyoqCisgICAgICogSW5jbHVkZSBsYWJlbHMgKGFmZmVjdHMgYWxsIHtAbGluayBWZXJ0ZXh9IGFuZCB7QGxpbmsgRWRnZX0gdmFsdWUgbWFwcykuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBpbnQgbGFiZWxzID0gMjsKKworICAgIC8qKgorICAgICAqIEluY2x1ZGUga2V5cyAoYWZmZWN0cyBhbGwge0BsaW5rIFZlcnRleFByb3BlcnR5fSB2YWx1ZSBtYXBzKS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGludCBrZXlzID0gNDsKKworICAgIC8qKgorICAgICAqIEluY2x1ZGUga2V5cyAoYWZmZWN0cyBhbGwge0BsaW5rIFZlcnRleFByb3BlcnR5fSB2YWx1ZSBtYXBzKS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGludCB2YWx1ZXMgPSA4OworCisgICAgLyoqCisgICAgICogSW5jbHVkZSBhbGwgdG9rZW5zLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgaW50IGFsbCA9IGlkcyB8IGxhYmVscyB8IGtleXMgfCB2YWx1ZXM7CisKKyAgICAvLworICAgIC8vIEluZGV4U3RlcAorICAgIC8vCisKKyAgICAvKioKKyAgICAgKiBDb25maWd1cmVzIHRoZSBpbmRleGVyIHRvIGJlIHVzZWQgaW4ge0BsaW5rIEluZGV4U3RlcH0uCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgaW5kZXhlciA9IEdyYXBoLkhpZGRlbi5oaWRlKCJ0aW5rZXJwb3AuaW5kZXguaW5kZXhlciIpOworCisgICAgLyoqCisgICAgICogSW5kZXggaXRlbXMgdXNpbmcgMi1pdGVtIGxpc3RzLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgaW50IGxpc3QgPSAwOworCisgICAgLyoqCisgICAgICogSW5kZXggaXRlbXMgdXNpbmcgYSB7QGNvZGUgTGlua2VkSGFzaE1hcH0uCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBpbnQgbWFwID0gMTsKK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC91dGlsL2V2ZW50L0NvbnNvbGVNdXRhdGlvbkxpc3RlbmVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvdXRpbC9ldmVudC9Db25zb2xlTXV0YXRpb25MaXN0ZW5lci5qYXZhCmluZGV4IDkzN2Y0MTQuLjFiZmRmMjQgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC91dGlsL2V2ZW50L0NvbnNvbGVNdXRhdGlvbkxpc3RlbmVyLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL3V0aWwvZXZlbnQvQ29uc29sZU11dGF0aW9uTGlzdGVuZXIuamF2YQpAQCAtODMsMTEgKzgzLDYgQEAKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgdm9pZCB2ZXJ0ZXhQcm9wZXJ0eUNoYW5nZWQoZmluYWwgVmVydGV4IGVsZW1lbnQsIGZpbmFsIFByb3BlcnR5IG9sZFZhbHVlLCBmaW5hbCBPYmplY3Qgc2V0VmFsdWUsIGZpbmFsIE9iamVjdC4uLiB2ZXJ0ZXhQcm9wZXJ0eUtleVZhbHVlcykgewotICAgICAgICAvLyBkbyBub3RoaW5nIC0gZGVwcmVjYXRlZAotICAgIH0KLQotICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyB2b2lkIHZlcnRleFByb3BlcnR5Q2hhbmdlZChmaW5hbCBWZXJ0ZXggZWxlbWVudCwgZmluYWwgVmVydGV4UHJvcGVydHkgb2xkVmFsdWUsIGZpbmFsIE9iamVjdCBzZXRWYWx1ZSwgZmluYWwgT2JqZWN0Li4uIHZlcnRleFByb3BlcnR5S2V5VmFsdWVzKSB7CiAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVmVydGV4IFsiICsgZWxlbWVudC50b1N0cmluZygpICsgIl0gcHJvcGVydHkgWyIgKyBvbGRWYWx1ZSArICJdIGNoYW5nZSB0byBbIiArIHNldFZhbHVlICsgIl0gaW4gZ3JhcGggWyIgKyBncmFwaC50b1N0cmluZygpICsgIl0iKTsKICAgICB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvdXRpbC9ldmVudC9NdXRhdGlvbkxpc3RlbmVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvdXRpbC9ldmVudC9NdXRhdGlvbkxpc3RlbmVyLmphdmEKaW5kZXggMjBmOGY0NC4uYWNlYWRiMiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL3V0aWwvZXZlbnQvTXV0YXRpb25MaXN0ZW5lci5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC91dGlsL2V2ZW50L011dGF0aW9uTGlzdGVuZXIuamF2YQpAQCAtNTAsMTkgKzUwLDEwIEBACiAgICAgLyoqCiAgICAgICogUmFpc2VkIGFmdGVyIHRoZSBwcm9wZXJ0eSBvZiBhIHtAbGluayBWZXJ0ZXh9IGNoYW5nZWQuCiAgICAgICoKLSAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuMi43LCByZXBsYWNlZCBieSB7QGxpbmsgI3ZlcnRleFByb3BlcnR5Q2hhbmdlZChWZXJ0ZXgsIFZlcnRleFByb3BlcnR5LCBPYmplY3QsIE9iamVjdC4uLil9LgotICAgICAqLwotICAgIHB1YmxpYyB2b2lkIHZlcnRleFByb3BlcnR5Q2hhbmdlZChmaW5hbCBWZXJ0ZXggZWxlbWVudCwgZmluYWwgUHJvcGVydHkgb2xkVmFsdWUsIGZpbmFsIE9iamVjdCBzZXRWYWx1ZSwgZmluYWwgT2JqZWN0Li4uIHZlcnRleFByb3BlcnR5S2V5VmFsdWVzKTsKLQotICAgIC8qKgotICAgICAqIFJhaXNlZCBhZnRlciB0aGUgcHJvcGVydHkgb2YgYSB7QGxpbmsgVmVydGV4fSBjaGFuZ2VkLgotICAgICAqCiAgICAgICogQHBhcmFtIGVsZW1lbnQgIHRoZSB7QGxpbmsgVmVydGV4fSB0aGF0IGNoYW5nZWQKICAgICAgKiBAcGFyYW0gc2V0VmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgcHJvcGVydHkKICAgICAgKi8KLSAgICBwdWJsaWMgZGVmYXVsdCB2b2lkIHZlcnRleFByb3BlcnR5Q2hhbmdlZChmaW5hbCBWZXJ0ZXggZWxlbWVudCwgZmluYWwgVmVydGV4UHJvcGVydHkgb2xkVmFsdWUsIGZpbmFsIE9iamVjdCBzZXRWYWx1ZSwgZmluYWwgT2JqZWN0Li4uIHZlcnRleFByb3BlcnR5S2V5VmFsdWVzKSB7Ci0gICAgICAgIHZlcnRleFByb3BlcnR5Q2hhbmdlZChlbGVtZW50LCAoUHJvcGVydHkpIG9sZFZhbHVlLCBzZXRWYWx1ZSwgdmVydGV4UHJvcGVydHlLZXlWYWx1ZXMpOwotICAgIH0KKyAgICBwdWJsaWMgdm9pZCB2ZXJ0ZXhQcm9wZXJ0eUNoYW5nZWQoZmluYWwgVmVydGV4IGVsZW1lbnQsIGZpbmFsIFZlcnRleFByb3BlcnR5IG9sZFZhbHVlLCBmaW5hbCBPYmplY3Qgc2V0VmFsdWUsIGZpbmFsIE9iamVjdC4uLiB2ZXJ0ZXhQcm9wZXJ0eUtleVZhbHVlcyk7CiAKICAgICAvKioKICAgICAgKiBSYWlzZWQgYWZ0ZXIgYSB7QGxpbmsgVmVydGV4UHJvcGVydHl9IHdhcyByZW1vdmVkIGZyb20gdGhlIGdyYXBoLgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9UcmF2ZXJzYWxTdHJhdGVneVByb3h5LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L1RyYXZlcnNhbFN0cmF0ZWd5UHJveHkuamF2YQppbmRleCBmMjQ4ZGM2Li44YzljMjlhIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L1RyYXZlcnNhbFN0cmF0ZWd5UHJveHkuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L1RyYXZlcnNhbFN0cmF0ZWd5UHJveHkuamF2YQpAQCAtMjAsMTQgKzIwLDIwIEBACiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3k7CiAKIGltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29uZmlndXJhdGlvbi5Db25maWd1cmF0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuQnl0ZWNvZGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWxTb3VyY2U7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWxTdHJhdGVneTsKIAogaW1wb3J0IGphdmEuaW8uU2VyaWFsaXphYmxlOwogCiAvKioKKyAqIFRoaXMgY2xhc3MgaXMgZm9yIHVzZSB3aXRoIHtAbGluayBCeXRlY29kZX0gYW5kIGZvciBzZXJpYWxpemF0aW9uIHB1cnBvc2VzLiBJdCBpcyBub3QgbWVhbnQgZm9yIGRpcmVjdCB1c2Ugd2l0aAorICoge0BsaW5rIFRyYXZlcnNhbFNvdXJjZSN3aXRoU3RyYXRlZ2llcyhUcmF2ZXJzYWxTdHJhdGVneVtdKX0uCisgKgogICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCiAgKi8KLXB1YmxpYyBmaW5hbCBjbGFzcyBUcmF2ZXJzYWxTdHJhdGVneVByb3h5PFQgZXh0ZW5kcyBUcmF2ZXJzYWxTdHJhdGVneT4gaW1wbGVtZW50cyBTZXJpYWxpemFibGUgeworcHVibGljIGZpbmFsIGNsYXNzIFRyYXZlcnNhbFN0cmF0ZWd5UHJveHk8VCBleHRlbmRzIFRyYXZlcnNhbFN0cmF0ZWd5PiBpbXBsZW1lbnRzIFNlcmlhbGl6YWJsZSwgVHJhdmVyc2FsU3RyYXRlZ3kgewogCiAgICAgcHJpdmF0ZSBmaW5hbCBDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CiAgICAgcHJpdmF0ZSBmaW5hbCBDbGFzczxUPiBzdHJhdGVneUNsYXNzOwpAQCAtNDgsNCArNTQsMTQgQEAKICAgICBwdWJsaWMgQ2xhc3M8VD4gZ2V0U3RyYXRlZ3lDbGFzcygpIHsKICAgICAgICAgcmV0dXJuIHRoaXMuc3RyYXRlZ3lDbGFzczsKICAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBhcHBseShmaW5hbCBUcmF2ZXJzYWwuQWRtaW4gdHJhdmVyc2FsKSB7CisgICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigiVHJhdmVyc2FsU3RyYXRlZ3lQcm94eSBpcyBub3QgbWVhbnQgdG8gYmUgdXNlZCBkaXJlY3RseSBhcyBhIFRyYXZlcnNhbFN0cmF0ZWd5IGFuZCBpcyBmb3Igc2VyaWFsaXphdGlvbiBwdXJwb3NlcyBvbmx5Iik7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGludCBjb21wYXJlVG8oZmluYWwgT2JqZWN0IG8pIHsKKyAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKCJUcmF2ZXJzYWxTdHJhdGVneVByb3h5IGlzIG5vdCBtZWFudCB0byBiZSB1c2VkIGRpcmVjdGx5IGFzIGEgVHJhdmVyc2FsU3RyYXRlZ3kgYW5kIGlzIGZvciBzZXJpYWxpemF0aW9uIHB1cnBvc2VzIG9ubHkiKTsKKyAgICB9CiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vQ29ubmVjdGl2ZVN0cmF0ZWd5LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vQ29ubmVjdGl2ZVN0cmF0ZWd5LmphdmEKaW5kZXggZWI4NWM3Yi4uM2RlYWI2ZCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL0Nvbm5lY3RpdmVTdHJhdGVneS5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9Db25uZWN0aXZlU3RyYXRlZ3kuamF2YQpAQCAtMzQsNiArMzQsOCBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuQWJzdHJhY3RUcmF2ZXJzYWxTdHJhdGVneTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuVHJhdmVyc2FsSGVscGVyOwogCitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOworaW1wb3J0IGphdmEudXRpbC5MaXN0OwogaW1wb3J0IGphdmEudXRpbC5TZXQ7CiAKIC8qKgpAQCAtNzYsNDIgKzc4LDU1IEBACiAKICAgICBwcml2YXRlIHN0YXRpYyB2b2lkIHByb2Nlc3NDb25qdW5jdGlvbk1hcmtlcihmaW5hbCBDbGFzczw/IGV4dGVuZHMgQ29ubmVjdGl2ZVN0ZXA+IG1hcmtlckNsYXNzLCBmaW5hbCBUcmF2ZXJzYWwuQWRtaW48PywgPz4gdHJhdmVyc2FsKSB7CiAKLSAgICAgICAgVHJhdmVyc2FsSGVscGVyLmdldFN0ZXBzT2ZDbGFzcyhtYXJrZXJDbGFzcywgdHJhdmVyc2FsKS5zdHJlYW0oKQotICAgICAgICAgICAgICAgIC5maWx0ZXIoY29uanVuY3Rpb25TdGVwIC0+IGNvbmp1bmN0aW9uU3RlcC5nZXRMb2NhbENoaWxkcmVuKCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIC5maW5kRmlyc3QoKS5pZlByZXNlbnQoY29ubmVjdGl2ZVN0ZXAgLT4gewotCi0gICAgICAgICAgICBTdGVwPD8sID8+IGN1cnJlbnRTdGVwID0gY29ubmVjdGl2ZVN0ZXAuZ2V0TmV4dFN0ZXAoKTsKLSAgICAgICAgICAgIGZpbmFsIFRyYXZlcnNhbC5BZG1pbjw/LCA/PiByaWdodFRyYXZlcnNhbCA9IF9fLnN0YXJ0KCkuYXNBZG1pbigpOwotICAgICAgICAgICAgaWYgKCFjb25uZWN0aXZlU3RlcC5nZXRMYWJlbHMoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBmaW5hbCBTdGFydFN0ZXA8Pz4gc3RhcnRTdGVwID0gbmV3IFN0YXJ0U3RlcDw+KHJpZ2h0VHJhdmVyc2FsKTsKLSAgICAgICAgICAgICAgICBmaW5hbCBTZXQ8U3RyaW5nPiBjb25qdW5jdGlvbkxhYmVscyA9ICgoU3RlcDw/LCA/PikgY29ubmVjdGl2ZVN0ZXApLmdldExhYmVscygpOwotICAgICAgICAgICAgICAgIGNvbmp1bmN0aW9uTGFiZWxzLmZvckVhY2goc3RhcnRTdGVwOjphZGRMYWJlbCk7Ci0gICAgICAgICAgICAgICAgY29uanVuY3Rpb25MYWJlbHMuZm9yRWFjaChsYWJlbCAtPiBjb25uZWN0aXZlU3RlcC5yZW1vdmVMYWJlbChsYWJlbCkpOwotICAgICAgICAgICAgICAgIHJpZ2h0VHJhdmVyc2FsLmFkZFN0ZXAoc3RhcnRTdGVwKTsKKyAgICAgICAgZmluYWwgTGlzdDxTdGVwPiBzdGVwcyA9IHRyYXZlcnNhbC5nZXRTdGVwcygpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHN0ZXBzLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICBmaW5hbCBTdGVwIHN0ZXAgPSBzdGVwcy5nZXQoaSk7CisgICAgICAgICAgICBpZiAoc3RlcC5nZXRDbGFzcygpLmVxdWFscyhtYXJrZXJDbGFzcykpIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBDb25uZWN0aXZlU3RlcDw/PiBjdXJyZW50U3RlcCA9IChDb25uZWN0aXZlU3RlcCkgc3RlcDsKKyAgICAgICAgICAgICAgICBpZiAoY3VycmVudFN0ZXAuZ2V0TG9jYWxDaGlsZHJlbigpLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgICAgICBUcmF2ZXJzYWwuQWRtaW48PywgPz4gY29ubmVjdGl2ZVRyYXZlcnNhbDsKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudFN0ZXAuYWRkTG9jYWxDaGlsZChjb25uZWN0aXZlVHJhdmVyc2FsID0gX18uc3RhcnQoKS5hc0FkbWluKCkpOworICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gaSAtIDE7IGogPj0gMDsgaS0tLCBqLS0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIFN0ZXAgcHJldmlvdXNTdGVwID0gc3RlcHMuZ2V0KGopOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxlZ2FsQ3VycmVudFN0ZXAocHJldmlvdXNTdGVwKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3RpdmVUcmF2ZXJzYWwuYWRkU3RlcCgwLCBwcmV2aW91c1N0ZXApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYXZlcnNhbC5yZW1vdmVTdGVwKHByZXZpb3VzU3RlcCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaSsrOworICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RlcC5hZGRMb2NhbENoaWxkKGNvbm5lY3RpdmVUcmF2ZXJzYWwgPSBjb25uZWN0aXZlVHJhdmVyc2FsKGNvbm5lY3RpdmVUcmF2ZXJzYWwsIGN1cnJlbnRTdGVwKSk7CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdGVwLmdldExhYmVscygpLmZvckVhY2goY3VycmVudFN0ZXA6OnJlbW92ZUxhYmVsKTsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGkgPCBzdGVwcy5zaXplKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIFN0ZXAgbmV4dFN0ZXAgPSBzdGVwcy5nZXQoaSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGVnYWxDdXJyZW50U3RlcChuZXh0U3RlcCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV4dFN0ZXAuZ2V0Q2xhc3MoKS5lcXVhbHMobWFya2VyQ2xhc3MpICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKENvbm5lY3RpdmVTdGVwKSBuZXh0U3RlcCkuZ2V0TG9jYWxDaGlsZHJlbigpLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBDb25uZWN0aXZlU3RlcDw/PiBuZXh0Q29ubmVjdGl2ZVN0ZXAgPSAoQ29ubmVjdGl2ZVN0ZXA8Pz4pIG5leHRTdGVwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RlcC5hZGRMb2NhbENoaWxkKGNvbm5lY3RpdmVUcmF2ZXJzYWwgPSBjb25uZWN0aXZlVHJhdmVyc2FsKGNvbm5lY3RpdmVUcmF2ZXJzYWwsIG5leHRDb25uZWN0aXZlU3RlcCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3RpdmVUcmF2ZXJzYWwuYWRkU3RlcChuZXh0U3RlcCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYXZlcnNhbC5yZW1vdmVTdGVwKG5leHRTdGVwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFN0ZXAgaW5zdGFuY2VvZiBPclN0ZXApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdGVwLmdldExvY2FsQ2hpbGRyZW4oKS5mb3JFYWNoKHQgLT4gcHJvY2Vzc0Nvbmp1bmN0aW9uTWFya2VyKEFuZFN0ZXAuY2xhc3MsIHQpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHdoaWxlIChsZWdhbEN1cnJlbnRTdGVwKGN1cnJlbnRTdGVwKSkgewotICAgICAgICAgICAgICAgIGZpbmFsIFN0ZXA8PywgPz4gbmV4dFN0ZXAgPSBjdXJyZW50U3RlcC5nZXROZXh0U3RlcCgpOwotICAgICAgICAgICAgICAgIHJpZ2h0VHJhdmVyc2FsLmFkZFN0ZXAoY3VycmVudFN0ZXApOwotICAgICAgICAgICAgICAgIHRyYXZlcnNhbC5yZW1vdmVTdGVwKGN1cnJlbnRTdGVwKTsKLSAgICAgICAgICAgICAgICBjdXJyZW50U3RlcCA9IG5leHRTdGVwOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcHJvY2Vzc0Nvbm5lY3RpdmVNYXJrZXIocmlnaHRUcmF2ZXJzYWwpOworICAgICAgICB9CisgICAgfQogCi0gICAgICAgICAgICBjdXJyZW50U3RlcCA9IGNvbm5lY3RpdmVTdGVwLmdldFByZXZpb3VzU3RlcCgpOwotICAgICAgICAgICAgZmluYWwgVHJhdmVyc2FsLkFkbWluPD8sID8+IGxlZnRUcmF2ZXJzYWwgPSBfXy5zdGFydCgpLmFzQWRtaW4oKTsKLSAgICAgICAgICAgIHdoaWxlIChsZWdhbEN1cnJlbnRTdGVwKGN1cnJlbnRTdGVwKSkgewotICAgICAgICAgICAgICAgIGZpbmFsIFN0ZXA8PywgPz4gcHJldmlvdXNTdGVwID0gY3VycmVudFN0ZXAuZ2V0UHJldmlvdXNTdGVwKCk7Ci0gICAgICAgICAgICAgICAgbGVmdFRyYXZlcnNhbC5hZGRTdGVwKDAsIGN1cnJlbnRTdGVwKTsKLSAgICAgICAgICAgICAgICB0cmF2ZXJzYWwucmVtb3ZlU3RlcChjdXJyZW50U3RlcCk7Ci0gICAgICAgICAgICAgICAgY3VycmVudFN0ZXAgPSBwcmV2aW91c1N0ZXA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwcm9jZXNzQ29ubmVjdGl2ZU1hcmtlcihsZWZ0VHJhdmVyc2FsKTsKLQotICAgICAgICAgICAgaWYgKGNvbm5lY3RpdmVTdGVwIGluc3RhbmNlb2YgQW5kU3RlcCkKLSAgICAgICAgICAgICAgICBUcmF2ZXJzYWxIZWxwZXIucmVwbGFjZVN0ZXAoKFN0ZXApIGNvbm5lY3RpdmVTdGVwLCBuZXcgQW5kU3RlcCh0cmF2ZXJzYWwsIGxlZnRUcmF2ZXJzYWwsIHJpZ2h0VHJhdmVyc2FsKSwgdHJhdmVyc2FsKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBUcmF2ZXJzYWxIZWxwZXIucmVwbGFjZVN0ZXAoKFN0ZXApIGNvbm5lY3RpdmVTdGVwLCBuZXcgT3JTdGVwKHRyYXZlcnNhbCwgbGVmdFRyYXZlcnNhbCwgcmlnaHRUcmF2ZXJzYWwpLCB0cmF2ZXJzYWwpOwotICAgICAgICB9KTsKKyAgICBwcml2YXRlIHN0YXRpYyBUcmF2ZXJzYWwuQWRtaW48Pyw/PiBjb25uZWN0aXZlVHJhdmVyc2FsKGZpbmFsIFRyYXZlcnNhbC5BZG1pbjw/LCA/PiBjb25uZWN0aXZlVHJhdmVyc2FsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgQ29ubmVjdGl2ZVN0ZXAgY29ubmVjdGl2ZVN0ZXApIHsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsLkFkbWluPD8sID8+IHRyYXZlcnNhbCA9IF9fLnN0YXJ0KCkuYXNBZG1pbigpOworICAgICAgICBmaW5hbCBTZXQ8U3RyaW5nPiBjb25qdW5jdGlvbkxhYmVscyA9IGNvbm5lY3RpdmVTdGVwLmdldExhYmVscygpOworICAgICAgICBpZiAoIWNvbmp1bmN0aW9uTGFiZWxzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgZmluYWwgU3RhcnRTdGVwPD8+IHN0YXJ0U3RlcCA9IG5ldyBTdGFydFN0ZXA8Pihjb25uZWN0aXZlVHJhdmVyc2FsKTsKKyAgICAgICAgICAgIGNvbmp1bmN0aW9uTGFiZWxzLmZvckVhY2goc3RhcnRTdGVwOjphZGRMYWJlbCk7CisgICAgICAgICAgICB0cmF2ZXJzYWwuYWRkU3RlcChzdGFydFN0ZXApOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cmF2ZXJzYWw7CiAgICAgfQogCiAgICAgcHVibGljIHN0YXRpYyBDb25uZWN0aXZlU3RyYXRlZ3kgaW5zdGFuY2UoKSB7CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vRWxlbWVudElkU3RyYXRlZ3kuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9FbGVtZW50SWRTdHJhdGVneS5qYXZhCmluZGV4IGM4ZjlkMjIuLjI1YTI4MzMgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9FbGVtZW50SWRTdHJhdGVneS5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9FbGVtZW50SWRTdHJhdGVneS5qYXZhCkBAIC0yMSw3ICsyMSw3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmNvbmZpZ3VyYXRpb24uQ29uZmlndXJhdGlvbjsKIGltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29uZmlndXJhdGlvbi5NYXBDb25maWd1cmF0aW9uOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlBhcmFtZXRlcml6aW5nOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5QYXJhbWV0ZXJpemluZzsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbFN0cmF0ZWd5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5IYXNDb250YWluZXJIb2xkZXI7CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vRXZlbnRTdHJhdGVneS5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL0V2ZW50U3RyYXRlZ3kuamF2YQppbmRleCA2ZmViMjE4Li4yMDYxZTdmIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vRXZlbnRTdHJhdGVneS5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9FdmVudFN0cmF0ZWd5LmphdmEKQEAgLTU3LDUzICs1NywyMyBAQAogICovCiBwdWJsaWMgZmluYWwgY2xhc3MgRXZlbnRTdHJhdGVneSBleHRlbmRzIEFic3RyYWN0VHJhdmVyc2FsU3RyYXRlZ3k8VHJhdmVyc2FsU3RyYXRlZ3kuRGVjb3JhdGlvblN0cmF0ZWd5PiBpbXBsZW1lbnRzIFRyYXZlcnNhbFN0cmF0ZWd5LkRlY29yYXRpb25TdHJhdGVneSB7CiAgICAgcHJpdmF0ZSBmaW5hbCBFdmVudFF1ZXVlIGV2ZW50UXVldWU7Ci0gICAgcHJpdmF0ZSBmaW5hbCBDbGFzczw/PiBkZXRhY2htZW50RmFjdG9yeTsKKyAgICBwcml2YXRlIGZpbmFsIERldGFjaG1lbnQgZGV0YWNobWVudDsKIAogICAgIHByaXZhdGUgRXZlbnRTdHJhdGVneShmaW5hbCBCdWlsZGVyIGJ1aWxkZXIpIHsKICAgICAgICAgdGhpcy5ldmVudFF1ZXVlID0gYnVpbGRlci5ldmVudFF1ZXVlOwogICAgICAgICB0aGlzLmV2ZW50UXVldWUuc2V0TGlzdGVuZXJzKGJ1aWxkZXIubGlzdGVuZXJzKTsKLSAgICAgICAgdGhpcy5kZXRhY2htZW50RmFjdG9yeSA9IGJ1aWxkZXIuZGV0YWNobWVudEZhY3Rvcnk7CisgICAgICAgIHRoaXMuZGV0YWNobWVudCA9IGJ1aWxkZXIuZGV0YWNobWVudDsKICAgICB9CiAKLSAgICBwdWJsaWMgQ2xhc3M8Pz4gZ2V0RGV0YWNobWVudEZhY3RvcnkoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmRldGFjaG1lbnRGYWN0b3J5OworICAgIHB1YmxpYyBEZXRhY2htZW50IGdldERldGFjaG1lbnQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmRldGFjaG1lbnQ7CiAgICAgfQogCiAgICAgLyoqCiAgICAgICogQXBwbGllcyB0aGUgYXBwcm9wcmlhdGUgZGV0YWNoIG9wZXJhdGlvbiB0byBlbGVtZW50cyB0aGF0IHdpbGwgYmUgcmFpc2VkIGluIG11dGF0aW9uIGV2ZW50cy4KICAgICAgKi8KICAgICBwdWJsaWMgPFI+IFIgZGV0YWNoKGZpbmFsIFIgYXR0YWNoZWQpIHsKLSAgICAgICAgaWYgKG51bGwgPT0gZGV0YWNobWVudEZhY3RvcnkpCi0gICAgICAgICAgICByZXR1cm4gYXR0YWNoZWQ7Ci0gICAgICAgIGVsc2UgaWYgKGRldGFjaG1lbnRGYWN0b3J5LmVxdWFscyhEZXRhY2hlZEZhY3RvcnkuY2xhc3MpKQotICAgICAgICAgICAgcmV0dXJuIERldGFjaGVkRmFjdG9yeS5kZXRhY2goYXR0YWNoZWQsIHRydWUpOwotICAgICAgICBlbHNlIGlmIChkZXRhY2htZW50RmFjdG9yeS5lcXVhbHMoUmVmZXJlbmNlRmFjdG9yeS5jbGFzcykpCi0gICAgICAgICAgICByZXR1cm4gUmVmZXJlbmNlRmFjdG9yeS5kZXRhY2goYXR0YWNoZWQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJVbmtub3duIGRldGFjaG1lbnQgb3B0aW9uIHVzaW5nICIgKyBkZXRhY2htZW50RmFjdG9yeS5nZXRTaW1wbGVOYW1lKCkpOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIEZvciBuZXdseSBjcmVhdGVkIHByb3BlcnRpZXMgdGhhdCBkbyBub3QgeWV0IGV4aXN0LCBhbiBlbXB0eSB7QGxpbmsgUHJvcGVydHl9IGlzIHJlcXVpcmVkIHRoYXQganVzdCBjb250YWlucwotICAgICAqIGEga2V5IGFzIGEgcmVmZXJlbmNlLgotICAgICAqLwotICAgIHB1YmxpYyA8UiBleHRlbmRzIFByb3BlcnR5PiBSIGVtcHR5KGZpbmFsIEVsZW1lbnQgZWxlbWVudCwgZmluYWwgU3RyaW5nIGtleSkgewotICAgICAgICAvLyBjdXJyZW50bHkgdGhlICJubyBkZXRhY2htZW50IiBtb2RlbCBzaW1wbHkgcmV0dXJucyBhIERldGFjaGVkIHZhbHVlIHRvIG1haW50YWluIGNvbnNpc3RlbmN5IHdpdGggdGhlCi0gICAgICAgIC8vIG9yaWdpbmFsIEFQSSB0aGF0IGFscmVhZHkgZXhpc3RlZCAod2hlcmUgcmV0dXJuaW5nICJEZXRhY2hlZCIgd2FzIHRoZSBvbmx5IG9wdGlvbikuIFRoaXMgY291bGQgcHJvYmFibHkKLSAgICAgICAgLy8gY2hhbmdlIGluIHRoZSBmdXR1cmUgdG8gdXNlIGFuICJlbXB0eSIgcHJvcGVydHkgb3IgcGVyaGFwcyB0aGUgImNoYW5nZSIgZXZlbnQgQVBJIGNvdWxkIGNoYW5nZSBhbGwgdG9nZXRoZXIKLSAgICAgICAgLy8gYW5kIGhhdmUgYSBkaWZmZXJlbnQgcmV0dXJuLgotICAgICAgICBpZiAobnVsbCA9PSBkZXRhY2htZW50RmFjdG9yeSB8fCBkZXRhY2htZW50RmFjdG9yeS5lcXVhbHMoRGV0YWNoZWRGYWN0b3J5LmNsYXNzKSkgewotICAgICAgICAgICAgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBWZXJ0ZXgpCi0gICAgICAgICAgICAgICAgcmV0dXJuIChSKSBuZXcgRGV0YWNoZWRWZXJ0ZXhQcm9wZXJ0eShudWxsLCBrZXksIG51bGwsIG51bGwpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiAoUikgbmV3IERldGFjaGVkUHJvcGVydHkoa2V5LCBudWxsKTsKLSAgICAgICAgfSBlbHNlIGlmIChkZXRhY2htZW50RmFjdG9yeS5lcXVhbHMoUmVmZXJlbmNlRmFjdG9yeS5jbGFzcykpIHsKLSAgICAgICAgICAgIGlmIChlbGVtZW50IGluc3RhbmNlb2YgVmVydGV4KQotICAgICAgICAgICAgICAgIHJldHVybiAoUikgbmV3IFJlZmVyZW5jZVZlcnRleFByb3BlcnR5KG5ldyBEZXRhY2hlZFZlcnRleFByb3BlcnR5KG51bGwsIGtleSwgbnVsbCwgbnVsbCkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiAoUikgbmV3IFJlZmVyZW5jZVByb3BlcnR5KG5ldyBEZXRhY2hlZFByb3BlcnR5KGtleSwgbnVsbCkpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIlVua25vd24gZW1wdHkgZGV0YWNobWVudCBvcHRpb24gdXNpbmcgIiArIGRldGFjaG1lbnRGYWN0b3J5LmdldFNpbXBsZU5hbWUoKSk7CisgICAgICAgIHJldHVybiAoUikgZGV0YWNobWVudC5kZXRhY2goYXR0YWNoZWQpOwogICAgIH0KIAogICAgIEBPdmVycmlkZQpAQCAtMTMyLDcgKzEwMiw3IEBACiAgICAgcHVibGljIGZpbmFsIHN0YXRpYyBjbGFzcyBCdWlsZGVyIHsKICAgICAgICAgcHJpdmF0ZSBmaW5hbCBMaXN0PE11dGF0aW9uTGlzdGVuZXI+IGxpc3RlbmVycyA9IG5ldyBBcnJheUxpc3Q8PigpOwogICAgICAgICBwcml2YXRlIEV2ZW50UXVldWUgZXZlbnRRdWV1ZSA9IG5ldyBEZWZhdWx0RXZlbnRRdWV1ZSgpOwotICAgICAgICBwcml2YXRlIENsYXNzPD8+IGRldGFjaG1lbnRGYWN0b3J5ID0gRGV0YWNoZWRGYWN0b3J5LmNsYXNzOworICAgICAgICBwcml2YXRlIERldGFjaG1lbnQgZGV0YWNobWVudCA9IERldGFjaG1lbnQuREVUQUNIRURfV0lUSF9QUk9QRVJUSUVTOwogCiAgICAgICAgIEJ1aWxkZXIoKSB7fQogCkBAIC0xNDcsMTUgKzExNywxMSBAQAogICAgICAgICB9CiAKICAgICAgICAgLyoqCi0gICAgICAgICAqIENvbmZpZ3VyZXMgdGhlIG1ldGhvZCBvZiBkZXRhY2htZW50IGZvciBlbGVtZW50IHByb3ZpZGVkIGluIG11dGF0aW9uIGNhbGxiYWNrIGV2ZW50cy4gSWYgY29uZmlndXJlZCB3aXRoCi0gICAgICAgICAqIHtAY29kZSBudWxsfSBmb3Igbm8gZGV0YWNobWVudCB3aXRoIGEgdHJhbnNhY3Rpb25hbCBncmFwaCwgYmUgYXdhcmUgdGhhdCBhY2Nlc3NpbmcgdGhlIGV2ZW50ZWQgZWxlbWVudHMKLSAgICAgICAgICogYWZ0ZXIge0Bjb2RlIGNvbW1pdCgpfSB3aWxsIGxpa2VseSBvcGVuIG5ldyB0cmFuc2FjdGlvbnMuCi0gICAgICAgICAqCi0gICAgICAgICAqIEBwYXJhbSBmYWN0b3J5Q2xhc3MgbXVzdCBiZSBlaXRoZXIge0Bjb2RlIG51bGx9IChmb3Igbm8gZGV0YWNobWVudCksIHtAbGluayBSZWZlcmVuY2VGYWN0b3J5fSBmb3IgZWxlbWVudHMKLSAgICAgICAgICogICAgICAgICAgICAgICAgICAgICB3aXRoIG5vIHByb3BlcnRpZXMgb3Ige0BsaW5rIERldGFjaGVkRmFjdG9yeX0gZm9yIGVsZW1lbnRzIHdpdGggcHJvcGVydGllcy4KKyAgICAgICAgICogQ29uZmlndXJlcyB0aGUgbWV0aG9kIG9mIGRldGFjaG1lbnQgZm9yIGVsZW1lbnQgcHJvdmlkZWQgaW4gbXV0YXRpb24gY2FsbGJhY2sgZXZlbnRzLiBUaGUgZGVmYXVsdCBpcworICAgICAgICAgKiB7QGxpbmsgRGV0YWNobWVudCNERVRBQ0hFRF9XSVRIX1BST1BFUlRJRVN9LgogICAgICAgICAgKi8KLSAgICAgICAgcHVibGljIEJ1aWxkZXIgZGV0YWNoKGZpbmFsIENsYXNzPD8+IGZhY3RvcnlDbGFzcykgewotICAgICAgICAgICAgZGV0YWNobWVudEZhY3RvcnkgPSBmYWN0b3J5Q2xhc3M7CisgICAgICAgIHB1YmxpYyBCdWlsZGVyIGRldGFjaChmaW5hbCBEZXRhY2htZW50IGRldGFjaG1lbnQpIHsKKyAgICAgICAgICAgIHRoaXMuZGV0YWNobWVudCA9IGRldGFjaG1lbnQ7CiAgICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICAgfQogCkBAIC0xNjUsNiArMTMxLDYwIEBACiAgICAgfQogCiAgICAgLyoqCisgICAgICogQSBjb21tb24gaW50ZXJmYWNlIGZvciBkZXRhY2htZW50LgorICAgICAqLworICAgIHB1YmxpYyBpbnRlcmZhY2UgRGV0YWNoZXIgeworICAgICAgICBwdWJsaWMgT2JqZWN0IGRldGFjaChmaW5hbCBPYmplY3Qgb2JqZWN0KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBPcHRpb25zIGZvciBkZXRhY2hpbmcgZWxlbWVudHMgZnJvbSB0aGUgZ3JhcGggZHVyaW5nIGV2ZW50aW5nLgorICAgICAqLworICAgIHB1YmxpYyBlbnVtIERldGFjaG1lbnQgaW1wbGVtZW50cyBEZXRhY2hlciB7CisgICAgICAgIC8qKgorICAgICAgICAgKiBEb2VzIG5vdCBkZXRhY2ggdGhlIGVsZW1lbnQgZnJvbSB0aGUgZ3JhcGguIEl0IHNob3VsZCBiZSBub3RlZCB0aGF0IGlmIHRoaXMgb3B0aW9uIGlzIHVzZWQgd2l0aAorICAgICAgICAgKiB0cmFuc2FjdGlvbmFsIGdyYXBocyBuZXcgdHJhbnNhY3Rpb25zIG1heSBiZSBvcGVuZWQgaWYgdGhlc2UgZWxlbWVudHMgYXJlIGFjY2Vzc2VkIGFmdGVyIGEge0Bjb2RlIGNvbW1pdCgpfQorICAgICAgICAgKiBpcyBjYWxsZWQuCisgICAgICAgICAqLworICAgICAgICBOT05FIHsKKyAgICAgICAgICAgIEBPdmVycmlkZQorICAgICAgICAgICAgcHVibGljIE9iamVjdCBkZXRhY2goZmluYWwgT2JqZWN0IG9iamVjdCkgeworICAgICAgICAgICAgICAgIHJldHVybiBvYmplY3Q7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFVzZXMge0BsaW5rIERldGFjaGVkRmFjdG9yeX0gdG8gZGV0YWNoIGFuZCBpbmNsdWRlcyBwcm9wZXJ0aWVzIG9mIGVsZW1lbnRzIHRoYXQgaGF2ZSB0aGVtLgorICAgICAgICAgKi8KKyAgICAgICAgREVUQUNIRURfV0lUSF9QUk9QRVJUSUVTIHsKKyAgICAgICAgICAgIEBPdmVycmlkZQorICAgICAgICAgICAgcHVibGljIE9iamVjdCBkZXRhY2goZmluYWwgT2JqZWN0IG9iamVjdCkgeworICAgICAgICAgICAgICAgIHJldHVybiBEZXRhY2hlZEZhY3RvcnkuZGV0YWNoKG9iamVjdCwgdHJ1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFVzZXMge0BsaW5rIERldGFjaGVkRmFjdG9yeX0gdG8gZGV0YWNoIGFuZCBkb2VzIG5vdCBpbmNsdWRlIHByb3BlcnRpZXMgb2YgZWxlbWVudHMgdGhhdCBoYXZlIHRoZW0uCisgICAgICAgICAqLworICAgICAgICBERVRBQ0hFRF9OT19QUk9QRVJUSUVTIHsKKyAgICAgICAgICAgIEBPdmVycmlkZQorICAgICAgICAgICAgcHVibGljIE9iamVjdCBkZXRhY2goZmluYWwgT2JqZWN0IG9iamVjdCkgeworICAgICAgICAgICAgICAgIHJldHVybiBEZXRhY2hlZEZhY3RvcnkuZGV0YWNoKG9iamVjdCwgZmFsc2UpOworICAgICAgICAgICAgfQorICAgICAgICB9LAorCisgICAgICAgIC8qKgorICAgICAgICAgKiBVc2VzIHtAbGluayBSZWZlcmVuY2VGYWN0b3J5fSB0byBkZXRhY2ggd2hpY2ggb25seSBpbmNsdWRlcyBpZCBhbmQgbGFiZWwgb2YgZWxlbWVudHMuCisgICAgICAgICAqLworICAgICAgICBSRUZFUkVOQ0UgeworICAgICAgICAgICAgQE92ZXJyaWRlCisgICAgICAgICAgICBwdWJsaWMgT2JqZWN0IGRldGFjaChmaW5hbCBPYmplY3Qgb2JqZWN0KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFJlZmVyZW5jZUZhY3RvcnkuZGV0YWNoKG9iamVjdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKICAgICAgKiBHYXRoZXJzIG1lc3NhZ2VzIGZyb20gY2FsbGJhY2tzIGFuZCBmaXJlcyB0aGVtIHRvIGxpc3RlbmVycy4gIFdoZW4gdGhlIGV2ZW50IGlzIHNlbnQgdG8gdGhlIGxpc3RlbmVyIGlzCiAgICAgICogdXAgdG8gdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgaW50ZXJmYWNlLgogICAgICAqLwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL09wdGlvbnNTdHJhdGVneS5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL09wdGlvbnNTdHJhdGVneS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkNjRkN2YKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vT3B0aW9uc1N0cmF0ZWd5LmphdmEKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb247CisKK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29uZmlndXJhdGlvbi5Db25maWd1cmF0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5jb25maWd1cmF0aW9uLk1hcENvbmZpZ3VyYXRpb247CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWxTdHJhdGVneTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LkFic3RyYWN0VHJhdmVyc2FsU3RyYXRlZ3k7CisKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7CitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CitpbXBvcnQgamF2YS51dGlsLk1hcDsKKworLyoqCisgKiBUaGlzIHN0cmF0ZWd5IHdpbGwgbm90IGFsdGVyIHRoZSB0cmF2ZXJzYWwuIEl0IGlzIG9ubHkgYSBob2xkZXIgZm9yIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhlCisgKiB0cmF2ZXJzYWwgbWVhbnQgdG8gYmUgYWNjZXNzZWQgYnkgc3RlcHMgb3Igb3RoZXIgY2xhc3NlcyB0aGF0IG1pZ2h0IGhhdmUgc29tZSBpbnRlcmFjdGlvbiB3aXRoIGl0LiBJdCBpcworICogZXNzZW50aWFsbHkgYSB3YXkgZm9yIHVzZXJzIHRvIHByb3ZpZGUgdHJhdmVyc2FsIGxldmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIGluIHZhcmlvdXMgd2F5cyBieQorICogZGlmZmVyZW50IGdyYXBoIHByb3ZpZGVycy4KKyAqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK3B1YmxpYyBjbGFzcyBPcHRpb25zU3RyYXRlZ3kgZXh0ZW5kcyBBYnN0cmFjdFRyYXZlcnNhbFN0cmF0ZWd5PFRyYXZlcnNhbFN0cmF0ZWd5LkRlY29yYXRpb25TdHJhdGVneT4gaW1wbGVtZW50cyBUcmF2ZXJzYWxTdHJhdGVneS5EZWNvcmF0aW9uU3RyYXRlZ3kgeworCisgICAgLyoqCisgICAgICogQW4gZW1wdHkge0Bjb2RlIE9wdGlvbnNTdHJhdGVneX0gd2l0aCBubyBjb25maWd1cmF0aW9uIHZhbHVlcyBpbnNpZGUuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBPcHRpb25zU3RyYXRlZ3kgRU1QVFkgPSBPcHRpb25zU3RyYXRlZ3kuYnVpbGQoKS5jcmVhdGUoKTsKKworICAgIHByaXZhdGUgZmluYWwgTWFwPFN0cmluZywgT2JqZWN0PiBvcHRpb25zOworCisgICAgcHJpdmF0ZSBPcHRpb25zU3RyYXRlZ3koZmluYWwgQnVpbGRlciBidWlsZGVyKSB7CisgICAgICAgIG9wdGlvbnMgPSBidWlsZGVyLm9wdGlvbnM7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgb3B0aW9ucyBvbiB0aGUgc3RyYXRlZ3kgYXMgYW4gaW1tdXRhYmxlIHtAY29kZSBNYXB9LgorICAgICAqLworICAgIHB1YmxpYyBNYXA8U3RyaW5nLE9iamVjdD4gZ2V0T3B0aW9ucygpIHsKKyAgICAgICAgcmV0dXJuIENvbGxlY3Rpb25zLnVubW9kaWZpYWJsZU1hcChvcHRpb25zKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgQ29uZmlndXJhdGlvbiBnZXRDb25maWd1cmF0aW9uKCkgeworICAgICAgICByZXR1cm4gbmV3IE1hcENvbmZpZ3VyYXRpb24ob3B0aW9ucyk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgYXBwbHkoZmluYWwgVHJhdmVyc2FsLkFkbWluPD8sID8+IHRyYXZlcnNhbCkgeworICAgICAgICAvLyBoYXMgbm90IGVmZmVjdCBvbiB0aGUgdHJhdmVyc2FsIGl0c2VsZiAtIHNpbXBseSBjYXJyaWVzIGEgb3B0aW9ucyB3aXRoIGl0IHRoYXQgaW5kaXZpZHVhbCBzdGVwcworICAgICAgICAvLyBjYW4gY2hvb3NlIHRvIHVzZSBvciBub3QuCisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBPcHRpb25zU3RyYXRlZ3kgY3JlYXRlKGZpbmFsIENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikgeworICAgICAgICBmaW5hbCBCdWlsZGVyIGJ1aWxkZXIgPSBidWlsZCgpOworICAgICAgICBjb25maWd1cmF0aW9uLmdldEtleXMoKS5mb3JFYWNoUmVtYWluaW5nKGsgLT4gYnVpbGRlci53aXRoKGssIGNvbmZpZ3VyYXRpb24uZ2V0UHJvcGVydHkoaykpKTsKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIuY3JlYXRlKCk7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBCdWlsZGVyIGJ1aWxkKCkgeworICAgICAgICByZXR1cm4gbmV3IEJ1aWxkZXIoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIEJ1aWxkZXIgeworCisgICAgICAgIHByaXZhdGUgZmluYWwgTWFwPFN0cmluZywgT2JqZWN0PiBvcHRpb25zID0gbmV3IEhhc2hNYXA8PigpOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBBZGRzIGFuIGtleSB0byB0aGUgY29uZmlndXJhdGlvbiB3aXRoIHRoZSB2YWx1ZSBvZiB7QGNvZGUgdHJ1ZX0uCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgQnVpbGRlciB3aXRoKGZpbmFsIFN0cmluZyBrZXkpIHsKKyAgICAgICAgICAgIHJldHVybiB3aXRoKGtleSwgdHJ1ZSk7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogQWRkcyBhbiBvcHRpb24gdG8gdGhlIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgQnVpbGRlciB3aXRoKGZpbmFsIFN0cmluZyBrZXksIGZpbmFsIE9iamVjdCB2YWx1ZSkgeworICAgICAgICAgICAgb3B0aW9ucy5wdXQoa2V5LCB2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBPcHRpb25zU3RyYXRlZ3kgY3JlYXRlKCkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBPcHRpb25zU3RyYXRlZ3kodGhpcyk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vUGFydGl0aW9uU3RyYXRlZ3kuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9QYXJ0aXRpb25TdHJhdGVneS5qYXZhCmluZGV4IGY1YjI4MjUuLjExMTYwOWIgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9QYXJ0aXRpb25TdHJhdGVneS5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9QYXJ0aXRpb25TdHJhdGVneS5qYXZhCkBAIC0yMSw3ICsyMSw3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmNvbmZpZ3VyYXRpb24uQ29uZmlndXJhdGlvbjsKIGltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29uZmlndXJhdGlvbi5NYXBDb25maWd1cmF0aW9uOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlBhcmFtZXRlcml6aW5nOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5QYXJhbWV0ZXJpemluZzsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlN0ZXA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWxTdHJhdGVneTsKQEAgLTQ0LDYgKzQ0LDcgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuc2lkZUVmZmVjdC5BZGRQcm9wZXJ0eVN0ZXA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuSGFzQ29udGFpbmVyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLlBhcmFtZXRlcnM7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuV2l0aE9wdGlvbnM7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5BYnN0cmFjdFRyYXZlcnNhbFN0cmF0ZWd5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5UcmF2ZXJzYWxIZWxwZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuRWxlbWVudDsKQEAgLTE4MSw3ICsxODIsOCBAQAogICAgICAgICAgICAgICAgICAgICAvLyBhcyB0aGlzIGlzIGEgdmFsdWUgbWFwLCByZXBsYWNlIHRoYXQgc3RlcCB3aXRoIHByb3BlcnRpZXNNYXAoKSB0aGF0IHJldHVybnMgUHJvcGVydHlUeXBlLlZBTFVFLgogICAgICAgICAgICAgICAgICAgICAvLyBmcm9tIHRoZXJlLCBhZGQgdGhlIGZpbHRlciBhcyBzaG93biBhYm92ZSBhbmQgdGhlbiB1bndyYXAgdGhlIHByb3BlcnRpZXMgYXMgdGhleSB3b3VsZCBoYXZlCiAgICAgICAgICAgICAgICAgICAgIC8vIGJlZW4gZG9uZSB1bmRlciB2YWx1ZU1hcCgpCi0gICAgICAgICAgICAgICAgICAgIGZpbmFsIFByb3BlcnR5TWFwU3RlcCBwcm9wZXJ0eU1hcFN0ZXAgPSBuZXcgUHJvcGVydHlNYXBTdGVwKHRyYXZlcnNhbCwgc3RlcC5pc0luY2x1ZGVUb2tlbnMoKSwgUHJvcGVydHlUeXBlLlBST1BFUlRZLCBzdGVwLmdldFByb3BlcnR5S2V5cygpKTsKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgUHJvcGVydHlNYXBTdGVwIHByb3BlcnR5TWFwU3RlcCA9IG5ldyBQcm9wZXJ0eU1hcFN0ZXAodHJhdmVyc2FsLCBQcm9wZXJ0eVR5cGUuUFJPUEVSVFksIHN0ZXAuZ2V0UHJvcGVydHlLZXlzKCkpOworICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU1hcFN0ZXAuY29uZmlndXJlKFdpdGhPcHRpb25zLnRva2Vucywgc3RlcC5nZXRJbmNsdWRlZFRva2VucygpKTsKICAgICAgICAgICAgICAgICAgICAgVHJhdmVyc2FsSGVscGVyLnJlcGxhY2VTdGVwKHN0ZXAsIHByb3BlcnR5TWFwU3RlcCwgdHJhdmVyc2FsKTsKIAogICAgICAgICAgICAgICAgICAgICBmaW5hbCBMYW1iZGFNYXBTdGVwIG1hcFByb3BlcnRpZXNGaWx0ZXJTdGVwID0gbmV3IExhbWJkYU1hcFN0ZXA8Pih0cmF2ZXJzYWwsIG5ldyBNYXBQcm9wZXJ0aWVzRmlsdGVyKCkpOwpAQCAtMjA1LDcgKzIwNyw3IEBACiAgICAgICAgICAgICAvLyBlbmRzIHVwIGJlaW5nIGEgVmVydGV4IG9yIG5vdC4gIEFkZFByb3BlcnR5U3RlcCBjdXJyZW50bHkgY2hvb3NlcyB0byBzaW1wbHkgbm90IGJvdGhlcgogICAgICAgICAgICAgLy8gdG8gdXNlIHRoZSBhZGRpdGlvbmFsICJwcm9wZXJ0eSBtdXRhdGlvbnMiIGlmIHRoZSBFbGVtZW50IGJlaW5nIG11dGF0ZWQgaXMgYSBFZGdlIG9yCiAgICAgICAgICAgICAvLyBWZXJ0ZXhQcm9wZXJ0eQotICAgICAgICAgICAgKChNdXRhdGluZykgc3RlcCkuYWRkUHJvcGVydHlNdXRhdGlvbnMocGFydGl0aW9uS2V5LCB3cml0ZVBhcnRpdGlvbik7CisgICAgICAgICAgICAoKE11dGF0aW5nKSBzdGVwKS5jb25maWd1cmUocGFydGl0aW9uS2V5LCB3cml0ZVBhcnRpdGlvbik7CiAKICAgICAgICAgICAgIGlmIChpbmNsdWRlTWV0YVByb3BlcnRpZXMpIHsKICAgICAgICAgICAgICAgICAvLyBHcmFwaFRyYXZlcnNhbCBmb2xkcyBnLmFkZFYoKS5wcm9wZXJ0eSgnaycsJ3YnKSB0byBqdXN0IEFkZFZlcnRleFN0ZXAvQWRkVmVydGV4U3RhcnRTdGVwIHNvIHRoaXMKQEAgLTIyMSw3ICsyMjMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIFZlcnRleFByb3BlcnR5LkNhcmRpbmFsaXR5IGNhcmRpbmFsaXR5ID0gdmVydGV4RmVhdHVyZXMuZ2V0Q2FyZGluYWxpdHkoKFN0cmluZykgayk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi5mb3JFYWNoKG8gLT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBBZGRQcm9wZXJ0eVN0ZXAgYWRkUHJvcGVydHlTdGVwID0gbmV3IEFkZFByb3BlcnR5U3RlcCh0cmF2ZXJzYWwsIGNhcmRpbmFsaXR5LCBrLCBvKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkUHJvcGVydHlTdGVwLmFkZFByb3BlcnR5TXV0YXRpb25zKHBhcnRpdGlvbktleSwgd3JpdGVQYXJ0aXRpb24pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRQcm9wZXJ0eVN0ZXAuY29uZmlndXJlKHBhcnRpdGlvbktleSwgd3JpdGVQYXJ0aXRpb24pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRQcm9wZXJ0eVN0ZXBzVG9BcHBlbmQuYWRkKGFkZFByb3BlcnR5U3RlcCk7CiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbmVlZCB0byByZW1vdmUgdGhlIHBhcmFtZXRlciBmcm9tIHRoZSBBZGRWZXJ0ZXgvU3RhcnRTdGVwIGJlY2F1c2UgaXQncyBub3cgYmVpbmcgYWRkZWQKQEAgLTQyNCwxOCArNDI2LDYgQEAKICAgICAgICAgfQogCiAgICAgICAgIC8qKgotICAgICAgICAgKiBTcGVjaWZpZXMgdGhlIHBhcnRpdGlvbiBvZiB0aGUgZ3JhcGggdG8gcmVhZCBmcm9tLiAgSXQgaXMgcG9zc2libGUgdG8gYXNzaWduIG11bHRpcGxlIHBhcnRpdGlvbiBrZXlzIHNvCi0gICAgICAgICAqIGFzIHRvIHJlYWQgZnJvbSBtdWx0aXBsZSBwYXJ0aXRpb25zIGF0IHRoZSBzYW1lIHRpbWUuCi0gICAgICAgICAqCi0gICAgICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy4yLjMsIHJlcGxhY2VkIGJ5IHtAbGluayBCdWlsZGVyI3JlYWRQYXJ0aXRpb25zKExpc3QpfS4KLSAgICAgICAgICovCi0gICAgICAgIEBEZXByZWNhdGVkCi0gICAgICAgIHB1YmxpYyBCdWlsZGVyIGFkZFJlYWRQYXJ0aXRpb24oZmluYWwgU3RyaW5nIHJlYWRQYXJ0aXRpb24pIHsKLSAgICAgICAgICAgIHRoaXMucmVhZFBhcnRpdGlvbnMuYWRkKHJlYWRQYXJ0aXRpb24pOwotICAgICAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgICAgIH0KLQotICAgICAgICAvKioKICAgICAgICAgICogQ3JlYXRlcyB0aGUge0Bjb2RlIFBhcnRpdGlvblN0cmF0ZWd5fS4KICAgICAgICAgICovCiAgICAgICAgIHB1YmxpYyBQYXJ0aXRpb25TdHJhdGVneSBjcmVhdGUoKSB7CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vU3ViZ3JhcGhTdHJhdGVneS5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL1N1YmdyYXBoU3RyYXRlZ3kuamF2YQppbmRleCBhYTczOThiLi5hNTdhN2QzIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vU3ViZ3JhcGhTdHJhdGVneS5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9TdWJncmFwaFN0cmF0ZWd5LmphdmEKQEAgLTQzLDcgKzQzLDYgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuc2lkZUVmZmVjdC5TaWRlRWZmZWN0U3RlcDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5FbXB0eVN0ZXA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5BYnN0cmFjdFRyYXZlcnNhbFN0cmF0ZWd5OwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyLlRyYXZlcnNlclJlcXVpcmVtZW50OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5EZWZhdWx0VHJhdmVyc2FsOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5UcmF2ZXJzYWxIZWxwZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuRGlyZWN0aW9uOwpAQCAtMzg0LDIyICszODMsNiBAQAogICAgICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgICAgIH0KIAotICAgICAgICBARGVwcmVjYXRlZAotICAgICAgICAvKioKLSAgICAgICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjIuMiwgcmVwbGFjZWQgYnkge0Bjb2RlIEJ1aWxkZXIjdmVydGljZXN9LgotICAgICAgICAgKi8KLSAgICAgICAgcHVibGljIEJ1aWxkZXIgdmVydGV4Q3JpdGVyaW9uKGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsID8+IHByZWRpY2F0ZSkgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMudmVydGljZXMocHJlZGljYXRlKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8qKgotICAgICAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuMi4yLCByZXBsYWNlZCBieSB7QGNvZGUgQnVpbGRlciNlZGdlc30uCi0gICAgICAgICAqLwotICAgICAgICBARGVwcmVjYXRlZAotICAgICAgICBwdWJsaWMgQnVpbGRlciBlZGdlQ3JpdGVyaW9uKGZpbmFsIFRyYXZlcnNhbDxFZGdlLCA/PiBwcmVkaWNhdGUpIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLmVkZ2VzKHByZWRpY2F0ZSk7Ci0gICAgICAgIH0KLQogICAgICAgICBwdWJsaWMgU3ViZ3JhcGhTdHJhdGVneSBjcmVhdGUoKSB7CiAgICAgICAgICAgICBpZiAobnVsbCA9PSB0aGlzLnZlcnRleENyaXRlcmlvbiAmJiBudWxsID09IHRoaXMuZWRnZUNyaXRlcmlvbiAmJiBudWxsID09IHRoaXMudmVydGV4UHJvcGVydHlDcml0ZXJpb24pCiAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiQSBzdWJncmFwaCBtdXN0IGJlIGZpbHRlcmVkIGJ5IGEgdmVydGV4LCBlZGdlLCBvciB2ZXJ0ZXggcHJvcGVydHkgY3JpdGVyaW9uIik7CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2ZpbmFsaXphdGlvbi9SZWZlcmVuY2VFbGVtZW50U3RyYXRlZ3kuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZmluYWxpemF0aW9uL1JlZmVyZW5jZUVsZW1lbnRTdHJhdGVneS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxZTEzMjUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2ZpbmFsaXphdGlvbi9SZWZlcmVuY2VFbGVtZW50U3RyYXRlZ3kuamF2YQpAQCAtMCwwICsxLDcwIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5maW5hbGl6YXRpb247CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbFN0cmF0ZWd5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2VyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuTWFwU3RlcDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuc2lkZUVmZmVjdC5Qcm9maWxlU2lkZUVmZmVjdFN0ZXA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuRW1wdHlTdGVwOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuQWJzdHJhY3RUcmF2ZXJzYWxTdHJhdGVneTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuVHJhdmVyc2FsSGVscGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwucmVmZXJlbmNlLlJlZmVyZW5jZUZhY3Rvcnk7CisKK2ltcG9ydCBqYXZhLnV0aWwuT3B0aW9uYWw7CisKKy8qKgorICogQSBzdHJhdGVneSB0aGF0IGRldGFjaGVzIHRyYXZlcnNlcnMgd2l0aCBncmFwaCBlbGVtZW50cyBhcyByZWZlcmVuY2VzIChpLmUuIHdpdGhvdXQgcHJvcGVydGllcyAtIGp1c3Qge0Bjb2RlIGlkfQorICogYW5kIHtAY29kZSBsYWJlbH0uCisgKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgZmluYWwgY2xhc3MgUmVmZXJlbmNlRWxlbWVudFN0cmF0ZWd5IGV4dGVuZHMgQWJzdHJhY3RUcmF2ZXJzYWxTdHJhdGVneTxUcmF2ZXJzYWxTdHJhdGVneS5GaW5hbGl6YXRpb25TdHJhdGVneT4gaW1wbGVtZW50cyBUcmF2ZXJzYWxTdHJhdGVneS5GaW5hbGl6YXRpb25TdHJhdGVneSB7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBSZWZlcmVuY2VFbGVtZW50U3RyYXRlZ3kgSU5TVEFOQ0UgPSBuZXcgUmVmZXJlbmNlRWxlbWVudFN0cmF0ZWd5KCk7CisKKyAgICBwcml2YXRlIFJlZmVyZW5jZUVsZW1lbnRTdHJhdGVneSgpIHt9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBhcHBseShmaW5hbCBUcmF2ZXJzYWwuQWRtaW48PywgPz4gdHJhdmVyc2FsKSB7CisgICAgICAgIGlmICh0cmF2ZXJzYWwuZ2V0UGFyZW50KCkgPT0gRW1wdHlTdGVwLmluc3RhbmNlKCkpIHsKKyAgICAgICAgICAgIGZpbmFsIE9wdGlvbmFsPFByb2ZpbGVTaWRlRWZmZWN0U3RlcD4gcHJvZmlsZVN0ZXAgPSBUcmF2ZXJzYWxIZWxwZXIuZ2V0Rmlyc3RTdGVwT2ZBc3NpZ25hYmxlQ2xhc3MoUHJvZmlsZVNpZGVFZmZlY3RTdGVwLmNsYXNzLCB0cmF2ZXJzYWwpOworICAgICAgICAgICAgZmluYWwgaW50IGluZGV4ID0gcHJvZmlsZVN0ZXAubWFwKHN0ZXAgLT4gdHJhdmVyc2FsLmdldFN0ZXBzKCkuaW5kZXhPZihzdGVwKSkKKyAgICAgICAgICAgICAgICAgICAgLm9yRWxzZUdldCgoKSAtPiB0cmF2ZXJzYWwuZ2V0U3RlcHMoKS5zaXplKCkpOworICAgICAgICAgICAgdHJhdmVyc2FsLmFkZFN0ZXAoaW5kZXgsIG5ldyBSZWZlcmVuY2VFbGVtZW50U3RlcDw+KHRyYXZlcnNhbCkpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBSZWZlcmVuY2VFbGVtZW50U3RyYXRlZ3kgaW5zdGFuY2UoKSB7CisgICAgICAgIHJldHVybiBJTlNUQU5DRTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFJlZmVyZW5jZUVsZW1lbnRTdGVwPFMsIEU+IGV4dGVuZHMgTWFwU3RlcDxTLCBFPiB7CisKKyAgICAgICAgcHVibGljIFJlZmVyZW5jZUVsZW1lbnRTdGVwKGZpbmFsIFRyYXZlcnNhbC5BZG1pbiB0cmF2ZXJzYWwpIHsKKyAgICAgICAgICAgIHN1cGVyKHRyYXZlcnNhbCk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHJvdGVjdGVkIEUgbWFwKGZpbmFsIFRyYXZlcnNlci5BZG1pbjxTPiB0cmF2ZXJzZXIpIHsKKyAgICAgICAgICAgIHJldHVybiBSZWZlcmVuY2VGYWN0b3J5LmRldGFjaCh0cmF2ZXJzZXIuZ2V0KCkpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9vcHRpbWl6YXRpb24vQWRqYWNlbnRUb0luY2lkZW50U3RyYXRlZ3kuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvb3B0aW1pemF0aW9uL0FkamFjZW50VG9JbmNpZGVudFN0cmF0ZWd5LmphdmEKaW5kZXggMmQxOTQ3OS4uZDhlNTM4YSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9vcHRpbWl6YXRpb24vQWRqYWNlbnRUb0luY2lkZW50U3RyYXRlZ3kuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L29wdGltaXphdGlvbi9BZGphY2VudFRvSW5jaWRlbnRTdHJhdGVneS5qYXZhCkBAIC00MiwxMCArNDIsMTIgQEAKIAogLyoqCiAgKiBUaGlzIHN0cmF0ZWd5IGxvb2tzIGZvciB2ZXJ0ZXgtIGFuZCB2YWx1ZS1lbWl0dGluZyBzdGVwcyBmb2xsb3dlZCBieSBhIHtAbGluayBDb3VudEdsb2JhbFN0ZXB9IGFuZCByZXBsYWNlcyB0aGUKLSAqIHBhdHRlcm4gd2l0aCBhbiBlZGdlLSBvciBwcm9wZXJ0eS1lbWl0dGluZyBzdGVwIGZvbGxvd2VkIGJ5IGEge0Bjb2RlIENvdW50R2xvYmFsU3RlcH0uIEZ1cnRoZXJtb3JlLCBpZiBhIHZlcnRleC0KKyAqIHBhdHRlcm4gd2l0aCBhbiBlZGdlLSBvciBwcm9wZXJ0eS1lbWl0dGluZyBzdGVwIGZvbGxvd2VkIGJ5IGEge0BsaW5rIENvdW50R2xvYmFsU3RlcH0uIEZ1cnRoZXJtb3JlLCBpZiBhIHZlcnRleC0KICAqIG9yIHZhbHVlLWVtaXR0aW5nIHN0ZXAgaXMgdGhlIGxhc3Qgc3RlcCBpbiBhIHtAY29kZSAuaGFzKHRyYXZlcnNhbCl9LCB7QGNvZGUgLmFuZCh0cmF2ZXJzYWwsIC4uLil9IG9yCiAgKiB7QGNvZGUgLm9yKHRyYXZlcnNhbCwgLi4uKX0gY2hpbGQgdHJhdmVyc2FsLCBpdCBpcyByZXBsYWNlZCBieSBhbiBhcHByb3ByaWF0ZSBlZGdlLSBvciBwcm9wZXJ0eS1lbWl0dGluZyBzdGVwLgotICogPHAvPgorICogUGVyZm9ybWluZyB0aGlzIHJlcGxhY2VtZW50IHJlbW92ZXMgc2l0dWF0aW9ucyB3aGVyZSB0aGUgbW9yZSBleHBlbnNpdmUgdHJpcCB0byBhbiBhZGphY2VudCBncmFwaCBlbGVtZW50IChlLmcuCisgKiB0aGUgdmVydGV4IG9uIHRoZSBvdGhlciBzaWRlIG9mIGFuIGVkZ2UpIGNhbiBiZSBzYXRpc2ZpZWQgYnkgdHJpcHMgdG8gaW5jaWRlbnQgZ3JhcGggZWxlbWVudHMgKGUuZy4ganVzdCB0aGUgZWRnZQorICogaXRzZWxmKS4KICAqCiAgKiBAYXV0aG9yIERhbmllbCBLdXBwaXR6IChodHRwOi8vZ3JlbWxpbi5ndXJ1KQogICogQGV4YW1wbGUgPHByZT4KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvb3B0aW1pemF0aW9uL0Vhcmx5TGltaXRTdHJhdGVneS5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9vcHRpbWl6YXRpb24vRWFybHlMaW1pdFN0cmF0ZWd5LmphdmEKaW5kZXggNjRlMDQxNS4uZTk5MDNhOSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9vcHRpbWl6YXRpb24vRWFybHlMaW1pdFN0cmF0ZWd5LmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9vcHRpbWl6YXRpb24vRWFybHlMaW1pdFN0cmF0ZWd5LmphdmEKQEAgLTM1LDkgKzM1LDkgQEAKIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsKIAogLyoqCi0gKiBUaGlzIHN0cmF0ZWd5IGxvb2tzIGZvciB7QGxpbmsgUmFuZ2VHbG9iYWxTdGVwfSdzIHRoYXQgY2FuIGJlIG1vdmVkIGZ1cnRoZXIgbGVmdCBpbiB0aGUgdHJhdmVyc2FsIGFuZCB0aHVzIGJlIGFwcGxpZWQKLSAqIGFwcGxpZWQgZWFybGllci4gSXQgd2lsbCBhbHNvIHRyeSB0byBtZXJnZSBtdWx0aXBsZSB7QGxpbmsgUmFuZ2VHbG9iYWxTdGVwfSdzIGludG8gb25lLgotICogSWYgdGhlIGxvZ2ljYWwgY29uc2VxdWVuY2Ugb2Ygb25lIG9yIG11bHRpcGxlIHtAbGluayBSYW5nZUdsb2JhbFN0ZXB9J3MgaXMgYW4gZW1wdHkgcmVzdWx0LCB0aGUgc3RyYXRlZ3kgd2lsbCByZW1vdmUKKyAqIFRoaXMgc3RyYXRlZ3kgbG9va3MgZm9yIHtAbGluayBSYW5nZUdsb2JhbFN0ZXB9cyB0aGF0IGNhbiBiZSBtb3ZlZCBmdXJ0aGVyIGxlZnQgaW4gdGhlIHRyYXZlcnNhbCBhbmQgdGh1cyBiZSBhcHBsaWVkCisgKiBlYXJsaWVyLiBJdCB3aWxsIGFsc28gdHJ5IHRvIG1lcmdlIG11bHRpcGxlIHtAbGluayBSYW5nZUdsb2JhbFN0ZXB9cyBpbnRvIG9uZS4KKyAqIElmIHRoZSBsb2dpY2FsIGNvbnNlcXVlbmNlIG9mIG9uZSBvciBtdWx0aXBsZSB7QGxpbmsgUmFuZ2VHbG9iYWxTdGVwfXMgaXMgYW4gZW1wdHkgcmVzdWx0LCB0aGUgc3RyYXRlZ3kgd2lsbCByZW1vdmUKICAqIGFzIG1hbnkgc3RlcHMgYXMgcG9zc2libGUgYW5kIGFkZCBhIHtAbGluayBOb25lU3RlcH0gaW5zdGVhZC4KICAqCiAgKiBAYXV0aG9yIERhbmllbCBLdXBwaXR6IChodHRwOi8vZ3JlbWxpbi5ndXJ1KQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9vcHRpbWl6YXRpb24vRmlsdGVyUmFua2luZ1N0cmF0ZWd5LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L29wdGltaXphdGlvbi9GaWx0ZXJSYW5raW5nU3RyYXRlZ3kuamF2YQppbmRleCBiZWMyNTAyLi44YmI3ZDY4IDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L29wdGltaXphdGlvbi9GaWx0ZXJSYW5raW5nU3RyYXRlZ3kuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L29wdGltaXphdGlvbi9GaWx0ZXJSYW5raW5nU3RyYXRlZ3kuamF2YQpAQCAtNDQsOSArNDQsMTAgQEAKIGltcG9ydCBqYXZhLnV0aWwuU2V0OwogCiAvKioKLSAqIEZpbHRlclJhbmtpbmdTdHJhdGVneSByZW9yZGVycyBmaWx0ZXItIGFuZCBvcmRlci1zdGVwcyBhY2NvcmRpbmcgdG8gdGhlaXIgcmFuay4gSXQgd2lsbCBhbHNvIGRvIGl0cyBiZXN0IHRvIHB1c2gKLSAqIHN0ZXAgbGFiZWxzIGFzIGZhciAicmlnaHQiIGFzIHBvc3NpYmxlIGluIG9yZGVyIHRvIGtlZXAgdHJhdmVyc2VycyBhcyBzbWFsbCBhbmQgYnVsa2FibGUgYXMgcG9zc2libGUgcHJpb3IgdG8gdGhlCi0gKiBhYnNvbHV0ZSBuZWVkIGZvciBwYXRoLWxhYmVsaW5nLgorICoge0Bjb2RlIEZpbHRlclJhbmtpbmdTdHJhdGVneX0gcmVvcmRlcnMgZmlsdGVyLSBhbmQgb3JkZXItc3RlcHMgYWNjb3JkaW5nIHRvIHRoZWlyIHJhbmsuIFN0ZXAgcmFua3MgYXJlIGRlZmluZWQgd2l0aGluCisgKiB0aGUgc3RyYXRlZ3kgYW5kIGluZGljYXRlIHdoZW4gaXQgaXMgcmVhc29uYWJsZSBmb3IgYSBzdGVwIHRvIG1vdmUgaW4gZnJvbnQgb2YgYW5vdGhlci4gSXQgd2lsbCBhbHNvIGRvIGl0cyBiZXN0IHRvCisgKiBwdXNoIHN0ZXAgbGFiZWxzIGFzIGZhciAicmlnaHQiIGFzIHBvc3NpYmxlIGluIG9yZGVyIHRvIGtlZXAgdHJhdmVyc2VycyBhcyBzbWFsbCBhbmQgYnVsa2FibGUgYXMgcG9zc2libGUgcHJpb3IgdG8KKyAqIHRoZSBhYnNvbHV0ZSBuZWVkIGZvciBwYXRoLWxhYmVsaW5nLgogICoKICAqIEBhdXRob3IgRGFuaWVsIEt1cHBpdHogKGh0dHA6Ly9ncmVtbGluLmd1cnUpCiAgKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvb3B0aW1pemF0aW9uL0lkZW50aXR5UmVtb3ZhbFN0cmF0ZWd5LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L29wdGltaXphdGlvbi9JZGVudGl0eVJlbW92YWxTdHJhdGVneS5qYXZhCmluZGV4IDU0ZDRiY2EuLjNjNGE4NzUgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvb3B0aW1pemF0aW9uL0lkZW50aXR5UmVtb3ZhbFN0cmF0ZWd5LmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9vcHRpbWl6YXRpb24vSWRlbnRpdHlSZW1vdmFsU3RyYXRlZ3kuamF2YQpAQCAtMjgsOCArMjgsNyBAQAogLyoqCiAgKiB7QGNvZGUgSWRlbnRpdHlSZW1vdmFsU3RyYXRlZ3l9IGxvb2tzIGZvciB7QGxpbmsgSWRlbnRpdHlTdGVwfSBpbnN0YW5jZXMgYW5kIHJlbW92ZXMgdGhlbS4KICAqIElmIHRoZSBpZGVudGl0eSBzdGVwIGlzIGxhYmVsZWQsIGl0cyBsYWJlbHMgYXJlIGFkZGVkIHRvIHRoZSBwcmV2aW91cyBzdGVwLgotICogSWYgdGhlIGlkZW50aXR5IHN0ZXAgaXMgbGFiZWxlZCBhbmQgaXRzIHRoZSBmaXJzdCBzdGVwIGluIHRoZSB0cmF2ZXJzYWwsIGl0IHN0YXlzLgotICogPHAvPgorICogSWYgdGhlIGlkZW50aXR5IHN0ZXAgaXMgbGFiZWxlZCBhbmQgaXQncyB0aGUgZmlyc3Qgc3RlcCBpbiB0aGUgdHJhdmVyc2FsLCBpdCBzdGF5cy4KICAqCiAgKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKICAqIEBleGFtcGxlIDxwcmU+CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L29wdGltaXphdGlvbi9JbmNpZGVudFRvQWRqYWNlbnRTdHJhdGVneS5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9vcHRpbWl6YXRpb24vSW5jaWRlbnRUb0FkamFjZW50U3RyYXRlZ3kuamF2YQppbmRleCA3N2U4OTZjLi5lNzBlNTRhIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L29wdGltaXphdGlvbi9JbmNpZGVudFRvQWRqYWNlbnRTdHJhdGVneS5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvb3B0aW1pemF0aW9uL0luY2lkZW50VG9BZGphY2VudFN0cmF0ZWd5LmphdmEKQEAgLTUwLDEzICs1MCwxNiBAQAogICogVGhpcyBzdHJhdGVneSBsb29rcyBmb3Ige0Bjb2RlIC5vdXRFKCkuaW5WKCl9LCB7QGNvZGUgLmluRSgpLm91dFYoKX0gYW5kIHtAY29kZSAuYm90aEUoKS5vdGhlclYoKX0KICAqIGFuZCByZXBsYWNlcyB0aGVzZSBzdGVwIHNlcXVlbmNlcyB3aXRoIHtAY29kZSAub3V0KCl9LCB7QGNvZGUgLmluKCl9IG9yIHtAY29kZSAuYm90aCgpfSByZXNwZWN0aXZlbHkuCiAgKiBUaGUgc3RyYXRlZ3kgd29uJ3QgbW9kaWZ5IHRoZSB0cmF2ZXJzYWwgaWY6CisgKiA8cC8+CiAgKiA8dWw+Ci0gKiA8bGk+dGhlIGVkZ2Ugc3RlcCBpcyBsYWJlbGVkPC9saT4KLSAqIDxsaT50aGUgdHJhdmVyc2FsIGNvbnRhaW5zIGEge0Bjb2RlIHBhdGh9IHN0ZXA8L2xpPgotICogPGxpPnRoZSB0cmF2ZXJzYWwgY29udGFpbnMgYSBsYW1iZGEgc3RlcDwvbGk+CisgKiAgICAgPGxpPnRoZSBlZGdlIHN0ZXAgaXMgbGFiZWxlZDwvbGk+CisgKiAgICAgPGxpPnRoZSB0cmF2ZXJzYWwgY29udGFpbnMgYSB7QGNvZGUgcGF0aH0gc3RlcDwvbGk+CisgKiAgICAgPGxpPnRoZSB0cmF2ZXJzYWwgY29udGFpbnMgYSBsYW1iZGEgc3RlcDwvbGk+CiAgKiA8L3VsPgogICogPHAvPgogICoKKyAqIEJ5IHJlLXdyaXRpbmcgdGhlIHRyYXZlcnNhbCBpbiB0aGlzIGZhc2hpb24sIHRoZSB0cmF2ZXJzYWwgZWxpbWluYXRlcyB1bm5lY2Vzc2FyeSBzdGVwcyBhbmQgYmVjb21lcyBtb3JlIG5vcm1hbGl6ZWQuCisgKgogICogQGF1dGhvciBEYW5pZWwgS3VwcGl0eiAoaHR0cDovL2dyZW1saW4uZ3VydSkKICAqIEBleGFtcGxlIDxwcmU+CiAgKiBfXy5vdXRFKCkuaW5WKCkgICAgICAgICAvLyBpcyByZXBsYWNlZCBieSBfXy5vdXQoKQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9vcHRpbWl6YXRpb24vSW5saW5lRmlsdGVyU3RyYXRlZ3kuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvb3B0aW1pemF0aW9uL0lubGluZUZpbHRlclN0cmF0ZWd5LmphdmEKaW5kZXggZTJmMTU0ZS4uZjVmOTgwZiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9vcHRpbWl6YXRpb24vSW5saW5lRmlsdGVyU3RyYXRlZ3kuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L29wdGltaXphdGlvbi9JbmxpbmVGaWx0ZXJTdHJhdGVneS5qYXZhCkBAIC01NCwxMCArNTQsMTEgQEAKIGltcG9ydCBqYXZhLnV0aWwuU2V0OwogCiAvKioKLSAqIElubGluZUZpbHRlclN0cmF0ZWd5IGFuYWx5emVzIGZpbHRlci1zdGVwcyB3aXRoIGNoaWxkIHRyYXZlcnNhbHMgdGhhdCB0aGVtc2VsdmVzIGFyZSBwdXJlIGZpbHRlcnMuCi0gKiBJZiB0aGUgY2hpbGQgdHJhdmVyc2FscyBhcmUgcHVyZSBmaWx0ZXJzIHRoZW4gdGhlIHdyYXBwaW5nIHBhcmVudCBmaWx0ZXIgaXMgbm90IG5lZWRlZCBhbmQgdGh1cywgdGhlCi0gKiBjaGlsZHJlbiBjYW4gYmUgImlubGluZWQuIgotICogPHAvPgorICogVGhpcyBzdHJhdGVneSBhbmFseXplcyBmaWx0ZXItc3RlcHMgd2l0aCBjaGlsZCB0cmF2ZXJzYWxzIHRoYXQgdGhlbXNlbHZlcyBhcmUgcHVyZSBmaWx0ZXJzLiBJZiB0aGUgY2hpbGQgdHJhdmVyc2FscworICogYXJlIHB1cmUgZmlsdGVycyB0aGVuIHRoZSB3cmFwcGluZyBwYXJlbnQgZmlsdGVyIGlzIG5vdCBuZWVkZWQgYW5kIHRodXMsIHRoZSBjaGlsZHJlbiBjYW4gYmUgImlubGluZWQuIiBOb3JtYWxpemluZworICogcHVyZSBmaWx0ZXJzIHdpdGggaW5saW5pbmcgcmVkdWNlcyB0aGUgbnVtYmVyIG9mIHZhcmlhdGlvbnMgb2YgYSBmaWx0ZXIgdGhhdCBhIGdyYXBoIHByb3ZpZGVyIG1heSBuZWVkIHRvIHJlYXNvbgorICogYWJvdXQgd2hlbiB3cml0aW5nIHRoZWlyIG93biBzdHJhdGVnaWVzLiBBcyBhIHJlc3VsdCwgdGhpcyBzdHJhdGVneSBoZWxwcyBpbmNyZWFzZSB0aGUgbGlrZWxpaG9vZCB0aGF0IGEgcHJvdmlkZXIncworICogZmlsdGVyaW5nIG9wdGltaXphdGlvbiB3aWxsIHN1Y2NlZWQgYXQgcmUtd3JpdGluZyB0aGUgdHJhdmVyc2FsLgogICoKICAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQogICogQGV4YW1wbGUgPHByZT4KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvb3B0aW1pemF0aW9uL0xhenlCYXJyaWVyU3RyYXRlZ3kuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvb3B0aW1pemF0aW9uL0xhenlCYXJyaWVyU3RyYXRlZ3kuamF2YQppbmRleCAxMzEzZDNlLi4xZTIyNTdmIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L29wdGltaXphdGlvbi9MYXp5QmFycmllclN0cmF0ZWd5LmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9vcHRpbWl6YXRpb24vTGF6eUJhcnJpZXJTdHJhdGVneS5qYXZhCkBAIC0yMyw2ICsyMyw3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWxTdHJhdGVneTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuQmFycmllcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuUGF0aFByb2Nlc3NvcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuZmlsdGVyLkRyb3BTdGVwOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5maWx0ZXIuSGFzU3RlcDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuZmlsdGVyLk5vbmVTdGVwOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuRmxhdE1hcFN0ZXA7CkBAIC00MSw3ICs0MiwxNiBAQAogaW1wb3J0IGphdmEudXRpbC5TZXQ7CiAKIC8qKgorICoge0Bjb2RlIExhenlCYXJyaWVyU3RyYXRlZ3l9IGlzIGFuIE9MVFAtb25seSBzdHJhdGVneSB0aGF0IGF1dG9tYXRpY2FsbHkgaW5zZXJ0cyBhIHtAbGluayBOb09wQmFycmllclN0ZXB9IGFmdGVyIGV2ZXJ5CisgKiB7QGxpbmsgRmxhdE1hcFN0ZXB9IGlmIG5laXRoZXIgcGF0aC10cmFja2luZyBub3IgcGFydGlhbCBwYXRoLXRyYWNraW5nIGlzIHJlcXVpcmVkLCBhbmQgdGhlIG5leHQgc3RlcCBpcyBub3QgdGhlCisgKiB0cmF2ZXJzYWwncyBsYXN0IHN0ZXAgb3IgYSB7QGxpbmsgQmFycmllcn0uIHtAbGluayBOb09wQmFycmllclN0ZXB9cyBhbGxvdyB0cmF2ZXJzZXJzIHRvIGJlIGJ1bGtlZCwgdGh1cyB0aGlzIHN0cmF0ZWd5CisgKiBpcyBtZWFudCB0byByZWR1Y2UgbWVtb3J5IHJlcXVpcmVtZW50cyBhbmQgaW1wcm92ZSB0aGUgb3ZlcmFsbCBxdWVyeSBwZXJmb3JtYW5jZS4KKyAqCiAgKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKKyAqIEBleGFtcGxlIDxwcmU+CisgKiBfXy5vdXQoKS5ib3RoRSgpLmNvdW50KCkgICAgICAvLyBpcyByZXBsYWNlZCBieSBfXy5vdXQoKS5iYXJyaWVyKDI1MDApLmJvdGhFKCkuY291bnQoKQorICogX18uYm90aCgpLmJvdGgoKS52YWx1ZU1hcCgpICAgLy8gaXMgcmVwbGFjZWQgYnkgX18uYm90aCgpLmJhcnJpZXIoMjUwMCkuYm90aCgpLmJhcnJpZXIoMjUwMCkudmFsdWVNYXAoKQorICogPC9wcmU+CiAgKi8KIHB1YmxpYyBmaW5hbCBjbGFzcyBMYXp5QmFycmllclN0cmF0ZWd5IGV4dGVuZHMgQWJzdHJhY3RUcmF2ZXJzYWxTdHJhdGVneTxUcmF2ZXJzYWxTdHJhdGVneS5PcHRpbWl6YXRpb25TdHJhdGVneT4gaW1wbGVtZW50cyBUcmF2ZXJzYWxTdHJhdGVneS5PcHRpbWl6YXRpb25TdHJhdGVneSB7CiAKQEAgLTY1LDcgKzc1LDExIEBACiAKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgdm9pZCBhcHBseShmaW5hbCBUcmF2ZXJzYWwuQWRtaW48PywgPz4gdHJhdmVyc2FsKSB7CisgICAgICAgIC8vIGRyb3AoKSBpcyBhIHByb2JsZW0gZm9yIGJ1bGtlZCBlZGdlL21ldGEgcHJvcGVydGllcyBiZWNhdXNlIG9mIFByb3BlcnR5IGVxdWFsaXR5IGNoYW5nZXMgaW4gVElOS0VSUE9QLTIzMTgKKyAgICAgICAgLy8gd2hpY2ggbWFkZSBpdCBzbyB0aGF0IGEgUHJvcGVydHkgaXMgZXF1YWwgaWYgdGhlIGtleS92YWx1ZSBpcyBlcXVhbC4gYXMgYSByZXN1bHQsIHRoZXkgYnVsayB0b2dldGhlciB3aGljaAorICAgICAgICAvLyBpcyBmaW5lIGZvciBhbG1vc3QgYWxsIGNhc2VzIGV4Y2VwdCB3aGVuIHlvdSB3aXNoIHRvIGRyb3AgdGhlIHByb3BlcnR5LgogICAgICAgICBpZiAoVHJhdmVyc2FsSGVscGVyLm9uR3JhcGhDb21wdXRlcih0cmF2ZXJzYWwpIHx8CisgICAgICAgICAgICAgICAgVHJhdmVyc2FsSGVscGVyLmhhc1N0ZXBPZkFzc2lnbmFibGVDbGFzcyhEcm9wU3RlcC5jbGFzcywgdHJhdmVyc2FsKSB8fAogICAgICAgICAgICAgICAgIHRyYXZlcnNhbC5nZXRUcmF2ZXJzZXJSZXF1aXJlbWVudHMoKS5jb250YWlucyhUcmF2ZXJzZXJSZXF1aXJlbWVudC5QQVRIKSB8fAogICAgICAgICAgICAgICAgIChJU19URVNUSU5HICYmICgoVHJhdmVyc2FsSGVscGVyLmhhc1N0ZXBPZkFzc2lnbmFibGVDbGFzcyhQcm9maWxlU3RlcC5jbGFzcywgVHJhdmVyc2FsSGVscGVyLmdldFJvb3RUcmF2ZXJzYWwodHJhdmVyc2FsKSkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgIFRyYXZlcnNhbEhlbHBlci5oYXNTdGVwT2ZBc3NpZ25hYmxlQ2xhc3MoUHJvZmlsZVNpZGVFZmZlY3RTdGVwLmNsYXNzLCBUcmF2ZXJzYWxIZWxwZXIuZ2V0Um9vdFRyYXZlcnNhbCh0cmF2ZXJzYWwpKSkpKSkgLy8gbmVjZXNzYXJ5IGNhdXNlIFByb2ZpbGVUZXN0IGFuYWx5emVzIGNvdW50cwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9vcHRpbWl6YXRpb24vTWF0Y2hQcmVkaWNhdGVTdHJhdGVneS5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9vcHRpbWl6YXRpb24vTWF0Y2hQcmVkaWNhdGVTdHJhdGVneS5qYXZhCmluZGV4IGM5MWMzOTIuLmM1NjUyY2UgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvb3B0aW1pemF0aW9uL01hdGNoUHJlZGljYXRlU3RyYXRlZ3kuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L29wdGltaXphdGlvbi9NYXRjaFByZWRpY2F0ZVN0cmF0ZWd5LmphdmEKQEAgLTM5LDE2ICszOSwxNCBAQAogaW1wb3J0IGphdmEudXRpbC5TZXQ7CiAKIC8qKgotICogTWF0Y2hXaGVyZVN0cmF0ZWd5IHdpbGwgZm9sZCBhbnkgcG9zdC17QGNvZGUgd2hlcmUoKX0gc3RlcCB0aGF0IG1haW50YWlucyBhIHRyYXZlcnNhbCBjb25zdHJhaW50IGludG8KKyAqIHtAY29kZSBNYXRjaFdoZXJlU3RyYXRlZ3l9IHdpbGwgZm9sZCBhbnkgcG9zdC17QGNvZGUgd2hlcmUoKX0gc3RlcCB0aGF0IG1haW50YWlucyBhIHRyYXZlcnNhbCBjb25zdHJhaW50IGludG8KICAqIHtAY29kZSBtYXRjaCgpfS4ge0BsaW5rIE1hdGNoU3RlcH0gaXMgaW50ZWxsaWdlbnQgd2l0aCB0cmF2ZXJzYWwgY29uc3RyYWludCBhcHBsaWNhdGlvbnMgYW5kIHRodXMsIGNhbiBtb3JlCiAgKiBlZmZpY2llbnRseSB1c2UgdGhlIGNvbnN0cmFpbnQgb2Yge0BsaW5rIFdoZXJlVHJhdmVyc2FsU3RlcH0gb3Ige0BsaW5rIFdoZXJlUHJlZGljYXRlU3RlcH0uCi0gKiA8cC8+Ci0gKiA8cC8+CiAgKgogICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCiAgKiBAZXhhbXBsZSA8cHJlPgogICogX18ubWF0Y2goYSxiKS53aGVyZShjKSAgICAgICAgICAgIC8vIGlzIHJlcGxhY2VkIGJ5IF9fLm1hdGNoKGEsYixjKQotICogX18ubWF0Y2goYSxiKS5zZWxlY3QoKS53aGVyZShjKSAgLy8gaXMgcmVwbGFjZWQgYnkgX18ubWF0Y2goYSxiLGMpLnNlbGVjdCgpCisgKiBfXy5tYXRjaChhLGIpLnNlbGVjdCgpLndoZXJlKGMpICAgLy8gaXMgcmVwbGFjZWQgYnkgX18ubWF0Y2goYSxiLGMpLnNlbGVjdCgpCiAgKiA8L3ByZT4KICAqLwogcHVibGljIGZpbmFsIGNsYXNzIE1hdGNoUHJlZGljYXRlU3RyYXRlZ3kgZXh0ZW5kcyBBYnN0cmFjdFRyYXZlcnNhbFN0cmF0ZWd5PFRyYXZlcnNhbFN0cmF0ZWd5Lk9wdGltaXphdGlvblN0cmF0ZWd5PiBpbXBsZW1lbnRzIFRyYXZlcnNhbFN0cmF0ZWd5Lk9wdGltaXphdGlvblN0cmF0ZWd5IHsKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvb3B0aW1pemF0aW9uL09yZGVyTGltaXRTdHJhdGVneS5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9vcHRpbWl6YXRpb24vT3JkZXJMaW1pdFN0cmF0ZWd5LmphdmEKaW5kZXggOThkN2ViZC4uZWUwYzFhMyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9vcHRpbWl6YXRpb24vT3JkZXJMaW1pdFN0cmF0ZWd5LmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9vcHRpbWl6YXRpb24vT3JkZXJMaW1pdFN0cmF0ZWd5LmphdmEKQEAgLTQwLDYgKzQwLDI1IEBACiBpbXBvcnQgamF2YS51dGlsLlNldDsKIAogLyoqCisgKiB7QGNvZGUgT3JkZXJMaW1pdFN0cmF0ZWd5fSBpcyBhbiBPTEFQIHN0cmF0ZWd5IHRoYXQgZm9sZHMgYSB7QGxpbmsgUmFuZ2VHbG9iYWxTdGVwfSBpbnRvIGEgcHJlY2VkaW5nCisgKiB7QGxpbmsgT3JkZXJHbG9iYWxTdGVwfS4gVGhpcyBoZWxwcyB0byBlbGltaW5hdGUgdHJhdmVyc2VycyBlYXJseSBpbiB0aGUgdHJhdmVyc2FsIGFuZCBjYW4KKyAqIHNpZ25pZmljYW50bHkgcmVkdWNlIHRoZSBhbW91bnQgb2YgbWVtb3J5IHJlcXVpcmVkIGJ5IHRoZSBPTEFQIGV4ZWN1dGlvbiBlbmdpbmUuCisgKgorICogSXQncyB3b3J0aCBub3RpbmcgdGhhdCBjZXJ0YWluIHN0ZXBzIGFyZSBhbGxvd2VkIGJldHdlZW4ge0BsaW5rIE9yZGVyR2xvYmFsU3RlcH0gYW5kIHtAbGluayBSYW5nZUdsb2JhbFN0ZXB9OgorICogPHAvPgorICogPHVsPgorICogICAgIDxsaT57QGxpbmsgSWRTdGVwfTwvbGk+CisgKiAgICAgPGxpPntAbGluayBMYWJlbFN0ZXB9PC9saT4KKyAqICAgICA8bGk+e0BsaW5rIFNhY2tTdGVwfTwvbGk+CisgKiAgICAgPGxpPntAbGluayBTZWxlY3RPbmVTdGVwfTwvbGk+CisgKiAgICAgPGxpPntAbGluayBTZWxlY3RTdGVwfTwvbGk+CisgKiAgICAgPGxpPntAbGluayBQYXRoU3RlcH08L2xpPgorICogICAgIDxsaT57QGxpbmsgVHJlZVN0ZXB9PC9saT4KKyAqIDwvdWw+CisgKiA8cC8+CisgKgorICogVGhlc2Ugc3RlcHMgd2lsbCBiZSBpZ25vcmVkIGJ5IHRoZSB7QGNvZGUgT3JkZXJMaW1pdFN0cmF0ZWd5fSBhbmQgdGh1cyBub3QgYWZmZWN0IGl0cyBiZWhhdmlvci4KKyAqCiAgKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKICAqLwogcHVibGljIGZpbmFsIGNsYXNzIE9yZGVyTGltaXRTdHJhdGVneSBleHRlbmRzIEFic3RyYWN0VHJhdmVyc2FsU3RyYXRlZ3k8VHJhdmVyc2FsU3RyYXRlZ3kuT3B0aW1pemF0aW9uU3RyYXRlZ3k+IGltcGxlbWVudHMgVHJhdmVyc2FsU3RyYXRlZ3kuT3B0aW1pemF0aW9uU3RyYXRlZ3kgewpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9vcHRpbWl6YXRpb24vUGF0aFByb2Nlc3NvclN0cmF0ZWd5LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L29wdGltaXphdGlvbi9QYXRoUHJvY2Vzc29yU3RyYXRlZ3kuamF2YQppbmRleCAwYjllNTA1Li45MTc5ZDNhIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L29wdGltaXphdGlvbi9QYXRoUHJvY2Vzc29yU3RyYXRlZ3kuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L29wdGltaXphdGlvbi9QYXRoUHJvY2Vzc29yU3RyYXRlZ3kuamF2YQpAQCAtNDksOSArNDksMTAgQEAKIGltcG9ydCBqYXZhLnV0aWwuVVVJRDsKIAogLyoqCi0gKiBQYXRoUHJvY2Vzc1N0cmF0ZWd5IGlzIGFuIE9MQVAgc3RyYXRlZ3kgdGhhdCBkb2VzIGl0cyBiZXN0IHRvIHR1cm4gbm9uLWxvY2FsIGNoaWxkcmVuIGluIHtAY29kZSB3aGVyZSgpfSBhbmQge0Bjb2RlIHNlbGVjdCgpfQotICogaW50byBsb2NhbCBjaGlsZHJlbiBieSBpbmxpbmluZyBjb21wb25lbnRzIG9mIHRoZSBub24tbG9jYWwgY2hpbGQuIEluIHRoaXMgd2F5LCBQYXRoUHJvY2Vzc1N0cmF0ZWd5IGhlbHBzIHRvIGVuc3VyZQotICogdGhhdCBtb3JlIHRyYXZlcnNhbHMgbWVldCB0aGUgbG9jYWwgY2hpbGQgY29uc3RyYWludCBpbXBvc2VkIG9uIE9MQVAgdHJhdmVyc2Fscy4KKyAqIHtAY29kZSBQYXRoUHJvY2Vzc1N0cmF0ZWd5fSBpcyBhbiBPTEFQIHN0cmF0ZWd5IHRoYXQgZG9lcyBpdHMgYmVzdCB0byB0dXJuIG5vbi1sb2NhbCBjaGlsZHJlbiBpbiB7QGNvZGUgd2hlcmUoKX0KKyAqIGFuZCB7QGNvZGUgc2VsZWN0KCl9IGludG8gbG9jYWwgY2hpbGRyZW4gYnkgaW5saW5pbmcgY29tcG9uZW50cyBvZiB0aGUgbm9uLWxvY2FsIGNoaWxkLiBJbiB0aGlzIHdheSwKKyAqIHtAY29kZSBQYXRoUHJvY2Vzc1N0cmF0ZWd5fSBoZWxwcyB0byBlbnN1cmUgdGhhdCBtb3JlIHRyYXZlcnNhbHMgbWVldCB0aGUgbG9jYWwgY2hpbGQgY29uc3RyYWludCBpbXBvc2VkIG9uIE9MQVAKKyAqIHRyYXZlcnNhbHMuCiAgKgogICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCiAgKiBAZXhhbXBsZSA8cHJlPgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9vcHRpbWl6YXRpb24vUmVwZWF0VW5yb2xsU3RyYXRlZ3kuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvb3B0aW1pemF0aW9uL1JlcGVhdFVucm9sbFN0cmF0ZWd5LmphdmEKaW5kZXggYWFmMWE1NS4uOTI0YjRkNCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9vcHRpbWl6YXRpb24vUmVwZWF0VW5yb2xsU3RyYXRlZ3kuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L29wdGltaXphdGlvbi9SZXBlYXRVbnJvbGxTdHJhdGVneS5qYXZhCkBAIC0zNyw3ICszNywyMCBAQAogaW1wb3J0IGphdmEudXRpbC5TZXQ7CiAKIC8qKgorICoge0Bjb2RlIFJlcGVhdFVucm9sbFN0cmF0ZWd5fSBpcyBhbiBPTFRQLW9ubHkgc3RyYXRlZ3kgdGhhdCB1bnJvbGxzIGFueSB7QGxpbmsgUmVwZWF0U3RlcH0gaWYgaXQgdXNlcyBhIGNvbnN0YW50CisgKiBudW1iZXIgb2YgbG9vcHMgKHtAY29kZSB0aW1lcyh4KX0pIGFuZCBkb2Vzbid0IGVtaXQgaW50ZXJtaXR0ZW50IGVsZW1lbnRzLiBJZiBhbnkgb2YgdGhlIGZvbGxvd2luZyAzIHN0ZXBzIGFwcGVhcnMKKyAqIHdpdGhpbiB0aGUgcmVwZWF0LXRyYXZlcnNhbCwgdGhlIHN0cmF0ZWd5IHdpbGwgbm90IGJlIGFwcGxpZWQ6CisgKiA8cC8+CisgKiA8dWw+CisgKiAgICAgPGxpPntAbGluayBEZWR1cEdsb2JhbFN0ZXB9PC9saT4KKyAqICAgICA8bGk+e0BsaW5rIExvb3BzU3RlcH08L2xpPgorICogICAgIDxsaT57QGxpbmsgTGFtYmRhSG9sZGVyfTwvbGk+CisgKiA8L3VsPgorICoKICAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQorICogQGV4YW1wbGUgPHByZT4KKyAqICAgICBfXy5yZXBlYXQob3V0KCkpLnRpbWVzKDIpICAgLy8gaXMgcmVwbGFjZWQgYnkgX18ub3V0KCkuYmFycmllcigyNTAwKS5vdXQoKS5iYXJyaWVyKDI1MDApCisgKiA8L3ByZT4KICAqLwogcHVibGljIGZpbmFsIGNsYXNzIFJlcGVhdFVucm9sbFN0cmF0ZWd5IGV4dGVuZHMgQWJzdHJhY3RUcmF2ZXJzYWxTdHJhdGVneTxUcmF2ZXJzYWxTdHJhdGVneS5PcHRpbWl6YXRpb25TdHJhdGVneT4gaW1wbGVtZW50cyBUcmF2ZXJzYWxTdHJhdGVneS5PcHRpbWl6YXRpb25TdHJhdGVneSB7CiAKQEAgLTY5LDggKzgyLDExIEBACiAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbG9vcHM7IGorKykgewogICAgICAgICAgICAgICAgICAgICAgICAgVHJhdmVyc2FsSGVscGVyLmluc2VydFRyYXZlcnNhbChpbnNlcnRJbmRleCwgcmVwZWF0VHJhdmVyc2FsLmNsb25lKCksIHRyYXZlcnNhbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRJbmRleCA9IGluc2VydEluZGV4ICsgcmVwZWF0TGVuZ3RoOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGogIT0gKGxvb3BzIC0gMSkgfHwgISh0cmF2ZXJzYWwuZ2V0U3RlcHMoKS5nZXQoaW5zZXJ0SW5kZXgpLmdldE5leHRTdGVwKCkgaW5zdGFuY2VvZiBCYXJyaWVyKSkgLy8gb25seSBhZGQgYSBmaW5hbCBOb09wQmFycmllciBpcyBzdWJzZXF1ZW50IHN0ZXAgaXMgbm90IGEgYmFycmllcgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChqICE9IChsb29wcyAtIDEpIHx8ICEodHJhdmVyc2FsLmdldFN0ZXBzKCkuZ2V0KGluc2VydEluZGV4KS5nZXROZXh0U3RlcCgpIGluc3RhbmNlb2YgQmFycmllcikpIC8vIG9ubHkgYWRkIGEgZmluYWwgTm9PcEJhcnJpZXIgaXMgc3Vic2VxdWVudCBzdGVwIGlzIG5vdCBhIGJhcnJpZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhKHRyYXZlcnNhbC5nZXRTdGVwcygpLmdldChpbnNlcnRJbmRleCkgaW5zdGFuY2VvZiBOb09wQmFycmllclN0ZXApIC8vIERvbid0IGFkZCBhIGJhcnJpZXIgaWYgdGhpcyBzdGVwIGlzIGEgYmFycmllciAocHJldmVudHMgbmVzdGVkIHJlcGVhdCBhZGRpbmcgdGhlIGJhcnJpZXIgbXVsdGlwbGUgdGltZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmF2ZXJzYWwuYWRkU3RlcCgrK2luc2VydEluZGV4LCBuZXcgTm9PcEJhcnJpZXJTdGVwPD4odHJhdmVyc2FsLCBNQVhfQkFSUklFUl9TSVpFKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgLy8gbGFiZWwgbGFzdCBzdGVwIGlmIHJlcGVhdCgpIHdhcyBsYWJlbGVkCiAgICAgICAgICAgICAgICAgICAgIGlmICghcmVwZWF0U3RlcC5nZXRMYWJlbHMoKS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L3ZlcmlmaWNhdGlvbi9Db21wdXRlclZlcmlmaWNhdGlvblN0cmF0ZWd5LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L3ZlcmlmaWNhdGlvbi9Db21wdXRlclZlcmlmaWNhdGlvblN0cmF0ZWd5LmphdmEKaW5kZXggMmQwNzZiNi4uNWMyZDI5OSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS92ZXJpZmljYXRpb24vQ29tcHV0ZXJWZXJpZmljYXRpb25TdHJhdGVneS5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvdmVyaWZpY2F0aW9uL0NvbXB1dGVyVmVyaWZpY2F0aW9uU3RyYXRlZ3kuamF2YQpAQCAtMjgsNiArMjgsNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5QYXRoUHJvY2Vzc29yOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuR3JhcGhTdGVwOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5zaWRlRWZmZWN0LkluamVjdFN0ZXA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnNpZGVFZmZlY3QuSW9TdGVwOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5zaWRlRWZmZWN0LlN1YmdyYXBoU3RlcDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5FbXB0eVN0ZXA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuUHJvZmlsZVN0ZXA7CkBAIC00Niw3ICs0Nyw3IEBACiAKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBDb21wdXRlclZlcmlmaWNhdGlvblN0cmF0ZWd5IElOU1RBTkNFID0gbmV3IENvbXB1dGVyVmVyaWZpY2F0aW9uU3RyYXRlZ3koKTsKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTZXQ8Q2xhc3M8Pz4+IFVOU1VQUE9SVEVEX1NURVBTID0gbmV3IEhhc2hTZXQ8PihBcnJheXMuYXNMaXN0KAotICAgICAgICAgICAgSW5qZWN0U3RlcC5jbGFzcywgTXV0YXRpbmcuY2xhc3MsIFN1YmdyYXBoU3RlcC5jbGFzcywgQ29tcHV0ZXJSZXN1bHRTdGVwLmNsYXNzCisgICAgICAgICAgICBJbmplY3RTdGVwLmNsYXNzLCBNdXRhdGluZy5jbGFzcywgU3ViZ3JhcGhTdGVwLmNsYXNzLCBDb21wdXRlclJlc3VsdFN0ZXAuY2xhc3MsIElvU3RlcC5jbGFzcwogICAgICkpOwogCiAgICAgcHJpdmF0ZSBDb21wdXRlclZlcmlmaWNhdGlvblN0cmF0ZWd5KCkgewpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS92ZXJpZmljYXRpb24vUmVzZXJ2ZWRLZXlzVmVyaWZpY2F0aW9uU3RyYXRlZ3kuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvdmVyaWZpY2F0aW9uL1Jlc2VydmVkS2V5c1ZlcmlmaWNhdGlvblN0cmF0ZWd5LmphdmEKaW5kZXggMWE1NDA0YS4uOGZlNjQyNCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS92ZXJpZmljYXRpb24vUmVzZXJ2ZWRLZXlzVmVyaWZpY2F0aW9uU3RyYXRlZ3kuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L3ZlcmlmaWNhdGlvbi9SZXNlcnZlZEtleXNWZXJpZmljYXRpb25TdHJhdGVneS5qYXZhCkBAIC0xOSw5ICsxOSw5IEBACiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kudmVyaWZpY2F0aW9uOwogCiBpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmNvbmZpZ3VyYXRpb24uQ29uZmlndXJhdGlvbjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlBhcmFtZXRlcml6aW5nOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuU3RlcDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuUGFyYW1ldGVyaXppbmc7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5BZGRFZGdlU3RhcnRTdGVwOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuQWRkRWRnZVN0ZXA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5BZGRWZXJ0ZXhTdGFydFN0ZXA7CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L3ZlcmlmaWNhdGlvbi9TdGFuZGFyZFZlcmlmaWNhdGlvblN0cmF0ZWd5LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L3ZlcmlmaWNhdGlvbi9TdGFuZGFyZFZlcmlmaWNhdGlvblN0cmF0ZWd5LmphdmEKaW5kZXggNTBmYWEyNS4uZmMzM2M2OSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS92ZXJpZmljYXRpb24vU3RhbmRhcmRWZXJpZmljYXRpb25TdHJhdGVneS5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvdmVyaWZpY2F0aW9uL1N0YW5kYXJkVmVyaWZpY2F0aW9uU3RyYXRlZ3kuamF2YQpAQCAtMjMsNiArMjMsNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuU3RlcDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbFN0cmF0ZWd5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5SZWFkV3JpdGluZzsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuYnJhbmNoLlJlcGVhdFN0ZXA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLmZpbHRlci5Ob25lU3RlcDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuc2lkZUVmZmVjdC5Qcm9maWxlU2lkZUVmZmVjdFN0ZXA7CkBAIC0zOSw2ICs0MCw3IEBACiAKIC8qKgogICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCiAgKi8KIHB1YmxpYyBmaW5hbCBjbGFzcyBTdGFuZGFyZFZlcmlmaWNhdGlvblN0cmF0ZWd5IGV4dGVuZHMgQWJzdHJhY3RUcmF2ZXJzYWxTdHJhdGVneTxUcmF2ZXJzYWxTdHJhdGVneS5WZXJpZmljYXRpb25TdHJhdGVneT4gaW1wbGVtZW50cyBUcmF2ZXJzYWxTdHJhdGVneS5WZXJpZmljYXRpb25TdHJhdGVneSB7CiAKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdHJhdmVyc2VyL0JfTFBfTkxfT19QX1NfU0VfU0xfVHJhdmVyc2VyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci9CX0xQX05MX09fUF9TX1NFX1NMX1RyYXZlcnNlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhZjlkYmUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci9CX0xQX05MX09fUF9TX1NFX1NMX1RyYXZlcnNlci5qYXZhCkBAIC0wLDAgKzEsMTU2IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXI7CisKK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMubWFwLlJlZmVyZW5jZU1hcDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlN0ZXA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIudXRpbC5MYWJlbGxlZENvdW50ZXI7CisKKworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuU3RhY2s7CisKK3B1YmxpYyBjbGFzcyBCX0xQX05MX09fUF9TX1NFX1NMX1RyYXZlcnNlcjxUPiBleHRlbmRzIEJfTFBfT19QX1NfU0VfU0xfVHJhdmVyc2VyPFQ+IHsKKworICAgIHByb3RlY3RlZCBTdGFjazxMYWJlbGxlZENvdW50ZXI+IG5lc3RlZExvb3BzOworICAgIHByb3RlY3RlZCBSZWZlcmVuY2VNYXAgbG9vcE5hbWVzID0gbnVsbDsKKworICAgIHByb3RlY3RlZCBCX0xQX05MX09fUF9TX1NFX1NMX1RyYXZlcnNlcigpIHsKKyAgICB9CisKKyAgICBwdWJsaWMgQl9MUF9OTF9PX1BfU19TRV9TTF9UcmF2ZXJzZXIoZmluYWwgVCB0LCBmaW5hbCBTdGVwPFQsID8+IHN0ZXAsIGZpbmFsIGxvbmcgaW5pdGlhbEJ1bGspIHsKKyAgICAgICAgc3VwZXIodCwgc3RlcCwgaW5pdGlhbEJ1bGspOworICAgICAgICB0aGlzLm5lc3RlZExvb3BzID0gbmV3IFN0YWNrPD4oKTsKKyAgICAgICAgdGhpcy5sb29wTmFtZXMgPSBuZXcgUmVmZXJlbmNlTWFwKFJlZmVyZW5jZU1hcC5IQVJELCBSZWZlcmVuY2VNYXAuV0VBSyk7CisgICAgfQorCisgICAgLy8vLy8vLy8vLy8vLy8vLy8KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBpbnQgbG9vcHMoKSB7CisgICAgICAgIHJldHVybiB0aGlzLm5lc3RlZExvb3BzLnBlZWsoKS5jb3VudCgpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBpbnQgbG9vcHMoZmluYWwgU3RyaW5nIGxvb3BOYW1lKSB7CisgICAgICAgIGlmIChsb29wTmFtZSA9PSBudWxsKQorICAgICAgICAgICAgcmV0dXJuIGxvb3BzKCk7CisgICAgICAgIGVsc2UgaWYgKHRoaXMubG9vcE5hbWVzLmNvbnRhaW5zS2V5KGxvb3BOYW1lKSkKKyAgICAgICAgICAgIHJldHVybiAoKExhYmVsbGVkQ291bnRlcikgdGhpcy5sb29wTmFtZXMuZ2V0KGxvb3BOYW1lKSkuY291bnQoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiTG9vcCBuYW1lIG5vdCBkZWZpbmVkOiAiICsgbG9vcE5hbWUpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIGluaXRpYWxpc2VMb29wcyhmaW5hbCBTdHJpbmcgc3RlcExhYmVsLCBmaW5hbCBTdHJpbmcgbG9vcE5hbWUpIHsKKyAgICAgICAgaWYgKHRoaXMubmVzdGVkTG9vcHMuZW1wdHkoKSB8fCAhdGhpcy5uZXN0ZWRMb29wcy5wZWVrKCkuaGFzTGFiZWwoc3RlcExhYmVsKSkgeworICAgICAgICAgICAgZmluYWwgTGFiZWxsZWRDb3VudGVyIGxjID0gbmV3IExhYmVsbGVkQ291bnRlcihzdGVwTGFiZWwsIChzaG9ydCkgMCk7CisgICAgICAgICAgICB0aGlzLm5lc3RlZExvb3BzLnB1c2gobGMpOworICAgICAgICAgICAgaWYgKGxvb3BOYW1lICE9IG51bGwpCisgICAgICAgICAgICAgICAgdGhpcy5sb29wTmFtZXMucHV0KGxvb3BOYW1lLCBsYyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBpbmNyTG9vcHMoKSB7CisgICAgICAgIHRoaXMubmVzdGVkTG9vcHMucGVlaygpLmluY3JlbWVudCgpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIHJlc2V0TG9vcHMoKSB7CisgICAgICAgIHRoaXMubmVzdGVkTG9vcHMucG9wKCk7CisgICAgfQorCisgICAgLy8vLy8vLy8vLy8vLy8vLy8KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyA8Uj4gQWRtaW48Uj4gc3BsaXQoZmluYWwgUiByLCBmaW5hbCBTdGVwPFQsIFI+IHN0ZXApIHsKKyAgICAgICAgZmluYWwgQl9MUF9OTF9PX1BfU19TRV9TTF9UcmF2ZXJzZXI8Uj4gY2xvbmUgPSAoQl9MUF9OTF9PX1BfU19TRV9TTF9UcmF2ZXJzZXI8Uj4pIHN1cGVyLnNwbGl0KHIsIHN0ZXApOworICAgICAgICBjbG9uZS5uZXN0ZWRMb29wcyA9IG5ldyBTdGFjazw+KCk7CisgICAgICAgIGZvcihMYWJlbGxlZENvdW50ZXIgbGMgOiB0aGlzLm5lc3RlZExvb3BzKQorICAgICAgICAgICAgY2xvbmUubmVzdGVkTG9vcHMucHVzaCgoTGFiZWxsZWRDb3VudGVyKSBsYy5jbG9uZSgpKTsKKworICAgICAgICBpZiAodGhpcy5sb29wTmFtZXMgIT0gbnVsbCkgeworICAgICAgICAgICAgY2xvbmUubG9vcE5hbWVzID0gbmV3IFJlZmVyZW5jZU1hcChSZWZlcmVuY2VNYXAuSEFSRCwgUmVmZXJlbmNlTWFwLldFQUspOworCisgICAgICAgICAgICBmaW5hbCBJdGVyYXRvciBsb29wTmFtZXNJdGVyYXRvciA9IHRoaXMubG9vcE5hbWVzLmVudHJ5U2V0KCkuaXRlcmF0b3IoKTsKKyAgICAgICAgICAgIHdoaWxlIChsb29wTmFtZXNJdGVyYXRvci5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBSZWZlcmVuY2VNYXAuRW50cnkgcGFpciA9IChSZWZlcmVuY2VNYXAuRW50cnkpIGxvb3BOYW1lc0l0ZXJhdG9yLm5leHQoKTsKKworICAgICAgICAgICAgICAgIGZpbmFsIGludCBpZHggPSB0aGlzLm5lc3RlZExvb3BzLmluZGV4T2YocGFpci5nZXRWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBpZiAoaWR4ICE9IC0xKQorICAgICAgICAgICAgICAgICAgICBjbG9uZS5sb29wTmFtZXMucHV0KHBhaXIuZ2V0S2V5KCksIGNsb25lLm5lc3RlZExvb3BzLmdldChpZHgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBjbG9uZTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgQWRtaW48VD4gc3BsaXQoKSB7CisgICAgICAgIGZpbmFsIEJfTFBfTkxfT19QX1NfU0VfU0xfVHJhdmVyc2VyPFQ+IGNsb25lID0gKEJfTFBfTkxfT19QX1NfU0VfU0xfVHJhdmVyc2VyPFQ+KSBzdXBlci5zcGxpdCgpOworICAgICAgICBjbG9uZS5uZXN0ZWRMb29wcyA9IG5ldyBTdGFjazw+KCk7CisgICAgICAgIGZvcihMYWJlbGxlZENvdW50ZXIgbGMgOiB0aGlzLm5lc3RlZExvb3BzKQorICAgICAgICAgICAgY2xvbmUubmVzdGVkTG9vcHMucHVzaCgoTGFiZWxsZWRDb3VudGVyKSBsYy5jbG9uZSgpKTsKKworICAgICAgICBpZiAodGhpcy5sb29wTmFtZXMgIT0gbnVsbCkgeworICAgICAgICAgICAgY2xvbmUubG9vcE5hbWVzID0gbmV3IFJlZmVyZW5jZU1hcChSZWZlcmVuY2VNYXAuSEFSRCwgUmVmZXJlbmNlTWFwLldFQUspOworCisgICAgICAgICAgICBmaW5hbCBJdGVyYXRvciBsb29wTmFtZXNJdGVyYXRvciA9IHRoaXMubG9vcE5hbWVzLmVudHJ5U2V0KCkuaXRlcmF0b3IoKTsKKyAgICAgICAgICAgIHdoaWxlIChsb29wTmFtZXNJdGVyYXRvci5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBSZWZlcmVuY2VNYXAuRW50cnkgcGFpciA9IChSZWZlcmVuY2VNYXAuRW50cnkpIGxvb3BOYW1lc0l0ZXJhdG9yLm5leHQoKTsKKworICAgICAgICAgICAgICAgIGZpbmFsIGludCBpZHggPSB0aGlzLm5lc3RlZExvb3BzLmluZGV4T2YocGFpci5nZXRWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBpZiAoaWR4ICE9IC0xKQorICAgICAgICAgICAgICAgICAgICBjbG9uZS5sb29wTmFtZXMucHV0KHBhaXIuZ2V0S2V5KCksIGNsb25lLm5lc3RlZExvb3BzLmdldChpZHgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBjbG9uZTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBtZXJnZShmaW5hbCBBZG1pbjw/PiBvdGhlcikgeworICAgICAgICBzdXBlci5tZXJnZShvdGhlcik7CisgICAgfQorCisgICAgLy8vLy8vLy8vLy8vLy8vLy8KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhmaW5hbCBPYmplY3QgbykgeworICAgICAgICBpZiAodGhpcyA9PSBvKSByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKCEobyBpbnN0YW5jZW9mIEJfTFBfTkxfT19QX1NfU0VfU0xfVHJhdmVyc2VyKSkgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIXN1cGVyLmVxdWFscyhvKSkgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGZpbmFsIEJfTFBfTkxfT19QX1NfU0VfU0xfVHJhdmVyc2VyPD8+IHRoYXQgPSAoQl9MUF9OTF9PX1BfU19TRV9TTF9UcmF2ZXJzZXI8Pz4pIG87CisKKyAgICAgICAgaWYgKCF0aGlzLm5lc3RlZExvb3BzLmVxdWFscyh0aGF0Lm5lc3RlZExvb3BzKSkgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gdGhpcy5sb29wTmFtZXMgIT0gbnVsbCA/IHRoaXMubG9vcE5hbWVzLmVxdWFscyh0aGF0Lmxvb3BOYW1lcykgOiB0aGF0Lmxvb3BOYW1lcyA9PSBudWxsOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7CisgICAgICAgIGludCByZXN1bHQgPSBzdXBlci5oYXNoQ29kZSgpOworICAgICAgICByZXN1bHQgPSAzMSAqIHJlc3VsdCArIHRoaXMubmVzdGVkTG9vcHMuaGFzaENvZGUoKTsKKyAgICAgICAgcmVzdWx0ID0gMzEgKiByZXN1bHQgKyAodGhpcy5sb29wTmFtZXMgIT0gbnVsbCA/IHRoaXMubG9vcE5hbWVzLmhhc2hDb2RlKCkgOiAwKTsKKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvQl9MUF9OTF9PX1BfU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdHJhdmVyc2VyL0JfTFBfTkxfT19QX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTU5MzkzMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdHJhdmVyc2VyL0JfTFBfTkxfT19QX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yLmphdmEKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5TdGVwOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2VyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2VyR2VuZXJhdG9yOworCitpbXBvcnQgamF2YS51dGlsLkVudW1TZXQ7CitpbXBvcnQgamF2YS51dGlsLlNldDsKKworcHVibGljIGZpbmFsIGNsYXNzIEJfTFBfTkxfT19QX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yIGltcGxlbWVudHMgVHJhdmVyc2VyR2VuZXJhdG9yIHsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIEJfTFBfTkxfT19QX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yIElOU1RBTkNFID0gbmV3IEJfTFBfTkxfT19QX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yKCk7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTZXQ8VHJhdmVyc2VyUmVxdWlyZW1lbnQ+IFJFUVVJUkVNRU5UUyA9IEVudW1TZXQub2YoCisgICAgICAgICAgICBUcmF2ZXJzZXJSZXF1aXJlbWVudC5CVUxLLAorICAgICAgICAgICAgVHJhdmVyc2VyUmVxdWlyZW1lbnQuTEFCRUxFRF9QQVRILAorICAgICAgICAgICAgVHJhdmVyc2VyUmVxdWlyZW1lbnQuTkVTVEVEX0xPT1AsCisgICAgICAgICAgICBUcmF2ZXJzZXJSZXF1aXJlbWVudC5PQkpFQ1QsCisgICAgICAgICAgICBUcmF2ZXJzZXJSZXF1aXJlbWVudC5QQVRILAorICAgICAgICAgICAgVHJhdmVyc2VyUmVxdWlyZW1lbnQuU0FDSywKKyAgICAgICAgICAgIFRyYXZlcnNlclJlcXVpcmVtZW50LlNJREVfRUZGRUNUUywKKyAgICAgICAgICAgIFRyYXZlcnNlclJlcXVpcmVtZW50LlNJTkdMRV9MT09QKTsKKworICAgIHByaXZhdGUgQl9MUF9OTF9PX1BfU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IoKSB7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIDxTPiBUcmF2ZXJzZXIuQWRtaW48Uz4gZ2VuZXJhdGUoZmluYWwgUyBzdGFydCwgZmluYWwgU3RlcDxTLCA/PiBzdGFydFN0ZXAsIGZpbmFsIGxvbmcgaW5pdGlhbEJ1bGspIHsKKyAgICAgICAgcmV0dXJuIG5ldyBCX0xQX05MX09fUF9TX1NFX1NMX1RyYXZlcnNlcjw+KHN0YXJ0LCBzdGFydFN0ZXAsIGluaXRpYWxCdWxrKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgU2V0PFRyYXZlcnNlclJlcXVpcmVtZW50PiBnZXRQcm92aWRlZFJlcXVpcmVtZW50cygpIHsKKyAgICAgICAgcmV0dXJuIFJFUVVJUkVNRU5UUzsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIEJfTFBfTkxfT19QX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yIGluc3RhbmNlKCkgeworICAgICAgICByZXR1cm4gSU5TVEFOQ0U7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvQl9MUF9OTF9PX1NfU0VfU0xfVHJhdmVyc2VyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci9CX0xQX05MX09fU19TRV9TTF9UcmF2ZXJzZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OTI4N2FjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvQl9MUF9OTF9PX1NfU0VfU0xfVHJhdmVyc2VyLmphdmEKQEAgLTAsMCArMSwxNTUgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlcjsKKworaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9ucy5tYXAuUmVmZXJlbmNlTWFwOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuU3RlcDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci51dGlsLkxhYmVsbGVkQ291bnRlcjsKKworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuU3RhY2s7CisKK3B1YmxpYyBjbGFzcyBCX0xQX05MX09fU19TRV9TTF9UcmF2ZXJzZXI8VD4gZXh0ZW5kcyBCX0xQX09fU19TRV9TTF9UcmF2ZXJzZXI8VD4geworCisgICAgcHJvdGVjdGVkIFN0YWNrPExhYmVsbGVkQ291bnRlcj4gbmVzdGVkTG9vcHM7CisgICAgcHJvdGVjdGVkIFJlZmVyZW5jZU1hcCBsb29wTmFtZXMgPSBudWxsOworCisgICAgcHJvdGVjdGVkIEJfTFBfTkxfT19TX1NFX1NMX1RyYXZlcnNlcigpIHsKKyAgICB9CisKKyAgICBwdWJsaWMgQl9MUF9OTF9PX1NfU0VfU0xfVHJhdmVyc2VyKGZpbmFsIFQgdCwgZmluYWwgU3RlcDxULCA/PiBzdGVwLCBmaW5hbCBsb25nIGluaXRpYWxCdWxrKSB7CisgICAgICAgIHN1cGVyKHQsIHN0ZXAsIGluaXRpYWxCdWxrKTsKKyAgICAgICAgdGhpcy5uZXN0ZWRMb29wcyA9IG5ldyBTdGFjazw+KCk7CisgICAgICAgIHRoaXMubG9vcE5hbWVzID0gbmV3IFJlZmVyZW5jZU1hcChSZWZlcmVuY2VNYXAuSEFSRCwgUmVmZXJlbmNlTWFwLldFQUspOworICAgIH0KKworICAgIC8vLy8vLy8vLy8vLy8vLy8vCisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgaW50IGxvb3BzKCkgeworICAgICAgICByZXR1cm4gdGhpcy5uZXN0ZWRMb29wcy5wZWVrKCkuY291bnQoKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgaW50IGxvb3BzKGZpbmFsIFN0cmluZyBsb29wTmFtZSkgeworICAgICAgICBpZiAobG9vcE5hbWUgPT0gbnVsbCkKKyAgICAgICAgICAgIHJldHVybiBsb29wcygpOworICAgICAgICBlbHNlIGlmICh0aGlzLmxvb3BOYW1lcy5jb250YWluc0tleShsb29wTmFtZSkpCisgICAgICAgICAgICByZXR1cm4gKChMYWJlbGxlZENvdW50ZXIpIHRoaXMubG9vcE5hbWVzLmdldChsb29wTmFtZSkpLmNvdW50KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkxvb3AgbmFtZSBub3QgZGVmaW5lZDogIiArIGxvb3BOYW1lKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBpbml0aWFsaXNlTG9vcHMoZmluYWwgU3RyaW5nIHN0ZXBMYWJlbCwgZmluYWwgU3RyaW5nIGxvb3BOYW1lKSB7CisgICAgICAgIGlmICh0aGlzLm5lc3RlZExvb3BzLmVtcHR5KCkgfHwgIXRoaXMubmVzdGVkTG9vcHMucGVlaygpLmhhc0xhYmVsKHN0ZXBMYWJlbCkpIHsKKyAgICAgICAgICAgIGZpbmFsIExhYmVsbGVkQ291bnRlciBsYyA9IG5ldyBMYWJlbGxlZENvdW50ZXIoc3RlcExhYmVsLCAoc2hvcnQpIDApOworICAgICAgICAgICAgdGhpcy5uZXN0ZWRMb29wcy5wdXNoKGxjKTsKKyAgICAgICAgICAgIGlmIChsb29wTmFtZSAhPSBudWxsKQorICAgICAgICAgICAgICAgIHRoaXMubG9vcE5hbWVzLnB1dChsb29wTmFtZSwgbGMpOworICAgICAgICB9CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgaW5jckxvb3BzKCkgeworICAgICAgICB0aGlzLm5lc3RlZExvb3BzLnBlZWsoKS5pbmNyZW1lbnQoKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCByZXNldExvb3BzKCkgeworICAgICAgICB0aGlzLm5lc3RlZExvb3BzLnBvcCgpOworICAgIH0KKworICAgIC8vLy8vLy8vLy8vLy8vLy8vCisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgPFI+IEFkbWluPFI+IHNwbGl0KGZpbmFsIFIgciwgZmluYWwgU3RlcDxULCBSPiBzdGVwKSB7CisgICAgICAgIGZpbmFsIEJfTFBfTkxfT19TX1NFX1NMX1RyYXZlcnNlcjxSPiBjbG9uZSA9IChCX0xQX05MX09fU19TRV9TTF9UcmF2ZXJzZXI8Uj4pIHN1cGVyLnNwbGl0KHIsIHN0ZXApOworICAgICAgICBjbG9uZS5uZXN0ZWRMb29wcyA9IG5ldyBTdGFjazw+KCk7CisgICAgICAgIGZvcihMYWJlbGxlZENvdW50ZXIgbGMgOiB0aGlzLm5lc3RlZExvb3BzKQorICAgICAgICAgICAgY2xvbmUubmVzdGVkTG9vcHMucHVzaCgoTGFiZWxsZWRDb3VudGVyKSBsYy5jbG9uZSgpKTsKKworICAgICAgICBpZiAodGhpcy5sb29wTmFtZXMgIT0gbnVsbCkgeworICAgICAgICAgICAgY2xvbmUubG9vcE5hbWVzID0gbmV3IFJlZmVyZW5jZU1hcChSZWZlcmVuY2VNYXAuSEFSRCwgUmVmZXJlbmNlTWFwLldFQUspOworCisgICAgICAgICAgICBmaW5hbCBJdGVyYXRvciBsb29wTmFtZXNJdGVyYXRvciA9IHRoaXMubG9vcE5hbWVzLmVudHJ5U2V0KCkuaXRlcmF0b3IoKTsKKyAgICAgICAgICAgIHdoaWxlIChsb29wTmFtZXNJdGVyYXRvci5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBSZWZlcmVuY2VNYXAuRW50cnkgcGFpciA9IChSZWZlcmVuY2VNYXAuRW50cnkpIGxvb3BOYW1lc0l0ZXJhdG9yLm5leHQoKTsKKworICAgICAgICAgICAgICAgIGZpbmFsIGludCBpZHggPSB0aGlzLm5lc3RlZExvb3BzLmluZGV4T2YocGFpci5nZXRWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBpZiAoaWR4ICE9IC0xKQorICAgICAgICAgICAgICAgICAgICBjbG9uZS5sb29wTmFtZXMucHV0KHBhaXIuZ2V0S2V5KCksIGNsb25lLm5lc3RlZExvb3BzLmdldChpZHgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBjbG9uZTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgQWRtaW48VD4gc3BsaXQoKSB7CisgICAgICAgIGZpbmFsIEJfTFBfTkxfT19TX1NFX1NMX1RyYXZlcnNlcjxUPiBjbG9uZSA9IChCX0xQX05MX09fU19TRV9TTF9UcmF2ZXJzZXI8VD4pIHN1cGVyLnNwbGl0KCk7CisgICAgICAgIGNsb25lLm5lc3RlZExvb3BzID0gbmV3IFN0YWNrPD4oKTsKKyAgICAgICAgZm9yKExhYmVsbGVkQ291bnRlciBsYyA6IHRoaXMubmVzdGVkTG9vcHMpCisgICAgICAgICAgICBjbG9uZS5uZXN0ZWRMb29wcy5wdXNoKChMYWJlbGxlZENvdW50ZXIpIGxjLmNsb25lKCkpOworCisgICAgICAgIGlmICh0aGlzLmxvb3BOYW1lcyAhPSBudWxsKSB7CisgICAgICAgICAgICBjbG9uZS5sb29wTmFtZXMgPSBuZXcgUmVmZXJlbmNlTWFwKFJlZmVyZW5jZU1hcC5IQVJELCBSZWZlcmVuY2VNYXAuV0VBSyk7CisKKyAgICAgICAgICAgIGZpbmFsIEl0ZXJhdG9yIGxvb3BOYW1lc0l0ZXJhdG9yID0gdGhpcy5sb29wTmFtZXMuZW50cnlTZXQoKS5pdGVyYXRvcigpOworICAgICAgICAgICAgd2hpbGUgKGxvb3BOYW1lc0l0ZXJhdG9yLmhhc05leHQoKSkgeworICAgICAgICAgICAgICAgIGZpbmFsIFJlZmVyZW5jZU1hcC5FbnRyeSBwYWlyID0gKFJlZmVyZW5jZU1hcC5FbnRyeSkgbG9vcE5hbWVzSXRlcmF0b3IubmV4dCgpOworCisgICAgICAgICAgICAgICAgZmluYWwgaW50IGlkeCA9IHRoaXMubmVzdGVkTG9vcHMuaW5kZXhPZihwYWlyLmdldFZhbHVlKCkpOworICAgICAgICAgICAgICAgIGlmIChpZHggIT0gLTEpCisgICAgICAgICAgICAgICAgICAgIGNsb25lLmxvb3BOYW1lcy5wdXQocGFpci5nZXRLZXkoKSwgY2xvbmUubmVzdGVkTG9vcHMuZ2V0KGlkeCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGNsb25lOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIG1lcmdlKGZpbmFsIEFkbWluPD8+IG90aGVyKSB7CisgICAgICAgIHN1cGVyLm1lcmdlKG90aGVyKTsKKyAgICB9CisKKyAgICAvLy8vLy8vLy8vLy8vLy8vLworCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKGZpbmFsIE9iamVjdCBvKSB7CisgICAgICAgIGlmICh0aGlzID09IG8pIHJldHVybiB0cnVlOworICAgICAgICBpZiAoIShvIGluc3RhbmNlb2YgQl9MUF9OTF9PX1NfU0VfU0xfVHJhdmVyc2VyKSkgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIXN1cGVyLmVxdWFscyhvKSkgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGZpbmFsIEJfTFBfTkxfT19TX1NFX1NMX1RyYXZlcnNlcjw/PiB0aGF0ID0gKEJfTFBfTkxfT19TX1NFX1NMX1RyYXZlcnNlcjw/PikgbzsKKworICAgICAgICBpZiAoIXRoaXMubmVzdGVkTG9vcHMuZXF1YWxzKHRoYXQubmVzdGVkTG9vcHMpKSByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB0aGlzLmxvb3BOYW1lcyAhPSBudWxsID8gdGhpcy5sb29wTmFtZXMuZXF1YWxzKHRoYXQubG9vcE5hbWVzKSA6IHRoYXQubG9vcE5hbWVzID09IG51bGw7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKKyAgICAgICAgaW50IHJlc3VsdCA9IHN1cGVyLmhhc2hDb2RlKCk7CisgICAgICAgIHJlc3VsdCA9IDMxICogcmVzdWx0ICsgdGhpcy5uZXN0ZWRMb29wcy5oYXNoQ29kZSgpOworICAgICAgICByZXN1bHQgPSAzMSAqIHJlc3VsdCArICh0aGlzLmxvb3BOYW1lcyAhPSBudWxsID8gdGhpcy5sb29wTmFtZXMuaGFzaENvZGUoKSA6IDApOworCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci9CX0xQX05MX09fU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdHJhdmVyc2VyL0JfTFBfTkxfT19TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiMGM0NjYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci9CX0xQX05MX09fU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IuamF2YQpAQCAtMCwwICsxLDU4IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXI7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlN0ZXA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzZXJHZW5lcmF0b3I7CisKK2ltcG9ydCBqYXZhLnV0aWwuRW51bVNldDsKK2ltcG9ydCBqYXZhLnV0aWwuU2V0OworCitwdWJsaWMgZmluYWwgY2xhc3MgQl9MUF9OTF9PX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yIGltcGxlbWVudHMgVHJhdmVyc2VyR2VuZXJhdG9yIHsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIEJfTFBfTkxfT19TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvciBJTlNUQU5DRSA9IG5ldyBCX0xQX05MX09fU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IoKTsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFNldDxUcmF2ZXJzZXJSZXF1aXJlbWVudD4gUkVRVUlSRU1FTlRTID0gRW51bVNldC5vZigKKyAgICAgICAgICAgIFRyYXZlcnNlclJlcXVpcmVtZW50LkJVTEssCisgICAgICAgICAgICBUcmF2ZXJzZXJSZXF1aXJlbWVudC5MQUJFTEVEX1BBVEgsCisgICAgICAgICAgICBUcmF2ZXJzZXJSZXF1aXJlbWVudC5ORVNURURfTE9PUCwKKyAgICAgICAgICAgIFRyYXZlcnNlclJlcXVpcmVtZW50Lk9CSkVDVCwKKyAgICAgICAgICAgIFRyYXZlcnNlclJlcXVpcmVtZW50LlNBQ0ssCisgICAgICAgICAgICBUcmF2ZXJzZXJSZXF1aXJlbWVudC5TSURFX0VGRkVDVFMsCisgICAgICAgICAgICBUcmF2ZXJzZXJSZXF1aXJlbWVudC5TSU5HTEVfTE9PUCwKKyAgICAgICAgICAgIFRyYXZlcnNlclJlcXVpcmVtZW50Lk5FU1RFRF9MT09QKTsKKworICAgIHByaXZhdGUgQl9MUF9OTF9PX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yKCkgeworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyA8Uz4gVHJhdmVyc2VyLkFkbWluPFM+IGdlbmVyYXRlKGZpbmFsIFMgc3RhcnQsIGZpbmFsIFN0ZXA8UywgPz4gc3RhcnRTdGVwLCBmaW5hbCBsb25nIGluaXRpYWxCdWxrKSB7CisgICAgICAgIHJldHVybiBuZXcgQl9MUF9OTF9PX1NfU0VfU0xfVHJhdmVyc2VyPD4oc3RhcnQsIHN0YXJ0U3RlcCwgaW5pdGlhbEJ1bGspOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBTZXQ8VHJhdmVyc2VyUmVxdWlyZW1lbnQ+IGdldFByb3ZpZGVkUmVxdWlyZW1lbnRzKCkgeworICAgICAgICByZXR1cm4gUkVRVUlSRU1FTlRTOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgQl9MUF9OTF9PX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yIGluc3RhbmNlKCkgeworICAgICAgICByZXR1cm4gSU5TVEFOQ0U7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvQl9OTF9PX1NfU0VfU0xfVHJhdmVyc2VyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci9CX05MX09fU19TRV9TTF9UcmF2ZXJzZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMGVkMWJlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvQl9OTF9PX1NfU0VfU0xfVHJhdmVyc2VyLmphdmEKQEAgLTAsMCArMSwxNTggQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlcjsKKworaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9ucy5NYXBJdGVyYXRvcjsKK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMubWFwLlJlZmVyZW5jZU1hcDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlN0ZXA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIudXRpbC5MYWJlbGxlZENvdW50ZXI7CisKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLlN0YWNrOworCitwdWJsaWMgY2xhc3MgQl9OTF9PX1NfU0VfU0xfVHJhdmVyc2VyPFQ+IGV4dGVuZHMgQl9PX1NfU0VfU0xfVHJhdmVyc2VyPFQ+IHsKKworICAgIHByb3RlY3RlZCBTdGFjazxMYWJlbGxlZENvdW50ZXI+IG5lc3RlZExvb3BzOworICAgIHByb3RlY3RlZCBSZWZlcmVuY2VNYXAgbG9vcE5hbWVzID0gbnVsbDsKKworICAgIHByb3RlY3RlZCBCX05MX09fU19TRV9TTF9UcmF2ZXJzZXIoKSB7CisgICAgfQorCisgICAgcHVibGljIEJfTkxfT19TX1NFX1NMX1RyYXZlcnNlcihmaW5hbCBUIHQsIGZpbmFsIFN0ZXA8VCwgPz4gc3RlcCwgZmluYWwgbG9uZyBpbml0aWFsQnVsaykgeworICAgICAgICBzdXBlcih0LCBzdGVwLCBpbml0aWFsQnVsayk7CisgICAgICAgIHRoaXMubmVzdGVkTG9vcHMgPSBuZXcgU3RhY2s8PigpOworICAgICAgICB0aGlzLmxvb3BOYW1lcyA9IG5ldyBSZWZlcmVuY2VNYXAoUmVmZXJlbmNlTWFwLkhBUkQsIFJlZmVyZW5jZU1hcC5XRUFLKTsKKyAgICB9CisKKyAgICAvLy8vLy8vLy8vLy8vLy8vLworCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGludCBsb29wcygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubmVzdGVkTG9vcHMucGVlaygpLmNvdW50KCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGludCBsb29wcyhmaW5hbCBTdHJpbmcgbG9vcE5hbWUpIHsKKyAgICAgICAgaWYgKGxvb3BOYW1lID09IG51bGwpCisgICAgICAgICAgICByZXR1cm4gbG9vcHMoKTsKKyAgICAgICAgZWxzZSBpZiAodGhpcy5sb29wTmFtZXMuY29udGFpbnNLZXkobG9vcE5hbWUpKQorICAgICAgICAgICAgcmV0dXJuICgoTGFiZWxsZWRDb3VudGVyKSB0aGlzLmxvb3BOYW1lcy5nZXQobG9vcE5hbWUpKS5jb3VudCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJMb29wIG5hbWUgbm90IGRlZmluZWQ6ICIgKyBsb29wTmFtZSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgaW5pdGlhbGlzZUxvb3BzKGZpbmFsIFN0cmluZyBzdGVwTGFiZWwsIGZpbmFsIFN0cmluZyBsb29wTmFtZSkgeworICAgICAgICBpZiAodGhpcy5uZXN0ZWRMb29wcy5lbXB0eSgpIHx8ICF0aGlzLm5lc3RlZExvb3BzLnBlZWsoKS5oYXNMYWJlbChzdGVwTGFiZWwpKSB7CisgICAgICAgICAgICBmaW5hbCBMYWJlbGxlZENvdW50ZXIgbGMgPSBuZXcgTGFiZWxsZWRDb3VudGVyKHN0ZXBMYWJlbCwgKHNob3J0KSAwKTsKKyAgICAgICAgICAgIHRoaXMubmVzdGVkTG9vcHMucHVzaChsYyk7CisgICAgICAgICAgICBpZiAobG9vcE5hbWUgIT0gbnVsbCkKKyAgICAgICAgICAgICAgICB0aGlzLmxvb3BOYW1lcy5wdXQobG9vcE5hbWUsIGxjKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIGluY3JMb29wcygpIHsKKyAgICAgICAgdGhpcy5uZXN0ZWRMb29wcy5wZWVrKCkuaW5jcmVtZW50KCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgcmVzZXRMb29wcygpIHsKKyAgICAgICAgdGhpcy5uZXN0ZWRMb29wcy5wb3AoKTsKKyAgICB9CisKKyAgICAvLy8vLy8vLy8vLy8vLy8vLworCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIDxSPiBBZG1pbjxSPiBzcGxpdChmaW5hbCBSIHIsIGZpbmFsIFN0ZXA8VCwgUj4gc3RlcCkgeworICAgICAgICBmaW5hbCBCX05MX09fU19TRV9TTF9UcmF2ZXJzZXI8Uj4gY2xvbmUgPSAoQl9OTF9PX1NfU0VfU0xfVHJhdmVyc2VyPFI+KSBzdXBlci5zcGxpdChyLCBzdGVwKTsKKworICAgICAgICBjbG9uZS5uZXN0ZWRMb29wcyA9IG5ldyBTdGFjazw+KCk7CisgICAgICAgIGZvcihMYWJlbGxlZENvdW50ZXIgbGMgOiB0aGlzLm5lc3RlZExvb3BzKQorICAgICAgICAgICAgY2xvbmUubmVzdGVkTG9vcHMucHVzaCgoTGFiZWxsZWRDb3VudGVyKSBsYy5jbG9uZSgpKTsKKworICAgICAgICBpZiAodGhpcy5sb29wTmFtZXMgIT0gbnVsbCkgeworICAgICAgICAgICAgY2xvbmUubG9vcE5hbWVzID0gbmV3IFJlZmVyZW5jZU1hcChSZWZlcmVuY2VNYXAuSEFSRCwgUmVmZXJlbmNlTWFwLldFQUspOworCisgICAgICAgICAgICBmaW5hbCBJdGVyYXRvciBsb29wTmFtZXNJdGVyYXRvciA9IHRoaXMubG9vcE5hbWVzLmVudHJ5U2V0KCkuaXRlcmF0b3IoKTsKKyAgICAgICAgICAgIHdoaWxlIChsb29wTmFtZXNJdGVyYXRvci5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBSZWZlcmVuY2VNYXAuRW50cnkgcGFpciA9IChSZWZlcmVuY2VNYXAuRW50cnkpIGxvb3BOYW1lc0l0ZXJhdG9yLm5leHQoKTsKKworICAgICAgICAgICAgICAgIGZpbmFsIGludCBpZHggPSB0aGlzLm5lc3RlZExvb3BzLmluZGV4T2YocGFpci5nZXRWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBpZiAoaWR4ICE9IC0xKQorICAgICAgICAgICAgICAgICAgICBjbG9uZS5sb29wTmFtZXMucHV0KHBhaXIuZ2V0S2V5KCksIGNsb25lLm5lc3RlZExvb3BzLmdldChpZHgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBjbG9uZTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgQWRtaW48VD4gc3BsaXQoKSB7CisgICAgICAgIGZpbmFsIEJfTkxfT19TX1NFX1NMX1RyYXZlcnNlcjxUPiBjbG9uZSA9IChCX05MX09fU19TRV9TTF9UcmF2ZXJzZXI8VD4pIHN1cGVyLnNwbGl0KCk7CisKKyAgICAgICAgY2xvbmUubmVzdGVkTG9vcHMgPSBuZXcgU3RhY2s8PigpOworICAgICAgICBmb3IoTGFiZWxsZWRDb3VudGVyIGxjIDogdGhpcy5uZXN0ZWRMb29wcykKKyAgICAgICAgICAgIGNsb25lLm5lc3RlZExvb3BzLnB1c2goKExhYmVsbGVkQ291bnRlcikgbGMuY2xvbmUoKSk7CisKKyAgICAgICAgaWYgKHRoaXMubG9vcE5hbWVzICE9IG51bGwpIHsKKyAgICAgICAgICAgIGNsb25lLmxvb3BOYW1lcyA9IG5ldyBSZWZlcmVuY2VNYXAoUmVmZXJlbmNlTWFwLkhBUkQsIFJlZmVyZW5jZU1hcC5XRUFLKTsKKworICAgICAgICAgICAgZmluYWwgSXRlcmF0b3IgbG9vcE5hbWVzSXRlcmF0b3IgPSB0aGlzLmxvb3BOYW1lcy5lbnRyeVNldCgpLml0ZXJhdG9yKCk7CisgICAgICAgICAgICB3aGlsZSAobG9vcE5hbWVzSXRlcmF0b3IuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICAgICAgZmluYWwgUmVmZXJlbmNlTWFwLkVudHJ5IHBhaXIgPSAoUmVmZXJlbmNlTWFwLkVudHJ5KSBsb29wTmFtZXNJdGVyYXRvci5uZXh0KCk7CisKKyAgICAgICAgICAgICAgICBmaW5hbCBpbnQgaWR4ID0gdGhpcy5uZXN0ZWRMb29wcy5pbmRleE9mKHBhaXIuZ2V0VmFsdWUoKSk7CisgICAgICAgICAgICAgICAgaWYgKGlkeCAhPSAtMSkKKyAgICAgICAgICAgICAgICAgICAgY2xvbmUubG9vcE5hbWVzLnB1dChwYWlyLmdldEtleSgpLCBjbG9uZS5uZXN0ZWRMb29wcy5nZXQoaWR4KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gY2xvbmU7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgbWVyZ2UoZmluYWwgQWRtaW48Pz4gb3RoZXIpIHsKKyAgICAgICAgc3VwZXIubWVyZ2Uob3RoZXIpOworICAgIH0KKworICAgIC8vLy8vLy8vLy8vLy8vLy8vCisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoZmluYWwgT2JqZWN0IG8pIHsKKyAgICAgICAgaWYgKHRoaXMgPT0gbykgcmV0dXJuIHRydWU7CisgICAgICAgIGlmICghKG8gaW5zdGFuY2VvZiBCX05MX09fU19TRV9TTF9UcmF2ZXJzZXIpKSByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghc3VwZXIuZXF1YWxzKG8pKSByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgZmluYWwgQl9OTF9PX1NfU0VfU0xfVHJhdmVyc2VyPD8+IHRoYXQgPSAoQl9OTF9PX1NfU0VfU0xfVHJhdmVyc2VyPD8+KSBvOworCisgICAgICAgIGlmICghdGhpcy5uZXN0ZWRMb29wcy5lcXVhbHModGhhdC5uZXN0ZWRMb29wcykpIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHRoaXMubG9vcE5hbWVzICE9IG51bGwgPyB0aGlzLmxvb3BOYW1lcy5lcXVhbHModGhhdC5sb29wTmFtZXMpIDogdGhhdC5sb29wTmFtZXMgPT0gbnVsbDsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgeworICAgICAgICBpbnQgcmVzdWx0ID0gc3VwZXIuaGFzaENvZGUoKTsKKyAgICAgICAgcmVzdWx0ID0gMzEgKiByZXN1bHQgKyB0aGlzLm5lc3RlZExvb3BzLmhhc2hDb2RlKCk7CisgICAgICAgIHJlc3VsdCA9IDMxICogcmVzdWx0ICsgKHRoaXMubG9vcE5hbWVzICE9IG51bGwgPyB0aGlzLmxvb3BOYW1lcy5oYXNoQ29kZSgpIDogMCk7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdHJhdmVyc2VyL0JfTkxfT19TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvQl9OTF9PX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGRmMjdjNQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdHJhdmVyc2VyL0JfTkxfT19TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvci5qYXZhCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlcjsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuU3RlcDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNlckdlbmVyYXRvcjsKKworaW1wb3J0IGphdmEudXRpbC5FbnVtU2V0OworaW1wb3J0IGphdmEudXRpbC5TZXQ7CisKK3B1YmxpYyBmaW5hbCBjbGFzcyBCX05MX09fU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IgaW1wbGVtZW50cyBUcmF2ZXJzZXJHZW5lcmF0b3IgeworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgQl9OTF9PX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yIElOU1RBTkNFID0gbmV3IEJfTkxfT19TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvcigpOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU2V0PFRyYXZlcnNlclJlcXVpcmVtZW50PiBSRVFVSVJFTUVOVFMgPSBFbnVtU2V0Lm9mKAorICAgICAgICAgICAgVHJhdmVyc2VyUmVxdWlyZW1lbnQuQlVMSywKKyAgICAgICAgICAgIFRyYXZlcnNlclJlcXVpcmVtZW50Lk5FU1RFRF9MT09QLAorICAgICAgICAgICAgVHJhdmVyc2VyUmVxdWlyZW1lbnQuT0JKRUNULAorICAgICAgICAgICAgVHJhdmVyc2VyUmVxdWlyZW1lbnQuU0FDSywKKyAgICAgICAgICAgIFRyYXZlcnNlclJlcXVpcmVtZW50LlNJREVfRUZGRUNUUywKKyAgICAgICAgICAgIFRyYXZlcnNlclJlcXVpcmVtZW50LlNJTkdMRV9MT09QKTsKKworICAgIHByaXZhdGUgQl9OTF9PX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yKCkgeworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyA8Uz4gVHJhdmVyc2VyLkFkbWluPFM+IGdlbmVyYXRlKGZpbmFsIFMgc3RhcnQsIGZpbmFsIFN0ZXA8UywgPz4gc3RhcnRTdGVwLCBmaW5hbCBsb25nIGluaXRpYWxCdWxrKSB7CisgICAgICAgIHJldHVybiBuZXcgQl9OTF9PX1NfU0VfU0xfVHJhdmVyc2VyPD4oc3RhcnQsIHN0YXJ0U3RlcCwgaW5pdGlhbEJ1bGspOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBTZXQ8VHJhdmVyc2VyUmVxdWlyZW1lbnQ+IGdldFByb3ZpZGVkUmVxdWlyZW1lbnRzKCkgeworICAgICAgICByZXR1cm4gUkVRVUlSRU1FTlRTOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgQl9OTF9PX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yIGluc3RhbmNlKCkgeworICAgICAgICByZXR1cm4gSU5TVEFOQ0U7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvQl9PX1NfU0VfU0xfVHJhdmVyc2VyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci9CX09fU19TRV9TTF9UcmF2ZXJzZXIuamF2YQppbmRleCAwNDA5Y2Q3Li4zM2M1NTIwIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci9CX09fU19TRV9TTF9UcmF2ZXJzZXIuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci9CX09fU19TRV9TTF9UcmF2ZXJzZXIuamF2YQpAQCAtMTgsMTIgKzE4LDExIEBACiAgKi8KIHBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXI7CiAKLQogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuU3RlcDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbFNpZGVFZmZlY3RzOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2VyOwogCi1pbXBvcnQgamF2YS51dGlsLlJhbmRvbTsKK2ltcG9ydCBqYXZhLnV0aWwuT2JqZWN0czsKIAogLyoqCiAgKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKQEAgLTMyLDYgKzMxLDcgQEAKIAogICAgIHByb3RlY3RlZCBPYmplY3Qgc2FjayA9IG51bGw7CiAgICAgcHJvdGVjdGVkIHNob3J0IGxvb3BzID0gMDsgIC8vIGFuIG9wdGltaXphdGlvbiBoYWNrIHRvIHVzZSBhIHNob3J0IGludGVybmFsbHkgdG8gc2F2ZSBiaXRzIDopCisgICAgcHJvdGVjdGVkIFN0cmluZyBsb29wTmFtZSA9IG51bGw7CiAgICAgcHJvdGVjdGVkIHRyYW5zaWVudCBUcmF2ZXJzYWxTaWRlRWZmZWN0cyBzaWRlRWZmZWN0czsKIAogICAgIHByb3RlY3RlZCBCX09fU19TRV9TTF9UcmF2ZXJzZXIoKSB7CkBAIC02NCw3ICs2NCwyMCBAQAogICAgIH0KIAogICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lkIGluY3JMb29wcyhmaW5hbCBTdHJpbmcgc3RlcExhYmVsKSB7CisgICAgcHVibGljIGludCBsb29wcyhmaW5hbCBTdHJpbmcgbG9vcE5hbWUpIHsKKyAgICAgICAgaWYgKGxvb3BOYW1lID09IG51bGwgfHwgdGhpcy5sb29wTmFtZSAhPSBudWxsICYmIHRoaXMubG9vcE5hbWUuZXF1YWxzKGxvb3BOYW1lKSkKKyAgICAgICAgICAgIHJldHVybiB0aGlzLmxvb3BzOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJMb29wIG5hbWUgbm90IGRlZmluZWQ6ICIgKyBsb29wTmFtZSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgaW5pdGlhbGlzZUxvb3BzKGZpbmFsIFN0cmluZyBzdGVwTGFiZWwgLCBmaW5hbCBTdHJpbmcgbG9vcE5hbWUpeworICAgICAgICB0aGlzLmxvb3BOYW1lID0gbG9vcE5hbWU7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgaW5jckxvb3BzKCkgewogICAgICAgICB0aGlzLmxvb3BzKys7CiAgICAgfQogCkBAIC04MCw3ICs5Myw2IEBACiAgICAgICAgIHJldHVybiB0aGlzLnNpZGVFZmZlY3RzOwogICAgIH0KIAotCiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIHZvaWQgc2V0U2lkZUVmZmVjdHMoZmluYWwgVHJhdmVyc2FsU2lkZUVmZmVjdHMgc2lkZUVmZmVjdHMpIHsKICAgICAgICAgdGhpcy5zaWRlRWZmZWN0cyA9IHNpZGVFZmZlY3RzOwpAQCAtMTE5LDExICsxMzEsMTMgQEAKIAogICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7Ci0gICAgICAgIHJldHVybiBjYXJyaWVzVW5tZXJnZWFibGVTYWNrKCkgPyBTeXN0ZW0uaWRlbnRpdHlIYXNoQ29kZSh0aGlzKSA6IChzdXBlci5oYXNoQ29kZSgpIF4gdGhpcy5sb29wcyk7CisgICAgICAgIHJldHVybiBjYXJyaWVzVW5tZXJnZWFibGVTYWNrKCkgPyBTeXN0ZW0uaWRlbnRpdHlIYXNoQ29kZSh0aGlzKSA6IChzdXBlci5oYXNoQ29kZSgpIF4gdGhpcy5sb29wcyBeIE9iamVjdHMuaGFzaENvZGUodGhpcy5sb29wTmFtZSkpOwogICAgIH0KIAogICAgIHByb3RlY3RlZCBmaW5hbCBib29sZWFuIGVxdWFscyhmaW5hbCBCX09fU19TRV9TTF9UcmF2ZXJzZXIgb3RoZXIpIHsKLSAgICAgICAgcmV0dXJuIHN1cGVyLmVxdWFscyhvdGhlcikgJiYgb3RoZXIubG9vcHMgPT0gdGhpcy5sb29wcyAmJiAhY2Fycmllc1VubWVyZ2VhYmxlU2FjaygpOworICAgICAgICByZXR1cm4gc3VwZXIuZXF1YWxzKG90aGVyKSAmJiBvdGhlci5sb29wcyA9PSB0aGlzLmxvb3BzCisgICAgICAgICAgICAgICAgJiYgKHRoaXMubG9vcE5hbWUgIT0gbnVsbCA/IHRoaXMubG9vcE5hbWUuZXF1YWxzKG90aGVyLmxvb3BOYW1lKSA6IG90aGVyLmxvb3BOYW1lID09IG51bGwpCisgICAgICAgICAgICAgICAgJiYgIWNhcnJpZXNVbm1lcmdlYWJsZVNhY2soKTsKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdHJhdmVyc2VyL0xQX05MX09fT0JfUF9TX1NFX1NMX1RyYXZlcnNlci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvTFBfTkxfT19PQl9QX1NfU0VfU0xfVHJhdmVyc2VyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NiMWRkMwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdHJhdmVyc2VyL0xQX05MX09fT0JfUF9TX1NFX1NMX1RyYXZlcnNlci5qYXZhCkBAIC0wLDAgKzEsMTU2IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlcjsKKworaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9ucy5tYXAuUmVmZXJlbmNlTWFwOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuU3RlcDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci51dGlsLkxhYmVsbGVkQ291bnRlcjsKKworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuU3RhY2s7CisKK3B1YmxpYyBjbGFzcyBMUF9OTF9PX09CX1BfU19TRV9TTF9UcmF2ZXJzZXI8VD4gZXh0ZW5kcyBMUF9PX09CX1BfU19TRV9TTF9UcmF2ZXJzZXI8VD4geworCisgICAgcHJvdGVjdGVkIFN0YWNrPExhYmVsbGVkQ291bnRlcj4gbmVzdGVkTG9vcHM7CisgICAgcHJvdGVjdGVkIFJlZmVyZW5jZU1hcCBsb29wTmFtZXMgPSBudWxsOworCisgICAgcHJvdGVjdGVkIExQX05MX09fT0JfUF9TX1NFX1NMX1RyYXZlcnNlcigpIHsKKyAgICB9CisKKyAgICBwdWJsaWMgTFBfTkxfT19PQl9QX1NfU0VfU0xfVHJhdmVyc2VyKGZpbmFsIFQgdCwgZmluYWwgU3RlcDxULCA/PiBzdGVwKSB7CisgICAgICAgIHN1cGVyKHQsIHN0ZXApOworICAgICAgICB0aGlzLm5lc3RlZExvb3BzID0gbmV3IFN0YWNrPD4oKTsKKyAgICAgICAgdGhpcy5sb29wTmFtZXMgPSBuZXcgUmVmZXJlbmNlTWFwKFJlZmVyZW5jZU1hcC5IQVJELCBSZWZlcmVuY2VNYXAuV0VBSyk7CisgICAgfQorCisgICAgLy8vLy8vLy8vLy8vLy8vLy8KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBpbnQgbG9vcHMoKSB7CisgICAgICAgIHJldHVybiB0aGlzLm5lc3RlZExvb3BzLnBlZWsoKS5jb3VudCgpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBpbnQgbG9vcHMoZmluYWwgU3RyaW5nIGxvb3BOYW1lKSB7CisgICAgICAgIGlmIChsb29wTmFtZSA9PSBudWxsKQorICAgICAgICAgICAgcmV0dXJuIGxvb3BzKCk7CisgICAgICAgIGVsc2UgaWYgKHRoaXMubG9vcE5hbWVzLmNvbnRhaW5zS2V5KGxvb3BOYW1lKSkKKyAgICAgICAgICAgIHJldHVybiAoKExhYmVsbGVkQ291bnRlcikgdGhpcy5sb29wTmFtZXMuZ2V0KGxvb3BOYW1lKSkuY291bnQoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiTG9vcCBuYW1lIG5vdCBkZWZpbmVkOiAiICsgbG9vcE5hbWUpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIGluaXRpYWxpc2VMb29wcyhmaW5hbCBTdHJpbmcgc3RlcExhYmVsLCBmaW5hbCBTdHJpbmcgbG9vcE5hbWUpIHsKKyAgICAgICAgaWYgKHRoaXMubmVzdGVkTG9vcHMuZW1wdHkoKSB8fCAhdGhpcy5uZXN0ZWRMb29wcy5wZWVrKCkuaGFzTGFiZWwoc3RlcExhYmVsKSkgeworICAgICAgICAgICAgZmluYWwgTGFiZWxsZWRDb3VudGVyIGxjID0gbmV3IExhYmVsbGVkQ291bnRlcihzdGVwTGFiZWwsIChzaG9ydCkgMCk7CisgICAgICAgICAgICB0aGlzLm5lc3RlZExvb3BzLnB1c2gobGMpOworICAgICAgICAgICAgaWYgKGxvb3BOYW1lICE9IG51bGwpCisgICAgICAgICAgICAgICAgdGhpcy5sb29wTmFtZXMucHV0KGxvb3BOYW1lLCBsYyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBpbmNyTG9vcHMoKSB7CisgICAgICAgIHRoaXMubmVzdGVkTG9vcHMucGVlaygpLmluY3JlbWVudCgpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIHJlc2V0TG9vcHMoKSB7CisgICAgICAgIHRoaXMubmVzdGVkTG9vcHMucG9wKCk7CisgICAgfQorCisgICAgLy8vLy8vLy8vLy8vLy8vLy8KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyA8Uj4gQWRtaW48Uj4gc3BsaXQoZmluYWwgUiByLCBmaW5hbCBTdGVwPFQsIFI+IHN0ZXApIHsKKyAgICAgICAgZmluYWwgTFBfTkxfT19PQl9QX1NfU0VfU0xfVHJhdmVyc2VyPFI+IGNsb25lID0gKExQX05MX09fT0JfUF9TX1NFX1NMX1RyYXZlcnNlcjxSPikgc3VwZXIuc3BsaXQociwgc3RlcCk7CisgICAgICAgIGNsb25lLm5lc3RlZExvb3BzID0gbmV3IFN0YWNrPD4oKTsKKyAgICAgICAgZm9yKExhYmVsbGVkQ291bnRlciBsYyA6IHRoaXMubmVzdGVkTG9vcHMpCisgICAgICAgICAgICBjbG9uZS5uZXN0ZWRMb29wcy5wdXNoKChMYWJlbGxlZENvdW50ZXIpIGxjLmNsb25lKCkpOworCisgICAgICAgIGlmICh0aGlzLmxvb3BOYW1lcyAhPSBudWxsKSB7CisgICAgICAgICAgICBjbG9uZS5sb29wTmFtZXMgPSBuZXcgUmVmZXJlbmNlTWFwKFJlZmVyZW5jZU1hcC5IQVJELCBSZWZlcmVuY2VNYXAuV0VBSyk7CisKKyAgICAgICAgICAgIGZpbmFsIEl0ZXJhdG9yIGxvb3BOYW1lc0l0ZXJhdG9yID0gdGhpcy5sb29wTmFtZXMuZW50cnlTZXQoKS5pdGVyYXRvcigpOworICAgICAgICAgICAgd2hpbGUgKGxvb3BOYW1lc0l0ZXJhdG9yLmhhc05leHQoKSkgeworICAgICAgICAgICAgICAgIGZpbmFsIFJlZmVyZW5jZU1hcC5FbnRyeSBwYWlyID0gKFJlZmVyZW5jZU1hcC5FbnRyeSkgbG9vcE5hbWVzSXRlcmF0b3IubmV4dCgpOworCisgICAgICAgICAgICAgICAgZmluYWwgaW50IGlkeCA9IHRoaXMubmVzdGVkTG9vcHMuaW5kZXhPZihwYWlyLmdldFZhbHVlKCkpOworICAgICAgICAgICAgICAgIGlmIChpZHggIT0gLTEpCisgICAgICAgICAgICAgICAgICAgIGNsb25lLmxvb3BOYW1lcy5wdXQocGFpci5nZXRLZXkoKSwgY2xvbmUubmVzdGVkTG9vcHMuZ2V0KGlkeCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGNsb25lOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBBZG1pbjxUPiBzcGxpdCgpIHsKKyAgICAgICAgZmluYWwgTFBfTkxfT19PQl9QX1NfU0VfU0xfVHJhdmVyc2VyPFQ+IGNsb25lID0gKExQX05MX09fT0JfUF9TX1NFX1NMX1RyYXZlcnNlcjxUPikgc3VwZXIuc3BsaXQoKTsKKyAgICAgICAgY2xvbmUubmVzdGVkTG9vcHMgPSBuZXcgU3RhY2s8PigpOworICAgICAgICBmb3IoTGFiZWxsZWRDb3VudGVyIGxjIDogdGhpcy5uZXN0ZWRMb29wcykKKyAgICAgICAgICAgIGNsb25lLm5lc3RlZExvb3BzLnB1c2goKExhYmVsbGVkQ291bnRlcikgbGMuY2xvbmUoKSk7CisKKyAgICAgICAgaWYgKHRoaXMubG9vcE5hbWVzICE9IG51bGwpIHsKKyAgICAgICAgICAgIGNsb25lLmxvb3BOYW1lcyA9IG5ldyBSZWZlcmVuY2VNYXAoUmVmZXJlbmNlTWFwLkhBUkQsIFJlZmVyZW5jZU1hcC5XRUFLKTsKKworICAgICAgICAgICAgZmluYWwgSXRlcmF0b3IgbG9vcE5hbWVzSXRlcmF0b3IgPSB0aGlzLmxvb3BOYW1lcy5lbnRyeVNldCgpLml0ZXJhdG9yKCk7CisgICAgICAgICAgICB3aGlsZSAobG9vcE5hbWVzSXRlcmF0b3IuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICAgICAgZmluYWwgUmVmZXJlbmNlTWFwLkVudHJ5IHBhaXIgPSAoUmVmZXJlbmNlTWFwLkVudHJ5KSBsb29wTmFtZXNJdGVyYXRvci5uZXh0KCk7CisKKyAgICAgICAgICAgICAgICBmaW5hbCBpbnQgaWR4ID0gdGhpcy5uZXN0ZWRMb29wcy5pbmRleE9mKHBhaXIuZ2V0VmFsdWUoKSk7CisgICAgICAgICAgICAgICAgaWYgKGlkeCAhPSAtMSkKKyAgICAgICAgICAgICAgICAgICAgY2xvbmUubG9vcE5hbWVzLnB1dChwYWlyLmdldEtleSgpLCBjbG9uZS5uZXN0ZWRMb29wcy5nZXQoaWR4KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gY2xvbmU7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgbWVyZ2UoZmluYWwgQWRtaW48Pz4gb3RoZXIpIHsKKyAgICAgICAgc3VwZXIubWVyZ2Uob3RoZXIpOworICAgIH0KKworICAgIC8vLy8vLy8vLy8vLy8vLy8vCisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoZmluYWwgT2JqZWN0IG8pIHsKKyAgICAgICAgaWYgKHRoaXMgPT0gbykgcmV0dXJuIHRydWU7CisgICAgICAgIGlmICghKG8gaW5zdGFuY2VvZiBMUF9OTF9PX09CX1BfU19TRV9TTF9UcmF2ZXJzZXIpKSByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghc3VwZXIuZXF1YWxzKG8pKSByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgZmluYWwgTFBfTkxfT19PQl9QX1NfU0VfU0xfVHJhdmVyc2VyPD8+IHRoYXQgPSAoTFBfTkxfT19PQl9QX1NfU0VfU0xfVHJhdmVyc2VyPD8+KSBvOworCisgICAgICAgIGlmICghdGhpcy5uZXN0ZWRMb29wcy5lcXVhbHModGhhdC5uZXN0ZWRMb29wcykpIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHRoaXMubG9vcE5hbWVzICE9IG51bGwgPyB0aGlzLmxvb3BOYW1lcy5lcXVhbHModGhhdC5sb29wTmFtZXMpIDogdGhhdC5sb29wTmFtZXMgPT0gbnVsbDsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgeworICAgICAgICBpbnQgcmVzdWx0ID0gc3VwZXIuaGFzaENvZGUoKTsKKyAgICAgICAgcmVzdWx0ID0gMzEgKiByZXN1bHQgKyB0aGlzLm5lc3RlZExvb3BzLmhhc2hDb2RlKCk7CisgICAgICAgIHJlc3VsdCA9IDMxICogcmVzdWx0ICsgKHRoaXMubG9vcE5hbWVzICE9IG51bGwgPyB0aGlzLmxvb3BOYW1lcy5oYXNoQ29kZSgpIDogMCk7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdHJhdmVyc2VyL0xQX05MX09fT0JfUF9TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvTFBfTkxfT19PQl9QX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjBlYjJjYQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdHJhdmVyc2VyL0xQX05MX09fT0JfUF9TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvci5qYXZhCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5TdGVwOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2VyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2VyR2VuZXJhdG9yOworCitpbXBvcnQgamF2YS51dGlsLkVudW1TZXQ7CitpbXBvcnQgamF2YS51dGlsLlNldDsKKworcHVibGljIGZpbmFsIGNsYXNzIExQX05MX09fT0JfUF9TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvciBpbXBsZW1lbnRzIFRyYXZlcnNlckdlbmVyYXRvciB7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTZXQ8VHJhdmVyc2VyUmVxdWlyZW1lbnQ+IFJFUVVJUkVNRU5UUyA9IEVudW1TZXQub2YoCisgICAgICAgICAgICBUcmF2ZXJzZXJSZXF1aXJlbWVudC5MQUJFTEVEX1BBVEgsCisgICAgICAgICAgICBUcmF2ZXJzZXJSZXF1aXJlbWVudC5ORVNURURfTE9PUCwKKyAgICAgICAgICAgIFRyYXZlcnNlclJlcXVpcmVtZW50Lk9CSkVDVCwKKyAgICAgICAgICAgIFRyYXZlcnNlclJlcXVpcmVtZW50Lk9ORV9CVUxLLAorICAgICAgICAgICAgVHJhdmVyc2VyUmVxdWlyZW1lbnQuUEFUSCwKKyAgICAgICAgICAgIFRyYXZlcnNlclJlcXVpcmVtZW50LlNBQ0ssCisgICAgICAgICAgICBUcmF2ZXJzZXJSZXF1aXJlbWVudC5TSURFX0VGRkVDVFMsCisgICAgICAgICAgICBUcmF2ZXJzZXJSZXF1aXJlbWVudC5TSU5HTEVfTE9PUCk7CisKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExQX05MX09fT0JfUF9TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvciBJTlNUQU5DRSA9IG5ldyBMUF9OTF9PX09CX1BfU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IoKTsKKworICAgIHByaXZhdGUgTFBfTkxfT19PQl9QX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yKCkgeworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyA8Uz4gVHJhdmVyc2VyLkFkbWluPFM+IGdlbmVyYXRlKGZpbmFsIFMgc3RhcnQsIGZpbmFsIFN0ZXA8UywgPz4gc3RhcnRTdGVwLCBmaW5hbCBsb25nIGluaXRpYWxCdWxrKSB7CisgICAgICAgIHJldHVybiBuZXcgTFBfTkxfT19PQl9QX1NfU0VfU0xfVHJhdmVyc2VyPD4oc3RhcnQsIHN0YXJ0U3RlcCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFNldDxUcmF2ZXJzZXJSZXF1aXJlbWVudD4gZ2V0UHJvdmlkZWRSZXF1aXJlbWVudHMoKSB7CisgICAgICAgIHJldHVybiBSRVFVSVJFTUVOVFM7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBMUF9OTF9PX09CX1BfU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IgaW5zdGFuY2UoKSB7CisgICAgICAgIHJldHVybiBJTlNUQU5DRTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvTFBfTkxfT19PQl9TX1NFX1NMX1RyYXZlcnNlci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvTFBfTkxfT19PQl9TX1NFX1NMX1RyYXZlcnNlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5Y2Q3ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci9MUF9OTF9PX09CX1NfU0VfU0xfVHJhdmVyc2VyLmphdmEKQEAgLTAsMCArMSwxNTYgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyOworCitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmNvbGxlY3Rpb25zLm1hcC5SZWZlcmVuY2VNYXA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5TdGVwOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyLnV0aWwuTGFiZWxsZWRDb3VudGVyOworCitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworaW1wb3J0IGphdmEudXRpbC5TdGFjazsKKworcHVibGljIGNsYXNzIExQX05MX09fT0JfU19TRV9TTF9UcmF2ZXJzZXI8VD4gZXh0ZW5kcyBMUF9PX09CX1NfU0VfU0xfVHJhdmVyc2VyPFQ+IHsKKworICAgIHByb3RlY3RlZCBTdGFjazxMYWJlbGxlZENvdW50ZXI+IG5lc3RlZExvb3BzOworICAgIHByb3RlY3RlZCBSZWZlcmVuY2VNYXAgbG9vcE5hbWVzID0gbnVsbDsKKworICAgIHByb3RlY3RlZCBMUF9OTF9PX09CX1NfU0VfU0xfVHJhdmVyc2VyKCkgeworICAgIH0KKworICAgIHB1YmxpYyBMUF9OTF9PX09CX1NfU0VfU0xfVHJhdmVyc2VyKGZpbmFsIFQgdCwgZmluYWwgU3RlcDxULCA/PiBzdGVwKSB7CisgICAgICAgIHN1cGVyKHQsIHN0ZXApOworICAgICAgICB0aGlzLm5lc3RlZExvb3BzID0gbmV3IFN0YWNrPD4oKTsKKyAgICAgICAgdGhpcy5sb29wTmFtZXMgPSBuZXcgUmVmZXJlbmNlTWFwKFJlZmVyZW5jZU1hcC5IQVJELCBSZWZlcmVuY2VNYXAuV0VBSyk7CisgICAgfQorCisgICAgLy8vLy8vLy8vLy8vLy8vLy8KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBpbnQgbG9vcHMoKSB7CisgICAgICAgIHJldHVybiB0aGlzLm5lc3RlZExvb3BzLnBlZWsoKS5jb3VudCgpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBpbnQgbG9vcHMoZmluYWwgU3RyaW5nIGxvb3BOYW1lKSB7CisgICAgICAgIGlmIChsb29wTmFtZSA9PSBudWxsKQorICAgICAgICAgICAgcmV0dXJuIGxvb3BzKCk7CisgICAgICAgIGVsc2UgaWYgKHRoaXMubG9vcE5hbWVzLmNvbnRhaW5zS2V5KGxvb3BOYW1lKSkKKyAgICAgICAgICAgIHJldHVybiAoKExhYmVsbGVkQ291bnRlcikgdGhpcy5sb29wTmFtZXMuZ2V0KGxvb3BOYW1lKSkuY291bnQoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiTG9vcCBuYW1lIG5vdCBkZWZpbmVkOiAiICsgbG9vcE5hbWUpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIGluaXRpYWxpc2VMb29wcyhmaW5hbCBTdHJpbmcgc3RlcExhYmVsLCBmaW5hbCBTdHJpbmcgbG9vcE5hbWUpIHsKKyAgICAgICAgaWYgKHRoaXMubmVzdGVkTG9vcHMuZW1wdHkoKSB8fCAhdGhpcy5uZXN0ZWRMb29wcy5wZWVrKCkuaGFzTGFiZWwoc3RlcExhYmVsKSkgeworICAgICAgICAgICAgZmluYWwgTGFiZWxsZWRDb3VudGVyIGxjID0gbmV3IExhYmVsbGVkQ291bnRlcihzdGVwTGFiZWwsIChzaG9ydCkgMCk7CisgICAgICAgICAgICB0aGlzLm5lc3RlZExvb3BzLnB1c2gobGMpOworICAgICAgICAgICAgaWYgKGxvb3BOYW1lICE9IG51bGwpCisgICAgICAgICAgICAgICAgdGhpcy5sb29wTmFtZXMucHV0KGxvb3BOYW1lLCBsYyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBpbmNyTG9vcHMoKSB7CisgICAgICAgIHRoaXMubmVzdGVkTG9vcHMucGVlaygpLmluY3JlbWVudCgpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIHJlc2V0TG9vcHMoKSB7CisgICAgICAgIHRoaXMubmVzdGVkTG9vcHMucG9wKCk7CisgICAgfQorCisgICAgLy8vLy8vLy8vLy8vLy8vLy8KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyA8Uj4gQWRtaW48Uj4gc3BsaXQoZmluYWwgUiByLCBmaW5hbCBTdGVwPFQsIFI+IHN0ZXApIHsKKyAgICAgICAgZmluYWwgTFBfTkxfT19PQl9TX1NFX1NMX1RyYXZlcnNlcjxSPiBjbG9uZSA9IChMUF9OTF9PX09CX1NfU0VfU0xfVHJhdmVyc2VyPFI+KSBzdXBlci5zcGxpdChyLCBzdGVwKTsKKyAgICAgICAgY2xvbmUubmVzdGVkTG9vcHMgPSBuZXcgU3RhY2s8PigpOworICAgICAgICBmb3IoTGFiZWxsZWRDb3VudGVyIGxjIDogdGhpcy5uZXN0ZWRMb29wcykKKyAgICAgICAgICAgIGNsb25lLm5lc3RlZExvb3BzLnB1c2goKExhYmVsbGVkQ291bnRlcikgbGMuY2xvbmUoKSk7CisKKyAgICAgICAgaWYgKHRoaXMubG9vcE5hbWVzICE9IG51bGwpIHsKKyAgICAgICAgICAgIGNsb25lLmxvb3BOYW1lcyA9IG5ldyBSZWZlcmVuY2VNYXAoUmVmZXJlbmNlTWFwLkhBUkQsIFJlZmVyZW5jZU1hcC5XRUFLKTsKKworICAgICAgICAgICAgZmluYWwgSXRlcmF0b3IgbG9vcE5hbWVzSXRlcmF0b3IgPSB0aGlzLmxvb3BOYW1lcy5lbnRyeVNldCgpLml0ZXJhdG9yKCk7CisgICAgICAgICAgICB3aGlsZSAobG9vcE5hbWVzSXRlcmF0b3IuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICAgICAgZmluYWwgUmVmZXJlbmNlTWFwLkVudHJ5IHBhaXIgPSAoUmVmZXJlbmNlTWFwLkVudHJ5KSBsb29wTmFtZXNJdGVyYXRvci5uZXh0KCk7CisKKyAgICAgICAgICAgICAgICBmaW5hbCBpbnQgaWR4ID0gdGhpcy5uZXN0ZWRMb29wcy5pbmRleE9mKHBhaXIuZ2V0VmFsdWUoKSk7CisgICAgICAgICAgICAgICAgaWYgKGlkeCAhPSAtMSkKKyAgICAgICAgICAgICAgICAgICAgY2xvbmUubG9vcE5hbWVzLnB1dChwYWlyLmdldEtleSgpLCBjbG9uZS5uZXN0ZWRMb29wcy5nZXQoaWR4KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gY2xvbmU7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIEFkbWluPFQ+IHNwbGl0KCkgeworICAgICAgICBmaW5hbCBMUF9OTF9PX09CX1NfU0VfU0xfVHJhdmVyc2VyPFQ+IGNsb25lID0gKExQX05MX09fT0JfU19TRV9TTF9UcmF2ZXJzZXI8VD4pIHN1cGVyLnNwbGl0KCk7CisgICAgICAgIGNsb25lLm5lc3RlZExvb3BzID0gbmV3IFN0YWNrPD4oKTsKKyAgICAgICAgZm9yKExhYmVsbGVkQ291bnRlciBsYyA6IHRoaXMubmVzdGVkTG9vcHMpCisgICAgICAgICAgICBjbG9uZS5uZXN0ZWRMb29wcy5wdXNoKChMYWJlbGxlZENvdW50ZXIpIGxjLmNsb25lKCkpOworCisgICAgICAgIGlmICh0aGlzLmxvb3BOYW1lcyAhPSBudWxsKSB7CisgICAgICAgICAgICBjbG9uZS5sb29wTmFtZXMgPSBuZXcgUmVmZXJlbmNlTWFwKFJlZmVyZW5jZU1hcC5IQVJELCBSZWZlcmVuY2VNYXAuV0VBSyk7CisKKyAgICAgICAgICAgIGZpbmFsIEl0ZXJhdG9yIGxvb3BOYW1lc0l0ZXJhdG9yID0gdGhpcy5sb29wTmFtZXMuZW50cnlTZXQoKS5pdGVyYXRvcigpOworICAgICAgICAgICAgd2hpbGUgKGxvb3BOYW1lc0l0ZXJhdG9yLmhhc05leHQoKSkgeworICAgICAgICAgICAgICAgIGZpbmFsIFJlZmVyZW5jZU1hcC5FbnRyeSBwYWlyID0gKFJlZmVyZW5jZU1hcC5FbnRyeSkgbG9vcE5hbWVzSXRlcmF0b3IubmV4dCgpOworCisgICAgICAgICAgICAgICAgZmluYWwgaW50IGlkeCA9IHRoaXMubmVzdGVkTG9vcHMuaW5kZXhPZihwYWlyLmdldFZhbHVlKCkpOworICAgICAgICAgICAgICAgIGlmIChpZHggIT0gLTEpCisgICAgICAgICAgICAgICAgICAgIGNsb25lLmxvb3BOYW1lcy5wdXQocGFpci5nZXRLZXkoKSwgY2xvbmUubmVzdGVkTG9vcHMuZ2V0KGlkeCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGNsb25lOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIG1lcmdlKGZpbmFsIEFkbWluPD8+IG90aGVyKSB7CisgICAgICAgIHN1cGVyLm1lcmdlKG90aGVyKTsKKyAgICB9CisKKyAgICAvLy8vLy8vLy8vLy8vLy8vLworCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKGZpbmFsIE9iamVjdCBvKSB7CisgICAgICAgIGlmICh0aGlzID09IG8pIHJldHVybiB0cnVlOworICAgICAgICBpZiAoIShvIGluc3RhbmNlb2YgTFBfTkxfT19PQl9TX1NFX1NMX1RyYXZlcnNlcikpIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFzdXBlci5lcXVhbHMobykpIHJldHVybiBmYWxzZTsKKworICAgICAgICBmaW5hbCBMUF9OTF9PX09CX1NfU0VfU0xfVHJhdmVyc2VyPD8+IHRoYXQgPSAoTFBfTkxfT19PQl9TX1NFX1NMX1RyYXZlcnNlcjw/PikgbzsKKworICAgICAgICBpZiAoIXRoaXMubmVzdGVkTG9vcHMuZXF1YWxzKHRoYXQubmVzdGVkTG9vcHMpKSByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB0aGlzLmxvb3BOYW1lcyAhPSBudWxsID8gdGhpcy5sb29wTmFtZXMuZXF1YWxzKHRoYXQubG9vcE5hbWVzKSA6IHRoYXQubG9vcE5hbWVzID09IG51bGw7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKKyAgICAgICAgaW50IHJlc3VsdCA9IHN1cGVyLmhhc2hDb2RlKCk7CisgICAgICAgIHJlc3VsdCA9IDMxICogcmVzdWx0ICsgdGhpcy5uZXN0ZWRMb29wcy5oYXNoQ29kZSgpOworICAgICAgICByZXN1bHQgPSAzMSAqIHJlc3VsdCArICh0aGlzLmxvb3BOYW1lcyAhPSBudWxsID8gdGhpcy5sb29wTmFtZXMuaGFzaENvZGUoKSA6IDApOworCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci9MUF9OTF9PX09CX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci9MUF9OTF9PX09CX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDY0NjZhNQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdHJhdmVyc2VyL0xQX05MX09fT0JfU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IuamF2YQpAQCAtMCwwICsxLDU5IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlcjsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuU3RlcDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNlckdlbmVyYXRvcjsKKworaW1wb3J0IGphdmEudXRpbC5FbnVtU2V0OworaW1wb3J0IGphdmEudXRpbC5TZXQ7CisKK3B1YmxpYyBmaW5hbCBjbGFzcyBMUF9OTF9PX09CX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yIGltcGxlbWVudHMgVHJhdmVyc2VyR2VuZXJhdG9yIHsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFNldDxUcmF2ZXJzZXJSZXF1aXJlbWVudD4gUkVRVUlSRU1FTlRTID0gRW51bVNldC5vZigKKyAgICAgICAgICAgIFRyYXZlcnNlclJlcXVpcmVtZW50LkxBQkVMRURfUEFUSCwKKyAgICAgICAgICAgIFRyYXZlcnNlclJlcXVpcmVtZW50Lk5FU1RFRF9MT09QLAorICAgICAgICAgICAgVHJhdmVyc2VyUmVxdWlyZW1lbnQuT0JKRUNULAorICAgICAgICAgICAgVHJhdmVyc2VyUmVxdWlyZW1lbnQuT05FX0JVTEssCisgICAgICAgICAgICBUcmF2ZXJzZXJSZXF1aXJlbWVudC5TQUNLLAorICAgICAgICAgICAgVHJhdmVyc2VyUmVxdWlyZW1lbnQuU0lERV9FRkZFQ1RTLAorICAgICAgICAgICAgVHJhdmVyc2VyUmVxdWlyZW1lbnQuU0lOR0xFX0xPT1ApOworCisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMUF9OTF9PX09CX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yIElOU1RBTkNFID0gbmV3IExQX05MX09fT0JfU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IoKTsKKworICAgIHByaXZhdGUgTFBfTkxfT19PQl9TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvcigpIHsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgPFM+IFRyYXZlcnNlci5BZG1pbjxTPiBnZW5lcmF0ZShmaW5hbCBTIHN0YXJ0LCBmaW5hbCBTdGVwPFMsID8+IHN0YXJ0U3RlcCwgZmluYWwgbG9uZyBpbml0aWFsQnVsaykgeworICAgICAgICByZXR1cm4gbmV3IExQX05MX09fT0JfU19TRV9TTF9UcmF2ZXJzZXI8PihzdGFydCwgc3RhcnRTdGVwKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgU2V0PFRyYXZlcnNlclJlcXVpcmVtZW50PiBnZXRQcm92aWRlZFJlcXVpcmVtZW50cygpIHsKKyAgICAgICAgcmV0dXJuIFJFUVVJUkVNRU5UUzsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIExQX05MX09fT0JfU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IgaW5zdGFuY2UoKSB7CisgICAgICAgIHJldHVybiBJTlNUQU5DRTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvTkxfT19PQl9TX1NFX1NMX1RyYXZlcnNlci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvTkxfT19PQl9TX1NFX1NMX1RyYXZlcnNlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyZjQzZmUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci9OTF9PX09CX1NfU0VfU0xfVHJhdmVyc2VyLmphdmEKQEAgLTAsMCArMSwxNTYgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyOworCitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmNvbGxlY3Rpb25zLm1hcC5SZWZlcmVuY2VNYXA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5TdGVwOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyLnV0aWwuTGFiZWxsZWRDb3VudGVyOworCitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworaW1wb3J0IGphdmEudXRpbC5TdGFjazsKKworcHVibGljIGNsYXNzIE5MX09fT0JfU19TRV9TTF9UcmF2ZXJzZXI8VD4gZXh0ZW5kcyBPX09CX1NfU0VfU0xfVHJhdmVyc2VyPFQ+IHsKKworICAgIHByb3RlY3RlZCBTdGFjazxMYWJlbGxlZENvdW50ZXI+IG5lc3RlZExvb3BzOworICAgIHByb3RlY3RlZCBSZWZlcmVuY2VNYXAgbG9vcE5hbWVzOworCisgICAgcHJvdGVjdGVkIE5MX09fT0JfU19TRV9TTF9UcmF2ZXJzZXIoKSB7CisgICAgfQorCisgICAgcHVibGljIE5MX09fT0JfU19TRV9TTF9UcmF2ZXJzZXIoZmluYWwgVCB0LCBmaW5hbCBTdGVwPFQsID8+IHN0ZXApIHsKKyAgICAgICAgc3VwZXIodCwgc3RlcCk7CisgICAgICAgIHRoaXMubmVzdGVkTG9vcHMgPSBuZXcgU3RhY2s8PigpOworICAgICAgICB0aGlzLmxvb3BOYW1lcyA9IG5ldyBSZWZlcmVuY2VNYXAoUmVmZXJlbmNlTWFwLkhBUkQsIFJlZmVyZW5jZU1hcC5XRUFLKTsKKyAgICB9CisKKyAgICAvLy8vLy8vLy8vLy8vLy8vLworCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGludCBsb29wcygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubmVzdGVkTG9vcHMucGVlaygpLmNvdW50KCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGludCBsb29wcyhmaW5hbCBTdHJpbmcgbG9vcE5hbWUpIHsKKyAgICAgICAgaWYgKGxvb3BOYW1lID09IG51bGwpCisgICAgICAgICAgICByZXR1cm4gbG9vcHMoKTsKKyAgICAgICAgZWxzZSBpZiAodGhpcy5sb29wTmFtZXMuY29udGFpbnNLZXkobG9vcE5hbWUpKQorICAgICAgICAgICAgcmV0dXJuICgoTGFiZWxsZWRDb3VudGVyKSB0aGlzLmxvb3BOYW1lcy5nZXQobG9vcE5hbWUpKS5jb3VudCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJMb29wIG5hbWUgbm90IGRlZmluZWQ6ICIgKyBsb29wTmFtZSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgaW5pdGlhbGlzZUxvb3BzKGZpbmFsIFN0cmluZyBzdGVwTGFiZWwsIGZpbmFsIFN0cmluZyBsb29wTmFtZSkgeworICAgICAgICBpZiAodGhpcy5uZXN0ZWRMb29wcy5lbXB0eSgpIHx8ICF0aGlzLm5lc3RlZExvb3BzLnBlZWsoKS5oYXNMYWJlbChzdGVwTGFiZWwpKSB7CisgICAgICAgICAgICBmaW5hbCBMYWJlbGxlZENvdW50ZXIgbGMgPSBuZXcgTGFiZWxsZWRDb3VudGVyKHN0ZXBMYWJlbCwgKHNob3J0KSAwKTsKKyAgICAgICAgICAgIHRoaXMubmVzdGVkTG9vcHMucHVzaChsYyk7CisgICAgICAgICAgICBpZiAobG9vcE5hbWUgIT0gbnVsbCkKKyAgICAgICAgICAgICAgICB0aGlzLmxvb3BOYW1lcy5wdXQobG9vcE5hbWUsIGxjKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIGluY3JMb29wcygpIHsKKyAgICAgICAgdGhpcy5uZXN0ZWRMb29wcy5wZWVrKCkuaW5jcmVtZW50KCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgcmVzZXRMb29wcygpIHsKKyAgICAgICAgdGhpcy5uZXN0ZWRMb29wcy5wb3AoKTsKKyAgICB9CisKKyAgICAvLy8vLy8vLy8vLy8vLy8vLworCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIDxSPiBBZG1pbjxSPiBzcGxpdChmaW5hbCBSIHIsIGZpbmFsIFN0ZXA8VCwgUj4gc3RlcCkgeworICAgICAgICBmaW5hbCBOTF9PX09CX1NfU0VfU0xfVHJhdmVyc2VyPFI+IGNsb25lID0gKE5MX09fT0JfU19TRV9TTF9UcmF2ZXJzZXI8Uj4pIHN1cGVyLnNwbGl0KHIsIHN0ZXApOworICAgICAgICBjbG9uZS5uZXN0ZWRMb29wcyA9IG5ldyBTdGFjazw+KCk7CisgICAgICAgIGZvcihMYWJlbGxlZENvdW50ZXIgbGMgOiB0aGlzLm5lc3RlZExvb3BzKQorICAgICAgICAgICAgY2xvbmUubmVzdGVkTG9vcHMucHVzaCgoTGFiZWxsZWRDb3VudGVyKSBsYy5jbG9uZSgpKTsKKworICAgICAgICBpZiAodGhpcy5sb29wTmFtZXMgIT0gbnVsbCkgeworICAgICAgICAgICAgY2xvbmUubG9vcE5hbWVzID0gbmV3IFJlZmVyZW5jZU1hcChSZWZlcmVuY2VNYXAuSEFSRCwgUmVmZXJlbmNlTWFwLldFQUspOworCisgICAgICAgICAgICBmaW5hbCBJdGVyYXRvciBsb29wTmFtZXNJdGVyYXRvciA9IHRoaXMubG9vcE5hbWVzLmVudHJ5U2V0KCkuaXRlcmF0b3IoKTsKKyAgICAgICAgICAgIHdoaWxlIChsb29wTmFtZXNJdGVyYXRvci5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBSZWZlcmVuY2VNYXAuRW50cnkgcGFpciA9IChSZWZlcmVuY2VNYXAuRW50cnkpIGxvb3BOYW1lc0l0ZXJhdG9yLm5leHQoKTsKKworICAgICAgICAgICAgICAgIGZpbmFsIGludCBpZHggPSB0aGlzLm5lc3RlZExvb3BzLmluZGV4T2YocGFpci5nZXRWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBpZiAoaWR4ICE9IC0xKQorICAgICAgICAgICAgICAgICAgICBjbG9uZS5sb29wTmFtZXMucHV0KHBhaXIuZ2V0S2V5KCksIGNsb25lLm5lc3RlZExvb3BzLmdldChpZHgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBjbG9uZTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgQWRtaW48VD4gc3BsaXQoKSB7CisgICAgICAgIGZpbmFsIE5MX09fT0JfU19TRV9TTF9UcmF2ZXJzZXI8VD4gY2xvbmUgPSAoTkxfT19PQl9TX1NFX1NMX1RyYXZlcnNlcjxUPikgc3VwZXIuc3BsaXQoKTsKKyAgICAgICAgY2xvbmUubmVzdGVkTG9vcHMgPSBuZXcgU3RhY2s8PigpOworICAgICAgICBmb3IoTGFiZWxsZWRDb3VudGVyIGxjIDogdGhpcy5uZXN0ZWRMb29wcykKKyAgICAgICAgICAgIGNsb25lLm5lc3RlZExvb3BzLnB1c2goKExhYmVsbGVkQ291bnRlcikgbGMuY2xvbmUoKSk7CisKKyAgICAgICAgaWYgKHRoaXMubG9vcE5hbWVzICE9IG51bGwpIHsKKyAgICAgICAgICAgIGNsb25lLmxvb3BOYW1lcyA9IG5ldyBSZWZlcmVuY2VNYXAoUmVmZXJlbmNlTWFwLkhBUkQsIFJlZmVyZW5jZU1hcC5XRUFLKTsKKworICAgICAgICAgICAgZmluYWwgSXRlcmF0b3IgbG9vcE5hbWVzSXRlcmF0b3IgPSB0aGlzLmxvb3BOYW1lcy5lbnRyeVNldCgpLml0ZXJhdG9yKCk7CisgICAgICAgICAgICB3aGlsZSAobG9vcE5hbWVzSXRlcmF0b3IuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICAgICAgZmluYWwgUmVmZXJlbmNlTWFwLkVudHJ5IHBhaXIgPSAoUmVmZXJlbmNlTWFwLkVudHJ5KSBsb29wTmFtZXNJdGVyYXRvci5uZXh0KCk7CisKKyAgICAgICAgICAgICAgICBmaW5hbCBpbnQgaWR4ID0gdGhpcy5uZXN0ZWRMb29wcy5pbmRleE9mKHBhaXIuZ2V0VmFsdWUoKSk7CisgICAgICAgICAgICAgICAgaWYgKGlkeCAhPSAtMSkKKyAgICAgICAgICAgICAgICAgICAgY2xvbmUubG9vcE5hbWVzLnB1dChwYWlyLmdldEtleSgpLCBjbG9uZS5uZXN0ZWRMb29wcy5nZXQoaWR4KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gY2xvbmU7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgbWVyZ2UoZmluYWwgQWRtaW48Pz4gb3RoZXIpIHsKKyAgICAgICAgc3VwZXIubWVyZ2Uob3RoZXIpOworICAgIH0KKworICAgIC8vLy8vLy8vLy8vLy8vLy8vCisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoZmluYWwgT2JqZWN0IG8pIHsKKyAgICAgICAgaWYgKHRoaXMgPT0gbykgcmV0dXJuIHRydWU7CisgICAgICAgIGlmICghKG8gaW5zdGFuY2VvZiBOTF9PX09CX1NfU0VfU0xfVHJhdmVyc2VyKSkgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIXN1cGVyLmVxdWFscyhvKSkgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGZpbmFsIE5MX09fT0JfU19TRV9TTF9UcmF2ZXJzZXI8Pz4gdGhhdCA9IChOTF9PX09CX1NfU0VfU0xfVHJhdmVyc2VyPD8+KSBvOworCisgICAgICAgIGlmICghdGhpcy5uZXN0ZWRMb29wcy5lcXVhbHModGhhdC5uZXN0ZWRMb29wcykpIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHRoaXMubG9vcE5hbWVzICE9IG51bGwgPyB0aGlzLmxvb3BOYW1lcy5lcXVhbHModGhhdC5sb29wTmFtZXMpIDogdGhhdC5sb29wTmFtZXMgPT0gbnVsbDsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgeworICAgICAgICBpbnQgcmVzdWx0ID0gc3VwZXIuaGFzaENvZGUoKTsKKyAgICAgICAgcmVzdWx0ID0gMzEgKiByZXN1bHQgKyB0aGlzLm5lc3RlZExvb3BzLmhhc2hDb2RlKCk7CisgICAgICAgIHJlc3VsdCA9IDMxICogcmVzdWx0ICsgKHRoaXMubG9vcE5hbWVzICE9IG51bGwgPyB0aGlzLmxvb3BOYW1lcy5oYXNoQ29kZSgpIDogMCk7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdHJhdmVyc2VyL05MX09fT0JfU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdHJhdmVyc2VyL05MX09fT0JfU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZDQxM2FjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvTkxfT19PQl9TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvci5qYXZhCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5TdGVwOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2VyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2VyR2VuZXJhdG9yOworCitpbXBvcnQgamF2YS51dGlsLkVudW1TZXQ7CitpbXBvcnQgamF2YS51dGlsLlNldDsKKworcHVibGljIGZpbmFsIGNsYXNzIE5MX09fT0JfU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IgaW1wbGVtZW50cyBUcmF2ZXJzZXJHZW5lcmF0b3IgeworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU2V0PFRyYXZlcnNlclJlcXVpcmVtZW50PiBSRVFVSVJFTUVOVFMgPSBFbnVtU2V0Lm9mKAorICAgICAgICAgICAgVHJhdmVyc2VyUmVxdWlyZW1lbnQuTkVTVEVEX0xPT1AsCisgICAgICAgICAgICBUcmF2ZXJzZXJSZXF1aXJlbWVudC5PQkpFQ1QsCisgICAgICAgICAgICBUcmF2ZXJzZXJSZXF1aXJlbWVudC5PTkVfQlVMSywKKyAgICAgICAgICAgIFRyYXZlcnNlclJlcXVpcmVtZW50LlNBQ0ssCisgICAgICAgICAgICBUcmF2ZXJzZXJSZXF1aXJlbWVudC5TSURFX0VGRkVDVFMsCisgICAgICAgICAgICBUcmF2ZXJzZXJSZXF1aXJlbWVudC5TSU5HTEVfTE9PUCk7CisKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIE5MX09fT0JfU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IgSU5TVEFOQ0UgPSBuZXcgTkxfT19PQl9TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvcigpOworCisgICAgcHJpdmF0ZSBOTF9PX09CX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yKCkgeworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyA8Uz4gVHJhdmVyc2VyLkFkbWluPFM+IGdlbmVyYXRlKGZpbmFsIFMgc3RhcnQsIGZpbmFsIFN0ZXA8UywgPz4gc3RhcnRTdGVwLCBmaW5hbCBsb25nIGluaXRpYWxCdWxrKSB7CisgICAgICAgIHJldHVybiBuZXcgTkxfT19PQl9TX1NFX1NMX1RyYXZlcnNlcjw+KHN0YXJ0LCBzdGFydFN0ZXApOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBTZXQ8VHJhdmVyc2VyUmVxdWlyZW1lbnQ+IGdldFByb3ZpZGVkUmVxdWlyZW1lbnRzKCkgeworICAgICAgICByZXR1cm4gUkVRVUlSRU1FTlRTOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgTkxfT19PQl9TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvciBpbnN0YW5jZSgpIHsKKyAgICAgICAgcmV0dXJuIElOU1RBTkNFOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci9PX09CX1NfU0VfU0xfVHJhdmVyc2VyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci9PX09CX1NfU0VfU0xfVHJhdmVyc2VyLmphdmEKaW5kZXggZDgxYTU2NC4uNjAxYmNkYSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvT19PQl9TX1NFX1NMX1RyYXZlcnNlci5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdHJhdmVyc2VyL09fT0JfU19TRV9TTF9UcmF2ZXJzZXIuamF2YQpAQCAtMjMsNiArMjMsOCBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsU2lkZUVmZmVjdHM7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzZXI7CiAKK2ltcG9ydCBqYXZhLnV0aWwuT2JqZWN0czsKKwogLyoqCiAgKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKICAqLwpAQCAtMzAsNiArMzIsNyBAQAogCiAgICAgcHJvdGVjdGVkIE9iamVjdCBzYWNrID0gbnVsbDsKICAgICBwcm90ZWN0ZWQgc2hvcnQgbG9vcHMgPSAwOyAgLy8gYW4gb3B0aW1pemF0aW9uIGhhY2sgdG8gdXNlIGEgc2hvcnQgaW50ZXJuYWxseSB0byBzYXZlIGJpdHMgOikKKyAgICBwcm90ZWN0ZWQgU3RyaW5nIGxvb3BOYW1lID0gbnVsbDsKICAgICBwcm90ZWN0ZWQgdHJhbnNpZW50IFRyYXZlcnNhbFNpZGVFZmZlY3RzIHNpZGVFZmZlY3RzOwogICAgIHByb3RlY3RlZCBTdHJpbmcgZnV0dXJlID0gSEFMVDsKICAgICBwcm90ZWN0ZWQgbG9uZyBidWxrID0gMUw7CkBAIC03NCw3ICs3NywyMCBAQAogICAgIH0KIAogICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lkIGluY3JMb29wcyhmaW5hbCBTdHJpbmcgc3RlcExhYmVsKSB7CisgICAgcHVibGljIGludCBsb29wcyhmaW5hbCBTdHJpbmcgbG9vcE5hbWUpIHsKKyAgICAgICAgaWYgKGxvb3BOYW1lID09IG51bGwgfHwgdGhpcy5sb29wTmFtZSAhPSBudWxsICYmIHRoaXMubG9vcE5hbWUuZXF1YWxzKGxvb3BOYW1lKSkKKyAgICAgICAgICAgIHJldHVybiB0aGlzLmxvb3BzOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJMb29wIG5hbWUgbm90IGRlZmluZWQ6ICIgKyBsb29wTmFtZSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgaW5pdGlhbGlzZUxvb3BzKGZpbmFsIFN0cmluZyBzdGVwTGFiZWwgLCBmaW5hbCBTdHJpbmcgbG9vcE5hbWUpeworICAgICAgICB0aGlzLmxvb3BOYW1lID0gbG9vcE5hbWU7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgaW5jckxvb3BzKCkgewogICAgICAgICB0aGlzLmxvb3BzKys7CiAgICAgfQogCkBAIC0xNDAsMTMgKzE1NiwxNSBAQAogCiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKLSAgICAgICAgcmV0dXJuIGNhcnJpZXNVbm1lcmdlYWJsZVNhY2soKSA/IFN5c3RlbS5pZGVudGl0eUhhc2hDb2RlKHRoaXMpIDogKHN1cGVyLmhhc2hDb2RlKCkgXiB0aGlzLmxvb3BzKTsKKyAgICAgICAgcmV0dXJuIGNhcnJpZXNVbm1lcmdlYWJsZVNhY2soKSA/IFN5c3RlbS5pZGVudGl0eUhhc2hDb2RlKHRoaXMpIDogKHN1cGVyLmhhc2hDb2RlKCkgXiB0aGlzLmxvb3BzIF4gT2JqZWN0cy5oYXNoQ29kZSh0aGlzLmxvb3BOYW1lKSk7CiAgICAgfQogCiAgICAgcHJvdGVjdGVkICBmaW5hbCBib29sZWFuIGVxdWFscyhmaW5hbCBPX09CX1NfU0VfU0xfVHJhdmVyc2VyIG90aGVyKSB7Ci0gICAgICAgIHJldHVybiBzdXBlci5lcXVhbHMob3RoZXIpICYmIG90aGVyLmxvb3BzID09IHRoaXMubG9vcHMgJiYgb3RoZXIuZnV0dXJlLmVxdWFscyh0aGlzLmZ1dHVyZSkgJiYKLSAgICAgICAgICAgICAgICAhY2Fycmllc1VubWVyZ2VhYmxlU2FjaygpOworICAgICAgICByZXR1cm4gc3VwZXIuZXF1YWxzKG90aGVyKSAmJiBvdGhlci5sb29wcyA9PSB0aGlzLmxvb3BzICYmIG90aGVyLmZ1dHVyZS5lcXVhbHModGhpcy5mdXR1cmUpCisgICAgICAgICAgICAgICAgJiYgKHRoaXMubG9vcE5hbWUgIT0gbnVsbCA/IHRoaXMubG9vcE5hbWUuZXF1YWxzKG90aGVyLmxvb3BOYW1lKSA6IG90aGVyLmxvb3BOYW1lID09IG51bGwpCisgICAgICAgICAgICAgICAgJiYgIWNhcnJpZXNVbm1lcmdlYWJsZVNhY2soKTsKICAgICB9CisKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoZmluYWwgT2JqZWN0IG9iamVjdCkgewogICAgICAgICByZXR1cm4gb2JqZWN0IGluc3RhbmNlb2YgT19PQl9TX1NFX1NMX1RyYXZlcnNlciAmJiB0aGlzLmVxdWFscygoT19PQl9TX1NFX1NMX1RyYXZlcnNlcikgb2JqZWN0KTsKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdHJhdmVyc2VyL1Byb2plY3RlZFRyYXZlcnNlci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvUHJvamVjdGVkVHJhdmVyc2VyLmphdmEKaW5kZXggNjAyZjg4Zi4uN2NlZjg0NCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvUHJvamVjdGVkVHJhdmVyc2VyLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvUHJvamVjdGVkVHJhdmVyc2VyLmphdmEKQEAgLTkxLDggKzkxLDEzIEBACiAgICAgfQogCiAgICAgQE92ZXJyaWRlCi0gICAgcHVibGljIHZvaWQgaW5jckxvb3BzKGZpbmFsIFN0cmluZyBzdGVwTGFiZWwpIHsKLSAgICAgICAgdGhpcy5iYXNlVHJhdmVyc2VyLmluY3JMb29wcyhzdGVwTGFiZWwpOworICAgIHB1YmxpYyB2b2lkIGluaXRpYWxpc2VMb29wcyhmaW5hbCBTdHJpbmcgc3RlcExhYmVsLCBmaW5hbCBTdHJpbmcgbG9vcE5hbWUpIHsKKyAgICAgICAgdGhpcy5iYXNlVHJhdmVyc2VyLmluaXRpYWxpc2VMb29wcyhzdGVwTGFiZWwsIGxvb3BOYW1lKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBpbmNyTG9vcHMoKSB7CisgICAgICAgIHRoaXMuYmFzZVRyYXZlcnNlci5pbmNyTG9vcHMoKTsKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKQEAgLTE2Nyw2ICsxNzIsMTEgQEAKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgaW50IGxvb3BzKGZpbmFsIFN0cmluZyBsb29wTmFtZSkgeworICAgICAgICByZXR1cm4gdGhpcy5iYXNlVHJhdmVyc2VyLmxvb3BzKGxvb3BOYW1lKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgbG9uZyBidWxrKCkgewogICAgICAgICByZXR1cm4gdGhpcy5iYXNlVHJhdmVyc2VyLmJ1bGsoKTsKICAgICB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci91dGlsL0Fic3RyYWN0VHJhdmVyc2VyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci91dGlsL0Fic3RyYWN0VHJhdmVyc2VyLmphdmEKaW5kZXggNTBhMjA2Yi4uNjU4YmE0YiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvdXRpbC9BYnN0cmFjdFRyYXZlcnNlci5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdHJhdmVyc2VyL3V0aWwvQWJzdHJhY3RUcmF2ZXJzZXIuamF2YQpAQCAtOTgsOCArOTgsMTQgQEAKICAgICAgICAgdGhpcy50ID0gdDsKICAgICB9CiAKKwogICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lkIGluY3JMb29wcyhmaW5hbCBTdHJpbmcgc3RlcExhYmVsKSB7CisgICAgcHVibGljIHZvaWQgaW5pdGlhbGlzZUxvb3BzKGZpbmFsIFN0cmluZyBzdGVwTGFiZWwsIGZpbmFsIFN0cmluZyBsb29wTmFtZSkgeworCisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgaW5jckxvb3BzKCkgewogCiAgICAgfQogCkBAIC0xNzQsNiArMTgwLDExIEBACiAgICAgfQogCiAgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGludCBsb29wcyhmaW5hbCBTdHJpbmcgbG9vcE5hbWUpIHsKKyAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKCJUaGlzIHRyYXZlcnNlciBkb2VzIG5vdCBzdXBwb3J0IG5hbWVkIGxvb3BzOiAiICsgdGhpcy5nZXRDbGFzcygpLmdldENhbm9uaWNhbE5hbWUoKSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIGxvbmcgYnVsaygpIHsKICAgICAgICAgcmV0dXJuIDFsOwogICAgIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdHJhdmVyc2VyL3V0aWwvRGVmYXVsdFRyYXZlcnNlckdlbmVyYXRvckZhY3RvcnkuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdHJhdmVyc2VyL3V0aWwvRGVmYXVsdFRyYXZlcnNlckdlbmVyYXRvckZhY3RvcnkuamF2YQppbmRleCA5MzI3OTFlLi4wNWEzZjNhIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci91dGlsL0RlZmF1bHRUcmF2ZXJzZXJHZW5lcmF0b3JGYWN0b3J5LmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvdXRpbC9EZWZhdWx0VHJhdmVyc2VyR2VuZXJhdG9yRmFjdG9yeS5qYXZhCkBAIC0xOCwxOCArMTgsMjIgQEAKICAqLwogcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci51dGlsOwogCi1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzZXJHZW5lcmF0b3I7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuQl9MUF9PX1BfU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3I7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuQl9MUF9OTF9PX1BfU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3I7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuQl9MUF9PX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyLkJfT19TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci5CX05MX09fU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3I7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuQl9MUF9OTF9PX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyLkJfT19UcmF2ZXJzZXJHZW5lcmF0b3I7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuTFBfT19PQl9QX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyLkxQX09fT0JfU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3I7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuT19PQl9TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci5OTF9PX09CX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyLkxQX05MX09fT0JfU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3I7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuTFBfTkxfT19PQl9QX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyLlRyYXZlcnNlckdlbmVyYXRvckZhY3Rvcnk7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuVHJhdmVyc2VyUmVxdWlyZW1lbnQ7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLlRyYXZlcnNhbEhlbHBlcjsKIAogaW1wb3J0IGphdmEudXRpbC5TZXQ7CiAKQEAgLTUzLDExICs1NywyMCBAQAogICAgICAgICAgICAgaWYgKE9fT0JfU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IuaW5zdGFuY2UoKS5nZXRQcm92aWRlZFJlcXVpcmVtZW50cygpLmNvbnRhaW5zQWxsKHJlcXVpcmVtZW50cykpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE9fT0JfU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IuaW5zdGFuY2UoKTsKIAorICAgICAgICAgICAgaWYgKE5MX09fT0JfU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IuaW5zdGFuY2UoKS5nZXRQcm92aWRlZFJlcXVpcmVtZW50cygpLmNvbnRhaW5zQWxsKHJlcXVpcmVtZW50cykpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5MX09fT0JfU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IuaW5zdGFuY2UoKTsKKwogICAgICAgICAgICAgaWYgKExQX09fT0JfU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IuaW5zdGFuY2UoKS5nZXRQcm92aWRlZFJlcXVpcmVtZW50cygpLmNvbnRhaW5zQWxsKHJlcXVpcmVtZW50cykpCiAgICAgICAgICAgICAgICAgcmV0dXJuIExQX09fT0JfU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IuaW5zdGFuY2UoKTsKIAorICAgICAgICAgICAgaWYgKExQX05MX09fT0JfU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IuaW5zdGFuY2UoKS5nZXRQcm92aWRlZFJlcXVpcmVtZW50cygpLmNvbnRhaW5zQWxsKHJlcXVpcmVtZW50cykpCisgICAgICAgICAgICAgICAgcmV0dXJuIExQX05MX09fT0JfU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IuaW5zdGFuY2UoKTsKKwogICAgICAgICAgICAgaWYgKExQX09fT0JfUF9TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvci5pbnN0YW5jZSgpLmdldFByb3ZpZGVkUmVxdWlyZW1lbnRzKCkuY29udGFpbnNBbGwocmVxdWlyZW1lbnRzKSkKICAgICAgICAgICAgICAgICByZXR1cm4gTFBfT19PQl9QX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yLmluc3RhbmNlKCk7CisKKyAgICAgICAgICAgIGlmIChMUF9OTF9PX09CX1BfU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IuaW5zdGFuY2UoKS5nZXRQcm92aWRlZFJlcXVpcmVtZW50cygpLmNvbnRhaW5zQWxsKHJlcXVpcmVtZW50cykpCisgICAgICAgICAgICAgICAgcmV0dXJuIExQX05MX09fT0JfUF9TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvci5pbnN0YW5jZSgpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKEJfT19UcmF2ZXJzZXJHZW5lcmF0b3IuaW5zdGFuY2UoKS5nZXRQcm92aWRlZFJlcXVpcmVtZW50cygpLmNvbnRhaW5zQWxsKHJlcXVpcmVtZW50cykpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEJfT19UcmF2ZXJzZXJHZW5lcmF0b3IuaW5zdGFuY2UoKTsKQEAgLTY1LDExICs3OCwyMCBAQAogICAgICAgICAgICAgaWYgKEJfT19TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvci5pbnN0YW5jZSgpLmdldFByb3ZpZGVkUmVxdWlyZW1lbnRzKCkuY29udGFpbnNBbGwocmVxdWlyZW1lbnRzKSkKICAgICAgICAgICAgICAgICByZXR1cm4gQl9PX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yLmluc3RhbmNlKCk7CiAKKyAgICAgICAgICAgIGlmIChCX05MX09fU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IuaW5zdGFuY2UoKS5nZXRQcm92aWRlZFJlcXVpcmVtZW50cygpLmNvbnRhaW5zQWxsKHJlcXVpcmVtZW50cykpCisgICAgICAgICAgICAgICAgcmV0dXJuIEJfTkxfT19TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvci5pbnN0YW5jZSgpOworCiAgICAgICAgICAgICBpZiAoQl9MUF9PX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yLmluc3RhbmNlKCkuZ2V0UHJvdmlkZWRSZXF1aXJlbWVudHMoKS5jb250YWluc0FsbChyZXF1aXJlbWVudHMpKQogICAgICAgICAgICAgICAgIHJldHVybiBCX0xQX09fU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IuaW5zdGFuY2UoKTsKIAorICAgICAgICAgICAgaWYgKEJfTFBfTkxfT19TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvci5pbnN0YW5jZSgpLmdldFByb3ZpZGVkUmVxdWlyZW1lbnRzKCkuY29udGFpbnNBbGwocmVxdWlyZW1lbnRzKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gQl9MUF9OTF9PX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yLmluc3RhbmNlKCk7CisKICAgICAgICAgICAgIGlmIChCX0xQX09fUF9TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvci5pbnN0YW5jZSgpLmdldFByb3ZpZGVkUmVxdWlyZW1lbnRzKCkuY29udGFpbnNBbGwocmVxdWlyZW1lbnRzKSkKICAgICAgICAgICAgICAgICByZXR1cm4gQl9MUF9PX1BfU19TRV9TTF9UcmF2ZXJzZXJHZW5lcmF0b3IuaW5zdGFuY2UoKTsKKworICAgICAgICAgICAgaWYgKEJfTFBfTkxfT19QX1NfU0VfU0xfVHJhdmVyc2VyR2VuZXJhdG9yLmluc3RhbmNlKCkuZ2V0UHJvdmlkZWRSZXF1aXJlbWVudHMoKS5jb250YWluc0FsbChyZXF1aXJlbWVudHMpKQorICAgICAgICAgICAgICAgIHJldHVybiBCX0xQX05MX09fUF9TX1NFX1NMX1RyYXZlcnNlckdlbmVyYXRvci5pbnN0YW5jZSgpOwogICAgICAgICB9CiAKICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiVGhlIHByb3ZpZGVkIHRyYXZlcnNlciBnZW5lcmF0b3IgZmFjdG9yeSBkb2VzIG5vdCBzdXBwb3J0IHRoZSByZXF1aXJlbWVudHMgb2YgdGhlIHRyYXZlcnNhbDogIiArIHRoaXMuZ2V0Q2xhc3MoKS5nZXRDYW5vbmljYWxOYW1lKCkgKyByZXF1aXJlbWVudHMpOwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvdXRpbC9FbXB0eVRyYXZlcnNlci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvdXRpbC9FbXB0eVRyYXZlcnNlci5qYXZhCmluZGV4IDdjOTljYjUuLjNhZWFmYmQgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdHJhdmVyc2VyL3V0aWwvRW1wdHlUcmF2ZXJzZXIuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci91dGlsL0VtcHR5VHJhdmVyc2VyLmphdmEKQEAgLTcwLDcgKzcwLDEyIEBACiAgICAgfQogCiAgICAgQE92ZXJyaWRlCi0gICAgcHVibGljIHZvaWQgaW5jckxvb3BzKGZpbmFsIFN0cmluZyBzdGVwTGFiZWwpIHsKKyAgICBwdWJsaWMgdm9pZCBpbml0aWFsaXNlTG9vcHMoZmluYWwgU3RyaW5nIHN0ZXBMYWJlbCwgZmluYWwgU3RyaW5nIGxvb3BOYW0pIHsKKworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIGluY3JMb29wcygpIHsKIAogICAgIH0KIApAQCAtMTUwLDYgKzE1NSwxMSBAQAogICAgIH0KIAogICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBpbnQgbG9vcHMoZmluYWwgU3RyaW5nIGxvb3BOYW1lKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyBsb25nIGJ1bGsoKSB7CiAgICAgICAgIHJldHVybiAwbDsKICAgICB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci91dGlsL0xhYmVsbGVkQ291bnRlci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvdXRpbC9MYWJlbGxlZENvdW50ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjA3MzYxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvdXRpbC9MYWJlbGxlZENvdW50ZXIuamF2YQpAQCAtMCwwICsxLDgzIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci51dGlsOworCitpbXBvcnQgamF2YS5pby5TZXJpYWxpemFibGU7CisKKy8qKgorICogQ2xhc3MgdG8gdHJhY2sgYSBjb3VudCBhc3NvY2lhdGVkIHdpdGggYSBMYWJlbAorICovCitwdWJsaWMgY2xhc3MgTGFiZWxsZWRDb3VudGVyIGltcGxlbWVudHMgU2VyaWFsaXphYmxlLCBDbG9uZWFibGUgeworCisgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgbGFiZWw7CisgICAgcHJpdmF0ZSBzaG9ydCBjb3VudCA9IDA7CisKKyAgICBwcm90ZWN0ZWQgTGFiZWxsZWRDb3VudGVyKCkgeworICAgICAgICBsYWJlbCA9ICIiOworICAgIH0KKworICAgIHB1YmxpYyBMYWJlbGxlZENvdW50ZXIoZmluYWwgU3RyaW5nIGxhYmVsLCBmaW5hbCBzaG9ydCBpbml0aWFsQ291bnQpIHsKKyAgICAgICAgaWYgKGxhYmVsID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigiTGFiZWwgaXMgbnVsbCIpOworICAgICAgICB9CisgICAgICAgIHRoaXMubGFiZWwgPSBsYWJlbDsKKyAgICAgICAgdGhpcy5jb3VudCA9IGluaXRpYWxDb3VudDsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBoYXNMYWJlbChmaW5hbCBTdHJpbmcgbGFiZWwpeworICAgICAgICByZXR1cm4gdGhpcy5sYWJlbC5lcXVhbHMobGFiZWwpOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgY291bnQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmNvdW50OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGluY3JlbWVudCgpIHsKKyAgICAgICAgdGhpcy5jb3VudCsrOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBPYmplY3QgY2xvbmUoKSB7CisgICAgICAgIHJldHVybiBuZXcgTGFiZWxsZWRDb3VudGVyKHRoaXMubGFiZWwsIHRoaXMuY291bnQpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKXsKKyAgICAgICAgcmV0dXJuICJTdGVwIExhYmVsOiAiICsgdGhpcy5sYWJlbCArICIgQ291bnRlcjogIiArIFNob3J0LnRvU3RyaW5nKHRoaXMuY291bnQpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhmaW5hbCBPYmplY3QgbykgeworICAgICAgICBpZiAodGhpcyA9PSBvKSByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKCEobyBpbnN0YW5jZW9mIExhYmVsbGVkQ291bnRlcikpIHJldHVybiBmYWxzZTsKKworICAgICAgICBMYWJlbGxlZENvdW50ZXIgdGhhdCA9IChMYWJlbGxlZENvdW50ZXIpIG87CisKKyAgICAgICAgaWYgKGNvdW50ICE9IHRoYXQuY291bnQpIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIGxhYmVsICE9IG51bGwgPyBsYWJlbC5lcXVhbHModGhhdC5sYWJlbCkgOiB0aGF0LmxhYmVsID09IG51bGw7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKKyAgICAgICAgaW50IHJlc3VsdCA9IGxhYmVsICE9IG51bGwgPyBsYWJlbC5oYXNoQ29kZSgpIDogMDsKKyAgICAgICAgcmVzdWx0ID0gMzEgKiByZXN1bHQgKyAoaW50KSBjb3VudDsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3V0aWwvQnl0ZWNvZGVVdGlsLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3V0aWwvQnl0ZWNvZGVVdGlsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDJjZWFiZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdXRpbC9CeXRlY29kZVV0aWwuamF2YQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5CeXRlY29kZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbFNvdXJjZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbFN0cmF0ZWd5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udXRpbC5pdGVyYXRvci5JdGVyYXRvclV0aWxzOworCitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworCisvKioKKyAqIFV0aWxpdHkgY2xhc3MgZm9yIHBhcnNpbmcge0BsaW5rIEJ5dGVjb2RlfS4KKyAqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBCeXRlY29kZVV0aWwgeworCisgICAgcHJpdmF0ZSBCeXRlY29kZVV0aWwoKSB7fQorCisgICAgLyoqCisgICAgICogUGFyc2VzIHtAbGluayBCeXRlY29kZX0gdG8gZmluZCB7QGxpbmsgVHJhdmVyc2FsU3RyYXRlZ3l9IG9iamVjdHMgaW4gdGhlIHNvdXJjZSBpbnN0cnVjdGlvbnMuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyA8QSBleHRlbmRzIFRyYXZlcnNhbFN0cmF0ZWd5PiBJdGVyYXRvcjxBPiBmaW5kU3RyYXRlZ2llcyhmaW5hbCBCeXRlY29kZSBieXRlY29kZSwgZmluYWwgQ2xhc3M8QT4gY2xhenopIHsKKyAgICAgICAgcmV0dXJuIEl0ZXJhdG9yVXRpbHMubWFwKAorICAgICAgICAgICAgICAgIEl0ZXJhdG9yVXRpbHMuZmlsdGVyKGJ5dGVjb2RlLmdldFNvdXJjZUluc3RydWN0aW9ucygpLml0ZXJhdG9yKCksCisgICAgICAgICAgICAgICAgICAgICAgICBzIC0+IHMuZ2V0T3BlcmF0b3IoKS5lcXVhbHMoVHJhdmVyc2FsU291cmNlLlN5bWJvbHMud2l0aFN0cmF0ZWdpZXMpICYmIGNsYXp6LmlzQXNzaWduYWJsZUZyb20ocy5nZXRBcmd1bWVudHMoKVswXS5nZXRDbGFzcygpKSksCisgICAgICAgICAgICAgICAgb3MgLT4gKEEpIG9zLmdldEFyZ3VtZW50cygpWzBdKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3V0aWwvRGVmYXVsdFRyYXZlcnNhbC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC91dGlsL0RlZmF1bHRUcmF2ZXJzYWwuamF2YQppbmRleCA0ZTA1YWQwLi5iN2JmOTRkIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3V0aWwvRGVmYXVsdFRyYXZlcnNhbC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdXRpbC9EZWZhdWx0VHJhdmVyc2FsLmphdmEKQEAgLTU0LDYgKzU0LDcgQEAKICAgICBwcml2YXRlIFN0ZXA8PywgRT4gZmluYWxFbmRTdGVwID0gRW1wdHlTdGVwLmluc3RhbmNlKCk7CiAgICAgcHJpdmF0ZSBmaW5hbCBTdGVwUG9zaXRpb24gc3RlcFBvc2l0aW9uID0gbmV3IFN0ZXBQb3NpdGlvbigpOwogICAgIHByb3RlY3RlZCB0cmFuc2llbnQgR3JhcGggZ3JhcGg7CisgICAgcHJvdGVjdGVkIHRyYW5zaWVudCBUcmF2ZXJzYWxTb3VyY2UgZzsKICAgICBwcm90ZWN0ZWQgTGlzdDxTdGVwPiBzdGVwcyA9IG5ldyBBcnJheUxpc3Q8PigpOwogICAgIC8vIHN0ZXBzIHdpbGwgYmUgcmVwZWF0ZWRseSByZXRyaWV2ZWQgZnJvbSB0aGlzIHRyYXZlcnNhbCBzbyB3cmFwIHRoZW0gb25jZSBpbiBhbiBpbW11dGFibGUgbGlzdCB0aGF0IGNhbiBiZSByZXVzZWQKICAgICBwcm90ZWN0ZWQgTGlzdDxTdGVwPiB1bm1vZGlmaWFibGVTdGVwcyA9IENvbGxlY3Rpb25zLnVubW9kaWZpYWJsZUxpc3Qoc3RlcHMpOwpAQCAtNzAsNiArNzEsNyBAQAogICAgICAgICB0aGlzLmdyYXBoID0gZ3JhcGg7CiAgICAgICAgIHRoaXMuc3RyYXRlZ2llcyA9IHRyYXZlcnNhbFN0cmF0ZWdpZXM7CiAgICAgICAgIHRoaXMuYnl0ZWNvZGUgPSBieXRlY29kZTsKKyAgICAgICAgdGhpcy5nID0gbnVsbDsKICAgICB9CiAKICAgICBwdWJsaWMgRGVmYXVsdFRyYXZlcnNhbChmaW5hbCBHcmFwaCBncmFwaCkgewpAQCAtNzgsMTAgKzgwLDEyIEBACiAKICAgICBwdWJsaWMgRGVmYXVsdFRyYXZlcnNhbChmaW5hbCBUcmF2ZXJzYWxTb3VyY2UgdHJhdmVyc2FsU291cmNlKSB7CiAgICAgICAgIHRoaXModHJhdmVyc2FsU291cmNlLmdldEdyYXBoKCksIHRyYXZlcnNhbFNvdXJjZS5nZXRTdHJhdGVnaWVzKCksIHRyYXZlcnNhbFNvdXJjZS5nZXRCeXRlY29kZSgpKTsKKyAgICAgICAgdGhpcy5nID0gdHJhdmVyc2FsU291cmNlOwogICAgIH0KIAogICAgIHB1YmxpYyBEZWZhdWx0VHJhdmVyc2FsKGZpbmFsIFRyYXZlcnNhbFNvdXJjZSB0cmF2ZXJzYWxTb3VyY2UsIGZpbmFsIERlZmF1bHRUcmF2ZXJzYWwuQWRtaW48UyxFPiB0cmF2ZXJzYWwpIHsKICAgICAgICAgdGhpcyh0cmF2ZXJzYWxTb3VyY2UuZ2V0R3JhcGgoKSwgdHJhdmVyc2FsU291cmNlLmdldFN0cmF0ZWdpZXMoKSwgdHJhdmVyc2FsLmdldEJ5dGVjb2RlKCkpOworICAgICAgICB0aGlzLmcgPSB0cmF2ZXJzYWxTb3VyY2U7CiAgICAgICAgIHN0ZXBzLmFkZEFsbCh0cmF2ZXJzYWwuZ2V0U3RlcHMoKSk7CiAgICAgfQogCkBAIC0zMzcsNiArMzQxLDExIEBACiAgICAgfQogCiAgICAgQE92ZXJyaWRlCisgICAgcHVibGljIE9wdGlvbmFsPFRyYXZlcnNhbFNvdXJjZT4gZ2V0VHJhdmVyc2FsU291cmNlKCkgeworICAgICAgICByZXR1cm4gT3B0aW9uYWwub2ZOdWxsYWJsZSh0aGlzLmcpOworICAgIH0KKworICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyB2b2lkIHNldEdyYXBoKGZpbmFsIEdyYXBoIGdyYXBoKSB7CiAgICAgICAgIHRoaXMuZ3JhcGggPSBncmFwaDsKICAgICB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3V0aWwvSW1tdXRhYmxlTWV0cmljcy5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC91dGlsL0ltbXV0YWJsZU1ldHJpY3MuamF2YQppbmRleCBkMmIxNDMwLi5mNjMzMzIyIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3V0aWwvSW1tdXRhYmxlTWV0cmljcy5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdXRpbC9JbW11dGFibGVNZXRyaWNzLmphdmEKQEAgLTIwLDYgKzIwLDcgQEAKIAogaW1wb3J0IGphdmEuaW8uU2VyaWFsaXphYmxlOwogaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKIGltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKIGltcG9ydCBqYXZhLnV0aWwuTGlua2VkSGFzaE1hcDsKIGltcG9ydCBqYXZhLnV0aWwuTWFwOwpAQCAtNDEsNyArNDIsNyBAQAogICAgIHByb3RlY3RlZCBTdHJpbmcgbmFtZTsKICAgICBwcm90ZWN0ZWQgTWFwPFN0cmluZywgQXRvbWljTG9uZz4gY291bnRzID0gbmV3IENvbmN1cnJlbnRIYXNoTWFwPD4oKTsKICAgICBwcm90ZWN0ZWQgbG9uZyBkdXJhdGlvbk5zID0gMGw7Ci0gICAgcHJvdGVjdGVkIGZpbmFsIE1hcDxTdHJpbmcsIE9iamVjdD4gYW5ub3RhdGlvbnMgPSBuZXcgQ29uY3VycmVudEhhc2hNYXA8PigpOworICAgIHByb3RlY3RlZCBmaW5hbCBNYXA8U3RyaW5nLCBPYmplY3Q+IGFubm90YXRpb25zID0gQ29sbGVjdGlvbnMuc3luY2hyb25pemVkTWFwKG5ldyBMaW5rZWRIYXNoTWFwPD4oKSk7CiAgICAgcHJvdGVjdGVkIGZpbmFsIE1hcDxTdHJpbmcsIEltbXV0YWJsZU1ldHJpY3M+IG5lc3RlZCA9IG5ldyBMaW5rZWRIYXNoTWFwPD4oKTsKIAogICAgIHByb3RlY3RlZCBJbW11dGFibGVNZXRyaWNzKCkgewpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvRWxlbWVudC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvRWxlbWVudC5qYXZhCmluZGV4IGVmM2VhNzAuLjBiNzk2YTEgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL0VsZW1lbnQuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9FbGVtZW50LmphdmEKQEAgLTE0NSwxNCArMTQ1LDUgQEAKICAgICAgICAgcHVibGljIHN0YXRpYyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gbGFiZWxDYW5Ob3RCZUFIaWRkZW5LZXkoZmluYWwgU3RyaW5nIGxhYmVsKSB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiTGFiZWwgY2FuIG5vdCBiZSBhIGhpZGRlbiBrZXk6ICIgKyBsYWJlbCk7CiAgICAgICAgIH0KLQotICAgICAgICAvKioKLSAgICAgICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjEuMCwgbm90IHJlcGxhY2VkIC0gdGhpcyBleGNlcHRpb24gaXMgbm8gbG9uZ2VyIGVuZm9yY2VkIGJ5IHRoZSB0ZXN0IHN1aXRlLgotICAgICAgICAgKiBAc2VlIDxhIGhyZWY9Imh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvVElOS0VSUE9QLTI5NyI+VElOS0VSUE9QLTI5NzwvYT4KLSAgICAgICAgICovCi0gICAgICAgIEBEZXByZWNhdGVkCi0gICAgICAgIHB1YmxpYyBzdGF0aWMgSWxsZWdhbFN0YXRlRXhjZXB0aW9uIGVsZW1lbnRBbHJlYWR5UmVtb3ZlZChmaW5hbCBDbGFzczw/IGV4dGVuZHMgRWxlbWVudD4gY2xhenosIGZpbmFsIE9iamVjdCBpZCkgewotICAgICAgICAgICAgcmV0dXJuIG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oU3RyaW5nLmZvcm1hdCgiJXMgd2l0aCBpZCAlcyB3YXMgcmVtb3ZlZC4iLCBjbGF6ei5nZXRTaW1wbGVOYW1lKCksIGlkKSk7Ci0gICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9HcmFwaC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvR3JhcGguamF2YQppbmRleCA2YjlkMGU0Li41YmJiNDE1IDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9HcmFwaC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL0dyYXBoLmphdmEKQEAgLTIxLDExICsyMSwxMSBAQAogaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5jb25maWd1cmF0aW9uLkNvbmZpZ3VyYXRpb247CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLkdyYXBoQ29tcHV0ZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWxFbmdpbmU7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWxTb3VyY2U7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguR3JhcGhUcmF2ZXJzYWw7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguR3JhcGhUcmF2ZXJzYWxTb3VyY2U7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5lbmdpbmUuQ29tcHV0ZXJUcmF2ZXJzYWxFbmdpbmU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uR3JhcGhSZWFkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uR3JhcGhXcml0ZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uSW87CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uSW9SZWdpc3RyeTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLkZlYXR1cmVEZXNjcmlwdG9yOwpAQCAtNDMsNyArNDMsNiBAQAogaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKIGltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CiBpbXBvcnQgamF2YS51dGlsLk1hcDsKLWltcG9ydCBqYXZhLnV0aWwuTm9TdWNoRWxlbWVudEV4Y2VwdGlvbjsKIGltcG9ydCBqYXZhLnV0aWwuT3B0aW9uYWw7CiBpbXBvcnQgamF2YS51dGlsLlNldDsKIGltcG9ydCBqYXZhLnV0aWwuVVVJRDsKQEAgLTMwMiw4ICszMDEsMTEgQEAKICAgICAgKiA8L3A+CiAgICAgICogRm9yIHRob3NlIGdyYXBocyB0aGF0IGRvIG5vdCBuZWVkIHRvIHJlZ2lzdGVyIGFueSBjdXN0b20gc2VyaWFsaXplcnMsIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHNob3VsZCBzdWZmaWNlLgogICAgICAqIElmIHRoZSBkZWZhdWx0IGlzIG92ZXJyaWRkZW4sIHRha2UgY2FyZSB0byByZWdpc3RlciB0aGUgY3VycmVudCBncmFwaCB2aWEgdGhlCi0gICAgICoge0BsaW5rIElvLkJ1aWxkZXIjZ3JhcGgoR3JhcGgpfSBtZXRob2QuCisgICAgICoge0BsaW5rIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLklvLkJ1aWxkZXIjZ3JhcGgoR3JhcGgpfSBtZXRob2QuCisgICAgICoKKyAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuNC4wLCByZXBsYWNlZCBieSB7QGxpbmsgR3JhcGhUcmF2ZXJzYWxTb3VyY2UjaW8oU3RyaW5nKX0uCiAgICAgICovCisgICAgQERlcHJlY2F0ZWQKICAgICBwdWJsaWMgZGVmYXVsdCA8SSBleHRlbmRzIElvPiBJIGlvKGZpbmFsIElvLkJ1aWxkZXI8ST4gYnVpbGRlcikgewogICAgICAgICByZXR1cm4gKEkpIGJ1aWxkZXIuZ3JhcGgodGhpcykuY3JlYXRlKCk7CiAgICAgfQpAQCAtNDQ0LDYgKzQ0Niw4IEBACiAgICAgICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBGRUFUVVJFX1BFUlNJU1RFTkNFID0gIlBlcnNpc3RlbmNlIjsKICAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEZFQVRVUkVfVEhSRUFERURfVFJBTlNBQ1RJT05TID0gIlRocmVhZGVkVHJhbnNhY3Rpb25zIjsKICAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEZFQVRVUkVfQ09OQ1VSUkVOVF9BQ0NFU1MgPSAiQ29uY3VycmVudEFjY2VzcyI7CisgICAgICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBGRUFUVVJFX0lPX1JFQUQgPSAiSW9SZWFkIjsKKyAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEZFQVRVUkVfSU9fV1JJVEUgPSAiSW9Xcml0ZSI7CiAKICAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgICogRGV0ZXJtaW5lcyBpZiB0aGUge0Bjb2RlIEdyYXBofSBpbXBsZW1lbnRhdGlvbiBzdXBwb3J0cyB7QGxpbmsgR3JhcGhDb21wdXRlcn0gYmFzZWQgcHJvY2Vzc2luZy4KQEAgLTQ5NCw2ICs0OTgsMjkgQEAKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLyoqCisgICAgICAgICAgICAgKiBEZXRlcm1pbmVzIGlmIHRoZSB7QGNvZGUgR3JhcGh9IGltcGxlbWVudGF0aW9ucyBzdXBwb3J0cyByZWFkIG9wZXJhdGlvbnMgYXMgZXhlY3V0ZWQgd2l0aCB0aGUKKyAgICAgICAgICAgICAqIHtAbGluayBHcmFwaFRyYXZlcnNhbFNvdXJjZSNpbyhTdHJpbmcpfSBzdGVwLiBHcmFwaCBpbXBsZW1lbnRhdGlvbnMgd2lsbCBnZW5lcmFsbHkgc3VwcG9ydCB0aGlzIGJ5CisgICAgICAgICAgICAgKiBkZWZhdWx0IGFzIGFueSBncmFwaCB0aGF0IGNhbiBzdXBwb3J0IGRpcmVjdCBtdXRhdGlvbiB0aHJvdWdoIHRoZSBTdHJ1Y3R1cmUgQVBJIHdpbGwgYnkgZGVmYXVsdAorICAgICAgICAgICAgICogYWNjZXB0IGRhdGEgZnJvbSB0aGUgc3RhbmRhcmQgVGlua2VyUG9wIHtAbGluayBHcmFwaFJlYWRlcn0gaW1wbGVtZW50YXRpb25zLiBIb3dldmVyLCBzb21lIGdyYXBocyBsaWtlCisgICAgICAgICAgICAgKiB7QGNvZGUgSGFkb29wR3JhcGh9IGRvbid0IGFjY2VwdCBkaXJlY3QgbXV0YXRpb25zIGJ1dCBjYW4gc3RpbGwgZG8gcmVhZHMgZnJvbSB0aGF0IHtAY29kZSBpbygpfSBzdGVwLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBARmVhdHVyZURlc2NyaXB0b3IobmFtZSA9IEZFQVRVUkVfSU9fUkVBRCkKKyAgICAgICAgICAgIHB1YmxpYyBkZWZhdWx0IGJvb2xlYW4gc3VwcG9ydHNJb1JlYWQoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qKgorICAgICAgICAgICAgICogRGV0ZXJtaW5lcyBpZiB0aGUge0Bjb2RlIEdyYXBofSBpbXBsZW1lbnRhdGlvbnMgc3VwcG9ydHMgd3JpdGUgb3BlcmF0aW9ucyBhcyBleGVjdXRlZCB3aXRoIHRoZQorICAgICAgICAgICAgICoge0BsaW5rIEdyYXBoVHJhdmVyc2FsU291cmNlI2lvKFN0cmluZyl9IHN0ZXAuIEdyYXBoIGltcGxlbWVudGF0aW9ucyB3aWxsIGdlbmVyYWxseSBzdXBwb3J0IHRoaXMgYnkKKyAgICAgICAgICAgICAqIGRlZmF1bHQgZ2l2ZW4gdGhlIHN0YW5kYXJkIFRpbmtlclBvcCB7QGxpbmsgR3JhcGhXcml0ZXJ9IGltcGxlbWVudGF0aW9ucy4gSG93ZXZlciwgc29tZSBncmFwaHMgbGlrZQorICAgICAgICAgICAgICoge0Bjb2RlIEhhZG9vcEdyYXBofSB3aWxsIHVzZSBhIGRpZmZlcmVudCBhcHByb2FjaCB0byBoYW5kbGUgd3JpdGVzLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBARmVhdHVyZURlc2NyaXB0b3IobmFtZSA9IEZFQVRVUkVfSU9fV1JJVEUpCisgICAgICAgICAgICBwdWJsaWMgZGVmYXVsdCBib29sZWFuIHN1cHBvcnRzSW9Xcml0ZSgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyoqCiAgICAgICAgICAgICAgKiBHZXRzIHRoZSBmZWF0dXJlcyByZWxhdGVkIHRvICJncmFwaCBzaWRlRWZmZWN0cyIgb3BlcmF0aW9uLgogICAgICAgICAgICAgICovCiAgICAgICAgICAgICBwdWJsaWMgZGVmYXVsdCBWYXJpYWJsZUZlYXR1cmVzIHZhcmlhYmxlcygpIHsKQEAgLTUxMSw2ICs1MzgsNyBAQAogICAgICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRkVBVFVSRV9EVVBMSUNBVEVfTVVMVElfUFJPUEVSVElFUyA9ICJEdXBsaWNhdGVNdWx0aVByb3BlcnRpZXMiOwogICAgICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRkVBVFVSRV9NRVRBX1BST1BFUlRJRVMgPSAiTWV0YVByb3BlcnRpZXMiOwogICAgICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRkVBVFVSRV9SRU1PVkVfVkVSVElDRVMgPSAiUmVtb3ZlVmVydGljZXMiOworICAgICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRkVBVFVSRV9VUFNFUlQgPSAiVXBzZXJ0IjsKIAogICAgICAgICAgICAgLyoqCiAgICAgICAgICAgICAgKiBHZXRzIHRoZSB7QGxpbmsgVmVydGV4UHJvcGVydHkuQ2FyZGluYWxpdHl9IGZvciBhIGtleS4gIEJ5IGRlZmF1bHQsIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuCkBAIC01NzIsNiArNjAwLDIwIEBACiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8qKgorICAgICAgICAgICAgICogRGV0ZXJtaW5lcyBpZiB0aGUge0Bjb2RlIEdyYXBofSBpbXBsZW1lbnRhdGlvbiB1c2VzIHVwc2VydCBmdW5jdGlvbmFsaXR5IGFzIG9wcG9zZWQgdG8gaW5zZXJ0CisgICAgICAgICAgICAgKiBmdW5jdGlvbmFsaXR5IGZvciB7QGxpbmsgI2FkZFZlcnRleChTdHJpbmcpfS4gVGhpcyBmZWF0dXJlIGdpdmVzIGdyYXBoIHByb3ZpZGVycyBzb21lIGZsZXhpYmlsaXR5IGFzCisgICAgICAgICAgICAgKiB0byBob3cgZ3JhcGggbXV0YXRpb25zIGFyZSB0cmVhdGVkLiBGb3IgZ3JhcGggcHJvdmlkZXJzLCB0ZXN0aW5nIG9mIHRoaXMgZmVhdHVyZSAoYXMgZmFyIGFzIFRpbmtlclBvcAorICAgICAgICAgICAgICogaXMgY29uY2VybmVkKSBvbmx5IGNvdmVycyBncmFwaHMgdGhhdCBjYW4gc3VwcG9ydCB1c2VyIHN1cHBsaWVkIGlkZW50aWZpZXJzIGFzIHRoZXJlIGlzIG5vIG90aGVyIHdheQorICAgICAgICAgICAgICogZm9yIFRpbmtlclBvcCB0byBrbm93IHdoYXQgYXNwZWN0IG9mIGEgdmVydGV4IGlzIHVuaXF1ZSB0byBhcHByb3ByaWF0ZWx5IGFwcGx5IGFzc2VydGlvbnMuIEdyYXBoCisgICAgICAgICAgICAgKiBwcm92aWRlcnMsIGVzcGVjaWFsbHkgdGhvc2Ugd2hvIHN1cHBvcnQgc2NoZW1hIGZlYXR1cmVzLCBtYXkgaGF2ZSBvdGhlciBtZXRob2RzIGZvciB1bmlxdWVseSBpZGVudGlmeWluZworICAgICAgICAgICAgICogYSB2ZXJ0ZXggYW5kIHNob3VsZCB0aGVyZWZvcmUgcmVzb3J0IHRvIHRoZWlyIG93biBib2R5IG9mIHRlc3RzIHRvIHZhbGlkYXRlIHRoaXMgZmVhdHVyZS4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgQEZlYXR1cmVEZXNjcmlwdG9yKG5hbWUgPSBGRUFUVVJFX1VQU0VSVCkKKyAgICAgICAgICAgIHB1YmxpYyBkZWZhdWx0IGJvb2xlYW4gc3VwcG9ydHNVcHNlcnQoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKioKICAgICAgICAgICAgICAqIEdldHMgZmVhdHVyZXMgcmVsYXRlZCB0byAicHJvcGVydGllcyIgb24gYSB7QGxpbmsgVmVydGV4fS4KICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgcHVibGljIGRlZmF1bHQgVmVydGV4UHJvcGVydHlGZWF0dXJlcyBwcm9wZXJ0aWVzKCkgewpAQCAtNTg2LDYgKzYyOCw3IEBACiAgICAgICAgIHB1YmxpYyBpbnRlcmZhY2UgRWRnZUZlYXR1cmVzIGV4dGVuZHMgRWxlbWVudEZlYXR1cmVzIHsKICAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEZFQVRVUkVfQUREX0VER0VTID0gIkFkZEVkZ2VzIjsKICAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEZFQVRVUkVfUkVNT1ZFX0VER0VTID0gIlJlbW92ZUVkZ2VzIjsKKyAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEZFQVRVUkVfVVBTRVJUID0gIlVwc2VydCI7CiAKICAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgICogRGV0ZXJtaW5lcyBpZiBhbiB7QGxpbmsgRWRnZX0gY2FuIGJlIGFkZGVkIHRvIGEge0Bjb2RlIFZlcnRleH0uCkBAIC02MDQsNiArNjQ3LDIxIEBACiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8qKgorICAgICAgICAgICAgICogRGV0ZXJtaW5lcyBpZiB0aGUge0Bjb2RlIEdyYXBofSBpbXBsZW1lbnRhdGlvbiB1c2VzIHVwc2VydCBmdW5jdGlvbmFsaXR5IGFzIG9wcG9zZWQgdG8gaW5zZXJ0CisgICAgICAgICAgICAgKiBmdW5jdGlvbmFsaXR5IGZvciB7QGxpbmsgVmVydGV4I2FkZEVkZ2UoU3RyaW5nLCBWZXJ0ZXgsIE9iamVjdC4uLil9LiBUaGlzIGZlYXR1cmUgZ2l2ZXMgZ3JhcGggcHJvdmlkZXJzCisgICAgICAgICAgICAgKiBzb21lIGZsZXhpYmlsaXR5IGFzIHRvIGhvdyBncmFwaCBtdXRhdGlvbnMgYXJlIHRyZWF0ZWQuIEZvciBncmFwaCBwcm92aWRlcnMsIHRlc3Rpbmcgb2YgdGhpcyBmZWF0dXJlCisgICAgICAgICAgICAgKiAoYXMgZmFyIGFzIFRpbmtlclBvcCBpcyBjb25jZXJuZWQpIG9ubHkgY292ZXJzIGdyYXBocyB0aGF0IGNhbiBzdXBwb3J0IHVzZXIgc3VwcGxpZWQgaWRlbnRpZmllcnMgYXMKKyAgICAgICAgICAgICAqIHRoZXJlIGlzIG5vIG90aGVyIHdheSBmb3IgVGlua2VyUG9wIHRvIGtub3cgd2hhdCBhc3BlY3Qgb2YgYSBlZGdlIGlzIHVuaXF1ZSB0byBhcHByb3ByaWF0ZWx5IGFwcGx5CisgICAgICAgICAgICAgKiBhc3NlcnRpb25zLiBHcmFwaCBwcm92aWRlcnMsIGVzcGVjaWFsbHkgdGhvc2Ugd2hvIHN1cHBvcnQgc2NoZW1hIGZlYXR1cmVzLCBtYXkgaGF2ZSBvdGhlciBtZXRob2RzIGZvcgorICAgICAgICAgICAgICogdW5pcXVlbHkgaWRlbnRpZnlpbmcgYSBlZGdlIGFuZCBzaG91bGQgdGhlcmVmb3JlIHJlc29ydCB0byB0aGVpciBvd24gYm9keSBvZiB0ZXN0cyB0byB2YWxpZGF0ZSB0aGlzCisgICAgICAgICAgICAgKiBmZWF0dXJlLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBARmVhdHVyZURlc2NyaXB0b3IobmFtZSA9IEZFQVRVUkVfVVBTRVJUKQorICAgICAgICAgICAgcHVibGljIGRlZmF1bHQgYm9vbGVhbiBzdXBwb3J0c1Vwc2VydCgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgICogR2V0cyBmZWF0dXJlcyByZWxhdGVkIHRvICJwcm9wZXJ0aWVzIiBvbiBhbiB7QGxpbmsgRWRnZX0uCiAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgIHB1YmxpYyBkZWZhdWx0IEVkZ2VQcm9wZXJ0eUZlYXR1cmVzIHByb3BlcnRpZXMoKSB7CkBAIC0xMTI0LDExICsxMTgyLDYgQEAKICAgICAgICAgICAgIHJldHVybiBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oIkdyYXBoIGRvZXMgbm90IHN1cHBvcnQgZ3JhcGggY29tcHV0ZXIiKTsKICAgICAgICAgfQogCi0gICAgICAgIEBEZXByZWNhdGVkCi0gICAgICAgIHB1YmxpYyBzdGF0aWMgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHRyYXZlcnNhbEVuZ2luZU5vdFN1cHBvcnRlZChmaW5hbCBUcmF2ZXJzYWxFbmdpbmUgZW5naW5lKSB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiR3JhcGggZG9lcyBub3Qgc3VwcG9ydCB0aGUgcHJvdmlkZWQgdHJhdmVyc2FsIGVuZ2luZTogIiArIGVuZ2luZS5nZXRDbGFzcygpLmdldENhbm9uaWNhbE5hbWUoKSk7Ci0gICAgICAgIH0KLQogICAgICAgICBwdWJsaWMgc3RhdGljIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBncmFwaERvZXNOb3RTdXBwb3J0UHJvdmlkZWRHcmFwaENvbXB1dGVyKGZpbmFsIENsYXNzIGdyYXBoQ29tcHV0ZXJDbGFzcykgewogICAgICAgICAgICAgcmV0dXJuIG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkdyYXBoIGRvZXMgbm90IHN1cHBvcnQgdGhlIHByb3ZpZGVkIGdyYXBoIGNvbXB1dGVyOiAiICsgZ3JhcGhDb21wdXRlckNsYXNzLmdldFNpbXBsZU5hbWUoKSk7CiAgICAgICAgIH0KQEAgLTExNTIsMzQgKzEyMDUsNiBAQAogICAgICAgICBwdWJsaWMgc3RhdGljIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBhcmd1bWVudENhbk5vdEJlTnVsbChmaW5hbCBTdHJpbmcgYXJndW1lbnQpIHsKICAgICAgICAgICAgIHJldHVybiBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKFN0cmluZy5mb3JtYXQoIlRoZSBwcm92aWRlZCBhcmd1bWVudCBjYW4gbm90IGJlIG51bGw6ICVzIiwgYXJndW1lbnQpKTsKICAgICAgICAgfQotCi0gICAgICAgIC8qKgotICAgICAgICAgKiBEZXByZWNhdGVkIGFzIG9mIDMuMi4zLCBub3QgcmVwbGFjZWQuCi0gICAgICAgICAqCi0gICAgICAgICAqIEBzZWUgPGEgaHJlZj0iaHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtOTQ0Ij5USU5LRVJQT1AtOTQ0PC9hPgotICAgICAgICAgKi8KLSAgICAgICAgQERlcHJlY2F0ZWQKLSAgICAgICAgcHVibGljIHN0YXRpYyBOb1N1Y2hFbGVtZW50RXhjZXB0aW9uIGVsZW1lbnROb3RGb3VuZChmaW5hbCBDbGFzczw/IGV4dGVuZHMgRWxlbWVudD4gZWxlbWVudENsYXNzLCBmaW5hbCBPYmplY3QgaWQpIHsKLSAgICAgICAgICAgIHJldHVybiAobnVsbCA9PSBpZCkgPwotICAgICAgICAgICAgICAgICAgICBuZXcgTm9TdWNoRWxlbWVudEV4Y2VwdGlvbigiVGhlICIgKyBlbGVtZW50Q2xhc3MuZ2V0U2ltcGxlTmFtZSgpLnRvTG93ZXJDYXNlKCkgKyAiIHdpdGggaWQgbnVsbCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgZ3JhcGgiKSA6Ci0gICAgICAgICAgICAgICAgICAgIG5ldyBOb1N1Y2hFbGVtZW50RXhjZXB0aW9uKCJUaGUgIiArIGVsZW1lbnRDbGFzcy5nZXRTaW1wbGVOYW1lKCkudG9Mb3dlckNhc2UoKSArICIgd2l0aCBpZCAiICsgaWQgKyAiIG9mIHR5cGUgIiArIGlkLmdldENsYXNzKCkuZ2V0U2ltcGxlTmFtZSgpICsgIiBkb2VzIG5vdCBleGlzdCBpbiB0aGUgZ3JhcGgiKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8qKgotICAgICAgICAgKiBEZXByZWNhdGVkIGFzIG9mIDMuMi4zLCBub3QgcmVwbGFjZWQuCi0gICAgICAgICAqCi0gICAgICAgICAqIEBzZWUgPGEgaHJlZj0iaHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9USU5LRVJQT1AtOTQ0Ij5USU5LRVJQT1AtOTQ0PC9hPgotICAgICAgICAgKi8KLSAgICAgICAgQERlcHJlY2F0ZWQKLSAgICAgICAgcHVibGljIHN0YXRpYyBOb1N1Y2hFbGVtZW50RXhjZXB0aW9uIGVsZW1lbnROb3RGb3VuZChmaW5hbCBDbGFzczw/IGV4dGVuZHMgRWxlbWVudD4gZWxlbWVudENsYXNzLCBmaW5hbCBPYmplY3QgaWQsIGZpbmFsIEV4Y2VwdGlvbiByb290Q2F1c2UpIHsKLSAgICAgICAgICAgIE5vU3VjaEVsZW1lbnRFeGNlcHRpb24gZWxlbWVudE5vdEZvdW5kRXhjZXB0aW9uOwotICAgICAgICAgICAgaWYgKG51bGwgPT0gaWQpCi0gICAgICAgICAgICAgICAgZWxlbWVudE5vdEZvdW5kRXhjZXB0aW9uID0gbmV3IE5vU3VjaEVsZW1lbnRFeGNlcHRpb24oIlRoZSAiICsgZWxlbWVudENsYXNzLmdldFNpbXBsZU5hbWUoKS50b0xvd2VyQ2FzZSgpICsgIiB3aXRoIGlkIG51bGwgZG9lcyBub3QgZXhpc3QgaW4gdGhlIGdyYXBoIik7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZWxlbWVudE5vdEZvdW5kRXhjZXB0aW9uID0gbmV3IE5vU3VjaEVsZW1lbnRFeGNlcHRpb24oIlRoZSAiICsgZWxlbWVudENsYXNzLmdldFNpbXBsZU5hbWUoKS50b0xvd2VyQ2FzZSgpICsgIiB3aXRoIGlkICIgKyBpZCArICIgb2YgdHlwZSAiICsgaWQuZ2V0Q2xhc3MoKS5nZXRTaW1wbGVOYW1lKCkgKyAiIGRvZXMgbm90IGV4aXN0IGluIHRoZSBncmFwaCIpOwotICAgICAgICAgICAgZWxlbWVudE5vdEZvdW5kRXhjZXB0aW9uLmluaXRDYXVzZShyb290Q2F1c2UpOwotICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnROb3RGb3VuZEV4Y2VwdGlvbjsKLSAgICAgICAgfQogICAgIH0KIAogICAgIC8qKgpAQCAtMTI0Nyw3ICsxMjcyLDcgQEAKICAgICAgICAgLyoqCiAgICAgICAgICAqIFRoZSBsaXN0IG9mIHtAbGluayBHcmFwaENvbXB1dGVyfSBpbXBsZW1lbnRhdGlvbnMgYnkgY2xhc3MgbmFtZSB0aGF0IGEgdGVzdCBzaG91bGQgb3B0LW91dCBmcm9tIHVzaW5nIChpLmUuIG90aGVyCiAgICAgICAgICAqIGdyYXBoIGNvbXB1dGVycyBub3QgaW4gdGhpcyBsaXN0IHdpbGwgZXhlY3V0ZSB0aGUgdGVzdCkuICBUaGlzIHNldHRpbmcgc2hvdWxkIG9ubHkgYmUgaW5jbHVkZWQgd2hlbgotICAgICAgICAgKiB0aGUgdGVzdCBpcyBvbmUgdGhhdCB1c2VzIHRoZSB7QGxpbmsgQ29tcHV0ZXJUcmF2ZXJzYWxFbmdpbmV9IC0gaXQgd2lsbCBvdGhlcndpc2UgYmUgaWdub3JlZC4gIEJ5CisgICAgICAgICAqIHRoZSB0ZXN0IGlzIG9uZSB0aGF0IHVzZXMgdGhlIHtAY29kZSBUcmF2ZXJzYWxFbmdpbmUuQ09NUFVURVJ9IC0gaXQgd2lsbCBvdGhlcndpc2UgYmUgaWdub3JlZC4gIEJ5CiAgICAgICAgICAqIGRlZmF1bHQsIGFuIGVtcHR5IGFycmF5IGlzIGFzc2lnbmVkIGFuZCBpdCBpcyB0aHVzIGFzc3VtZWQgdGhhdCBhbGwgY29tcHV0ZXJzIGFyZSBleGNsdWRlZCB3aGVuIGFuCiAgICAgICAgICAqIHtAY29kZSBPcHRPdXR9IGFubm90YXRpb24gaXMgdXNlZCwgdGhlcmVmb3JlIHRoaXMgdmFsdWUgbXVzdCBiZSBvdmVycmlkZGVuIHRvIGJlIG1vcmUgc3BlY2lmaWMuCiAgICAgICAgICAqLwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvVC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvVC5qYXZhCmluZGV4IGE4MzY4NDAuLjJkNjdkNmIgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL1QuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9ULmphdmEKQEAgLTMwLDYgKzMwLDggQEAKIHB1YmxpYyBlbnVtIFQgaW1wbGVtZW50cyBGdW5jdGlvbjxFbGVtZW50LCBPYmplY3Q+IHsKICAgICAvKioKICAgICAgKiBMYWJlbCAocmVwcmVzZW50aW5nIEVsZW1lbnQubGFiZWwoKSkKKyAgICAgKgorICAgICAqIEBzaW5jZSAzLjAuMC1pbmN1YmF0aW5nCiAgICAgICovCiAgICAgbGFiZWwgewogICAgICAgICBAT3ZlcnJpZGUKQEAgLTQ0LDYgKzQ2LDggQEAKICAgICB9LAogICAgIC8qKgogICAgICAqIElkIChyZXByZXNlbnRpbmcgRWxlbWVudC5pZCgpKQorICAgICAqCisgICAgICogQHNpbmNlIDMuMC4wLWluY3ViYXRpbmcKICAgICAgKi8KICAgICBpZCB7CiAgICAgICAgIEBPdmVycmlkZQpAQCAtNTgsNiArNjIsOCBAQAogICAgIH0sCiAgICAgLyoqCiAgICAgICogS2V5IChyZXByZXNlbnRpbmcgUHJvcGVydHkua2V5KCkpCisgICAgICoKKyAgICAgKiBAc2luY2UgMy4wLjAtaW5jdWJhdGluZwogICAgICAqLwogICAgIGtleSB7CiAgICAgICAgIEBPdmVycmlkZQpAQCAtNzIsNiArNzgsOCBAQAogICAgIH0sCiAgICAgLyoqCiAgICAgICogVmFsdWUgKHJlcHJlc2VudGluZyBQcm9wZXJ0eS52YWx1ZSgpKQorICAgICAqCisgICAgICogQHNpbmNlIDMuMC4wLWluY3ViYXRpbmcKICAgICAgKi8KICAgICB2YWx1ZSB7CiAgICAgICAgIEBPdmVycmlkZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vQnVmZmVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9CdWZmZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTA3ODg5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vQnVmZmVyLmphdmEKQEAgLTAsMCArMSwyNTAgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pbzsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5pby5PdXRwdXRTdHJlYW07CitpbXBvcnQgamF2YS5uaW8uQnl0ZUJ1ZmZlcjsKKworLyoqCisgKiBSZXByZXNlbnRzIGFuIGFic3RyYWN0IHZpZXcgZm9yIG9uZSBvciBtb3JlIHByaW1pdGl2ZSBieXRlIGFycmF5cyBhbmQgTklPIGJ1ZmZlcnMuCisgKi8KK3B1YmxpYyBpbnRlcmZhY2UgQnVmZmVyIHsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiByZWFkYWJsZSBieXRlcy4KKyAgICAgKi8KKyAgICBpbnQgcmVhZGFibGVCeXRlcygpOworCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgcmVhZGVyIGluZGV4IG9mIHRoaXMgYnVmZmVyLgorICAgICAqLworICAgIGludCByZWFkZXJJbmRleCgpOworCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgcmVhZGVyIGluZGV4IG9mIHRoaXMgYnVmZmVyLgorICAgICAqCisgICAgICogQHRocm93cyBJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uCisgICAgICogICAgICAgICBpZiBpdHMgb3V0IG9mIGJvdW5kcy4KKyAgICAgKi8KKyAgICBCdWZmZXIgcmVhZGVySW5kZXgoZmluYWwgaW50IHJlYWRlckluZGV4KTsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIHdyaXRlciBpbmRleCBvZiB0aGlzIGJ1ZmZlci4KKyAgICAgKi8KKyAgICBpbnQgd3JpdGVySW5kZXgoKTsKKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIHdyaXRlciBpbmRleCBvZiB0aGlzIGJ1ZmZlci4KKyAgICAgKi8KKyAgICBCdWZmZXIgd3JpdGVySW5kZXgoZmluYWwgaW50IHdyaXRlckluZGV4KTsKKworICAgIC8qKgorICAgICAqIE1hcmtzIHRoZSBjdXJyZW50IHdyaXRlciBpbmRleCBpbiB0aGlzIGJ1ZmZlci4KKyAgICAgKi8KKyAgICBCdWZmZXIgbWFya1dyaXRlckluZGV4KCk7CisKKyAgICAvKioKKyAgICAgKiBSZXBvc2l0aW9ucyB0aGUgY3VycmVudCB3cml0ZXIgaW5kZXggdG8gdGhlIG1hcmtlZCBpbmRleCBpbiB0aGlzIGJ1ZmZlci4KKyAgICAgKi8KKyAgICBCdWZmZXIgcmVzZXRXcml0ZXJJbmRleCgpOworCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIChvY3RldHMpIHRoaXMgYnVmZmVyIGNhbiBjb250YWluLgorICAgICAqLworICAgIGludCBjYXBhY2l0eSgpOworCisgICAgLyoqCisgICAgICogUmV0dXJucyB7QGNvZGUgdHJ1ZX0gaWYgYW5kIG9ubHkgaWYgdGhpcyBidWZmZXIgaXMgYmFja2VkIGJ5IGFuCisgICAgICogTklPIGRpcmVjdCBidWZmZXIuCisgICAgICovCisgICAgYm9vbGVhbiBpc0RpcmVjdCgpOworCisgICAgLyoqCisgICAgICogR2V0cyBhIGJvb2xlYW4gYW5kIGFkdmFuY2VzIHRoZSByZWFkZXIgaW5kZXguCisgICAgICovCisgICAgYm9vbGVhbiByZWFkQm9vbGVhbigpOworCisgICAgLyoqCisgICAgICogR2V0cyBhIGJ5dGUgYW5kIGFkdmFuY2VzIHRoZSByZWFkZXIgaW5kZXguCisgICAgICovCisgICAgYnl0ZSByZWFkQnl0ZSgpOworCisgICAgLyoqCisgICAgICogR2V0cyBhIDE2LWJpdCBzaG9ydCBpbnRlZ2VyIGFuZCBhZHZhbmNlcyB0aGUgcmVhZGVyIGluZGV4LgorICAgICAqLworICAgIHNob3J0IHJlYWRTaG9ydCgpOworCisgICAgLyoqCisgICAgICogR2V0cyBhIDMyLWJpdCBpbnRlZ2VyIGF0IHRoZSBjdXJyZW50IGluZGV4IGFuZCBhZHZhbmNlcyB0aGUgcmVhZGVyIGluZGV4LgorICAgICAqLworICAgIGludCByZWFkSW50KCk7CisKKyAgICAvKioKKyAgICAgKiBHZXRzIGEgNjQtYml0IGludGVnZXIgIGFuZCBhZHZhbmNlcyB0aGUgcmVhZGVyIGluZGV4LgorICAgICAqLworICAgIGxvbmcgcmVhZExvbmcoKTsKKworICAgIC8qKgorICAgICAqIEdldHMgYSAzMi1iaXQgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIGFuZCBhZHZhbmNlcyB0aGUgcmVhZGVyIGluZGV4LgorICAgICAqLworICAgIGZsb2F0IHJlYWRGbG9hdCgpOworCisgICAgLyoqCisgICAgICogR2V0cyBhIDY0LWJpdCBmbG9hdGluZyBwb2ludCBudW1iZXIgYW5kIGFkdmFuY2VzIHRoZSByZWFkZXIgaW5kZXguCisgICAgICovCisgICAgZG91YmxlIHJlYWREb3VibGUoKTsKKworICAgIC8qKgorICAgICAqIFRyYW5zZmVycyB0aGlzIGJ1ZmZlcidzIGRhdGEgdG8gdGhlIHNwZWNpZmllZCBkZXN0aW5hdGlvbiBzdGFydGluZyBhdAorICAgICAqIHRoZSBjdXJyZW50IHJlYWRlciBpbmRleCBhbmQgYWR2YW5jZXMgdGhlIHJlYWRlciBpbmRleC4KKyAgICAgKi8KKyAgICBCdWZmZXIgcmVhZEJ5dGVzKGJ5dGVbXSBkZXN0aW5hdGlvbik7CisKKyAgICAvKioKKyAgICAgKiBUcmFuc2ZlcnMgdGhpcyBidWZmZXIncyBkYXRhIHRvIHRoZSBzcGVjaWZpZWQgZGVzdGluYXRpb24gc3RhcnRpbmcgYXQKKyAgICAgKiB0aGUgY3VycmVudCByZWFkZXIgaW5kZXggYW5kIGFkdmFuY2VzIHRoZSByZWFkZXIgaW5kZXguCisgICAgICoKKyAgICAgKiBAcGFyYW0gZGVzdGluYXRpb24gVGhlIGRlc3RpbmF0aW9uIGJ1ZmZlcgorICAgICAqIEBwYXJhbSBkc3RJbmRleCB0aGUgZmlyc3QgaW5kZXggb2YgdGhlIGRlc3RpbmF0aW9uCisgICAgICogQHBhcmFtIGxlbmd0aCAgIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gdHJhbnNmZXIKKyAgICAgKi8KKyAgICBCdWZmZXIgcmVhZEJ5dGVzKGZpbmFsIGJ5dGVbXSBkZXN0aW5hdGlvbiwgZmluYWwgaW50IGRzdEluZGV4LCBmaW5hbCBpbnQgbGVuZ3RoKTsKKworICAgIC8qKgorICAgICAqIFRyYW5zZmVycyB0aGlzIGJ1ZmZlcidzIGRhdGEgdG8gdGhlIHNwZWNpZmllZCBkZXN0aW5hdGlvbiBzdGFydGluZyBhdAorICAgICAqIHRoZSBjdXJyZW50IHJlYWRlciBpbmRleCB1bnRpbCB0aGUgZGVzdGluYXRpb24ncyBwb3NpdGlvbgorICAgICAqIHJlYWNoZXMgaXRzIGxpbWl0LCBhbmQgYWR2YW5jZXMgdGhlIHJlYWRlciBpbmRleC4KKyAgICAgKi8KKyAgICBCdWZmZXIgcmVhZEJ5dGVzKGZpbmFsIEJ5dGVCdWZmZXIgZHN0KTsKKworICAgIC8qKgorICAgICAqIFRyYW5zZmVycyB0aGlzIGJ1ZmZlcidzIGRhdGEgdG8gdGhlIHNwZWNpZmllZCBzdHJlYW0gc3RhcnRpbmcgYXQgdGhlCisgICAgICogY3VycmVudCByZWFkZXIgaW5kZXggYW5kIGFkdmFuY2VzIHRoZSBpbmRleC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBsZW5ndGggdGhlIG51bWJlciBvZiBieXRlcyB0byB0cmFuc2ZlcgorICAgICAqCisgICAgICogQHRocm93cyBJT0V4Y2VwdGlvbgorICAgICAqICAgICAgICAgaWYgdGhlIHNwZWNpZmllZCBzdHJlYW0gdGhyZXcgYW4gZXhjZXB0aW9uIGR1cmluZyBJL08KKyAgICAgKi8KKyAgICBCdWZmZXIgcmVhZEJ5dGVzKGZpbmFsIE91dHB1dFN0cmVhbSBvdXQsIGZpbmFsIGludCBsZW5ndGgpIHRocm93cyBJT0V4Y2VwdGlvbjsKKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIHNwZWNpZmllZCBib29sZWFuIGF0IHRoZSBjdXJyZW50IHdyaXRlciBpbmRleCBhbmQgYWR2YW5jZXMgdGhlIGluZGV4LgorICAgICAqLworICAgIEJ1ZmZlciB3cml0ZUJvb2xlYW4oZmluYWwgYm9vbGVhbiB2YWx1ZSk7CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBzcGVjaWZpZWQgYnl0ZSBhdCB0aGUgY3VycmVudCB3cml0ZXIgaW5kZXggYW5kIGFkdmFuY2VzIHRoZSBpbmRleC4KKyAgICAgKi8KKyAgICBCdWZmZXIgd3JpdGVCeXRlKGZpbmFsIGludCB2YWx1ZSk7CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBzcGVjaWZpZWQgMTYtYml0IHNob3J0IGludGVnZXIgYXQgdGhlIGN1cnJlbnQgd3JpdGVyIGluZGV4IGFuZCBhZHZhbmNlcyB0aGUgaW5kZXguCisgICAgICovCisgICAgQnVmZmVyIHdyaXRlU2hvcnQoZmluYWwgaW50IHZhbHVlKTsKKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIHNwZWNpZmllZCAzMi1iaXQgaW50ZWdlciBhdCB0aGUgY3VycmVudCB3cml0ZXIgaW5kZXggYW5kIGFkdmFuY2VzIHRoZSBpbmRleC4KKyAgICAgKi8KKyAgICBCdWZmZXIgd3JpdGVJbnQoZmluYWwgaW50IHZhbHVlKTsKKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIHNwZWNpZmllZCA2NC1iaXQgbG9uZyBpbnRlZ2VyIGF0IHRoZSBjdXJyZW50IHdyaXRlciBpbmRleCBhbmQgYWR2YW5jZXMgdGhlIGluZGV4LgorICAgICAqLworICAgIEJ1ZmZlciB3cml0ZUxvbmcoZmluYWwgbG9uZyB2YWx1ZSk7CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBzcGVjaWZpZWQgMzItYml0IGZsb2F0aW5nIHBvaW50IG51bWJlciBhdCB0aGUgY3VycmVudCB3cml0ZXIgaW5kZXggYW5kIGFkdmFuY2VzIHRoZSBpbmRleC4KKyAgICAgKi8KKyAgICBCdWZmZXIgd3JpdGVGbG9hdChmaW5hbCBmbG9hdCB2YWx1ZSk7CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBzcGVjaWZpZWQgNjQtYml0IGZsb2F0aW5nIHBvaW50IG51bWJlciBhdCB0aGUgY3VycmVudCB3cml0ZXIgaW5kZXggYW5kIGFkdmFuY2VzIHRoZSBpbmRleC4KKyAgICAgKi8KKyAgICBCdWZmZXIgd3JpdGVEb3VibGUoZmluYWwgZG91YmxlIHZhbHVlKTsKKworICAgIC8qKgorICAgICAqIFRyYW5zZmVycyB0aGUgc3BlY2lmaWVkIHNvdXJjZSBhcnJheSdzIGRhdGEgdG8gdGhpcyBidWZmZXIgc3RhcnRpbmcgYXQgdGhlIGN1cnJlbnQgd3JpdGVyIGluZGV4CisgICAgICogYW5kIGFkdmFuY2VzIHRoZSBpbmRleC4KKyAgICAgKi8KKyAgICBCdWZmZXIgd3JpdGVCeXRlcyhmaW5hbCBieXRlW10gc3JjKTsKKworICAgIC8qKgorICAgICAqIFRyYW5zZmVycyB0aGUgc3BlY2lmaWVkIHNvdXJjZSBieXRlIGRhdGEgdG8gdGhpcyBidWZmZXIgc3RhcnRpbmcgYXQgdGhlIGN1cnJlbnQgd3JpdGVyIGluZGV4CisgICAgICogYW5kIGFkdmFuY2VzIHRoZSBpbmRleC4KKyAgICAgKi8KKyAgICBCdWZmZXIgd3JpdGVCeXRlcyhmaW5hbCBCeXRlQnVmZmVyIHNyYyk7CisKKyAgICAvKioKKyAgICAgKiBUcmFuc2ZlcnMgdGhlIHNwZWNpZmllZCBzb3VyY2UgYXJyYXkncyBkYXRhIHRvIHRoaXMgYnVmZmVyIHN0YXJ0aW5nIGF0IHRoZSBjdXJyZW50IHdyaXRlciBpbmRleAorICAgICAqIGFuZCBhZHZhbmNlcyB0aGUgaW5kZXguCisgICAgICovCisgICAgQnVmZmVyIHdyaXRlQnl0ZXMoZmluYWwgYnl0ZVtdIHNyYywgZmluYWwgaW50IHNyY0luZGV4LCBmaW5hbCBpbnQgbGVuZ3RoKTsKKworICAgIC8qKgorICAgICAqIERlY3JlYXNlcyB0aGUgcmVmZXJlbmNlIGNvdW50IGJ5IHtAY29kZSAxfSBhbmQgZGVhbGxvY2F0ZXMgdGhpcyBvYmplY3QgaWYgdGhlIHJlZmVyZW5jZSBjb3VudCByZWFjaGVzIGF0CisgICAgICoge0Bjb2RlIDB9LgorICAgICAqLworICAgIGJvb2xlYW4gcmVsZWFzZSgpOworCisgICAgLyoqCisgICAgICogSW5jcmVhc2VzIHRoZSByZWZlcmVuY2UgY291bnQgYnkge0Bjb2RlIDF9LgorICAgICAqLworICAgIEJ1ZmZlciByZXRhaW4oKTsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiB0aGlzIG9iamVjdC4KKyAgICAgKi8KKyAgICBpbnQgcmVmZXJlbmNlQ291bnQoKTsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIG1heGltdW0gbnVtYmVyIG9mIE5JTyB7QGxpbmsgQnl0ZUJ1ZmZlcn1zIHRoYXQgY29uc2lzdCB0aGlzIGJ1ZmZlci4KKyAgICAgKi8KKyAgICBpbnQgbmlvQnVmZmVyQ291bnQoKTsKKworICAgIC8qKgorICAgICAqIEV4cG9zZXMgdGhpcyBidWZmZXIncyByZWFkYWJsZSBieXRlcyBhcyBOSU8gQnl0ZUJ1ZmZlcidzIGluc3RhbmNlcy4KKyAgICAgKi8KKyAgICBCeXRlQnVmZmVyW10gbmlvQnVmZmVycygpOworCisgICAgLyoqCisgICAgICogRXhwb3NlcyB0aGlzIGJ1ZmZlcidzIHJlYWRhYmxlIGJ5dGVzIGFzIE5JTyBCeXRlQnVmZmVyJ3MgaW5zdGFuY2VzLgorICAgICAqLworICAgIEJ5dGVCdWZmZXJbXSBuaW9CdWZmZXJzKGZpbmFsIGludCBpbmRleCwgZmluYWwgaW50IGxlbmd0aCk7CisKKyAgICAvKioKKyAgICAgKiBFeHBvc2VzIHRoaXMgYnVmZmVyJ3MgcmVhZGFibGUgYnl0ZXMgYXMgYSBOSU8ge0BsaW5rIEJ5dGVCdWZmZXJ9LiBUaGUgcmV0dXJuZWQgYnVmZmVyCisgICAgICogZWl0aGVyIHNoYXJlIG9yIGNvbnRhaW5zIHRoZSBjb3BpZWQgY29udGVudCBvZiB0aGlzIGJ1ZmZlciwgd2hpbGUgY2hhbmdpbmcgdGhlIHBvc2l0aW9uCisgICAgICogYW5kIGxpbWl0IG9mIHRoZSByZXR1cm5lZCBOSU8gYnVmZmVyIGRvZXMgbm90IGFmZmVjdCB0aGUgaW5kZXhlcyBhbmQgbWFya3Mgb2YgdGhpcyBidWZmZXIuCisgICAgICovCisgICAgQnl0ZUJ1ZmZlciBuaW9CdWZmZXIoKTsKKworICAgIC8qKgorICAgICAqIEV4cG9zZXMgdGhpcyBidWZmZXIncyBzdWItcmVnaW9uIGFzIGFuIE5JTyB7QGxpbmsgQnl0ZUJ1ZmZlcn0uCisgICAgICovCisgICAgQnl0ZUJ1ZmZlciBuaW9CdWZmZXIoZmluYWwgaW50IGluZGV4LCBmaW5hbCBpbnQgbGVuZ3RoKTsKKworICAgIC8qKgorICAgICAqIFRyYW5zZmVycyB0aGlzIGJ1ZmZlcidzIGRhdGEgdG8gdGhlIHNwZWNpZmllZCBkZXN0aW5hdGlvbiBzdGFydGluZyBhdAorICAgICAqIHRoZSBzcGVjaWZpZWQgYWJzb2x1dGUge0Bjb2RlIGluZGV4fS4KKyAgICAgKiBUaGlzIG1ldGhvZCBkb2VzIG5vdCBtb2RpZnkgcmVhZGVyIG9yIHdyaXRlciBpbmRleGVzLgorICAgICAqLworICAgIEJ1ZmZlciBnZXRCeXRlcyhmaW5hbCBpbnQgaW5kZXgsIGZpbmFsIGJ5dGVbXSBkc3QpOworfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vQnVmZmVyRmFjdG9yeS5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vQnVmZmVyRmFjdG9yeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjZWUyOTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9CdWZmZXJGYWN0b3J5LmphdmEKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvOworCitpbXBvcnQgamF2YS5uaW8uQnl0ZUJ1ZmZlcjsKKworLyoqCisgKiBSZXByZXNlbnRzIGEgZmFjdG9yeSB0byBjcmVhdGUge0BsaW5rIEJ1ZmZlcn0gaW5zdGFuY2VzIGZyb20ge0BsaW5rIFR9IGluc3RhbmNlcy4KKyAqLworcHVibGljIGludGVyZmFjZSBCdWZmZXJGYWN0b3J5PFQ+IHsKKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSBuZXcge0BsaW5rIEJ1ZmZlcn0gZ2l2ZW4gYSB7QGxpbmsgVH0gaW5zdGFuY2UuCisgICAgICogQHBhcmFtIHZhbHVlCisgICAgICogQHJldHVybgorICAgICAqLworICAgIEJ1ZmZlciBjcmVhdGUoZmluYWwgVCB2YWx1ZSk7CisKKyAgICAvKioKKyAgICAgKiBXcmFwcyBhIE5JTyBidWZmZXIuCisgICAgICovCisgICAgQnVmZmVyIHdyYXAoZmluYWwgQnl0ZUJ1ZmZlciB2YWx1ZSk7Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9Jb0NvcmUuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL0lvQ29yZS5qYXZhCmluZGV4IGQ1YTczODQuLjczZTU0OTIgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL0lvQ29yZS5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL0lvQ29yZS5qYXZhCkBAIC0xOCw2ICsxOCw3IEBACiAgKi8KIHBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW87CiAKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5HcmFwaFRyYXZlcnNhbFNvdXJjZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncmFwaG1sLkdyYXBoTUxJbzsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncmFwaHNvbi5HcmFwaFNPTklvOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyeW8uR3J5b0lvOwpAQCAtMjcsNyArMjgsOSBAQAogICogbWV0aG9kcyBzdGF0aWNhbGx5LgogICoKICAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy40LjAsIHJlcGxhY2VkIGJ5IHtAbGluayBHcmFwaFRyYXZlcnNhbFNvdXJjZSNpbyhTdHJpbmcpfS4KICAqLworQERlcHJlY2F0ZWQKIHB1YmxpYyBmaW5hbCBjbGFzcyBJb0NvcmUgewogCiAgICAgcHJpdmF0ZSBJb0NvcmUoKSB7fQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L0RhdGFUeXBlLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvRGF0YVR5cGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTU5ZDRmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L0RhdGFUeXBlLmphdmEKQEAgLTAsMCArMSwxMzUgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnk7CisKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworCisvKioKKyAqIFJlcHJlc2VudHMgYSBHcmFwaEJpbmFyeSBkYXRhIHR5cGUuCisgKi8KK3B1YmxpYyBlbnVtIERhdGFUeXBlIHsKKyAgICBJTlQoMHgwMSksCisgICAgTE9ORygweDAyKSwKKyAgICBTVFJJTkcoMFgwMyksCisgICAgREFURSgwWDA0KSwKKyAgICBUSU1FU1RBTVAoMFgwNSksCisgICAgQ0xBU1MoMFgwNiksCisgICAgRE9VQkxFKDBYMDcpLAorICAgIEZMT0FUKDBYMDgpLAorICAgIExJU1QoMFgwOSksCisgICAgTUFQKDBYMEEpLAorICAgIFNFVCgwWDBCKSwKKyAgICBVVUlEKDBYMEMpLAorICAgIEVER0UoMFgwRCksCisgICAgUEFUSCgwWDBFKSwKKyAgICBQUk9QRVJUWSgwWDBGKSwKKyAgICBHUkFQSCgwWDEwKSwKKyAgICBWRVJURVgoMFgxMSksCisgICAgVkVSVEVYUFJPUEVSVFkoMFgxMiksCisgICAgQkFSUklFUigwWDEzKSwKKyAgICBCSU5ESU5HKDBYMTQpLAorICAgIEJZVEVDT0RFKDBYMTUpLAorICAgIENBUkRJTkFMSVRZKDBYMTYpLAorICAgIENPTFVNTigwWDE3KSwKKyAgICBESVJFQ1RJT04oMFgxOCksCisgICAgT1BFUkFUT1IoMFgxOSksCisgICAgT1JERVIoMFgxQSksCisgICAgUElDSygwWDFCKSwKKyAgICBQT1AoMFgxQyksCisgICAgTEFNQkRBKDBYMUQpLAorICAgIFAoMFgxRSksCisgICAgU0NPUEUoMFgxRiksCisgICAgVCgwWDIwKSwKKyAgICBUUkFWRVJTRVIoMFgyMSksCisgICAgQklHREVDSU1BTCgwWDIyKSwKKyAgICBCSUdJTlRFR0VSKDBYMjMpLAorICAgIEJZVEUoMFgyNCksCisgICAgQllURUJVRkZFUigwWDI1KSwKKyAgICBTSE9SVCgwWDI2KSwKKyAgICBCT09MRUFOKDB4MjcpLAorICAgIFRFWFRQKDB4MjgpLAorICAgIFRSQVZFUlNBTFNUUkFURUdZKDBYMjkpLAorICAgIEJVTEtTRVQoMFgyQSksCisgICAgVFJFRSgwWDJCKSwKKyAgICBNRVRSSUNTKDB4MkMpLAorICAgIFRSQVZFUlNBTE1FVFJJQ1MoMHgyRCksCisKKyAgICBDSEFSKDBYODApLAorICAgIERVUkFUSU9OKDBYODEpLAorICAgIElORVRBRERSRVNTKDBYODIpLAorICAgIElOU1RBTlQoMFg4MyksCisgICAgTE9DQUxEQVRFKDBYODQpLAorICAgIExPQ0FMREFURVRJTUUoMFg4NSksCisgICAgTE9DQUxUSU1FKDBYODYpLAorICAgIE1PTlRIREFZKDBYODcpLAorICAgIE9GRlNFVERBVEVUSU1FKDBYODgpLAorICAgIE9GRlNFVFRJTUUoMFg4OSksCisgICAgUEVSSU9EKDBYOEEpLAorICAgIFlFQVIoMFg4QiksCisgICAgWUVBUk1PTlRIKDBYOEMpLAorICAgIFpPTkVEQVRFVElNRSgwWDhEKSwKKyAgICBaT05FT0ZGU0VUKDBYOEUpLAorCisgICAgQ1VTVE9NKDApLAorICAgIFVOU1BFQ0lGSUVEX05VTEwoMFhGRSk7CisKKyAgICBwcml2YXRlIGZpbmFsIGludCBjb2RlOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIE1hcDxJbnRlZ2VyLCBEYXRhVHlwZT4gdHlwZUJ5Q29kZSA9IG5ldyBIYXNoTWFwPD4oKTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBNYXA8RGF0YVR5cGUsIGJ5dGVbXT4gYnVmZmVyQnlEYXRhVHlwZSA9IG5ldyBIYXNoTWFwPD4oKTsKKworICAgIHN0YXRpYyB7CisgICAgICAgIGZvciAoRGF0YVR5cGUgdCA6IERhdGFUeXBlLnZhbHVlcygpKSB7CisgICAgICAgICAgICB0eXBlQnlDb2RlLnB1dCh0LmNvZGUsIHQpOworICAgICAgICAgICAgYnVmZmVyQnlEYXRhVHlwZS5wdXQodCwgbmV3IGJ5dGVbXSB7IChieXRlKXQuY29kZSB9KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIERhdGFUeXBlKGZpbmFsIGludCBjb2RlKSB7CisgICAgICAgIHRoaXMuY29kZSA9IGNvZGU7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgZGF0YSB0eXBlIGNvZGUuCisgICAgICovCisgICAgcHVibGljIGludCBnZXRDb2RlKCkgeworICAgICAgICByZXR1cm4gY29kZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBkYXRhIHR5cGUgY29kZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgYnl0ZSBnZXRDb2RlQnl0ZSgpIHsKKyAgICAgICAgcmV0dXJuIChieXRlKSBjb2RlOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgYSBieXRlIGFycmF5IGNvbnRhaW5pbmcgYSBzaW5nbGUgYnl0ZSByZXByZXNlbnRpbmcgdGhlIHR5cGUgY29kZS4KKyAgICAgKi8KKyAgICBieXRlW10gZ2V0RGF0YVR5cGVCdWZmZXIoKSB7CisgICAgICAgIHJldHVybiBidWZmZXJCeURhdGFUeXBlLmdldCh0aGlzKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIGEgRGF0YVR5cGUgYnkgY29kZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIERhdGFUeXBlIGdldChmaW5hbCBpbnQgY29kZSkgeworICAgICAgICByZXR1cm4gdHlwZUJ5Q29kZS5nZXQoY29kZSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L0dyYXBoQmluYXJ5SW8uamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS9HcmFwaEJpbmFyeUlvLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWMzZTY1NQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS9HcmFwaEJpbmFyeUlvLmphdmEKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeTsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkdyYXBoUmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkdyYXBoV3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLklvOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLklvUmVnaXN0cnk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uTWFwcGVyOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKKworLyoqCisgKiBUaGlzIGlzIGEgZHVtbXkgaW1wbGVtZW50YXRpb24gb2Yge0BsaW5rIElvfSB3aGljaCBpcyBvbmx5IHVzZWQgaW4gdGhlIGNvbnRleHQgb2YgaGVscGluZyB0byBjb25maWd1cmUgYQorICogR3JhcGhCaW5hcnkge0Bjb2RlIE1lc3NhZ2VTZXJpYWxpemVyfSB3aXRoIGFuIHtAbGluayBJb1JlZ2lzdHJ5fS4gSXQncyBtZXRob2RzIGFyZSBub3QgaW1wbGVtZW50ZWQuCisgKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgY2xhc3MgR3JhcGhCaW5hcnlJbyBpbXBsZW1lbnRzIElvIHsKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgR3JhcGhSZWFkZXIuUmVhZGVyQnVpbGRlciByZWFkZXIoKSB7CisgICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigiR3JhcGhCaW5hcnlJbyBpcyBvbmx5IHVzZWQgdG8gc3VwcG9ydCBJb1JlZ2lzdHJ5IGNvbmZpZ3VyYXRpb24gLSBpdCdzIG1ldGhvZHMgYXJlIG5vdCBpbXBsZW1lbnRlZCIpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBHcmFwaFdyaXRlci5Xcml0ZXJCdWlsZGVyIHdyaXRlcigpIHsKKyAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKCJHcmFwaEJpbmFyeUlvIGlzIG9ubHkgdXNlZCB0byBzdXBwb3J0IElvUmVnaXN0cnkgY29uZmlndXJhdGlvbiAtIGl0J3MgbWV0aG9kcyBhcmUgbm90IGltcGxlbWVudGVkIik7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIE1hcHBlci5CdWlsZGVyIG1hcHBlcigpIHsKKyAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKCJHcmFwaEJpbmFyeUlvIGlzIG9ubHkgdXNlZCB0byBzdXBwb3J0IElvUmVnaXN0cnkgY29uZmlndXJhdGlvbiAtIGl0J3MgbWV0aG9kcyBhcmUgbm90IGltcGxlbWVudGVkIik7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgd3JpdGVHcmFwaChmaW5hbCBTdHJpbmcgZmlsZSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKCJHcmFwaEJpbmFyeUlvIGlzIG9ubHkgdXNlZCB0byBzdXBwb3J0IElvUmVnaXN0cnkgY29uZmlndXJhdGlvbiAtIGl0J3MgbWV0aG9kcyBhcmUgbm90IGltcGxlbWVudGVkIik7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgcmVhZEdyYXBoKGZpbmFsIFN0cmluZyBmaWxlKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oIkdyYXBoQmluYXJ5SW8gaXMgb25seSB1c2VkIHRvIHN1cHBvcnQgSW9SZWdpc3RyeSBjb25maWd1cmF0aW9uIC0gaXQncyBtZXRob2RzIGFyZSBub3QgaW1wbGVtZW50ZWQiKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvR3JhcGhCaW5hcnlSZWFkZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS9HcmFwaEJpbmFyeVJlYWRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1MTI5ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvR3JhcGhCaW5hcnlSZWFkZXIuamF2YQpAQCAtMCwwICsxLDEwOCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeTsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlcjsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CisKKy8qKgorICogUmVhZHMgYSB2YWx1ZSBmcm9tIGEgYnVmZmVyIHVzaW5nIHRoZSB7QGxpbmsgVHlwZVNlcmlhbGl6ZXJ9IGluc3RhbmNlcyBjb25maWd1cmVkIGluIHRoZQorICoge0BsaW5rIFR5cGVTZXJpYWxpemVyUmVnaXN0cnl9LgorICoKKyAqIDxwPgorICogICAgIFRoaXMgY2xhc3MgZXhwb3NlcyB0d28gZGlmZmVyZW50IG1ldGhvZHMgdG8gcmVhZCBhIHZhbHVlIGZyb20gYSBidWZmZXI6IHtAbGluayBHcmFwaEJpbmFyeVJlYWRlciNyZWFkKEJ1ZmZlcil9CisgKiAgICAgYW5kIHtAbGluayBHcmFwaEJpbmFyeVJlYWRlciNyZWFkVmFsdWUoQnVmZmVyLCBDbGFzcywgYm9vbGVhbil9OgorICogICAgIDx1bD4KKyAqICAgICAgICAgPGxpPntAY29kZSByZWFkKCl9IG1ldGhvZCBleHBlY3RzIGEgdmFsdWUgaW4gZnVsbHktcXVhbGlmaWVkIGZvcm1hdCwgY29tcG9zZWQgb2YKKyAqICAgICAgICAgPGNvZGU+e3R5cGVfY29kZX17dHlwZV9pbmZvfXt2YWx1ZV9mbGFnfXt2YWx1ZX08L2NvZGU+LjwvbGk+CisgKiAgICAgICAgIDxsaT57QGNvZGUgcmVhZFZhbHVlKCl9IG1ldGhvZCBleHBlY3RzIGEgPGNvZGU+e3ZhbHVlX2ZsYWd9e3ZhbHVlfTwvY29kZT4gd2hlbiBhIHZhbHVlIGlzIG51bGxhYmxlIGFuZAorICogICAgICAgICBvbmx5IDxjb2RlPnt2YWx1ZX08L2NvZGU+IHdoZW4gYSB2YWx1ZSBpcyBub3QgbnVsbGFibGUuCisgKiAgICAgICAgIDwvbGk+CisgKiAgICAgPC91bD4KKyAqIDwvcD4KKyAqCisgKiA8cD4KKyAqICAgICBUaGUge0BsaW5rIEdyYXBoQmluYXJ5UmVhZGVyfSBzaG91bGQgYmUgdXNlZCB0byByZWFkIGEgbmVzdGVkIGtub3duIHR5cGUgZnJvbSBhIHtAbGluayBUeXBlU2VyaWFsaXplcn0uCisgKiAgICAgRm9yIGV4YW1wbGUsIGlmIGEgUE9JTlQgdHlwZSBpcyBjb21wb3NlZCBieSB0d28gZG91YmxlcyByZXByZXNlbnRpbmcgdGhlIHBvc2l0aW9uIGluIHRoZSB4IGFuZCB5IGF4ZXMsIGEKKyAqICAgICB7QGxpbmsgVHlwZVNlcmlhbGl6ZXJ9IGZvciBQT0lOVCB0eXBlIHNob3VsZCB1c2UgdGhlIHByb3ZpZGVkIHtAbGluayBHcmFwaEJpbmFyeVJlYWRlcn0gaW5zdGFuY2UgdG8gcmVhZCB0aG9zZQorICogICAgIHR3byBkb3VibGUgdmFsdWVzLiBBcyB4IGFuZCB5IHZhbHVlcyBhcmUgZXhwZWN0ZWQgdG8gYmUgcHJvdmlkZWQgYXMgbm9uLW51bGxhYmxlIGRvdWJsZXMsIHRoZSBtZXRob2QKKyAqICAgICB7QGNvZGUgcmVhZFZhbHVlKCl9IHNob3VsZCBiZSB1c2VkOiB7QGNvZGUgcmVhZFZhbHVlKGJ1ZmZlciwgRG91YmxlLmNsYXNzLCBmYWxzZSl9CisgKiA8L3A+CisgKi8KK3B1YmxpYyBjbGFzcyBHcmFwaEJpbmFyeVJlYWRlciB7CisgICAgcHJpdmF0ZSBmaW5hbCBUeXBlU2VyaWFsaXplclJlZ2lzdHJ5IHJlZ2lzdHJ5OworCisgICAgcHVibGljIEdyYXBoQmluYXJ5UmVhZGVyKCkgeworICAgICAgICB0aGlzKFR5cGVTZXJpYWxpemVyUmVnaXN0cnkuSU5TVEFOQ0UpOworICAgIH0KKworICAgIHB1YmxpYyBHcmFwaEJpbmFyeVJlYWRlcihmaW5hbCBUeXBlU2VyaWFsaXplclJlZ2lzdHJ5IHJlZ2lzdHJ5KSB7CisgICAgICAgIHRoaXMucmVnaXN0cnkgPSByZWdpc3RyeTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZWFkcyBhIHZhbHVlIGZvciBhbiBzcGVjaWZpYyB0eXBlLgorICAgICAqCisgICAgICogPHA+V2hlbiB0aGUgdmFsdWUgaXMgbnVsbGFibGUsIHRoZSByZWFkZXIgZXhwZWN0cyB0aGUgPGNvZGU+e3ZhbHVlX2ZsYWd9e3ZhbHVlfTwvY29kZT4gdG8gYmUgY29udGFpbmVkIGluIHRoZQorICAgICAqIGJ1ZmZlci48L3A+CisgICAgICoKKyAgICAgKiA8cD5XaGVuIHRoZSB2YWx1ZSBpcyBub3QgbnVsbGFibGUsIHRoZSByZWFkZXIgZXhwZWN0cyBvbmx5IHRoZSA8Y29kZT57dmFsdWV9PC9jb2RlPiB0byBiZSBjb250YWluZWQgaW4gdGhlCisgICAgICogYnVmZmVyLjwvcD4KKyAgICAgKi8KKyAgICBwdWJsaWMgPFQ+IFQgcmVhZFZhbHVlKGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIENsYXNzPFQ+IHR5cGUsIGZpbmFsIGJvb2xlYW4gbnVsbGFibGUpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGlmIChidWZmZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiaW5wdXQgY2Fubm90IGJlIG51bGwuIik7CisgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJ0eXBlIGNhbm5vdCBiZSBudWxsLiIpOworICAgICAgICB9CisKKyAgICAgICAgZmluYWwgVHlwZVNlcmlhbGl6ZXI8VD4gc2VyaWFsaXplciA9IHJlZ2lzdHJ5LmdldFNlcmlhbGl6ZXIodHlwZSk7CisgICAgICAgIHJldHVybiBzZXJpYWxpemVyLnJlYWRWYWx1ZShidWZmZXIsIHRoaXMsIG51bGxhYmxlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZWFkcyB0aGUgdHlwZSBjb2RlLCBpbmZvcm1hdGlvbiBhbmQgdmFsdWUgb2YgYSBnaXZlbiBidWZmZXIgd2l0aCBmdWxseS1xdWFsaWZpZWQgZm9ybWF0LgorICAgICAqLworICAgIHB1YmxpYyA8VD4gVCByZWFkKGZpbmFsIEJ1ZmZlciBidWZmZXIpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIC8vIEZ1bGx5LXF1YWxpZmllZCBmb3JtYXQ6IHt0eXBlX2NvZGV9e3R5cGVfaW5mb317dmFsdWVfZmxhZ317dmFsdWV9CisgICAgICAgIGZpbmFsIERhdGFUeXBlIHR5cGUgPSBEYXRhVHlwZS5nZXQoQnl0ZS50b1Vuc2lnbmVkSW50KGJ1ZmZlci5yZWFkQnl0ZSgpKSk7CisKKyAgICAgICAgaWYgKHR5cGUgPT0gRGF0YVR5cGUuVU5TUEVDSUZJRURfTlVMTCkgeworICAgICAgICAgICAgLy8gVGhlcmUgaXMgbm8gVHlwZVNlcmlhbGl6ZXIgZm9yIHVuc3BlY2lmaWVkIG51bGwgb2JqZWN0CisgICAgICAgICAgICAvLyBSZWFkIHRoZSB2YWx1ZV9mbGFnIC0gKGZvbGRpbmcgdGhlIGJ1ZmZlci5yZWFkQnl0ZSgpIGludG8gdGhlIGFzc2VydCBkb2VzIG5vdCBhZHZhbmNlIHRoZSBpbmRleCBzbworICAgICAgICAgICAgLy8gYXNzaWduIHRvIGEgdmFyIGZpcnN0IGFuZCB0aGVuIGRvIGVxdWFsaXR5IG9uIHRoYXQgLSBsZWFybmVkIHRoYXQgdGhlIGhhcmQgd2F5CisgICAgICAgICAgICBmaW5hbCBieXRlIGNoZWNrID0gYnVmZmVyLnJlYWRCeXRlKCk7CisgICAgICAgICAgICBhc3NlcnQgY2hlY2sgPT0gMTsKKworICAgICAgICAgICAgLy8gSnVzdCByZXR1cm4gbnVsbAorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAgICBUeXBlU2VyaWFsaXplcjxUPiBzZXJpYWxpemVyOworICAgICAgICBpZiAodHlwZSAhPSBEYXRhVHlwZS5DVVNUT00pIHsKKyAgICAgICAgICAgIHNlcmlhbGl6ZXIgPSByZWdpc3RyeS5nZXRTZXJpYWxpemVyKHR5cGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZmluYWwgU3RyaW5nIGN1c3RvbVR5cGVOYW1lID0gdGhpcy5yZWFkVmFsdWUoYnVmZmVyLCBTdHJpbmcuY2xhc3MsIGZhbHNlKTsKKyAgICAgICAgICAgIHNlcmlhbGl6ZXIgPSByZWdpc3RyeS5nZXRTZXJpYWxpemVyRm9yQ3VzdG9tVHlwZShjdXN0b21UeXBlTmFtZSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gc2VyaWFsaXplci5yZWFkKGJ1ZmZlciwgdGhpcyk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L0dyYXBoQmluYXJ5V3JpdGVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvR3JhcGhCaW5hcnlXcml0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYjBiMDk0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L0dyYXBoQmluYXJ5V3JpdGVyLmphdmEKQEAgLTAsMCArMSwxMzggQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnk7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkudHlwZXMuQ3VzdG9tVHlwZVNlcmlhbGl6ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LnR5cGVzLlRyYW5zZm9ybVNlcmlhbGl6ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uQnVmZmVyOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKKworLyoqCisgKiBXcml0ZXMgYSB2YWx1ZSB0byBhIGJ1ZmZlciB1c2luZyB0aGUge0BsaW5rIFR5cGVTZXJpYWxpemVyfSBpbnN0YW5jZXMgY29uZmlndXJlZCBpbiB0aGUKKyAqIHtAbGluayBUeXBlU2VyaWFsaXplclJlZ2lzdHJ5fS4KKyAqCisgKiA8cD4KKyAqICAgICBUaGlzIGNsYXNzIGV4cG9zZXMgdHdvIGRpZmZlcmVudCBtZXRob2RzIHRvIHdyaXRlIGEgdmFsdWUgdG8gYSBidWZmZXI6CisgKiAgICAge0BsaW5rIEdyYXBoQmluYXJ5V3JpdGVyI3dyaXRlKE9iamVjdCwgQnVmZmVyKX0gYW5kCisgKiAgICAge0BsaW5rIEdyYXBoQmluYXJ5V3JpdGVyI3dyaXRlVmFsdWUoT2JqZWN0LCBCdWZmZXIsIGJvb2xlYW4pfToKKyAqICAgICA8dWw+CisgKiAgICAgICAgIDxsaT57QGNvZGUgd3JpdGUoKX0gbWV0aG9kIHdyaXRlcyB0aGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIHRoZQorICogICAgICAgICA8Y29kZT57dHlwZV9jb2RlfXt0eXBlX2luZm99e3ZhbHVlX2ZsYWd9e3ZhbHVlfTwvY29kZT4gY29tcG9uZW50cy48L2xpPgorICogICAgICAgICA8bGk+e0Bjb2RlIHdyaXRlVmFsdWUoKX0gbWV0aG9kIHdyaXRlcyB0aGUgPGNvZGU+e3ZhbHVlX2ZsYWd9e3ZhbHVlfTwvY29kZT4gd2hlbiBhIHZhbHVlIGlzIG51bGxhYmxlIGFuZAorICogICAgICAgICBvbmx5IDxjb2RlPnt2YWx1ZX08L2NvZGU+IHdoZW4gYSB2YWx1ZSBpcyBub3QgbnVsbGFibGUuCisgKiAgICAgICAgIDwvbGk+CisgKiAgICAgPC91bD4KKyAqIDwvcD4KKyAqLworcHVibGljIGNsYXNzIEdyYXBoQmluYXJ5V3JpdGVyIHsKKyAgICBwcml2YXRlIGZpbmFsIFR5cGVTZXJpYWxpemVyUmVnaXN0cnkgcmVnaXN0cnk7CisgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgYnl0ZSBWQUxVRV9GTEFHX05VTEwgPSAxOworICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGJ5dGUgVkFMVUVfRkxBR19OT05FID0gMDsKKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGJ5dGUgVkVSU0lPTl9CWVRFID0gKGJ5dGUpMHg4MTsKKyAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBieXRlW10gdW5zcGVjaWZpZWROdWxsQnl0ZXMgPSBuZXcgYnl0ZVtdIHsgRGF0YVR5cGUuVU5TUEVDSUZJRURfTlVMTC5nZXRDb2RlQnl0ZSgpLCAweDAxfTsKKyAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBieXRlW10gY3VzdG9tVHlwZUNvZGVCeXRlcyA9IG5ldyBieXRlW10geyBEYXRhVHlwZS5DVVNUT00uZ2V0Q29kZUJ5dGUoKSB9OworCisgICAgcHVibGljIEdyYXBoQmluYXJ5V3JpdGVyKCkgeworICAgICAgICB0aGlzKFR5cGVTZXJpYWxpemVyUmVnaXN0cnkuSU5TVEFOQ0UpOworICAgIH0KKworICAgIHB1YmxpYyBHcmFwaEJpbmFyeVdyaXRlcihmaW5hbCBUeXBlU2VyaWFsaXplclJlZ2lzdHJ5IHJlZ2lzdHJ5KSB7CisgICAgICAgIHRoaXMucmVnaXN0cnkgPSByZWdpc3RyeTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBXcml0ZXMgYSB2YWx1ZSB3aXRob3V0IGluY2x1ZGluZyB0eXBlIGluZm9ybWF0aW9uLgorICAgICAqLworICAgIHB1YmxpYyA8VD4gdm9pZCB3cml0ZVZhbHVlKGZpbmFsIFQgdmFsdWUsIGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIGJvb2xlYW4gbnVsbGFibGUpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7CisgICAgICAgICAgICBpZiAoIW51bGxhYmxlKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKCJVbmV4cGVjdGVkIG51bGwgdmFsdWUgd2hlbiBudWxsYWJsZSBpcyBmYWxzZSIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB3cml0ZVZhbHVlRmxhZ051bGwoYnVmZmVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGZpbmFsIENsYXNzPD8+IG9iamVjdENsYXNzID0gdmFsdWUuZ2V0Q2xhc3MoKTsKKworICAgICAgICBmaW5hbCBUeXBlU2VyaWFsaXplcjxUPiBzZXJpYWxpemVyID0gKFR5cGVTZXJpYWxpemVyPFQ+KSByZWdpc3RyeS5nZXRTZXJpYWxpemVyKG9iamVjdENsYXNzKTsKKyAgICAgICAgc2VyaWFsaXplci53cml0ZVZhbHVlKHZhbHVlLCBidWZmZXIsIHRoaXMsIG51bGxhYmxlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBXcml0ZXMgYW4gb2JqZWN0IGluIGZ1bGx5LXF1YWxpZmllZCBmb3JtYXQsIGNvbnRhaW5pbmcge3R5cGVfY29kZX17dHlwZV9pbmZvfXt2YWx1ZV9mbGFnfXt2YWx1ZX0uCisgICAgICovCisgICAgcHVibGljIDxUPiB2b2lkIHdyaXRlKGZpbmFsIFQgdmFsdWUsIGZpbmFsIEJ1ZmZlciBidWZmZXIpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7CisgICAgICAgICAgICAvLyByZXR1cm4gT2JqZWN0IG9mIHR5cGUgInVuc3BlY2lmaWVkIG9iamVjdCBudWxsIiB3aXRoIHRoZSB2YWx1ZSBmbGFnIHNldCB0byBudWxsLgorICAgICAgICAgICAgYnVmZmVyLndyaXRlQnl0ZXModW5zcGVjaWZpZWROdWxsQnl0ZXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZmluYWwgQ2xhc3M8Pz4gb2JqZWN0Q2xhc3MgPSB2YWx1ZS5nZXRDbGFzcygpOworICAgICAgICBmaW5hbCBUeXBlU2VyaWFsaXplcjxUPiBzZXJpYWxpemVyID0gKFR5cGVTZXJpYWxpemVyPFQ+KSByZWdpc3RyeS5nZXRTZXJpYWxpemVyKG9iamVjdENsYXNzKTsKKworICAgICAgICBpZiAoc2VyaWFsaXplciBpbnN0YW5jZW9mIEN1c3RvbVR5cGVTZXJpYWxpemVyKSB7CisgICAgICAgICAgICAvLyBJdCdzIGEgY3VzdG9tIHR5cGUKKyAgICAgICAgICAgIEN1c3RvbVR5cGVTZXJpYWxpemVyIGN1c3RvbVR5cGVTZXJpYWxpemVyID0gKEN1c3RvbVR5cGVTZXJpYWxpemVyKSBzZXJpYWxpemVyOworCisgICAgICAgICAgICBidWZmZXIud3JpdGVCeXRlcyhjdXN0b21UeXBlQ29kZUJ5dGVzKTsKKyAgICAgICAgICAgIHdyaXRlVmFsdWUoY3VzdG9tVHlwZVNlcmlhbGl6ZXIuZ2V0VHlwZU5hbWUoKSwgYnVmZmVyLCBmYWxzZSk7CisgICAgICAgICAgICBjdXN0b21UeXBlU2VyaWFsaXplci53cml0ZSh2YWx1ZSwgYnVmZmVyLCB0aGlzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzZXJpYWxpemVyIGluc3RhbmNlb2YgVHJhbnNmb3JtU2VyaWFsaXplcikgeworICAgICAgICAgICAgLy8gRm9yIGhpc3RvcmljYWwgcmVhc29ucywgdGhlcmUgYXJlIHR5cGVzIHRoYXQgbmVlZCB0byBiZSB0cmFuc2Zvcm1lZCBpbnRvIGFub3RoZXIgdHlwZQorICAgICAgICAgICAgLy8gYmVmb3JlIHNlcmlhbGl6YXRpb24sIGUuZy4sIE1hcC5FbnRyeQorICAgICAgICAgICAgVHJhbnNmb3JtU2VyaWFsaXplcjxUPiB0cmFuc2Zvcm1TZXJpYWxpemVyID0gKFRyYW5zZm9ybVNlcmlhbGl6ZXI8VD4pIHNlcmlhbGl6ZXI7CisgICAgICAgICAgICB3cml0ZSh0cmFuc2Zvcm1TZXJpYWxpemVyLnRyYW5zZm9ybSh2YWx1ZSksIGJ1ZmZlcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBUcnkgdG8gc2VyaWFsaXplIHRoZSB2YWx1ZSBiZWZvcmUgY3JlYXRpbmcgYSBuZXcgY29tcG9zaXRlIGJ1ZmZlcgorICAgICAgICBidWZmZXIud3JpdGVCeXRlcyhzZXJpYWxpemVyLmdldERhdGFUeXBlKCkuZ2V0RGF0YVR5cGVCdWZmZXIoKSk7CisgICAgICAgIHNlcmlhbGl6ZXIud3JpdGUodmFsdWUsIGJ1ZmZlciwgdGhpcyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVwcmVzZW50cyBhIG51bGwgdmFsdWUgb2YgYSBzcGVjaWZpYyB0eXBlLCB1c2VmdWwgd2hlbiB0aGUgcGFyZW50IHR5cGUgY29udGFpbnMgYSB0eXBlIHBhcmFtZXRlciB0aGF0IG11c3QgYmUKKyAgICAgKiBzcGVjaWZpZWQuCisgICAgICogPHA+Tm90ZSB0aGF0IGZvciBzaW1wbGUgdHlwZXMsIHRoZSBwcm92aWRlZCBpbmZvcm1hdGlvbiB3aWxsIGJlIDxjb2RlPm51bGw8L2NvZGU+LjwvcD4KKyAgICAgKi8KKyAgICBwdWJsaWMgPFQ+IHZvaWQgd3JpdGVGdWxseVF1YWxpZmllZE51bGwoZmluYWwgQ2xhc3M8VD4gb2JqZWN0Q2xhc3MsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIE9iamVjdCBpbmZvcm1hdGlvbikgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgVHlwZVNlcmlhbGl6ZXI8VD4gc2VyaWFsaXplciA9IHJlZ2lzdHJ5LmdldFNlcmlhbGl6ZXIob2JqZWN0Q2xhc3MpOworICAgICAgICBzZXJpYWxpemVyLndyaXRlKG51bGwsIGJ1ZmZlciwgdGhpcyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogV3JpdGVzIGEgc2luZ2xlIGJ5dGUgcmVwcmVzZW50aW5nIHRoZSBudWxsIHZhbHVlX2ZsYWcuCisgICAgICovCisgICAgcHVibGljIHZvaWQgd3JpdGVWYWx1ZUZsYWdOdWxsKEJ1ZmZlciBidWZmZXIpIHsKKyAgICAgICAgYnVmZmVyLndyaXRlQnl0ZShWQUxVRV9GTEFHX05VTEwpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFdyaXRlcyBhIHNpbmdsZSBieXRlIHdpdGggdmFsdWUgMCwgcmVwcmVzZW50aW5nIGFuIHVuc2V0IHZhbHVlX2ZsYWcuCisgICAgICovCisgICAgcHVibGljIHZvaWQgd3JpdGVWYWx1ZUZsYWdOb25lKEJ1ZmZlciBidWZmZXIpIHsKKyAgICAgICAgYnVmZmVyLndyaXRlQnl0ZShWQUxVRV9GTEFHX05PTkUpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS9UeXBlU2VyaWFsaXplci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L1R5cGVTZXJpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDkwZDI1MQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS9UeXBlU2VyaWFsaXplci5qYXZhCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnk7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5CdWZmZXI7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworCisvKioKKyAqIFJlcHJlc2VudHMgYSBzZXJpYWxpemVyIGZvciBhIGdpdmVuIHR5cGUuCisgKi8KK3B1YmxpYyBpbnRlcmZhY2UgVHlwZVNlcmlhbGl6ZXI8VD4geworCisgICAgLyoqCisgICAgICogR2V0cyB0aGUge0BsaW5rIERhdGFUeXBlfSB0aGF0IGlzIHJlcHJlc2VudGVkIGJ5IHRoZSBnaXZlbiB7QGxpbmsgVH0uCisgICAgICovCisgICAgRGF0YVR5cGUgZ2V0RGF0YVR5cGUoKTsKKworICAgIC8qKgorICAgICAqIFJlYWRzIHRoZSB0eXBlIGluZm9ybWF0aW9uIGFuZCB2YWx1ZSBmcm9tIHRoZSBidWZmZXIgYW5kIHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgVC4KKyAgICAgKi8KKyAgICBUIHJlYWQoZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlSZWFkZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uOworCisgICAgLyoqCisgICAgICogUmVhZHMgdGhlIHZhbHVlIGZyb20gdGhlIGJ1ZmZlciAobm90IHRoZSB0eXBlIGluZm9ybWF0aW9uKSBhbmQgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiBULgorICAgICAqIDxwPgorICAgICAqICAgICBJbXBsZW1lbnRvcnMgc2hvdWxkIHRocm93IGFuIGV4Y2VwdGlvbiB3aGVuIGEgY29tcGxleCB0eXBlIGRvZXNuJ3Qgc3VwcG9ydCByZWFkaW5nIHdpdGhvdXQgdGhlIHR5cGUKKyAgICAgKiAgICAgaW5mb3JtYXRpb24uCisgICAgICogPC9wPgorICAgICAqLworICAgIFQgcmVhZFZhbHVlKGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5UmVhZGVyIGNvbnRleHQsIGZpbmFsIGJvb2xlYW4gbnVsbGFibGUpIHRocm93cyBJT0V4Y2VwdGlvbjsKKworICAgIC8qKgorICAgICAqIFdyaXRlcyB0aGUgdHlwZSBjb2RlLCBpbmZvcm1hdGlvbiBhbmQgdmFsdWUgdG8gYSBidWZmZXIgdXNpbmcgdGhlIHByb3ZpZGVkIGFsbG9jYXRvci4KKyAgICAgKi8KKyAgICB2b2lkIHdyaXRlKGZpbmFsIFQgdmFsdWUsIGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5V3JpdGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbjsKKworICAgIC8qKgorICAgICAqIFdyaXRlcyB0aGUgdmFsdWUgdG8gYSBidWZmZXIsIGNvbXBvc2VkIGJ5IHRoZSB2YWx1ZSBmbGFnIGFuZCB0aGUgc2VxdWVuY2Ugb2YgYnl0ZXMuCisgICAgICovCisgICAgdm9pZCB3cml0ZVZhbHVlKGZpbmFsIFQgdmFsdWUsIGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5V3JpdGVyIGNvbnRleHQsIGZpbmFsIGJvb2xlYW4gbnVsbGFibGUpIHRocm93cyBJT0V4Y2VwdGlvbjsKK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS9UeXBlU2VyaWFsaXplclJlZ2lzdHJ5LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvVHlwZVNlcmlhbGl6ZXJSZWdpc3RyeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5YWVhYWYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvVHlwZVNlcmlhbGl6ZXJSZWdpc3RyeS5qYXZhCkBAIC0wLDAgKzEsMzk3IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5OworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LnR5cGVzLio7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5CeXRlY29kZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLk9wZXJhdG9yOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuT3JkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUGF0aDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlBvcDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlNhY2tGdW5jdGlvbnM7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5TY29wZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRleHRQOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsU3RyYXRlZ3k7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLlRyYXZlcnNhbE9wdGlvblBhcmVudDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5CdWxrU2V0OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLlRyZWU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLkFuZFA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLk1ldHJpY3M7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLk9yUDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuVHJhdmVyc2FsRXhwbGFuYXRpb247CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLlRyYXZlcnNhbE1ldHJpY3M7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuQ29sdW1uOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkRpcmVjdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5FZGdlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkdyYXBoOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlByb3BlcnR5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleFByb3BlcnR5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udXRpbC5mdW5jdGlvbi5MYW1iZGE7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEubGFuZy5yZWZsZWN0Lk1vZGlmaWVyOworaW1wb3J0IGphdmEubWF0aC5CaWdEZWNpbWFsOworaW1wb3J0IGphdmEubWF0aC5CaWdJbnRlZ2VyOworaW1wb3J0IGphdmEubmV0LkluZXQ0QWRkcmVzczsKK2ltcG9ydCBqYXZhLm5ldC5JbmV0NkFkZHJlc3M7CitpbXBvcnQgamF2YS5uZXQuSW5ldEFkZHJlc3M7CitpbXBvcnQgamF2YS5uaW8uQnl0ZUJ1ZmZlcjsKK2ltcG9ydCBqYXZhLnNxbC5UaW1lc3RhbXA7CitpbXBvcnQgamF2YS50aW1lLkR1cmF0aW9uOworaW1wb3J0IGphdmEudGltZS5JbnN0YW50OworaW1wb3J0IGphdmEudGltZS5Mb2NhbERhdGU7CitpbXBvcnQgamF2YS50aW1lLkxvY2FsRGF0ZVRpbWU7CitpbXBvcnQgamF2YS50aW1lLkxvY2FsVGltZTsKK2ltcG9ydCBqYXZhLnRpbWUuTW9udGhEYXk7CitpbXBvcnQgamF2YS50aW1lLk9mZnNldERhdGVUaW1lOworaW1wb3J0IGphdmEudGltZS5PZmZzZXRUaW1lOworaW1wb3J0IGphdmEudGltZS5QZXJpb2Q7CitpbXBvcnQgamF2YS50aW1lLlllYXI7CitpbXBvcnQgamF2YS50aW1lLlllYXJNb250aDsKK2ltcG9ydCBqYXZhLnRpbWUuWm9uZU9mZnNldDsKK2ltcG9ydCBqYXZhLnRpbWUuWm9uZWREYXRlVGltZTsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5IYXNoU2V0OworaW1wb3J0IGphdmEudXRpbC5MaW5rZWRIYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5MaW5rZWRMaXN0OworaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5NYXA7CitpbXBvcnQgamF2YS51dGlsLlNldDsKK2ltcG9ydCBqYXZhLnV0aWwuVVVJRDsKK2ltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5Db25jdXJyZW50SGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuZnVuY3Rpb24uRnVuY3Rpb247CisKK3B1YmxpYyBjbGFzcyBUeXBlU2VyaWFsaXplclJlZ2lzdHJ5IHsKKworICAgIHB1YmxpYyBzdGF0aWMgQnVpbGRlciBidWlsZCgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBCdWlsZGVyKCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgUmVnaXN0cnlFbnRyeVtdIGRlZmF1bHRFbnRyaWVzID0gbmV3IFJlZ2lzdHJ5RW50cnlbXSB7CisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KEludGVnZXIuY2xhc3MsIFNpbmdsZVR5cGVTZXJpYWxpemVyLkludFNlcmlhbGl6ZXIpLAorICAgICAgICAgICAgbmV3IFJlZ2lzdHJ5RW50cnk8PihMb25nLmNsYXNzLCBTaW5nbGVUeXBlU2VyaWFsaXplci5Mb25nU2VyaWFsaXplciksCisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KFN0cmluZy5jbGFzcywgbmV3IFN0cmluZ1NlcmlhbGl6ZXIoKSksCisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KERhdGUuY2xhc3MsIERhdGVTZXJpYWxpemVyLkRhdGVTZXJpYWxpemVyKSwKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oVGltZXN0YW1wLmNsYXNzLCBEYXRlU2VyaWFsaXplci5UaW1lc3RhbXBTZXJpYWxpemVyKSwKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oQ2xhc3MuY2xhc3MsIG5ldyBDbGFzc1NlcmlhbGl6ZXIoKSksCisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KERvdWJsZS5jbGFzcywgU2luZ2xlVHlwZVNlcmlhbGl6ZXIuRG91YmxlU2VyaWFsaXplciksCisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KEZsb2F0LmNsYXNzLCBTaW5nbGVUeXBlU2VyaWFsaXplci5GbG9hdFNlcmlhbGl6ZXIpLAorICAgICAgICAgICAgbmV3IFJlZ2lzdHJ5RW50cnk8PihMaXN0LmNsYXNzLCBuZXcgTGlzdFNlcmlhbGl6ZXIoKSksCisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KE1hcC5jbGFzcywgbmV3IE1hcFNlcmlhbGl6ZXIoKSksCisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KFNldC5jbGFzcywgbmV3IFNldFNlcmlhbGl6ZXIoKSksCisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KFVVSUQuY2xhc3MsIG5ldyBVVUlEU2VyaWFsaXplcigpKSwKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oRWRnZS5jbGFzcywgbmV3IEVkZ2VTZXJpYWxpemVyKCkpLAorICAgICAgICAgICAgbmV3IFJlZ2lzdHJ5RW50cnk8PihQYXRoLmNsYXNzLCBuZXcgUGF0aFNlcmlhbGl6ZXIoKSksCisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KFZlcnRleFByb3BlcnR5LmNsYXNzLCBuZXcgVmVydGV4UHJvcGVydHlTZXJpYWxpemVyKCkpLCAvLyBuZWVkcyB0byByZWdpc3RlciBiZWZvcmUgdGhlIGxlc3Mgc3BlY2lmaWMgUHJvcGVydHkKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oUHJvcGVydHkuY2xhc3MsIG5ldyBQcm9wZXJ0eVNlcmlhbGl6ZXIoKSksCisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KEdyYXBoLmNsYXNzLCBuZXcgR3JhcGhTZXJpYWxpemVyKCkpLAorICAgICAgICAgICAgbmV3IFJlZ2lzdHJ5RW50cnk8PihWZXJ0ZXguY2xhc3MsIG5ldyBWZXJ0ZXhTZXJpYWxpemVyKCkpLAorICAgICAgICAgICAgbmV3IFJlZ2lzdHJ5RW50cnk8PihTYWNrRnVuY3Rpb25zLkJhcnJpZXIuY2xhc3MsIEVudW1TZXJpYWxpemVyLkJhcnJpZXJTZXJpYWxpemVyKSwKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oQnl0ZWNvZGUuQmluZGluZy5jbGFzcywgbmV3IEJpbmRpbmdTZXJpYWxpemVyKCkpLAorICAgICAgICAgICAgbmV3IFJlZ2lzdHJ5RW50cnk8PihCeXRlY29kZS5jbGFzcywgbmV3IEJ5dGVDb2RlU2VyaWFsaXplcigpKSwKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oVmVydGV4UHJvcGVydHkuQ2FyZGluYWxpdHkuY2xhc3MsIEVudW1TZXJpYWxpemVyLkNhcmRpbmFsaXR5U2VyaWFsaXplciksCisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KENvbHVtbi5jbGFzcywgRW51bVNlcmlhbGl6ZXIuQ29sdW1uU2VyaWFsaXplciksCisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KERpcmVjdGlvbi5jbGFzcywgRW51bVNlcmlhbGl6ZXIuRGlyZWN0aW9uU2VyaWFsaXplciksCisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KE9wZXJhdG9yLmNsYXNzLCBFbnVtU2VyaWFsaXplci5PcGVyYXRvclNlcmlhbGl6ZXIpLAorICAgICAgICAgICAgbmV3IFJlZ2lzdHJ5RW50cnk8PihPcmRlci5jbGFzcywgRW51bVNlcmlhbGl6ZXIuT3JkZXJTZXJpYWxpemVyKSwKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oVHJhdmVyc2FsT3B0aW9uUGFyZW50LlBpY2suY2xhc3MsIEVudW1TZXJpYWxpemVyLlBpY2tTZXJpYWxpemVyKSwKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oUG9wLmNsYXNzLCBFbnVtU2VyaWFsaXplci5Qb3BTZXJpYWxpemVyKSwKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oTGFtYmRhLmNsYXNzLCBuZXcgTGFtYmRhU2VyaWFsaXplcigpKSwKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oUC5jbGFzcywgbmV3IFBTZXJpYWxpemVyPD4oRGF0YVR5cGUuUCwgUC5jbGFzcykpLAorICAgICAgICAgICAgbmV3IFJlZ2lzdHJ5RW50cnk8PihBbmRQLmNsYXNzLCBuZXcgUFNlcmlhbGl6ZXI8PihEYXRhVHlwZS5QLCBBbmRQLmNsYXNzKSksCisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KE9yUC5jbGFzcywgbmV3IFBTZXJpYWxpemVyPD4oRGF0YVR5cGUuUCwgT3JQLmNsYXNzKSksCisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KFRleHRQLmNsYXNzLCBuZXcgUFNlcmlhbGl6ZXI8PihEYXRhVHlwZS5URVhUUCwgVGV4dFAuY2xhc3MpKSwKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oU2NvcGUuY2xhc3MsIEVudW1TZXJpYWxpemVyLlNjb3BlU2VyaWFsaXplciksCisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KFQuY2xhc3MsIEVudW1TZXJpYWxpemVyLlRTZXJpYWxpemVyKSwKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oVHJhdmVyc2VyLmNsYXNzLCBuZXcgVHJhdmVyc2VyU2VyaWFsaXplcigpKSwKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oQmlnRGVjaW1hbC5jbGFzcywgbmV3IEJpZ0RlY2ltYWxTZXJpYWxpemVyKCkpLAorICAgICAgICAgICAgbmV3IFJlZ2lzdHJ5RW50cnk8PihCaWdJbnRlZ2VyLmNsYXNzLCBuZXcgQmlnSW50ZWdlclNlcmlhbGl6ZXIoKSksCisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KEJ5dGUuY2xhc3MsIFNpbmdsZVR5cGVTZXJpYWxpemVyLkJ5dGVTZXJpYWxpemVyKSwKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oQnl0ZUJ1ZmZlci5jbGFzcywgbmV3IEJ5dGVCdWZmZXJTZXJpYWxpemVyKCkpLAorICAgICAgICAgICAgbmV3IFJlZ2lzdHJ5RW50cnk8PihTaG9ydC5jbGFzcywgU2luZ2xlVHlwZVNlcmlhbGl6ZXIuU2hvcnRTZXJpYWxpemVyKSwKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oQm9vbGVhbi5jbGFzcywgU2luZ2xlVHlwZVNlcmlhbGl6ZXIuQm9vbGVhblNlcmlhbGl6ZXIpLAorICAgICAgICAgICAgbmV3IFJlZ2lzdHJ5RW50cnk8PihUcmF2ZXJzYWxTdHJhdGVneS5jbGFzcywgbmV3IFRyYXZlcnNhbFN0cmF0ZWd5U2VyaWFsaXplcigpKSwKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oQnVsa1NldC5jbGFzcywgbmV3IEJ1bGtTZXRTZXJpYWxpemVyKCkpLAorICAgICAgICAgICAgbmV3IFJlZ2lzdHJ5RW50cnk8PihUcmVlLmNsYXNzLCBuZXcgVHJlZVNlcmlhbGl6ZXIoKSksCisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KE1ldHJpY3MuY2xhc3MsIG5ldyBNZXRyaWNzU2VyaWFsaXplcigpKSwKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oVHJhdmVyc2FsTWV0cmljcy5jbGFzcywgbmV3IFRyYXZlcnNhbE1ldHJpY3NTZXJpYWxpemVyKCkpLAorCisgICAgICAgICAgICAvLyBUcmFuc2Zvcm1TZXJpYWxpemVyIGltcGxlbWVudGF0aW9ucworICAgICAgICAgICAgbmV3IFJlZ2lzdHJ5RW50cnk8PihNYXAuRW50cnkuY2xhc3MsIG5ldyBNYXBFbnRyeVNlcmlhbGl6ZXIoKSksCisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KFRyYXZlcnNhbEV4cGxhbmF0aW9uLmNsYXNzLCBuZXcgVHJhdmVyc2FsRXhwbGFuYXRpb25TZXJpYWxpemVyKCkpLAorCisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KENoYXJhY3Rlci5jbGFzcywgbmV3IENoYXJTZXJpYWxpemVyKCkpLAorICAgICAgICAgICAgbmV3IFJlZ2lzdHJ5RW50cnk8PihEdXJhdGlvbi5jbGFzcywgbmV3IER1cmF0aW9uU2VyaWFsaXplcigpKSwKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oSW5ldEFkZHJlc3MuY2xhc3MsIG5ldyBJbmV0QWRkcmVzc1NlcmlhbGl6ZXIoKSksCisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KEluZXQ0QWRkcmVzcy5jbGFzcywgbmV3IEluZXRBZGRyZXNzU2VyaWFsaXplcjw+KCkpLAorICAgICAgICAgICAgbmV3IFJlZ2lzdHJ5RW50cnk8PihJbmV0NkFkZHJlc3MuY2xhc3MsIG5ldyBJbmV0QWRkcmVzc1NlcmlhbGl6ZXI8PigpKSwKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oSW5zdGFudC5jbGFzcywgbmV3IEluc3RhbnRTZXJpYWxpemVyKCkpLAorICAgICAgICAgICAgbmV3IFJlZ2lzdHJ5RW50cnk8PihMb2NhbERhdGUuY2xhc3MsIG5ldyBMb2NhbERhdGVTZXJpYWxpemVyKCkpLAorICAgICAgICAgICAgbmV3IFJlZ2lzdHJ5RW50cnk8PihMb2NhbFRpbWUuY2xhc3MsIG5ldyBMb2NhbFRpbWVTZXJpYWxpemVyKCkpLAorICAgICAgICAgICAgbmV3IFJlZ2lzdHJ5RW50cnk8PihMb2NhbERhdGVUaW1lLmNsYXNzLCBuZXcgTG9jYWxEYXRlVGltZVNlcmlhbGl6ZXIoKSksCisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KE1vbnRoRGF5LmNsYXNzLCBuZXcgTW9udGhEYXlTZXJpYWxpemVyKCkpLAorICAgICAgICAgICAgbmV3IFJlZ2lzdHJ5RW50cnk8PihPZmZzZXREYXRlVGltZS5jbGFzcywgbmV3IE9mZnNldERhdGVUaW1lU2VyaWFsaXplcigpKSwKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oT2Zmc2V0VGltZS5jbGFzcywgbmV3IE9mZnNldFRpbWVTZXJpYWxpemVyKCkpLAorICAgICAgICAgICAgbmV3IFJlZ2lzdHJ5RW50cnk8PihQZXJpb2QuY2xhc3MsIG5ldyBQZXJpb2RTZXJpYWxpemVyKCkpLAorICAgICAgICAgICAgbmV3IFJlZ2lzdHJ5RW50cnk8PihZZWFyLmNsYXNzLCBTaW5nbGVUeXBlU2VyaWFsaXplci5ZZWFyU2VyaWFsaXplciksCisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KFllYXJNb250aC5jbGFzcywgbmV3IFllYXJNb250aFNlcmlhbGl6ZXIoKSksCisgICAgICAgICAgICBuZXcgUmVnaXN0cnlFbnRyeTw+KFpvbmVkRGF0ZVRpbWUuY2xhc3MsIG5ldyBab25lZERhdGVUaW1lU2VyaWFsaXplcigpKSwKKyAgICAgICAgICAgIG5ldyBSZWdpc3RyeUVudHJ5PD4oWm9uZU9mZnNldC5jbGFzcywgbmV3IFpvbmVPZmZzZXRTZXJpYWxpemVyKCkpCisKKyAgICB9OworCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBUeXBlU2VyaWFsaXplclJlZ2lzdHJ5IElOU1RBTkNFID0gYnVpbGQoKS5jcmVhdGUoKTsKKworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgQnVpbGRlciB7CisgICAgICAgIHByaXZhdGUgZmluYWwgTGlzdDxSZWdpc3RyeUVudHJ5PiBsaXN0ID0gbmV3IExpbmtlZExpc3Q8PigpOworICAgICAgICBwcml2YXRlIEZ1bmN0aW9uPENsYXNzPD8+LCBUeXBlU2VyaWFsaXplcjw/Pj4gZmFsbGJhY2tSZXNvbHZlcjsKKworICAgICAgICAvKioKKyAgICAgICAgICogQWRkcyBhIHNlcmlhbGl6ZXIgZm9yIGEgYnVpbHQtaW4gdHlwZS4KKyAgICAgICAgICogPHA+CisgICAgICAgICAqICAgICBOb3RlIHRoYXQgd2hlbiBwcm92aWRpbmcgYSBzZXJpYWxpemVyIGZvciBhbiBJbnRlcmZhY2UgKHtAbGluayBWZXJ0ZXhQcm9wZXJ0eX0sIHtAbGluayBQcm9wZXJ0eX0sCisgICAgICAgICAqICAgICB7QGxpbmsgVmVydGV4fSwgLi4uKSwgdGhlIHNlcmlhbGl6ZXIgcmVzb2x1dGlvbiBmcm9tIHRoZSByZWdpc3RyeSB3aWxsIGJlIGRlZmluZWQgYnkgdGhlIG9yZGVyIHRoYXQKKyAgICAgICAgICogICAgIGl0IHdhcyBwcm92aWRlZC4gSW4gdGhpcyBjYXNlLCB5b3Ugc2hvdWxkIHByb3ZpZGUgdGhlIHR5cGUgc2VyaWFsaXplciBzdGFydGluZyBmcm9tIG1vc3Qgc3BlY2lmaWMgdG8KKyAgICAgICAgICogICAgIGxlc3Mgc3BlY2lmaWMgb3IgdG8gcHV0IGl0IGluIG90aGVyIHdvcmRzLCBzdGFydCBmcm9tIGRlcml2ZWQgdHlwZXMgYW5kIHRoZW4gcGFyZW50IHR5cGVzLCBlLmcuLAorICAgICAgICAgKiAgICAge0BsaW5rIFZlcnRleFByb3BlcnR5fSBiZWZvcmUge0BsaW5rIFByb3BlcnR5fS4KKyAgICAgICAgICogPC9wPgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIDxEVD4gQnVpbGRlciBhZGQoZmluYWwgQ2xhc3M8RFQ+IHR5cGUsIGZpbmFsIFR5cGVTZXJpYWxpemVyPERUPiBzZXJpYWxpemVyKSB7CisgICAgICAgICAgICBpZiAoc2VyaWFsaXplci5nZXREYXRhVHlwZSgpID09IERhdGFUeXBlLkNVU1RPTSkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkRhdGFUeXBlIGNhbiBub3QgYmUgQ1VTVE9NLCB1c2UgYWRkQ3VzdG9tVHlwZSgpIG1ldGhvZCBpbnN0ZWFkIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChzZXJpYWxpemVyLmdldERhdGFUeXBlKCkgPT0gRGF0YVR5cGUuVU5TUEVDSUZJRURfTlVMTCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkFkZGluZyBhIHNlcmlhbGl6ZXIgZm9yIGEgVU5TUEVDSUZJRURfTlVMTCBpcyBub3QgcGVybWl0dGVkIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChzZXJpYWxpemVyIGluc3RhbmNlb2YgQ3VzdG9tVHlwZVNlcmlhbGl6ZXIpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgIkN1c3RvbVR5cGVTZXJpYWxpemVyIGltcGxlbWVudGF0aW9ucyBhcmUgcmVzZXJ2ZWQgZm9yIGN1c3RvbXR5cGVzIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGxpc3QuYWRkKG5ldyBSZWdpc3RyeUVudHJ5PD4odHlwZSwgc2VyaWFsaXplcikpOworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogQWRkcyBhIHNlcmlhbGl6ZXIgZm9yIGEgY3VzdG9tIHR5cGUuCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgPERUPiBCdWlsZGVyIGFkZEN1c3RvbVR5cGUoZmluYWwgQ2xhc3M8RFQ+IHR5cGUsIGZpbmFsIEN1c3RvbVR5cGVTZXJpYWxpemVyPERUPiBzZXJpYWxpemVyKSB7CisgICAgICAgICAgICBpZiAoc2VyaWFsaXplciA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJzZXJpYWxpemVyIGNhbiBub3QgYmUgbnVsbCIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoc2VyaWFsaXplci5nZXREYXRhVHlwZSgpICE9IERhdGFUeXBlLkNVU1RPTSkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkN1c3RvbSBzZXJpYWxpemVyIG11c3QgdXNlIENVU1RPTSBkYXRhIHR5cGUiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHNlcmlhbGl6ZXIuZ2V0VHlwZU5hbWUoKSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJzZXJpYWxpemVyIGN1c3RvbSB0eXBlIG5hbWUgY2FuIG5vdCBiZSBudWxsIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGxpc3QuYWRkKG5ldyBSZWdpc3RyeUVudHJ5PD4odHlwZSwgc2VyaWFsaXplcikpOworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogUHJvdmlkZXMgYSB3YXkgdG8gcmVzb2x2ZSB0aGUgdHlwZSBzZXJpYWxpemVyIHRvIHVzZSB3aGVuIHRoZXJlIGlzbid0IGFueSBkaXJlY3QgbWF0Y2guCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgQnVpbGRlciB3aXRoRmFsbGJhY2tSZXNvbHZlcihGdW5jdGlvbjxDbGFzczw/PiwgVHlwZVNlcmlhbGl6ZXI8Pz4+IGZhbGxiYWNrUmVzb2x2ZXIpIHsKKyAgICAgICAgICAgIHRoaXMuZmFsbGJhY2tSZXNvbHZlciA9IGZhbGxiYWNrUmVzb2x2ZXI7CisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBDcmVhdGVzIGEgbmV3IHtAbGluayBUeXBlU2VyaWFsaXplclJlZ2lzdHJ5fSBpbnN0YW5jZSBiYXNlZCBvbiB0aGUgc2VyaWFsaXplcnMgYWRkZWQuCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgVHlwZVNlcmlhbGl6ZXJSZWdpc3RyeSBjcmVhdGUoKSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IFR5cGVTZXJpYWxpemVyUmVnaXN0cnkobGlzdCwgZmFsbGJhY2tSZXNvbHZlcik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBSZWdpc3RyeUVudHJ5PERUPiB7CisgICAgICAgIHByaXZhdGUgZmluYWwgQ2xhc3M8RFQ+IHR5cGU7CisgICAgICAgIHByaXZhdGUgZmluYWwgVHlwZVNlcmlhbGl6ZXI8RFQ+IHR5cGVTZXJpYWxpemVyOworCisgICAgICAgIHByaXZhdGUgUmVnaXN0cnlFbnRyeShDbGFzczxEVD4gdHlwZSwgVHlwZVNlcmlhbGl6ZXI8RFQ+IHR5cGVTZXJpYWxpemVyKSB7CisgICAgICAgICAgICB0aGlzLnR5cGUgPSB0eXBlOworICAgICAgICAgICAgdGhpcy50eXBlU2VyaWFsaXplciA9IHR5cGVTZXJpYWxpemVyOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIENsYXNzPERUPiBnZXRUeXBlKCkgeworICAgICAgICAgICAgcmV0dXJuIHR5cGU7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgRGF0YVR5cGUgZ2V0RGF0YVR5cGUoKSB7CisgICAgICAgICAgICByZXR1cm4gdHlwZVNlcmlhbGl6ZXIuZ2V0RGF0YVR5cGUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0Q3VzdG9tVHlwZU5hbWUoKSB7CisgICAgICAgICAgICBpZiAoZ2V0RGF0YVR5cGUoKSAhPSBEYXRhVHlwZS5DVVNUT00pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZmluYWwgQ3VzdG9tVHlwZVNlcmlhbGl6ZXIgY3VzdG9tVHlwZVNlcmlhbGl6ZXIgPSAoQ3VzdG9tVHlwZVNlcmlhbGl6ZXIpIHR5cGVTZXJpYWxpemVyOworICAgICAgICAgICAgcmV0dXJuIGN1c3RvbVR5cGVTZXJpYWxpemVyLmdldFR5cGVOYW1lKCk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgVHlwZVNlcmlhbGl6ZXI8RFQ+IGdldFR5cGVTZXJpYWxpemVyKCkgeworICAgICAgICAgICAgcmV0dXJuIHR5cGVTZXJpYWxpemVyOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBmaW5hbCBNYXA8Q2xhc3M8Pz4sIFR5cGVTZXJpYWxpemVyPD8+PiBzZXJpYWxpemVycyA9IG5ldyBIYXNoTWFwPD4oKTsKKyAgICBwcml2YXRlIGZpbmFsIE1hcDxDbGFzczw/PiwgVHlwZVNlcmlhbGl6ZXI8Pz4+IHNlcmlhbGl6ZXJzQnlJbnRlcmZhY2UgPSBuZXcgTGlua2VkSGFzaE1hcDw+KCk7CisgICAgcHJpdmF0ZSBmaW5hbCBNYXA8RGF0YVR5cGUsIFR5cGVTZXJpYWxpemVyPD8+PiBzZXJpYWxpemVyc0J5RGF0YVR5cGUgPSBuZXcgSGFzaE1hcDw+KCk7CisgICAgcHJpdmF0ZSBmaW5hbCBNYXA8U3RyaW5nLCBDdXN0b21UeXBlU2VyaWFsaXplcj4gc2VyaWFsaXplcnNCeUN1c3RvbVR5cGVOYW1lID0gbmV3IEhhc2hNYXA8PigpOworICAgIHByaXZhdGUgRnVuY3Rpb248Q2xhc3M8Pz4sIFR5cGVTZXJpYWxpemVyPD8+PiBmYWxsYmFja1Jlc29sdmVyOworCisgICAgLyoqCisgICAgICogU3RvcmVzIHNlcmlhbGl6ZXJzIGJ5IGNsYXNzLCB3aGVyZSB0aGUgY2xhc3MgcmVzb2x1dGlvbiBpbnZvbHZlZCBhIGxvb2t1cCBvciBzcGVjaWFsIGNvbmRpdGlvbnMuCisgICAgICogVGhpcyBpcyB1c2VkIGZvciBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb25zIGFuZCBlbnVtcy4KKyAgICAgKi8KKyAgICBwcml2YXRlIGZpbmFsIENvbmN1cnJlbnRIYXNoTWFwPENsYXNzPD8+LCBUeXBlU2VyaWFsaXplcjw/Pj4gc2VyaWFsaXplcnNCeUltcGxlbWVudGF0aW9uID0gbmV3IENvbmN1cnJlbnRIYXNoTWFwPD4oKTsKKworICAgIHByaXZhdGUgVHlwZVNlcmlhbGl6ZXJSZWdpc3RyeShmaW5hbCBDb2xsZWN0aW9uPFJlZ2lzdHJ5RW50cnk+IGVudHJpZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIEZ1bmN0aW9uPENsYXNzPD8+LCBUeXBlU2VyaWFsaXplcjw/Pj4gZmFsbGJhY2tSZXNvbHZlcikgeworICAgICAgICBmaW5hbCBTZXQ8Q2xhc3M+IHByb3ZpZGVkVHlwZXMgPSBuZXcgSGFzaFNldDw+KGVudHJpZXMuc2l6ZSgpKTsKKworICAgICAgICAvLyBJbmNsdWRlIHVzZXItcHJvdmlkZWQgZW50cmllcyBmaXJzdAorICAgICAgICBmb3IgKFJlZ2lzdHJ5RW50cnkgZW50cnkgOiBlbnRyaWVzKSB7CisgICAgICAgICAgICBwdXQoZW50cnkpOworICAgICAgICAgICAgcHJvdmlkZWRUeXBlcy5hZGQoZW50cnkudHlwZSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBGb2xsb3dlZCBieSB0aGUgZGVmYXVsdHMKKyAgICAgICAgQXJyYXlzLnN0cmVhbShkZWZhdWx0RW50cmllcykuZmlsdGVyKGUgLT4gIXByb3ZpZGVkVHlwZXMuY29udGFpbnMoZS50eXBlKSkuZm9yRWFjaCh0aGlzOjpwdXQpOworCisgICAgICAgIHRoaXMuZmFsbGJhY2tSZXNvbHZlciA9IGZhbGxiYWNrUmVzb2x2ZXI7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHB1dChmaW5hbCBSZWdpc3RyeUVudHJ5IGVudHJ5KSB7CisgICAgICAgIGZpbmFsIENsYXNzIHR5cGUgPSBlbnRyeS5nZXRUeXBlKCk7CisgICAgICAgIGZpbmFsIFR5cGVTZXJpYWxpemVyIHNlcmlhbGl6ZXIgPSBlbnRyeS5nZXRUeXBlU2VyaWFsaXplcigpOworCisgICAgICAgIGlmICh0eXBlID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigiVHlwZSBjYW4gbm90IGJlIG51bGwiKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzZXJpYWxpemVyID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigiU2VyaWFsaXplciBpbnN0YW5jZSBjYW4gbm90IGJlIG51bGwiKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzZXJpYWxpemVyLmdldERhdGFUeXBlKCkgPT0gbnVsbCAmJiAhKHNlcmlhbGl6ZXIgaW5zdGFuY2VvZiBUcmFuc2Zvcm1TZXJpYWxpemVyKSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJTZXJpYWxpemVyIGRhdGEgdHlwZSBjYW4gbm90IGJlIG51bGwiKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdHlwZS5pc0ludGVyZmFjZSgpICYmICFNb2RpZmllci5pc0Fic3RyYWN0KHR5cGUuZ2V0TW9kaWZpZXJzKCkpKSB7CisgICAgICAgICAgICAvLyBEaXJlY3QgY2xhc3MgbWF0Y2gKKyAgICAgICAgICAgIHNlcmlhbGl6ZXJzLnB1dCh0eXBlLCBzZXJpYWxpemVyKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIEludGVyZmFjZSBvciBhYnN0cmFjdCBjbGFzcyBjYW4gYmUgYXNzaWduZWQgYnkgcHJvdmlkZWQgdHlwZQorICAgICAgICAgICAgc2VyaWFsaXplcnNCeUludGVyZmFjZS5wdXQodHlwZSwgc2VyaWFsaXplcik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc2VyaWFsaXplci5nZXREYXRhVHlwZSgpID09IERhdGFUeXBlLkNVU1RPTSkgeworICAgICAgICAgICAgc2VyaWFsaXplcnNCeUN1c3RvbVR5cGVOYW1lLnB1dChlbnRyeS5nZXRDdXN0b21UeXBlTmFtZSgpLCAoQ3VzdG9tVHlwZVNlcmlhbGl6ZXIpIHNlcmlhbGl6ZXIpOworICAgICAgICB9IGVsc2UgaWYgKHNlcmlhbGl6ZXIuZ2V0RGF0YVR5cGUoKSAhPSBudWxsKSB7CisgICAgICAgICAgICBzZXJpYWxpemVyc0J5RGF0YVR5cGUucHV0KHNlcmlhbGl6ZXIuZ2V0RGF0YVR5cGUoKSwgc2VyaWFsaXplcik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgPERUPiBUeXBlU2VyaWFsaXplcjxEVD4gZ2V0U2VyaWFsaXplcihmaW5hbCBDbGFzczxEVD4gdHlwZSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgVHlwZVNlcmlhbGl6ZXI8Pz4gc2VyaWFsaXplciA9IHNlcmlhbGl6ZXJzLmdldCh0eXBlKTsKKworICAgICAgICBpZiAobnVsbCA9PSBzZXJpYWxpemVyKSB7CisgICAgICAgICAgICAvLyBUcnkgdG8gb2J0YWluIHRoZSBzZXJpYWxpemVyIGJ5IHRoZSB0eXBlIGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbiBvciBzdXBlcmNsYXNzLAorICAgICAgICAgICAgLy8gd2hlbiBwcmV2aW91c2x5IGFjY2Vzc2VkLgorICAgICAgICAgICAgc2VyaWFsaXplciA9IHNlcmlhbGl6ZXJzQnlJbXBsZW1lbnRhdGlvbi5nZXQodHlwZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc2VyaWFsaXplciAhPSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gKFR5cGVTZXJpYWxpemVyKSBzZXJpYWxpemVyOworICAgICAgICB9CisKKyAgICAgICAgLy8gVXNlIGRpZmZlcmVudCBsb29rdXAgdGVjaG5pcXVlcyBhbmQgY2FjaGUgdGhlIGxvb2t1cCByZXN1bHQgd2hlbiBzdWNjZXNzZnVsCisKKyAgICAgICAgaWYgKEVudW0uY2xhc3MuaXNBc3NpZ25hYmxlRnJvbSh0eXBlKSkgeworICAgICAgICAgICAgLy8gbWF5YmUgaXQncyBhIGVudW0gLSBlbnVtcyB3aXRoIGJvZGllcyBhcmUgd2VpcmQgaW4gamF2YSwgdGhleSBhcmUgc3ViY2xhc3NlcyBvZiB0aGVtc2VsdmVzLCBzbworICAgICAgICAgICAgLy8gQ29sdW1ucy52YWx1ZXMgd2lsbCBiZSBvZiB0eXBlIENvbHVtbiQyLgorICAgICAgICAgICAgc2VyaWFsaXplciA9IHNlcmlhbGl6ZXJzLmdldCh0eXBlLmdldFN1cGVyY2xhc3MoKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobnVsbCA9PSBzZXJpYWxpemVyKSB7CisgICAgICAgICAgICAvLyBMb29rdXAgYnkgaW50ZXJmYWNlCisgICAgICAgICAgICBmb3IgKE1hcC5FbnRyeTxDbGFzczw/PiwgVHlwZVNlcmlhbGl6ZXI8Pz4+IGVudHJ5IDogc2VyaWFsaXplcnNCeUludGVyZmFjZS5lbnRyeVNldCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGVudHJ5LmdldEtleSgpLmlzQXNzaWduYWJsZUZyb20odHlwZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgc2VyaWFsaXplciA9IGVudHJ5LmdldFZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChudWxsID09IHNlcmlhbGl6ZXIgJiYgZmFsbGJhY2tSZXNvbHZlciAhPSBudWxsKSB7CisgICAgICAgICAgICBzZXJpYWxpemVyID0gZmFsbGJhY2tSZXNvbHZlci5hcHBseSh0eXBlKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhbGlkYXRlSW5zdGFuY2Uoc2VyaWFsaXplciwgdHlwZS5nZXRUeXBlTmFtZSgpKTsKKworICAgICAgICAvLyBTdG9yZSB0aGUgbG9va3VwIG1hdGNoIHRvIGF2b2lkIGxvb2tpbmcgaXQgdXAgaW4gdGhlIGZ1dHVyZQorICAgICAgICBzZXJpYWxpemVyc0J5SW1wbGVtZW50YXRpb24ucHV0KHR5cGUsIHNlcmlhbGl6ZXIpOworCisgICAgICAgIHJldHVybiAoVHlwZVNlcmlhbGl6ZXI8RFQ+KSBzZXJpYWxpemVyOworICAgIH0KKworICAgIHB1YmxpYyA8RFQ+IFR5cGVTZXJpYWxpemVyPERUPiBnZXRTZXJpYWxpemVyKGZpbmFsIERhdGFUeXBlIGRhdGFUeXBlKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBpZiAoZGF0YVR5cGUgPT0gRGF0YVR5cGUuQ1VTVE9NKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJDdXN0b20gdHlwZSBzZXJpYWxpemVycyBjYW4gbm90IGJlIHJldHJpZXZlZCB1c2luZyB0aGlzIG1ldGhvZCIpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlSW5zdGFuY2Uoc2VyaWFsaXplcnNCeURhdGFUeXBlLmdldChkYXRhVHlwZSksIGRhdGFUeXBlLnRvU3RyaW5nKCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIHNlcmlhbGl6ZXIgZm9yIGEgZ2l2ZW4gY3VzdG9tIHR5cGUgbmFtZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgPERUPiBDdXN0b21UeXBlU2VyaWFsaXplcjxEVD4gZ2V0U2VyaWFsaXplckZvckN1c3RvbVR5cGUoZmluYWwgU3RyaW5nIG5hbWUpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIEN1c3RvbVR5cGVTZXJpYWxpemVyIHNlcmlhbGl6ZXIgPSBzZXJpYWxpemVyc0J5Q3VzdG9tVHlwZU5hbWUuZ2V0KG5hbWUpOworCisgICAgICAgIGlmIChzZXJpYWxpemVyID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbihTdHJpbmcuZm9ybWF0KCJTZXJpYWxpemVyIGZvciBjdXN0b20gdHlwZSAnJXMnIG5vdCBmb3VuZCIsIG5hbWUpKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBzZXJpYWxpemVyOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIFR5cGVTZXJpYWxpemVyIHZhbGlkYXRlSW5zdGFuY2UoZmluYWwgVHlwZVNlcmlhbGl6ZXIgc2VyaWFsaXplciwgZmluYWwgU3RyaW5nIHR5cGVOYW1lKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBpZiAoc2VyaWFsaXplciA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSU9FeGNlcHRpb24oU3RyaW5nLmZvcm1hdCgiU2VyaWFsaXplciBmb3IgdHlwZSAlcyBub3QgZm91bmQiLCB0eXBlTmFtZSkpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZXI7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0JpZ0RlY2ltYWxTZXJpYWxpemVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvQmlnRGVjaW1hbFNlcmlhbGl6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDhhZGQxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0JpZ0RlY2ltYWxTZXJpYWxpemVyLmphdmEKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS50eXBlczsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5EYXRhVHlwZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlSZWFkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5V3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlcjsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5tYXRoLkJpZ0RlY2ltYWw7CitpbXBvcnQgamF2YS5tYXRoLkJpZ0ludGVnZXI7CisKKy8qKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgY2xhc3MgQmlnRGVjaW1hbFNlcmlhbGl6ZXIgZXh0ZW5kcyBTaW1wbGVUeXBlU2VyaWFsaXplcjxCaWdEZWNpbWFsPiB7CisgICAgcHVibGljIEJpZ0RlY2ltYWxTZXJpYWxpemVyKCkgeworICAgICAgICBzdXBlcihEYXRhVHlwZS5CSUdERUNJTUFMKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgQmlnRGVjaW1hbCByZWFkVmFsdWUoZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlSZWFkZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgaW50IHNjYWxlID0gY29udGV4dC5yZWFkVmFsdWUoYnVmZmVyLCBJbnRlZ2VyLmNsYXNzLCBmYWxzZSk7CisgICAgICAgIGZpbmFsIEJpZ0ludGVnZXIgdW5zY2FsZWQgPSBjb250ZXh0LnJlYWRWYWx1ZShidWZmZXIsIEJpZ0ludGVnZXIuY2xhc3MsIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIG5ldyBCaWdEZWNpbWFsKHVuc2NhbGVkLCBzY2FsZSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGVWYWx1ZShmaW5hbCBCaWdEZWNpbWFsIHZhbHVlLCBmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVdyaXRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBjb250ZXh0LndyaXRlVmFsdWUodmFsdWUuc2NhbGUoKSwgYnVmZmVyLCBmYWxzZSk7CisgICAgICAgIGNvbnRleHQud3JpdGVWYWx1ZSh2YWx1ZS51bnNjYWxlZFZhbHVlKCksIGJ1ZmZlciwgZmFsc2UpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9CaWdJbnRlZ2VyU2VyaWFsaXplci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0JpZ0ludGVnZXJTZXJpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWI4NzdjNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9CaWdJbnRlZ2VyU2VyaWFsaXplci5qYXZhCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkudHlwZXM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuRGF0YVR5cGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5UmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVdyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5CdWZmZXI7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEubWF0aC5CaWdJbnRlZ2VyOworCisvKioKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqLworcHVibGljIGNsYXNzIEJpZ0ludGVnZXJTZXJpYWxpemVyIGV4dGVuZHMgU2ltcGxlVHlwZVNlcmlhbGl6ZXI8QmlnSW50ZWdlcj4geworCisgICAgcHVibGljIEJpZ0ludGVnZXJTZXJpYWxpemVyKCl7CisgICAgICAgIHN1cGVyKERhdGFUeXBlLkJJR0lOVEVHRVIpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCBCaWdJbnRlZ2VyIHJlYWRWYWx1ZShmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVJlYWRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBmaW5hbCBieXRlW10gYmlnSW50Qnl0ZXMgPSBuZXcgYnl0ZVtidWZmZXIucmVhZEludCgpXTsKKyAgICAgICAgYnVmZmVyLnJlYWRCeXRlcyhiaWdJbnRCeXRlcyk7CisgICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihiaWdJbnRCeXRlcyk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGVWYWx1ZShmaW5hbCBCaWdJbnRlZ2VyIHZhbHVlLCBmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVdyaXRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBmaW5hbCBieXRlW10gdHdvc0NvbXBsZW1lbnQgPSB2YWx1ZS50b0J5dGVBcnJheSgpOworICAgICAgICBidWZmZXIud3JpdGVJbnQodHdvc0NvbXBsZW1lbnQubGVuZ3RoKS53cml0ZUJ5dGVzKHR3b3NDb21wbGVtZW50KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvQmluZGluZ1NlcmlhbGl6ZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9CaW5kaW5nU2VyaWFsaXplci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExNTgzNTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvQmluZGluZ1NlcmlhbGl6ZXIuamF2YQpAQCAtMCwwICsxLDQ5IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LnR5cGVzOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkRhdGFUeXBlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlXcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5CeXRlY29kZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5CdWZmZXI7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworCisvKioKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqLworcHVibGljIGNsYXNzIEJpbmRpbmdTZXJpYWxpemVyIGV4dGVuZHMgU2ltcGxlVHlwZVNlcmlhbGl6ZXI8Qnl0ZWNvZGUuQmluZGluZz4geworCisgICAgcHVibGljIEJpbmRpbmdTZXJpYWxpemVyKCkgeworICAgICAgICBzdXBlcihEYXRhVHlwZS5CSU5ESU5HKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgQnl0ZWNvZGUuQmluZGluZyByZWFkVmFsdWUoZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlSZWFkZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgU3RyaW5nIGsgPSBjb250ZXh0LnJlYWRWYWx1ZShidWZmZXIsIFN0cmluZy5jbGFzcywgZmFsc2UpOworICAgICAgICByZXR1cm4gbmV3IEJ5dGVjb2RlLkJpbmRpbmc8PihrLCBjb250ZXh0LnJlYWQoYnVmZmVyKSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGVWYWx1ZShmaW5hbCBCeXRlY29kZS5CaW5kaW5nIHZhbHVlLCBmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVdyaXRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBjb250ZXh0LndyaXRlVmFsdWUodmFsdWUudmFyaWFibGUoKSwgYnVmZmVyLCBmYWxzZSk7CisgICAgICAgIGNvbnRleHQud3JpdGUodmFsdWUudmFsdWUoKSwgYnVmZmVyKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvQnVsa1NldFNlcmlhbGl6ZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9CdWxrU2V0U2VyaWFsaXplci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4MTFmNzMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvQnVsa1NldFNlcmlhbGl6ZXIuamF2YQpAQCAtMCwwICsxLDYwIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LnR5cGVzOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkRhdGFUeXBlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlXcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuQnVsa1NldDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5CdWZmZXI7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEudXRpbC5NYXA7CisKKy8qKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgY2xhc3MgQnVsa1NldFNlcmlhbGl6ZXIgZXh0ZW5kcyBTaW1wbGVUeXBlU2VyaWFsaXplcjxCdWxrU2V0PiB7CisgICAgcHVibGljIEJ1bGtTZXRTZXJpYWxpemVyKCkgeworICAgICAgICBzdXBlcihEYXRhVHlwZS5CVUxLU0VUKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgQnVsa1NldCByZWFkVmFsdWUoZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlSZWFkZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgaW50IGxlbmd0aCA9IGJ1ZmZlci5yZWFkSW50KCk7CisKKyAgICAgICAgZmluYWwgQnVsa1NldCByZXN1bHQgPSBuZXcgQnVsa1NldCgpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICByZXN1bHQuYWRkKGNvbnRleHQucmVhZChidWZmZXIpLCBidWZmZXIucmVhZExvbmcoKSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIHdyaXRlVmFsdWUoZmluYWwgQnVsa1NldCB2YWx1ZSwgZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlXcml0ZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgTWFwPE9iamVjdCxMb25nPiByYXcgPSB2YWx1ZS5hc0J1bGsoKTsKKyAgICAgICAgYnVmZmVyLndyaXRlSW50KHJhdy5zaXplKCkpOworCisgICAgICAgIGZvciAoT2JqZWN0IGtleSA6IHJhdy5rZXlTZXQoKSkgeworICAgICAgICAgICAgY29udGV4dC53cml0ZShrZXksIGJ1ZmZlcik7CisgICAgICAgICAgICBidWZmZXIud3JpdGVMb25nKHZhbHVlLmdldChrZXkpKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9CeXRlQnVmZmVyU2VyaWFsaXplci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0J5dGVCdWZmZXJTZXJpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGU2MTNjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9CeXRlQnVmZmVyU2VyaWFsaXplci5qYXZhCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkudHlwZXM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuRGF0YVR5cGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5UmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVdyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5CdWZmZXI7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEubmlvLkJ5dGVCdWZmZXI7CisKKy8qKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgY2xhc3MgQnl0ZUJ1ZmZlclNlcmlhbGl6ZXIgZXh0ZW5kcyBTaW1wbGVUeXBlU2VyaWFsaXplcjxCeXRlQnVmZmVyPiB7CisKKyAgICBwdWJsaWMgQnl0ZUJ1ZmZlclNlcmlhbGl6ZXIoKSB7CisgICAgICAgIHN1cGVyKERhdGFUeXBlLkJZVEVCVUZGRVIpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCBCeXRlQnVmZmVyIHJlYWRWYWx1ZShmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVJlYWRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBmaW5hbCBCeXRlQnVmZmVyIGJiID0gQnl0ZUJ1ZmZlci5hbGxvY2F0ZShidWZmZXIucmVhZEludCgpKTsKKyAgICAgICAgYnVmZmVyLnJlYWRCeXRlcyhiYik7CisgICAgICAgIGJiLnJld2luZCgpOworICAgICAgICByZXR1cm4gYmI7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGVWYWx1ZShmaW5hbCBCeXRlQnVmZmVyIHZhbHVlLCBmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVdyaXRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBmaW5hbCBieXRlW10gYnl0ZXMgPSB2YWx1ZS5hcnJheSgpOworICAgICAgICBidWZmZXIud3JpdGVJbnQoYnl0ZXMubGVuZ3RoKS53cml0ZUJ5dGVzKGJ5dGVzKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvQnl0ZUNvZGVTZXJpYWxpemVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvQnl0ZUNvZGVTZXJpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmY4OTBmOQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9CeXRlQ29kZVNlcmlhbGl6ZXIuamF2YQpAQCAtMCwwICsxLDkwIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LnR5cGVzOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkRhdGFUeXBlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlXcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5CeXRlY29kZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5CdWZmZXI7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitwdWJsaWMgY2xhc3MgQnl0ZUNvZGVTZXJpYWxpemVyIGV4dGVuZHMgU2ltcGxlVHlwZVNlcmlhbGl6ZXI8Qnl0ZWNvZGU+IHsKKyAgICBwdWJsaWMgQnl0ZUNvZGVTZXJpYWxpemVyKCkgeworICAgICAgICBzdXBlcihEYXRhVHlwZS5CWVRFQ09ERSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIEJ5dGVjb2RlIHJlYWRWYWx1ZShmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVJlYWRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBmaW5hbCBCeXRlY29kZSByZXN1bHQgPSBuZXcgQnl0ZWNvZGUoKTsKKworICAgICAgICBmaW5hbCBpbnQgc3RlcHNMZW5ndGggPSBidWZmZXIucmVhZEludCgpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHN0ZXBzTGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIHJlc3VsdC5hZGRTdGVwKGNvbnRleHQucmVhZFZhbHVlKGJ1ZmZlciwgU3RyaW5nLmNsYXNzLCBmYWxzZSksIGdldEluc3RydWN0aW9uQXJndW1lbnRzKGJ1ZmZlciwgY29udGV4dCkpOworICAgICAgICB9CisKKyAgICAgICAgZmluYWwgaW50IHNvdXJjZXNMZW5ndGggPSBidWZmZXIucmVhZEludCgpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNvdXJjZXNMZW5ndGg7IGkrKykgeworICAgICAgICAgICAgcmVzdWx0LmFkZFNvdXJjZShjb250ZXh0LnJlYWRWYWx1ZShidWZmZXIsIFN0cmluZy5jbGFzcywgZmFsc2UpLCBnZXRJbnN0cnVjdGlvbkFyZ3VtZW50cyhidWZmZXIsIGNvbnRleHQpKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgT2JqZWN0W10gZ2V0SW5zdHJ1Y3Rpb25Bcmd1bWVudHMoZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlSZWFkZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgaW50IHZhbHVlc0xlbmd0aCA9IGJ1ZmZlci5yZWFkSW50KCk7CisgICAgICAgIGZpbmFsIE9iamVjdFtdIHZhbHVlcyA9IG5ldyBPYmplY3RbdmFsdWVzTGVuZ3RoXTsKKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCB2YWx1ZXNMZW5ndGg7IGorKykgeworICAgICAgICAgICAgdmFsdWVzW2pdID0gY29udGV4dC5yZWFkKGJ1ZmZlcik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHZhbHVlczsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCB3cml0ZVZhbHVlKGZpbmFsIEJ5dGVjb2RlIHZhbHVlLCBmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVdyaXRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBmaW5hbCBMaXN0PEJ5dGVjb2RlLkluc3RydWN0aW9uPiBzdGVwcyA9IHZhbHVlLmdldFN0ZXBJbnN0cnVjdGlvbnMoKTsKKyAgICAgICAgZmluYWwgTGlzdDxCeXRlY29kZS5JbnN0cnVjdGlvbj4gc291cmNlcyA9IHZhbHVlLmdldFNvdXJjZUluc3RydWN0aW9ucygpOworICAgICAgICAvLyAyIGJ1ZmZlcnMgZm9yIHRoZSBsZW5ndGggKyBwbHVzIDIgYnVmZmVycyBwZXIgZWFjaCBzdGVwIGFuZCBzb3VyY2UKKworICAgICAgICB3cml0ZUluc3RydWN0aW9ucyhidWZmZXIsIGNvbnRleHQsIHN0ZXBzKTsKKyAgICAgICAgd3JpdGVJbnN0cnVjdGlvbnMoYnVmZmVyLCBjb250ZXh0LCBzb3VyY2VzKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgd3JpdGVJbnN0cnVjdGlvbnMoZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlXcml0ZXIgY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgTGlzdDxCeXRlY29kZS5JbnN0cnVjdGlvbj4gaW5zdHJ1Y3Rpb25zKSB0aHJvd3MgSU9FeGNlcHRpb24geworCisgICAgICAgIGNvbnRleHQud3JpdGVWYWx1ZShpbnN0cnVjdGlvbnMuc2l6ZSgpLCBidWZmZXIsIGZhbHNlKTsKKworICAgICAgICBmb3IgKEJ5dGVjb2RlLkluc3RydWN0aW9uIGluc3RydWN0aW9uIDogaW5zdHJ1Y3Rpb25zKSB7CisgICAgICAgICAgICBjb250ZXh0LndyaXRlVmFsdWUoaW5zdHJ1Y3Rpb24uZ2V0T3BlcmF0b3IoKSwgYnVmZmVyLCBmYWxzZSk7CisgICAgICAgICAgICBmaWxsQXJndW1lbnRzQnVmZmVyKGluc3RydWN0aW9uLmdldEFyZ3VtZW50cygpLCBidWZmZXIsIGNvbnRleHQpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBmaWxsQXJndW1lbnRzQnVmZmVyKGZpbmFsIE9iamVjdFtdIGFyZ3VtZW50cywgZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlXcml0ZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKworICAgICAgICBjb250ZXh0LndyaXRlVmFsdWUoYXJndW1lbnRzLmxlbmd0aCwgYnVmZmVyLCBmYWxzZSk7CisKKyAgICAgICAgZm9yIChPYmplY3QgdmFsdWUgOiBhcmd1bWVudHMpIHsKKyAgICAgICAgICAgIGNvbnRleHQud3JpdGUodmFsdWUsIGJ1ZmZlcik7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvQ2hhclNlcmlhbGl6ZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9DaGFyU2VyaWFsaXplci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5MTEwYjcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvQ2hhclNlcmlhbGl6ZXIuamF2YQpAQCAtMCwwICsxLDY2IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LnR5cGVzOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkRhdGFUeXBlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlXcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uQnVmZmVyOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLm5pby5jaGFyc2V0LlN0YW5kYXJkQ2hhcnNldHM7CisKK3B1YmxpYyBjbGFzcyBDaGFyU2VyaWFsaXplciBleHRlbmRzIFNpbXBsZVR5cGVTZXJpYWxpemVyPENoYXJhY3Rlcj4geworICAgIHB1YmxpYyBDaGFyU2VyaWFsaXplcigpIHsKKyAgICAgICAgc3VwZXIoRGF0YVR5cGUuQ0hBUik7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIENoYXJhY3RlciByZWFkVmFsdWUoZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlSZWFkZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgaW50IGZpcnN0Qnl0ZSA9IGJ1ZmZlci5yZWFkQnl0ZSgpICYgMHhmZjsKKyAgICAgICAgaW50IGJ5dGVMZW5ndGggPSAxOworICAgICAgICAvLyBBIGJ5dGUgd2l0aCB0aGUgZmlyc3QgYnl0ZSBPTiAoMTAwMDAwMDApIHNpZ25hbHMgdGhhdCBtb3JlIGJ5dGVzIGFyZSBuZWVkZWQgdG8gcmVwcmVzZW50IHRoZSBVVEYtOCBjaGFyCisgICAgICAgIGlmICgoZmlyc3RCeXRlICYgMHg4MCkgPiAwKSB7CisgICAgICAgICAgICBpZiAoKGZpcnN0Qnl0ZSAmIDB4ZjApID09IDB4ZjApIHsgLy8gMHhmMCA9IDExMTEwMDAwCisgICAgICAgICAgICAgICAgYnl0ZUxlbmd0aCA9IDQ7CisgICAgICAgICAgICB9IGVsc2UgaWYgKChmaXJzdEJ5dGUgJiAweGUwKSA9PSAweGUwKSB7IC8vMTExMDAwMDAKKyAgICAgICAgICAgICAgICBieXRlTGVuZ3RoID0gMzsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoKGZpcnN0Qnl0ZSAmIDB4YzApID09IDB4YzApIHsgLy8xMTAwMDAwMAorICAgICAgICAgICAgICAgIGJ5dGVMZW5ndGggPSAyOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgYnl0ZVtdIGJ5dGVBcnJheTsKKyAgICAgICAgaWYgKGJ5dGVMZW5ndGggPT0gMSkgeworICAgICAgICAgICAgYnl0ZUFycmF5ID0gbmV3IGJ5dGVbXSB7IChieXRlKWZpcnN0Qnl0ZSB9OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYnl0ZUFycmF5ID0gbmV3IGJ5dGVbYnl0ZUxlbmd0aF07CisgICAgICAgICAgICBieXRlQXJyYXlbMF0gPSAoYnl0ZSlmaXJzdEJ5dGU7CisgICAgICAgICAgICBidWZmZXIucmVhZEJ5dGVzKGJ5dGVBcnJheSwgMSwgYnl0ZUxlbmd0aCAtIDEpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG5ldyBTdHJpbmcoYnl0ZUFycmF5LCBTdGFuZGFyZENoYXJzZXRzLlVURl84KS5jaGFyQXQoMCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGVWYWx1ZShmaW5hbCBDaGFyYWN0ZXIgdmFsdWUsIGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5V3JpdGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIFN0cmluZyBzdHJpbmdWYWx1ZSA9IENoYXJhY3Rlci50b1N0cmluZyh2YWx1ZSk7CisgICAgICAgIGJ1ZmZlci53cml0ZUJ5dGVzKHN0cmluZ1ZhbHVlLmdldEJ5dGVzKFN0YW5kYXJkQ2hhcnNldHMuVVRGXzgpKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvQ2xhc3NTZXJpYWxpemVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvQ2xhc3NTZXJpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGI4MzI4NwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9DbGFzc1NlcmlhbGl6ZXIuamF2YQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LnR5cGVzOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkRhdGFUeXBlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlXcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uQnVmZmVyOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKKworcHVibGljIGNsYXNzIENsYXNzU2VyaWFsaXplciBleHRlbmRzIFNpbXBsZVR5cGVTZXJpYWxpemVyPENsYXNzPiB7CisgICAgcHVibGljIENsYXNzU2VyaWFsaXplcigpIHsKKyAgICAgICAgc3VwZXIoRGF0YVR5cGUuQ0xBU1MpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCBDbGFzcyByZWFkVmFsdWUoZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlSZWFkZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgU3RyaW5nIG5hbWUgPSBjb250ZXh0LnJlYWRWYWx1ZShidWZmZXIsIFN0cmluZy5jbGFzcywgZmFsc2UpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgcmV0dXJuIENsYXNzLmZvck5hbWUobmFtZSk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oZXgpOworICAgICAgICB9CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGVWYWx1ZShmaW5hbCBDbGFzcyB2YWx1ZSwgZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlXcml0ZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgY29udGV4dC53cml0ZVZhbHVlKHZhbHVlLmdldE5hbWUoKSwgYnVmZmVyLCBmYWxzZSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0NvbGxlY3Rpb25TZXJpYWxpemVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvQ29sbGVjdGlvblNlcmlhbGl6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTAyMGJkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0NvbGxlY3Rpb25TZXJpYWxpemVyLmphdmEKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS50eXBlczsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5EYXRhVHlwZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlSZWFkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5V3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlcjsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKKworY2xhc3MgQ29sbGVjdGlvblNlcmlhbGl6ZXIgZXh0ZW5kcyBTaW1wbGVUeXBlU2VyaWFsaXplcjxDb2xsZWN0aW9uPiB7CisgICAgcHVibGljIENvbGxlY3Rpb25TZXJpYWxpemVyKGZpbmFsIERhdGFUeXBlIGRhdGFUeXBlKSB7CisgICAgICAgIHN1cGVyKGRhdGFUeXBlKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgQ29sbGVjdGlvbiByZWFkVmFsdWUoZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlSZWFkZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgaW50IGxlbmd0aCA9IGJ1ZmZlci5yZWFkSW50KCk7CisKKyAgICAgICAgZmluYWwgQXJyYXlMaXN0IHJlc3VsdCA9IG5ldyBBcnJheUxpc3QobGVuZ3RoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICAgICAgcmVzdWx0LmFkZChjb250ZXh0LnJlYWQoYnVmZmVyKSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIHdyaXRlVmFsdWUoZmluYWwgQ29sbGVjdGlvbiB2YWx1ZSwgZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlXcml0ZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgYnVmZmVyLndyaXRlSW50KHZhbHVlLnNpemUoKSk7CisKKyAgICAgICAgZm9yIChPYmplY3QgaXRlbSA6IHZhbHVlKSB7CisgICAgICAgICAgICBjb250ZXh0LndyaXRlKGl0ZW0sIGJ1ZmZlcik7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvQ3VzdG9tVHlwZVNlcmlhbGl6ZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9DdXN0b21UeXBlU2VyaWFsaXplci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxN2U3NWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvQ3VzdG9tVHlwZVNlcmlhbGl6ZXIuamF2YQpAQCAtMCwwICsxLDMyIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LnR5cGVzOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LlR5cGVTZXJpYWxpemVyOworCisvKioKKyAqIFJlcHJlc2VudHMgYSBzZXJpYWxpemVyIGZvciBhIGN1c3RvbSAocHJvdmlkZXIgc3BlY2lmaWMpIHNlcmlhbGl6ZXIuCisgKiBAcGFyYW0gPFQ+CisgKi8KK3B1YmxpYyBpbnRlcmZhY2UgQ3VzdG9tVHlwZVNlcmlhbGl6ZXI8VD4gZXh0ZW5kcyBUeXBlU2VyaWFsaXplcjxUPiB7CisgICAgLyoqCisgICAgICogR2V0cyB0aGUgY3VzdG9tIHR5cGUgbmFtZS4KKyAgICAgKi8KKyAgICBTdHJpbmcgZ2V0VHlwZU5hbWUoKTsKK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9EYXRlU2VyaWFsaXplci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0RhdGVTZXJpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQ4NzM4MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9EYXRlU2VyaWFsaXplci5qYXZhCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkudHlwZXM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuRGF0YVR5cGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5UmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVdyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5CdWZmZXI7CisKK2ltcG9ydCBqYXZhLnNxbC5UaW1lc3RhbXA7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgamF2YS51dGlsLmZ1bmN0aW9uLkZ1bmN0aW9uOworCisvKioKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqLworcHVibGljIGNsYXNzIERhdGVTZXJpYWxpemVyPFQgZXh0ZW5kcyBEYXRlPiBleHRlbmRzIFNpbXBsZVR5cGVTZXJpYWxpemVyPFQ+IHsKKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgRGF0ZVNlcmlhbGl6ZXI8RGF0ZT4gRGF0ZVNlcmlhbGl6ZXIgPSBuZXcgRGF0ZVNlcmlhbGl6ZXI8PihEYXRhVHlwZS5EQVRFLCBEYXRlOjpuZXcpOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgRGF0ZVNlcmlhbGl6ZXI8VGltZXN0YW1wPiBUaW1lc3RhbXBTZXJpYWxpemVyID0gbmV3IERhdGVTZXJpYWxpemVyPD4oRGF0YVR5cGUuVElNRVNUQU1QLCBUaW1lc3RhbXA6Om5ldyk7CisKKyAgICBwcml2YXRlIGZpbmFsIEZ1bmN0aW9uPExvbmcsIFQ+IHJlYWRlcjsKKworICAgIHByaXZhdGUgRGF0ZVNlcmlhbGl6ZXIoZmluYWwgRGF0YVR5cGUgdHlwZSwgZmluYWwgRnVuY3Rpb248TG9uZywgVD4gcmVhZGVyKSB7CisgICAgICAgIHN1cGVyKHR5cGUpOworICAgICAgICB0aGlzLnJlYWRlciA9IHJlYWRlcjsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgVCByZWFkVmFsdWUoZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlSZWFkZXIgY29udGV4dCkgeworICAgICAgICByZXR1cm4gcmVhZGVyLmFwcGx5KGJ1ZmZlci5yZWFkTG9uZygpKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCB3cml0ZVZhbHVlKGZpbmFsIFQgdmFsdWUsIGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5V3JpdGVyIGNvbnRleHQpIHsKKyAgICAgICAgYnVmZmVyLndyaXRlTG9uZyh2YWx1ZS5nZXRUaW1lKCkpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9EdXJhdGlvblNlcmlhbGl6ZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9EdXJhdGlvblNlcmlhbGl6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YzBiNTI2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0R1cmF0aW9uU2VyaWFsaXplci5qYXZhCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkudHlwZXM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuRGF0YVR5cGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5UmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVdyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5CdWZmZXI7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEudGltZS5EdXJhdGlvbjsKKworLyoqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK3B1YmxpYyBjbGFzcyBEdXJhdGlvblNlcmlhbGl6ZXIgZXh0ZW5kcyBTaW1wbGVUeXBlU2VyaWFsaXplcjxEdXJhdGlvbj4geworICAgIHB1YmxpYyBEdXJhdGlvblNlcmlhbGl6ZXIoKSB7CisgICAgICAgIHN1cGVyKERhdGFUeXBlLkRVUkFUSU9OKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgRHVyYXRpb24gcmVhZFZhbHVlKGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5UmVhZGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIHJldHVybiBEdXJhdGlvbi5vZlNlY29uZHMoYnVmZmVyLnJlYWRMb25nKCksIGJ1ZmZlci5yZWFkSW50KCkpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIHdyaXRlVmFsdWUoZmluYWwgRHVyYXRpb24gdmFsdWUsIGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5V3JpdGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGJ1ZmZlci53cml0ZUxvbmcodmFsdWUuZ2V0U2Vjb25kcygpKS53cml0ZUludCh2YWx1ZS5nZXROYW5vKCkpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9FZGdlU2VyaWFsaXplci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0VkZ2VTZXJpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGU4ODE4MAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9FZGdlU2VyaWFsaXplci5qYXZhCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkudHlwZXM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuRGF0YVR5cGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5UmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVdyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5FZGdlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLnJlZmVyZW5jZS5SZWZlcmVuY2VFZGdlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwucmVmZXJlbmNlLlJlZmVyZW5jZVZlcnRleDsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CisKKy8qKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgY2xhc3MgRWRnZVNlcmlhbGl6ZXIgZXh0ZW5kcyBTaW1wbGVUeXBlU2VyaWFsaXplcjxFZGdlPiB7CisgICAgcHVibGljIEVkZ2VTZXJpYWxpemVyKCkgeworICAgICAgICBzdXBlcihEYXRhVHlwZS5FREdFKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgRWRnZSByZWFkVmFsdWUoZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlSZWFkZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgT2JqZWN0IGlkID0gY29udGV4dC5yZWFkKGJ1ZmZlcik7CisgICAgICAgIGZpbmFsIFN0cmluZyBsYWJlbCA9IGNvbnRleHQucmVhZFZhbHVlKGJ1ZmZlciwgU3RyaW5nLmNsYXNzLCBmYWxzZSk7CisKKyAgICAgICAgZmluYWwgUmVmZXJlbmNlVmVydGV4IGluViA9IG5ldyBSZWZlcmVuY2VWZXJ0ZXgoY29udGV4dC5yZWFkKGJ1ZmZlciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQucmVhZFZhbHVlKGJ1ZmZlciwgU3RyaW5nLmNsYXNzLCBmYWxzZSkpOworICAgICAgICBmaW5hbCBSZWZlcmVuY2VWZXJ0ZXggb3V0ViA9IG5ldyBSZWZlcmVuY2VWZXJ0ZXgoY29udGV4dC5yZWFkKGJ1ZmZlciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnJlYWRWYWx1ZShidWZmZXIsIFN0cmluZy5jbGFzcywgZmFsc2UpKTsKKworICAgICAgICAvLyBkaXNjYXJkIHRoZSBwYXJlbnQgdmVydGV4IC0gd2Ugb25seSBzZW5kICJyZWZlcmVuY2VzIHNvIHRoaXMgc2hvdWxkIGFsd2F5cyBiZSBudWxsLCBidXQgd2lsbCB3ZSBjaGFuZ2Ugb3VyCisgICAgICAgIC8vIG1pbmRzIHNvbWVkYXk/Pz8/CisgICAgICAgIGNvbnRleHQucmVhZChidWZmZXIpOworCisgICAgICAgIC8vIGRpc2NhcmQgdGhlIHByb3BlcnRpZXMgLSBhcyB3ZSBvbmx5IHNlbmQgInJlZmVyZW5jZXMiIHRoaXMgc2hvdWxkIGFsd2F5cyBiZSBudWxsLCBidXQgd2lsbCB3ZSBjaGFuZ2Ugb3VyCisgICAgICAgIC8vIG1pbmRzIHNvbWUgZGF5Pz8/PworICAgICAgICBjb250ZXh0LnJlYWQoYnVmZmVyKTsKKworICAgICAgICByZXR1cm4gbmV3IFJlZmVyZW5jZUVkZ2UoaWQsIGxhYmVsLCBpblYsIG91dFYpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIHdyaXRlVmFsdWUoZmluYWwgRWRnZSB2YWx1ZSwgZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlXcml0ZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKworICAgICAgICBjb250ZXh0LndyaXRlKHZhbHVlLmlkKCksIGJ1ZmZlcik7CisgICAgICAgIGNvbnRleHQud3JpdGVWYWx1ZSh2YWx1ZS5sYWJlbCgpLCBidWZmZXIsIGZhbHNlKTsKKworICAgICAgICBjb250ZXh0LndyaXRlKHZhbHVlLmluVmVydGV4KCkuaWQoKSwgYnVmZmVyKTsKKyAgICAgICAgY29udGV4dC53cml0ZVZhbHVlKHZhbHVlLmluVmVydGV4KCkubGFiZWwoKSwgYnVmZmVyLCBmYWxzZSk7CisgICAgICAgIGNvbnRleHQud3JpdGUodmFsdWUub3V0VmVydGV4KCkuaWQoKSwgYnVmZmVyKTsKKyAgICAgICAgY29udGV4dC53cml0ZVZhbHVlKHZhbHVlLm91dFZlcnRleCgpLmxhYmVsKCksIGJ1ZmZlciwgZmFsc2UpOworCisgICAgICAgIC8vIHdlIGRvbid0IHNlcmlhbGl6ZSB0aGUgcGFyZW50IFZlcnRleCBmb3IgZWRnZXMuIHRoZXkgYXJlICJyZWZlcmVuY2VzIiwgYnV0IHdlIGxlYXZlIGEgcGxhY2UgaG9sZGVyCisgICAgICAgIC8vIGhlcmUgYXMgYW4gb3B0aW9uIGZvciB0aGUgZnV0dXJlIGFzIHdlJ3ZlIHdhZmZsZWQgdGhpcyBzb29vb29vb29vbyBtYW55IHRpbWVzIG5vdworICAgICAgICBjb250ZXh0LndyaXRlKG51bGwsIGJ1ZmZlcik7CisgICAgICAgIC8vIHdlIGRvbid0IHNlcmlhbGl6ZSBwcm9wZXJ0aWVzIGZvciBncmFwaCB2ZXJ0aWNlcy9lZGdlcy4gdGhleSBhcmUgInJlZmVyZW5jZXMiLCBidXQgd2UgbGVhdmUgYSBwbGFjZSBob2xkZXIKKyAgICAgICAgLy8gaGVyZSBhcyBhbiBvcHRpb24gZm9yIHRoZSBmdXR1cmUgYXMgd2UndmUgd2FmZmxlZCB0aGlzIHNvb29vb29vb29vIG1hbnkgdGltZXMgbm93CisgICAgICAgIGNvbnRleHQud3JpdGUobnVsbCwgYnVmZmVyKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvRW51bVNlcmlhbGl6ZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9FbnVtU2VyaWFsaXplci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyZTJkMTUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvRW51bVNlcmlhbGl6ZXIuamF2YQpAQCAtMCwwICsxLDczIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LnR5cGVzOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkRhdGFUeXBlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlXcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5PcGVyYXRvcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLk9yZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUG9wOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuU2Fja0Z1bmN0aW9uczsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlNjb3BlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5UcmF2ZXJzYWxPcHRpb25QYXJlbnQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuQ29sdW1uOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkRpcmVjdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5UOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleFByb3BlcnR5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlcjsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS51dGlsLmZ1bmN0aW9uLkZ1bmN0aW9uOworCisvKioKKyAqIEdlbmVyYWxpemVkIHNlcmlhbGl6ZXIgZm9yIHsjY29kZSBFbnVtfSB2YWx1ZSB0eXBlcy4KKyAqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK3B1YmxpYyBjbGFzcyBFbnVtU2VyaWFsaXplcjxFIGV4dGVuZHMgRW51bT4gZXh0ZW5kcyBTaW1wbGVUeXBlU2VyaWFsaXplcjxFPiB7CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIEVudW1TZXJpYWxpemVyPFNhY2tGdW5jdGlvbnMuQmFycmllcj4gQmFycmllclNlcmlhbGl6ZXIgPSBuZXcgRW51bVNlcmlhbGl6ZXI8PihEYXRhVHlwZS5CQVJSSUVSLCBTYWNrRnVuY3Rpb25zLkJhcnJpZXI6OnZhbHVlT2YpOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgRW51bVNlcmlhbGl6ZXI8VmVydGV4UHJvcGVydHkuQ2FyZGluYWxpdHk+IENhcmRpbmFsaXR5U2VyaWFsaXplciA9IG5ldyBFbnVtU2VyaWFsaXplcjw+KERhdGFUeXBlLkNBUkRJTkFMSVRZLCBWZXJ0ZXhQcm9wZXJ0eS5DYXJkaW5hbGl0eTo6dmFsdWVPZik7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBFbnVtU2VyaWFsaXplcjxDb2x1bW4+IENvbHVtblNlcmlhbGl6ZXIgPSBuZXcgRW51bVNlcmlhbGl6ZXI8PihEYXRhVHlwZS5DT0xVTU4sIENvbHVtbjo6dmFsdWVPZik7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBFbnVtU2VyaWFsaXplcjxEaXJlY3Rpb24+IERpcmVjdGlvblNlcmlhbGl6ZXIgPSBuZXcgRW51bVNlcmlhbGl6ZXI8PihEYXRhVHlwZS5ESVJFQ1RJT04sIERpcmVjdGlvbjo6dmFsdWVPZik7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBFbnVtU2VyaWFsaXplcjxPcGVyYXRvcj4gT3BlcmF0b3JTZXJpYWxpemVyID0gbmV3IEVudW1TZXJpYWxpemVyPD4oRGF0YVR5cGUuT1BFUkFUT1IsIE9wZXJhdG9yOjp2YWx1ZU9mKTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIEVudW1TZXJpYWxpemVyPE9yZGVyPiBPcmRlclNlcmlhbGl6ZXIgPSBuZXcgRW51bVNlcmlhbGl6ZXI8PihEYXRhVHlwZS5PUkRFUiwgT3JkZXI6OnZhbHVlT2YpOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgRW51bVNlcmlhbGl6ZXI8VHJhdmVyc2FsT3B0aW9uUGFyZW50LlBpY2s+IFBpY2tTZXJpYWxpemVyID0gbmV3IEVudW1TZXJpYWxpemVyPD4oRGF0YVR5cGUuUElDSywgVHJhdmVyc2FsT3B0aW9uUGFyZW50LlBpY2s6OnZhbHVlT2YpOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgRW51bVNlcmlhbGl6ZXI8UG9wPiBQb3BTZXJpYWxpemVyID0gbmV3IEVudW1TZXJpYWxpemVyPD4oRGF0YVR5cGUuUE9QLCBQb3A6OnZhbHVlT2YpOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgRW51bVNlcmlhbGl6ZXI8U2NvcGU+IFNjb3BlU2VyaWFsaXplciA9IG5ldyBFbnVtU2VyaWFsaXplcjw+KERhdGFUeXBlLlNDT1BFLCBTY29wZTo6dmFsdWVPZik7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBFbnVtU2VyaWFsaXplcjxUPiBUU2VyaWFsaXplciA9IG5ldyBFbnVtU2VyaWFsaXplcjw+KERhdGFUeXBlLlQsIFQ6OnZhbHVlT2YpOworCisgICAgcHJpdmF0ZSBmaW5hbCBGdW5jdGlvbjxTdHJpbmcsIEU+IHJlYWRGdW5jOworCisgICAgcHJpdmF0ZSBFbnVtU2VyaWFsaXplcihmaW5hbCBEYXRhVHlwZSBkYXRhVHlwZSwgZmluYWwgRnVuY3Rpb248U3RyaW5nLCBFPiByZWFkRnVuYykgeworICAgICAgICBzdXBlcihkYXRhVHlwZSk7CisgICAgICAgIHRoaXMucmVhZEZ1bmMgPSByZWFkRnVuYzsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgRSByZWFkVmFsdWUoZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlSZWFkZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgcmV0dXJuIHJlYWRGdW5jLmFwcGx5KGNvbnRleHQucmVhZChidWZmZXIpKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCB3cml0ZVZhbHVlKGZpbmFsIEUgdmFsdWUsIGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5V3JpdGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGNvbnRleHQud3JpdGUodmFsdWUubmFtZSgpLCBidWZmZXIpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9HcmFwaFNlcmlhbGl6ZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9HcmFwaFNlcmlhbGl6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjI3ZjE4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0dyYXBoU2VyaWFsaXplci5qYXZhCkBAIC0wLDAgKzEsMjA2IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LnR5cGVzOworCitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmNvbmZpZ3VyYXRpb24uQmFzZUNvbmZpZ3VyYXRpb247CitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmNvbmZpZ3VyYXRpb24uQ29uZmlndXJhdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuRGF0YVR5cGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5UmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVdyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5FZGdlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkdyYXBoOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlByb3BlcnR5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleFByb3BlcnR5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnV0aWwuaXRlcmF0b3IuSXRlcmF0b3JVdGlsczsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuTWV0aG9kOworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgamF2YS51dGlsLk1hcDsKKworLyoqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK3B1YmxpYyBjbGFzcyBHcmFwaFNlcmlhbGl6ZXIgZXh0ZW5kcyBTaW1wbGVUeXBlU2VyaWFsaXplcjxHcmFwaD4geworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTWV0aG9kIG9wZW5NZXRob2QgPSBkZXRlY3RHcmFwaE9wZW5NZXRob2QoKTsKKworICAgIHB1YmxpYyBHcmFwaFNlcmlhbGl6ZXIoKSB7CisgICAgICAgIHN1cGVyKERhdGFUeXBlLkdSQVBIKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgR3JhcGggcmVhZFZhbHVlKGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5UmVhZGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisKKyAgICAgICAgaWYgKG51bGwgPT0gb3Blbk1ldGhvZCkKKyAgICAgICAgICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbigiVGlua2VyR3JhcGggaXMgYW4gb3B0aW9uYWwgZGVwZW5kZW5jeSB0byBncmVtbGluLWRyaXZlciAtIGlmIGRlc2VyaWFsaXppbmcgR3JhcGggaW5zdGFuY2VzIGl0IG11c3QgYmUgZXhwbGljaXRseSBhZGRlZCBhcyBhIGRlcGVuZGVuY3kiKTsKKworICAgICAgICBmaW5hbCBDb25maWd1cmF0aW9uIGNvbmYgPSBuZXcgQmFzZUNvbmZpZ3VyYXRpb24oKTsKKyAgICAgICAgY29uZi5zZXRQcm9wZXJ0eSgiZ3JlbWxpbi50aW5rZXJncmFwaC5kZWZhdWx0VmVydGV4UHJvcGVydHlDYXJkaW5hbGl0eSIsICJsaXN0Iik7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZpbmFsIEdyYXBoIGdyYXBoID0gKEdyYXBoKSBvcGVuTWV0aG9kLmludm9rZShudWxsLCBjb25mKTsKKyAgICAgICAgICAgIGZpbmFsIGludCB2ZXJ0ZXhDb3VudCA9IGNvbnRleHQucmVhZFZhbHVlKGJ1ZmZlciwgSW50ZWdlci5jbGFzcywgZmFsc2UpOworICAgICAgICAgICAgZm9yIChpbnQgaXggPSAwOyBpeCA8IHZlcnRleENvdW50OyBpeCsrKSB7CisgICAgICAgICAgICAgICAgZmluYWwgVmVydGV4IHYgPSBncmFwaC5hZGRWZXJ0ZXgoVC5pZCwgY29udGV4dC5yZWFkKGJ1ZmZlciksIFQubGFiZWwsIGNvbnRleHQucmVhZFZhbHVlKGJ1ZmZlciwgU3RyaW5nLmNsYXNzLCBmYWxzZSkpOworICAgICAgICAgICAgICAgIGZpbmFsIGludCB2ZXJ0ZXhQcm9wZXJ0eUNvdW50ID0gY29udGV4dC5yZWFkVmFsdWUoYnVmZmVyLCBJbnRlZ2VyLmNsYXNzLCBmYWxzZSk7CisKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpeSA9IDA7IGl5IDwgdmVydGV4UHJvcGVydHlDb3VudDsgaXkrKykgeworICAgICAgICAgICAgICAgICAgICBmaW5hbCBPYmplY3QgaWQgPSBjb250ZXh0LnJlYWQoYnVmZmVyKTsKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nIGxhYmVsID0gY29udGV4dC5yZWFkVmFsdWUoYnVmZmVyLCBTdHJpbmcuY2xhc3MsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgT2JqZWN0IHZhbCA9IGNvbnRleHQucmVhZChidWZmZXIpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnJlYWQoYnVmZmVyKTsgLy8gdG9zcyBwYXJlbnQgYXMgaXQncyBhbHdheXMgbnVsbAorICAgICAgICAgICAgICAgICAgICBmaW5hbCBWZXJ0ZXhQcm9wZXJ0eTxPYmplY3Q+IHZwID0gdi5wcm9wZXJ0eShWZXJ0ZXhQcm9wZXJ0eS5DYXJkaW5hbGl0eS5saXN0LCBsYWJlbCwgdmFsLCBULmlkLCBpZCk7CisKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgTGlzdDxQcm9wZXJ0eT4gZWRnZVByb3BlcnRpZXMgPSBjb250ZXh0LnJlYWRWYWx1ZShidWZmZXIsIEFycmF5TGlzdC5jbGFzcywgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICBmb3IgKFByb3BlcnR5IHAgOiBlZGdlUHJvcGVydGllcykgeworICAgICAgICAgICAgICAgICAgICAgICAgdnAucHJvcGVydHkocC5rZXkoKSwgcC52YWx1ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZmluYWwgaW50IGVkZ2VDb3VudCA9IGNvbnRleHQucmVhZFZhbHVlKGJ1ZmZlciwgSW50ZWdlci5jbGFzcywgZmFsc2UpOworICAgICAgICAgICAgZm9yIChpbnQgaXggPSAwOyBpeCA8IGVkZ2VDb3VudDsgaXgrKykgeworICAgICAgICAgICAgICAgIGZpbmFsIE9iamVjdCBpZCA9IGNvbnRleHQucmVhZChidWZmZXIpOworICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyBsYWJlbCA9IGNvbnRleHQucmVhZFZhbHVlKGJ1ZmZlciwgU3RyaW5nLmNsYXNzLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgZmluYWwgT2JqZWN0IGluSWQgPSBjb250ZXh0LnJlYWQoYnVmZmVyKTsKKyAgICAgICAgICAgICAgICBmaW5hbCBWZXJ0ZXggaW5WID0gZ3JhcGgudmVydGljZXMoaW5JZCkubmV4dCgpOworICAgICAgICAgICAgICAgIGNvbnRleHQucmVhZChidWZmZXIpOyAgLy8gdG9zcyBpbiBsYWJlbCAtIGFsd2F5cyBudWxsIGluIHRoaXMgY29udGV4dAorICAgICAgICAgICAgICAgIGZpbmFsIE9iamVjdCBvdXRJZCA9IGNvbnRleHQucmVhZChidWZmZXIpOworICAgICAgICAgICAgICAgIGZpbmFsIFZlcnRleCBvdXRWID0gZ3JhcGgudmVydGljZXMob3V0SWQpLm5leHQoKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LnJlYWQoYnVmZmVyKTsgLy8gdG9zcyBpbiBsYWJlbCAtIGFsd2F5cyBudWxsIGluIHRoaXMgY29udGV4dAorICAgICAgICAgICAgICAgIGNvbnRleHQucmVhZChidWZmZXIpOyAvLyB0b3NzIHBhcmVudCAtIG5ldmVyIHByZXNlbnQgYXMgaXQncyBqdXN0IGEgcGxhY2Vob2xkZXIKKworICAgICAgICAgICAgICAgIGZpbmFsIEVkZ2UgZSA9IG91dFYuYWRkRWRnZShsYWJlbCwgaW5WLCBULmlkLCAgaWQpOworCisgICAgICAgICAgICAgICAgZmluYWwgTGlzdDxQcm9wZXJ0eT4gZWRnZVByb3BlcnRpZXMgPSBjb250ZXh0LnJlYWRWYWx1ZShidWZmZXIsIEFycmF5TGlzdC5jbGFzcywgZmFsc2UpOworICAgICAgICAgICAgICAgIGZvciAoUHJvcGVydHkgcCA6IGVkZ2VQcm9wZXJ0aWVzKSB7CisgICAgICAgICAgICAgICAgICAgIGUucHJvcGVydHkocC5rZXkoKSwgcC52YWx1ZSgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBncmFwaDsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICAvLyBmYW1vdXMgbGFzdCB3b3JkcyAtIGNhbid0IGhhcHBlbgorICAgICAgICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKGV4KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIHdyaXRlVmFsdWUoZmluYWwgR3JhcGggdmFsdWUsIGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5V3JpdGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIC8vIHRoaXMga2luZGEgbG9va3Mgc2NhcnkgbWVtb3J5LXdpc2UsIGJ1dCBHcmFwaEJpbmFyeSBpcyBhYm91dCBuZXR3b3JrIGRlcnNlciBzbyB3ZSBhcmUgZGVhbGluZyB3aXRoIGEKKyAgICAgICAgLy8gZ3JhcGggaW5zdGFuY2UgdGhhdCBzaG91bGQgbGl2ZSBpbiBtZW1vcnkgYWxyZWFkeSAtIG5vdCBleHBlY3RpbmcgImJpZyIgc3R1ZmYgaGVyZS4KKyAgICAgICAgZmluYWwgTGlzdDxWZXJ0ZXg+IHZlcnRleExpc3QgPSBJdGVyYXRvclV0aWxzLmxpc3QodmFsdWUudmVydGljZXMoKSk7CisgICAgICAgIGZpbmFsIExpc3Q8RWRnZT4gZWRnZUxpc3QgPSBJdGVyYXRvclV0aWxzLmxpc3QodmFsdWUuZWRnZXMoKSk7CisKKyAgICAgICAgY29udGV4dC53cml0ZVZhbHVlKHZlcnRleExpc3Quc2l6ZSgpLCBidWZmZXIsIGZhbHNlKTsKKworICAgICAgICBmb3IgKFZlcnRleCB2IDogdmVydGV4TGlzdCkgeworICAgICAgICAgICAgd3JpdGVWZXJ0ZXgoYnVmZmVyLCBjb250ZXh0LCB2KTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnRleHQud3JpdGVWYWx1ZShlZGdlTGlzdC5zaXplKCksIGJ1ZmZlciwgZmFsc2UpOworCisgICAgICAgIGZvciAoRWRnZSBlIDogZWRnZUxpc3QpIHsKKyAgICAgICAgICAgIHdyaXRlRWRnZShidWZmZXIsIGNvbnRleHQsIGUpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHdyaXRlVmVydGV4KEJ1ZmZlciBidWZmZXIsIEdyYXBoQmluYXJ5V3JpdGVyIGNvbnRleHQsIFZlcnRleCB2ZXJ0ZXgpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIExpc3Q8VmVydGV4UHJvcGVydHk8T2JqZWN0Pj4gdmVydGV4UHJvcGVydGllcyA9IEl0ZXJhdG9yVXRpbHMubGlzdCh2ZXJ0ZXgucHJvcGVydGllcygpKTsKKworICAgICAgICBjb250ZXh0LndyaXRlKHZlcnRleC5pZCgpLCBidWZmZXIpOworICAgICAgICBjb250ZXh0LndyaXRlVmFsdWUodmVydGV4LmxhYmVsKCksIGJ1ZmZlciwgZmFsc2UpOworICAgICAgICBjb250ZXh0LndyaXRlVmFsdWUodmVydGV4UHJvcGVydGllcy5zaXplKCksIGJ1ZmZlciwgZmFsc2UpOworCisgICAgICAgIGZvciAoVmVydGV4UHJvcGVydHk8T2JqZWN0PiB2cCA6IHZlcnRleFByb3BlcnRpZXMpIHsKKyAgICAgICAgICAgIGNvbnRleHQud3JpdGUodnAuaWQoKSwgYnVmZmVyKTsKKyAgICAgICAgICAgIGNvbnRleHQud3JpdGVWYWx1ZSh2cC5sYWJlbCgpLCBidWZmZXIsIGZhbHNlKTsKKyAgICAgICAgICAgIGNvbnRleHQud3JpdGUodnAudmFsdWUoKSwgYnVmZmVyKTsKKworICAgICAgICAgICAgLy8gbWFpbnRhaW4gdGhlIFZlcnRleFByb3BlcnR5IGZvcm1hdCB3ZSBoYXZlIHdpdGggdGhpcyBlbXB0eSBwYXJlbnQuLi4uLi4uLi4KKyAgICAgICAgICAgIGNvbnRleHQud3JpdGUobnVsbCwgYnVmZmVyKTsKKworICAgICAgICAgICAgLy8gd3JpdGUgdGhvc2UgcHJvcGVydGllcyBvdXQgdXNpbmcgdGhlIHN0YW5kYXJkIFByb3BlcnR5IHNlcmlhbGl6ZXIKKyAgICAgICAgICAgIGNvbnRleHQud3JpdGVWYWx1ZShJdGVyYXRvclV0aWxzLmxpc3QodnAucHJvcGVydGllcygpKSwgYnVmZmVyLCBmYWxzZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgd3JpdGVFZGdlKEJ1ZmZlciBidWZmZXIsIEdyYXBoQmluYXJ5V3JpdGVyIGNvbnRleHQsIEVkZ2UgZWRnZSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgY29udGV4dC53cml0ZShlZGdlLmlkKCksIGJ1ZmZlcik7CisgICAgICAgIGNvbnRleHQud3JpdGVWYWx1ZShlZGdlLmxhYmVsKCksIGJ1ZmZlciwgZmFsc2UpOworCisgICAgICAgIGNvbnRleHQud3JpdGUoZWRnZS5pblZlcnRleCgpLmlkKCksIGJ1ZmZlcik7CisKKyAgICAgICAgLy8gdmVydGV4IGxhYmVscyBhcmVuJ3QgbmVlZGVkIGJ1dCBtYWludGFpbmluZyB0aGUgRWRnZSBmb3JtIHRoYXQgd2UgaGF2ZQorICAgICAgICBjb250ZXh0LndyaXRlKG51bGwsIGJ1ZmZlcik7CisKKyAgICAgICAgY29udGV4dC53cml0ZShlZGdlLm91dFZlcnRleCgpLmlkKCksIGJ1ZmZlcik7CisKKyAgICAgICAgLy8gdmVydGV4IGxhYmVscyBhcmVuJ3QgbmVlZGVkIGJ1dCBtYWludGFpbmluZyB0aGUgRWRnZSBmb3JtIHRoYXQgd2UgaGF2ZQorICAgICAgICBjb250ZXh0LndyaXRlKG51bGwsIGJ1ZmZlcik7CisKKyAgICAgICAgLy8gbWFpbnRhaW4gdGhlIEVkZ2UgZm9ybWF0IHdlIGhhdmUgd2l0aCB0aGlzIGVtcHR5IHBhcmVudC4uLi4uLi4uLi4uLi4uLi4uLgorICAgICAgICBjb250ZXh0LndyaXRlKG51bGwsIGJ1ZmZlcik7CisKKyAgICAgICAgLy8gd3JpdGUgdGhvc2UgcHJvcGVydGllcyBvdXQgdXNpbmcgdGhlIHN0YW5kYXJkIFByb3BlcnR5IHNlcmlhbGl6ZXIKKyAgICAgICAgY29udGV4dC53cml0ZVZhbHVlKEl0ZXJhdG9yVXRpbHMubGlzdChlZGdlLnByb3BlcnRpZXMoKSksIGJ1ZmZlciwgZmFsc2UpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIE1hcDxTdHJpbmcsIExpc3Q8VmVydGV4UHJvcGVydHk+PiBpbmRleGVkVmVydGV4UHJvcGVydGllcyhmaW5hbCBWZXJ0ZXggdikgeworICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLExpc3Q8VmVydGV4UHJvcGVydHk+PiBpbmRleCA9IG5ldyBIYXNoTWFwPD4oKTsKKyAgICAgICAgdi5wcm9wZXJ0aWVzKCkuZm9yRWFjaFJlbWFpbmluZyh2cCAtPiB7CisgICAgICAgICAgICBpZiAoIWluZGV4LmNvbnRhaW5zS2V5KHZwLmtleSgpKSkgeworICAgICAgICAgICAgICAgIGluZGV4LnB1dCh2cC5rZXkoKSwgbmV3IEFycmF5TGlzdDw+KCkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpbmRleC5nZXQodnAua2V5KCkpLmFkZCh2cCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm4gaW5kZXg7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgTWV0aG9kIGRldGVjdEdyYXBoT3Blbk1ldGhvZCgpIHsKKyAgICAgICAgZmluYWwgQ2xhc3M8Pz4gZ3JhcGhDbGF6eiA9IGRldGVjdFRpbmtlckdyYXBoKCk7CisKKyAgICAgICAgLy8gaWYgbm8gY2xhc3MgdGhlbiBubyBtZXRob2QgdG8gbG9va3VwCisgICAgICAgIGlmIChudWxsID09IGdyYXBoQ2xhenopIHJldHVybiBudWxsOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgcmV0dXJuIGdyYXBoQ2xhenouZ2V0TWV0aG9kKCJvcGVuIiwgQ29uZmlndXJhdGlvbi5jbGFzcyk7CisgICAgICAgIH0gY2F0Y2ggKE5vU3VjaE1ldGhvZEV4Y2VwdGlvbiBuc21lKSB7CisgICAgICAgICAgICAvLyBmYW1vdXMgbGFzdCB3b3JkcyAtIGNhbid0IGhhcHBlbgorICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbihuc21lKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIENsYXNzPD8+IGRldGVjdFRpbmtlckdyYXBoKCkgeworICAgICAgICAvLyB0aGUgamF2YSBkcml2ZXIgZGVmYXVsdHMgdG8gdXNpbmcgVGlua2VyR3JhcGggdG8gZGVzZXJpYWxpemUgR3JhcGggaW5zdGFuY2VzLiBpZiBUaW5rZXJHcmFwaCBpc24ndCBwcmVzZW50CisgICAgICAgIC8vIG9uIHRoZSBwYXRoLCB0aGF0J3MgY29vbCwgdXNlcnMganVzdCB3b24ndCBiZSBhYmxlIHRvIGRlc2VyaWFsaXplIHRoYXQKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJldHVybiBDbGFzcy5mb3JOYW1lKCJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnN0cnVjdHVyZS5UaW5rZXJHcmFwaCIpOworICAgICAgICB9IGNhdGNoIChDbGFzc05vdEZvdW5kRXhjZXB0aW9uIGNuZmUpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0luZXRBZGRyZXNzU2VyaWFsaXplci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0luZXRBZGRyZXNzU2VyaWFsaXplci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2MTUzYzQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvSW5ldEFkZHJlc3NTZXJpYWxpemVyLmphdmEKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS50eXBlczsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5EYXRhVHlwZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlSZWFkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5V3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlcjsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5uZXQuSW5ldEFkZHJlc3M7CitpbXBvcnQgamF2YS5uZXQuVW5rbm93bkhvc3RFeGNlcHRpb247CisKKy8qKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgY2xhc3MgSW5ldEFkZHJlc3NTZXJpYWxpemVyPFQgZXh0ZW5kcyBJbmV0QWRkcmVzcz4gZXh0ZW5kcyBTaW1wbGVUeXBlU2VyaWFsaXplcjxUPiB7CisgICAgcHVibGljIEluZXRBZGRyZXNzU2VyaWFsaXplcigpIHsKKyAgICAgICAgc3VwZXIoRGF0YVR5cGUuSU5FVEFERFJFU1MpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCBUIHJlYWRWYWx1ZShmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVJlYWRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBmaW5hbCBpbnQgbGVuZ3RoID0gYnVmZmVyLnJlYWRJbnQoKTsKKyAgICAgICAgZmluYWwgYnl0ZVtdIGJ5dGVzID0gbmV3IGJ5dGVbbGVuZ3RoXTsKKyAgICAgICAgYnVmZmVyLnJlYWRCeXRlcyhieXRlcyk7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJldHVybiAoVCkgSW5ldEFkZHJlc3MuZ2V0QnlBZGRyZXNzKGJ5dGVzKTsKKyAgICAgICAgfSBjYXRjaCAoVW5rbm93bkhvc3RFeGNlcHRpb24gdWhlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSU9FeGNlcHRpb24oIkNhbm5vdCBkZXNlcmlhbGl6ZSBJbmV0QWRkcmVzcyB2YWx1ZSIsIHVoZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCB3cml0ZVZhbHVlKGZpbmFsIFQgdmFsdWUsIGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5V3JpdGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIGJ5dGVbXSBieXRlcyA9IHZhbHVlLmdldEFkZHJlc3MoKTsKKyAgICAgICAgYnVmZmVyLndyaXRlSW50KGJ5dGVzLmxlbmd0aCkud3JpdGVCeXRlcyhieXRlcyk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0luc3RhbnRTZXJpYWxpemVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvSW5zdGFudFNlcmlhbGl6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTBiODdiCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0luc3RhbnRTZXJpYWxpemVyLmphdmEKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS50eXBlczsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5EYXRhVHlwZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlSZWFkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5V3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlcjsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS50aW1lLkluc3RhbnQ7CisKKy8qKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgY2xhc3MgSW5zdGFudFNlcmlhbGl6ZXIgZXh0ZW5kcyBTaW1wbGVUeXBlU2VyaWFsaXplcjxJbnN0YW50PiB7CisgICAgcHVibGljIEluc3RhbnRTZXJpYWxpemVyKCkgeworICAgICAgICBzdXBlcihEYXRhVHlwZS5JTlNUQU5UKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgSW5zdGFudCByZWFkVmFsdWUoZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlSZWFkZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgcmV0dXJuIEluc3RhbnQub2ZFcG9jaFNlY29uZChidWZmZXIucmVhZExvbmcoKSwgYnVmZmVyLnJlYWRJbnQoKSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGVWYWx1ZShmaW5hbCBJbnN0YW50IHZhbHVlLCBmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVdyaXRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBidWZmZXIud3JpdGVMb25nKHZhbHVlLmdldEVwb2NoU2Vjb25kKCkpLndyaXRlSW50KHZhbHVlLmdldE5hbm8oKSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0xhbWJkYVNlcmlhbGl6ZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9MYW1iZGFTZXJpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTBjYmI1MgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9MYW1iZGFTZXJpYWxpemVyLmphdmEKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS50eXBlczsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5EYXRhVHlwZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlSZWFkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5V3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnV0aWwuZnVuY3Rpb24uTGFtYmRhOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKKworLyoqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK3B1YmxpYyBjbGFzcyBMYW1iZGFTZXJpYWxpemVyIGV4dGVuZHMgU2ltcGxlVHlwZVNlcmlhbGl6ZXI8TGFtYmRhPiB7CisgICAgcHVibGljIExhbWJkYVNlcmlhbGl6ZXIoKSB7CisgICAgICAgIHN1cGVyKERhdGFUeXBlLkxBTUJEQSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIExhbWJkYSByZWFkVmFsdWUoZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlSZWFkZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgU3RyaW5nIGxhbmcgPSBjb250ZXh0LnJlYWRWYWx1ZShidWZmZXIsIFN0cmluZy5jbGFzcywgZmFsc2UpOworICAgICAgICBmaW5hbCBTdHJpbmcgc2NyaXB0ID0gY29udGV4dC5yZWFkVmFsdWUoYnVmZmVyLCBTdHJpbmcuY2xhc3MsIGZhbHNlKTsKKyAgICAgICAgZmluYWwgaW50IGFyZ3MgPSBjb250ZXh0LnJlYWRWYWx1ZShidWZmZXIsIEludGVnZXIuY2xhc3MsIGZhbHNlKTsKKworICAgICAgICBpZiAoMCA9PSBhcmdzKQorICAgICAgICAgICAgcmV0dXJuIG5ldyBMYW1iZGEuWmVyb0FyZ0xhbWJkYTw+KHNjcmlwdCwgbGFuZyk7CisgICAgICAgIGVsc2UgaWYgKDEgPT0gYXJncykKKyAgICAgICAgICAgIHJldHVybiBuZXcgTGFtYmRhLk9uZUFyZ0xhbWJkYTw+KHNjcmlwdCwgbGFuZyk7CisgICAgICAgIGVsc2UgaWYgKDIgPT0gYXJncykKKyAgICAgICAgICAgIHJldHVybiBuZXcgTGFtYmRhLlR3b0FyZ0xhbWJkYTw+KHNjcmlwdCwgbGFuZyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBuZXcgTGFtYmRhLlVua25vd25BcmdMYW1iZGEoc2NyaXB0LCBsYW5nLCBhcmdzKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCB3cml0ZVZhbHVlKGZpbmFsIExhbWJkYSB2YWx1ZSwgZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlXcml0ZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgY29udGV4dC53cml0ZVZhbHVlKHZhbHVlLmdldExhbWJkYUxhbmd1YWdlKCksIGJ1ZmZlciwgZmFsc2UpOworICAgICAgICBjb250ZXh0LndyaXRlVmFsdWUodmFsdWUuZ2V0TGFtYmRhU2NyaXB0KCksIGJ1ZmZlciwgZmFsc2UpOworICAgICAgICBjb250ZXh0LndyaXRlVmFsdWUodmFsdWUuZ2V0TGFtYmRhQXJndW1lbnRzKCksIGJ1ZmZlciwgZmFsc2UpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9MaXN0U2VyaWFsaXplci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0xpc3RTZXJpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzRhYzE0YgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9MaXN0U2VyaWFsaXplci5qYXZhCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkudHlwZXM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuRGF0YVR5cGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5UmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVdyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5CdWZmZXI7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitwdWJsaWMgY2xhc3MgTGlzdFNlcmlhbGl6ZXIgZXh0ZW5kcyBTaW1wbGVUeXBlU2VyaWFsaXplcjxMaXN0PiB7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgQ29sbGVjdGlvblNlcmlhbGl6ZXIgY29sbGVjdGlvblNlcmlhbGl6ZXIgPSBuZXcgQ29sbGVjdGlvblNlcmlhbGl6ZXIoRGF0YVR5cGUuTElTVCk7CisKKyAgICBwdWJsaWMgTGlzdFNlcmlhbGl6ZXIoKSB7CisgICAgICAgIHN1cGVyKERhdGFUeXBlLkxJU1QpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCBMaXN0IHJlYWRWYWx1ZShmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVJlYWRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICAvLyBUaGUgY29sbGVjdGlvbiBpcyBhIExpc3Q8PgorICAgICAgICByZXR1cm4gKExpc3QpIGNvbGxlY3Rpb25TZXJpYWxpemVyLnJlYWRWYWx1ZShidWZmZXIsIGNvbnRleHQpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIHdyaXRlVmFsdWUoZmluYWwgTGlzdCB2YWx1ZSwgZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlXcml0ZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgY29sbGVjdGlvblNlcmlhbGl6ZXIud3JpdGVWYWx1ZSh2YWx1ZSwgYnVmZmVyLCBjb250ZXh0KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvTG9jYWxEYXRlU2VyaWFsaXplci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0xvY2FsRGF0ZVNlcmlhbGl6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmEzYTAyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0xvY2FsRGF0ZVNlcmlhbGl6ZXIuamF2YQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LnR5cGVzOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkRhdGFUeXBlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlXcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uQnVmZmVyOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnRpbWUuTG9jYWxEYXRlOworCisvKioKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqLworcHVibGljIGNsYXNzIExvY2FsRGF0ZVNlcmlhbGl6ZXIgZXh0ZW5kcyBTaW1wbGVUeXBlU2VyaWFsaXplcjxMb2NhbERhdGU+IHsKKyAgICBwdWJsaWMgTG9jYWxEYXRlU2VyaWFsaXplcigpIHsKKyAgICAgICAgc3VwZXIoRGF0YVR5cGUuTE9DQUxEQVRFKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgTG9jYWxEYXRlIHJlYWRWYWx1ZShmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVJlYWRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICByZXR1cm4gTG9jYWxEYXRlLm9mKGJ1ZmZlci5yZWFkSW50KCksIGJ1ZmZlci5yZWFkQnl0ZSgpLCBidWZmZXIucmVhZEJ5dGUoKSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGVWYWx1ZShmaW5hbCBMb2NhbERhdGUgdmFsdWUsIGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5V3JpdGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGJ1ZmZlci53cml0ZUludCh2YWx1ZS5nZXRZZWFyKCkpLndyaXRlQnl0ZSh2YWx1ZS5nZXRNb250aFZhbHVlKCkpLndyaXRlQnl0ZSh2YWx1ZS5nZXREYXlPZk1vbnRoKCkpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9Mb2NhbERhdGVUaW1lU2VyaWFsaXplci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0xvY2FsRGF0ZVRpbWVTZXJpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzNlOTJjOAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9Mb2NhbERhdGVUaW1lU2VyaWFsaXplci5qYXZhCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkudHlwZXM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuRGF0YVR5cGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5UmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVdyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5CdWZmZXI7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEudGltZS5Mb2NhbERhdGU7CitpbXBvcnQgamF2YS50aW1lLkxvY2FsRGF0ZVRpbWU7CitpbXBvcnQgamF2YS50aW1lLkxvY2FsVGltZTsKKworLyoqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK3B1YmxpYyBjbGFzcyBMb2NhbERhdGVUaW1lU2VyaWFsaXplciBleHRlbmRzIFNpbXBsZVR5cGVTZXJpYWxpemVyPExvY2FsRGF0ZVRpbWU+IHsKKyAgICBwdWJsaWMgTG9jYWxEYXRlVGltZVNlcmlhbGl6ZXIoKSB7CisgICAgICAgIHN1cGVyKERhdGFUeXBlLkxPQ0FMREFURVRJTUUpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCBMb2NhbERhdGVUaW1lIHJlYWRWYWx1ZShmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVJlYWRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICByZXR1cm4gTG9jYWxEYXRlVGltZS5vZihjb250ZXh0LnJlYWRWYWx1ZShidWZmZXIsIExvY2FsRGF0ZS5jbGFzcywgZmFsc2UpLAorICAgICAgICAgICAgICAgIGNvbnRleHQucmVhZFZhbHVlKGJ1ZmZlciwgTG9jYWxUaW1lLmNsYXNzLCBmYWxzZSkpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIHdyaXRlVmFsdWUoZmluYWwgTG9jYWxEYXRlVGltZSB2YWx1ZSwgZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlXcml0ZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgY29udGV4dC53cml0ZVZhbHVlKHZhbHVlLnRvTG9jYWxEYXRlKCksIGJ1ZmZlciwgZmFsc2UpOworICAgICAgICBjb250ZXh0LndyaXRlVmFsdWUodmFsdWUudG9Mb2NhbFRpbWUoKSwgYnVmZmVyLCBmYWxzZSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL0xvY2FsVGltZVNlcmlhbGl6ZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9Mb2NhbFRpbWVTZXJpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmI2NTRhYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9Mb2NhbFRpbWVTZXJpYWxpemVyLmphdmEKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS50eXBlczsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5EYXRhVHlwZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlSZWFkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5V3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlcjsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS50aW1lLkxvY2FsVGltZTsKKworLyoqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK3B1YmxpYyBjbGFzcyBMb2NhbFRpbWVTZXJpYWxpemVyIGV4dGVuZHMgU2ltcGxlVHlwZVNlcmlhbGl6ZXI8TG9jYWxUaW1lPiB7CisgICAgcHVibGljIExvY2FsVGltZVNlcmlhbGl6ZXIoKSB7CisgICAgICAgIHN1cGVyKERhdGFUeXBlLkxPQ0FMVElNRSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIExvY2FsVGltZSByZWFkVmFsdWUoZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlSZWFkZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgcmV0dXJuIExvY2FsVGltZS5vZk5hbm9PZkRheShidWZmZXIucmVhZExvbmcoKSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGVWYWx1ZShmaW5hbCBMb2NhbFRpbWUgdmFsdWUsIGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5V3JpdGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGJ1ZmZlci53cml0ZUxvbmcodmFsdWUudG9OYW5vT2ZEYXkoKSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL01hcEVudHJ5U2VyaWFsaXplci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL01hcEVudHJ5U2VyaWFsaXplci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4YTI4ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvTWFwRW50cnlTZXJpYWxpemVyLmphdmEKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS50eXBlczsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlXcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uQnVmZmVyOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworCitwdWJsaWMgY2xhc3MgTWFwRW50cnlTZXJpYWxpemVyIGV4dGVuZHMgU2ltcGxlVHlwZVNlcmlhbGl6ZXI8TWFwLkVudHJ5PiBpbXBsZW1lbnRzIFRyYW5zZm9ybVNlcmlhbGl6ZXI8TWFwLkVudHJ5PiB7CisgICAgcHVibGljIE1hcEVudHJ5U2VyaWFsaXplcigpIHsKKyAgICAgICAgc3VwZXIobnVsbCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIE1hcC5FbnRyeSByZWFkVmFsdWUoZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlSZWFkZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKCJBIG1hcCBlbnRyeSBzaG91bGQgbm90IGJlIHJlYWQgaW5kaXZpZHVhbGx5Iik7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGVWYWx1ZShmaW5hbCBNYXAuRW50cnkgdmFsdWUsIGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5V3JpdGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbigiQSBtYXAgZW50cnkgc2hvdWxkIG5vdCBiZSB3cml0dGVuIGluZGl2aWR1YWxseSIpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBPYmplY3QgdHJhbnNmb3JtKGZpbmFsIE1hcC5FbnRyeSB2YWx1ZSkgeworICAgICAgICBmaW5hbCBNYXAgbWFwID0gbmV3IEhhc2hNYXAoKTsKKyAgICAgICAgbWFwLnB1dCh2YWx1ZS5nZXRLZXkoKSwgdmFsdWUuZ2V0VmFsdWUoKSk7CisgICAgICAgIHJldHVybiBtYXA7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL01hcFNlcmlhbGl6ZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9NYXBTZXJpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzJiOTVkMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9NYXBTZXJpYWxpemVyLmphdmEKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS50eXBlczsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5EYXRhVHlwZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlSZWFkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5V3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlcjsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS51dGlsLkxpbmtlZEhhc2hNYXA7CitpbXBvcnQgamF2YS51dGlsLk1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuU2V0OworCitwdWJsaWMgY2xhc3MgTWFwU2VyaWFsaXplciBleHRlbmRzIFNpbXBsZVR5cGVTZXJpYWxpemVyPE1hcD4geworICAgIHB1YmxpYyBNYXBTZXJpYWxpemVyKCkgeworICAgICAgICBzdXBlcihEYXRhVHlwZS5NQVApOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCBNYXAgcmVhZFZhbHVlKGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5UmVhZGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIGludCBsZW5ndGggPSBidWZmZXIucmVhZEludCgpOworCisgICAgICAgIGZpbmFsIE1hcDxPYmplY3QsT2JqZWN0PiByZXN1bHQgPSBuZXcgTGlua2VkSGFzaE1hcDw+KGxlbmd0aCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIHJlc3VsdC5wdXQoY29udGV4dC5yZWFkKGJ1ZmZlciksIGNvbnRleHQucmVhZChidWZmZXIpKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGVWYWx1ZShmaW5hbCBNYXAgdmFsdWUsIGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5V3JpdGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGJ1ZmZlci53cml0ZUludCh2YWx1ZS5zaXplKCkpOworCisgICAgICAgIGZvciAoTWFwLkVudHJ5IGVudHJ5IDogKFNldDxNYXAuRW50cnk+KSB2YWx1ZS5lbnRyeVNldCgpKSB7CisgICAgICAgICAgICBjb250ZXh0LndyaXRlKGVudHJ5LmdldEtleSgpLCBidWZmZXIpOworICAgICAgICAgICAgY29udGV4dC53cml0ZShlbnRyeS5nZXRWYWx1ZSgpLCBidWZmZXIpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL01ldHJpY3NTZXJpYWxpemVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvTWV0cmljc1NlcmlhbGl6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZWRmMmNiCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL01ldHJpY3NTZXJpYWxpemVyLmphdmEKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS50eXBlczsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5EYXRhVHlwZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlSZWFkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5V3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5NZXRyaWNzOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5NdXRhYmxlTWV0cmljczsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5CdWZmZXI7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOworaW1wb3J0IGphdmEudXRpbC5NYXA7CitpbXBvcnQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQ7CisKK3B1YmxpYyBjbGFzcyBNZXRyaWNzU2VyaWFsaXplciBleHRlbmRzIFNpbXBsZVR5cGVTZXJpYWxpemVyPE1ldHJpY3M+IHsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBDb2xsZWN0aW9uU2VyaWFsaXplciBjb2xsZWN0aW9uU2VyaWFsaXplciA9IG5ldyBDb2xsZWN0aW9uU2VyaWFsaXplcihEYXRhVHlwZS5MSVNUKTsKKworICAgIHB1YmxpYyBNZXRyaWNzU2VyaWFsaXplcigpIHsKKyAgICAgICAgc3VwZXIoRGF0YVR5cGUuTUVUUklDUyk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIE1ldHJpY3MgcmVhZFZhbHVlKGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5UmVhZGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIC8vIENvbnNpZGVyIHVzaW5nIGEgY3VzdG9tIGltcGxlbWVudGF0aW9uLCBsaWtlICJEZWZhdWx0TWV0cmljcyIKKyAgICAgICAgZmluYWwgTXV0YWJsZU1ldHJpY3MgcmVzdWx0ID0gbmV3IE11dGFibGVNZXRyaWNzKAorICAgICAgICAgICAgICAgIGNvbnRleHQucmVhZFZhbHVlKGJ1ZmZlciwgU3RyaW5nLmNsYXNzLCBmYWxzZSksCisgICAgICAgICAgICAgICAgY29udGV4dC5yZWFkVmFsdWUoYnVmZmVyLCBTdHJpbmcuY2xhc3MsIGZhbHNlKSk7CisgICAgICAgIHJlc3VsdC5zZXREdXJhdGlvbihjb250ZXh0LnJlYWRWYWx1ZShidWZmZXIsIExvbmcuY2xhc3MsIGZhbHNlKSwgVGltZVVuaXQuTkFOT1NFQ09ORFMpOworICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLCBMb25nPiBjb3VudHMgPSBjb250ZXh0LnJlYWRWYWx1ZShidWZmZXIsIE1hcC5jbGFzcywgZmFsc2UpOworICAgICAgICBjb3VudHMuZm9yRWFjaChyZXN1bHQ6OnNldENvdW50KTsKKyAgICAgICAgZmluYWwgTWFwPFN0cmluZywgT2JqZWN0PiBhbm5vdGF0aW9ucyA9IGNvbnRleHQucmVhZFZhbHVlKGJ1ZmZlciwgTWFwLmNsYXNzLCBmYWxzZSk7CisgICAgICAgIGFubm90YXRpb25zLmZvckVhY2gocmVzdWx0OjpzZXRBbm5vdGF0aW9uKTsKKyAgICAgICAgZmluYWwgQ29sbGVjdGlvbjxNdXRhYmxlTWV0cmljcz4gbmVzdGVkTWV0cmljcyA9IGNvbGxlY3Rpb25TZXJpYWxpemVyLnJlYWRWYWx1ZShidWZmZXIsIGNvbnRleHQpOworICAgICAgICBuZXN0ZWRNZXRyaWNzLmZvckVhY2gocmVzdWx0OjphZGROZXN0ZWQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIHdyaXRlVmFsdWUoZmluYWwgTWV0cmljcyB2YWx1ZSwgZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlXcml0ZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgY29udGV4dC53cml0ZVZhbHVlKHZhbHVlLmdldElkKCksIGJ1ZmZlciwgZmFsc2UpOworICAgICAgICBjb250ZXh0LndyaXRlVmFsdWUodmFsdWUuZ2V0TmFtZSgpLCBidWZmZXIsIGZhbHNlKTsKKyAgICAgICAgY29udGV4dC53cml0ZVZhbHVlKHZhbHVlLmdldER1cmF0aW9uKFRpbWVVbml0Lk5BTk9TRUNPTkRTKSwgYnVmZmVyLCBmYWxzZSk7CisgICAgICAgIGNvbnRleHQud3JpdGVWYWx1ZSh2YWx1ZS5nZXRDb3VudHMoKSwgYnVmZmVyLCBmYWxzZSk7CisgICAgICAgIGNvbnRleHQud3JpdGVWYWx1ZSh2YWx1ZS5nZXRBbm5vdGF0aW9ucygpLCBidWZmZXIsIGZhbHNlKTsKKworICAgICAgICAvLyBBdm9pZCBjaGFuZ2luZyB0eXBlIHRvIExpc3QKKyAgICAgICAgY29sbGVjdGlvblNlcmlhbGl6ZXIud3JpdGVWYWx1ZSh2YWx1ZS5nZXROZXN0ZWQoKSwgYnVmZmVyLCBjb250ZXh0KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvTW9udGhEYXlTZXJpYWxpemVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvTW9udGhEYXlTZXJpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzJjMmM5MgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9Nb250aERheVNlcmlhbGl6ZXIuamF2YQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LnR5cGVzOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkRhdGFUeXBlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlXcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uQnVmZmVyOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnRpbWUuTW9udGhEYXk7CisKKy8qKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgY2xhc3MgTW9udGhEYXlTZXJpYWxpemVyIGV4dGVuZHMgU2ltcGxlVHlwZVNlcmlhbGl6ZXI8TW9udGhEYXk+IHsKKyAgICBwdWJsaWMgTW9udGhEYXlTZXJpYWxpemVyKCkgeworICAgICAgICBzdXBlcihEYXRhVHlwZS5NT05USERBWSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIE1vbnRoRGF5IHJlYWRWYWx1ZShmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVJlYWRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICByZXR1cm4gTW9udGhEYXkub2YoYnVmZmVyLnJlYWRCeXRlKCksIGJ1ZmZlci5yZWFkQnl0ZSgpKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCB3cml0ZVZhbHVlKGZpbmFsIE1vbnRoRGF5IHZhbHVlLCBmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVdyaXRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBidWZmZXIud3JpdGVCeXRlKHZhbHVlLmdldE1vbnRoVmFsdWUoKSkud3JpdGVCeXRlKHZhbHVlLmdldERheU9mTW9udGgoKSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL09mZnNldERhdGVUaW1lU2VyaWFsaXplci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL09mZnNldERhdGVUaW1lU2VyaWFsaXplci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwYjFjNzkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvT2Zmc2V0RGF0ZVRpbWVTZXJpYWxpemVyLmphdmEKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS50eXBlczsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5EYXRhVHlwZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlSZWFkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5V3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlcjsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS50aW1lLkxvY2FsRGF0ZVRpbWU7CitpbXBvcnQgamF2YS50aW1lLk9mZnNldERhdGVUaW1lOworaW1wb3J0IGphdmEudGltZS5ab25lT2Zmc2V0OworCisvKioKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqLworcHVibGljIGNsYXNzIE9mZnNldERhdGVUaW1lU2VyaWFsaXplciBleHRlbmRzIFNpbXBsZVR5cGVTZXJpYWxpemVyPE9mZnNldERhdGVUaW1lPiB7CisgICAgcHVibGljIE9mZnNldERhdGVUaW1lU2VyaWFsaXplcigpIHsKKyAgICAgICAgc3VwZXIoRGF0YVR5cGUuT0ZGU0VUREFURVRJTUUpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCBPZmZzZXREYXRlVGltZSByZWFkVmFsdWUoZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlSZWFkZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgTG9jYWxEYXRlVGltZSBsZHQgPSBjb250ZXh0LnJlYWRWYWx1ZShidWZmZXIsIExvY2FsRGF0ZVRpbWUuY2xhc3MsIGZhbHNlKTsKKyAgICAgICAgZmluYWwgWm9uZU9mZnNldCB6byA9IGNvbnRleHQucmVhZFZhbHVlKGJ1ZmZlciwgWm9uZU9mZnNldC5jbGFzcywgZmFsc2UpOworICAgICAgICByZXR1cm4gT2Zmc2V0RGF0ZVRpbWUub2YobGR0LCB6byk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGVWYWx1ZShmaW5hbCBPZmZzZXREYXRlVGltZSB2YWx1ZSwgZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlXcml0ZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgY29udGV4dC53cml0ZVZhbHVlKHZhbHVlLnRvTG9jYWxEYXRlVGltZSgpLCBidWZmZXIsIGZhbHNlKTsKKyAgICAgICAgY29udGV4dC53cml0ZVZhbHVlKHZhbHVlLmdldE9mZnNldCgpLCBidWZmZXIsIGZhbHNlKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvT2Zmc2V0VGltZVNlcmlhbGl6ZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9PZmZzZXRUaW1lU2VyaWFsaXplci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0ZGNmZTYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvT2Zmc2V0VGltZVNlcmlhbGl6ZXIuamF2YQpAQCAtMCwwICsxLDUxIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LnR5cGVzOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkRhdGFUeXBlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlXcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uQnVmZmVyOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnRpbWUuTG9jYWxUaW1lOworaW1wb3J0IGphdmEudGltZS5PZmZzZXRUaW1lOworaW1wb3J0IGphdmEudGltZS5ab25lT2Zmc2V0OworCisvKioKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqLworcHVibGljIGNsYXNzIE9mZnNldFRpbWVTZXJpYWxpemVyIGV4dGVuZHMgU2ltcGxlVHlwZVNlcmlhbGl6ZXI8T2Zmc2V0VGltZT4geworICAgIHB1YmxpYyBPZmZzZXRUaW1lU2VyaWFsaXplcigpIHsKKyAgICAgICAgc3VwZXIoRGF0YVR5cGUuT0ZGU0VUVElNRSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIE9mZnNldFRpbWUgcmVhZFZhbHVlKGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5UmVhZGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIExvY2FsVGltZSBsZHQgPSBjb250ZXh0LnJlYWRWYWx1ZShidWZmZXIsIExvY2FsVGltZS5jbGFzcywgZmFsc2UpOworICAgICAgICBmaW5hbCBab25lT2Zmc2V0IHpvID0gY29udGV4dC5yZWFkVmFsdWUoYnVmZmVyLCBab25lT2Zmc2V0LmNsYXNzLCBmYWxzZSk7CisgICAgICAgIHJldHVybiBPZmZzZXRUaW1lLm9mKGxkdCwgem8pOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIHdyaXRlVmFsdWUoZmluYWwgT2Zmc2V0VGltZSB2YWx1ZSwgZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlXcml0ZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgY29udGV4dC53cml0ZVZhbHVlKHZhbHVlLnRvTG9jYWxUaW1lKCksIGJ1ZmZlciwgZmFsc2UpOworICAgICAgICBjb250ZXh0LndyaXRlVmFsdWUodmFsdWUuZ2V0T2Zmc2V0KCksIGJ1ZmZlciwgZmFsc2UpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9QU2VyaWFsaXplci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL1BTZXJpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTVlYTNlMwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9QU2VyaWFsaXplci5qYXZhCkBAIC0wLDAgKzEsMjAxIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LnR5cGVzOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkRhdGFUeXBlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlXcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5BbmRQOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5Db25uZWN0aXZlUDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5CdWZmZXI7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEubGFuZy5yZWZsZWN0Lkludm9jYXRpb25UYXJnZXRFeGNlcHRpb247CitpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuTWV0aG9kOworaW1wb3J0IGphdmEubGFuZy5yZWZsZWN0Lk1vZGlmaWVyOworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkFycmF5czsKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgamF2YS51dGlsLk9iamVjdHM7CitpbXBvcnQgamF2YS51dGlsLmNvbmN1cnJlbnQuQ29uY3VycmVudEhhc2hNYXA7CisKKy8qKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgY2xhc3MgUFNlcmlhbGl6ZXI8VCBleHRlbmRzIFA+IGV4dGVuZHMgU2ltcGxlVHlwZVNlcmlhbGl6ZXI8VD4geworCisgICAgcHJpdmF0ZSBmaW5hbCBDbGFzczxUPiBjbGFzc09mUDsKKworICAgIHByaXZhdGUgZmluYWwgQ29uY3VycmVudEhhc2hNYXA8UEZ1bmN0aW9uSWQsIENoZWNrZWRGdW5jdGlvbj4gbWV0aG9kcyA9IG5ldyBDb25jdXJyZW50SGFzaE1hcDw+KCk7CisKKyAgICBwdWJsaWMgUFNlcmlhbGl6ZXIoZmluYWwgRGF0YVR5cGUgdHlwZU9mUCwgZmluYWwgQ2xhc3M8VD4gY2xhc3NPZlApIHsKKyAgICAgICAgc3VwZXIodHlwZU9mUCk7CisgICAgICAgIHRoaXMuY2xhc3NPZlAgPSBjbGFzc09mUDsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgVCByZWFkVmFsdWUoZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlSZWFkZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgU3RyaW5nIHByZWRpY2F0ZU5hbWUgPSBjb250ZXh0LnJlYWRWYWx1ZShidWZmZXIsIFN0cmluZy5jbGFzcywgZmFsc2UpOworICAgICAgICBmaW5hbCBpbnQgbGVuZ3RoID0gY29udGV4dC5yZWFkVmFsdWUoYnVmZmVyLCBJbnRlZ2VyLmNsYXNzLCBmYWxzZSk7CisgICAgICAgIGZpbmFsIE9iamVjdFtdIGFyZ3MgPSBuZXcgT2JqZWN0W2xlbmd0aF07CisgICAgICAgIGZpbmFsIENsYXNzPD8+W10gYXJndW1lbnRDbGFzc2VzID0gbmV3IENsYXNzW2xlbmd0aF07CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGFyZ3NbaV0gPSBjb250ZXh0LnJlYWQoYnVmZmVyKTsKKyAgICAgICAgICAgIGFyZ3VtZW50Q2xhc3Nlc1tpXSA9IGFyZ3NbaV0uZ2V0Q2xhc3MoKTsKKyAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgaWYgKCJhbmQiLmVxdWFscyhwcmVkaWNhdGVOYW1lKSkKKyAgICAgICAgICAgIHJldHVybiAoVCkgKChQKSBhcmdzWzBdKS5hbmQoKFApIGFyZ3NbMV0pOworICAgICAgICBlbHNlIGlmICgib3IiLmVxdWFscyhwcmVkaWNhdGVOYW1lKSkKKyAgICAgICAgICAgIHJldHVybiAoVCkgKChQKSBhcmdzWzBdKS5vcigoUCkgYXJnc1sxXSk7CisgICAgICAgIGVsc2UgaWYgKCJub3QiLmVxdWFscyhwcmVkaWNhdGVOYW1lKSkKKyAgICAgICAgICAgIHJldHVybiAoVCkgUC5ub3QoKFApIGFyZ3NbMF0pOworCisgICAgICAgIGZpbmFsIENoZWNrZWRGdW5jdGlvbjxPYmplY3RbXSwgVD4gZiA9IGdldE1ldGhvZChwcmVkaWNhdGVOYW1lLCBhcmd1bWVudENsYXNzZXMpOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gZi5hcHBseShhcmdzKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSU9FeGNlcHRpb24oU3RyaW5nLmZvcm1hdCgiQ2FuJ3QgZGVzZXJpYWxpemUgdmFsdWUgaW50byB0aGUgcHJlZGljYXRlOiAnJXMnIiwgcHJlZGljYXRlTmFtZSksIGV4KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgQ2hlY2tlZEZ1bmN0aW9uIGdldE1ldGhvZChmaW5hbCBTdHJpbmcgcHJlZGljYXRlTmFtZSwgZmluYWwgQ2xhc3M8Pz5bXSBhcmd1bWVudENsYXNzZXMpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIFBGdW5jdGlvbklkIGlkID0gbmV3IFBGdW5jdGlvbklkKHByZWRpY2F0ZU5hbWUsIGFyZ3VtZW50Q2xhc3Nlcyk7CisKKyAgICAgICAgQ2hlY2tlZEZ1bmN0aW9uPE9iamVjdFtdLCBUPiByZXN1bHQgPSBtZXRob2RzLmdldChpZCk7CisKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKSB7CisgICAgICAgICAgICBib29sZWFuIGNvbGxlY3Rpb25UeXBlID0gZmFsc2U7CisgICAgICAgICAgICBNZXRob2QgbTsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgLy8gZG8gYSBkaXJlY3QgbG9va3VwCisgICAgICAgICAgICAgICAgbSA9IGNsYXNzT2ZQLmdldE1ldGhvZChwcmVkaWNhdGVOYW1lLCBhcmd1bWVudENsYXNzZXMpOworICAgICAgICAgICAgfSBjYXRjaCAoTm9TdWNoTWV0aG9kRXhjZXB0aW9uIGV4MCkgeworICAgICAgICAgICAgICAgIC8vIHRoZW4gdHJ5IGNvbGxlY3Rpb24gdHlwZXMKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBtID0gY2xhc3NPZlAuZ2V0TWV0aG9kKHByZWRpY2F0ZU5hbWUsIENvbGxlY3Rpb24uY2xhc3MpOworICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uVHlwZSA9IHRydWU7CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoTm9TdWNoTWV0aG9kRXhjZXB0aW9uIGV4MSkgeworICAgICAgICAgICAgICAgICAgICAvLyBmaW5hbGx5IGdvIGZvciB0aGUgZ2VuZXJpY3MKKyAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG0gPSBjbGFzc09mUC5nZXRNZXRob2QocHJlZGljYXRlTmFtZSwgT2JqZWN0LmNsYXNzKTsKKyAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoTm9TdWNoTWV0aG9kRXhjZXB0aW9uIGV4MikgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gZmluYWxseSBnbyBmb3IgdGhlIGdlbmVyaWNzCisgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSBjbGFzc09mUC5nZXRNZXRob2QocHJlZGljYXRlTmFtZSwgT2JqZWN0LmNsYXNzLCBPYmplY3QuY2xhc3MpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoTm9TdWNoTWV0aG9kRXhjZXB0aW9uIGV4MykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbihTdHJpbmcuZm9ybWF0KCJDYW4ndCBmaW5kIHByZWRpY2F0ZSBtZXRob2Q6ICclcyciLCBwcmVkaWNhdGVOYW1lKSwgZXgyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZmluYWwgTWV0aG9kIGZpbmFsTWV0aG9kID0gbTsKKworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBpZiAoTW9kaWZpZXIuaXNTdGF0aWMobS5nZXRNb2RpZmllcnMoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNvbGxlY3Rpb25UeXBlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAoYXJncykgLT4gKFQpIGZpbmFsTWV0aG9kLmludm9rZShudWxsLCBBcnJheXMuYXNMaXN0KGFyZ3MpKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChhcmdzKSAtPiAoVCkgZmluYWxNZXRob2QuaW52b2tlKG51bGwsIGFyZ3MpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gdHJ5IGFuIGluc3RhbmNlIG1ldGhvZCBhcyBpdCBtaWdodCBiZSBhIGZvcm0gb2YgQ29ubmVjdGl2ZVAgd2hpY2ggbWVhbnMgdGhlcmUgaXMgYSBQIGFzIGFuCisgICAgICAgICAgICAgICAgICAgIC8vIGFyZ3VtZW50IHRoYXQgc2hvdWxkIGJlIHVzZWQgYXMgdGhlIG9iamVjdCBvZiBhbiBpbnN0YW5jZSBtZXRob2QKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50Q2xhc3Nlcy5sZW5ndGggIT0gMikgeworICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbihTdHJpbmcuZm9ybWF0KCJDb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBmb3JtIG9mIFAgZm9yICVzIGFuZCAlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZU5hbWUsIEFycmF5cy5hc0xpc3QoYXJndW1lbnRDbGFzc2VzKSkpOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKGFyZ3MpIC0+IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGFyZ3NbMF0gaW5zdGFuY2VvZiBQKSB8fCAhKGFyZ3NbMV0gaW5zdGFuY2VvZiBQKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKFN0cmluZy5mb3JtYXQoIkNvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIGZvcm0gb2YgUCBmb3IgJXMgYW5kICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZU5hbWUsIEFycmF5cy5hc0xpc3QoYXJncykpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgUCBmaXJzdFAgPSAoUCkgYXJnc1swXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIFAgc2Vjb25kUCA9IChQKSBhcmdzWzFdOworCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFQpIGZpbmFsTWV0aG9kLmludm9rZShmaXJzdFAsIHNlY29uZFApOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIG1ldGhvZHMucHV0KGlkLCByZXN1bHQpOworICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKGV4KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGVWYWx1ZShmaW5hbCBUIHZhbHVlLCBmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVdyaXRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICAvLyB0aGUgcHJlZGljYXRlIG5hbWUgaXMgZWl0aGVyIGEgc3RhdGljIG1ldGhvZCBvZiBQIG9yIGFuIGluc3RhbmNlIG1ldGhvZCB3aGVuIGEgdHlwZSBDb25uZWN0aXZlUAorICAgICAgICBmaW5hbCBib29sZWFuIGlzQ29ubmVjdGVkUCA9IHZhbHVlIGluc3RhbmNlb2YgQ29ubmVjdGl2ZVA7CisgICAgICAgIGZpbmFsIFN0cmluZyBwcmVkaWNhdGVOYW1lID0gaXNDb25uZWN0ZWRQID8KKyAgICAgICAgICAgICAgICAodmFsdWUgaW5zdGFuY2VvZiBBbmRQID8gImFuZCIgOiAib3IiKSA6CisgICAgICAgICAgICAgICAgdmFsdWUuZ2V0QmlQcmVkaWNhdGUoKS50b1N0cmluZygpOworICAgICAgICBmaW5hbCBPYmplY3QgYXJncyA9IGlzQ29ubmVjdGVkUCA/ICgoQ29ubmVjdGl2ZVA8Pz4pIHZhbHVlKS5nZXRQcmVkaWNhdGVzKCkgOiB2YWx1ZS5nZXRWYWx1ZSgpOworCisgICAgICAgIGZpbmFsIExpc3Q8T2JqZWN0PiBhcmdzQXNMaXN0ID0gYXJncyBpbnN0YW5jZW9mIENvbGxlY3Rpb24gPyBuZXcgQXJyYXlMaXN0PD4oKENvbGxlY3Rpb24pIGFyZ3MpIDogQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdChhcmdzKTsKKyAgICAgICAgZmluYWwgaW50IGxlbmd0aCA9IGFyZ3NBc0xpc3Quc2l6ZSgpOworCisgICAgICAgIGNvbnRleHQud3JpdGVWYWx1ZShwcmVkaWNhdGVOYW1lLCBidWZmZXIsIGZhbHNlKTsKKyAgICAgICAgY29udGV4dC53cml0ZVZhbHVlKGxlbmd0aCwgYnVmZmVyLCBmYWxzZSk7CisKKyAgICAgICAgZm9yIChPYmplY3QgbyA6IGFyZ3NBc0xpc3QpIHsKKyAgICAgICAgICAgIGNvbnRleHQud3JpdGUobywgYnVmZmVyKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBGdW5jdGlvbmFsSW50ZXJmYWNlCisgICAgaW50ZXJmYWNlIENoZWNrZWRGdW5jdGlvbjxBLCBSPiB7CisgICAgICAgIFIgYXBwbHkoQSB0KSB0aHJvd3MgSW52b2NhdGlvblRhcmdldEV4Y2VwdGlvbiwgSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbjsKKyAgICB9CisKKyAgICBjbGFzcyBQRnVuY3Rpb25JZCB7CisgICAgICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIHByZWRpY2F0ZU5hbWU7CisgICAgICAgIHByaXZhdGUgZmluYWwgQ2xhc3M8Pz5bXSBhcmd1bWVudENsYXNzZXM7CisKKyAgICAgICAgUEZ1bmN0aW9uSWQoZmluYWwgU3RyaW5nIHByZWRpY2F0ZU5hbWUsIGZpbmFsIENsYXNzPD8+W10gYXJndW1lbnRDbGFzc2VzKSB7CisgICAgICAgICAgICB0aGlzLnByZWRpY2F0ZU5hbWUgPSBwcmVkaWNhdGVOYW1lOworICAgICAgICAgICAgdGhpcy5hcmd1bWVudENsYXNzZXMgPSBhcmd1bWVudENsYXNzZXM7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCBvKSB7CisgICAgICAgICAgICBpZiAodGhpcyA9PSBvKSByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGlmIChvID09IG51bGwgfHwgZ2V0Q2xhc3MoKSAhPSBvLmdldENsYXNzKCkpIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIFBGdW5jdGlvbklkIHRoYXQgPSAoUEZ1bmN0aW9uSWQpIG87CisgICAgICAgICAgICByZXR1cm4gcHJlZGljYXRlTmFtZS5lcXVhbHModGhhdC5wcmVkaWNhdGVOYW1lKSAmJgorICAgICAgICAgICAgICAgICAgICBBcnJheXMuZXF1YWxzKGFyZ3VtZW50Q2xhc3NlcywgdGhhdC5hcmd1bWVudENsYXNzZXMpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7CisgICAgICAgICAgICBpbnQgcmVzdWx0ID0gT2JqZWN0cy5oYXNoKHByZWRpY2F0ZU5hbWUpOworICAgICAgICAgICAgcmVzdWx0ID0gMzEgKiByZXN1bHQgKyBBcnJheXMuaGFzaENvZGUoYXJndW1lbnRDbGFzc2VzKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvUGF0aFNlcmlhbGl6ZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9QYXRoU2VyaWFsaXplci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1OTQzNmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvUGF0aFNlcmlhbGl6ZXIuamF2YQpAQCAtMCwwICsxLDYzIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LnR5cGVzOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkRhdGFUeXBlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlXcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QYXRoOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLk11dGFibGVQYXRoOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLnJlZmVyZW5jZS5SZWZlcmVuY2VGYWN0b3J5OworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuU2V0OworCisvKioKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqLworcHVibGljIGNsYXNzIFBhdGhTZXJpYWxpemVyIGV4dGVuZHMgU2ltcGxlVHlwZVNlcmlhbGl6ZXI8UGF0aD4geworCisgICAgcHVibGljIFBhdGhTZXJpYWxpemVyKCkgeworICAgICAgICBzdXBlcihEYXRhVHlwZS5QQVRIKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgUGF0aCByZWFkVmFsdWUoZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlSZWFkZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgTXV0YWJsZVBhdGggcGF0aCA9IChNdXRhYmxlUGF0aCkgTXV0YWJsZVBhdGgubWFrZSgpOworICAgICAgICBmaW5hbCBMaXN0PFNldDxTdHJpbmc+PiBsYWJlbHMgPSBjb250ZXh0LnJlYWQoYnVmZmVyKTsKKyAgICAgICAgZmluYWwgTGlzdDxPYmplY3Q+IG9iamVjdHMgPSBjb250ZXh0LnJlYWQoYnVmZmVyKTsKKworICAgICAgICBpZiAobGFiZWxzLnNpemUoKSAhPSBvYmplY3RzLnNpemUoKSkKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIkZvcm1hdCBmb3IgUGF0aCBvYmplY3QgcmVxdWlyZXMgdGhhdCB0aGUgbGFiZWxzIGFuZCBvYmplY3RzIGZpZWxkcyBiZSBvZiB0aGUgc2FtZSBsZW5ndGgiKTsKKworICAgICAgICBmb3IgKGludCBpeCA9IDA7IGl4IDwgbGFiZWxzLnNpemUoKTsgaXgrKykgeworICAgICAgICAgICAgcGF0aC5leHRlbmQob2JqZWN0cy5nZXQoaXgpLCBsYWJlbHMuZ2V0KGl4KSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gUmVmZXJlbmNlRmFjdG9yeS5kZXRhY2gocGF0aCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGVWYWx1ZShmaW5hbCBQYXRoIHZhbHVlLCBmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVdyaXRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBjb250ZXh0LndyaXRlKHZhbHVlLmxhYmVscygpLCBidWZmZXIpOworICAgICAgICBjb250ZXh0LndyaXRlKHZhbHVlLm9iamVjdHMoKSwgYnVmZmVyKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvUGVyaW9kU2VyaWFsaXplci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL1BlcmlvZFNlcmlhbGl6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjdlMmNiCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL1BlcmlvZFNlcmlhbGl6ZXIuamF2YQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LnR5cGVzOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkRhdGFUeXBlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlXcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uQnVmZmVyOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnRpbWUuUGVyaW9kOworCisvKioKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqLworcHVibGljIGNsYXNzIFBlcmlvZFNlcmlhbGl6ZXIgZXh0ZW5kcyBTaW1wbGVUeXBlU2VyaWFsaXplcjxQZXJpb2Q+IHsKKyAgICBwdWJsaWMgUGVyaW9kU2VyaWFsaXplcigpIHsKKyAgICAgICAgc3VwZXIoRGF0YVR5cGUuUEVSSU9EKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgUGVyaW9kIHJlYWRWYWx1ZShmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVJlYWRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICByZXR1cm4gUGVyaW9kLm9mKGJ1ZmZlci5yZWFkSW50KCksIGJ1ZmZlci5yZWFkSW50KCksIGJ1ZmZlci5yZWFkSW50KCkpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIHdyaXRlVmFsdWUoZmluYWwgUGVyaW9kIHZhbHVlLCBmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVdyaXRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBidWZmZXIud3JpdGVJbnQodmFsdWUuZ2V0WWVhcnMoKSkud3JpdGVJbnQodmFsdWUuZ2V0TW9udGhzKCkpLndyaXRlSW50KHZhbHVlLmdldERheXMoKSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL1Byb3BlcnR5U2VyaWFsaXplci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL1Byb3BlcnR5U2VyaWFsaXplci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmYTIyZWYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvUHJvcGVydHlTZXJpYWxpemVyLmphdmEKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS50eXBlczsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5EYXRhVHlwZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlSZWFkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5V3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlByb3BlcnR5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLnJlZmVyZW5jZS5SZWZlcmVuY2VQcm9wZXJ0eTsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CisKKy8qKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgY2xhc3MgUHJvcGVydHlTZXJpYWxpemVyIGV4dGVuZHMgU2ltcGxlVHlwZVNlcmlhbGl6ZXI8UHJvcGVydHk+IHsKKworICAgIHB1YmxpYyBQcm9wZXJ0eVNlcmlhbGl6ZXIoKSB7CisgICAgICAgIHN1cGVyKERhdGFUeXBlLlBST1BFUlRZKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgUHJvcGVydHkgcmVhZFZhbHVlKGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5UmVhZGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIFByb3BlcnR5IHAgPSBuZXcgUmVmZXJlbmNlUHJvcGVydHk8Pihjb250ZXh0LnJlYWRWYWx1ZShidWZmZXIsIFN0cmluZy5jbGFzcywgZmFsc2UpLCBjb250ZXh0LnJlYWQoYnVmZmVyKSk7CisKKyAgICAgICAgLy8gZGlzY2FyZCB0aGUgcGFyZW50IGVsZW1lbnQgYXMgaXQncyBub3Qgc2VyaWFsaXplZCBmb3IgcmVmZXJlbmNlcyByaWdodCBub3cKKyAgICAgICAgY29udGV4dC5yZWFkKGJ1ZmZlcik7CisgICAgICAgIHJldHVybiBwOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIHdyaXRlVmFsdWUoZmluYWwgUHJvcGVydHkgdmFsdWUsIGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5V3JpdGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGNvbnRleHQud3JpdGVWYWx1ZSh2YWx1ZS5rZXkoKSwgYnVmZmVyLCBmYWxzZSk7CisgICAgICAgIGNvbnRleHQud3JpdGUodmFsdWUudmFsdWUoKSwgYnVmZmVyKTsKKworICAgICAgICAvLyBsZWF2ZSBzcGFjZSBmb3IgdGhlIHBhcmVudCByZWZlcmVuY2UgZWxlbWVudCBhcyBpdCdzIG5vdCBzZXJpYWxpemVkIGZvciByZWZlcmVuY2VzCisgICAgICAgIGNvbnRleHQud3JpdGUobnVsbCwgYnVmZmVyKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvU2V0U2VyaWFsaXplci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL1NldFNlcmlhbGl6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTdhNzM5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL1NldFNlcmlhbGl6ZXIuamF2YQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LnR5cGVzOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkRhdGFUeXBlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlXcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uQnVmZmVyOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKK2ltcG9ydCBqYXZhLnV0aWwuU2V0OworCitwdWJsaWMgY2xhc3MgU2V0U2VyaWFsaXplciBleHRlbmRzIFNpbXBsZVR5cGVTZXJpYWxpemVyPFNldD57CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgQ29sbGVjdGlvblNlcmlhbGl6ZXIgY29sbGVjdGlvblNlcmlhbGl6ZXIgPSBuZXcgQ29sbGVjdGlvblNlcmlhbGl6ZXIoRGF0YVR5cGUuU0VUKTsKKworICAgIHB1YmxpYyBTZXRTZXJpYWxpemVyKCkgeworICAgICAgICBzdXBlcihEYXRhVHlwZS5TRVQpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCBTZXQgcmVhZFZhbHVlKGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5UmVhZGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIHJldHVybiBuZXcgSGFzaFNldDw+KGNvbGxlY3Rpb25TZXJpYWxpemVyLnJlYWRWYWx1ZShidWZmZXIsIGNvbnRleHQpKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCB3cml0ZVZhbHVlKGZpbmFsIFNldCB2YWx1ZSwgZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlXcml0ZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgY29sbGVjdGlvblNlcmlhbGl6ZXIud3JpdGVWYWx1ZSh2YWx1ZSwgYnVmZmVyLCBjb250ZXh0KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvU2ltcGxlVHlwZVNlcmlhbGl6ZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9TaW1wbGVUeXBlU2VyaWFsaXplci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2YTBmOTMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvU2ltcGxlVHlwZVNlcmlhbGl6ZXIuamF2YQpAQCAtMCwwICsxLDEwMiBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS50eXBlczsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5EYXRhVHlwZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlSZWFkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5V3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5UeXBlU2VyaWFsaXplcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5CdWZmZXI7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworCisvKioKKyAqIEJhc2UgY2xhc3MgZm9yIHNlcmlhbGl6YXRpb24gb2YgdHlwZXMgdGhhdCBkb24ndCBjb250YWluIHR5cGUgc3BlY2lmaWMgaW5mb3JtYXRpb24gb25seSB7dHlwZV9jb2RlfSwge3ZhbHVlX2ZsYWd9CisgKiBhbmQge3ZhbHVlfS4KKyAqLworcHVibGljIGFic3RyYWN0IGNsYXNzIFNpbXBsZVR5cGVTZXJpYWxpemVyPFQ+IGltcGxlbWVudHMgVHlwZVNlcmlhbGl6ZXI8VD4geworICAgIHByaXZhdGUgZmluYWwgRGF0YVR5cGUgZGF0YVR5cGU7CisKKyAgICBwdWJsaWMgRGF0YVR5cGUgZ2V0RGF0YVR5cGUoKSB7CisgICAgICAgIHJldHVybiBkYXRhVHlwZTsKKyAgICB9CisKKyAgICBwdWJsaWMgU2ltcGxlVHlwZVNlcmlhbGl6ZXIoZmluYWwgRGF0YVR5cGUgZGF0YVR5cGUpIHsKKyAgICAgICAgdGhpcy5kYXRhVHlwZSA9IGRhdGFUeXBlOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBUIHJlYWQoZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlSZWFkZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgLy8gTm8ge3R5cGVfaW5mb30sIGp1c3Qge3ZhbHVlX2ZsYWd9e3ZhbHVlfQorICAgICAgICByZXR1cm4gcmVhZFZhbHVlKGJ1ZmZlciwgY29udGV4dCwgdHJ1ZSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFQgcmVhZFZhbHVlKGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5UmVhZGVyIGNvbnRleHQsIGZpbmFsIGJvb2xlYW4gbnVsbGFibGUpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGlmIChudWxsYWJsZSkgeworICAgICAgICAgICAgZmluYWwgYnl0ZSB2YWx1ZUZsYWcgPSBidWZmZXIucmVhZEJ5dGUoKTsKKyAgICAgICAgICAgIGlmICgodmFsdWVGbGFnICYgMSkgPT0gMSkgeworICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJlYWRWYWx1ZShidWZmZXIsIGNvbnRleHQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlYWRzIGEgbm9uLW51bGxhYmxlIHZhbHVlIGFjY29yZGluZyB0byB0aGUgdHlwZSBmb3JtYXQuCisgICAgICogQHBhcmFtIGJ1ZmZlciBBIGJ1ZmZlciB3aGljaCByZWFkZXIgaW5kZXggaGFzIGJlZW4gc2V0IHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHt2YWx1ZX0uCisgICAgICogQHBhcmFtIGNvbnRleHQgVGhlIGJpbmFyeSB3cml0ZXIuCisgICAgICogQHJldHVybgorICAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgVCByZWFkVmFsdWUoZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlSZWFkZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uOworCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgd3JpdGUoZmluYWwgVCB2YWx1ZSwgZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlXcml0ZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgd3JpdGVWYWx1ZSh2YWx1ZSwgYnVmZmVyLCBjb250ZXh0LCB0cnVlKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCB3cml0ZVZhbHVlKGZpbmFsIFQgdmFsdWUsIGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5V3JpdGVyIGNvbnRleHQsIGZpbmFsIGJvb2xlYW4gbnVsbGFibGUpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7CisgICAgICAgICAgICBpZiAoIW51bGxhYmxlKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKCJVbmV4cGVjdGVkIG51bGwgdmFsdWUgd2hlbiBudWxsYWJsZSBpcyBmYWxzZSIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjb250ZXh0LndyaXRlVmFsdWVGbGFnTnVsbChidWZmZXIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG51bGxhYmxlKSB7CisgICAgICAgICAgICBjb250ZXh0LndyaXRlVmFsdWVGbGFnTm9uZShidWZmZXIpOworICAgICAgICB9CisKKyAgICAgICAgd3JpdGVWYWx1ZSh2YWx1ZSwgYnVmZmVyLCBjb250ZXh0KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBXcml0ZXMgYSBub24tbnVsbGFibGUgdmFsdWUgaW50byBhIGJ1ZmZlciB1c2luZyB0aGUgcHJvdmlkZWQgYWxsb2NhdG9yLgorICAgICAqIEBwYXJhbSB2YWx1ZSBBIG5vbi1udWxsYWJsZSB2YWx1ZS4KKyAgICAgKiBAcGFyYW0gYnVmZmVyIFRoZSBidWZmZXIgYWxsb2NhdG9yIHRvIHVzZS4KKyAgICAgKiBAcGFyYW0gY29udGV4dCBUaGUgYmluYXJ5IHdyaXRlci4KKyAgICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uCisgICAgICovCisgICAgcHJvdGVjdGVkIGFic3RyYWN0IHZvaWQgd3JpdGVWYWx1ZShmaW5hbCBUIHZhbHVlLCBmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVdyaXRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb247Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvU2luZ2xlVHlwZVNlcmlhbGl6ZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9TaW5nbGVUeXBlU2VyaWFsaXplci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4ZGZiNWMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvU2luZ2xlVHlwZVNlcmlhbGl6ZXIuamF2YQpAQCAtMCwwICsxLDcxIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LnR5cGVzOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkRhdGFUeXBlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlXcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uQnVmZmVyOworCitpbXBvcnQgamF2YS50aW1lLlllYXI7CitpbXBvcnQgamF2YS51dGlsLmZ1bmN0aW9uLkJpQ29uc3VtZXI7CitpbXBvcnQgamF2YS51dGlsLmZ1bmN0aW9uLkZ1bmN0aW9uOworCisvKioKKyAqIFJlcHJlc2VudHMgYSBzZXJpYWxpemVyIGZvciB0eXBlcyB0aGF0IGJlIHJlcHJlc2VudGVkIGFzIGEgc2luZ2xlIHZhbHVlIGFuZCB0aGF0IGNhbiBiZSByZWFkIGFuZCB3cml0ZQorICogaW4gYSBzaW5nbGUgb3BlcmF0aW9uLgorICovCitwdWJsaWMgY2xhc3MgU2luZ2xlVHlwZVNlcmlhbGl6ZXI8VD4gZXh0ZW5kcyBTaW1wbGVUeXBlU2VyaWFsaXplcjxUPiB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTaW5nbGVUeXBlU2VyaWFsaXplcjxJbnRlZ2VyPiBJbnRTZXJpYWxpemVyID0KKyAgICAgICAgICAgIG5ldyBTaW5nbGVUeXBlU2VyaWFsaXplcjw+KERhdGFUeXBlLklOVCwgQnVmZmVyOjpyZWFkSW50LCAodiwgYikgLT4gYi53cml0ZUludCh2KSk7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTaW5nbGVUeXBlU2VyaWFsaXplcjxMb25nPiBMb25nU2VyaWFsaXplciA9CisgICAgICAgICAgICBuZXcgU2luZ2xlVHlwZVNlcmlhbGl6ZXI8PihEYXRhVHlwZS5MT05HLCBCdWZmZXI6OnJlYWRMb25nLCAodiwgYikgLT4gYi53cml0ZUxvbmcodikpOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU2luZ2xlVHlwZVNlcmlhbGl6ZXI8RG91YmxlPiBEb3VibGVTZXJpYWxpemVyID0KKyAgICAgICAgICAgIG5ldyBTaW5nbGVUeXBlU2VyaWFsaXplcjw+KERhdGFUeXBlLkRPVUJMRSwgQnVmZmVyOjpyZWFkRG91YmxlLCAodiwgYikgLT4gYi53cml0ZURvdWJsZSh2KSk7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTaW5nbGVUeXBlU2VyaWFsaXplcjxGbG9hdD4gRmxvYXRTZXJpYWxpemVyID0KKyAgICAgICAgICAgIG5ldyBTaW5nbGVUeXBlU2VyaWFsaXplcjw+KERhdGFUeXBlLkZMT0FULCBCdWZmZXI6OnJlYWRGbG9hdCwgKHYsIGIpIC0+IGIud3JpdGVGbG9hdCh2KSk7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTaW5nbGVUeXBlU2VyaWFsaXplcjxTaG9ydD4gU2hvcnRTZXJpYWxpemVyID0KKyAgICAgICAgICAgIG5ldyBTaW5nbGVUeXBlU2VyaWFsaXplcjw+KERhdGFUeXBlLlNIT1JULCBCdWZmZXI6OnJlYWRTaG9ydCwgKHYsIGIpIC0+IGIud3JpdGVTaG9ydCh2KSk7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTaW5nbGVUeXBlU2VyaWFsaXplcjxCb29sZWFuPiBCb29sZWFuU2VyaWFsaXplciA9CisgICAgICAgICAgICBuZXcgU2luZ2xlVHlwZVNlcmlhbGl6ZXI8PihEYXRhVHlwZS5CT09MRUFOLCBCdWZmZXI6OnJlYWRCb29sZWFuLCAodiwgYikgLT4gYi53cml0ZUJvb2xlYW4odikpOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU2luZ2xlVHlwZVNlcmlhbGl6ZXI8Qnl0ZT4gQnl0ZVNlcmlhbGl6ZXIgPQorICAgICAgICAgICAgbmV3IFNpbmdsZVR5cGVTZXJpYWxpemVyPD4oRGF0YVR5cGUuQllURSwgQnVmZmVyOjpyZWFkQnl0ZSwgKHYsIGIpIC0+IGIud3JpdGVCeXRlKHYpKTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFNpbmdsZVR5cGVTZXJpYWxpemVyPFllYXI+IFllYXJTZXJpYWxpemVyID0KKyAgICAgICAgICAgIG5ldyBTaW5nbGVUeXBlU2VyaWFsaXplcjw+KERhdGFUeXBlLllFQVIsIGJiIC0+IFllYXIub2YoYmIucmVhZEludCgpKSwgKHYsIGIpIC0+IGIud3JpdGVJbnQodi5nZXRWYWx1ZSgpKSk7CisKKyAgICBwcml2YXRlIGZpbmFsIEZ1bmN0aW9uPEJ1ZmZlciwgVD4gcmVhZEZ1bmM7CisgICAgcHJpdmF0ZSBmaW5hbCBCaUNvbnN1bWVyPFQsIEJ1ZmZlcj4gd3JpdGVGdW5jOworCisgICAgcHJpdmF0ZSBTaW5nbGVUeXBlU2VyaWFsaXplcihmaW5hbCBEYXRhVHlwZSBkYXRhVHlwZSwgZmluYWwgRnVuY3Rpb248QnVmZmVyLCBUPiByZWFkRnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIEJpQ29uc3VtZXI8VCwgQnVmZmVyPiB3cml0ZUZ1bmMpIHsKKyAgICAgICAgc3VwZXIoZGF0YVR5cGUpOworICAgICAgICB0aGlzLnJlYWRGdW5jID0gcmVhZEZ1bmM7CisgICAgICAgIHRoaXMud3JpdGVGdW5jID0gd3JpdGVGdW5jOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBUIHJlYWRWYWx1ZShmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVJlYWRlciBjb250ZXh0KSB7CisgICAgICAgIHJldHVybiByZWFkRnVuYy5hcHBseShidWZmZXIpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIHdyaXRlVmFsdWUoZmluYWwgVCB2YWx1ZSwgZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlXcml0ZXIgY29udGV4dCkgeworICAgICAgICB3cml0ZUZ1bmMuYWNjZXB0KHZhbHVlLCBidWZmZXIpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9TdHJpbmdTZXJpYWxpemVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvU3RyaW5nU2VyaWFsaXplci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5MGM1ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvU3RyaW5nU2VyaWFsaXplci5qYXZhCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkudHlwZXM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuRGF0YVR5cGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5UmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVdyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5CdWZmZXI7CisKK2ltcG9ydCBqYXZhLm5pby5jaGFyc2V0LlN0YW5kYXJkQ2hhcnNldHM7CisKK3B1YmxpYyBjbGFzcyBTdHJpbmdTZXJpYWxpemVyIGV4dGVuZHMgU2ltcGxlVHlwZVNlcmlhbGl6ZXI8U3RyaW5nPiB7CisgICAgcHVibGljIFN0cmluZ1NlcmlhbGl6ZXIoKSB7CisgICAgICAgIHN1cGVyKERhdGFUeXBlLlNUUklORyk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIFN0cmluZyByZWFkVmFsdWUoZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlSZWFkZXIgY29udGV4dCkgeworICAgICAgICAvLyBVc2UgTmV0dHkgNC4wIEFQSSAoYXZvaWQgQnl0ZUJ1ZiNyZWFkQ2hhclNlcXVlbmNlKCkgbWV0aG9kKSB0byBtYXhpbWl6ZSBjb21wYXRpYmlsaXR5CisgICAgICAgIGZpbmFsIGJ5dGVbXSBieXRlcyA9IG5ldyBieXRlW2J1ZmZlci5yZWFkSW50KCldOworICAgICAgICBidWZmZXIucmVhZEJ5dGVzKGJ5dGVzKTsKKyAgICAgICAgcmV0dXJuIG5ldyBTdHJpbmcoYnl0ZXMsIFN0YW5kYXJkQ2hhcnNldHMuVVRGXzgpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIHdyaXRlVmFsdWUoZmluYWwgU3RyaW5nIHZhbHVlLCBmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVdyaXRlciBjb250ZXh0KSB7CisgICAgICAgIGZpbmFsIGJ5dGVbXSBzdHJpbmdCeXRlcyA9IHZhbHVlLmdldEJ5dGVzKFN0YW5kYXJkQ2hhcnNldHMuVVRGXzgpOworICAgICAgICBidWZmZXIud3JpdGVJbnQoc3RyaW5nQnl0ZXMubGVuZ3RoKS53cml0ZUJ5dGVzKHN0cmluZ0J5dGVzKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvVHJhbnNmb3JtU2VyaWFsaXplci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL1RyYW5zZm9ybVNlcmlhbGl6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2NjYmJhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL1RyYW5zZm9ybVNlcmlhbGl6ZXIuamF2YQpAQCAtMCwwICsxLDI4IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LnR5cGVzOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LlR5cGVTZXJpYWxpemVyOworCisvKioKKyAqIFJlcHJlc2VudHMgYSBzcGVjaWFsIFR5cGVTZXJpYWxpemVyIHBsYWNlaG9sZGVyIHRoYXQgdHJhbnNmb3JtcyB0aGUgdmFsdWUgaW50byBhbm90aGVyIGJlZm9yZSBzZXJpYWxpemluZyBpdC4KKyAqLworcHVibGljIGludGVyZmFjZSBUcmFuc2Zvcm1TZXJpYWxpemVyPFQ+IGV4dGVuZHMgVHlwZVNlcmlhbGl6ZXI8VD4geworICAgIE9iamVjdCB0cmFuc2Zvcm0oVCB2YWx1ZSk7Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvVHJhdmVyc2FsRXhwbGFuYXRpb25TZXJpYWxpemVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvVHJhdmVyc2FsRXhwbGFuYXRpb25TZXJpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWM4ZDhiZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9UcmF2ZXJzYWxFeHBsYW5hdGlvblNlcmlhbGl6ZXIuamF2YQpAQCAtMCwwICsxLDg0IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LnR5cGVzOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5UmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVdyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbFN0cmF0ZWd5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5UcmF2ZXJzYWxFeHBsYW5hdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5CdWZmZXI7CitpbXBvcnQgb3JnLmphdmF0dXBsZXMuUGFpcjsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgamF2YS51dGlsLk1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuc3RyZWFtLkNvbGxlY3RvcnM7CisKK3B1YmxpYyBjbGFzcyBUcmF2ZXJzYWxFeHBsYW5hdGlvblNlcmlhbGl6ZXIgZXh0ZW5kcyBTaW1wbGVUeXBlU2VyaWFsaXplcjxUcmF2ZXJzYWxFeHBsYW5hdGlvbj4gaW1wbGVtZW50cyBUcmFuc2Zvcm1TZXJpYWxpemVyPFRyYXZlcnNhbEV4cGxhbmF0aW9uPiB7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIE9SSUdJTkFMID0gIm9yaWdpbmFsIjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgRklOQUwgPSAiZmluYWwiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBJTlRFUk1FRElBVEUgPSAiaW50ZXJtZWRpYXRlIjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ0FURUdPUlkgPSAiY2F0ZWdvcnkiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUUkFWRVJTQUwgPSAidHJhdmVyc2FsIjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgU1RSQVRFR1kgPSAic3RyYXRlZ3kiOworCisgICAgcHVibGljIFRyYXZlcnNhbEV4cGxhbmF0aW9uU2VyaWFsaXplcigpIHsKKyAgICAgICAgc3VwZXIobnVsbCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIFRyYXZlcnNhbEV4cGxhbmF0aW9uIHJlYWRWYWx1ZShmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVJlYWRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICB0aHJvdyBuZXcgSU9FeGNlcHRpb24oIkEgVHJhdmVyc2FsRXhwbGFuYXRpb24gc2hvdWxkIG5vdCBiZSByZWFkIGluZGl2aWR1YWxseSIpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIHdyaXRlVmFsdWUoZmluYWwgVHJhdmVyc2FsRXhwbGFuYXRpb24gdmFsdWUsIGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5V3JpdGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbigiQSBUcmF2ZXJzYWxFeHBsYW5hdGlvbiBzaG91bGQgbm90IGJlIHdyaXR0ZW4gaW5kaXZpZHVhbGx5Iik7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIE1hcCBjb250YWluaW5nICJvcmlnaW5hbCIsICJpbnRlcm1lZGlhdGUiIGFuZCAiZmluYWwiIGtleXMuCisgICAgICovCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIE9iamVjdCB0cmFuc2Zvcm0oZmluYWwgVHJhdmVyc2FsRXhwbGFuYXRpb24gdmFsdWUpIHsKKyAgICAgICAgZmluYWwgTWFwPFN0cmluZywgT2JqZWN0PiByZXN1bHQgPSBuZXcgSGFzaE1hcDw+KCk7CisgICAgICAgIHJlc3VsdC5wdXQoT1JJR0lOQUwsIGdldFRyYXZlcnNhbFN0ZXBzKHZhbHVlLmdldE9yaWdpbmFsVHJhdmVyc2FsKCkpKTsKKworICAgICAgICBmaW5hbCBMaXN0PFBhaXI8VHJhdmVyc2FsU3RyYXRlZ3ksIFRyYXZlcnNhbC5BZG1pbjw/LCA/Pj4+IHN0cmF0ZWd5VHJhdmVyc2FscyA9IHZhbHVlLmdldFN0cmF0ZWd5VHJhdmVyc2FscygpOworCisgICAgICAgIHJlc3VsdC5wdXQoSU5URVJNRURJQVRFLAorICAgICAgICAgICAgICAgIHN0cmF0ZWd5VHJhdmVyc2Fscy5zdHJlYW0oKS5tYXAocGFpciAtPiB7CisgICAgICAgICAgICAgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsIE9iamVjdD4gaXRlbSA9IG5ldyBIYXNoTWFwPD4oKTsKKyAgICAgICAgICAgICAgICAgICAgaXRlbS5wdXQoU1RSQVRFR1ksIHBhaXIuZ2V0VmFsdWUwKCkudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgICAgIGl0ZW0ucHV0KENBVEVHT1JZLCBwYWlyLmdldFZhbHVlMCgpLmdldFRyYXZlcnNhbENhdGVnb3J5KCkuZ2V0U2ltcGxlTmFtZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgaXRlbS5wdXQoVFJBVkVSU0FMLCBnZXRUcmF2ZXJzYWxTdGVwcyhwYWlyLmdldFZhbHVlMSgpKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtOworICAgICAgICAgICAgICAgIH0pLmNvbGxlY3QoQ29sbGVjdG9ycy50b0xpc3QoKSkpOworCisgICAgICAgIHJlc3VsdC5wdXQoRklOQUwsIGdldFRyYXZlcnNhbFN0ZXBzKHN0cmF0ZWd5VHJhdmVyc2Fscy5pc0VtcHR5KCkKKyAgICAgICAgICAgICAgICA/IHZhbHVlLmdldE9yaWdpbmFsVHJhdmVyc2FsKCkgOiBzdHJhdGVneVRyYXZlcnNhbHMuZ2V0KHN0cmF0ZWd5VHJhdmVyc2Fscy5zaXplKCkgLSAxKS5nZXRWYWx1ZTEoKSkpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIExpc3Q8U3RyaW5nPiBnZXRUcmF2ZXJzYWxTdGVwcyhmaW5hbCBUcmF2ZXJzYWwuQWRtaW48PywgPz4gdCkgeworICAgICAgICByZXR1cm4gdC5nZXRTdGVwcygpLnN0cmVhbSgpLm1hcChPYmplY3Q6OnRvU3RyaW5nKS5jb2xsZWN0KENvbGxlY3RvcnMudG9MaXN0KCkpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9UcmF2ZXJzYWxNZXRyaWNzU2VyaWFsaXplci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL1RyYXZlcnNhbE1ldHJpY3NTZXJpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY3YjM2MAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9UcmF2ZXJzYWxNZXRyaWNzU2VyaWFsaXplci5qYXZhCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkudHlwZXM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuRGF0YVR5cGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5UmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVdyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuRGVmYXVsdFRyYXZlcnNhbE1ldHJpY3M7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLk11dGFibGVNZXRyaWNzOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5UcmF2ZXJzYWxNZXRyaWNzOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlcjsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdDsKKworcHVibGljIGNsYXNzIFRyYXZlcnNhbE1ldHJpY3NTZXJpYWxpemVyIGV4dGVuZHMgU2ltcGxlVHlwZVNlcmlhbGl6ZXI8VHJhdmVyc2FsTWV0cmljcz4geworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIENvbGxlY3Rpb25TZXJpYWxpemVyIGNvbGxlY3Rpb25TZXJpYWxpemVyID0gbmV3IENvbGxlY3Rpb25TZXJpYWxpemVyKERhdGFUeXBlLkxJU1QpOworCisgICAgcHVibGljIFRyYXZlcnNhbE1ldHJpY3NTZXJpYWxpemVyKCkgeworICAgICAgICBzdXBlcihEYXRhVHlwZS5UUkFWRVJTQUxNRVRSSUNTKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgVHJhdmVyc2FsTWV0cmljcyByZWFkVmFsdWUoQnVmZmVyIGJ1ZmZlciwgR3JhcGhCaW5hcnlSZWFkZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgTG9uZyBkdXJhdGlvbk5hbm9zID0gY29udGV4dC5yZWFkVmFsdWUoYnVmZmVyLCBMb25nLmNsYXNzLCBmYWxzZSk7CisgICAgICAgIGZpbmFsIExpc3Q8TXV0YWJsZU1ldHJpY3M+IG1ldHJpY3MgPSBuZXcgQXJyYXlMaXN0PD4oY29sbGVjdGlvblNlcmlhbGl6ZXIucmVhZFZhbHVlKGJ1ZmZlciwgY29udGV4dCkpOworICAgICAgICByZXR1cm4gbmV3IERlZmF1bHRUcmF2ZXJzYWxNZXRyaWNzKGR1cmF0aW9uTmFub3MsIG1ldHJpY3MpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIHdyaXRlVmFsdWUoVHJhdmVyc2FsTWV0cmljcyB2YWx1ZSwgQnVmZmVyIGJ1ZmZlciwgR3JhcGhCaW5hcnlXcml0ZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgY29udGV4dC53cml0ZVZhbHVlKHZhbHVlLmdldER1cmF0aW9uKFRpbWVVbml0Lk5BTk9TRUNPTkRTKSwgYnVmZmVyLCBmYWxzZSk7CisgICAgICAgIGNvbGxlY3Rpb25TZXJpYWxpemVyLndyaXRlVmFsdWUodmFsdWUuZ2V0TWV0cmljcygpLCBidWZmZXIsIGNvbnRleHQpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9UcmF2ZXJzYWxTdHJhdGVneVNlcmlhbGl6ZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9UcmF2ZXJzYWxTdHJhdGVneVNlcmlhbGl6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOGVhOWM5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL1RyYXZlcnNhbFN0cmF0ZWd5U2VyaWFsaXplci5qYXZhCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkudHlwZXM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29uZmlndXJhdGlvbi5Db25maWd1cmF0aW9uQ29udmVydGVyOworaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5jb25maWd1cmF0aW9uLk1hcENvbmZpZ3VyYXRpb247CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkRhdGFUeXBlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlXcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWxTdHJhdGVneTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LlRyYXZlcnNhbFN0cmF0ZWd5UHJveHk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uQnVmZmVyOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlua2VkSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworCisvKioKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqLworcHVibGljIGNsYXNzIFRyYXZlcnNhbFN0cmF0ZWd5U2VyaWFsaXplciBleHRlbmRzIFNpbXBsZVR5cGVTZXJpYWxpemVyPFRyYXZlcnNhbFN0cmF0ZWd5PiB7CisKKyAgICBwdWJsaWMgVHJhdmVyc2FsU3RyYXRlZ3lTZXJpYWxpemVyKCkgeworICAgICAgICBzdXBlcihEYXRhVHlwZS5UUkFWRVJTQUxTVFJBVEVHWSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIFRyYXZlcnNhbFN0cmF0ZWd5IHJlYWRWYWx1ZShmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVJlYWRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBmaW5hbCBDbGFzczxUcmF2ZXJzYWxTdHJhdGVneT4gY2xhenogPSBjb250ZXh0LnJlYWRWYWx1ZShidWZmZXIsIENsYXNzLmNsYXNzLCBmYWxzZSk7CisgICAgICAgIGZpbmFsIE1hcCBjb25maWcgPSBjb250ZXh0LnJlYWRWYWx1ZShidWZmZXIsIE1hcC5jbGFzcywgZmFsc2UpOworCisgICAgICAgIHJldHVybiBuZXcgVHJhdmVyc2FsU3RyYXRlZ3lQcm94eShjbGF6eiwgbmV3IE1hcENvbmZpZ3VyYXRpb24oY29uZmlnKSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGVWYWx1ZShmaW5hbCBUcmF2ZXJzYWxTdHJhdGVneSB2YWx1ZSwgZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlXcml0ZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgY29udGV4dC53cml0ZVZhbHVlKHZhbHVlLmdldENsYXNzKCksIGJ1ZmZlciwgZmFsc2UpOworICAgICAgICBjb250ZXh0LndyaXRlVmFsdWUodHJhbnNsYXRlVG9CeXRlY29kZShDb25maWd1cmF0aW9uQ29udmVydGVyLmdldE1hcCh2YWx1ZS5nZXRDb25maWd1cmF0aW9uKCkpKSwgYnVmZmVyLCBmYWxzZSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgTWFwPE9iamVjdCxPYmplY3Q+IHRyYW5zbGF0ZVRvQnl0ZWNvZGUoZmluYWwgTWFwPE9iamVjdCxPYmplY3Q+IGNvbmYpIHsKKyAgICAgICAgZmluYWwgTWFwPE9iamVjdCxPYmplY3Q+IG5ld0NvbmYgPSBuZXcgTGlua2VkSGFzaE1hcDw+KGNvbmYuc2l6ZSgpKTsKKyAgICAgICAgY29uZi5lbnRyeVNldCgpLmZvckVhY2goZW50cnkgLT4geworICAgICAgICAgICAgaWYgKGVudHJ5LmdldFZhbHVlKCkgaW5zdGFuY2VvZiBUcmF2ZXJzYWwpCisgICAgICAgICAgICAgICAgbmV3Q29uZi5wdXQoZW50cnkuZ2V0S2V5KCksICgoVHJhdmVyc2FsKSBlbnRyeS5nZXRWYWx1ZSgpKS5hc0FkbWluKCkuZ2V0Qnl0ZWNvZGUoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbmV3Q29uZi5wdXQoZW50cnkuZ2V0S2V5KCksIGVudHJ5LmdldFZhbHVlKCkpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIG5ld0NvbmY7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL1RyYXZlcnNlclNlcmlhbGl6ZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9UcmF2ZXJzZXJTZXJpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjM2MWZiMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9UcmF2ZXJzZXJTZXJpYWxpemVyLmphdmEKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS50eXBlczsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5EYXRhVHlwZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlSZWFkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5V3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5yZW1vdGUudHJhdmVyc2FsLkRlZmF1bHRSZW1vdGVUcmF2ZXJzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uQnVmZmVyOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKKworLyoqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK3B1YmxpYyBjbGFzcyBUcmF2ZXJzZXJTZXJpYWxpemVyIGV4dGVuZHMgU2ltcGxlVHlwZVNlcmlhbGl6ZXI8VHJhdmVyc2VyPiB7CisKKyAgICBwdWJsaWMgVHJhdmVyc2VyU2VyaWFsaXplcigpIHsKKyAgICAgICAgc3VwZXIoRGF0YVR5cGUuVFJBVkVSU0VSKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgVHJhdmVyc2VyIHJlYWRWYWx1ZShmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVJlYWRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBmaW5hbCBsb25nIGJ1bGsgPSBjb250ZXh0LnJlYWRWYWx1ZShidWZmZXIsIExvbmcuY2xhc3MsIGZhbHNlKTsKKyAgICAgICAgZmluYWwgT2JqZWN0IHYgPSBjb250ZXh0LnJlYWQoYnVmZmVyKTsKKyAgICAgICAgcmV0dXJuIG5ldyBEZWZhdWx0UmVtb3RlVHJhdmVyc2VyPD4odiwgYnVsayk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGVWYWx1ZShmaW5hbCBUcmF2ZXJzZXIgdmFsdWUsIGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5V3JpdGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGNvbnRleHQud3JpdGVWYWx1ZSh2YWx1ZS5idWxrKCksIGJ1ZmZlciwgZmFsc2UpOworICAgICAgICBjb250ZXh0LndyaXRlKHZhbHVlLmdldCgpLCBidWZmZXIpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9UcmVlU2VyaWFsaXplci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL1RyZWVTZXJpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjZiYmY4ZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9UcmVlU2VyaWFsaXplci5qYXZhCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkudHlwZXM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuRGF0YVR5cGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5UmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVdyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5UcmVlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlcjsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CisKK3B1YmxpYyBjbGFzcyBUcmVlU2VyaWFsaXplciBleHRlbmRzIFNpbXBsZVR5cGVTZXJpYWxpemVyPFRyZWU+IHsKKyAgICBwdWJsaWMgVHJlZVNlcmlhbGl6ZXIoKSB7CisgICAgICAgIHN1cGVyKERhdGFUeXBlLlRSRUUpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCBUcmVlIHJlYWRWYWx1ZShmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVJlYWRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBmaW5hbCBpbnQgbGVuZ3RoID0gYnVmZmVyLnJlYWRJbnQoKTsKKworICAgICAgICBmaW5hbCBUcmVlIHJlc3VsdCA9IG5ldyBUcmVlKCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIHJlc3VsdC5wdXQoY29udGV4dC5yZWFkKGJ1ZmZlciksIGNvbnRleHQucmVhZFZhbHVlKGJ1ZmZlciwgVHJlZS5jbGFzcywgZmFsc2UpKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGVWYWx1ZShmaW5hbCBUcmVlIHZhbHVlLCBmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVdyaXRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBidWZmZXIud3JpdGVJbnQodmFsdWUuc2l6ZSgpKTsKKworICAgICAgICBmb3IgKE9iamVjdCBrZXkgOiB2YWx1ZS5rZXlTZXQoKSkgeworICAgICAgICAgICAgY29udGV4dC53cml0ZShrZXksIGJ1ZmZlcik7CisgICAgICAgICAgICBjb250ZXh0LndyaXRlVmFsdWUodmFsdWUuZ2V0KGtleSksIGJ1ZmZlciwgZmFsc2UpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL1VVSURTZXJpYWxpemVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvVVVJRFNlcmlhbGl6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzQ1OGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL1VVSURTZXJpYWxpemVyLmphdmEKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS50eXBlczsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5EYXRhVHlwZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlSZWFkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5V3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlcjsKKworaW1wb3J0IGphdmEudXRpbC5VVUlEOworCitwdWJsaWMgY2xhc3MgVVVJRFNlcmlhbGl6ZXIgZXh0ZW5kcyBTaW1wbGVUeXBlU2VyaWFsaXplcjxVVUlEPiB7CisgICAgcHVibGljIFVVSURTZXJpYWxpemVyKCkgeworICAgICAgICBzdXBlcihEYXRhVHlwZS5VVUlEKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgVVVJRCByZWFkVmFsdWUoZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlSZWFkZXIgY29udGV4dCkgeworICAgICAgICByZXR1cm4gbmV3IFVVSUQoYnVmZmVyLnJlYWRMb25nKCksIGJ1ZmZlci5yZWFkTG9uZygpKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCB3cml0ZVZhbHVlKGZpbmFsIFVVSUQgdmFsdWUsIGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5V3JpdGVyIGNvbnRleHQpIHsKKyAgICAgICAgYnVmZmVyLndyaXRlTG9uZyh2YWx1ZS5nZXRNb3N0U2lnbmlmaWNhbnRCaXRzKCkpLndyaXRlTG9uZyh2YWx1ZS5nZXRMZWFzdFNpZ25pZmljYW50Qml0cygpKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL1ZlcnRleFByb3BlcnR5U2VyaWFsaXplci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL1ZlcnRleFByb3BlcnR5U2VyaWFsaXplci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiOWJhOGIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvVmVydGV4UHJvcGVydHlTZXJpYWxpemVyLmphdmEKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS50eXBlczsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5EYXRhVHlwZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlSZWFkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5V3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleFByb3BlcnR5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLnJlZmVyZW5jZS5SZWZlcmVuY2VWZXJ0ZXhQcm9wZXJ0eTsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CisKKy8qKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgY2xhc3MgVmVydGV4UHJvcGVydHlTZXJpYWxpemVyIGV4dGVuZHMgU2ltcGxlVHlwZVNlcmlhbGl6ZXI8VmVydGV4UHJvcGVydHk+IHsKKworICAgIHB1YmxpYyBWZXJ0ZXhQcm9wZXJ0eVNlcmlhbGl6ZXIoKSB7CisgICAgICAgIHN1cGVyKERhdGFUeXBlLlZFUlRFWFBST1BFUlRZKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgVmVydGV4UHJvcGVydHkgcmVhZFZhbHVlKGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5UmVhZGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIFZlcnRleFByb3BlcnR5IHYgPSBuZXcgUmVmZXJlbmNlVmVydGV4UHJvcGVydHk8Pihjb250ZXh0LnJlYWQoYnVmZmVyKSwKKyAgICAgICAgICAgICAgICBjb250ZXh0LnJlYWRWYWx1ZShidWZmZXIsIFN0cmluZy5jbGFzcywgZmFsc2UpLAorICAgICAgICAgICAgICAgIGNvbnRleHQucmVhZChidWZmZXIpKTsKKworICAgICAgICAvLyBkaXNjYXJkIHRoZSBwYXJlbnQgdmVydGV4IC0gd2Ugb25seSBzZW5kICJyZWZlcmVuY2VzIgorICAgICAgICBjb250ZXh0LnJlYWQoYnVmZmVyKTsKKworICAgICAgICAvLyBkaXNjYXJkIHRoZSBwcm9wZXJ0aWVzIC0gYXMgd2Ugb25seSBzZW5kICJyZWZlcmVuY2VzIiB0aGlzIHNob3VsZCBhbHdheXMgYmUgbnVsbCwgYnV0IHdpbGwgd2UgY2hhbmdlIG91cgorICAgICAgICAvLyBtaW5kcyBzb21lIGRheT8/Pz8KKyAgICAgICAgY29udGV4dC5yZWFkKGJ1ZmZlcik7CisgICAgICAgIHJldHVybiB2OworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIHdyaXRlVmFsdWUoZmluYWwgVmVydGV4UHJvcGVydHkgdmFsdWUsIGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5V3JpdGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGNvbnRleHQud3JpdGUodmFsdWUuaWQoKSwgYnVmZmVyKTsKKyAgICAgICAgY29udGV4dC53cml0ZVZhbHVlKHZhbHVlLmxhYmVsKCksIGJ1ZmZlciwgZmFsc2UpOworICAgICAgICBjb250ZXh0LndyaXRlKHZhbHVlLnZhbHVlKCksIGJ1ZmZlcik7CisKKyAgICAgICAgLy8gd2UgZG9uJ3Qgc2VyaWFsaXplIHRoZSBwYXJlbnQgdmVydGV4IGV2ZW4gYXMgYSAicmVmZXJlbmNlIiwgYnV0LCBsZXQncyBob2xkIGEgcGxhY2UgZm9yIGl0CisgICAgICAgIGNvbnRleHQud3JpdGUobnVsbCwgYnVmZmVyKTsKKyAgICAgICAgLy8gd2UgZG9uJ3Qgc2VyaWFsaXplIHByb3BlcnRpZXMgZm9yIGdyYXBoIGVsZW1lbnRzLiB0aGV5IGFyZSAicmVmZXJlbmNlcyIsIGJ1dCB3ZSBsZWF2ZSBhIHBsYWNlIGhvbGRlcgorICAgICAgICAvLyBoZXJlIGFzIGFuIG9wdGlvbiBmb3IgdGhlIGZ1dHVyZSBhcyB3ZSd2ZSB3YWZmbGVkIHRoaXMgc29vb29vb29vb28gbWFueSB0aW1lcyBub3cKKyAgICAgICAgY29udGV4dC53cml0ZShudWxsLCBidWZmZXIpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9WZXJ0ZXhTZXJpYWxpemVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvVmVydGV4U2VyaWFsaXplci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4OTA5ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9iaW5hcnkvdHlwZXMvVmVydGV4U2VyaWFsaXplci5qYXZhCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkudHlwZXM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuRGF0YVR5cGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5UmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVdyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uQnVmZmVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwucmVmZXJlbmNlLlJlZmVyZW5jZVZlcnRleDsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CisKKy8qKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgY2xhc3MgVmVydGV4U2VyaWFsaXplciBleHRlbmRzIFNpbXBsZVR5cGVTZXJpYWxpemVyPFZlcnRleD4geworICAgIHB1YmxpYyBWZXJ0ZXhTZXJpYWxpemVyKCkgeworICAgICAgICBzdXBlcihEYXRhVHlwZS5WRVJURVgpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCBWZXJ0ZXggcmVhZFZhbHVlKGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5UmVhZGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIFZlcnRleCB2ID0gbmV3IFJlZmVyZW5jZVZlcnRleChjb250ZXh0LnJlYWQoYnVmZmVyKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnJlYWRWYWx1ZShidWZmZXIsIFN0cmluZy5jbGFzcywgZmFsc2UpKTsKKyAgICAgICAgCisgICAgICAgIC8vIGRpc2NhcmQgdGhlIHByb3BlcnRpZXMgLSBhcyB3ZSBvbmx5IHNlbmQgInJlZmVyZW5jZXMiIHRoaXMgc2hvdWxkIGFsd2F5cyBiZSBudWxsLCBidXQgd2lsbCB3ZSBjaGFuZ2Ugb3VyCisgICAgICAgIC8vIG1pbmRzIHNvbWUgZGF5Pz8/PworICAgICAgICBjb250ZXh0LnJlYWQoYnVmZmVyKTsKKyAgICAgICAgcmV0dXJuIHY7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGVWYWx1ZShmaW5hbCBWZXJ0ZXggdmFsdWUsIGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5V3JpdGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGNvbnRleHQud3JpdGUodmFsdWUuaWQoKSwgYnVmZmVyKTsKKyAgICAgICAgY29udGV4dC53cml0ZVZhbHVlKHZhbHVlLmxhYmVsKCksIGJ1ZmZlciwgZmFsc2UpOworICAgICAgICBjb250ZXh0LndyaXRlKG51bGwsIGJ1ZmZlcik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL1llYXJNb250aFNlcmlhbGl6ZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9ZZWFyTW9udGhTZXJpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDcwYzIxNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9ZZWFyTW9udGhTZXJpYWxpemVyLmphdmEKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS50eXBlczsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5EYXRhVHlwZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlSZWFkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5V3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlcjsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS50aW1lLlllYXJNb250aDsKKworLyoqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK3B1YmxpYyBjbGFzcyBZZWFyTW9udGhTZXJpYWxpemVyIGV4dGVuZHMgU2ltcGxlVHlwZVNlcmlhbGl6ZXI8WWVhck1vbnRoPiB7CisgICAgcHVibGljIFllYXJNb250aFNlcmlhbGl6ZXIoKSB7CisgICAgICAgIHN1cGVyKERhdGFUeXBlLllFQVJNT05USCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIFllYXJNb250aCByZWFkVmFsdWUoZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlSZWFkZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgcmV0dXJuIFllYXJNb250aC5vZihidWZmZXIucmVhZEludCgpLCBidWZmZXIucmVhZEJ5dGUoKSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGVWYWx1ZShmaW5hbCBZZWFyTW9udGggdmFsdWUsIGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5V3JpdGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGJ1ZmZlci53cml0ZUludCh2YWx1ZS5nZXRZZWFyKCkpLndyaXRlQnl0ZSh2YWx1ZS5nZXRNb250aFZhbHVlKCkpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9ab25lT2Zmc2V0U2VyaWFsaXplci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL1pvbmVPZmZzZXRTZXJpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDliNmU0NwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9ab25lT2Zmc2V0U2VyaWFsaXplci5qYXZhCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkudHlwZXM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuRGF0YVR5cGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5UmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVdyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5CdWZmZXI7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEudGltZS5ab25lT2Zmc2V0OworCisvKioKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqLworcHVibGljIGNsYXNzIFpvbmVPZmZzZXRTZXJpYWxpemVyIGV4dGVuZHMgU2ltcGxlVHlwZVNlcmlhbGl6ZXI8Wm9uZU9mZnNldD4geworCisgICAgcHVibGljIFpvbmVPZmZzZXRTZXJpYWxpemVyKCkgeworICAgICAgICBzdXBlcihEYXRhVHlwZS5aT05FT0ZGU0VUKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgWm9uZU9mZnNldCByZWFkVmFsdWUoZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlSZWFkZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgcmV0dXJuIFpvbmVPZmZzZXQub2ZUb3RhbFNlY29uZHMoYnVmZmVyLnJlYWRJbnQoKSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGVWYWx1ZShmaW5hbCBab25lT2Zmc2V0IHZhbHVlLCBmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVdyaXRlciBjb250ZXh0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBidWZmZXIud3JpdGVJbnQodmFsdWUuZ2V0VG90YWxTZWNvbmRzKCkpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9ab25lZERhdGVUaW1lU2VyaWFsaXplci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vYmluYXJ5L3R5cGVzL1pvbmVkRGF0ZVRpbWVTZXJpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzM5ZGZmNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2JpbmFyeS90eXBlcy9ab25lZERhdGVUaW1lU2VyaWFsaXplci5qYXZhCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkudHlwZXM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuRGF0YVR5cGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5UmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVdyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5CdWZmZXI7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEudGltZS5Mb2NhbERhdGVUaW1lOworaW1wb3J0IGphdmEudGltZS5ab25lZERhdGVUaW1lOworaW1wb3J0IGphdmEudGltZS5ab25lT2Zmc2V0OworCisvKioKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqLworcHVibGljIGNsYXNzIFpvbmVkRGF0ZVRpbWVTZXJpYWxpemVyIGV4dGVuZHMgU2ltcGxlVHlwZVNlcmlhbGl6ZXI8Wm9uZWREYXRlVGltZT4geworICAgIHB1YmxpYyBab25lZERhdGVUaW1lU2VyaWFsaXplcigpIHsKKyAgICAgICAgc3VwZXIoRGF0YVR5cGUuWk9ORURBVEVUSU1FKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgWm9uZWREYXRlVGltZSByZWFkVmFsdWUoZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlSZWFkZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgTG9jYWxEYXRlVGltZSBsZHQgPSBjb250ZXh0LnJlYWRWYWx1ZShidWZmZXIsIExvY2FsRGF0ZVRpbWUuY2xhc3MsIGZhbHNlKTsKKyAgICAgICAgZmluYWwgWm9uZU9mZnNldCB6byA9IGNvbnRleHQucmVhZFZhbHVlKGJ1ZmZlciwgWm9uZU9mZnNldC5jbGFzcywgZmFsc2UpOworICAgICAgICByZXR1cm4gWm9uZWREYXRlVGltZS5vZihsZHQsIHpvKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCB3cml0ZVZhbHVlKGZpbmFsIFpvbmVkRGF0ZVRpbWUgdmFsdWUsIGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5V3JpdGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGNvbnRleHQud3JpdGVWYWx1ZSh2YWx1ZS50b0xvY2FsRGF0ZVRpbWUoKSwgYnVmZmVyLCBmYWxzZSk7CisgICAgICAgIGNvbnRleHQud3JpdGVWYWx1ZSh2YWx1ZS5nZXRPZmZzZXQoKSwgYnVmZmVyLCBmYWxzZSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhtbC9HcmFwaE1MVG9rZW5zLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaG1sL0dyYXBoTUxUb2tlbnMuamF2YQppbmRleCA5MjFhMTBmLi41ODhlNDY0IDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaG1sL0dyYXBoTUxUb2tlbnMuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaG1sL0dyYXBoTUxUb2tlbnMuamF2YQpAQCAtNTUsNCArNTUsNiBAQAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIExPTkcgPSAibG9uZyI7CiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQk9PTEVBTiA9ICJib29sZWFuIjsKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBJTlQgPSAiaW50IjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBWRVJURVhfU1VGRklYID0gIlYiOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVER0VfU1VGRklYID0gIkUiOwogfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhtbC9HcmFwaE1MV3JpdGVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaG1sL0dyYXBoTUxXcml0ZXIuamF2YQppbmRleCBmNzA5M2I1Li4zOTkxZTRlIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaG1sL0dyYXBoTUxXcml0ZXIuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaG1sL0dyYXBoTUxXcml0ZXIuamF2YQpAQCAtMTgsNiArMTgsMjIgQEAKICAqLwogcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncmFwaG1sOwogCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLmlvLk91dHB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgamF2YS51dGlsLk1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuT3B0aW9uYWw7CitpbXBvcnQgamF2YXgueG1sLlhNTENvbnN0YW50czsKK2ltcG9ydCBqYXZheC54bWwuc3RyZWFtLlhNTE91dHB1dEZhY3Rvcnk7CitpbXBvcnQgamF2YXgueG1sLnN0cmVhbS5YTUxTdHJlYW1FeGNlcHRpb247CitpbXBvcnQgamF2YXgueG1sLnN0cmVhbS5YTUxTdHJlYW1Xcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmNvbGxlY3Rpb25zLkNvbGxlY3Rpb25VdGlsczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5EaXJlY3Rpb247CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuRWRnZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5FbGVtZW50OwpAQCAtMzEsMjEgKzQ3LDYgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLkNvbXBhcmF0b3JzOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udXRpbC5pdGVyYXRvci5JdGVyYXRvclV0aWxzOwogCi1pbXBvcnQgamF2YXgueG1sLlhNTENvbnN0YW50czsKLWltcG9ydCBqYXZheC54bWwuc3RyZWFtLlhNTE91dHB1dEZhY3Rvcnk7Ci1pbXBvcnQgamF2YXgueG1sLnN0cmVhbS5YTUxTdHJlYW1FeGNlcHRpb247Ci1pbXBvcnQgamF2YXgueG1sLnN0cmVhbS5YTUxTdHJlYW1Xcml0ZXI7Ci1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLmlvLk91dHB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOwotaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKLWltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLk1hcDsKLWltcG9ydCBqYXZhLnV0aWwuT3B0aW9uYWw7Ci0KIC8qKgogICogR3JhcGhNTFdyaXRlciB3cml0ZXMgYSBHcmFwaCB0byBhIEdyYXBoTUwgT3V0cHV0U3RyZWFtLiBOb3RlIHRoYXQgdGhpcyBmb3JtYXQgaXMgbG9zc3ksIGluIHRoZSBzZW5zZSB0aGF0IGRhdGEKICAqIHR5cGVzIGFuZCBmZWF0dXJlcyBvZiBHcmVtbGluIFN0cnVjdHVyZSBub3Qgc3VwcG9ydGVkIGJ5IEdyYXBoTUwgYXJlIG5vdCBzZXJpYWxpemVkLiAgVGhpcyBmb3JtYXQgaXMgbWVhbnQgZm9yCkBAIC02NiwxMCArNjcsMTEgQEAKICAgICBwcml2YXRlIGZpbmFsIE9wdGlvbmFsPFN0cmluZz4geG1sU2NoZW1hTG9jYXRpb247CiAgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgZWRnZUxhYmVsS2V5OwogICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIHZlcnRleExhYmVsS2V5OworICAgIHByaXZhdGUgQ29sbGVjdGlvbjxTdHJpbmc+IGludGVyc2VjdGlvbiA9IENvbGxlY3Rpb25zLmVtcHR5U2V0KCk7CiAKICAgICBwcml2YXRlIEdyYXBoTUxXcml0ZXIoZmluYWwgYm9vbGVhbiBub3JtYWxpemUsIGZpbmFsIE1hcDxTdHJpbmcsIFN0cmluZz4gdmVydGV4S2V5VHlwZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsIFN0cmluZz4gZWRnZUtleVR5cGVzLCBmaW5hbCBTdHJpbmcgeG1sU2NoZW1hTG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyBlZGdlTGFiZWxLZXksIGZpbmFsIFN0cmluZyB2ZXJ0ZXhMYWJlbEtleSkgeworICAgICAgICAgICAgZmluYWwgTWFwPFN0cmluZywgU3RyaW5nPiBlZGdlS2V5VHlwZXMsIGZpbmFsIFN0cmluZyB4bWxTY2hlbWFMb2NhdGlvbiwKKyAgICAgICAgICAgIGZpbmFsIFN0cmluZyBlZGdlTGFiZWxLZXksIGZpbmFsIFN0cmluZyB2ZXJ0ZXhMYWJlbEtleSkgewogICAgICAgICB0aGlzLm5vcm1hbGl6ZSA9IG5vcm1hbGl6ZTsKICAgICAgICAgdGhpcy52ZXJ0ZXhLZXlUeXBlcyA9IE9wdGlvbmFsLm9mTnVsbGFibGUodmVydGV4S2V5VHlwZXMpOwogICAgICAgICB0aGlzLmVkZ2VLZXlUeXBlcyA9IE9wdGlvbmFsLm9mTnVsbGFibGUoZWRnZUtleVR5cGVzKTsKQEAgLTIxMywyNiArMjE1LDM2IEBACiAgICAgICAgICAgICByZXR1cm4gd3JpdGVyOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHJldHVybiB1dGY4V3JpdGVyOwotICAgIH0KKyAgICAgICAgfQogCiAgICAgcHJpdmF0ZSB2b2lkIHdyaXRlVHlwZXMoZmluYWwgTWFwPFN0cmluZywgU3RyaW5nPiBpZGVudGlmaWVkVmVydGV4S2V5VHlwZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgTWFwPFN0cmluZywgU3RyaW5nPiBpZGVudGlmaWVkRWRnZUtleVR5cGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIFhNTFN0cmVhbVdyaXRlciB3cml0ZXIpIHRocm93cyBYTUxTdHJlYW1FeGNlcHRpb24geworICAgICAgICAgICAgZmluYWwgTWFwPFN0cmluZywgU3RyaW5nPiBpZGVudGlmaWVkRWRnZUtleVR5cGVzLAorICAgICAgICAgICAgZmluYWwgWE1MU3RyZWFtV3JpdGVyIHdyaXRlcikgdGhyb3dzIFhNTFN0cmVhbUV4Y2VwdGlvbiB7CiAgICAgICAgIC8vIDxrZXkgaWQ9IndlaWdodCIgZm9yPSJlZGdlIiBhdHRyLm5hbWU9IndlaWdodCIgYXR0ci50eXBlPSJmbG9hdCIvPgogICAgICAgICBmaW5hbCBDb2xsZWN0aW9uPFN0cmluZz4gdmVydGV4S2V5U2V0ID0gZ2V0S2V5c0FuZE5vcm1hbGl6ZUlmUmVxdWlyZWQoaWRlbnRpZmllZFZlcnRleEtleVR5cGVzKTsKKyAgICAgICAgZmluYWwgQ29sbGVjdGlvbjxTdHJpbmc+IGVkZ2VLZXlTZXQgPSBnZXRLZXlzQW5kTm9ybWFsaXplSWZSZXF1aXJlZChpZGVudGlmaWVkRWRnZUtleVR5cGVzKTsKKyAgICAgICAgLy8gaW4gY2FzZSB2ZXJ0ZXggYW5kIGVkZ2UgbWF5IGhhdmUgdGhlIHNhbWUgYXR0cmlidXRlIG5hbWUsIHRoZSBrZXkgaWQgaW4gZ3JhcGhtbCBoYXZlIHRvIGJlIGRpZmZlcmVudAorICAgICAgICBpbnRlcnNlY3Rpb24gPSBDb2xsZWN0aW9uVXRpbHMuaW50ZXJzZWN0aW9uKHZlcnRleEtleVNldCwgZWRnZUtleVNldCk7CisKICAgICAgICAgZm9yIChTdHJpbmcga2V5IDogdmVydGV4S2V5U2V0KSB7CiAgICAgICAgICAgICB3cml0ZXIud3JpdGVTdGFydEVsZW1lbnQoR3JhcGhNTFRva2Vucy5LRVkpOwotICAgICAgICAgICAgd3JpdGVyLndyaXRlQXR0cmlidXRlKEdyYXBoTUxUb2tlbnMuSUQsIGtleSk7CisgICAgICAgICAgICBpZiAoaW50ZXJzZWN0aW9uLmNvbnRhaW5zKGtleSkpIHsKKyAgICAgICAgICAgICAgICB3cml0ZXIud3JpdGVBdHRyaWJ1dGUoR3JhcGhNTFRva2Vucy5JRCwga2V5LmNvbmNhdChHcmFwaE1MVG9rZW5zLlZFUlRFWF9TVUZGSVgpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgd3JpdGVyLndyaXRlQXR0cmlidXRlKEdyYXBoTUxUb2tlbnMuSUQsIGtleSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICB3cml0ZXIud3JpdGVBdHRyaWJ1dGUoR3JhcGhNTFRva2Vucy5GT1IsIEdyYXBoTUxUb2tlbnMuTk9ERSk7CiAgICAgICAgICAgICB3cml0ZXIud3JpdGVBdHRyaWJ1dGUoR3JhcGhNTFRva2Vucy5BVFRSX05BTUUsIGtleSk7CiAgICAgICAgICAgICB3cml0ZXIud3JpdGVBdHRyaWJ1dGUoR3JhcGhNTFRva2Vucy5BVFRSX1RZUEUsIGlkZW50aWZpZWRWZXJ0ZXhLZXlUeXBlcy5nZXQoa2V5KSk7CiAgICAgICAgICAgICB3cml0ZXIud3JpdGVFbmRFbGVtZW50KCk7CiAgICAgICAgIH0KLQotICAgICAgICBmaW5hbCBDb2xsZWN0aW9uPFN0cmluZz4gZWRnZUtleVNldCA9IGdldEtleXNBbmROb3JtYWxpemVJZlJlcXVpcmVkKGlkZW50aWZpZWRFZGdlS2V5VHlwZXMpOwogICAgICAgICBmb3IgKFN0cmluZyBrZXkgOiBlZGdlS2V5U2V0KSB7CiAgICAgICAgICAgICB3cml0ZXIud3JpdGVTdGFydEVsZW1lbnQoR3JhcGhNTFRva2Vucy5LRVkpOwotICAgICAgICAgICAgd3JpdGVyLndyaXRlQXR0cmlidXRlKEdyYXBoTUxUb2tlbnMuSUQsIGtleSk7CisgICAgICAgICAgICBpZiAoaW50ZXJzZWN0aW9uLmNvbnRhaW5zKGtleSkpIHsKKyAgICAgICAgICAgICAgICB3cml0ZXIud3JpdGVBdHRyaWJ1dGUoR3JhcGhNTFRva2Vucy5JRCwga2V5LmNvbmNhdChHcmFwaE1MVG9rZW5zLkVER0VfU1VGRklYKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHdyaXRlci53cml0ZUF0dHJpYnV0ZShHcmFwaE1MVG9rZW5zLklELCBrZXkpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgd3JpdGVyLndyaXRlQXR0cmlidXRlKEdyYXBoTUxUb2tlbnMuRk9SLCBHcmFwaE1MVG9rZW5zLkVER0UpOwogICAgICAgICAgICAgd3JpdGVyLndyaXRlQXR0cmlidXRlKEdyYXBoTUxUb2tlbnMuQVRUUl9OQU1FLCBrZXkpOwogICAgICAgICAgICAgd3JpdGVyLndyaXRlQXR0cmlidXRlKEdyYXBoTUxUb2tlbnMuQVRUUl9UWVBFLCBpZGVudGlmaWVkRWRnZUtleVR5cGVzLmdldChrZXkpKTsKQEAgLTI2Myw3ICsyNzUsMTEgQEAKIAogICAgICAgICAgICAgICAgICAgICBmb3IgKFN0cmluZyBrZXkgOiBrZXlzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIud3JpdGVTdGFydEVsZW1lbnQoR3JhcGhNTFRva2Vucy5EQVRBKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci53cml0ZUF0dHJpYnV0ZShHcmFwaE1MVG9rZW5zLktFWSwga2V5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnRlcnNlY3Rpb24gIT0gbnVsbCAmJiBpbnRlcnNlY3Rpb24uY29udGFpbnMoa2V5KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci53cml0ZUF0dHJpYnV0ZShHcmFwaE1MVG9rZW5zLktFWSwga2V5ICsgR3JhcGhNTFRva2Vucy5FREdFX1NVRkZJWCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci53cml0ZUF0dHJpYnV0ZShHcmFwaE1MVG9rZW5zLktFWSwga2V5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRlY2huaWNhbGx5IHRoZXJlIGNhbid0IGJlIGEgbnVsbCBoZXJlIGFzIGdyZW1saW4gc3RydWN0dXJlIGZvcmJpZHMgdGhhdCBvY2N1cnJlbmNlIGV2ZW4gaWYgR3JhcGgKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGltcGxlbWVudGF0aW9ucyBzdXBwb3J0IGl0LCBidXQgb3V0IHRvIGVtcHR5IHN0cmluZyBqdXN0IGluIGNhc2UuCiAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIud3JpdGVDaGFyYWN0ZXJzKGVkZ2UucHJvcGVydHkoa2V5KS5vckVsc2UoIiIpLnRvU3RyaW5nKCkpOwpAQCAtMjg2LDcgKzMwMiwxMSBAQAogCiAgICAgICAgICAgICAgICAgICAgIGZvciAoU3RyaW5nIGtleSA6IGVkZ2Uua2V5cygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIud3JpdGVTdGFydEVsZW1lbnQoR3JhcGhNTFRva2Vucy5EQVRBKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci53cml0ZUF0dHJpYnV0ZShHcmFwaE1MVG9rZW5zLktFWSwga2V5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnRlcnNlY3Rpb24gIT0gbnVsbCAmJiBpbnRlcnNlY3Rpb24uY29udGFpbnMoa2V5KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci53cml0ZUF0dHJpYnV0ZShHcmFwaE1MVG9rZW5zLktFWSwga2V5ICsgR3JhcGhNTFRva2Vucy5FREdFX1NVRkZJWCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci53cml0ZUF0dHJpYnV0ZShHcmFwaE1MVG9rZW5zLktFWSwga2V5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRlY2huaWNhbGx5IHRoZXJlIGNhbid0IGJlIGEgbnVsbCBoZXJlIGFzIGdyZW1saW4gc3RydWN0dXJlIGZvcmJpZHMgdGhhdCBvY2N1cnJlbmNlIGV2ZW4gaWYgR3JhcGgKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGltcGxlbWVudGF0aW9ucyBzdXBwb3J0IGl0LCBidXQgb3V0IHRvIGVtcHR5IHN0cmluZyBqdXN0IGluIGNhc2UuCiAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIud3JpdGVDaGFyYWN0ZXJzKGVkZ2UucHJvcGVydHkoa2V5KS5vckVsc2UoIiIpLnRvU3RyaW5nKCkpOwpAQCAtMzE0LDcgKzMzNCwxMiBAQAogCiAgICAgICAgICAgICBmb3IgKFN0cmluZyBrZXkgOiBrZXlzKSB7CiAgICAgICAgICAgICAgICAgd3JpdGVyLndyaXRlU3RhcnRFbGVtZW50KEdyYXBoTUxUb2tlbnMuREFUQSk7Ci0gICAgICAgICAgICAgICAgd3JpdGVyLndyaXRlQXR0cmlidXRlKEdyYXBoTUxUb2tlbnMuS0VZLCBrZXkpOworICAgICAgICAgICAgICAgIGlmIChpbnRlcnNlY3Rpb24gIT0gbnVsbCAmJiBpbnRlcnNlY3Rpb24uY29udGFpbnMoa2V5KSkgeworICAgICAgICAgICAgICAgICAgICB3cml0ZXIud3JpdGVBdHRyaWJ1dGUoR3JhcGhNTFRva2Vucy5LRVksIGtleS5jb25jYXQoR3JhcGhNTFRva2Vucy5WRVJURVhfU1VGRklYKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgd3JpdGVyLndyaXRlQXR0cmlidXRlKEdyYXBoTUxUb2tlbnMuS0VZLCBrZXkpOworICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIGZpbmFsIFZlcnRleFByb3BlcnR5PE9iamVjdD4gY3VycmVudFZhbHVlID0gZ2V0Q2hlY2tlZFZlcnRleFByb3BlcnR5KHZlcnRleCwga2V5KTsKIAogICAgICAgICAgICAgICAgIC8vIHRlY2huaWNhbGx5IHRoZXJlIGNhbid0IGJlIGEgbnVsbCBoZXJlIGFzIGdyZW1saW4gc3RydWN0dXJlIGZvcmJpZHMgdGhhdCBvY2N1cnJlbmNlIGV2ZW4gaWYgR3JhcGgKQEAgLTQ0NSw3ICs0NzAsNyBAQAogICAgICAgICAgICAgcmV0dXJuIEdyYXBoTUxUb2tlbnMuQk9PTEVBTjsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmV0dXJuIEdyYXBoTUxUb2tlbnMuU1RSSU5HOwotICAgIH0KKyAgICAgICAgfQogCiAgICAgcHVibGljIHN0YXRpYyBCdWlsZGVyIGJ1aWxkKCkgewogICAgICAgICByZXR1cm4gbmV3IEJ1aWxkZXIoKTsKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBobWwvR3JhcGhNTFdyaXRlckhlbHBlci5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhtbC9HcmFwaE1MV3JpdGVySGVscGVyLmphdmEKaW5kZXggNjBlY2UzZC4uMTNiN2QyNiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhtbC9HcmFwaE1MV3JpdGVySGVscGVyLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhtbC9HcmFwaE1MV3JpdGVySGVscGVyLmphdmEKQEAgLTIyMCw3ICsyMjAsNyBAQAogICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBzID0gbmV3IFN0cmluZ0J1aWxkZXIoKTsKICAgICAgICAgICAgIGZvciAoOyBpbmRlbnRTdGVwID4gMDsgaW5kZW50U3RlcC0tKQogICAgICAgICAgICAgICAgIHMuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICBzZXRJbmRlbnRTdGVwKHMudG9TdHJpbmcoKSk7CisgICAgICAgICAgICB0aGlzLmluZGVudFN0ZXAgPSBzLnRvU3RyaW5nKCk7CiAgICAgICAgIH0KIAogICAgICAgICBwdWJsaWMgdm9pZCBzZXRJbmRlbnRTdGVwKFN0cmluZyBzKSB7CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9BYnN0cmFjdEdyYXBoU09OVHlwZVNlcmlhbGl6ZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL0Fic3RyYWN0R3JhcGhTT05UeXBlU2VyaWFsaXplci5qYXZhCmluZGV4IDlkODJlZWYuLjcxMzRkMDUgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL0Fic3RyYWN0R3JhcGhTT05UeXBlU2VyaWFsaXplci5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL0Fic3RyYWN0R3JhcGhTT05UeXBlU2VyaWFsaXplci5qYXZhCkBAIC04Miw3ICs4Miw3IEBACiAKICAgICBwcm90ZWN0ZWQgdm9pZCB3cml0ZVR5cGVQcmVmaXgoZmluYWwgSnNvbkdlbmVyYXRvciBqc29uR2VuZXJhdG9yLCBmaW5hbCBTdHJpbmcgcykgdGhyb3dzIElPRXhjZXB0aW9uIHsKICAgICAgICAganNvbkdlbmVyYXRvci53cml0ZVN0YXJ0T2JqZWN0KCk7Ci0gICAgICAgIGpzb25HZW5lcmF0b3Iud3JpdGVTdHJpbmdGaWVsZCh0aGlzLnByb3BlcnR5TmFtZSwgcyk7CisgICAgICAgIGpzb25HZW5lcmF0b3Iud3JpdGVTdHJpbmdGaWVsZChwcm9wZXJ0eU5hbWUsIHMpOwogICAgICAgICBqc29uR2VuZXJhdG9yLndyaXRlRmllbGROYW1lKHRoaXMudmFsdWVQcm9wZXJ0eU5hbWUpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vR3JhcGhTT05NYXBwZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL0dyYXBoU09OTWFwcGVyLmphdmEKaW5kZXggZThiODNjZS4uMzAxMTJmOSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vR3JhcGhTT05NYXBwZXIuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9HcmFwaFNPTk1hcHBlci5qYXZhCkBAIC0xMDAsNyArMTAwLDcgQEAKICAgICAgICAgaWYgKHZlcnNpb24gPT0gR3JhcGhTT05WZXJzaW9uLlYzXzAgfHwgKHZlcnNpb24gPT0gR3JhcGhTT05WZXJzaW9uLlYyXzAgJiYgdHlwZUluZm8gIT0gVHlwZUluZm8uTk9fVFlQRVMpKSB7CiAgICAgICAgICAgICBmaW5hbCBHcmFwaFNPTlR5cGVJZFJlc29sdmVyIGdyYXBoU09OVHlwZUlkUmVzb2x2ZXIgPSBuZXcgR3JhcGhTT05UeXBlSWRSZXNvbHZlcigpOwogICAgICAgICAgICAgZmluYWwgVHlwZVJlc29sdmVyQnVpbGRlciB0eXBlciA9IG5ldyBHcmFwaFNPTlR5cGVSZXNvbHZlckJ1aWxkZXIodmVyc2lvbikKLSAgICAgICAgICAgICAgICAgICAgLnR5cGVzRW1iZWRkaW5nKGdldFR5cGVJbmZvKCkpCisgICAgICAgICAgICAgICAgICAgIC50eXBlc0VtYmVkZGluZyh0aGlzLnR5cGVJbmZvKQogICAgICAgICAgICAgICAgICAgICAudmFsdWVQcm9wZXJ0eU5hbWUoR3JhcGhTT05Ub2tlbnMuVkFMVUVQUk9QKQogICAgICAgICAgICAgICAgICAgICAuaW5pdChKc29uVHlwZUluZm8uSWQuQ1VTVE9NLCBncmFwaFNPTlR5cGVJZFJlc29sdmVyKQogICAgICAgICAgICAgICAgICAgICAudHlwZVByb3BlcnR5KEdyYXBoU09OVG9rZW5zLlZBTFVFVFlQRSk7CkBAIC0xNjEsNiArMTYxLDIzIEBACiAgICAgICAgIHJldHVybiBuZXcgQnVpbGRlcigpOwogICAgIH0KIAorICAgIC8qKgorICAgICAqIENyZWF0ZSBhIG5ldyBCdWlsZGVyIGZyb20gYSBnaXZlbiB7QGxpbmsgR3JhcGhTT05NYXBwZXJ9LgorICAgICAqCisgICAgICogQHJldHVybiBhIG5ldyBidWlsZGVyLCB3aXRoIHByb3BlcnRpZXMgdGFrZW4gZnJvbSB0aGUgb3JpZ2luYWwgbWFwcGVyIGFscmVhZHkgYXBwbGllZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIEJ1aWxkZXIgYnVpbGQoZmluYWwgR3JhcGhTT05NYXBwZXIgbWFwcGVyKSB7CisgICAgICAgIEJ1aWxkZXIgYnVpbGRlciA9IGJ1aWxkKCk7CisKKyAgICAgICAgYnVpbGRlci5jdXN0b21Nb2R1bGVzID0gbWFwcGVyLmN1c3RvbU1vZHVsZXM7CisgICAgICAgIGJ1aWxkZXIudmVyc2lvbiA9IG1hcHBlci52ZXJzaW9uOworICAgICAgICBidWlsZGVyLmxvYWRDdXN0b21Nb2R1bGVzID0gbWFwcGVyLmxvYWRDdXN0b21TZXJpYWxpemVyczsKKyAgICAgICAgYnVpbGRlci5ub3JtYWxpemUgPSBtYXBwZXIubm9ybWFsaXplOworICAgICAgICBidWlsZGVyLnR5cGVJbmZvID0gbWFwcGVyLnR5cGVJbmZvOworCisgICAgICAgIHJldHVybiBidWlsZGVyOworICAgIH0KKwogICAgIHB1YmxpYyBUeXBlSW5mbyBnZXRUeXBlSW5mbygpIHsKICAgICAgICAgcmV0dXJuIHRoaXMudHlwZUluZm87CiAgICAgfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vR3JhcGhTT05Nb2R1bGUuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL0dyYXBoU09OTW9kdWxlLmphdmEKaW5kZXggMTVjNDc5My4uY2IwZWVhZiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vR3JhcGhTT05Nb2R1bGUuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9HcmFwaFNPTk1vZHVsZS5qYXZhCkBAIC0yOCwxNSArMjgsMTggQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlBvcDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlNhY2tGdW5jdGlvbnM7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5TY29wZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRleHRQOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsU3RyYXRlZ3k7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLlRyYXZlcnNhbE9wdGlvblBhcmVudDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5CdWxrU2V0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLlRyZWU7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLkNvbm5lY3RpdmVTdHJhdGVneTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uRWxlbWVudElkU3RyYXRlZ3k7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLkV2ZW50U3RyYXRlZ3k7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLkhhbHRlZFRyYXZlcnNlclN0cmF0ZWd5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuZGVjb3JhdGlvbi5PcHRpb25zU3RyYXRlZ3k7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLlBhcnRpdGlvblN0cmF0ZWd5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuZGVjb3JhdGlvbi5TdWJncmFwaFN0cmF0ZWd5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuZmluYWxpemF0aW9uLk1hdGNoQWxnb3JpdGhtU3RyYXRlZ3k7CkBAIC05NSw2ICs5OCw3IEBACiBpbXBvcnQgamF2YS51dGlsLkxpbmtlZEhhc2hNYXA7CiBpbXBvcnQgamF2YS51dGlsLkxpc3Q7CiBpbXBvcnQgamF2YS51dGlsLk1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuT3B0aW9uYWw7CiBpbXBvcnQgamF2YS51dGlsLlNldDsKIGltcG9ydCBqYXZhLnV0aWwuc3RyZWFtLlN0cmVhbTsKIApAQCAtMTE1LDYgKzExOSwxOCBAQAogICAgIH0KIAogICAgIC8qKgorICAgICAqIEF0dGVtcHQgdG8gbG9hZCB7QGNvZGUgU3BhcnFsU3RyYXRlZ3l9IGlmIGl0J3Mgb24gdGhlIHBhdGguIER5bmFtaWNhbGx5IGxvYWRpbmcgaXQgZnJvbSBjb3JlIG1ha2VzIGl0IGVhc2llcgorICAgICAqIGZvciB1c2VycyBhcyB0aGV5IHdvbid0IGhhdmUgdG8gcmVnaXN0ZXIgc3BlY2lhbCBtb2R1bGVzIGZvciBzZXJpYWxpemF0aW9uIHB1cnBvc2VzLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIE9wdGlvbmFsPENsYXNzPD8+PiB0cnlMb2FkU3BhcnFsU3RyYXRlZ3koKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gT3B0aW9uYWwub2YoQ2xhc3MuZm9yTmFtZSgib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zcGFycWwucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuU3BhcnFsU3RyYXRlZ3kiKSk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBpZ25vcmVkKSB7CisgICAgICAgICAgICByZXR1cm4gT3B0aW9uYWwuZW1wdHkoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgogICAgICAqIFZlcnNpb24gMy4wIG9mIEdyYXBoU09OLgogICAgICAqLwogICAgIHN0YXRpYyBmaW5hbCBjbGFzcyBHcmFwaFNPTk1vZHVsZVYzZDAgZXh0ZW5kcyBHcmFwaFNPTk1vZHVsZSB7CkBAIC0xMzIsNyArMTQ4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgcHV0KExpc3QuY2xhc3MsICJMaXN0Iik7CiAgICAgICAgICAgICAgICAgICAgIHB1dChTZXQuY2xhc3MsICJTZXQiKTsKIAotICAgICAgICAgICAgICAgICAgICAvLyBUaW5rZXJwb3AgR3JhcGggb2JqZWN0cworICAgICAgICAgICAgICAgICAgICAvLyBUaW5rZXJQb3AgR3JhcGggb2JqZWN0cwogICAgICAgICAgICAgICAgICAgICBwdXQoTGFtYmRhLmNsYXNzLCAiTGFtYmRhIik7CiAgICAgICAgICAgICAgICAgICAgIHB1dChWZXJ0ZXguY2xhc3MsICJWZXJ0ZXgiKTsKICAgICAgICAgICAgICAgICAgICAgcHV0KEVkZ2UuY2xhc3MsICJFZGdlIik7CkBAIC0xNDQsMTEgKzE2MCwxMyBAQAogICAgICAgICAgICAgICAgICAgICBwdXQoVHJhdmVyc2FsRXhwbGFuYXRpb24uY2xhc3MsICJUcmF2ZXJzYWxFeHBsYW5hdGlvbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXQoVHJhdmVyc2VyLmNsYXNzLCAiVHJhdmVyc2VyIik7CiAgICAgICAgICAgICAgICAgICAgIHB1dChUcmVlLmNsYXNzLCAiVHJlZSIpOworICAgICAgICAgICAgICAgICAgICBwdXQoQnVsa1NldC5jbGFzcywgIkJ1bGtTZXQiKTsKICAgICAgICAgICAgICAgICAgICAgcHV0KEJ5dGVjb2RlLmNsYXNzLCAiQnl0ZWNvZGUiKTsKICAgICAgICAgICAgICAgICAgICAgcHV0KEJ5dGVjb2RlLkJpbmRpbmcuY2xhc3MsICJCaW5kaW5nIik7CiAgICAgICAgICAgICAgICAgICAgIHB1dChBbmRQLmNsYXNzLCAiUCIpOwogICAgICAgICAgICAgICAgICAgICBwdXQoT3JQLmNsYXNzLCAiUCIpOwogICAgICAgICAgICAgICAgICAgICBwdXQoUC5jbGFzcywgIlAiKTsKKyAgICAgICAgICAgICAgICAgICAgcHV0KFRleHRQLmNsYXNzLCAiVGV4dFAiKTsKICAgICAgICAgICAgICAgICAgICAgU3RyZWFtLm9mKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnRleFByb3BlcnR5LkNhcmRpbmFsaXR5LmNsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbi5jbGFzcywKQEAgLTE3Niw2ICsxOTQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIElubGluZUZpbHRlclN0cmF0ZWd5LmNsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGNoUHJlZGljYXRlU3RyYXRlZ3kuY2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJMaW1pdFN0cmF0ZWd5LmNsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbnNTdHJhdGVneS5jbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRoUHJvY2Vzc29yU3RyYXRlZ3kuY2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0aFJldHJhY3Rpb25TdHJhdGVneS5jbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3VudFN0cmF0ZWd5LmNsYXNzLApAQCAtMTkxLDYgKzIxMCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JhcGhGaWx0ZXJTdHJhdGVneS5jbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJ0ZXhQcm9ncmFtU3RyYXRlZ3kuY2xhc3MKICAgICAgICAgICAgICAgICAgICAgKS5mb3JFYWNoKHN0cmF0ZWd5IC0+IHB1dChzdHJhdGVneSwgc3RyYXRlZ3kuZ2V0U2ltcGxlTmFtZSgpKSk7CisKKyAgICAgICAgICAgICAgICAgICAgR3JhcGhTT05Nb2R1bGUudHJ5TG9hZFNwYXJxbFN0cmF0ZWd5KCkuaWZQcmVzZW50KHMgLT4gcHV0KHMsIHMuZ2V0U2ltcGxlTmFtZSgpKSk7CiAgICAgICAgICAgICAgICAgfX0pOwogCiAgICAgICAgIC8qKgpAQCAtMjI0LDYgKzI0NSw3IEBACiAgICAgICAgICAgICBhZGRTZXJpYWxpemVyKERvdWJsZS5jbGFzcywgbmV3IEdyYXBoU09OU2VyaWFsaXplcnNWM2QwLkRvdWJsZUdyYXBoU09OU2VyaWFsaXplcigpKTsKIAogICAgICAgICAgICAgLy8gdHJhdmVyc2FsCisgICAgICAgICAgICBhZGRTZXJpYWxpemVyKEJ1bGtTZXQuY2xhc3MsIG5ldyBUcmF2ZXJzYWxTZXJpYWxpemVyc1YzZDAuQnVsa1NldEphY2tzb25TZXJpYWxpemVyKCkpOwogICAgICAgICAgICAgYWRkU2VyaWFsaXplcihUcmF2ZXJzYWwuY2xhc3MsIG5ldyBUcmF2ZXJzYWxTZXJpYWxpemVyc1YzZDAuVHJhdmVyc2FsSmFja3NvblNlcmlhbGl6ZXIoKSk7CiAgICAgICAgICAgICBhZGRTZXJpYWxpemVyKEJ5dGVjb2RlLmNsYXNzLCBuZXcgVHJhdmVyc2FsU2VyaWFsaXplcnNWM2QwLkJ5dGVjb2RlSmFja3NvblNlcmlhbGl6ZXIoKSk7CiAgICAgICAgICAgICBTdHJlYW0ub2YoVmVydGV4UHJvcGVydHkuQ2FyZGluYWxpdHkuY2xhc3MsCkBAIC0yNjUsNiArMjg3LDcgQEAKICAgICAgICAgICAgIGFkZERlc2VyaWFsaXplcihEb3VibGUuY2xhc3MsIG5ldyBHcmFwaFNPTlNlcmlhbGl6ZXJzVjNkMC5Eb3VibGVKYWNrc29uRGVzZXJpYWxpemVyKCkpOwogCiAgICAgICAgICAgICAvLyB0cmF2ZXJzYWwKKyAgICAgICAgICAgIGFkZERlc2VyaWFsaXplcihCdWxrU2V0LmNsYXNzLCBuZXcgVHJhdmVyc2FsU2VyaWFsaXplcnNWM2QwLkJ1bGtTZXRKYWNrc29uRGVzZXJpYWxpemVyKCkpOwogICAgICAgICAgICAgYWRkRGVzZXJpYWxpemVyKEJ5dGVjb2RlLmNsYXNzLCBuZXcgVHJhdmVyc2FsU2VyaWFsaXplcnNWM2QwLkJ5dGVjb2RlSmFja3NvbkRlc2VyaWFsaXplcigpKTsKICAgICAgICAgICAgIGFkZERlc2VyaWFsaXplcihCeXRlY29kZS5CaW5kaW5nLmNsYXNzLCBuZXcgVHJhdmVyc2FsU2VyaWFsaXplcnNWM2QwLkJpbmRpbmdKYWNrc29uRGVzZXJpYWxpemVyKCkpOwogICAgICAgICAgICAgU3RyZWFtLm9mKFZlcnRleFByb3BlcnR5LkNhcmRpbmFsaXR5LnZhbHVlcygpLApAQCAtMjc4LDYgKzMwMSw3IEBACiAgICAgICAgICAgICAgICAgICAgIFRyYXZlcnNhbE9wdGlvblBhcmVudC5QaWNrLnZhbHVlcygpLAogICAgICAgICAgICAgICAgICAgICBULnZhbHVlcygpKS5mbGF0TWFwKFN0cmVhbTo6b2YpLmZvckVhY2goZSAtPiBhZGREZXNlcmlhbGl6ZXIoZS5nZXRDbGFzcygpLCBuZXcgVHJhdmVyc2FsU2VyaWFsaXplcnNWM2QwLkVudW1KYWNrc29uRGVzZXJpYWxpemVyKGUuZ2V0RGVjbGFyaW5nQ2xhc3MoKSkpKTsKICAgICAgICAgICAgIGFkZERlc2VyaWFsaXplcihQLmNsYXNzLCBuZXcgVHJhdmVyc2FsU2VyaWFsaXplcnNWM2QwLlBKYWNrc29uRGVzZXJpYWxpemVyKCkpOworICAgICAgICAgICAgYWRkRGVzZXJpYWxpemVyKFRleHRQLmNsYXNzLCBuZXcgVHJhdmVyc2FsU2VyaWFsaXplcnNWM2QwLlRleHRQSmFja3NvbkRlc2VyaWFsaXplcigpKTsKICAgICAgICAgICAgIGFkZERlc2VyaWFsaXplcihMYW1iZGEuY2xhc3MsIG5ldyBUcmF2ZXJzYWxTZXJpYWxpemVyc1YzZDAuTGFtYmRhSmFja3NvbkRlc2VyaWFsaXplcigpKTsKICAgICAgICAgICAgIGFkZERlc2VyaWFsaXplcihUcmF2ZXJzZXIuY2xhc3MsIG5ldyBUcmF2ZXJzYWxTZXJpYWxpemVyc1YzZDAuVHJhdmVyc2VySmFja3NvbkRlc2VyaWFsaXplcigpKTsKICAgICAgICAgICAgIEFycmF5cy5hc0xpc3QoCkBAIC0yOTYsNiArMzIwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgSW5saW5lRmlsdGVyU3RyYXRlZ3kuY2xhc3MsCiAgICAgICAgICAgICAgICAgICAgIE1hdGNoUHJlZGljYXRlU3RyYXRlZ3kuY2xhc3MsCiAgICAgICAgICAgICAgICAgICAgIE9yZGVyTGltaXRTdHJhdGVneS5jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgT3B0aW9uc1N0cmF0ZWd5LmNsYXNzLAogICAgICAgICAgICAgICAgICAgICBQYXRoUHJvY2Vzc29yU3RyYXRlZ3kuY2xhc3MsCiAgICAgICAgICAgICAgICAgICAgIFBhdGhSZXRyYWN0aW9uU3RyYXRlZ3kuY2xhc3MsCiAgICAgICAgICAgICAgICAgICAgIENvdW50U3RyYXRlZ3kuY2xhc3MsCkBAIC0zMTEsNiArMzM2LDggQEAKICAgICAgICAgICAgICAgICAgICAgR3JhcGhGaWx0ZXJTdHJhdGVneS5jbGFzcywKICAgICAgICAgICAgICAgICAgICAgVmVydGV4UHJvZ3JhbVN0cmF0ZWd5LmNsYXNzCiAgICAgICAgICAgICApLmZvckVhY2goc3RyYXRlZ3kgLT4gYWRkRGVzZXJpYWxpemVyKHN0cmF0ZWd5LCBuZXcgVHJhdmVyc2FsU2VyaWFsaXplcnNWM2QwLlRyYXZlcnNhbFN0cmF0ZWd5UHJveHlKYWNrc29uRGVzZXJpYWxpemVyKHN0cmF0ZWd5KSkpOworCisgICAgICAgICAgICBHcmFwaFNPTk1vZHVsZS50cnlMb2FkU3BhcnFsU3RyYXRlZ3koKS5pZlByZXNlbnQocyAtPiBhZGREZXNlcmlhbGl6ZXIocywgbmV3IFRyYXZlcnNhbFNlcmlhbGl6ZXJzVjNkMC5UcmF2ZXJzYWxTdHJhdGVneVByb3h5SmFja3NvbkRlc2VyaWFsaXplcihzKSkpOwogICAgICAgICB9CiAKICAgICAgICAgcHVibGljIHN0YXRpYyBCdWlsZGVyIGJ1aWxkKCkgewpAQCAtMzcxLDYgKzM5OCw3IEBACiAgICAgICAgICAgICAgICAgICAgIHB1dChBbmRQLmNsYXNzLCAiUCIpOwogICAgICAgICAgICAgICAgICAgICBwdXQoT3JQLmNsYXNzLCAiUCIpOwogICAgICAgICAgICAgICAgICAgICBwdXQoUC5jbGFzcywgIlAiKTsKKyAgICAgICAgICAgICAgICAgICAgcHV0KFRleHRQLmNsYXNzLCAiVGV4dFAiKTsKICAgICAgICAgICAgICAgICAgICAgU3RyZWFtLm9mKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnRleFByb3BlcnR5LkNhcmRpbmFsaXR5LmNsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbi5jbGFzcywKQEAgLTM5OCw2ICs0MjYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIElubGluZUZpbHRlclN0cmF0ZWd5LmNsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGNoUHJlZGljYXRlU3RyYXRlZ3kuY2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJMaW1pdFN0cmF0ZWd5LmNsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbnNTdHJhdGVneS5jbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRoUHJvY2Vzc29yU3RyYXRlZ3kuY2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0aFJldHJhY3Rpb25TdHJhdGVneS5jbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3VudFN0cmF0ZWd5LmNsYXNzLApAQCAtNDEzLDYgKzQ0Miw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JhcGhGaWx0ZXJTdHJhdGVneS5jbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJ0ZXhQcm9ncmFtU3RyYXRlZ3kuY2xhc3MKICAgICAgICAgICAgICAgICAgICAgKS5mb3JFYWNoKHN0cmF0ZWd5IC0+IHB1dChzdHJhdGVneSwgc3RyYXRlZ3kuZ2V0U2ltcGxlTmFtZSgpKSk7CisKKyAgICAgICAgICAgICAgICAgICAgR3JhcGhTT05Nb2R1bGUudHJ5TG9hZFNwYXJxbFN0cmF0ZWd5KCkuaWZQcmVzZW50KHMgLT4gcHV0KHMsIHMuZ2V0U2ltcGxlTmFtZSgpKSk7CiAgICAgICAgICAgICAgICAgfX0pOwogCiAgICAgICAgIC8qKgpAQCAtNDkyLDYgKzUyMyw3IEBACiAgICAgICAgICAgICAgICAgICAgIFRyYXZlcnNhbE9wdGlvblBhcmVudC5QaWNrLnZhbHVlcygpLAogICAgICAgICAgICAgICAgICAgICBULnZhbHVlcygpKS5mbGF0TWFwKFN0cmVhbTo6b2YpLmZvckVhY2goZSAtPiBhZGREZXNlcmlhbGl6ZXIoZS5nZXRDbGFzcygpLCBuZXcgVHJhdmVyc2FsU2VyaWFsaXplcnNWMmQwLkVudW1KYWNrc29uRGVzZXJpYWxpemVyKGUuZ2V0RGVjbGFyaW5nQ2xhc3MoKSkpKTsKICAgICAgICAgICAgIGFkZERlc2VyaWFsaXplcihQLmNsYXNzLCBuZXcgVHJhdmVyc2FsU2VyaWFsaXplcnNWMmQwLlBKYWNrc29uRGVzZXJpYWxpemVyKCkpOworICAgICAgICAgICAgYWRkRGVzZXJpYWxpemVyKFRleHRQLmNsYXNzLCBuZXcgVHJhdmVyc2FsU2VyaWFsaXplcnNWMmQwLlRleHRQSmFja3NvbkRlc2VyaWFsaXplcigpKTsKICAgICAgICAgICAgIGFkZERlc2VyaWFsaXplcihMYW1iZGEuY2xhc3MsIG5ldyBUcmF2ZXJzYWxTZXJpYWxpemVyc1YyZDAuTGFtYmRhSmFja3NvbkRlc2VyaWFsaXplcigpKTsKICAgICAgICAgICAgIGFkZERlc2VyaWFsaXplcihUcmF2ZXJzZXIuY2xhc3MsIG5ldyBUcmF2ZXJzYWxTZXJpYWxpemVyc1YyZDAuVHJhdmVyc2VySmFja3NvbkRlc2VyaWFsaXplcigpKTsKICAgICAgICAgICAgIEFycmF5cy5hc0xpc3QoCkBAIC01MTAsNiArNTQyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgSW5saW5lRmlsdGVyU3RyYXRlZ3kuY2xhc3MsCiAgICAgICAgICAgICAgICAgICAgIE1hdGNoUHJlZGljYXRlU3RyYXRlZ3kuY2xhc3MsCiAgICAgICAgICAgICAgICAgICAgIE9yZGVyTGltaXRTdHJhdGVneS5jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgT3B0aW9uc1N0cmF0ZWd5LmNsYXNzLAogICAgICAgICAgICAgICAgICAgICBQYXRoUHJvY2Vzc29yU3RyYXRlZ3kuY2xhc3MsCiAgICAgICAgICAgICAgICAgICAgIFBhdGhSZXRyYWN0aW9uU3RyYXRlZ3kuY2xhc3MsCiAgICAgICAgICAgICAgICAgICAgIENvdW50U3RyYXRlZ3kuY2xhc3MsCkBAIC01MjUsNiArNTU4LDggQEAKICAgICAgICAgICAgICAgICAgICAgR3JhcGhGaWx0ZXJTdHJhdGVneS5jbGFzcywKICAgICAgICAgICAgICAgICAgICAgVmVydGV4UHJvZ3JhbVN0cmF0ZWd5LmNsYXNzCiAgICAgICAgICAgICApLmZvckVhY2goc3RyYXRlZ3kgLT4gYWRkRGVzZXJpYWxpemVyKHN0cmF0ZWd5LCBuZXcgVHJhdmVyc2FsU2VyaWFsaXplcnNWMmQwLlRyYXZlcnNhbFN0cmF0ZWd5UHJveHlKYWNrc29uRGVzZXJpYWxpemVyKHN0cmF0ZWd5KSkpOworCisgICAgICAgICAgICBHcmFwaFNPTk1vZHVsZS50cnlMb2FkU3BhcnFsU3RyYXRlZ3koKS5pZlByZXNlbnQocyAtPiBhZGREZXNlcmlhbGl6ZXIocywgbmV3IFRyYXZlcnNhbFNlcmlhbGl6ZXJzVjJkMC5UcmF2ZXJzYWxTdHJhdGVneVByb3h5SmFja3NvbkRlc2VyaWFsaXplcihzKSkpOwogICAgICAgICB9CiAKICAgICAgICAgcHVibGljIHN0YXRpYyBCdWlsZGVyIGJ1aWxkKCkgewpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vR3JhcGhTT05UeXBlU2VyaWFsaXplclYzZDAuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL0dyYXBoU09OVHlwZVNlcmlhbGl6ZXJWM2QwLmphdmEKaW5kZXggMmNkNTdkYy4uZWNhOTFlZiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vR3JhcGhTT05UeXBlU2VyaWFsaXplclYzZDAuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9HcmFwaFNPTlR5cGVTZXJpYWxpemVyVjNkMC5qYXZhCkBAIC0xMjUsOSArMTI1LDkgQEAKICAgICAgICAgICAgICAgICBtYXBwZWQgPSBUcmVlLmNsYXNzOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIG1hcHBlZCA9IE1hcC5jbGFzczsKLSAgICAgICAgfSBlbHNlIGlmIChMaXN0LmNsYXNzLmlzQXNzaWduYWJsZUZyb20oYykgfHwgQnVsa1NldC5jbGFzcy5pc0Fzc2lnbmFibGVGcm9tKGMpKSAgLy8gY29lcmNlIEJ1bGtTZXQgdG8gTGlzdCBhcyB0aGVpciBiZWhhdmlvciBvbiBpdGVyYXRpb24gaXMgaWRlbnRpY2FsCisgICAgICAgIH0gZWxzZSBpZiAoTGlzdC5jbGFzcy5pc0Fzc2lnbmFibGVGcm9tKGMpKQogICAgICAgICAgICAgbWFwcGVkID0gTGlzdC5jbGFzczsKLSAgICAgICAgZWxzZSBpZiAoU2V0LmNsYXNzLmlzQXNzaWduYWJsZUZyb20oYykpCisgICAgICAgIGVsc2UgaWYgKFNldC5jbGFzcy5pc0Fzc2lnbmFibGVGcm9tKGMpICYmICFCdWxrU2V0LmNsYXNzLmlzQXNzaWduYWJsZUZyb20oYykpICAgLy8gd2UgaGF2ZSBzcGVjaWFsIGhhbmRsaW5nIG9mIEJ1bGtTZXQKICAgICAgICAgICAgIG1hcHBlZCA9IFNldC5jbGFzczsKICAgICAgICAgZWxzZSBpZiAoVmVydGV4LmNsYXNzLmlzQXNzaWduYWJsZUZyb20oYykpCiAgICAgICAgICAgICBtYXBwZWQgPSBWZXJ0ZXguY2xhc3M7CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9UcmF2ZXJzYWxTZXJpYWxpemVyc1YyZDAuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL1RyYXZlcnNhbFNlcmlhbGl6ZXJzVjJkMC5qYXZhCmluZGV4IDJhMDc3MjMuLjUyOTc3MzMgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL1RyYXZlcnNhbFNlcmlhbGl6ZXJzVjJkMC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL1RyYXZlcnNhbFNlcmlhbGl6ZXJzVjJkMC5qYXZhCkBAIC0yNCw2ICsyNCw3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnJlbW90ZS50cmF2ZXJzYWwuRGVmYXVsdFJlbW90ZVRyYXZlcnNlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLkJ5dGVjb2RlOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRleHRQOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsU3RyYXRlZ3k7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzZXI7CkBAIC0zNzIsNiArMzczLDQwIEBACiAgICAgICAgIH0KICAgICB9CiAKKyAgICBmaW5hbCBzdGF0aWMgY2xhc3MgVGV4dFBKYWNrc29uRGVzZXJpYWxpemVyIGV4dGVuZHMgU3RkRGVzZXJpYWxpemVyPFRleHRQPiB7CisKKyAgICAgICAgcHVibGljIFRleHRQSmFja3NvbkRlc2VyaWFsaXplcigpIHsKKyAgICAgICAgICAgIHN1cGVyKFRleHRQLmNsYXNzKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVGV4dFAgZGVzZXJpYWxpemUoZmluYWwgSnNvblBhcnNlciBqc29uUGFyc2VyLCBmaW5hbCBEZXNlcmlhbGl6YXRpb25Db250ZXh0IGRlc2VyaWFsaXphdGlvbkNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiwgSnNvblByb2Nlc3NpbmdFeGNlcHRpb24geworICAgICAgICAgICAgU3RyaW5nIHByZWRpY2F0ZSA9IG51bGw7CisgICAgICAgICAgICBTdHJpbmcgdmFsdWUgPSBudWxsOworCisgICAgICAgICAgICB3aGlsZSAoanNvblBhcnNlci5uZXh0VG9rZW4oKSAhPSBKc29uVG9rZW4uRU5EX09CSkVDVCkgeworICAgICAgICAgICAgICAgIGlmIChqc29uUGFyc2VyLmdldEN1cnJlbnROYW1lKCkuZXF1YWxzKEdyYXBoU09OVG9rZW5zLlBSRURJQ0FURSkpIHsKKyAgICAgICAgICAgICAgICAgICAganNvblBhcnNlci5uZXh0VG9rZW4oKTsKKyAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlID0ganNvblBhcnNlci5nZXRUZXh0KCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChqc29uUGFyc2VyLmdldEN1cnJlbnROYW1lKCkuZXF1YWxzKEdyYXBoU09OVG9rZW5zLlZBTFVFKSkgeworICAgICAgICAgICAgICAgICAgICBqc29uUGFyc2VyLm5leHRUb2tlbigpOworICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGRlc2VyaWFsaXphdGlvbkNvbnRleHQucmVhZFZhbHVlKGpzb25QYXJzZXIsIFN0cmluZy5jbGFzcyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHJldHVybiAoVGV4dFApIFRleHRQLmNsYXNzLmdldE1ldGhvZChwcmVkaWNhdGUsIFN0cmluZy5jbGFzcykuaW52b2tlKG51bGwsIHZhbHVlKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKGZpbmFsIEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbihlLmdldE1lc3NhZ2UoKSwgZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIGJvb2xlYW4gaXNDYWNoYWJsZSgpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorCiAgICAgZmluYWwgc3RhdGljIGNsYXNzIExhbWJkYUphY2tzb25EZXNlcmlhbGl6ZXIgZXh0ZW5kcyBTdGREZXNlcmlhbGl6ZXI8TGFtYmRhPiB7CiAKICAgICAgICAgcHVibGljIExhbWJkYUphY2tzb25EZXNlcmlhbGl6ZXIoKSB7CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9UcmF2ZXJzYWxTZXJpYWxpemVyc1YzZDAuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL1RyYXZlcnNhbFNlcmlhbGl6ZXJzVjNkMC5qYXZhCmluZGV4IGVhYTdiMGYuLjUxMzJlYmQgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL1RyYXZlcnNhbFNlcmlhbGl6ZXJzVjNkMC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL1RyYXZlcnNhbFNlcmlhbGl6ZXJzVjNkMC5qYXZhCkBAIC0yNCw5ICsyNCwxMSBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5yZW1vdGUudHJhdmVyc2FsLkRlZmF1bHRSZW1vdGVUcmF2ZXJzZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5CeXRlY29kZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UZXh0UDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbFN0cmF0ZWd5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2VyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLkJ1bGtTZXQ7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5UcmF2ZXJzYWxTdHJhdGVneVByb3h5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5BbmRQOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5Db25uZWN0aXZlUDsKQEAgLTQ3LDEwICs0OSwxMSBAQAogCiBpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKIGltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CiBpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247CitpbXBvcnQgamF2YS51dGlsLkxpbmtlZEhhc2hNYXA7CiBpbXBvcnQgamF2YS51dGlsLkxpc3Q7CiBpbXBvcnQgamF2YS51dGlsLk1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuU2V0OwogCiAvKioKICAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQpAQCAtMTg1LDYgKzE4OCwyNCBAQAogCiAgICAgfQogCisgICAgZmluYWwgc3RhdGljIGNsYXNzIEJ1bGtTZXRKYWNrc29uU2VyaWFsaXplciBleHRlbmRzIFN0ZFNjYWxhclNlcmlhbGl6ZXI8QnVsa1NldD4geworCisgICAgICAgIHB1YmxpYyBCdWxrU2V0SmFja3NvblNlcmlhbGl6ZXIoKSB7CisgICAgICAgICAgICBzdXBlcihCdWxrU2V0LmNsYXNzKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBzZXJpYWxpemUoZmluYWwgQnVsa1NldCBidWxrU2V0LCBmaW5hbCBKc29uR2VuZXJhdG9yIGpzb25HZW5lcmF0b3IsIGZpbmFsIFNlcmlhbGl6ZXJQcm92aWRlciBzZXJpYWxpemVyUHJvdmlkZXIpCisgICAgICAgICAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgICAgIGpzb25HZW5lcmF0b3Iud3JpdGVTdGFydEFycmF5KCk7CisgICAgICAgICAgICBmb3IgKE1hcC5FbnRyeSBlbnRyeSA6IChTZXQ8TWFwLkVudHJ5PikgYnVsa1NldC5hc0J1bGsoKS5lbnRyeVNldCgpKSB7CisgICAgICAgICAgICAgICAganNvbkdlbmVyYXRvci53cml0ZU9iamVjdChlbnRyeS5nZXRLZXkoKSk7CisgICAgICAgICAgICAgICAganNvbkdlbmVyYXRvci53cml0ZU9iamVjdChlbnRyeS5nZXRWYWx1ZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGpzb25HZW5lcmF0b3Iud3JpdGVFbmRBcnJheSgpOworICAgICAgICB9CisgICAgfQorCiAgICAgZmluYWwgc3RhdGljIGNsYXNzIEJpbmRpbmdKYWNrc29uU2VyaWFsaXplciBleHRlbmRzIFN0ZFNjYWxhclNlcmlhbGl6ZXI8Qnl0ZWNvZGUuQmluZGluZz4gewogCiAgICAgICAgIHB1YmxpYyBCaW5kaW5nSmFja3NvblNlcmlhbGl6ZXIoKSB7CkBAIC0zNzAsNiArMzkxLDQwIEBACiAgICAgICAgIH0KICAgICB9CiAKKyAgICBmaW5hbCBzdGF0aWMgY2xhc3MgVGV4dFBKYWNrc29uRGVzZXJpYWxpemVyIGV4dGVuZHMgU3RkRGVzZXJpYWxpemVyPFRleHRQPiB7CisKKyAgICAgICAgcHVibGljIFRleHRQSmFja3NvbkRlc2VyaWFsaXplcigpIHsKKyAgICAgICAgICAgIHN1cGVyKFRleHRQLmNsYXNzKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVGV4dFAgZGVzZXJpYWxpemUoZmluYWwgSnNvblBhcnNlciBqc29uUGFyc2VyLCBmaW5hbCBEZXNlcmlhbGl6YXRpb25Db250ZXh0IGRlc2VyaWFsaXphdGlvbkNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiwgSnNvblByb2Nlc3NpbmdFeGNlcHRpb24geworICAgICAgICAgICAgU3RyaW5nIHByZWRpY2F0ZSA9IG51bGw7CisgICAgICAgICAgICBTdHJpbmcgdmFsdWUgPSBudWxsOworCisgICAgICAgICAgICB3aGlsZSAoanNvblBhcnNlci5uZXh0VG9rZW4oKSAhPSBKc29uVG9rZW4uRU5EX09CSkVDVCkgeworICAgICAgICAgICAgICAgIGlmIChqc29uUGFyc2VyLmdldEN1cnJlbnROYW1lKCkuZXF1YWxzKEdyYXBoU09OVG9rZW5zLlBSRURJQ0FURSkpIHsKKyAgICAgICAgICAgICAgICAgICAganNvblBhcnNlci5uZXh0VG9rZW4oKTsKKyAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlID0ganNvblBhcnNlci5nZXRUZXh0KCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChqc29uUGFyc2VyLmdldEN1cnJlbnROYW1lKCkuZXF1YWxzKEdyYXBoU09OVG9rZW5zLlZBTFVFKSkgeworICAgICAgICAgICAgICAgICAgICBqc29uUGFyc2VyLm5leHRUb2tlbigpOworICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGRlc2VyaWFsaXphdGlvbkNvbnRleHQucmVhZFZhbHVlKGpzb25QYXJzZXIsIFN0cmluZy5jbGFzcyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHJldHVybiAoVGV4dFApIFRleHRQLmNsYXNzLmdldE1ldGhvZChwcmVkaWNhdGUsIFN0cmluZy5jbGFzcykuaW52b2tlKG51bGwsIHZhbHVlKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKGZpbmFsIEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbihlLmdldE1lc3NhZ2UoKSwgZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIGJvb2xlYW4gaXNDYWNoYWJsZSgpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorCiAgICAgZmluYWwgc3RhdGljIGNsYXNzIExhbWJkYUphY2tzb25EZXNlcmlhbGl6ZXIgZXh0ZW5kcyBTdGREZXNlcmlhbGl6ZXI8TGFtYmRhPiB7CiAKICAgICAgICAgcHVibGljIExhbWJkYUphY2tzb25EZXNlcmlhbGl6ZXIoKSB7CkBAIC00MTEsNiArNDY2LDMyIEBACiAgICAgICAgIH0KICAgICB9CiAKKyAgICBmaW5hbCBzdGF0aWMgY2xhc3MgQnVsa1NldEphY2tzb25EZXNlcmlhbGl6ZXIgZXh0ZW5kcyBTdGREZXNlcmlhbGl6ZXI8QnVsa1NldD4geworICAgICAgICBwdWJsaWMgQnVsa1NldEphY2tzb25EZXNlcmlhbGl6ZXIoKSB7CisgICAgICAgICAgICBzdXBlcihCdWxrU2V0LmNsYXNzKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgQnVsa1NldCBkZXNlcmlhbGl6ZShmaW5hbCBKc29uUGFyc2VyIGpzb25QYXJzZXIsIGZpbmFsIERlc2VyaWFsaXphdGlvbkNvbnRleHQgZGVzZXJpYWxpemF0aW9uQ29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uLCBKc29uUHJvY2Vzc2luZ0V4Y2VwdGlvbiB7CisKKyAgICAgICAgICAgIGZpbmFsIEJ1bGtTZXQ8T2JqZWN0PiBidWxrU2V0ID0gbmV3IEJ1bGtTZXQ8PigpOworCisgICAgICAgICAgICB3aGlsZSAoanNvblBhcnNlci5uZXh0VG9rZW4oKSAhPSBKc29uVG9rZW4uRU5EX0FSUkFZKSB7CisgICAgICAgICAgICAgICAgZmluYWwgT2JqZWN0IGtleSA9IGRlc2VyaWFsaXphdGlvbkNvbnRleHQucmVhZFZhbHVlKGpzb25QYXJzZXIsIE9iamVjdC5jbGFzcyk7CisgICAgICAgICAgICAgICAganNvblBhcnNlci5uZXh0VG9rZW4oKTsKKyAgICAgICAgICAgICAgICBmaW5hbCBMb25nIHZhbCA9IGRlc2VyaWFsaXphdGlvbkNvbnRleHQucmVhZFZhbHVlKGpzb25QYXJzZXIsIExvbmcuY2xhc3MpOworICAgICAgICAgICAgICAgIGJ1bGtTZXQuYWRkKGtleSwgdmFsKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIGJ1bGtTZXQ7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIGJvb2xlYW4gaXNDYWNoYWJsZSgpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorCiAgICAgZmluYWwgc3RhdGljIGNsYXNzIEJpbmRpbmdKYWNrc29uRGVzZXJpYWxpemVyIGV4dGVuZHMgU3RkRGVzZXJpYWxpemVyPEJ5dGVjb2RlLkJpbmRpbmc+IHsKIAogICAgICAgICBwdWJsaWMgQmluZGluZ0phY2tzb25EZXNlcmlhbGl6ZXIoKSB7CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL0dyeW9TZXJpYWxpemVyc1YxZDAuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vR3J5b1NlcmlhbGl6ZXJzVjFkMC5qYXZhCmluZGV4IGNhN2MyNDEuLjc2OTc0NjIgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vR3J5b1NlcmlhbGl6ZXJzVjFkMC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vR3J5b1NlcmlhbGl6ZXJzVjFkMC5qYXZhCkBAIC0yMiw2ICsyMiw3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5CeXRlY29kZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QYXRoOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVGV4dFA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWxTb3VyY2U7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLkFuZFA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLkNvbm5lY3RpdmVQOwpAQCAtMjI4LDYgKzIyOSwyNiBAQAogICAgICAgICB9CiAgICAgfQogCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBjbGFzcyBUZXh0UFNlcmlhbGl6ZXIgaW1wbGVtZW50cyBTZXJpYWxpemVyU2hpbTxUZXh0UD4geworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIDxPIGV4dGVuZHMgT3V0cHV0U2hpbT4gdm9pZCB3cml0ZShmaW5hbCBLcnlvU2hpbTw/LCBPPiBrcnlvLCBmaW5hbCBPIG91dHB1dCwgZmluYWwgVGV4dFAgcCkgeworICAgICAgICAgICAgb3V0cHV0LndyaXRlU3RyaW5nKHAuZ2V0QmlQcmVkaWNhdGUoKS50b1N0cmluZygpKTsKKyAgICAgICAgICAgIGtyeW8ud3JpdGVPYmplY3Qob3V0cHV0LCBwLmdldFZhbHVlKCkpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyA8SSBleHRlbmRzIElucHV0U2hpbT4gVGV4dFAgcmVhZChmaW5hbCBLcnlvU2hpbTxJLCA/PiBrcnlvLCBmaW5hbCBJIGlucHV0LCBmaW5hbCBDbGFzczxUZXh0UD4gY2xhenopIHsKKyAgICAgICAgICAgIGZpbmFsIFN0cmluZyBwcmVkaWNhdGUgPSBpbnB1dC5yZWFkU3RyaW5nKCk7CisgICAgICAgICAgICBmaW5hbCBTdHJpbmcgdmFsdWUgPSBrcnlvLnJlYWRPYmplY3QoaW5wdXQsIFN0cmluZy5jbGFzcyk7CisKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIChUZXh0UCkgVGV4dFAuY2xhc3MuZ2V0TWV0aG9kKHByZWRpY2F0ZSwgU3RyaW5nLmNsYXNzKS5pbnZva2UobnVsbCwgdmFsdWUpOworICAgICAgICAgICAgfSBjYXRjaCAoZmluYWwgRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKGUuZ2V0TWVzc2FnZSgpLCBlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKwogICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgY2xhc3MgTGFtYmRhU2VyaWFsaXplciBpbXBsZW1lbnRzIFNlcmlhbGl6ZXJTaGltPExhbWJkYT4gewogICAgICAgICBAT3ZlcnJpZGUKICAgICAgICAgcHVibGljIDxPIGV4dGVuZHMgT3V0cHV0U2hpbT4gdm9pZCB3cml0ZShmaW5hbCBLcnlvU2hpbTw/LCBPPiBrcnlvLCBmaW5hbCBPIG91dHB1dCwgZmluYWwgTGFtYmRhIGxhbWJkYSkgewpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9HcnlvU2VyaWFsaXplcnNWM2QwLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL0dyeW9TZXJpYWxpemVyc1YzZDAuamF2YQppbmRleCA4YTU3YTA2Li5lMzViZDMzIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL0dyeW9TZXJpYWxpemVyc1YzZDAuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL0dyeW9TZXJpYWxpemVyc1YzZDAuamF2YQpAQCAtMjIsNiArMjIsNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuQnl0ZWNvZGU7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUGF0aDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRleHRQOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsU291cmNlOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5BbmRQOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5Db25uZWN0aXZlUDsKQEAgLTUyLDYgKzUzLDcgQEAKIGltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKIGltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKIGltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLkxpbmtlZEhhc2hNYXA7CiBpbXBvcnQgamF2YS51dGlsLkxpc3Q7CiBpbXBvcnQgamF2YS51dGlsLk1hcDsKIGltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdDsKQEAgLTM0Myw2ICszNDUsMjYgQEAKICAgICAgICAgfQogICAgIH0KIAorICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgY2xhc3MgVGV4dFBTZXJpYWxpemVyIGltcGxlbWVudHMgU2VyaWFsaXplclNoaW08VGV4dFA+IHsKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyA8TyBleHRlbmRzIE91dHB1dFNoaW0+IHZvaWQgd3JpdGUoZmluYWwgS3J5b1NoaW08PywgTz4ga3J5bywgZmluYWwgTyBvdXRwdXQsIGZpbmFsIFRleHRQIHApIHsKKyAgICAgICAgICAgIG91dHB1dC53cml0ZVN0cmluZyhwLmdldEJpUHJlZGljYXRlKCkudG9TdHJpbmcoKSk7CisgICAgICAgICAgICBrcnlvLndyaXRlT2JqZWN0KG91dHB1dCwgcC5nZXRWYWx1ZSgpKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgPEkgZXh0ZW5kcyBJbnB1dFNoaW0+IFRleHRQIHJlYWQoZmluYWwgS3J5b1NoaW08SSwgPz4ga3J5bywgZmluYWwgSSBpbnB1dCwgZmluYWwgQ2xhc3M8VGV4dFA+IGNsYXp6KSB7CisgICAgICAgICAgICBmaW5hbCBTdHJpbmcgcHJlZGljYXRlID0gaW5wdXQucmVhZFN0cmluZygpOworICAgICAgICAgICAgZmluYWwgU3RyaW5nIHZhbHVlID0ga3J5by5yZWFkT2JqZWN0KGlucHV0LCBTdHJpbmcuY2xhc3MpOworCisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHJldHVybiAoVGV4dFApIFRleHRQLmNsYXNzLmdldE1ldGhvZChwcmVkaWNhdGUsIFN0cmluZy5jbGFzcykuaW52b2tlKG51bGwsIHZhbHVlKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKGZpbmFsIEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbihlLmdldE1lc3NhZ2UoKSwgZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKICAgICBwdWJsaWMgZmluYWwgc3RhdGljIGNsYXNzIExhbWJkYVNlcmlhbGl6ZXIgaW1wbGVtZW50cyBTZXJpYWxpemVyU2hpbTxMYW1iZGE+IHsKICAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgIHB1YmxpYyA8TyBleHRlbmRzIE91dHB1dFNoaW0+IHZvaWQgd3JpdGUoZmluYWwgS3J5b1NoaW08PywgTz4ga3J5bywgZmluYWwgTyBvdXRwdXQsIGZpbmFsIExhbWJkYSBsYW1iZGEpIHsKQEAgLTQyNyw3ICs0NDksMTIgQEAKICAgICAgICAgICAgIG91dHB1dC53cml0ZVN0cmluZyhvYmplY3QuZ2V0TmFtZSgpKTsKICAgICAgICAgICAgIG91dHB1dC53cml0ZURvdWJsZShvYmplY3QuZ2V0RHVyYXRpb24oVGltZVVuaXQuTkFOT1NFQ09ORFMpIC8gMTAwMDAwMGQpOwogICAgICAgICAgICAga3J5by53cml0ZU9iamVjdChvdXRwdXQsIG9iamVjdC5nZXRDb3VudHMoKSk7Ci0gICAgICAgICAgICBrcnlvLndyaXRlT2JqZWN0KG91dHB1dCwgb2JqZWN0LmdldEFubm90YXRpb25zKCkpOworCisgICAgICAgICAgICAvLyBhbm5vdGF0aW9ucyBpcyBhIHN5bmNocm9uaXplZCBMaW5rZWRIYXNoTWFwIC0gZ2V0IHJpZCBvZiB0aGUgInN5bmNoIiBmb3Igc2VyaWFsaXphdGlvbiBhcyBncnlvCisgICAgICAgICAgICAvLyBkb2Vzbid0IGtub3cgaG93IHRvIGRlc2VyaWFsaXplIHRoYXQgd2VsbCBhbmQgTGlua2VkSGFzaE1hcCBzaG91bGQgd29yayB3aXRoIDMuMy54IGFuZCBwcmV2aW91cworICAgICAgICAgICAgZmluYWwgTWFwPFN0cmluZywgT2JqZWN0PiBhbm5vdGF0aW9ucyA9IG5ldyBMaW5rZWRIYXNoTWFwPD4oKTsKKyAgICAgICAgICAgIG9iamVjdC5nZXRBbm5vdGF0aW9ucygpLmZvckVhY2goYW5ub3RhdGlvbnM6OnB1dCk7CisgICAgICAgICAgICBrcnlvLndyaXRlT2JqZWN0KG91dHB1dCwgYW5ub3RhdGlvbnMpOwogCiAgICAgICAgICAgICAvLyBrcnlvIG1pZ2h0IGhhdmUgYSBwcm9ibGVtIHdpdGggTGlua2VkSGFzaE1hcCB2YWx1ZSBjb2xsZWN0aW9ucy4gY2FuJ3QgcmVjcmVhdGUgaXQgaW5kZXBlbmRlbnRseSBidXQKICAgICAgICAgICAgIC8vIGl0IGdldHMgZml4ZWQgd2l0aCBzdGFuZGFyZCBjb2xsZWN0aW9ucyBmb3Igc29tZSByZWFzb24uCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL0dyeW9WZXJzaW9uLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL0dyeW9WZXJzaW9uLmphdmEKaW5kZXggYjk0MmM0MS4uMzEzODQ4OCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9HcnlvVmVyc2lvbi5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vR3J5b1ZlcnNpb24uamF2YQpAQCAtMzMsNiArMzMsNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUG9wOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuU2Fja0Z1bmN0aW9uczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlNjb3BlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVGV4dFA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLlRyYXZlcnNhbE9wdGlvblBhcmVudDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuZmlsdGVyLlJhbmdlR2xvYmFsU3RlcDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLkZvbGRTdGVwOwpAQCAtNDcsNiArNDgsNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLlRyZWU7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLkNvbm5lY3RpdmVTdHJhdGVneTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uSGFsdGVkVHJhdmVyc2VyU3RyYXRlZ3k7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLk9wdGlvbnNTdHJhdGVneTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uUGFydGl0aW9uU3RyYXRlZ3k7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLlN1YmdyYXBoU3RyYXRlZ3k7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5maW5hbGl6YXRpb24uTWF0Y2hBbGdvcml0aG1TdHJhdGVneTsKQEAgLTY4LDEyICs3MCwxOCBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kudmVyaWZpY2F0aW9uLlJlYWRPbmx5U3RyYXRlZ3k7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS52ZXJpZmljYXRpb24uUmVzZXJ2ZWRLZXlzVmVyaWZpY2F0aW9uU3RyYXRlZ3k7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuQl9MUF9PX1BfU19TRV9TTF9UcmF2ZXJzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuQl9MUF9OTF9PX1BfU19TRV9TTF9UcmF2ZXJzZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuQl9MUF9PX1NfU0VfU0xfVHJhdmVyc2VyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyLkJfTFBfTkxfT19TX1NFX1NMX1RyYXZlcnNlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci5CX09fU19TRV9TTF9UcmF2ZXJzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuQl9OTF9PX1NfU0VfU0xfVHJhdmVyc2VyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyLkJfT19UcmF2ZXJzZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuTFBfT19PQl9QX1NfU0VfU0xfVHJhdmVyc2VyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyLkxQX05MX09fT0JfU19TRV9TTF9UcmF2ZXJzZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuTFBfT19PQl9TX1NFX1NMX1RyYXZlcnNlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci5MUF9OTF9PX09CX1BfU19TRV9TTF9UcmF2ZXJzZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuT19PQl9TX1NFX1NMX1RyYXZlcnNlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci5OTF9PX09CX1NfU0VfU0xfVHJhdmVyc2VyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyLk9fVHJhdmVyc2VyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyLlByb2plY3RlZFRyYXZlcnNlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci51dGlsLkluZGV4ZWRUcmF2ZXJzZXJTZXQ7CkBAIC0xMTEsNiArMTE5LDggQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5zaGFkZWQua3J5by5DbGFzc1Jlc29sdmVyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLnNoYWRlZC5rcnlvLktyeW9TZXJpYWxpemFibGU7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3Auc2hhZGVkLmtyeW8uc2VyaWFsaXplcnMuSmF2YVNlcmlhbGl6ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIudXRpbC5MYWJlbGxlZENvdW50ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmNvbGxlY3Rpb25zLm1hcC5SZWZlcmVuY2VNYXA7CiBpbXBvcnQgb3JnLmphdmF0dXBsZXMuUGFpcjsKIGltcG9ydCBvcmcuamF2YXR1cGxlcy5UcmlwbGV0OwogCkBAIC0xNDksNiArMTU5LDcgQEAKIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsKIGltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOwogaW1wb3J0IGphdmEudXRpbC5PcHRpb25hbDsKK2ltcG9ydCBqYXZhLnV0aWwuU3RhY2s7CiBpbXBvcnQgamF2YS51dGlsLlRpbWVab25lOwogaW1wb3J0IGphdmEudXRpbC5UcmVlTWFwOwogaW1wb3J0IGphdmEudXRpbC5UcmVlU2V0OwpAQCAtMjk5LDExICszMTAsMTMgQEAKICAgICAgICAgICAgIGFkZChHcnlvVHlwZVJlZy5vZihPX09CX1NfU0VfU0xfVHJhdmVyc2VyLmNsYXNzLCA4OSkpOwogICAgICAgICAgICAgYWRkKEdyeW9UeXBlUmVnLm9mKExQX09fT0JfU19TRV9TTF9UcmF2ZXJzZXIuY2xhc3MsIDkwKSk7CiAgICAgICAgICAgICBhZGQoR3J5b1R5cGVSZWcub2YoTFBfT19PQl9QX1NfU0VfU0xfVHJhdmVyc2VyLmNsYXNzLCA5MSkpOworCiAgICAgICAgICAgICBhZGQoR3J5b1R5cGVSZWcub2YoUHJvamVjdGVkVHJhdmVyc2VyLmNsYXNzLCAxNjgpKTsKICAgICAgICAgICAgIGFkZChHcnlvVHlwZVJlZy5vZihEZWZhdWx0UmVtb3RlVHJhdmVyc2VyLmNsYXNzLCAxMjMsIG5ldyBHcnlvU2VyaWFsaXplcnNWM2QwLkRlZmF1bHRSZW1vdGVUcmF2ZXJzZXJTZXJpYWxpemVyKCkpKTsKIAogICAgICAgICAgICAgYWRkKEdyeW9UeXBlUmVnLm9mKEJ5dGVjb2RlLmNsYXNzLCAxMjIsIG5ldyBHcnlvU2VyaWFsaXplcnNWM2QwLkJ5dGVjb2RlU2VyaWFsaXplcigpKSk7CiAgICAgICAgICAgICBhZGQoR3J5b1R5cGVSZWcub2YoUC5jbGFzcywgMTI0LCBuZXcgR3J5b1NlcmlhbGl6ZXJzVjNkMC5QU2VyaWFsaXplcigpKSk7CisgICAgICAgICAgICBhZGQoR3J5b1R5cGVSZWcub2YoVGV4dFAuY2xhc3MsIDE4NiwgbmV3IEdyeW9TZXJpYWxpemVyc1YzZDAuVGV4dFBTZXJpYWxpemVyKCkpKTsKICAgICAgICAgICAgIGFkZChHcnlvVHlwZVJlZy5vZihMYW1iZGEuY2xhc3MsIDEyNSwgbmV3IEdyeW9TZXJpYWxpemVyc1YzZDAuTGFtYmRhU2VyaWFsaXplcigpKSk7CiAgICAgICAgICAgICBhZGQoR3J5b1R5cGVSZWcub2YoQnl0ZWNvZGUuQmluZGluZy5jbGFzcywgMTI2LCBuZXcgR3J5b1NlcmlhbGl6ZXJzVjNkMC5CaW5kaW5nU2VyaWFsaXplcigpKSk7CiAgICAgICAgICAgICBhZGQoR3J5b1R5cGVSZWcub2YoT3JkZXIuY2xhc3MsIDEyNykpOwpAQCAtMzMxLDYgKzM0NCw3IEBACiAgICAgICAgICAgICBhZGQoR3J5b1R5cGVSZWcub2YoTGF6eUJhcnJpZXJTdHJhdGVneS5jbGFzcywgMTUwKSk7CiAgICAgICAgICAgICBhZGQoR3J5b1R5cGVSZWcub2YoTWF0Y2hQcmVkaWNhdGVTdHJhdGVneS5jbGFzcywgMTUxKSk7CiAgICAgICAgICAgICBhZGQoR3J5b1R5cGVSZWcub2YoT3JkZXJMaW1pdFN0cmF0ZWd5LmNsYXNzLCAxNTIpKTsKKyAgICAgICAgICAgIGFkZChHcnlvVHlwZVJlZy5vZihPcHRpb25zU3RyYXRlZ3kuY2xhc3MsIDE4NywgbmV3IEphdmFTZXJpYWxpemVyKCkpKTsKICAgICAgICAgICAgIGFkZChHcnlvVHlwZVJlZy5vZihQYXRoUHJvY2Vzc29yU3RyYXRlZ3kuY2xhc3MsIDE1MykpOwogICAgICAgICAgICAgYWRkKEdyeW9UeXBlUmVnLm9mKFBhdGhSZXRyYWN0aW9uU3RyYXRlZ3kuY2xhc3MsIDE1NCkpOwogICAgICAgICAgICAgYWRkKEdyeW9UeXBlUmVnLm9mKENvdW50U3RyYXRlZ3kuY2xhc3MsIDE1NSkpOwpAQCAtMzU0LDYgKzM2OCw3IEBACiAgICAgICAgICAgICBhZGQoR3J5b1R5cGVSZWcub2YoTWFwUmVkdWNlLk51bGxPYmplY3QuY2xhc3MsIDc0KSk7CiAgICAgICAgICAgICBhZGQoR3J5b1R5cGVSZWcub2YoQXRvbWljTG9uZy5jbGFzcywgNzkpKTsKICAgICAgICAgICAgIGFkZChHcnlvVHlwZVJlZy5vZihQYWlyLmNsYXNzLCA4OCwgbmV3IFV0aWxTZXJpYWxpemVycy5QYWlyU2VyaWFsaXplcigpKSk7CisgICAgICAgICAgICBhZGQoR3J5b1R5cGVSZWcub2YoVHJpcGxldC5jbGFzcywgMTgzLCBuZXcgVXRpbFNlcmlhbGl6ZXJzLlRyaXBsZXRTZXJpYWxpemVyKCkpKTsKICAgICAgICAgICAgIGFkZChHcnlvVHlwZVJlZy5vZihUcmF2ZXJzYWxFeHBsYW5hdGlvbi5jbGFzcywgMTA2LCBuZXcgSmF2YVNlcmlhbGl6ZXIoKSkpOwogCiAgICAgICAgICAgICBhZGQoR3J5b1R5cGVSZWcub2YoRHVyYXRpb24uY2xhc3MsIDkzLCBuZXcgSmF2YVRpbWVTZXJpYWxpemVycy5EdXJhdGlvblNlcmlhbGl6ZXIoKSkpOwpAQCAtMzgzLDYgKzM5OCwxNiBAQAogICAgICAgICAgICAgYWRkKEdyeW9UeXBlUmVnLm9mKFByb2ZpbGVTdGVwLlByb2ZpbGVCaU9wZXJhdG9yLmNsYXNzLCAxMTkpKTsKICAgICAgICAgICAgIGFkZChHcnlvVHlwZVJlZy5vZihJbmRleGVkVHJhdmVyc2VyU2V0LlZlcnRleEluZGV4ZWRUcmF2ZXJzZXJTZXQuY2xhc3MsIDE3MykpOwogCisgICAgICAgICAgICBhZGQoR3J5b1R5cGVSZWcub2YoQl9MUF9OTF9PX1BfU19TRV9TTF9UcmF2ZXJzZXIuY2xhc3MsIDE3NCkpOworICAgICAgICAgICAgYWRkKEdyeW9UeXBlUmVnLm9mKEJfTkxfT19TX1NFX1NMX1RyYXZlcnNlci5jbGFzcywgMTc1KSk7CisgICAgICAgICAgICBhZGQoR3J5b1R5cGVSZWcub2YoQl9MUF9OTF9PX1NfU0VfU0xfVHJhdmVyc2VyLmNsYXNzLCAxNzYpKTsKKyAgICAgICAgICAgIGFkZChHcnlvVHlwZVJlZy5vZihOTF9PX09CX1NfU0VfU0xfVHJhdmVyc2VyLmNsYXNzLCAxNzcpKTsKKyAgICAgICAgICAgIGFkZChHcnlvVHlwZVJlZy5vZihMUF9OTF9PX09CX1NfU0VfU0xfVHJhdmVyc2VyLmNsYXNzLCAxNzgpKTsKKyAgICAgICAgICAgIGFkZChHcnlvVHlwZVJlZy5vZihMUF9OTF9PX09CX1BfU19TRV9TTF9UcmF2ZXJzZXIuY2xhc3MsIDE3OSkpOworICAgICAgICAgICAgYWRkKEdyeW9UeXBlUmVnLm9mKExhYmVsbGVkQ291bnRlci5jbGFzcywgMTgwKSk7CisgICAgICAgICAgICBhZGQoR3J5b1R5cGVSZWcub2YoU3RhY2suY2xhc3MsIDE4MSkpOworICAgICAgICAgICAgYWRkKEdyeW9UeXBlUmVnLm9mKFJlZmVyZW5jZU1hcC5jbGFzcywgMTgyKSk7CisKICAgICAgICAgICAgIC8vIHBsYWNlaG9sZGVyIHNlcmlhbGl6ZXJzIGZvciBjbGFzc2VzIHRoYXQgZG9uJ3QgbGl2ZSBoZXJlIGluIGNvcmUuIHRoaXMgd2lsbCBhbGxvdyB0aGVtIHRvIGJlIHVzZWQgaWYKICAgICAgICAgICAgIC8vIHByZXNlbnQgIG9yIGlnbm9yZWQgaWYgdGhlIGNsYXNzIGlzbid0IGF2YWlsYWJsZS4gZWl0aGVyIHdheSB0aGUgcmVnaXN0cmF0aW9uIG51bWJlcnMgYXJlIGhlbGQgYXMKICAgICAgICAgICAgIC8vIHBsYWNlaG9sZGVycyBzbyB0aGF0IHRoZSBmb3JtYXQgc3RheXMgc3RhYmxlCkBAIC0zOTAsNiArNDE1LDkgQEAKICAgICAgICAgICAgICAgICAgICAgIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5SZXF1ZXN0TWVzc2FnZUdyeW9TZXJpYWxpemVyIiwgMTY3KTsKICAgICAgICAgICAgIHRyeUFkZER5bmFtaWNUeXBlKHRoaXMsICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5tZXNzYWdlLlJlc3BvbnNlTWVzc2FnZSIsCiAgICAgICAgICAgICAgICAgICAgICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuUmVzcG9uc2VNZXNzYWdlR3J5b1NlcmlhbGl6ZXIiLCAxNjkpOworCisgICAgICAgICAgICB0cnlBZGREeW5hbWljVHlwZSh0aGlzLCAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zcGFycWwucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuU3BhcnFsU3RyYXRlZ3kiLAorICAgICAgICAgICAgICAgICAgICBudWxsLCAxODQpOwogICAgICAgICB9fTsKICAgICB9CiAKQEAgLTQ4NCw2ICs1MTIsNyBAQAogCiAgICAgICAgICAgICBhZGQoR3J5b1R5cGVSZWcub2YoQnl0ZWNvZGUuY2xhc3MsIDEyMiwgbmV3IEdyeW9TZXJpYWxpemVyc1YxZDAuQnl0ZWNvZGVTZXJpYWxpemVyKCkpKTsKICAgICAgICAgICAgIGFkZChHcnlvVHlwZVJlZy5vZihQLmNsYXNzLCAxMjQsIG5ldyBHcnlvU2VyaWFsaXplcnNWMWQwLlBTZXJpYWxpemVyKCkpKTsKKyAgICAgICAgICAgIGFkZChHcnlvVHlwZVJlZy5vZihUZXh0UC5jbGFzcywgMTg2LCBuZXcgR3J5b1NlcmlhbGl6ZXJzVjFkMC5UZXh0UFNlcmlhbGl6ZXIoKSkpOyAvLyAqKipMQVNUIElEKioqCiAgICAgICAgICAgICBhZGQoR3J5b1R5cGVSZWcub2YoTGFtYmRhLmNsYXNzLCAxMjUsIG5ldyBHcnlvU2VyaWFsaXplcnNWMWQwLkxhbWJkYVNlcmlhbGl6ZXIoKSkpOwogICAgICAgICAgICAgYWRkKEdyeW9UeXBlUmVnLm9mKEJ5dGVjb2RlLkJpbmRpbmcuY2xhc3MsIDEyNiwgbmV3IEdyeW9TZXJpYWxpemVyc1YxZDAuQmluZGluZ1NlcmlhbGl6ZXIoKSkpOwogICAgICAgICAgICAgYWRkKEdyeW9UeXBlUmVnLm9mKE9yZGVyLmNsYXNzLCAxMjcpKTsKQEAgLTU1Miw2ICs1ODEsNyBAQAogICAgICAgICAgICAgYWRkKEdyeW9UeXBlUmVnLm9mKExhenlCYXJyaWVyU3RyYXRlZ3kuY2xhc3MsIDE1MCkpOwogICAgICAgICAgICAgYWRkKEdyeW9UeXBlUmVnLm9mKE1hdGNoUHJlZGljYXRlU3RyYXRlZ3kuY2xhc3MsIDE1MSkpOwogICAgICAgICAgICAgYWRkKEdyeW9UeXBlUmVnLm9mKE9yZGVyTGltaXRTdHJhdGVneS5jbGFzcywgMTUyKSk7CisgICAgICAgICAgICBhZGQoR3J5b1R5cGVSZWcub2YoT3B0aW9uc1N0cmF0ZWd5LmNsYXNzLCAxODcsIG5ldyBKYXZhU2VyaWFsaXplcigpKSk7CiAgICAgICAgICAgICBhZGQoR3J5b1R5cGVSZWcub2YoUGF0aFByb2Nlc3NvclN0cmF0ZWd5LmNsYXNzLCAxNTMpKTsKICAgICAgICAgICAgIGFkZChHcnlvVHlwZVJlZy5vZihQYXRoUmV0cmFjdGlvblN0cmF0ZWd5LmNsYXNzLCAxNTQpKTsKICAgICAgICAgICAgIGFkZChHcnlvVHlwZVJlZy5vZihDb3VudFN0cmF0ZWd5LmNsYXNzLCAxNTUpKTsKQEAgLTU2Niw2ICs1OTYsMTYgQEAKICAgICAgICAgICAgIGFkZChHcnlvVHlwZVJlZy5vZihSZXNlcnZlZEtleXNWZXJpZmljYXRpb25TdHJhdGVneS5jbGFzcywgMTkwKSk7ICAgLy8gKioqTEFTVCBJRCoqKgogICAgICAgICAgICAgLy8gc2tpcCAxNzEsIDE3MiB0byBzeW5jIHdpdGggdGhlIDMuMy54CiAgICAgICAgICAgICBhZGQoR3J5b1R5cGVSZWcub2YoSW5kZXhlZFRyYXZlcnNlclNldC5WZXJ0ZXhJbmRleGVkVHJhdmVyc2VyU2V0LmNsYXNzLCAxNzMpKTsKKworICAgICAgICAgICAgYWRkKEdyeW9UeXBlUmVnLm9mKEJfTFBfTkxfT19QX1NfU0VfU0xfVHJhdmVyc2VyLmNsYXNzLCAxNzQpKTsKKyAgICAgICAgICAgIGFkZChHcnlvVHlwZVJlZy5vZihCX05MX09fU19TRV9TTF9UcmF2ZXJzZXIuY2xhc3MsIDE3NSkpOworICAgICAgICAgICAgYWRkKEdyeW9UeXBlUmVnLm9mKEJfTFBfTkxfT19TX1NFX1NMX1RyYXZlcnNlci5jbGFzcywgMTc2KSk7CisgICAgICAgICAgICBhZGQoR3J5b1R5cGVSZWcub2YoTkxfT19PQl9TX1NFX1NMX1RyYXZlcnNlci5jbGFzcywgMTc3KSk7CisgICAgICAgICAgICBhZGQoR3J5b1R5cGVSZWcub2YoTFBfTkxfT19PQl9TX1NFX1NMX1RyYXZlcnNlci5jbGFzcywgMTc4KSk7CisgICAgICAgICAgICBhZGQoR3J5b1R5cGVSZWcub2YoTFBfTkxfT19PQl9QX1NfU0VfU0xfVHJhdmVyc2VyLmNsYXNzLCAxNzkpKTsKKyAgICAgICAgICAgIGFkZChHcnlvVHlwZVJlZy5vZihMYWJlbGxlZENvdW50ZXIuY2xhc3MsIDE4MCkpOworICAgICAgICAgICAgYWRkKEdyeW9UeXBlUmVnLm9mKFN0YWNrLmNsYXNzLCAxODEpKTsKKyAgICAgICAgICAgIGFkZChHcnlvVHlwZVJlZy5vZihSZWZlcmVuY2VNYXAuY2xhc3MsIDE4MikpOwogICAgICAgICB9fTsKICAgICB9CiAKQEAgLTU3Myw3ICs2MTMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgc2VyaWFsaXplciwgZmluYWwgaW50IHJlZ2lzdHJhdGlvbklkKSB7CiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBmaW5hbCBDbGFzcyB0eXBlQ2xhc3MgPSBDbGFzcy5mb3JOYW1lKHR5cGUpOwotICAgICAgICAgICAgZmluYWwgT3B0aW9uYWw8U2VyaWFsaXplclNoaW08Pz4+IHNlcmlhbGl6ZXJJbnN0YW5jZSA9IE9wdGlvbmFsLm9mKHNlcmlhbGl6ZXIpCisgICAgICAgICAgICBmaW5hbCBPcHRpb25hbDxTZXJpYWxpemVyU2hpbTw/Pj4gc2VyaWFsaXplckluc3RhbmNlID0gT3B0aW9uYWwub2ZOdWxsYWJsZShzZXJpYWxpemVyKQogICAgICAgICAgICAgICAgICAgICAubWFwKEZ1bmN0aW9uVXRpbHMud3JhcEZ1bmN0aW9uKENsYXNzOjpmb3JOYW1lKSkKICAgICAgICAgICAgICAgICAgICAgLm1hcChGdW5jdGlvblV0aWxzLndyYXBGdW5jdGlvbihjIC0+IChTZXJpYWxpemVyU2hpbTw/PikgYy5nZXRDb25zdHJ1Y3RvcigpLm5ld0luc3RhbmNlKCkpKTsKICAgICAgICAgICAgIGlmIChzZXJpYWxpemVySW5zdGFuY2UuaXNQcmVzZW50KCkpIHsKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vVXRpbFNlcmlhbGl6ZXJzLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL1V0aWxTZXJpYWxpemVycy5qYXZhCmluZGV4IDdhZWMyMzUuLmVkYTMxNGMgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vVXRpbFNlcmlhbGl6ZXJzLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9VdGlsU2VyaWFsaXplcnMuamF2YQpAQCAtMjU2LDYgKzI1Niw3IEBACiAgICAgICAgICAgICBtYXAuZm9yRWFjaChtOjpwdXQpOwogICAgICAgICAgICAga3J5by53cml0ZU9iamVjdChvdXRwdXQsIG0pOwogICAgICAgICB9CisKICAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgIHB1YmxpYyA8SSBleHRlbmRzIElucHV0U2hpbT4gTWFwIHJlYWQoZmluYWwgS3J5b1NoaW08SSwgPz4ga3J5bywgZmluYWwgSSBpbnB1dCwgZmluYWwgQ2xhc3M8TWFwPiBjbGF6eikgewogICAgICAgICAgICAgcmV0dXJuIENvbGxlY3Rpb25zLnN5bmNocm9uaXplZE1hcChrcnlvLnJlYWRPYmplY3QoaW5wdXQsIExpbmtlZEhhc2hNYXAuY2xhc3MpKTsKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL3V0aWwvQXR0YWNoYWJsZS5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvdXRpbC9BdHRhY2hhYmxlLmphdmEKaW5kZXggZmE5OTlhYS4uM2NkNzZmMiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvdXRpbC9BdHRhY2hhYmxlLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvdXRpbC9BdHRhY2hhYmxlLmphdmEKQEAgLTI2LDYgKzI2LDcgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5UOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXhQcm9wZXJ0eTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLmVtcHR5LkVtcHR5R3JhcGg7CiAKIGltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CiBpbXBvcnQgamF2YS51dGlsLk9wdGlvbmFsOwpAQCAtNzAsNyArNzEsNyBAQAogICAgICAqLwogICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgTWV0aG9kIHsKICAgICAgICAgcHVibGljIHN0YXRpYyA8Vj4gRnVuY3Rpb248QXR0YWNoYWJsZTxWPiwgVj4gZ2V0KGZpbmFsIEhvc3QgaG9zdFZlcnRleE9yR3JhcGgpIHsKLSAgICAgICAgICAgIHJldHVybiAoQXR0YWNoYWJsZTxWPiBhdHRhY2hhYmxlKSAtPiB7CisgICAgICAgICAgICByZXR1cm4gaG9zdFZlcnRleE9yR3JhcGggaW5zdGFuY2VvZiBFbXB0eUdyYXBoID8gQXR0YWNoYWJsZTo6Z2V0IDogKEF0dGFjaGFibGU8Vj4gYXR0YWNoYWJsZSkgLT4gewogICAgICAgICAgICAgICAgIGZpbmFsIE9iamVjdCBiYXNlID0gYXR0YWNoYWJsZS5nZXQoKTsKICAgICAgICAgICAgICAgICBpZiAoYmFzZSBpbnN0YW5jZW9mIFZlcnRleCkgewogICAgICAgICAgICAgICAgICAgICBmaW5hbCBPcHRpb25hbDxWZXJ0ZXg+IG9wdGlvbmFsID0gaG9zdFZlcnRleE9yR3JhcGggaW5zdGFuY2VvZiBHcmFwaCA/CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL0VsZW1lbnRIZWxwZXIuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL3V0aWwvRWxlbWVudEhlbHBlci5qYXZhCmluZGV4IDBhNzE3ODguLjBlZjdhNjMgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL3V0aWwvRWxlbWVudEhlbHBlci5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL3V0aWwvRWxlbWVudEhlbHBlci5qYXZhCkBAIC0zOTQsMTEgKzM5NCwxMCBAQAogICAgICAqIEByZXR1cm4gdHJ1ZSBpZiBlbGVtZW50cyBhbmQgZXF1YWwgYW5kIGZhbHNlIG90aGVyd2lzZQogICAgICAqLwogICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBhcmVFcXVhbChmaW5hbCBFbGVtZW50IGEsIGZpbmFsIE9iamVjdCBiKSB7Ci0gICAgICAgIGlmIChudWxsID09IGIgfHwgbnVsbCA9PSBhKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgICAgIGlmIChhID09IGIpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKG51bGwgPT0gYiB8fCBudWxsID09IGEpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmICghKChhIGluc3RhbmNlb2YgVmVydGV4ICYmIGIgaW5zdGFuY2VvZiBWZXJ0ZXgpIHx8CiAgICAgICAgICAgICAgICAgKGEgaW5zdGFuY2VvZiBFZGdlICYmIGIgaW5zdGFuY2VvZiBFZGdlKSB8fAogICAgICAgICAgICAgICAgIChhIGluc3RhbmNlb2YgVmVydGV4UHJvcGVydHkgJiYgYiBpbnN0YW5jZW9mIFZlcnRleFByb3BlcnR5KSkpCkBAIC00NzEsMTggKzQ3MCwxNyBAQAogICAgICAqIEByZXR1cm4gdHJ1ZSBpZiBlcXVhbCBhbmQgZmFsc2Ugb3RoZXJ3aXNlCiAgICAgICovCiAgICAgcHVibGljIHN0YXRpYyBib29sZWFuIGFyZUVxdWFsKGZpbmFsIFByb3BlcnR5IGEsIGZpbmFsIE9iamVjdCBiKSB7Ci0gICAgICAgIGlmIChudWxsID09IGIgfHwgbnVsbCA9PSBhKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgICAgIGlmIChhID09IGIpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKG51bGwgPT0gYiB8fCBudWxsID09IGEpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmICghKGIgaW5zdGFuY2VvZiBQcm9wZXJ0eSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmICghYS5pc1ByZXNlbnQoKSAmJiAhKChQcm9wZXJ0eSkgYikuaXNQcmVzZW50KCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYgKCFhLmlzUHJlc2VudCgpICYmICgoUHJvcGVydHkpIGIpLmlzUHJlc2VudCgpIHx8IGEuaXNQcmVzZW50KCkgJiYgISgoUHJvcGVydHkpIGIpLmlzUHJlc2VudCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXR1cm4gYS5rZXkoKS5lcXVhbHMoKChQcm9wZXJ0eSkgYikua2V5KCkpICYmIGEudmFsdWUoKS5lcXVhbHMoKChQcm9wZXJ0eSkgYikudmFsdWUoKSkgJiYgYXJlRXF1YWwoYS5lbGVtZW50KCksICgoUHJvcGVydHkpIGIpLmVsZW1lbnQoKSk7CisgICAgICAgIHJldHVybiBhLmtleSgpLmVxdWFscygoKFByb3BlcnR5KSBiKS5rZXkoKSkgJiYgYS52YWx1ZSgpLmVxdWFscygoKFByb3BlcnR5KSBiKS52YWx1ZSgpKTsKIAogICAgIH0KIApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvdXRpbC9TdHJpbmdGYWN0b3J5LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL1N0cmluZ0ZhY3RvcnkuamF2YQppbmRleCBjZjU2NDk1Li44MTRiYzA5IDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL1N0cmluZ0ZhY3RvcnkuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL1N0cmluZ0ZhY3RvcnkuamF2YQpAQCAtMjYsNiArMjYsNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5NZW1vcnk7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLlZlcnRleFByb2dyYW07CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLlZlcnRleFByb2dyYW1TdHJhdGVneTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlBhdGg7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5TdGVwOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhbnNsYXRvcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKQEAgLTQwLDYgKzQxLDcgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXg7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4UHJvcGVydHk7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi51dGlsLmZ1bmN0aW9uLkZ1bmN0aW9uVXRpbHM7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi51dGlsLml0ZXJhdG9yLkl0ZXJhdG9yVXRpbHM7CiBpbXBvcnQgb3JnLmphdmF0dXBsZXMuUGFpcjsKIAogaW1wb3J0IGphdmEubGFuZy5yZWZsZWN0Lk1ldGhvZDsKQEAgLTUzLDcgKzU1LDYgQEAKIGltcG9ydCBqYXZhLnV0aWwuc3RyZWFtLkNvbGxlY3RvcnM7CiBpbXBvcnQgamF2YS51dGlsLnN0cmVhbS5TdHJlYW07CiAKLQogLyoqCiAgKiBBIGNvbGxlY3Rpb24gb2YgaGVscGZ1bCBtZXRob2RzIGZvciBjcmVhdGluZyBzdGFuZGFyZCB7QGxpbmsgT2JqZWN0I3RvU3RyaW5nKCl9IHJlcHJlc2VudGF0aW9ucyBvZiBncmFwaC1yZWxhdGVkCiAgKiBvYmplY3RzLgpAQCAtNjYsNiArNjcsNyBAQAogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBFID0gImUiOwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBQID0gInAiOwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBWUCA9ICJ2cCI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFBBVEggPSAicGF0aCI7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIExfQlJBQ0tFVCA9ICJbIjsKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgUl9CUkFDS0VUID0gIl0iOwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBDT01NQV9TUEFDRSA9ICIsICI7CkBAIC0xNzYsNyArMTc4LDcgQEAKICAgICB9CiAKICAgICBwdWJsaWMgc3RhdGljIFN0cmluZyB0cmFuc2xhdG9yU3RyaW5nKGZpbmFsIFRyYW5zbGF0b3IgdHJhbnNsYXRvcikgewotICAgICAgICByZXR1cm4gInRyYW5zbGF0b3JbIiArIHRyYW5zbGF0b3IuZ2V0VHJhdmVyc2FsU291cmNlKCkgKyAiOiIgKyB0cmFuc2xhdG9yLmdldFRhcmdldExhbmd1YWdlKCkgKyAiXSI7CisgICAgICAgIHJldHVybiAidHJhbnNsYXRvciIgKyBMX0JSQUNLRVQgKyB0cmFuc2xhdG9yLmdldFRyYXZlcnNhbFNvdXJjZSgpICsgIjoiICsgdHJhbnNsYXRvci5nZXRUYXJnZXRMYW5ndWFnZSgpICsgUl9CUkFDS0VUOwogICAgIH0KIAogICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIHZlcnRleFByb2dyYW1TdHJpbmcoZmluYWwgVmVydGV4UHJvZ3JhbSB2ZXJ0ZXhQcm9ncmFtLCBmaW5hbCBTdHJpbmcgaW50ZXJuYWxTdHJpbmcpIHsKQEAgLTI1Miw0ICsyNTQsNyBAQAogICAgICAgICByZXR1cm4gc3RyaW5nLnN1YnN0cmluZygxLCBzdHJpbmcubGVuZ3RoKCkgLSAxKTsKICAgICB9CiAKKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBwYXRoU3RyaW5nKGZpbmFsIFBhdGggcGF0aCkgeworICAgICAgICByZXR1cm4gUEFUSCArIExfQlJBQ0tFVCArIFN0cmluZy5qb2luKCIsICIsIEl0ZXJhdG9yVXRpbHMubWFwKHBhdGgsIE9iamVjdDo6dG9TdHJpbmcpKSArIFJfQlJBQ0tFVDsKKyAgICB9CiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL2VtcHR5L0VtcHR5VmVydGV4UHJvcGVydHkuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL3V0aWwvZW1wdHkvRW1wdHlWZXJ0ZXhQcm9wZXJ0eS5qYXZhCmluZGV4IGE3N2ZkNmYuLmM3YTViNDQgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL3V0aWwvZW1wdHkvRW1wdHlWZXJ0ZXhQcm9wZXJ0eS5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL3V0aWwvZW1wdHkvRW1wdHlWZXJ0ZXhQcm9wZXJ0eS5qYXZhCkBAIC05MCw3ICs5MCw3IEBACiAgICAgfQogCiAgICAgQE92ZXJyaWRlCi0gICAgcHVibGljIDxVPiBJdGVyYXRvcjxQcm9wZXJ0eTxVPj4gcHJvcGVydGllcyhTdHJpbmcuLi4gcHJvcGVydHlLZXlzKSB7CisgICAgcHVibGljIDxVPiBJdGVyYXRvcjxQcm9wZXJ0eTxVPj4gcHJvcGVydGllcyhmaW5hbCBTdHJpbmcuLi4gcHJvcGVydHlLZXlzKSB7CiAgICAgICAgIHJldHVybiBDb2xsZWN0aW9ucy5lbXB0eUl0ZXJhdG9yKCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvdXRpbC9rZXllZC9LZXllZFByb3BlcnR5LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL2tleWVkL0tleWVkUHJvcGVydHkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTMyZjA2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvdXRpbC9rZXllZC9LZXllZFByb3BlcnR5LmphdmEKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwua2V5ZWQ7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5FbGVtZW50OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlByb3BlcnR5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuU3RyaW5nRmFjdG9yeTsKKworaW1wb3J0IGphdmEudXRpbC5Ob1N1Y2hFbGVtZW50RXhjZXB0aW9uOworCisvKioKKyAqIEEgdXRpbGl0eSBpbXBsZW1lbnRhdGlvbiBvZiBhIHtAbGluayBQcm9wZXJ0eX0gdGhhdCBvbmx5IGhhcyBhIGtleSBidXQgbm8gdmFsdWUuCisgKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgZmluYWwgY2xhc3MgS2V5ZWRQcm9wZXJ0eTxWPiBpbXBsZW1lbnRzIFByb3BlcnR5PFY+IHsKKworICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIGtleTsKKworICAgIHB1YmxpYyBLZXllZFByb3BlcnR5KGZpbmFsIFN0cmluZyBrZXkpIHsKKyAgICAgICAgaWYgKG51bGwgPT0ga2V5IHx8IGtleS5pc0VtcHR5KCkpIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImtleSBjYW5ub3QgYmUgbnVsbCIpOworICAgICAgICB0aGlzLmtleSA9IGtleTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgU3RyaW5nIGtleSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMua2V5OworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBWIHZhbHVlKCkgdGhyb3dzIE5vU3VjaEVsZW1lbnRFeGNlcHRpb24geworICAgICAgICB0aHJvdyBFeGNlcHRpb25zLnByb3BlcnR5RG9lc05vdEV4aXN0KCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGJvb2xlYW4gaXNQcmVzZW50KCkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIEVsZW1lbnQgZWxlbWVudCgpIHsKKyAgICAgICAgdGhyb3cgRXhjZXB0aW9ucy5wcm9wZXJ0eURvZXNOb3RFeGlzdCgpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIHJlbW92ZSgpIHsKKworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgIHJldHVybiBTdHJpbmdGYWN0b3J5LnByb3BlcnR5U3RyaW5nKHRoaXMpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhmaW5hbCBPYmplY3QgbykgeworICAgICAgICBpZiAodGhpcyA9PSBvKSByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKG8gPT0gbnVsbCB8fCBnZXRDbGFzcygpICE9IG8uZ2V0Q2xhc3MoKSkgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGZpbmFsIEtleWVkUHJvcGVydHk8Pz4gdGhhdCA9IChLZXllZFByb3BlcnR5PD8+KSBvOworCisgICAgICAgIHJldHVybiBrZXkuZXF1YWxzKHRoYXQua2V5KTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgeworICAgICAgICByZXR1cm4ga2V5Lmhhc2hDb2RlKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvdXRpbC9rZXllZC9LZXllZFZlcnRleFByb3BlcnR5LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL2tleWVkL0tleWVkVmVydGV4UHJvcGVydHkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41M2NiYTY5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvdXRpbC9rZXllZC9LZXllZFZlcnRleFByb3BlcnR5LmphdmEKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLmtleWVkOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuUHJvcGVydHk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleFByb3BlcnR5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuU3RyaW5nRmFjdG9yeTsKKworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLk5vU3VjaEVsZW1lbnRFeGNlcHRpb247CisKKy8qKgorICogQSB1dGlsaXR5IGltcGxlbWVudGF0aW9uIG9mIGEge0BsaW5rIFByb3BlcnR5fSB0aGF0IG9ubHkgaGFzIGEga2V5IGJ1dCBubyB2YWx1ZSBhbmQgbm8gbWV0YS1wcm9wZXJ0aWVzLgorICoKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqLworcHVibGljIGZpbmFsIGNsYXNzIEtleWVkVmVydGV4UHJvcGVydHk8Vj4gaW1wbGVtZW50cyBWZXJ0ZXhQcm9wZXJ0eTxWPiB7CisKKyAgICBwcml2YXRlIGZpbmFsIFN0cmluZyBrZXk7CisKKyAgICBwdWJsaWMgS2V5ZWRWZXJ0ZXhQcm9wZXJ0eShmaW5hbCBTdHJpbmcga2V5KSB7CisgICAgICAgIGlmIChudWxsID09IGtleSB8fCBrZXkuaXNFbXB0eSgpKSB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJrZXkgY2Fubm90IGJlIG51bGwiKTsKKyAgICAgICAgdGhpcy5rZXkgPSBrZXk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFZlcnRleCBlbGVtZW50KCkgeworICAgICAgICB0aHJvdyBQcm9wZXJ0eS5FeGNlcHRpb25zLnByb3BlcnR5RG9lc05vdEV4aXN0KCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIE9iamVjdCBpZCgpIHsKKyAgICAgICAgdGhyb3cgUHJvcGVydHkuRXhjZXB0aW9ucy5wcm9wZXJ0eURvZXNOb3RFeGlzdCgpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBHcmFwaCBncmFwaCgpIHsKKyAgICAgICAgdGhyb3cgUHJvcGVydHkuRXhjZXB0aW9ucy5wcm9wZXJ0eURvZXNOb3RFeGlzdCgpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyA8VT4gUHJvcGVydHk8VT4gcHJvcGVydHkoU3RyaW5nIGtleSkgeworICAgICAgICByZXR1cm4gUHJvcGVydHkuPFU+ZW1wdHkoKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgPFU+IFByb3BlcnR5PFU+IHByb3BlcnR5KFN0cmluZyBrZXksIFUgdmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIFByb3BlcnR5LjxVPmVtcHR5KCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFN0cmluZyBrZXkoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmtleTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgViB2YWx1ZSgpIHRocm93cyBOb1N1Y2hFbGVtZW50RXhjZXB0aW9uIHsKKyAgICAgICAgdGhyb3cgUHJvcGVydHkuRXhjZXB0aW9ucy5wcm9wZXJ0eURvZXNOb3RFeGlzdCgpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBib29sZWFuIGlzUHJlc2VudCgpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIHJlbW92ZSgpIHsKKworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgIHJldHVybiBTdHJpbmdGYWN0b3J5LnByb3BlcnR5U3RyaW5nKHRoaXMpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyA8VT4gSXRlcmF0b3I8UHJvcGVydHk8VT4+IHByb3BlcnRpZXMoZmluYWwgU3RyaW5nLi4uIHByb3BlcnR5S2V5cykgeworICAgICAgICByZXR1cm4gQ29sbGVjdGlvbnMuZW1wdHlJdGVyYXRvcigpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3QgbykgeworICAgICAgICBpZiAodGhpcyA9PSBvKSByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKG8gPT0gbnVsbCB8fCBnZXRDbGFzcygpICE9IG8uZ2V0Q2xhc3MoKSkgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGZpbmFsIEtleWVkVmVydGV4UHJvcGVydHk8Pz4gdGhhdCA9IChLZXllZFZlcnRleFByb3BlcnR5PD8+KSBvOworCisgICAgICAgIHJldHVybiBrZXkuZXF1YWxzKHRoYXQua2V5KTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgeworICAgICAgICByZXR1cm4ga2V5Lmhhc2hDb2RlKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvdXRpbC9yZWZlcmVuY2UvUmVmZXJlbmNlRWRnZS5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvdXRpbC9yZWZlcmVuY2UvUmVmZXJlbmNlRWRnZS5qYXZhCmluZGV4IGEzNTNlYTcuLjRhOWQ3YmUgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL3V0aWwvcmVmZXJlbmNlL1JlZmVyZW5jZUVkZ2UuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL3JlZmVyZW5jZS9SZWZlcmVuY2VFZGdlLmphdmEKQEAgLTQ3LDYgKzQ3LDEyIEBACiAgICAgICAgIHRoaXMub3V0VmVydGV4ID0gbmV3IFJlZmVyZW5jZVZlcnRleChlZGdlLm91dFZlcnRleCgpKTsKICAgICB9CiAKKyAgICBwdWJsaWMgUmVmZXJlbmNlRWRnZShmaW5hbCBPYmplY3QgaWQsIGZpbmFsIFN0cmluZyBsYWJlbCwgZmluYWwgUmVmZXJlbmNlVmVydGV4IGluVmVydGV4LCBmaW5hbCBSZWZlcmVuY2VWZXJ0ZXggb3V0VmVydGV4KSB7CisgICAgICAgIHN1cGVyKGlkLCBsYWJlbCk7CisgICAgICAgIHRoaXMuaW5WZXJ0ZXggPSBpblZlcnRleDsKKyAgICAgICAgdGhpcy5vdXRWZXJ0ZXggPSBvdXRWZXJ0ZXg7CisgICAgfQorCiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIDxWPiBQcm9wZXJ0eTxWPiBwcm9wZXJ0eShmaW5hbCBTdHJpbmcga2V5LCBmaW5hbCBWIHZhbHVlKSB7CiAgICAgICAgIHRocm93IEVsZW1lbnQuRXhjZXB0aW9ucy5wcm9wZXJ0eUFkZGl0aW9uTm90U3VwcG9ydGVkKCk7CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL3JlZmVyZW5jZS9SZWZlcmVuY2VFbGVtZW50LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL3JlZmVyZW5jZS9SZWZlcmVuY2VFbGVtZW50LmphdmEKaW5kZXggOWVlMDcwZC4uMDA0NDFiNCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvdXRpbC9yZWZlcmVuY2UvUmVmZXJlbmNlRWxlbWVudC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL3V0aWwvcmVmZXJlbmNlL1JlZmVyZW5jZUVsZW1lbnQuamF2YQpAQCAtNDIsNiArNDIsMTEgQEAKIAogICAgIH0KIAorICAgIHByb3RlY3RlZCBSZWZlcmVuY2VFbGVtZW50KGZpbmFsIE9iamVjdCBpZCwgZmluYWwgU3RyaW5nIGxhYmVsKSB7CisgICAgICAgIHRoaXMuaWQgPSBpZDsKKyAgICAgICAgdGhpcy5sYWJlbCA9IGxhYmVsOworICAgIH0KKwogICAgIHB1YmxpYyBSZWZlcmVuY2VFbGVtZW50KGZpbmFsIEVsZW1lbnQgZWxlbWVudCkgewogICAgICAgICB0aGlzLmlkID0gZWxlbWVudC5pZCgpOwogICAgICAgICB0cnkgewpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvdXRpbC9yZWZlcmVuY2UvUmVmZXJlbmNlUHJvcGVydHkuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL3V0aWwvcmVmZXJlbmNlL1JlZmVyZW5jZVByb3BlcnR5LmphdmEKaW5kZXggMDc0Zjg2My4uMjA3MTE3YSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvdXRpbC9yZWZlcmVuY2UvUmVmZXJlbmNlUHJvcGVydHkuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL3JlZmVyZW5jZS9SZWZlcmVuY2VQcm9wZXJ0eS5qYXZhCkBAIC01Miw2ICs1MiwxMiBAQAogICAgICAgICB0aGlzLnZhbHVlID0gcHJvcGVydHkudmFsdWUoKTsKICAgICB9CiAKKyAgICBwdWJsaWMgUmVmZXJlbmNlUHJvcGVydHkoZmluYWwgU3RyaW5nIGtleSwgZmluYWwgViB2YWx1ZSkgeworICAgICAgICB0aGlzLmVsZW1lbnQgPSBudWxsOworICAgICAgICB0aGlzLmtleSA9IGtleTsKKyAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlOworICAgIH0KKwogICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7CiAgICAgICAgIHJldHVybiBFbGVtZW50SGVscGVyLmhhc2hDb2RlKHRoaXMpOwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvdXRpbC9yZWZlcmVuY2UvUmVmZXJlbmNlVmVydGV4LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL3JlZmVyZW5jZS9SZWZlcmVuY2VWZXJ0ZXguamF2YQppbmRleCBhMDQ3NjVjLi41ZTEzYjBkIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL3JlZmVyZW5jZS9SZWZlcmVuY2VWZXJ0ZXguamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL3JlZmVyZW5jZS9SZWZlcmVuY2VWZXJ0ZXguamF2YQpAQCAtMzgsNiArMzgsMTAgQEAKIAogICAgIH0KIAorICAgIHB1YmxpYyBSZWZlcmVuY2VWZXJ0ZXgoZmluYWwgT2JqZWN0IGlkLCBmaW5hbCBTdHJpbmcgbGFiZWwpIHsKKyAgICAgICAgc3VwZXIoaWQsIGxhYmVsKTsKKyAgICB9CisKICAgICBwdWJsaWMgUmVmZXJlbmNlVmVydGV4KGZpbmFsIFZlcnRleCB2ZXJ0ZXgpIHsKICAgICAgICAgc3VwZXIodmVydGV4KTsKICAgICB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL3JlZmVyZW5jZS9SZWZlcmVuY2VWZXJ0ZXhQcm9wZXJ0eS5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvdXRpbC9yZWZlcmVuY2UvUmVmZXJlbmNlVmVydGV4UHJvcGVydHkuamF2YQppbmRleCBlNTJhYmVjLi44YzMwZDllIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL3JlZmVyZW5jZS9SZWZlcmVuY2VWZXJ0ZXhQcm9wZXJ0eS5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL3V0aWwvcmVmZXJlbmNlL1JlZmVyZW5jZVZlcnRleFByb3BlcnR5LmphdmEKQEAgLTQ2LDYgKzQ2LDEzIEBACiAgICAgICAgIHRoaXMudmFsdWUgPSB2ZXJ0ZXhQcm9wZXJ0eS52YWx1ZSgpOwogICAgIH0KIAorICAgIHB1YmxpYyBSZWZlcmVuY2VWZXJ0ZXhQcm9wZXJ0eShmaW5hbCBPYmplY3QgaWQsIGZpbmFsIFN0cmluZyBsYWJlbCwgZmluYWwgViB2YWx1ZSkgeworICAgICAgICB0aGlzLmlkID0gaWQ7CisgICAgICAgIHRoaXMubGFiZWwgPSBsYWJlbDsKKyAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlOworICAgICAgICB0aGlzLnZlcnRleCA9IG51bGw7CisgICAgfQorCiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKICAgICAgICAgcmV0dXJuIFN0cmluZ0ZhY3RvcnkucHJvcGVydHlTdHJpbmcodGhpcyk7CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3V0aWwvTnVtYmVySGVscGVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3V0aWwvTnVtYmVySGVscGVyLmphdmEKaW5kZXggZWZkNDQ2Yi4uYzQ1N2M1OCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi91dGlsL051bWJlckhlbHBlci5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vdXRpbC9OdW1iZXJIZWxwZXIuamF2YQpAQCAtMzQ1LDExICszNDUsMzMgQEAKICAgICAgICAgcmV0dXJuIGdldEhlbHBlcihjbGF6eikubWluLmFwcGx5KGEsIGIpOwogICAgIH0KIAorICAgIHB1YmxpYyBzdGF0aWMgQ29tcGFyYWJsZSBtaW4oZmluYWwgQ29tcGFyYWJsZSBhLCBmaW5hbCBDb21wYXJhYmxlIGIpIHsKKyAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBOdW1iZXIgJiYgYiBpbnN0YW5jZW9mIE51bWJlciAmJiAhYS5lcXVhbHMoRG91YmxlLk5hTikgJiYgIWIuZXF1YWxzKERvdWJsZS5OYU4pKSB7CisgICAgICAgICAgICBmaW5hbCBOdW1iZXIgYW4gPSAoTnVtYmVyKSBhLCBibiA9IChOdW1iZXIpIGI7CisgICAgICAgICAgICBmaW5hbCBDbGFzczw/IGV4dGVuZHMgTnVtYmVyPiBjbGF6eiA9IGdldEhpZ2hlc3RDb21tb25OdW1iZXJDbGFzcyhhbiwgYm4pOworICAgICAgICAgICAgcmV0dXJuIChDb21wYXJhYmxlKSBnZXRIZWxwZXIoY2xhenopLm1pbi5hcHBseShhbiwgYm4pOworICAgICAgICB9CisgICAgICAgIHJldHVybiBpc05vblZhbHVlKGEpID8gYiA6CisgICAgICAgICAgICAgICAgaXNOb25WYWx1ZShiKSA/IGEgOgorICAgICAgICAgICAgICAgICAgICAgICAgYS5jb21wYXJlVG8oYikgPCAwID8gYSA6IGI7CisgICAgfQorCiAgICAgcHVibGljIHN0YXRpYyBOdW1iZXIgbWF4KGZpbmFsIE51bWJlciBhLCBmaW5hbCBOdW1iZXIgYikgewogICAgICAgICBmaW5hbCBDbGFzczw/IGV4dGVuZHMgTnVtYmVyPiBjbGF6eiA9IGdldEhpZ2hlc3RDb21tb25OdW1iZXJDbGFzcyhhLCBiKTsKICAgICAgICAgcmV0dXJuIGdldEhlbHBlcihjbGF6eikubWF4LmFwcGx5KGEsIGIpOwogICAgIH0KIAorICAgIHB1YmxpYyBzdGF0aWMgQ29tcGFyYWJsZSBtYXgoZmluYWwgQ29tcGFyYWJsZSBhLCBmaW5hbCBDb21wYXJhYmxlIGIpIHsKKyAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBOdW1iZXIgJiYgYiBpbnN0YW5jZW9mIE51bWJlciAmJiAhYS5lcXVhbHMoRG91YmxlLk5hTikgJiYgIWIuZXF1YWxzKERvdWJsZS5OYU4pKSB7CisgICAgICAgICAgICBmaW5hbCBOdW1iZXIgYW4gPSAoTnVtYmVyKSBhLCBibiA9IChOdW1iZXIpIGI7CisgICAgICAgICAgICBmaW5hbCBDbGFzczw/IGV4dGVuZHMgTnVtYmVyPiBjbGF6eiA9IGdldEhpZ2hlc3RDb21tb25OdW1iZXJDbGFzcyhhbiwgYm4pOworICAgICAgICAgICAgcmV0dXJuIChDb21wYXJhYmxlKSBnZXRIZWxwZXIoY2xhenopLm1heC5hcHBseShhbiwgYm4pOworICAgICAgICB9CisgICAgICAgIHJldHVybiBpc05vblZhbHVlKGEpID8gYiA6CisgICAgICAgICAgICAgICAgaXNOb25WYWx1ZShiKSA/IGEgOgorICAgICAgICAgICAgICAgICAgICAgICAgYS5jb21wYXJlVG8oYikgPiAwID8gYSA6IGI7CisgICAgfQorCiAgICAgcHVibGljIHN0YXRpYyBJbnRlZ2VyIGNvbXBhcmUoZmluYWwgTnVtYmVyIGEsIGZpbmFsIE51bWJlciBiKSB7CiAgICAgICAgIGZpbmFsIENsYXNzPD8gZXh0ZW5kcyBOdW1iZXI+IGNsYXp6ID0gZ2V0SGlnaGVzdENvbW1vbk51bWJlckNsYXNzKGEsIGIpOwogICAgICAgICByZXR1cm4gZ2V0SGVscGVyKGNsYXp6KS5jbXAuYXBwbHkoYSwgYik7CkBAIC00MTUsNCArNDM3LDggQEAKICAgICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGlzTnVtYmVyKGZpbmFsIE51bWJlciBudW1iZXIpIHsKICAgICAgICAgcmV0dXJuIG51bWJlciAhPSBudWxsICYmICFudW1iZXIuZXF1YWxzKERvdWJsZS5OYU4pOwogICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gaXNOb25WYWx1ZShmaW5hbCBPYmplY3QgdmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgRG91YmxlICYmICFpc051bWJlcigoRG91YmxlKSB2YWx1ZSk7CisgICAgfQogfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi91dGlsL1Rlc3RTdXBwb3J0LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3V0aWwvVGVzdFN1cHBvcnQuamF2YQppbmRleCBhYzFhZjE3Li42NjgyMGQ2IDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3V0aWwvVGVzdFN1cHBvcnQuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3V0aWwvVGVzdFN1cHBvcnQuamF2YQpAQCAtMTU1LDE2ICsxNTUsMjcgQEAKICAgICAgKiB7QGxpbmsgI21ha2VUZXN0RGF0YVBhdGh9IGluIGEgc3ViZGlyZWN0b3J5IGNhbGxlZCB7QGNvZGUgdGVtcC9yZXNvdXJjZXN9LgogICAgICAqLwogICAgIHB1YmxpYyBzdGF0aWMgRmlsZSBnZW5lcmF0ZVRlbXBGaWxlRnJvbVJlc291cmNlKGZpbmFsIENsYXNzIGdyYXBoQ2xhc3MsIGZpbmFsIENsYXNzIHJlc291cmNlQ2xhc3MsIGZpbmFsIFN0cmluZyByZXNvdXJjZU5hbWUsIGZpbmFsIFN0cmluZyBleHRlbnNpb24pIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIHJldHVybiBnZW5lcmF0ZVRlbXBGaWxlRnJvbVJlc291cmNlKGdyYXBoQ2xhc3MsIHJlc291cmNlQ2xhc3MsIHJlc291cmNlTmFtZSwgZXh0ZW5zaW9uLCB0cnVlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb3BpZXMgYSBmaWxlIHN0b3JlZCBhcyBwYXJ0IG9mIGEgcmVzb3VyY2UgdG8gdGhlIGZpbGUgc3lzdGVtIGluIHRoZSBwYXRoIHJldHVybmVkIGZyb20KKyAgICAgKiB7QGxpbmsgVGVzdEhlbHBlciNtYWtlVGVzdERhdGFQYXRofSBpbiBhIHN1YmRpcmVjdG9yeSBjYWxsZWQge0Bjb2RlIHRlbXAvcmVzb3VyY2VzfS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIEZpbGUgZ2VuZXJhdGVUZW1wRmlsZUZyb21SZXNvdXJjZShmaW5hbCBDbGFzcyBncmFwaENsYXNzLCBmaW5hbCBDbGFzcyByZXNvdXJjZUNsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyByZXNvdXJjZU5hbWUsIGZpbmFsIFN0cmluZyBleHRlbnNpb24sIGZpbmFsIGJvb2xlYW4gb3ZlcndyaXRlKSB0aHJvd3MgSU9FeGNlcHRpb24gewogICAgICAgICBmaW5hbCBGaWxlIHRlbXAgPSBtYWtlVGVzdERhdGFQYXRoKGdyYXBoQ2xhc3MsICJyZXNvdXJjZXMiKTsKICAgICAgICAgZmluYWwgRmlsZSB0ZW1wRmlsZSA9IG5ldyBGaWxlKHRlbXAsIHJlc291cmNlTmFtZSArIGV4dGVuc2lvbik7Ci0gICAgICAgIGZpbmFsIEZpbGVPdXRwdXRTdHJlYW0gb3V0cHV0U3RyZWFtID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0odGVtcEZpbGUpOwotICAgICAgICBpbnQgZGF0YTsKLSAgICAgICAgZmluYWwgSW5wdXRTdHJlYW0gaW5wdXRTdHJlYW0gPSByZXNvdXJjZUNsYXNzLmdldFJlc291cmNlQXNTdHJlYW0ocmVzb3VyY2VOYW1lKTsKLSAgICAgICAgd2hpbGUgKChkYXRhID0gaW5wdXRTdHJlYW0ucmVhZCgpKSAhPSAtMSkgewotICAgICAgICAgICAgb3V0cHV0U3RyZWFtLndyaXRlKGRhdGEpOworICAgICAgICBpZiAoIXRlbXBGaWxlLmV4aXN0cygpIHx8IG92ZXJ3cml0ZSkgeworICAgICAgICAgICAgdHJ5IChmaW5hbCBGaWxlT3V0cHV0U3RyZWFtIG91dHB1dFN0cmVhbSA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKHRlbXBGaWxlKSkgeworICAgICAgICAgICAgICAgIGludCBkYXRhOworICAgICAgICAgICAgICAgIHRyeSAoZmluYWwgSW5wdXRTdHJlYW0gaW5wdXRTdHJlYW0gPSByZXNvdXJjZUNsYXNzLmdldFJlc291cmNlQXNTdHJlYW0ocmVzb3VyY2VOYW1lKSkgeworICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKGRhdGEgPSBpbnB1dFN0cmVhbS5yZWFkKCkpICE9IC0xKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRTdHJlYW0ud3JpdGUoZGF0YSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgb3V0cHV0U3RyZWFtLmNsb3NlKCk7Ci0gICAgICAgIGlucHV0U3RyZWFtLmNsb3NlKCk7CiAgICAgICAgIHJldHVybiB0ZW1wRmlsZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vdXRpbC9mdW5jdGlvbi9MYW1iZGEuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vdXRpbC9mdW5jdGlvbi9MYW1iZGEuamF2YQppbmRleCAwZWMzMmViLi5jMGYyZGYzIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3V0aWwvZnVuY3Rpb24vTGFtYmRhLmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi91dGlsL2Z1bmN0aW9uL0xhbWJkYS5qYXZhCkBAIC04NCw3ICs4NCw3IEBACiAgICAgICAgIEBPdmVycmlkZQogICAgICAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoZmluYWwgT2JqZWN0IG9iamVjdCkgewogICAgICAgICAgICAgcmV0dXJuIG9iamVjdCBpbnN0YW5jZW9mIExhbWJkYSAmJgotICAgICAgICAgICAgICAgICAgICAoKExhbWJkYSkgb2JqZWN0KS5nZXRMYW1iZGFBcmd1bWVudHMoKSA9PSB0aGlzLmdldExhbWJkYUFyZ3VtZW50cygpICYmCisgICAgICAgICAgICAgICAgICAgICgoTGFtYmRhKSBvYmplY3QpLmdldExhbWJkYUFyZ3VtZW50cygpID09IHRoaXMubGFtYmRhQXJndW1lbnRzICYmCiAgICAgICAgICAgICAgICAgICAgICgoTGFtYmRhKSBvYmplY3QpLmdldExhbWJkYVNjcmlwdCgpLmVxdWFscyh0aGlzLmxhbWJkYVNvdXJjZSkgJiYKICAgICAgICAgICAgICAgICAgICAgKChMYW1iZGEpIG9iamVjdCkuZ2V0TGFtYmRhTGFuZ3VhZ2UoKS5lcXVhbHModGhpcy5sYW1iZGFMYW5ndWFnZSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vQXNzZXJ0SGVscGVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL0Fzc2VydEhlbHBlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlYzVhOTEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL0Fzc2VydEhlbHBlci5qYXZhCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluOworCitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0VHJ1ZTsKKworaW1wb3J0IGphdmEubGFuZy5yZWZsZWN0LkNvbnN0cnVjdG9yOworaW1wb3J0IGphdmEubGFuZy5yZWZsZWN0Lk1vZGlmaWVyOworCisvKioKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqLworcHVibGljIGNsYXNzIEFzc2VydEhlbHBlciB7CisKKyAgICBwcm90ZWN0ZWQgQXNzZXJ0SGVscGVyKCkge30KKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgYXNzZXJ0SXNVdGlsaXR5Q2xhc3MoZmluYWwgQ2xhc3M8Pz4gdXRpbGl0eUNsYXNzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgQ29uc3RydWN0b3IgY29uc3RydWN0b3IgPSB1dGlsaXR5Q2xhc3MuZ2V0RGVjbGFyZWRDb25zdHJ1Y3RvcigpOworCisgICAgICAgIGFzc2VydFRydWUoTW9kaWZpZXIuaXNGaW5hbCh1dGlsaXR5Q2xhc3MuZ2V0TW9kaWZpZXJzKCkpKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShNb2RpZmllci5pc1ByaXZhdGUoY29uc3RydWN0b3IuZ2V0TW9kaWZpZXJzKCkpKTsKKyAgICAgICAgY29uc3RydWN0b3Iuc2V0QWNjZXNzaWJsZSh0cnVlKTsKKyAgICAgICAgY29uc3RydWN0b3IubmV3SW5zdGFuY2UoKTsKKyAgICB9CisgICAgICAgIAorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9UZXN0SGVscGVyLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL1Rlc3RIZWxwZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2M1ZDgxNS4uMDAwMDAwMAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL1Rlc3RIZWxwZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCi0gKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKLSAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCi0gKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCi0gKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCi0gKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCi0gKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAotICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KLSAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQotICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCi0gKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCi0gKiB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluOwotCi1pbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0VHJ1ZTsKLQotaW1wb3J0IGphdmEubGFuZy5yZWZsZWN0LkNvbnN0cnVjdG9yOwotaW1wb3J0IGphdmEubGFuZy5yZWZsZWN0Lk1vZGlmaWVyOwotCi0vKioKLSAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKLSAqLwotcHVibGljIGNsYXNzIFRlc3RIZWxwZXIgewotCi0gICAgcHJvdGVjdGVkIFRlc3RIZWxwZXIoKSB7fQotICAgIAotICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBhc3NlcnRJc1V0aWxpdHlDbGFzcyhmaW5hbCBDbGFzczw/PiB1dGlsaXR5Q2xhc3MpIHRocm93cyBFeGNlcHRpb24gewotICAgICAgICBmaW5hbCBDb25zdHJ1Y3RvciBjb25zdHJ1Y3RvciA9IHV0aWxpdHlDbGFzcy5nZXREZWNsYXJlZENvbnN0cnVjdG9yKCk7Ci0KLSAgICAgICAgYXNzZXJ0VHJ1ZShNb2RpZmllci5pc0ZpbmFsKHV0aWxpdHlDbGFzcy5nZXRNb2RpZmllcnMoKSkpOwotICAgICAgICBhc3NlcnRUcnVlKE1vZGlmaWVyLmlzUHJpdmF0ZShjb25zdHJ1Y3Rvci5nZXRNb2RpZmllcnMoKSkpOwotICAgICAgICBjb25zdHJ1Y3Rvci5zZXRBY2Nlc3NpYmxlKHRydWUpOwotICAgICAgICBjb25zdHJ1Y3Rvci5uZXdJbnN0YW5jZSgpOwotICAgIH0KLSAgICAgICAgCi19CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2pzcjIyMy9EZWZhdWx0SW1wb3J0Q3VzdG9taXplclRlc3QuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vanNyMjIzL0RlZmF1bHRJbXBvcnRDdXN0b21pemVyVGVzdC5qYXZhCmluZGV4IGU0ODBiN2QuLjIxNTNhYzAgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vanNyMjIzL0RlZmF1bHRJbXBvcnRDdXN0b21pemVyVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vanNyMjIzL0RlZmF1bHRJbXBvcnRDdXN0b21pemVyVGVzdC5qYXZhCkBAIC0xOCwxNCArMTgsMTUgQEAKICAqLwogcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmpzcjIyMzsKIAoraW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLldpdGhPcHRpb25zOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlQ7CiBpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CiAKK2ltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5GaWVsZDsKIGltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5NZXRob2Q7CiBpbXBvcnQgamF2YS50aW1lLkRheU9mV2VlazsKIGltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOwogaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKLWltcG9ydCBqYXZhLnV0aWwuc3RyZWFtLkNvbGxlY3RvcnM7CiAKIGltcG9ydCBzdGF0aWMgb3JnLmhhbWNyZXN0Lk1hdGNoZXJBc3NlcnQuYXNzZXJ0VGhhdDsKIGltcG9ydCBzdGF0aWMgb3JnLmhhbWNyZXN0LmNvcmUuSXNDb2xsZWN0aW9uQ29udGFpbmluZy5oYXNJdGVtczsKQEAgLTM1LDEzICszNiwxNyBAQAogICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQogICovCiBwdWJsaWMgY2xhc3MgRGVmYXVsdEltcG9ydEN1c3RvbWl6ZXJUZXN0IHsKKwogICAgIEBUZXN0CiAgICAgcHVibGljIHZvaWQgc2hvdWxkUmV0dXJuQXNzaWduZWRJbXBvcnRzKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CiAgICAgICAgIGZpbmFsIE1ldGhvZCBhYnMgPSBNYXRoLmNsYXNzLmdldE1ldGhvZCgiYWJzIiwgZG91YmxlLmNsYXNzKTsKICAgICAgICAgZmluYWwgRW51bSBkYXlPZldlZWtFbnVtID0gRGF5T2ZXZWVrLlNBVFVSREFZOwogICAgICAgICBmaW5hbCBFbnVtIHRFbnVtID0gVC5pZDsKKyAgICAgICAgZmluYWwgRmllbGQgZmllbGRMYWJlbHMgPSBXaXRoT3B0aW9ucy5jbGFzcy5nZXREZWNsYXJlZEZpZWxkKCJsYWJlbHMiKTsKKwogICAgICAgICBmaW5hbCBJbXBvcnRDdXN0b21pemVyIGltcG9ydHMgPSBEZWZhdWx0SW1wb3J0Q3VzdG9taXplci5idWlsZCgpCiAgICAgICAgICAgICAgICAgLmFkZENsYXNzSW1wb3J0cyhqYXZhLmF3dC5Db2xvci5jbGFzcywgamF2YS5hd3QuQWxwaGFDb21wb3NpdGUuY2xhc3MpCisgICAgICAgICAgICAgICAgLmFkZEZpZWxkSW1wb3J0cyhmaWVsZExhYmVscykKICAgICAgICAgICAgICAgICAuYWRkTWV0aG9kSW1wb3J0cyhhYnMpCiAgICAgICAgICAgICAgICAgLmFkZEVudW1JbXBvcnRzKGRheU9mV2Vla0VudW0sIHRFbnVtKS5jcmVhdGUoKTsKIApAQCAtNTksNiArNjQsMTEgQEAKICAgICAgICAgYXNzZXJ0VGhhdChpbXBvcnRzLmdldEVudW1JbXBvcnRzKCksIGhhc0l0ZW1zKGRheU9mV2Vla0VudW0sIHRFbnVtKSk7CiAgICAgICAgIGFzc2VydEVxdWFscygyLCBpbXBvcnRzLmdldEVudW1DbGFzc2VzKCkuc2l6ZSgpKTsKICAgICAgICAgYXNzZXJ0VGhhdChpbXBvcnRzLmdldEVudW1DbGFzc2VzKCksIGhhc0l0ZW1zKFQuY2xhc3MsIERheU9mV2Vlay5jbGFzcykpOworCisgICAgICAgIGFzc2VydEVxdWFscygxLCBpbXBvcnRzLmdldEZpZWxkSW1wb3J0cygpLnNpemUoKSk7CisgICAgICAgIGFzc2VydFRoYXQoaW1wb3J0cy5nZXRGaWVsZEltcG9ydHMoKSwgaGFzSXRlbXMoZmllbGRMYWJlbHMpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIGltcG9ydHMuZ2V0RmllbGRDbGFzc2VzKCkuc2l6ZSgpKTsKKyAgICAgICAgYXNzZXJ0VGhhdChpbXBvcnRzLmdldEZpZWxkQ2xhc3NlcygpLCBoYXNJdGVtcyhXaXRoT3B0aW9ucy5jbGFzcykpOwogICAgIH0KIAogICAgIEBUZXN0CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2pzcjIyMy9TY3JpcHRFbmdpbmVDYWNoZVRlc3QuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vanNyMjIzL1NjcmlwdEVuZ2luZUNhY2hlVGVzdC5qYXZhCmluZGV4IGMyNTk0YzYuLjllNmQwZGMgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vanNyMjIzL1NjcmlwdEVuZ2luZUNhY2hlVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vanNyMjIzL1NjcmlwdEVuZ2luZUNhY2hlVGVzdC5qYXZhCkBAIC0yMCw3ICsyMCw3IEBACiAKIGltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRTYW1lOwogCi1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5UZXN0SGVscGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uQXNzZXJ0SGVscGVyOwogaW1wb3J0IG9yZy5qdW5pdC5UZXN0OwogCiAvKioKQEAgLTMwLDcgKzMwLDcgQEAKIAogICAgIEBUZXN0CiAgICAgcHVibGljIHZvaWQgc2hvdWxkQmVVdGlsaXR5Q2xhc3MoKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICAgICAgVGVzdEhlbHBlci5hc3NlcnRJc1V0aWxpdHlDbGFzcyhTY3JpcHRFbmdpbmVDYWNoZS5jbGFzcyk7CisgICAgICAgIEFzc2VydEhlbHBlci5hc3NlcnRJc1V0aWxpdHlDbGFzcyhTY3JpcHRFbmdpbmVDYWNoZS5jbGFzcyk7CiAgICAgfQogCiAgICAgQFRlc3QKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvQ29udGFpbnNUZXN0LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL0NvbnRhaW5zVGVzdC5qYXZhCmluZGV4IDZkOWVhMzguLjJlYTYzNWQgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvQ29udGFpbnNUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9Db250YWluc1Rlc3QuamF2YQpAQCAtNDMsNyArNDMsNyBAQAogICAgICAgICAgICAgICAgIHtDb250YWlucy53aXRoaW4sIDEwLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKSwgZmFsc2V9LAogICAgICAgICAgICAgICAgIHtDb250YWlucy53aXRob3V0LCAxMCwgQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCksIHRydWV9LAogICAgICAgICAgICAgICAgIHtDb250YWlucy53aXRoaW4sIDEwMCwgQXJyYXlzLmFzTGlzdCgxLCAyLCAzLCA0LCAxMCksIGZhbHNlfSwKLSAgICAgICAgICAgICAgICB7Q29udGFpbnMud2l0aG91dCwgMTBsLCBBcnJheXMuYXNMaXN0KDEsIDIsIDMsIDQsIDEwKSwgdHJ1ZX0sICAgIC8vIG5vIGZvcmdpdmVuZXNzCisgICAgICAgICAgICAgICAge0NvbnRhaW5zLndpdGhvdXQsIDEwTCwgQXJyYXlzLmFzTGlzdCgxLCAyLCAzLCA0LCAxMCksIGZhbHNlfSwKICAgICAgICAgICAgICAgICB7Q29udGFpbnMud2l0aGluLCAidGVzdCIsIEFycmF5cy5hc0xpc3QoMSwgMiwgMywgInRlc3QiLCAxMCksIHRydWV9LAogICAgICAgICAgICAgICAgIHtDb250YWlucy53aXRob3V0LCAidGVzdGluZyIsIEFycmF5cy5hc0xpc3QoMSwgMiwgMywgInRlc3QiLCAxMCksIHRydWV9CiAgICAgICAgIH0pKTsKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvT3BlcmF0b3JFeGNlcHRpb25UZXN0LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL09wZXJhdG9yRXhjZXB0aW9uVGVzdC5qYXZhCmluZGV4IDlhYTEzMzkuLjUxM2QwNGYgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvT3BlcmF0b3JFeGNlcHRpb25UZXN0LmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9PcGVyYXRvckV4Y2VwdGlvblRlc3QuamF2YQpAQCAtMzEsMTYgKzMxLDYgQEAKICAgICB9CiAKICAgICBAVGVzdChleHBlY3RlZCA9IENsYXNzQ2FzdEV4Y2VwdGlvbi5jbGFzcykKLSAgICBwdWJsaWMgdm9pZCBzaG91bGRUaHJvd0lmVmFsdWVUb01heElzTm90TnVtZXJpYygpIHsKLSAgICAgICAgT3BlcmF0b3IubWF4LmFwcGx5KCIxIiwgIjEiKTsKLSAgICB9Ci0KLSAgICBAVGVzdChleHBlY3RlZCA9IENsYXNzQ2FzdEV4Y2VwdGlvbi5jbGFzcykKLSAgICBwdWJsaWMgdm9pZCBzaG91bGRUaHJvd0lmVmFsdWVUb01pbklzTm90TnVtZXJpYygpIHsKLSAgICAgICAgT3BlcmF0b3IubWluLmFwcGx5KCIxIiwgIjEiKTsKLSAgICB9Ci0KLSAgICBAVGVzdChleHBlY3RlZCA9IENsYXNzQ2FzdEV4Y2VwdGlvbi5jbGFzcykKICAgICBwdWJsaWMgdm9pZCBzaG91bGRUaHJvd0lmVmFsdWVUb01pbnVzSXNOb3ROdW1lcmljKCkgewogICAgICAgICBPcGVyYXRvci5taW51cy5hcHBseSgiMSIsICIxIik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9PcGVyYXRvclRlc3QuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvT3BlcmF0b3JUZXN0LmphdmEKaW5kZXggMzhmNzc0Mi4uZTQ5OGNhZSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9PcGVyYXRvclRlc3QuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL09wZXJhdG9yVGVzdC5qYXZhCkBAIC0zOCw3ICszOCw3IEBACiAgICAgLyoqCiAgICAgICogUmVxdWlyZWQgdG8gdmVyaWZ5IHRoYXQgT3BlcmF0b3IgY2FuIGhhbmRsZSBOdW1iZXIgdHlwZSwgdGhhdCBpdCBkb2Vzbid0IGtub3cgZXhwbGljaXRseS4KICAgICAgKi8KLSAgICBzdGF0aWMgY2xhc3MgQ3VzdG9tTnVtYmVyIGV4dGVuZHMgTnVtYmVyIHsKKyAgICBzdGF0aWMgY2xhc3MgQ3VzdG9tTnVtYmVyIGV4dGVuZHMgTnVtYmVyIGltcGxlbWVudHMgQ29tcGFyYWJsZTxDdXN0b21OdW1iZXI+IHsKIAogICAgICAgICBwdWJsaWMgZmluYWwgc3RhdGljIEN1c3RvbU51bWJlciBPTkUgPSBuZXcgQ3VzdG9tTnVtYmVyKDEpOwogICAgICAgICBwdWJsaWMgZmluYWwgc3RhdGljIEN1c3RvbU51bWJlciBURU4gPSBuZXcgQ3VzdG9tTnVtYmVyKDEwKTsKQEAgLTY4LDYgKzY4LDExIEBACiAgICAgICAgIHB1YmxpYyBkb3VibGUgZG91YmxlVmFsdWUoKSB7CiAgICAgICAgICAgICByZXR1cm4gbjsKICAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgaW50IGNvbXBhcmVUbyhmaW5hbCBDdXN0b21OdW1iZXIgYW5vdGhlckN1c3RvbU51bWJlcikgeworICAgICAgICAgICAgcmV0dXJuIEludGVnZXIuY29tcGFyZShuLCBhbm90aGVyQ3VzdG9tTnVtYmVyLm4pOworICAgICAgICB9CiAgICAgfQogCiAgICAgQFBhcmFtZXRlcml6ZWQuUGFyYW1ldGVycyhuYW1lID0gInswfSh7MX0sezJ9KSA9IHszfSIpCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL1BUZXN0LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL1BUZXN0LmphdmEKaW5kZXggYjY1ZDMyMC4uZjJlMDg2OCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9QVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvUFRlc3QuamF2YQpAQCAtOTUsNiArOTUsMjEgQEAKICAgICAgICAgICAgICAgICAgICAge1AuYmV0d2VlbigibSIsICJuIikub3IoUC5lcSgiZGFuaWVsIikpLCAibWFya28iLCB0cnVlfSwKICAgICAgICAgICAgICAgICAgICAge1AuYmV0d2VlbigibSIsICJuIikub3IoUC5lcSgiZGFuaWVsIikpLCAiZGFuaWVsIiwgdHJ1ZX0sCiAgICAgICAgICAgICAgICAgICAgIHtQLmJldHdlZW4oIm0iLCAibiIpLm9yKFAuZXEoImRhbmllbCIpKSwgInN0ZXBoZW4iLCBmYWxzZX0sCisgICAgICAgICAgICAgICAgICAgIC8vIHRleHQgcHJlZGljYXRlcworICAgICAgICAgICAgICAgICAgICB7VGV4dFAuY29udGFpbmluZygiYXJrIiksICJtYXJrbyIsIHRydWV9LAorICAgICAgICAgICAgICAgICAgICB7VGV4dFAuY29udGFpbmluZygiYXJrIiksICJqb3NoIiwgZmFsc2V9LAorICAgICAgICAgICAgICAgICAgICB7VGV4dFAuc3RhcnRpbmdXaXRoKCJqbyIpLCAibWFya28iLCBmYWxzZX0sCisgICAgICAgICAgICAgICAgICAgIHtUZXh0UC5zdGFydGluZ1dpdGgoImpvIiksICJqb3NoIiwgdHJ1ZX0sCisgICAgICAgICAgICAgICAgICAgIHtUZXh0UC5lbmRpbmdXaXRoKCJ0ZXIiKSwgIm1hcmtvIiwgZmFsc2V9LAorICAgICAgICAgICAgICAgICAgICB7VGV4dFAuZW5kaW5nV2l0aCgidGVyIiksICJwZXRlciIsIHRydWV9LAorICAgICAgICAgICAgICAgICAgICB7VGV4dFAuY29udGFpbmluZygibyIpLCAibWFya28iLCB0cnVlfSwKKyAgICAgICAgICAgICAgICAgICAge1RleHRQLmNvbnRhaW5pbmcoIm8iKSwgImpvc2giLCB0cnVlfSwKKyAgICAgICAgICAgICAgICAgICAge1RleHRQLmNvbnRhaW5pbmcoIm8iKS5hbmQoUC5ndGUoImoiKSksICJtYXJrbyIsIHRydWV9LAorICAgICAgICAgICAgICAgICAgICB7VGV4dFAuY29udGFpbmluZygibyIpLmFuZChQLmd0ZSgiaiIpKSwgImpvc2giLCB0cnVlfSwKKyAgICAgICAgICAgICAgICAgICAge1RleHRQLmNvbnRhaW5pbmcoIm8iKS5hbmQoUC5ndGUoImoiKSkuYW5kKFRleHRQLmVuZGluZ1dpdGgoImtvIikpLCAibWFya28iLCB0cnVlfSwKKyAgICAgICAgICAgICAgICAgICAge1RleHRQLmNvbnRhaW5pbmcoIm8iKS5hbmQoUC5ndGUoImoiKSkuYW5kKFRleHRQLmVuZGluZ1dpdGgoImtvIikpLCAiam9zaCIsIGZhbHNlfSwKKyAgICAgICAgICAgICAgICAgICAge1RleHRQLmNvbnRhaW5pbmcoIm8iKS5hbmQoUC5ndGUoImoiKS5hbmQoVGV4dFAuZW5kaW5nV2l0aCgia28iKSkpLCAibWFya28iLCB0cnVlfSwKKyAgICAgICAgICAgICAgICAgICAge1RleHRQLmNvbnRhaW5pbmcoIm8iKS5hbmQoUC5ndGUoImoiKS5hbmQoVGV4dFAuZW5kaW5nV2l0aCgia28iKSkpLCAiam9zaCIsIGZhbHNlfSwKICAgICAgICAgICAgIH0pKTsKICAgICAgICAgfQogCkBAIC0xMTIsNyArMTI3LDcgQEAKICAgICAgICAgICAgIGFzc2VydEVxdWFscyhleHBlY3RlZCwgcHJlZGljYXRlLnRlc3QodmFsdWUpKTsKICAgICAgICAgICAgIGFzc2VydE5vdEVxdWFscyhleHBlY3RlZCwgcHJlZGljYXRlLmNsb25lKCkubmVnYXRlKCkudGVzdCh2YWx1ZSkpOwogICAgICAgICAgICAgYXNzZXJ0Tm90RXF1YWxzKGV4cGVjdGVkLCBQLm5vdChwcmVkaWNhdGUuY2xvbmUoKSkudGVzdCh2YWx1ZSkpOwotICAgICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTnVtYmVyICYmICEocHJlZGljYXRlLmJpUHJlZGljYXRlIGluc3RhbmNlb2YgQ29udGFpbnMpKSB7CisgICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBOdW1iZXIpIHsKICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoZXhwZWN0ZWQsIHByZWRpY2F0ZS50ZXN0KCgoTnVtYmVyKSB2YWx1ZSkubG9uZ1ZhbHVlKCkpKTsKICAgICAgICAgICAgICAgICBhc3NlcnROb3RFcXVhbHMoZXhwZWN0ZWQsIHByZWRpY2F0ZS5jbG9uZSgpLm5lZ2F0ZSgpLnRlc3QoKChOdW1iZXIpIHZhbHVlKS5sb25nVmFsdWUoKSkpOwogICAgICAgICAgICAgICAgIGFzc2VydE5vdEVxdWFscyhleHBlY3RlZCwgUC5ub3QocHJlZGljYXRlKS50ZXN0KCgoTnVtYmVyKSB2YWx1ZSkubG9uZ1ZhbHVlKCkpKTsKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL0dyZW1saW5Ec2xQcm9jZXNzb3JUZXN0LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9HcmVtbGluRHNsUHJvY2Vzc29yVGVzdC5qYXZhCmluZGV4IDVkZjAxMGQuLjIzODc2YzYgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL0dyZW1saW5Ec2xQcm9jZXNzb3JUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvR3JlbWxpbkRzbFByb2Nlc3NvclRlc3QuamF2YQpAQCAtMjIsNyArMjIsMTUgQEAKIGltcG9ydCBjb20uZ29vZ2xlLnRlc3RpbmcuY29tcGlsZS5KYXZhRmlsZU9iamVjdHM7CiBpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CiAKK2ltcG9ydCBqYXZheC50b29scy5KYXZhRmlsZU9iamVjdDsKIGltcG9ydCBqYXZheC50b29scy5TdGFuZGFyZExvY2F0aW9uOworaW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5T3V0cHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworaW1wb3J0IGphdmEudXRpbC5mdW5jdGlvbi5GdW5jdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuc3RyZWFtLkNvbGxlY3RvcnM7CiAKIGltcG9ydCBzdGF0aWMgY29tLmdvb2dsZS50ZXN0aW5nLmNvbXBpbGUuQ29tcGlsYXRpb25TdWJqZWN0LmFzc2VydFRoYXQ7CiBpbXBvcnQgc3RhdGljIGNvbS5nb29nbGUudGVzdGluZy5jb21waWxlLkNvbXBpbGVyLmphdmFjOwpAQCAtMzQsNyArNDIsNyBAQAogCiAgICAgQFRlc3QKICAgICBwdWJsaWMgdm9pZCBzaG91bGRDb21waWxlVG9EZWZhdWx0UGFja2FnZSgpIHsKLSAgICAgICAgQ29tcGlsYXRpb24gY29tcGlsYXRpb24gPSBqYXZhYygpCisgICAgICAgIGZpbmFsIENvbXBpbGF0aW9uIGNvbXBpbGF0aW9uID0gamF2YWMoKQogICAgICAgICAgICAgICAgIC53aXRoUHJvY2Vzc29ycyhuZXcgR3JlbWxpbkRzbFByb2Nlc3NvcigpKQogICAgICAgICAgICAgICAgIC5jb21waWxlKEphdmFGaWxlT2JqZWN0cy5mb3JSZXNvdXJjZShHcmVtbGluRHNsLmNsYXNzLmdldFJlc291cmNlKCJTb2NpYWxUcmF2ZXJzYWxEc2wuamF2YSIpKSk7CiAgICAgICAgIGFzc2VydFRoYXQoY29tcGlsYXRpb24pLnN1Y2NlZWRlZFdpdGhvdXRXYXJuaW5ncygpOwpAQCAtNDIsNyArNTAsNyBAQAogCiAgICAgQFRlc3QKICAgICBwdWJsaWMgdm9pZCBzaG91bGRDb21waWxlQW5kTW92ZVBhY2thZ2UoKSB7Ci0gICAgICAgIENvbXBpbGF0aW9uIGNvbXBpbGF0aW9uID0gamF2YWMoKQorICAgICAgICBmaW5hbCBDb21waWxhdGlvbiBjb21waWxhdGlvbiA9IGphdmFjKCkKICAgICAgICAgICAgICAgICAud2l0aFByb2Nlc3NvcnMobmV3IEdyZW1saW5Ec2xQcm9jZXNzb3IoKSkKICAgICAgICAgICAgICAgICAuY29tcGlsZShKYXZhRmlsZU9iamVjdHMuZm9yUmVzb3VyY2UoR3JlbWxpbkRzbC5jbGFzcy5nZXRSZXNvdXJjZSgiU29jaWFsTW92ZVRyYXZlcnNhbERzbC5qYXZhIikpKTsKICAgICAgICAgYXNzZXJ0VGhhdChjb21waWxhdGlvbikuc3VjY2VlZGVkV2l0aG91dFdhcm5pbmdzKCk7CkBAIC01Miw3ICs2MCw3IEBACiAKICAgICBAVGVzdAogICAgIHB1YmxpYyB2b2lkIHNob3VsZENvbXBpbGVUcmF2ZXJzYWxBbmRUcmF2ZXJzYWxTb3VyY2VUb0RlZmF1bHRQYWNrYWdlKCkgewotICAgICAgICBDb21waWxhdGlvbiBjb21waWxhdGlvbiA9IGphdmFjKCkKKyAgICAgICAgZmluYWwgQ29tcGlsYXRpb24gY29tcGlsYXRpb24gPSBqYXZhYygpCiAgICAgICAgICAgICAgICAgLndpdGhQcm9jZXNzb3JzKG5ldyBHcmVtbGluRHNsUHJvY2Vzc29yKCkpCiAgICAgICAgICAgICAgICAgLmNvbXBpbGUoSmF2YUZpbGVPYmplY3RzLmZvclJlc291cmNlKEdyZW1saW5Ec2wuY2xhc3MuZ2V0UmVzb3VyY2UoIlNvY2lhbFBhY2thZ2VUcmF2ZXJzYWxEc2wuamF2YSIpKSk7CiAgICAgICAgIGFzc2VydFRoYXQoY29tcGlsYXRpb24pLnN1Y2NlZWRlZFdpdGhvdXRXYXJuaW5ncygpOwpAQCAtNjAsOSArNjgsNjIgQEAKIAogICAgIEBUZXN0CiAgICAgcHVibGljIHZvaWQgc2hvdWxkQ29tcGlsZVdpdGhOb0RlZmF1bHRNZXRob2RzKCkgewotICAgICAgICBDb21waWxhdGlvbiBjb21waWxhdGlvbiA9IGphdmFjKCkKKyAgICAgICAgZmluYWwgQ29tcGlsYXRpb24gY29tcGlsYXRpb24gPSBqYXZhYygpCiAgICAgICAgICAgICAgICAgLndpdGhQcm9jZXNzb3JzKG5ldyBHcmVtbGluRHNsUHJvY2Vzc29yKCkpCiAgICAgICAgICAgICAgICAgLmNvbXBpbGUoSmF2YUZpbGVPYmplY3RzLmZvclJlc291cmNlKEdyZW1saW5Ec2wuY2xhc3MuZ2V0UmVzb3VyY2UoIlNvY2lhbE5vRGVmYXVsdE1ldGhvZHNUcmF2ZXJzYWxEc2wuamF2YSIpKSk7CiAgICAgICAgIGFzc2VydFRoYXQoY29tcGlsYXRpb24pLnN1Y2NlZWRlZFdpdGhvdXRXYXJuaW5ncygpOwogICAgIH0KKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkQ29tcGlsZVJlbW90ZURzbFRyYXZlcnNhbCgpIHsKKyAgICAgICAgZmluYWwgQ29tcGlsYXRpb24gY29tcGlsYXRpb24gPSBqYXZhYygpCisgICAgICAgICAgICAgICAgLndpdGhQcm9jZXNzb3JzKG5ldyBHcmVtbGluRHNsUHJvY2Vzc29yKCkpCisgICAgICAgICAgICAgICAgLmNvbXBpbGUoSmF2YUZpbGVPYmplY3RzLmZvclJlc291cmNlKEdyZW1saW5Ec2wuY2xhc3MuZ2V0UmVzb3VyY2UoIlNvY2lhbFRyYXZlcnNhbERzbC5qYXZhIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgSmF2YUZpbGVPYmplY3RzLmZvclJlc291cmNlKEdyZW1saW5Ec2wuY2xhc3MuZ2V0UmVzb3VyY2UoIlJlbW90ZURzbFRyYXZlcnNhbC5qYXZhIikpKTsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgZmluYWwgQ2xhc3NMb2FkZXIgY2wgPSBuZXcgSmF2YUZpbGVPYmplY3RDbGFzc0xvYWRlcihjb21waWxhdGlvbi5nZW5lcmF0ZWRGaWxlcygpKTsKKyAgICAgICAgICAgIGZpbmFsIENsYXNzIGNscyA9IGNsLmxvYWRDbGFzcygib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuUmVtb3RlRHNsVHJhdmVyc2FsIik7CisgICAgICAgICAgICBjbHMuZ2V0Q29uc3RydWN0b3IoKS5uZXdJbnN0YW5jZSgpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdGF0aWMgY2xhc3MgSmF2YUZpbGVPYmplY3RDbGFzc0xvYWRlciBleHRlbmRzIENsYXNzTG9hZGVyIHsKKyAgICAgICAgTWFwPFN0cmluZywgSmF2YUZpbGVPYmplY3Q+IGNsYXNzRmlsZU1hcDsKKworICAgICAgICBKYXZhRmlsZU9iamVjdENsYXNzTG9hZGVyKExpc3Q8SmF2YUZpbGVPYmplY3Q+IGNsYXNzRmlsZXMpIHsKKyAgICAgICAgICAgIGNsYXNzRmlsZU1hcCA9IGNsYXNzRmlsZXMuc3RyZWFtKCkuY29sbGVjdChDb2xsZWN0b3JzLnRvTWFwKAorICAgICAgICAgICAgICAgICAgICBmIC0+IGYudG9VcmkoKS50b1N0cmluZygpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2VGaXJzdCgiLiooPz1vcmcvYXBhY2hlL3RpbmtlcnBvcCkiLCAiIiksCisgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uLmlkZW50aXR5KCkpKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBDbGFzcyBmaW5kQ2xhc3MoU3RyaW5nIG5hbWUpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgYnl0ZVtdIGIgPSBsb2FkQ2xhc3NEYXRhKG5hbWUpOworICAgICAgICAgICAgICAgIHJldHVybiBkZWZpbmVDbGFzcyhuYW1lLCBiLCAwLCBiLmxlbmd0aCk7CisgICAgICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKGV4KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHByaXZhdGUgYnl0ZVtdIGxvYWRDbGFzc0RhdGEoU3RyaW5nIG5hbWUpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgICAgICBmaW5hbCBCeXRlQXJyYXlPdXRwdXRTdHJlYW0gb3V0ID0gbmV3IEJ5dGVBcnJheU91dHB1dFN0cmVhbSgpOworICAgICAgICAgICAgZmluYWwgU3RyaW5nIGNsYXNzRmlsZW5hbWUgPSBuYW1lLnJlcGxhY2VBbGwoIlxcLiIsICIvIikgKyAiLmNsYXNzIjsKKyAgICAgICAgICAgIGZpbmFsIElucHV0U3RyZWFtIGluID0gY2xhc3NGaWxlTWFwLmdldChjbGFzc0ZpbGVuYW1lKS5vcGVuSW5wdXRTdHJlYW0oKTsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgZmluYWwgYnl0ZVtdIGJ1ZiA9IG5ldyBieXRlWzEwMjRdOworICAgICAgICAgICAgICAgIGludCBsZW4gPSBpbi5yZWFkKGJ1Zik7CisgICAgICAgICAgICAgICAgd2hpbGUgKGxlbiAhPSAtMSkgeworICAgICAgICAgICAgICAgICAgICBvdXQud3JpdGUoYnVmLCAwLCBsZW4pOworICAgICAgICAgICAgICAgICAgICBsZW4gPSBpbi5yZWFkKGJ1Zik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgICAgICBpbi5jbG9zZSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG91dC50b0J5dGVBcnJheSgpOworICAgICAgICB9CisgICAgfQogfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvU29jaWFsUGFja2FnZVRyYXZlcnNhbFNvdXJjZURzbC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvU29jaWFsUGFja2FnZVRyYXZlcnNhbFNvdXJjZURzbC5qYXZhCmluZGV4IDY0ODU5ZWIuLmI0ZjU4MzEgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL1NvY2lhbFBhY2thZ2VUcmF2ZXJzYWxTb3VyY2VEc2wuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9Tb2NpYWxQYWNrYWdlVHJhdmVyc2FsU291cmNlRHNsLmphdmEKQEAgLTE4LDE3ICsxOCwxNCBAQAogICovCiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsOwogCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnJlbW90ZS5SZW1vdGVDb25uZWN0aW9uOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbFN0cmF0ZWdpZXM7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuR3JlbWxpbkRzbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5EZWZhdWx0R3JhcGhUcmF2ZXJzYWw7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguR3JhcGhUcmF2ZXJzYWw7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguR3JhcGhUcmF2ZXJzYWxTb3VyY2U7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5HcmFwaFN0ZXA7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuSGFzQ29udGFpbmVyOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5UcmF2ZXJzYWxIZWxwZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGg7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXg7CiAKIC8qKgpAQCAtNDQsNiArNDEsMTAgQEAKICAgICAgICAgc3VwZXIoZ3JhcGgpOwogICAgIH0KIAorICAgIHB1YmxpYyBTb2NpYWxQYWNrYWdlVHJhdmVyc2FsU291cmNlRHNsKGZpbmFsIFJlbW90ZUNvbm5lY3Rpb24gY29ubmVjdGlvbikgeworICAgICAgICBzdXBlcihjb25uZWN0aW9uKTsKKyAgICB9CisKICAgICBwdWJsaWMgR3JhcGhUcmF2ZXJzYWw8VmVydGV4LCBWZXJ0ZXg+IHBlcnNvbnMoU3RyaW5nLi4uIG5hbWVzKSB7CiAgICAgICAgIEdyYXBoVHJhdmVyc2FsU291cmNlIGNsb25lID0gdGhpcy5jbG9uZSgpOwogCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9ncmFwaC9HcmFwaFRyYXZlcnNhbFNvdXJjZVRlc3QuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL2dyYXBoL0dyYXBoVHJhdmVyc2FsU291cmNlVGVzdC5qYXZhCmluZGV4IDBiZWQ2ZWIuLmVkZTY2Y2MgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL2dyYXBoL0dyYXBoVHJhdmVyc2FsU291cmNlVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL2dyYXBoL0dyYXBoVHJhdmVyc2FsU291cmNlVGVzdC5qYXZhCkBAIC00NywxMyArNDcsNiBAQAogICAgICAgICB2ZXJpZnkobW9jaywgdGltZXMoMSkpLmNsb3NlKCk7CiAgICAgfQogCi0gICAgQFRlc3QoZXhwZWN0ZWQgPSBJbGxlZ2FsU3RhdGVFeGNlcHRpb24uY2xhc3MpCi0gICAgcHVibGljIHZvaWQgc2hvdWxkTm90QWxsb3dMZWFrUmVtb3RlQ29ubmVjdGlvbnNJZk11bHRpcGxlQXJlQ3JlYXRlZCgpIHRocm93cyBFeGNlcHRpb24gewotICAgICAgICBmaW5hbCBSZW1vdGVDb25uZWN0aW9uIG1vY2sxID0gbW9jayhSZW1vdGVDb25uZWN0aW9uLmNsYXNzKTsKLSAgICAgICAgZmluYWwgUmVtb3RlQ29ubmVjdGlvbiBtb2NrMiA9IG1vY2soUmVtb3RlQ29ubmVjdGlvbi5jbGFzcyk7Ci0gICAgICAgIHRyYXZlcnNhbCgpLndpdGhSZW1vdGUobW9jazEpLndpdGhSZW1vdGUobW9jazIpOwotICAgIH0KLQogICAgIEBUZXN0CiAgICAgcHVibGljIHZvaWQgc2hvdWxkU3VwcG9ydE1hcEJhc2VkU3RyYXRlZ2llcygpIHRocm93cyBFeGNlcHRpb24gewogICAgICAgICBHcmFwaFRyYXZlcnNhbFNvdXJjZSBnID0gRW1wdHlHcmFwaC5pbnN0YW5jZSgpLnRyYXZlcnNhbCgpOwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvZ3JhcGgvR3JhcGhUcmF2ZXJzYWxUZXN0LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9ncmFwaC9HcmFwaFRyYXZlcnNhbFRlc3QuamF2YQppbmRleCA2ZGVjYmUwLi4xNjZjODkwIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9ncmFwaC9HcmFwaFRyYXZlcnNhbFRlc3QuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9ncmFwaC9HcmFwaFRyYXZlcnNhbFRlc3QuamF2YQpAQCAtMzMsMTggKzMzLDIwIEBACiBpbXBvcnQgamF2YS51dGlsLkxpc3Q7CiBpbXBvcnQgamF2YS51dGlsLlJhbmRvbTsKIGltcG9ydCBqYXZhLnV0aWwuU2V0OworaW1wb3J0IGphdmEudXRpbC5mdW5jdGlvbi5Db25zdW1lcjsKIAogaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydEVxdWFsczsKIAogLyoqCiAgKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKICAqLwogcHVibGljIGNsYXNzIEdyYXBoVHJhdmVyc2FsVGVzdCB7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKEdyYXBoVHJhdmVyc2FsVGVzdC5jbGFzcyk7CiAKLSAgICBwcml2YXRlIHN0YXRpYyBTZXQ8U3RyaW5nPiBOT19HUkFQSCA9IG5ldyBIYXNoU2V0PD4oQXJyYXlzLmFzTGlzdCgiYXNBZG1pbiIsICJieSIsICJvcHRpb24iLCAiaXRlcmF0ZSIsICJ0byIsICJmcm9tIiwgInByb2ZpbGUiLCAicGFnZVJhbmsiLCAicGVlclByZXNzdXJlIiwgInByb2dyYW0iLCAibm9uZSIpKTsKKyAgICBwcml2YXRlIHN0YXRpYyBTZXQ8U3RyaW5nPiBOT19HUkFQSCA9IG5ldyBIYXNoU2V0PD4oQXJyYXlzLmFzTGlzdCgiYXNBZG1pbiIsICJieSIsICJyZWFkIiwgIndyaXRlIiwgIndpdGgiLCAib3B0aW9uIiwgIml0ZXJhdGUiLCAidG8iLCAiZnJvbSIsICJwcm9maWxlIiwgInBhZ2VSYW5rIiwgImNvbm5lY3RlZENvbXBvbmVudCIsICJwZWVyUHJlc3N1cmUiLCAic2hvcnRlc3RQYXRoIiwgInByb2dyYW0iLCAibm9uZSIpKTsKICAgICBwcml2YXRlIHN0YXRpYyBTZXQ8U3RyaW5nPiBOT19BTk9OWU1PVVMgPSBuZXcgSGFzaFNldDw+KEFycmF5cy5hc0xpc3QoInN0YXJ0IiwgIl9fIikpOwotICAgIHByaXZhdGUgc3RhdGljIFNldDxTdHJpbmc+IElHTk9SRVNfQllURUNPREUgPSBuZXcgSGFzaFNldDw+KEFycmF5cy5hc0xpc3QoImFzQWRtaW4iLCAiaXRlcmF0ZSIsICJtYXBWYWx1ZXMiLCAibWFwS2V5cyIpKTsKKyAgICBwcml2YXRlIHN0YXRpYyBTZXQ8U3RyaW5nPiBJR05PUkVTX0JZVEVDT0RFID0gbmV3IEhhc2hTZXQ8PihBcnJheXMuYXNMaXN0KCJhc0FkbWluIiwgInJlYWQiLCAid3JpdGUiLCAiaXRlcmF0ZSIpKTsKIAogICAgIEBUZXN0CiAgICAgcHVibGljIHZvaWQgc2hvdWxkSGF2ZU1ldGhvZHNPZkdyYXBoVHJhdmVyc2FsT25Bbm9ueW1vdXNHcmFwaFRyYXZlcnNhbCgpIHsKQEAgLTk5LDEwICsxMDEsMTYgQEAKICAgICAgICAgICAgICAgICAvLy8KICAgICAgICAgICAgICAgICBpZiAoc3RlcE1ldGhvZC5nZXROYW1lKCkuZXF1YWxzKCJieSIpKQogICAgICAgICAgICAgICAgICAgICB0cmF2ZXJzYWwub3JkZXIoKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChzdGVwTWV0aG9kLmdldE5hbWUoKS5lcXVhbHMoIndpdGgiKSkKKyAgICAgICAgICAgICAgICAgICAgcmFuZG9tUG9zc2libGVTdGVwKHJhbmRvbSwgdHJhdmVyc2FsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyYXBoVHJhdmVyc2FsOjpWLCBHcmFwaFRyYXZlcnNhbDo6c2hvcnRlc3RQYXRoLCBHcmFwaFRyYXZlcnNhbDo6cGFnZVJhbmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JhcGhUcmF2ZXJzYWw6OmNvbm5lY3RlZENvbXBvbmVudCwgR3JhcGhUcmF2ZXJzYWw6OnBlZXJQcmVzc3VyZSwgdCAtPiB0LmFkZEUoImxpbmsiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcmFwaFRyYXZlcnNhbDo6YWRkVik7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoc3RlcE1ldGhvZC5nZXROYW1lKCkuZXF1YWxzKCJvcHRpb24iKSkKICAgICAgICAgICAgICAgICAgICAgdHJhdmVyc2FsLmJyYW5jaChfXy5pZGVudGl0eSgpLm91dChyYW5kb21TdHJpbmcocmFuZG9tKSkpOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN0ZXBNZXRob2QuZ2V0TmFtZSgpLmVxdWFscygidG8iKSB8fCBzdGVwTWV0aG9kLmdldE5hbWUoKS5lcXVhbHMoImZyb20iKSkKICAgICAgICAgICAgICAgICAgICAgdHJhdmVyc2FsLmFkZEUocmFuZG9tU3RyaW5nKHJhbmRvbSkpOworCiAgICAgICAgICAgICAgICAgaWYgKHN0ZXBNZXRob2QuZ2V0TmFtZSgpLmVxdWFscygicmFuZ2UiKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoU2NvcGUuY2xhc3MuaXNBc3NpZ25hYmxlRnJvbShzdGVwTWV0aG9kLmdldFBhcmFtZXRlclR5cGVzKClbMF0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LmFkZChhcmd1bWVudHNbMF0gPSBTY29wZS5sb2NhbCk7CkBAIC0xNjUsNyArMTczLDExIEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBTdHJpbmcgcmFuZG9tU3RyaW5nKGZpbmFsIFJhbmRvbSByYW5kb20pIHsKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIHJhbmRvbVBvc3NpYmxlU3RlcChmaW5hbCBSYW5kb20gcmFuZG9tLCBmaW5hbCBHcmFwaFRyYXZlcnNhbCB0LCBmaW5hbCBDb25zdW1lcjxHcmFwaFRyYXZlcnNhbD4uLi4gcG9zc2libGUpIHsKKyAgICAgICAgcG9zc2libGVbcmFuZG9tLm5leHRJbnQocG9zc2libGUubGVuZ3RoKV0uYWNjZXB0KHQpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyByYW5kb21TdHJpbmcoZmluYWwgUmFuZG9tIHJhbmRvbSkgewogICAgICAgICBTdHJpbmcgcyA9ICIiOwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJhbmRvbS5uZXh0SW50KDEwKSArIDE7IGkrKykgewogICAgICAgICAgICAgcyA9IChzICsgKGNoYXIpIChyYW5kb20ubmV4dEludCgxMDApICsgMSkpLnRyaW0oKTsKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvbGFtYmRhL0VsZW1lbnRWYWx1ZVRyYXZlcnNhbFRlc3QuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvbGFtYmRhL0VsZW1lbnRWYWx1ZVRyYXZlcnNhbFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzUyYTNkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9sYW1iZGEvRWxlbWVudFZhbHVlVHJhdmVyc2FsVGVzdC5qYXZhCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmxhbWJkYTsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyLkJfT19UcmF2ZXJzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuRWRnZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4UHJvcGVydHk7CitpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CisKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworCitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOworaW1wb3J0IHN0YXRpYyBvcmcubW9ja2l0by5Nb2NraXRvLm1vY2s7CitpbXBvcnQgc3RhdGljIG9yZy5tb2NraXRvLk1vY2tpdG8ud2hlbjsKKworcHVibGljIGNsYXNzIEVsZW1lbnRWYWx1ZVRyYXZlcnNhbFRlc3QgeworCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRXb3JrT25WZXJ0ZXgoKSB7CisgICAgICAgIGZpbmFsIEVsZW1lbnRWYWx1ZVRyYXZlcnNhbDxJbnRlZ2VyPiB0ID0gbmV3IEVsZW1lbnRWYWx1ZVRyYXZlcnNhbDw+KCJhZ2UiKTsKKyAgICAgICAgZmluYWwgVmVydGV4IHYgPSBtb2NrKFZlcnRleC5jbGFzcyk7CisgICAgICAgIHdoZW4odi52YWx1ZSgiYWdlIikpLnRoZW5SZXR1cm4oMjkpOworICAgICAgICB0LmFkZFN0YXJ0KG5ldyBCX09fVHJhdmVyc2VyKHYsIDEpLmFzQWRtaW4oKSk7CisgICAgICAgIGFzc2VydEVxdWFscygyOSwgdC5uZXh0KCkuaW50VmFsdWUoKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRXb3JrT25FZGdlKCkgeworICAgICAgICBmaW5hbCBFbGVtZW50VmFsdWVUcmF2ZXJzYWw8RG91YmxlPiB0ID0gbmV3IEVsZW1lbnRWYWx1ZVRyYXZlcnNhbDw+KCJ3ZWlnaHQiKTsKKyAgICAgICAgZmluYWwgRWRnZSBlID0gbW9jayhFZGdlLmNsYXNzKTsKKyAgICAgICAgd2hlbihlLnZhbHVlKCJ3ZWlnaHQiKSkudGhlblJldHVybigxLjBkKTsKKyAgICAgICAgdC5hZGRTdGFydChuZXcgQl9PX1RyYXZlcnNlcihlLCAxKS5hc0FkbWluKCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoMS4wZCwgdC5uZXh0KCksIDAuMDAwMDFkKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZFdvcmtPblZlcnRleFByb3BlcnR5KCkgeworICAgICAgICBmaW5hbCBFbGVtZW50VmFsdWVUcmF2ZXJzYWw8SW50ZWdlcj4gdCA9IG5ldyBFbGVtZW50VmFsdWVUcmF2ZXJzYWw8PigiYWdlIik7CisgICAgICAgIGZpbmFsIFZlcnRleFByb3BlcnR5IHZwID0gbW9jayhWZXJ0ZXhQcm9wZXJ0eS5jbGFzcyk7CisgICAgICAgIHdoZW4odnAudmFsdWUoImFnZSIpKS50aGVuUmV0dXJuKDI5KTsKKyAgICAgICAgdC5hZGRTdGFydChuZXcgQl9PX1RyYXZlcnNlcih2cCwgMSkuYXNBZG1pbigpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDI5LCB0Lm5leHQoKS5pbnRWYWx1ZSgpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZFdvcmtPbk1hcCgpIHsKKyAgICAgICAgZmluYWwgRWxlbWVudFZhbHVlVHJhdmVyc2FsPEludGVnZXI+IHQgPSBuZXcgRWxlbWVudFZhbHVlVHJhdmVyc2FsPD4oImFnZSIpOworICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLEludGVnZXI+IG0gPSBuZXcgSGFzaE1hcDw+KCk7CisgICAgICAgIG0ucHV0KCJhZ2UiLCAyOSk7CisgICAgICAgIHQuYWRkU3RhcnQobmV3IEJfT19UcmF2ZXJzZXIobSwgMSkuYXNBZG1pbigpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDI5LCB0Lm5leHQoKS5pbnRWYWx1ZSgpKTsKKyAgICB9CisKKyAgICBAVGVzdChleHBlY3RlZCA9IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbi5jbGFzcykKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRUaHJvd0V4Y2VwdGlvbldoZW5UcnlpbmdVbnN1cHBvcnRlZFR5cGUoKSB7CisgICAgICAgIGZpbmFsIEVsZW1lbnRWYWx1ZVRyYXZlcnNhbDxJbnRlZ2VyPiB0ID0gbmV3IEVsZW1lbnRWYWx1ZVRyYXZlcnNhbDw+KCJhZ2UiKTsKKyAgICAgICAgdC5hZGRTdGFydChuZXcgQl9PX1RyYXZlcnNlcigyOSwgMSkuYXNBZG1pbigpKTsKKyAgICAgICAgdC5uZXh0KCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL2JyYW5jaC9SZXBlYXRTdGVwVGVzdC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL2JyYW5jaC9SZXBlYXRTdGVwVGVzdC5qYXZhCmluZGV4IDZjODZjMjcuLjFjNmFlNjQgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9icmFuY2gvUmVwZWF0U3RlcFRlc3QuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvYnJhbmNoL1JlcGVhdFN0ZXBUZXN0LmphdmEKQEAgLTM5LDcgKzM5LDkgQEAKICAgICAgICAgICAgICAgICBfXy5yZXBlYXQob3V0KCkpLnRpbWVzKDMpLAogICAgICAgICAgICAgICAgIF9fLnJlcGVhdChvdXQoKS5hcygieCIpKS50aW1lcygzKSwKICAgICAgICAgICAgICAgICBfXy5vdXQoKS5lbWl0KCkucmVwZWF0KG91dCgpKS50aW1lcygzKSwKLSAgICAgICAgICAgICAgICBfXy5yZXBlYXQob3V0KCkpLnVudGlsKGhhc0xhYmVsKCJ4IikpCisgICAgICAgICAgICAgICAgX18ucmVwZWF0KG91dCgpKS51bnRpbChoYXNMYWJlbCgieCIpKSwKKyAgICAgICAgICAgICAgICBfXy5yZXBlYXQoImEiLCBfXy5vdXQoKSkudGltZXMoMyksCisgICAgICAgICAgICAgICAgX18ucmVwZWF0KG91dCgpLnJlcGVhdChvdXQoKSkudGltZXMoMSkpLnRpbWVzKDEpLmxpbWl0KDEpCiAgICAgICAgICk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9FbGVtZW50TWFwU3RlcFRlc3QuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvRWxlbWVudE1hcFN0ZXBUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2JmZmJlMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvRWxlbWVudE1hcFN0ZXBUZXN0LmphdmEKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXA7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5fXzsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuU3RlcFRlc3Q7CisKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCisvKioKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqLworcHVibGljIGNsYXNzIEVsZW1lbnRNYXBTdGVwVGVzdCBleHRlbmRzIFN0ZXBUZXN0IHsKKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCBMaXN0PFRyYXZlcnNhbD4gZ2V0VHJhdmVyc2FscygpIHsKKyAgICAgICAgcmV0dXJuIEFycmF5cy5hc0xpc3QoCisgICAgICAgICAgICAgICAgX18uZWxlbWVudE1hcCgpLAorICAgICAgICAgICAgICAgIF9fLmVsZW1lbnRNYXAoIm5hbWUiKSwKKyAgICAgICAgICAgICAgICBfXy5lbGVtZW50TWFwKCJhZ2UiKSwKKyAgICAgICAgICAgICAgICBfXy5lbGVtZW50TWFwKCJuYW1lIiwgImFnZSIpCisgICAgICAgICk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9JbmRleFN0ZXBUZXN0LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL0luZGV4U3RlcFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hM2I0MDcxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9JbmRleFN0ZXBUZXN0LmphdmEKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXA7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5fXzsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuU3RlcFRlc3Q7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuV2l0aE9wdGlvbnM7CitpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CisKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOworCisvKioKKyAqIEBhdXRob3IgRGFuaWVsIEt1cHBpdHogKGh0dHA6Ly9ncmVtbGluLmd1cnUpCisgKi8KK3B1YmxpYyBjbGFzcyBJbmRleFN0ZXBUZXN0IGV4dGVuZHMgU3RlcFRlc3QgeworCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIExpc3Q8VHJhdmVyc2FsPiBnZXRUcmF2ZXJzYWxzKCkgeworICAgICAgICByZXR1cm4gQXJyYXlzLmFzTGlzdCgKKyAgICAgICAgICAgICAgICBfXy5pbmRleCgpLAorICAgICAgICAgICAgICAgIF9fLmluZGV4KCkud2l0aChXaXRoT3B0aW9ucy5pbmRleGVyLCBXaXRoT3B0aW9ucy5tYXApCisgICAgICAgICk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCB0ZXN0RGVmYXVsdCgpIHsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKF9fLmluZGV4KCksIF9fLmluZGV4KCkud2l0aChXaXRoT3B0aW9ucy5pbmRleGVyLCBXaXRoT3B0aW9ucy5saXN0KSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9NYXRjaFN0ZXBUZXN0LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL01hdGNoU3RlcFRlc3QuamF2YQppbmRleCA5MDYxMjU4Li45YjIwNGNmIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL01hdGNoU3RlcFRlc3QuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL01hdGNoU3RlcFRlc3QuamF2YQpAQCAtMjAsNyArMjAsNiBAQAogCiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsRW5naW5lOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2VyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLl9fOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5TdGVwVGVzdDsKQEAgLTIwMCw3ICsxOTksNyBAQAogICAgICAgICAvLyBNQUtFIFNVUkUgVEhFIFNPUlQgT1JERVIgQ0hBTkdFUyBBUyBNT1JFIFJFU1VMVFMgQVJFIFJFVFVSTkVEIEJZIE9ORSBPUiBUSEUgT1RIRVIgVFJBVkVSU0FMCiAgICAgICAgIFRyYXZlcnNhbC5BZG1pbjw/LCA/PiB0cmF2ZXJzYWwgPSBfXy5tYXRjaChhcygiYSIpLm91dCgpLmFzKCJiIiksIGFzKCJjIikuaW4oKS5hcygiZCIpKS5hc0FkbWluKCk7CiAgICAgICAgIE1hdGNoU3RlcC5Db3VudE1hdGNoQWxnb3JpdGhtIGNvdW50TWF0Y2hBbGdvcml0aG0gPSBuZXcgTWF0Y2hTdGVwLkNvdW50TWF0Y2hBbGdvcml0aG0oKTsKLSAgICAgICAgY291bnRNYXRjaEFsZ29yaXRobS5pbml0aWFsaXplKFRyYXZlcnNhbEVuZ2luZS5UeXBlLlNUQU5EQVJELCAoKE1hdGNoU3RlcDw/LCA/PikgdHJhdmVyc2FsLmdldFN0YXJ0U3RlcCgpKS5nZXRHbG9iYWxDaGlsZHJlbigpKTsKKyAgICAgICAgY291bnRNYXRjaEFsZ29yaXRobS5pbml0aWFsaXplKGZhbHNlLCAoKE1hdGNoU3RlcDw/LCA/PikgdHJhdmVyc2FsLmdldFN0YXJ0U3RlcCgpKS5nZXRHbG9iYWxDaGlsZHJlbigpKTsKICAgICAgICAgVHJhdmVyc2FsLkFkbWluPE9iamVjdCwgT2JqZWN0PiBmaXJzdFBhdHRlcm4gPSAoKE1hdGNoU3RlcDw/LCA/PikgdHJhdmVyc2FsLmdldFN0YXJ0U3RlcCgpKS5nZXRHbG9iYWxDaGlsZHJlbigpLmdldCgwKTsKICAgICAgICAgVHJhdmVyc2FsLkFkbWluPE9iamVjdCwgT2JqZWN0PiBzZWNvbmRQYXR0ZXJuID0gKChNYXRjaFN0ZXA8PywgPz4pIHRyYXZlcnNhbC5nZXRTdGFydFN0ZXAoKSkuZ2V0R2xvYmFsQ2hpbGRyZW4oKS5nZXQoMSk7CiAgICAgICAgIC8vCkBAIC0yNDYsNyArMjQ1LDcgQEAKICAgICAgICAgLy8vLy8vLyAgTUFLRSBTVVJFIFdIRVJFIFBSRURJQ0FURSBUUkFWRVJTQUxTIEFSRSBBTFdBWVMgRklSU1QgQVMgVEhFWSBBUkUgU0lNUExZIC5oYXNOZXh0KCkgQ0hFQ0tTCiAgICAgICAgIHRyYXZlcnNhbCA9IF9fLm1hdGNoKGFzKCJhIikub3V0KCkuYXMoImIiKSwgYXMoImMiKS5pbigpLmFzKCJkIiksIHdoZXJlKCJhIiwgUC5lcSgiYiIpKSkuYXNBZG1pbigpOwogICAgICAgICBjb3VudE1hdGNoQWxnb3JpdGhtID0gbmV3IE1hdGNoU3RlcC5Db3VudE1hdGNoQWxnb3JpdGhtKCk7Ci0gICAgICAgIGNvdW50TWF0Y2hBbGdvcml0aG0uaW5pdGlhbGl6ZShUcmF2ZXJzYWxFbmdpbmUuVHlwZS5TVEFOREFSRCwgKChNYXRjaFN0ZXA8PywgPz4pIHRyYXZlcnNhbC5nZXRTdGFydFN0ZXAoKSkuZ2V0R2xvYmFsQ2hpbGRyZW4oKSk7CisgICAgICAgIGNvdW50TWF0Y2hBbGdvcml0aG0uaW5pdGlhbGl6ZShmYWxzZSwgKChNYXRjaFN0ZXA8PywgPz4pIHRyYXZlcnNhbC5nZXRTdGFydFN0ZXAoKSkuZ2V0R2xvYmFsQ2hpbGRyZW4oKSk7CiAgICAgICAgIGFzc2VydEVxdWFscygzLCBjb3VudE1hdGNoQWxnb3JpdGhtLmJ1bmRsZXMuc2l6ZSgpKTsKICAgICAgICAgZmlyc3RQYXR0ZXJuID0gKChNYXRjaFN0ZXA8PywgPz4pIHRyYXZlcnNhbC5nZXRTdGFydFN0ZXAoKSkuZ2V0R2xvYmFsQ2hpbGRyZW4oKS5nZXQoMCk7CiAgICAgICAgIHNlY29uZFBhdHRlcm4gPSAoKE1hdGNoU3RlcDw/LCA/PikgdHJhdmVyc2FsLmdldFN0YXJ0U3RlcCgpKS5nZXRHbG9iYWxDaGlsZHJlbigpLmdldCgxKTsKQEAgLTMzNCw3ICszMzMsNyBAQAogICAgICAgICAgICAgICAgIC5hc0FkbWluKCk7CiAgICAgICAgIHRyYXZlcnNhbC5hcHBseVN0cmF0ZWdpZXMoKTsgLy8gbmVjZXNzYXJ5IHRvIGVudXJlIHN0ZXAgaWRzIGFyZSB1bmlxdWUKICAgICAgICAgZmluYWwgTWF0Y2hTdGVwLkNvdW50TWF0Y2hBbGdvcml0aG0gY291bnRNYXRjaEFsZ29yaXRobSA9IG5ldyBNYXRjaFN0ZXAuQ291bnRNYXRjaEFsZ29yaXRobSgpOwotICAgICAgICBjb3VudE1hdGNoQWxnb3JpdGhtLmluaXRpYWxpemUoVHJhdmVyc2FsRW5naW5lLlR5cGUuQ09NUFVURVIsICgoTWF0Y2hTdGVwPD8sID8+KSB0cmF2ZXJzYWwuZ2V0U3RhcnRTdGVwKCkpLmdldEdsb2JhbENoaWxkcmVuKCkpOworICAgICAgICBjb3VudE1hdGNoQWxnb3JpdGhtLmluaXRpYWxpemUodHJ1ZSwgKChNYXRjaFN0ZXA8PywgPz4pIHRyYXZlcnNhbC5nZXRTdGFydFN0ZXAoKSkuZ2V0R2xvYmFsQ2hpbGRyZW4oKSk7CiAgICAgICAgIFRyYXZlcnNhbC5BZG1pbjxPYmplY3QsIE9iamVjdD4gZmlyc3RQYXR0ZXJuID0gKChNYXRjaFN0ZXA8PywgPz4pIHRyYXZlcnNhbC5nZXRTdGFydFN0ZXAoKSkuZ2V0R2xvYmFsQ2hpbGRyZW4oKS5nZXQoMCk7CiAgICAgICAgIFRyYXZlcnNhbC5BZG1pbjxPYmplY3QsIE9iamVjdD4gc2Vjb25kUGF0dGVybiA9ICgoTWF0Y2hTdGVwPD8sID8+KSB0cmF2ZXJzYWwuZ2V0U3RhcnRTdGVwKCkpLmdldEdsb2JhbENoaWxkcmVuKCkuZ2V0KDEpOwogICAgICAgICBUcmF2ZXJzYWwuQWRtaW48T2JqZWN0LCBPYmplY3Q+IHRoaXJkUGF0dGVybiA9ICgoTWF0Y2hTdGVwPD8sID8+KSB0cmF2ZXJzYWwuZ2V0U3RhcnRTdGVwKCkpLmdldEdsb2JhbENoaWxkcmVuKCkuZ2V0KDIpOwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9Qcm9wZXJ0eU1hcFN0ZXBUZXN0LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1Byb3BlcnR5TWFwU3RlcFRlc3QuamF2YQppbmRleCBjYzIyM2RjLi5jNDY5NTBlIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1Byb3BlcnR5TWFwU3RlcFRlc3QuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1Byb3BlcnR5TWFwU3RlcFRlc3QuamF2YQpAQCAtMjEsNiArMjEsNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLl9fOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5TdGVwVGVzdDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5XaXRoT3B0aW9uczsKIAogaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CiBpbXBvcnQgamF2YS51dGlsLkxpc3Q7CkBAIC0zNywxMCArMzgsMTIgQEAKICAgICAgICAgICAgICAgICBfXy52YWx1ZU1hcCgibmFtZSIpLAogICAgICAgICAgICAgICAgIF9fLnZhbHVlTWFwKCJhZ2UiKSwKICAgICAgICAgICAgICAgICBfXy52YWx1ZU1hcCgibmFtZSIsICJhZ2UiKSwKLSAgICAgICAgICAgICAgICBfXy52YWx1ZU1hcCh0cnVlKSwKLSAgICAgICAgICAgICAgICBfXy52YWx1ZU1hcCh0cnVlLCAibmFtZSIpLAotICAgICAgICAgICAgICAgIF9fLnZhbHVlTWFwKHRydWUsICJhZ2UiKSwKLSAgICAgICAgICAgICAgICBfXy52YWx1ZU1hcCh0cnVlLCAibmFtZSIsICJhZ2UiKSwKKyAgICAgICAgICAgICAgICBfXy52YWx1ZU1hcCgpLndpdGgoV2l0aE9wdGlvbnMudG9rZW5zKSwKKyAgICAgICAgICAgICAgICBfXy52YWx1ZU1hcCgibmFtZSIpLndpdGgoV2l0aE9wdGlvbnMudG9rZW5zKSwKKyAgICAgICAgICAgICAgICBfXy52YWx1ZU1hcCgiYWdlIikud2l0aChXaXRoT3B0aW9ucy50b2tlbnMpLAorICAgICAgICAgICAgICAgIF9fLnZhbHVlTWFwKCJuYW1lIiwgImFnZSIpLndpdGgoV2l0aE9wdGlvbnMudG9rZW5zKSwKKyAgICAgICAgICAgICAgICBfXy52YWx1ZU1hcCgibmFtZSIsICJhZ2UiKS53aXRoKFdpdGhPcHRpb25zLnRva2VucywgV2l0aE9wdGlvbnMuaWRzKSwKKyAgICAgICAgICAgICAgICBfXy52YWx1ZU1hcCgibmFtZSIsICJhZ2UiKS53aXRoKFdpdGhPcHRpb25zLnRva2VucywgV2l0aE9wdGlvbnMubGFiZWxzKSwKICAgICAgICAgICAgICAgICBfXy5wcm9wZXJ0eU1hcCgpLAogICAgICAgICAgICAgICAgIF9fLnByb3BlcnR5TWFwKCJuYW1lIiksCiAgICAgICAgICAgICAgICAgX18ucHJvcGVydHlNYXAoImFnZSIpLApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL0Nvbm5lY3RpdmVTdHJhdGVneVRlc3QuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9Db25uZWN0aXZlU3RyYXRlZ3lUZXN0LmphdmEKaW5kZXggNDdiZWU2YS4uMTNjY2Q4MCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL0Nvbm5lY3RpdmVTdHJhdGVneVRlc3QuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vQ29ubmVjdGl2ZVN0cmF0ZWd5VGVzdC5qYXZhCkBAIC0yOCw2ICsyOCw5IEBACiAKIGltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOwogCitpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLl9fLlY7CitpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLl9fLmZpbHRlcjsKK2ltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX18uaGFzOwogaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydEVxdWFsczsKIAogLyoqCkBAIC01OCw2ICs2MSw3IEBACiAgICAgQFBhcmFtZXRlcml6ZWQuUGFyYW1ldGVycyhuYW1lID0gInswfSIpCiAgICAgcHVibGljIHN0YXRpYyBJdGVyYWJsZTxPYmplY3RbXT4gZ2VuZXJhdGVUZXN0UGFyYW1ldGVycygpIHsKICAgICAgICAgcmV0dXJuIEFycmF5cy5hc0xpc3QobmV3IFRyYXZlcnNhbFtdW117CisgICAgICAgICAgICAgICAge19fLmhhcygibmFtZSIsICJtYXJrbyIpLmFuZCgpLmhhcygibmFtZSIsICJtYXJrbyIpLmFuZCgpLmhhcygibmFtZSIsICJtYXJrbyIpLCBfXy5hbmQoaGFzKCJuYW1lIiwgIm1hcmtvIiksIF9fLmhhcygibmFtZSIsICJtYXJrbyIpLCBfXy5oYXMoIm5hbWUiLCAibWFya28iKSl9LAogICAgICAgICAgICAgICAgIHtfXy5oYXMoIm5hbWUiLCAic3RlcGhlbiIpLm9yKCkud2hlcmUoX18ub3V0KCJrbm93cyIpLmhhcygibmFtZSIsICJzdGVwaGVuIikpLCBfXy5vcihfXy5oYXMoIm5hbWUiLCAic3RlcGhlbiIpLCBfXy53aGVyZShfXy5vdXQoImtub3dzIikuaGFzKCJuYW1lIiwgInN0ZXBoZW4iKSkpfSwKICAgICAgICAgICAgICAgICB7X18ub3V0KCJhIikub3V0KCJiIikuYW5kKCkub3V0KCJjIikub3IoKS5vdXQoImQiKSwgX18ub3IoX18uYW5kKF9fLm91dCgiYSIpLm91dCgiYiIpLCBfXy5vdXQoImMiKSksIF9fLm91dCgiZCIpKX0sCiAgICAgICAgICAgICAgICAge19fLmFzKCIxIikub3V0KCJhIikub3V0KCJiIikuYXMoIjIiKS5hbmQoKS5hcygiMyIpLm91dCgiYyIpLmFzKCI0Iikub3IoKS5hcygiNSIpLm91dCgiZCIpLmFzKCI2IiksIF9fLm9yKF9fLmFuZChfXy5hcygiMSIpLm91dCgiYSIpLm91dCgiYiIpLmFzKCIyIiksIF9fLmFzKCIzIikub3V0KCJjIikuYXMoIjQiKSksIF9fLmFzKCI1Iikub3V0KCJkIikuYXMoIjYiKSl9LApAQCAtODMsNDMgKzg3LDI0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFWFBFQ1Q6CiAgICAgICAgICAgICAgICAgICAgICAgICBfXy5vcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX18uYXMoImExIikub3V0KCJhIikuYXMoImEyIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fLm9yKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fLmFuZCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fLmFzKCJiMSIpLm91dCgiYiIpLmFzKCJiMiIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX18uYXMoImMxIikub3V0KCJjIikuYXMoImMyIikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fLm9yKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX18uYXMoImQxIikub3V0KCJkIikuYXMoImQyIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fLmFuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfXy5hcygiYjEiKS5vdXQoImIiKS5hcygiYjIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfXy5hcygiYzEiKS5vdXQoImMiKS5hcygiYzIiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fLmFzKCJkMSIpLm91dCgiZCIpLmFzKCJkMiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfXy5hbmQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX18uYXMoImUxIikub3V0KCJlIikuYXMoImUyIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX18uYXMoImYxIikub3V0KCJmIikuYXMoImYyIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX18uYXMoImcxIikub3V0KCJnIikuYXMoImcyIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfXy5hbmQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX18uYXMoImgxIikub3V0KCJoIikuYXMoImgyIikub3IoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfXy5vcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX18uYXMoImkxIikub3V0KCJpIikuYXMoImkyIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fLmFuZCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfXy5hcygiZTEiKS5vdXQoImUiKS5hcygiZTIiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfXy5hbmQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfXy5hcygiZjEiKS5vdXQoImYiKS5hcygiZjIiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fLmFzKCJnMSIpLm91dCgiZyIpLmFzKCJnMiIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfXy5hbmQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX18uYXMoImgxIikub3V0KCJoIikuYXMoImgyIikub3IoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfXy5vcigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX18uYXMoImkxIikub3V0KCJpIikuYXMoImkyIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fLmFuZCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfXy5hcygiajEiKS5vdXQoImoiKS5hcygiajIiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfXy5hcygiazEiKS5vdXQoImsiKS5hcygiazIiKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfXy5hbmQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfXy5hcygibDEiKS5vdXQoImwiKS5hcygibDIiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fLmFuZCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX18uYXMoIm0xIikub3V0KCJtIikuYXMoIm0yIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fLmFzKCJuMSIpLm91dCgibiIpLmFzKCJuMiIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX18uYXMoImoxIikub3V0KCJqIikuYXMoImoyIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX18uYXMoImsxIikub3V0KCJrIikuYXMoImsyIikpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fLmFzKCJsMSIpLm91dCgibCIpLmFzKCJsMiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfXy5hcygibTEiKS5vdXQoIm0iKS5hcygibTIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX18uYXMoIm4xIikub3V0KCJuIikuYXMoIm4yIikpKQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL0V2ZW50U3RyYXRlZ3lUZXN0LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vRXZlbnRTdHJhdGVneVRlc3QuamF2YQppbmRleCAyN2Q5YjdlLi45MTFlZjQxIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vRXZlbnRTdHJhdGVneVRlc3QuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vRXZlbnRTdHJhdGVneVRlc3QuamF2YQpAQCAtMjMsNyArMjMsNiBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5NdXRhdGluZzsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5ldmVudC5Db25zb2xlTXV0YXRpb25MaXN0ZW5lcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5ldmVudC5NdXRhdGlvbkxpc3RlbmVyOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkRpcmVjdGlvbjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLmVtcHR5LkVtcHR5R3JhcGg7CiBpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CiBpbXBvcnQgb3JnLmp1bml0LnJ1bm5lci5SdW5XaXRoOwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL09wdGlvbnNTdHJhdGVneVRlc3QuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9PcHRpb25zU3RyYXRlZ3lUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzI1YzM5ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9PcHRpb25zU3RyYXRlZ3lUZXN0LmphdmEKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuZGVjb3JhdGlvbjsKKworaW1wb3J0IG9yZy5qdW5pdC5UZXN0OworCitpbXBvcnQgc3RhdGljIG9yZy5oYW1jcmVzdC5jb3JlLklzLmlzOworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydEVxdWFsczsKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRUaGF0OworCisvKioKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqLworcHVibGljIGNsYXNzIE9wdGlvbnNTdHJhdGVneVRlc3QgeworCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRDcmVhdGVPcHRpb25zU3RyYXRlZ3koKSB7CisgICAgICAgIGZpbmFsIE9wdGlvbnNTdHJhdGVneSBzdHJhdGVneSA9IE9wdGlvbnNTdHJhdGVneS5idWlsZCgpLndpdGgoImEiLCAidGVzdCIpLndpdGgoImIiKS5jcmVhdGUoKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKCJ0ZXN0Iiwgc3RyYXRlZ3kuZ2V0T3B0aW9ucygpLmdldCgiYSIpKTsKKyAgICAgICAgYXNzZXJ0VGhhdChzdHJhdGVneS5nZXRPcHRpb25zKCkuZ2V0KCJiIiksIGlzKHRydWUpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZEhhdmVOb0VudHJpZXNJbkVtcHR5T3B0aW9uc1N0cmF0ZWd5KCkgeworICAgICAgICBhc3NlcnRUaGF0KE9wdGlvbnNTdHJhdGVneS5FTVBUWS5nZXRPcHRpb25zKCkuaXNFbXB0eSgpLCBpcyh0cnVlKSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL1BhcnRpdGlvblN0cmF0ZWd5VGVzdC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL1BhcnRpdGlvblN0cmF0ZWd5VGVzdC5qYXZhCmluZGV4IDhjYThlM2EuLjA3MTcwNmEgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9QYXJ0aXRpb25TdHJhdGVneVRlc3QuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vUGFydGl0aW9uU3RyYXRlZ3lUZXN0LmphdmEKQEAgLTM3LDcgKzM3LDcgQEAKICAgICBAVGVzdAogICAgIHB1YmxpYyB2b2lkIHNob3VsZENvbnN0cnVjdFBhcnRpdGlvblN0cmF0ZWd5KCkgewogICAgICAgICBmaW5hbCBQYXJ0aXRpb25TdHJhdGVneSBzdHJhdGVneSA9IFBhcnRpdGlvblN0cmF0ZWd5LmJ1aWxkKCkKLSAgICAgICAgICAgICAgICAucGFydGl0aW9uS2V5KCJwIikud3JpdGVQYXJ0aXRpb24oImEiKS5hZGRSZWFkUGFydGl0aW9uKCJhIikuY3JlYXRlKCk7CisgICAgICAgICAgICAgICAgLnBhcnRpdGlvbktleSgicCIpLndyaXRlUGFydGl0aW9uKCJhIikucmVhZFBhcnRpdGlvbnMoImEiKS5jcmVhdGUoKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKCJhIiwgc3RyYXRlZ3kuZ2V0UmVhZFBhcnRpdGlvbnMoKS5pdGVyYXRvcigpLm5leHQoKSk7CiAgICAgICAgIGFzc2VydEVxdWFscygxLCBzdHJhdGVneS5nZXRSZWFkUGFydGl0aW9ucygpLnNpemUoKSk7CiAgICAgICAgIGFzc2VydEVxdWFscygicCIsIHN0cmF0ZWd5LmdldFBhcnRpdGlvbktleSgpKTsKQEAgLTQ3LDkgKzQ3LDkgQEAKICAgICBwdWJsaWMgdm9pZCBzaG91bGRDb25zdHJ1Y3RQYXJ0aXRpb25TdHJhdGVneVdpdGhNdWx0aXBsZVJlYWRQYXJ0aXRpb25zKCkgewogICAgICAgICBmaW5hbCBQYXJ0aXRpb25TdHJhdGVneSBzdHJhdGVneSA9IFBhcnRpdGlvblN0cmF0ZWd5LmJ1aWxkKCkKICAgICAgICAgICAgICAgICAucGFydGl0aW9uS2V5KCJwIikud3JpdGVQYXJ0aXRpb24oImEiKQotICAgICAgICAgICAgICAgIC5hZGRSZWFkUGFydGl0aW9uKCJhIikKLSAgICAgICAgICAgICAgICAuYWRkUmVhZFBhcnRpdGlvbigiYiIpCi0gICAgICAgICAgICAgICAgLmFkZFJlYWRQYXJ0aXRpb24oImMiKS5jcmVhdGUoKTsKKyAgICAgICAgICAgICAgICAucmVhZFBhcnRpdGlvbnMoImEiKQorICAgICAgICAgICAgICAgIC5yZWFkUGFydGl0aW9ucygiYiIpCisgICAgICAgICAgICAgICAgLnJlYWRQYXJ0aXRpb25zKCJjIikuY3JlYXRlKCk7CiAKICAgICAgICAgYXNzZXJ0VHJ1ZShJdGVyYXRvclV0aWxzLmFzTGlzdChzdHJhdGVneS5nZXRSZWFkUGFydGl0aW9ucygpLml0ZXJhdG9yKCkpLmNvbnRhaW5zKCJhIikpOwogICAgICAgICBhc3NlcnRUcnVlKEl0ZXJhdG9yVXRpbHMuYXNMaXN0KHN0cmF0ZWd5LmdldFJlYWRQYXJ0aXRpb25zKCkuaXRlcmF0b3IoKSkuY29udGFpbnMoImIiKSk7CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vUGFydGl0aW9uU3RyYXRlZ3lUcmF2ZXJzZVRlc3QuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9QYXJ0aXRpb25TdHJhdGVneVRyYXZlcnNlVGVzdC5qYXZhCmluZGV4IGE4ZjgwOWEuLmMxMzcwOTkgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9QYXJ0aXRpb25TdHJhdGVneVRyYXZlcnNlVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9QYXJ0aXRpb25TdHJhdGVneVRyYXZlcnNlVGVzdC5qYXZhCkBAIC05Niw3ICs5Niw3IEBACiAgICAgQFRlc3QKICAgICBwdWJsaWMgdm9pZCBzaG91bGRJbmNsdWRlQWRkaXRpb25hbEhhc1N0ZXBzQW5kQXBwZW5kUGFydGl0aW9uT25NdXRhdGluZ1N0ZXBzKCkgewogICAgICAgICBmaW5hbCBQYXJ0aXRpb25TdHJhdGVneSBzdHJhdGVneSA9IFBhcnRpdGlvblN0cmF0ZWd5LmJ1aWxkKCkKLSAgICAgICAgICAgICAgICAucGFydGl0aW9uS2V5KCJwIikud3JpdGVQYXJ0aXRpb24oImEiKS5hZGRSZWFkUGFydGl0aW9uKCJhIikuY3JlYXRlKCk7CisgICAgICAgICAgICAgICAgLnBhcnRpdGlvbktleSgicCIpLndyaXRlUGFydGl0aW9uKCJhIikucmVhZFBhcnRpdGlvbnMoImEiKS5jcmVhdGUoKTsKIAogICAgICAgICBpZiAoaGFzTXV0YXRpbmdTdGVwKSB7CiAgICAgICAgICAgICBpZiAoVHJhdmVyc2FsSGVscGVyLmhhc1N0ZXBPZkFzc2lnbmFibGVDbGFzcyhBZGRFZGdlU3RlcC5jbGFzcywgdHJhdmVyc2FsLmFzQWRtaW4oKSkpIHsKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9SZWZlcmVuY2VFbGVtZW50U3RyYXRlZ3lUZXN0LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vUmVmZXJlbmNlRWxlbWVudFN0cmF0ZWd5VGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjNGVjNTIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vUmVmZXJlbmNlRWxlbWVudFN0cmF0ZWd5VGVzdC5qYXZhCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb247CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5HcmFwaFRyYXZlcnNhbFNvdXJjZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmZpbmFsaXphdGlvbi5SZWZlcmVuY2VFbGVtZW50U3RyYXRlZ3k7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLlRyYXZlcnNhbEhlbHBlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5lbXB0eS5FbXB0eUdyYXBoOworaW1wb3J0IG9yZy5qdW5pdC5UZXN0OworCitpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuQW5vbnltb3VzVHJhdmVyc2FsU291cmNlLnRyYXZlcnNhbDsKK2ltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX18uaW47CitpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLl9fLm91dDsKK2ltcG9ydCBzdGF0aWMgb3JnLmhhbWNyZXN0Lk1hdGNoZXJBc3NlcnQuYXNzZXJ0VGhhdDsKK2ltcG9ydCBzdGF0aWMgb3JnLmhhbWNyZXN0LmNvcmUuSXMuaXM7CitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOworCisvKioKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqLworcHVibGljIGNsYXNzIFJlZmVyZW5jZUVsZW1lbnRTdHJhdGVneVRlc3QgeworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgR3JhcGhUcmF2ZXJzYWxTb3VyY2UgZyA9IHRyYXZlcnNhbCgpLndpdGhHcmFwaChFbXB0eUdyYXBoLmluc3RhbmNlKCkpLgorICAgICAgICAgICAgd2l0aFN0cmF0ZWdpZXMoUmVmZXJlbmNlRWxlbWVudFN0cmF0ZWd5Lmluc3RhbmNlKCkpOworCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRBcHBlbmRPbmVSZWZlcmVuY2VFbGVtZW50U3RlcCgpIHsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgPz4gdCA9IGcuVigpLnVuaW9uKG91dCgpLCBpbigpKS5ncm91cENvdW50KCk7CisgICAgICAgIHQuYXNBZG1pbigpLmFwcGx5U3RyYXRlZ2llcygpOworICAgICAgICBhc3NlcnRUaGF0KCh0LmFzQWRtaW4oKS5nZXRFbmRTdGVwKCkgaW5zdGFuY2VvZiBSZWZlcmVuY2VFbGVtZW50U3RyYXRlZ3kuUmVmZXJlbmNlRWxlbWVudFN0ZXApLCBpcyh0cnVlKSk7CisgICAgICAgIGFzc2VydEVxdWFscygxLCBUcmF2ZXJzYWxIZWxwZXIuZ2V0U3RlcHNPZkFzc2lnbmFibGVDbGFzcyhSZWZlcmVuY2VFbGVtZW50U3RyYXRlZ3kuUmVmZXJlbmNlRWxlbWVudFN0ZXAuY2xhc3MsIHQuYXNBZG1pbigpKS5zaXplKCkpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9TdWJncmFwaFN0cmF0ZWd5VHJhdmVyc2VUZXN0LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vU3ViZ3JhcGhTdHJhdGVneVRyYXZlcnNlVGVzdC5qYXZhCmluZGV4IGMwNzc4ZTAuLmFkNTY4NmUgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9TdWJncmFwaFN0cmF0ZWd5VHJhdmVyc2VUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL1N1YmdyYXBoU3RyYXRlZ3lUcmF2ZXJzZVRlc3QuamF2YQpAQCAtOTEsNyArOTEsNyBAQAogCiAgICAgQFRlc3QKICAgICBwdWJsaWMgdm9pZCBzaG91bGRTdWJncmFwaCgpIHsKLSAgICAgICAgZmluYWwgU3ViZ3JhcGhTdHJhdGVneSBzdHJhdGVneSA9IFN1YmdyYXBoU3RyYXRlZ3kuYnVpbGQoKS5lZGdlQ3JpdGVyaW9uKF9fLmlkZW50aXR5KCkpLnZlcnRleENyaXRlcmlvbihfXy5pZGVudGl0eSgpKS5jcmVhdGUoKTsKKyAgICAgICAgZmluYWwgU3ViZ3JhcGhTdHJhdGVneSBzdHJhdGVneSA9IFN1YmdyYXBoU3RyYXRlZ3kuYnVpbGQoKS5lZGdlcyhfXy5pZGVudGl0eSgpKS52ZXJ0aWNlcyhfXy5pZGVudGl0eSgpKS5jcmVhdGUoKTsKICAgICAgICAgc3RyYXRlZ3kuYXBwbHkodHJhdmVyc2FsLmFzQWRtaW4oKSk7CiAKICAgICAgICAgZmluYWwgTGlzdDxUcmF2ZXJzYWxGaWx0ZXJTdGVwPiBzdGVwcyA9IFRyYXZlcnNhbEhlbHBlci5nZXRTdGVwc09mQ2xhc3MoVHJhdmVyc2FsRmlsdGVyU3RlcC5jbGFzcywgdHJhdmVyc2FsLmFzQWRtaW4oKSk7CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vVmVydGV4UHJvZ3JhbVN0cmF0ZWd5VGVzdC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL1ZlcnRleFByb2dyYW1TdHJhdGVneVRlc3QuamF2YQppbmRleCBjMDkxYmIzLi44Y2VlZjQ4IDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vVmVydGV4UHJvZ3JhbVN0cmF0ZWd5VGVzdC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9WZXJ0ZXhQcm9ncmFtU3RyYXRlZ3lUZXN0LmphdmEKQEAgLTMyLDYgKzMyLDcgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LnZlcmlmaWNhdGlvbi5Db21wdXRlclZlcmlmaWNhdGlvblN0cmF0ZWd5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5EZWZhdWx0VHJhdmVyc2FsU3RyYXRlZ2llczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuRW1wdHlUcmF2ZXJzYWw7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5lbXB0eS5FbXB0eUdyYXBoOwogaW1wb3J0IG9yZy5qdW5pdC5UZXN0OwogaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXIuUnVuV2l0aDsKIGltcG9ydCBvcmcuanVuaXQucnVubmVycy5QYXJhbWV0ZXJpemVkOwpAQCAtNjYsNyArNjcsNiBAQAogICAgIHB1YmxpYyBzdGF0aWMgSXRlcmFibGU8T2JqZWN0W10+IGdlbmVyYXRlVGVzdFBhcmFtZXRlcnMoKSB7CiAKICAgICAgICAgZmluYWwgQ29tcHV0ZXJSZXN1bHRTdGVwIGNvbXB1dGVyUmVzdWx0U3RlcCA9IG5ldyBDb21wdXRlclJlc3VsdFN0ZXAoRW1wdHlUcmF2ZXJzYWwuaW5zdGFuY2UoKSk7Ci0KICAgICAgICAgcmV0dXJuIEFycmF5cy5hc0xpc3QobmV3IFRyYXZlcnNhbFtdW117CiAgICAgICAgICAgICAgICAge19fLlYoKS5vdXQoKS5jb3VudCgpLCBzdGFydCgpLmFkZFN0ZXAodHJhdmVyc2FsKF9fLlYoKS5vdXQoKS5jb3VudCgpKSkuYWRkU3RlcChjb21wdXRlclJlc3VsdFN0ZXApfSwKICAgICAgICAgICAgICAgICB7X18uVigpLnBhZ2VSYW5rKCkub3V0KCkuY291bnQoKSwgc3RhcnQoKS5wYWdlUmFuaygpLmFzQWRtaW4oKS5hZGRTdGVwKHRyYXZlcnNhbChfXy5WKCkub3V0KCkuY291bnQoKSkpLmFkZFN0ZXAoY29tcHV0ZXJSZXN1bHRTdGVwKX0sCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L29wdGltaXphdGlvbi9JbmxpbmVGaWx0ZXJTdHJhdGVneVRlc3QuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvb3B0aW1pemF0aW9uL0lubGluZUZpbHRlclN0cmF0ZWd5VGVzdC5qYXZhCmluZGV4IDZmZmZlZjAuLmNmNTRmNTAgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvb3B0aW1pemF0aW9uL0lubGluZUZpbHRlclN0cmF0ZWd5VGVzdC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvb3B0aW1pemF0aW9uL0lubGluZUZpbHRlclN0cmF0ZWd5VGVzdC5qYXZhCkBAIC0yMiwyMCArMjIsMjcgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWxTdHJhdGVnaWVzOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsU3RyYXRlZ3k7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguR3JhcGhUcmF2ZXJzYWw7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX187CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLmZpbHRlci5IYXNTdGVwOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLkhhc0NvbnRhaW5lcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uQ29ubmVjdGl2ZVN0cmF0ZWd5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5EZWZhdWx0VHJhdmVyc2FsU3RyYXRlZ2llczsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuRW1wdHlUcmF2ZXJzYWw7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLmVtcHR5LkVtcHR5R3JhcGg7CiBpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CiBpbXBvcnQgb3JnLmp1bml0LnJ1bm5lci5SdW5XaXRoOwogaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXJzLlBhcmFtZXRlcml6ZWQ7CiAKIGltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKIAogaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlAuZXE7CiBpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUC5ndDsKK2ltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QLmluc2lkZTsKIGltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QLmx0OwogaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5fXy5WOwogaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5fXy5hbmQ7CkBAIC01Niw4ICs2Myw2IEBACiAvKioKICAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQogICovCi0KLQogQFJ1bldpdGgoUGFyYW1ldGVyaXplZC5jbGFzcykKIHB1YmxpYyBjbGFzcyBJbmxpbmVGaWx0ZXJTdHJhdGVneVRlc3QgewogCkBAIC02NywxMCArNzIsMTYgQEAKICAgICBAUGFyYW1ldGVyaXplZC5QYXJhbWV0ZXIodmFsdWUgPSAxKQogICAgIHB1YmxpYyBUcmF2ZXJzYWwgb3B0aW1pemVkOwogCisgICAgQFBhcmFtZXRlcml6ZWQuUGFyYW1ldGVyKHZhbHVlID0gMikKKyAgICBwdWJsaWMgTGlzdDxUcmF2ZXJzYWxTdHJhdGVneT4gZXh0cmFzOworCiAgICAgQFRlc3QKICAgICBwdWJsaWMgdm9pZCBkb1Rlc3QoKSB7CiAgICAgICAgIGZpbmFsIFRyYXZlcnNhbFN0cmF0ZWdpZXMgc3RyYXRlZ2llcyA9IG5ldyBEZWZhdWx0VHJhdmVyc2FsU3RyYXRlZ2llcygpOwogICAgICAgICBzdHJhdGVnaWVzLmFkZFN0cmF0ZWdpZXMoSW5saW5lRmlsdGVyU3RyYXRlZ3kuaW5zdGFuY2UoKSk7CisKKyAgICAgICAgZXh0cmFzLmZvckVhY2goc3RyYXRlZ2llczo6YWRkU3RyYXRlZ2llcyk7CisKICAgICAgICAgdGhpcy5vcmlnaW5hbC5hc0FkbWluKCkuc2V0U3RyYXRlZ2llcyhzdHJhdGVnaWVzKTsKICAgICAgICAgdGhpcy5vcmlnaW5hbC5hc0FkbWluKCkuYXBwbHlTdHJhdGVnaWVzKCk7CiAgICAgICAgIGFzc2VydEVxdWFscyh0aGlzLm9wdGltaXplZCwgdGhpcy5vcmlnaW5hbCk7CkBAIC03OSw1NyArOTAsNjcgQEAKICAgICBAUGFyYW1ldGVyaXplZC5QYXJhbWV0ZXJzKG5hbWUgPSAiezB9IikKICAgICBwdWJsaWMgc3RhdGljIEl0ZXJhYmxlPE9iamVjdFtdPiBnZW5lcmF0ZVRlc3RQYXJhbWV0ZXJzKCkgewogCi0gICAgICAgIHJldHVybiBBcnJheXMuYXNMaXN0KG5ldyBUcmF2ZXJzYWxbXVtdewotICAgICAgICAgICAgICAgIHtoYXMoImFnZSIsIDEwKS5hcygiYSIpLmhhcygibmFtZSIsICJtYXJrbyIpLmFzKCJiIikuY29pbigwLjUpLmFzKCJjIiksIGFkZEhhcyhfXy5zdGFydCgpLCAiYWdlIiwgZXEoMTApLCAibmFtZSIsIGVxKCJtYXJrbyIpKS5hcygiYSIsICJiIikuY29pbigwLjUpLmFzKCJjIil9LAorICAgICAgICByZXR1cm4gQXJyYXlzLmFzTGlzdChuZXcgT2JqZWN0W11bXXsKKyAgICAgICAgICAgICAgICB7aGFzKCJhZ2UiLCAxMCkuYXMoImEiKS5oYXMoIm5hbWUiLCAibWFya28iKS5hcygiYiIpLmNvaW4oMC41KS5hcygiYyIpLCBhZGRIYXMoX18uc3RhcnQoKSwgImFnZSIsIGVxKDEwKSwgIm5hbWUiLCBlcSgibWFya28iKSkuYXMoImEiLCAiYiIpLmNvaW4oMC41KS5hcygiYyIpLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKX0sCiAgICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgICB7ZmlsdGVyKG91dCgia25vd3MiKSksIGZpbHRlcihvdXQoImtub3dzIikpfSwKLSAgICAgICAgICAgICAgICB7ZmlsdGVyKGhhcygiYWdlIiwgZ3QoMTApKSkuYXMoImEiKSwgaGFzKCJhZ2UiLCBndCgxMCkpLmFzKCJhIil9LAotICAgICAgICAgICAgICAgIHtmaWx0ZXIoaGFzKCJhZ2UiLCBndCgxMCkpLmFzKCJiIikpLmFzKCJhIiksIGhhcygiYWdlIiwgZ3QoMTApKS5hcygiYiIsICJhIil9LAotICAgICAgICAgICAgICAgIHtmaWx0ZXIoaGFzKCJhZ2UiLCBndCgxMCkpLmFzKCJhIikpLCBoYXMoImFnZSIsIGd0KDEwKSkuYXMoImEiKX0sCi0gICAgICAgICAgICAgICAge2ZpbHRlcihhbmQoaGFzKCJhZ2UiLCBndCgxMCkpLmFzKCJhIiksIGhhcygibmFtZSIsICJtYXJrbyIpKSksIGFkZEhhcyhfXy5zdGFydCgpLCAiYWdlIiwgZ3QoMTApLCAibmFtZSIsIGVxKCJtYXJrbyIpKS5hcygiYSIpfSwKKyAgICAgICAgICAgICAgICB7ZmlsdGVyKG91dCgia25vd3MiKSksIGZpbHRlcihvdXQoImtub3dzIikpLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKX0sCisgICAgICAgICAgICAgICAge2ZpbHRlcihoYXMoImFnZSIsIGd0KDEwKSkpLmFzKCJhIiksIGhhcygiYWdlIiwgZ3QoMTApKS5hcygiYSIpLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKX0sCisgICAgICAgICAgICAgICAge2ZpbHRlcihoYXMoImFnZSIsIGd0KDEwKSkuYXMoImIiKSkuYXMoImEiKSwgaGFzKCJhZ2UiLCBndCgxMCkpLmFzKCJiIiwgImEiKSwgQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCl9LAorICAgICAgICAgICAgICAgIHtmaWx0ZXIoaGFzKCJhZ2UiLCBndCgxMCkpLmFzKCJhIikpLCBoYXMoImFnZSIsIGd0KDEwKSkuYXMoImEiKSwgQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCl9LAorICAgICAgICAgICAgICAgIHtmaWx0ZXIoYW5kKGhhcygiYWdlIiwgZ3QoMTApKS5hcygiYSIpLCBoYXMoIm5hbWUiLCAibWFya28iKSkpLCBhZGRIYXMoX18uc3RhcnQoKSwgImFnZSIsIGd0KDEwKSwgIm5hbWUiLCBlcSgibWFya28iKSkuYXMoImEiKSwgQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCl9LAorICAgICAgICAgICAgICAgIHtmaWx0ZXIob3V0KCJjcmVhdGVkIikuYW5kKCkub3V0KCJrbm93cyIpLm9yKCkuaW4oImtub3dzIikpLCBmaWx0ZXIob3IoYW5kKG91dCgiY3JlYXRlZCIpLCBvdXQoImtub3dzIikpLCBfXy5pbigia25vd3MiKSkpLCBDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KENvbm5lY3RpdmVTdHJhdGVneS5pbnN0YW5jZSgpKX0sCiAgICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgICB7b3IoaGFzKCJuYW1lIiwgIm1hcmtvIiksIGhhcygiYWdlIiwgMzIpKSwgb3IoaGFzKCJuYW1lIiwgIm1hcmtvIiksIGhhcygiYWdlIiwgMzIpKX0sCi0gICAgICAgICAgICAgICAge29yKGhhcygibmFtZSIsICJtYXJrbyIpLCBoYXMoIm5hbWUiLCAiYm9iIikpLCBoYXMoIm5hbWUiLCBlcSgibWFya28iKS5vcihlcSgiYm9iIikpKX0sCi0gICAgICAgICAgICAgICAge29yKGhhcygibmFtZSIsICJtYXJrbyIpLCBoYXMoIm5hbWUiKSksIG9yKGhhcygibmFtZSIsICJtYXJrbyIpLCBoYXMoIm5hbWUiKSl9LAotICAgICAgICAgICAgICAgIHtvcihoYXMoImFnZSIsIDEwKSwgYW5kKGhhcygiYWdlIiwgZ3QoMjApKSwgaGFzKCJhZ2UiLCBsdCgxMDApKSkpLCBoYXMoImFnZSIsIGVxKDEwKS5vcihndCgyMCkuYW5kKGx0KDEwMCkpKSl9LAotICAgICAgICAgICAgICAgIHtvcihoYXMoIm5hbWUiLCAibWFya28iKSwgZmlsdGVyKGhhcygibmFtZSIsICJib2IiKSkpLCBoYXMoIm5hbWUiLCBlcSgibWFya28iKS5vcihlcSgiYm9iIikpKX0sCi0gICAgICAgICAgICAgICAge29yKGhhcygibmFtZSIsICJtYXJrbyIpLCBmaWx0ZXIob3IoZmlsdGVyKGhhcygibmFtZSIsICJib2IiKSksIGhhcygibmFtZSIsICJzdGVwaGVuIikpKSksIGhhcygibmFtZSIsIGVxKCJtYXJrbyIpLm9yKGVxKCJib2IiKS5vcihlcSgic3RlcGhlbiIpKSkpfSwKLSAgICAgICAgICAgICAgICB7b3IoaGFzKCJuYW1lIiwgIm1hcmtvIikuYXMoImEiKSwgZmlsdGVyKG9yKGZpbHRlcihoYXMoIm5hbWUiLCAiYm9iIikpLmFzKCJiIiksIGhhcygibmFtZSIsICJzdGVwaGVuIikuYXMoImMiKSkpKSwgaGFzKCJuYW1lIiwgZXEoIm1hcmtvIikub3IoZXEoImJvYiIpLm9yKGVxKCJzdGVwaGVuIikpKSkuYXMoImEiLCAiYiIsICJjIil9LAotICAgICAgICAgICAgICAgIHtvcihhbmQoaGFzKCJhZ2UiLGd0KDIwKSksIGhhcygiYWdlIixsdCgzMCkpKSwgYW5kKGhhcygiYWdlIixndCgzNSkpLCBoYXMoImFnZSIsbHQoNDApKSkpLCBoYXMoImFnZSIsIGd0KDIwKS5hbmQobHQoMzApKS5vcihndCgzNSkuYW5kKGx0KDQwKSkpKX0sCisgICAgICAgICAgICAgICAge29yKGhhcygibmFtZSIsICJtYXJrbyIpLCBoYXMoImFnZSIsIDMyKSksIG9yKGhhcygibmFtZSIsICJtYXJrbyIpLCBoYXMoImFnZSIsIDMyKSksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKKyAgICAgICAgICAgICAgICB7b3IoaGFzKCJuYW1lIiwgIm1hcmtvIiksIGhhcygibmFtZSIsICJib2IiKSksIGhhcygibmFtZSIsIGVxKCJtYXJrbyIpLm9yKGVxKCJib2IiKSkpLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKX0sCisgICAgICAgICAgICAgICAge29yKGhhcygibmFtZSIsICJtYXJrbyIpLCBoYXMoIm5hbWUiKSksIG9yKGhhcygibmFtZSIsICJtYXJrbyIpLCBoYXMoIm5hbWUiKSksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKKyAgICAgICAgICAgICAgICB7b3IoaGFzKCJhZ2UiLCAxMCksIGFuZChoYXMoImFnZSIsIGd0KDIwKSksIGhhcygiYWdlIiwgbHQoMTAwKSkpKSwgaGFzKCJhZ2UiLCBlcSgxMCkub3IoZ3QoMjApLmFuZChsdCgxMDApKSkpLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKX0sCisgICAgICAgICAgICAgICAge29yKGhhcygibmFtZSIsICJtYXJrbyIpLCBmaWx0ZXIoaGFzKCJuYW1lIiwgImJvYiIpKSksIGhhcygibmFtZSIsIGVxKCJtYXJrbyIpLm9yKGVxKCJib2IiKSkpLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKX0sCisgICAgICAgICAgICAgICAge29yKGhhcygibmFtZSIsICJtYXJrbyIpLCBmaWx0ZXIob3IoZmlsdGVyKGhhcygibmFtZSIsICJib2IiKSksIGhhcygibmFtZSIsICJzdGVwaGVuIikpKSksIGhhcygibmFtZSIsIGVxKCJtYXJrbyIpLm9yKGVxKCJib2IiKS5vcihlcSgic3RlcGhlbiIpKSkpLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKX0sCisgICAgICAgICAgICAgICAge29yKGhhcygibmFtZSIsICJtYXJrbyIpLmFzKCJhIiksIGZpbHRlcihvcihmaWx0ZXIoaGFzKCJuYW1lIiwgImJvYiIpKS5hcygiYiIpLCBoYXMoIm5hbWUiLCAic3RlcGhlbiIpLmFzKCJjIikpKSksIGhhcygibmFtZSIsIGVxKCJtYXJrbyIpLm9yKGVxKCJib2IiKS5vcihlcSgic3RlcGhlbiIpKSkpLmFzKCJhIiwgImIiLCAiYyIpLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKX0sCisgICAgICAgICAgICAgICAge29yKGFuZChoYXMoImFnZSIsZ3QoMjApKSwgaGFzKCJhZ2UiLGx0KDMwKSkpLCBhbmQoaGFzKCJhZ2UiLGd0KDM1KSksIGhhcygiYWdlIixsdCg0MCkpKSksIGhhcygiYWdlIiwgZ3QoMjApLmFuZChsdCgzMCkpLm9yKGd0KDM1KS5hbmQobHQoNDApKSkpLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKX0sCiAgICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgICB7YW5kKGhhcygiYWdlIiwgZ3QoMTApKSwgZmlsdGVyKGhhcygiYWdlIiwgMjIpKSksIGFkZEhhcyhfXy5zdGFydCgpLCAiYWdlIiwgZ3QoMTApLCAiYWdlIiwgZXEoMjIpKX0sCi0gICAgICAgICAgICAgICAge2FuZChoYXMoImFnZSIsIGd0KDEwKSkuYXMoImEiKSwgZmlsdGVyKGhhcygiYWdlIiwgMjIpLmFzKCJiIikpLmFzKCJjIikpLmFzKCJkIiksIGFkZEhhcyhfXy5zdGFydCgpLCAiYWdlIiwgZ3QoMTApLCAiYWdlIiwgZXEoMjIpKS5hcygiYSIsICJiIiwgImMiLCAiZCIpfSwKLSAgICAgICAgICAgICAgICB7YW5kKGhhcygiYWdlIiwgZ3QoMTApKS5hcygiYSIpLCBhbmQoZmlsdGVyKGhhcygiYWdlIiwgMjIpLmFzKCJiIikpLmFzKCJjIiksIGhhcygibmFtZSIsICJtYXJrbyIpLmFzKCJkIikpKSwgYWRkSGFzKF9fLnN0YXJ0KCksICJhZ2UiLCBndCgxMCksICJhZ2UiLCBlcSgyMiksICJuYW1lIiwgZXEoIm1hcmtvIikpLmFzKCJhIiwgImIiLCAiYyIsICJkIil9LAotICAgICAgICAgICAgICAgIHthbmQoaGFzKCJhZ2UiLCBndCgxMCkpLmFzKCJhIiksIGFuZChoYXMoIm5hbWUiLCAic3RlcGhlbiIpLmFzKCJiIiksIGhhcygibmFtZSIsICJtYXJrbyIpLmFzKCJjIikpLmFzKCJkIikpLmFzKCJlIiksIGFkZEhhcyhfXy5zdGFydCgpLCAiYWdlIiwgZ3QoMTApLCAibmFtZSIsIGVxKCJzdGVwaGVuIiksICJuYW1lIiwgZXEoIm1hcmtvIikpLmFzKCJhIiwgImIiLCAiYyIsICJkIiwgImUiKX0sCi0gICAgICAgICAgICAgICAge2FuZChoYXMoImFnZSIsIGd0KDEwKSksIGFuZChvdXQoImtub3dzIiksIGhhcygibmFtZSIsICJtYXJrbyIpKSksIGhhcygiYWdlIiwgZ3QoMTApKS5hbmQob3V0KCJrbm93cyIpLCBoYXMoIm5hbWUiLCAibWFya28iKSl9LAotICAgICAgICAgICAgICAgIHthbmQoaGFzKCJhZ2UiLCBndCgyMCkpLCBvcihoYXMoImFnZSIsIGx0KDEwKSksIGhhcygiYWdlIiwgZ3QoMTAwKSkpKSwgYWRkSGFzKF9fLnN0YXJ0KCksICJhZ2UiLCBndCgyMCksICJhZ2UiLCBsdCgxMCkub3IoZ3QoMTAwKSkpfSwKLSAgICAgICAgICAgICAgICB7YW5kKGhhcygiYWdlIiwgZ3QoMjApKS5hcygiYSIpLCBvcihoYXMoImFnZSIsIGx0KDEwKSksIGhhcygiYWdlIiwgZ3QoMTAwKSkuYXMoImIiKSkpLCBhZGRIYXMoX18uc3RhcnQoKSwgImFnZSIsIGd0KDIwKSwgImFnZSIsIGx0KDEwKS5vcihndCgxMDApKSkuYXMoImEiLCAiYiIpfSwKLSAgICAgICAgICAgICAgICB7YW5kKGhhcygiYWdlIiwgZ3QoMjApKS5hcygiYSIpLCBvcihoYXMoImFnZSIsIGx0KDEwKSkuYXMoImMiKSwgaGFzKCJhZ2UiLCBndCgxMDApKS5hcygiYiIpKSksIGFkZEhhcyhfXy5zdGFydCgpLCAiYWdlIiwgZ3QoMjApLCAiYWdlIiwgbHQoMTApLm9yKGd0KDEwMCkpKS5hcygiYSIsICJiIiwgImMiKX0sCisgICAgICAgICAgICAgICAge2hhcygibmFtZSIsICJtYXJrbyIpLmFuZCgpLmhhcygibmFtZSIsICJtYXJrbyIpLmFuZCgpLmhhcygibmFtZSIsICJtYXJrbyIpLCBoYXMoIm5hbWUiLCAibWFya28iKS5oYXMoIm5hbWUiLCAibWFya28iKS5oYXMoIm5hbWUiLCAibWFya28iKSwgQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCl9LAorICAgICAgICAgICAgICAgIHtmaWx0ZXIoaGFzKCJuYW1lIiwgIm1hcmtvIikpLmFuZCgpLmZpbHRlcihoYXMoIm5hbWUiLCAibWFya28iKSkuYW5kKCkuZmlsdGVyKGhhcygibmFtZSIsICJtYXJrbyIpKSwgaGFzKCJuYW1lIiwgIm1hcmtvIikuaGFzKCJuYW1lIiwgIm1hcmtvIikuaGFzKCJuYW1lIiwgIm1hcmtvIiksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKKyAgICAgICAgICAgICAgICB7VigpLmhhcygibmFtZSIsICJtYXJrbyIpLmFuZCgpLmhhcygibmFtZSIsICJtYXJrbyIpLmFuZCgpLmhhcygibmFtZSIsICJtYXJrbyIpLCBWKCkuaGFzKCJuYW1lIiwgIm1hcmtvIikuaGFzKCJuYW1lIiwgIm1hcmtvIikuaGFzKCJuYW1lIiwgIm1hcmtvIiksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKKyAgICAgICAgICAgICAgICB7VigpLmZpbHRlcihoYXMoIm5hbWUiLCAibWFya28iKSkuYW5kKCkuZmlsdGVyKGhhcygibmFtZSIsICJtYXJrbyIpKS5hbmQoKS5maWx0ZXIoaGFzKCJuYW1lIiwgIm1hcmtvIikpLCBWKCkuaGFzKCJuYW1lIiwgIm1hcmtvIikuaGFzKCJuYW1lIiwgIm1hcmtvIikuaGFzKCJuYW1lIiwgIm1hcmtvIiksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKKyAgICAgICAgICAgICAgICB7aGFzKCJuYW1lIiwgIm1hcmtvIikuYW5kKCkuaGFzKCJuYW1lIiwgIm1hcmtvIikuYW5kKCkuaGFzKCJuYW1lIiwgIm1hcmtvIiksIGhhcygibmFtZSIsICJtYXJrbyIpLmhhcygibmFtZSIsICJtYXJrbyIpLmhhcygibmFtZSIsICJtYXJrbyIpLCBDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KENvbm5lY3RpdmVTdHJhdGVneS5pbnN0YW5jZSgpKX0sCisgICAgICAgICAgICAgICAge1YoKS5maWx0ZXIoaGFzKCJuYW1lIiwgIm1hcmtvIikpLmFuZCgpLmZpbHRlcihoYXMoIm5hbWUiLCAibWFya28iKSkuYW5kKCkuZmlsdGVyKGhhcygibmFtZSIsICJtYXJrbyIpKSwgYW5kKFYoKS5oYXMoIm5hbWUiLCAibWFya28iKSwgaGFzKCJuYW1lIiwgIm1hcmtvIiksIGhhcygibmFtZSIsICJtYXJrbyIpKSwgQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdChDb25uZWN0aXZlU3RyYXRlZ3kuaW5zdGFuY2UoKSl9LAorICAgICAgICAgICAgICAgIHtWKCkuaGFzKCJuYW1lIiwgIm1hcmtvIikuYW5kKCkuaGFzKCJuYW1lIiwgIm1hcmtvIikuYW5kKCkuaGFzKCJuYW1lIiwgIm1hcmtvIiksIGFuZChWKCkuaGFzKCJuYW1lIiwgIm1hcmtvIiksIGhhcygibmFtZSIsICJtYXJrbyIpLCBoYXMoIm5hbWUiLCAibWFya28iKSksIENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QoQ29ubmVjdGl2ZVN0cmF0ZWd5Lmluc3RhbmNlKCkpfSwKKyAgICAgICAgICAgICAgICB7RW1wdHlHcmFwaC5pbnN0YW5jZSgpLnRyYXZlcnNhbCgpLlYoKS5maWx0ZXIoaGFzKCJuYW1lIiwgIm1hcmtvIikpLmFuZCgpLmZpbHRlcihoYXMoIm5hbWUiLCAibWFya28iKSkuYW5kKCkuZmlsdGVyKGhhcygibmFtZSIsICJtYXJrbyIpKSwgRW1wdHlHcmFwaC5pbnN0YW5jZSgpLnRyYXZlcnNhbCgpLlYoKS5oYXMoIm5hbWUiLCAibWFya28iKS5oYXMoIm5hbWUiLCAibWFya28iKS5oYXMoIm5hbWUiLCAibWFya28iKSwgQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdChDb25uZWN0aXZlU3RyYXRlZ3kuaW5zdGFuY2UoKSl9LAorICAgICAgICAgICAgICAgIHtFbXB0eUdyYXBoLmluc3RhbmNlKCkudHJhdmVyc2FsKCkuVigpLmhhcygibmFtZSIsICJtYXJrbyIpLmFuZCgpLmhhcygibmFtZSIsICJtYXJrbyIpLmFuZCgpLmhhcygibmFtZSIsICJtYXJrbyIpLCBFbXB0eUdyYXBoLmluc3RhbmNlKCkudHJhdmVyc2FsKCkuVigpLmhhcygibmFtZSIsICJtYXJrbyIpLmhhcygibmFtZSIsICJtYXJrbyIpLmhhcygibmFtZSIsICJtYXJrbyIpLCBDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KENvbm5lY3RpdmVTdHJhdGVneS5pbnN0YW5jZSgpKX0sCiAgICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgICB7VigpLm1hdGNoKGFzKCJhIikuaGFzKCJhZ2UiLCAxMCksIGFzKCJhIikuZmlsdGVyKGhhcygibmFtZSIpKS5hcygiYiIpKSwgVigpLmhhcygiYWdlIiwgMTApLmFzKCJhIikubWF0Y2goYXMoImEiKS5oYXMoIm5hbWUiKS5hcygiYiIpKX0sCi0gICAgICAgICAgICAgICAge21hdGNoKGFzKCJhIikuaGFzKCJhZ2UiLCAxMCksIGFzKCJhIikuZmlsdGVyKGhhcygibmFtZSIpKS5hcygiYiIpKSwgbWF0Y2goYXMoImEiKS5oYXMoImFnZSIsIDEwKSwgYXMoImEiKS5oYXMoIm5hbWUiKS5hcygiYiIpKX0sCi0gICAgICAgICAgICAgICAge21hdGNoKGFzKCJhIikuaGFzKCJhZ2UiLCAxMCkuYm90aCgpLmFzKCJiIiksIGFzKCJiIikub3V0KCkuYXMoImMiKSksIG1hdGNoKGFzKCJhIikuaGFzKCJhZ2UiLCAxMCkuYm90aCgpLmFzKCJiIiksIGFzKCJiIikub3V0KCkuYXMoImMiKSl9LAotICAgICAgICAgICAgICAgIHtfXy5tYXAobWF0Y2goYXMoImEiKS5oYXMoImFnZSIsIDEwKSwgYXMoImEiKS5maWx0ZXIoaGFzKCJuYW1lIikpLmFzKCJiIikpKSwgX18ubWFwKG1hdGNoKGFzKCJhIikuaGFzKCJhZ2UiLCAxMCksIGFzKCJhIikuaGFzKCJuYW1lIikuYXMoImIiKSkpfSwKLSAgICAgICAgICAgICAgICB7VigpLm1hdGNoKGFzKCJhIikuaGFzKCJhZ2UiLCAxMCkpLCBWKCkuaGFzKCJhZ2UiLCAxMCkuYXMoImEiKX0sCi0gICAgICAgICAgICAgICAge1YoKS5tYXRjaChhcygiYSIpLmhhcygiYWdlIiwgMTApLmhhcygibmFtZSIsICJtYXJrbyIpLmFzKCJiIikpLCBWKCkuaGFzKCJhZ2UiLCAxMCkuaGFzKCJuYW1lIiwgIm1hcmtvIikuYXMoImEiLCAiYiIpfSwKLSAgICAgICAgICAgICAgICB7VigpLm1hdGNoKGFzKCJhIikuaGFzKCJhZ2UiLCAxMCkuaGFzKCJuYW1lIiwgIm1hcmtvIikuYXMoImIiKSwgYXMoImEiKS5vdXQoImtub3dzIikuYXMoImMiKSksIFYoKS5oYXMoImFnZSIsIDEwKS5oYXMoIm5hbWUiLCAibWFya28iKS5hcygiYSIsICJiIikubWF0Y2goYXMoImEiKS5vdXQoImtub3dzIikuYXMoImMiKSl9LAotICAgICAgICAgICAgICAgIHtWKCkubWF0Y2goYXMoImEiKS5vdXQoImtub3dzIikuYXMoImMiKSwgYXMoImEiKS5oYXMoImFnZSIsIDEwKS5oYXMoIm5hbWUiLCAibWFya28iKS5hcygiYiIpKSwgVigpLmhhcygiYWdlIiwgMTApLmhhcygibmFtZSIsICJtYXJrbyIpLmFzKCJhIiwgImIiKS5tYXRjaChhcygiYSIpLm91dCgia25vd3MiKS5hcygiYyIpKX0sCi0gICAgICAgICAgICAgICAge1YoKS5tYXRjaChhcygiYSIpLm91dCgia25vd3MiKS5hcygiYyIpLCBhcygiYSIpLmhhcygiYWdlIiwgMTApLmhhcygibmFtZSIsICJtYXJrbyIpLmFzKCJiIiksIGFzKCJhIikuaGFzKCJuYW1lIiwgImJvYiIpKSwgVigpLmhhcygiYWdlIiwgMTApLmhhcygibmFtZSIsICJtYXJrbyIpLmhhcygibmFtZSIsICJib2IiKS5hcygiYSIsICJiIikubWF0Y2goYXMoImEiKS5vdXQoImtub3dzIikuYXMoImMiKSl9LAotICAgICAgICAgICAgICAgIHtWKCkubWF0Y2goYXMoImEiKS5oYXMoImFnZSIsIDEwKS5hcygiYiIpLCBhcygiYSIpLmZpbHRlcihoYXMoIm5hbWUiKSkuYXMoImIiKSksIFYoKS5oYXMoImFnZSIsIDEwKS5hcygiYSIsICJiIikubWF0Y2goYXMoImEiKS5oYXMoIm5hbWUiKS5hcygiYiIpKX0sCisgICAgICAgICAgICAgICAge2FuZChoYXMoImFnZSIsIGd0KDEwKSksIGZpbHRlcihoYXMoImFnZSIsIDIyKSkpLCBhZGRIYXMoX18uc3RhcnQoKSwgImFnZSIsIGd0KDEwKSwgImFnZSIsIGVxKDIyKSksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKKyAgICAgICAgICAgICAgICB7YW5kKGhhcygiYWdlIiwgZ3QoMTApKS5hcygiYSIpLCBmaWx0ZXIoaGFzKCJhZ2UiLCAyMikuYXMoImIiKSkuYXMoImMiKSkuYXMoImQiKSwgYWRkSGFzKF9fLnN0YXJ0KCksICJhZ2UiLCBndCgxMCksICJhZ2UiLCBlcSgyMikpLmFzKCJhIiwgImIiLCAiYyIsICJkIiksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKKyAgICAgICAgICAgICAgICB7YW5kKGhhcygiYWdlIiwgZ3QoMTApKS5hcygiYSIpLCBhbmQoZmlsdGVyKGhhcygiYWdlIiwgMjIpLmFzKCJiIikpLmFzKCJjIiksIGhhcygibmFtZSIsICJtYXJrbyIpLmFzKCJkIikpKSwgYWRkSGFzKF9fLnN0YXJ0KCksICJhZ2UiLCBndCgxMCksICJhZ2UiLCBlcSgyMiksICJuYW1lIiwgZXEoIm1hcmtvIikpLmFzKCJhIiwgImIiLCAiYyIsICJkIiksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKKyAgICAgICAgICAgICAgICB7YW5kKGhhcygiYWdlIiwgZ3QoMTApKS5hcygiYSIpLCBhbmQoaGFzKCJuYW1lIiwgInN0ZXBoZW4iKS5hcygiYiIpLCBoYXMoIm5hbWUiLCAibWFya28iKS5hcygiYyIpKS5hcygiZCIpKS5hcygiZSIpLCBhZGRIYXMoX18uc3RhcnQoKSwgImFnZSIsIGd0KDEwKSwgIm5hbWUiLCBlcSgic3RlcGhlbiIpLCAibmFtZSIsIGVxKCJtYXJrbyIpKS5hcygiYSIsICJiIiwgImMiLCAiZCIsICJlIiksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKKyAgICAgICAgICAgICAgICB7YW5kKGhhcygiYWdlIiwgZ3QoMTApKSwgYW5kKG91dCgia25vd3MiKSwgaGFzKCJuYW1lIiwgIm1hcmtvIikpKSwgaGFzKCJhZ2UiLCBndCgxMCkpLmFuZChvdXQoImtub3dzIiksIGhhcygibmFtZSIsICJtYXJrbyIpKSwgQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCl9LAorICAgICAgICAgICAgICAgIHthbmQoaGFzKCJhZ2UiLCBndCgyMCkpLCBvcihoYXMoImFnZSIsIGx0KDEwKSksIGhhcygiYWdlIiwgZ3QoMTAwKSkpKSwgYWRkSGFzKF9fLnN0YXJ0KCksICJhZ2UiLCBndCgyMCksICJhZ2UiLCBsdCgxMCkub3IoZ3QoMTAwKSkpLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKX0sCisgICAgICAgICAgICAgICAge2FuZChoYXMoImFnZSIsIGd0KDIwKSkuYXMoImEiKSwgb3IoaGFzKCJhZ2UiLCBsdCgxMCkpLCBoYXMoImFnZSIsIGd0KDEwMCkpLmFzKCJiIikpKSwgYWRkSGFzKF9fLnN0YXJ0KCksICJhZ2UiLCBndCgyMCksICJhZ2UiLCBsdCgxMCkub3IoZ3QoMTAwKSkpLmFzKCJhIiwgImIiKSwgQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCl9LAorICAgICAgICAgICAgICAgIHthbmQoaGFzKCJhZ2UiLCBndCgyMCkpLmFzKCJhIiksIG9yKGhhcygiYWdlIiwgbHQoMTApKS5hcygiYyIpLCBoYXMoImFnZSIsIGd0KDEwMCkpLmFzKCJiIikpKSwgYWRkSGFzKF9fLnN0YXJ0KCksICJhZ2UiLCBndCgyMCksICJhZ2UiLCBsdCgxMCkub3IoZ3QoMTAwKSkpLmFzKCJhIiwgImIiLCAiYyIpLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKX0sCiAgICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgICB7ZmlsdGVyKGRlZHVwKCkpLCBmaWx0ZXIoZGVkdXAoKSl9LAotICAgICAgICAgICAgICAgIHtmaWx0ZXIoZmlsdGVyKGRyb3AoKSkpLCBmaWx0ZXIoZHJvcCgpKX0sCi0gICAgICAgICAgICAgICAge2FuZChoYXMoIm5hbWUiKSwgbGltaXQoMTApLmhhcygiYWdlIikpLCBhbmQoaGFzKCJuYW1lIiksIGxpbWl0KDEwKS5oYXMoImFnZSIpKX0sCi0gICAgICAgICAgICAgICAge2ZpbHRlcih0YWlsKDEwKS5hcygiYSIpKSwgZmlsdGVyKHRhaWwoMTApLmFzKCJhIikpfSwKKyAgICAgICAgICAgICAgICB7VigpLm1hdGNoKGFzKCJhIikuaGFzKCJhZ2UiLCAxMCksIGFzKCJhIikuZmlsdGVyKGhhcygibmFtZSIpKS5hcygiYiIpKSwgVigpLmhhcygiYWdlIiwgMTApLmFzKCJhIikubWF0Y2goYXMoImEiKS5oYXMoIm5hbWUiKS5hcygiYiIpKSwgQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCl9LAorICAgICAgICAgICAgICAgIHttYXRjaChhcygiYSIpLmhhcygiYWdlIiwgMTApLCBhcygiYSIpLmZpbHRlcihoYXMoIm5hbWUiKSkuYXMoImIiKSksIG1hdGNoKGFzKCJhIikuaGFzKCJhZ2UiLCAxMCksIGFzKCJhIikuaGFzKCJuYW1lIikuYXMoImIiKSksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKKyAgICAgICAgICAgICAgICB7bWF0Y2goYXMoImEiKS5oYXMoImFnZSIsIDEwKS5ib3RoKCkuYXMoImIiKSwgYXMoImIiKS5vdXQoKS5hcygiYyIpKSwgbWF0Y2goYXMoImEiKS5oYXMoImFnZSIsIDEwKS5ib3RoKCkuYXMoImIiKSwgYXMoImIiKS5vdXQoKS5hcygiYyIpKSwgQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCl9LAorICAgICAgICAgICAgICAgIHtfXy5tYXAobWF0Y2goYXMoImEiKS5oYXMoImFnZSIsIDEwKSwgYXMoImEiKS5maWx0ZXIoaGFzKCJuYW1lIikpLmFzKCJiIikpKSwgX18ubWFwKG1hdGNoKGFzKCJhIikuaGFzKCJhZ2UiLCAxMCksIGFzKCJhIikuaGFzKCJuYW1lIikuYXMoImIiKSkpLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKX0sCisgICAgICAgICAgICAgICAge1YoKS5tYXRjaChhcygiYSIpLmhhcygiYWdlIiwgMTApKSwgVigpLmhhcygiYWdlIiwgMTApLmFzKCJhIiksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKKyAgICAgICAgICAgICAgICB7VigpLm1hdGNoKGFzKCJhIikuaGFzKCJhZ2UiLCAxMCkuaGFzKCJuYW1lIiwgIm1hcmtvIikuYXMoImIiKSksIFYoKS5oYXMoImFnZSIsIDEwKS5oYXMoIm5hbWUiLCAibWFya28iKS5hcygiYSIsICJiIiksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKKyAgICAgICAgICAgICAgICB7VigpLm1hdGNoKGFzKCJhIikuaGFzKCJhZ2UiLCAxMCkuaGFzKCJuYW1lIiwgIm1hcmtvIikuYXMoImIiKSwgYXMoImEiKS5vdXQoImtub3dzIikuYXMoImMiKSksIFYoKS5oYXMoImFnZSIsIDEwKS5oYXMoIm5hbWUiLCAibWFya28iKS5hcygiYSIsICJiIikubWF0Y2goYXMoImEiKS5vdXQoImtub3dzIikuYXMoImMiKSksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKKyAgICAgICAgICAgICAgICB7VigpLm1hdGNoKGFzKCJhIikub3V0KCJrbm93cyIpLmFzKCJjIiksIGFzKCJhIikuaGFzKCJhZ2UiLCAxMCkuaGFzKCJuYW1lIiwgIm1hcmtvIikuYXMoImIiKSksIFYoKS5oYXMoImFnZSIsIDEwKS5oYXMoIm5hbWUiLCAibWFya28iKS5hcygiYSIsICJiIikubWF0Y2goYXMoImEiKS5vdXQoImtub3dzIikuYXMoImMiKSksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKKyAgICAgICAgICAgICAgICB7VigpLm1hdGNoKGFzKCJhIikub3V0KCJrbm93cyIpLmFzKCJjIiksIGFzKCJhIikuaGFzKCJhZ2UiLCAxMCkuaGFzKCJuYW1lIiwgIm1hcmtvIikuYXMoImIiKSwgYXMoImEiKS5oYXMoIm5hbWUiLCAiYm9iIikpLCBWKCkuaGFzKCJhZ2UiLCAxMCkuaGFzKCJuYW1lIiwgIm1hcmtvIikuaGFzKCJuYW1lIiwgImJvYiIpLmFzKCJhIiwgImIiKS5tYXRjaChhcygiYSIpLm91dCgia25vd3MiKS5hcygiYyIpKSwgQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCl9LAorICAgICAgICAgICAgICAgIHtWKCkubWF0Y2goYXMoImEiKS5oYXMoImFnZSIsIDEwKS5hcygiYiIpLCBhcygiYSIpLmZpbHRlcihoYXMoIm5hbWUiKSkuYXMoImIiKSksIFYoKS5oYXMoImFnZSIsIDEwKS5hcygiYSIsICJiIikubWF0Y2goYXMoImEiKS5oYXMoIm5hbWUiKS5hcygiYiIpKSwgQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCl9LAogICAgICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICAge291dEUoKS5oYXNMYWJlbCgia25vd3MiKS5pblYoKSwgb3V0RSgia25vd3MiKS5pblYoKX0sCi0gICAgICAgICAgICAgICAge291dEUoKS5oYXNMYWJlbCgia25vd3MiKS5oYXNMYWJlbCgiY3JlYXRlZCIpLmluVigpLCBvdXRFKCJrbm93cyIpLmhhc0xhYmVsKCJjcmVhdGVkIikuaW5WKCl9LAotICAgICAgICAgICAgICAgIHtvdXRFKCkub3IoaGFzTGFiZWwoImtub3dzIiksIGhhc0xhYmVsKCJjcmVhdGVkIikpLmluVigpLCBvdXRFKCJrbm93cyIsICJjcmVhdGVkIikuaW5WKCl9LAotICAgICAgICAgICAgICAgIHtvdXRFKCkub3IoaGFzTGFiZWwoImtub3dzIikuYXMoImEiKSwgaGFzTGFiZWwoImNyZWF0ZWQiKS5hcygiYiIpKS5hcygiYyIpLmluVigpLCBvdXRFKCJrbm93cyIsICJjcmVhdGVkIikuYXMoImEiLCAiYiIsICJjIikuaW5WKCl9LAotICAgICAgICAgICAgICAgIHtvdXRFKCkuaGFzTGFiZWwoUC5lcSgia25vd3MiKS5vcihQLmd0KCJjcmVhdGVkIikpKS5oYXMoIndlaWdodCIsIGd0KDEuMCkpLmluVigpLCBhZGRIYXMob3V0RSgpLCBULmxhYmVsLmdldEFjY2Vzc29yKCksIFAuZXEoImtub3dzIikub3IoUC5ndCgiY3JlYXRlZCIpKSwgIndlaWdodCIsIGd0KDEuMCkpLmluVigpfSwKLSAgICAgICAgICAgICAgICB7b3V0RSgpLmhhc0xhYmVsKFAuZXEoImtub3dzIikub3IoUC5lcSgiY3JlYXRlZCIpKSkuaGFzKCJ3ZWlnaHQiLCBndCgxLjApKS5pblYoKSwgb3V0RSgia25vd3MiLCAiY3JlYXRlZCIpLmhhcygid2VpZ2h0IiwgZ3QoMS4wKSkuaW5WKCl9LAotICAgICAgICAgICAgICAgIC8vIHtvdXRFKCkub3IoaGFzKFQubGFiZWwsUC53aXRoaW4oImtub3dzIiwibGlrZXMiKSkuaGFzTGFiZWwoImNyZWF0ZWQiKSkuaW5WKCksIG91dEUoImtub3dzIiwgImxpa2VzIiwgImNyZWF0ZWQiKS5pblYoKX0sCi0gICAgICAgICAgICAgICAge291dEUoKS5oYXNMYWJlbChQLndpdGhpbigia25vd3MiLCAiY3JlYXRlZCIpKS5pblYoKSwgb3V0RSgia25vd3MiLCAiY3JlYXRlZCIpLmluVigpfSwKKyAgICAgICAgICAgICAgICB7ZmlsdGVyKGRlZHVwKCkpLCBmaWx0ZXIoZGVkdXAoKSksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKKyAgICAgICAgICAgICAgICB7ZmlsdGVyKGZpbHRlcihkcm9wKCkpKSwgZmlsdGVyKGRyb3AoKSksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKKyAgICAgICAgICAgICAgICB7YW5kKGhhcygibmFtZSIpLCBsaW1pdCgxMCkuaGFzKCJhZ2UiKSksIGFuZChoYXMoIm5hbWUiKSwgbGltaXQoMTApLmhhcygiYWdlIikpLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKX0sCisgICAgICAgICAgICAgICAge2ZpbHRlcih0YWlsKDEwKS5hcygiYSIpKSwgZmlsdGVyKHRhaWwoMTApLmFzKCJhIikpLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKX0sCisgICAgICAgICAgICAgICAgLy8KKyAgICAgICAgICAgICAgICB7b3V0RSgpLmhhc0xhYmVsKCJrbm93cyIpLmluVigpLCBvdXRFKCJrbm93cyIpLmluVigpLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKX0sCisgICAgICAgICAgICAgICAge291dEUoKS5oYXNMYWJlbCgia25vd3MiKS5oYXNMYWJlbCgiY3JlYXRlZCIpLmluVigpLCBvdXRFKCJrbm93cyIpLmhhc0xhYmVsKCJjcmVhdGVkIikuaW5WKCksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKKyAgICAgICAgICAgICAgICB7b3V0RSgpLm9yKGhhc0xhYmVsKCJrbm93cyIpLCBoYXNMYWJlbCgiY3JlYXRlZCIpKS5pblYoKSwgb3V0RSgia25vd3MiLCAiY3JlYXRlZCIpLmluVigpLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKX0sCisgICAgICAgICAgICAgICAge291dEUoKS5vcihoYXNMYWJlbCgia25vd3MiKS5hcygiYSIpLCBoYXNMYWJlbCgiY3JlYXRlZCIpLmFzKCJiIikpLmFzKCJjIikuaW5WKCksIG91dEUoImtub3dzIiwgImNyZWF0ZWQiKS5hcygiYSIsICJiIiwgImMiKS5pblYoKSwgQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCl9LAorICAgICAgICAgICAgICAgIHtvdXRFKCkuaGFzTGFiZWwoUC5lcSgia25vd3MiKS5vcihQLmd0KCJjcmVhdGVkIikpKS5oYXMoIndlaWdodCIsIGd0KDEuMCkpLmluVigpLCBhZGRIYXMob3V0RSgpLCBULmxhYmVsLmdldEFjY2Vzc29yKCksIFAuZXEoImtub3dzIikub3IoUC5ndCgiY3JlYXRlZCIpKSwgIndlaWdodCIsIGd0KDEuMCkpLmluVigpLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKX0sCisgICAgICAgICAgICAgICAge291dEUoKS5oYXNMYWJlbChQLmVxKCJrbm93cyIpLm9yKFAuZXEoImNyZWF0ZWQiKSkpLmhhcygid2VpZ2h0IiwgZ3QoMS4wKSkuaW5WKCksIG91dEUoImtub3dzIiwgImNyZWF0ZWQiKS5oYXMoIndlaWdodCIsIGd0KDEuMCkpLmluVigpLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKX0sCisgICAgICAgICAgICAgICAge291dEUoKS5oYXNMYWJlbChQLndpdGhpbigia25vd3MiLCAiY3JlYXRlZCIpKS5pblYoKSwgb3V0RSgia25vd3MiLCAiY3JlYXRlZCIpLmluVigpLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKX0sCiAgICAgICAgIH0pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9vcHRpbWl6YXRpb24vTGF6eUJhcnJpZXJTdHJhdGVneVRlc3QuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvb3B0aW1pemF0aW9uL0xhenlCYXJyaWVyU3RyYXRlZ3lUZXN0LmphdmEKaW5kZXggYjJiYmQ5NC4uMTAwYmE4YiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9vcHRpbWl6YXRpb24vTGF6eUJhcnJpZXJTdHJhdGVneVRlc3QuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L29wdGltaXphdGlvbi9MYXp5QmFycmllclN0cmF0ZWd5VGVzdC5qYXZhCkBAIC0xMDAsNyArMTAwLDE0IEBACiAgICAgICAgICAgICAgICAge19fLm91dCgpLmFzKCJhIikub3V0KCkuYXMoImIiKS5pbigpLndoZXJlKFAubmVxKCJhIikpLm91dCgpLnNlbGVjdCgiYiIpLm91dCgpLCBfXy5vdXQoKS5hcygiYSIpLm91dCgpLmFzKCJiIikuaW4oKS53aGVyZShQLm5lcSgiYSIpKS5iYXJyaWVyKFBBVEhfU0laRSkub3V0KCkuc2VsZWN0KCJiIikuYmFycmllcihQQVRIX1NJWkUpLm91dCgpLCBDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KFBhdGhSZXRyYWN0aW9uU3RyYXRlZ3kuaW5zdGFuY2UoKSl9LAogICAgICAgICAgICAgICAgIHtfXy5vdXQoKS5hcygiYSIpLm91dCgpLmFzKCJiIikuaW4oKS53aGVyZShQLm5lcSgiYSIpKS5vdXQoKS5zZWxlY3QoImIiKS5vdXQoKS5vdXQoKSwgX18ub3V0KCkuYXMoImEiKS5vdXQoKS5hcygiYiIpLmluKCkud2hlcmUoUC5uZXEoImEiKSkuYmFycmllcihQQVRIX1NJWkUpLm91dCgpLnNlbGVjdCgiYiIpLmJhcnJpZXIoUEFUSF9TSVpFKS5vdXQoKS5iYXJyaWVyKExBWllfU0laRSkub3V0KCksIENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QoUGF0aFJldHJhY3Rpb25TdHJhdGVneS5pbnN0YW5jZSgpKX0sCiAgICAgICAgICAgICAgICAge19fLlYoKS5vdXQoKS5vdXQoKS5ncm91cENvdW50KCkuYnkoX18ub3V0KCkub3V0KCkub3V0KCkpLm91dCgpLCBfXy5WKCkub3V0KCkuYmFycmllcihMQVpZX1NJWkUpLm91dCgpLmdyb3VwQ291bnQoKS5ieShfXy5vdXQoKS5vdXQoKS5iYXJyaWVyKExBWllfU0laRSkub3V0KCkpLm91dCgpLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKX0sCi0gICAgICAgICAgICAgICAge19fLlYoKS5vdXQoKS5vdXQoKS5ncm91cENvdW50KCkuYnkoX18ub3V0KCkub3V0KCkub3V0KCkpLm91dCgpLmFzKCJhIiksIF9fLlYoKS5vdXQoKS5iYXJyaWVyKExBWllfU0laRSkub3V0KCkuZ3JvdXBDb3VudCgpLmJ5KF9fLm91dCgpLm91dCgpLmJhcnJpZXIoTEFaWV9TSVpFKS5vdXQoKSkub3V0KCkuYXMoImEiKSwgQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCl9CisgICAgICAgICAgICAgICAge19fLlYoKS5vdXQoKS5vdXQoKS5ncm91cENvdW50KCkuYnkoX18ub3V0KCkub3V0KCkub3V0KCkpLm91dCgpLmFzKCJhIiksIF9fLlYoKS5vdXQoKS5iYXJyaWVyKExBWllfU0laRSkub3V0KCkuZ3JvdXBDb3VudCgpLmJ5KF9fLm91dCgpLm91dCgpLmJhcnJpZXIoTEFaWV9TSVpFKS5vdXQoKSkub3V0KCkuYXMoImEiKSwgQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCl9LAorICAgICAgICAgICAgICAgIHtfXy5vdXQoKS5kcm9wKCksIF9fLm91dCgpLmRyb3AoKSwgQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCl9LAorICAgICAgICAgICAgICAgIHtfXy5vdXQoKS5wcm9wZXJ0aWVzKCkuZHJvcCgpLCBfXy5vdXQoKS5wcm9wZXJ0aWVzKCkuZHJvcCgpLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKX0sCisgICAgICAgICAgICAgICAge19fLm91dCgpLnByb3BlcnRpZXMoKS5wcm9wZXJ0aWVzKCkuZHJvcCgpLCBfXy5vdXQoKS5wcm9wZXJ0aWVzKCkucHJvcGVydGllcygpLmRyb3AoKSwgQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCl9LAorICAgICAgICAgICAgICAgIHtfXy5vdXQoKS5vdXQoKS5wcm9wZXJ0aWVzKCkuZHJvcCgpLCBfXy5vdXQoKS5vdXQoKS5wcm9wZXJ0aWVzKCkuZHJvcCgpLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKX0sCisgICAgICAgICAgICAgICAge19fLm91dCgpLm91dCgpLnZhbHVlcygpLmlzKHRydWUpLCBfXy5vdXQoKS5vdXQoKS5iYXJyaWVyKExBWllfU0laRSkudmFsdWVzKCkuYmFycmllcihMQVpZX1NJWkUpLmlzKHRydWUpLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKX0sCisgICAgICAgICAgICAgICAge19fLm91dEUoKS5kcm9wKCksIF9fLm91dEUoKS5kcm9wKCksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKKyAgICAgICAgICAgICAgICB7X18ub3V0RSgpLnByb3BlcnRpZXMoKS5kcm9wKCksIF9fLm91dEUoKS5wcm9wZXJ0aWVzKCkuZHJvcCgpLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKX0KICAgICAgICAgfSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9vcHRpbWl6YXRpb24vUmVwZWF0VW5yb2xsU3RyYXRlZ3lUZXN0LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L29wdGltaXphdGlvbi9SZXBlYXRVbnJvbGxTdHJhdGVneVRlc3QuamF2YQppbmRleCA4OGViNWE2Li4xMzIyM2NiIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L29wdGltaXphdGlvbi9SZXBlYXRVbnJvbGxTdHJhdGVneVRlc3QuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L29wdGltaXphdGlvbi9SZXBlYXRVbnJvbGxTdHJhdGVneVRlc3QuamF2YQpAQCAtOTIsNiArOTIsMTMgQEAKICAgICAgICAgICAgICAgICB7X18ucmVwZWF0KF9fLm91dEUoKS5pblYoKSkudGltZXMoMiksIF9fLm91dEUoKS5pblYoKS5iYXJyaWVyKG1heEJhcnJpZXJTaXplKS5vdXRFKCkuaW5WKCkuYmFycmllcihtYXhCYXJyaWVyU2l6ZSksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKICAgICAgICAgICAgICAgICB7X18ucmVwZWF0KF9fLm91dEUoKS5maWx0ZXIocGF0aCgpKS5pblYoKSkudGltZXMoMiksIF9fLm91dEUoKS5maWx0ZXIocGF0aCgpKS5pblYoKS5iYXJyaWVyKG1heEJhcnJpZXJTaXplKS5vdXRFKCkuZmlsdGVyKHBhdGgoKSkuaW5WKCkuYmFycmllcihtYXhCYXJyaWVyU2l6ZSksIENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QoSW5jaWRlbnRUb0FkamFjZW50U3RyYXRlZ3kuaW5zdGFuY2UoKSl9LAogICAgICAgICAgICAgICAgIHtfXy5yZXBlYXQoX18ub3V0RSgpLmluVigpKS50aW1lcygyKSwgX18ub3V0KCkuYmFycmllcihtYXhCYXJyaWVyU2l6ZSkub3V0KCkuYmFycmllcihtYXhCYXJyaWVyU2l6ZSksIENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QoSW5jaWRlbnRUb0FkamFjZW50U3RyYXRlZ3kuaW5zdGFuY2UoKSl9LAorICAgICAgICAgICAgICAgIC8vIE5lc3RlZCBMb29wIHRlc3RzCisgICAgICAgICAgICAgICAge19fLnJlcGVhdChvdXQoKS5yZXBlYXQob3V0KCkpLnRpbWVzKDApKS50aW1lcygxKSwgX18ub3V0KCkucmVwZWF0KG91dCgpKS50aW1lcygwKS5iYXJyaWVyKG1heEJhcnJpZXJTaXplKSwgQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCl9LAorICAgICAgICAgICAgICAgIHtfXy5yZXBlYXQob3V0KCkucmVwZWF0KG91dCgpKS50aW1lcygxKSkudGltZXMoMSksIF9fLm91dCgpLm91dCgpLmJhcnJpZXIobWF4QmFycmllclNpemUpLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKX0sCisgICAgICAgICAgICAgICAge19fLnJlcGVhdChvdXQoKSkudW50aWwoX18ucmVwZWF0KG91dCgpKS51bnRpbChwcmVkaWNhdGUpKSwgX18ucmVwZWF0KG91dCgpKS51bnRpbChfXy5yZXBlYXQob3V0KCkpLnVudGlsKHByZWRpY2F0ZSkpLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKX0sCisgICAgICAgICAgICAgICAge19fLnJlcGVhdChfXy5yZXBlYXQob3V0KCkpLnRpbWVzKDIpKS51bnRpbChwcmVkaWNhdGUpLCBfXy5yZXBlYXQoX18ub3V0KCkuYmFycmllcihtYXhCYXJyaWVyU2l6ZSkub3V0KCkuYmFycmllcihtYXhCYXJyaWVyU2l6ZSkpLnVudGlsKHByZWRpY2F0ZSksIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpfSwKKyAgICAgICAgICAgICAgICB7X18ucmVwZWF0KF9fLnJlcGVhdChvdXQoImNyZWF0ZWQiKSkudW50aWwoX18uaGFzKCJuYW1lIiwgInJpcHBsZSIpKSksIF9fLnJlcGVhdChfXy5yZXBlYXQob3V0KCJjcmVhdGVkIikpLnVudGlsKF9fLmhhcygibmFtZSIsICJyaXBwbGUiKSkpLCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKX0sCisKICAgICAgICAgfSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS92ZXJpZmljYXRpb24vU3RhbmRhcmRWZXJpZmljYXRpb25TdHJhdGVneVRlc3QuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvdmVyaWZpY2F0aW9uL1N0YW5kYXJkVmVyaWZpY2F0aW9uU3RyYXRlZ3lUZXN0LmphdmEKaW5kZXggZWU5NjI2Ni4uYTNlN2MwNyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS92ZXJpZmljYXRpb24vU3RhbmRhcmRWZXJpZmljYXRpb25TdHJhdGVneVRlc3QuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L3ZlcmlmaWNhdGlvbi9TdGFuZGFyZFZlcmlmaWNhdGlvblN0cmF0ZWd5VGVzdC5qYXZhCkBAIC0yNCw2ICsyNCw3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLlJlcXVpcmVtZW50c1N0cmF0ZWd5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyLlRyYXZlcnNlclJlcXVpcmVtZW50OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5EZWZhdWx0VHJhdmVyc2FsU3RyYXRlZ2llczsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnV0aWwuVGVzdFN1cHBvcnQ7CiBpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CiBpbXBvcnQgb3JnLmp1bml0LnJ1bm5lci5SdW5XaXRoOwogaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXJzLlBhcmFtZXRlcml6ZWQ7CkBAIC00NCwxMyArNDUsMTUgQEAKIHB1YmxpYyBjbGFzcyBTdGFuZGFyZFZlcmlmaWNhdGlvblN0cmF0ZWd5VGVzdCB7CiAKICAgICBAUGFyYW1ldGVyaXplZC5QYXJhbWV0ZXJzKG5hbWUgPSAiezB9IikKLSAgICBwdWJsaWMgc3RhdGljIEl0ZXJhYmxlPE9iamVjdFtdPiBkYXRhKCkgeworICAgIHB1YmxpYyBzdGF0aWMgSXRlcmFibGU8T2JqZWN0W10+IGRhdGEoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgICBUZXN0U3VwcG9ydC5nZW5lcmF0ZVRlbXBGaWxlKFN0YW5kYXJkVmVyaWZpY2F0aW9uU3RyYXRlZ3lUZXN0LmNsYXNzLCAic2hvdWxkQmVWZXJpZmllZCIsICIua3J5byIpOworCiAgICAgICAgIHJldHVybiBBcnJheXMuYXNMaXN0KG5ldyBPYmplY3RbXVtdewogICAgICAgICAgICAgICAgIC8vIHRyYXZlcnNhbHMgdGhhdCBzaG91bGQgZmFpbCB2ZXJpZmljYXRpb24KICAgICAgICAgICAgICAgICB7Il9fLnJlcGVhdChvdXQoKS5mb2xkKCkudW5mb2xkKCkpLnRpbWVzKDIpIiwgcmVwZWF0KG91dCgpLmZvbGQoKS51bmZvbGQoKSkudGltZXMoMiksIGZhbHNlfSwKICAgICAgICAgICAgICAgICB7Il9fLnJlcGVhdChzdW0oKSkudGltZXMoMikiLCByZXBlYXQoc3VtKCkpLnRpbWVzKDIpLCBmYWxzZX0sCiAgICAgICAgICAgICAgICAgeyJfXy5yZXBlYXQob3V0KCkuY291bnQoKSkiLCByZXBlYXQob3V0KCkuY291bnQoKSksIGZhbHNlfSwKLSAgICAgICAgICAgICAgICAvLyB0cmF2ZXJzYWxzIHRoYXQgc2hvdWxkIHBhc3MgdmVyaWZpY2F0aW9uCiAgICAgICAgICAgICAgICAgeyJfXy5WKCkucHJvZmlsZSgpIiwKICAgICAgICAgICAgICAgICAgICAgICAgIF9fLlYoKS5wcm9maWxlKCksIHRydWV9LAogICAgICAgICAgICAgICAgIHsiX18uVigpLnByb2ZpbGUoJ21ldHJpY3MnKS5jYXAoJ21ldHJpY3MnKSIsCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci91dGlsL0RlZmF1bHRUcmF2ZXJzZXJHZW5lcmF0b3JGYWN0b3J5VGVzdC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC90cmF2ZXJzZXIvdXRpbC9EZWZhdWx0VHJhdmVyc2VyR2VuZXJhdG9yRmFjdG9yeVRlc3QuamF2YQppbmRleCA2MGYzODgwLi5mYmRhYmNjIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3RyYXZlcnNlci91dGlsL0RlZmF1bHRUcmF2ZXJzZXJHZW5lcmF0b3JGYWN0b3J5VGVzdC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdHJhdmVyc2VyL3V0aWwvRGVmYXVsdFRyYXZlcnNlckdlbmVyYXRvckZhY3RvcnlUZXN0LmphdmEKQEAgLTI1LDggKzI1LDEwIEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuQl9MUF9PX1BfU19TRV9TTF9UcmF2ZXJzZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuQl9MUF9PX1NfU0VfU0xfVHJhdmVyc2VyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyLkJfT19TX1NFX1NMX1RyYXZlcnNlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci5CX05MX09fU19TRV9TTF9UcmF2ZXJzZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuQl9PX1RyYXZlcnNlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci5MUF9PX09CX1BfU19TRV9TTF9UcmF2ZXJzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuTFBfTkxfT19PQl9QX1NfU0VfU0xfVHJhdmVyc2VyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyLkxQX09fT0JfU19TRV9TTF9UcmF2ZXJzZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuT19PQl9TX1NFX1NMX1RyYXZlcnNlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLmVtcHR5LkVtcHR5R3JhcGg7CkBAIC01Niw2ICs1OCwxMCBAQAogICAgICAgICB0cmF2ZXJzYWwuYXBwbHlTdHJhdGVnaWVzKCk7CiAgICAgICAgIGFzc2VydEVxdWFscyhCX09fU19TRV9TTF9UcmF2ZXJzZXIuY2xhc3MsIHRyYXZlcnNhbC5nZXRUcmF2ZXJzZXJHZW5lcmF0b3IoKS5nZW5lcmF0ZShzdGFydCwgdHJhdmVyc2FsLmdldFN0YXJ0U3RlcCgpLCAxbCkuZ2V0Q2xhc3MoKSk7CiAgICAgICAgIC8vCisgICAgICAgIHRyYXZlcnNhbCA9IHRyYXZlcnNhbFNvdXJjZS5WKCkucmVwZWF0KF9fLnJlcGVhdChfXy5vdXQoKSkpLnRpbWVzKDEwKS5hc0FkbWluKCk7CisgICAgICAgIHRyYXZlcnNhbC5hcHBseVN0cmF0ZWdpZXMoKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKEJfTkxfT19TX1NFX1NMX1RyYXZlcnNlci5jbGFzcywgdHJhdmVyc2FsLmdldFRyYXZlcnNlckdlbmVyYXRvcigpLmdlbmVyYXRlKHN0YXJ0LCB0cmF2ZXJzYWwuZ2V0U3RhcnRTdGVwKCksIDFsKS5nZXRDbGFzcygpKTsKKyAgICAgICAgLy8KICAgICAgICAgdHJhdmVyc2FsID0gdHJhdmVyc2FsU291cmNlLlYoKS5vdXQoKS5zYWNrKCkuYXNBZG1pbigpOwogICAgICAgICB0cmF2ZXJzYWwuYXBwbHlTdHJhdGVnaWVzKCk7CiAgICAgICAgIGFzc2VydEVxdWFscyhCX09fU19TRV9TTF9UcmF2ZXJzZXIuY2xhc3MsIHRyYXZlcnNhbC5nZXRUcmF2ZXJzZXJHZW5lcmF0b3IoKS5nZW5lcmF0ZShzdGFydCwgdHJhdmVyc2FsLmdldFN0YXJ0U3RlcCgpLCAxbCkuZ2V0Q2xhc3MoKSk7CkBAIC03OSw2ICs4NSwxMCBAQAogICAgICAgICB0cmF2ZXJzYWwgPSB0cmF2ZXJzYWxTb3VyY2Uud2l0aEJ1bGsoZmFsc2UpLlYoKS5vdXQoKS5wYXRoKCkuYXNBZG1pbigpOwogICAgICAgICB0cmF2ZXJzYWwuYXBwbHlTdHJhdGVnaWVzKCk7CiAgICAgICAgIGFzc2VydEVxdWFscyhMUF9PX09CX1BfU19TRV9TTF9UcmF2ZXJzZXIuY2xhc3MsIHRyYXZlcnNhbC5nZXRUcmF2ZXJzZXJHZW5lcmF0b3IoKS5nZW5lcmF0ZShzdGFydCwgdHJhdmVyc2FsLmdldFN0YXJ0U3RlcCgpLCAxbCkuZ2V0Q2xhc3MoKSk7CisgICAgICAgIC8vCisgICAgICAgIHRyYXZlcnNhbCA9IHRyYXZlcnNhbFNvdXJjZS53aXRoQnVsayhmYWxzZSkuVigpLnJlcGVhdChfXy5yZXBlYXQoX18ub3V0KCkpKS50aW1lcygxMCkucGF0aCgpLmFzQWRtaW4oKTsKKyAgICAgICAgdHJhdmVyc2FsLmFwcGx5U3RyYXRlZ2llcygpOworICAgICAgICBhc3NlcnRFcXVhbHMoTFBfTkxfT19PQl9QX1NfU0VfU0xfVHJhdmVyc2VyLmNsYXNzLCB0cmF2ZXJzYWwuZ2V0VHJhdmVyc2VyR2VuZXJhdG9yKCkuZ2VuZXJhdGUoc3RhcnQsIHRyYXZlcnNhbC5nZXRTdGFydFN0ZXAoKSwgMWwpLmdldENsYXNzKCkpOwogCiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC91dGlsL0J5dGVjb2RlVXRpbFRlc3QuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdXRpbC9CeXRlY29kZVV0aWxUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjljY2Q3NwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvdXRpbC9CeXRlY29kZVV0aWxUZXN0LmphdmEKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbDsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkdyYXBoVHJhdmVyc2FsU291cmNlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuZGVjb3JhdGlvbi5PcHRpb25zU3RyYXRlZ3k7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS52ZXJpZmljYXRpb24uUmVhZE9ubHlTdHJhdGVneTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLmVtcHR5LkVtcHR5R3JhcGg7CitpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CisKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CisKK2ltcG9ydCBzdGF0aWMgb3JnLmhhbWNyZXN0LmNvcmUuSXMuaXM7CitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydFRoYXQ7CisKKy8qKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgY2xhc3MgQnl0ZWNvZGVVdGlsVGVzdCB7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgR3JhcGhUcmF2ZXJzYWxTb3VyY2UgZyA9IEVtcHR5R3JhcGguaW5zdGFuY2UoKS50cmF2ZXJzYWwoKTsKKyAgICAKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZEZpbmRTdHJhdGVneSgpIHsKKyAgICAgICAgZmluYWwgSXRlcmF0b3I8T3B0aW9uc1N0cmF0ZWd5PiBpdHR5ID0gQnl0ZWNvZGVVdGlsLmZpbmRTdHJhdGVnaWVzKGcud2l0aCgieCIpLndpdGgoInkiLCAxMDApLlYoKS5hc0FkbWluKCkuZ2V0Qnl0ZWNvZGUoKSwgT3B0aW9uc1N0cmF0ZWd5LmNsYXNzKTsKKyAgICAgICAgaW50IGNvdW50ZXIgPSAwOworICAgICAgICB3aGlsZShpdHR5Lmhhc05leHQoKSkgeworICAgICAgICAgICAgZmluYWwgT3B0aW9uc1N0cmF0ZWd5IHN0cmF0ZWd5ID0gaXR0eS5uZXh0KCk7CisgICAgICAgICAgICBpZiAoc3RyYXRlZ3kuZ2V0T3B0aW9ucygpLmtleVNldCgpLmNvbnRhaW5zKCJ4IikpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRUaGF0KHN0cmF0ZWd5LmdldE9wdGlvbnMoKS5nZXQoIngiKSwgaXModHJ1ZSkpOworICAgICAgICAgICAgICAgIGNvdW50ZXIrKzsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RyYXRlZ3kuZ2V0T3B0aW9ucygpLmtleVNldCgpLmNvbnRhaW5zKCJ5IikpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMTAwLCBzdHJhdGVneS5nZXRPcHRpb25zKCkuZ2V0KCJ5IikpOworICAgICAgICAgICAgICAgIGNvdW50ZXIrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGFzc2VydEVxdWFscygyLCBjb3VudGVyKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZE5vdEZpbmRTdHJhdGVneSgpIHsKKyAgICAgICAgZmluYWwgSXRlcmF0b3I8UmVhZE9ubHlTdHJhdGVneT4gaXR0eSA9IEJ5dGVjb2RlVXRpbC5maW5kU3RyYXRlZ2llcyhnLndpdGgoIngiKS53aXRoKCJ5IiwgMTAwKS5WKCkuYXNBZG1pbigpLmdldEJ5dGVjb2RlKCksIFJlYWRPbmx5U3RyYXRlZ3kuY2xhc3MpOworICAgICAgICBhc3NlcnRUaGF0KGl0dHkuaGFzTmV4dCgpLCBpcyhmYWxzZSkpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL0dyYXBoTWlncmF0b3JUZXN0LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9HcmFwaE1pZ3JhdG9yVGVzdC5qYXZhCmluZGV4IDBiNGE5MTIuLjRhMThjODUgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL0dyYXBoTWlncmF0b3JUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vR3JhcGhNaWdyYXRvclRlc3QuamF2YQpAQCAtMTgsNyArMTgsNyBAQAogICovCiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvOwogCi1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5UZXN0SGVscGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uQXNzZXJ0SGVscGVyOwogaW1wb3J0IG9yZy5qdW5pdC5UZXN0OwogCiAvKioKQEAgLTI3LDYgKzI3LDYgQEAKIHB1YmxpYyBjbGFzcyBHcmFwaE1pZ3JhdG9yVGVzdCB7CiAgICAgQFRlc3QKICAgICBwdWJsaWMgdm9pZCBzaG91bGRCZVV0aWxpdHlDbGFzcygpIHRocm93cyBFeGNlcHRpb24gewotICAgICAgICBUZXN0SGVscGVyLmFzc2VydElzVXRpbGl0eUNsYXNzKEdyYXBoTWlncmF0b3IuY2xhc3MpOworICAgICAgICBBc3NlcnRIZWxwZXIuYXNzZXJ0SXNVdGlsaXR5Q2xhc3MoR3JhcGhNaWdyYXRvci5jbGFzcyk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vSW9Db3JlVGVzdC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vSW9Db3JlVGVzdC5qYXZhCmluZGV4IDIzNTk0MmQuLjU3NzY1N2QgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL0lvQ29yZVRlc3QuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9Jb0NvcmVUZXN0LmphdmEKQEAgLTE4LDcgKzE4LDcgQEAKICAqLwogcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pbzsKIAotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uVGVzdEhlbHBlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkFzc2VydEhlbHBlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncmFwaG1sLkdyYXBoTUxJbzsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncmFwaHNvbi5HcmFwaFNPTklvOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyeW8uR3J5b0lvOwpAQCAtMzMsNyArMzMsNyBAQAogcHVibGljIGNsYXNzIElvQ29yZVRlc3QgewogICAgIEBUZXN0CiAgICAgcHVibGljIHZvaWQgc2hvdWxkQmVVdGlsaXR5Q2xhc3MoKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICAgICAgVGVzdEhlbHBlci5hc3NlcnRJc1V0aWxpdHlDbGFzcyhJb0NvcmUuY2xhc3MpOworICAgICAgICBBc3NlcnRIZWxwZXIuYXNzZXJ0SXNVdGlsaXR5Q2xhc3MoSW9Db3JlLmNsYXNzKTsKICAgICB9CiAKICAgICBAVGVzdApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vR3JhcGhTT05NYXBwZXJFbWJlZGRlZFR5cGVUZXN0LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9HcmFwaFNPTk1hcHBlckVtYmVkZGVkVHlwZVRlc3QuamF2YQppbmRleCA2YzI3NzcwLi5mN2RjZTI4IDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9HcmFwaFNPTk1hcHBlckVtYmVkZGVkVHlwZVRlc3QuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9HcmFwaFNPTk1hcHBlckVtYmVkZGVkVHlwZVRlc3QuamF2YQpAQCAtMjIsNiArMjIsNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuQnl0ZWNvZGU7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2VyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLkJ1bGtTZXQ7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLlRyYXZlcnNhbEV4cGxhbmF0aW9uOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udXRpbC5mdW5jdGlvbi5MYW1iZGE7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3Auc2hhZGVkLmphY2tzb24uZGF0YWJpbmQuT2JqZWN0TWFwcGVyOwpAQCAtNTQsNiArNTUsNyBAQAogCiBpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLl9fLl9fOwogaW1wb3J0IHN0YXRpYyBvcmcuaGFtY3Jlc3QuTWF0Y2hlcnMuZWl0aGVyOworaW1wb3J0IHN0YXRpYyBvcmcuaGFtY3Jlc3QuY29yZS5BbnlPZi5hbnlPZjsKIGltcG9ydCBzdGF0aWMgb3JnLmhhbWNyZXN0LmNvcmUuSXNOb3Qubm90OwogaW1wb3J0IHN0YXRpYyBvcmcuaGFtY3Jlc3QuY29yZS5TdHJpbmdTdGFydHNXaXRoLnN0YXJ0c1dpdGg7CiBpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOwpAQCAtODgsMTMgKzkwLDI2IEBACiAgICAgQFRlc3QKICAgICBwdWJsaWMgdm9pZCBzaG91bGRIYW5kbGVUcmF2ZXJzYWxFeHBsYW5hdGlvbigpIHRocm93cyBFeGNlcHRpb24gewogICAgICAgICBhc3N1bWVUaGF0KHZlcnNpb24sIG5vdChzdGFydHNXaXRoKCJ2MSIpKSk7Ci0gICAgICAgIAorCiAgICAgICAgIGZpbmFsIFRyYXZlcnNhbEV4cGxhbmF0aW9uIG8gPSBfXygpLm91dCgpLm91dFYoKS5vdXRFKCkuZXhwbGFpbigpOwogICAgICAgICBmaW5hbCBUcmF2ZXJzYWxFeHBsYW5hdGlvbiBkZXNlciA9IHNlcmlhbGl6ZURlc2VyaWFsaXplKG1hcHBlciwgbywgVHJhdmVyc2FsRXhwbGFuYXRpb24uY2xhc3MpOwogICAgICAgICBhc3NlcnRFcXVhbHMoby5wcmV0dHlQcmludCgpLCBkZXNlci5wcmV0dHlQcmludCgpKTsKICAgICB9CiAKICAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZEhhbmRsZUJ1bGtTZXQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgLy8gb25seSBzdXBwb3J0ZWQgb24gVjMKKyAgICAgICAgYXNzdW1lVGhhdCh2ZXJzaW9uLCBub3QoYW55T2Yoc3RhcnRzV2l0aCgidjEiKSwgc3RhcnRzV2l0aCgidjIiKSkpKTsKKworICAgICAgICBmaW5hbCBCdWxrU2V0PFN0cmluZz4gYnMgPSBuZXcgQnVsa1NldDw+KCk7CisgICAgICAgIGJzLmFkZCgidGVzdDEiLCAxKTsKKyAgICAgICAgYnMuYWRkKCJ0ZXN0MiIsIDIpOworICAgICAgICBicy5hZGQoInRlc3QzIiwgMyk7CisKKyAgICAgICAgYXNzZXJ0RXF1YWxzKGJzLCBzZXJpYWxpemVEZXNlcmlhbGl6ZShtYXBwZXIsIGJzLCBCdWxrU2V0LmNsYXNzKSk7CisgICAgfQorCisgICAgQFRlc3QKICAgICBwdWJsaWMgdm9pZCBzaG91bGRIYW5kbGVOdW1iZXJDb25zdGFudHMoKSB0aHJvd3MgRXhjZXB0aW9uIHsKICAgICAgICAgYXNzdW1lVGhhdCh2ZXJzaW9uLCBub3Qoc3RhcnRzV2l0aCgidjEiKSkpOwogCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9HcmFwaFNPTk1hcHBlclBhcnRpYWxFbWJlZGRlZFR5cGVUZXN0LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9HcmFwaFNPTk1hcHBlclBhcnRpYWxFbWJlZGRlZFR5cGVUZXN0LmphdmEKaW5kZXggNGU4NmViZC4uOTUzMzM1MyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vR3JhcGhTT05NYXBwZXJQYXJ0aWFsRW1iZWRkZWRUeXBlVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL0dyYXBoU09OTWFwcGVyUGFydGlhbEVtYmVkZGVkVHlwZVRlc3QuamF2YQpAQCAtMjEsNiArMjEsNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5yZW1vdGUudHJhdmVyc2FsLkRlZmF1bHRSZW1vdGVUcmF2ZXJzZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5CeXRlY29kZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UZXh0UDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5zaGFkZWQuamFja3Nvbi5kYXRhYmluZC5Kc29uTWFwcGluZ0V4Y2VwdGlvbjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5zaGFkZWQuamFja3Nvbi5kYXRhYmluZC5PYmplY3RNYXBwZXI7CkBAIC0zMjcsMTAgKzMyOCwxOSBAQAogICAgICAgICAgICAgICAgIFAud2l0aG91dCgxLDIsMyw0KSwKICAgICAgICAgICAgICAgICBQLndpdGhvdXQoQXJyYXlzLmFzTGlzdCgxLDIsMyw0KSksCiAgICAgICAgICAgICAgICAgUC5lcSgxKS5hbmQoUC5lcSgyKSksCi0gICAgICAgICAgICAgICAgUC5lcSgxKS5vcihQLmVxKDIpKSk7CisgICAgICAgICAgICAgICAgUC5lcSgxKS5vcihQLmVxKDIpKSwKKyAgICAgICAgICAgICAgICBUZXh0UC5jb250YWluaW5nKCJhcmsiKSwKKyAgICAgICAgICAgICAgICBUZXh0UC5zdGFydGluZ1dpdGgoIm1hciIpLAorICAgICAgICAgICAgICAgIFRleHRQLmVuZGluZ1dpdGgoImtvIiksCisgICAgICAgICAgICAgICAgVGV4dFAuZW5kaW5nV2l0aCgia28iKS5hbmQoUC5ndGUoIm1hciIpKSwKKyAgICAgICAgICAgICAgICBQLmd0ZSgibWFyIikuYW5kKFRleHRQLmVuZGluZ1dpdGgoImtvIikpKTsKIAogICAgICAgICBmb3IgKFAgcCA6IHZhcmlhbnRzT2ZQKSB7Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMocCwgc2VyaWFsaXplRGVzZXJpYWxpemUobWFwcGVyLCBwLCBQLmNsYXNzKSk7CisgICAgICAgICAgICBpZiAocCBpbnN0YW5jZW9mIFRleHRQKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKHAsIHNlcmlhbGl6ZURlc2VyaWFsaXplKG1hcHBlciwgcCwgVGV4dFAuY2xhc3MpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKHAsIHNlcmlhbGl6ZURlc2VyaWFsaXplKG1hcHBlciwgcCwgUC5jbGFzcykpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9HcmFwaFNPTlRva2Vuc1Rlc3QuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL0dyYXBoU09OVG9rZW5zVGVzdC5qYXZhCmluZGV4IDMzNjhmNDYuLjJlZmEzNTMgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL0dyYXBoU09OVG9rZW5zVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL0dyYXBoU09OVG9rZW5zVGVzdC5qYXZhCkBAIC0xOCw3ICsxOCw3IEBACiAgKi8KIHBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3JhcGhzb247CiAKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLlRlc3RIZWxwZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5Bc3NlcnRIZWxwZXI7CiBpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CiAKIC8qKgpAQCAtMjcsNiArMjcsNiBAQAogcHVibGljIGNsYXNzIEdyYXBoU09OVG9rZW5zVGVzdCB7CiAgICAgQFRlc3QKICAgICBwdWJsaWMgdm9pZCBzaG91bGRCZVV0aWxpdHlDbGFzcygpIHRocm93cyBFeGNlcHRpb24gewotICAgICAgICBUZXN0SGVscGVyLmFzc2VydElzVXRpbGl0eUNsYXNzKEdyYXBoU09OVG9rZW5zLmNsYXNzKTsKKyAgICAgICAgQXNzZXJ0SGVscGVyLmFzc2VydElzVXRpbGl0eUNsYXNzKEdyYXBoU09OVG9rZW5zLmNsYXNzKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9HcmFwaFNPTlV0aWxUZXN0LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9HcmFwaFNPTlV0aWxUZXN0LmphdmEKaW5kZXggMDI5NThlNS4uZmQyMDkzYyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vR3JhcGhTT05VdGlsVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL0dyYXBoU09OVXRpbFRlc3QuamF2YQpAQCAtMTgsNyArMTgsNyBAQAogICovCiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyYXBoc29uOwogCi1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5UZXN0SGVscGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uQXNzZXJ0SGVscGVyOwogaW1wb3J0IG9yZy5qdW5pdC5UZXN0OwogCiAvKioKQEAgLTI3LDYgKzI3LDYgQEAKIHB1YmxpYyBjbGFzcyBHcmFwaFNPTlV0aWxUZXN0IHsKICAgICBAVGVzdAogICAgIHB1YmxpYyB2b2lkIHNob3VsZEJlVXRpbGl0eUNsYXNzKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0gICAgICAgIFRlc3RIZWxwZXIuYXNzZXJ0SXNVdGlsaXR5Q2xhc3MoR3JhcGhTT05VdGlsLmNsYXNzKTsKKyAgICAgICAgQXNzZXJ0SGVscGVyLmFzc2VydElzVXRpbGl0eUNsYXNzKEdyYXBoU09OVXRpbC5jbGFzcyk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvdXRpbC9Db21wYXJhdG9yc1Rlc3QuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL3V0aWwvQ29tcGFyYXRvcnNUZXN0LmphdmEKaW5kZXggZWIxODJmZC4uOWY3OGYwMyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvdXRpbC9Db21wYXJhdG9yc1Rlc3QuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL0NvbXBhcmF0b3JzVGVzdC5qYXZhCkBAIC0xOCw3ICsxOCw3IEBACiAgKi8KIHBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbDsKIAotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uVGVzdEhlbHBlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkFzc2VydEhlbHBlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5FZGdlOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkVsZW1lbnQ7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuUHJvcGVydHk7CkBAIC0zOCw3ICszOCw3IEBACiBwdWJsaWMgY2xhc3MgQ29tcGFyYXRvcnNUZXN0IHsKICAgICBAVGVzdAogICAgIHB1YmxpYyB2b2lkIHNob3VsZEJlVXRpbGl0eUNsYXNzKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0gICAgICAgIFRlc3RIZWxwZXIuYXNzZXJ0SXNVdGlsaXR5Q2xhc3MoQ29tcGFyYXRvcnMuY2xhc3MpOworICAgICAgICBBc3NlcnRIZWxwZXIuYXNzZXJ0SXNVdGlsaXR5Q2xhc3MoQ29tcGFyYXRvcnMuY2xhc3MpOwogICAgIH0KIAogICAgIEBUZXN0CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL0VsZW1lbnRIZWxwZXJUZXN0LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL0VsZW1lbnRIZWxwZXJUZXN0LmphdmEKaW5kZXggZGU3NzRkYS4uNjM2ODU5ZCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvdXRpbC9FbGVtZW50SGVscGVyVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL3V0aWwvRWxlbWVudEhlbHBlclRlc3QuamF2YQpAQCAtMTgsNyArMTgsNyBAQAogICovCiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWw7CiAKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLlRlc3RIZWxwZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5Bc3NlcnRIZWxwZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuRWRnZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5FbGVtZW50OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkdyYXBoOwpAQCAtNTAsNyArNTAsNyBAQAogcHVibGljIGNsYXNzIEVsZW1lbnRIZWxwZXJUZXN0IHsKICAgICBAVGVzdAogICAgIHB1YmxpYyB2b2lkIHNob3VsZEJlVXRpbGl0eUNsYXNzKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0gICAgICAgIFRlc3RIZWxwZXIuYXNzZXJ0SXNVdGlsaXR5Q2xhc3MoRWxlbWVudEhlbHBlci5jbGFzcyk7CisgICAgICAgIEFzc2VydEhlbHBlci5hc3NlcnRJc1V0aWxpdHlDbGFzcyhFbGVtZW50SGVscGVyLmNsYXNzKTsKICAgICB9CiAKICAgICBAVGVzdApAQCAtMjc3LDggKzI3Nyw4IEBACiAgICAgfQogCiAgICAgQFRlc3QKLSAgICBwdWJsaWMgdm9pZCBzaG91bGREZXRlcm1pbmVFbGVtZW50c0FyZU5vdEVxdWFsV2hlbkJvdGhOdWxsKCkgewotICAgICAgICBhc3NlcnRGYWxzZShFbGVtZW50SGVscGVyLmFyZUVxdWFsKChFbGVtZW50KSBudWxsLCBudWxsKSk7CisgICAgcHVibGljIHZvaWQgc2hvdWxkRGV0ZXJtaW5lRWxlbWVudHNBcmVFcXVhbFdoZW5Cb3RoTnVsbCgpIHsKKyAgICAgICAgYXNzZXJ0VHJ1ZShFbGVtZW50SGVscGVyLmFyZUVxdWFsKChFbGVtZW50KSBudWxsLCBudWxsKSk7CiAgICAgfQogCiAgICAgQFRlc3QKQEAgLTMxMiw4ICszMTIsOCBAQAogICAgIH0KIAogICAgIEBUZXN0Ci0gICAgcHVibGljIHZvaWQgc2hvdWxkRGV0ZXJtaW5lUHJvcGVydGllc0FyZU5vdEVxdWFsQmVjYXVzZUJvdGhBcmVOdWxsKCkgewotICAgICAgICBhc3NlcnRGYWxzZShFbGVtZW50SGVscGVyLmFyZUVxdWFsKChQcm9wZXJ0eSkgbnVsbCwgbnVsbCkpOworICAgIHB1YmxpYyB2b2lkIHNob3VsZERldGVybWluZVByb3BlcnRpZXNBcmVFcXVhbEJlY2F1c2VCb3RoQXJlTnVsbCgpIHsKKyAgICAgICAgYXNzZXJ0VHJ1ZShFbGVtZW50SGVscGVyLmFyZUVxdWFsKChQcm9wZXJ0eSkgbnVsbCwgbnVsbCkpOwogICAgIH0KIAogICAgIEBUZXN0CkBAIC0zODQsNyArMzg0LDcgQEAKICAgICB9CiAKICAgICBAVGVzdAotICAgIHB1YmxpYyB2b2lkIHNob3VsZERldGVybWluZVByb3BlcnRpZXNBcmVOb3RFcXVhbFdoZW5FbGVtZW50c0FyZURpZmZlcmVudCgpIHsKKyAgICBwdWJsaWMgdm9pZCBzaG91bGREZXRlcm1pbmVQcm9wZXJ0aWVzQXJlRXF1YWxXaGVuRWxlbWVudHNBcmVEaWZmZXJlbnQoKSB7CiAgICAgICAgIGZpbmFsIFByb3BlcnR5IG1vY2tQcm9wZXJ0eUEgPSBtb2NrKFByb3BlcnR5LmNsYXNzKTsKICAgICAgICAgZmluYWwgUHJvcGVydHkgbW9ja1Byb3BlcnR5QiA9IG1vY2soUHJvcGVydHkuY2xhc3MpOwogICAgICAgICBmaW5hbCBFbGVtZW50IG1vY2tFbGVtZW50ID0gbW9jayhFbGVtZW50LmNsYXNzKTsKQEAgLTM5OCw3ICszOTgsNyBAQAogICAgICAgICB3aGVuKG1vY2tQcm9wZXJ0eUEudmFsdWUoKSkudGhlblJldHVybigidiIpOwogICAgICAgICB3aGVuKG1vY2tQcm9wZXJ0eUIudmFsdWUoKSkudGhlblJldHVybigidiIpOwogCi0gICAgICAgIGFzc2VydEZhbHNlKEVsZW1lbnRIZWxwZXIuYXJlRXF1YWwobW9ja1Byb3BlcnR5QSwgbW9ja1Byb3BlcnR5QikpOworICAgICAgICBhc3NlcnRUcnVlKEVsZW1lbnRIZWxwZXIuYXJlRXF1YWwobW9ja1Byb3BlcnR5QSwgbW9ja1Byb3BlcnR5QikpOwogICAgIH0KIAogICAgIEBUZXN0CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL0dyYXBoRmFjdG9yeVRlc3QuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL3V0aWwvR3JhcGhGYWN0b3J5VGVzdC5qYXZhCmluZGV4IDZkYmYxZDMuLjcwMWUxNTkgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL3V0aWwvR3JhcGhGYWN0b3J5VGVzdC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL3V0aWwvR3JhcGhGYWN0b3J5VGVzdC5qYXZhCkBAIC0yMCw3ICsyMCw3IEBACiAKIGltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29uZmlndXJhdGlvbi5CYXNlQ29uZmlndXJhdGlvbjsKIGltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29uZmlndXJhdGlvbi5Db25maWd1cmF0aW9uOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uVGVzdEhlbHBlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkFzc2VydEhlbHBlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuR3JhcGhDb21wdXRlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5FZGdlOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkdyYXBoOwpAQCAtNDcsNyArNDcsNyBAQAogcHVibGljIGNsYXNzIEdyYXBoRmFjdG9yeVRlc3QgewogICAgIEBUZXN0CiAgICAgcHVibGljIHZvaWQgc2hvdWxkQmVVdGlsaXR5Q2xhc3MoKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICAgICAgVGVzdEhlbHBlci5hc3NlcnRJc1V0aWxpdHlDbGFzcyhHcmFwaEZhY3RvcnkuY2xhc3MpOworICAgICAgICBBc3NlcnRIZWxwZXIuYXNzZXJ0SXNVdGlsaXR5Q2xhc3MoR3JhcGhGYWN0b3J5LmNsYXNzKTsKICAgICB9CiAKICAgICBAVGVzdApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvdXRpbC9HcmFwaFZhcmlhYmxlSGVscGVyVGVzdC5qYXZhIGIvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvdXRpbC9HcmFwaFZhcmlhYmxlSGVscGVyVGVzdC5qYXZhCmluZGV4IGFmNjdkOGIuLmZhODcyZGYgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL3V0aWwvR3JhcGhWYXJpYWJsZUhlbHBlclRlc3QuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL0dyYXBoVmFyaWFibGVIZWxwZXJUZXN0LmphdmEKQEAgLTE4LDcgKzE4LDcgQEAKICAqLwogcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsOwogCi1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5UZXN0SGVscGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uQXNzZXJ0SGVscGVyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkdyYXBoOwogaW1wb3J0IG9yZy5qdW5pdC5UZXN0OwogCkBAIC0zMSw3ICszMSw3IEBACiBwdWJsaWMgY2xhc3MgR3JhcGhWYXJpYWJsZUhlbHBlclRlc3QgewogICAgIEBUZXN0CiAgICAgcHVibGljIHZvaWQgc2hvdWxkQmVVdGlsaXR5Q2xhc3MoKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICAgICAgVGVzdEhlbHBlci5hc3NlcnRJc1V0aWxpdHlDbGFzcyhHcmFwaFZhcmlhYmxlSGVscGVyLmNsYXNzKTsKKyAgICAgICAgQXNzZXJ0SGVscGVyLmFzc2VydElzVXRpbGl0eUNsYXNzKEdyYXBoVmFyaWFibGVIZWxwZXIuY2xhc3MpOwogICAgIH0KIAogICAgIEBUZXN0CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL1N0cmluZ0ZhY3RvcnlUZXN0LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL1N0cmluZ0ZhY3RvcnlUZXN0LmphdmEKaW5kZXggM2RjYTk4OC4uNWE4ZGRjMyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvdXRpbC9TdHJpbmdGYWN0b3J5VGVzdC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL3V0aWwvU3RyaW5nRmFjdG9yeVRlc3QuamF2YQpAQCAtMTgsNyArMTgsNyBAQAogICovCiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWw7CiAKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLlRlc3RIZWxwZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5Bc3NlcnRIZWxwZXI7CiBpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CiAKIC8qKgpAQCAtMjcsNiArMjcsNiBAQAogcHVibGljIGNsYXNzIFN0cmluZ0ZhY3RvcnlUZXN0IHsKICAgICBAVGVzdAogICAgIHB1YmxpYyB2b2lkIHNob3VsZEJlVXRpbGl0eUNsYXNzKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0gICAgICAgIFRlc3RIZWxwZXIuYXNzZXJ0SXNVdGlsaXR5Q2xhc3MoU3RyaW5nRmFjdG9yeS5jbGFzcyk7CisgICAgICAgIEFzc2VydEhlbHBlci5hc3NlcnRJc1V0aWxpdHlDbGFzcyhTdHJpbmdGYWN0b3J5LmNsYXNzKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3V0aWwvR3JlbWxpblRlc3QuamF2YSBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vdXRpbC9HcmVtbGluVGVzdC5qYXZhCmluZGV4IDhjZThkNWMuLjE1MDQ2ODIgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vdXRpbC9HcmVtbGluVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vdXRpbC9HcmVtbGluVGVzdC5qYXZhCkBAIC0xOCw3ICsxOCw3IEBACiAgKi8KIHBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi51dGlsOwogCi1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5UZXN0SGVscGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uQXNzZXJ0SGVscGVyOwogaW1wb3J0IG9yZy5qdW5pdC5UZXN0OwogCiBpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOwpAQCAtMjksNyArMjksNyBAQAogcHVibGljIGNsYXNzIEdyZW1saW5UZXN0IHsKICAgICBAVGVzdAogICAgIHB1YmxpYyB2b2lkIHNob3VsZEJlVXRpbGl0eUNsYXNzKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0gICAgICAgIFRlc3RIZWxwZXIuYXNzZXJ0SXNVdGlsaXR5Q2xhc3MoR3JlbWxpbi5jbGFzcyk7CisgICAgICAgIEFzc2VydEhlbHBlci5hc3NlcnRJc1V0aWxpdHlDbGFzcyhHcmVtbGluLmNsYXNzKTsKICAgICB9CiAKICAgICBAVGVzdApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi91dGlsL1NlcmlhbGl6ZXJUZXN0LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3V0aWwvU2VyaWFsaXplclRlc3QuamF2YQppbmRleCAwZjQwMjgwLi44Y2FjY2E0IDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3V0aWwvU2VyaWFsaXplclRlc3QuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3V0aWwvU2VyaWFsaXplclRlc3QuamF2YQpAQCAtMTgsNyArMTgsNyBAQAogICovCiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udXRpbDsKIAotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uVGVzdEhlbHBlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkFzc2VydEhlbHBlcjsKIGltcG9ydCBvcmcuanVuaXQuVGVzdDsKIAogaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydEVxdWFsczsKQEAgLTMwLDcgKzMwLDcgQEAKIAogICAgIEBUZXN0CiAgICAgcHVibGljIHZvaWQgc2hvdWxkQmVVdGlsaXR5Q2xhc3MoKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICAgICAgVGVzdEhlbHBlci5hc3NlcnRJc1V0aWxpdHlDbGFzcyhTZXJpYWxpemVyLmNsYXNzKTsKKyAgICAgICAgQXNzZXJ0SGVscGVyLmFzc2VydElzVXRpbGl0eUNsYXNzKFNlcmlhbGl6ZXIuY2xhc3MpOwogICAgIH0KIAogICAgIEBUZXN0CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3V0aWwvVGltZVV0aWxUZXN0LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3V0aWwvVGltZVV0aWxUZXN0LmphdmEKaW5kZXggMjQyYTAxOC4uNWU1ZDcyYSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi91dGlsL1RpbWVVdGlsVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vdXRpbC9UaW1lVXRpbFRlc3QuamF2YQpAQCAtMTgsNyArMTgsNyBAQAogICovCiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udXRpbDsKIAotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uVGVzdEhlbHBlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkFzc2VydEhlbHBlcjsKIGltcG9ydCBvcmcuanVuaXQuVGVzdDsKIAogaW1wb3J0IGphdmEudXRpbC5jb25jdXJyZW50LmF0b21pYy5BdG9taWNJbnRlZ2VyOwpAQCAtMzIsNyArMzIsNyBAQAogCiAgICAgQFRlc3QKICAgICBwdWJsaWMgdm9pZCBzaG91bGRCZVV0aWxpdHlDbGFzcygpIHRocm93cyBFeGNlcHRpb24gewotICAgICAgICBUZXN0SGVscGVyLmFzc2VydElzVXRpbGl0eUNsYXNzKFRpbWVVdGlsLmNsYXNzKTsKKyAgICAgICAgQXNzZXJ0SGVscGVyLmFzc2VydElzVXRpbGl0eUNsYXNzKFRpbWVVdGlsLmNsYXNzKTsKICAgICB9CiAKICAgICBAVGVzdApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi91dGlsL2Z1bmN0aW9uL0Z1bmN0aW9uVXRpbHNUZXN0LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3V0aWwvZnVuY3Rpb24vRnVuY3Rpb25VdGlsc1Rlc3QuamF2YQppbmRleCAyNjc5ZmQxLi5iNjViNzQwIDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3V0aWwvZnVuY3Rpb24vRnVuY3Rpb25VdGlsc1Rlc3QuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3V0aWwvZnVuY3Rpb24vRnVuY3Rpb25VdGlsc1Rlc3QuamF2YQpAQCAtMTgsOCArMTgsNyBAQAogICovCiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udXRpbC5mdW5jdGlvbjsKIAotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uVGVzdEhlbHBlcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnV0aWwuaXRlcmF0b3IuSXRlcmF0b3JVdGlsczsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkFzc2VydEhlbHBlcjsKIGltcG9ydCBvcmcuanVuaXQuVGVzdDsKIAogaW1wb3J0IHN0YXRpYyBvcmcuaGFtY3Jlc3QuQ29yZU1hdGNoZXJzLmluc3RhbmNlT2Y7CkBAIC0zNCw3ICszMyw3IEBACiAKICAgICBAVGVzdAogICAgIHB1YmxpYyB2b2lkIHNob3VsZEJlVXRpbGl0eUNsYXNzKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0gICAgICAgIFRlc3RIZWxwZXIuYXNzZXJ0SXNVdGlsaXR5Q2xhc3MoRnVuY3Rpb25VdGlscy5jbGFzcyk7CisgICAgICAgIEFzc2VydEhlbHBlci5hc3NlcnRJc1V0aWxpdHlDbGFzcyhGdW5jdGlvblV0aWxzLmNsYXNzKTsKICAgICB9CiAKICAgICBAVGVzdApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi91dGlsL2l0ZXJhdG9yL0l0ZXJhdG9yVXRpbHNUZXN0LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3V0aWwvaXRlcmF0b3IvSXRlcmF0b3JVdGlsc1Rlc3QuamF2YQppbmRleCBmZTI5OTEzLi45NjQ5YmU5IDEwMDY0NAotLS0gYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3V0aWwvaXRlcmF0b3IvSXRlcmF0b3JVdGlsc1Rlc3QuamF2YQorKysgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3V0aWwvaXRlcmF0b3IvSXRlcmF0b3JVdGlsc1Rlc3QuamF2YQpAQCAtMTgsNyArMTgsNyBAQAogICovCiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udXRpbC5pdGVyYXRvcjsKIAotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uVGVzdEhlbHBlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkFzc2VydEhlbHBlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuRmFzdE5vU3VjaEVsZW1lbnRFeGNlcHRpb247CiBpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CiAKQEAgLTQ1LDcgKzQ1LDcgQEAKIAogICAgIEBUZXN0CiAgICAgcHVibGljIHZvaWQgc2hvdWxkQmVVdGlsaXR5Q2xhc3MoKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICAgICAgVGVzdEhlbHBlci5hc3NlcnRJc1V0aWxpdHlDbGFzcyhJdGVyYXRvclV0aWxzLmNsYXNzKTsKKyAgICAgICAgQXNzZXJ0SGVscGVyLmFzc2VydElzVXRpbGl0eUNsYXNzKEl0ZXJhdG9yVXRpbHMuY2xhc3MpOwogICAgIH0KIAogICAgIEBUZXN0CmRpZmYgLS1naXQgYS9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3V0aWwvdG9vbHMvTXVsdGlNYXBUZXN0LmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3V0aWwvdG9vbHMvTXVsdGlNYXBUZXN0LmphdmEKaW5kZXggMGMyYWQxNy4uYzUwMmE1MSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1jb3JlL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi91dGlsL3Rvb2xzL011bHRpTWFwVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tY29yZS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vdXRpbC90b29scy9NdWx0aU1hcFRlc3QuamF2YQpAQCAtMTgsOCArMTgsNyBAQAogICovCiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udXRpbC50b29sczsKIAotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uVGVzdEhlbHBlcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnV0aWwuaXRlcmF0b3IuSXRlcmF0b3JVdGlsczsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkFzc2VydEhlbHBlcjsKIGltcG9ydCBvcmcuanVuaXQuVGVzdDsKIAogaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKQEAgLTM5LDcgKzM4LDcgQEAKIAogICAgIEBUZXN0CiAgICAgcHVibGljIHZvaWQgc2hvdWxkQmVVdGlsaXR5Q2xhc3MoKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICAgICAgVGVzdEhlbHBlci5hc3NlcnRJc1V0aWxpdHlDbGFzcyhNdWx0aU1hcC5jbGFzcyk7CisgICAgICAgIEFzc2VydEhlbHBlci5hc3NlcnRJc1V0aWxpdHlDbGFzcyhNdWx0aU1hcC5jbGFzcyk7CiAgICAgfQogCiAgICAgQFRlc3QKZGlmZiAtLWdpdCBhL2dyZW1saW4tY29yZS9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvUmVtb3RlRHNsVHJhdmVyc2FsLmphdmEgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL1JlbW90ZURzbFRyYXZlcnNhbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1N2RhNzEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWNvcmUvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL1JlbW90ZURzbFRyYXZlcnNhbC5qYXZhCkBAIC0wLDAgKzEsMzEgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbDsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5yZW1vdGUuUmVtb3RlQ29ubmVjdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLkFub255bW91c1RyYXZlcnNhbFNvdXJjZTsKKworaW1wb3J0IHN0YXRpYyBvcmcubW9ja2l0by5Nb2NraXRvLm1vY2s7CisKK3B1YmxpYyBjbGFzcyBSZW1vdGVEc2xUcmF2ZXJzYWwgeworICAgIHB1YmxpYyBSZW1vdGVEc2xUcmF2ZXJzYWwoKSB7CisgICAgICAgIGZpbmFsIFJlbW90ZUNvbm5lY3Rpb24gbW9ja1JlbW90ZSA9IG1vY2soUmVtb3RlQ29ubmVjdGlvbi5jbGFzcyk7CisgICAgICAgIEFub255bW91c1RyYXZlcnNhbFNvdXJjZS50cmF2ZXJzYWwoU29jaWFsVHJhdmVyc2FsU291cmNlLmNsYXNzKS53aXRoUmVtb3RlKG1vY2tSZW1vdGUpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L2dsdi9HcmFwaFRyYXZlcnNhbFNvdXJjZS50ZW1wbGF0ZSBiL2dyZW1saW4tZG90bmV0L2dsdi9HcmFwaFRyYXZlcnNhbFNvdXJjZS50ZW1wbGF0ZQppbmRleCBiYmMzNjg0Li5mMzA5M2U1IDEwMDY0NAotLS0gYS9ncmVtbGluLWRvdG5ldC9nbHYvR3JhcGhUcmF2ZXJzYWxTb3VyY2UudGVtcGxhdGUKKysrIGIvZ3JlbWxpbi1kb3RuZXQvZ2x2L0dyYXBoVHJhdmVyc2FsU291cmNlLnRlbXBsYXRlCkBAIC0xMjgsOSArMTI4LDkgQEAKICAgICAgICAgLy8vICAgICBTcGF3bnMgYSA8c2VlIGNyZWY9IkdyYXBoVHJhdmVyc2Fse1NUeXBlLCBFVHlwZX0iIC8+IG9mZiB0aGlzIGdyYXBoIHRyYXZlcnNhbCBzb3VyY2UgYW5kIGFkZHMgdGhlIDwlPSBtZXRob2QubWV0aG9kTmFtZSAlPiBzdGVwIHRvIHRoYXQKICAgICAgICAgLy8vICAgICB0cmF2ZXJzYWwuCiAgICAgICAgIC8vLyA8L3N1bW1hcnk+Ci0gICAgICAgIHB1YmxpYyBHcmFwaFRyYXZlcnNhbDwkbWV0aG9kLnR5cGVOYW1lU3RyaW5nPiA8JT0gdG9DU2hhcnBNZXRob2ROYW1lLmNhbGwobWV0aG9kLm1ldGhvZE5hbWUpICU+PCU9IG1ldGhvZC50UGFyYW0gJT4oPCU9IG1ldGhvZC5wYXJhbWV0ZXJzICU+KQorICAgICAgICBwdWJsaWMgR3JhcGhUcmF2ZXJzYWw8JG1ldGhvZC50MSwgJG1ldGhvZC50Mj4gPCU9IHRvQ1NoYXJwTWV0aG9kTmFtZS5jYWxsKG1ldGhvZC5tZXRob2ROYW1lKSAlPjwlPSBtZXRob2QudFBhcmFtICU+KDwlPSBtZXRob2QucGFyYW1ldGVycyAlPikKICAgICAgICAgewotICAgICAgICAgICAgdmFyIHRyYXZlcnNhbCA9IG5ldyBHcmFwaFRyYXZlcnNhbDwkbWV0aG9kLnR5cGVOYW1lU3RyaW5nPihUcmF2ZXJzYWxTdHJhdGVnaWVzLCBuZXcgQnl0ZWNvZGUoQnl0ZWNvZGUpKTsKKyAgICAgICAgICAgIHZhciB0cmF2ZXJzYWwgPSBuZXcgR3JhcGhUcmF2ZXJzYWw8JG1ldGhvZC50MSwgJG1ldGhvZC50Mj4oVHJhdmVyc2FsU3RyYXRlZ2llcywgbmV3IEJ5dGVjb2RlKEJ5dGVjb2RlKSk7CiAgICAgICAgICAgICA8JSAgaWYgKG1ldGhvZC5wYXJhbWV0ZXJzLmNvbnRhaW5zKCJwYXJhbXMgIikpIHsKICAgICAgICAgICAlPnZhciBhcmdzID0gbmV3IExpc3Q8b2JqZWN0Pig8JT0gbWV0aG9kLnBhcmFtTmFtZXMuaW5pdCgpLnNpemUoKSAlPiArIDwlPSBtZXRob2QucGFyYW1OYW1lcy5sYXN0KCkgJT4uTGVuZ3RoKSB7PCU9IG1ldGhvZC5wYXJhbU5hbWVzLmluaXQoKS5qb2luKCIsICIpICU+fTsKICAgICAgICAgICAgIGFyZ3MuQWRkUmFuZ2UoPCU9IG1ldGhvZC5wYXJhbU5hbWVzLmxhc3QoKSAlPjwlIGlmIChtZXRob2QuaXNBcmdzQ2FzdE5lY2Vzc2FyeSkgeyAlPi5DYXN0PG9iamVjdD4oKTwlIH0gJT4pOwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvZ2x2L1RleHRQLnRlbXBsYXRlIGIvZ3JlbWxpbi1kb3RuZXQvZ2x2L1RleHRQLnRlbXBsYXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlMjg5ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWRvdG5ldC9nbHYvVGV4dFAudGVtcGxhdGUKQEAgLTAsMCArMSw3MSBAQAorI3JlZ2lvbiBMaWNlbnNlCisKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2VuZHJlZ2lvbgorCisvLyBUSElTIElTIEEgR0VORVJBVEVEIEZJTEUgLSBETyBOT1QgTU9ESUZZIFRISVMgRklMRSBESVJFQ1RMWSAtIHNlZSBwb20ueG1sCit1c2luZyBTeXN0ZW07Cit1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnM7Cit1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKK3VzaW5nIFN5c3RlbS5MaW5xOwordXNpbmcgU3lzdGVtLlJlZmxlY3Rpb247CisKK25hbWVzcGFjZSBHcmVtbGluLk5ldC5Qcm9jZXNzLlRyYXZlcnNhbAoreworI3ByYWdtYSB3YXJuaW5nIGRpc2FibGUgMTU5MQorCisgICAgLy8vIDxzdW1tYXJ5PgorICAgIC8vLyAgICAgQSA8c2VlIGNyZWY9IlRleHRQIiAvPiBpcyBhIHByZWRpY2F0ZSBvZiB0aGUgZm9ybSBGdW5jJmx0O3N0cmluZywgYm9vbCZndDsuCisgICAgLy8vICAgICBUaGF0IGlzLCBnaXZlbiBzb21lIHN0cmluZywgcmV0dXJuIHRydWUgb3IgZmFsc2UuCisgICAgLy8vIDwvc3VtbWFyeT4KKyAgICBwdWJsaWMgY2xhc3MgVGV4dFAgOiBQCisgICAgeworICAgICAgICAvLy8gPHN1bW1hcnk+CisgICAgICAgIC8vLyAgICAgSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iVGV4dFAiIC8+IGNsYXNzLgorICAgICAgICAvLy8gPC9zdW1tYXJ5PgorICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im9wZXJhdG9yTmFtZSI+VGhlIG5hbWUgb2YgdGhlIHByZWRpY2F0ZS48L3BhcmFtPgorICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InZhbHVlIj5UaGUgdmFsdWUgb2YgdGhlIHByZWRpY2F0ZS48L3BhcmFtPgorICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im90aGVyIj5BbiBvcHRpb25hbCBvdGhlciBwcmVkaWNhdGUgdGhhdCBpcyB1c2VkIGFzIGFuIGFyZ3VtZW50IGZvciB0aGlzIHByZWRpY2F0ZS48L3BhcmFtPgorICAgICAgICBwdWJsaWMgVGV4dFAoc3RyaW5nIG9wZXJhdG9yTmFtZSwgc3RyaW5nIHZhbHVlLCBQIG90aGVyID0gbnVsbCkgOiBiYXNlKG9wZXJhdG9yTmFtZSwgdmFsdWUsIG90aGVyKQorICAgICAgICB7CisgICAgICAgIH0KKworPCUgdHBtZXRob2RzLmVhY2ggeyBtZXRob2QgLT4gJT4KKyAgICAgICAgcHVibGljIHN0YXRpYyBUZXh0UCA8JT0gdG9DU2hhcnBNZXRob2ROYW1lLmNhbGwobWV0aG9kKSAlPihzdHJpbmcgdmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgVGV4dFAoIjwlPSBtZXRob2QgJT4iLCB2YWx1ZSk7CisgICAgICAgIH0KKzwlIH0gJT4KKworICAgICAgICBwcml2YXRlIHN0YXRpYyBUW10gVG9HZW5lcmljQXJyYXk8VD4oSUNvbGxlY3Rpb248VD4gY29sbGVjdGlvbikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb24/LlRvQXJyYXkoKSA/PyBuZXcgVFswXTsKKyAgICAgICAgfQorCisgICAgICAgIC8vLyA8aW5oZXJpdGRvYyAvPgorICAgICAgICBwdWJsaWMgb3ZlcnJpZGUgc3RyaW5nIFRvU3RyaW5nKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIE90aGVyID09IG51bGwgPyBcJCJ7T3BlcmF0b3JOYW1lfSh7VmFsdWV9KSIgOiBcJCJ7T3BlcmF0b3JOYW1lfSh7VmFsdWV9LHtPdGhlcn0pIjsKKyAgICAgICAgfQorICAgIH0KKworI3ByYWdtYSB3YXJuaW5nIHJlc3RvcmUgMTU5MQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvZ2x2L1Rva2VuLnRlbXBsYXRlIGIvZ3JlbWxpbi1kb3RuZXQvZ2x2L1Rva2VuLnRlbXBsYXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4NjYzNGEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWRvdG5ldC9nbHYvVG9rZW4udGVtcGxhdGUKQEAgLTAsMCArMSw0MyBAQAorI3JlZ2lvbiBMaWNlbnNlCisKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2VuZHJlZ2lvbgorCisvLyBUSElTIElTIEEgR0VORVJBVEVEIEZJTEUgLSBETyBOT1QgTU9ESUZZIFRISVMgRklMRSBESVJFQ1RMWSAtIHNlZSBwb20ueG1sCit1c2luZyBTeXN0ZW07Cit1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnM7Cit1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKK3VzaW5nIFN5c3RlbS5MaW5xOwordXNpbmcgU3lzdGVtLlJlZmxlY3Rpb247CisKK25hbWVzcGFjZSBHcmVtbGluLk5ldC5Qcm9jZXNzLlRyYXZlcnNhbAoreworI3ByYWdtYSB3YXJuaW5nIGRpc2FibGUgMTU5MQorCisgICAgcHVibGljIGNsYXNzIDwlPSB0b2tlbk5hbWUgJT4KKyAgICB7CisgICAgICAgIDwlIHRva2VuRmllbGRzLmVhY2gge2ssdiAtPiAlPgorICAgICAgICAgICAgcHVibGljIGNvbnN0IFN0cmluZyA8JT0gayAlPiA9ICI8JT0gdiAlPiI7CisgICAgICAgIDwlIH0gJT4KKyAgICB9CisKKyNwcmFnbWEgd2FybmluZyByZXN0b3JlIDE1OTEKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC9nbHYvV2l0aE9wdGlvbnMudGVtcGxhdGUgYi9ncmVtbGluLWRvdG5ldC9nbHYvV2l0aE9wdGlvbnMudGVtcGxhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDhkZDZiZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tZG90bmV0L2dsdi9XaXRoT3B0aW9ucy50ZW1wbGF0ZQpAQCAtMCwwICsxLDQ3IEBACisjcmVnaW9uIExpY2Vuc2UKKworLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjZW5kcmVnaW9uCisKKy8vIFRISVMgSVMgQSBHRU5FUkFURUQgRklMRSAtIERPIE5PVCBNT0RJRlkgVEhJUyBGSUxFIERJUkVDVExZIC0gc2VlIHBvbS54bWwKK3VzaW5nIFN5c3RlbTsKK3VzaW5nIFN5c3RlbS5Db2xsZWN0aW9uczsKK3VzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOwordXNpbmcgU3lzdGVtLkxpbnE7Cit1c2luZyBTeXN0ZW0uUmVmbGVjdGlvbjsKKworbmFtZXNwYWNlIEdyZW1saW4uTmV0LlByb2Nlc3MuVHJhdmVyc2FsLlN0ZXAuVXRpbAoreworI3ByYWdtYSB3YXJuaW5nIGRpc2FibGUgMTU5MQorCisgICAgLy8vIDxzdW1tYXJ5PgorICAgIC8vLyAgICAgQ29uZmlndXJhdGlvbiBvcHRpb25zIHRvIGJlIHBhc3NlZCB0byB0aGUgPGM+V2l0aCgpPC9jPiBtb2R1bGF0b3IuCisgICAgLy8vIDwvc3VtbWFyeT4KKyAgICBwdWJsaWMgY2xhc3MgV2l0aE9wdGlvbnMKKyAgICB7Cis8JSB3aXRoT3B0aW9ucy5lYWNoIHsgZmllbGQgLT4gJT4KKworICAgICAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IDwlPSBmaWVsZC50eXBlICU+IDwlPSBmaWVsZC5uYW1lICU+ID0gPCU9IGZpZWxkLnZhbHVlICU+OworPCUgfSAlPgorICAgIH0KKworI3ByYWdtYSB3YXJuaW5nIHJlc3RvcmUgMTU5MQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvZ2x2L2dlbmVyYXRlLmdyb292eSBiL2dyZW1saW4tZG90bmV0L2dsdi9nZW5lcmF0ZS5ncm9vdnkKaW5kZXggZjM5NjgwYy4uMjZkYWE1OCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kb3RuZXQvZ2x2L2dlbmVyYXRlLmdyb292eQorKysgYi9ncmVtbGluLWRvdG5ldC9nbHYvZ2VuZXJhdGUuZ3Jvb3Z5CkBAIC0xOCwxMSArMTgsMTggQEAKICAqLwogCiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5qc3IyMjMuQ29yZUltcG9ydHMKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIudHJhdmVyc2FsLnN0ZXAubWFwLkNvbm5lY3RlZENvbXBvbmVudAoraW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwuc3RlcC5tYXAuUGFnZVJhbmsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIudHJhdmVyc2FsLnN0ZXAubWFwLlBlZXJQcmVzc3VyZQoraW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwuc3RlcC5tYXAuU2hvcnRlc3RQYXRoCiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWxTb3VyY2UKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5HcmFwaFRyYXZlcnNhbAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkdyYXBoVHJhdmVyc2FsU291cmNlCiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UZXh0UAoraW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuSU8KIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5fXworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLldpdGhPcHRpb25zCiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuRGlyZWN0aW9uCiBpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuTW9kaWZpZXIKIGltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5UeXBlVmFyaWFibGUKQEAgLTM4LDYgKzQ1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIk9iamVjdFtdIjogIm9iamVjdFtdIiwKICAgICAgICAgICAgICAgICAgICAgICAgIkNsYXNzIjogIlR5cGUiLAogICAgICAgICAgICAgICAgICAgICAgICAiQ2xhc3NbXSI6ICJUeXBlW10iLAorICAgICAgICAgICAgICAgICAgICAgICAiamF2YS51dGlsLk1hcDxqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuT2JqZWN0PiI6ICJJRGljdGlvbmFyeTxzdHJpbmcsIG9iamVjdD4iLAogICAgICAgICAgICAgICAgICAgICAgICAiamF2YS51dGlsLk1hcDxqYXZhLmxhbmcuU3RyaW5nLCBFMj4iOiAiSURpY3Rpb25hcnk8c3RyaW5nLCBFMj4iLAogICAgICAgICAgICAgICAgICAgICAgICAiamF2YS51dGlsLk1hcDxqYXZhLmxhbmcuU3RyaW5nLCBCPiI6ICJJRGljdGlvbmFyeTxzdHJpbmcsIEUyPiIsCiAgICAgICAgICAgICAgICAgICAgICAgICJqYXZhLnV0aWwuTWFwPGphdmEubGFuZy5PYmplY3QsIEUyPiI6ICJJRGljdGlvbmFyeTxvYmplY3QsIEUyPiIsCkBAIC01Myw2ICs2MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICJUcmF2ZXJzYWxbXSI6ICJJVHJhdmVyc2FsW10iLAogICAgICAgICAgICAgICAgICAgICAgICAiUHJlZGljYXRlIjogIklQcmVkaWNhdGUiLAogICAgICAgICAgICAgICAgICAgICAgICAiUCI6ICJQIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIlRleHRQIjogIlRleHRQIiwKICAgICAgICAgICAgICAgICAgICAgICAgIlRyYXZlcnNhbFN0cmF0ZWd5IjogIklUcmF2ZXJzYWxTdHJhdGVneSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJUcmF2ZXJzYWxTdHJhdGVneVtdIjogIklUcmF2ZXJzYWxTdHJhdGVneVtdIiwKICAgICAgICAgICAgICAgICAgICAgICAgIkZ1bmN0aW9uIjogIklGdW5jdGlvbiIsCkBAIC0xMDYsNiArMTE1LDEwIEBACiAKIGRlZiB0b0NTaGFycE1ldGhvZE5hbWUgPSB7IHN5bWJvbCAtPiAoU3RyaW5nKSBDaGFyYWN0ZXIudG9VcHBlckNhc2Uoc3ltYm9sLmNoYXJBdCgwKSkgKyBzeW1ib2wuc3Vic3RyaW5nKDEpIH0KIAorZGVmIHRvQ1NoYXJwVmFsdWUgPSB7IHR5cGUsIHZhbHVlIC0+CisgIHR5cGUgPT0gU3RyaW5nLmNsYXNzICYmIHZhbHVlICE9IG51bGwgPyAoJyInICsgdmFsdWUgKyAnIicpIDogdmFsdWUKK30KKwogZGVmIGdldEphdmFHZW5lcmljVHlwZVBhcmFtZXRlclR5cGVOYW1lcyA9IHsgbWV0aG9kIC0+CiAgICAgZGVmIHR5cGVBcmd1bWVudHMgPSBtZXRob2QuZ2VuZXJpY1JldHVyblR5cGUuYWN0dWFsVHlwZUFyZ3VtZW50cwogICAgIHJldHVybiB0eXBlQXJndW1lbnRzLgpAQCAtMTI1LDcgKzEzOCw3IEBACiAgICAgcmV0dXJuIG1ldGhvZC5wYXJhbWV0ZXJzLgogICAgICAgICAgICAgY29sbGVjdCB7IHBhcmFtIC0+CiAgICAgICAgICAgICAgICAgcGFyYW0udHlwZS5zaW1wbGVOYW1lCi0gICAgICAgICAgICB9IAorICAgICAgICAgICAgfQogfQogCiBkZWYgdG9DU2hhcnBQYXJhbVN0cmluZyA9IHsgcGFyYW0sIGdlblR5cGVOYW1lIC0+CkBAIC0xNzQsNyArMTg3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZ2VuVHlwZSBpbnN0YW5jZW9mIEdlbmVyaWNBcnJheVR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoKEdlbmVyaWNBcnJheVR5cGUpZ2VuVHlwZSkuZ2V0R2VuZXJpY0NvbXBvbmVudFR5cGUoKSBpbnN0YW5jZW9mIFR5cGVWYXJpYWJsZTw/PikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlblR5cGVOYW1lID0gKChUeXBlVmFyaWFibGU8Pz4pKChHZW5lcmljQXJyYXlUeXBlKWdlblR5cGUpLmdldEdlbmVyaWNDb21wb25lbnRUeXBlKCkpLm5hbWUgKyAiW10iCi0gICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgdG9DU2hhcnBQYXJhbVN0cmluZyhwYXJhbSwgZ2VuVHlwZU5hbWUpCkBAIC0yMjEsMTIgKzIzNCwyNCBAQAogICAgIHJldHVybiB0MgogfQogCitkZWYgZ2F0aGVyVG9rZW5zRnJvbSA9IHsgdG9rZW5DbGFzc2VzIC0+CisgICAgZGVmIG0gPSBbOl0KKyAgICB0b2tlbkNsYXNzZXMuZWFjaCB7IHRjIC0+IG0gPDwgWyh0Yy5zaW1wbGVOYW1lKSA6IHRjLmdldEZpZWxkcygpLnNvcnR7IGEsIGIgLT4gYS5uYW1lIDw9PiBiLm5hbWUgfS5jb2xsZWN0RW50cmllc3sgZiAtPiBbKGYubmFtZSkgOiBmLmdldChudWxsKV19XX0KKyAgICByZXR1cm4gbQorfQorCiBkZWYgYmluZGluZyA9IFsicG1ldGhvZHMiOiBQLmNsYXNzLmdldE1ldGhvZHMoKS4KICAgICAgICAgZmluZEFsbCB7IE1vZGlmaWVyLmlzU3RhdGljKGl0LmdldE1vZGlmaWVycygpKSB9LgogICAgICAgICBmaW5kQWxsIHsgUC5jbGFzcy5pc0Fzc2lnbmFibGVGcm9tKGl0LnJldHVyblR5cGUpIH0uCiAgICAgICAgIGNvbGxlY3QgeyBpdC5uYW1lIH0uCiAgICAgICAgIHVuaXF1ZSgpLgogICAgICAgICBzb3J0IHsgYSwgYiAtPiBhIDw9PiBiIH0sCisgICAgICAgICAgICAgICAidHBtZXRob2RzIjogVGV4dFAuY2xhc3MuZ2V0TWV0aG9kcygpLgorICAgICAgICAgICAgICAgICAgICAgICBmaW5kQWxsIHsgTW9kaWZpZXIuaXNTdGF0aWMoaXQuZ2V0TW9kaWZpZXJzKCkpIH0uCisgICAgICAgICAgICAgICAgICAgICAgIGZpbmRBbGwgeyBUZXh0UC5jbGFzcy5pc0Fzc2lnbmFibGVGcm9tKGl0LnJldHVyblR5cGUpIH0uCisgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3QgeyBpdC5uYW1lIH0uCisgICAgICAgICAgICAgICAgICAgICAgIHVuaXF1ZSgpLgorICAgICAgICAgICAgICAgICAgICAgICBzb3J0IHsgYSwgYiAtPiBhIDw9PiBiIH0sCiAgICAgICAgICAgICAgICAic291cmNlU3RlcE1ldGhvZHMiOiBHcmFwaFRyYXZlcnNhbFNvdXJjZS5nZXRNZXRob2RzKCkuIC8vIFNPVVJDRSBTVEVQUwogICAgICAgICAgICAgICAgICAgICAgICAgZmluZEFsbCB7IEdyYXBoVHJhdmVyc2FsU291cmNlLmNsYXNzLmVxdWFscyhpdC5yZXR1cm5UeXBlKSB9LgogICAgICAgICAgICAgICAgICAgICAgICAgZmluZEFsbCB7CkBAIC0yNDMsMTkgKzI2OCwxOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbIm1ldGhvZE5hbWUiOiBqYXZhTWV0aG9kLm5hbWUsICJwYXJhbWV0ZXJzIjpwYXJhbWV0ZXJzLCAicGFyYW1OYW1lcyI6cGFyYW1OYW1lc10KICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAic291cmNlU3Bhd25NZXRob2RzIjogR3JhcGhUcmF2ZXJzYWxTb3VyY2UuZ2V0TWV0aG9kcygpLiAvLyBTUEFXTiBTVEVQUwotICAgICAgICAgICAgICAgICAgICAgICAgZmluZEFsbCB7IEdyYXBoVHJhdmVyc2FsLmNsYXNzLmVxdWFscyhpdC5yZXR1cm5UeXBlKSB9LiAgICAgICAgICAKLSAgICAgICAgICAgICAgICAvLyBTZWxlY3QgdW5pcXVlIGNvbWJpbmF0aW9uIG9mIEMjIHBhcmFtZXRlciB0eXBlcyBhbmQgc29ydCBieSBKYXZhIHBhcmFtZXRlciB0eXBlIGNvbWJpbmF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmRBbGwgeyBHcmFwaFRyYXZlcnNhbC5jbGFzcy5lcXVhbHMoaXQucmV0dXJuVHlwZSkgfS4KKyAgICAgICAgICAgICAgICAvLyBTZWxlY3QgdW5pcXVlIGNvbWJpbmF0aW9uIG9mIEMjIHBhcmFtZXRlciB0eXBlcyBhbmQgc29ydCBieSBKYXZhIHBhcmFtZXRlciB0eXBlIGNvbWJpbmF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0IHsgYSwgYiAtPiBhLm5hbWUgPD0+IGIubmFtZSA/OiBnZXRKYXZhUGFyYW1UeXBlU3RyaW5nKGEpIDw9PiBnZXRKYXZhUGFyYW1UeXBlU3RyaW5nKGIpIH0uCiAgICAgICAgICAgICAgICAgICAgICAgICB1bmlxdWUgeyBhLGIgLT4gYS5uYW1lIDw9PiBiLm5hbWUgPzogZ2V0Q1NoYXJwUGFyYW1UeXBlU3RyaW5nKGEpIDw9PiBnZXRDU2hhcnBQYXJhbVR5cGVTdHJpbmcoYikgfS4KICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3QgeyBqYXZhTWV0aG9kIC0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmIHR5cGVOYW1lcyA9IGdldEphdmFHZW5lcmljVHlwZVBhcmFtZXRlclR5cGVOYW1lcyhqYXZhTWV0aG9kKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZiB0eXBlTmFtZVN0cmluZyA9IHR5cGVOYW1lcy5qb2luKCIsICIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmIHQxID0gdG9DU2hhcnBUeXBlKHR5cGVOYW1lc1swXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWYgdDIgPSB0b0NTaGFycFR5cGUodHlwZU5hbWVzWzFdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZiB0UGFyYW0gPSBnZXRDU2hhcnBHZW5lcmljVHlwZVBhcmFtKHQyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZiBwYXJhbWV0ZXJzID0gZ2V0Q1NoYXJwUGFyYW1TdHJpbmcoamF2YU1ldGhvZCwgdHJ1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWYgcGFyYW1OYW1lcyA9IGdldFBhcmFtTmFtZXMoamF2YU1ldGhvZC5wYXJhbWV0ZXJzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZiBpc0FyZ3NDYXN0TmVjZXNzYXJ5ID0gaXNQYXJhbXNBcmdDYXN0TmVjZXNzYXJ5KHBhcmFtZXRlcnMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsibWV0aG9kTmFtZSI6IGphdmFNZXRob2QubmFtZSwgInR5cGVOYW1lU3RyaW5nIjogdHlwZU5hbWVTdHJpbmcsICJ0UGFyYW0iOnRQYXJhbSwgInBhcmFtZXRlcnMiOnBhcmFtZXRlcnMsICJwYXJhbU5hbWVzIjpwYXJhbU5hbWVzLCAiaXNBcmdzQ2FzdE5lY2Vzc2FyeSI6aXNBcmdzQ2FzdE5lY2Vzc2FyeV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWyJtZXRob2ROYW1lIjogamF2YU1ldGhvZC5uYW1lLCAidDEiOnQxLCAidDIiOnQyLCAidFBhcmFtIjp0UGFyYW0sICJwYXJhbWV0ZXJzIjpwYXJhbWV0ZXJzLCAicGFyYW1OYW1lcyI6cGFyYW1OYW1lcywgImlzQXJnc0Nhc3ROZWNlc3NhcnkiOmlzQXJnc0Nhc3ROZWNlc3NhcnldCiAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgImdyYXBoU3RlcE1ldGhvZHMiOiBHcmFwaFRyYXZlcnNhbC5nZXRNZXRob2RzKCkuCiAgICAgICAgICAgICAgICAgICAgICAgICBmaW5kQWxsIHsgR3JhcGhUcmF2ZXJzYWwuY2xhc3MuZXF1YWxzKGl0LnJldHVyblR5cGUpIH0uCkBAIC0zMDAsNyArMzI1LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmIGdyYXBoVHJhdmVyc2FsVDIgPSBnZXRHcmFwaFRyYXZlcnNhbFQyRm9yVDIodDIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsibWV0aG9kTmFtZSI6IGphdmFNZXRob2QubmFtZSwgInQyIjp0MiwgInRQYXJhbSI6dFBhcmFtLCAicGFyYW1ldGVycyI6cGFyYW1ldGVycywgInBhcmFtTmFtZXMiOnBhcmFtTmFtZXMsICJjYWxsR2VuZXJpY1R5cGVBcmciOmNhbGxHZW5lcmljVHlwZUFyZywgImdyYXBoVHJhdmVyc2FsVDIiOmdyYXBoVHJhdmVyc2FsVDJdCiAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgInRvQ1NoYXJwTWV0aG9kTmFtZSI6IHRvQ1NoYXJwTWV0aG9kTmFtZV0KKyAgICAgICAgICAgICAgICJ0b2tlbnMiOiBnYXRoZXJUb2tlbnNGcm9tKFtJTywgQ29ubmVjdGVkQ29tcG9uZW50LCBTaG9ydGVzdFBhdGgsIFBhZ2VSYW5rLCBQZWVyUHJlc3N1cmVdKSwKKyAgICAgICAgICAgICAgICJ0b0NTaGFycE1ldGhvZE5hbWUiOiB0b0NTaGFycE1ldGhvZE5hbWUsCisgICAgICAgICAgICAgICAid2l0aE9wdGlvbnMiOiBXaXRoT3B0aW9ucy5nZXREZWNsYXJlZEZpZWxkcygpLgorICAgICAgICAgICAgICAgICAgICAgICAgY29sbGVjdCB7WyJ0eXBlIjogdG9DU2hhcnBUeXBlKGl0LnR5cGUuc2ltcGxlTmFtZSksICJuYW1lIjogdG9DU2hhcnBNZXRob2ROYW1lKGl0Lm5hbWUpLCAidmFsdWUiOiB0b0NTaGFycFZhbHVlKGl0LnR5cGUsIGl0LmdldChudWxsKSldfV0KIAogZGVmIGVuZ2luZSA9IG5ldyBncm9vdnkudGV4dC5HU3RyaW5nVGVtcGxhdGVFbmdpbmUoKQogZGVmIHRyYXZlcnNhbFRlbXBsYXRlID0gZW5naW5lLmNyZWF0ZVRlbXBsYXRlKG5ldyBGaWxlKCIke3Byb2plY3RCYXNlRGlyfS9nbHYvR3JhcGhUcmF2ZXJzYWwudGVtcGxhdGUiKSkubWFrZShiaW5kaW5nKQpAQCAtMzE5LDYgKzM0NywxOSBAQAogZGVmIHBGaWxlID0gbmV3IEZpbGUoIiR7cHJvamVjdEJhc2VEaXJ9L3NyYy9HcmVtbGluLk5ldC9Qcm9jZXNzL1RyYXZlcnNhbC9QLmNzIikKIHBGaWxlLm5ld1dyaXRlcigpLndpdGhXcml0ZXJ7IGl0IDw8IHBUZW1wbGF0ZSB9CiAKK2RlZiB0cFRlbXBsYXRlID0gZW5naW5lLmNyZWF0ZVRlbXBsYXRlKG5ldyBGaWxlKCIke3Byb2plY3RCYXNlRGlyfS9nbHYvVGV4dFAudGVtcGxhdGUiKSkubWFrZShiaW5kaW5nKQorZGVmIHRwRmlsZSA9IG5ldyBGaWxlKCIke3Byb2plY3RCYXNlRGlyfS9zcmMvR3JlbWxpbi5OZXQvUHJvY2Vzcy9UcmF2ZXJzYWwvVGV4dFAuY3MiKQordHBGaWxlLm5ld1dyaXRlcigpLndpdGhXcml0ZXJ7IGl0IDw8IHRwVGVtcGxhdGUgfQorCitkZWYgd2l0aE9wdGlvbnNUZW1wbGF0ZSA9IGVuZ2luZS5jcmVhdGVUZW1wbGF0ZShuZXcgRmlsZSgiJHtwcm9qZWN0QmFzZURpcn0vZ2x2L1dpdGhPcHRpb25zLnRlbXBsYXRlIikpLm1ha2UoYmluZGluZykKK2RlZiB3aXRoT3B0aW9uc0ZpbGUgPSBuZXcgRmlsZSgiJHtwcm9qZWN0QmFzZURpcn0vc3JjL0dyZW1saW4uTmV0L1Byb2Nlc3MvVHJhdmVyc2FsL1dpdGhPcHRpb25zLmNzIikKK3dpdGhPcHRpb25zRmlsZS5uZXdXcml0ZXIoKS53aXRoV3JpdGVyeyBpdCA8PCB3aXRoT3B0aW9uc1RlbXBsYXRlIH0KKworYmluZGluZy50b2tlbnMuZWFjaCB7ayx2IC0+CisgICAgZGVmIHRva2VuVGVtcGxhdGUgPSBlbmdpbmUuY3JlYXRlVGVtcGxhdGUobmV3IEZpbGUoIiR7cHJvamVjdEJhc2VEaXJ9L2dsdi9Ub2tlbi50ZW1wbGF0ZSIpKS5tYWtlKFt0b2tlbkZpZWxkczogdiwgdG9rZW5OYW1lOiBrXSkKKyAgICBkZWYgdG9rZW5GaWxlID0gbmV3IEZpbGUoIiR7cHJvamVjdEJhc2VEaXJ9L3NyYy9HcmVtbGluLk5ldC9Qcm9jZXNzL1RyYXZlcnNhbC8ke2t9LmNzIikKKyAgICB0b2tlbkZpbGUubmV3V3JpdGVyKCkud2l0aFdyaXRlcnsgaXQgPDwgdG9rZW5UZW1wbGF0ZSB9Cit9CiAKIGRlZiBjcmVhdGVFbnVtID0geyBlbnVtQ2xhc3MgLT4KICAgICBkZWYgYiA9IFsiZW51bUNsYXNzIjogZW51bUNsYXNzLApAQCAtMzYyLDQgKzQwMyw0IEBACiB0ZW1wbGF0ZUNzcHJvakZpbGUubmV3V3JpdGVyKCkud2l0aFdyaXRlcnsgaXQgPDwgdGVtcGxhdGVDc3Byb2pUZW1wbGF0ZSB9CiBkZWYgbnVzcGVjVGVtcGxhdGUgPSBlbmdpbmUuY3JlYXRlVGVtcGxhdGUobmV3IEZpbGUoIiR7cHJvamVjdEJhc2VEaXJ9L2dsdi9HcmVtbGluLk5ldC5UZW1wbGF0ZS5udXNwZWMudGVtcGxhdGUiKSkubWFrZShbInByb2plY3RWZXJzaW9uIjp2ZXJzaW9uVG9Vc2VdKQogZGVmIG51c3BlY0ZpbGUgPSBuZXcgRmlsZSgiJHtwcm9qZWN0QmFzZURpcn0vc3JjL0dyZW1saW4uTmV0LlRlbXBsYXRlL0dyZW1saW4uTmV0LlRlbXBsYXRlLm51c3BlYyIpCi1udXNwZWNGaWxlLm5ld1dyaXRlcigpLndpdGhXcml0ZXJ7IGl0IDw8IG51c3BlY1RlbXBsYXRlIH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitudXNwZWNGaWxlLm5ld1dyaXRlcigpLndpdGhXcml0ZXJ7IGl0IDw8IG51c3BlY1RlbXBsYXRlIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3BvbS54bWwgYi9ncmVtbGluLWRvdG5ldC9wb20ueG1sCmluZGV4IDM5OGJmZTAuLmYyNDVjMGYgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZG90bmV0L3BvbS54bWwKKysrIGIvZ3JlbWxpbi1kb3RuZXQvcG9tLnhtbApAQCAtMjEsNyArMjEsNyBAQAogICAgIDxwYXJlbnQ+CiAgICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUudGlua2VycG9wPC9ncm91cElkPgogICAgICAgICA8YXJ0aWZhY3RJZD50aW5rZXJwb3A8L2FydGlmYWN0SWQ+Ci0gICAgICAgIDx2ZXJzaW9uPjMuMy4xMS1TTkFQU0hPVDwvdmVyc2lvbj4KKyAgICAgICAgPHZlcnNpb24+My40LjctU05BUFNIT1Q8L3ZlcnNpb24+CiAgICAgPC9wYXJlbnQ+CiAgICAgPGFydGlmYWN0SWQ+Z3JlbWxpbi1kb3RuZXQ8L2FydGlmYWN0SWQ+CiAgICAgPG5hbWU+QXBhY2hlIFRpbmtlclBvcCA6OiBHcmVtbGluLk5ldDwvbmFtZT4KQEAgLTcyLDcgKzcyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cElkPm9yZy5jb2RlaGF1cy5ncm9vdnk8L2dyb3VwSWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5ncm9vdnktYWxsPC9hcnRpZmFjdElkPgogICAgICAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+JHtncm9vdnkudmVyc2lvbn08L3ZlcnNpb24+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8Y2xhc3NpZmllcj5pbmR5PC9jbGFzc2lmaWVyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGU+cG9tPC90eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPnJ1bnRpbWU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICA8L2RlcGVuZGVuY3k+CiAgICAgICAgICAgICAgICAgICAgIDxkZXBlbmRlbmN5PgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0LlRlbXBsYXRlL0dyZW1saW4uTmV0LlRlbXBsYXRlLmNzcHJvaiBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC5UZW1wbGF0ZS9HcmVtbGluLk5ldC5UZW1wbGF0ZS5jc3Byb2oKaW5kZXggYzZmZDFlNS4uNmFmMTY5NCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0LlRlbXBsYXRlL0dyZW1saW4uTmV0LlRlbXBsYXRlLmNzcHJvagorKysgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQuVGVtcGxhdGUvR3JlbWxpbi5OZXQuVGVtcGxhdGUuY3Nwcm9qCkBAIC0yNiw3ICsyNiw3IEBACiAgIDxJdGVtR3JvdXA+CiAgICAgPCEtLSBXZSBuZWVkIGJvdGggcmVmZXJlbmNlIGVsZW1lbnRzIHVudGlsIHRoaXMgaXMgcmVzb2x2ZWQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9kb3RuZXQvc2RrL2lzc3Vlcy8xMTUxIC0tPgogICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9Ii4uL0dyZW1saW4uTmV0L0dyZW1saW4uTmV0LmNzcHJvaiIgLz4KLSAgICA8UGFja2FnZVJlZmVyZW5jZSBJbmNsdWRlPSJHcmVtbGluLk5ldCIgVmVyc2lvbj0iMy4zLjExLVNOQVBTSE9UIiAvPgorICAgIDxQYWNrYWdlUmVmZXJlbmNlIEluY2x1ZGU9IkdyZW1saW4uTmV0IiBWZXJzaW9uPSIzLjQuNy1TTkFQU0hPVCIgLz4KICAgPC9JdGVtR3JvdXA+CiAKIDwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC5UZW1wbGF0ZS9HcmVtbGluLk5ldC5UZW1wbGF0ZS5udXNwZWMgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQuVGVtcGxhdGUvR3JlbWxpbi5OZXQuVGVtcGxhdGUubnVzcGVjCmluZGV4IDlhMzE2MzAuLjY4YWUyODMgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC5UZW1wbGF0ZS9HcmVtbGluLk5ldC5UZW1wbGF0ZS5udXNwZWMKKysrIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0LlRlbXBsYXRlL0dyZW1saW4uTmV0LlRlbXBsYXRlLm51c3BlYwpAQCAtMyw3ICszLDcgQEAKICAgICA8bWV0YWRhdGE+CiAgICAgICAgIDxpZD5HcmVtbGluLk5ldC5UZW1wbGF0ZTwvaWQ+CiAgICAgICAgIDx0aXRsZT5HcmVtbGluLk5ldCBUZW1wbGF0ZTwvdGl0bGU+Ci0gICAgICAgIDx2ZXJzaW9uPjMuMy4xMS1TTkFQU0hPVDwvdmVyc2lvbj4KKyAgICAgICAgPHZlcnNpb24+My40LjctU05BUFNIT1Q8L3ZlcnNpb24+CiAgICAgICAgIDxkZXNjcmlwdGlvbj5HcmVtbGluLk5ldCB0ZW1wbGF0ZSB0byBjcmVhdGUgYSBjb25zb2xlIGFwcGxpY2F0aW9uIHdpdGggZG90bmV0IG5ldy48L2Rlc2NyaXB0aW9uPgogICAgICAgICA8YXV0aG9ycz5BcGFjaGUgVGlua2VyUG9wPC9hdXRob3JzPgogICAgICAgICA8bGljZW5zZSB0eXBlPSJleHByZXNzaW9uIj5BcGFjaGUtMi4wPC9saWNlbnNlPgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9Db25uZWN0aW9uLmNzIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9Db25uZWN0aW9uLmNzCmluZGV4IGYxNDJjZTUuLjc0MzZjM2QgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Ecml2ZXIvQ29ubmVjdGlvbi5jcworKysgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL0Nvbm5lY3Rpb24uY3MKQEAgLTIyLDE3ICsyMiwyNiBAQAogI2VuZHJlZ2lvbgogCiB1c2luZyBTeXN0ZW07Cit1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuQ29uY3VycmVudDsKIHVzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOwogdXNpbmcgU3lzdGVtLk5ldC5XZWJTb2NrZXRzOwogdXNpbmcgU3lzdGVtLlRleHQ7Cit1c2luZyBTeXN0ZW0uVGhyZWFkaW5nOwogdXNpbmcgU3lzdGVtLlRocmVhZGluZy5UYXNrczsKIHVzaW5nIEdyZW1saW4uTmV0LkRyaXZlci5NZXNzYWdlczsKLXVzaW5nIEdyZW1saW4uTmV0LkRyaXZlci5SZXN1bHRzQWdncmVnYXRpb247Cit1c2luZyBHcmVtbGluLk5ldC5Qcm9jZXNzOwogdXNpbmcgR3JlbWxpbi5OZXQuU3RydWN0dXJlLklPLkdyYXBoU09OOwogdXNpbmcgTmV3dG9uc29mdC5Kc29uLkxpbnE7CiAKIG5hbWVzcGFjZSBHcmVtbGluLk5ldC5Ecml2ZXIKIHsKKyAgICBpbnRlcm5hbCBpbnRlcmZhY2UgSVJlc3BvbnNlSGFuZGxlckZvclNpbmdsZVJlcXVlc3RNZXNzYWdlCisgICAgeworICAgICAgICB2b2lkIEhhbmRsZVJlY2VpdmVkKFJlc3BvbnNlTWVzc2FnZTxKVG9rZW4+IHJlY2VpdmVkKTsKKyAgICAgICAgdm9pZCBGaW5hbGl6ZShEaWN0aW9uYXJ5PHN0cmluZywgb2JqZWN0PiBzdGF0dXNBdHRyaWJ1dGVzKTsKKyAgICAgICAgdm9pZCBIYW5kbGVGYWlsdXJlKEV4Y2VwdGlvbiBvYmpFeGNlcHRpb24pOworICAgIH0KKwogICAgIGludGVybmFsIGNsYXNzIENvbm5lY3Rpb24gOiBJQ29ubmVjdGlvbgogICAgIHsKICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBHcmFwaFNPTlJlYWRlciBfZ3JhcGhTT05SZWFkZXI7CkBAIC00NCw2ICs1MywxMyBAQAogICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHN0cmluZyBfcGFzc3dvcmQ7CiAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgc3RyaW5nIF9zZXNzaW9uSWQ7CiAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYm9vbCBfc2Vzc2lvbkVuYWJsZWQ7CisgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgQ29uY3VycmVudFF1ZXVlPFJlcXVlc3RNZXNzYWdlPiBfd3JpdGVRdWV1ZSA9IG5ldyBDb25jdXJyZW50UXVldWU8UmVxdWVzdE1lc3NhZ2U+KCk7CisKKyAgICAgICAgcHJpdmF0ZSByZWFkb25seSBDb25jdXJyZW50RGljdGlvbmFyeTxHdWlkLCBJUmVzcG9uc2VIYW5kbGVyRm9yU2luZ2xlUmVxdWVzdE1lc3NhZ2U+IF9jYWxsYmFja0J5UmVxdWVzdElkID0KKyAgICAgICAgICAgIG5ldyBDb25jdXJyZW50RGljdGlvbmFyeTxHdWlkLCBJUmVzcG9uc2VIYW5kbGVyRm9yU2luZ2xlUmVxdWVzdE1lc3NhZ2U+KCk7CisgICAgICAgIHByaXZhdGUgaW50IF9jb25uZWN0aW9uU3RhdGUgPSAwOworICAgICAgICBwcml2YXRlIGludCBfd3JpdGVJblByb2dyZXNzID0gMDsKKyAgICAgICAgcHJpdmF0ZSBjb25zdCBpbnQgQ2xvc2VkID0gMTsKIAogICAgICAgICBwdWJsaWMgQ29ubmVjdGlvbihVcmkgdXJpLCBzdHJpbmcgdXNlcm5hbWUsIHN0cmluZyBwYXNzd29yZCwgR3JhcGhTT05SZWFkZXIgZ3JhcGhTT05SZWFkZXIsCiAgICAgICAgICAgICBHcmFwaFNPTldyaXRlciBncmFwaFNPTldyaXRlciwgc3RyaW5nIG1pbWVUeXBlLApAQCAtNjMsMzYgKzc5LDE2OSBAQAogICAgICAgICAgICAgX3dlYlNvY2tldENvbm5lY3Rpb24gPSBuZXcgV2ViU29ja2V0Q29ubmVjdGlvbih3ZWJTb2NrZXRDb25maWd1cmF0aW9uKTsKICAgICAgICAgfQogCi0gICAgICAgIHB1YmxpYyBhc3luYyBUYXNrPElSZWFkT25seUNvbGxlY3Rpb248VD4+IFN1Ym1pdEFzeW5jPFQ+KFJlcXVlc3RNZXNzYWdlIHJlcXVlc3RNZXNzYWdlKQotICAgICAgICB7Ci0gICAgICAgICAgICBhd2FpdCBTZW5kQXN5bmMocmVxdWVzdE1lc3NhZ2UpLkNvbmZpZ3VyZUF3YWl0KGZhbHNlKTsKLSAgICAgICAgICAgIHJldHVybiBhd2FpdCBSZWNlaXZlQXN5bmM8VD4oKS5Db25maWd1cmVBd2FpdChmYWxzZSk7Ci0gICAgICAgIH0KLQogICAgICAgICBwdWJsaWMgYXN5bmMgVGFzayBDb25uZWN0QXN5bmMoKQogICAgICAgICB7CiAgICAgICAgICAgICBhd2FpdCBfd2ViU29ja2V0Q29ubmVjdGlvbi5Db25uZWN0QXN5bmMoX3VyaSkuQ29uZmlndXJlQXdhaXQoZmFsc2UpOworICAgICAgICAgICAgQmVnaW5SZWNlaXZpbmcoKTsKICAgICAgICAgfQogCi0gICAgICAgIHB1YmxpYyBhc3luYyBUYXNrIENsb3NlQXN5bmMoKQorICAgICAgICBwdWJsaWMgaW50IE5yUmVxdWVzdHNJbkZsaWdodCA9PiBfY2FsbGJhY2tCeVJlcXVlc3RJZC5Db3VudDsKKworICAgICAgICBwdWJsaWMgYm9vbCBJc09wZW4gPT4gX3dlYlNvY2tldENvbm5lY3Rpb24uSXNPcGVuICYmIFZvbGF0aWxlLlJlYWQocmVmIF9jb25uZWN0aW9uU3RhdGUpICE9IENsb3NlZDsKKworICAgICAgICBwdWJsaWMgVGFzazxSZXN1bHRTZXQ8VD4+IFN1Ym1pdEFzeW5jPFQ+KFJlcXVlc3RNZXNzYWdlIHJlcXVlc3RNZXNzYWdlKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoX3Nlc3Npb25FbmFibGVkKQorICAgICAgICAgICAgdmFyIHJlY2VpdmVyID0gbmV3IFJlc3BvbnNlSGFuZGxlckZvclNpbmdsZVJlcXVlc3RNZXNzYWdlPFQ+KF9ncmFwaFNPTlJlYWRlcik7CisgICAgICAgICAgICBfY2FsbGJhY2tCeVJlcXVlc3RJZC5HZXRPckFkZChyZXF1ZXN0TWVzc2FnZS5SZXF1ZXN0SWQsIHJlY2VpdmVyKTsKKyAgICAgICAgICAgIF93cml0ZVF1ZXVlLkVucXVldWUocmVxdWVzdE1lc3NhZ2UpOworICAgICAgICAgICAgQmVnaW5TZW5kaW5nTWVzc2FnZXMoKTsKKyAgICAgICAgICAgIHJldHVybiByZWNlaXZlci5SZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICBwcml2YXRlIHZvaWQgQmVnaW5SZWNlaXZpbmcoKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgc3RhdGUgPSBWb2xhdGlsZS5SZWFkKHJlZiBfY29ubmVjdGlvblN0YXRlKTsKKyAgICAgICAgICAgIGlmIChzdGF0ZSA9PSBDbG9zZWQpIHJldHVybjsKKyAgICAgICAgICAgIFJlY2VpdmVNZXNzYWdlc0FzeW5jKCkuRm9yZ2V0KCk7CisgICAgICAgIH0KKworICAgICAgICBwcml2YXRlIGFzeW5jIFRhc2sgUmVjZWl2ZU1lc3NhZ2VzQXN5bmMoKQorICAgICAgICB7CisgICAgICAgICAgICB3aGlsZSAodHJ1ZSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBhd2FpdCBDbG9zZVNlc3Npb24oKS5Db25maWd1cmVBd2FpdChmYWxzZSk7CisgICAgICAgICAgICAgICAgdHJ5CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB2YXIgcmVjZWl2ZWQgPSBhd2FpdCBfd2ViU29ja2V0Q29ubmVjdGlvbi5SZWNlaXZlTWVzc2FnZUFzeW5jKCkuQ29uZmlndXJlQXdhaXQoZmFsc2UpOworICAgICAgICAgICAgICAgICAgICBQYXJzZShyZWNlaXZlZCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGF3YWl0IENsb3NlQ29ubmVjdGlvbkJlY2F1c2VPZkZhaWx1cmVBc3luYyhlKS5Db25maWd1cmVBd2FpdChmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGF3YWl0IF93ZWJTb2NrZXRDb25uZWN0aW9uLkNsb3NlQXN5bmMoKS5Db25maWd1cmVBd2FpdChmYWxzZSk7CiAgICAgICAgIH0KIAotICAgICAgICBwcml2YXRlIGFzeW5jIFRhc2sgQ2xvc2VTZXNzaW9uKCkKKyAgICAgICAgcHJpdmF0ZSB2b2lkIFBhcnNlKGJ5dGVbXSByZWNlaXZlZCkKICAgICAgICAgewotICAgICAgICAgICAgdmFyIG1zZyA9IFJlcXVlc3RNZXNzYWdlLkJ1aWxkKFRva2Vucy5PcHNDbG9zZSkuUHJvY2Vzc29yKFRva2Vucy5Qcm9jZXNzb3JTZXNzaW9uKS5DcmVhdGUoKTsKKyAgICAgICAgICAgIHZhciByZWNlaXZlZE1zZyA9IF9tZXNzYWdlU2VyaWFsaXplci5EZXNlcmlhbGl6ZU1lc3NhZ2U8UmVzcG9uc2VNZXNzYWdlPEpUb2tlbj4+KHJlY2VpdmVkKTsKKyAgICAgICAgICAgIGlmIChyZWNlaXZlZE1zZyA9PSBudWxsKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFRocm93TWVzc2FnZURlc2VyaWFsaXplZE51bGwoKTsKKyAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXdhaXQgU2VuZEFzeW5jKG1zZykuQ29uZmlndXJlQXdhaXQoZmFsc2UpOworICAgICAgICAgICAgdHJ5CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgVHJ5UGFyc2VSZXNwb25zZU1lc3NhZ2UocmVjZWl2ZWRNc2cpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChfY2FsbGJhY2tCeVJlcXVlc3RJZC5UcnlSZW1vdmUocmVjZWl2ZWRNc2cuUmVxdWVzdElkLCBvdXQgdmFyIHJlc3BvbnNlSGFuZGxlcikpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXNwb25zZUhhbmRsZXI/LkhhbmRsZUZhaWx1cmUoZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgcHVibGljIGJvb2wgSXNPcGVuID0+IF93ZWJTb2NrZXRDb25uZWN0aW9uLklzT3BlbjsKKyAgICAgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBUaHJvd01lc3NhZ2VEZXNlcmlhbGl6ZWROdWxsKCkgPT4KKyAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3BlcmF0aW9uRXhjZXB0aW9uKCJSZWNlaXZlZCBkYXRhIGRlc2VyaWFsaXplZCBpbnRvIG51bGwgb2JqZWN0IG1lc3NhZ2UuIENhbm5vdCBvcGVyYXRlIG9uIGl0LiIpOwogCi0gICAgICAgIHByaXZhdGUgYXN5bmMgVGFzayBTZW5kQXN5bmMoUmVxdWVzdE1lc3NhZ2UgbWVzc2FnZSkKKyAgICAgICAgcHJpdmF0ZSB2b2lkIFRyeVBhcnNlUmVzcG9uc2VNZXNzYWdlKFJlc3BvbnNlTWVzc2FnZTxKVG9rZW4+IHJlY2VpdmVkTXNnKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgc3RhdHVzID0gcmVjZWl2ZWRNc2cuU3RhdHVzOworICAgICAgICAgICAgc3RhdHVzLlRocm93SWZTdGF0dXNJbmRpY2F0ZXNFcnJvcigpOworCisgICAgICAgICAgICBpZiAoc3RhdHVzLkNvZGUgPT0gUmVzcG9uc2VTdGF0dXNDb2RlLkF1dGhlbnRpY2F0ZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBBdXRoZW50aWNhdGUoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChzdGF0dXMuQ29kZSAhPSBSZXNwb25zZVN0YXR1c0NvZGUuTm9Db250ZW50KQorICAgICAgICAgICAgICAgIF9jYWxsYmFja0J5UmVxdWVzdElkW3JlY2VpdmVkTXNnLlJlcXVlc3RJZF0uSGFuZGxlUmVjZWl2ZWQocmVjZWl2ZWRNc2cpOworCisgICAgICAgICAgICBpZiAoc3RhdHVzLkNvZGUgPT0gUmVzcG9uc2VTdGF0dXNDb2RlLlN1Y2Nlc3MgfHwgc3RhdHVzLkNvZGUgPT0gUmVzcG9uc2VTdGF0dXNDb2RlLk5vQ29udGVudCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBfY2FsbGJhY2tCeVJlcXVlc3RJZFtyZWNlaXZlZE1zZy5SZXF1ZXN0SWRdLkZpbmFsaXplKHN0YXR1cy5BdHRyaWJ1dGVzKTsKKyAgICAgICAgICAgICAgICBfY2FsbGJhY2tCeVJlcXVlc3RJZC5UcnlSZW1vdmUocmVjZWl2ZWRNc2cuUmVxdWVzdElkLCBvdXQgXyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBwcml2YXRlIHZvaWQgQXV0aGVudGljYXRlKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPckVtcHR5KF91c2VybmFtZSkgfHwgc3RyaW5nLklzTnVsbE9yRW1wdHkoX3Bhc3N3b3JkKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgJCJUaGUgR3JlbWxpbiBTZXJ2ZXIgcmVxdWlyZXMgYXV0aGVudGljYXRpb24sIGJ1dCBubyBjcmVkZW50aWFscyBhcmUgc3BlY2lmaWVkIC0gdXNlcm5hbWU6IHtfdXNlcm5hbWV9LCBwYXNzd29yZDoge19wYXNzd29yZH0uIik7CisKKyAgICAgICAgICAgIHZhciBtZXNzYWdlID0gUmVxdWVzdE1lc3NhZ2UuQnVpbGQoVG9rZW5zLk9wc0F1dGhlbnRpY2F0aW9uKS5Qcm9jZXNzb3IoVG9rZW5zLlByb2Nlc3NvclRyYXZlcnNhbCkKKyAgICAgICAgICAgICAgICAuQWRkQXJndW1lbnQoVG9rZW5zLkFyZ3NTYXNsLCBTYXNsQXJndW1lbnQoKSkuQ3JlYXRlKCk7CisKKyAgICAgICAgICAgIF93cml0ZVF1ZXVlLkVucXVldWUobWVzc2FnZSk7CisgICAgICAgICAgICBCZWdpblNlbmRpbmdNZXNzYWdlcygpOworICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZSBzdHJpbmcgU2FzbEFyZ3VtZW50KCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGF1dGggPSAkIlwwe191c2VybmFtZX1cMHtfcGFzc3dvcmR9IjsKKyAgICAgICAgICAgIHZhciBhdXRoQnl0ZXMgPSBFbmNvZGluZy5VVEY4LkdldEJ5dGVzKGF1dGgpOworICAgICAgICAgICAgcmV0dXJuIENvbnZlcnQuVG9CYXNlNjRTdHJpbmcoYXV0aEJ5dGVzKTsKKyAgICAgICAgfQorCisgICAgICAgIHByaXZhdGUgdm9pZCBCZWdpblNlbmRpbmdNZXNzYWdlcygpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChJbnRlcmxvY2tlZC5Db21wYXJlRXhjaGFuZ2UocmVmIF93cml0ZUluUHJvZ3Jlc3MsIDEsIDApICE9IDApCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgU2VuZE1lc3NhZ2VzRnJvbVF1ZXVlQXN5bmMoKS5Gb3JnZXQoKTsKKyAgICAgICAgfQorCisgICAgICAgIHByaXZhdGUgYXN5bmMgVGFzayBTZW5kTWVzc2FnZXNGcm9tUXVldWVBc3luYygpCisgICAgICAgIHsKKyAgICAgICAgICAgIHdoaWxlIChfd3JpdGVRdWV1ZS5UcnlEZXF1ZXVlKG91dCB2YXIgbXNnKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0cnkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGF3YWl0IFNlbmRNZXNzYWdlQXN5bmMobXNnKS5Db25maWd1cmVBd2FpdChmYWxzZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGF3YWl0IENsb3NlQ29ubmVjdGlvbkJlY2F1c2VPZkZhaWx1cmVBc3luYyhlKS5Db25maWd1cmVBd2FpdChmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEludGVybG9ja2VkLkNvbXBhcmVFeGNoYW5nZShyZWYgX3dyaXRlSW5Qcm9ncmVzcywgMCwgMSk7CisKKyAgICAgICAgICAgIC8vIFNpbmNlIHRoZSBsb29wIGVuZGVkIGFuZCB0aGUgd3JpdGUgaW4gcHJvZ3Jlc3Mgd2FzIHNldCB0byAwCisgICAgICAgICAgICAvLyBhIG5ldyBpdGVtIGNvdWxkIGhhdmUgYmVlbiBhZGRlZCwgd3JpdGUgcXVldWUgY2FuIGNvbnRhaW4gaXRlbXMgYXQgdGhpcyB0aW1lCisgICAgICAgICAgICBpZiAoIV93cml0ZVF1ZXVlLklzRW1wdHkgJiYgSW50ZXJsb2NrZWQuQ29tcGFyZUV4Y2hhbmdlKHJlZiBfd3JpdGVJblByb2dyZXNzLCAxLCAwKSA9PSAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGF3YWl0IFNlbmRNZXNzYWdlc0Zyb21RdWV1ZUFzeW5jKCkuQ29uZmlndXJlQXdhaXQoZmFsc2UpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZSBhc3luYyBUYXNrIENsb3NlQ29ubmVjdGlvbkJlY2F1c2VPZkZhaWx1cmVBc3luYyhFeGNlcHRpb24gZXhjZXB0aW9uKQorICAgICAgICB7CisgICAgICAgICAgICBFbXB0eVdyaXRlUXVldWUoKTsKKyAgICAgICAgICAgIGF3YWl0IENsb3NlQXN5bmMoKS5Db25maWd1cmVBd2FpdChmYWxzZSk7CisgICAgICAgICAgICBOb3RpZnlBYm91dENvbm5lY3Rpb25GYWlsdXJlKGV4Y2VwdGlvbik7CisgICAgICAgIH0KKworICAgICAgICBwcml2YXRlIHZvaWQgRW1wdHlXcml0ZVF1ZXVlKCkKKyAgICAgICAgeworICAgICAgICAgICAgd2hpbGUgKF93cml0ZVF1ZXVlLlRyeURlcXVldWUob3V0IF8pKQorICAgICAgICAgICAgeworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZSB2b2lkIE5vdGlmeUFib3V0Q29ubmVjdGlvbkZhaWx1cmUoRXhjZXB0aW9uIGV4Y2VwdGlvbikKKyAgICAgICAgeworICAgICAgICAgICAgZm9yZWFjaCAodmFyIGNiIGluIF9jYWxsYmFja0J5UmVxdWVzdElkLlZhbHVlcykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYi5IYW5kbGVGYWlsdXJlKGV4Y2VwdGlvbik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBfY2FsbGJhY2tCeVJlcXVlc3RJZC5DbGVhcigpOworICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZSBhc3luYyBUYXNrIFNlbmRNZXNzYWdlQXN5bmMoUmVxdWVzdE1lc3NhZ2UgbWVzc2FnZSkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKF9zZXNzaW9uRW5hYmxlZCkKICAgICAgICAgICAgIHsKQEAgLTEyMCw3MSArMjY5LDIzIEBACiAgICAgICAgICAgICByZXR1cm4gbXNnQnVpbGRlci5DcmVhdGUoKTsKICAgICAgICAgfQogCi0gICAgICAgIHByaXZhdGUgYXN5bmMgVGFzazxJUmVhZE9ubHlDb2xsZWN0aW9uPFQ+PiBSZWNlaXZlQXN5bmM8VD4oKQorICAgICAgICBwdWJsaWMgYXN5bmMgVGFzayBDbG9zZUFzeW5jKCkKICAgICAgICAgewotICAgICAgICAgICAgUmVzcG9uc2VTdGF0dXMgc3RhdHVzOwotICAgICAgICAgICAgSUFnZ3JlZ2F0b3IgYWdncmVnYXRvciA9IG51bGw7Ci0gICAgICAgICAgICB2YXIgaXNBZ2dyZWdhdGluZ1NpZGVFZmZlY3RzID0gZmFsc2U7Ci0gICAgICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IExpc3Q8VD4oKTsKLSAgICAgICAgICAgIGRvCisgICAgICAgICAgICBJbnRlcmxvY2tlZC5FeGNoYW5nZShyZWYgX2Nvbm5lY3Rpb25TdGF0ZSwgQ2xvc2VkKTsKKworICAgICAgICAgICAgaWYgKF9zZXNzaW9uRW5hYmxlZCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB2YXIgcmVjZWl2ZWQgPSBhd2FpdCBfd2ViU29ja2V0Q29ubmVjdGlvbi5SZWNlaXZlTWVzc2FnZUFzeW5jKCkuQ29uZmlndXJlQXdhaXQoZmFsc2UpOwotICAgICAgICAgICAgICAgIHZhciByZWNlaXZlZE1zZyA9IF9tZXNzYWdlU2VyaWFsaXplci5EZXNlcmlhbGl6ZU1lc3NhZ2U8UmVzcG9uc2VNZXNzYWdlPEpUb2tlbj4+KHJlY2VpdmVkKTsKLQotICAgICAgICAgICAgICAgIHN0YXR1cyA9IHJlY2VpdmVkTXNnLlN0YXR1czsKLSAgICAgICAgICAgICAgICBzdGF0dXMuVGhyb3dJZlN0YXR1c0luZGljYXRlc0Vycm9yKCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoc3RhdHVzLkNvZGUgPT0gUmVzcG9uc2VTdGF0dXNDb2RlLkF1dGhlbnRpY2F0ZSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGF3YWl0IEF1dGhlbnRpY2F0ZUFzeW5jKCkuQ29uZmlndXJlQXdhaXQoZmFsc2UpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGlmIChzdGF0dXMuQ29kZSAhPSBSZXNwb25zZVN0YXR1c0NvZGUuTm9Db250ZW50KQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHJlY2VpdmVkRGF0YSA9IHR5cGVvZihUKSA9PSB0eXBlb2YoSlRva2VuKQotICAgICAgICAgICAgICAgICAgICAgICAgPyBuZXdbXSB7IHJlY2VpdmVkTXNnLlJlc3VsdC5EYXRhIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIDogX2dyYXBoU09OUmVhZGVyLlRvT2JqZWN0KHJlY2VpdmVkTXNnLlJlc3VsdC5EYXRhKTsKLQotICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgZCBpbiByZWNlaXZlZERhdGEpCi0gICAgICAgICAgICAgICAgICAgICAgICAjcHJhZ21hIHdhcm5pbmcgZGlzYWJsZSA2MTIsNjE4Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVjZWl2ZWRNc2cuUmVzdWx0Lk1ldGEuQ29udGFpbnNLZXkoVG9rZW5zLkFyZ3NTaWRlRWZmZWN0S2V5KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWdncmVnYXRvciA9PSBudWxsKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2dyZWdhdG9yID0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBBZ2dyZWdhdG9yRmFjdG9yeSgpLkdldEFnZ3JlZ2F0b3JGb3IoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZykgcmVjZWl2ZWRNc2cuUmVzdWx0Lk1ldGFbVG9rZW5zLkFyZ3NBZ2dyZWdhdGVUb10pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZ3JlZ2F0b3IuQWRkKGQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzQWdncmVnYXRpbmdTaWRlRWZmZWN0cyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LkFkZChkKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICNwcmFnbWEgd2FybmluZyBkaXNhYmxlIDYxMiw2MTgKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IHdoaWxlIChzdGF0dXMuQ29kZSA9PSBSZXNwb25zZVN0YXR1c0NvZGUuUGFydGlhbENvbnRlbnQgfHwgc3RhdHVzLkNvZGUgPT0gUmVzcG9uc2VTdGF0dXNDb2RlLkF1dGhlbnRpY2F0ZSk7Ci0KLSAgICAgICAgICAgIGlmIChpc0FnZ3JlZ2F0aW5nU2lkZUVmZmVjdHMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBMaXN0PFQ+IHsoVCkgYWdncmVnYXRvci5HZXRBZ2dyZWdhdGVkUmVzdWx0KCl9OwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgICAgICBhd2FpdCBDbG9zZVNlc3Npb24oKS5Db25maWd1cmVBd2FpdChmYWxzZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhd2FpdCBfd2ViU29ja2V0Q29ubmVjdGlvbi5DbG9zZUFzeW5jKCkuQ29uZmlndXJlQXdhaXQoZmFsc2UpOwogICAgICAgICB9CiAKLSAgICAgICAgcHJpdmF0ZSBhc3luYyBUYXNrIEF1dGhlbnRpY2F0ZUFzeW5jKCkKKyAgICAgICAgcHJpdmF0ZSBhc3luYyBUYXNrIENsb3NlU2Vzc2lvbigpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JFbXB0eShfdXNlcm5hbWUpIHx8IHN0cmluZy5Jc051bGxPckVtcHR5KF9wYXNzd29yZCkpCi0gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgICQiVGhlIEdyZW1saW4gU2VydmVyIHJlcXVpcmVzIGF1dGhlbnRpY2F0aW9uLCBidXQgbm8gY3JlZGVudGlhbHMgYXJlIHNwZWNpZmllZCAtIHVzZXJuYW1lOiB7X3VzZXJuYW1lfSwgcGFzc3dvcmQ6IHtfcGFzc3dvcmR9LiIpOworICAgICAgICAgICAgLy8gYnVpbGQgYSByZXF1ZXN0IHRvIGNsb3NlIHRoaXMgc2Vzc2lvbgorICAgICAgICAgICAgdmFyIG1zZyA9IFJlcXVlc3RNZXNzYWdlLkJ1aWxkKFRva2Vucy5PcHNDbG9zZSkuUHJvY2Vzc29yKFRva2Vucy5Qcm9jZXNzb3JTZXNzaW9uKS5DcmVhdGUoKTsKIAotICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSBSZXF1ZXN0TWVzc2FnZS5CdWlsZChUb2tlbnMuT3BzQXV0aGVudGljYXRpb24pLlByb2Nlc3NvcihUb2tlbnMuUHJvY2Vzc29yVHJhdmVyc2FsKQotICAgICAgICAgICAgICAgIC5BZGRBcmd1bWVudChUb2tlbnMuQXJnc1Nhc2wsIFNhc2xBcmd1bWVudCgpKS5DcmVhdGUoKTsKLQotICAgICAgICAgICAgYXdhaXQgU2VuZEFzeW5jKG1lc3NhZ2UpLkNvbmZpZ3VyZUF3YWl0KGZhbHNlKTsKLSAgICAgICAgfQotCi0gICAgICAgIHByaXZhdGUgc3RyaW5nIFNhc2xBcmd1bWVudCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZhciBhdXRoID0gJCJcMHtfdXNlcm5hbWV9XDB7X3Bhc3N3b3JkfSI7Ci0gICAgICAgICAgICB2YXIgYXV0aEJ5dGVzID0gRW5jb2RpbmcuVVRGOC5HZXRCeXRlcyhhdXRoKTsKLSAgICAgICAgICAgIHJldHVybiBDb252ZXJ0LlRvQmFzZTY0U3RyaW5nKGF1dGhCeXRlcyk7CisgICAgICAgICAgICBhd2FpdCBTZW5kTWVzc2FnZUFzeW5jKG1zZykuQ29uZmlndXJlQXdhaXQoZmFsc2UpOwogICAgICAgICB9CiAKICAgICAgICAgI3JlZ2lvbiBJRGlzcG9zYWJsZSBTdXBwb3J0CmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL0Nvbm5lY3Rpb25Qb29sLmNzIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9Db25uZWN0aW9uUG9vbC5jcwppbmRleCBkOWU1M2Y0Li4zNGJjNzdmIDEwMDY0NAotLS0gYS9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL0Nvbm5lY3Rpb25Qb29sLmNzCisrKyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Ecml2ZXIvQ29ubmVjdGlvblBvb2wuY3MKQEAgLTIyLDEwMiArMjIsMTY2IEBACiAjZW5kcmVnaW9uCiAKIHVzaW5nIFN5c3RlbTsKLXVzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5Db25jdXJyZW50OwotdXNpbmcgU3lzdGVtLkxpbnE7Cit1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKK3VzaW5nIFN5c3RlbS5UaHJlYWRpbmc7CiB1c2luZyBTeXN0ZW0uVGhyZWFkaW5nLlRhc2tzOwordXNpbmcgR3JlbWxpbi5OZXQuRHJpdmVyLkV4Y2VwdGlvbnM7CiB1c2luZyBHcmVtbGluLk5ldC5Qcm9jZXNzOwogCiBuYW1lc3BhY2UgR3JlbWxpbi5OZXQuRHJpdmVyCiB7CiAgICAgaW50ZXJuYWwgY2xhc3MgQ29ubmVjdGlvblBvb2wgOiBJRGlzcG9zYWJsZQogICAgIHsKKyAgICAgICAgcHJpdmF0ZSBjb25zdCBpbnQgQ29ubmVjdGlvbkluZGV4T3ZlcmZsb3dMaW1pdCA9IGludC5NYXhWYWx1ZSAtIDEwMDAwMDA7CisgICAgICAgIAogICAgICAgICBwcml2YXRlIHJlYWRvbmx5IENvbm5lY3Rpb25GYWN0b3J5IF9jb25uZWN0aW9uRmFjdG9yeTsKLSAgICAgICAgcHJpdmF0ZSByZWFkb25seSBDb25jdXJyZW50QmFnPENvbm5lY3Rpb24+IF9jb25uZWN0aW9ucyA9IG5ldyBDb25jdXJyZW50QmFnPENvbm5lY3Rpb24+KCk7Ci0gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgb2JqZWN0IF9jb25uZWN0aW9uc0xvY2sgPSBuZXcgb2JqZWN0KCk7CisgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgQ29weU9uV3JpdGVDb2xsZWN0aW9uPENvbm5lY3Rpb24+IF9jb25uZWN0aW9ucyA9IG5ldyBDb3B5T25Xcml0ZUNvbGxlY3Rpb248Q29ubmVjdGlvbj4oKTsKKyAgICAgICAgcHJpdmF0ZSByZWFkb25seSBpbnQgX3Bvb2xTaXplOworICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGludCBfbWF4SW5Qcm9jZXNzUGVyQ29ubmVjdGlvbjsKKyAgICAgICAgcHJpdmF0ZSBpbnQgX2Nvbm5lY3Rpb25JbmRleDsKKyAgICAgICAgcHJpdmF0ZSBpbnQgX3Bvb2xTdGF0ZTsKKyAgICAgICAgcHJpdmF0ZSBjb25zdCBpbnQgUG9vbElkbGUgPSAwOworICAgICAgICBwcml2YXRlIGNvbnN0IGludCBQb29sUG9wdWxhdGlvbkluUHJvZ3Jlc3MgPSAxOwogCi0gICAgICAgIHB1YmxpYyBDb25uZWN0aW9uUG9vbChDb25uZWN0aW9uRmFjdG9yeSBjb25uZWN0aW9uRmFjdG9yeSkKKyAgICAgICAgcHVibGljIENvbm5lY3Rpb25Qb29sKENvbm5lY3Rpb25GYWN0b3J5IGNvbm5lY3Rpb25GYWN0b3J5LCBDb25uZWN0aW9uUG9vbFNldHRpbmdzIHNldHRpbmdzKQogICAgICAgICB7CiAgICAgICAgICAgICBfY29ubmVjdGlvbkZhY3RvcnkgPSBjb25uZWN0aW9uRmFjdG9yeTsKKyAgICAgICAgICAgIF9wb29sU2l6ZSA9IHNldHRpbmdzLlBvb2xTaXplOworICAgICAgICAgICAgX21heEluUHJvY2Vzc1BlckNvbm5lY3Rpb24gPSBzZXR0aW5ncy5NYXhJblByb2Nlc3NQZXJDb25uZWN0aW9uOworICAgICAgICAgICAgUG9wdWxhdGVQb29sQXN5bmMoKS5XYWl0VW53cmFwKCk7CiAgICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgaW50IE5yQ29ubmVjdGlvbnMgeyBnZXQ7IHByaXZhdGUgc2V0OyB9CisgICAgICAgIAorICAgICAgICBwdWJsaWMgaW50IE5yQ29ubmVjdGlvbnMgPT4gX2Nvbm5lY3Rpb25zLkNvdW50OwogCiAgICAgICAgIHB1YmxpYyBhc3luYyBUYXNrPElDb25uZWN0aW9uPiBHZXRBdmFpbGFibGVDb25uZWN0aW9uQXN5bmMoKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIVRyeUdldENvbm5lY3Rpb25Gcm9tUG9vbChvdXQgdmFyIGNvbm5lY3Rpb24pKQotICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24gPSBhd2FpdCBDcmVhdGVOZXdDb25uZWN0aW9uQXN5bmMoKS5Db25maWd1cmVBd2FpdChmYWxzZSk7Ci0KLSAgICAgICAgICAgIHJldHVybiBuZXcgUHJveHlDb25uZWN0aW9uKGNvbm5lY3Rpb24sIEFkZENvbm5lY3Rpb25JZk9wZW4pOworICAgICAgICAgICAgYXdhaXQgRW5zdXJlUG9vbElzUG9wdWxhdGVkQXN5bmMoKS5Db25maWd1cmVBd2FpdChmYWxzZSk7CisgICAgICAgICAgICByZXR1cm4gUHJveGllZENvbm5lY3Rpb24oR2V0Q29ubmVjdGlvbkZyb21Qb29sKCkpOwogICAgICAgICB9CiAKLSAgICAgICAgcHJpdmF0ZSBib29sIFRyeUdldENvbm5lY3Rpb25Gcm9tUG9vbChvdXQgQ29ubmVjdGlvbiBjb25uZWN0aW9uKQorICAgICAgICBwcml2YXRlIGFzeW5jIFRhc2sgRW5zdXJlUG9vbElzUG9wdWxhdGVkQXN5bmMoKQogICAgICAgICB7Ci0gICAgICAgICAgICB3aGlsZSAodHJ1ZSkKKyAgICAgICAgICAgIC8vIFRoZSBwb29sIGNvdWxkIGhhdmUgYmVlbiAocGFydGlhbGx5KSBlbXB0eSBiZWNhdXNlIG9mIGNvbm5lY3Rpb24gcHJvYmxlbXMuIFNvLCB3ZSBuZWVkIHRvIHBvcHVsYXRlIGl0IGFnYWluLgorICAgICAgICAgICAgaWYgKF9wb29sU2l6ZSA8PSBOckNvbm5lY3Rpb25zKSByZXR1cm47CisgICAgICAgICAgICB2YXIgcG9vbFN0YXRlID0gSW50ZXJsb2NrZWQuQ29tcGFyZUV4Y2hhbmdlKHJlZiBfcG9vbFN0YXRlLCBQb29sUG9wdWxhdGlvbkluUHJvZ3Jlc3MsIFBvb2xJZGxlKTsKKyAgICAgICAgICAgIGlmIChwb29sU3RhdGUgPT0gUG9vbFBvcHVsYXRpb25JblByb2dyZXNzKSByZXR1cm47CisgICAgICAgICAgICB0cnkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb25uZWN0aW9uID0gbnVsbDsKLSAgICAgICAgICAgICAgICBsb2NrIChfY29ubmVjdGlvbnNMb2NrKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKF9jb25uZWN0aW9ucy5Jc0VtcHR5KSByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgIF9jb25uZWN0aW9ucy5UcnlUYWtlKG91dCBjb25uZWN0aW9uKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAoY29ubmVjdGlvbi5Jc09wZW4pIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uRGlzcG9zZSgpOworICAgICAgICAgICAgICAgIGF3YWl0IFBvcHVsYXRlUG9vbEFzeW5jKCkuQ29uZmlndXJlQXdhaXQoZmFsc2UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZmluYWxseQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gcmVtb3ZlIHRoZSBQb29sUG9wdWxhdGlvbkluUHJvZ3Jlc3MgZmxhZyBhZ2FpbiBldmVuIGlmIGFuIGV4Y2VwdGlvbiBvY2N1cnJlZCwgc28gd2UgZG9uJ3QgYmxvY2sgdGhlIHBvb2wgcG9wdWxhdGlvbiBmb3IgZXZlcgorICAgICAgICAgICAgICAgIEludGVybG9ja2VkLkNvbXBhcmVFeGNoYW5nZShyZWYgX3Bvb2xTdGF0ZSwgUG9vbElkbGUsIFBvb2xQb3B1bGF0aW9uSW5Qcm9ncmVzcyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLQorICAgICAgICAKKyAgICAgICAgcHJpdmF0ZSBhc3luYyBUYXNrIFBvcHVsYXRlUG9vbEFzeW5jKCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIG5yQ29ubmVjdGlvbnNUb0NyZWF0ZSA9IF9wb29sU2l6ZSAtIF9jb25uZWN0aW9ucy5Db3VudDsKKyAgICAgICAgICAgIHZhciBjb25uZWN0aW9uQ3JlYXRpb25UYXNrcyA9IG5ldyBMaXN0PFRhc2s8Q29ubmVjdGlvbj4+KG5yQ29ubmVjdGlvbnNUb0NyZWF0ZSk7CisgICAgICAgICAgICB0cnkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5yQ29ubmVjdGlvbnNUb0NyZWF0ZTsgaSsrKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbkNyZWF0aW9uVGFza3MuQWRkKENyZWF0ZU5ld0Nvbm5lY3Rpb25Bc3luYygpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdmFyIGNyZWF0ZWRDb25uZWN0aW9ucyA9IGF3YWl0IFRhc2suV2hlbkFsbChjb25uZWN0aW9uQ3JlYXRpb25UYXNrcykuQ29uZmlndXJlQXdhaXQoZmFsc2UpOworICAgICAgICAgICAgICAgIF9jb25uZWN0aW9ucy5BZGRSYW5nZShjcmVhdGVkQ29ubmVjdGlvbnMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2F0Y2goRXhjZXB0aW9uKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIERpc3Bvc2UgY3JlYXRlZCBjb25uZWN0aW9ucyBpZiB0aGUgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IGZhaWxlZAorICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciBjcmVhdGlvblRhc2sgaW4gY29ubmVjdGlvbkNyZWF0aW9uVGFza3MpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBpZiAoIWNyZWF0aW9uVGFzay5Jc0ZhdWx0ZWQpCisgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGlvblRhc2suUmVzdWx0Py5EaXNwb3NlKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHRocm93OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAogICAgICAgICBwcml2YXRlIGFzeW5jIFRhc2s8Q29ubmVjdGlvbj4gQ3JlYXRlTmV3Q29ubmVjdGlvbkFzeW5jKCkKICAgICAgICAgewotICAgICAgICAgICAgTnJDb25uZWN0aW9ucysrOwogICAgICAgICAgICAgdmFyIG5ld0Nvbm5lY3Rpb24gPSBfY29ubmVjdGlvbkZhY3RvcnkuQ3JlYXRlQ29ubmVjdGlvbigpOwogICAgICAgICAgICAgYXdhaXQgbmV3Q29ubmVjdGlvbi5Db25uZWN0QXN5bmMoKS5Db25maWd1cmVBd2FpdChmYWxzZSk7CiAgICAgICAgICAgICByZXR1cm4gbmV3Q29ubmVjdGlvbjsKICAgICAgICAgfQogCi0gICAgICAgIHByaXZhdGUgdm9pZCBBZGRDb25uZWN0aW9uSWZPcGVuKENvbm5lY3Rpb24gY29ubmVjdGlvbikKKyAgICAgICAgcHJpdmF0ZSBDb25uZWN0aW9uIEdldENvbm5lY3Rpb25Gcm9tUG9vbCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICghY29ubmVjdGlvbi5Jc09wZW4pCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgQ29uc2lkZXJVbmF2YWlsYWJsZSgpOwotICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uRGlzcG9zZSgpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEFkZENvbm5lY3Rpb24oY29ubmVjdGlvbik7CisgICAgICAgICAgICB2YXIgY29ubmVjdGlvbnMgPSBfY29ubmVjdGlvbnMuU25hcHNob3Q7CisgICAgICAgICAgICBpZiAoY29ubmVjdGlvbnMuTGVuZ3RoID09IDApIHRocm93IG5ldyBTZXJ2ZXJVbmF2YWlsYWJsZUV4Y2VwdGlvbigpOworICAgICAgICAgICAgcmV0dXJuIFRyeUdldEF2YWlsYWJsZUNvbm5lY3Rpb24oY29ubmVjdGlvbnMpOwogICAgICAgICB9CiAKLSAgICAgICAgcHJpdmF0ZSB2b2lkIEFkZENvbm5lY3Rpb24oQ29ubmVjdGlvbiBjb25uZWN0aW9uKQorICAgICAgICBwcml2YXRlIENvbm5lY3Rpb24gVHJ5R2V0QXZhaWxhYmxlQ29ubmVjdGlvbihDb25uZWN0aW9uW10gY29ubmVjdGlvbnMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGxvY2sgKF9jb25uZWN0aW9uc0xvY2spCisgICAgICAgICAgICB2YXIgaW5kZXggPSBJbnRlcmxvY2tlZC5JbmNyZW1lbnQocmVmIF9jb25uZWN0aW9uSW5kZXgpOworICAgICAgICAgICAgUHJvdGVjdEluZGV4RnJvbU92ZXJmbG93aW5nKGluZGV4KTsKKworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb25uZWN0aW9ucy5MZW5ndGg7IGkrKykKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBfY29ubmVjdGlvbnMuQWRkKGNvbm5lY3Rpb24pOworICAgICAgICAgICAgICAgIHZhciBjb25uZWN0aW9uID0gY29ubmVjdGlvbnNbKGluZGV4ICsgaSkgJSBjb25uZWN0aW9ucy5MZW5ndGhdOworICAgICAgICAgICAgICAgIGlmIChjb25uZWN0aW9uLk5yUmVxdWVzdHNJbkZsaWdodCA+PSBfbWF4SW5Qcm9jZXNzUGVyQ29ubmVjdGlvbikgY29udGludWU7CisgICAgICAgICAgICAgICAgaWYgKCFjb25uZWN0aW9uLklzT3BlbikKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIFJlbW92ZUNvbm5lY3Rpb25Gcm9tUG9vbChjb25uZWN0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBjb25uZWN0aW9uOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoY29ubmVjdGlvbnMuTGVuZ3RoID4gMCkgCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IENvbm5lY3Rpb25Qb29sQnVzeUV4Y2VwdGlvbihfcG9vbFNpemUsIF9tYXhJblByb2Nlc3NQZXJDb25uZWN0aW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgU2VydmVyVW5hdmFpbGFibGVFeGNlcHRpb24oKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHByaXZhdGUgdm9pZCBQcm90ZWN0SW5kZXhGcm9tT3ZlcmZsb3dpbmcoaW50IGN1cnJlbnRJbmRleCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGN1cnJlbnRJbmRleCA+IENvbm5lY3Rpb25JbmRleE92ZXJmbG93TGltaXQpCisgICAgICAgICAgICAgICAgSW50ZXJsb2NrZWQuRXhjaGFuZ2UocmVmIF9jb25uZWN0aW9uSW5kZXgsIDApOworICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZSB2b2lkIFJlbW92ZUNvbm5lY3Rpb25Gcm9tUG9vbChDb25uZWN0aW9uIGNvbm5lY3Rpb24pCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChfY29ubmVjdGlvbnMuVHJ5UmVtb3ZlKGNvbm5lY3Rpb24pKQorICAgICAgICAgICAgICAgIERlZmluaXRlbHlEZXN0cm95Q29ubmVjdGlvbihjb25uZWN0aW9uKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcHJpdmF0ZSBJQ29ubmVjdGlvbiBQcm94aWVkQ29ubmVjdGlvbihDb25uZWN0aW9uIGNvbm5lY3Rpb24pCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgUHJveHlDb25uZWN0aW9uKGNvbm5lY3Rpb24sIFJldHVybkNvbm5lY3Rpb25JZk9wZW4pOworICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZSB2b2lkIFJldHVybkNvbm5lY3Rpb25JZk9wZW4oQ29ubmVjdGlvbiBjb25uZWN0aW9uKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoY29ubmVjdGlvbi5Jc09wZW4pIHJldHVybjsKKyAgICAgICAgICAgIENvbnNpZGVyVW5hdmFpbGFibGUoKTsKICAgICAgICAgfQogCiAgICAgICAgIHByaXZhdGUgdm9pZCBDb25zaWRlclVuYXZhaWxhYmxlKCkKICAgICAgICAgewotICAgICAgICAgICAgQ2xvc2VBbmRSZW1vdmVBbGxDb25uZWN0aW9ucygpOworICAgICAgICAgICAgQ2xvc2VBbmRSZW1vdmVBbGxDb25uZWN0aW9uc0FzeW5jKCkuV2FpdFVud3JhcCgpOwogICAgICAgICB9CiAKLSAgICAgICAgcHJpdmF0ZSB2b2lkIENsb3NlQW5kUmVtb3ZlQWxsQ29ubmVjdGlvbnMoKQorICAgICAgICBwcml2YXRlIGFzeW5jIFRhc2sgQ2xvc2VBbmRSZW1vdmVBbGxDb25uZWN0aW9uc0FzeW5jKCkKICAgICAgICAgewotICAgICAgICAgICAgbG9jayAoX2Nvbm5lY3Rpb25zTG9jaykKKyAgICAgICAgICAgIGZvcmVhY2ggKHZhciBjb25uZWN0aW9uIGluIF9jb25uZWN0aW9ucy5SZW1vdmVBbmRHZXRBbGwoKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBUZWFyZG93bkFzeW5jKCkuV2FpdFVud3JhcCgpOwotICAgICAgICAgICAgICAgIFJlbW92ZUFsbENvbm5lY3Rpb25zKCk7CisgICAgICAgICAgICAgICAgYXdhaXQgY29ubmVjdGlvbi5DbG9zZUFzeW5jKCkuQ29uZmlndXJlQXdhaXQoZmFsc2UpOworICAgICAgICAgICAgICAgIERlZmluaXRlbHlEZXN0cm95Q29ubmVjdGlvbihjb25uZWN0aW9uKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIHByaXZhdGUgdm9pZCBSZW1vdmVBbGxDb25uZWN0aW9ucygpCisgICAgICAgIHByaXZhdGUgdm9pZCBEZWZpbml0ZWx5RGVzdHJveUNvbm5lY3Rpb24oQ29ubmVjdGlvbiBjb25uZWN0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICB3aGlsZSAoX2Nvbm5lY3Rpb25zLlRyeVRha2Uob3V0IHZhciBjb25uZWN0aW9uKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb25uZWN0aW9uLkRpc3Bvc2UoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHByaXZhdGUgYXN5bmMgVGFzayBUZWFyZG93bkFzeW5jKCkKLSAgICAgICAgewotICAgICAgICAgICAgYXdhaXQgVGFzay5XaGVuQWxsKF9jb25uZWN0aW9ucy5TZWxlY3QoYyA9PiBjLkNsb3NlQXN5bmMoKSkpLkNvbmZpZ3VyZUF3YWl0KGZhbHNlKTsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24uRGlzcG9zZSgpOwogICAgICAgICB9CiAKICAgICAgICAgI3JlZ2lvbiBJRGlzcG9zYWJsZSBTdXBwb3J0CkBAIC0xMzUsMTAgKzE5OSwxMSBAQAogICAgICAgICAgICAgaWYgKCFfZGlzcG9zZWQpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgaWYgKGRpc3Bvc2luZykKLSAgICAgICAgICAgICAgICAgICAgQ2xvc2VBbmRSZW1vdmVBbGxDb25uZWN0aW9ucygpOworICAgICAgICAgICAgICAgICAgICBDbG9zZUFuZFJlbW92ZUFsbENvbm5lY3Rpb25zQXN5bmMoKS5XYWl0VW53cmFwKCk7CiAgICAgICAgICAgICAgICAgX2Rpc3Bvc2VkID0gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorCiAgICAgICAgICNlbmRyZWdpb24KICAgICB9CiB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9Db25uZWN0aW9uUG9vbFNldHRpbmdzLmNzIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9Db25uZWN0aW9uUG9vbFNldHRpbmdzLmNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjZGVlMGIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL0Nvbm5lY3Rpb25Qb29sU2V0dGluZ3MuY3MKQEAgLTAsMCArMSw3NSBAQAorI3JlZ2lvbiBMaWNlbnNlCisKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2VuZHJlZ2lvbgorCit1c2luZyBTeXN0ZW07Cit1c2luZyBHcmVtbGluLk5ldC5Ecml2ZXIuRXhjZXB0aW9uczsKKworbmFtZXNwYWNlIEdyZW1saW4uTmV0LkRyaXZlcgoreworICAgIC8vLyA8c3VtbWFyeT4KKyAgICAvLy8gICAgIEhvbGRzIHNldHRpbmdzIGZvciB0aGUgPHNlZSBjcmVmPSJDb25uZWN0aW9uUG9vbCIvPi4KKyAgICAvLy8gPC9zdW1tYXJ5PgorICAgIHB1YmxpYyBjbGFzcyBDb25uZWN0aW9uUG9vbFNldHRpbmdzCisgICAgeworICAgICAgICBwcml2YXRlIGludCBfcG9vbFNpemUgPSBEZWZhdWx0UG9vbFNpemU7CisgICAgICAgIHByaXZhdGUgaW50IF9tYXhJblByb2Nlc3NQZXJDb25uZWN0aW9uID0gRGVmYXVsdE1heEluUHJvY2Vzc1BlckNvbm5lY3Rpb247CisgICAgICAgIHByaXZhdGUgY29uc3QgaW50IERlZmF1bHRQb29sU2l6ZSA9IDQ7CisgICAgICAgIHByaXZhdGUgY29uc3QgaW50IERlZmF1bHRNYXhJblByb2Nlc3NQZXJDb25uZWN0aW9uID0gMzI7CisKKyAgICAgICAgLy8vIDxzdW1tYXJ5PgorICAgICAgICAvLy8gICAgIEdldHMgb3Igc2V0cyB0aGUgc2l6ZSBvZiB0aGUgY29ubmVjdGlvbiBwb29sLgorICAgICAgICAvLy8gPC9zdW1tYXJ5PgorICAgICAgICAvLy8gPHJlbWFya3M+CisgICAgICAgIC8vLyAgICAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgNC4KKyAgICAgICAgLy8vIDwvcmVtYXJrcz4KKyAgICAgICAgcHVibGljIGludCBQb29sU2l6ZQorICAgICAgICB7CisgICAgICAgICAgICBnZXQgPT4gX3Bvb2xTaXplOworICAgICAgICAgICAgc2V0CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlIDw9IDApCisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudE91dE9mUmFuZ2VFeGNlcHRpb24obmFtZW9mKFBvb2xTaXplKSwgIlBvb2xTaXplIG11c3QgYmUgPiAwISIpOworICAgICAgICAgICAgICAgIF9wb29sU2l6ZSA9IHZhbHVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8vIDxzdW1tYXJ5PgorICAgICAgICAvLy8gICAgIEdldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGluLWZsaWdodCByZXF1ZXN0cyB0aGF0IGNhbiBvY2N1ciBvbiBhIGNvbm5lY3Rpb24uCisgICAgICAgIC8vLyA8L3N1bW1hcnk+CisgICAgICAgIC8vLyA8cmVtYXJrcz4KKyAgICAgICAgLy8vICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAzMi4gQSA8c2VlIGNyZWY9Ik5vQ29ubmVjdGlvbkF2YWlsYWJsZUV4Y2VwdGlvbiIgLz4gaXMgdGhyb3duIGlmIHRoaXMgbGltaXQgaXMgcmVhY2hlZCBvbgorICAgICAgICAvLy8gICAgIGFsbCBjb25uZWN0aW9ucyB3aGVuIGEgbmV3IHJlcXVlc3QgY29tZXMgaW4uCisgICAgICAgIC8vLyA8L3JlbWFya3M+CisgICAgICAgIHB1YmxpYyBpbnQgTWF4SW5Qcm9jZXNzUGVyQ29ubmVjdGlvbgorICAgICAgICB7CisgICAgICAgICAgICBnZXQgPT4gX21heEluUHJvY2Vzc1BlckNvbm5lY3Rpb247CisgICAgICAgICAgICBzZXQKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUgPD0gMCkKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50T3V0T2ZSYW5nZUV4Y2VwdGlvbihuYW1lb2YoTWF4SW5Qcm9jZXNzUGVyQ29ubmVjdGlvbiksCisgICAgICAgICAgICAgICAgICAgICAgICAiTWF4SW5Qcm9jZXNzUGVyQ29ubmVjdGlvbiBtdXN0IGJlID4gMCEiKTsKKyAgICAgICAgICAgICAgICBfbWF4SW5Qcm9jZXNzUGVyQ29ubmVjdGlvbiA9IHZhbHVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Ecml2ZXIvQ29weU9uV3JpdGVDb2xsZWN0aW9uLmNzIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9Db3B5T25Xcml0ZUNvbGxlY3Rpb24uY3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDAwOTI3ZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Ecml2ZXIvQ29weU9uV3JpdGVDb2xsZWN0aW9uLmNzCkBAIC0wLDAgKzEsODUgQEAKKyNyZWdpb24gTGljZW5zZQorCisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNlbmRyZWdpb24KKwordXNpbmcgU3lzdGVtOworCituYW1lc3BhY2UgR3JlbWxpbi5OZXQuRHJpdmVyCit7CisgICAgaW50ZXJuYWwgY2xhc3MgQ29weU9uV3JpdGVDb2xsZWN0aW9uPFQ+CisgICAgeworICAgICAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBUW10gRW1wdHlBcnJheSA9IG5ldyBUWzBdOworICAgICAgICAKKyAgICAgICAgcHJpdmF0ZSB2b2xhdGlsZSBUW10gX2FycmF5ID0gRW1wdHlBcnJheTsKKyAgICAgICAgcHJpdmF0ZSByZWFkb25seSBvYmplY3QgX3dyaXRlTG9jayA9IG5ldyBvYmplY3QoKTsKKworICAgICAgICBwdWJsaWMgaW50IENvdW50ID0+IF9hcnJheS5MZW5ndGg7CisKKyAgICAgICAgcHVibGljIHZvaWQgQWRkUmFuZ2UoVFtdIGl0ZW1zKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoaXRlbXMgPT0gbnVsbCB8fCBpdGVtcy5MZW5ndGggPT0gMCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBsb2NrIChfd3JpdGVMb2NrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBuZXdBcnJheSA9IG5ldyBUW19hcnJheS5MZW5ndGggKyBpdGVtcy5MZW5ndGhdOworICAgICAgICAgICAgICAgIF9hcnJheS5Db3B5VG8obmV3QXJyYXksIDApOworICAgICAgICAgICAgICAgIEFycmF5LkNvcHkoaXRlbXMsIDAsIG5ld0FycmF5LCBfYXJyYXkuTGVuZ3RoLCBpdGVtcy5MZW5ndGgpOworICAgICAgICAgICAgICAgIF9hcnJheSA9IG5ld0FycmF5OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGJvb2wgVHJ5UmVtb3ZlKFQgaXRlbSkKKyAgICAgICAgeworICAgICAgICAgICAgbG9jayAoX3dyaXRlTG9jaykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSBBcnJheS5JbmRleE9mKF9hcnJheSwgaXRlbSk7CisgICAgICAgICAgICAgICAgaWYgKGluZGV4IDwgMCkgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChfYXJyYXkuTGVuZ3RoID09IDEgJiYgaW5kZXggPT0gMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIF9hcnJheSA9IEVtcHR5QXJyYXk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHZhciBuZXdBcnJheSA9IG5ldyBUW19hcnJheS5MZW5ndGggLSAxXTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKGluZGV4ICE9IDApCisgICAgICAgICAgICAgICAgICAgIEFycmF5LkNvcHkoX2FycmF5LCAwLCBuZXdBcnJheSwgMCwgaW5kZXgpOworICAgICAgICAgICAgICAgIGlmIChpbmRleCA8IF9hcnJheS5MZW5ndGggLSAxKQorICAgICAgICAgICAgICAgICAgICBBcnJheS5Db3B5KF9hcnJheSwgaW5kZXggKyAxLCBuZXdBcnJheSwgaW5kZXgsIF9hcnJheS5MZW5ndGggLSBpbmRleCAtIDEpOworICAgICAgICAgICAgICAgIF9hcnJheSA9IG5ld0FycmF5OworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcHVibGljIFRbXSBSZW1vdmVBbmRHZXRBbGwoKQorICAgICAgICB7CisgICAgICAgICAgICBsb2NrIChfd3JpdGVMb2NrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBvbGQgPSBfYXJyYXk7CisgICAgICAgICAgICAgICAgX2FycmF5ID0gRW1wdHlBcnJheTsKKyAgICAgICAgICAgICAgICByZXR1cm4gb2xkOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcHVibGljIFRbXSBTbmFwc2hvdCA9PiBfYXJyYXk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Ecml2ZXIvRXhjZXB0aW9ucy9Db25uZWN0aW9uUG9vbEJ1c3lFeGNlcHRpb24uY3MgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL0V4Y2VwdGlvbnMvQ29ubmVjdGlvblBvb2xCdXN5RXhjZXB0aW9uLmNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjZDQwZmYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL0V4Y2VwdGlvbnMvQ29ubmVjdGlvblBvb2xCdXN5RXhjZXB0aW9uLmNzCkBAIC0wLDAgKzEsNjAgQEAKKyNyZWdpb24gTGljZW5zZQorCisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNlbmRyZWdpb24KKworbmFtZXNwYWNlIEdyZW1saW4uTmV0LkRyaXZlci5FeGNlcHRpb25zCit7CisgICAgLy8vIDxzdW1tYXJ5PgorICAgIC8vLyAgICAgVGhlIGV4Y2VwdGlvbiB0aGF0IGlzIHRocm93biB3aGVuIGFsbCBjb25uZWN0aW9ucyBpbiB0aGUgcG9vbCBoYXZlIHJlYWNoZWQgdGhlaXIgbWF4aW11bSBudW1iZXIgb2YgaW4tZmxpZ2h0CisgICAgLy8vICAgICByZXF1ZXN0cy4KKyAgICAvLy8gPC9zdW1tYXJ5PgorICAgIHB1YmxpYyBjbGFzcyBDb25uZWN0aW9uUG9vbEJ1c3lFeGNlcHRpb24gOiBOb0Nvbm5lY3Rpb25BdmFpbGFibGVFeGNlcHRpb24KKyAgICB7CisgICAgICAgIC8vLyA8c3VtbWFyeT4KKyAgICAgICAgLy8vICAgICBHZXRzIHRoZSBzaXplIG9mIHRoZSBjb25uZWN0aW9uIHBvb2wuCisgICAgICAgIC8vLyA8L3N1bW1hcnk+CisgICAgICAgIHB1YmxpYyBpbnQgUG9vbFNpemUgeyBnZXQ7IH0KKworICAgICAgICAvLy8gPHN1bW1hcnk+CisgICAgICAgIC8vLyAgICAgR2V0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgaW4tZmxpZ2h0IHJlcXVlc3RzIHRoYXQgY2FuIG9jY3VyIG9uIGEgY29ubmVjdGlvbi4KKyAgICAgICAgLy8vIDwvc3VtbWFyeT4KKyAgICAgICAgcHVibGljIGludCBNYXhJblByb2Nlc3NQZXJDb25uZWN0aW9uIHsgZ2V0OyB9CisKKyAgICAgICAgLy8vIDxzdW1tYXJ5PgorICAgICAgICAvLy8gICAgIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IkNvbm5lY3Rpb25Qb29sQnVzeUV4Y2VwdGlvbiIgLz4gY2xhc3MuCisgICAgICAgIC8vLyA8L3N1bW1hcnk+CisgICAgICAgIHB1YmxpYyBDb25uZWN0aW9uUG9vbEJ1c3lFeGNlcHRpb24oaW50IHBvb2xTaXplLCBpbnQgbWF4SW5Qcm9jZXNzUGVyQ29ubmVjdGlvbikKKyAgICAgICAgICAgIDogYmFzZShDcmVhdGVNZXNzYWdlKHBvb2xTaXplLCBtYXhJblByb2Nlc3NQZXJDb25uZWN0aW9uKSkKKyAgICAgICAgeworICAgICAgICAgICAgUG9vbFNpemUgPSBwb29sU2l6ZTsKKyAgICAgICAgICAgIE1heEluUHJvY2Vzc1BlckNvbm5lY3Rpb24gPSBtYXhJblByb2Nlc3NQZXJDb25uZWN0aW9uOworICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZSBzdGF0aWMgc3RyaW5nIENyZWF0ZU1lc3NhZ2UoaW50IHBvb2xTaXplLCBpbnQgbWF4SW5Qcm9jZXNzUGVyQ29ubmVjdGlvbikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuICQiQWxsIHtwb29sU2l6ZX0gY29ubmVjdGlvbnMgaGF2ZSByZWFjaGVkIHRoZWlyICIgKworICAgICAgICAgICAgICAgICAgICQie25hbWVvZihDb25uZWN0aW9uUG9vbFNldHRpbmdzLk1heEluUHJvY2Vzc1BlckNvbm5lY3Rpb24pfSBsaW1pdCBvZiB7bWF4SW5Qcm9jZXNzUGVyQ29ubmVjdGlvbn0uIiArCisgICAgICAgICAgICAgICAgICAgJCIgQ29uc2lkZXIgaW5jcmVhc2luZyBlaXRoZXIgdGhlIHtuYW1lb2YoQ29ubmVjdGlvblBvb2xTZXR0aW5ncy5Qb29sU2l6ZSl9IG9yIHRoZSAiICsKKyAgICAgICAgICAgICAgICAgICAkIntuYW1lb2YoQ29ubmVjdGlvblBvb2xTZXR0aW5ncy5NYXhJblByb2Nlc3NQZXJDb25uZWN0aW9uKX0gbGltaXQuIjsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL0V4Y2VwdGlvbnMvTm9Db25uZWN0aW9uQXZhaWxhYmxlRXhjZXB0aW9uLmNzIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9FeGNlcHRpb25zL05vQ29ubmVjdGlvbkF2YWlsYWJsZUV4Y2VwdGlvbi5jcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjI0MzZjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9FeGNlcHRpb25zL05vQ29ubmVjdGlvbkF2YWlsYWJsZUV4Y2VwdGlvbi5jcwpAQCAtMCwwICsxLDU2IEBACivvu78jcmVnaW9uIExpY2Vuc2UKKworLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjZW5kcmVnaW9uCisKK3VzaW5nIFN5c3RlbTsKKworbmFtZXNwYWNlIEdyZW1saW4uTmV0LkRyaXZlci5FeGNlcHRpb25zCit7CisgICAgLy8vIDxzdW1tYXJ5PgorICAgIC8vLyAgICAgVGhlIGV4Y2VwdGlvbiB0aGF0IGlzIHRocm93biB3aGVuIG5vIGNvbm5lY3Rpb24gaXMgYXZhaWxhYmxlIHRvIHNlcnZpY2UgYSByZXF1ZXN0LgorICAgIC8vLyA8L3N1bW1hcnk+CisgICAgcHVibGljIGNsYXNzIE5vQ29ubmVjdGlvbkF2YWlsYWJsZUV4Y2VwdGlvbiA6IEV4Y2VwdGlvbgorICAgIHsKKyAgICAgICAgLy8vIDxzdW1tYXJ5PgorICAgICAgICAvLy8gICAgIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9Ik5vQ29ubmVjdGlvbkF2YWlsYWJsZUV4Y2VwdGlvbiIgLz4gY2xhc3MuCisgICAgICAgIC8vLyA8L3N1bW1hcnk+CisgICAgICAgIHB1YmxpYyBOb0Nvbm5lY3Rpb25BdmFpbGFibGVFeGNlcHRpb24oKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICAvLy8gPHN1bW1hcnk+CisgICAgICAgIC8vLyAgICAgSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iTm9Db25uZWN0aW9uQXZhaWxhYmxlRXhjZXB0aW9uIiAvPiBjbGFzcy4KKyAgICAgICAgLy8vIDwvc3VtbWFyeT4KKyAgICAgICAgcHVibGljIE5vQ29ubmVjdGlvbkF2YWlsYWJsZUV4Y2VwdGlvbihzdHJpbmcgbWVzc2FnZSkKKyAgICAgICAgICAgIDogYmFzZShtZXNzYWdlKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICAvLy8gPHN1bW1hcnk+CisgICAgICAgIC8vLyAgICAgSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iTm9Db25uZWN0aW9uQXZhaWxhYmxlRXhjZXB0aW9uIiAvPiBjbGFzcy4KKyAgICAgICAgLy8vIDwvc3VtbWFyeT4KKyAgICAgICAgcHVibGljIE5vQ29ubmVjdGlvbkF2YWlsYWJsZUV4Y2VwdGlvbihzdHJpbmcgbWVzc2FnZSwgRXhjZXB0aW9uIGlubmVyKQorICAgICAgICAgICAgOiBiYXNlKG1lc3NhZ2UsIGlubmVyKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9FeGNlcHRpb25zL1Jlc3BvbnNlRXhjZXB0aW9uLmNzIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9FeGNlcHRpb25zL1Jlc3BvbnNlRXhjZXB0aW9uLmNzCmluZGV4IDhkMjYxMDYuLjU5YWMxYWEgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Ecml2ZXIvRXhjZXB0aW9ucy9SZXNwb25zZUV4Y2VwdGlvbi5jcworKysgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL0V4Y2VwdGlvbnMvUmVzcG9uc2VFeGNlcHRpb24uY3MKQEAgLTIyLDYgKzIyLDggQEAKICNlbmRyZWdpb24KIAogdXNpbmcgU3lzdGVtOwordXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7Cit1c2luZyBHcmVtbGluLk5ldC5Ecml2ZXIuTWVzc2FnZXM7CiAKIG5hbWVzcGFjZSBHcmVtbGluLk5ldC5Ecml2ZXIuRXhjZXB0aW9ucwogewpAQCAtMzMsOSArMzUsMjUgQEAKICAgICAgICAgLy8vIDxzdW1tYXJ5PgogICAgICAgICAvLy8gICAgIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IlJlc3BvbnNlRXhjZXB0aW9uIiAvPiBjbGFzcy4KICAgICAgICAgLy8vIDwvc3VtbWFyeT4KKyAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJzdGF0dXNDb2RlIj5UaGUgc3RhdHVzIGNvZGUgcmV0dXJuZWQgYnkgdGhlIHNlcnZlci48L3BhcmFtPgorICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InN0YXR1c0F0dHJpYnV0ZXMiPlRoZSBzdGF0dXMgYXR0cmlidXRlcyBmcm9tIHRoZSBncmVtbGluIHJlc3BvbnNlLjwvcGFyYW0+CiAgICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ibWVzc2FnZSI+VGhlIGVycm9yIG1lc3NhZ2Ugc3RyaW5nLjwvcGFyYW0+Ci0gICAgICAgIHB1YmxpYyBSZXNwb25zZUV4Y2VwdGlvbihzdHJpbmcgbWVzc2FnZSkgOiBiYXNlKG1lc3NhZ2UpCisgICAgICAgIHB1YmxpYyBSZXNwb25zZUV4Y2VwdGlvbihSZXNwb25zZVN0YXR1c0NvZGUgc3RhdHVzQ29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElSZWFkT25seURpY3Rpb25hcnk8c3RyaW5nLCBvYmplY3Q+IHN0YXR1c0F0dHJpYnV0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcgbWVzc2FnZSkgOiBiYXNlKG1lc3NhZ2UpCiAgICAgICAgIHsKKyAgICAgICAgICAgIFN0YXR1c0NvZGUgPSBzdGF0dXNDb2RlOworICAgICAgICAgICAgU3RhdHVzQXR0cmlidXRlcyA9IHN0YXR1c0F0dHJpYnV0ZXM7CiAgICAgICAgIH0KKworICAgICAgICAvLy8gPHN1bW1hcnk+CisgICAgICAgIC8vLyAgICAgR2V0cyB0aGUgc3RhdHVzIGNvZGUgcmV0dXJuZWQgZnJvbSB0aGUgc2VydmVyLgorICAgICAgICAvLy8gPC9zdW1tYXJ5PgorICAgICAgICBwdWJsaWMgUmVzcG9uc2VTdGF0dXNDb2RlIFN0YXR1c0NvZGUgeyBnZXQ7IH0KKworICAgICAgICAvLy8gPHN1bW1hcnk+CisgICAgICAgIC8vLyAgICAgR2V0cyB0aGUgc3RhdHVzIGF0dHJpYnV0ZXMgZnJvbSB0aGUgZ3JlbWxpbiByZXNwb25zZQorICAgICAgICAvLy8gPC9zdW1tYXJ5PgorICAgICAgICBwdWJsaWMgSVJlYWRPbmx5RGljdGlvbmFyeTxzdHJpbmcsIG9iamVjdD4gU3RhdHVzQXR0cmlidXRlcyB7IGdldDsgfQogICAgIH0KIH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL0V4Y2VwdGlvbnMvU2VydmVyVW5hdmFpbGFibGVFeGNlcHRpb24uY3MgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL0V4Y2VwdGlvbnMvU2VydmVyVW5hdmFpbGFibGVFeGNlcHRpb24uY3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTRiNDY3YQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Ecml2ZXIvRXhjZXB0aW9ucy9TZXJ2ZXJVbmF2YWlsYWJsZUV4Y2VwdGlvbi5jcwpAQCAtMCwwICsxLDQ1IEBACisjcmVnaW9uIExpY2Vuc2UKKworLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjZW5kcmVnaW9uCisKK25hbWVzcGFjZSBHcmVtbGluLk5ldC5Ecml2ZXIuRXhjZXB0aW9ucworeworICAgIC8vLyA8c3VtbWFyeT4KKyAgICAvLy8gICAgIFRoZSBleGNlcHRpb24gdGhhdCBpcyB0aHJvd24gd2hlbiBubyBjb25uZWN0aW9uIGlzIGF2YWlsYWJsZSB0byB0aGUgPHNlZSBjcmVmPSJHcmVtbGluU2VydmVyIi8+LgorICAgIC8vLyA8L3N1bW1hcnk+CisgICAgcHVibGljIGNsYXNzIFNlcnZlclVuYXZhaWxhYmxlRXhjZXB0aW9uIDogTm9Db25uZWN0aW9uQXZhaWxhYmxlRXhjZXB0aW9uCisgICAgeworICAgICAgICAvLy8gPHN1bW1hcnk+CisgICAgICAgIC8vLyAgICAgSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iU2VydmVyVW5hdmFpbGFibGVFeGNlcHRpb24iIC8+IGNsYXNzLgorICAgICAgICAvLy8gPC9zdW1tYXJ5PgorICAgICAgICBwdWJsaWMgU2VydmVyVW5hdmFpbGFibGVFeGNlcHRpb24oKQorICAgICAgICAgICAgOiBiYXNlKENyZWF0ZU1lc3NhZ2UoKSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZSBzdGF0aWMgc3RyaW5nIENyZWF0ZU1lc3NhZ2UoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgICAgICAiTm8gY29ubmVjdGlvbiB0byB0aGUgc2VydmVyIGF2YWlsYWJsZSB3aGljaCBtb3N0IGxpa2VseSBtZWFucyB0aGF0IHRoZSBzZXJ2ZXIgaXMgY29tcGxldGVseSB1bmF2YWlsYWJsZS4iOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Ecml2ZXIvR3JlbWxpbkNsaWVudC5jcyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Ecml2ZXIvR3JlbWxpbkNsaWVudC5jcwppbmRleCBjN2U5MzY1Li4yNjJiNDg5IDEwMDY0NAotLS0gYS9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL0dyZW1saW5DbGllbnQuY3MKKysrIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9HcmVtbGluQ2xpZW50LmNzCkBAIC01NCw2ICs1NCw3IEBACiAgICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iZ3JhcGhTT05SZWFkZXIiPkEgPHNlZSBjcmVmPSJHcmFwaFNPTlJlYWRlciIgLz4gaW5zdGFuY2UgdG8gcmVhZCByZWNlaXZlZCBHcmFwaFNPTiBkYXRhLjwvcGFyYW0+CiAgICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iZ3JhcGhTT05Xcml0ZXIiPmEgPHNlZSBjcmVmPSJHcmFwaFNPTldyaXRlciIgLz4gaW5zdGFuY2UgdG8gd3JpdGUgR3JhcGhTT04gZGF0YS48L3BhcmFtPgogICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im1pbWVUeXBlIj5UaGUgR3JhcGhTT04gdmVyc2lvbiBtaW1lIHR5cGUsIGRlZmF1bHRzIHRvIGxhdGVzdCBzdXBwb3J0ZWQgYnkgdGhlIHNlcnZlci48L3BhcmFtPgorICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImNvbm5lY3Rpb25Qb29sU2V0dGluZ3MiPlRoZSA8c2VlIGNyZWY9IkNvbm5lY3Rpb25Qb29sU2V0dGluZ3MiLz4gZm9yIHRoZSBjb25uZWN0aW9uIHBvb2wuPC9wYXJhbT4KICAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJ3ZWJTb2NrZXRDb25maWd1cmF0aW9uIj4KICAgICAgICAgLy8vICAgICBBIGRlbGVnYXRlIHRoYXQgd2lsbCBiZSBpbnZva2VkIHdpdGggdGhlIDxzZWUgY3JlZj0iQ2xpZW50V2ViU29ja2V0T3B0aW9ucyIgLz4KICAgICAgICAgLy8vICAgICBvYmplY3QgdXNlZCB0byBjb25maWd1cmUgV2ViU29ja2V0IGNvbm5lY3Rpb25zLgpAQCAtNjEsMTMgKzYyLDMwIEBACiAgICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ic2Vzc2lvbklkIj5UaGUgc2Vzc2lvbiBJZCBpZiBHcmVtbGluIENsaWVudCBpbiBzZXNzaW9uIG1vZGUsIGRlZmF1bHRzIHRvIG51bGwgYXMgc2Vzc2lvbi1sZXNzIENsaWVudC48L3BhcmFtPgogICAgICAgICBwdWJsaWMgR3JlbWxpbkNsaWVudChHcmVtbGluU2VydmVyIGdyZW1saW5TZXJ2ZXIsIEdyYXBoU09OUmVhZGVyIGdyYXBoU09OUmVhZGVyID0gbnVsbCwKICAgICAgICAgICAgIEdyYXBoU09OV3JpdGVyIGdyYXBoU09OV3JpdGVyID0gbnVsbCwgc3RyaW5nIG1pbWVUeXBlID0gbnVsbCwKKyAgICAgICAgICAgIENvbm5lY3Rpb25Qb29sU2V0dGluZ3MgY29ubmVjdGlvblBvb2xTZXR0aW5ncyA9IG51bGwsCiAgICAgICAgICAgICBBY3Rpb248Q2xpZW50V2ViU29ja2V0T3B0aW9ucz4gd2ViU29ja2V0Q29uZmlndXJhdGlvbiA9IG51bGwsIHN0cmluZyBzZXNzaW9uSWQgPSBudWxsKQogICAgICAgICB7CiAgICAgICAgICAgICB2YXIgcmVhZGVyID0gZ3JhcGhTT05SZWFkZXIgPz8gbmV3IEdyYXBoU09OM1JlYWRlcigpOwogICAgICAgICAgICAgdmFyIHdyaXRlciA9IGdyYXBoU09OV3JpdGVyID8/IG5ldyBHcmFwaFNPTjNXcml0ZXIoKTsKICAgICAgICAgICAgIHZhciBjb25uZWN0aW9uRmFjdG9yeSA9IG5ldyBDb25uZWN0aW9uRmFjdG9yeShncmVtbGluU2VydmVyLCByZWFkZXIsIHdyaXRlciwgbWltZVR5cGUgPz8gRGVmYXVsdE1pbWVUeXBlLAogICAgICAgICAgICAgICAgIHdlYlNvY2tldENvbmZpZ3VyYXRpb24sIHNlc3Npb25JZCk7Ci0gICAgICAgICAgICBfY29ubmVjdGlvblBvb2wgPSBuZXcgQ29ubmVjdGlvblBvb2woY29ubmVjdGlvbkZhY3RvcnkpOworCisgICAgICAgICAgICAvLyBtYWtlIHN1cmUgb25lIGNvbm5lY3Rpb24gaW4gcG9vbCBhcyBzZXNzaW9uIG1vZGUKKyAgICAgICAgICAgIGlmICghU3RyaW5nLklzTnVsbE9yRW1wdHkoc2Vzc2lvbklkKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoY29ubmVjdGlvblBvb2xTZXR0aW5ncyAhPSBudWxsKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNvbm5lY3Rpb25Qb29sU2V0dGluZ3MuUG9vbFNpemUgIT0gMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudE91dE9mUmFuZ2VFeGNlcHRpb24obmFtZW9mKGNvbm5lY3Rpb25Qb29sU2V0dGluZ3MpLCAiUG9vbFNpemUgbXVzdCBiZSAxIGluIHNlc3Npb24gbW9kZSEiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvblBvb2xTZXR0aW5ncyA9IG5ldyBDb25uZWN0aW9uUG9vbFNldHRpbmdzKCk7CisgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25Qb29sU2V0dGluZ3MuUG9vbFNpemUgPSAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF9jb25uZWN0aW9uUG9vbCA9CisgICAgICAgICAgICAgICAgbmV3IENvbm5lY3Rpb25Qb29sKGNvbm5lY3Rpb25GYWN0b3J5LCBjb25uZWN0aW9uUG9vbFNldHRpbmdzID8/IG5ldyBDb25uZWN0aW9uUG9vbFNldHRpbmdzKCkpOyAgICAgICAgICAgIAogICAgICAgICB9CiAKICAgICAgICAgLy8vIDxzdW1tYXJ5PgpAQCAtNzYsNyArOTQsNyBAQAogICAgICAgICBwdWJsaWMgaW50IE5yQ29ubmVjdGlvbnMgPT4gX2Nvbm5lY3Rpb25Qb29sLk5yQ29ubmVjdGlvbnM7CiAKICAgICAgICAgLy8vIDxpbmhlcml0ZG9jIC8+Ci0gICAgICAgIHB1YmxpYyBhc3luYyBUYXNrPElSZWFkT25seUNvbGxlY3Rpb248VD4+IFN1Ym1pdEFzeW5jPFQ+KFJlcXVlc3RNZXNzYWdlIHJlcXVlc3RNZXNzYWdlKQorICAgICAgICBwdWJsaWMgYXN5bmMgVGFzazxSZXN1bHRTZXQ8VD4+IFN1Ym1pdEFzeW5jPFQ+KFJlcXVlc3RNZXNzYWdlIHJlcXVlc3RNZXNzYWdlKQogICAgICAgICB7CiAgICAgICAgICAgICB1c2luZyAodmFyIGNvbm5lY3Rpb24gPSBhd2FpdCBfY29ubmVjdGlvblBvb2wuR2V0QXZhaWxhYmxlQ29ubmVjdGlvbkFzeW5jKCkuQ29uZmlndXJlQXdhaXQoZmFsc2UpKQogICAgICAgICAgICAgewpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9HcmVtbGluQ2xpZW50RXh0ZW5zaW9ucy5jcyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Ecml2ZXIvR3JlbWxpbkNsaWVudEV4dGVuc2lvbnMuY3MKaW5kZXggNGFhZDczZS4uMWIxODI0MSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9HcmVtbGluQ2xpZW50RXh0ZW5zaW9ucy5jcworKysgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL0dyZW1saW5DbGllbnRFeHRlbnNpb25zLmNzCkBAIC0xMjEsMTIgKzEyMSwxMiBAQAogICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImdyZW1saW5DbGllbnQiPlRoZSA8c2VlIGNyZWY9IklHcmVtbGluQ2xpZW50IiAvPiB0aGF0IHN1Ym1pdHMgdGhlIHJlcXVlc3QuPC9wYXJhbT4KICAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJyZXF1ZXN0U2NyaXB0Ij5UaGUgR3JlbWxpbiByZXF1ZXN0IHNjcmlwdCB0byBzZW5kLjwvcGFyYW0+CiAgICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iYmluZGluZ3MiPkJpbmRpbmdzIGZvciBwYXJhbWV0ZXJzIHVzZWQgaW4gdGhlIHJlcXVlc3RTY3JpcHQuPC9wYXJhbT4KLSAgICAgICAgLy8vIDxyZXR1cm5zPkEgY29sbGVjdGlvbiBvZiB0aGUgZGF0YSByZXR1cm5lZCBmcm9tIHRoZSBzZXJ2ZXIuPC9yZXR1cm5zPgorICAgICAgICAvLy8gPHJldHVybnM+QSA8c2VlIGNyZWY9IlJlc3VsdFNldHtUfSIvPiBjb250YWluaW5nIHRoZSBkYXRhIGFuZCBzdGF0dXMgYXR0cmlidXRlcyByZXR1cm5lZCBmcm9tIHRoZSBzZXJ2ZXIuPC9yZXR1cm5zPgogICAgICAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJFeGNlcHRpb25zLlJlc3BvbnNlRXhjZXB0aW9uIj4KICAgICAgICAgLy8vICAgICBUaHJvd24gd2hlbiBhIHJlc3BvbnNlIGlzIHJlY2VpdmVkIGZyb20gR3JlbWxpbiBTZXJ2ZXIgdGhhdCBpbmRpY2F0ZXMKICAgICAgICAgLy8vICAgICB0aGF0IGFuIGVycm9yIG9jY3VycmVkLgogICAgICAgICAvLy8gPC9leGNlcHRpb24+Ci0gICAgICAgIHB1YmxpYyBzdGF0aWMgYXN5bmMgVGFzazxJUmVhZE9ubHlDb2xsZWN0aW9uPFQ+PiBTdWJtaXRBc3luYzxUPih0aGlzIElHcmVtbGluQ2xpZW50IGdyZW1saW5DbGllbnQsCisgICAgICAgIHB1YmxpYyBzdGF0aWMgYXN5bmMgVGFzazxSZXN1bHRTZXQ8VD4+IFN1Ym1pdEFzeW5jPFQ+KHRoaXMgSUdyZW1saW5DbGllbnQgZ3JlbWxpbkNsaWVudCwKICAgICAgICAgICAgIHN0cmluZyByZXF1ZXN0U2NyaXB0LAogICAgICAgICAgICAgRGljdGlvbmFyeTxzdHJpbmcsIG9iamVjdD4gYmluZGluZ3MgPSBudWxsKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL0lDb25uZWN0aW9uLmNzIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9JQ29ubmVjdGlvbi5jcwppbmRleCBlMTY1MWE2Li5iNWVmNTJjIDEwMDY0NAotLS0gYS9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL0lDb25uZWN0aW9uLmNzCisrKyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Ecml2ZXIvSUNvbm5lY3Rpb24uY3MKQEAgLTMwLDYgKzMwLDYgQEAKIHsKICAgICBpbnRlcm5hbCBpbnRlcmZhY2UgSUNvbm5lY3Rpb24gOiBJRGlzcG9zYWJsZQogICAgIHsKLSAgICAgICAgVGFzazxJUmVhZE9ubHlDb2xsZWN0aW9uPFQ+PiBTdWJtaXRBc3luYzxUPihSZXF1ZXN0TWVzc2FnZSByZXF1ZXN0TWVzc2FnZSk7CisgICAgICAgIFRhc2s8UmVzdWx0U2V0PFQ+PiBTdWJtaXRBc3luYzxUPihSZXF1ZXN0TWVzc2FnZSByZXF1ZXN0TWVzc2FnZSk7CiAgICAgfQogfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Ecml2ZXIvSUdyZW1saW5DbGllbnQuY3MgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL0lHcmVtbGluQ2xpZW50LmNzCmluZGV4IDdhNzA0OGEuLjliZWY0YmUgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Ecml2ZXIvSUdyZW1saW5DbGllbnQuY3MKKysrIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9JR3JlbWxpbkNsaWVudC5jcwpAQCAtMzgsMTEgKzM4LDExIEBACiAgICAgICAgIC8vLyA8L3N1bW1hcnk+CiAgICAgICAgIC8vLyA8dHlwZXBhcmFtIG5hbWU9IlQiPlRoZSB0eXBlIG9mIHRoZSBleHBlY3RlZCByZXN1bHRzLjwvdHlwZXBhcmFtPgogICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InJlcXVlc3RNZXNzYWdlIj5UaGUgPHNlZSBjcmVmPSJSZXF1ZXN0TWVzc2FnZSIgLz4gdG8gc2VuZC48L3BhcmFtPgotICAgICAgICAvLy8gPHJldHVybnM+QSBjb2xsZWN0aW9uIG9mIHRoZSBkYXRhIHJldHVybmVkIGZyb20gdGhlIHNlcnZlci48L3JldHVybnM+CisgICAgICAgIC8vLyA8cmV0dXJucz5BIDxzZWUgY3JlZj0iUmVzdWx0U2V0e1R9Ii8+IGNvbnRhaW5pbmcgdGhlIGRhdGEgYW5kIHN0YXR1cyBhdHRyaWJ1dGVzIHJldHVybmVkIGZyb20gdGhlIHNlcnZlci48L3JldHVybnM+CiAgICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkV4Y2VwdGlvbnMuUmVzcG9uc2VFeGNlcHRpb24iPgogICAgICAgICAvLy8gICAgIFRocm93biB3aGVuIGEgcmVzcG9uc2UgaXMgcmVjZWl2ZWQgZnJvbSBHcmVtbGluIFNlcnZlciB0aGF0IGluZGljYXRlcwogICAgICAgICAvLy8gICAgIHRoYXQgYW4gZXJyb3Igb2NjdXJyZWQuCiAgICAgICAgIC8vLyA8L2V4Y2VwdGlvbj4KLSAgICAgICAgVGFzazxJUmVhZE9ubHlDb2xsZWN0aW9uPFQ+PiBTdWJtaXRBc3luYzxUPihSZXF1ZXN0TWVzc2FnZSByZXF1ZXN0TWVzc2FnZSk7CisgICAgICAgIFRhc2s8UmVzdWx0U2V0PFQ+PiBTdWJtaXRBc3luYzxUPihSZXF1ZXN0TWVzc2FnZSByZXF1ZXN0TWVzc2FnZSk7CiAgICAgfQogfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Ecml2ZXIvTWVzc2FnZXMvUmVzcG9uc2VTdGF0dXMuY3MgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL01lc3NhZ2VzL1Jlc3BvbnNlU3RhdHVzLmNzCmluZGV4IGUzYzE3OTcuLmFhMGIxYjcgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Ecml2ZXIvTWVzc2FnZXMvUmVzcG9uc2VTdGF0dXMuY3MKKysrIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9NZXNzYWdlcy9SZXNwb25zZVN0YXR1cy5jcwpAQCAtNDQsNyArNDQsNyBAQAogICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgVGhyb3dJZlN0YXR1c0luZGljYXRlc0Vycm9yKHRoaXMgUmVzcG9uc2VTdGF0dXMgc3RhdHVzKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoc3RhdHVzLkNvZGUuSW5kaWNhdGVzRXJyb3IoKSkKLSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmVzcG9uc2VFeGNlcHRpb24oJCJ7c3RhdHVzLkNvZGV9OiB7c3RhdHVzLk1lc3NhZ2V9Iik7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJlc3BvbnNlRXhjZXB0aW9uKHN0YXR1cy5Db2RlLCBzdGF0dXMuQXR0cmlidXRlcywgJCJ7c3RhdHVzLkNvZGV9OiB7c3RhdHVzLk1lc3NhZ2V9Iik7CiAgICAgICAgIH0KICAgICB9CiB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9NZXNzYWdlcy9SZXNwb25zZVN0YXR1c0NvZGUuY3MgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL01lc3NhZ2VzL1Jlc3BvbnNlU3RhdHVzQ29kZS5jcwppbmRleCA1NThlNGY2Li43OGY4NzU5IDEwMDY0NAotLS0gYS9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL01lc3NhZ2VzL1Jlc3BvbnNlU3RhdHVzQ29kZS5jcworKysgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL01lc3NhZ2VzL1Jlc3BvbnNlU3RhdHVzQ29kZS5jcwpAQCAtMjUsMTggKzI1LDc0IEBACiAKIG5hbWVzcGFjZSBHcmVtbGluLk5ldC5Ecml2ZXIuTWVzc2FnZXMKIHsKLSAgICBpbnRlcm5hbCBlbnVtIFJlc3BvbnNlU3RhdHVzQ29kZQorICAgIC8vLyA8c3VtbWFyeT4KKyAgICAvLy8gICAgIFJlcHJlc2VudHMgdGhlIHZhcmlvdXMgc3RhdHVzIGNvZGVzIHRoYXQgR3JlbWxpbiBTZXJ2ZXIgcmV0dXJucy4KKyAgICAvLy8gPC9zdW1tYXJ5PgorICAgIHB1YmxpYyBlbnVtIFJlc3BvbnNlU3RhdHVzQ29kZQogICAgIHsKKyAgICAgICAgLy8vIDxzdW1tYXJ5PgorICAgICAgICAvLy8gICAgIFRoZSBzZXJ2ZXIgc3VjY2Vzc2Z1bGx5IHByb2Nlc3NlZCBhIHJlcXVlc3QgdG8gY29tcGxldGlvbiAtIHRoZXJlIGFyZSBubyBtZXNzYWdlcyByZW1haW5pbmcgaW4gdGhpcworICAgICAgICAvLy8gICAgIHN0cmVhbS4KKyAgICAgICAgLy8vIDwvc3VtbWFyeT4KICAgICAgICAgU3VjY2VzcyA9IDIwMCwKKyAgICAgICAgCisgICAgICAgIC8vLyA8c3VtbWFyeT4KKyAgICAgICAgLy8vICAgICBUaGUgc2VydmVyIHByb2Nlc3NlZCB0aGUgcmVxdWVzdCBidXQgdGhlcmUgaXMgbm8gcmVzdWx0IHRvIHJldHVybiAoZS5nLiBhbiBJdGVyYXRvciB3aXRoIG5vIGVsZW1lbnRzKQorICAgICAgICAvLy8gICAgIC0gdGhlcmUgYXJlIG5vIG1lc3NhZ2VzIHJlbWFpbmluZyBpbiB0aGlzIHN0cmVhbS4KKyAgICAgICAgLy8vIDwvc3VtbWFyeT4KICAgICAgICAgTm9Db250ZW50ID0gMjA0LAorICAgICAgICAKKyAgICAgICAgLy8vIDxzdW1tYXJ5PgorICAgICAgICAvLy8gICAgIFRoZSBzZXJ2ZXIgc3VjY2Vzc2Z1bGx5IHJldHVybmVkIHNvbWUgY29udGVudCwgYnV0IHRoZXJlIGlzIG1vcmUgaW4gdGhlIHN0cmVhbSB0byBhcnJpdmUgLSB3YWl0IGZvciBhCisgICAgICAgIC8vLyAgICAgU1VDQ0VTUyB0byBzaWduaWZ5IHRoZSBlbmQgb2YgdGhlIHN0cmVhbS4KKyAgICAgICAgLy8vIDwvc3VtbWFyeT4KICAgICAgICAgUGFydGlhbENvbnRlbnQgPSAyMDYsCisKKyAgICAgICAgLy8vIDxzdW1tYXJ5PgorICAgICAgICAvLy8gICAgIFRoZSByZXF1ZXN0IGF0dGVtcHRlZCB0byBhY2Nlc3MgcmVzb3VyY2VzIHRoYXQgdGhlIHJlcXVlc3RpbmcgdXNlciBkaWQgbm90IGhhdmUgYWNjZXNzIHRvLgorICAgICAgICAvLy8gPC9zdW1tYXJ5PgogICAgICAgICBVbmF1dGhvcml6ZWQgPSA0MDEsCisKKyAgICAgICAgLy8vIDxzdW1tYXJ5PgorICAgICAgICAvLy8gICAgIEEgY2hhbGxlbmdlIGZyb20gdGhlIHNlcnZlciBmb3IgdGhlIGNsaWVudCB0byBhdXRoZW50aWNhdGUgaXRzIHJlcXVlc3QuCisgICAgICAgIC8vLyA8L3N1bW1hcnk+CiAgICAgICAgIEF1dGhlbnRpY2F0ZSA9IDQwNywKKworICAgICAgICAvLy8gPHN1bW1hcnk+CisgICAgICAgIC8vLyAgICAgVGhlIHJlcXVlc3QgbWVzc2FnZSB3YXMgbm90IHByb3Blcmx5IGZvcm1hdHRlZCB3aGljaCBtZWFucyBpdCBjb3VsZCBub3QgYmUgcGFyc2VkIGF0IGFsbCBvciB0aGUgIm9wIiBjb2RlCisgICAgICAgIC8vLyAgICAgd2FzIG5vdCByZWNvZ25pemVkIHN1Y2ggdGhhdCBHcmVtbGluIFNlcnZlciBjb3VsZCBwcm9wZXJseSByb3V0ZSBpdCBmb3IgcHJvY2Vzc2luZy4gQ2hlY2sgdGhlIG1lc3NhZ2UgZm9ybWF0CisgICAgICAgIC8vLyAgICAgYW5kIHJldHJ5IHRoZSByZXF1ZXN0LgorICAgICAgICAvLy8gPC9zdW1tYXJ5PgogICAgICAgICBNYWxmb3JtZWRSZXF1ZXN0ID0gNDk4LAorCisgICAgICAgIC8vLyA8c3VtbWFyeT4KKyAgICAgICAgLy8vICAgICBUaGUgcmVxdWVzdCBtZXNzYWdlIHdhcyBwYXJzZWFibGUsIGJ1dCB0aGUgYXJndW1lbnRzIHN1cHBsaWVkIGluIHRoZSBtZXNzYWdlIHdlcmUgaW4gY29uZmxpY3Qgb3IgaW5jb21wbGV0ZS4KKyAgICAgICAgLy8vICAgICBDaGVjayB0aGUgbWVzc2FnZSBmb3JtYXQgYW5kIHJldHJ5IHRoZSByZXF1ZXN0LgorICAgICAgICAvLy8gPC9zdW1tYXJ5PgogICAgICAgICBJbnZhbGlkUmVxdWVzdEFyZ3VtZW50cyA9IDQ5OSwKKworICAgICAgICAvLy8gPHN1bW1hcnk+CisgICAgICAgIC8vLyAgICAgQSBnZW5lcmFsIHNlcnZlciBlcnJvciBvY2N1cnJlZCB0aGF0IHByZXZlbnRlZCB0aGUgcmVxdWVzdCBmcm9tIGJlaW5nIHByb2Nlc3NlZC4KKyAgICAgICAgLy8vIDwvc3VtbWFyeT4KICAgICAgICAgU2VydmVyRXJyb3IgPSA1MDAsCisKKyAgICAgICAgLy8vIDxzdW1tYXJ5PgorICAgICAgICAvLy8gICAgIFRoZSBzY3JpcHQgc3VibWl0dGVkIGZvciBwcm9jZXNzaW5nIGV2YWx1YXRlZCBpbiB0aGUgU2NyaXB0RW5naW5lIHdpdGggZXJyb3JzIGFuZCBjb3VsZCBub3QgYmUgcHJvY2Vzc2VkLgorICAgICAgICAvLy8gICAgIENoZWNrIHRoZSBzY3JpcHQgc3VibWl0dGVkIGZvciBzeW50YXggZXJyb3JzIG9yIG90aGVyIHByb2JsZW1zIGFuZCB0aGVuIHJlc3VibWl0LgorICAgICAgICAvLy8gPC9zdW1tYXJ5PgogICAgICAgICBTY3JpcHRFdmFsdWF0aW9uRXJyb3IgPSA1OTcsCisKKyAgICAgICAgLy8vIDxzdW1tYXJ5PgorICAgICAgICAvLy8gICAgIFRoZSBzZXJ2ZXIgZXhjZWVkZWQgb25lIG9mIHRoZSB0aW1lb3V0IHNldHRpbmdzIGZvciB0aGUgcmVxdWVzdCBhbmQgY291bGQgdGhlcmVmb3JlIG9ubHkgcGFydGlhbGx5IHJlc3BvbmRlZAorICAgICAgICAvLy8gICAgIG9yIGRpZCBub3QgcmVzcG9uZCBhdCBhbGwuCisgICAgICAgIC8vLyA8L3N1bW1hcnk+CiAgICAgICAgIFNlcnZlclRpbWVvdXQgPSA1OTgsCisKKyAgICAgICAgLy8vIDxzdW1tYXJ5PgorICAgICAgICAvLy8gICAgIFRoZSBzZXJ2ZXIgd2FzIG5vdCBjYXBhYmxlIG9mIHNlcmlhbGl6aW5nIGFuIG9iamVjdCB0aGF0IHdhcyByZXR1cm5lZCBmcm9tIHRoZSBzY3JpcHQgc3VwcGxpZWQgb24gdGhlIHJlcXVlc3QuCisgICAgICAgIC8vLyAgICAgRWl0aGVyIHRyYW5zZm9ybSB0aGUgb2JqZWN0IGludG8gc29tZXRoaW5nIEdyZW1saW4gU2VydmVyIGNhbiBwcm9jZXNzIHdpdGhpbiB0aGUgc2NyaXB0IG9yIGluc3RhbGwgbWFwcGVyCisgICAgICAgIC8vLyAgICAgc2VyaWFsaXphdGlvbiBjbGFzc2VzIHRvIEdyZW1saW4gU2VydmVyLgorICAgICAgICAvLy8gPC9zdW1tYXJ5PgogICAgICAgICBTZXJ2ZXJTZXJpYWxpemF0aW9uRXJyb3IgPSA1OTkKICAgICB9CiAKZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Ecml2ZXIvUHJveHlDb25uZWN0aW9uLmNzIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9Qcm94eUNvbm5lY3Rpb24uY3MKaW5kZXggY2JlMTVlYy4uZmVmNmVkZSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9Qcm94eUNvbm5lY3Rpb24uY3MKKysrIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9Qcm94eUNvbm5lY3Rpb24uY3MKQEAgLTM5LDcgKzM5LDcgQEAKICAgICAgICAgICAgIF9yZWxlYXNlQWN0aW9uID0gcmVsZWFzZUFjdGlvbjsKICAgICAgICAgfQogCi0gICAgICAgIHB1YmxpYyBhc3luYyBUYXNrPElSZWFkT25seUNvbGxlY3Rpb248VD4+IFN1Ym1pdEFzeW5jPFQ+KFJlcXVlc3RNZXNzYWdlIHJlcXVlc3RNZXNzYWdlKQorICAgICAgICBwdWJsaWMgYXN5bmMgVGFzazxSZXN1bHRTZXQ8VD4+IFN1Ym1pdEFzeW5jPFQ+KFJlcXVlc3RNZXNzYWdlIHJlcXVlc3RNZXNzYWdlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gYXdhaXQgX3JlYWxDb25uZWN0aW9uLlN1Ym1pdEFzeW5jPFQ+KHJlcXVlc3RNZXNzYWdlKS5Db25maWd1cmVBd2FpdChmYWxzZSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Ecml2ZXIvUmVtb3RlL0RyaXZlclJlbW90ZUNvbm5lY3Rpb24uY3MgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL1JlbW90ZS9Ecml2ZXJSZW1vdGVDb25uZWN0aW9uLmNzCmluZGV4IDhjYmQ0M2QuLmE1MmNiODcgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Ecml2ZXIvUmVtb3RlL0RyaXZlclJlbW90ZUNvbm5lY3Rpb24uY3MKKysrIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9SZW1vdGUvRHJpdmVyUmVtb3RlQ29ubmVjdGlvbi5jcwpAQCAtMzksNyArMzksNyBAQAogICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHN0cmluZyBfdHJhdmVyc2FsU291cmNlOwogCiAgICAgICAgIC8vLyA8c3VtbWFyeT4KLSAgICAgICAgLy8vICAgICBJbml0aWFsaXplcyBhIG5ldyA8c2VlIGNyZWY9IklSZW1vdGVDb25uZWN0aW9uIiAvPi4KKyAgICAgICAgLy8vICAgICBJbml0aWFsaXplcyBhIG5ldyA8c2VlIGNyZWY9IklSZW1vdGVDb25uZWN0aW9uIiAvPiB1c2luZyAiZyIgYXMgdGhlIGRlZmF1bHQgcmVtb3RlIFRyYXZlcnNhbFNvdXJjZSBuYW1lLgogICAgICAgICAvLy8gPC9zdW1tYXJ5PgogICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImNsaWVudCI+VGhlIDxzZWUgY3JlZj0iSUdyZW1saW5DbGllbnQiIC8+IHRoYXQgd2lsbCBiZSB1c2VkIGZvciB0aGUgY29ubmVjdGlvbi48L3BhcmFtPgogICAgICAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcmd1bWVudE51bGxFeGNlcHRpb24iPlRocm93biB3aGVuIGNsaWVudCBpcyBudWxsLjwvZXhjZXB0aW9uPgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9SZXN1bHRTZXQuY3MgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvRHJpdmVyL1Jlc3VsdFNldC5jcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NWE4NjYxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9SZXN1bHRTZXQuY3MKQEAgLTAsMCArMSw2OSBAQAor77u/I3JlZ2lvbiBMaWNlbnNlCisKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2VuZHJlZ2lvbgorCit1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnM7Cit1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKKworbmFtZXNwYWNlIEdyZW1saW4uTmV0LkRyaXZlcgoreworICAgIC8vLyA8c3VtbWFyeT4KKyAgICAvLy8gICAgIEEgUmVzdWx0U2V0IGlzIHJldHVybmVkIGZyb20gdGhlIHN1Ym1pc3Npb24gb2YgYSBHcmVtbGluIHNjcmlwdCB0byB0aGUgc2VydmVyIGFuZCByZXByZXNlbnRzIHRoZSByZXN1bHRzCisgICAgLy8vICAgICBwcm92aWRlZCBieSB0aGUgc2VydmVyLiBSZXN1bHRTZXQgaW5jbHVkZXMgZW51bWVyYWJsZSBkYXRhIGFuZCBzdGF0dXMgYXR0cmlidXRlcy4KKyAgICAvLy8gPC9zdW1tYXJ5PgorICAgIC8vLyA8dHlwZXBhcmFtIG5hbWU9IlQiPlR5cGUgb2YgdGhlIHJlc3VsdCBlbGVtZW50czwvdHlwZXBhcmFtPgorICAgIHB1YmxpYyBzZWFsZWQgY2xhc3MgUmVzdWx0U2V0PFQ+IDogSVJlYWRPbmx5Q29sbGVjdGlvbjxUPgorICAgIHsKKyAgICAgICAgcHJpdmF0ZSByZWFkb25seSBJUmVhZE9ubHlDb2xsZWN0aW9uPFQ+IF9kYXRhOworCisgICAgICAgIC8vLyA8c3VtbWFyeT4KKyAgICAgICAgLy8vICAgICBHZXRzIG9yIHNldHMgdGhlIHN0YXR1cyBhdHRyaWJ1dGVzIGZyb20gdGhlIGdyZW1saW4gcmVzcG9uc2UKKyAgICAgICAgLy8vIDwvc3VtbWFyeT4KKyAgICAgICAgcHVibGljIElSZWFkT25seURpY3Rpb25hcnk8c3RyaW5nLCBvYmplY3Q+IFN0YXR1c0F0dHJpYnV0ZXMgeyBnZXQ7IH0KKworICAgICAgICAvLy8gPHN1bW1hcnk+CisgICAgICAgIC8vLyAgICAgSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIFJlc3VsdFNldCBjbGFzcyBmb3IgdGhlIHNwZWNpZmllZCBkYXRhIGFuZCBzdGF0dXMgYXR0cmlidXRlcy4KKyAgICAgICAgLy8vIDwvc3VtbWFyeT4KKyAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJkYXRhIj48L3BhcmFtPgorICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImF0dHJpYnV0ZXMiPjwvcGFyYW0+CisgICAgICAgIHB1YmxpYyBSZXN1bHRTZXQoSVJlYWRPbmx5Q29sbGVjdGlvbjxUPiBkYXRhLCBJUmVhZE9ubHlEaWN0aW9uYXJ5PHN0cmluZywgb2JqZWN0PiBhdHRyaWJ1dGVzKQorICAgICAgICB7CisgICAgICAgICAgICBfZGF0YSA9IGRhdGE7CisgICAgICAgICAgICB0aGlzLlN0YXR1c0F0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzOworICAgICAgICB9CisKKyAgICAgICAgLy8vIDxpbmhlcml0ZG9jIC8+CisgICAgICAgIHB1YmxpYyBJRW51bWVyYXRvcjxUPiBHZXRFbnVtZXJhdG9yKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIF9kYXRhLkdldEVudW1lcmF0b3IoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vLyA8aW5oZXJpdGRvYyAvPgorICAgICAgICBJRW51bWVyYXRvciBJRW51bWVyYWJsZS5HZXRFbnVtZXJhdG9yKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIF9kYXRhLkdldEVudW1lcmF0b3IoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vLyA8aW5oZXJpdGRvYyAvPgorICAgICAgICBwdWJsaWMgaW50IENvdW50ID0+IF9kYXRhLkNvdW50OworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Ecml2ZXIvU2luZ2xlTWVzc2FnZVJlc3VsdFJlY2VpdmVyLmNzIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9TaW5nbGVNZXNzYWdlUmVzdWx0UmVjZWl2ZXIuY3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2I2NmU2MQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Ecml2ZXIvU2luZ2xlTWVzc2FnZVJlc3VsdFJlY2VpdmVyLmNzCkBAIC0wLDAgKzEsOTAgQEAKKyNyZWdpb24gTGljZW5zZQorCisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNlbmRyZWdpb24KKwordXNpbmcgU3lzdGVtOwordXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7Cit1c2luZyBTeXN0ZW0uVGhyZWFkaW5nLlRhc2tzOwordXNpbmcgR3JlbWxpbi5OZXQuRHJpdmVyLk1lc3NhZ2VzOwordXNpbmcgR3JlbWxpbi5OZXQuRHJpdmVyLlJlc3VsdHNBZ2dyZWdhdGlvbjsKK3VzaW5nIEdyZW1saW4uTmV0LlN0cnVjdHVyZS5JTy5HcmFwaFNPTjsKK3VzaW5nIE5ld3RvbnNvZnQuSnNvbi5MaW5xOworCituYW1lc3BhY2UgR3JlbWxpbi5OZXQuRHJpdmVyCit7CisgICAgaW50ZXJuYWwgY2xhc3MgUmVzcG9uc2VIYW5kbGVyRm9yU2luZ2xlUmVxdWVzdE1lc3NhZ2U8VD4gOiBJUmVzcG9uc2VIYW5kbGVyRm9yU2luZ2xlUmVxdWVzdE1lc3NhZ2UKKyAgICB7CisgICAgICAgIHB1YmxpYyBUYXNrPFJlc3VsdFNldDxUPj4gUmVzdWx0ID0+IF90Y3MuVGFzazsKKworICAgICAgICBwcml2YXRlIHJlYWRvbmx5IFRhc2tDb21wbGV0aW9uU291cmNlPFJlc3VsdFNldDxUPj4gX3RjcyA9CisgICAgICAgICAgICBuZXcgVGFza0NvbXBsZXRpb25Tb3VyY2U8UmVzdWx0U2V0PFQ+PihUYXNrQ3JlYXRpb25PcHRpb25zLlJ1bkNvbnRpbnVhdGlvbnNBc3luY2hyb25vdXNseSk7CisKKyAgICAgICAgcHJpdmF0ZSByZWFkb25seSBHcmFwaFNPTlJlYWRlciBfZ3JhcGhTT05SZWFkZXI7CisgICAgICAgIHByaXZhdGUgYm9vbCBfaXNBZ2dyZWdhdGluZ1NpZGVFZmZlY3RzOworICAgICAgICBwcml2YXRlIElBZ2dyZWdhdG9yIF9hZ2dyZWdhdG9yOworICAgICAgICBwcml2YXRlIHJlYWRvbmx5IExpc3Q8VD4gX3Jlc3VsdCA9IG5ldyBMaXN0PFQ+KCk7CisKKyAgICAgICAgcHVibGljIFJlc3BvbnNlSGFuZGxlckZvclNpbmdsZVJlcXVlc3RNZXNzYWdlKEdyYXBoU09OUmVhZGVyIGdyYXBoU29uUmVhZGVyKQorICAgICAgICB7CisgICAgICAgICAgICBfZ3JhcGhTT05SZWFkZXIgPSBncmFwaFNvblJlYWRlcjsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIEhhbmRsZVJlY2VpdmVkKFJlc3BvbnNlTWVzc2FnZTxKVG9rZW4+IHJlY2VpdmVkKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcmVjZWl2ZWREYXRhID0gdHlwZW9mKFQpID09IHR5cGVvZihKVG9rZW4pCisgICAgICAgICAgICAgICAgPyBuZXdbXSB7cmVjZWl2ZWQuUmVzdWx0LkRhdGF9CisgICAgICAgICAgICAgICAgOiBfZ3JhcGhTT05SZWFkZXIuVG9PYmplY3QocmVjZWl2ZWQuUmVzdWx0LkRhdGEpOworICAgICAgICAgICAgI3ByYWdtYSB3YXJuaW5nIGRpc2FibGUgNjEyLDYxOAorICAgICAgICAgICAgZm9yZWFjaCAodmFyIGQgaW4gcmVjZWl2ZWREYXRhKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChyZWNlaXZlZC5SZXN1bHQuTWV0YS5Db250YWluc0tleShUb2tlbnMuQXJnc1NpZGVFZmZlY3RLZXkpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKF9hZ2dyZWdhdG9yID09IG51bGwpCisgICAgICAgICAgICAgICAgICAgICAgICBfYWdncmVnYXRvciA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEFnZ3JlZ2F0b3JGYWN0b3J5KCkuR2V0QWdncmVnYXRvckZvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZykgcmVjZWl2ZWQuUmVzdWx0Lk1ldGFbVG9rZW5zLkFyZ3NBZ2dyZWdhdGVUb10pOworICAgICAgICAgICAgICAgICAgICBfYWdncmVnYXRvci5BZGQoZCk7CisgICAgICAgICAgICAgICAgICAgIF9pc0FnZ3JlZ2F0aW5nU2lkZUVmZmVjdHMgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBfcmVzdWx0LkFkZChkKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAjcHJhZ21hIHdhcm5pbmcgZGlzYWJsZSA2MTIsNjE4CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBGaW5hbGl6ZShEaWN0aW9uYXJ5PHN0cmluZywgb2JqZWN0PiBzdGF0dXNBdHRyaWJ1dGVzKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcmVzdWx0U2V0ID0KKyAgICAgICAgICAgICAgICBuZXcgUmVzdWx0U2V0PFQ+KAorICAgICAgICAgICAgICAgICAgICBfaXNBZ2dyZWdhdGluZ1NpZGVFZmZlY3RzID8gbmV3IExpc3Q8VD4geyhUKSBfYWdncmVnYXRvci5HZXRBZ2dyZWdhdGVkUmVzdWx0KCl9IDogX3Jlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzQXR0cmlidXRlcyk7CisgICAgICAgICAgICBfdGNzLlRyeVNldFJlc3VsdChyZXN1bHRTZXQpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgSGFuZGxlRmFpbHVyZShFeGNlcHRpb24gb2JqRXhjZXB0aW9uKQorICAgICAgICB7CisgICAgICAgICAgICBfdGNzLlRyeVNldEV4Y2VwdGlvbihvYmpFeGNlcHRpb24pOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Ecml2ZXIvVG9rZW5zLmNzIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9Ub2tlbnMuY3MKaW5kZXggNGZjZTg3Mi4uYTdmODA0YSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9Ub2tlbnMuY3MKKysrIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0RyaXZlci9Ub2tlbnMuY3MKQEAgLTk2LDcgKzk2LDcgQEAKICAgICAgICAgcHVibGljIHN0YXRpYyBzdHJpbmcgQXJnc0dyZW1saW4gPSAiZ3JlbWxpbiI7CiAKICAgICAgICAgLy8vIDxzdW1tYXJ5PgotICAgICAgICAvLy8gICAgIEFyZ3VtZW50IG5hbWUgdGhhdCBhbGxvd3MgdG8gZGVmaW5lcyB0aGUgaWQgb2Ygc2Vzc2lvbi4KKyAgICAgICAgLy8vICAgICBBcmd1bWVudCBuYW1lIHRoYXQgYWxsb3dzIHRvIGRlZmluZSB0aGUgaWQgb2Ygc2Vzc2lvbi4KICAgICAgICAgLy8vIDwvc3VtbWFyeT4KICAgICAgICAgcHVibGljIHN0YXRpYyBzdHJpbmcgQXJnc1Nlc3Npb24gPSAic2Vzc2lvbiI7CiAKZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9HcmVtbGluLk5ldC5jc3Byb2ogYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvR3JlbWxpbi5OZXQuY3Nwcm9qCmluZGV4IDZjMWUxOGUuLjMzOTJjYTggMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9HcmVtbGluLk5ldC5jc3Byb2oKKysrIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L0dyZW1saW4uTmV0LmNzcHJvagpAQCAtMjUsOSArMjUsOSBAQAogICA8L1Byb3BlcnR5R3JvdXA+CiAKICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlBhY2thZ2UiPgotICAgIDxWZXJzaW9uPjMuMy4xMS1TTkFQU0hPVDwvVmVyc2lvbj4KLSAgICA8RmlsZVZlcnNpb24+My4zLjExLjA8L0ZpbGVWZXJzaW9uPgotICAgIDxBc3NlbWJseVZlcnNpb24+My4zLjAuMDwvQXNzZW1ibHlWZXJzaW9uPgorICAgIDxWZXJzaW9uPjMuNC43LVNOQVBTSE9UPC9WZXJzaW9uPgorICAgIDxGaWxlVmVyc2lvbj4zLjQuNy4wPC9GaWxlVmVyc2lvbj4KKyAgICA8QXNzZW1ibHlWZXJzaW9uPjMuNC4wLjA8L0Fzc2VtYmx5VmVyc2lvbj4KICAgICA8VGl0bGU+R3JlbWxpbi5OZXQ8L1RpdGxlPgogICAgIDxBdXRob3JzPkFwYWNoZSBUaW5rZXJQb3A8L0F1dGhvcnM+CiAgICAgPERlc2NyaXB0aW9uPkdyZW1saW4uTmV0IGZvciBBcGFjaGUgVGlua2VyUG9w4oSiIGlzIGEgbGFuZ3VhZ2UgdmFyaWFudCBhbmQgZHJpdmVyIGZvciAuTkVULgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1Byb2Nlc3MvVHJhdmVyc2FsL0Nvbm5lY3RlZENvbXBvbmVudC5jcyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Qcm9jZXNzL1RyYXZlcnNhbC9Db25uZWN0ZWRDb21wb25lbnQuY3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2ExZjUzZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Qcm9jZXNzL1RyYXZlcnNhbC9Db25uZWN0ZWRDb21wb25lbnQuY3MKQEAgLTAsMCArMSw0NyBAQAorI3JlZ2lvbiBMaWNlbnNlCisKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2VuZHJlZ2lvbgorCisvLyBUSElTIElTIEEgR0VORVJBVEVEIEZJTEUgLSBETyBOT1QgTU9ESUZZIFRISVMgRklMRSBESVJFQ1RMWSAtIHNlZSBwb20ueG1sCit1c2luZyBTeXN0ZW07Cit1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnM7Cit1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKK3VzaW5nIFN5c3RlbS5MaW5xOwordXNpbmcgU3lzdGVtLlJlZmxlY3Rpb247CisKK25hbWVzcGFjZSBHcmVtbGluLk5ldC5Qcm9jZXNzLlRyYXZlcnNhbAoreworI3ByYWdtYSB3YXJuaW5nIGRpc2FibGUgMTU5MQorCisgICAgcHVibGljIGNsYXNzIENvbm5lY3RlZENvbXBvbmVudAorICAgIHsKKyAgICAgICAgCisgICAgICAgICAgICBwdWJsaWMgY29uc3QgU3RyaW5nIGNvbXBvbmVudCA9ICJncmVtbGluLmNvbm5lY3RlZENvbXBvbmVudFZlcnRleFByb2dyYW0uY29tcG9uZW50IjsKKyAgICAgICAgCisgICAgICAgICAgICBwdWJsaWMgY29uc3QgU3RyaW5nIGVkZ2VzID0gIn50aW5rZXJwb3AuY29ubmVjdGVkQ29tcG9uZW50LmVkZ2VzIjsKKyAgICAgICAgCisgICAgICAgICAgICBwdWJsaWMgY29uc3QgU3RyaW5nIHByb3BlcnR5TmFtZSA9ICJ+dGlua2VycG9wLmNvbm5lY3RlZENvbXBvbmVudC5wcm9wZXJ0eU5hbWUiOworICAgICAgICAKKyAgICB9CisKKyNwcmFnbWEgd2FybmluZyByZXN0b3JlIDE1OTEKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvUHJvY2Vzcy9UcmF2ZXJzYWwvR3JhcGhUcmF2ZXJzYWwuY3MgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvUHJvY2Vzcy9UcmF2ZXJzYWwvR3JhcGhUcmF2ZXJzYWwuY3MKaW5kZXggMTI0MGVlMC4uNzM5NGZlOCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1Byb2Nlc3MvVHJhdmVyc2FsL0dyYXBoVHJhdmVyc2FsLmNzCisrKyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Qcm9jZXNzL1RyYXZlcnNhbC9HcmFwaFRyYXZlcnNhbC5jcwpAQCAtMTIyLDYgKzEyMiwxNSBAQAogICAgICAgICAvLy8gPHN1bW1hcnk+CiAgICAgICAgIC8vLyAgICAgQWRkcyB0aGUgYWdncmVnYXRlIHN0ZXAgdG8gdGhpcyA8c2VlIGNyZWY9IkdyYXBoVHJhdmVyc2Fse1NUeXBlLCBFVHlwZX0iIC8+LgogICAgICAgICAvLy8gPC9zdW1tYXJ5PgorICAgICAgICBwdWJsaWMgR3JhcGhUcmF2ZXJzYWw8UywgRT4gQWdncmVnYXRlIChTY29wZSBzY29wZSwgc3RyaW5nIHNpZGVFZmZlY3RLZXkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEJ5dGVjb2RlLkFkZFN0ZXAoImFnZ3JlZ2F0ZSIsIHNjb3BlLCBzaWRlRWZmZWN0S2V5KTsKKyAgICAgICAgICAgIHJldHVybiBXcmFwPFMsIEU+KHRoaXMpOworICAgICAgICB9CisKKyAgICAgICAgLy8vIDxzdW1tYXJ5PgorICAgICAgICAvLy8gICAgIEFkZHMgdGhlIGFnZ3JlZ2F0ZSBzdGVwIHRvIHRoaXMgPHNlZSBjcmVmPSJHcmFwaFRyYXZlcnNhbHtTVHlwZSwgRVR5cGV9IiAvPi4KKyAgICAgICAgLy8vIDwvc3VtbWFyeT4KICAgICAgICAgcHVibGljIEdyYXBoVHJhdmVyc2FsPFMsIEU+IEFnZ3JlZ2F0ZSAoc3RyaW5nIHNpZGVFZmZlY3RLZXkpCiAgICAgICAgIHsKICAgICAgICAgICAgIEJ5dGVjb2RlLkFkZFN0ZXAoImFnZ3JlZ2F0ZSIsIHNpZGVFZmZlY3RLZXkpOwpAQCAtNDAyLDYgKzQxMSwxNSBAQAogICAgICAgICB9CiAKICAgICAgICAgLy8vIDxzdW1tYXJ5PgorICAgICAgICAvLy8gICAgIEFkZHMgdGhlIGNvbm5lY3RlZENvbXBvbmVudCBzdGVwIHRvIHRoaXMgPHNlZSBjcmVmPSJHcmFwaFRyYXZlcnNhbHtTVHlwZSwgRVR5cGV9IiAvPi4KKyAgICAgICAgLy8vIDwvc3VtbWFyeT4KKyAgICAgICAgcHVibGljIEdyYXBoVHJhdmVyc2FsPFMsIEU+IENvbm5lY3RlZENvbXBvbmVudCAoKQorICAgICAgICB7CisgICAgICAgICAgICBCeXRlY29kZS5BZGRTdGVwKCJjb25uZWN0ZWRDb21wb25lbnQiKTsKKyAgICAgICAgICAgIHJldHVybiBXcmFwPFMsIEU+KHRoaXMpOworICAgICAgICB9CisKKyAgICAgICAgLy8vIDxzdW1tYXJ5PgogICAgICAgICAvLy8gICAgIEFkZHMgdGhlIGNvbnN0YW50IHN0ZXAgdG8gdGhpcyA8c2VlIGNyZWY9IkdyYXBoVHJhdmVyc2Fse1NUeXBlLCBFVHlwZX0iIC8+LgogICAgICAgICAvLy8gPC9zdW1tYXJ5PgogICAgICAgICBwdWJsaWMgR3JhcGhUcmF2ZXJzYWw8UywgRTI+IENvbnN0YW50PEUyPiAoRTIgZSkKQEAgLTQ2OSw2ICs0ODcsMTcgQEAKICAgICAgICAgfQogCiAgICAgICAgIC8vLyA8c3VtbWFyeT4KKyAgICAgICAgLy8vICAgICBBZGRzIHRoZSBlbGVtZW50TWFwIHN0ZXAgdG8gdGhpcyA8c2VlIGNyZWY9IkdyYXBoVHJhdmVyc2Fse1NUeXBlLCBFVHlwZX0iIC8+LgorICAgICAgICAvLy8gPC9zdW1tYXJ5PgorICAgICAgICBwdWJsaWMgR3JhcGhUcmF2ZXJzYWw8UywgSURpY3Rpb25hcnk8b2JqZWN0LCBFMj4+IEVsZW1lbnRNYXA8RTI+IChwYXJhbXMgc3RyaW5nW10gcHJvcGVydHlLZXlzKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgYXJncyA9IG5ldyBMaXN0PG9iamVjdD4oMCArIHByb3BlcnR5S2V5cy5MZW5ndGgpIHt9OworICAgICAgICAgICAgYXJncy5BZGRSYW5nZShwcm9wZXJ0eUtleXMpOworICAgICAgICAgICAgQnl0ZWNvZGUuQWRkU3RlcCgiZWxlbWVudE1hcCIsIGFyZ3MuVG9BcnJheSgpKTsKKyAgICAgICAgICAgIHJldHVybiBXcmFwPFMsIElEaWN0aW9uYXJ5PG9iamVjdCwgRTI+Pih0aGlzKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vLyA8c3VtbWFyeT4KICAgICAgICAgLy8vICAgICBBZGRzIHRoZSBlbWl0IHN0ZXAgdG8gdGhpcyA8c2VlIGNyZWY9IkdyYXBoVHJhdmVyc2Fse1NUeXBlLCBFVHlwZX0iIC8+LgogICAgICAgICAvLy8gPC9zdW1tYXJ5PgogICAgICAgICBwdWJsaWMgR3JhcGhUcmF2ZXJzYWw8UywgRT4gRW1pdCAoKQpAQCAtODMyLDYgKzg2MSwxNSBAQAogICAgICAgICB9CiAKICAgICAgICAgLy8vIDxzdW1tYXJ5PgorICAgICAgICAvLy8gICAgIEFkZHMgdGhlIGluZGV4IHN0ZXAgdG8gdGhpcyA8c2VlIGNyZWY9IkdyYXBoVHJhdmVyc2Fse1NUeXBlLCBFVHlwZX0iIC8+LgorICAgICAgICAvLy8gPC9zdW1tYXJ5PgorICAgICAgICBwdWJsaWMgR3JhcGhUcmF2ZXJzYWw8UywgRTI+IEluZGV4PEUyPiAoKQorICAgICAgICB7CisgICAgICAgICAgICBCeXRlY29kZS5BZGRTdGVwKCJpbmRleCIpOworICAgICAgICAgICAgcmV0dXJuIFdyYXA8UywgRTI+KHRoaXMpOworICAgICAgICB9CisKKyAgICAgICAgLy8vIDxzdW1tYXJ5PgogICAgICAgICAvLy8gICAgIEFkZHMgdGhlIGluamVjdCBzdGVwIHRvIHRoaXMgPHNlZSBjcmVmPSJHcmFwaFRyYXZlcnNhbHtTVHlwZSwgRVR5cGV9IiAvPi4KICAgICAgICAgLy8vIDwvc3VtbWFyeT4KICAgICAgICAgcHVibGljIEdyYXBoVHJhdmVyc2FsPFMsIEU+IEluamVjdCAocGFyYW1zIEVbXSBpbmplY3Rpb25zKQpAQCAtOTE1LDYgKzk1MywxNSBAQAogICAgICAgICB9CiAKICAgICAgICAgLy8vIDxzdW1tYXJ5PgorICAgICAgICAvLy8gICAgIEFkZHMgdGhlIGxvb3BzIHN0ZXAgdG8gdGhpcyA8c2VlIGNyZWY9IkdyYXBoVHJhdmVyc2Fse1NUeXBlLCBFVHlwZX0iIC8+LgorICAgICAgICAvLy8gPC9zdW1tYXJ5PgorICAgICAgICBwdWJsaWMgR3JhcGhUcmF2ZXJzYWw8UywgaW50PiBMb29wcyAoc3RyaW5nIGxvb3BOYW1lKQorICAgICAgICB7CisgICAgICAgICAgICBCeXRlY29kZS5BZGRTdGVwKCJsb29wcyIsIGxvb3BOYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBXcmFwPFMsIGludD4odGhpcyk7CisgICAgICAgIH0KKworICAgICAgICAvLy8gPHN1bW1hcnk+CiAgICAgICAgIC8vLyAgICAgQWRkcyB0aGUgbWFwIHN0ZXAgdG8gdGhpcyA8c2VlIGNyZWY9IkdyYXBoVHJhdmVyc2Fse1NUeXBlLCBFVHlwZX0iIC8+LgogICAgICAgICAvLy8gPC9zdW1tYXJ5PgogICAgICAgICBwdWJsaWMgR3JhcGhUcmF2ZXJzYWw8UywgRTI+IE1hcDxFMj4gKElGdW5jdGlvbiBmdW5jdGlvbikKQEAgLTEyNDgsNiArMTI5NSwyNCBAQAogICAgICAgICB9CiAKICAgICAgICAgLy8vIDxzdW1tYXJ5PgorICAgICAgICAvLy8gICAgIEFkZHMgdGhlIHJlYWQgc3RlcCB0byB0aGlzIDxzZWUgY3JlZj0iR3JhcGhUcmF2ZXJzYWx7U1R5cGUsIEVUeXBlfSIgLz4uCisgICAgICAgIC8vLyA8L3N1bW1hcnk+CisgICAgICAgIHB1YmxpYyBHcmFwaFRyYXZlcnNhbDxTLCBFPiBSZWFkICgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEJ5dGVjb2RlLkFkZFN0ZXAoInJlYWQiKTsKKyAgICAgICAgICAgIHJldHVybiBXcmFwPFMsIEU+KHRoaXMpOworICAgICAgICB9CisKKyAgICAgICAgLy8vIDxzdW1tYXJ5PgorICAgICAgICAvLy8gICAgIEFkZHMgdGhlIHJlcGVhdCBzdGVwIHRvIHRoaXMgPHNlZSBjcmVmPSJHcmFwaFRyYXZlcnNhbHtTVHlwZSwgRVR5cGV9IiAvPi4KKyAgICAgICAgLy8vIDwvc3VtbWFyeT4KKyAgICAgICAgcHVibGljIEdyYXBoVHJhdmVyc2FsPFMsIEU+IFJlcGVhdCAoc3RyaW5nIGxvb3BOYW1lLCBJVHJhdmVyc2FsIHJlcGVhdFRyYXZlcnNhbCkKKyAgICAgICAgeworICAgICAgICAgICAgQnl0ZWNvZGUuQWRkU3RlcCgicmVwZWF0IiwgbG9vcE5hbWUsIHJlcGVhdFRyYXZlcnNhbCk7CisgICAgICAgICAgICByZXR1cm4gV3JhcDxTLCBFPih0aGlzKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vLyA8c3VtbWFyeT4KICAgICAgICAgLy8vICAgICBBZGRzIHRoZSByZXBlYXQgc3RlcCB0byB0aGlzIDxzZWUgY3JlZj0iR3JhcGhUcmF2ZXJzYWx7U1R5cGUsIEVUeXBlfSIgLz4uCiAgICAgICAgIC8vLyA8L3N1bW1hcnk+CiAgICAgICAgIHB1YmxpYyBHcmFwaFRyYXZlcnNhbDxTLCBFPiBSZXBlYXQgKElUcmF2ZXJzYWwgcmVwZWF0VHJhdmVyc2FsKQpAQCAtMTM2MCw2ICsxNDI1LDE1IEBACiAgICAgICAgIH0KIAogICAgICAgICAvLy8gPHN1bW1hcnk+CisgICAgICAgIC8vLyAgICAgQWRkcyB0aGUgc2hvcnRlc3RQYXRoIHN0ZXAgdG8gdGhpcyA8c2VlIGNyZWY9IkdyYXBoVHJhdmVyc2Fse1NUeXBlLCBFVHlwZX0iIC8+LgorICAgICAgICAvLy8gPC9zdW1tYXJ5PgorICAgICAgICBwdWJsaWMgR3JhcGhUcmF2ZXJzYWw8UywgUGF0aD4gU2hvcnRlc3RQYXRoICgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEJ5dGVjb2RlLkFkZFN0ZXAoInNob3J0ZXN0UGF0aCIpOworICAgICAgICAgICAgcmV0dXJuIFdyYXA8UywgUGF0aD4odGhpcyk7CisgICAgICAgIH0KKworICAgICAgICAvLy8gPHN1bW1hcnk+CiAgICAgICAgIC8vLyAgICAgQWRkcyB0aGUgc2lkZUVmZmVjdCBzdGVwIHRvIHRoaXMgPHNlZSBjcmVmPSJHcmFwaFRyYXZlcnNhbHtTVHlwZSwgRVR5cGV9IiAvPi4KICAgICAgICAgLy8vIDwvc3VtbWFyeT4KICAgICAgICAgcHVibGljIEdyYXBoVHJhdmVyc2FsPFMsIEU+IFNpZGVFZmZlY3QgKElDb25zdW1lciBjb25zdW1lcikKQEAgLTE2NzcsNiArMTc1MSwzMyBAQAogICAgICAgICAgICAgcmV0dXJuIFdyYXA8UywgRT4odGhpcyk7CiAgICAgICAgIH0KIAorICAgICAgICAvLy8gPHN1bW1hcnk+CisgICAgICAgIC8vLyAgICAgQWRkcyB0aGUgd2l0aCBzdGVwIHRvIHRoaXMgPHNlZSBjcmVmPSJHcmFwaFRyYXZlcnNhbHtTVHlwZSwgRVR5cGV9IiAvPi4KKyAgICAgICAgLy8vIDwvc3VtbWFyeT4KKyAgICAgICAgcHVibGljIEdyYXBoVHJhdmVyc2FsPFMsIEU+IFdpdGggKHN0cmluZyBrZXkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEJ5dGVjb2RlLkFkZFN0ZXAoIndpdGgiLCBrZXkpOworICAgICAgICAgICAgcmV0dXJuIFdyYXA8UywgRT4odGhpcyk7CisgICAgICAgIH0KKworICAgICAgICAvLy8gPHN1bW1hcnk+CisgICAgICAgIC8vLyAgICAgQWRkcyB0aGUgd2l0aCBzdGVwIHRvIHRoaXMgPHNlZSBjcmVmPSJHcmFwaFRyYXZlcnNhbHtTVHlwZSwgRVR5cGV9IiAvPi4KKyAgICAgICAgLy8vIDwvc3VtbWFyeT4KKyAgICAgICAgcHVibGljIEdyYXBoVHJhdmVyc2FsPFMsIEU+IFdpdGggKHN0cmluZyBrZXksIG9iamVjdCB2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgQnl0ZWNvZGUuQWRkU3RlcCgid2l0aCIsIGtleSwgdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIFdyYXA8UywgRT4odGhpcyk7CisgICAgICAgIH0KKworICAgICAgICAvLy8gPHN1bW1hcnk+CisgICAgICAgIC8vLyAgICAgQWRkcyB0aGUgd3JpdGUgc3RlcCB0byB0aGlzIDxzZWUgY3JlZj0iR3JhcGhUcmF2ZXJzYWx7U1R5cGUsIEVUeXBlfSIgLz4uCisgICAgICAgIC8vLyA8L3N1bW1hcnk+CisgICAgICAgIHB1YmxpYyBHcmFwaFRyYXZlcnNhbDxTLCBFPiBXcml0ZSAoKQorICAgICAgICB7CisgICAgICAgICAgICBCeXRlY29kZS5BZGRTdGVwKCJ3cml0ZSIpOworICAgICAgICAgICAgcmV0dXJuIFdyYXA8UywgRT4odGhpcyk7CisgICAgICAgIH0KKwogCiAgICAgICAgIC8vLyA8c3VtbWFyeT4KICAgICAgICAgLy8vIE1ha2UgYSBjb3B5IG9mIGEgdHJhdmVyc2FsIHRoYXQgaXMgcmVzZXQgZm9yIGl0ZXJhdGlvbi4KZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Qcm9jZXNzL1RyYXZlcnNhbC9HcmFwaFRyYXZlcnNhbFNvdXJjZS5jcyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Qcm9jZXNzL1RyYXZlcnNhbC9HcmFwaFRyYXZlcnNhbFNvdXJjZS5jcwppbmRleCAzOTk3YzAyLi5iNTJiODk4IDEwMDY0NAotLS0gYS9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvUHJvY2Vzcy9UcmF2ZXJzYWwvR3JhcGhUcmF2ZXJzYWxTb3VyY2UuY3MKKysrIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1Byb2Nlc3MvVHJhdmVyc2FsL0dyYXBoVHJhdmVyc2FsU291cmNlLmNzCkBAIC03Myw2ICs3MywyMiBAQAogICAgICAgICB9CiAKIAorICAgICAgICBwdWJsaWMgR3JhcGhUcmF2ZXJzYWxTb3VyY2UgV2l0aChzdHJpbmcga2V5KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgc291cmNlID0gbmV3IEdyYXBoVHJhdmVyc2FsU291cmNlKG5ldyBMaXN0PElUcmF2ZXJzYWxTdHJhdGVneT4oVHJhdmVyc2FsU3RyYXRlZ2llcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBCeXRlY29kZShCeXRlY29kZSkpOworICAgICAgICAgICAgc291cmNlLkJ5dGVjb2RlLkFkZFNvdXJjZSgid2l0aCIsIGtleSk7CisgICAgICAgICAgICByZXR1cm4gc291cmNlOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIEdyYXBoVHJhdmVyc2FsU291cmNlIFdpdGgoc3RyaW5nIGtleSwgb2JqZWN0IHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgc291cmNlID0gbmV3IEdyYXBoVHJhdmVyc2FsU291cmNlKG5ldyBMaXN0PElUcmF2ZXJzYWxTdHJhdGVneT4oVHJhdmVyc2FsU3RyYXRlZ2llcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBCeXRlY29kZShCeXRlY29kZSkpOworICAgICAgICAgICAgc291cmNlLkJ5dGVjb2RlLkFkZFNvdXJjZSgid2l0aCIsIGtleSwgdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIHNvdXJjZTsKKyAgICAgICAgfQorCiAgICAgICAgIHB1YmxpYyBHcmFwaFRyYXZlcnNhbFNvdXJjZSBXaXRoQnVsayhib29sIHVzZUJ1bGspCiAgICAgICAgIHsKICAgICAgICAgICAgIHZhciBzb3VyY2UgPSBuZXcgR3JhcGhUcmF2ZXJzYWxTb3VyY2UobmV3IExpc3Q8SVRyYXZlcnNhbFN0cmF0ZWd5PihUcmF2ZXJzYWxTdHJhdGVnaWVzKSwKQEAgLTMzNCw2ICszNTAsMTcgQEAKICAgICAgICAgICAgIHJldHVybiB0cmF2ZXJzYWw7CiAgICAgICAgIH0KIAorICAgICAgICAvLy8gPHN1bW1hcnk+CisgICAgICAgIC8vLyAgICAgU3Bhd25zIGEgPHNlZSBjcmVmPSJHcmFwaFRyYXZlcnNhbHtTVHlwZSwgRVR5cGV9IiAvPiBvZmYgdGhpcyBncmFwaCB0cmF2ZXJzYWwgc291cmNlIGFuZCBhZGRzIHRoZSBpbyBzdGVwIHRvIHRoYXQKKyAgICAgICAgLy8vICAgICB0cmF2ZXJzYWwuCisgICAgICAgIC8vLyA8L3N1bW1hcnk+CisgICAgICAgIHB1YmxpYyBHcmFwaFRyYXZlcnNhbDxTLCBTPiBJbzxTPihzdHJpbmcgZmlsZSkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHRyYXZlcnNhbCA9IG5ldyBHcmFwaFRyYXZlcnNhbDxTLCBTPihUcmF2ZXJzYWxTdHJhdGVnaWVzLCBuZXcgQnl0ZWNvZGUoQnl0ZWNvZGUpKTsKKyAgICAgICAgICAgICAgICB0cmF2ZXJzYWwuQnl0ZWNvZGUuQWRkU3RlcCgiaW8iLCBmaWxlKTsKKyAgICAgICAgICAgIHJldHVybiB0cmF2ZXJzYWw7CisgICAgICAgIH0KKwogICAgIH0KICAgICAKICNwcmFnbWEgd2FybmluZyByZXN0b3JlIDE1OTEKZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Qcm9jZXNzL1RyYXZlcnNhbC9JTy5jcyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Qcm9jZXNzL1RyYXZlcnNhbC9JTy5jcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYTU3ZDRiCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1Byb2Nlc3MvVHJhdmVyc2FsL0lPLmNzCkBAIC0wLDAgKzEsNTMgQEAKKyNyZWdpb24gTGljZW5zZQorCisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNlbmRyZWdpb24KKworLy8gVEhJUyBJUyBBIEdFTkVSQVRFRCBGSUxFIC0gRE8gTk9UIE1PRElGWSBUSElTIEZJTEUgRElSRUNUTFkgLSBzZWUgcG9tLnhtbAordXNpbmcgU3lzdGVtOwordXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zOwordXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7Cit1c2luZyBTeXN0ZW0uTGlucTsKK3VzaW5nIFN5c3RlbS5SZWZsZWN0aW9uOworCituYW1lc3BhY2UgR3JlbWxpbi5OZXQuUHJvY2Vzcy5UcmF2ZXJzYWwKK3sKKyNwcmFnbWEgd2FybmluZyBkaXNhYmxlIDE1OTEKKworICAgIHB1YmxpYyBjbGFzcyBJTworICAgIHsKKyAgICAgICAgCisgICAgICAgICAgICBwdWJsaWMgY29uc3QgU3RyaW5nIGdyYXBobWwgPSAiZ3JhcGhtbCI7CisgICAgICAgIAorICAgICAgICAgICAgcHVibGljIGNvbnN0IFN0cmluZyBncmFwaHNvbiA9ICJncmFwaHNvbiI7CisgICAgICAgIAorICAgICAgICAgICAgcHVibGljIGNvbnN0IFN0cmluZyBncnlvID0gImdyeW8iOworICAgICAgICAKKyAgICAgICAgICAgIHB1YmxpYyBjb25zdCBTdHJpbmcgcmVhZGVyID0gIn50aW5rZXJwb3AuaW8ucmVhZGVyIjsKKyAgICAgICAgCisgICAgICAgICAgICBwdWJsaWMgY29uc3QgU3RyaW5nIHJlZ2lzdHJ5ID0gIn50aW5rZXJwb3AuaW8ucmVnaXN0cnkiOworICAgICAgICAKKyAgICAgICAgICAgIHB1YmxpYyBjb25zdCBTdHJpbmcgd3JpdGVyID0gIn50aW5rZXJwb3AuaW8ud3JpdGVyIjsKKyAgICAgICAgCisgICAgfQorCisjcHJhZ21hIHdhcm5pbmcgcmVzdG9yZSAxNTkxCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1Byb2Nlc3MvVHJhdmVyc2FsL1BhZ2VSYW5rLmNzIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1Byb2Nlc3MvVHJhdmVyc2FsL1BhZ2VSYW5rLmNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczZDI0OGEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvUHJvY2Vzcy9UcmF2ZXJzYWwvUGFnZVJhbmsuY3MKQEAgLTAsMCArMSw0NyBAQAorI3JlZ2lvbiBMaWNlbnNlCisKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2VuZHJlZ2lvbgorCisvLyBUSElTIElTIEEgR0VORVJBVEVEIEZJTEUgLSBETyBOT1QgTU9ESUZZIFRISVMgRklMRSBESVJFQ1RMWSAtIHNlZSBwb20ueG1sCit1c2luZyBTeXN0ZW07Cit1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnM7Cit1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKK3VzaW5nIFN5c3RlbS5MaW5xOwordXNpbmcgU3lzdGVtLlJlZmxlY3Rpb247CisKK25hbWVzcGFjZSBHcmVtbGluLk5ldC5Qcm9jZXNzLlRyYXZlcnNhbAoreworI3ByYWdtYSB3YXJuaW5nIGRpc2FibGUgMTU5MQorCisgICAgcHVibGljIGNsYXNzIFBhZ2VSYW5rCisgICAgeworICAgICAgICAKKyAgICAgICAgICAgIHB1YmxpYyBjb25zdCBTdHJpbmcgZWRnZXMgPSAifnRpbmtlcnBvcC5wYWdlUmFuay5lZGdlcyI7CisgICAgICAgIAorICAgICAgICAgICAgcHVibGljIGNvbnN0IFN0cmluZyBwcm9wZXJ0eU5hbWUgPSAifnRpbmtlcnBvcC5wYWdlUmFuay5wcm9wZXJ0eU5hbWUiOworICAgICAgICAKKyAgICAgICAgICAgIHB1YmxpYyBjb25zdCBTdHJpbmcgdGltZXMgPSAifnRpbmtlcnBvcC5wYWdlUmFuay50aW1lcyI7CisgICAgICAgIAorICAgIH0KKworI3ByYWdtYSB3YXJuaW5nIHJlc3RvcmUgMTU5MQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Qcm9jZXNzL1RyYXZlcnNhbC9QZWVyUHJlc3N1cmUuY3MgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvUHJvY2Vzcy9UcmF2ZXJzYWwvUGVlclByZXNzdXJlLmNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4NTg3OWUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvUHJvY2Vzcy9UcmF2ZXJzYWwvUGVlclByZXNzdXJlLmNzCkBAIC0wLDAgKzEsNDcgQEAKKyNyZWdpb24gTGljZW5zZQorCisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNlbmRyZWdpb24KKworLy8gVEhJUyBJUyBBIEdFTkVSQVRFRCBGSUxFIC0gRE8gTk9UIE1PRElGWSBUSElTIEZJTEUgRElSRUNUTFkgLSBzZWUgcG9tLnhtbAordXNpbmcgU3lzdGVtOwordXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zOwordXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7Cit1c2luZyBTeXN0ZW0uTGlucTsKK3VzaW5nIFN5c3RlbS5SZWZsZWN0aW9uOworCituYW1lc3BhY2UgR3JlbWxpbi5OZXQuUHJvY2Vzcy5UcmF2ZXJzYWwKK3sKKyNwcmFnbWEgd2FybmluZyBkaXNhYmxlIDE1OTEKKworICAgIHB1YmxpYyBjbGFzcyBQZWVyUHJlc3N1cmUKKyAgICB7CisgICAgICAgIAorICAgICAgICAgICAgcHVibGljIGNvbnN0IFN0cmluZyBlZGdlcyA9ICJ+dGlua2VycG9wLnBlZXJQcmVzc3VyZS5lZGdlcyI7CisgICAgICAgIAorICAgICAgICAgICAgcHVibGljIGNvbnN0IFN0cmluZyBwcm9wZXJ0eU5hbWUgPSAifnRpbmtlcnBvcC5wZWVyUHJlc3N1cmUucHJvcGVydHlOYW1lIjsKKyAgICAgICAgCisgICAgICAgICAgICBwdWJsaWMgY29uc3QgU3RyaW5nIHRpbWVzID0gIn50aW5rZXJwb3AucGVlclByZXNzdXJlLnRpbWVzIjsKKyAgICAgICAgCisgICAgfQorCisjcHJhZ21hIHdhcm5pbmcgcmVzdG9yZSAxNTkxCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1Byb2Nlc3MvVHJhdmVyc2FsL1Nob3J0ZXN0UGF0aC5jcyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Qcm9jZXNzL1RyYXZlcnNhbC9TaG9ydGVzdFBhdGguY3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjEyNWU0MgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Qcm9jZXNzL1RyYXZlcnNhbC9TaG9ydGVzdFBhdGguY3MKQEAgLTAsMCArMSw1MSBAQAorI3JlZ2lvbiBMaWNlbnNlCisKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2VuZHJlZ2lvbgorCisvLyBUSElTIElTIEEgR0VORVJBVEVEIEZJTEUgLSBETyBOT1QgTU9ESUZZIFRISVMgRklMRSBESVJFQ1RMWSAtIHNlZSBwb20ueG1sCit1c2luZyBTeXN0ZW07Cit1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnM7Cit1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKK3VzaW5nIFN5c3RlbS5MaW5xOwordXNpbmcgU3lzdGVtLlJlZmxlY3Rpb247CisKK25hbWVzcGFjZSBHcmVtbGluLk5ldC5Qcm9jZXNzLlRyYXZlcnNhbAoreworI3ByYWdtYSB3YXJuaW5nIGRpc2FibGUgMTU5MQorCisgICAgcHVibGljIGNsYXNzIFNob3J0ZXN0UGF0aAorICAgIHsKKyAgICAgICAgCisgICAgICAgICAgICBwdWJsaWMgY29uc3QgU3RyaW5nIGRpc3RhbmNlID0gIn50aW5rZXJwb3Auc2hvcnRlc3RQYXRoLmRpc3RhbmNlIjsKKyAgICAgICAgCisgICAgICAgICAgICBwdWJsaWMgY29uc3QgU3RyaW5nIGVkZ2VzID0gIn50aW5rZXJwb3Auc2hvcnRlc3RQYXRoLmVkZ2VzIjsKKyAgICAgICAgCisgICAgICAgICAgICBwdWJsaWMgY29uc3QgU3RyaW5nIGluY2x1ZGVFZGdlcyA9ICJ+dGlua2VycG9wLnNob3J0ZXN0UGF0aC5pbmNsdWRlRWRnZXMiOworICAgICAgICAKKyAgICAgICAgICAgIHB1YmxpYyBjb25zdCBTdHJpbmcgbWF4RGlzdGFuY2UgPSAifnRpbmtlcnBvcC5zaG9ydGVzdFBhdGgubWF4RGlzdGFuY2UiOworICAgICAgICAKKyAgICAgICAgICAgIHB1YmxpYyBjb25zdCBTdHJpbmcgdGFyZ2V0ID0gIn50aW5rZXJwb3Auc2hvcnRlc3RQYXRoLnRhcmdldCI7CisgICAgICAgIAorICAgIH0KKworI3ByYWdtYSB3YXJuaW5nIHJlc3RvcmUgMTU5MQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Qcm9jZXNzL1RyYXZlcnNhbC9TdHJhdGVneS9EZWNvcmF0aW9uL09wdGlvbnNTdHJhdGVneS5jcyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Qcm9jZXNzL1RyYXZlcnNhbC9TdHJhdGVneS9EZWNvcmF0aW9uL09wdGlvbnNTdHJhdGVneS5jcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNWQ3MGIwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1Byb2Nlc3MvVHJhdmVyc2FsL1N0cmF0ZWd5L0RlY29yYXRpb24vT3B0aW9uc1N0cmF0ZWd5LmNzCkBAIC0wLDAgKzEsNTMgQEAKK++7vyNyZWdpb24gTGljZW5zZQorCisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNlbmRyZWdpb24KKwordXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7CisKK25hbWVzcGFjZSBHcmVtbGluLk5ldC5Qcm9jZXNzLlRyYXZlcnNhbC5TdHJhdGVneS5EZWNvcmF0aW9uCit7CisgICAgLy8vIDxzdW1tYXJ5PgorICAgIC8vLyAgICAgT3B0aW9uc1N0cmF0ZWd5IG1ha2VzIG5vIGNoYW5nZXMgdG8gdGhlIHRyYXZlcnNhbCBpdHNlbGYgLSBpdCBqdXN0IGNhcnJpZXMgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbgorICAgIC8vLyAgICAgYXQgdGhlIHRyYXZlcnNhbCBsZXZlbC4KKyAgICAvLy8gPC9zdW1tYXJ5PgorICAgIHB1YmxpYyBjbGFzcyBPcHRpb25zU3RyYXRlZ3kgOiBBYnN0cmFjdFRyYXZlcnNhbFN0cmF0ZWd5CisgICAgeworICAgICAgICAvLy8gPHN1bW1hcnk+CisgICAgICAgIC8vLyAgICAgSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iT3B0aW9uc1N0cmF0ZWd5IiAvPiBjbGFzcy4KKyAgICAgICAgLy8vIDwvc3VtbWFyeT4KKyAgICAgICAgcHVibGljIE9wdGlvbnNTdHJhdGVneSgpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIC8vLyA8c3VtbWFyeT4KKyAgICAgICAgLy8vICAgICBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJPcHRpb25zU3RyYXRlZ3kiIC8+IGNsYXNzLgorICAgICAgICAvLy8gPC9zdW1tYXJ5PgorICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im9wdGlvbnMiPlNwZWNpZmllcyB0aGUgb3B0aW9ucyBmb3IgdGhlIHRyYXZlcnNhbC48L3BhcmFtPgorICAgICAgICBwdWJsaWMgT3B0aW9uc1N0cmF0ZWd5KElEaWN0aW9uYXJ5PHN0cmluZyxvYmplY3Q+IG9wdGlvbnMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvcmVhY2godmFyIGl0ZW0gaW4gb3B0aW9ucykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uW2l0ZW0uS2V5XSA9IGl0ZW0uVmFsdWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1Byb2Nlc3MvVHJhdmVyc2FsL1N0cmF0ZWd5L0RlY29yYXRpb24vU3ViZ3JhcGhTdHJhdGVneS5jcyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Qcm9jZXNzL1RyYXZlcnNhbC9TdHJhdGVneS9EZWNvcmF0aW9uL1N1YmdyYXBoU3RyYXRlZ3kuY3MKaW5kZXggMWJhODdkMC4uYWU2YTQ2ZSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1Byb2Nlc3MvVHJhdmVyc2FsL1N0cmF0ZWd5L0RlY29yYXRpb24vU3ViZ3JhcGhTdHJhdGVneS5jcworKysgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvUHJvY2Vzcy9UcmF2ZXJzYWwvU3RyYXRlZ3kvRGVjb3JhdGlvbi9TdWJncmFwaFN0cmF0ZWd5LmNzCkBAIC0zOCwxOCArMzgsMTggQEAKICAgICAgICAgLy8vIDxzdW1tYXJ5PgogICAgICAgICAvLy8gICAgIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IlN1YmdyYXBoU3RyYXRlZ3kiIC8+IGNsYXNzLgogICAgICAgICAvLy8gPC9zdW1tYXJ5PgotICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InZlcnRleENyaXRlcmlvbiI+Q29uc3RyYWlucyB2ZXJ0aWNlcyBmb3IgdGhlIDxzZWUgY3JlZj0iSVRyYXZlcnNhbCIgLz4uPC9wYXJhbT4KLSAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJlZGdlQ3JpdGVyaW9uIj5Db25zdHJhaW5zIGVkZ2VzIGZvciB0aGUgPHNlZSBjcmVmPSJJVHJhdmVyc2FsIiAvPi48L3BhcmFtPgotICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InZlcnRleFByb3BlcnR5Q3JpdGVyaW9uIj5Db25zdHJhaW5zIHZlcnRleCBwcm9wZXJ0aWVzIGZvciB0aGUgPHNlZSBjcmVmPSJJVHJhdmVyc2FsIiAvPi48L3BhcmFtPgotICAgICAgICBwdWJsaWMgU3ViZ3JhcGhTdHJhdGVneShJVHJhdmVyc2FsIHZlcnRleENyaXRlcmlvbiA9IG51bGwsIElUcmF2ZXJzYWwgZWRnZUNyaXRlcmlvbiA9IG51bGwsCi0gICAgICAgICAgICBJVHJhdmVyc2FsIHZlcnRleFByb3BlcnR5Q3JpdGVyaW9uID0gbnVsbCkKKyAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJ2ZXJ0aWNlcyI+Q29uc3RyYWlucyB2ZXJ0aWNlcyBmb3IgdGhlIDxzZWUgY3JlZj0iSVRyYXZlcnNhbCIgLz4uPC9wYXJhbT4KKyAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJlZGdlcyI+Q29uc3RyYWlucyBlZGdlcyBmb3IgdGhlIDxzZWUgY3JlZj0iSVRyYXZlcnNhbCIgLz4uPC9wYXJhbT4KKyAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJ2ZXJ0ZXhQcm9wZXJ0aWVzIj5Db25zdHJhaW5zIHZlcnRleCBwcm9wZXJ0aWVzIGZvciB0aGUgPHNlZSBjcmVmPSJJVHJhdmVyc2FsIiAvPi48L3BhcmFtPgorICAgICAgICBwdWJsaWMgU3ViZ3JhcGhTdHJhdGVneShJVHJhdmVyc2FsIHZlcnRpY2VzID0gbnVsbCwgSVRyYXZlcnNhbCBlZGdlcyA9IG51bGwsCisgICAgICAgICAgICBJVHJhdmVyc2FsIHZlcnRleFByb3BlcnRpZXMgPSBudWxsKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAodmVydGV4Q3JpdGVyaW9uICE9IG51bGwpCi0gICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvblsidmVydGljZXMiXSA9IHZlcnRleENyaXRlcmlvbjsKLSAgICAgICAgICAgIGlmIChlZGdlQ3JpdGVyaW9uICE9IG51bGwpCi0gICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvblsiZWRnZXMiXSA9IGVkZ2VDcml0ZXJpb247Ci0gICAgICAgICAgICBpZiAodmVydGV4UHJvcGVydHlDcml0ZXJpb24gIT0gbnVsbCkKLSAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uWyJ2ZXJ0ZXhQcm9wZXJ0aWVzIl0gPSB2ZXJ0ZXhQcm9wZXJ0eUNyaXRlcmlvbjsKKyAgICAgICAgICAgIGlmICh2ZXJ0aWNlcyAhPSBudWxsKQorICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb25bInZlcnRpY2VzIl0gPSB2ZXJ0aWNlczsKKyAgICAgICAgICAgIGlmIChlZGdlcyAhPSBudWxsKQorICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb25bImVkZ2VzIl0gPSBlZGdlczsKKyAgICAgICAgICAgIGlmICh2ZXJ0ZXhQcm9wZXJ0aWVzICE9IG51bGwpCisgICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvblsidmVydGV4UHJvcGVydGllcyJdID0gdmVydGV4UHJvcGVydGllczsKICAgICAgICAgfQogICAgIH0KIH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvUHJvY2Vzcy9UcmF2ZXJzYWwvVGV4dFAuY3MgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvUHJvY2Vzcy9UcmF2ZXJzYWwvVGV4dFAuY3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzA0N2Y3NQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Qcm9jZXNzL1RyYXZlcnNhbC9UZXh0UC5jcwpAQCAtMCwwICsxLDk2IEBACisjcmVnaW9uIExpY2Vuc2UKKworLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjZW5kcmVnaW9uCisKKy8vIFRISVMgSVMgQSBHRU5FUkFURUQgRklMRSAtIERPIE5PVCBNT0RJRlkgVEhJUyBGSUxFIERJUkVDVExZIC0gc2VlIHBvbS54bWwKK3VzaW5nIFN5c3RlbTsKK3VzaW5nIFN5c3RlbS5Db2xsZWN0aW9uczsKK3VzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOwordXNpbmcgU3lzdGVtLkxpbnE7Cit1c2luZyBTeXN0ZW0uUmVmbGVjdGlvbjsKKworbmFtZXNwYWNlIEdyZW1saW4uTmV0LlByb2Nlc3MuVHJhdmVyc2FsCit7CisjcHJhZ21hIHdhcm5pbmcgZGlzYWJsZSAxNTkxCisKKyAgICAvLy8gPHN1bW1hcnk+CisgICAgLy8vICAgICBBIDxzZWUgY3JlZj0iVGV4dFAiIC8+IGlzIGEgcHJlZGljYXRlIG9mIHRoZSBmb3JtIEZ1bmMmbHQ7c3RyaW5nLCBib29sJmd0Oy4KKyAgICAvLy8gICAgIFRoYXQgaXMsIGdpdmVuIHNvbWUgc3RyaW5nLCByZXR1cm4gdHJ1ZSBvciBmYWxzZS4KKyAgICAvLy8gPC9zdW1tYXJ5PgorICAgIHB1YmxpYyBjbGFzcyBUZXh0UCA6IFAKKyAgICB7CisgICAgICAgIC8vLyA8c3VtbWFyeT4KKyAgICAgICAgLy8vICAgICBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJUZXh0UCIgLz4gY2xhc3MuCisgICAgICAgIC8vLyA8L3N1bW1hcnk+CisgICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ib3BlcmF0b3JOYW1lIj5UaGUgbmFtZSBvZiB0aGUgcHJlZGljYXRlLjwvcGFyYW0+CisgICAgICAgIC8vLyA8cGFyYW0gbmFtZT0idmFsdWUiPlRoZSB2YWx1ZSBvZiB0aGUgcHJlZGljYXRlLjwvcGFyYW0+CisgICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ib3RoZXIiPkFuIG9wdGlvbmFsIG90aGVyIHByZWRpY2F0ZSB0aGF0IGlzIHVzZWQgYXMgYW4gYXJndW1lbnQgZm9yIHRoaXMgcHJlZGljYXRlLjwvcGFyYW0+CisgICAgICAgIHB1YmxpYyBUZXh0UChzdHJpbmcgb3BlcmF0b3JOYW1lLCBzdHJpbmcgdmFsdWUsIFAgb3RoZXIgPSBudWxsKSA6IGJhc2Uob3BlcmF0b3JOYW1lLCB2YWx1ZSwgb3RoZXIpCisgICAgICAgIHsKKyAgICAgICAgfQorCisKKyAgICAgICAgcHVibGljIHN0YXRpYyBUZXh0UCBDb250YWluaW5nKHN0cmluZyB2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBUZXh0UCgiY29udGFpbmluZyIsIHZhbHVlKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBzdGF0aWMgVGV4dFAgRW5kaW5nV2l0aChzdHJpbmcgdmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgVGV4dFAoImVuZGluZ1dpdGgiLCB2YWx1ZSk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgc3RhdGljIFRleHRQIE5vdENvbnRhaW5pbmcoc3RyaW5nIHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbmV3IFRleHRQKCJub3RDb250YWluaW5nIiwgdmFsdWUpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHN0YXRpYyBUZXh0UCBOb3RFbmRpbmdXaXRoKHN0cmluZyB2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBUZXh0UCgibm90RW5kaW5nV2l0aCIsIHZhbHVlKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBzdGF0aWMgVGV4dFAgTm90U3RhcnRpbmdXaXRoKHN0cmluZyB2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBUZXh0UCgibm90U3RhcnRpbmdXaXRoIiwgdmFsdWUpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHN0YXRpYyBUZXh0UCBTdGFydGluZ1dpdGgoc3RyaW5nIHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbmV3IFRleHRQKCJzdGFydGluZ1dpdGgiLCB2YWx1ZSk7CisgICAgICAgIH0KKworCisgICAgICAgIHByaXZhdGUgc3RhdGljIFRbXSBUb0dlbmVyaWNBcnJheTxUPihJQ29sbGVjdGlvbjxUPiBjb2xsZWN0aW9uKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gY29sbGVjdGlvbj8uVG9BcnJheSgpID8/IG5ldyBUWzBdOworICAgICAgICB9CisKKyAgICAgICAgLy8vIDxpbmhlcml0ZG9jIC8+CisgICAgICAgIHB1YmxpYyBvdmVycmlkZSBzdHJpbmcgVG9TdHJpbmcoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gT3RoZXIgPT0gbnVsbCA/ICQie09wZXJhdG9yTmFtZX0oe1ZhbHVlfSkiIDogJCJ7T3BlcmF0b3JOYW1lfSh7VmFsdWV9LHtPdGhlcn0pIjsKKyAgICAgICAgfQorICAgIH0KKworI3ByYWdtYSB3YXJuaW5nIHJlc3RvcmUgMTU5MQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1Byb2Nlc3MvVHJhdmVyc2FsL1dpdGhPcHRpb25zLmNzIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1Byb2Nlc3MvVHJhdmVyc2FsL1dpdGhPcHRpb25zLmNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyMGM1OWEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvUHJvY2Vzcy9UcmF2ZXJzYWwvV2l0aE9wdGlvbnMuY3MKQEAgLTAsMCArMSw3NCBAQAorI3JlZ2lvbiBMaWNlbnNlCisKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2VuZHJlZ2lvbgorCisvLyBUSElTIElTIEEgR0VORVJBVEVEIEZJTEUgLSBETyBOT1QgTU9ESUZZIFRISVMgRklMRSBESVJFQ1RMWSAtIHNlZSBwb20ueG1sCit1c2luZyBTeXN0ZW07Cit1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnM7Cit1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKK3VzaW5nIFN5c3RlbS5MaW5xOwordXNpbmcgU3lzdGVtLlJlZmxlY3Rpb247CisKK25hbWVzcGFjZSBHcmVtbGluLk5ldC5Qcm9jZXNzLlRyYXZlcnNhbC5TdGVwLlV0aWwKK3sKKyNwcmFnbWEgd2FybmluZyBkaXNhYmxlIDE1OTEKKworICAgIC8vLyA8c3VtbWFyeT4KKyAgICAvLy8gICAgIENvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBiZSBwYXNzZWQgdG8gdGhlIDxjPldpdGgoKTwvYz4gbW9kdWxhdG9yLgorICAgIC8vLyA8L3N1bW1hcnk+CisgICAgcHVibGljIGNsYXNzIFdpdGhPcHRpb25zCisgICAgeworCisKKyAgICAgICAgcHVibGljIHN0YXRpYyByZWFkb25seSBzdHJpbmcgVG9rZW5zID0gIn50aW5rZXJwb3AudmFsdWVNYXAudG9rZW5zIjsKKworCisgICAgICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgaW50IE5vbmUgPSAwOworCisKKyAgICAgICAgcHVibGljIHN0YXRpYyByZWFkb25seSBpbnQgSWRzID0gMTsKKworCisgICAgICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgaW50IExhYmVscyA9IDI7CisKKworICAgICAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGludCBLZXlzID0gNDsKKworCisgICAgICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgaW50IFZhbHVlcyA9IDg7CisKKworICAgICAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGludCBBbGwgPSAxNTsKKworCisgICAgICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgc3RyaW5nIEluZGV4ZXIgPSAifnRpbmtlcnBvcC5pbmRleC5pbmRleGVyIjsKKworCisgICAgICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgaW50IExpc3QgPSAwOworCisKKyAgICAgICAgcHVibGljIHN0YXRpYyByZWFkb25seSBpbnQgTWFwID0gMTsKKworICAgIH0KKworI3ByYWdtYSB3YXJuaW5nIHJlc3RvcmUgMTU5MQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1Byb2Nlc3MvVHJhdmVyc2FsL19fLmNzIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1Byb2Nlc3MvVHJhdmVyc2FsL19fLmNzCmluZGV4IDI3YTAwMDQuLjliZDBiMTQgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Qcm9jZXNzL1RyYXZlcnNhbC9fXy5jcworKysgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvUHJvY2Vzcy9UcmF2ZXJzYWwvX18uY3MKQEAgLTkzLDYgKzkzLDE0IEBACiAgICAgICAgIC8vLyA8c3VtbWFyeT4KICAgICAgICAgLy8vICAgICBTcGF3bnMgYSA8c2VlIGNyZWY9IkdyYXBoVHJhdmVyc2Fse1NUeXBlLCBFVHlwZX0iIC8+IGFuZCBhZGRzIHRoZSBhZ2dyZWdhdGUgc3RlcCB0byB0aGF0IHRyYXZlcnNhbC4KICAgICAgICAgLy8vIDwvc3VtbWFyeT4KKyAgICAgICAgcHVibGljIHN0YXRpYyBHcmFwaFRyYXZlcnNhbDxvYmplY3QsIG9iamVjdD4gQWdncmVnYXRlKFNjb3BlIHNjb3BlLCBzdHJpbmcgc2lkZUVmZmVjdEtleSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBHcmFwaFRyYXZlcnNhbDxvYmplY3QsIG9iamVjdD4oKS5BZ2dyZWdhdGUoc2NvcGUsIHNpZGVFZmZlY3RLZXkpOyAgICAgICAgICAgIAorICAgICAgICB9CisKKyAgICAgICAgLy8vIDxzdW1tYXJ5PgorICAgICAgICAvLy8gICAgIFNwYXducyBhIDxzZWUgY3JlZj0iR3JhcGhUcmF2ZXJzYWx7U1R5cGUsIEVUeXBlfSIgLz4gYW5kIGFkZHMgdGhlIGFnZ3JlZ2F0ZSBzdGVwIHRvIHRoYXQgdHJhdmVyc2FsLgorICAgICAgICAvLy8gPC9zdW1tYXJ5PgogICAgICAgICBwdWJsaWMgc3RhdGljIEdyYXBoVHJhdmVyc2FsPG9iamVjdCwgb2JqZWN0PiBBZ2dyZWdhdGUoc3RyaW5nIHNpZGVFZmZlY3RLZXkpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBuZXcgR3JhcGhUcmF2ZXJzYWw8b2JqZWN0LCBvYmplY3Q+KCkuQWdncmVnYXRlKHNpZGVFZmZlY3RLZXkpOyAgICAgICAgICAgIApAQCAtMzIzLDYgKzMzMSwxNiBAQAogICAgICAgICB9CiAKICAgICAgICAgLy8vIDxzdW1tYXJ5PgorICAgICAgICAvLy8gICAgIFNwYXducyBhIDxzZWUgY3JlZj0iR3JhcGhUcmF2ZXJzYWx7U1R5cGUsIEVUeXBlfSIgLz4gYW5kIGFkZHMgdGhlIGVsZW1lbnRNYXAgc3RlcCB0byB0aGF0IHRyYXZlcnNhbC4KKyAgICAgICAgLy8vIDwvc3VtbWFyeT4KKyAgICAgICAgcHVibGljIHN0YXRpYyBHcmFwaFRyYXZlcnNhbDxvYmplY3QsIElEaWN0aW9uYXJ5PG9iamVjdCwgRTI+PiBFbGVtZW50TWFwPEUyPihwYXJhbXMgc3RyaW5nW10gcHJvcGVydHlLZXlzKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gcHJvcGVydHlLZXlzLkxlbmd0aCA9PSAwCisgICAgICAgICAgICAgICAgPyBuZXcgR3JhcGhUcmF2ZXJzYWw8b2JqZWN0LCBJRGljdGlvbmFyeTxvYmplY3QsIEUyPj4oKS5FbGVtZW50TWFwPEUyPigpCisgICAgICAgICAgICAgICAgOiBuZXcgR3JhcGhUcmF2ZXJzYWw8b2JqZWN0LCBJRGljdGlvbmFyeTxvYmplY3QsIEUyPj4oKS5FbGVtZW50TWFwPEUyPihwcm9wZXJ0eUtleXMpOyAgICAgICAgICAgIAorICAgICAgICB9CisKKyAgICAgICAgLy8vIDxzdW1tYXJ5PgogICAgICAgICAvLy8gICAgIFNwYXducyBhIDxzZWUgY3JlZj0iR3JhcGhUcmF2ZXJzYWx7U1R5cGUsIEVUeXBlfSIgLz4gYW5kIGFkZHMgdGhlIGVtaXQgc3RlcCB0byB0aGF0IHRyYXZlcnNhbC4KICAgICAgICAgLy8vIDwvc3VtbWFyeT4KICAgICAgICAgcHVibGljIHN0YXRpYyBHcmFwaFRyYXZlcnNhbDxvYmplY3QsIG9iamVjdD4gRW1pdCgpCkBAIC02MjMsNiArNjQxLDE0IEBACiAgICAgICAgIH0KIAogICAgICAgICAvLy8gPHN1bW1hcnk+CisgICAgICAgIC8vLyAgICAgU3Bhd25zIGEgPHNlZSBjcmVmPSJHcmFwaFRyYXZlcnNhbHtTVHlwZSwgRVR5cGV9IiAvPiBhbmQgYWRkcyB0aGUgaW5kZXggc3RlcCB0byB0aGF0IHRyYXZlcnNhbC4KKyAgICAgICAgLy8vIDwvc3VtbWFyeT4KKyAgICAgICAgcHVibGljIHN0YXRpYyBHcmFwaFRyYXZlcnNhbDxvYmplY3QsIEUyPiBJbmRleDxFMj4oKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbmV3IEdyYXBoVHJhdmVyc2FsPG9iamVjdCwgRTI+KCkuSW5kZXg8RTI+KCk7ICAgICAgICAgICAgCisgICAgICAgIH0KKworICAgICAgICAvLy8gPHN1bW1hcnk+CiAgICAgICAgIC8vLyAgICAgU3Bhd25zIGEgPHNlZSBjcmVmPSJHcmFwaFRyYXZlcnNhbHtTVHlwZSwgRVR5cGV9IiAvPiBhbmQgYWRkcyB0aGUgaW5qZWN0IHN0ZXAgdG8gdGhhdCB0cmF2ZXJzYWwuCiAgICAgICAgIC8vLyA8L3N1bW1hcnk+CiAgICAgICAgIHB1YmxpYyBzdGF0aWMgR3JhcGhUcmF2ZXJzYWw8b2JqZWN0LCBvYmplY3Q+IEluamVjdChwYXJhbXMgb2JqZWN0W10gaW5qZWN0aW9ucykKQEAgLTY5Nyw2ICs3MjMsMTQgQEAKICAgICAgICAgfQogCiAgICAgICAgIC8vLyA8c3VtbWFyeT4KKyAgICAgICAgLy8vICAgICBTcGF3bnMgYSA8c2VlIGNyZWY9IkdyYXBoVHJhdmVyc2Fse1NUeXBlLCBFVHlwZX0iIC8+IGFuZCBhZGRzIHRoZSBsb29wcyBzdGVwIHRvIHRoYXQgdHJhdmVyc2FsLgorICAgICAgICAvLy8gPC9zdW1tYXJ5PgorICAgICAgICBwdWJsaWMgc3RhdGljIEdyYXBoVHJhdmVyc2FsPG9iamVjdCwgaW50PiBMb29wcyhzdHJpbmcgbG9vcE5hbWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgR3JhcGhUcmF2ZXJzYWw8b2JqZWN0LCBpbnQ+KCkuTG9vcHMobG9vcE5hbWUpOyAgICAgICAgICAgIAorICAgICAgICB9CisKKyAgICAgICAgLy8vIDxzdW1tYXJ5PgogICAgICAgICAvLy8gICAgIFNwYXducyBhIDxzZWUgY3JlZj0iR3JhcGhUcmF2ZXJzYWx7U1R5cGUsIEVUeXBlfSIgLz4gYW5kIGFkZHMgdGhlIG1hcCBzdGVwIHRvIHRoYXQgdHJhdmVyc2FsLgogICAgICAgICAvLy8gPC9zdW1tYXJ5PgogICAgICAgICBwdWJsaWMgc3RhdGljIEdyYXBoVHJhdmVyc2FsPG9iamVjdCwgRTI+IE1hcDxFMj4oSUZ1bmN0aW9uIGZ1bmN0aW9uKQpAQCAtOTMzLDYgKzk2NywxNCBAQAogICAgICAgICAvLy8gPHN1bW1hcnk+CiAgICAgICAgIC8vLyAgICAgU3Bhd25zIGEgPHNlZSBjcmVmPSJHcmFwaFRyYXZlcnNhbHtTVHlwZSwgRVR5cGV9IiAvPiBhbmQgYWRkcyB0aGUgcmVwZWF0IHN0ZXAgdG8gdGhhdCB0cmF2ZXJzYWwuCiAgICAgICAgIC8vLyA8L3N1bW1hcnk+CisgICAgICAgIHB1YmxpYyBzdGF0aWMgR3JhcGhUcmF2ZXJzYWw8b2JqZWN0LCBvYmplY3Q+IFJlcGVhdChzdHJpbmcgbG9vcE5hbWUsIElUcmF2ZXJzYWwgdHJhdmVyc2FsKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbmV3IEdyYXBoVHJhdmVyc2FsPG9iamVjdCwgb2JqZWN0PigpLlJlcGVhdChsb29wTmFtZSwgdHJhdmVyc2FsKTsgICAgICAgICAgICAKKyAgICAgICAgfQorCisgICAgICAgIC8vLyA8c3VtbWFyeT4KKyAgICAgICAgLy8vICAgICBTcGF3bnMgYSA8c2VlIGNyZWY9IkdyYXBoVHJhdmVyc2Fse1NUeXBlLCBFVHlwZX0iIC8+IGFuZCBhZGRzIHRoZSByZXBlYXQgc3RlcCB0byB0aGF0IHRyYXZlcnNhbC4KKyAgICAgICAgLy8vIDwvc3VtbWFyeT4KICAgICAgICAgcHVibGljIHN0YXRpYyBHcmFwaFRyYXZlcnNhbDxvYmplY3QsIG9iamVjdD4gUmVwZWF0KElUcmF2ZXJzYWwgdHJhdmVyc2FsKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IEdyYXBoVHJhdmVyc2FsPG9iamVjdCwgb2JqZWN0PigpLlJlcGVhdCh0cmF2ZXJzYWwpOyAgICAgICAgICAgIApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1Byb2Nlc3MvVXRpbHMuY3MgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvUHJvY2Vzcy9VdGlscy5jcwppbmRleCBlMTc4MWFiLi4yN2Q1ZGUxIDEwMDY0NAotLS0gYS9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvUHJvY2Vzcy9VdGlscy5jcworKysgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvUHJvY2Vzcy9VdGlscy5jcwpAQCAtNTEsNSArNTEsMTcgQEAKICAgICAgICAgICAgICAgICB0aHJvdzsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8vIDxzdW1tYXJ5PgorICAgICAgICAvLy8gRGVzaWduZWQgZm9yIFRhc2tzIHRoYXQgd2VyZSBzdGFydGVkIGJ1dCB0aGUgcmVzdWx0IHNob3VsZCBub3QgYmUgYXdhaXRlZCB1cG9uIChmaXJlIGFuZCBmb3JnZXQpLgorICAgICAgICAvLy8gPC9zdW1tYXJ5PgorICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgRm9yZ2V0KHRoaXMgVGFzayB0YXNrKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBBdm9pZCBjb21waWxlciB3YXJuaW5nIENTNDAxNCBhbmQgVW5vYnNlcnZlZCBleGNlcHRpb25zCisgICAgICAgICAgICB0YXNrPy5Db250aW51ZVdpdGgodCA9PgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHQuRXhjZXB0aW9uPy5IYW5kbGUoXyA9PiB0cnVlKTsKKyAgICAgICAgICAgIH0sIFRhc2tDb250aW51YXRpb25PcHRpb25zLkV4ZWN1dGVTeW5jaHJvbm91c2x5KTsKKyAgICAgICAgfQogICAgIH0KIH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvUHJvcGVydGllcy9Bc3NlbWJseUluZm8uY3MgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvUHJvcGVydGllcy9Bc3NlbWJseUluZm8uY3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Y5MGU1ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9Qcm9wZXJ0aWVzL0Fzc2VtYmx5SW5mby5jcwpAQCAtMCwwICsxLDI2IEBACisjcmVnaW9uIExpY2Vuc2UKKworLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjZW5kcmVnaW9uCisKK3VzaW5nIFN5c3RlbS5SdW50aW1lLkNvbXBpbGVyU2VydmljZXM7CisKK1thc3NlbWJseTogSW50ZXJuYWxzVmlzaWJsZVRvKCJHcmVtbGluLk5ldC5Vbml0VGVzdCwgUHVibGljS2V5PTAwMjQwMDAwMDQ4MDAwMDA5NDAwMDAwMDA2MDIwMDAwMDAyNDAwMDA1MjUzNDEzMTAwMDQwMDAwMDEwMDAxMDA5YmJmN2E1Yjk5NjZkOTIwN2Q4YWJiOWQzZDNlOThmNWUzODdiMjkyNzQyY2ZiNzkxZGM2NTczNTcyMjFjM2FjOWIzOGFiNmRhYjg5NjMwZGM4ZWRiM2NkZTg0YTEwN2Y0OTNkMTkyMTE2YTkzNGFmYTQ2MzM1NWVlZmQ1OGI4MmZkMDhkYzI2MTZlZTYwNzRhNzRiZjU4NDU2NTI4NjQ3NDZlMjg1YmQwNGUyZTFhODc5MjFlOGUyYzM4M2QxYjMwMmU3YmVlMWZkN2NkYWI1ZmUyYmJlZDhjNjY3NzYyNGQ2MzQzMzU0OGQ0M2E4NzNhYjU2NTBlZDk2ZmIwNjg3IildClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1N0cnVjdHVyZS9JTy9HcmFwaFNPTi9CdWxrU2V0U2VyaWFsaXplci5jcyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9TdHJ1Y3R1cmUvSU8vR3JhcGhTT04vQnVsa1NldFNlcmlhbGl6ZXIuY3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNThkNGM5YgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9TdHJ1Y3R1cmUvSU8vR3JhcGhTT04vQnVsa1NldFNlcmlhbGl6ZXIuY3MKQEAgLTAsMCArMSw1MCBAQAor77u/I3JlZ2lvbiBMaWNlbnNlCisKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2VuZHJlZ2lvbgorCit1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKK3VzaW5nIFN5c3RlbS5MaW5xOwordXNpbmcgU3lzdGVtLlJ1bnRpbWUuQ29tcGlsZXJTZXJ2aWNlczsKK3VzaW5nIE5ld3RvbnNvZnQuSnNvbi5MaW5xOworCituYW1lc3BhY2UgR3JlbWxpbi5OZXQuU3RydWN0dXJlLklPLkdyYXBoU09OCit7CisgICAgaW50ZXJuYWwgY2xhc3MgQnVsa1NldFNlcmlhbGl6ZXIgOiBJR3JhcGhTT05EZXNlcmlhbGl6ZXIKKyAgICB7CisgICAgICAgIHB1YmxpYyBkeW5hbWljIE9iamVjdGlmeShKVG9rZW4gZ3JhcGhzb25PYmplY3QsIEdyYXBoU09OUmVhZGVyIHJlYWRlcikKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGpBcnJheSA9IGdyYXBoc29uT2JqZWN0IGFzIEpBcnJheTsKKyAgICAgICAgICAgIGlmIChqQXJyYXkgPT0gbnVsbCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IExpc3Q8b2JqZWN0PigwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gY29lcmNlIHRoZSBCdWxrU2V0IHRvIExpc3QuIGlmIHRoZSBidWxrIGV4Y2VlZHMgdGhlIGludCBzcGFjZSB0aGVuIHdlIGNhbid0IGNvZXJjZSB0byBMaXN0IGFueXdheSwgCisgICAgICAgICAgICAvLyBzbyB0aGlzIHF1ZXJ5IHdpbGwgYmUgdHJvdWJsZS4gd2UnZCBuZWVkIGEgbGVnaXQgQnVsa1NldCBpbXBsZW1lbnRhdGlvbiBoZXJlIGluIEMjLiB0aGlzIGN1cnJlbnQgCisgICAgICAgICAgICAvLyBpbXBsZW1lbnRhdGlvbiBpcyBoZXJlIHRvIHJlcGxpY2F0ZSB0aGUgcHJldmlvdXMgZnVuY3Rpb25hbGl0eSB0aGF0IGV4aXN0ZWQgb24gdGhlIHNlcnZlciBzaWRlIGluIAorICAgICAgICAgICAgLy8gcHJldmlvdXMgdmVyc2lvbnMuCisgICAgICAgICAgICByZXR1cm4gRW51bWVyYWJsZS5SYW5nZSgwLCBqQXJyYXkuQ291bnQgLyAyKS5TZWxlY3RNYW55PGludCxvYmplY3Q+KGkgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1lcmFibGUuUmVwZWF0PG9iamVjdD4ocmVhZGVyLlRvT2JqZWN0KGpBcnJheVtpICogMl0pLCAoaW50KSByZWFkZXIuVG9PYmplY3QoakFycmF5W2kgKiAyICsgMV0pKSkuCisgICAgICAgICAgICAgICAgICAgICAgIFRvTGlzdCgpOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9TdHJ1Y3R1cmUvSU8vR3JhcGhTT04vRGlyZWN0aW9uRGVzZXJpYWxpemVyLmNzIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1N0cnVjdHVyZS9JTy9HcmFwaFNPTi9EaXJlY3Rpb25EZXNlcmlhbGl6ZXIuY3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDAyNzE3MQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9TdHJ1Y3R1cmUvSU8vR3JhcGhTT04vRGlyZWN0aW9uRGVzZXJpYWxpemVyLmNzCkBAIC0wLDAgKzEsMzYgQEAKK++7vyNyZWdpb24gTGljZW5zZQorCisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNlbmRyZWdpb24KKwordXNpbmcgR3JlbWxpbi5OZXQuUHJvY2Vzcy5UcmF2ZXJzYWw7Cit1c2luZyBOZXd0b25zb2Z0Lkpzb24uTGlucTsKKworbmFtZXNwYWNlIEdyZW1saW4uTmV0LlN0cnVjdHVyZS5JTy5HcmFwaFNPTgoreworICAgIGludGVybmFsIGNsYXNzIERpcmVjdGlvbkRlc2VyaWFsaXplciA6IElHcmFwaFNPTkRlc2VyaWFsaXplcgorICAgIHsKKyAgICAgICAgcHVibGljIGR5bmFtaWMgT2JqZWN0aWZ5KEpUb2tlbiBncmFwaHNvbk9iamVjdCwgR3JhcGhTT05SZWFkZXIgcmVhZGVyKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gRGlyZWN0aW9uLkdldEJ5VmFsdWUoZ3JhcGhzb25PYmplY3QuVG9TdHJpbmcoKSk7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1N0cnVjdHVyZS9JTy9HcmFwaFNPTi9HcmFwaFNPTjNSZWFkZXIuY3MgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvU3RydWN0dXJlL0lPL0dyYXBoU09OL0dyYXBoU09OM1JlYWRlci5jcwppbmRleCBjYzc0ZmUzLi43Y2MxN2JkIDEwMDY0NAotLS0gYS9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvU3RydWN0dXJlL0lPL0dyYXBoU09OL0dyYXBoU09OM1JlYWRlci5jcworKysgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvU3RydWN0dXJlL0lPL0dyYXBoU09OL0dyYXBoU09OM1JlYWRlci5jcwpAQCAtMzYsNiArMzYsNyBAQAogICAgICAgICAgICAgICAgIHsgImc6TGlzdCIsIG5ldyBMaXN0U2VyaWFsaXplcigpIH0sCiAgICAgICAgICAgICAgICAgeyAiZzpTZXQiLCBuZXcgU2V0U2VyaWFsaXplcigpIH0sCiAgICAgICAgICAgICAgICAgeyAiZzpNYXAiLCBuZXcgTWFwU2VyaWFsaXplcigpIH0sCisgICAgICAgICAgICAgICAgeyAiZzpCdWxrU2V0IiwgbmV3IEJ1bGtTZXRTZXJpYWxpemVyKCkgfSwKICAgICAgICAgICAgICAgICB7ICJnOlBhdGgiLCBuZXcgUGF0aDNEZXNlcmlhbGl6ZXIoKSB9CiAgICAgICAgICAgICB9OwogICAgICAgICAKZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9TdHJ1Y3R1cmUvSU8vR3JhcGhTT04vR3JhcGhTT05SZWFkZXIuY3MgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvU3RydWN0dXJlL0lPL0dyYXBoU09OL0dyYXBoU09OUmVhZGVyLmNzCmluZGV4IDVjZWQ5OWEuLjYzNjQxZjAgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9TdHJ1Y3R1cmUvSU8vR3JhcGhTT04vR3JhcGhTT05SZWFkZXIuY3MKKysrIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1N0cnVjdHVyZS9JTy9HcmFwaFNPTi9HcmFwaFNPTlJlYWRlci5jcwpAQCAtNDQsNiArNDQsNyBAQAogICAgICAgICAgICAgICAgIHsiZzpJbnQ2NCIsIG5ldyBJbnQ2NENvbnZlcnRlcigpfSwKICAgICAgICAgICAgICAgICB7Imc6RmxvYXQiLCBuZXcgRmxvYXRDb252ZXJ0ZXIoKX0sCiAgICAgICAgICAgICAgICAgeyJnOkRvdWJsZSIsIG5ldyBEb3VibGVDb252ZXJ0ZXIoKX0sCisgICAgICAgICAgICAgICAgeyJnOkRpcmVjdGlvbiIsIG5ldyBEaXJlY3Rpb25EZXNlcmlhbGl6ZXIoKX0sCiAgICAgICAgICAgICAgICAgeyJnOlVVSUQiLCBuZXcgVXVpZERlc2VyaWFsaXplcigpfSwKICAgICAgICAgICAgICAgICB7Imc6RGF0ZSIsIG5ldyBEYXRlRGVzZXJpYWxpemVyKCl9LAogICAgICAgICAgICAgICAgIHsiZzpUaW1lc3RhbXAiLCBuZXcgRGF0ZURlc2VyaWFsaXplcigpfSwKZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9TdHJ1Y3R1cmUvSU8vR3JhcGhTT04vR3JhcGhTT05Xcml0ZXIuY3MgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvU3RydWN0dXJlL0lPL0dyYXBoU09OL0dyYXBoU09OV3JpdGVyLmNzCmluZGV4IDkzNDllNTcuLmRiYTZlNjAgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9TdHJ1Y3R1cmUvSU8vR3JhcGhTT04vR3JhcGhTT05Xcml0ZXIuY3MKKysrIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1N0cnVjdHVyZS9JTy9HcmFwaFNPTi9HcmFwaFNPTldyaXRlci5jcwpAQCAtNTgsNiArNTgsNyBAQAogICAgICAgICAgICAgICAgIHt0eXBlb2YoVHlwZSksIG5ldyBDbGFzc1NlcmlhbGl6ZXIoKX0sCiAgICAgICAgICAgICAgICAge3R5cGVvZihFbnVtV3JhcHBlciksIG5ldyBFbnVtU2VyaWFsaXplcigpfSwKICAgICAgICAgICAgICAgICB7dHlwZW9mKFApLCBuZXcgUFNlcmlhbGl6ZXIoKX0sCisgICAgICAgICAgICAgICAge3R5cGVvZihUZXh0UCksIG5ldyBUZXh0UFNlcmlhbGl6ZXIoKX0sCiAgICAgICAgICAgICAgICAge3R5cGVvZihWZXJ0ZXgpLCBuZXcgVmVydGV4U2VyaWFsaXplcigpfSwKICAgICAgICAgICAgICAgICB7dHlwZW9mKEVkZ2UpLCBuZXcgRWRnZVNlcmlhbGl6ZXIoKX0sCiAgICAgICAgICAgICAgICAge3R5cGVvZihQcm9wZXJ0eSksIG5ldyBQcm9wZXJ0eVNlcmlhbGl6ZXIoKX0sCkBAIC0xMTMsNyArMTE0LDEwIEBACiAgICAgICAgIHB1YmxpYyBkeW5hbWljIFRvRGljdChkeW5hbWljIG9iamVjdERhdGEpCiAgICAgICAgIHsKICAgICAgICAgICAgIHZhciB0eXBlID0gb2JqZWN0RGF0YS5HZXRUeXBlKCk7Ci0gICAgICAgICAgICBpZiAoVHJ5R2V0U2VyaWFsaXplckZvcihvdXQgSUdyYXBoU09OU2VyaWFsaXplciBzZXJpYWxpemVyLCB0eXBlKSkKKworICAgICAgICAgICAgSUdyYXBoU09OU2VyaWFsaXplciBzZXJpYWxpemVyID0gVHJ5R2V0U2VyaWFsaXplckZvcih0eXBlKTsKKworICAgICAgICAgICAgaWYgKHNlcmlhbGl6ZXIgIT0gbnVsbCkKICAgICAgICAgICAgICAgICByZXR1cm4gc2VyaWFsaXplci5EaWN0aWZ5KG9iamVjdERhdGEsIHRoaXMpOwogICAgICAgICAgICAgaWYgKElzRGljdGlvbmFyeVR5cGUodHlwZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIERpY3RUb0dyYXBoU09ORGljdChvYmplY3REYXRhKTsKQEAgLTEyMiwyMSArMTI2LDE4IEBACiAgICAgICAgICAgICByZXR1cm4gb2JqZWN0RGF0YTsKICAgICAgICAgfQogCi0gICAgICAgIHByaXZhdGUgYm9vbCBUcnlHZXRTZXJpYWxpemVyRm9yKG91dCBJR3JhcGhTT05TZXJpYWxpemVyIHNlcmlhbGl6ZXIsIFR5cGUgdHlwZSkKKyAgICAgICAgcHJpdmF0ZSBJR3JhcGhTT05TZXJpYWxpemVyIFRyeUdldFNlcmlhbGl6ZXJGb3IoVHlwZSB0eXBlKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoU2VyaWFsaXplcnMuQ29udGFpbnNLZXkodHlwZSkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc2VyaWFsaXplciA9IFNlcmlhbGl6ZXJzW3R5cGVdOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybiBTZXJpYWxpemVyc1t0eXBlXTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZvcmVhY2ggKHZhciBzdXBwb3J0ZWRUeXBlIGluIFNlcmlhbGl6ZXJzLktleXMpCiAgICAgICAgICAgICAgICAgaWYgKHN1cHBvcnRlZFR5cGUuSXNBc3NpZ25hYmxlRnJvbSh0eXBlKSkKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHNlcmlhbGl6ZXIgPSBTZXJpYWxpemVyc1tzdXBwb3J0ZWRUeXBlXTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTZXJpYWxpemVyc1tzdXBwb3J0ZWRUeXBlXTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBzZXJpYWxpemVyID0gbnVsbDsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICB9CiAKICAgICAgICAgcHJpdmF0ZSBib29sIElzRGljdGlvbmFyeVR5cGUoVHlwZSB0eXBlKQpAQCAtMTYzLDQgKzE2NCw0IEBACiAgICAgICAgICAgICAgICAgeWllbGQgcmV0dXJuIFRvRGljdChlKTsKICAgICAgICAgfQogICAgIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvU3RydWN0dXJlL0lPL0dyYXBoU09OL1RleHRQU2VyaWFsaXplci5jcyBiL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9TdHJ1Y3R1cmUvSU8vR3JhcGhTT04vVGV4dFBTZXJpYWxpemVyLmNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4NmJlMmQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvU3RydWN0dXJlL0lPL0dyYXBoU09OL1RleHRQU2VyaWFsaXplci5jcwpAQCAtMCwwICsxLDQ1IEBACivvu78jcmVnaW9uIExpY2Vuc2UKKworLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjZW5kcmVnaW9uCisKK3VzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOwordXNpbmcgR3JlbWxpbi5OZXQuUHJvY2Vzcy5UcmF2ZXJzYWw7CisKK25hbWVzcGFjZSBHcmVtbGluLk5ldC5TdHJ1Y3R1cmUuSU8uR3JhcGhTT04KK3sKKyAgICBpbnRlcm5hbCBjbGFzcyBUZXh0UFNlcmlhbGl6ZXIgOiBJR3JhcGhTT05TZXJpYWxpemVyCisgICAgeworICAgICAgICBwdWJsaWMgRGljdGlvbmFyeTxzdHJpbmcsIGR5bmFtaWM+IERpY3RpZnkoZHluYW1pYyBwcmVkaWNhdGUsIEdyYXBoU09OV3JpdGVyIHdyaXRlcikKKyAgICAgICAgeworICAgICAgICAgICAgVGV4dFAgcCA9IHByZWRpY2F0ZTsKKyAgICAgICAgICAgIHZhciB2YWx1ZSA9IHAuT3RoZXIgPT0gbnVsbAorICAgICAgICAgICAgICAgID8gd3JpdGVyLlRvRGljdChwLlZhbHVlKQorICAgICAgICAgICAgICAgIDogbmV3IExpc3Q8ZHluYW1pYz4ge3dyaXRlci5Ub0RpY3QocC5WYWx1ZSksIHdyaXRlci5Ub0RpY3QocC5PdGhlcil9OworICAgICAgICAgICAgdmFyIGRpY3QgPSBuZXcgRGljdGlvbmFyeTxzdHJpbmcsIGR5bmFtaWM+CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgeyJwcmVkaWNhdGUiLCBwLk9wZXJhdG9yTmFtZX0sCisgICAgICAgICAgICAgICAgeyJ2YWx1ZSIsIHZhbHVlfQorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIHJldHVybiBHcmFwaFNPTlV0aWwuVG9UeXBlZFZhbHVlKCJUZXh0UCIsIGRpY3QpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1N0cnVjdHVyZS9QYXRoLmNzIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL0dyZW1saW4uTmV0L1N0cnVjdHVyZS9QYXRoLmNzCmluZGV4IGE5ZjI2OTguLmQyMDVhODggMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZG90bmV0L3NyYy9HcmVtbGluLk5ldC9TdHJ1Y3R1cmUvUGF0aC5jcworKysgYi9ncmVtbGluLWRvdG5ldC9zcmMvR3JlbWxpbi5OZXQvU3RydWN0dXJlL1BhdGguY3MKQEAgLTExMSw3ICsxMTEsNyBAQAogICAgICAgICAvLy8gPGluaGVyaXRkb2MgLz4KICAgICAgICAgcHVibGljIG92ZXJyaWRlIHN0cmluZyBUb1N0cmluZygpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAkIlt7c3RyaW5nLkpvaW4oIiwgIiwgT2JqZWN0cyl9XSI7CisgICAgICAgICAgICByZXR1cm4gJCJwYXRoW3tzdHJpbmcuSm9pbigiLCAiLCBPYmplY3RzKX1dIjsKICAgICAgICAgfQogCiAgICAgICAgIC8vLyA8c3VtbWFyeT4KZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3NyYy9wb20ueG1sIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL3BvbS54bWwKaW5kZXggMDU5ODE5Yi4uNDNmYTVlYiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kb3RuZXQvc3JjL3BvbS54bWwKKysrIGIvZ3JlbWxpbi1kb3RuZXQvc3JjL3BvbS54bWwKQEAgLTIxLDcgKzIxLDcgQEAKICAgICA8cGFyZW50PgogICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLnRpbmtlcnBvcDwvZ3JvdXBJZD4KICAgICAgICAgPGFydGlmYWN0SWQ+Z3JlbWxpbi1kb3RuZXQ8L2FydGlmYWN0SWQ+Ci0gICAgICAgIDx2ZXJzaW9uPjMuMy4xMS1TTkFQU0hPVDwvdmVyc2lvbj4KKyAgICAgICAgPHZlcnNpb24+My40LjctU05BUFNIT1Q8L3ZlcnNpb24+CiAgICAgPC9wYXJlbnQ+CiAgICAgPGFydGlmYWN0SWQ+Z3JlbWxpbi1kb3RuZXQtc291cmNlPC9hcnRpZmFjdElkPgogICAgIDxuYW1lPkFwYWNoZSBUaW5rZXJQb3AgOjogR3JlbWxpbi5OZXQgLSBTb3VyY2U8L25hbWU+CkBAIC0yODEsNiArMjgxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLmNvZGVoYXVzLmdyb292eTwvZ3JvdXBJZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+Z3Jvb3Z5LWFsbDwvYXJ0aWZhY3RJZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+JHtncm9vdnkudmVyc2lvbn08L3ZlcnNpb24+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlPnBvbTwvdHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPnJ1bnRpbWU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVwZW5kZW5jeT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVwZW5kZW5jeT4KZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L0RvY3MvRGV2L1Byb3ZpZGVyL0luZGV4VGVzdHMuY3MgYi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Eb2NzL0Rldi9Qcm92aWRlci9JbmRleFRlc3RzLmNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkOGNkYTIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Eb2NzL0Rldi9Qcm92aWRlci9JbmRleFRlc3RzLmNzCkBAIC0wLDAgKzEsOTEgQEAKKyNyZWdpb24gTGljZW5zZQorCisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNlbmRyZWdpb24KKwordXNpbmcgU3lzdGVtOwordXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7Cit1c2luZyBHcmVtbGluLk5ldC5Ecml2ZXI7Cit1c2luZyBHcmVtbGluLk5ldC5TdHJ1Y3R1cmUuSU8uR3JhcGhTT047Cit1c2luZyBOZXd0b25zb2Z0Lkpzb24uTGlucTsKK3VzaW5nIFh1bml0OwordXNpbmcgWHVuaXQuU2RrOworCituYW1lc3BhY2UgR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0LkRvY3MuRGV2LlByb3ZpZGVyCit7CisvLyB0YWc6Om15VHlwZVNlcmlhbGl6YXRpb25bXQoraW50ZXJuYWwgY2xhc3MgTXlUeXBlCit7CisgICAgcHVibGljIHN0YXRpYyBzdHJpbmcgR3JhcGhzb25QcmVmaXggPSAicHJvdmlkZXJ4IjsKKyAgICBwdWJsaWMgc3RhdGljIHN0cmluZyBHcmFwaHNvbkJhc2VUeXBlID0gIk15VHlwZSI7CisgICAgcHVibGljIHN0YXRpYyBzdHJpbmcgR3JhcGhzb25UeXBlID0gR3JhcGhTT05VdGlsLkZvcm1hdFR5cGVOYW1lKEdyYXBoc29uUHJlZml4LCBHcmFwaHNvbkJhc2VUeXBlKTsKKworICAgIHB1YmxpYyBNeVR5cGUoaW50IHgsIGludCB5KQorICAgIHsKKyAgICAgICAgWCA9IHg7CisgICAgICAgIFkgPSB5OworICAgIH0KKworICAgIHB1YmxpYyBpbnQgWCB7IGdldDsgfQorICAgIHB1YmxpYyBpbnQgWSB7IGdldDsgfQorfQorCitpbnRlcm5hbCBjbGFzcyBNeUNsYXNzV3JpdGVyIDogSUdyYXBoU09OU2VyaWFsaXplcgoreworICAgIHB1YmxpYyBEaWN0aW9uYXJ5PHN0cmluZywgZHluYW1pYz4gRGljdGlmeShkeW5hbWljIG9iamVjdERhdGEsIEdyYXBoU09OV3JpdGVyIHdyaXRlcikKKyAgICB7CisgICAgICAgIE15VHlwZSBteVR5cGUgPSBvYmplY3REYXRhOworICAgICAgICB2YXIgdmFsdWVEaWN0ID0gbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBvYmplY3Q+CisgICAgICAgIHsKKyAgICAgICAgICAgIHsieCIsIG15VHlwZS5YfSwKKyAgICAgICAgICAgIHsieSIsIG15VHlwZS5ZfQorICAgICAgICB9OworICAgICAgICByZXR1cm4gR3JhcGhTT05VdGlsLlRvVHlwZWRWYWx1ZShuYW1lb2YoVGVzdENsYXNzKSwgdmFsdWVEaWN0LCBNeVR5cGUuR3JhcGhzb25QcmVmaXgpOworICAgIH0KK30KKworaW50ZXJuYWwgY2xhc3MgTXlUeXBlUmVhZGVyIDogSUdyYXBoU09ORGVzZXJpYWxpemVyCit7CisgICAgcHVibGljIGR5bmFtaWMgT2JqZWN0aWZ5KEpUb2tlbiBncmFwaHNvbk9iamVjdCwgR3JhcGhTT05SZWFkZXIgcmVhZGVyKQorICAgIHsKKyAgICAgICAgdmFyIHggPSByZWFkZXIuVG9PYmplY3QoZ3JhcGhzb25PYmplY3RbIngiXSk7CisgICAgICAgIHZhciB5ID0gcmVhZGVyLlRvT2JqZWN0KGdyYXBoc29uT2JqZWN0WyJ5Il0pOworICAgICAgICByZXR1cm4gbmV3IE15VHlwZSh4LCB5KTsKKyAgICB9Cit9CisvLyBlbmQ6Om15VHlwZVNlcmlhbGl6YXRpb25bXQorICAgIAorICAgIHB1YmxpYyBjbGFzcyBJbmRleFRlc3RzCisgICAgeworICAgICAgICBbRmFjdChTa2lwPSJObyBTZXJ2ZXIgdW5kZXIgbG9jYWxob3N0IildCisgICAgICAgIHB1YmxpYyB2b2lkIFN1cHBvcnRpbmdHcmVtbGluTmV0SU9UZXN0cygpCisgICAgICAgIHsKKy8vIHRhZzo6c3VwcG9ydGluZ0dyZW1saW5OZXRJT1tdCit2YXIgZ3JhcGhzb25SZWFkZXIgPSBuZXcgR3JhcGhTT04zUmVhZGVyKAorICAgIG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgSUdyYXBoU09ORGVzZXJpYWxpemVyPiB7e015VHlwZS5HcmFwaHNvblR5cGUsIG5ldyBNeVR5cGVSZWFkZXIoKX19KTsKK3ZhciBncmFwaHNvbldyaXRlciA9IG5ldyBHcmFwaFNPTjNXcml0ZXIoCisgICAgbmV3IERpY3Rpb25hcnk8VHlwZSwgSUdyYXBoU09OU2VyaWFsaXplcj4ge3t0eXBlb2YoTXlUeXBlKSwgbmV3IE15Q2xhc3NXcml0ZXIoKX19KTsKKwordmFyIGdyZW1saW5DbGllbnQgPSBuZXcgR3JlbWxpbkNsaWVudChuZXcgR3JlbWxpblNlcnZlcigibG9jYWxob3N0IiwgODE4MiksIGdyYXBoc29uUmVhZGVyLCBncmFwaHNvbldyaXRlcik7CisvLyBlbmQ6OnN1cHBvcnRpbmdHcmVtbGluTmV0SU9bXQorICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L0RvY3MvUmVmZXJlbmNlL0dyZW1saW5BcHBsaWNhdGlvbnNUZXN0cy5jcyBiL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L0RvY3MvUmVmZXJlbmNlL0dyZW1saW5BcHBsaWNhdGlvbnNUZXN0cy5jcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTcxNjJhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvRG9jcy9SZWZlcmVuY2UvR3JlbWxpbkFwcGxpY2F0aW9uc1Rlc3RzLmNzCkBAIC0wLDAgKzEsNjIgQEAKKyNyZWdpb24gTGljZW5zZQorCisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNlbmRyZWdpb24KKwordXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7Cit1c2luZyBTeXN0ZW0uVGhyZWFkaW5nLlRhc2tzOwordXNpbmcgR3JlbWxpbi5OZXQuRHJpdmVyOwordXNpbmcgR3JlbWxpbi5OZXQuRHJpdmVyLlJlbW90ZTsKK3VzaW5nIHN0YXRpYyBHcmVtbGluLk5ldC5Qcm9jZXNzLlRyYXZlcnNhbC5Bbm9ueW1vdXNUcmF2ZXJzYWxTb3VyY2U7Cit1c2luZyBYdW5pdDsKKworbmFtZXNwYWNlIEdyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC5Eb2NzLlJlZmVyZW5jZQoreworICAgIHB1YmxpYyBjbGFzcyBHcmVtbGluQXBwbGljYXRpb25zVGVzdHMKKyAgICB7CisgICAgICAgIFtGYWN0KFNraXA9Ik5vIFNlcnZlciB1bmRlciBsb2NhbGhvc3QiKV0KKyAgICAgICAgcHVibGljIGFzeW5jIFRhc2sgQ29ubmVjdGluZ1ZpYURyaXZlcnNUZXN0KCkKKyAgICAgICAgeworLy8gdGFnOjpjb25uZWN0aW5nVmlhRHJpdmVyc1tdCisvLyBzY3JpcHQKK3ZhciBncmVtbGluU2VydmVyID0gbmV3IEdyZW1saW5TZXJ2ZXIoImxvY2FsaG9zdCIsIDgxODIpOwordXNpbmcgKHZhciBncmVtbGluQ2xpZW50ID0gbmV3IEdyZW1saW5DbGllbnQoZ3JlbWxpblNlcnZlcikpCit7CisgICAgdmFyIGJpbmRpbmdzID0gbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBvYmplY3Q+CisgICAgeworICAgICAgICB7Im5hbWUiLCAibWFya28ifQorICAgIH07CisKKyAgICB2YXIgcmVzcG9uc2UgPQorICAgICAgICBhd2FpdCBncmVtbGluQ2xpZW50LlN1Ym1pdFdpdGhTaW5nbGVSZXN1bHRBc3luYzxvYmplY3Q+KCJnLlYoKS5oYXMoJ3BlcnNvbicsJ25hbWUnLG5hbWUpLm91dCgna25vd3MnKSIsCisgICAgICAgICAgICBiaW5kaW5ncyk7Cit9CisKKy8vIGJ5dGVjb2RlCit1c2luZyAodmFyIGdyZW1saW5DbGllbnQgPSBuZXcgR3JlbWxpbkNsaWVudChuZXcgR3JlbWxpblNlcnZlcigibG9jYWxob3N0IiwgODE4MikpKQoreworICAgIHZhciBnID0gVHJhdmVyc2FsKCkuV2l0aFJlbW90ZShuZXcgRHJpdmVyUmVtb3RlQ29ubmVjdGlvbihncmVtbGluQ2xpZW50KSk7CisgICAgdmFyIGxpc3QgPSBnLlYoKS5IYXMoInBlcnNvbiIsICJuYW1lIiwgIm1hcmtvIikuT3V0KCJrbm93cyIpLlRvTGlzdCgpOworfQorLy8gZW5kOjpjb25uZWN0aW5nVmlhRHJpdmVyc1tdCisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvRG9jcy9SZWZlcmVuY2UvR3JlbWxpblZhcmlhbnRzRHNsLmNzIGIvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvRG9jcy9SZWZlcmVuY2UvR3JlbWxpblZhcmlhbnRzRHNsLmNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiZWI0NzkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Eb2NzL1JlZmVyZW5jZS9HcmVtbGluVmFyaWFudHNEc2wuY3MKQEAgLTAsMCArMSw4MSBAQAorI3JlZ2lvbiBMaWNlbnNlCisKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2VuZHJlZ2lvbgorCit1c2luZyBHcmVtbGluLk5ldC5Qcm9jZXNzLlRyYXZlcnNhbDsKK3VzaW5nIEdyZW1saW4uTmV0LlN0cnVjdHVyZTsKKworLy8gdGFnOjpkc2xbXQorbmFtZXNwYWNlIERzbCAKK3sKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFNvY2lhbFRyYXZlcnNhbEV4dGVuc2lvbnMKKyAgICB7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgR3JhcGhUcmF2ZXJzYWw8VmVydGV4LFZlcnRleD4gS25vd3ModGhpcyBHcmFwaFRyYXZlcnNhbDxWZXJ0ZXgsVmVydGV4PiB0LCBzdHJpbmcgcGVyc29uTmFtZSkgCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB0Lk91dCgia25vd3MiKS5IYXNMYWJlbCgicGVyc29uIikuSGFzKCJuYW1lIiwgcGVyc29uTmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgc3RhdGljIEdyYXBoVHJhdmVyc2FsPFZlcnRleCwgaW50PiBZb3VuZ2VzdEZyaWVuZHNBZ2UodGhpcyBHcmFwaFRyYXZlcnNhbDxWZXJ0ZXgsVmVydGV4PiB0KSAKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHQuT3V0KCJrbm93cyIpLkhhc0xhYmVsKCJwZXJzb24iKS5WYWx1ZXM8aW50PigiYWdlIikuTWluPGludD4oKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBzdGF0aWMgR3JhcGhUcmF2ZXJzYWw8VmVydGV4LGxvbmc+IENyZWF0ZWRBdExlYXN0KHRoaXMgR3JhcGhUcmF2ZXJzYWw8VmVydGV4LFZlcnRleD4gdCwgbG9uZyBudW1iZXIpIAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdC5PdXRFKCJjcmVhdGVkIikuQ291bnQoKS5JcyhQLkd0ZShudW1iZXIpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgX19Tb2NpYWwgCisgICAgeworICAgICAgICBwdWJsaWMgc3RhdGljIEdyYXBoVHJhdmVyc2FsPG9iamVjdCxWZXJ0ZXg+IEtub3dzKHN0cmluZyBwZXJzb25OYW1lKQorICAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIF9fLk91dCgia25vd3MiKS5IYXNMYWJlbCgicGVyc29uIikuSGFzKCJuYW1lIiwgcGVyc29uTmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgc3RhdGljIEdyYXBoVHJhdmVyc2FsPG9iamVjdCwgaW50PiBZb3VuZ2VzdEZyaWVuZHNBZ2UoKSAKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIF9fLk91dCgia25vd3MiKS5IYXNMYWJlbCgicGVyc29uIikuVmFsdWVzPGludD4oImFnZSIpLk1pbjxpbnQ+KCk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgc3RhdGljIEdyYXBoVHJhdmVyc2FsPG9iamVjdCxsb25nPiBDcmVhdGVkQXRMZWFzdChsb25nIG51bWJlcikgCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBfXy5PdXRFKCJjcmVhdGVkIikuQ291bnQoKS5JcyhQLkd0ZShudW1iZXIpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgU29jaWFsVHJhdmVyc2FsU291cmNlRXh0ZW5zaW9ucworICAgIHsKKyAgICAgICAgcHVibGljIHN0YXRpYyBHcmFwaFRyYXZlcnNhbDxWZXJ0ZXgsVmVydGV4PiBQZXJzb25zKHRoaXMgR3JhcGhUcmF2ZXJzYWxTb3VyY2UgZywgcGFyYW1zIHN0cmluZ1tdIHBlcnNvbk5hbWVzKSAKKyAgICAgICAgeworICAgICAgICAgICAgR3JhcGhUcmF2ZXJzYWw8VmVydGV4LFZlcnRleD4gdCA9IGcuVigpLkhhc0xhYmVsKCJwZXJzb24iKTsKKworICAgICAgICAgICAgaWYgKHBlcnNvbk5hbWVzLkxlbmd0aCA+IDApIAorICAgICAgICAgICAgeyAgICAKKyAgICAgICAgICAgICAgICB0ID0gdC5IYXMoIm5hbWUiLCBQLldpdGhpbihwZXJzb25OYW1lcykpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gdDsKKyAgICAgICAgfQorICAgIH0KK30KKy8vIGVuZDo6ZHNsW10KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Eb2NzL1JlZmVyZW5jZS9HcmVtbGluVmFyaWFudHNEc2xUZXN0cy5jcyBiL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L0RvY3MvUmVmZXJlbmNlL0dyZW1saW5WYXJpYW50c0RzbFRlc3RzLmNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmYzBjNGEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Eb2NzL1JlZmVyZW5jZS9HcmVtbGluVmFyaWFudHNEc2xUZXN0cy5jcwpAQCAtMCwwICsxLDY3IEBACisjcmVnaW9uIExpY2Vuc2UKKworLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjZW5kcmVnaW9uCisKK3VzaW5nIEdyZW1saW4uTmV0LkRyaXZlcjsKK3VzaW5nIEdyZW1saW4uTmV0LkRyaXZlci5SZW1vdGU7CisvLyB0YWc6OmRzbFVzaW5nW10KK3VzaW5nIERzbDsKK3VzaW5nIHN0YXRpYyBEc2wuX19Tb2NpYWw7CisvLyBlbmQ6OmRzbFVzaW5nW10KK3VzaW5nIEdyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC5Qcm9jZXNzLlRyYXZlcnNhbC5Ecml2ZXJSZW1vdGVDb25uZWN0aW9uOwordXNpbmcgR3JlbWxpbi5OZXQuUHJvY2Vzcy5UcmF2ZXJzYWw7Cit1c2luZyBzdGF0aWMgR3JlbWxpbi5OZXQuUHJvY2Vzcy5UcmF2ZXJzYWwuQW5vbnltb3VzVHJhdmVyc2FsU291cmNlOwordXNpbmcgWHVuaXQ7CisKK25hbWVzcGFjZSBHcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QuRG9jcy5SZWZlcmVuY2UKK3sKKyAgICBwdWJsaWMgY2xhc3MgR3JlbWxpbkFwcGxpY2F0aW9uc0RzbFRlc3RzCisgICAgeworICAgICAgICBwcml2YXRlIHJlYWRvbmx5IFJlbW90ZUNvbm5lY3Rpb25GYWN0b3J5IF9jb25uZWN0aW9uRmFjdG9yeSA9IG5ldyBSZW1vdGVDb25uZWN0aW9uRmFjdG9yeSgpOworCisgICAgICAgIFtGYWN0KFNraXAgPSAiTm8gU2VydmVyIHVuZGVyIGxvY2FsaG9zdCIpXQorICAgICAgICBwdWJsaWMgdm9pZCBEc2xUZXN0KCkKKyAgICAgICAgeworLy8gdGFnOjpkc2xFeGFtcGxlc1tdCit2YXIgY29ubmVjdGlvbiA9IG5ldyBEcml2ZXJSZW1vdGVDb25uZWN0aW9uKG5ldyBHcmVtbGluQ2xpZW50KG5ldyBHcmVtbGluU2VydmVyKCJsb2NhbGhvc3QiLCA4MTgyKSkpOwordmFyIHNvY2lhbCA9IFRyYXZlcnNhbCgpLldpdGhSZW1vdGUoY29ubmVjdGlvbik7CisKK3NvY2lhbC5QZXJzb25zKCJtYXJrbyIpLktub3dzKCJqb3NoIik7Citzb2NpYWwuUGVyc29ucygibWFya28iKS5Zb3VuZ2VzdEZyaWVuZHNBZ2UoKTsKK3NvY2lhbC5QZXJzb25zKCkuRmlsdGVyKENyZWF0ZWRBdExlYXN0KDIpKS5Db3VudCgpOworLy8gZW5kOjpkc2xFeGFtcGxlc1tdCisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFtGYWN0XQorICAgICAgICBwdWJsaWMgdm9pZCBTaG91bGRVc2VEc2woKSAKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGNvbm5lY3Rpb24gPSBfY29ubmVjdGlvbkZhY3RvcnkuQ3JlYXRlUmVtb3RlQ29ubmVjdGlvbigpOworICAgICAgICAgICAgdmFyIHNvY2lhbCA9IEFub255bW91c1RyYXZlcnNhbFNvdXJjZS5UcmF2ZXJzYWwoKS5XaXRoUmVtb3RlKGNvbm5lY3Rpb24pOworCisgICAgICAgICAgICBBc3NlcnQuTm90TnVsbChzb2NpYWwuUGVyc29ucygibWFya28iKS5Lbm93cygiam9zaCIpLk5leHQoKSk7CisgICAgICAgICAgICBBc3NlcnQuRXF1YWwoMjcsIHNvY2lhbC5QZXJzb25zKCJtYXJrbyIpLllvdW5nZXN0RnJpZW5kc0FnZSgpLk5leHQoKSk7CisgICAgICAgICAgICBBc3NlcnQuRXF1YWwoNCwgc29jaWFsLlBlcnNvbnMoKS5Db3VudCgpLk5leHQoKSk7CisgICAgICAgICAgICBBc3NlcnQuRXF1YWwoMiwgc29jaWFsLlBlcnNvbnMoIm1hcmtvIiwgImpvc2giKS5Db3VudCgpLk5leHQoKSk7CisgICAgICAgICAgICBBc3NlcnQuRXF1YWwoMSwgc29jaWFsLlBlcnNvbnMoKS5GaWx0ZXIoX19Tb2NpYWwuQ3JlYXRlZEF0TGVhc3QoMikpLkNvdW50KCkuTmV4dCgpKTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Eb2NzL1JlZmVyZW5jZS9HcmVtbGluVmFyaWFudHNUZXN0cy5jcyBiL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L0RvY3MvUmVmZXJlbmNlL0dyZW1saW5WYXJpYW50c1Rlc3RzLmNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyM2FmYTYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Eb2NzL1JlZmVyZW5jZS9HcmVtbGluVmFyaWFudHNUZXN0cy5jcwpAQCAtMCwwICsxLDExOSBAQAorI3JlZ2lvbiBMaWNlbnNlCisKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2VuZHJlZ2lvbgorCit1c2luZyBTeXN0ZW0uVGhyZWFkaW5nLlRhc2tzOwordXNpbmcgR3JlbWxpbi5OZXQuRHJpdmVyOwordXNpbmcgR3JlbWxpbi5OZXQuRHJpdmVyLlJlbW90ZTsKK3VzaW5nIEdyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC5Qcm9jZXNzLlRyYXZlcnNhbC5Ecml2ZXJSZW1vdGVDb25uZWN0aW9uOwordXNpbmcgR3JlbWxpbi5OZXQuUHJvY2Vzcy5UcmF2ZXJzYWw7Cit1c2luZyBHcmVtbGluLk5ldC5Qcm9jZXNzLlRyYXZlcnNhbC5TdGVwLlV0aWw7Cit1c2luZyBHcmVtbGluLk5ldC5Qcm9jZXNzLlRyYXZlcnNhbC5TdHJhdGVneS5EZWNvcmF0aW9uOwordXNpbmcgR3JlbWxpbi5OZXQuU3RydWN0dXJlLklPLkdyYXBoU09OOwordXNpbmcgWHVuaXQ7CisvLyB0YWc6OmNvbW1vbkltcG9ydHNbXQordXNpbmcgc3RhdGljIEdyZW1saW4uTmV0LlByb2Nlc3MuVHJhdmVyc2FsLkFub255bW91c1RyYXZlcnNhbFNvdXJjZTsKK3VzaW5nIHN0YXRpYyBHcmVtbGluLk5ldC5Qcm9jZXNzLlRyYXZlcnNhbC5fXzsKK3VzaW5nIHN0YXRpYyBHcmVtbGluLk5ldC5Qcm9jZXNzLlRyYXZlcnNhbC5QOwordXNpbmcgc3RhdGljIEdyZW1saW4uTmV0LlByb2Nlc3MuVHJhdmVyc2FsLk9yZGVyOwordXNpbmcgc3RhdGljIEdyZW1saW4uTmV0LlByb2Nlc3MuVHJhdmVyc2FsLk9wZXJhdG9yOwordXNpbmcgc3RhdGljIEdyZW1saW4uTmV0LlByb2Nlc3MuVHJhdmVyc2FsLlBvcDsKK3VzaW5nIHN0YXRpYyBHcmVtbGluLk5ldC5Qcm9jZXNzLlRyYXZlcnNhbC5TY29wZTsKK3VzaW5nIHN0YXRpYyBHcmVtbGluLk5ldC5Qcm9jZXNzLlRyYXZlcnNhbC5UZXh0UDsKK3VzaW5nIHN0YXRpYyBHcmVtbGluLk5ldC5Qcm9jZXNzLlRyYXZlcnNhbC5Db2x1bW47Cit1c2luZyBzdGF0aWMgR3JlbWxpbi5OZXQuUHJvY2Vzcy5UcmF2ZXJzYWwuRGlyZWN0aW9uOwordXNpbmcgc3RhdGljIEdyZW1saW4uTmV0LlByb2Nlc3MuVHJhdmVyc2FsLlQ7CisvLyBlbmQ6OmNvbW1vbkltcG9ydHNbXQorCituYW1lc3BhY2UgR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0LkRvY3MuUmVmZXJlbmNlCit7CisgICAgcHVibGljIGNsYXNzIEdyZW1saW5WYXJpYW50c1Rlc3RzCisgICAgeworICAgICAgICBwcml2YXRlIHJlYWRvbmx5IEdyYXBoVHJhdmVyc2FsU291cmNlIGcgPSBUcmF2ZXJzYWwoKQorICAgICAgICAgICAgLldpdGhSZW1vdGUobmV3IFJlbW90ZUNvbm5lY3Rpb25GYWN0b3J5KCkuQ3JlYXRlUmVtb3RlQ29ubmVjdGlvbigpKTsKKyAgICAgICAgCisgICAgICAgIFtGYWN0KFNraXA9Ik5vIFNlcnZlciB1bmRlciBsb2NhbGhvc3QiKV0KKyAgICAgICAgcHVibGljIHZvaWQgQ29ubmVjdGluZ1Rlc3QoKQorICAgICAgICB7CisvLyB0YWc6OmNvbm5lY3RpbmdbXQordmFyIHJlbW90ZUNvbm5lY3Rpb24gPSBuZXcgRHJpdmVyUmVtb3RlQ29ubmVjdGlvbihuZXcgR3JlbWxpbkNsaWVudChuZXcgR3JlbWxpblNlcnZlcigibG9jYWxob3N0IiwgODE4MikpLCAiZyIpOwordmFyIGcgPSBUcmF2ZXJzYWwoKS5XaXRoUmVtb3RlKHJlbW90ZUNvbm5lY3Rpb24pOworLy8gZW5kOjpjb25uZWN0aW5nW10KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgW0ZhY3QoU2tpcD0iTm8gU2VydmVyIHVuZGVyIGxvY2FsaG9zdCIpXQorICAgICAgICBwdWJsaWMgdm9pZCBTZXJpYWxpemF0aW9uVGVzdCgpCisgICAgICAgIHsKKy8vIHRhZzo6c2VyaWFsaXphdGlvbltdCit2YXIgY2xpZW50ID0gbmV3IEdyZW1saW5DbGllbnQobmV3IEdyZW1saW5TZXJ2ZXIoImxvY2FsaG9zdCIsIDgxODIpLCBuZXcgR3JhcGhTT04yUmVhZGVyKCksCisgICAgbmV3IEdyYXBoU09OMldyaXRlcigpLCBHcmVtbGluQ2xpZW50LkdyYXBoU09OMk1pbWVUeXBlKTsKKy8vIGVuZDo6c2VyaWFsaXphdGlvbltdCisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFtGYWN0KFNraXA9IldlIGNhbid0IGFwcGx5IHN0cmF0ZWdpZXMiKV0KKyAgICAgICAgcHVibGljIHZvaWQgVHJhdmVyc2FsU3RyYXRlZ2llc1Rlc3QoKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgZyA9IHRoaXMuZzsKKy8vIHRhZzo6dHJhdmVyc2FsU3RyYXRlZ2llc1tdCitnID0gZy5XaXRoU3RyYXRlZ2llcyhuZXcgU3ViZ3JhcGhTdHJhdGVneSh2ZXJ0aWNlczogSGFzTGFiZWwoInBlcnNvbiIpLAorICAgIGVkZ2VzOiBIYXMoIndlaWdodCIsIEd0KDAuNSkpKSk7Cit2YXIgbmFtZXMgPSBnLlYoKS5WYWx1ZXM8c3RyaW5nPigibmFtZSIpLlRvTGlzdCgpOyAgLy8gbmFtZXM6IFttYXJrbywgdmFkYXMsIGpvc2gsIHBldGVyXQorCitnID0gZy5XaXRob3V0U3RyYXRlZ2llcyh0eXBlb2YoU3ViZ3JhcGhTdHJhdGVneSkpOworbmFtZXMgPSBnLlYoKS5WYWx1ZXM8c3RyaW5nPigibmFtZSIpLlRvTGlzdCgpOyAvLyBuYW1lczogW21hcmtvLCB2YWRhcywgbG9wLCBqb3NoLCByaXBwbGUsIHBldGVyXQorCit2YXIgZWRnZVZhbHVlTWFwcyA9IGcuVigpLk91dEUoKS5WYWx1ZU1hcDxvYmplY3QsIG9iamVjdD4oKS5XaXRoKFdpdGhPcHRpb25zLlRva2VucykuVG9MaXN0KCk7CisvLyBlZGdlVmFsdWVNYXBzOiBbW2xhYmVsOmNyZWF0ZWQsIGlkOjksIHdlaWdodDowLjRdLCBbbGFiZWw6a25vd3MsIGlkOjcsIHdlaWdodDowLjVdLCBbbGFiZWw6a25vd3MsIGlkOjgsIHdlaWdodDoxLjBdLAorLy8gICAgIFtsYWJlbDpjcmVhdGVkLCBpZDoxMCwgd2VpZ2h0OjEuMF0sIFtsYWJlbDpjcmVhdGVkLCBpZDoxMSwgd2VpZ2h0OjAuNF0sIFtsYWJlbDpjcmVhdGVkLCBpZDoxMiwgd2VpZ2h0OjAuMl1dCisKK2cgPSBnLldpdGhDb21wdXRlcih3b3JrZXJzOiAyLCB2ZXJ0aWNlczogSGFzKCJuYW1lIiwgIm1hcmtvIikpOworbmFtZXMgPSBnLlYoKS5WYWx1ZXM8c3RyaW5nPigibmFtZSIpLlRvTGlzdCgpOyAgLy8gbmFtZXM6IFttYXJrb10KKworZWRnZVZhbHVlTWFwcyA9IGcuVigpLk91dEUoKS5WYWx1ZU1hcDxvYmplY3QsIG9iamVjdD4oKS5XaXRoKFdpdGhPcHRpb25zLlRva2VucykuVG9MaXN0KCk7CisvLyBlZGdlVmFsdWVNYXBzOiBbW2xhYmVsOmNyZWF0ZWQsIGlkOjksIHdlaWdodDowLjRdLCBbbGFiZWw6a25vd3MsIGlkOjcsIHdlaWdodDowLjVdLCBbbGFiZWw6a25vd3MsIGlkOjgsIHdlaWdodDoxLjBdXQorLy8gZW5kOjp0cmF2ZXJzYWxTdHJhdGVnaWVzW10KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgW0ZhY3QoU2tpcD0iTm8gU2VydmVyIHVuZGVyIGxvY2FsaG9zdCIpXQorICAgICAgICBwdWJsaWMgYXN5bmMgVGFzayBTdWJtaXR0aW5nU2NyaXB0c1Rlc3QoKQorICAgICAgICB7CisvLyB0YWc6OnN1Ym1pdHRpbmdTY3JpcHRzW10KK3ZhciBncmVtbGluU2VydmVyID0gbmV3IEdyZW1saW5TZXJ2ZXIoImxvY2FsaG9zdCIsIDgxODIpOwordXNpbmcgKHZhciBncmVtbGluQ2xpZW50ID0gbmV3IEdyZW1saW5DbGllbnQoZ3JlbWxpblNlcnZlcikpCit7CisgICAgdmFyIHJlc3BvbnNlID0KKyAgICAgICAgYXdhaXQgZ3JlbWxpbkNsaWVudC5TdWJtaXRXaXRoU2luZ2xlUmVzdWx0QXN5bmM8c3RyaW5nPigiZy5WKCkuaGFzKCdwZXJzb24nLCduYW1lJywnbWFya28nKSIpOworfQorLy8gZW5kOjpzdWJtaXR0aW5nU2NyaXB0c1tdCisgICAgICAgIH0KKworICAgICAgICBbRmFjdChTa2lwID0gIk5vIFNlcnZlciB1bmRlciBsb2NhbGhvc3QiKV0KKyAgICAgICAgcHVibGljIHZvaWQgU3VibWl0dGluZ1NjcmlwdHNXaXRoQXV0aGVudGljYXRpb25UZXN0KCkKKyAgICAgICAgeworLy8gdGFnOjpzdWJtaXR0aW5nU2NyaXB0c1dpdGhBdXRoZW50aWNhdGlvbltdCit2YXIgdXNlcm5hbWUgPSAidXNlcm5hbWUiOwordmFyIHBhc3N3b3JkID0gInBhc3N3b3JkIjsKK3ZhciBncmVtbGluU2VydmVyID0gbmV3IEdyZW1saW5TZXJ2ZXIoImxvY2FsaG9zdCIsIDgxODIsIHRydWUsIHVzZXJuYW1lLCBwYXNzd29yZCk7CisvLyBlbmQ6OnN1Ym1pdHRpbmdTY3JpcHRzV2l0aEF1dGhlbnRpY2F0aW9uW10KKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Eb2NzL1JlZmVyZW5jZS9JbnRyb1Rlc3RzLmNzIGIvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvRG9jcy9SZWZlcmVuY2UvSW50cm9UZXN0cy5jcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42M2JjNTc2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvRG9jcy9SZWZlcmVuY2UvSW50cm9UZXN0cy5jcwpAQCAtMCwwICsxLDcxIEBACisjcmVnaW9uIExpY2Vuc2UKKworLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjZW5kcmVnaW9uCisKK3VzaW5nIEdyZW1saW4uTmV0LkRyaXZlcjsKK3VzaW5nIEdyZW1saW4uTmV0LkRyaXZlci5SZW1vdGU7Cit1c2luZyBHcmVtbGluLk5ldC5Qcm9jZXNzLlRyYXZlcnNhbDsKKy8vIHRhZzo6dHJhdmVyc2FsU291cmNlVXNpbmdbXQordXNpbmcgc3RhdGljIEdyZW1saW4uTmV0LlByb2Nlc3MuVHJhdmVyc2FsLkFub255bW91c1RyYXZlcnNhbFNvdXJjZTsKKy8vIGVuZDo6dHJhdmVyc2FsU291cmNlVXNpbmdbXQordXNpbmcgWHVuaXQ7Cit1c2luZyBHcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QuUHJvY2Vzcy5UcmF2ZXJzYWwuRHJpdmVyUmVtb3RlQ29ubmVjdGlvbjsKKworbmFtZXNwYWNlIEdyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC5Eb2NzLlJlZmVyZW5jZQoreworICAgIHB1YmxpYyBjbGFzcyBJbnRyb1Rlc3RzCisgICAgeworICAgICAgICBwcml2YXRlIHJlYWRvbmx5IEdyYXBoVHJhdmVyc2FsU291cmNlIGcgPSBUcmF2ZXJzYWwoKQorICAgICAgICAgICAgLldpdGhSZW1vdGUobmV3IFJlbW90ZUNvbm5lY3Rpb25GYWN0b3J5KCkuQ3JlYXRlUmVtb3RlQ29ubmVjdGlvbigpKTsKKworICAgICAgICBbRmFjdChTa2lwPSJObyBTZXJ2ZXIgdW5kZXIgbG9jYWxob3N0IildCisgICAgICAgIHB1YmxpYyB2b2lkIFRyYXZlcnNhbFNvdXJjZUNyZWF0aW9uVGVzdCgpCisgICAgICAgIHsKKy8vIHRhZzo6dHJhdmVyc2FsU291cmNlQ3JlYXRpb25bXQordmFyIGcgPSBUcmF2ZXJzYWwoKS5XaXRoUmVtb3RlKAorICAgIG5ldyBEcml2ZXJSZW1vdGVDb25uZWN0aW9uKG5ldyBHcmVtbGluQ2xpZW50KG5ldyBHcmVtbGluU2VydmVyKCJsb2NhbGhvc3QiLCA4MTgyKSkpKTsKKy8vIGVuZDo6dHJhdmVyc2FsU291cmNlQ3JlYXRpb25bXQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBbRmFjdChTa2lwPSJHcmFwaCBtYW5pcHVsYXRpb24gd291bGQgYnJlYWsgb3RoZXIgdGVzdHMiKV0KKyAgICAgICAgcHVibGljIHZvaWQgQmFzaWNHcmVtbGluQWRkc1Rlc3QoKQorICAgICAgICB7CisvLyB0YWc6OmJhc2ljR3JlbWxpbkFkZHNbXQordmFyIHYxID0gZy5BZGRWKCJwZXJzb24iKS5Qcm9wZXJ0eSgibmFtZSIsICJtYXJrbyIpLk5leHQoKTsKK3ZhciB2MiA9IGcuQWRkVigicGVyc29uIikuUHJvcGVydHkoIm5hbWUiLCAic3RlcGhlbiIpLk5leHQoKTsKK2cuVih2MSkuQWRkRSgia25vd3MiKS5Ubyh2MikuUHJvcGVydHkoIndlaWdodCIsIDAuNzUpLkl0ZXJhdGUoKTsKKy8vIGVuZDo6YmFzaWNHcmVtbGluQWRkc1tdCisgICAgICAgIH0KKworICAgICAgICBbRmFjdF0KKyAgICAgICAgcHVibGljIHZvaWQgQmFzaWNHcmVtbGluTWFya29Lbm93c1Rlc3QoKQorICAgICAgICB7CisvLyB0YWc6OmJhc2ljR3JlbWxpbk1hcmtvS25vd3NbXQordmFyIG1hcmtvID0gZy5WKCkuSGFzKCJwZXJzb24iLCAibmFtZSIsICJtYXJrbyIpLk5leHQoKTsKK3ZhciBwZW9wbGVNYXJrb0tub3dzID0gZy5WKCkuSGFzKCJwZXJzb24iLCAibmFtZSIsICJtYXJrbyIpLk91dCgia25vd3MiKS5Ub0xpc3QoKTsKKy8vIGVuZDo6YmFzaWNHcmVtbGluTWFya29Lbm93c1tdCisKKyAgICAgICAgICAgIEFzc2VydC5FcXVhbCgicGVyc29uIiwgbWFya28uTGFiZWwpOworICAgICAgICAgICAgQXNzZXJ0LkVxdWFsKDIsIHBlb3BsZU1hcmtvS25vd3MuQ291bnQpOworICAgICAgICB9CisgICAgfQorfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L0RyaXZlci9Db25uZWN0aW9uUG9vbFRlc3RzLmNzIGIvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvRHJpdmVyL0Nvbm5lY3Rpb25Qb29sVGVzdHMuY3MKaW5kZXggMjFhMjYyNy4uYzRmNWY3YyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvRHJpdmVyL0Nvbm5lY3Rpb25Qb29sVGVzdHMuY3MKKysrIGIvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvRHJpdmVyL0Nvbm5lY3Rpb25Qb29sVGVzdHMuY3MKQEAgLTI1LDYgKzI1LDcgQEAKIHVzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOwogdXNpbmcgU3lzdGVtLlRocmVhZGluZy5UYXNrczsKIHVzaW5nIEdyZW1saW4uTmV0LkRyaXZlcjsKK3VzaW5nIEdyZW1saW4uTmV0LkRyaXZlci5FeGNlcHRpb25zOwogdXNpbmcgR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0LlV0aWw7CiB1c2luZyBYdW5pdDsKIApAQCAtMzksNTIgKzQwLDUyIEBACiAgICAgICAgIHByaXZhdGUgYXN5bmMgVGFzayBFeGVjdXRlTXVsdGlwbGVMb25nUnVubmluZ1JlcXVlc3RzSW5QYXJhbGxlbChJR3JlbWxpbkNsaWVudCBncmVtbGluQ2xpZW50LCBpbnQgbnJSZXF1ZXN0cywKICAgICAgICAgICAgIGludCByZXF1ZXN0UnVubmluZ1RpbWVJbk1zKQogICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgbG9uZ1J1bm5pbmdSZXF1ZXN0TXNnID0gX3JlcXVlc3RNZXNzYWdlUHJvdmlkZXIuR2V0U2xlZXBNZXNzYWdlKHJlcXVlc3RSdW5uaW5nVGltZUluTXMpOwogICAgICAgICAgICAgdmFyIHRhc2tzID0gbmV3IExpc3Q8VGFzaz4obnJSZXF1ZXN0cyk7CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5yUmVxdWVzdHM7IGkrKykKLSAgICAgICAgICAgICAgICB0YXNrcy5BZGQoZ3JlbWxpbkNsaWVudC5TdWJtaXRBc3luYyhsb25nUnVubmluZ1JlcXVlc3RNc2cpKTsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0YXNrcy5BZGQoZ3JlbWxpbkNsaWVudC5TdWJtaXRBc3luYyhfcmVxdWVzdE1lc3NhZ2VQcm92aWRlci5HZXRTbGVlcE1lc3NhZ2UocmVxdWVzdFJ1bm5pbmdUaW1lSW5NcykpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGF3YWl0IFRhc2suV2hlbkFsbCh0YXNrcyk7CiAgICAgICAgIH0KIAotICAgICAgICBbRmFjdF0KLSAgICAgICAgcHVibGljIGFzeW5jIFRhc2sgU2hvdWxkUmV1c2VDb25uZWN0aW9uRm9yU2VxdWVudGlhbFJlcXVlc3RzKCkKKyAgICAgICAgW1RoZW9yeV0KKyAgICAgICAgW0lubGluZURhdGEoMSldCisgICAgICAgIFtJbmxpbmVEYXRhKDIpXQorICAgICAgICBbSW5saW5lRGF0YSg4KV0KKyAgICAgICAgcHVibGljIHZvaWQgU2hvdWxkQ3JlYXRlQ29uZmlndXJlZE5yQ29ubmVjdGlvbnMoaW50IGNvbm5lY3Rpb25Qb29sU2l6ZSkKICAgICAgICAgewotICAgICAgICAgICAgdmFyIGdyZW1saW5TZXJ2ZXIgPSBuZXcgR3JlbWxpblNlcnZlcihUZXN0SG9zdCwgVGVzdFBvcnQpOwotICAgICAgICAgICAgdXNpbmcgKHZhciBncmVtbGluQ2xpZW50ID0gbmV3IEdyZW1saW5DbGllbnQoZ3JlbWxpblNlcnZlcikpCisgICAgICAgICAgICB1c2luZyAodmFyIGdyZW1saW5DbGllbnQgPSBDcmVhdGVHcmVtbGluQ2xpZW50KGNvbm5lY3Rpb25Qb29sU2l6ZSkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYXdhaXQgZ3JlbWxpbkNsaWVudC5TdWJtaXRBc3luYygiIik7Ci0gICAgICAgICAgICAgICAgYXdhaXQgZ3JlbWxpbkNsaWVudC5TdWJtaXRBc3luYygiIik7Ci0KICAgICAgICAgICAgICAgICB2YXIgbnJDb25uZWN0aW9ucyA9IGdyZW1saW5DbGllbnQuTnJDb25uZWN0aW9uczsKLSAgICAgICAgICAgICAgICBBc3NlcnQuRXF1YWwoMSwgbnJDb25uZWN0aW9ucyk7CisgICAgICAgICAgICAgICAgQXNzZXJ0LkVxdWFsKGNvbm5lY3Rpb25Qb29sU2l6ZSwgbnJDb25uZWN0aW9ucyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBbRmFjdF0KLSAgICAgICAgcHVibGljIHZvaWQgU2hvdWxkT25seUNyZWF0ZUNvbm5lY3Rpb25XaGVuTmVjZXNzYXJ5KCkKKyAgICAgICAgcHVibGljIGFzeW5jIFRhc2sgU2hvdWxkVGhyb3dDb25uZWN0aW9uUG9vbEJ1c3lFeGNlcHRpb25XaGVuUG9vbElzQnVzeSgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHZhciBncmVtbGluU2VydmVyID0gbmV3IEdyZW1saW5TZXJ2ZXIoVGVzdEhvc3QsIFRlc3RQb3J0KTsKLSAgICAgICAgICAgIHVzaW5nICh2YXIgZ3JlbWxpbkNsaWVudCA9IG5ldyBHcmVtbGluQ2xpZW50KGdyZW1saW5TZXJ2ZXIpKQorICAgICAgICAgICAgY29uc3QgaW50IG5yUGFyYWxsZWxSZXF1ZXN0cyA9IDI7CisgICAgICAgICAgICB1c2luZyAodmFyIGdyZW1saW5DbGllbnQgPSBDcmVhdGVHcmVtbGluQ2xpZW50KGNvbm5lY3Rpb25Qb29sU2l6ZTogMSwgbWF4SW5Qcm9jZXNzUGVyQ29ubmVjdGlvbjogMSkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdmFyIG5yQ29ubmVjdGlvbnMgPSBncmVtbGluQ2xpZW50Lk5yQ29ubmVjdGlvbnM7Ci0gICAgICAgICAgICAgICAgQXNzZXJ0LkVxdWFsKDAsIG5yQ29ubmVjdGlvbnMpOworICAgICAgICAgICAgICAgIGNvbnN0IGludCBzbGVlcFRpbWUgPSAxMDA7CisKKyAgICAgICAgICAgICAgICB2YXIgdGhyb3duRXhjZXB0aW9uID0gYXdhaXQgQXNzZXJ0LlRocm93c0FzeW5jPENvbm5lY3Rpb25Qb29sQnVzeUV4Y2VwdGlvbj4oKCkgPT4KKyAgICAgICAgICAgICAgICAgICAgRXhlY3V0ZU11bHRpcGxlTG9uZ1J1bm5pbmdSZXF1ZXN0c0luUGFyYWxsZWwoZ3JlbWxpbkNsaWVudCwgbnJQYXJhbGxlbFJlcXVlc3RzLCBzbGVlcFRpbWUpKTsKKyAgICAgICAgICAgICAgICBBc3NlcnQuQ29udGFpbnMobmFtZW9mKENvbm5lY3Rpb25Qb29sU2V0dGluZ3MuTWF4SW5Qcm9jZXNzUGVyQ29ubmVjdGlvbiksIHRocm93bkV4Y2VwdGlvbi5NZXNzYWdlKTsKKyAgICAgICAgICAgICAgICBBc3NlcnQuQ29udGFpbnMobmFtZW9mKENvbm5lY3Rpb25Qb29sU2V0dGluZ3MuUG9vbFNpemUpLCB0aHJvd25FeGNlcHRpb24uTWVzc2FnZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBbRmFjdF0KLSAgICAgICAgcHVibGljIGFzeW5jIFRhc2sgU2hvdWxkRXhlY3V0ZVBhcmFsbGVsUmVxdWVzdHNPbkRpZmZlcmVudENvbm5lY3Rpb25zKCkKKyAgICAgICAgcHJpdmF0ZSBzdGF0aWMgR3JlbWxpbkNsaWVudCBDcmVhdGVHcmVtbGluQ2xpZW50KGludCBjb25uZWN0aW9uUG9vbFNpemUgPSAyLCBpbnQgbWF4SW5Qcm9jZXNzUGVyQ29ubmVjdGlvbiA9IDQpCiAgICAgICAgIHsKICAgICAgICAgICAgIHZhciBncmVtbGluU2VydmVyID0gbmV3IEdyZW1saW5TZXJ2ZXIoVGVzdEhvc3QsIFRlc3RQb3J0KTsKLSAgICAgICAgICAgIHVzaW5nICh2YXIgZ3JlbWxpbkNsaWVudCA9IG5ldyBHcmVtbGluQ2xpZW50KGdyZW1saW5TZXJ2ZXIpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHZhciBzbGVlcFRpbWUgPSA1MDsKLSAgICAgICAgICAgICAgICB2YXIgbnJQYXJhbGxlbFJlcXVlc3RzID0gNTsKLQotICAgICAgICAgICAgICAgIGF3YWl0IEV4ZWN1dGVNdWx0aXBsZUxvbmdSdW5uaW5nUmVxdWVzdHNJblBhcmFsbGVsKGdyZW1saW5DbGllbnQsIG5yUGFyYWxsZWxSZXF1ZXN0cywgc2xlZXBUaW1lKTsKLQotICAgICAgICAgICAgICAgIHZhciBuckNvbm5lY3Rpb25zID0gZ3JlbWxpbkNsaWVudC5OckNvbm5lY3Rpb25zOwotICAgICAgICAgICAgICAgIEFzc2VydC5FcXVhbChuclBhcmFsbGVsUmVxdWVzdHMsIG5yQ29ubmVjdGlvbnMpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG5ldyBHcmVtbGluQ2xpZW50KGdyZW1saW5TZXJ2ZXIsCisgICAgICAgICAgICAgICAgY29ubmVjdGlvblBvb2xTZXR0aW5nczogbmV3IENvbm5lY3Rpb25Qb29sU2V0dGluZ3MKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIFBvb2xTaXplID0gY29ubmVjdGlvblBvb2xTaXplLAorICAgICAgICAgICAgICAgICAgICBNYXhJblByb2Nlc3NQZXJDb25uZWN0aW9uID0gbWF4SW5Qcm9jZXNzUGVyQ29ubmVjdGlvbgorICAgICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAgfQogfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L0RyaXZlci9HcmVtbGluQ2xpZW50VGVzdHMuY3MgYi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Ecml2ZXIvR3JlbWxpbkNsaWVudFRlc3RzLmNzCmluZGV4IDMyMWRkOGUuLmUyYzZlZjYgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L0RyaXZlci9HcmVtbGluQ2xpZW50VGVzdHMuY3MKKysrIGIvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvRHJpdmVyL0dyZW1saW5DbGllbnRUZXN0cy5jcwpAQCAtMTk4LDYgKzE5OCwyMiBAQAogICAgICAgICB9CiAKICAgICAgICAgW0ZhY3RdCisgICAgICAgIHB1YmxpYyBhc3luYyBUYXNrIFNob3VsZFJldHVyblJlc3BvbnNlQXR0cmlidXRlcygpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBncmVtbGluU2VydmVyID0gbmV3IEdyZW1saW5TZXJ2ZXIoVGVzdEhvc3QsIFRlc3RQb3J0KTsKKyAgICAgICAgICAgIHVzaW5nICh2YXIgZ3JlbWxpbkNsaWVudCA9IG5ldyBHcmVtbGluQ2xpZW50KGdyZW1saW5TZXJ2ZXIpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciByZXF1ZXN0TXNnID0gX3JlcXVlc3RNZXNzYWdlUHJvdmlkZXIuR2V0RHVtbXlNZXNzYWdlKCk7CisgICAgICAgICAgICAgICAgdmFyIHJlc3VsdFNldCA9IGF3YWl0IGdyZW1saW5DbGllbnQuU3VibWl0QXN5bmM8aW50PihyZXF1ZXN0TXNnKTsKKworICAgICAgICAgICAgICAgIEFzc2VydC5Ob3ROdWxsKHJlc3VsdFNldC5TdGF0dXNBdHRyaWJ1dGVzKTsKKworICAgICAgICAgICAgICAgIHZhciB2YWx1ZXM9IHJlc3VsdFNldC5TdGF0dXNBdHRyaWJ1dGVzWyJAdmFsdWUiXSBhcyBKQXJyYXk7CisgICAgICAgICAgICAgICAgQXNzZXJ0LlRydWUodmFsdWVzLkZpcnN0LlRvU3RyaW5nKCkuRXF1YWxzKCJob3N0IikpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgW0ZhY3RdCiAgICAgICAgIHB1YmxpYyBhc3luYyBUYXNrIFNob3VsZFRocm93T25FeGVjdXRpb25PZlNpbXBsZUludmFsaWRTY3JpcHQoKQogICAgICAgICB7CiAgICAgICAgICAgICB2YXIgZ3JlbWxpblNlcnZlciA9IG5ldyBHcmVtbGluU2VydmVyKFRlc3RIb3N0LCBUZXN0UG9ydCk7CkBAIC0yOTIsNCArMzA4LDQgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9HaGVya2luL0NvbW1vblN0ZXBzLmNzIGIvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvR2hlcmtpbi9Db21tb25TdGVwcy5jcwppbmRleCA5Njg1MWQyLi5kNGIyYWFiIDEwMDY0NAotLS0gYS9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9HaGVya2luL0NvbW1vblN0ZXBzLmNzCisrKyBiL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L0doZXJraW4vQ29tbW9uU3RlcHMuY3MKQEAgLTUxLDYgKzUxLDcgQEAKICAgICAgICAgICAgIG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgRnVuYzxzdHJpbmcsIHN0cmluZywgb2JqZWN0Pj4KICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICB7QCJkXFsoW1xkLl0rKVxdXC4oW2lsZmRtXSkiLCBUb051bWJlcn0sCisgICAgICAgICAgICAgICAge0AiRFxbKC4rKVxdIiwgVG9EaXJlY3Rpb259LAogICAgICAgICAgICAgICAgIHtAInZcWyguKylcXSIsIFRvVmVydGV4fSwKICAgICAgICAgICAgICAgICB7QCJ2XFsoLispXF1cLmlkIiwgKHgsIGdyYXBoTmFtZSkgPT4gVG9WZXJ0ZXgoeCwgZ3JhcGhOYW1lKS5JZH0sCiAgICAgICAgICAgICAgICAge0AidlxbKC4rKVxdXC5zaWQiLCAoeCwgZ3JhcGhOYW1lKSA9PiBUb1ZlcnRleCh4LCBncmFwaE5hbWUpLklkLlRvU3RyaW5nKCl9LApAQCAtOTAsNyArOTEsNyBAQAogICAgICAgICBbR2l2ZW4oInVzaW5nIHRoZSBwYXJhbWV0ZXIgKFxcdyspIGRlZmluZWQgYXMgXCIoLiopXCIiKV0KICAgICAgICAgcHVibGljIHZvaWQgVXNpbmdQYXJhbWV0ZXIoc3RyaW5nIG5hbWUsIHN0cmluZyB2YWx1ZSkKICAgICAgICAgewotICAgICAgICAgICAgdmFyIHBhcnNlZFZhbHVlID0gUGFyc2VWYWx1ZSh2YWx1ZSwgX2dyYXBoTmFtZSk7CisgICAgICAgICAgICB2YXIgcGFyc2VkVmFsdWUgPSBQYXJzZVZhbHVlKHZhbHVlLlJlcGxhY2UoIlxcXCIiLCAiXCIiKSwgX2dyYXBoTmFtZSk7CiAgICAgICAgICAgICBfcGFyYW1ldGVycy5BZGQobmFtZSwgcGFyc2VkVmFsdWUpOwogICAgICAgICB9CiAKQEAgLTI0NCw2ICsyNDUsMTEgQEAKICAgICAgICAgICAgIHJldHVybiBULkdldEJ5VmFsdWUoZW51bU5hbWUpOwogICAgICAgICB9CiAKKyAgICAgICAgcHJpdmF0ZSBzdGF0aWMgb2JqZWN0IFRvRGlyZWN0aW9uKHN0cmluZyBlbnVtTmFtZSwgc3RyaW5nIGdyYXBoTmFtZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIERpcmVjdGlvbi5HZXRCeVZhbHVlKGVudW1OYW1lKTsKKyAgICAgICAgfQorCiAgICAgICAgIHByaXZhdGUgc3RhdGljIG9iamVjdCBUb051bWJlcihzdHJpbmcgc3RyaW5nTnVtYmVyLCBzdHJpbmcgZ3JhcGhOYW1lKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gTnVtZXJpY1BhcnNlcnNbc3RyaW5nTnVtYmVyW3N0cmluZ051bWJlci5MZW5ndGggLSAxXV0oCkBAIC0zMDYsOCArMzEyLDYgQEAKIAogICAgICAgICBwcml2YXRlIHN0YXRpYyBvYmplY3QgUGFyc2VWYWx1ZShzdHJpbmcgc3RyaW5nVmFsdWUsIHN0cmluZyBncmFwaE5hbWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIFBhcnNlciBpc3N1ZTogcXVvdGVzIGFyZSBub3Qgbm9ybWFsaXplZAotICAgICAgICAgICAgc3RyaW5nVmFsdWUgPSBzdHJpbmdWYWx1ZS5SZXBsYWNlKCJcXFwiIiwgIlwiIik7CiAgICAgICAgICAgICBGdW5jPHN0cmluZywgc3RyaW5nLCBvYmplY3Q+IHBhcnNlciA9IG51bGw7CiAgICAgICAgICAgICBzdHJpbmcgZXh0cmFjdGVkVmFsdWUgPSBudWxsOwogICAgICAgICAgICAgZm9yZWFjaCAodmFyIGt2IGluIFBhcnNlcnMpCmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9HaGVya2luL0doZXJraW5UZXN0UnVubmVyLmNzIGIvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvR2hlcmtpbi9HaGVya2luVGVzdFJ1bm5lci5jcwppbmRleCAyMDUyYTNmLi41OWZkMTFlIDEwMDY0NAotLS0gYS9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9HaGVya2luL0doZXJraW5UZXN0UnVubmVyLmNzCisrKyBiL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L0doZXJraW4vR2hlcmtpblRlc3RSdW5uZXIuY3MKQEAgLTQxLDcgKzQxLDcgQEAKICAgICAgICAgICAgIG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgSWdub3JlUmVhc29uPgogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIC8vIEFkZCBoZXJlIHRoZSBuYW1lIG9mIHNjZW5hcmlvcyB0byBpZ25vcmUgYW5kIHRoZSByZWFzb24sIGUuZy46Ci0gICAgICAgICAgICAgICAgLy8geyAiZ19WX3BlZXJQcmVzc3VyZV9ieVhjbHVzdGVyWF9ieVhvdXRFWGtub3dzWFhfcGFnZVJhbmtYMVhfYnlYcmFua1hfYnlYb3V0RVhrbm93c1hYX3RpbWVzWDJYX2dyb3VwX2J5WGNsdXN0ZXJYX2J5WHJhbmtfc3VtWF9saW1pdFgxMDBYIiwgSWdub3JlUmVhc29uLk5vUmVhc29uIH0sCisgICAgICAgICAgICAgICAgLy97ICJnX1ZfcHJvcGVydGllc19wcm9wZXJ0aWVzWHN0YXJ0VGltZVhfZHJvcCIsIElnbm9yZVJlYXNvbi5Ob1JlYXNvbiB9LAogICAgICAgICAgICAgfTsKICAgICAgICAgCiAgICAgICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIEtleXdvcmRzCkBAIC0zODIsNCArMzgyLDQgQEAKICAgICAgICAgICAgIHJldHVybiByb290RGlyLkZ1bGxOYW1lOwogICAgICAgICB9CiAgICAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L0doZXJraW4vVHJhdmVyc2FsRXZhbHVhdGlvbi9JT1BhcmFtZXRlci5jcyBiL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L0doZXJraW4vVHJhdmVyc2FsRXZhbHVhdGlvbi9JT1BhcmFtZXRlci5jcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTNlNTg5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvR2hlcmtpbi9UcmF2ZXJzYWxFdmFsdWF0aW9uL0lPUGFyYW1ldGVyLmNzCkBAIC0wLDAgKzEsODIgQEAKK++7vyNyZWdpb24gTGljZW5zZQorCisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNlbmRyZWdpb24KKwordXNpbmcgU3lzdGVtOwordXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7Cit1c2luZyBTeXN0ZW0uRHluYW1pYzsKK3VzaW5nIFN5c3RlbS5MaW5xOwordXNpbmcgU3lzdGVtLlJlZmxlY3Rpb247Cit1c2luZyBHcmVtbGluLk5ldC5Qcm9jZXNzLlRyYXZlcnNhbDsKKworbmFtZXNwYWNlIEdyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC5HaGVya2luLlRyYXZlcnNhbEV2YWx1YXRpb24KK3sKKyAgICAvLy8gPHN1bW1hcnk+CisgICAgLy8vIFJlcHJlc2VudHMgYSBwYXJhbWV0ZXIgZm9yIHRoZSBpbygpIHN0ZXAgLSAoZS5nLiBJTy5ncmFwaG1sKQorICAgIC8vLyA8L3N1bW1hcnk+CisgICAgaW50ZXJuYWwgY2xhc3MgSU9QYXJhbWV0ZXIgOiBJVG9rZW5QYXJhbWV0ZXIsIElFcXVhdGFibGU8SU9QYXJhbWV0ZXI+CisgICAgeworICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHN0cmluZyBfdGV4dDsKKyAgICAgICAgcHJpdmF0ZSByZWFkb25seSBzdHJpbmcgX3ZhbHVlOworICAgICAgICAKKyAgICAgICAgcHVibGljIElPUGFyYW1ldGVyKHN0cmluZyB0ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBfdGV4dCA9IHRleHQ7CisgICAgICAgICAgICB2YXIgc2VwYXJhdG9ySW5kZXggPSB0ZXh0LkluZGV4T2YoJy4nKTsKKyAgICAgICAgICAgIF92YWx1ZSA9IHRleHQuU3Vic3RyaW5nKHNlcGFyYXRvckluZGV4ICsgMSk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgYm9vbCBFcXVhbHMoSU9QYXJhbWV0ZXIgb3RoZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBfdGV4dCA9PSBvdGhlci5fdGV4dDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBvdmVycmlkZSBib29sIEVxdWFscyhvYmplY3Qgb2JqKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoUmVmZXJlbmNlRXF1YWxzKG51bGwsIG9iaikpIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmIChSZWZlcmVuY2VFcXVhbHModGhpcywgb2JqKSkgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBpZiAob2JqLkdldFR5cGUoKSAhPSBHZXRUeXBlKCkpIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiBFcXVhbHMoKElPUGFyYW1ldGVyKSBvYmopOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIG92ZXJyaWRlIGludCBHZXRIYXNoQ29kZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBfdGV4dC5HZXRIYXNoQ29kZSgpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIG9iamVjdCBHZXRWYWx1ZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBmaWVsZCA9IHR5cGVvZihJTykuR2V0RmllbGQoX3ZhbHVlLCBCaW5kaW5nRmxhZ3MuU3RhdGljIHwgQmluZGluZ0ZsYWdzLlB1YmxpYyk7CisgICAgICAgICAgICByZXR1cm4gZmllbGQuR2V0VmFsdWUobnVsbCk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBTZXRDb250ZXh0UGFyYW1ldGVyVmFsdWVzKElEaWN0aW9uYXJ5PHN0cmluZywgb2JqZWN0PiBwYXJhbWV0ZXJWYWx1ZXMpCisgICAgICAgIHsKKworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIFR5cGUgR2V0UGFyYW1ldGVyVHlwZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB0eXBlb2YoU3RyaW5nKTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9HaGVya2luL1RyYXZlcnNhbEV2YWx1YXRpb24vTW9kZXJuR3JhcGhUeXBlSW5mb3JtYXRpb24uY3MgYi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9HaGVya2luL1RyYXZlcnNhbEV2YWx1YXRpb24vTW9kZXJuR3JhcGhUeXBlSW5mb3JtYXRpb24uY3MKaW5kZXggNzdlZDRlYi4uZDc3ZWM1ZSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvR2hlcmtpbi9UcmF2ZXJzYWxFdmFsdWF0aW9uL01vZGVybkdyYXBoVHlwZUluZm9ybWF0aW9uLmNzCisrKyBiL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L0doZXJraW4vVHJhdmVyc2FsRXZhbHVhdGlvbi9Nb2Rlcm5HcmFwaFR5cGVJbmZvcm1hdGlvbi5jcwpAQCAtNjEsNiArNjEsNyBAQAogICAgICAgICAgICAgc3dpdGNoIChtZXRob2QuTmFtZSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBjYXNlIG5hbWVvZihHcmFwaFRyYXZlcnNhbDxvYmplY3Qsb2JqZWN0Pi5Qcm9wZXJ0aWVzKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZihvYmplY3QpOwogICAgICAgICAgICAgICAgIGNhc2UgbmFtZW9mKEdyYXBoVHJhdmVyc2FsPG9iamVjdCxvYmplY3Q+LlZhbHVlcykgd2hlbiBwYXJhbWV0ZXJWYWx1ZXMuTGVuZ3RoID09IDE6CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBwYXJhbWV0ZXIgY29udGFpbnMgdGhlIGVsZW1lbnQgcHJvcGVydHkgbmFtZXMKICAgICAgICAgICAgICAgICAgICAgdmFyIHByb3BlcnRpZXMgPSAoKElFbnVtZXJhYmxlKSBwYXJhbWV0ZXJWYWx1ZXNbcGFyYW1ldGVyVmFsdWVzLkxlbmd0aCAtIDFdKS5DYXN0PHN0cmluZz4oKTsKZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L0doZXJraW4vVHJhdmVyc2FsRXZhbHVhdGlvbi9UZXh0UFBhcmFtZXRlci5jcyBiL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L0doZXJraW4vVHJhdmVyc2FsRXZhbHVhdGlvbi9UZXh0UFBhcmFtZXRlci5jcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOThjZDc0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvR2hlcmtpbi9UcmF2ZXJzYWxFdmFsdWF0aW9uL1RleHRQUGFyYW1ldGVyLmNzCkBAIC0wLDAgKzEsOTcgQEAKK++7vyNyZWdpb24gTGljZW5zZQorCisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNlbmRyZWdpb24KKwordXNpbmcgU3lzdGVtOwordXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7Cit1c2luZyBTeXN0ZW0uRHluYW1pYzsKK3VzaW5nIFN5c3RlbS5MaW5xOwordXNpbmcgU3lzdGVtLlJlZmxlY3Rpb247Cit1c2luZyBHcmVtbGluLk5ldC5Qcm9jZXNzLlRyYXZlcnNhbDsKKworbmFtZXNwYWNlIEdyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC5HaGVya2luLlRyYXZlcnNhbEV2YWx1YXRpb24KK3sKKyAgICAvLy8gPHN1bW1hcnk+CisgICAgLy8vIFJlcHJlc2VudHMgYSBwYXJhbWV0ZXIgZm9yIGEgdHJhdmVyc2FsIHByZWRpY2F0ZSAoaWU6IFRleHRQLmNvbnRhaW5pbmcoKSkKKyAgICAvLy8gPC9zdW1tYXJ5PgorICAgIGludGVybmFsIGNsYXNzIFRleHRQUGFyYW1ldGVyIDogSVRva2VuUGFyYW1ldGVyLCBJRXF1YXRhYmxlPFRleHRQUGFyYW1ldGVyPgorICAgIHsKKyAgICAgICAgcHJpdmF0ZSBJRGljdGlvbmFyeTxzdHJpbmcsIG9iamVjdD4gX2NvbnRleHRQYXJhbWV0ZXJWYWx1ZXM7CisgICAgICAgIHB1YmxpYyBJTGlzdDxUb2tlbj4gVG9rZW5zIHsgZ2V0OyB9CisgICAgICAgIAorICAgICAgICBwdWJsaWMgVGV4dFBQYXJhbWV0ZXIoSUxpc3Q8VG9rZW4+IHRva2VucykKKyAgICAgICAgeworICAgICAgICAgICAgVG9rZW5zID0gdG9rZW5zOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGJvb2wgRXF1YWxzKFRleHRQUGFyYW1ldGVyIG90aGVyKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gVG9rZW5zLlNlcXVlbmNlRXF1YWwob3RoZXIuVG9rZW5zKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBvdmVycmlkZSBib29sIEVxdWFscyhvYmplY3Qgb2JqKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoUmVmZXJlbmNlRXF1YWxzKG51bGwsIG9iaikpIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmIChSZWZlcmVuY2VFcXVhbHModGhpcywgb2JqKSkgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBpZiAob2JqLkdldFR5cGUoKSAhPSBHZXRUeXBlKCkpIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiBFcXVhbHMoKFRleHRQUGFyYW1ldGVyKSBvYmopOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIG92ZXJyaWRlIGludCBHZXRIYXNoQ29kZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBUb2tlbnMgIT0gbnVsbCA/IFRva2Vucy5HZXRIYXNoQ29kZSgpIDogMDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBvYmplY3QgR2V0VmFsdWUoKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgdHlwZSA9IHR5cGVvZihUZXh0UCk7CisgICAgICAgICAgICBvYmplY3QgaW5zdGFuY2UgPSBudWxsOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBUb2tlbnMuQ291bnQ7IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgdG9rZW4gPSBUb2tlbnNbaV07CisgICAgICAgICAgICAgICAgdG9rZW4uU2V0Q29udGV4dFBhcmFtZXRlclZhbHVlcyhfY29udGV4dFBhcmFtZXRlclZhbHVlcyk7CisgICAgICAgICAgICAgICAgdmFyIG1ldGhvZCA9IHR5cGUuR2V0TWV0aG9kKFRyYXZlcnNhbFBhcnNlci5HZXRDc2hhcnBOYW1lKHRva2VuLk5hbWUpLAorICAgICAgICAgICAgICAgICAgICBCaW5kaW5nRmxhZ3MuU3RhdGljIHwgQmluZGluZ0ZsYWdzLkluc3RhbmNlIHwgQmluZGluZ0ZsYWdzLlB1YmxpYyk7CisgICAgICAgICAgICAgICAgaWYgKG1ldGhvZCA9PSBudWxsKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24oJCJQcmVkaWNhdGUgKFRleHRQKSBtZXRob2QgJ3t0b2tlbn0nIG5vdCBmb3VuZCBmb3IgdGVzdGluZyIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB2YXIgcGFyYW1ldGVycyA9IG1ldGhvZC5Jc1N0YXRpYworICAgICAgICAgICAgICAgICAgICA/IG5ldyBvYmplY3RbXSB7dG9rZW4uUGFyYW1ldGVycy5TZWxlY3QocCA9PiBwLkdldFZhbHVlKCkuVG9TdHJpbmcoKSkuRmlyc3QoKX0KKyAgICAgICAgICAgICAgICAgICAgOiB0b2tlbi5QYXJhbWV0ZXJzLlNlbGVjdChwID0+IHAuR2V0VmFsdWUoKSkuVG9BcnJheSgpOworICAgICAgICAgICAgICAgIGluc3RhbmNlID0gbWV0aG9kLkludm9rZShpbnN0YW5jZSwgcGFyYW1ldGVycyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gaW5zdGFuY2U7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgVHlwZSBHZXRQYXJhbWV0ZXJUeXBlKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHR5cGVvZihUZXh0UCk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBTZXRDb250ZXh0UGFyYW1ldGVyVmFsdWVzKElEaWN0aW9uYXJ5PHN0cmluZywgb2JqZWN0PiBwYXJhbWV0ZXJWYWx1ZXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIF9jb250ZXh0UGFyYW1ldGVyVmFsdWVzID0gcGFyYW1ldGVyVmFsdWVzOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L0doZXJraW4vVHJhdmVyc2FsRXZhbHVhdGlvbi9UcmF2ZXJzYWxFdmFsdWF0aW9uVGVzdHMuY3MgYi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9HaGVya2luL1RyYXZlcnNhbEV2YWx1YXRpb24vVHJhdmVyc2FsRXZhbHVhdGlvblRlc3RzLmNzCmluZGV4IGNiMWJlMGIuLjhlNzI1ZTUgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L0doZXJraW4vVHJhdmVyc2FsRXZhbHVhdGlvbi9UcmF2ZXJzYWxFdmFsdWF0aW9uVGVzdHMuY3MKKysrIGIvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvR2hlcmtpbi9UcmF2ZXJzYWxFdmFsdWF0aW9uL1RyYXZlcnNhbEV2YWx1YXRpb25UZXN0cy5jcwpAQCAtODgsNyArODgsNyBAQAogLy8gICAgICAgICAgICAgICAgVHVwbGUuQ3JlYXRlKCJnLlYoKS5jb25zdGFudCgxMjNMKSIsIDIpLCAvLyBDYW4gYmUgcGFyc2VkIHVzaW5nIHRoZSBuZXcgdHlwZS1zYWZlIEFQSQogICAgICAgICAgICAgICAgIFR1cGxlLkNyZWF0ZSgiZy5WKCkuaGFzKFwibm9cIikuY291bnQoKSIsIDMpLAogICAgICAgICAgICAgICAgIFR1cGxlLkNyZWF0ZSgiZy5WKCkudmFsdWVzKFwiYWdlXCIpIiwgMiksCi0gICAgICAgICAgICAgICAgVHVwbGUuQ3JlYXRlKCJnLlYoKS52YWx1ZU1hcCh0cnVlLCBcIm5hbWVcIiwgXCJhZ2VcIikiLCAyKSwKKyAgICAgICAgICAgICAgICBUdXBsZS5DcmVhdGUoImcuVigpLnZhbHVlTWFwKFwibmFtZVwiLCBcImFnZVwiKS53aXRoKFdpdGhPcHRpb25zLnRva2VucykiLCAzKSwKICAgICAgICAgICAgICAgICBUdXBsZS5DcmVhdGUoImcuVigpLndoZXJlKF9fLmluKFwiY3JlYXRlZFwiKS5jb3VudCgpLmlzKDEpKS52YWx1ZXMoXCJuYW1lXCIpIiwgMyksCiAgICAgICAgICAgICAgICAgVHVwbGUuQ3JlYXRlKCJnLlYoKS5jb3VudChTY29wZS5sb2NhbCkiLCAyKSwKICAgICAgICAgICAgICAgICBUdXBsZS5DcmVhdGUoImcuVigpLnZhbHVlcyhcImFnZVwiKS5pcyhQLmx0ZSgzMCkpIiwgMyksCkBAIC0xMTIsNCArMTEyLDQgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9HaGVya2luL1RyYXZlcnNhbEV2YWx1YXRpb24vVHJhdmVyc2FsUGFyc2VyLmNzIGIvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvR2hlcmtpbi9UcmF2ZXJzYWxFdmFsdWF0aW9uL1RyYXZlcnNhbFBhcnNlci5jcwppbmRleCA0MTljZThkLi4xMDU5MzJmIDEwMDY0NAotLS0gYS9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9HaGVya2luL1RyYXZlcnNhbEV2YWx1YXRpb24vVHJhdmVyc2FsUGFyc2VyLmNzCisrKyBiL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L0doZXJraW4vVHJhdmVyc2FsRXZhbHVhdGlvbi9UcmF2ZXJzYWxQYXJzZXIuY3MKQEAgLTQ0LDYgKzQ0LDEwIEBACiAKICAgICAgICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgUmVnZXggUmVnZXhFbnVtID0gbmV3IFJlZ2V4KEAiXHcrXC5cdysiLCBSZWdleE9wdGlvbnMuQ29tcGlsZWQpOwogCisgICAgICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFJlZ2V4IFJlZ2V4SU8gPSBuZXcgUmVnZXgoQCJJTy5cdysiLCBSZWdleE9wdGlvbnMuQ29tcGlsZWQpOworCisgICAgICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFJlZ2V4IFJlZ2V4V2l0aE9wdGlvbnMgPSBuZXcgUmVnZXgoQCJXaXRoT3B0aW9ucy5cdysiLCBSZWdleE9wdGlvbnMuQ29tcGlsZWQpOworCiAgICAgICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFJlZ2V4IFJlZ2V4UGFyYW0gPSBuZXcgUmVnZXgoQCJcdysiLCBSZWdleE9wdGlvbnMuQ29tcGlsZWQpOwogICAgICAgICAKICAgICAgICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgSGFzaFNldDxUeXBlPiBOdW1lcmljVHlwZXMgPSBuZXcgSGFzaFNldDxUeXBlPgpAQCAtMTI0LDcgKzEyOCw2IEBACiAgICAgICAgICAgICB2YXIgY29tcGF0aWJsZU1ldGhvZHMgPSBuZXcgRGljdGlvbmFyeTxpbnQsIE1ldGhvZEluZm8+KCk7CiAgICAgICAgICAgICBmb3JlYWNoICh2YXIgbWV0aG9kIGluIG9yZGVyZWQpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbGFzdE1ldGhvZCA9IG1ldGhvZDsKICAgICAgICAgICAgICAgICB2YXIgbWV0aG9kUGFyYW1ldGVycyA9IG1ldGhvZC5HZXRQYXJhbWV0ZXJzKCk7CiAgICAgICAgICAgICAgICAgdmFyIHJlcXVpcmVkUGFyYW1ldGVycyA9IG1ldGhvZFBhcmFtZXRlcnMuTGVuZ3RoOwogICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlZFBhcmFtZXRlcnMgPiAwICYmIElzUGFyYW1zQXJyYXkobWV0aG9kUGFyYW1ldGVycy5MYXN0KCkpKQpAQCAtMTM2LDYgKzEzOSw3IEBACiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbGFzdE1ldGhvZCA9IG1ldGhvZDsKICAgICAgICAgICAgICAgICB2YXIgbWF0Y2hlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgdmFyIGV4YWN0TWF0Y2hlcyA9IDA7CiAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b2tlblBhcmFtZXRlcnMuQ291bnQ7IGkrKykKQEAgLTQyMSw2ICs0MjUsMTAgQEAKICAgICAgICAgICAgICAgICB2YXIgdG9rZW5zID0gUGFyc2VUb2tlbnModGV4dCwgcmVmIGkpOwogICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU3RhdGljVHJhdmVyc2FsUGFyYW1ldGVyKHRva2VucywgdGV4dC5TdWJzdHJpbmcoc3RhcnRJbmRleCwgaSAtIHN0YXJ0SW5kZXgpKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh0ZXh0Lkxlbmd0aCA+PSBpICsgNiAmJiB0ZXh0LlN1YnN0cmluZyhpLCA2KSA9PSAiVGV4dFAuIikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFRleHRQUGFyYW1ldGVyKFBhcnNlVG9rZW5zKHRleHQsIHJlZiBpKSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAodGV4dC5TdWJzdHJpbmcoaSwgMikuU3RhcnRzV2l0aCgiUC4iKSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFBQYXJhbWV0ZXIoUGFyc2VUb2tlbnModGV4dCwgcmVmIGkpKTsKQEAgLTQ0MSw2ICs0NDksMTYgQEAKICAgICAgICAgICAgICAgICBpICs9IHBhcmFtZXRlclRleHQuTGVuZ3RoIC0gMTsKICAgICAgICAgICAgICAgICByZXR1cm4gTGl0ZXJhbFBhcmFtZXRlci5DcmVhdGUoQ29udmVydC5Ub0Jvb2xlYW4ocGFyYW1ldGVyVGV4dCkpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKFJlZ2V4SU8uSXNNYXRjaChwYXJhbWV0ZXJUZXh0KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpICs9IHBhcmFtZXRlclRleHQuTGVuZ3RoIC0gMTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IElPUGFyYW1ldGVyKHBhcmFtZXRlclRleHQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKFJlZ2V4V2l0aE9wdGlvbnMuSXNNYXRjaChwYXJhbWV0ZXJUZXh0KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpICs9IHBhcmFtZXRlclRleHQuTGVuZ3RoIC0gMTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFdpdGhPcHRpb25zUGFyYW1ldGVyKHBhcmFtZXRlclRleHQpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKFJlZ2V4RW51bS5Jc01hdGNoKHBhcmFtZXRlclRleHQpKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGkgKz0gcGFyYW1ldGVyVGV4dC5MZW5ndGggLSAxOwpAQCAtNDg4LDQgKzUwNiw0IEBACiAgICAgICAgICAgICBFbmRQYXJhbWV0ZXJzCiAgICAgICAgIH0KICAgICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvR2hlcmtpbi9UcmF2ZXJzYWxFdmFsdWF0aW9uL1dpdGhPcHRpb25zUGFyYW1ldGVyLmNzIGIvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvR2hlcmtpbi9UcmF2ZXJzYWxFdmFsdWF0aW9uL1dpdGhPcHRpb25zUGFyYW1ldGVyLmNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliMDU1ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9HaGVya2luL1RyYXZlcnNhbEV2YWx1YXRpb24vV2l0aE9wdGlvbnNQYXJhbWV0ZXIuY3MKQEAgLTAsMCArMSw4MyBAQAor77u/I3JlZ2lvbiBMaWNlbnNlCisKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2VuZHJlZ2lvbgorCit1c2luZyBTeXN0ZW07Cit1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKK3VzaW5nIFN5c3RlbS5EeW5hbWljOwordXNpbmcgU3lzdGVtLkxpbnE7Cit1c2luZyBTeXN0ZW0uUmVmbGVjdGlvbjsKK3VzaW5nIEdyZW1saW4uTmV0LlByb2Nlc3MuVHJhdmVyc2FsLlN0ZXAuVXRpbDsKKworbmFtZXNwYWNlIEdyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC5HaGVya2luLlRyYXZlcnNhbEV2YWx1YXRpb24KK3sKKyAgICAvLy8gPHN1bW1hcnk+CisgICAgLy8vIFJlcHJlc2VudHMgYSBwYXJhbWV0ZXIgZm9yIHRoZSB3aXRoKCkgc3RlcAorICAgIC8vLyA8L3N1bW1hcnk+CisgICAgaW50ZXJuYWwgY2xhc3MgV2l0aE9wdGlvbnNQYXJhbWV0ZXIgOiBJVG9rZW5QYXJhbWV0ZXIsIElFcXVhdGFibGU8V2l0aE9wdGlvbnNQYXJhbWV0ZXI+CisgICAgeworICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHN0cmluZyBfdGV4dDsKKyAgICAgICAgcHJpdmF0ZSByZWFkb25seSBzdHJpbmcgX3ZhbHVlOworICAgICAgICAKKyAgICAgICAgcHVibGljIFdpdGhPcHRpb25zUGFyYW1ldGVyKHN0cmluZyB0ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBfdGV4dCA9IHRleHQ7CisgICAgICAgICAgICB2YXIgc2VwYXJhdG9ySW5kZXggPSB0ZXh0LkluZGV4T2YoJy4nKTsKKyAgICAgICAgICAgIHZhciB2YWx1ZSA9IHRleHQuU3Vic3RyaW5nKHNlcGFyYXRvckluZGV4ICsgMSk7CisgICAgICAgICAgICBfdmFsdWUgPSB2YWx1ZS5TdWJzdHJpbmcoMCwgMSkuVG9VcHBlcigpICsgdmFsdWUuU3Vic3RyaW5nKDEpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGJvb2wgRXF1YWxzKFdpdGhPcHRpb25zUGFyYW1ldGVyIG90aGVyKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gX3RleHQgPT0gb3RoZXIuX3RleHQ7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgb3ZlcnJpZGUgYm9vbCBFcXVhbHMob2JqZWN0IG9iaikKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKFJlZmVyZW5jZUVxdWFscyhudWxsLCBvYmopKSByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoUmVmZXJlbmNlRXF1YWxzKHRoaXMsIG9iaikpIHJldHVybiB0cnVlOworICAgICAgICAgICAgaWYgKG9iai5HZXRUeXBlKCkgIT0gR2V0VHlwZSgpKSByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gRXF1YWxzKChXaXRoT3B0aW9uc1BhcmFtZXRlcikgb2JqKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBvdmVycmlkZSBpbnQgR2V0SGFzaENvZGUoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gX3RleHQuR2V0SGFzaENvZGUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBvYmplY3QgR2V0VmFsdWUoKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgZmllbGQgPSB0eXBlb2YoV2l0aE9wdGlvbnMpLkdldEZpZWxkKF92YWx1ZSwgQmluZGluZ0ZsYWdzLlN0YXRpYyB8IEJpbmRpbmdGbGFncy5QdWJsaWMpOworICAgICAgICAgICAgcmV0dXJuIGZpZWxkLkdldFZhbHVlKG51bGwpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgU2V0Q29udGV4dFBhcmFtZXRlclZhbHVlcyhJRGljdGlvbmFyeTxzdHJpbmcsIG9iamVjdD4gcGFyYW1ldGVyVmFsdWVzKQorICAgICAgICB7CisKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBUeXBlIEdldFBhcmFtZXRlclR5cGUoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdHlwZW9mKG9iamVjdCk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Qcm9jZXNzL1RyYXZlcnNhbC9Ecml2ZXJSZW1vdGVDb25uZWN0aW9uL0dyYXBoVHJhdmVyc2FsVGVzdHMuY3MgYi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Qcm9jZXNzL1RyYXZlcnNhbC9Ecml2ZXJSZW1vdGVDb25uZWN0aW9uL0dyYXBoVHJhdmVyc2FsVGVzdHMuY3MKaW5kZXggMTFmYmE4NC4uMGY2YmVhNiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvUHJvY2Vzcy9UcmF2ZXJzYWwvRHJpdmVyUmVtb3RlQ29ubmVjdGlvbi9HcmFwaFRyYXZlcnNhbFRlc3RzLmNzCisrKyBiL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L1Byb2Nlc3MvVHJhdmVyc2FsL0RyaXZlclJlbW90ZUNvbm5lY3Rpb24vR3JhcGhUcmF2ZXJzYWxUZXN0cy5jcwpAQCAtMjcsNiArMjcsNyBAQAogdXNpbmcgR3JlbWxpbi5OZXQuUHJvY2Vzcy5UcmF2ZXJzYWw7CiB1c2luZyBHcmVtbGluLk5ldC5TdHJ1Y3R1cmU7CiB1c2luZyBYdW5pdDsKK3VzaW5nIEdyZW1saW4uTmV0LlByb2Nlc3MuVHJhdmVyc2FsLlN0cmF0ZWd5LkRlY29yYXRpb247CiAKIG5hbWVzcGFjZSBHcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QuUHJvY2Vzcy5UcmF2ZXJzYWwuRHJpdmVyUmVtb3RlQ29ubmVjdGlvbgogewpAQCAtMTk1LDYgKzE5NiwyNyBAQAogICAgICAgICAgICAgdmFyIGNvdW50ID0gZy5WKCkuSGFzKGIuT2YoInByb3BlcnR5S2V5IiwgIm5hbWUiKSwgYi5PZigicHJvcGVydHlWYWx1ZSIsICJtYXJrbyIpKS5PdXRFKCkuQ291bnQoKS5OZXh0KCk7CiAKICAgICAgICAgICAgIEFzc2VydC5FcXVhbCgzLCBjb3VudCk7CisgICAgICAgIH0gIAorCisgICAgICAgIFtGYWN0XQorICAgICAgICBwdWJsaWMgdm9pZCBTaG91bGRVc2VPcHRpb25zSW5UcmF2ZXJzYWwoKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBzbW9rZSB0ZXN0IHRvIHZhbGlkYXRlIHNlcmlhbGl6YXRpb24gb2YgT3B0aW9uc1N0cmF0ZWd5LiBubyB3YXkgdG8gcmVhbGx5IHZhbGlkYXRlIHRoaXMgZnJvbSBhbiBpbnRlZ3JhdGlvbgorICAgICAgICAgICAgLy8gdGVzdCBwZXJzcGVjdGl2ZSBiZWNhdXNlIHRoZXJlJ3Mgbm8gd2F5IHRvIGFjY2VzcyB0aGUgaW50ZXJuYWxzIG9mIHRoZSBzdHJhdGVneSB2aWEgYnl0ZWNvZGUKKyAgICAgICAgICAgIHZhciBjb25uZWN0aW9uID0gX2Nvbm5lY3Rpb25GYWN0b3J5LkNyZWF0ZVJlbW90ZUNvbm5lY3Rpb24oKTsKKyAgICAgICAgICAgIHZhciBvcHRpb25zID0gbmV3IERpY3Rpb25hcnk8c3RyaW5nLG9iamVjdD4KKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB7IngiLCAidGVzdCJ9LAorICAgICAgICAgICAgICAgIHsieSIsIHRydWV9CisgICAgICAgICAgICB9OworICAgICAgICAgICAgdmFyIGcgPSBBbm9ueW1vdXNUcmF2ZXJzYWxTb3VyY2UuVHJhdmVyc2FsKCkuV2l0aFJlbW90ZShjb25uZWN0aW9uKTsKKworICAgICAgICAgICAgdmFyIGIgPSBuZXcgQmluZGluZ3MoKTsKKyAgICAgICAgICAgIHZhciBjb3VudFdpdGhTdHJhdGVneSA9IGcuV2l0aFN0cmF0ZWdpZXMobmV3IE9wdGlvbnNTdHJhdGVneShvcHRpb25zKSkuVigpLkNvdW50KCkuTmV4dCgpOworICAgICAgICAgICAgQXNzZXJ0LkVxdWFsKDYsIGNvdW50V2l0aFN0cmF0ZWd5KTsKKworICAgICAgICAgICAgdmFyIGNvdW50V2l0aCA9IGcuV2l0aCgieCIsICJ0ZXN0IikuV2l0aCgieSIsIHRydWUpLlYoKS5Db3VudCgpLk5leHQoKTsKKyAgICAgICAgICAgIEFzc2VydC5FcXVhbCg2LCBjb3VudFdpdGgpOwogICAgICAgICB9CiAKICAgICAgICAgW0ZhY3RdCmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Qcm9jZXNzL1RyYXZlcnNhbC9Ecml2ZXJSZW1vdGVDb25uZWN0aW9uL1JlbW90ZUNvbm5lY3Rpb25GYWN0b3J5LmNzIGIvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvUHJvY2Vzcy9UcmF2ZXJzYWwvRHJpdmVyUmVtb3RlQ29ubmVjdGlvbi9SZW1vdGVDb25uZWN0aW9uRmFjdG9yeS5jcwppbmRleCAzOWI3ZmVhLi5hOTk3MTY3IDEwMDY0NAotLS0gYS9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Qcm9jZXNzL1RyYXZlcnNhbC9Ecml2ZXJSZW1vdGVDb25uZWN0aW9uL1JlbW90ZUNvbm5lY3Rpb25GYWN0b3J5LmNzCisrKyBiL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L1Byb2Nlc3MvVHJhdmVyc2FsL0RyaXZlclJlbW90ZUNvbm5lY3Rpb24vUmVtb3RlQ29ubmVjdGlvbkZhY3RvcnkuY3MKQEAgLTQ0LDcgKzQ0LDkgQEAKIAogICAgICAgICBwdWJsaWMgSVJlbW90ZUNvbm5lY3Rpb24gQ3JlYXRlUmVtb3RlQ29ubmVjdGlvbihzdHJpbmcgdHJhdmVyc2FsU291cmNlKQogICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgYyA9IG5ldyBEcml2ZXJSZW1vdGVDb25uZWN0aW9uSW1wbChuZXcgR3JlbWxpbkNsaWVudChuZXcgR3JlbWxpblNlcnZlcihUZXN0SG9zdCwgVGVzdFBvcnQpKSwKKyAgICAgICAgICAgIHZhciBjID0gbmV3IERyaXZlclJlbW90ZUNvbm5lY3Rpb25JbXBsKAorICAgICAgICAgICAgICAgIG5ldyBHcmVtbGluQ2xpZW50KG5ldyBHcmVtbGluU2VydmVyKFRlc3RIb3N0LCBUZXN0UG9ydCksCisgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25Qb29sU2V0dGluZ3M6IG5ldyBDb25uZWN0aW9uUG9vbFNldHRpbmdzIHtQb29sU2l6ZSA9IDJ9KSwKICAgICAgICAgICAgICAgICB0cmF2ZXJzYWxTb3VyY2UpOwogICAgICAgICAgICAgX2Nvbm5lY3Rpb25zLkFkZChjKTsKICAgICAgICAgICAgIHJldHVybiBjOwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvUHJvY2Vzcy9UcmF2ZXJzYWwvRHJpdmVyUmVtb3RlQ29ubmVjdGlvbi9TdHJhdGVnaWVzVGVzdHMuY3MgYi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Qcm9jZXNzL1RyYXZlcnNhbC9Ecml2ZXJSZW1vdGVDb25uZWN0aW9uL1N0cmF0ZWdpZXNUZXN0cy5jcwppbmRleCAwM2IyNGFjLi4xNGM1OWY5IDEwMDY0NAotLS0gYS9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Qcm9jZXNzL1RyYXZlcnNhbC9Ecml2ZXJSZW1vdGVDb25uZWN0aW9uL1N0cmF0ZWdpZXNUZXN0cy5jcworKysgYi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC9Qcm9jZXNzL1RyYXZlcnNhbC9Ecml2ZXJSZW1vdGVDb25uZWN0aW9uL1N0cmF0ZWdpZXNUZXN0cy5jcwpAQCAtNDEsNyArNDEsNyBAQAogICAgICAgICAgICAgdmFyIGNvbm5lY3Rpb24gPSBfY29ubmVjdGlvbkZhY3RvcnkuQ3JlYXRlUmVtb3RlQ29ubmVjdGlvbigpOwogICAgICAgICAgICAgdmFyIGcgPSBBbm9ueW1vdXNUcmF2ZXJzYWxTb3VyY2UuVHJhdmVyc2FsKCkKICAgICAgICAgICAgICAgICAgICAgLldpdGhSZW1vdGUoY29ubmVjdGlvbikKLSAgICAgICAgICAgICAgICAgICAgLldpdGhTdHJhdGVnaWVzKG5ldyBTdWJncmFwaFN0cmF0ZWd5KHZlcnRleENyaXRlcmlvbjogX18uSGFzTGFiZWwoInBlcnNvbiIpKSk7CisgICAgICAgICAgICAgICAgICAgIC5XaXRoU3RyYXRlZ2llcyhuZXcgU3ViZ3JhcGhTdHJhdGVneSh2ZXJ0aWNlczogX18uSGFzTGFiZWwoInBlcnNvbiIpKSk7CiAKICAgICAgICAgICAgIHZhciBjb3VudCA9IGcuVigpLkNvdW50KCkuTmV4dCgpOwogCkBAIC01NCw4ICs1NCw4IEBACiAgICAgICAgICAgICB2YXIgY29ubmVjdGlvbiA9IF9jb25uZWN0aW9uRmFjdG9yeS5DcmVhdGVSZW1vdGVDb25uZWN0aW9uKCk7CiAgICAgICAgICAgICB2YXIgZyA9IEFub255bW91c1RyYXZlcnNhbFNvdXJjZS5UcmF2ZXJzYWwoKQogICAgICAgICAgICAgICAgICAgICAuV2l0aFJlbW90ZShjb25uZWN0aW9uKQotICAgICAgICAgICAgICAgICAgICAuV2l0aFN0cmF0ZWdpZXMobmV3IFN1YmdyYXBoU3RyYXRlZ3kodmVydGV4Q3JpdGVyaW9uOiBfXy5IYXNMYWJlbCgicGVyc29uIiksCi0gICAgICAgICAgICAgICAgICAgICAgICBlZGdlQ3JpdGVyaW9uOiBfXy5IYXNMYWJlbCgiY3JlYXRlZCIpKSk7CisgICAgICAgICAgICAgICAgICAgIC5XaXRoU3RyYXRlZ2llcyhuZXcgU3ViZ3JhcGhTdHJhdGVneSh2ZXJ0aWNlczogX18uSGFzTGFiZWwoInBlcnNvbiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgZWRnZXM6IF9fLkhhc0xhYmVsKCJjcmVhdGVkIikpKTsKIAogICAgICAgICAgICAgdmFyIGNvdW50ID0gZy5FKCkuQ291bnQoKS5OZXh0KCk7CiAKQEAgLTY4LDcgKzY4LDcgQEAKICAgICAgICAgICAgIHZhciBjb25uZWN0aW9uID0gX2Nvbm5lY3Rpb25GYWN0b3J5LkNyZWF0ZVJlbW90ZUNvbm5lY3Rpb24oKTsKICAgICAgICAgICAgIHZhciBnID0gQW5vbnltb3VzVHJhdmVyc2FsU291cmNlLlRyYXZlcnNhbCgpCiAgICAgICAgICAgICAgICAgICAgIC5XaXRoUmVtb3RlKGNvbm5lY3Rpb24pCi0gICAgICAgICAgICAgICAgICAgIC5XaXRoU3RyYXRlZ2llcyhuZXcgU3ViZ3JhcGhTdHJhdGVneSh2ZXJ0ZXhDcml0ZXJpb246IF9fLkhhc0xhYmVsKCJwZXJzb24iKSkpOworICAgICAgICAgICAgICAgICAgICAuV2l0aFN0cmF0ZWdpZXMobmV3IFN1YmdyYXBoU3RyYXRlZ3kodmVydGljZXM6IF9fLkhhc0xhYmVsKCJwZXJzb24iKSkpOwogCiAgICAgICAgICAgICB2YXIgY291bnQgPSBnLlYoKS5MYWJlbCgpLkRlZHVwKCkuQ291bnQoKS5OZXh0KCk7CiAKQEAgLTgxLDcgKzgxLDcgQEAKICAgICAgICAgICAgIHZhciBjb25uZWN0aW9uID0gX2Nvbm5lY3Rpb25GYWN0b3J5LkNyZWF0ZVJlbW90ZUNvbm5lY3Rpb24oKTsKICAgICAgICAgICAgIHZhciBnID0gQW5vbnltb3VzVHJhdmVyc2FsU291cmNlLlRyYXZlcnNhbCgpCiAgICAgICAgICAgICAgICAgICAgIC5XaXRoUmVtb3RlKGNvbm5lY3Rpb24pCi0gICAgICAgICAgICAgICAgICAgIC5XaXRoU3RyYXRlZ2llcyhuZXcgU3ViZ3JhcGhTdHJhdGVneSh2ZXJ0ZXhDcml0ZXJpb246IF9fLkhhc0xhYmVsKCJwZXJzb24iKSkpOworICAgICAgICAgICAgICAgICAgICAuV2l0aFN0cmF0ZWdpZXMobmV3IFN1YmdyYXBoU3RyYXRlZ3kodmVydGljZXM6IF9fLkhhc0xhYmVsKCJwZXJzb24iKSkpOwogCiAgICAgICAgICAgICB2YXIgbGFiZWwgPSBnLlYoKS5MYWJlbCgpLkRlZHVwKCkuTmV4dCgpOwogCkBAIC05NCw3ICs5NCw3IEBACiAgICAgICAgICAgICB2YXIgY29ubmVjdGlvbiA9IF9jb25uZWN0aW9uRmFjdG9yeS5DcmVhdGVSZW1vdGVDb25uZWN0aW9uKCk7CiAgICAgICAgICAgICB2YXIgZyA9IEFub255bW91c1RyYXZlcnNhbFNvdXJjZS5UcmF2ZXJzYWwoKQogICAgICAgICAgICAgICAgICAgICAuV2l0aFJlbW90ZShjb25uZWN0aW9uKQotICAgICAgICAgICAgICAgICAgICAuV2l0aFN0cmF0ZWdpZXMobmV3IFN1YmdyYXBoU3RyYXRlZ3kodmVydGV4Q3JpdGVyaW9uOiBfXy5IYXMoIm5hbWUiLCAibWFya28iKSkpOworICAgICAgICAgICAgICAgICAgICAuV2l0aFN0cmF0ZWdpZXMobmV3IFN1YmdyYXBoU3RyYXRlZ3kodmVydGljZXM6IF9fLkhhcygibmFtZSIsICJtYXJrbyIpKSk7CiAKICAgICAgICAgICAgIHZhciBjb3VudCA9IGcuVigpLkNvdW50KCkuTmV4dCgpOwogCkBAIC0xMDcsNyArMTA3LDcgQEAKICAgICAgICAgICAgIHZhciBjb25uZWN0aW9uID0gX2Nvbm5lY3Rpb25GYWN0b3J5LkNyZWF0ZVJlbW90ZUNvbm5lY3Rpb24oKTsKICAgICAgICAgICAgIHZhciBnID0gQW5vbnltb3VzVHJhdmVyc2FsU291cmNlLlRyYXZlcnNhbCgpCiAgICAgICAgICAgICAgICAgICAgIC5XaXRoUmVtb3RlKGNvbm5lY3Rpb24pCi0gICAgICAgICAgICAgICAgICAgIC5XaXRoU3RyYXRlZ2llcyhuZXcgU3ViZ3JhcGhTdHJhdGVneShlZGdlQ3JpdGVyaW9uOiBfXy5MaW1pdDxvYmplY3Q+KDApKSk7CisgICAgICAgICAgICAgICAgICAgIC5XaXRoU3RyYXRlZ2llcyhuZXcgU3ViZ3JhcGhTdHJhdGVneShlZGdlczogX18uTGltaXQ8b2JqZWN0PigwKSkpOwogCiAgICAgICAgICAgICB2YXIgY291bnQgPSBnLkUoKS5Db3VudCgpLk5leHQoKTsKIApAQCAtMTIwLDcgKzEyMCw3IEBACiAgICAgICAgICAgICB2YXIgY29ubmVjdGlvbiA9IF9jb25uZWN0aW9uRmFjdG9yeS5DcmVhdGVSZW1vdGVDb25uZWN0aW9uKCk7CiAgICAgICAgICAgICB2YXIgZyA9IEFub255bW91c1RyYXZlcnNhbFNvdXJjZS5UcmF2ZXJzYWwoKQogICAgICAgICAgICAgICAgICAgICAuV2l0aFJlbW90ZShjb25uZWN0aW9uKQotICAgICAgICAgICAgICAgICAgICAuV2l0aFN0cmF0ZWdpZXMobmV3IFN1YmdyYXBoU3RyYXRlZ3kodmVydGV4Q3JpdGVyaW9uOiBfXy5IYXMoIm5hbWUiLCAibWFya28iKSkpOworICAgICAgICAgICAgICAgICAgICAuV2l0aFN0cmF0ZWdpZXMobmV3IFN1YmdyYXBoU3RyYXRlZ3kodmVydGljZXM6IF9fLkhhcygibmFtZSIsICJtYXJrbyIpKSk7CiAKICAgICAgICAgICAgIHZhciBsYWJlbCA9IGcuVigpLkxhYmVsKCkuRGVkdXAoKS5OZXh0KCk7CiAKQEAgLTEzMyw3ICsxMzMsNyBAQAogICAgICAgICAgICAgdmFyIGNvbm5lY3Rpb24gPSBfY29ubmVjdGlvbkZhY3RvcnkuQ3JlYXRlUmVtb3RlQ29ubmVjdGlvbigpOwogICAgICAgICAgICAgdmFyIGcgPSBBbm9ueW1vdXNUcmF2ZXJzYWxTb3VyY2UuVHJhdmVyc2FsKCkKICAgICAgICAgICAgICAgICAgICAgLldpdGhSZW1vdGUoY29ubmVjdGlvbikKLSAgICAgICAgICAgICAgICAgICAgLldpdGhTdHJhdGVnaWVzKG5ldyBTdWJncmFwaFN0cmF0ZWd5KHZlcnRleENyaXRlcmlvbjogX18uSGFzKCJuYW1lIiwgIm1hcmtvIikpKTsKKyAgICAgICAgICAgICAgICAgICAgLldpdGhTdHJhdGVnaWVzKG5ldyBTdWJncmFwaFN0cmF0ZWd5KHZlcnRpY2VzOiBfXy5IYXMoIm5hbWUiLCAibWFya28iKSkpOwogCiAgICAgICAgICAgICB2YXIgbmFtZSA9IGcuVigpLlZhbHVlczxzdHJpbmc+KCJuYW1lIikuTmV4dCgpOwogCkBAIC0xNzYsNyArMTc2LDcgQEAKICAgICAgICAgewogICAgICAgICAgICAgdmFyIGNvbm5lY3Rpb24gPSBfY29ubmVjdGlvbkZhY3RvcnkuQ3JlYXRlUmVtb3RlQ29ubmVjdGlvbigpOwogICAgICAgICAgICAgdmFyIGcgPSBBbm9ueW1vdXNUcmF2ZXJzYWxTb3VyY2UuVHJhdmVyc2FsKCkuV2l0aFJlbW90ZShjb25uZWN0aW9uKQotICAgICAgICAgICAgICAgIC5XaXRoU3RyYXRlZ2llcyhuZXcgU3ViZ3JhcGhTdHJhdGVneSh2ZXJ0ZXhDcml0ZXJpb246IF9fLkhhc0xhYmVsKCJwZXJzb24iKSkpCisgICAgICAgICAgICAgICAgLldpdGhTdHJhdGVnaWVzKG5ldyBTdWJncmFwaFN0cmF0ZWd5KHZlcnRpY2VzOiBfXy5IYXNMYWJlbCgicGVyc29uIikpKQogICAgICAgICAgICAgICAgIC5XaXRob3V0U3RyYXRlZ2llcyh0eXBlb2YoU3ViZ3JhcGhTdHJhdGVneSkpOwogCiAgICAgICAgICAgICB2YXIgY291bnQgPSBnLlYoKS5Db3VudCgpLk5leHQoKTsKZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuSW50ZWdyYXRpb25UZXN0L1Byb2Nlc3MvVHJhdmVyc2FsL0RzbC9Ec2xUZXN0LmNzIGIvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvUHJvY2Vzcy9UcmF2ZXJzYWwvRHNsL0RzbFRlc3QuY3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5YjNmMzQuLjAwMDAwMDAKLS0tIGEvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QvUHJvY2Vzcy9UcmF2ZXJzYWwvRHNsL0RzbFRlc3QuY3MKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotI3JlZ2lvbiBMaWNlbnNlCi0KLS8qCi0gKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCi0gKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKLSAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCi0gKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCi0gKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCi0gKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCi0gKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKLSAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCi0gKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKLSAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQotICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucwotICogdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotI2VuZHJlZ2lvbgotCi11c2luZyBHcmVtbGluLk5ldC5Qcm9jZXNzLlRyYXZlcnNhbDsKLXVzaW5nIEdyZW1saW4uTmV0LlN0cnVjdHVyZTsKLXVzaW5nIEdyZW1saW4uTmV0LkludGVncmF0aW9uVGVzdC5Qcm9jZXNzLlRyYXZlcnNhbC5Ecml2ZXJSZW1vdGVDb25uZWN0aW9uOwotdXNpbmcgWHVuaXQ7Ci0KLW5hbWVzcGFjZSBHcmVtbGluLk5ldC5JbnRlZ3JhdGlvblRlc3QuUHJvY2Vzcy5UcmF2ZXJzYWwuRHNsIAotewotCi0gICAgcHVibGljIHN0YXRpYyBjbGFzcyBTb2NpYWxUcmF2ZXJzYWxFeHRlbnNpb25zCi0gICAgewotICAgICAgICBwdWJsaWMgc3RhdGljIEdyYXBoVHJhdmVyc2FsPFZlcnRleCxWZXJ0ZXg+IEtub3dzKHRoaXMgR3JhcGhUcmF2ZXJzYWw8VmVydGV4LFZlcnRleD4gdCwgc3RyaW5nIHBlcnNvbk5hbWUpIAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdC5PdXQoImtub3dzIikuSGFzTGFiZWwoInBlcnNvbiIpLkhhcygibmFtZSIsIHBlcnNvbk5hbWUpOwotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIHN0YXRpYyBHcmFwaFRyYXZlcnNhbDxWZXJ0ZXgsIGludD4gWW91bmdlc3RGcmllbmRzQWdlKHRoaXMgR3JhcGhUcmF2ZXJzYWw8VmVydGV4LFZlcnRleD4gdCkgCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0Lk91dCgia25vd3MiKS5IYXNMYWJlbCgicGVyc29uIikuVmFsdWVzPGludD4oImFnZSIpLk1pbjxpbnQ+KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgc3RhdGljIEdyYXBoVHJhdmVyc2FsPFZlcnRleCxsb25nPiBDcmVhdGVkQXRMZWFzdCh0aGlzIEdyYXBoVHJhdmVyc2FsPFZlcnRleCxWZXJ0ZXg+IHQsIGxvbmcgbnVtYmVyKSAKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHQuT3V0RSgiY3JlYXRlZCIpLkNvdW50KCkuSXMoUC5HdGUobnVtYmVyKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwdWJsaWMgc3RhdGljIGNsYXNzIF9fU29jaWFsIAotICAgIHsKLSAgICAgICAgcHVibGljIHN0YXRpYyBHcmFwaFRyYXZlcnNhbDxvYmplY3QsVmVydGV4PiBLbm93cyhzdHJpbmcgcGVyc29uTmFtZSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfXy5PdXQoImtub3dzIikuSGFzTGFiZWwoInBlcnNvbiIpLkhhcygibmFtZSIsIHBlcnNvbk5hbWUpOwotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIHN0YXRpYyBHcmFwaFRyYXZlcnNhbDxvYmplY3QsIGludD4gWW91bmdlc3RGcmllbmRzQWdlKCkgCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfXy5PdXQoImtub3dzIikuSGFzTGFiZWwoInBlcnNvbiIpLlZhbHVlczxpbnQ+KCJhZ2UiKS5NaW48aW50PigpOwotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIHN0YXRpYyBHcmFwaFRyYXZlcnNhbDxvYmplY3QsbG9uZz4gQ3JlYXRlZEF0TGVhc3QobG9uZyBudW1iZXIpIAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gX18uT3V0RSgiY3JlYXRlZCIpLkNvdW50KCkuSXMoUC5HdGUobnVtYmVyKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFNvY2lhbFRyYXZlcnNhbFNvdXJjZUV4dGVuc2lvbnMKLSAgICB7Ci0gICAgICAgIHB1YmxpYyBzdGF0aWMgR3JhcGhUcmF2ZXJzYWw8VmVydGV4LFZlcnRleD4gUGVyc29ucyh0aGlzIEdyYXBoVHJhdmVyc2FsU291cmNlIGcsIHBhcmFtcyBzdHJpbmdbXSBwZXJzb25OYW1lcykgCi0gICAgICAgIHsKLSAgICAgICAgICAgIEdyYXBoVHJhdmVyc2FsPFZlcnRleCxWZXJ0ZXg+IHQgPSBnLlYoKS5IYXNMYWJlbCgicGVyc29uIik7Ci0KLSAgICAgICAgICAgIGlmIChwZXJzb25OYW1lcy5MZW5ndGggPiAwKSAKLSAgICAgICAgICAgIHsgICAgCi0gICAgICAgICAgICAgICAgdCA9IHQuSGFzKCJuYW1lIiwgUC5XaXRoaW4ocGVyc29uTmFtZXMpKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmV0dXJuIHQ7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwdWJsaWMgY2xhc3MgRHNsVGVzdCAKLSAgICB7Ci0gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgUmVtb3RlQ29ubmVjdGlvbkZhY3RvcnkgX2Nvbm5lY3Rpb25GYWN0b3J5ID0gbmV3IFJlbW90ZUNvbm5lY3Rpb25GYWN0b3J5KCk7Ci0gICAgICAgIAotICAgICAgICBbRmFjdF0KLSAgICAgICAgcHVibGljIHZvaWQgU2hvdWxkVXNlRHNsKCkgCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZhciBjb25uZWN0aW9uID0gX2Nvbm5lY3Rpb25GYWN0b3J5LkNyZWF0ZVJlbW90ZUNvbm5lY3Rpb24oKTsKLSAgICAgICAgICAgIHZhciBzb2NpYWwgPSBBbm9ueW1vdXNUcmF2ZXJzYWxTb3VyY2UuVHJhdmVyc2FsKCkuV2l0aFJlbW90ZShjb25uZWN0aW9uKTsKLQotICAgICAgICAgICAgQXNzZXJ0Lk5vdE51bGwoc29jaWFsLlBlcnNvbnMoIm1hcmtvIikuS25vd3MoImpvc2giKS5OZXh0KCkpOwotICAgICAgICAgICAgQXNzZXJ0LkVxdWFsKDI3LCBzb2NpYWwuUGVyc29ucygibWFya28iKS5Zb3VuZ2VzdEZyaWVuZHNBZ2UoKS5OZXh0KCkpOwotICAgICAgICAgICAgQXNzZXJ0LkVxdWFsKDQsIHNvY2lhbC5QZXJzb25zKCkuQ291bnQoKS5OZXh0KCkpOwotICAgICAgICAgICAgQXNzZXJ0LkVxdWFsKDIsIHNvY2lhbC5QZXJzb25zKCJtYXJrbyIsICJqb3NoIikuQ291bnQoKS5OZXh0KCkpOwotICAgICAgICAgICAgQXNzZXJ0LkVxdWFsKDEsIHNvY2lhbC5QZXJzb25zKCkuRmlsdGVyKF9fU29jaWFsLkNyZWF0ZWRBdExlYXN0KDIpKS5Db3VudCgpLk5leHQoKSk7Ci0gICAgICAgIH0KLSAgICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5Vbml0VGVzdC9Ecml2ZXIvQ29ubmVjdGlvblBvb2xTZXR0aW5nc1Rlc3RzLmNzIGIvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5Vbml0VGVzdC9Ecml2ZXIvQ29ubmVjdGlvblBvb2xTZXR0aW5nc1Rlc3RzLmNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4MDI4ODUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LlVuaXRUZXN0L0RyaXZlci9Db25uZWN0aW9uUG9vbFNldHRpbmdzVGVzdHMuY3MKQEAgLTAsMCArMSw1MSBAQAorI3JlZ2lvbiBMaWNlbnNlCisKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2VuZHJlZ2lvbgorCit1c2luZyBTeXN0ZW07Cit1c2luZyBHcmVtbGluLk5ldC5Ecml2ZXI7Cit1c2luZyBYdW5pdDsKKworbmFtZXNwYWNlIEdyZW1saW4uTmV0LlVuaXRUZXN0LkRyaXZlcgoreworICAgIHB1YmxpYyBjbGFzcyBDb25uZWN0aW9uUG9vbFNldHRpbmdzVGVzdHMKKyAgICB7CisgICAgICAgIFtUaGVvcnldCisgICAgICAgIFtJbmxpbmVEYXRhKDApXQorICAgICAgICBbSW5saW5lRGF0YSgtMSldCisgICAgICAgIFtJbmxpbmVEYXRhKC0xMDApXQorICAgICAgICBwdWJsaWMgdm9pZCBTaG91bGRUaHJvd0ZvckludmFsaWRQb29sU2l6ZShpbnQgaW52YWxpZFBvb2xTaXplKQorICAgICAgICB7CisgICAgICAgICAgICBBc3NlcnQuVGhyb3dzPEFyZ3VtZW50T3V0T2ZSYW5nZUV4Y2VwdGlvbj4oKCkgPT4gbmV3IENvbm5lY3Rpb25Qb29sU2V0dGluZ3Mge1Bvb2xTaXplID0gaW52YWxpZFBvb2xTaXplfSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFtUaGVvcnldCisgICAgICAgIFtJbmxpbmVEYXRhKDApXQorICAgICAgICBbSW5saW5lRGF0YSgtMSldCisgICAgICAgIFtJbmxpbmVEYXRhKC0xMDApXQorICAgICAgICBwdWJsaWMgdm9pZCBTaG91bGRUaHJvd0ZvckludmFsaWRNYXhJblByb2Nlc3NQZXJDb25uZWN0aW9uKGludCBpbnZhbGlkTWF4SW5Qcm9jZXNzUGVyQ29ubmVjdGlvbikKKyAgICAgICAgeworICAgICAgICAgICAgQXNzZXJ0LlRocm93czxBcmd1bWVudE91dE9mUmFuZ2VFeGNlcHRpb24+KCgpID0+IG5ldyBDb25uZWN0aW9uUG9vbFNldHRpbmdzCisgICAgICAgICAgICAgICAge01heEluUHJvY2Vzc1BlckNvbm5lY3Rpb24gPSBpbnZhbGlkTWF4SW5Qcm9jZXNzUGVyQ29ubmVjdGlvbn0pOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuVW5pdFRlc3QvRHJpdmVyL0NvcHlPbldyaXRlQ29sbGVjdGlvblRlc3RzLmNzIGIvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5Vbml0VGVzdC9Ecml2ZXIvQ29weU9uV3JpdGVDb2xsZWN0aW9uVGVzdHMuY3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDBiZDYwZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuVW5pdFRlc3QvRHJpdmVyL0NvcHlPbldyaXRlQ29sbGVjdGlvblRlc3RzLmNzCkBAIC0wLDAgKzEsMjM1IEBACisjcmVnaW9uIExpY2Vuc2UKKworLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjZW5kcmVnaW9uCisKK3VzaW5nIFN5c3RlbTsKK3VzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOwordXNpbmcgU3lzdGVtLkxpbnE7Cit1c2luZyBTeXN0ZW0uVGhyZWFkaW5nLlRhc2tzOwordXNpbmcgR3JlbWxpbi5OZXQuRHJpdmVyOwordXNpbmcgWHVuaXQ7CisKK25hbWVzcGFjZSBHcmVtbGluLk5ldC5Vbml0VGVzdC5Ecml2ZXIKK3sKKyAgICBwdWJsaWMgY2xhc3MgQ29weU9uV3JpdGVDb2xsZWN0aW9uVGVzdHMKKyAgICB7CisgICAgICAgIFtGYWN0XQorICAgICAgICBwdWJsaWMgdm9pZCBTaG91bGRTdGFydEVtcHR5KCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGNvbGxlY3Rpb24gPSBuZXcgQ29weU9uV3JpdGVDb2xsZWN0aW9uPGludD4oKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgQXNzZXJ0LkVxdWFsKG5ldyBpbnRbMF0sIGNvbGxlY3Rpb24uU25hcHNob3QpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBbVGhlb3J5XQorICAgICAgICBbSW5saW5lRGF0YSgwKV0KKyAgICAgICAgW0lubGluZURhdGEoMSldCisgICAgICAgIFtJbmxpbmVEYXRhKDIpXQorICAgICAgICBbSW5saW5lRGF0YSg4KV0KKyAgICAgICAgcHVibGljIHZvaWQgQWRkUmFuZ2VTaG91bGRSZXN1bHRJbkV4cGVjdGVkQ291bnQoaW50IGV4cGVjdGVkQ291bnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpdGVtcyA9IEVudW1lcmFibGUuUmFuZ2UoMCwgZXhwZWN0ZWRDb3VudCkuVG9BcnJheSgpOworICAgICAgICAgICAgdmFyIGNvbGxlY3Rpb24gPSBuZXcgQ29weU9uV3JpdGVDb2xsZWN0aW9uPGludD4oKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgY29sbGVjdGlvbi5BZGRSYW5nZShpdGVtcyk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEFzc2VydC5FcXVhbChleHBlY3RlZENvdW50LCBjb2xsZWN0aW9uLkNvdW50KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgW0ZhY3RdCisgICAgICAgIHB1YmxpYyB2b2lkIEFkZFJhbmdlU2hvdWxkQWRkTmV3SXRlbXNBZnRlck9sZEl0ZW1zKCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIG9sZEl0ZW1zID0gRW51bWVyYWJsZS5SYW5nZSgwLCA1KS5Ub0FycmF5KCk7CisgICAgICAgICAgICB2YXIgbmV3SXRlbXMgPSBFbnVtZXJhYmxlLlJhbmdlKDAsIDMpLlRvQXJyYXkoKTsKKyAgICAgICAgICAgIHZhciBjb2xsZWN0aW9uID0gbmV3IENvcHlPbldyaXRlQ29sbGVjdGlvbjxpbnQ+KCk7CisgICAgICAgICAgICBjb2xsZWN0aW9uLkFkZFJhbmdlKG9sZEl0ZW1zKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgY29sbGVjdGlvbi5BZGRSYW5nZShuZXdJdGVtcyk7CisKKyAgICAgICAgICAgIHZhciBleHBlY3RlZEl0ZW1zID0gbmV3IGludFtvbGRJdGVtcy5MZW5ndGggKyBuZXdJdGVtcy5MZW5ndGhdOworICAgICAgICAgICAgb2xkSXRlbXMuQ29weVRvKGV4cGVjdGVkSXRlbXMsIDApOworICAgICAgICAgICAgbmV3SXRlbXMuQ29weVRvKGV4cGVjdGVkSXRlbXMsIG9sZEl0ZW1zLkxlbmd0aCk7CisgICAgICAgICAgICBBc3NlcnQuRXF1YWwoZXhwZWN0ZWRJdGVtcywgY29sbGVjdGlvbi5TbmFwc2hvdCk7CisgICAgICAgIH0KKworICAgICAgICBbRmFjdF0KKyAgICAgICAgcHVibGljIHZvaWQgVHJ5UmVtb3ZlU2hvdWxkUmV0dXJuRmFsc2VGb3JVbmtub3duSXRlbSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IGludCB1bmtub3duSXRlbSA9IC0xOworICAgICAgICAgICAgdmFyIGtub3duSXRlbXMgPSBFbnVtZXJhYmxlLlJhbmdlKDAsIDUpLlRvQXJyYXkoKTsKKyAgICAgICAgICAgIHZhciBjb2xsZWN0aW9uID0gbmV3IENvcHlPbldyaXRlQ29sbGVjdGlvbjxpbnQ+KCk7CisgICAgICAgICAgICBjb2xsZWN0aW9uLkFkZFJhbmdlKGtub3duSXRlbXMpOworICAgICAgICAgICAgCisgICAgICAgICAgICBBc3NlcnQuRmFsc2UoY29sbGVjdGlvbi5UcnlSZW1vdmUodW5rbm93bkl0ZW0pKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgW0ZhY3RdCisgICAgICAgIHB1YmxpYyB2b2lkIFRyeVJlbW92ZVNob3VsZE5vdENoYW5nZUNvdW50Rm9yVW5rbm93bkl0ZW0oKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBpbnQgdW5rbm93bkl0ZW0gPSAtMTsKKyAgICAgICAgICAgIHZhciBrbm93bkl0ZW1zID0gRW51bWVyYWJsZS5SYW5nZSgwLCA1KS5Ub0FycmF5KCk7CisgICAgICAgICAgICB2YXIgY29sbGVjdGlvbiA9IG5ldyBDb3B5T25Xcml0ZUNvbGxlY3Rpb248aW50PigpOworICAgICAgICAgICAgY29sbGVjdGlvbi5BZGRSYW5nZShrbm93bkl0ZW1zKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgY29sbGVjdGlvbi5UcnlSZW1vdmUodW5rbm93bkl0ZW0pOworICAgICAgICAgICAgCisgICAgICAgICAgICBBc3NlcnQuRXF1YWwoa25vd25JdGVtcy5MZW5ndGgsIGNvbGxlY3Rpb24uQ291bnQpOworICAgICAgICB9CisKKyAgICAgICAgW0ZhY3RdCisgICAgICAgIHB1YmxpYyB2b2lkIFRyeVJlbW92ZVNob3VsZFJldHVyblRydWVGb3JLbm93bkl0ZW0oKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIga25vd25JdGVtcyA9IEVudW1lcmFibGUuUmFuZ2UoMCwgNSkuVG9BcnJheSgpOworICAgICAgICAgICAgdmFyIGNvbGxlY3Rpb24gPSBuZXcgQ29weU9uV3JpdGVDb2xsZWN0aW9uPGludD4oKTsKKyAgICAgICAgICAgIGNvbGxlY3Rpb24uQWRkUmFuZ2Uoa25vd25JdGVtcyk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEFzc2VydC5UcnVlKGNvbGxlY3Rpb24uVHJ5UmVtb3ZlKGtub3duSXRlbXNbMl0pKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgW0ZhY3RdCisgICAgICAgIHB1YmxpYyB2b2lkIFRyeVJlbW92ZVNob3VsZFJlbW92ZUtub3duSXRlbSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBrbm93bkl0ZW1zID0gRW51bWVyYWJsZS5SYW5nZSgwLCA1KS5Ub0FycmF5KCk7CisgICAgICAgICAgICB2YXIgY29sbGVjdGlvbiA9IG5ldyBDb3B5T25Xcml0ZUNvbGxlY3Rpb248aW50PigpOworICAgICAgICAgICAgY29sbGVjdGlvbi5BZGRSYW5nZShrbm93bkl0ZW1zKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgY29sbGVjdGlvbi5UcnlSZW1vdmUoa25vd25JdGVtc1syXSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEFzc2VydC5Eb2VzTm90Q29udGFpbihrbm93bkl0ZW1zWzJdLCBjb2xsZWN0aW9uLlNuYXBzaG90KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgW0ZhY3RdCisgICAgICAgIHB1YmxpYyB2b2lkIFRyeVJlbW92ZVNob3VsZERlY3JlbWVudENvdW50Rm9yS25vd25JdGVtKCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGtub3duSXRlbXMgPSBFbnVtZXJhYmxlLlJhbmdlKDAsIDUpLlRvQXJyYXkoKTsKKyAgICAgICAgICAgIHZhciBjb2xsZWN0aW9uID0gbmV3IENvcHlPbldyaXRlQ29sbGVjdGlvbjxpbnQ+KCk7CisgICAgICAgICAgICBjb2xsZWN0aW9uLkFkZFJhbmdlKGtub3duSXRlbXMpOworICAgICAgICAgICAgCisgICAgICAgICAgICBjb2xsZWN0aW9uLlRyeVJlbW92ZShrbm93bkl0ZW1zWzJdKTsKKworICAgICAgICAgICAgQXNzZXJ0LkVxdWFsKGtub3duSXRlbXMuTGVuZ3RoIC0gMSwgY29sbGVjdGlvbi5Db3VudCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFtGYWN0XQorICAgICAgICBwdWJsaWMgdm9pZCBUcnlSZW1vdmVPZkxhc3RJdGVtU2hvdWxkRW1wdHlUaGVBcnJheSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBjb2xsZWN0aW9uID0gbmV3IENvcHlPbldyaXRlQ29sbGVjdGlvbjxpbnQ+KCk7CisgICAgICAgICAgICBjb25zdCBpbnQgbGFzdEl0ZW0gPSAzOworICAgICAgICAgICAgY29sbGVjdGlvbi5BZGRSYW5nZShuZXdbXSB7bGFzdEl0ZW19KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgY29sbGVjdGlvbi5UcnlSZW1vdmUobGFzdEl0ZW0pOworCisgICAgICAgICAgICBBc3NlcnQuRXF1YWwobmV3IGludFswXSwgY29sbGVjdGlvbi5TbmFwc2hvdCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFtUaGVvcnldCisgICAgICAgIFtJbmxpbmVEYXRhKDApXQorICAgICAgICBbSW5saW5lRGF0YSgxKV0KKyAgICAgICAgW0lubGluZURhdGEoMildCisgICAgICAgIFtJbmxpbmVEYXRhKDgpXQorICAgICAgICBwdWJsaWMgdm9pZCBTbmFwc2hvdFNob3VsZFJldHVybkFkZGVkSXRlbXMoaW50IG5ySXRlbXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpdGVtcyA9IEVudW1lcmFibGUuUmFuZ2UoMCwgbnJJdGVtcykuVG9BcnJheSgpOworICAgICAgICAgICAgdmFyIGNvbGxlY3Rpb24gPSBuZXcgQ29weU9uV3JpdGVDb2xsZWN0aW9uPGludD4oKTsKKyAgICAgICAgICAgIGNvbGxlY3Rpb24uQWRkUmFuZ2UoaXRlbXMpOworICAgICAgICAgICAgCisgICAgICAgICAgICBBc3NlcnQuRXF1YWwoaXRlbXMsIGNvbGxlY3Rpb24uU25hcHNob3QpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBbVGhlb3J5XQorICAgICAgICBbSW5saW5lRGF0YSgwKV0KKyAgICAgICAgW0lubGluZURhdGEoMSldCisgICAgICAgIFtJbmxpbmVEYXRhKDIpXQorICAgICAgICBbSW5saW5lRGF0YSg4KV0KKyAgICAgICAgcHVibGljIHZvaWQgUmVtb3ZlQW5kR2V0QWxsU2hvdWxkUmV0dXJuQWxsSXRlbXMoaW50IG5ySXRlbXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpdGVtcyA9IEVudW1lcmFibGUuUmFuZ2UoMCwgbnJJdGVtcykuVG9BcnJheSgpOworICAgICAgICAgICAgdmFyIGNvbGxlY3Rpb24gPSBuZXcgQ29weU9uV3JpdGVDb2xsZWN0aW9uPGludD4oKTsKKyAgICAgICAgICAgIGNvbGxlY3Rpb24uQWRkUmFuZ2UoaXRlbXMpOworICAgICAgICAgICAgCisgICAgICAgICAgICBBc3NlcnQuRXF1YWwoaXRlbXMsIGNvbGxlY3Rpb24uUmVtb3ZlQW5kR2V0QWxsKCkpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBbVGhlb3J5XQorICAgICAgICBbSW5saW5lRGF0YSgwKV0KKyAgICAgICAgW0lubGluZURhdGEoMSldCisgICAgICAgIFtJbmxpbmVEYXRhKDIpXQorICAgICAgICBbSW5saW5lRGF0YSg4KV0KKyAgICAgICAgcHVibGljIHZvaWQgUmVtb3ZlQW5kR2V0QWxsU2hvdWxkRW1wdHlUaGVBcnJheShpbnQgbnJJdGVtcykKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGl0ZW1zID0gRW51bWVyYWJsZS5SYW5nZSgwLCBuckl0ZW1zKS5Ub0FycmF5KCk7CisgICAgICAgICAgICB2YXIgY29sbGVjdGlvbiA9IG5ldyBDb3B5T25Xcml0ZUNvbGxlY3Rpb248aW50PigpOworICAgICAgICAgICAgY29sbGVjdGlvbi5BZGRSYW5nZShpdGVtcyk7CisKKyAgICAgICAgICAgIGNvbGxlY3Rpb24uUmVtb3ZlQW5kR2V0QWxsKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEFzc2VydC5FcXVhbChuZXcgaW50WzBdLCBjb2xsZWN0aW9uLlNuYXBzaG90KTsKKyAgICAgICAgfQorCisgICAgICAgIFtGYWN0XQorICAgICAgICBwdWJsaWMgdm9pZCBBZGRSYW5nZVNob3VsZEFsbG93UGFyYWxsZWxDYWxscygpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBjb2xsZWN0aW9uID0gbmV3IENvcHlPbldyaXRlQ29sbGVjdGlvbjxpbnQ+KCk7CisgICAgICAgICAgICBjb25zdCBpbnQgbnJPZlBhcmFsbGVsT3BlcmF0aW9ucyA9IDEwMDsKKyAgICAgICAgICAgIHZhciBhZGRSYW5nZUFjdGlvbnMgPSBuZXcgQWN0aW9uW25yT2ZQYXJhbGxlbE9wZXJhdGlvbnNdOworICAgICAgICAgICAgdmFyIGFkZGVkSXRlbXMgPSBuZXcgTGlzdDxpbnQ+KG5yT2ZQYXJhbGxlbE9wZXJhdGlvbnMgKiAzKTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnJPZlBhcmFsbGVsT3BlcmF0aW9uczsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBpdGVtc1RvQWRkID0gbmV3W10ge2ksIGkgKyAxLCBpICsgMn07CisgICAgICAgICAgICAgICAgYWRkZWRJdGVtcy5BZGRSYW5nZShpdGVtc1RvQWRkKTsKKyAgICAgICAgICAgICAgICBhZGRSYW5nZUFjdGlvbnNbaV0gPSAoKSA9PiBjb2xsZWN0aW9uLkFkZFJhbmdlKGl0ZW1zVG9BZGQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBQYXJhbGxlbC5JbnZva2UoYWRkUmFuZ2VBY3Rpb25zKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgQXNzZXJ0Q29sbGVjdGlvbkNvbnRhaW5zRXhhY3RseVVub3JkZXJlZChjb2xsZWN0aW9uLCBhZGRlZEl0ZW1zKTsKKyAgICAgICAgfQorCisgICAgICAgIHByaXZhdGUgc3RhdGljIHZvaWQgQXNzZXJ0Q29sbGVjdGlvbkNvbnRhaW5zRXhhY3RseVVub3JkZXJlZChDb3B5T25Xcml0ZUNvbGxlY3Rpb248aW50PiBjb2xsZWN0aW9uLCBJRW51bWVyYWJsZTxpbnQ+IGV4cGVjdGVkSXRlbXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvcmVhY2ggKHZhciBpdGVtIGluIGV4cGVjdGVkSXRlbXMpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQXNzZXJ0LlRydWUoY29sbGVjdGlvbi5UcnlSZW1vdmUoaXRlbSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQXNzZXJ0LkVxdWFsKDAsIGNvbGxlY3Rpb24uQ291bnQpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBbRmFjdF0KKyAgICAgICAgcHVibGljIHZvaWQgVHJ5UmVtb3ZlU2hvdWxkQWxsb3dQYXJhbGxlbENhbGxzKCkKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgaW50IG5yT2ZQYXJhbGxlbE9wZXJhdGlvbnMgPSAxMDA7CisgICAgICAgICAgICB2YXIgaXRlbXMgPSBFbnVtZXJhYmxlLlJhbmdlKDAsIG5yT2ZQYXJhbGxlbE9wZXJhdGlvbnMpLlRvQXJyYXkoKTsKKyAgICAgICAgICAgIHZhciBjb2xsZWN0aW9uID0gbmV3IENvcHlPbldyaXRlQ29sbGVjdGlvbjxpbnQ+KCk7CisgICAgICAgICAgICBjb2xsZWN0aW9uLkFkZFJhbmdlKGl0ZW1zKTsKKyAgICAgICAgICAgIHZhciB0cnlSZW1vdmVBY3Rpb25zID0gbmV3IEFjdGlvbltuck9mUGFyYWxsZWxPcGVyYXRpb25zXTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnJPZlBhcmFsbGVsT3BlcmF0aW9uczsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBpdGVtID0gaTsKKyAgICAgICAgICAgICAgICB0cnlSZW1vdmVBY3Rpb25zW2ldID0gKCkgPT4gY29sbGVjdGlvbi5UcnlSZW1vdmUoaXRlbSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFBhcmFsbGVsLkludm9rZSh0cnlSZW1vdmVBY3Rpb25zKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgQXNzZXJ0LkVxdWFsKDAsIGNvbGxlY3Rpb24uQ291bnQpOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuVW5pdFRlc3QvRHJpdmVyL0dyZW1saW5DbGllbnRUZXN0cy5jcyBiL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuVW5pdFRlc3QvRHJpdmVyL0dyZW1saW5DbGllbnRUZXN0cy5jcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODZkYzkwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5Vbml0VGVzdC9Ecml2ZXIvR3JlbWxpbkNsaWVudFRlc3RzLmNzCkBAIC0wLDAgKzEsNDUgQEAKK++7vyNyZWdpb24gTGljZW5zZQorCisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNlbmRyZWdpb24KKwordXNpbmcgU3lzdGVtOwordXNpbmcgR3JlbWxpbi5OZXQuRHJpdmVyOwordXNpbmcgWHVuaXQ7CisKK25hbWVzcGFjZSBHcmVtbGluLk5ldC5Vbml0VGVzdC5Ecml2ZXIKK3sKKyAgICBwdWJsaWMgY2xhc3MgR3JlbWxpbkNsaWVudFRlc3RzCisgICAgeworICAgICAgICBbRmFjdF0KKyAgICAgICAgcHVibGljIHZvaWQgU2hvdWxkVGhyb3dPbkV4ZWN1dGlvbk9mTXVsdGlDb25uZWN0aW9uSW5Qb29sKCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGhvc3QgPSAibG9jYWxob3N0IjsKKyAgICAgICAgICAgIHZhciBwb3J0ID0gODE4MjsKKyAgICAgICAgICAgIHZhciBzZXNzaW9uSWQgPSBHdWlkLk5ld0d1aWQoKS5Ub1N0cmluZygpOworICAgICAgICAgICAgLy8gc2V0IHBvb2wgc2l6ZSBtb3JlIHRoYW4gMQorICAgICAgICAgICAgdmFyIHBvb2xTZXR0aW5ncyA9IG5ldyBDb25uZWN0aW9uUG9vbFNldHRpbmdzIHtQb29sU2l6ZSA9IDJ9OworCisgICAgICAgICAgICB2YXIgZ3JlbWxpblNlcnZlciA9IG5ldyBHcmVtbGluU2VydmVyKGhvc3QsIHBvcnQpOworICAgICAgICAgICAgQXNzZXJ0LlRocm93czxBcmd1bWVudE91dE9mUmFuZ2VFeGNlcHRpb24+KCgpID0+IG5ldyBHcmVtbGluQ2xpZW50KGdyZW1saW5TZXJ2ZXIsIGNvbm5lY3Rpb25Qb29sU2V0dGluZ3M6IHBvb2xTZXR0aW5ncywgc2Vzc2lvbklkOiBzZXNzaW9uSWQpKTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LlVuaXRUZXN0L0RyaXZlci9Kc29uTWVzc2FnZVNlcmlhbGl6ZXJUZXN0cy5jcyBiL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuVW5pdFRlc3QvRHJpdmVyL0pzb25NZXNzYWdlU2VyaWFsaXplclRlc3RzLmNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3NzY2YTUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LlVuaXRUZXN0L0RyaXZlci9Kc29uTWVzc2FnZVNlcmlhbGl6ZXJUZXN0cy5jcwpAQCAtMCwwICsxLDcxIEBACisjcmVnaW9uIExpY2Vuc2UKKworLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjZW5kcmVnaW9uCisKK3VzaW5nIEdyZW1saW4uTmV0LkRyaXZlcjsKK3VzaW5nIEdyZW1saW4uTmV0LkRyaXZlci5NZXNzYWdlczsKK3VzaW5nIE5ld3RvbnNvZnQuSnNvbjsKK3VzaW5nIE5ld3RvbnNvZnQuSnNvbi5MaW5xOwordXNpbmcgU3lzdGVtOwordXNpbmcgU3lzdGVtLlRleHQ7Cit1c2luZyBYdW5pdDsKKworbmFtZXNwYWNlIEdyZW1saW4uTmV0LlVuaXRUZXN0LkRyaXZlcgoreworICAgIC8vIFdpbGwgYmUgdXNlZCBpbiBmdXR1cmUgdG8gc3dpdGNoIHRvIG5ldyAuTkVUIENvcmUgSnNvbiBkZXNlcmlhbGl6ZXIKKyAgICBwdWJsaWMgY2xhc3MgSnNvbk1lc3NhZ2VTZXJpYWxpemVyVGVzdHMKKyAgICB7CisgICAgICAgIFtGYWN0XQorICAgICAgICBwdWJsaWMgdm9pZCBEZXNlcmlhbGl6aW5nTnVsbFRocm93cygpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBzdXQgPSBuZXcgSnNvbk1lc3NhZ2VTZXJpYWxpemVyKEdyZW1saW5DbGllbnQuRGVmYXVsdE1pbWVUeXBlKTsKKworICAgICAgICAgICAgQXNzZXJ0LlRocm93czxBcmd1bWVudE51bGxFeGNlcHRpb24+KCgpPT4gc3V0LkRlc2VyaWFsaXplTWVzc2FnZTxSZXNwb25zZU1lc3NhZ2U8SlRva2VuPj4obnVsbCkpOworICAgICAgICB9CisKKyAgICAgICAgW0ZhY3RdCisgICAgICAgIHB1YmxpYyB2b2lkIEVtcHR5QXJyYXlEZXNlcmlhbGl6ZWRJbnRvTnVsbCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBzdXQgPSBuZXcgSnNvbk1lc3NhZ2VTZXJpYWxpemVyKEdyZW1saW5DbGllbnQuRGVmYXVsdE1pbWVUeXBlKTsKKworICAgICAgICAgICAgQXNzZXJ0Lk51bGwoc3V0LkRlc2VyaWFsaXplTWVzc2FnZTxSZXNwb25zZU1lc3NhZ2U8SlRva2VuPj4obmV3IGJ5dGVbMF0pKTsgICAgICAgICAgICAKKyAgICAgICAgfQorCisgICAgICAgIFtGYWN0XQorICAgICAgICBwdWJsaWMgdm9pZCBFbXB0eVN0cmluZ0Rlc2VyaWFsaXplZEludG9OdWxsKCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHN1dCA9IG5ldyBKc29uTWVzc2FnZVNlcmlhbGl6ZXIoR3JlbWxpbkNsaWVudC5EZWZhdWx0TWltZVR5cGUpOworICAgICAgICAgICAgdmFyIG9mRW1wdHkgPSBFbmNvZGluZy5VVEY4LkdldEJ5dGVzKCIiKTsKKworICAgICAgICAgICAgQXNzZXJ0Lk51bGwoc3V0LkRlc2VyaWFsaXplTWVzc2FnZTxSZXNwb25zZU1lc3NhZ2U8SlRva2VuPj4ob2ZFbXB0eSkpOworICAgICAgICB9CisKKyAgICAgICAgW0ZhY3RdCisgICAgICAgIHB1YmxpYyB2b2lkIEpzb25OdWxsRGVzZXJpYWxpemVkSW50b051bGwoKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgc3V0ID0gbmV3IEpzb25NZXNzYWdlU2VyaWFsaXplcihHcmVtbGluQ2xpZW50LkRlZmF1bHRNaW1lVHlwZSk7CisgICAgICAgICAgICB2YXIgb2ZOdWxsID0gRW5jb2RpbmcuVVRGOC5HZXRCeXRlcygibnVsbCIpOworCisgICAgICAgICAgICBBc3NlcnQuTnVsbChzdXQuRGVzZXJpYWxpemVNZXNzYWdlPFJlc3BvbnNlTWVzc2FnZTxKVG9rZW4+PihvZk51bGwpKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuVW5pdFRlc3QvU3RydWN0dXJlL0lPL0dyYXBoU09OL0dyYXBoU09OUmVhZGVyVGVzdHMuY3MgYi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LlVuaXRUZXN0L1N0cnVjdHVyZS9JTy9HcmFwaFNPTi9HcmFwaFNPTlJlYWRlclRlc3RzLmNzCmluZGV4IGFmNDhmMDIuLjNhNDkxNDMgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuVW5pdFRlc3QvU3RydWN0dXJlL0lPL0dyYXBoU09OL0dyYXBoU09OUmVhZGVyVGVzdHMuY3MKKysrIGIvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5Vbml0VGVzdC9TdHJ1Y3R1cmUvSU8vR3JhcGhTT04vR3JhcGhTT05SZWFkZXJUZXN0cy5jcwpAQCAtMjgwLDYgKzI4MCwxOCBAQAogICAgICAgICAgICAgQXNzZXJ0LkVxdWFsKFQuTGFiZWwsIHJlYWRUKTsKICAgICAgICAgfQogCisgICAgICAgIFtUaGVvcnksIE1lbWJlckRhdGEobmFtZW9mKFZlcnNpb25zKSldCisgICAgICAgIHB1YmxpYyB2b2lkIFNob3VsZERlc2VyaWFsaXplRGlyZWN0aW9uKGludCB2ZXJzaW9uKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgc2VyaWFsaXplZFZhbHVlID0gIntcIkB0eXBlXCI6XCJnOkRpcmVjdGlvblwiLFwiQHZhbHVlXCI6XCJPVVRcIn0iOworICAgICAgICAgICAgdmFyIHJlYWRlciA9IENyZWF0ZVN0YW5kYXJkR3JhcGhTT05SZWFkZXIodmVyc2lvbik7CisKKyAgICAgICAgICAgIHZhciBqT2JqZWN0ID0gSk9iamVjdC5QYXJzZShzZXJpYWxpemVkVmFsdWUpOworICAgICAgICAgICAgdmFyIGRlc2VyaWFsaXplZFZhbHVlID0gcmVhZGVyLlRvT2JqZWN0KGpPYmplY3QpOworCisgICAgICAgICAgICBBc3NlcnQuRXF1YWwoRGlyZWN0aW9uLk91dCwgZGVzZXJpYWxpemVkVmFsdWUpOworICAgICAgICB9CisKICAgICAgICAgW0ZhY3RdCiAgICAgICAgIHB1YmxpYyB2b2lkIFNob3VsZERlc2VyaWFsaXplUGF0aEZyb21HcmFwaFNPTjIoKQogICAgICAgICB7CkBAIC0yODksNyArMzAxLDcgQEAKIAogICAgICAgICAgICAgUGF0aCByZWFkUGF0aCA9IHJlYWRlci5Ub09iamVjdChKT2JqZWN0LlBhcnNlKGdyYXBoU29uKSk7CiAKLSAgICAgICAgICAgIEFzc2VydC5FcXVhbCgiW3ZbMV0sIHZbM10sIGxvcF0iLCByZWFkUGF0aC5Ub1N0cmluZygpKTsKKyAgICAgICAgICAgIEFzc2VydC5FcXVhbCgicGF0aFt2WzFdLCB2WzNdLCBsb3BdIiwgcmVhZFBhdGguVG9TdHJpbmcoKSk7CiAgICAgICAgICAgICBBc3NlcnQuRXF1YWwobmV3IFZlcnRleCgxKSwgcmVhZFBhdGhbMF0pOwogICAgICAgICAgICAgQXNzZXJ0LkVxdWFsKG5ldyBWZXJ0ZXgoMSksIHJlYWRQYXRoWyJhIl0pOwogICAgICAgICAgICAgQXNzZXJ0LkVxdWFsKCJsb3AiLCByZWFkUGF0aFsyXSk7CkBAIC0zMDYsNyArMzE4LDcgQEAKIAogICAgICAgICAgICAgUGF0aCByZWFkUGF0aCA9IHJlYWRlci5Ub09iamVjdChKT2JqZWN0LlBhcnNlKGdyYXBoU29uKSk7CiAKLSAgICAgICAgICAgIEFzc2VydC5FcXVhbCgiW3ZbNV1dIiwgcmVhZFBhdGguVG9TdHJpbmcoKSk7CisgICAgICAgICAgICBBc3NlcnQuRXF1YWwoInBhdGhbdls1XV0iLCByZWFkUGF0aC5Ub1N0cmluZygpKTsKICAgICAgICAgICAgIEFzc2VydC5FcXVhbChuZXcgVmVydGV4KDVMKSwgcmVhZFBhdGhbMF0pOwogICAgICAgICAgICAgQXNzZXJ0LkVxdWFsKG5ldyBWZXJ0ZXgoNUwpLCByZWFkUGF0aFsieiJdKTsKICAgICAgICAgICAgIEFzc2VydC5FcXVhbCgxLCByZWFkUGF0aC5Db3VudCk7CkBAIC00NTYsMTAgKzQ2OCwzMiBAQAogICAgICAgICAgICAgQXNzZXJ0LkVxdWFsKG5ldyBEaWN0aW9uYXJ5PG9iamVjdCwgb2JqZWN0PnsgeyAiYSIsIDEgfSwgeyAiYiIsIDIgfX0sIGRlc2VyaWFsaXplZFZhbHVlKTsKICAgICAgICAgfQogCisgICAgICAgIFtUaGVvcnksIE1lbWJlckRhdGEobmFtZW9mKFZlcnNpb25zU3VwcG9ydGluZ0NvbGxlY3Rpb25zKSldCisgICAgICAgIHB1YmxpYyB2b2lkIFNob3VsZERlc2VyaWFsaXplQnVsa1NldChpbnQgdmVyc2lvbikKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3Qgc3RyaW5nIGpzb24gPSAie1wiQHR5cGVcIjogXCJnOkJ1bGtTZXRcIiwgXCJAdmFsdWVcIjogWyIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXCJtYXJrb1wiLCB7XCJAdHlwZVwiOiBcImc6SW50NjRcIiwgXCJAdmFsdWVcIjogMX0sICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXCJqb3NoXCIsIHtcIkB0eXBlXCI6IFwiZzpJbnQ2NFwiLCBcIkB2YWx1ZVwiOiAzfV19IjsKKyAgICAgICAgICAgIHZhciByZWFkZXIgPSBDcmVhdGVTdGFuZGFyZEdyYXBoU09OUmVhZGVyKHZlcnNpb24pOworCisgICAgICAgICAgICB2YXIgZGVzZXJpYWxpemVkVmFsdWUgPSByZWFkZXIuVG9PYmplY3QoSk9iamVjdC5QYXJzZShqc29uKSk7CisKKyAgICAgICAgICAgIEFzc2VydC5FcXVhbChuZXcgTGlzdDxvYmplY3Q+eyAibWFya28iLCAiam9zaCIsICJqb3NoIiwgImpvc2giIH0sIGRlc2VyaWFsaXplZFZhbHVlKTsKKyAgICAgICAgfQorCisgICAgICAgIFtGYWN0XQorICAgICAgICBwdWJsaWMgdm9pZCBTaG91bGREZXNlcmlhbGl6ZUJ1bGtTZXRXaXRoR3JhcGhTT04zKCkKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3Qgc3RyaW5nIGpzb24gPQorICAgICAgICAgICAgICAgICJ7XCJAdHlwZVwiOlwiZzpMaXN0XCIsXCJAdmFsdWVcIjpbe1wiQHR5cGVcIjpcImc6VHJhdmVyc2VyXCIsXCJAdmFsdWVcIjp7XCJidWxrXCI6e1wiQHR5cGVcIjpcImc6SW50NjRcIixcIkB2YWx1ZVwiOjF9LFwidmFsdWVcIjp7XCJAdHlwZVwiOlwiZzpCdWxrU2V0XCIsXCJAdmFsdWVcIjpbe1wiQHR5cGVcIjpcImc6SW50NjRcIixcIkB2YWx1ZVwiOjF9LHtcIkB0eXBlXCI6XCJnOkludDY0XCIsXCJAdmFsdWVcIjoyfSx7XCJAdHlwZVwiOlwiZzpJbnQ2NFwiLFwiQHZhbHVlXCI6MH0se1wiQHR5cGVcIjpcImc6SW50NjRcIixcIkB2YWx1ZVwiOjN9LHtcIkB0eXBlXCI6XCJnOkludDY0XCIsXCJAdmFsdWVcIjoyfSx7XCJAdHlwZVwiOlwiZzpJbnQ2NFwiLFwiQHZhbHVlXCI6MX0se1wiQHR5cGVcIjpcImc6RG91YmxlXCIsXCJAdmFsdWVcIjoxLjB9LHtcIkB0eXBlXCI6XCJnOkludDY0XCIsXCJAdmFsdWVcIjoyfV19fX1dfSI7CisgICAgICAgICAgICB2YXIgcmVhZGVyID0gQ3JlYXRlU3RhbmRhcmRHcmFwaFNPTlJlYWRlcigzKTsKKyAgICAgICAgICAgIHZhciBkZXNlcmlhbGl6ZWRWYWx1ZSA9IHJlYWRlci5Ub09iamVjdChKT2JqZWN0LlBhcnNlKGpzb24pKTsKKyAgICAgICAgfQorCiAgICAgICAgIFtGYWN0XQogICAgICAgICBwdWJsaWMgdm9pZCBTaG91bGREZXNlcmlhbGl6ZVRyYXZlcnNlcigpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGR5bmFtaWMgZCA9IEpPYmplY3QuUGFyc2UoIntcIkB0eXBlXCI6XCJnOlRyYXZlcnNlclwiLFwiQHZhbHVlXCI6MX0iKTsKKyAgICAgICAgICAgIGR5bmFtaWMgZCA9IEpPYmplY3QuUGFyc2UoIntcIkB0eXBlXCI6XCJnOlRyYXZlcnNlclwiLFwiQHZhbHVlXCI6MSxcImJ1bGtcIjoge1widHlwZVwiOlwiZzpJbnQ2NFwiLFwidmFsdWVcIjoxMH19Iik7CiAKICAgICAgICAgICAgIEFzc2VydC5Ob3ROdWxsKGQpOwogICAgICAgICAgICAgQXNzZXJ0LkVxdWFsKCJnOlRyYXZlcnNlciIsIChzdHJpbmcpZFsiQHR5cGUiXSk7CmRpZmYgLS1naXQgYS9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LlVuaXRUZXN0L1N0cnVjdHVyZS9QYXRoVGVzdHMuY3MgYi9ncmVtbGluLWRvdG5ldC90ZXN0L0dyZW1saW4uTmV0LlVuaXRUZXN0L1N0cnVjdHVyZS9QYXRoVGVzdHMuY3MKaW5kZXggY2JjM2Y4ZC4uNmRmOTJiYSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kb3RuZXQvdGVzdC9HcmVtbGluLk5ldC5Vbml0VGVzdC9TdHJ1Y3R1cmUvUGF0aFRlc3RzLmNzCisrKyBiL2dyZW1saW4tZG90bmV0L3Rlc3QvR3JlbWxpbi5OZXQuVW5pdFRlc3QvU3RydWN0dXJlL1BhdGhUZXN0cy5jcwpAQCAtMzY0LDcgKzM2NCw3IEBACiAKICAgICAgICAgICAgIHZhciBwYXRoU3RyID0gcGF0aC5Ub1N0cmluZygpOwogCi0gICAgICAgICAgICBBc3NlcnQuRXF1YWwoIlsxLCB2WzFdLCBoZWxsb10iLCBwYXRoU3RyKTsKKyAgICAgICAgICAgIEFzc2VydC5FcXVhbCgicGF0aFsxLCB2WzFdLCBoZWxsb10iLCBwYXRoU3RyKTsKICAgICAgICAgfQogCiAgICAgICAgIFtGYWN0XQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kb3RuZXQvdGVzdC9wb20ueG1sIGIvZ3JlbWxpbi1kb3RuZXQvdGVzdC9wb20ueG1sCmluZGV4IGM2MzVkM2UuLjllNzkyMzggMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZG90bmV0L3Rlc3QvcG9tLnhtbAorKysgYi9ncmVtbGluLWRvdG5ldC90ZXN0L3BvbS54bWwKQEAgLTIxLDcgKzIxLDcgQEAKICAgICA8cGFyZW50PgogICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLnRpbmtlcnBvcDwvZ3JvdXBJZD4KICAgICAgICAgPGFydGlmYWN0SWQ+Z3JlbWxpbi1kb3RuZXQ8L2FydGlmYWN0SWQ+Ci0gICAgICAgIDx2ZXJzaW9uPjMuMy4xMS1TTkFQU0hPVDwvdmVyc2lvbj4KKyAgICAgICAgPHZlcnNpb24+My40LjctU05BUFNIT1Q8L3ZlcnNpb24+CiAgICAgPC9wYXJlbnQ+CiAgICAgPGFydGlmYWN0SWQ+Z3JlbWxpbi1kb3RuZXQtdGVzdHM8L2FydGlmYWN0SWQ+CiAgICAgPG5hbWU+QXBhY2hlIFRpbmtlclBvcCA6OiBHcmVtbGluLk5ldCAtIFRlc3RzPC9uYW1lPgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kcml2ZXIvcG9tLnhtbCBiL2dyZW1saW4tZHJpdmVyL3BvbS54bWwKaW5kZXggYmUzN2U4Ny4uZDZmMjY5MyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kcml2ZXIvcG9tLnhtbAorKysgYi9ncmVtbGluLWRyaXZlci9wb20ueG1sCkBAIC0yMSw3ICsyMSw3IEBACiAgICAgPHBhcmVudD4KICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS50aW5rZXJwb3A8L2dyb3VwSWQ+CiAgICAgICAgIDxhcnRpZmFjdElkPnRpbmtlcnBvcDwvYXJ0aWZhY3RJZD4KLSAgICAgICAgPHZlcnNpb24+My4zLjExLVNOQVBTSE9UPC92ZXJzaW9uPgorICAgICAgICA8dmVyc2lvbj4zLjQuNy1TTkFQU0hPVDwvdmVyc2lvbj4KICAgICA8L3BhcmVudD4KICAgICA8YXJ0aWZhY3RJZD5ncmVtbGluLWRyaXZlcjwvYXJ0aWZhY3RJZD4KICAgICA8bmFtZT5BcGFjaGUgVGlua2VyUG9wIDo6IEdyZW1saW4gRHJpdmVyPC9uYW1lPgpAQCAtNTYsMTkgKzU2LDYgQEAKICAgICAgICAgICAgIDwvZXhjbHVzaW9ucz4KICAgICAgICAgPC9kZXBlbmRlbmN5PgogICAgICAgICA8ZGVwZW5kZW5jeT4KLSAgICAgICAgICAgIDxncm91cElkPm9yZy5jb2RlaGF1cy5ncm9vdnk8L2dyb3VwSWQ+Ci0gICAgICAgICAgICA8YXJ0aWZhY3RJZD5ncm9vdnktc3FsPC9hcnRpZmFjdElkPgotICAgICAgICAgICAgPHZlcnNpb24+JHtncm9vdnkudmVyc2lvbn08L3ZlcnNpb24+Ci0gICAgICAgICAgICA8Y2xhc3NpZmllcj5pbmR5PC9jbGFzc2lmaWVyPgotICAgICAgICAgICAgPGV4Y2x1c2lvbnM+Ci0gICAgICAgICAgICAgICAgPCEtLSBleGNsdWRlIG5vbi1pbmR5IHR5cGUgLS0+Ci0gICAgICAgICAgICAgICAgPGV4Y2x1c2lvbj4KLSAgICAgICAgICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLmNvZGVoYXVzLmdyb292eTwvZ3JvdXBJZD4KLSAgICAgICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+Z3Jvb3Z5PC9hcnRpZmFjdElkPgotICAgICAgICAgICAgICAgIDwvZXhjbHVzaW9uPgotICAgICAgICAgICAgPC9leGNsdXNpb25zPgotICAgICAgICA8L2RlcGVuZGVuY3k+Ci0gICAgICAgIDxkZXBlbmRlbmN5PgogICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS5jb21tb25zPC9ncm91cElkPgogICAgICAgICAgICAgPGFydGlmYWN0SWQ+Y29tbW9ucy1sYW5nMzwvYXJ0aWZhY3RJZD4KICAgICAgICAgPC9kZXBlbmRlbmN5PgpAQCAtODIsMTYgKzY5LDIzIEBACiAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5sb2c0ajwvYXJ0aWZhY3RJZD4KICAgICAgICAgICAgIDxvcHRpb25hbD50cnVlPC9vcHRpb25hbD4KICAgICAgICAgPC9kZXBlbmRlbmN5PgotICAgICAgICA8IS0tIFRFU1QgLS0+Ci0gICAgICAgIDxkZXBlbmRlbmN5PgotICAgICAgICAgICAgPGdyb3VwSWQ+anVuaXQ8L2dyb3VwSWQ+Ci0gICAgICAgICAgICA8YXJ0aWZhY3RJZD5qdW5pdDwvYXJ0aWZhY3RJZD4KLSAgICAgICAgICAgIDxzY29wZT50ZXN0PC9zY29wZT4KLSAgICAgICAgPC9kZXBlbmRlbmN5PgorICAgICAgICA8IS0tIFRpbmtlckdyYXBoIGlzIGFuIG9wdGlvbmFsIGRlcGVuZGVuY3kgdGhhdCBpcyBvbmx5IHJlcXVpcmVkIGlmIGRvaW5nIGRlc2VyaWFsaXphdGlvbiBvZiBHcmFwaCBpbnN0YW5jZXMgLS0+CiAgICAgICAgIDxkZXBlbmRlbmN5PgogICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS50aW5rZXJwb3A8L2dyb3VwSWQ+CiAgICAgICAgICAgICA8YXJ0aWZhY3RJZD50aW5rZXJncmFwaC1ncmVtbGluPC9hcnRpZmFjdElkPgogICAgICAgICAgICAgPHZlcnNpb24+JHtwcm9qZWN0LnZlcnNpb259PC92ZXJzaW9uPgorICAgICAgICAgICAgPG9wdGlvbmFsPnRydWU8L29wdGlvbmFsPgorICAgICAgICA8L2RlcGVuZGVuY3k+CisgICAgICAgIDwhLS0gVEVTVCAtLT4KKyAgICAgICAgPGRlcGVuZGVuY3k+CisgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLnRpbmtlcnBvcDwvZ3JvdXBJZD4KKyAgICAgICAgICAgIDxhcnRpZmFjdElkPmdyZW1saW4tdGVzdDwvYXJ0aWZhY3RJZD4KKyAgICAgICAgICAgIDx2ZXJzaW9uPiR7cHJvamVjdC52ZXJzaW9ufTwvdmVyc2lvbj4KKyAgICAgICAgICAgIDxzY29wZT50ZXN0PC9zY29wZT4KKyAgICAgICAgPC9kZXBlbmRlbmN5PgorICAgICAgICA8ZGVwZW5kZW5jeT4KKyAgICAgICAgICAgIDxncm91cElkPmp1bml0PC9ncm91cElkPgorICAgICAgICAgICAgPGFydGlmYWN0SWQ+anVuaXQ8L2FydGlmYWN0SWQ+CiAgICAgICAgICAgICA8c2NvcGU+dGVzdDwvc2NvcGU+CiAgICAgICAgIDwvZGVwZW5kZW5jeT4KICAgICAgICAgPGRlcGVuZGVuY3k+CmRpZmYgLS1naXQgYS9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL0NoYW5uZWxpemVyLmphdmEgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL0NoYW5uZWxpemVyLmphdmEKaW5kZXggMjEzZDVmMS4uYzRiZDNlMSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9DaGFubmVsaXplci5qYXZhCisrKyBiL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvQ2hhbm5lbGl6ZXIuamF2YQpAQCAtMTksNiArMTksNyBAQAogcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlcjsKIAogaW1wb3J0IGlvLm5ldHR5LmNoYW5uZWwuQ2hhbm5lbDsKK2ltcG9ydCBpby5uZXR0eS5oYW5kbGVyLmNvZGVjLmh0dHAuRW1wdHlIdHRwSGVhZGVyczsKIGltcG9ydCBpby5uZXR0eS5oYW5kbGVyLmNvZGVjLmh0dHAud2Vic29ja2V0eC5DbG9zZVdlYlNvY2tldEZyYW1lOwogaW1wb3J0IGlvLm5ldHR5LmhhbmRsZXIuY29kZWMuaHR0cC53ZWJzb2NrZXR4LlBpbmdXZWJTb2NrZXRGcmFtZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5leGNlcHRpb24uQ29ubmVjdGlvbkV4Y2VwdGlvbjsKQEAgLTMyLDcgKzMzLDYgQEAKIGltcG9ydCBpby5uZXR0eS5jaGFubmVsLkNoYW5uZWxQaXBlbGluZTsKIGltcG9ydCBpby5uZXR0eS5jaGFubmVsLnNvY2tldC5Tb2NrZXRDaGFubmVsOwogaW1wb3J0IGlvLm5ldHR5LmhhbmRsZXIuY29kZWMuaHR0cC5IdHRwQ2xpZW50Q29kZWM7Ci1pbXBvcnQgaW8ubmV0dHkuaGFuZGxlci5jb2RlYy5odHRwLkh0dHBIZWFkZXJzOwogaW1wb3J0IGlvLm5ldHR5LmhhbmRsZXIuY29kZWMuaHR0cC5IdHRwT2JqZWN0QWdncmVnYXRvcjsKIGltcG9ydCBpby5uZXR0eS5oYW5kbGVyLmNvZGVjLmh0dHAud2Vic29ja2V0eC5XZWJTb2NrZXRDbGllbnRIYW5kc2hha2VyRmFjdG9yeTsKIGltcG9ydCBpby5uZXR0eS5oYW5kbGVyLmNvZGVjLmh0dHAud2Vic29ja2V0eC5XZWJTb2NrZXRWZXJzaW9uOwpAQCAtMjAxLDcgKzIwMSw3IEBACiAgICAgICAgICAgICBmaW5hbCBpbnQgbWF4Q29udGVudExlbmd0aCA9IGNsdXN0ZXIuY29ubmVjdGlvblBvb2xTZXR0aW5ncygpLm1heENvbnRlbnRMZW5ndGg7CiAgICAgICAgICAgICBoYW5kbGVyID0gbmV3IFdlYlNvY2tldENsaWVudEhhbmRsZXIoCiAgICAgICAgICAgICAgICAgICAgIFdlYlNvY2tldENsaWVudEhhbmRzaGFrZXJGYWN0b3J5Lm5ld0hhbmRzaGFrZXIoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5nZXRVcmkoKSwgV2ViU29ja2V0VmVyc2lvbi5WMTMsIG51bGwsIGZhbHNlLCBIdHRwSGVhZGVycy5FTVBUWV9IRUFERVJTLCBtYXhDb250ZW50TGVuZ3RoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5nZXRVcmkoKSwgV2ViU29ja2V0VmVyc2lvbi5WMTMsIG51bGwsIGZhbHNlLCBFbXB0eUh0dHBIZWFkZXJzLklOU1RBTkNFLCBtYXhDb250ZW50TGVuZ3RoKSk7CiAKICAgICAgICAgICAgIHBpcGVsaW5lLmFkZExhc3QoImh0dHAtY29kZWMiLCBuZXcgSHR0cENsaWVudENvZGVjKCkpOwogICAgICAgICAgICAgcGlwZWxpbmUuYWRkTGFzdCgiYWdncmVnYXRvciIsIG5ldyBIdHRwT2JqZWN0QWdncmVnYXRvcihtYXhDb250ZW50TGVuZ3RoKSk7CmRpZmYgLS1naXQgYS9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL0NsaWVudC5qYXZhIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9DbGllbnQuamF2YQppbmRleCA0MWQxNzU1Li45Y2JjMzM3IDEwMDY0NAotLS0gYS9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL0NsaWVudC5qYXZhCisrKyBiL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvQ2xpZW50LmphdmEKQEAgLTY3LDcgKzY3LDcgQEAKICAgICB9CiAKICAgICAvKioKLSAgICAgKiBNYWtlcyBhbnkgZmluYWwgY2hhbmdlcyB0byB0aGUgYnVpbGRlciBhbmQgcmV0dXJucyB0aGUgY29uc3RydWN0ZWQge0BsaW5rIFJlcXVlc3RNZXNzYWdlfS4gIEltcGxlbWVudGVycworICAgICAqIE1ha2VzIGFueSBpbml0aWFsIGNoYW5nZXMgdG8gdGhlIGJ1aWxkZXIgYW5kIHJldHVybnMgdGhlIGNvbnN0cnVjdGVkIHtAbGluayBSZXF1ZXN0TWVzc2FnZX0uICBJbXBsZW1lbnRlcnMKICAgICAgKiBtYXkgY2hvb3NlIHRvIG92ZXJyaWRlIHRoaXMgbWVzc2FnZSB0byBhcHBlbmQgZGF0YSB0byB0aGUgcmVxdWVzdCBiZWZvcmUgc2VuZGluZy4gIEJ5IGRlZmF1bHQsIHRoaXMgbWV0aG9kCiAgICAgICogd2lsbCBzaW1wbHkgcmV0dXJuIHRoZSB7QGNvZGUgYnVpbGRlcn0gcGFzc2VkIGluIGJ5IHRoZSBjYWxsZXIuCiAgICAgICovCkBAIC05NSwxOCArOTUsNiBAQAogICAgICAqIHNlcnZlciB0byBhIHZhcmlhYmxlIGNhbGxlZCAiZyIgZm9yIHRoZSBjb250ZXh0IG9mIHRoZSByZXF1ZXN0cyBtYWRlIHRocm91Z2ggdGhhdCB7QGNvZGUgQ2xpZW50fS4KICAgICAgKgogICAgICAqIEBwYXJhbSBncmFwaE9yVHJhdmVyc2FsU291cmNlIHJlYmluZHMgdGhlIHNwZWNpZmllZCBnbG9iYWwgR3JlbWxpbiBTZXJ2ZXIgdmFyaWFibGUgdG8gImciCi0gICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjEuMCwgcmVwbGFjZWQgYnkge0BsaW5rICNhbGlhcyhTdHJpbmcpfQotICAgICAqLwotICAgIEBEZXByZWNhdGVkCi0gICAgcHVibGljIENsaWVudCByZWJpbmQoZmluYWwgU3RyaW5nIGdyYXBoT3JUcmF2ZXJzYWxTb3VyY2UpIHsKLSAgICAgICAgcmV0dXJuIGFsaWFzKGdyYXBoT3JUcmF2ZXJzYWxTb3VyY2UpOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIENyZWF0ZSBhIG5ldyB7QGNvZGUgQ2xpZW50fSB0aGF0IGFsaWFzZXMgdGhlIHNwZWNpZmllZCB7QGxpbmsgR3JhcGh9IG9yIHtAbGluayBUcmF2ZXJzYWxTb3VyY2V9IG5hbWUgb24gdGhlCi0gICAgICogc2VydmVyIHRvIGEgdmFyaWFibGUgY2FsbGVkICJnIiBmb3IgdGhlIGNvbnRleHQgb2YgdGhlIHJlcXVlc3RzIG1hZGUgdGhyb3VnaCB0aGF0IHtAY29kZSBDbGllbnR9LgotICAgICAqCi0gICAgICogQHBhcmFtIGdyYXBoT3JUcmF2ZXJzYWxTb3VyY2UgcmViaW5kcyB0aGUgc3BlY2lmaWVkIGdsb2JhbCBHcmVtbGluIFNlcnZlciB2YXJpYWJsZSB0byAiZyIKICAgICAgKi8KICAgICBwdWJsaWMgQ2xpZW50IGFsaWFzKGZpbmFsIFN0cmluZyBncmFwaE9yVHJhdmVyc2FsU291cmNlKSB7CiAgICAgICAgIHJldHVybiBhbGlhcyhtYWtlRGVmYXVsdEFsaWFzTWFwKGdyYXBoT3JUcmF2ZXJzYWxTb3VyY2UpKTsKQEAgLTExNywxNiArMTA1LDYgQEAKICAgICAgKiBvbmUgb3IgbW9yZSBnbG9iYWxseSBkZWZpbmVkIHtAbGluayBHcmFwaH0gb3Ige0BsaW5rIFRyYXZlcnNhbFNvdXJjZX0gc2VydmVyIGJpbmRpbmdzIGZvciB0aGUgY29udGV4dCBvZgogICAgICAqIHRoZSBjcmVhdGVkIHtAY29kZSBDbGllbnR9LgogICAgICAqLwotICAgIEBEZXByZWNhdGVkCi0gICAgcHVibGljIENsaWVudCByZWJpbmQoZmluYWwgTWFwPFN0cmluZyxTdHJpbmc+IHJlYmluZGluZ3MpIHsKLSAgICAgICAgcmV0dXJuIGFsaWFzKHJlYmluZGluZ3MpOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIENyZWF0ZXMgYSB7QGNvZGUgQ2xpZW50fSB0aGF0IHN1cHBsaWVzIHRoZSBzcGVjaWZpZWQgc2V0IG9mIGFsaWFzZXMsIHRodXMgYWxsb3dpbmcgdGhlIHVzZXIgdG8gcmUtbmFtZQotICAgICAqIG9uZSBvciBtb3JlIGdsb2JhbGx5IGRlZmluZWQge0BsaW5rIEdyYXBofSBvciB7QGxpbmsgVHJhdmVyc2FsU291cmNlfSBzZXJ2ZXIgYmluZGluZ3MgZm9yIHRoZSBjb250ZXh0IG9mCi0gICAgICogdGhlIGNyZWF0ZWQge0Bjb2RlIENsaWVudH0uCi0gICAgICovCiAgICAgcHVibGljIENsaWVudCBhbGlhcyhmaW5hbCBNYXA8U3RyaW5nLFN0cmluZz4gYWxpYXNlcykgewogICAgICAgICByZXR1cm4gbmV3IEFsaWFzQ2x1c3RlcmVkQ2xpZW50KHRoaXMsIGFsaWFzZXMsIHNldHRpbmdzKTsKICAgICB9CkBAIC0xNzMsNiArMTUxLDI0IEBACiAgICAgfQogCiAgICAgLyoqCisgICAgICogQSB2ZXJzaW9uIG9mIHtAbGluayAjc3VibWl0KEJ5dGVjb2RlKX0gd2hpY2ggcHJvdmlkZXMgdGhlIGFiaWxpdHkgdG8gc2V0IHBlci1yZXF1ZXN0IG9wdGlvbnMuCisgICAgICoKKyAgICAgKiBAcGFyYW0gYnl0ZWNvZGUgcmVxdWVzdCBpbiB0aGUgZm9ybSBvZiBncmVtbGluIHtAbGluayBCeXRlY29kZX0KKyAgICAgKiBAcGFyYW0gb3B0aW9ucyBmb3IgdGhlIHJlcXVlc3QKKyAgICAgKgorICAgICAqIEBzZWUgI3N1Ym1pdChCeXRlY29kZSkKKyAgICAgKi8KKyAgICBwdWJsaWMgUmVzdWx0U2V0IHN1Ym1pdChmaW5hbCBCeXRlY29kZSBieXRlY29kZSwgZmluYWwgUmVxdWVzdE9wdGlvbnMgb3B0aW9ucykgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgcmV0dXJuIHN1Ym1pdEFzeW5jKGJ5dGVjb2RlLCBvcHRpb25zKS5nZXQoKTsKKyAgICAgICAgfSBjYXRjaCAoVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24gdW9lKSB7CisgICAgICAgICAgICB0aHJvdyB1b2U7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oZXgpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCiAgICAgICogQW4gYXN5bmNocm9ub3VzIHZlcnNpb24gb2Yge0BsaW5rICNzdWJtaXQoVHJhdmVyc2FsKX0uIFJlc3VsdHMgYXJlIHJldHVybmVkIGFzIHtAbGluayBUcmF2ZXJzZXJ9IGluc3RhbmNlcyBhbmQKICAgICAgKiBhcmUgdGhlcmVmb3JlIGJ1bGtlZCwgbWVhbmluZyB0aGF0IHRvIHByb3Blcmx5IGl0ZXJhdGUgdGhlIGNvbnRlbnRzIG9mIHRoZSByZXN1bHQgZWFjaCB7QGxpbmsgVHJhdmVyc2VyI2J1bGsoKX0KICAgICAgKiBtdXN0IGJlIGV4YW1pbmVkIHRvIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoYXQgb2JqZWN0IHNob3VsZCBiZSBwcmVzZW50ZWQgaW4gaXRlcmF0aW9uLgpAQCAtMTgyLDYgKzE3OCwxOCBAQAogICAgIH0KIAogICAgIC8qKgorICAgICAqIEEgdmVyc2lvbiBvZiB7QGxpbmsgI3N1Ym1pdChCeXRlY29kZSl9IHdoaWNoIHByb3ZpZGVzIHRoZSBhYmlsaXR5IHRvIHNldCBwZXItcmVxdWVzdCBvcHRpb25zLgorICAgICAqCisgICAgICogQHBhcmFtIGJ5dGVjb2RlIHJlcXVlc3QgaW4gdGhlIGZvcm0gb2YgZ3JlbWxpbiB7QGxpbmsgQnl0ZWNvZGV9CisgICAgICogQHBhcmFtIG9wdGlvbnMgZm9yIHRoZSByZXF1ZXN0CisgICAgICoKKyAgICAgKiBAc2VlICNzdWJtaXRBc3luYyhCeXRlY29kZSkKKyAgICAgKi8KKyAgICBwdWJsaWMgQ29tcGxldGFibGVGdXR1cmU8UmVzdWx0U2V0PiBzdWJtaXRBc3luYyhmaW5hbCBCeXRlY29kZSBieXRlY29kZSwgZmluYWwgUmVxdWVzdE9wdGlvbnMgb3B0aW9ucykgeworICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oIlRoaXMgaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCBUcmF2ZXJzYWwgc3VibWlzc2lvbiAtIHVzZSBhIHNlc3Npb25sZXNzIENsaWVudCBjcmVhdGVkIHdpdGggZnJvbSB0aGUgYWxpYXMoKSBtZXRob2QiKTsKKyAgICB9CisKKyAgICAvKioKICAgICAgKiBJbml0aWFsaXplcyB0aGUgY2xpZW50IHdoaWNoIHR5cGljYWxseSBtZWFucyB0aGF0IGEgY29ubmVjdGlvbiBpcyBlc3RhYmxpc2hlZCB0byB0aGUgc2VydmVyLiAgRGVwZW5kaW5nIG9uIHRoZQogICAgICAqIGltcGxlbWVudGF0aW9uIGFuZCBjb25maWd1cmF0aW9uIHRoaXMgYmxvY2tpbmcgY2FsbCBtYXkgdGFrZSBzb21lIHRpbWUuICBUaGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZAogICAgICAqIGF1dG9tYXRpY2FsbHkgaWYgaXQgaXMgbm90IGNhbGxlZCBkaXJlY3RseSBhbmQgbXVsdGlwbGUgY2FsbHMgd2lsbCBub3QgaGF2ZSBlZmZlY3QuCkBAIC0yMDYsNyArMjE0LDcgQEAKICAgICAgKiBAcGFyYW0gZ3JlbWxpbiB0aGUgZ3JlbWxpbiBzY3JpcHQgdG8gZXhlY3V0ZQogICAgICAqLwogICAgIHB1YmxpYyBSZXN1bHRTZXQgc3VibWl0KGZpbmFsIFN0cmluZyBncmVtbGluKSB7Ci0gICAgICAgIHJldHVybiBzdWJtaXQoZ3JlbWxpbiwgbnVsbCk7CisgICAgICAgIHJldHVybiBzdWJtaXQoZ3JlbWxpbiwgUmVxdWVzdE9wdGlvbnMuRU1QVFkpOwogICAgIH0KIAogICAgIC8qKgpAQCAtMjI3LDEzICsyMzUsMjggQEAKICAgICB9CiAKICAgICAvKioKKyAgICAgKiBTdWJtaXRzIGEgR3JlbWxpbiBzY3JpcHQgdG8gdGhlIHNlcnZlciBhbmQgcmV0dXJucyBhIHtAbGluayBSZXN1bHRTZXR9IG9uY2UgdGhlIHdyaXRlIG9mIHRoZSByZXF1ZXN0IGlzCisgICAgICogY29tcGxldGUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gZ3JlbWxpbiB0aGUgZ3JlbWxpbiBzY3JpcHQgdG8gZXhlY3V0ZQorICAgICAqIEBwYXJhbSBvcHRpb25zIGZvciB0aGUgcmVxdWVzdAorICAgICAqLworICAgIHB1YmxpYyBSZXN1bHRTZXQgc3VibWl0KGZpbmFsIFN0cmluZyBncmVtbGluLCBmaW5hbCBSZXF1ZXN0T3B0aW9ucyBvcHRpb25zKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gc3VibWl0QXN5bmMoZ3JlbWxpbiwgb3B0aW9ucykuZ2V0KCk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oZXgpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCiAgICAgICogVGhlIGFzeW5jaHJvbm91cyB2ZXJzaW9uIG9mIHtAbGluayAjc3VibWl0KFN0cmluZyl9IHdoZXJlIHRoZSByZXR1cm5lZCBmdXR1cmUgd2lsbCBjb21wbGV0ZSB3aGVuIHRoZQogICAgICAqIHdyaXRlIG9mIHRoZSByZXF1ZXN0IGNvbXBsZXRlcy4KICAgICAgKgogICAgICAqIEBwYXJhbSBncmVtbGluIHRoZSBncmVtbGluIHNjcmlwdCB0byBleGVjdXRlCiAgICAgICovCiAgICAgcHVibGljIENvbXBsZXRhYmxlRnV0dXJlPFJlc3VsdFNldD4gc3VibWl0QXN5bmMoZmluYWwgU3RyaW5nIGdyZW1saW4pIHsKLSAgICAgICAgcmV0dXJuIHN1Ym1pdEFzeW5jKGdyZW1saW4sIG51bGwpOworICAgICAgICByZXR1cm4gc3VibWl0QXN5bmMoZ3JlbWxpbiwgUmVxdWVzdE9wdGlvbnMuYnVpbGQoKS5jcmVhdGUoKSk7CiAgICAgfQogCiAgICAgLyoqCkBAIC0yNDQsMTMgKzI2NywxMiBAQAogICAgICAqIEBwYXJhbSBwYXJhbWV0ZXJzIGEgbWFwIG9mIHBhcmFtZXRlcnMgdGhhdCB3aWxsIGJlIGJvdW5kIHRvIHRoZSBzY3JpcHQgb24gZXhlY3V0aW9uCiAgICAgICovCiAgICAgcHVibGljIENvbXBsZXRhYmxlRnV0dXJlPFJlc3VsdFNldD4gc3VibWl0QXN5bmMoZmluYWwgU3RyaW5nIGdyZW1saW4sIGZpbmFsIE1hcDxTdHJpbmcsIE9iamVjdD4gcGFyYW1ldGVycykgewotICAgICAgICBmaW5hbCBSZXF1ZXN0TWVzc2FnZS5CdWlsZGVyIHJlcXVlc3QgPSBSZXF1ZXN0TWVzc2FnZS5idWlsZChUb2tlbnMuT1BTX0VWQUwpCi0gICAgICAgICAgICAgICAgLmFkZChUb2tlbnMuQVJHU19HUkVNTElOLCBncmVtbGluKQotICAgICAgICAgICAgICAgIC5hZGQoVG9rZW5zLkFSR1NfQkFUQ0hfU0laRSwgY2x1c3Rlci5jb25uZWN0aW9uUG9vbFNldHRpbmdzKCkucmVzdWx0SXRlcmF0aW9uQmF0Y2hTaXplKTsKKyAgICAgICAgZmluYWwgUmVxdWVzdE9wdGlvbnMuQnVpbGRlciBvcHRpb25zID0gUmVxdWVzdE9wdGlvbnMuYnVpbGQoKTsKKyAgICAgICAgaWYgKHBhcmFtZXRlcnMgIT0gbnVsbCAmJiAhcGFyYW1ldGVycy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuZm9yRWFjaChvcHRpb25zOjphZGRQYXJhbWV0ZXIpOworICAgICAgICB9CiAKLSAgICAgICAgT3B0aW9uYWwub2ZOdWxsYWJsZShwYXJhbWV0ZXJzKS5pZlByZXNlbnQocGFyYW1zIC0+IHJlcXVlc3QuYWRkQXJnKFRva2Vucy5BUkdTX0JJTkRJTkdTLCBwYXJhbWV0ZXJzKSk7Ci0KLSAgICAgICAgcmV0dXJuIHN1Ym1pdEFzeW5jKGJ1aWxkTWVzc2FnZShyZXF1ZXN0KS5jcmVhdGUoKSk7CisgICAgICAgIHJldHVybiBzdWJtaXRBc3luYyhncmVtbGluLCBvcHRpb25zLmNyZWF0ZSgpKTsKICAgICB9CiAKICAgICAvKioKQEAgLTI2MCwxOSArMjgyLDE3IEBACiAgICAgICogQHBhcmFtIGdyZW1saW4gdGhlIGdyZW1saW4gc2NyaXB0IHRvIGV4ZWN1dGUKICAgICAgKiBAcGFyYW0gcGFyYW1ldGVycyBhIG1hcCBvZiBwYXJhbWV0ZXJzIHRoYXQgd2lsbCBiZSBib3VuZCB0byB0aGUgc2NyaXB0IG9uIGV4ZWN1dGlvbgogICAgICAqIEBwYXJhbSBncmFwaE9yVHJhdmVyc2FsU291cmNlIHJlYmluZHMgdGhlIHNwZWNpZmllZCBnbG9iYWwgR3JlbWxpbiBTZXJ2ZXIgdmFyaWFibGUgdG8gImciCisgICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjQuMCwgcmVwbGFjZWQgYnkge0BsaW5rICNzdWJtaXRBc3luYyhTdHJpbmcsIFJlcXVlc3RPcHRpb25zKX0uCiAgICAgICovCisgICAgQERlcHJlY2F0ZWQKICAgICBwdWJsaWMgQ29tcGxldGFibGVGdXR1cmU8UmVzdWx0U2V0PiBzdWJtaXRBc3luYyhmaW5hbCBTdHJpbmcgZ3JlbWxpbiwgZmluYWwgU3RyaW5nIGdyYXBoT3JUcmF2ZXJzYWxTb3VyY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgTWFwPFN0cmluZywgT2JqZWN0PiBwYXJhbWV0ZXJzKSB7Ci0gICAgICAgIGZpbmFsIFJlcXVlc3RNZXNzYWdlLkJ1aWxkZXIgcmVxdWVzdCA9IFJlcXVlc3RNZXNzYWdlLmJ1aWxkKFRva2Vucy5PUFNfRVZBTCkKLSAgICAgICAgICAgICAgICAuYWRkKFRva2Vucy5BUkdTX0dSRU1MSU4sIGdyZW1saW4pCi0gICAgICAgICAgICAgICAgLmFkZChUb2tlbnMuQVJHU19CQVRDSF9TSVpFLCBjbHVzdGVyLmNvbm5lY3Rpb25Qb29sU2V0dGluZ3MoKS5yZXN1bHRJdGVyYXRpb25CYXRjaFNpemUpOworICAgICAgICBNYXA8U3RyaW5nLFN0cmluZz4gYWxpYXNlcyA9IG51bGw7CisgICAgICAgIGlmIChncmFwaE9yVHJhdmVyc2FsU291cmNlICE9IG51bGwgJiYgIWdyYXBoT3JUcmF2ZXJzYWxTb3VyY2UuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBhbGlhc2VzID0gbWFrZURlZmF1bHRBbGlhc01hcChncmFwaE9yVHJhdmVyc2FsU291cmNlKTsKKyAgICAgICAgfQogCi0gICAgICAgIE9wdGlvbmFsLm9mTnVsbGFibGUocGFyYW1ldGVycykuaWZQcmVzZW50KHBhcmFtcyAtPiByZXF1ZXN0LmFkZEFyZyhUb2tlbnMuQVJHU19CSU5ESU5HUywgcGFyYW1ldGVycykpOwotCi0gICAgICAgIGlmIChncmFwaE9yVHJhdmVyc2FsU291cmNlICE9IG51bGwgJiYgIWdyYXBoT3JUcmF2ZXJzYWxTb3VyY2UuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmVxdWVzdC5hZGRBcmcoVG9rZW5zLkFSR1NfQUxJQVNFUywgbWFrZURlZmF1bHRBbGlhc01hcChncmFwaE9yVHJhdmVyc2FsU291cmNlKSk7Ci0KLSAgICAgICAgcmV0dXJuIHN1Ym1pdEFzeW5jKGJ1aWxkTWVzc2FnZShyZXF1ZXN0KS5jcmVhdGUoKSk7CisgICAgICAgIHJldHVybiBzdWJtaXRBc3luYyhncmVtbGluLCBhbGlhc2VzLCBwYXJhbWV0ZXJzKTsKICAgICB9CiAKICAgICAvKioKQEAgLTI4NCwxOSArMzA0LDQ5IEBACiAgICAgICogQHBhcmFtIGFsaWFzZXMgYWxpYXNlcyB0aGUgc3BlY2lmaWVkIGdsb2JhbCBHcmVtbGluIFNlcnZlciB2YXJpYWJsZSBzb21lIG90aGVyIG5hbWUgdGhhdCB0aGVuIGJlIHVzZWQgaW4gdGhlCiAgICAgICogICAgICAgICAgICAgICAgc2NyaXB0IHdoZXJlIHRoZSBrZXkgaXMgdGhlIGFsaWFzIG5hbWUgYW5kIHRoZSB2YWx1ZSByZXByZXNlbnRzIHRoZSBnbG9iYWwgdmFyaWFibGUgb24gdGhlCiAgICAgICogICAgICAgICAgICAgICAgc2VydmVyCisgICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjQuMCwgcmVwbGFjZWQgYnkge0BsaW5rICNzdWJtaXRBc3luYyhTdHJpbmcsIFJlcXVlc3RPcHRpb25zKX0uCiAgICAgICovCisgICAgQERlcHJlY2F0ZWQKICAgICBwdWJsaWMgQ29tcGxldGFibGVGdXR1cmU8UmVzdWx0U2V0PiBzdWJtaXRBc3luYyhmaW5hbCBTdHJpbmcgZ3JlbWxpbiwgZmluYWwgTWFwPFN0cmluZyxTdHJpbmc+IGFsaWFzZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgTWFwPFN0cmluZywgT2JqZWN0PiBwYXJhbWV0ZXJzKSB7Ci0gICAgICAgIGZpbmFsIFJlcXVlc3RNZXNzYWdlLkJ1aWxkZXIgcmVxdWVzdCA9IFJlcXVlc3RNZXNzYWdlLmJ1aWxkKFRva2Vucy5PUFNfRVZBTCkKKyAgICAgICAgZmluYWwgUmVxdWVzdE9wdGlvbnMuQnVpbGRlciBvcHRpb25zID0gUmVxdWVzdE9wdGlvbnMuYnVpbGQoKTsKKyAgICAgICAgaWYgKGFsaWFzZXMgIT0gbnVsbCAmJiAhYWxpYXNlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGFsaWFzZXMuZm9yRWFjaChvcHRpb25zOjphZGRBbGlhcyk7CisgICAgICAgIH0KKworICAgICAgICBpZiAocGFyYW1ldGVycyAhPSBudWxsICYmICFwYXJhbWV0ZXJzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgcGFyYW1ldGVycy5mb3JFYWNoKG9wdGlvbnM6OmFkZFBhcmFtZXRlcik7CisgICAgICAgIH0KKworICAgICAgICBvcHRpb25zLmJhdGNoU2l6ZShjbHVzdGVyLmNvbm5lY3Rpb25Qb29sU2V0dGluZ3MoKS5yZXN1bHRJdGVyYXRpb25CYXRjaFNpemUpOworCisgICAgICAgIHJldHVybiBzdWJtaXRBc3luYyhncmVtbGluLCBvcHRpb25zLmNyZWF0ZSgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUaGUgYXN5bmNocm9ub3VzIHZlcnNpb24gb2Yge0BsaW5rICNzdWJtaXQoU3RyaW5nLCBSZXF1ZXN0T3B0aW9ucyl9fSB3aGVyZSB0aGUgcmV0dXJuZWQgZnV0dXJlIHdpbGwgY29tcGxldGUgd2hlbiB0aGUKKyAgICAgKiB3cml0ZSBvZiB0aGUgcmVxdWVzdCBjb21wbGV0ZXMuCisgICAgICoKKyAgICAgKiBAcGFyYW0gZ3JlbWxpbiB0aGUgZ3JlbWxpbiBzY3JpcHQgdG8gZXhlY3V0ZQorICAgICAqIEBwYXJhbSBvcHRpb25zIHRoZSBvcHRpb25zIHRvIHN1cHBseSBmb3IgdGhpcyByZXF1ZXN0CisgICAgICovCisgICAgcHVibGljIENvbXBsZXRhYmxlRnV0dXJlPFJlc3VsdFNldD4gc3VibWl0QXN5bmMoZmluYWwgU3RyaW5nIGdyZW1saW4sIGZpbmFsIFJlcXVlc3RPcHRpb25zIG9wdGlvbnMpIHsKKyAgICAgICAgZmluYWwgaW50IGJhdGNoU2l6ZSA9IG9wdGlvbnMuZ2V0QmF0Y2hTaXplKCkub3JFbHNlKGNsdXN0ZXIuY29ubmVjdGlvblBvb2xTZXR0aW5ncygpLnJlc3VsdEl0ZXJhdGlvbkJhdGNoU2l6ZSk7CisKKyAgICAgICAgLy8gbmVlZCB0byBjYWxsIGJ1aWxkTWVzc2FnZSgpIHJpZ2h0IGF3YXkgdG8gZ2V0IGNsaWVudCBzcGVjaWZpYyBjb25maWd1cmF0aW9ucywgdGhhdCB3YXkgcmVxdWVzdCBzcGVjaWZpYworICAgICAgICAvLyBvbmVzIGNhbiBvdmVycmlkZSBhcyBuZWVkZWQKKyAgICAgICAgZmluYWwgUmVxdWVzdE1lc3NhZ2UuQnVpbGRlciByZXF1ZXN0ID0gYnVpbGRNZXNzYWdlKFJlcXVlc3RNZXNzYWdlLmJ1aWxkKFRva2Vucy5PUFNfRVZBTCkpCiAgICAgICAgICAgICAgICAgLmFkZChUb2tlbnMuQVJHU19HUkVNTElOLCBncmVtbGluKQotICAgICAgICAgICAgICAgIC5hZGQoVG9rZW5zLkFSR1NfQkFUQ0hfU0laRSwgY2x1c3Rlci5jb25uZWN0aW9uUG9vbFNldHRpbmdzKCkucmVzdWx0SXRlcmF0aW9uQmF0Y2hTaXplKTsKKyAgICAgICAgICAgICAgICAuYWRkKFRva2Vucy5BUkdTX0JBVENIX1NJWkUsIGJhdGNoU2l6ZSk7CiAKLSAgICAgICAgT3B0aW9uYWwub2ZOdWxsYWJsZShwYXJhbWV0ZXJzKS5pZlByZXNlbnQocGFyYW1zIC0+IHJlcXVlc3QuYWRkQXJnKFRva2Vucy5BUkdTX0JJTkRJTkdTLCBwYXJhbWV0ZXJzKSk7CisgICAgICAgIC8vIGFwcGx5IHNldHRpbmdzIGlmIHRoZXkgd2VyZSBtYWRlIGF2YWlsYWJsZQorICAgICAgICBvcHRpb25zLmdldFRpbWVvdXQoKS5pZlByZXNlbnQodGltZW91dCAtPiByZXF1ZXN0LmFkZChUb2tlbnMuQVJHU19TQ1JJUFRfRVZBTF9USU1FT1VULCB0aW1lb3V0KSk7CisgICAgICAgIG9wdGlvbnMuZ2V0UGFyYW1ldGVycygpLmlmUHJlc2VudChwYXJhbXMgLT4gcmVxdWVzdC5hZGRBcmcoVG9rZW5zLkFSR1NfQklORElOR1MsIHBhcmFtcykpOworICAgICAgICBvcHRpb25zLmdldEFsaWFzZXMoKS5pZlByZXNlbnQoYWxpYXNlcyAtPiByZXF1ZXN0LmFkZEFyZyhUb2tlbnMuQVJHU19BTElBU0VTLCBhbGlhc2VzKSk7CisgICAgICAgIG9wdGlvbnMuZ2V0T3ZlcnJpZGVSZXF1ZXN0SWQoKS5pZlByZXNlbnQocmVxdWVzdDo6b3ZlcnJpZGVSZXF1ZXN0SWQpOworICAgICAgICBvcHRpb25zLmdldFVzZXJBZ2VudCgpLmlmUHJlc2VudCh1c2VyQWdlbnQgLT4gcmVxdWVzdC5hZGRBcmcoVG9rZW5zLkFSR1NfVVNFUl9BR0VOVCwgdXNlckFnZW50KSk7CiAKLSAgICAgICAgaWYgKGFsaWFzZXMgIT0gbnVsbCAmJiAhYWxpYXNlcy5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXF1ZXN0LmFkZEFyZyhUb2tlbnMuQVJHU19BTElBU0VTLCBhbGlhc2VzKTsKLQotICAgICAgICByZXR1cm4gc3VibWl0QXN5bmMoYnVpbGRNZXNzYWdlKHJlcXVlc3QpLmNyZWF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIHN1Ym1pdEFzeW5jKHJlcXVlc3QuY3JlYXRlKCkpOwogICAgIH0KIAogICAgIC8qKgpAQCAtNDA2LDYxICs0NTYsNiBAQAogICAgICAgICB9CiAKICAgICAgICAgLyoqCi0gICAgICAgICAqIFRoZSBhc3luY2hyb25vdXMgdmVyc2lvbiBvZiB7QGxpbmsgI3N1Ym1pdChTdHJpbmcsIE1hcCl9fSB3aGVyZSB0aGUgcmV0dXJuZWQgZnV0dXJlIHdpbGwgY29tcGxldGUgd2hlbiB0aGUKLSAgICAgICAgICogd3JpdGUgb2YgdGhlIHJlcXVlc3QgY29tcGxldGVzLgotICAgICAgICAgKgotICAgICAgICAgKiBAcGFyYW0gZ3JlbWxpbiB0aGUgZ3JlbWxpbiBzY3JpcHQgdG8gZXhlY3V0ZQotICAgICAgICAgKiBAcGFyYW0gcGFyYW1ldGVycyBhIG1hcCBvZiBwYXJhbWV0ZXJzIHRoYXQgd2lsbCBiZSBib3VuZCB0byB0aGUgc2NyaXB0IG9uIGV4ZWN1dGlvbgotICAgICAgICAgKiBAcGFyYW0gZ3JhcGhPclRyYXZlcnNhbFNvdXJjZSByZWJpbmRzIHRoZSBzcGVjaWZpZWQgZ2xvYmFsIEdyZW1saW4gU2VydmVyIHZhcmlhYmxlIHRvICJnIgotICAgICAgICAgKi8KLSAgICAgICAgcHVibGljIENvbXBsZXRhYmxlRnV0dXJlPFJlc3VsdFNldD4gc3VibWl0QXN5bmMoZmluYWwgU3RyaW5nIGdyZW1saW4sIGZpbmFsIFN0cmluZyBncmFwaE9yVHJhdmVyc2FsU291cmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLCBPYmplY3Q+IHBhcmFtZXRlcnMpIHsKLSAgICAgICAgICAgIGZpbmFsIFJlcXVlc3RNZXNzYWdlLkJ1aWxkZXIgcmVxdWVzdCA9IFJlcXVlc3RNZXNzYWdlLmJ1aWxkKFRva2Vucy5PUFNfRVZBTCkKLSAgICAgICAgICAgICAgICAgICAgLmFkZChUb2tlbnMuQVJHU19HUkVNTElOLCBncmVtbGluKQotICAgICAgICAgICAgICAgICAgICAuYWRkKFRva2Vucy5BUkdTX0JBVENIX1NJWkUsIGNsdXN0ZXIuY29ubmVjdGlvblBvb2xTZXR0aW5ncygpLnJlc3VsdEl0ZXJhdGlvbkJhdGNoU2l6ZSk7Ci0KLSAgICAgICAgICAgIE9wdGlvbmFsLm9mTnVsbGFibGUocGFyYW1ldGVycykuaWZQcmVzZW50KHBhcmFtcyAtPiByZXF1ZXN0LmFkZEFyZyhUb2tlbnMuQVJHU19CSU5ESU5HUywgcGFyYW1ldGVycykpOwotCi0gICAgICAgICAgICBpZiAoZ3JhcGhPclRyYXZlcnNhbFNvdXJjZSAhPSBudWxsICYmICFncmFwaE9yVHJhdmVyc2FsU291cmNlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICByZXF1ZXN0LmFkZEFyZyhUb2tlbnMuQVJHU19BTElBU0VTLCBtYWtlRGVmYXVsdEFsaWFzTWFwKGdyYXBoT3JUcmF2ZXJzYWxTb3VyY2UpKTsKLQotICAgICAgICAgICAgcmV0dXJuIHN1Ym1pdEFzeW5jKGJ1aWxkTWVzc2FnZShyZXF1ZXN0KS5jcmVhdGUoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvKioKLSAgICAgICAgICogVGhlIGFzeW5jaHJvbm91cyB2ZXJzaW9uIG9mIHtAbGluayAjc3VibWl0KFN0cmluZywgTWFwKX19IHdoZXJlIHRoZSByZXR1cm5lZCBmdXR1cmUgd2lsbCBjb21wbGV0ZSB3aGVuIHRoZQotICAgICAgICAgKiB3cml0ZSBvZiB0aGUgcmVxdWVzdCBjb21wbGV0ZXMuCi0gICAgICAgICAqCi0gICAgICAgICAqIEBwYXJhbSBncmVtbGluIHRoZSBncmVtbGluIHNjcmlwdCB0byBleGVjdXRlCi0gICAgICAgICAqIEBwYXJhbSBwYXJhbWV0ZXJzIGEgbWFwIG9mIHBhcmFtZXRlcnMgdGhhdCB3aWxsIGJlIGJvdW5kIHRvIHRoZSBzY3JpcHQgb24gZXhlY3V0aW9uCi0gICAgICAgICAqIEBwYXJhbSBhbGlhc2VzIGFsaWFzZXMgdGhlIHNwZWNpZmllZCBnbG9iYWwgR3JlbWxpbiBTZXJ2ZXIgdmFyaWFibGUgc29tZSBvdGhlciBuYW1lIHRoYXQgdGhlbiBiZSB1c2VkIGluIHRoZQotICAgICAgICAgKiAgICAgICAgICAgICAgICBzY3JpcHQgd2hlcmUgdGhlIGtleSBpcyB0aGUgYWxpYXMgbmFtZSBhbmQgdGhlIHZhbHVlIHJlcHJlc2VudHMgdGhlIGdsb2JhbCB2YXJpYWJsZSBvbiB0aGUKLSAgICAgICAgICogICAgICAgICAgICAgICAgc2VydmVyCi0gICAgICAgICAqLwotICAgICAgICBwdWJsaWMgQ29tcGxldGFibGVGdXR1cmU8UmVzdWx0U2V0PiBzdWJtaXRBc3luYyhmaW5hbCBTdHJpbmcgZ3JlbWxpbiwgZmluYWwgTWFwPFN0cmluZyxTdHJpbmc+IGFsaWFzZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsIE9iamVjdD4gcGFyYW1ldGVycykgewotICAgICAgICAgICAgZmluYWwgUmVxdWVzdE1lc3NhZ2UuQnVpbGRlciByZXF1ZXN0ID0gUmVxdWVzdE1lc3NhZ2UuYnVpbGQoVG9rZW5zLk9QU19FVkFMKQotICAgICAgICAgICAgICAgICAgICAuYWRkKFRva2Vucy5BUkdTX0dSRU1MSU4sIGdyZW1saW4pCi0gICAgICAgICAgICAgICAgICAgIC5hZGQoVG9rZW5zLkFSR1NfQkFUQ0hfU0laRSwgY2x1c3Rlci5jb25uZWN0aW9uUG9vbFNldHRpbmdzKCkucmVzdWx0SXRlcmF0aW9uQmF0Y2hTaXplKTsKLQotICAgICAgICAgICAgT3B0aW9uYWwub2ZOdWxsYWJsZShwYXJhbWV0ZXJzKS5pZlByZXNlbnQocGFyYW1zIC0+IHJlcXVlc3QuYWRkQXJnKFRva2Vucy5BUkdTX0JJTkRJTkdTLCBwYXJhbWV0ZXJzKSk7Ci0KLSAgICAgICAgICAgIGlmIChhbGlhc2VzICE9IG51bGwgJiYgIWFsaWFzZXMuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIHJlcXVlc3QuYWRkQXJnKFRva2Vucy5BUkdTX0FMSUFTRVMsIGFsaWFzZXMpOwotCi0gICAgICAgICAgICByZXR1cm4gc3VibWl0QXN5bmMoYnVpbGRNZXNzYWdlKHJlcXVlc3QpLmNyZWF0ZSgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8qKgotICAgICAgICAgKiB7QGluaGVyaXREb2N9Ci0gICAgICAgICAqLwotICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgQERlcHJlY2F0ZWQKLSAgICAgICAgcHVibGljIENsaWVudCByZWJpbmQoZmluYWwgU3RyaW5nIGdyYXBoT3JUcmF2ZXJzYWxTb3VyY2UpIHsKLSAgICAgICAgICAgIHJldHVybiBhbGlhcyhncmFwaE9yVHJhdmVyc2FsU291cmNlKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8qKgogICAgICAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgICAgICAqLwogICAgICAgICBAT3ZlcnJpZGUKQEAgLTQ3MSwxNiArNDY2LDYgQEAKICAgICAgICAgfQogCiAgICAgICAgIC8qKgotICAgICAgICAgKiBDcmVhdGVzIGEge0Bjb2RlIENsaWVudH0gdGhhdCBzdXBwbGllcyB0aGUgc3BlY2lmaWVkIHNldCBvZiBhbGlhc2VzLCB0aHVzIGFsbG93aW5nIHRoZSB1c2VyIHRvIHJlLW5hbWUKLSAgICAgICAgICogb25lIG9yIG1vcmUgZ2xvYmFsbHkgZGVmaW5lZCB7QGxpbmsgR3JhcGh9IG9yIHtAbGluayBUcmF2ZXJzYWxTb3VyY2V9IHNlcnZlciBiaW5kaW5ncyBmb3IgdGhlIGNvbnRleHQgb2YKLSAgICAgICAgICogdGhlIGNyZWF0ZWQge0Bjb2RlIENsaWVudH0uCi0gICAgICAgICAqLwotICAgICAgICBARGVwcmVjYXRlZAotICAgICAgICBwdWJsaWMgQ2xpZW50IHJlYmluZChmaW5hbCBNYXA8U3RyaW5nLFN0cmluZz4gcmViaW5kaW5ncykgewotICAgICAgICAgICAgcmV0dXJuIGFsaWFzKHJlYmluZGluZ3MpOwotICAgICAgICB9Ci0KLSAgICAgICAgLyoqCiAgICAgICAgICAqIHtAaW5oZXJpdERvY30KICAgICAgICAgICovCiAgICAgICAgIEBPdmVycmlkZQpAQCAtNTUyLDM3ICs1MzcsMzggQEAKICAgICAgKiBVc2VzIGEge0BsaW5rIENsaWVudC5DbHVzdGVyZWRDbGllbnR9IHRoYXQgcmViaW5kcyByZXF1ZXN0cyB0byBhIHNwZWNpZmllZCB7QGxpbmsgR3JhcGh9IG9yCiAgICAgICoge0BsaW5rIFRyYXZlcnNhbFNvdXJjZX0gaW5zdGFuY2VzIG9uIHRoZSBzZXJ2ZXItc2lkZS4KICAgICAgKi8KLSAgICBwdWJsaWMgZmluYWwgc3RhdGljIGNsYXNzIEFsaWFzQ2x1c3RlcmVkQ2xpZW50IGV4dGVuZHMgUmVib3VuZENsdXN0ZXJlZENsaWVudCB7Ci0gICAgICAgIHB1YmxpYyBBbGlhc0NsdXN0ZXJlZENsaWVudChmaW5hbCBDbGllbnQgY2xpZW50LCBmaW5hbCBNYXA8U3RyaW5nLCBTdHJpbmc+IHJlYmluZGluZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBDbGllbnQuU2V0dGluZ3Mgc2V0dGluZ3MpIHsKLSAgICAgICAgICAgIHN1cGVyKGNsaWVudCwgcmViaW5kaW5ncywgc2V0dGluZ3MpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogVXNlcyBhIHtAbGluayBDbGllbnQuQ2x1c3RlcmVkQ2xpZW50fSB0aGF0IHJlYmluZHMgcmVxdWVzdHMgdG8gYSBzcGVjaWZpZWQge0BsaW5rIEdyYXBofSBvcgotICAgICAqIHtAbGluayBUcmF2ZXJzYWxTb3VyY2V9IGluc3RhbmNlcyBvbiB0aGUgc2VydmVyLXNpZGUuCi0gICAgICoKLSAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuMS4xLWluY3ViYXRpbmcsIHJlcGxhY2VkIGJ5IHtAbGluayBBbGlhc0NsdXN0ZXJlZENsaWVudH0uCi0gICAgICovCi0gICAgQERlcHJlY2F0ZWQKLSAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFJlYm91bmRDbHVzdGVyZWRDbGllbnQgZXh0ZW5kcyBDbGllbnQgeworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgQWxpYXNDbHVzdGVyZWRDbGllbnQgZXh0ZW5kcyBDbGllbnQgewogICAgICAgICBwcml2YXRlIGZpbmFsIENsaWVudCBjbGllbnQ7CiAgICAgICAgIHByaXZhdGUgZmluYWwgTWFwPFN0cmluZyxTdHJpbmc+IGFsaWFzZXMgPSBuZXcgSGFzaE1hcDw+KCk7CiAgICAgICAgIGZpbmFsIENvbXBsZXRhYmxlRnV0dXJlPFZvaWQ+IGNsb3NlID0gbmV3IENvbXBsZXRhYmxlRnV0dXJlPD4oKTsKIAotICAgICAgICBSZWJvdW5kQ2x1c3RlcmVkQ2xpZW50KGZpbmFsIENsaWVudCBjbGllbnQsIGZpbmFsIE1hcDxTdHJpbmcsU3RyaW5nPiByZWJpbmRpbmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIENsaWVudC5TZXR0aW5ncyBzZXR0aW5ncykgeworICAgICAgICBBbGlhc0NsdXN0ZXJlZENsaWVudChmaW5hbCBDbGllbnQgY2xpZW50LCBmaW5hbCBNYXA8U3RyaW5nLFN0cmluZz4gYWxpYXNlcywgZmluYWwgQ2xpZW50LlNldHRpbmdzIHNldHRpbmdzKSB7CiAgICAgICAgICAgICBzdXBlcihjbGllbnQuY2x1c3Rlciwgc2V0dGluZ3MpOwogICAgICAgICAgICAgdGhpcy5jbGllbnQgPSBjbGllbnQ7Ci0gICAgICAgICAgICB0aGlzLmFsaWFzZXMucHV0QWxsKHJlYmluZGluZ3MpOworICAgICAgICAgICAgdGhpcy5hbGlhc2VzLnB1dEFsbChhbGlhc2VzKTsKICAgICAgICAgfQogCiAgICAgICAgIEBPdmVycmlkZQogICAgICAgICBwdWJsaWMgQ29tcGxldGFibGVGdXR1cmU8UmVzdWx0U2V0PiBzdWJtaXRBc3luYyhmaW5hbCBCeXRlY29kZSBieXRlY29kZSkgeworICAgICAgICAgICAgcmV0dXJuIHN1Ym1pdEFzeW5jKGJ5dGVjb2RlLCBSZXF1ZXN0T3B0aW9ucy5FTVBUWSk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIENvbXBsZXRhYmxlRnV0dXJlPFJlc3VsdFNldD4gc3VibWl0QXN5bmMoZmluYWwgQnl0ZWNvZGUgYnl0ZWNvZGUsIGZpbmFsIFJlcXVlc3RPcHRpb25zIG9wdGlvbnMpIHsKICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN1Ym1pdEFzeW5jKGJ1aWxkTWVzc2FnZShSZXF1ZXN0TWVzc2FnZS5idWlsZChUb2tlbnMuT1BTX0JZVEVDT0RFKQotICAgICAgICAgICAgICAgICAgICAgICAgLnByb2Nlc3NvcigidHJhdmVyc2FsIikuYWRkQXJnKFRva2Vucy5BUkdTX0dSRU1MSU4sIGJ5dGVjb2RlKSkuY3JlYXRlKCkpOworICAgICAgICAgICAgICAgIC8vIG5lZWQgdG8gY2FsbCBidWlsZE1lc3NhZ2UoKSByaWdodCBhd2F5IHRvIGdldCBjbGllbnQgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMsIHRoYXQgd2F5IHJlcXVlc3Qgc3BlY2lmaWMKKyAgICAgICAgICAgICAgICAvLyBvbmVzIGNhbiBvdmVycmlkZSBhcyBuZWVkZWQKKyAgICAgICAgICAgICAgICBmaW5hbCBSZXF1ZXN0TWVzc2FnZS5CdWlsZGVyIHJlcXVlc3QgPSBidWlsZE1lc3NhZ2UoUmVxdWVzdE1lc3NhZ2UuYnVpbGQoVG9rZW5zLk9QU19CWVRFQ09ERSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucHJvY2Vzc29yKCJ0cmF2ZXJzYWwiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hZGRBcmcoVG9rZW5zLkFSR1NfR1JFTUxJTiwgYnl0ZWNvZGUpKTsKKworICAgICAgICAgICAgICAgIC8vIGFwcGx5IHNldHRpbmdzIGlmIHRoZXkgd2VyZSBtYWRlIGF2YWlsYWJsZQorICAgICAgICAgICAgICAgIG9wdGlvbnMuZ2V0QmF0Y2hTaXplKCkuaWZQcmVzZW50KGJhdGNoU2l6ZSAtPiByZXF1ZXN0LmFkZChUb2tlbnMuQVJHU19CQVRDSF9TSVpFLCBiYXRjaFNpemUpKTsKKyAgICAgICAgICAgICAgICBvcHRpb25zLmdldFRpbWVvdXQoKS5pZlByZXNlbnQodGltZW91dCAtPiByZXF1ZXN0LmFkZChUb2tlbnMuQVJHU19TQ1JJUFRfRVZBTF9USU1FT1VULCB0aW1lb3V0KSk7CisgICAgICAgICAgICAgICAgb3B0aW9ucy5nZXRPdmVycmlkZVJlcXVlc3RJZCgpLmlmUHJlc2VudChyZXF1ZXN0OjpvdmVycmlkZVJlcXVlc3RJZCk7CisgICAgICAgICAgICAgICAgb3B0aW9ucy5nZXRVc2VyQWdlbnQoKS5pZlByZXNlbnQodXNlckFnZW50IC0+IHJlcXVlc3QuYWRkKFRva2Vucy5BUkdTX1VTRVJfQUdFTlQsIHVzZXJBZ2VudCkpOworCisgICAgICAgICAgICAgICAgcmV0dXJuIHN1Ym1pdEFzeW5jKHJlcXVlc3QuY3JlYXRlKCkpOwogICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CiAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oZXgpOwogICAgICAgICAgICAgfQpAQCAtNTkxLDggKzU3NywxNiBAQAogICAgICAgICBAT3ZlcnJpZGUKICAgICAgICAgcHVibGljIENvbXBsZXRhYmxlRnV0dXJlPFJlc3VsdFNldD4gc3VibWl0QXN5bmMoZmluYWwgUmVxdWVzdE1lc3NhZ2UgbXNnKSB7CiAgICAgICAgICAgICBmaW5hbCBSZXF1ZXN0TWVzc2FnZS5CdWlsZGVyIGJ1aWxkZXIgPSBSZXF1ZXN0TWVzc2FnZS5mcm9tKG1zZyk7Ci0gICAgICAgICAgICBpZiAoIWFsaWFzZXMuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYWRkQXJnKFRva2Vucy5BUkdTX0FMSUFTRVMsIGFsaWFzZXMpOworCisgICAgICAgICAgICAvLyBvbmx5IGFkZCBhbGlhc2VzIHdoaWNoIGFyZW4ndCBhbHJlYWR5IHByZXNlbnQuIGlmIHRoZXkgYXJlIHByZXNlbnQgdGhlbiB0aGV5IHJlcHJlc2VudCByZXF1ZXN0IGxldmVsCisgICAgICAgICAgICAvLyBvdmVycmlkZXMgd2hpY2ggc2hvdWxkIGJlIG11Y2tlZCB3aXRoCisgICAgICAgICAgICBpZiAoIWFsaWFzZXMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgZmluYWwgTWFwIG9yaWdpbmFsID0gKE1hcCkgbXNnLmdldEFyZ3MoKS5nZXRPckRlZmF1bHQoVG9rZW5zLkFSR1NfQUxJQVNFUywgQ29sbGVjdGlvbnMuZW1wdHlNYXAoKSk7CisgICAgICAgICAgICAgICAgYWxpYXNlcy5mb3JFYWNoKChrLHYpIC0+IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFvcmlnaW5hbC5jb250YWluc0tleShrKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYWRkQXJnKFRva2Vucy5BUkdTX0FMSUFTRVMsIGFsaWFzZXMpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQogCiAgICAgICAgICAgICByZXR1cm4gc3VwZXIuc3VibWl0QXN5bmMoYnVpbGRlci5jcmVhdGUoKSk7CiAgICAgICAgIH0KQEAgLTY1NSwxNSArNjQ5LDYgQEAKICAgICAgICAgICoge0Bpbmhlcml0RG9jfQogICAgICAgICAgKi8KICAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIEBEZXByZWNhdGVkCi0gICAgICAgIHB1YmxpYyBDbGllbnQgcmViaW5kKGZpbmFsIFN0cmluZyBncmFwaE9yVHJhdmVyc2FsU291cmNlKSB7Ci0gICAgICAgICAgICByZXR1cm4gYWxpYXMoZ3JhcGhPclRyYXZlcnNhbFNvdXJjZSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvKioKLSAgICAgICAgICoge0Bpbmhlcml0RG9jfQotICAgICAgICAgKi8KLSAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgIHB1YmxpYyBDbGllbnQgYWxpYXMoZmluYWwgTWFwPFN0cmluZywgU3RyaW5nPiBhbGlhc2VzKSB7CiAgICAgICAgICAgICBpZiAoY2xvc2UuaXNEb25lKCkpIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIkNsaWVudCBpcyBjbG9zZWQiKTsKICAgICAgICAgICAgIHJldHVybiBuZXcgQWxpYXNDbHVzdGVyZWRDbGllbnQoY2xpZW50LCBhbGlhc2VzLCBzZXR0aW5ncyk7CmRpZmYgLS1naXQgYS9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL0Nvbm5lY3Rpb24uamF2YSBiL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvQ29ubmVjdGlvbi5qYXZhCmluZGV4IDM2MjBmYmQuLjUwNzM4ZDkgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvQ29ubmVjdGlvbi5qYXZhCisrKyBiL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvQ29ubmVjdGlvbi5qYXZhCkBAIC02MSw3ICs2MSw3IEBACiAKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBNQVhfSU5fUFJPQ0VTUyA9IDQ7CiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTUlOX0lOX1BST0NFU1MgPSAxOwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE1BWF9XQUlUX0ZPUl9DT05ORUNUSU9OID0gMzAwMDsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBNQVhfV0FJVF9GT1JfQ09OTkVDVElPTiA9IDE2MDAwOwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE1BWF9XQUlUX0ZPUl9TRVNTSU9OX0NMT1NFID0gMzAwMDsKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBNQVhfV0FJVF9GT1JfQ0xPU0UgPSAzMDAwOwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE1BWF9DT05URU5UX0xFTkdUSCA9IDY1NTM2OwpAQCAtMjg0LDE3ICsyODQsOCBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgLyoKLSAgICAgKiBJbiB0aGUgZXZlbnQgb2YgYW4gSU9FeGNlcHRpb24gKHR5cGljYWxseSBtZWFucyB0aGF0IHRoZSBDb25uZWN0aW9uIG1pZ2h0IGhhdmUgYmVlbiBjbG9zZWQgZnJvbSB0aGUgc2VydmVyIHNpZGUKLSAgICAgKiAtIHRoaXMgaXMgdHlwaWNhbCBpbiBzaXR1YXRpb25zIGxpa2Ugd2hlbiBhIHJlcXVlc3QgaXMgc2VudCB0aGF0IGV4Y2VlZHMgbWF4Q29udGVudExlbmd0aCBhbmQgdGhlIHNlcnZlciBjbG9zZXMKLSAgICAgKiB0aGUgY2hhbm5lbCBvbiBpdHMgc2lkZSkgb3Igb3RoZXIgZXhjZXB0aW9ucyB0aGF0IGluZGljYXRlIGEgbm9uLXJlY292ZXJhYmxlIHN0YXRlIGZvciB0aGUgQ29ubmVjdGlvbiBvYmplY3QKLSAgICAgKiAoYSBuZXR0eSBDb3JydXB0ZWRGcmFtZUV4Y2VwdGlvbiBpcyBhIGdvb2QgZXhhbXBsZSBvZiB0aGF0KSwgdGhlIENvbm5lY3Rpb24gY2Fubm90IHNpbXBseSBiZSByZXR1cm5lZCB0byB0aGUKLSAgICAgKiBwb29sIGFzIGZ1dHVyZSB1c2VzIHdpbGwgZW5kIHdpdGggcmVmdXNhbCBmcm9tIHRoZSBzZXJ2ZXIgYW5kIG1ha2UgaXQgYXBwZWFyIGFzIGEgZGVhZCBob3N0IGFzIHRoZSB3cml0ZSB3aWxsCi0gICAgICogbm90IHN1Y2NlZWQuIEluc3RlYWQsIHRoZSBDb25uZWN0aW9uIG5lZWRzIHRvIGJlIHJlcGxhY2VkIGluIHRoZXNlIHNjZW5hcmlvcyB3aGljaCBkZXN0cm95cyB0aGUgZGVhZCBjaGFubmVsCi0gICAgICogb24gdGhlIGNsaWVudCBhbmQgYWxsb3dzIGEgbmV3IG9uZSB0byBiZSByZWNvbnN0cnVjdGVkLgotICAgICAqLwogICAgIHByaXZhdGUgdm9pZCBoYW5kbGVDb25uZWN0aW9uQ2xlYW51cE9uRXJyb3IoZmluYWwgQ29ubmVjdGlvbiB0aGlzQ29ubmVjdGlvbiwgZmluYWwgVGhyb3dhYmxlIHQpIHsKLSAgICAgICAgaWYgKHRoaXNDb25uZWN0aW9uLmlzRGVhZCgpIHx8IHQgaW5zdGFuY2VvZiBJT0V4Y2VwdGlvbiB8fCB0IGluc3RhbmNlb2YgQ29kZWNFeGNlcHRpb24pIHsKKyAgICAgICAgaWYgKHRoaXNDb25uZWN0aW9uLmlzRGVhZCgpKSB7CiAgICAgICAgICAgICBpZiAocG9vbCAhPSBudWxsKSBwb29sLnJlcGxhY2VDb25uZWN0aW9uKHRoaXNDb25uZWN0aW9uKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHRoaXNDb25uZWN0aW9uLnJldHVyblRvUG9vbCgpOwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9IYW5kbGVyLmphdmEgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL0hhbmRsZXIuamF2YQppbmRleCA3YjEyODkwLi43NGNmNzYxIDEwMDY0NAotLS0gYS9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL0hhbmRsZXIuamF2YQorKysgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL0hhbmRsZXIuamF2YQpAQCAtMTgsNiArMTgsNyBAQAogICovCiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyOwogCitpbXBvcnQgaW8ubmV0dHkudXRpbC5BdHRyaWJ1dGVNYXA7CiBpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmxhbmczLmV4Y2VwdGlvbi5FeGNlcHRpb25VdGlsczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5leGNlcHRpb24uUmVzcG9uc2VFeGNlcHRpb247CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIubWVzc2FnZS5SZXF1ZXN0TWVzc2FnZTsKQEAgLTg1LDggKzg2LDggQEAKICAgICAgICAgICAgIC8vIFdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gQVVUSEVOVElDQVRFIHJlc3BvbnNlcyBoZXJlLiBFdmVyeXRoaW5nIGVsc2UgY2FuCiAgICAgICAgICAgICAvLyBnZXQgcGFzc2VkIGRvd24gdGhlIHBpcGVsaW5lCiAgICAgICAgICAgICBpZiAocmVzcG9uc2UuZ2V0U3RhdHVzKCkuZ2V0Q29kZSgpID09IFJlc3BvbnNlU3RhdHVzQ29kZS5BVVRIRU5USUNBVEUpIHsKLSAgICAgICAgICAgICAgICBmaW5hbCBBdHRyaWJ1dGU8U2FzbENsaWVudD4gc2FzbENsaWVudCA9IGNoYW5uZWxIYW5kbGVyQ29udGV4dC5hdHRyKHNhc2xDbGllbnRLZXkpOwotICAgICAgICAgICAgICAgIGZpbmFsIEF0dHJpYnV0ZTxTdWJqZWN0PiBzdWJqZWN0ID0gY2hhbm5lbEhhbmRsZXJDb250ZXh0LmF0dHIoc3ViamVjdEtleSk7CisgICAgICAgICAgICAgICAgZmluYWwgQXR0cmlidXRlPFNhc2xDbGllbnQ+IHNhc2xDbGllbnQgPSAoKEF0dHJpYnV0ZU1hcCkgY2hhbm5lbEhhbmRsZXJDb250ZXh0KS5hdHRyKHNhc2xDbGllbnRLZXkpOworICAgICAgICAgICAgICAgIGZpbmFsIEF0dHJpYnV0ZTxTdWJqZWN0PiBzdWJqZWN0ID0gKChBdHRyaWJ1dGVNYXApIGNoYW5uZWxIYW5kbGVyQ29udGV4dCkuYXR0cihzdWJqZWN0S2V5KTsKICAgICAgICAgICAgICAgICBmaW5hbCBSZXF1ZXN0TWVzc2FnZS5CdWlsZGVyIG1lc3NhZ2VCdWlsZGVyID0gUmVxdWVzdE1lc3NhZ2UuYnVpbGQoVG9rZW5zLk9QU19BVVRIRU5USUNBVElPTik7CiAgICAgICAgICAgICAgICAgLy8gRmlyc3QgdGltZSB0aHJvdWdoIHdlIGRvbid0IGhhdmUgYSBzYXNsIGNsaWVudAogICAgICAgICAgICAgICAgIGlmIChzYXNsQ2xpZW50LmdldCgpID09IG51bGwpIHsKQEAgLTI1NSwxMyArMjU2LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBMaXN0PFN0cmluZz4gZXhjZXB0aW9ucyA9IGF0dHJpYnV0ZXMuY29udGFpbnNLZXkoVG9rZW5zLlNUQVRVU19BVFRSSUJVVEVfRVhDRVBUSU9OUykgPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTGlzdDxTdHJpbmc+KSBhdHRyaWJ1dGVzLmdldChUb2tlbnMuU1RBVFVTX0FUVFJJQlVURV9FWENFUFRJT05TKSA6IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICBxdWV1ZS5tYXJrRXJyb3IobmV3IFJlc3BvbnNlRXhjZXB0aW9uKHJlc3BvbnNlLmdldFN0YXR1cygpLmdldENvZGUoKSwgcmVzcG9uc2UuZ2V0U3RhdHVzKCkuZ2V0TWVzc2FnZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLCBzdGFja1RyYWNlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMsIHN0YWNrVHJhY2UsIGNsZWFuU3RhdHVzQXR0cmlidXRlcyhhdHRyaWJ1dGVzKSkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgLy8gYXMgdGhpcyBpcyBhIG5vbi1QQVJUSUFMX0NPTlRFTlQgY29kZSAtIHRoZSBzdHJlYW0gaXMgZG9uZQotICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5nZXRTdGF0dXMoKS5nZXRDb2RlKCkgIT0gUmVzcG9uc2VTdGF0dXNDb2RlLlBBUlRJQUxfQ09OVEVOVCkKLSAgICAgICAgICAgICAgICAgICAgcGVuZGluZy5yZW1vdmUocmVzcG9uc2UuZ2V0UmVxdWVzdElkKCkpLm1hcmtDb21wbGV0ZSgpOworICAgICAgICAgICAgICAgIC8vIGFzIHRoaXMgaXMgYSBub24tUEFSVElBTF9DT05URU5UIGNvZGUgLSB0aGUgc3RyZWFtIGlzIGRvbmUuCisgICAgICAgICAgICAgICAgaWYgKHN0YXR1c0NvZGUgIT0gUmVzcG9uc2VTdGF0dXNDb2RlLlBBUlRJQUxfQ09OVEVOVCkgeworICAgICAgICAgICAgICAgICAgICBwZW5kaW5nLnJlbW92ZShyZXNwb25zZS5nZXRSZXF1ZXN0SWQoKSkubWFya0NvbXBsZXRlKHJlc3BvbnNlLmdldFN0YXR1cygpLmdldEF0dHJpYnV0ZXMoKSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgICAgICAvLyBpbiB0aGUgZXZlbnQgb2YgYW4gZXhjZXB0aW9uIGFib3ZlIHRoZSBleGNlcHRpb24gaXMgdG9zc2VkIGFuZCBoYW5kbGVkIGJ5IHdoYXRldmVyIGNoYW5uZWxwaXBlbGluZQogICAgICAgICAgICAgICAgIC8vIGVycm9yIGhhbmRsaW5nIGlzIGF0IHBsYXkuCkBAIC0yODQsNiArMjg2LDE1IEBACiAgICAgICAgICAgICBpZiAoIUl0ZXJhdG9yVXRpbHMuYW55TWF0Y2goRXhjZXB0aW9uVXRpbHMuZ2V0VGhyb3dhYmxlTGlzdChjYXVzZSkuaXRlcmF0b3IoKSwgdCAtPiB0IGluc3RhbmNlb2YgU2VyaWFsaXphdGlvbkV4Y2VwdGlvbikpCiAgICAgICAgICAgICAgICAgaWYgKGN0eC5jaGFubmVsKCkuaXNBY3RpdmUoKSkgY3R4LmNsb3NlKCk7CiAgICAgICAgIH0KKworICAgICAgICBwcml2YXRlIE1hcDxTdHJpbmcsT2JqZWN0PiBjbGVhblN0YXR1c0F0dHJpYnV0ZXMoZmluYWwgTWFwPFN0cmluZyxPYmplY3Q+IHN0YXR1c0F0dHJpYnV0ZXMpIHsKKyAgICAgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsT2JqZWN0PiBtID0gbmV3IEhhc2hNYXA8PigpOworICAgICAgICAgICAgc3RhdHVzQXR0cmlidXRlcy5mb3JFYWNoKChrLHYpIC0+IHsKKyAgICAgICAgICAgICAgICBpZiAoIWsuZXF1YWxzKFRva2Vucy5TVEFUVVNfQVRUUklCVVRFX0VYQ0VQVElPTlMpICYmICFrLmVxdWFscyhUb2tlbnMuU1RBVFVTX0FUVFJJQlVURV9TVEFDS19UUkFDRSkpCisgICAgICAgICAgICAgICAgICAgIG0ucHV0KGssdik7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVybiBtOworICAgICAgICB9CiAgICAgfQogCiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL1JlcXVlc3RPcHRpb25zLmphdmEgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL1JlcXVlc3RPcHRpb25zLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDZiY2UxOAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvUmVxdWVzdE9wdGlvbnMuamF2YQpAQCAtMCwwICsxLDE1MSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIubWVzc2FnZS5SZXF1ZXN0TWVzc2FnZTsKKworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5NYXA7CitpbXBvcnQgamF2YS51dGlsLk9wdGlvbmFsOworaW1wb3J0IGphdmEudXRpbC5VVUlEOworCisvKioKKyAqIE9wdGlvbnMgdGhhdCBjYW4gYmUgc3VwcGxpZWQgb24gYSBwZXIgcmVxdWVzdCBiYXNpcy4KKyAqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBSZXF1ZXN0T3B0aW9ucyB7CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFJlcXVlc3RPcHRpb25zIEVNUFRZID0gUmVxdWVzdE9wdGlvbnMuYnVpbGQoKS5jcmVhdGUoKTsKKworICAgIHByaXZhdGUgZmluYWwgTWFwPFN0cmluZyxTdHJpbmc+IGFsaWFzZXM7CisgICAgcHJpdmF0ZSBmaW5hbCBNYXA8U3RyaW5nLCBPYmplY3Q+IHBhcmFtZXRlcnM7CisgICAgcHJpdmF0ZSBmaW5hbCBJbnRlZ2VyIGJhdGNoU2l6ZTsKKyAgICBwcml2YXRlIGZpbmFsIExvbmcgdGltZW91dDsKKyAgICBwcml2YXRlIGZpbmFsIFVVSUQgb3ZlcnJpZGVSZXF1ZXN0SWQ7CisgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgdXNlckFnZW50OworCisgICAgcHJpdmF0ZSBSZXF1ZXN0T3B0aW9ucyhmaW5hbCBCdWlsZGVyIGJ1aWxkZXIpIHsKKyAgICAgICAgdGhpcy5hbGlhc2VzID0gYnVpbGRlci5hbGlhc2VzOworICAgICAgICB0aGlzLnBhcmFtZXRlcnMgPSBidWlsZGVyLnBhcmFtZXRlcnM7CisgICAgICAgIHRoaXMuYmF0Y2hTaXplID0gYnVpbGRlci5iYXRjaFNpemU7CisgICAgICAgIHRoaXMudGltZW91dCA9IGJ1aWxkZXIudGltZW91dDsKKyAgICAgICAgdGhpcy5vdmVycmlkZVJlcXVlc3RJZCA9IGJ1aWxkZXIub3ZlcnJpZGVSZXF1ZXN0SWQ7CisgICAgICAgIHRoaXMudXNlckFnZW50ID0gYnVpbGRlci51c2VyQWdlbnQ7CisgICAgfQorCisgICAgcHVibGljIE9wdGlvbmFsPFVVSUQ+IGdldE92ZXJyaWRlUmVxdWVzdElkKCkgeworICAgICAgICByZXR1cm4gT3B0aW9uYWwub2ZOdWxsYWJsZShvdmVycmlkZVJlcXVlc3RJZCk7CisgICAgfQorCisgICAgcHVibGljIE9wdGlvbmFsPE1hcDxTdHJpbmcsIFN0cmluZz4+IGdldEFsaWFzZXMoKSB7CisgICAgICAgIHJldHVybiBPcHRpb25hbC5vZk51bGxhYmxlKGFsaWFzZXMpOworICAgIH0KKworICAgIHB1YmxpYyBPcHRpb25hbDxNYXA8U3RyaW5nLCBPYmplY3Q+PiBnZXRQYXJhbWV0ZXJzKCkgeworICAgICAgICByZXR1cm4gT3B0aW9uYWwub2ZOdWxsYWJsZShwYXJhbWV0ZXJzKTsKKyAgICB9CisKKyAgICBwdWJsaWMgT3B0aW9uYWw8SW50ZWdlcj4gZ2V0QmF0Y2hTaXplKCkgeworICAgICAgICByZXR1cm4gT3B0aW9uYWwub2ZOdWxsYWJsZShiYXRjaFNpemUpOworICAgIH0KKworICAgIHB1YmxpYyBPcHRpb25hbDxMb25nPiBnZXRUaW1lb3V0KCkgeworICAgICAgICByZXR1cm4gT3B0aW9uYWwub2ZOdWxsYWJsZSh0aW1lb3V0KTsKKyAgICB9CisKKyAgICBwdWJsaWMgT3B0aW9uYWw8U3RyaW5nPiBnZXRVc2VyQWdlbnQoKSB7CisgICAgICAgIHJldHVybiBPcHRpb25hbC5vZk51bGxhYmxlKHVzZXJBZ2VudCk7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBCdWlsZGVyIGJ1aWxkKCkgeworICAgICAgICByZXR1cm4gbmV3IEJ1aWxkZXIoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGNsYXNzIEJ1aWxkZXIgeworICAgICAgICBwcml2YXRlIE1hcDxTdHJpbmcsU3RyaW5nPiBhbGlhc2VzID0gbnVsbDsKKyAgICAgICAgcHJpdmF0ZSBNYXA8U3RyaW5nLCBPYmplY3Q+IHBhcmFtZXRlcnMgPSBudWxsOworICAgICAgICBwcml2YXRlIEludGVnZXIgYmF0Y2hTaXplID0gbnVsbDsKKyAgICAgICAgcHJpdmF0ZSBMb25nIHRpbWVvdXQgPSBudWxsOworICAgICAgICBwcml2YXRlIFVVSUQgb3ZlcnJpZGVSZXF1ZXN0SWQgPSBudWxsOworICAgICAgICBwcml2YXRlIFN0cmluZyB1c2VyQWdlbnQgPSBudWxsOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBUaGUgYWxpYXNlcyB0byBzZXQgb24gdGhlIHJlcXVlc3QuCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgQnVpbGRlciBhZGRBbGlhcyhmaW5hbCBTdHJpbmcgYWxpYXNOYW1lLCBmaW5hbCBTdHJpbmcgYWN0dWFsTmFtZSkgeworICAgICAgICAgICAgaWYgKG51bGwgPT0gYWxpYXNlcykKKyAgICAgICAgICAgICAgICBhbGlhc2VzID0gbmV3IEhhc2hNYXA8PigpOworCisgICAgICAgICAgICBhbGlhc2VzLnB1dChhbGlhc05hbWUsIGFjdHVhbE5hbWUpOworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogVGhlIHBhcmFtZXRlcnMgdG8gcGFzcyBvbiB0aGUgcmVxdWVzdC4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBCdWlsZGVyIGFkZFBhcmFtZXRlcihmaW5hbCBTdHJpbmcgbmFtZSwgZmluYWwgT2JqZWN0IHZhbHVlKSB7CisgICAgICAgICAgICBpZiAobnVsbCA9PSBwYXJhbWV0ZXJzKQorICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMgPSBuZXcgSGFzaE1hcDw+KCk7CisKKyAgICAgICAgICAgIHBhcmFtZXRlcnMucHV0KG5hbWUsIHZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIE92ZXJyaWRlcyB0aGUgaWRlbnRpZmllciB0byBiZSBzZW50IG9uIHRoZSByZXF1ZXN0LgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIEJ1aWxkZXIgb3ZlcnJpZGVSZXF1ZXN0SWQoZmluYWwgVVVJRCBvdmVycmlkZVJlcXVlc3RJZCkgeworICAgICAgICAgICAgdGhpcy5vdmVycmlkZVJlcXVlc3RJZCA9IG92ZXJyaWRlUmVxdWVzdElkOworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogVGhlIHBlciBjbGllbnQgcmVxdWVzdCBvdmVycmlkZSBmb3IgdGhlIGNsaWVudCBhbmQgc2VydmVyIGNvbmZpZ3VyZWQge0Bjb2RlIHJlc3VsdEl0ZXJhdGlvbkJhdGNoU2l6ZX0uIElmCisgICAgICAgICAqIHRoaXMgdmFsdWUgaXMgbm90IHNldCwgdGhlbiB0aGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIHtAbGluayBDbHVzdGVyfSBpcyB1c2VkIHVubGVzcyB0aGUKKyAgICAgICAgICoge0BsaW5rIFJlcXVlc3RNZXNzYWdlfSBpcyBjb25maWd1cmVkIGNvbXBsZXRlbHkgYnkgdGhlIHVzZXIuCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgQnVpbGRlciBiYXRjaFNpemUoZmluYWwgaW50IGJhdGNoU2l6ZSkgeworICAgICAgICAgICAgdGhpcy5iYXRjaFNpemUgPSBiYXRjaFNpemU7CisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBUaGUgcGVyIGNsaWVudCByZXF1ZXN0IG92ZXJyaWRlIGluIG1pbGxpc2Vjb25kcyBmb3IgdGhlIHNlcnZlciBjb25maWd1cmVkIHtAY29kZSBzY3JpcHRFdmFsdWF0aW9uVGltZW91dH0uCisgICAgICAgICAqIElmIHRoaXMgdmFsdWUgaXMgbm90IHNldCwgdGhlbiB0aGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIHNlcnZlciBpcyB1c2VkLgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIEJ1aWxkZXIgdGltZW91dChmaW5hbCBsb25nIHRpbWVvdXQpIHsKKyAgICAgICAgICAgIHRoaXMudGltZW91dCA9IHRpbWVvdXQ7CisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBTZXRzIHRoZSB1c2VyQWdlbnQgaWRlbnRpZmllciB0byBiZSBzZW50IG9uIHRoZSByZXF1ZXN0LgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIEJ1aWxkZXIgdXNlckFnZW50KGZpbmFsIFN0cmluZyB1c2VyQWdlbnQpIHsKKyAgICAgICAgICAgIHRoaXMudXNlckFnZW50ID0gdXNlckFnZW50OworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgUmVxdWVzdE9wdGlvbnMgY3JlYXRlKCkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBSZXF1ZXN0T3B0aW9ucyh0aGlzKTsKKyAgICAgICAgfQorCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9SZXN1bHRRdWV1ZS5qYXZhIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9SZXN1bHRRdWV1ZS5qYXZhCmluZGV4IDU0MDZjN2IuLjI5YTY0NTMgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvUmVzdWx0UXVldWUuamF2YQorKysgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL1Jlc3VsdFF1ZXVlLmphdmEKQEAgLTI2LDYgKzI2LDcgQEAKIAogaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CiBpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247CitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOwogaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwogaW1wb3J0IGphdmEudXRpbC5IYXNoU2V0OwogaW1wb3J0IGphdmEudXRpbC5MaXN0OwpAQCAtNTYsNiArNTcsOCBAQAogCiAgICAgcHJpdmF0ZSBmaW5hbCBRdWV1ZTxQYWlyPENvbXBsZXRhYmxlRnV0dXJlPExpc3Q8UmVzdWx0Pj4sSW50ZWdlcj4+IHdhaXRpbmcgPSBuZXcgQ29uY3VycmVudExpbmtlZFF1ZXVlPD4oKTsKIAorICAgIHByaXZhdGUgTWFwPFN0cmluZyxPYmplY3Q+IHN0YXR1c0F0dHJpYnV0ZXMgPSBudWxsOworCiAgICAgcHVibGljIFJlc3VsdFF1ZXVlKGZpbmFsIExpbmtlZEJsb2NraW5nUXVldWU8UmVzdWx0PiByZXN1bHRMaW5rZWRCbG9ja2luZ1F1ZXVlLCBmaW5hbCBDb21wbGV0YWJsZUZ1dHVyZTxWb2lkPiByZWFkQ29tcGxldGUpIHsKICAgICAgICAgdGhpcy5yZXN1bHRMaW5rZWRCbG9ja2luZ1F1ZXVlID0gcmVzdWx0TGlua2VkQmxvY2tpbmdRdWV1ZTsKICAgICAgICAgdGhpcy5yZWFkQ29tcGxldGUgPSByZWFkQ29tcGxldGU7CkBAIC0xNjYsMTIgKzE2OSwxNCBAQAogICAgICAgICByZXN1bHRMaW5rZWRCbG9ja2luZ1F1ZXVlLmRyYWluVG8oY29sbGVjdGlvbik7CiAgICAgfQogCi0gICAgdm9pZCBtYXJrQ29tcGxldGUoKSB7CisgICAgdm9pZCBtYXJrQ29tcGxldGUoZmluYWwgTWFwPFN0cmluZyxPYmplY3Q+IHN0YXR1c0F0dHJpYnV0ZXMpIHsKICAgICAgICAgLy8gaWYgdGhlcmUgd2FzIHNvbWUgYWdncmVnYXRpb24gcGVyZm9ybWVkIGluIHRoZSBxdWV1ZSB0aGVuIHRoZSBmdWxsIG9iamVjdCBpcyBoYW5naW5nIG91dCB3YWl0aW5nIHRvIGJlCiAgICAgICAgIC8vIGFkZGVkIHRvIHRoZSBSZXN1bHRTZXQKICAgICAgICAgaWYgKGFnZ3JlZ2F0ZWRSZXN1bHQgIT0gbnVsbCkKICAgICAgICAgICAgIGFkZChuZXcgUmVzdWx0KGFnZ3JlZ2F0ZWRSZXN1bHQpKTsKIAorICAgICAgICB0aGlzLnN0YXR1c0F0dHJpYnV0ZXMgPSBudWxsID09IHN0YXR1c0F0dHJpYnV0ZXMgPyBDb2xsZWN0aW9ucy5lbXB0eU1hcCgpIDogc3RhdHVzQXR0cmlidXRlczsKKwogICAgICAgICB0aGlzLnJlYWRDb21wbGV0ZS5jb21wbGV0ZShudWxsKTsKIAogICAgICAgICB0aGlzLmRyYWluQWxsV2FpdGluZygpOwpAQCAtMTgzLDYgKzE4OCwxMCBAQAogICAgICAgICB0aGlzLmRyYWluQWxsV2FpdGluZygpOwogICAgIH0KIAorICAgIE1hcDxTdHJpbmcsT2JqZWN0PiBnZXRTdGF0dXNBdHRyaWJ1dGVzKCkgeworICAgICAgICByZXR1cm4gc3RhdHVzQXR0cmlidXRlczsKKyAgICB9CisKICAgICAvKioKICAgICAgKiBDb21wbGV0ZXMgdGhlIG5leHQgd2FpdGluZyBmdXR1cmUgaWYgdGhlcmUgaXMgb25lLgogICAgICAqLwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9SZXN1bHRTZXQuamF2YSBiL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvUmVzdWx0U2V0LmphdmEKaW5kZXggZjgyODc2Yy4uODVjNzRmMyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9SZXN1bHRTZXQuamF2YQorKysgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL1Jlc3VsdFNldC5qYXZhCkBAIC0yMSw4ICsyMSwxMCBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLm1lc3NhZ2UuUmVxdWVzdE1lc3NhZ2U7CiAKIGltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKIGltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CiBpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgamF2YS51dGlsLk1hcDsKIGltcG9ydCBqYXZhLnV0aWwuTm9TdWNoRWxlbWVudEV4Y2VwdGlvbjsKIGltcG9ydCBqYXZhLnV0aWwuU3BsaXRlcmF0b3I7CiBpbXBvcnQgamF2YS51dGlsLlNwbGl0ZXJhdG9yczsKQEAgLTc0LDYgKzc2LDE2IEBACiAgICAgfQogCiAgICAgLyoqCisgICAgICogUmV0dXJucyBhIGZ1dHVyZSB0aGF0IHdpbGwgY29tcGxldGUgd2hlbiB7QGxpbmsgI2FsbEl0ZW1zQXZhaWxhYmxlKCl9IGlzIHtAY29kZSB0cnVlfSBhbmQgd2lsbCBjb250YWluIHRoZQorICAgICAqIGF0dHJpYnV0ZXMgZnJvbSB0aGUgcmVzcG9uc2UuCisgICAgICovCisgICAgcHVibGljIENvbXBsZXRhYmxlRnV0dXJlPE1hcDxTdHJpbmcsT2JqZWN0Pj4gc3RhdHVzQXR0cmlidXRlcygpIHsKKyAgICAgICAgZmluYWwgQ29tcGxldGFibGVGdXR1cmU8TWFwPFN0cmluZyxPYmplY3Q+PiBhdHRycyA9IG5ldyBDb21wbGV0YWJsZUZ1dHVyZTw+KCk7CisgICAgICAgIHJlYWRDb21wbGV0ZWQudGhlblJ1bigoKSAtPiBhdHRycy5jb21wbGV0ZShudWxsID09IHJlc3VsdFF1ZXVlLmdldFN0YXR1c0F0dHJpYnV0ZXMoKSA/IENvbGxlY3Rpb25zLmVtcHR5TWFwKCkgOiByZXN1bHRRdWV1ZS5nZXRTdGF0dXNBdHRyaWJ1dGVzKCkpKTsKKyAgICAgICAgcmV0dXJuIGF0dHJzOworICAgIH0KKworICAgIC8qKgogICAgICAqIERldGVybWluZXMgaWYgYWxsIGl0ZW1zIGhhdmUgYmVlbiByZXR1cm5lZCB0byB0aGUgY2xpZW50LgogICAgICAqLwogICAgIHB1YmxpYyBib29sZWFuIGFsbEl0ZW1zQXZhaWxhYmxlKCkgewpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9Ub2tlbnMuamF2YSBiL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvVG9rZW5zLmphdmEKaW5kZXggYjJiODAzNS4uZDdhNDIxNSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9Ub2tlbnMuamF2YQorKysgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL1Rva2Vucy5qYXZhCkBAIC00Niw2ICs0Niw3IEBACiAgICAgQERlcHJlY2F0ZWQKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBPUFNfS0VZUyA9ICJrZXlzIjsKIAorICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFJFUVVFU1RfSUQgPSAicmVxdWVzdElkIjsKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBUkdTX0JBVENIX1NJWkUgPSAiYmF0Y2hTaXplIjsKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBUkdTX0JJTkRJTkdTID0gImJpbmRpbmdzIjsKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBUkdTX0FMSUFTRVMgPSAiYWxpYXNlcyI7CkBAIC04NSwxMiArODYsNyBAQAogICAgICAqLwogICAgIEBEZXByZWNhdGVkCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQVJHU19TSURFX0VGRkVDVF9LRVkgPSAic2lkZUVmZmVjdEtleSI7Ci0KLSAgICAvKioKLSAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuMS4wLWluY3ViYXRpbmcsIHJlcGxhY2VkIGJ5IHtAbGluayAjQVJHU19BTElBU0VTfS4KLSAgICAgKi8KLSAgICBARGVwcmVjYXRlZAotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFSR1NfUkVCSU5ESU5HUyA9ICJyZWJpbmRpbmdzIjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBUkdTX1VTRVJfQUdFTlQgPSAidXNlckFnZW50IjsKIAogICAgIC8qKgogICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy4zLjgsIG5vdCBkaXJlY3RseSByZXBsYWNlZCBpbiB0aGUgcHJvdG9jb2wgYXMgc2lkZS1lZmZlY3QgcmV0cmlldmFsIGFmdGVyCkBAIC0xMzEsNCArMTI3LDE5IEBACiAKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTVEFUVVNfQVRUUklCVVRFX0VYQ0VQVElPTlMgPSAiZXhjZXB0aW9ucyI7CiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU1RBVFVTX0FUVFJJQlVURV9TVEFDS19UUkFDRSA9ICJzdGFja1RyYWNlIjsKKyAgICAvKioKKyAgICAgKiBBIHtAbGluayBSZXN1bHRTZXQjc3RhdHVzQXR0cmlidXRlcygpfSBrZXkgZm9yIHVzZXItZmFjaW5nIHdhcm5pbmdzLgorICAgICAqIDxwPgorICAgICAqIEltcGxlbWVudGF0aW9ucyB0aGF0IHNldCB0aGlzIGtleSBzaG91bGQgY29uc2lkZXIgdXNpbmcgb25lIG9mCisgICAgICogdGhlc2UgdHdvIHJlY29tbWVuZGVkIHZhbHVlIHR5cGVzOgorICAgICAqIDx1bD4KKyAgICAgKiAgICAgPGxpPkEge0BsaW5rIGphdmEudXRpbC5MaXN0fSBpbXBsZW1lbnRhdGlvbiBjb250YWluaW5nCisgICAgICogICAgIHJlZmVyZW5jZXMgZm9yIHdoaWNoIHtAbGluayBTdHJpbmcjdmFsdWVPZihPYmplY3QpfSBwcm9kdWNlcworICAgICAqICAgICBhIG1lYW5pbmdmdWwgcmV0dXJuIHZhbHVlLiAgRm9yIGV4YW1wbGUsIGEgbGlzdCBvZiBzdHJpbmdzLjwvbGk+CisgICAgICogICAgIDxsaT5PdGhlcndpc2UsIGFueSBzaW5nbGUgbm9uLWxpc3Qgb2JqZWN0IGZvciB3aGljaAorICAgICAqICAgICB7QGxpbmsgU3RyaW5nI3ZhbHVlT2YoT2JqZWN0KX0gcHJvZHVjZXMgYSBtZWFuaW5nZnVsIHJldHVybiB2YWx1ZS4KKyAgICAgKiAgICAgRm9yIGV4YW1wbGUsIGEgc3RyaW5nLjwvbGk+CisgICAgICogPC91bD4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTVEFUVVNfQVRUUklCVVRFX1dBUk5JTkdTID0gIndhcm5pbmdzIjsKIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvZXhjZXB0aW9uL1Jlc3BvbnNlRXhjZXB0aW9uLmphdmEgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL2V4Y2VwdGlvbi9SZXNwb25zZUV4Y2VwdGlvbi5qYXZhCmluZGV4IDUxZTc0OGEuLmE5NjBkNDQgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvZXhjZXB0aW9uL1Jlc3BvbnNlRXhjZXB0aW9uLmphdmEKKysrIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9leGNlcHRpb24vUmVzcG9uc2VFeGNlcHRpb24uamF2YQpAQCAtMjAsMjcgKzIwLDM3IEBACiAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5tZXNzYWdlLlJlc3BvbnNlU3RhdHVzQ29kZTsKIAoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOwogaW1wb3J0IGphdmEudXRpbC5PcHRpb25hbDsKIAogLyoqCiAgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCiAgKi8KIHB1YmxpYyBjbGFzcyBSZXNwb25zZUV4Y2VwdGlvbiBleHRlbmRzIEV4Y2VwdGlvbiB7Ci0gICAgcHJpdmF0ZSBSZXNwb25zZVN0YXR1c0NvZGUgcmVzcG9uc2VTdGF0dXNDb2RlOwotICAgIHByaXZhdGUgU3RyaW5nIHJlbW90ZVN0YWNrVHJhY2UgPSBudWxsOwotICAgIHByaXZhdGUgTGlzdDxTdHJpbmc+IHJlbW90ZUV4Y2VwdGlvbkhpZXJhcmNoeSA9IG51bGw7CisgICAgcHJpdmF0ZSBmaW5hbCBSZXNwb25zZVN0YXR1c0NvZGUgcmVzcG9uc2VTdGF0dXNDb2RlOworICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIHJlbW90ZVN0YWNrVHJhY2U7CisgICAgcHJpdmF0ZSBmaW5hbCBMaXN0PFN0cmluZz4gcmVtb3RlRXhjZXB0aW9uSGllcmFyY2h5OworICAgIHByaXZhdGUgZmluYWwgTWFwPFN0cmluZyxPYmplY3Q+IGF0dHJpYnV0ZXM7CiAKICAgICBwdWJsaWMgUmVzcG9uc2VFeGNlcHRpb24oZmluYWwgUmVzcG9uc2VTdGF0dXNDb2RlIHJlc3BvbnNlU3RhdHVzQ29kZSwgZmluYWwgU3RyaW5nIHNlcnZlck1lc3NhZ2UpIHsKLSAgICAgICAgc3VwZXIoc2VydmVyTWVzc2FnZSk7Ci0gICAgICAgIHRoaXMucmVzcG9uc2VTdGF0dXNDb2RlID0gcmVzcG9uc2VTdGF0dXNDb2RlOworICAgICAgICB0aGlzKHJlc3BvbnNlU3RhdHVzQ29kZSwgc2VydmVyTWVzc2FnZSwgbnVsbCwgbnVsbCk7CiAgICAgfQogCiAgICAgcHVibGljIFJlc3BvbnNlRXhjZXB0aW9uKGZpbmFsIFJlc3BvbnNlU3RhdHVzQ29kZSByZXNwb25zZVN0YXR1c0NvZGUsIGZpbmFsIFN0cmluZyBzZXJ2ZXJNZXNzYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBMaXN0PFN0cmluZz4gcmVtb3RlRXhjZXB0aW9uSGllcmFyY2h5LCBmaW5hbCBTdHJpbmcgcmVtb3RlU3RhY2tUcmFjZSkgewotICAgICAgICB0aGlzKHJlc3BvbnNlU3RhdHVzQ29kZSwgc2VydmVyTWVzc2FnZSk7Ci0gICAgICAgIHRoaXMucmVtb3RlRXhjZXB0aW9uSGllcmFyY2h5ID0gcmVtb3RlRXhjZXB0aW9uSGllcmFyY2h5OworICAgICAgICB0aGlzKHJlc3BvbnNlU3RhdHVzQ29kZSwgc2VydmVyTWVzc2FnZSwgcmVtb3RlRXhjZXB0aW9uSGllcmFyY2h5LCByZW1vdGVTdGFja1RyYWNlLCBudWxsKTsKKyAgICB9CisKKyAgICBwdWJsaWMgUmVzcG9uc2VFeGNlcHRpb24oZmluYWwgUmVzcG9uc2VTdGF0dXNDb2RlIHJlc3BvbnNlU3RhdHVzQ29kZSwgZmluYWwgU3RyaW5nIHNlcnZlck1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIExpc3Q8U3RyaW5nPiByZW1vdGVFeGNlcHRpb25IaWVyYXJjaHksIGZpbmFsIFN0cmluZyByZW1vdGVTdGFja1RyYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLE9iamVjdD4gc3RhdHVzQXR0cmlidXRlcykgeworICAgICAgICBzdXBlcihzZXJ2ZXJNZXNzYWdlKTsKKyAgICAgICAgdGhpcy5yZXNwb25zZVN0YXR1c0NvZGUgPSByZXNwb25zZVN0YXR1c0NvZGU7CisgICAgICAgIHRoaXMucmVtb3RlRXhjZXB0aW9uSGllcmFyY2h5ID0gcmVtb3RlRXhjZXB0aW9uSGllcmFyY2h5ICE9IG51bGwgPyBDb2xsZWN0aW9ucy51bm1vZGlmaWFibGVMaXN0KHJlbW90ZUV4Y2VwdGlvbkhpZXJhcmNoeSkgOiBudWxsOwogICAgICAgICB0aGlzLnJlbW90ZVN0YWNrVHJhY2UgPSByZW1vdGVTdGFja1RyYWNlOworICAgICAgICB0aGlzLmF0dHJpYnV0ZXMgPSBzdGF0dXNBdHRyaWJ1dGVzICE9IG51bGwgPyBDb2xsZWN0aW9ucy51bm1vZGlmaWFibGVNYXAoc3RhdHVzQXR0cmlidXRlcykgOiBudWxsOwogICAgIH0KIAogICAgIHB1YmxpYyBSZXNwb25zZVN0YXR1c0NvZGUgZ2V0UmVzcG9uc2VTdGF0dXNDb2RlKCkgewpAQCAtNjEsNCArNzEsMTEgQEAKICAgICBwdWJsaWMgT3B0aW9uYWw8TGlzdDxTdHJpbmc+PiBnZXRSZW1vdGVFeGNlcHRpb25IaWVyYXJjaHkoKSB7CiAgICAgICAgIHJldHVybiBPcHRpb25hbC5vZk51bGxhYmxlKHJlbW90ZUV4Y2VwdGlvbkhpZXJhcmNoeSk7CiAgICAgfQorCisgICAgLyoqCisgICAgICogR2V0cyBhbnkgc3RhdHVzIGF0dHJpYnV0ZXMgZnJvbSB0aGUgcmVzcG9uc2UuCisgICAgICovCisgICAgcHVibGljIE9wdGlvbmFsPE1hcDxTdHJpbmcsIE9iamVjdD4+IGdldFN0YXR1c0F0dHJpYnV0ZXMoKSB7CisgICAgICAgIHJldHVybiBPcHRpb25hbC5vZk51bGxhYmxlKGF0dHJpYnV0ZXMpOworICAgIH0KIH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL2hhbmRsZXIvV2ViU29ja2V0Q2xpZW50SGFuZGxlci5qYXZhIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9oYW5kbGVyL1dlYlNvY2tldENsaWVudEhhbmRsZXIuamF2YQppbmRleCA3YjU4NThiLi40ZjQzYWZlIDEwMDY0NAotLS0gYS9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL2hhbmRsZXIvV2ViU29ja2V0Q2xpZW50SGFuZGxlci5qYXZhCisrKyBiL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvaGFuZGxlci9XZWJTb2NrZXRDbGllbnRIYW5kbGVyLmphdmEKQEAgLTczLDcgKzczLDcgQEAKIAogICAgICAgICBpZiAobXNnIGluc3RhbmNlb2YgRnVsbEh0dHBSZXNwb25zZSkgewogICAgICAgICAgICAgZmluYWwgRnVsbEh0dHBSZXNwb25zZSByZXNwb25zZSA9IChGdWxsSHR0cFJlc3BvbnNlKSBtc2c7Ci0gICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCJVbmV4cGVjdGVkIEZ1bGxIdHRwUmVzcG9uc2UgKGdldFN0YXR1cz0iICsgcmVzcG9uc2UuZ2V0U3RhdHVzKCkgKyAiLCBjb250ZW50PSIKKyAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oIlVuZXhwZWN0ZWQgRnVsbEh0dHBSZXNwb25zZSAoZ2V0U3RhdHVzPSIgKyByZXNwb25zZS5zdGF0dXMoKSArICIsIGNvbnRlbnQ9IgogICAgICAgICAgICAgICAgICAgICArIHJlc3BvbnNlLmNvbnRlbnQoKS50b1N0cmluZyhDaGFyc2V0VXRpbC5VVEZfOCkgKyAnKScpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvaGFuZGxlci9XZWJTb2NrZXRHcmVtbGluUmVxdWVzdEVuY29kZXIuamF2YSBiL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvaGFuZGxlci9XZWJTb2NrZXRHcmVtbGluUmVxdWVzdEVuY29kZXIuamF2YQppbmRleCA2MjZiMWVlLi45ZmZiYzYwIDEwMDY0NAotLS0gYS9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL2hhbmRsZXIvV2ViU29ja2V0R3JlbWxpblJlcXVlc3RFbmNvZGVyLmphdmEKKysrIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9oYW5kbGVyL1dlYlNvY2tldEdyZW1saW5SZXF1ZXN0RW5jb2Rlci5qYXZhCkBAIC0yOSw4ICsyOSw2IEBACiBpbXBvcnQgaW8ubmV0dHkuaGFuZGxlci5jb2RlYy5NZXNzYWdlVG9NZXNzYWdlRW5jb2RlcjsKIGltcG9ydCBpby5uZXR0eS5oYW5kbGVyLmNvZGVjLmh0dHAud2Vic29ja2V0eC5CaW5hcnlXZWJTb2NrZXRGcmFtZTsKIGltcG9ydCBpby5uZXR0eS5oYW5kbGVyLmNvZGVjLmh0dHAud2Vic29ja2V0eC5UZXh0V2ViU29ja2V0RnJhbWU7Ci1pbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKLWltcG9ydCBvcmcuc2xmNGouTG9nZ2VyRmFjdG9yeTsKIAogaW1wb3J0IGphdmEudXRpbC5MaXN0OwogCkBAIC0zOSw3ICszNyw2IEBACiAgKi8KIEBDaGFubmVsSGFuZGxlci5TaGFyYWJsZQogcHVibGljIGZpbmFsIGNsYXNzIFdlYlNvY2tldEdyZW1saW5SZXF1ZXN0RW5jb2RlciBleHRlbmRzIE1lc3NhZ2VUb01lc3NhZ2VFbmNvZGVyPFJlcXVlc3RNZXNzYWdlPiB7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKFdlYlNvY2tldEdyZW1saW5SZXF1ZXN0RW5jb2Rlci5jbGFzcyk7CiAgICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIGJpbmFyeUVuY29kaW5nOwogCiAgICAgcHJpdmF0ZSBmaW5hbCBNZXNzYWdlU2VyaWFsaXplciBzZXJpYWxpemVyOwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9yZW1vdGUvRHJpdmVyUmVtb3RlQ29ubmVjdGlvbi5qYXZhIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9yZW1vdGUvRHJpdmVyUmVtb3RlQ29ubmVjdGlvbi5qYXZhCmluZGV4IGY1OWU1OTEuLjExNGM1OTYgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvcmVtb3RlL0RyaXZlclJlbW90ZUNvbm5lY3Rpb24uamF2YQorKysgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3JlbW90ZS9Ecml2ZXJSZW1vdGVDb25uZWN0aW9uLmphdmEKQEAgLTIxLDI0ICsyMSwyNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5jb25maWd1cmF0aW9uLkNvbmZpZ3VyYXRpb247CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuQ2xpZW50OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLkNsdXN0ZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuUmVzdWx0U2V0OwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwuc3RyYXRlZ3kuZGVjb3JhdGlvbi5WZXJ0ZXhQcm9ncmFtU3RyYXRlZ3k7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuUmVxdWVzdE9wdGlvbnM7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnJlbW90ZS5SZW1vdGVDb25uZWN0aW9uOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5yZW1vdGUuUmVtb3RlQ29ubmVjdGlvbkV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MucmVtb3RlLlJlbW90ZUdyYXBoOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5yZW1vdGUudHJhdmVyc2FsLlJlbW90ZVRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLkJ5dGVjb2RlOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2VyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkdyYXBoVHJhdmVyc2FsU291cmNlOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkdyYXBoOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuR3JhcGhGYWN0b3J5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuZGVjb3JhdGlvbi5PcHRpb25zU3RyYXRlZ3k7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLkJ5dGVjb2RlVXRpbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnV0aWwuaXRlcmF0b3IuSXRlcmF0b3JVdGlsczsKIAogaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOwogaW1wb3J0IGphdmEudXRpbC5PcHRpb25hbDsKK2ltcG9ydCBqYXZhLnV0aWwuVVVJRDsKIGltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5Db21wbGV0YWJsZUZ1dHVyZTsKLWltcG9ydCBqYXZhLnV0aWwuZnVuY3Rpb24uU3VwcGxpZXI7CisKK2ltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuVG9rZW5zLkFSR1NfQkFUQ0hfU0laRTsKK2ltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuVG9rZW5zLkFSR1NfU0NSSVBUX0VWQUxfVElNRU9VVDsKK2ltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuVG9rZW5zLkFSR1NfRVZBTF9USU1FT1VUOworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5Ub2tlbnMuQVJHU19VU0VSX0FHRU5UOworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5Ub2tlbnMuUkVRVUVTVF9JRDsKIAogLyoqCiAgKiBBIHtAbGluayBSZW1vdGVDb25uZWN0aW9ufSBpbXBsZW1lbnRhdGlvbiBmb3IgR3JlbWxpbiBTZXJ2ZXIuIEVhY2gge0Bjb2RlIERyaXZlclNlcnZlckNvbm5lY3Rpb259IGlzIGJvdW5kIHRvIG9uZQpAQCAtMTkzLDggKzE5Niw3IEBACiAgICAgfQogCiAgICAgLyoqCi0gICAgICogQ3JlYXRlcyBhIHtAbGluayBEcml2ZXJSZW1vdGVDb25uZWN0aW9ufSB1c2luZyBhbiBBcGFjaGUge0Bjb2RlIENvbmZpZ3VyYXRpb259IG9iamVjdC4gVGhpcyBtZXRob2Qgb2YgY3JlYXRpb24KLSAgICAgKiBpcyB0eXBpY2FsbHkgdXNlZCBieSB7QGxpbmsgUmVtb3RlR3JhcGh9IHdoZW4gYmVpbmcgY29uc3RydWN0ZWQgdmlhIHtAbGluayBHcmFwaEZhY3Rvcnl9LiBUaGUKKyAgICAgKiBDcmVhdGVzIGEge0BsaW5rIERyaXZlclJlbW90ZUNvbm5lY3Rpb259IHVzaW5nIGFuIEFwYWNoZSB7QGNvZGUgQ29uZmlndXJhdGlvbn0gb2JqZWN0LiBUaGUKICAgICAgKiB7QGNvZGUgQ29uZmlndXJhdGlvbn0gb2JqZWN0IHNob3VsZCBjb250YWluIG9uZSBvZiB0d28gcmVxdWlyZWQga2V5cywgZWl0aGVyOiB7QGNvZGUgY2x1c3RlckNvbmZpZ3VyYXRpb25GaWxlfQogICAgICAqIG9yIHtAY29kZSBjbHVzdGVyQ29uZmlndXJhdGlvbn0uIFRoZSB7QGNvZGUgY2x1c3RlckNvbmZpZ3VyYXRpb25GaWxlfSBrZXkgaXMgYSBwb2ludGVyIHRvIGEgZmlsZSBsb2NhdGlvbgogICAgICAqIGNvbnRhaW5pbmcgYSBjb25maWd1cmF0aW9uIGZvciBhIHtAbGluayBDbHVzdGVyfS4gVGhlIHtAY29kZSBjbHVzdGVyQ29uZmlndXJhdGlvbn0gc2hvdWxkIGNvbnRhaW4gdGhlIGFjdHVhbApAQCAtMjE3LDQ4ICsyMTksMzUgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIC8qKgotICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy4yLjIsIHJlcGxhY2VkIGJ5IHtAbGluayAjc3VibWl0QXN5bmMoQnl0ZWNvZGUpfS4KLSAgICAgKi8KLSAgICBARGVwcmVjYXRlZAotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyA8RT4gSXRlcmF0b3I8VHJhdmVyc2VyLkFkbWluPEU+PiBzdWJtaXQoZmluYWwgVHJhdmVyc2FsPD8sIEU+IHQpIHRocm93cyBSZW1vdGVDb25uZWN0aW9uRXhjZXB0aW9uIHsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGlmIChjb25mLmlzUHJlc2VudCgpICYmIGNvbmYuZ2V0KCkuY29udGFpbnNLZXkoR1JFTUxJTl9SRU1PVEUgKyAiYXR0YWNobWVudCIpCi0gICAgICAgICAgICAgICAgICAgICYmICF0LmFzQWRtaW4oKS5nZXRTdHJhdGVnaWVzKCkuZ2V0U3RyYXRlZ3koVmVydGV4UHJvZ3JhbVN0cmF0ZWd5LmNsYXNzKS5pc1ByZXNlbnQoKSkgewotICAgICAgICAgICAgICAgIGZpbmFsIEdyYXBoIGdyYXBoID0gKChTdXBwbGllcjxHcmFwaD4pIGNvbmYuZ2V0KCkuZ2V0UHJvcGVydHkoR1JFTUxJTl9SRU1PVEUgKyAiYXR0YWNobWVudCIpKS5nZXQoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERyaXZlclJlbW90ZVRyYXZlcnNhbC5BdHRhY2hpbmdUcmF2ZXJzZXJJdGVyYXRvcjw+KGNsaWVudC5zdWJtaXQodC5hc0FkbWluKCkuZ2V0Qnl0ZWNvZGUoKSkuaXRlcmF0b3IoKSwgZ3JhcGgpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERyaXZlclJlbW90ZVRyYXZlcnNhbC5UcmF2ZXJzZXJJdGVyYXRvcjw+KGNsaWVudC5zdWJtaXQodC5hc0FkbWluKCkuZ2V0Qnl0ZWNvZGUoKSkuaXRlcmF0b3IoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgewotICAgICAgICAgICAgdGhyb3cgbmV3IFJlbW90ZUNvbm5lY3Rpb25FeGNlcHRpb24oZXgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjIuNCwgcmVwbGFjZWQgYnkge0BsaW5rICNzdWJtaXRBc3luYyhCeXRlY29kZSl9LgotICAgICAqLwotICAgIEBEZXByZWNhdGVkCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIDxFPiBSZW1vdGVUcmF2ZXJzYWw8PyxFPiBzdWJtaXQoZmluYWwgQnl0ZWNvZGUgYnl0ZWNvZGUpIHRocm93cyBSZW1vdGVDb25uZWN0aW9uRXhjZXB0aW9uIHsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGZpbmFsIFJlc3VsdFNldCBycyA9IGNsaWVudC5zdWJtaXQoYnl0ZWNvZGUpOwotICAgICAgICAgICAgcmV0dXJuIG5ldyBEcml2ZXJSZW1vdGVUcmF2ZXJzYWw8PihycywgY2xpZW50LCBhdHRhY2hFbGVtZW50cywgY29uZik7Ci0gICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgewotICAgICAgICAgICAgdGhyb3cgbmV3IFJlbW90ZUNvbm5lY3Rpb25FeGNlcHRpb24oZXgpOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIDxFPiBDb21wbGV0YWJsZUZ1dHVyZTxSZW1vdGVUcmF2ZXJzYWw8PywgRT4+IHN1Ym1pdEFzeW5jKGZpbmFsIEJ5dGVjb2RlIGJ5dGVjb2RlKSB0aHJvd3MgUmVtb3RlQ29ubmVjdGlvbkV4Y2VwdGlvbiB7CiAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICByZXR1cm4gY2xpZW50LnN1Ym1pdEFzeW5jKGJ5dGVjb2RlKS50aGVuQXBwbHkocnMgLT4gbmV3IERyaXZlclJlbW90ZVRyYXZlcnNhbDw+KHJzLCBjbGllbnQsIGF0dGFjaEVsZW1lbnRzLCBjb25mKSk7CisgICAgICAgICAgICByZXR1cm4gY2xpZW50LnN1Ym1pdEFzeW5jKGJ5dGVjb2RlLCBnZXRSZXF1ZXN0T3B0aW9ucyhieXRlY29kZSkpLnRoZW5BcHBseShycyAtPiBuZXcgRHJpdmVyUmVtb3RlVHJhdmVyc2FsPD4ocnMsIGNsaWVudCwgYXR0YWNoRWxlbWVudHMsIGNvbmYpKTsKICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CiAgICAgICAgICAgICB0aHJvdyBuZXcgUmVtb3RlQ29ubmVjdGlvbkV4Y2VwdGlvbihleCk7CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBwcm90ZWN0ZWQgc3RhdGljIFJlcXVlc3RPcHRpb25zIGdldFJlcXVlc3RPcHRpb25zKGZpbmFsIEJ5dGVjb2RlIGJ5dGVjb2RlKSB7CisgICAgICAgIGZpbmFsIEl0ZXJhdG9yPE9wdGlvbnNTdHJhdGVneT4gaXR0eSA9IEJ5dGVjb2RlVXRpbC5maW5kU3RyYXRlZ2llcyhieXRlY29kZSwgT3B0aW9uc1N0cmF0ZWd5LmNsYXNzKTsKKyAgICAgICAgZmluYWwgUmVxdWVzdE9wdGlvbnMuQnVpbGRlciBidWlsZGVyID0gUmVxdWVzdE9wdGlvbnMuYnVpbGQoKTsKKyAgICAgICAgd2hpbGUgKGl0dHkuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICBmaW5hbCBPcHRpb25zU3RyYXRlZ3kgb3B0aW9uc1N0cmF0ZWd5ID0gaXR0eS5uZXh0KCk7CisgICAgICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLE9iamVjdD4gb3B0aW9ucyA9IG9wdGlvbnNTdHJhdGVneS5nZXRPcHRpb25zKCk7CisgICAgICAgICAgICBpZiAob3B0aW9ucy5jb250YWluc0tleShBUkdTX0VWQUxfVElNRU9VVCkpCisgICAgICAgICAgICAgICAgYnVpbGRlci50aW1lb3V0KChsb25nKSBvcHRpb25zLmdldChBUkdTX0VWQUxfVElNRU9VVCkpOworICAgICAgICAgICAgaWYgKG9wdGlvbnMuY29udGFpbnNLZXkoQVJHU19TQ1JJUFRfRVZBTF9USU1FT1VUKSkKKyAgICAgICAgICAgICAgICBidWlsZGVyLnRpbWVvdXQoKGxvbmcpIG9wdGlvbnMuZ2V0KEFSR1NfU0NSSVBUX0VWQUxfVElNRU9VVCkpOworICAgICAgICAgICAgaWYgKG9wdGlvbnMuY29udGFpbnNLZXkoUkVRVUVTVF9JRCkpCisgICAgICAgICAgICAgICAgYnVpbGRlci5vdmVycmlkZVJlcXVlc3RJZCgoVVVJRCkgb3B0aW9ucy5nZXQoUkVRVUVTVF9JRCkpOworICAgICAgICAgICAgaWYgKG9wdGlvbnMuY29udGFpbnNLZXkoQVJHU19CQVRDSF9TSVpFKSkKKyAgICAgICAgICAgICAgICBidWlsZGVyLmJhdGNoU2l6ZSgoaW50KSBvcHRpb25zLmdldChBUkdTX0JBVENIX1NJWkUpKTsKKyAgICAgICAgICAgIGlmIChvcHRpb25zLmNvbnRhaW5zS2V5KEFSR1NfVVNFUl9BR0VOVCkpCisgICAgICAgICAgICAgICAgYnVpbGRlci51c2VyQWdlbnQoKFN0cmluZykgb3B0aW9ucy5nZXQoQVJHU19VU0VSX0FHRU5UKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIuY3JlYXRlKCk7CisgICAgfQorCiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIHZvaWQgY2xvc2UoKSB0aHJvd3MgRXhjZXB0aW9uIHsKICAgICAgICAgdHJ5IHsKZGlmZiAtLWdpdCBhL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvcmVtb3RlL0RyaXZlclJlbW90ZVRyYXZlcnNhbC5qYXZhIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9yZW1vdGUvRHJpdmVyUmVtb3RlVHJhdmVyc2FsLmphdmEKaW5kZXggMjhlYzY5ZC4uZTQ3YjA3YiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9yZW1vdGUvRHJpdmVyUmVtb3RlVHJhdmVyc2FsLmphdmEKKysrIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9yZW1vdGUvRHJpdmVyUmVtb3RlVHJhdmVyc2FsLmphdmEKQEAgLTY3LDkgKzY3LDcgQEAKICAgICAgICAgICAgIHRoaXMudHJhdmVyc2VycyA9IG5ldyBUcmF2ZXJzZXJJdGVyYXRvcjw+KHJzLml0ZXJhdG9yKCkpOwogICAgICAgICB9CiAKLSAgICAgICAgdGhpcy5zaWRlRWZmZWN0cyA9IG5ldyBEcml2ZXJSZW1vdGVUcmF2ZXJzYWxTaWRlRWZmZWN0cyhjbGllbnQsCi0gICAgICAgICAgICAgICAgcnMuZ2V0T3JpZ2luYWxSZXF1ZXN0TWVzc2FnZSgpLmdldFJlcXVlc3RJZCgpLAotICAgICAgICAgICAgICAgIHJzLmdldEhvc3QoKSwgcnMuYWxsSXRlbXNBdmFpbGFibGVBc3luYygpKTsKKyAgICAgICAgdGhpcy5zaWRlRWZmZWN0cyA9IG5ldyBEcml2ZXJSZW1vdGVUcmF2ZXJzYWxTaWRlRWZmZWN0cyhjbGllbnQscnMpOwogICAgIH0KIAogICAgIC8qKgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9yZW1vdGUvRHJpdmVyUmVtb3RlVHJhdmVyc2FsU2lkZUVmZmVjdHMuamF2YSBiL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvcmVtb3RlL0RyaXZlclJlbW90ZVRyYXZlcnNhbFNpZGVFZmZlY3RzLmphdmEKaW5kZXggNGUyZDgwOC4uYmFmNTRmMyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9yZW1vdGUvRHJpdmVyUmVtb3RlVHJhdmVyc2FsU2lkZUVmZmVjdHMuamF2YQorKysgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3JlbW90ZS9Ecml2ZXJSZW1vdGVUcmF2ZXJzYWxTaWRlRWZmZWN0cy5qYXZhCkBAIC0yMiw2ICsyMiw3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuQ2xpZW50OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLkhvc3Q7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuUmVzdWx0OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLlJlc3VsdFNldDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5Ub2tlbnM7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIubWVzc2FnZS5SZXF1ZXN0TWVzc2FnZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MucmVtb3RlLnRyYXZlcnNhbC5BYnN0cmFjdFJlbW90ZVRyYXZlcnNhbFNpZGVFZmZlY3RzOwpAQCAtNTYsMTMgKzU3LDM3IEBACiAgICAgcHJpdmF0ZSBib29sZWFuIGNsb3NlZCA9IGZhbHNlOwogICAgIHByaXZhdGUgYm9vbGVhbiByZXRyaWV2ZWRBbGxLZXlzID0gZmFsc2U7CiAgICAgcHJpdmF0ZSBmaW5hbCBDb21wbGV0YWJsZUZ1dHVyZTxWb2lkPiByZWFkeTsKKyAgICBwcml2YXRlIGZpbmFsIENvbXBsZXRhYmxlRnV0dXJlPE1hcDxTdHJpbmcsT2JqZWN0Pj4gc3RhdHVzQXR0cmlidXRlczsKIAorICAgIC8qKgorICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy40LjAsIHJlcGxhY2VkIGJ5IHtAbGluayAjRHJpdmVyUmVtb3RlVHJhdmVyc2FsU2lkZUVmZmVjdHMoQ2xpZW50LCBSZXN1bHRTZXQpfQorICAgICAqLworICAgIEBEZXByZWNhdGVkCiAgICAgcHVibGljIERyaXZlclJlbW90ZVRyYXZlcnNhbFNpZGVFZmZlY3RzKGZpbmFsIENsaWVudCBjbGllbnQsIGZpbmFsIFVVSUQgc2VydmVyU2lkZUVmZmVjdCwgZmluYWwgSG9zdCBob3N0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBDb21wbGV0YWJsZUZ1dHVyZTxWb2lkPiByZWFkeSkgewogICAgICAgICB0aGlzLmNsaWVudCA9IGNsaWVudDsKICAgICAgICAgdGhpcy5zZXJ2ZXJTaWRlRWZmZWN0ID0gc2VydmVyU2lkZUVmZmVjdDsKICAgICAgICAgdGhpcy5ob3N0ID0gaG9zdDsKICAgICAgICAgdGhpcy5yZWFkeSA9IHJlYWR5OworICAgICAgICB0aGlzLnN0YXR1c0F0dHJpYnV0ZXMgPSBDb21wbGV0YWJsZUZ1dHVyZS5jb21wbGV0ZWRGdXR1cmUoQ29sbGVjdGlvbnMuZW1wdHlNYXAoKSk7CisgICAgfQorCisgICAgcHVibGljIERyaXZlclJlbW90ZVRyYXZlcnNhbFNpZGVFZmZlY3RzKGZpbmFsIENsaWVudCBjbGllbnQsIGZpbmFsIFJlc3VsdFNldCBycykgeworICAgICAgICB0aGlzLmNsaWVudCA9IGNsaWVudDsKKyAgICAgICAgdGhpcy5zZXJ2ZXJTaWRlRWZmZWN0ID0gcnMuZ2V0T3JpZ2luYWxSZXF1ZXN0TWVzc2FnZSgpLmdldFJlcXVlc3RJZCgpOworICAgICAgICB0aGlzLmhvc3QgPSBycy5nZXRIb3N0KCk7CisgICAgICAgIHRoaXMucmVhZHkgPSBycy5hbGxJdGVtc0F2YWlsYWJsZUFzeW5jKCk7CisgICAgICAgIHRoaXMuc3RhdHVzQXR0cmlidXRlcyA9IHJzLnN0YXR1c0F0dHJpYnV0ZXMoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBzdGF0dXMgYXR0cmlidXRlcyBmcm9tIHRoZSByZXNwb25zZSBmcm9tIHRoZSBzZXJ2ZXIuIFRoaXMgbWV0aG9kIHdpbGwgYmxvY2sgdW50aWwgYWxsIHJlc3VsdHMgaGF2ZQorICAgICAqIGJlZW4gcmV0cmlldmVkLgorICAgICAqLworICAgIHB1YmxpYyBNYXA8U3RyaW5nLE9iamVjdD4gc3RhdHVzQXR0cmlidXRlcygpIHsKKyAgICAgICAgLy8gd2FpdCBmb3IgdGhlIHJlYWQgdG8gY29tcGxldGUgKGkuZS4gaXRlcmF0aW9uIG9uIHRoZSBzZXJ2ZXIpIGJlZm9yZSBhbGxvd2luZyB0aGUgY2FsbGVyIHRvIGdldCB0aGUKKyAgICAgICAgLy8gYXR0cmlidXRlLiBzaW1wbHkgZm9sbG93aW5nIHRoZSBwYXR0ZXJuIGZyb20gb3RoZXIgbWV0aG9kcyBoZXJlIGZvciBub3cuCisgICAgICAgIHJldHVybiBzdGF0dXNBdHRyaWJ1dGVzLmpvaW4oKTsKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL0Fic3RyYWN0R3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYyZDAuamF2YSBiL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL0Fic3RyYWN0R3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYyZDAuamF2YQppbmRleCA3YWUxN2EzLi5mY2QzODlhIDEwMDY0NAotLS0gYS9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9BYnN0cmFjdEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwLmphdmEKKysrIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvQWJzdHJhY3RHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjJkMC5qYXZhCkBAIC01NCwxOCArNTQsMjAgQEAKIAogICAgIHByb3RlY3RlZCBPYmplY3RNYXBwZXIgbWFwcGVyOwogCi0gICAgcHJvdGVjdGVkIGZpbmFsIFR5cGVSZWZlcmVuY2U8TWFwPFN0cmluZywgT2JqZWN0Pj4gbWFwVHlwZVJlZmVyZW5jZSA9IG5ldyBUeXBlUmVmZXJlbmNlPE1hcDxTdHJpbmcsIE9iamVjdD4+KCkgewotICAgIH07Ci0KICAgICBwdWJsaWMgQWJzdHJhY3RHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjJkMCgpIHsKICAgICAgICAgZmluYWwgR3JhcGhTT05NYXBwZXIuQnVpbGRlciBidWlsZGVyID0gY29uZmlndXJlQnVpbGRlcihpbml0QnVpbGRlcihudWxsKSk7CiAgICAgICAgIG1hcHBlciA9IGJ1aWxkZXIuY3JlYXRlKCkuY3JlYXRlTWFwcGVyKCk7CiAgICAgfQogCisgICAgQERlcHJlY2F0ZWQKICAgICBwdWJsaWMgQWJzdHJhY3RHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjJkMChmaW5hbCBHcmFwaFNPTk1hcHBlciBtYXBwZXIpIHsKICAgICAgICAgdGhpcy5tYXBwZXIgPSBtYXBwZXIuY3JlYXRlTWFwcGVyKCk7CiAgICAgfQogCisgICAgcHVibGljIEFic3RyYWN0R3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYyZDAoZmluYWwgR3JhcGhTT05NYXBwZXIuQnVpbGRlciBtYXBwZXJCdWlsZGVyKSB7CisgICAgICAgIHRoaXMubWFwcGVyID0gY29uZmlndXJlQnVpbGRlcihtYXBwZXJCdWlsZGVyKS5jcmVhdGUoKS5jcmVhdGVNYXBwZXIoKTsKKyAgICB9CisKICAgICBhYnN0cmFjdCBieXRlW10gb2J0YWluSGVhZGVyKCk7CiAKICAgICBhYnN0cmFjdCBHcmFwaFNPTk1hcHBlci5CdWlsZGVyIGNvbmZpZ3VyZUJ1aWxkZXIoZmluYWwgR3JhcGhTT05NYXBwZXIuQnVpbGRlciBidWlsZGVyKTsKQEAgLTE0MCw4ICsxNDIsNyBAQAogCiAgICAgcHJpdmF0ZSBHcmFwaFNPTk1hcHBlci5CdWlsZGVyIGluaXRCdWlsZGVyKGZpbmFsIEdyYXBoU09OTWFwcGVyLkJ1aWxkZXIgYnVpbGRlcikgewogICAgICAgICBmaW5hbCBHcmFwaFNPTk1hcHBlci5CdWlsZGVyIGIgPSBudWxsID09IGJ1aWxkZXIgPyBHcmFwaFNPTk1hcHBlci5idWlsZCgpIDogYnVpbGRlcjsKLSAgICAgICAgcmV0dXJuIGIuYWRkQ3VzdG9tTW9kdWxlKG5ldyBBYnN0cmFjdEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwLkdyZW1saW5TZXJ2ZXJNb2R1bGUoKSkKLSAgICAgICAgICAgICAgICAuYWRkQ3VzdG9tTW9kdWxlKEdyYXBoU09OWE1vZHVsZVYyZDAuYnVpbGQoKS5jcmVhdGUoZmFsc2UpKQorICAgICAgICByZXR1cm4gYi5hZGRDdXN0b21Nb2R1bGUoR3JhcGhTT05YTW9kdWxlVjJkMC5idWlsZCgpLmNyZWF0ZShmYWxzZSkpCiAgICAgICAgICAgICAgICAgLnZlcnNpb24oR3JhcGhTT05WZXJzaW9uLlYyXzApOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvQWJzdHJhY3RHcnlvTWVzc2FnZVNlcmlhbGl6ZXJWMWQwLmphdmEgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9BYnN0cmFjdEdyeW9NZXNzYWdlU2VyaWFsaXplclYxZDAuamF2YQppbmRleCAyYmIzMzgzLi43OTliM2Q5IDEwMDY0NAotLS0gYS9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9BYnN0cmFjdEdyeW9NZXNzYWdlU2VyaWFsaXplclYxZDAuamF2YQorKysgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9BYnN0cmFjdEdyeW9NZXNzYWdlU2VyaWFsaXplclYxZDAuamF2YQpAQCAtNDcsNyArNDcsOSBAQAogCiAvKioKICAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy40LjMsIHJlcGxhY2VkIGJ5IHtAbGluayBHcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjF9LgogICovCitARGVwcmVjYXRlZAogcHVibGljIGFic3RyYWN0IGNsYXNzIEFic3RyYWN0R3J5b01lc3NhZ2VTZXJpYWxpemVyVjFkMCBleHRlbmRzIEFic3RyYWN0TWVzc2FnZVNlcmlhbGl6ZXIgewogICAgIHByaXZhdGUgR3J5b01hcHBlciBncnlvTWFwcGVyOwogICAgIHByaXZhdGUgVGhyZWFkTG9jYWw8S3J5bz4ga3J5b1RocmVhZExvY2FsID0gbmV3IFRocmVhZExvY2FsPEtyeW8+KCkgewpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvQWJzdHJhY3RHcnlvTWVzc2FnZVNlcmlhbGl6ZXJWM2QwLmphdmEgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9BYnN0cmFjdEdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAuamF2YQppbmRleCA5YzY5MGM5Li4yZWZiNGEzIDEwMDY0NAotLS0gYS9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9BYnN0cmFjdEdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAuamF2YQorKysgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9BYnN0cmFjdEdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAuamF2YQpAQCAtNDQsNyArNDQsOSBAQAogCiAvKioKICAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy40LjMsIHJlcGxhY2VkIGJ5IHtAbGluayBHcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjF9LgogICovCitARGVwcmVjYXRlZAogcHVibGljIGFic3RyYWN0IGNsYXNzIEFic3RyYWN0R3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMCBleHRlbmRzIEFic3RyYWN0TWVzc2FnZVNlcmlhbGl6ZXIgewogICAgIHByaXZhdGUgR3J5b01hcHBlciBncnlvTWFwcGVyOwogICAgIHByaXZhdGUgVGhyZWFkTG9jYWw8S3J5bz4ga3J5b1RocmVhZExvY2FsID0gbmV3IFRocmVhZExvY2FsPEtyeW8+KCkgewpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvQWJzdHJhY3RNZXNzYWdlU2VyaWFsaXplci5qYXZhIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvQWJzdHJhY3RNZXNzYWdlU2VyaWFsaXplci5qYXZhCmluZGV4IDRhYmFiMjQuLjU5ZDBhYWQgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL0Fic3RyYWN0TWVzc2FnZVNlcmlhbGl6ZXIuamF2YQorKysgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9BYnN0cmFjdE1lc3NhZ2VTZXJpYWxpemVyLmphdmEKQEAgLTQ5LDcgKzQ5LDcgQEAKICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgZmluYWwgQ2xhc3M8Pz4gY2xhenogPSBDbGFzcy5mb3JOYW1lKGNsYXNzTmFtZSk7CiAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgLy8gdHJ5IGluc3RhbmNlKCkgZmlyc3QgYW5kIHRoZW4gaW5zdGFuY2UoKSB3aGljaCB3YXMgZGVwcmVjYXRlZCBpbiAzLjIuNAorICAgICAgICAgICAgICAgICAgICAvLyB0cnkgaW5zdGFuY2UoKSBmaXJzdCBhbmQgdGhlbiBnZXRJbnN0YW5jZSgpIHdoaWNoIHdhcyBkZXByZWNhdGVkIGluIDMuMi40CiAgICAgICAgICAgICAgICAgICAgIGZpbmFsIE1ldGhvZCBpbnN0YW5jZU1ldGhvZCA9IHRyeUluc3RhbmNlTWV0aG9kKGNsYXp6KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKElvUmVnaXN0cnkuY2xhc3MuaXNBc3NpZ25hYmxlRnJvbShpbnN0YW5jZU1ldGhvZC5nZXRSZXR1cm5UeXBlKCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hZGRSZWdpc3RyeSgoSW9SZWdpc3RyeSkgaW5zdGFuY2VNZXRob2QuaW52b2tlKG51bGwpKTsKZGlmZiAtLWdpdCBhL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL0dyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMS5qYXZhIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmY0ZTc2ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL0dyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMS5qYXZhCkBAIC0wLDAgKzEsMjIxIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyOworCitpbXBvcnQgaW8ubmV0dHkuYnVmZmVyLkJ5dGVCdWY7CitpbXBvcnQgaW8ubmV0dHkuYnVmZmVyLkJ5dGVCdWZBbGxvY2F0b3I7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIubWVzc2FnZS5SZXF1ZXN0TWVzc2FnZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5tZXNzYWdlLlJlc3BvbnNlTWVzc2FnZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlJbzsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlSZWFkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5V3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5iaW5hcnkuUmVxdWVzdE1lc3NhZ2VTZXJpYWxpemVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5iaW5hcnkuUmVzcG9uc2VNZXNzYWdlU2VyaWFsaXplcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuVHlwZVNlcmlhbGl6ZXJSZWdpc3RyeTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkudHlwZXMuQ3VzdG9tVHlwZVNlcmlhbGl6ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uSW9SZWdpc3RyeTsKK2ltcG9ydCBvcmcuamF2YXR1cGxlcy5QYWlyOworCitpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuQ29uc3RydWN0b3I7CitpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuTWV0aG9kOworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5NYXA7CitpbXBvcnQgamF2YS51dGlsLnN0cmVhbS5Db2xsZWN0b3JzOworCitpbXBvcnQgc3RhdGljIGphdmEubmlvLmNoYXJzZXQuU3RhbmRhcmRDaGFyc2V0cy5VVEZfODsKKworcHVibGljIGNsYXNzIEdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMSBleHRlbmRzIEFic3RyYWN0TWVzc2FnZVNlcmlhbGl6ZXIgeworCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVE9LRU5fQ1VTVE9NID0gImN1c3RvbSI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVE9LRU5fQlVJTERFUiA9ICJidWlsZGVyIjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBUT0tFTl9TRVJJQUxJWkVfUkVTVUxUX1RPX1NUUklORyA9ICJzZXJpYWxpemVSZXN1bHRUb1N0cmluZyI7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgTUlNRV9UWVBFID0gU2VyVG9rZW5zLk1JTUVfR1JBUEhCSU5BUllfVjFEMDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgTUlNRV9UWVBFX1NUUklOR0QgPSBTZXJUb2tlbnMuTUlNRV9HUkFQSEJJTkFSWV9WMUQwICsgIi1zdHJpbmdkIjsKKworICAgIHByaXZhdGUgYnl0ZVtdIGhlYWRlciA9IE1JTUVfVFlQRS5nZXRCeXRlcyhVVEZfOCk7CisgICAgcHJpdmF0ZSBib29sZWFuIHNlcmlhbGl6ZVRvU3RyaW5nID0gZmFsc2U7CisgICAgcHJpdmF0ZSBHcmFwaEJpbmFyeVJlYWRlciByZWFkZXI7CisgICAgcHJpdmF0ZSBHcmFwaEJpbmFyeVdyaXRlciB3cml0ZXI7CisgICAgcHJpdmF0ZSBSZXF1ZXN0TWVzc2FnZVNlcmlhbGl6ZXIgcmVxdWVzdFNlcmlhbGl6ZXI7CisgICAgcHJpdmF0ZSBSZXNwb25zZU1lc3NhZ2VTZXJpYWxpemVyIHJlc3BvbnNlU2VyaWFsaXplcjsKKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIG1lc3NhZ2Ugc2VyaWFsaXplciB1c2luZyB0aGUgZGVmYXVsdCB0eXBlIHNlcmlhbGl6ZXJzLgorICAgICAqLworICAgIHB1YmxpYyBHcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjEoKSB7CisgICAgICAgIHRoaXMoVHlwZVNlcmlhbGl6ZXJSZWdpc3RyeS5JTlNUQU5DRSk7CisgICAgfQorCisgICAgcHVibGljIEdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMShmaW5hbCBUeXBlU2VyaWFsaXplclJlZ2lzdHJ5IHJlZ2lzdHJ5KSB7CisgICAgICAgIHJlYWRlciA9IG5ldyBHcmFwaEJpbmFyeVJlYWRlcihyZWdpc3RyeSk7CisgICAgICAgIHdyaXRlciA9IG5ldyBHcmFwaEJpbmFyeVdyaXRlcihyZWdpc3RyeSk7CisKKyAgICAgICAgcmVxdWVzdFNlcmlhbGl6ZXIgPSBuZXcgUmVxdWVzdE1lc3NhZ2VTZXJpYWxpemVyKCk7CisgICAgICAgIHJlc3BvbnNlU2VyaWFsaXplciA9IG5ldyBSZXNwb25zZU1lc3NhZ2VTZXJpYWxpemVyKCk7CisgICAgfQorCisgICAgcHVibGljIEdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMShmaW5hbCBUeXBlU2VyaWFsaXplclJlZ2lzdHJ5LkJ1aWxkZXIgYnVpbGRlcikgeworICAgICAgICB0aGlzKGJ1aWxkZXIuY3JlYXRlKCkpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIGNvbmZpZ3VyZShmaW5hbCBNYXA8U3RyaW5nLCBPYmplY3Q+IGNvbmZpZywgZmluYWwgTWFwPFN0cmluZywgR3JhcGg+IGdyYXBocykgeworICAgICAgICBmaW5hbCBTdHJpbmcgYnVpbGRlckNsYXNzTmFtZSA9IChTdHJpbmcpIGNvbmZpZy5nZXQoVE9LRU5fQlVJTERFUik7CisgICAgICAgIGZpbmFsIFR5cGVTZXJpYWxpemVyUmVnaXN0cnkuQnVpbGRlciBidWlsZGVyOworCisgICAgICAgIGlmIChidWlsZGVyQ2xhc3NOYW1lICE9IG51bGwpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgQ2xhc3M8Pz4gY2xhenogPSBDbGFzcy5mb3JOYW1lKGJ1aWxkZXJDbGFzc05hbWUpOworICAgICAgICAgICAgICAgIENvbnN0cnVjdG9yPD8+IGN0b3IgPSBjbGF6ei5nZXRDb25zdHJ1Y3RvcigpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIgPSAoVHlwZVNlcmlhbGl6ZXJSZWdpc3RyeS5CdWlsZGVyKSBjdG9yLm5ld0luc3RhbmNlKCk7CisgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKGV4KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYnVpbGRlciA9IFR5cGVTZXJpYWxpemVyUmVnaXN0cnkuYnVpbGQoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZpbmFsIExpc3Q8U3RyaW5nPiBjbGFzc05hbWVMaXN0ID0gZ2V0TGlzdFN0cmluZ0Zyb21Db25maWcoVE9LRU5fSU9fUkVHSVNUUklFUywgY29uZmlnKTsKKyAgICAgICAgY2xhc3NOYW1lTGlzdC5mb3JFYWNoKGNsYXNzTmFtZSAtPiB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGZpbmFsIENsYXNzPD8+IGNsYXp6ID0gQ2xhc3MuZm9yTmFtZShjbGFzc05hbWUpOworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIGZpbmFsIE1ldGhvZCBpbnN0YW5jZU1ldGhvZCA9IHRyeUluc3RhbmNlTWV0aG9kKGNsYXp6KTsKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgSW9SZWdpc3RyeSBpb3JlZyA9IChJb1JlZ2lzdHJ5KSBpbnN0YW5jZU1ldGhvZC5pbnZva2UobnVsbCk7CisgICAgICAgICAgICAgICAgICAgIGZpbmFsIExpc3Q8UGFpcjxDbGFzcywgQ3VzdG9tVHlwZVNlcmlhbGl6ZXI+PiBjbGFzc1NlcmlhbGl6ZXJzID0gaW9yZWcuZmluZChHcmFwaEJpbmFyeUlvLmNsYXNzLCBDdXN0b21UeXBlU2VyaWFsaXplci5jbGFzcyk7CisgICAgICAgICAgICAgICAgICAgIGZvciAoUGFpcjxDbGFzcyxDdXN0b21UeXBlU2VyaWFsaXplcj4gY3MgOiBjbGFzc1NlcmlhbGl6ZXJzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFkZEN1c3RvbVR5cGUoY3MuZ2V0VmFsdWUwKCksIGNzLmdldFZhbHVlMSgpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBtZXRob2RleCkgeworICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKFN0cmluZy5mb3JtYXQoIkNvdWxkIG5vdCBpbnN0YW50aWF0ZSBJb1JlZ2lzdHJ5IGZyb20gYW4gaW5zdGFuY2UoKSBtZXRob2Qgb24gJXMiLCBjbGFzc05hbWUpLCBtZXRob2RleCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbihleCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworCisgICAgICAgIGFkZEN1c3RvbUNsYXNzZXMoY29uZmlnLCBidWlsZGVyKTsKKworICAgICAgICB0aGlzLnNlcmlhbGl6ZVRvU3RyaW5nID0gQm9vbGVhbi5wYXJzZUJvb2xlYW4oY29uZmlnLmdldE9yRGVmYXVsdChUT0tFTl9TRVJJQUxJWkVfUkVTVUxUX1RPX1NUUklORywgImZhbHNlIikudG9TdHJpbmcoKSk7CisgICAgICAgIHRoaXMuaGVhZGVyID0gdGhpcy5zZXJpYWxpemVUb1N0cmluZyA/IE1JTUVfVFlQRV9TVFJJTkdELmdldEJ5dGVzKFVURl84KSA6IE1JTUVfVFlQRS5nZXRCeXRlcyhVVEZfOCk7CisKKyAgICAgICAgZmluYWwgVHlwZVNlcmlhbGl6ZXJSZWdpc3RyeSByZWdpc3RyeSA9IGJ1aWxkZXIuY3JlYXRlKCk7CisgICAgICAgIHJlYWRlciA9IG5ldyBHcmFwaEJpbmFyeVJlYWRlcihyZWdpc3RyeSk7CisgICAgICAgIHdyaXRlciA9IG5ldyBHcmFwaEJpbmFyeVdyaXRlcihyZWdpc3RyeSk7CisKKyAgICAgICAgcmVxdWVzdFNlcmlhbGl6ZXIgPSBuZXcgUmVxdWVzdE1lc3NhZ2VTZXJpYWxpemVyKCk7CisgICAgICAgIHJlc3BvbnNlU2VyaWFsaXplciA9IG5ldyBSZXNwb25zZU1lc3NhZ2VTZXJpYWxpemVyKCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIEJ5dGVCdWYgc2VyaWFsaXplUmVzcG9uc2VBc0JpbmFyeShmaW5hbCBSZXNwb25zZU1lc3NhZ2UgcmVzcG9uc2VNZXNzYWdlLCBmaW5hbCBCeXRlQnVmQWxsb2NhdG9yIGFsbG9jYXRvcikgdGhyb3dzIFNlcmlhbGl6YXRpb25FeGNlcHRpb24geworICAgICAgICBmaW5hbCBCeXRlQnVmIGJ1ZmZlciA9IGFsbG9jYXRvci5idWZmZXIoKTsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgZmluYWwgUmVzcG9uc2VNZXNzYWdlIG1zZ1RvV3JpdGUgPSAhc2VyaWFsaXplVG9TdHJpbmcgPyByZXNwb25zZU1lc3NhZ2UgOgorICAgICAgICAgICAgICAgICAgICBSZXNwb25zZU1lc3NhZ2UuYnVpbGQocmVzcG9uc2VNZXNzYWdlLmdldFJlcXVlc3RJZCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jb2RlKHJlc3BvbnNlTWVzc2FnZS5nZXRTdGF0dXMoKS5nZXRDb2RlKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnN0YXR1c0F0dHJpYnV0ZXMocmVzcG9uc2VNZXNzYWdlLmdldFN0YXR1cygpLmdldEF0dHJpYnV0ZXMoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVzcG9uc2VNZXRhRGF0YShyZXNwb25zZU1lc3NhZ2UuZ2V0UmVzdWx0KCkuZ2V0TWV0YSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXN1bHQoc2VyaWFsaXplUmVzdWx0VG9TdHJpbmcocmVzcG9uc2VNZXNzYWdlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3RhdHVzTWVzc2FnZShyZXNwb25zZU1lc3NhZ2UuZ2V0U3RhdHVzKCkuZ2V0TWVzc2FnZSgpKS5jcmVhdGUoKTsKKworICAgICAgICAgICAgcmVzcG9uc2VTZXJpYWxpemVyLndyaXRlVmFsdWUobXNnVG9Xcml0ZSwgYnVmZmVyLCB3cml0ZXIpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgIGJ1ZmZlci5yZWxlYXNlKCk7CisgICAgICAgICAgICB0aHJvdyBleDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBidWZmZXI7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIEJ5dGVCdWYgc2VyaWFsaXplUmVxdWVzdEFzQmluYXJ5KGZpbmFsIFJlcXVlc3RNZXNzYWdlIHJlcXVlc3RNZXNzYWdlLCBmaW5hbCBCeXRlQnVmQWxsb2NhdG9yIGFsbG9jYXRvcikgdGhyb3dzIFNlcmlhbGl6YXRpb25FeGNlcHRpb24geworICAgICAgICBmaW5hbCBCeXRlQnVmIGJ1ZmZlciA9IGFsbG9jYXRvci5idWZmZXIoKS53cml0ZUJ5dGUoaGVhZGVyLmxlbmd0aCkud3JpdGVCeXRlcyhoZWFkZXIpOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXF1ZXN0U2VyaWFsaXplci53cml0ZVZhbHVlKHJlcXVlc3RNZXNzYWdlLCBidWZmZXIsIHdyaXRlcik7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgYnVmZmVyLnJlbGVhc2UoKTsKKyAgICAgICAgICAgIHRocm93IGV4OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGJ1ZmZlcjsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgUmVxdWVzdE1lc3NhZ2UgZGVzZXJpYWxpemVSZXF1ZXN0KGZpbmFsIEJ5dGVCdWYgbXNnKSB0aHJvd3MgU2VyaWFsaXphdGlvbkV4Y2VwdGlvbiB7CisgICAgICAgIHJldHVybiByZXF1ZXN0U2VyaWFsaXplci5yZWFkVmFsdWUobXNnLCByZWFkZXIpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBSZXNwb25zZU1lc3NhZ2UgZGVzZXJpYWxpemVSZXNwb25zZShmaW5hbCBCeXRlQnVmIG1zZykgdGhyb3dzIFNlcmlhbGl6YXRpb25FeGNlcHRpb24geworICAgICAgICByZXR1cm4gcmVzcG9uc2VTZXJpYWxpemVyLnJlYWRWYWx1ZShtc2csIHJlYWRlcik7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFN0cmluZ1tdIG1pbWVUeXBlc1N1cHBvcnRlZCgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBTdHJpbmdbXXtzZXJpYWxpemVUb1N0cmluZyA/IE1JTUVfVFlQRV9TVFJJTkdEIDogTUlNRV9UWVBFfTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgYWRkQ3VzdG9tQ2xhc3NlcyhmaW5hbCBNYXA8U3RyaW5nLCBPYmplY3Q+IGNvbmZpZywgZmluYWwgVHlwZVNlcmlhbGl6ZXJSZWdpc3RyeS5CdWlsZGVyIGJ1aWxkZXIpIHsKKyAgICAgICAgZmluYWwgTGlzdDxTdHJpbmc+IGNsYXNzTmFtZUxpc3QgPSBnZXRMaXN0U3RyaW5nRnJvbUNvbmZpZyhUT0tFTl9DVVNUT00sIGNvbmZpZyk7CisKKyAgICAgICAgY2xhc3NOYW1lTGlzdC5mb3JFYWNoKHNlcmlhbGl6ZXJEZWZpbml0aW9uIC0+IHsKKyAgICAgICAgICAgIGZpbmFsIFN0cmluZyBjbGFzc05hbWU7CisgICAgICAgICAgICBmaW5hbCBTdHJpbmcgc2VyaWFsaXplck5hbWU7CisgICAgICAgICAgICBpZiAoc2VyaWFsaXplckRlZmluaXRpb24uY29udGFpbnMoIjsiKSkgeworICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZ1tdIHNwbGl0ID0gc2VyaWFsaXplckRlZmluaXRpb24uc3BsaXQoIjsiKTsKKyAgICAgICAgICAgICAgICBpZiAoc3BsaXQubGVuZ3RoICE9IDIpCisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oU3RyaW5nLmZvcm1hdCgiSW52YWxpZCBmb3JtYXQgZm9yIHNlcmlhbGl6ZXIgZGVmaW5pdGlvbiBbJXNdIC0gZXhwZWN0ZWQgPGNsYXNzPjs8c2VyaWFsaXplci1jbGFzcz4iLCBzZXJpYWxpemVyRGVmaW5pdGlvbikpOworCisgICAgICAgICAgICAgICAgY2xhc3NOYW1lID0gc3BsaXRbMF07CisgICAgICAgICAgICAgICAgc2VyaWFsaXplck5hbWUgPSBzcGxpdFsxXTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbihTdHJpbmcuZm9ybWF0KCJJbnZhbGlkIGZvcm1hdCBmb3Igc2VyaWFsaXplciBkZWZpbml0aW9uIFslc10gLSBleHBlY3RlZCA8Y2xhc3M+OzxzZXJpYWxpemVyLWNsYXNzPiIsIHNlcmlhbGl6ZXJEZWZpbml0aW9uKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgZmluYWwgQ2xhc3MgY2xhenogPSBDbGFzcy5mb3JOYW1lKGNsYXNzTmFtZSk7CisgICAgICAgICAgICAgICAgZmluYWwgQ2xhc3Mgc2VyaWFsaXplckNsYXp6ID0gQ2xhc3MuZm9yTmFtZShzZXJpYWxpemVyTmFtZSk7CisgICAgICAgICAgICAgICAgZmluYWwgQ3VzdG9tVHlwZVNlcmlhbGl6ZXIgc2VyaWFsaXplciA9IChDdXN0b21UeXBlU2VyaWFsaXplcikgc2VyaWFsaXplckNsYXp6Lm5ld0luc3RhbmNlKCk7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hZGRDdXN0b21UeXBlKGNsYXp6LCBzZXJpYWxpemVyKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIkN1c3RvbVR5cGVTZXJpYWxpemVyIGNvdWxkIG5vdCBiZSBpbnN0YW50aWF0ZWQiLCBleCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KKworICAgIHByaXZhdGUgT2JqZWN0IHNlcmlhbGl6ZVJlc3VsdFRvU3RyaW5nKGZpbmFsIFJlc3BvbnNlTWVzc2FnZSBtc2cpIHsKKyAgICAgICAgaWYgKG1zZy5nZXRSZXN1bHQoKSA9PSBudWxsKSByZXR1cm4gIm51bGwiOworICAgICAgICBpZiAobXNnLmdldFJlc3VsdCgpLmdldERhdGEoKSA9PSBudWxsKSByZXR1cm4gIm51bGwiOworCisgICAgICAgIC8vIHRoZSBJdGVyYXRvckhhbmRsZXIgc2hvdWxkIHJldHVybiBhIGNvbGxlY3Rpb24gc28ga2VlcCBpdCBhcyBzdWNoCisgICAgICAgIGZpbmFsIE9iamVjdCBvID0gbXNnLmdldFJlc3VsdCgpLmdldERhdGEoKTsKKyAgICAgICAgaWYgKG8gaW5zdGFuY2VvZiBDb2xsZWN0aW9uKSB7CisgICAgICAgICAgICByZXR1cm4gKChDb2xsZWN0aW9uKSBvKS5zdHJlYW0oKS5tYXAoZCAtPiBudWxsID09IGQgPyAibnVsbCIgOiBkLnRvU3RyaW5nKCkpLmNvbGxlY3QoQ29sbGVjdG9ycy50b0xpc3QoKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gby50b1N0cmluZygpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplckdyZW1saW5WMmQwLmphdmEgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9HcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyR3JlbWxpblYyZDAuamF2YQppbmRleCA5YWU0Nzk4Li45MjMwZTZjIDEwMDY0NAotLS0gYS9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9HcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyR3JlbWxpblYyZDAuamF2YQorKysgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9HcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyR3JlbWxpblYyZDAuamF2YQpAQCAtMTksNiArMTksNyBAQAogcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXI7CiAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncmFwaHNvbi5HcmFwaFNPTk1hcHBlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncmFwaHNvbi5HcmFwaFNPTlhNb2R1bGVWMmQwOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyYXBoc29uLlR5cGVJbmZvOwogCiBpbXBvcnQgamF2YS5uaW8uQnl0ZUJ1ZmZlcjsKQEAgLTI3LDcgKzI4LDkgQEAKICAqIFNlcmlhbGl6ZSByZXN1bHRzIHRvIEpTT04gd2l0aCB2ZXJzaW9uIDIuMC54IHNjaGVtYSBhbmQgdGhlIGV4dGVuZGVkIG1vZHVsZS4KICAqCiAgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKiBAZGVwcmVjYXRlZCBBcyBmb3IgcmVsZWFzZSAzLjQuMCwgcmVwbGFjZWQgYnkge0BsaW5rIEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwfS4KICAqLworQERlcHJlY2F0ZWQKIHB1YmxpYyBmaW5hbCBjbGFzcyBHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyR3JlbWxpblYyZDAgZXh0ZW5kcyBBYnN0cmFjdEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwIHsKIAogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBNSU1FX1RZUEUgPSBTZXJUb2tlbnMuTUlNRV9HUkFQSFNPTl9WMkQwOwpAQCAtNDEsMTcgKzQ0LDQxIEBACiAgICAgICAgIGhlYWRlciA9IGJ1ZmZlci5hcnJheSgpOwogICAgIH0KIAorICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSBkZWZhdWx0IEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJHcmVtbGluLgorICAgICAqIDxwPgorICAgICAqIEJ5IGRlZmF1bHQgdGhpcyB3aWxsIGludGVybmFsbHkgaW5zdGFudGlhdGUgYSB7QGxpbmsgR3JhcGhTT05NYXBwZXJ9IGFuZCByZWdpc3RlcgorICAgICAqIGEge0BsaW5rIEdyZW1saW5TZXJ2ZXJNb2R1bGV9IGFuZCB7QGxpbmsgR3JhcGhTT05YTW9kdWxlVjJkMH0gdG8gdGhlIG1hcHBlci4KKyAgICAgKgorICAgICAqIEBzZWUgI0dyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJHcmVtbGluVjJkMChHcmFwaFNPTk1hcHBlci5CdWlsZGVyKQorICAgICAqLwogICAgIHB1YmxpYyBHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyR3JlbWxpblYyZDAoKSB7CiAgICAgICAgIHN1cGVyKCk7CiAgICAgfQogCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplciBmcm9tIGEge0BsaW5rIEdyYXBoU09OTWFwcGVyfS4gRGVwcmVjYXRlZCwgdXNlCisgICAgICoge0BsaW5rICNHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyR3JlbWxpblYyZDAoR3JhcGhTT05NYXBwZXIuQnVpbGRlcil9IGluc3RlYWQuCisgICAgICovCisgICAgQERlcHJlY2F0ZWQKICAgICBwdWJsaWMgR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplckdyZW1saW5WMmQwKGZpbmFsIEdyYXBoU09OTWFwcGVyIG1hcHBlcikgewogICAgICAgICBzdXBlcihtYXBwZXIpOwogICAgIH0KIAorICAgIC8qKgorICAgICAqIENyZWF0ZSBhIEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJHcmVtbGluIHdpdGggYSBwcm92aWRlZCB7QGxpbmsgR3JhcGhTT05NYXBwZXIuQnVpbGRlcn0uCisgICAgICogPHA+CisgICAgICogTm90ZSB0aGF0IHRvIG1ha2UgdGhpcyBtYXBwZXIgdXNhYmxlIGluIHRoZSBjb250ZXh0IG9mIHJlcXVlc3QgbWVzc2FnZXMgYW5kIHJlc3BvbnNlcywKKyAgICAgKiB0aGlzIG1ldGhvZCB3aWxsIGF1dG9tYXRpY2FsbHkgcmVnaXN0ZXIgYSB7QGxpbmsgR3JlbWxpblNlcnZlck1vZHVsZX0gdG8gdGhlIHByb3ZpZGVkCisgICAgICogbWFwcGVyLgorICAgICAqLworICAgIHB1YmxpYyBHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyR3JlbWxpblYyZDAoZmluYWwgR3JhcGhTT05NYXBwZXIuQnVpbGRlciBtYXBwZXJCdWlsZGVyKSB7CisgICAgICAgIHN1cGVyKG1hcHBlckJ1aWxkZXIpOworICAgIH0KKwogICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyBTdHJpbmdbXSBtaW1lVHlwZXNTdXBwb3J0ZWQoKSB7Ci0gICAgICAgIHJldHVybiBuZXcgU3RyaW5nW117TUlNRV9UWVBFfTsKKyAgICAgICAgcmV0dXJuIG5ldyBTdHJpbmdbXXtTZXJUb2tlbnMuTUlNRV9HUkFQSFNPTl9WMkQwLCBTZXJUb2tlbnMuTUlNRV9KU09OfTsKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKQEAgLTYyLDYgKzg5LDYgQEAKICAgICBAT3ZlcnJpZGUKICAgICBHcmFwaFNPTk1hcHBlci5CdWlsZGVyIGNvbmZpZ3VyZUJ1aWxkZXIoZmluYWwgR3JhcGhTT05NYXBwZXIuQnVpbGRlciBidWlsZGVyKSB7CiAgICAgICAgIC8vIGFscmVhZHkgc2V0IHRvIDIuMCBpbiBBYnN0cmFjdEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwCi0gICAgICAgIHJldHVybiBidWlsZGVyLnR5cGVJbmZvKFR5cGVJbmZvLlBBUlRJQUxfVFlQRVMpOworICAgICAgICByZXR1cm4gYnVpbGRlci50eXBlSW5mbyhUeXBlSW5mby5QQVJUSUFMX1RZUEVTKS5hZGRDdXN0b21Nb2R1bGUobmV3IEdyZW1saW5TZXJ2ZXJNb2R1bGUoKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYyZDAuamF2YSBiL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL0dyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwLmphdmEKaW5kZXggMjUxYjVjMS4uZTg2MGRlZSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYyZDAuamF2YQorKysgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9HcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjJkMC5qYXZhCkBAIC0zOSw3ICszOSw3IEBACiAgKi8KIHB1YmxpYyBmaW5hbCBjbGFzcyBHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjJkMCBleHRlbmRzIEFic3RyYWN0R3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYyZDAgaW1wbGVtZW50cyBNZXNzYWdlVGV4dFNlcmlhbGl6ZXIgewogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcihHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjJkMC5jbGFzcyk7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIE1JTUVfVFlQRSA9IFNlclRva2Vucy5NSU1FX0pTT047CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIE1JTUVfVFlQRSA9IFNlclRva2Vucy5NSU1FX0dSQVBIU09OX1YyRDA7CiAKICAgICBwcml2YXRlIHN0YXRpYyBieXRlW10gaGVhZGVyOwogCkBAIC01MCwyMyArNTAsNDcgQEAKICAgICAgICAgaGVhZGVyID0gYnVmZmVyLmFycmF5KCk7CiAgICAgfQogCisgICAgICAgIC8qKgorICAgICAgICAgKiBDcmVhdGVzIGEgZGVmYXVsdCBHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyLgorICAgICAgICAgKgorICAgICAgICAgKiBCeSBkZWZhdWx0IHRoaXMgd2lsbCBpbnRlcm5hbGx5IGluc3RhbnRpYXRlIGEge0BsaW5rIEdyYXBoU09OTWFwcGVyfSBhbmQgcmVnaXN0ZXIKKyAgICAgICAgICogYSB7QGxpbmsgR3JlbWxpblNlcnZlck1vZHVsZX0gYW5kIHtAbGluayBHcmFwaFNPTlhNb2R1bGVWMmQwfSB0byB0aGUgbWFwcGVyLgorICAgICAgICAgKgorICAgICAgICAgKiBAc2VlICNHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjJkMChHcmFwaFNPTk1hcHBlci5CdWlsZGVyKQorICAgICAgICAgKi8KICAgICBwdWJsaWMgR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYyZDAoKSB7CiAgICAgICAgIHN1cGVyKCk7CiAgICAgfQogCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplciBmcm9tIGEge0BsaW5rIEdyYXBoU09OTWFwcGVyfS4gRGVwcmVjYXRlZCwgdXNlCisgICAgICoge0BsaW5rICNHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjJkMChHcmFwaFNPTk1hcHBlci5CdWlsZGVyKX0gaW5zdGVhZC4KKyAgICAgKi8KKyAgICBARGVwcmVjYXRlZAogICAgIHB1YmxpYyBHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjJkMChmaW5hbCBHcmFwaFNPTk1hcHBlciBtYXBwZXIpIHsKICAgICAgICAgc3VwZXIobWFwcGVyKTsKICAgICB9CiAKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYSBHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyIHdpdGggYSBwcm92aWRlZCB7QGxpbmsgR3JhcGhTT05NYXBwZXIuQnVpbGRlcn0uCisgICAgICoKKyAgICAgKiBOb3RlIHRoYXQgdG8gbWFrZSB0aGlzIG1hcHBlciB1c2FibGUgaW4gdGhlIGNvbnRleHQgb2YgcmVxdWVzdCBtZXNzYWdlcyBhbmQgcmVzcG9uc2VzLAorICAgICAqIHRoaXMgbWV0aG9kIHdpbGwgYXV0b21hdGljYWxseSByZWdpc3RlciBhIHtAbGluayBHcmVtbGluU2VydmVyTW9kdWxlfSB0byB0aGUgcHJvdmlkZWQKKyAgICAgKiBtYXBwZXIuCisgICAgICovCisgICAgcHVibGljIEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwKGZpbmFsIEdyYXBoU09OTWFwcGVyLkJ1aWxkZXIgbWFwcGVyQnVpbGRlcikgeworICAgICAgICBzdXBlcihtYXBwZXJCdWlsZGVyKTsKKyAgICB9CisKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgU3RyaW5nW10gbWltZVR5cGVzU3VwcG9ydGVkKCkgewotICAgICAgICByZXR1cm4gbmV3IFN0cmluZ1tde01JTUVfVFlQRX07CisgICAgICAgIHJldHVybiBuZXcgU3RyaW5nW117TUlNRV9UWVBFLCBTZXJUb2tlbnMuTUlNRV9KU09OfTsKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKICAgICBHcmFwaFNPTk1hcHBlci5CdWlsZGVyIGNvbmZpZ3VyZUJ1aWxkZXIoZmluYWwgR3JhcGhTT05NYXBwZXIuQnVpbGRlciBidWlsZGVyKSB7CiAgICAgICAgIC8vIGFscmVhZHkgc2V0IHRvIDIuMCBpbiBBYnN0cmFjdEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwCi0gICAgICAgIHJldHVybiBidWlsZGVyLnR5cGVJbmZvKFR5cGVJbmZvLlBBUlRJQUxfVFlQRVMpOworICAgICAgICByZXR1cm4gYnVpbGRlci50eXBlSW5mbyhUeXBlSW5mby5QQVJUSUFMX1RZUEVTKS5hZGRDdXN0b21Nb2R1bGUobmV3IEdyZW1saW5TZXJ2ZXJNb2R1bGUoKSk7CiAgICAgfQogCiAgICAgQE92ZXJyaWRlCmRpZmYgLS1naXQgYS9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9HcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjNkMC5qYXZhIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYzZDAuamF2YQppbmRleCA1MDJhMmZmLi45NTQ3YjNkIDEwMDY0NAotLS0gYS9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9HcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjNkMC5qYXZhCisrKyBiL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL0dyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWM2QwLmphdmEKQEAgLTIwLDE2ICsyMCwxMyBAQAogCiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIubWVzc2FnZS5SZXF1ZXN0TWVzc2FnZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5tZXNzYWdlLlJlc3BvbnNlTWVzc2FnZTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5tZXNzYWdlLlJlc3BvbnNlU3RhdHVzQ29kZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncmFwaHNvbi5HcmFwaFNPTk1hcHBlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncmFwaHNvbi5HcmFwaFNPTlZlcnNpb247Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3JhcGhzb24uVHlwZUluZm87CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3JhcGhzb24uR3JhcGhTT05YTW9kdWxlVjNkMDsKIGltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOwogaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXJGYWN0b3J5OwogCiBpbXBvcnQgamF2YS5uaW8uQnl0ZUJ1ZmZlcjsKLWltcG9ydCBqYXZhLnV0aWwuTWFwOwotaW1wb3J0IGphdmEudXRpbC5VVUlEOwogCiAvKioKICAqIFNlcmlhbGl6ZSByZXN1bHRzIHRvIEpTT04gd2l0aCB2ZXJzaW9uIDMuMC54IHNjaGVtYSBhbmQgdGhlIGV4dGVuZGVkIG1vZHVsZS4KQEAgLTQ5LDIzICs0Niw0NyBAQAogICAgICAgICBoZWFkZXIgPSBidWZmZXIuYXJyYXkoKTsKICAgICB9CiAKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgZGVmYXVsdCBHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyLgorICAgICAqIDxwPgorICAgICAqIEJ5IGRlZmF1bHQgdGhpcyB3aWxsIGludGVybmFsbHkgaW5zdGFudGlhdGUgYSB7QGxpbmsgR3JhcGhTT05NYXBwZXJ9IGFuZCByZWdpc3RlcgorICAgICAqIGEge0BsaW5rIEdyZW1saW5TZXJ2ZXJNb2R1bGV9IGFuZCB7QGxpbmsgR3JhcGhTT05YTW9kdWxlVjNkMH0gdG8gdGhlIG1hcHBlci4KKyAgICAgKgorICAgICAqIEBzZWUgI0dyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWM2QwKEdyYXBoU09OTWFwcGVyLkJ1aWxkZXIpCisgICAgICovCiAgICAgcHVibGljIEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWM2QwKCkgewogICAgICAgICBzdXBlcigpOwogICAgIH0KIAorICAgIC8qKgorICAgICAqIENyZWF0ZSBhIEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXIgZnJvbSBhIHtAbGluayBHcmFwaFNPTk1hcHBlcn0uIERlcHJlY2F0ZWQsIHVzZQorICAgICAqIHtAbGluayAjR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYzZDAoR3JhcGhTT05NYXBwZXIuQnVpbGRlcil9IGluc3RlYWQuCisgICAgICovCisgICAgQERlcHJlY2F0ZWQKICAgICBwdWJsaWMgR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYzZDAoZmluYWwgR3JhcGhTT05NYXBwZXIgbWFwcGVyKSB7CiAgICAgICAgIHN1cGVyKG1hcHBlcik7CiAgICAgfQogCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplciB3aXRoIGEgcHJvdmlkZWQge0BsaW5rIEdyYXBoU09OTWFwcGVyLkJ1aWxkZXJ9LgorICAgICAqCisgICAgICogTm90ZSB0aGF0IHRvIG1ha2UgdGhpcyBtYXBwZXIgdXNhYmxlIGluIHRoZSBjb250ZXh0IG9mIHJlcXVlc3QgbWVzc2FnZXMgYW5kIHJlc3BvbnNlcywKKyAgICAgKiB0aGlzIG1ldGhvZCB3aWxsIGF1dG9tYXRpY2FsbHkgcmVnaXN0ZXIgYSB7QGxpbmsgR3JlbWxpblNlcnZlck1vZHVsZX0gdG8gdGhlIHByb3ZpZGVkCisgICAgICogbWFwcGVyLgorICAgICAqLworICAgIHB1YmxpYyBHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjNkMChmaW5hbCBHcmFwaFNPTk1hcHBlci5CdWlsZGVyIG1hcHBlckJ1aWxkZXIpIHsKKyAgICAgICAgc3VwZXIobWFwcGVyQnVpbGRlcik7CisgICAgfQorCiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIFN0cmluZ1tdIG1pbWVUeXBlc1N1cHBvcnRlZCgpIHsKLSAgICAgICAgcmV0dXJuIG5ldyBTdHJpbmdbXXtNSU1FX1RZUEUsICJhcHBsaWNhdGlvbi9qc29uIn07CisgICAgICAgIHJldHVybiBuZXcgU3RyaW5nW117TUlNRV9UWVBFLCBTZXJUb2tlbnMuTUlNRV9KU09OfTsKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKICAgICBHcmFwaFNPTk1hcHBlci5CdWlsZGVyIGNvbmZpZ3VyZUJ1aWxkZXIoZmluYWwgR3JhcGhTT05NYXBwZXIuQnVpbGRlciBidWlsZGVyKSB7CiAgICAgICAgIC8vIG92ZXJyaWRlIHRoZSAyLjAgaW4gQWJzdHJhY3RHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjJkMAotICAgICAgICByZXR1cm4gYnVpbGRlci52ZXJzaW9uKEdyYXBoU09OVmVyc2lvbi5WM18wKTsKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIudmVyc2lvbihHcmFwaFNPTlZlcnNpb24uVjNfMCkuYWRkQ3VzdG9tTW9kdWxlKG5ldyBHcmVtbGluU2VydmVyTW9kdWxlKCkpOwogICAgIH0KIAogICAgIEBPdmVycmlkZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvR3J5b01lc3NhZ2VTZXJpYWxpemVyVjFkMC5qYXZhIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvR3J5b01lc3NhZ2VTZXJpYWxpemVyVjFkMC5qYXZhCmluZGV4IGQyNmYwMjYuLmY5NzcxMGYgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL0dyeW9NZXNzYWdlU2VyaWFsaXplclYxZDAuamF2YQorKysgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9HcnlvTWVzc2FnZVNlcmlhbGl6ZXJWMWQwLmphdmEKQEAgLTI4LDcgKzI4LDkgQEAKICAqIG5ldHdvcmsgc2VyaWFsaXphdGlvbiBwdXJwb3Nlcy4KICAqCiAgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuNC4zLCByZXBsYWNlZCBieSB7QGxpbmsgR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxfS4KICAqLworQERlcHJlY2F0ZWQKIHB1YmxpYyBmaW5hbCBjbGFzcyBHcnlvTWVzc2FnZVNlcmlhbGl6ZXJWMWQwIGV4dGVuZHMgQWJzdHJhY3RHcnlvTWVzc2FnZVNlcmlhbGl6ZXJWMWQwIHsKIAogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBNSU1FX1RZUEUgPSBTZXJUb2tlbnMuTUlNRV9HUllPX1YxRDA7CmRpZmYgLS1naXQgYS9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9HcnlvTWVzc2FnZVNlcmlhbGl6ZXJWM2QwLmphdmEgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9HcnlvTWVzc2FnZVNlcmlhbGl6ZXJWM2QwLmphdmEKaW5kZXggODViNzlhOS4uMWYxY2NiOCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvR3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMC5qYXZhCisrKyBiL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL0dyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAuamF2YQpAQCAtMjgsNyArMjgsOSBAQAogICogbmV0d29yayBzZXJpYWxpemF0aW9uIHB1cnBvc2VzLgogICoKICAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy40LjMsIHJlcGxhY2VkIGJ5IHtAbGluayBHcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjF9LgogICovCitARGVwcmVjYXRlZAogcHVibGljIGZpbmFsIGNsYXNzIEdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAgZXh0ZW5kcyBBYnN0cmFjdEdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAgewogCiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIE1JTUVfVFlQRSA9IFNlclRva2Vucy5NSU1FX0dSWU9fVjNEMDsKZGlmZiAtLWdpdCBhL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL05ldHR5QnVmZmVyLmphdmEgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9OZXR0eUJ1ZmZlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhZWNhYzIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9OZXR0eUJ1ZmZlci5qYXZhCkBAIC0wLDAgKzEsMjY3IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyOworCitpbXBvcnQgaW8ubmV0dHkuYnVmZmVyLkJ5dGVCdWY7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uQnVmZmVyOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLmlvLk91dHB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLm5pby5CeXRlQnVmZmVyOworCisvKioKKyAqIFJlcHJlc2VudHMgYSB7QGxpbmsgQnVmZmVyfSBiYWNrZWQgYnkgTmV0dHkncyB7QGxpbmsgQnl0ZUJ1Zn0uCisgKi8KK2ZpbmFsIGNsYXNzIE5ldHR5QnVmZmVyIGltcGxlbWVudHMgQnVmZmVyIHsKKyAgICBwcml2YXRlIGZpbmFsIEJ5dGVCdWYgYnVmZmVyOworCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZS4KKyAgICAgKiBAcGFyYW0gYnVmZmVyIFRoZSBidWZmZXIgdG8gd3JhcC4KKyAgICAgKi8KKyAgICBOZXR0eUJ1ZmZlcihCeXRlQnVmIGJ1ZmZlcikgeworICAgICAgICBpZiAoYnVmZmVyID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImJ1ZmZlciBjYW4ndCBiZSBudWxsIik7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLmJ1ZmZlciA9IGJ1ZmZlcjsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgaW50IHJlYWRhYmxlQnl0ZXMoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmJ1ZmZlci5yZWFkYWJsZUJ5dGVzKCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGludCByZWFkZXJJbmRleCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuYnVmZmVyLnJlYWRlckluZGV4KCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIEJ1ZmZlciByZWFkZXJJbmRleChmaW5hbCBpbnQgcmVhZGVySW5kZXgpIHsKKyAgICAgICAgdGhpcy5idWZmZXIucmVhZGVySW5kZXgocmVhZGVySW5kZXgpOworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgaW50IHdyaXRlckluZGV4KCkgeworICAgICAgICByZXR1cm4gdGhpcy5idWZmZXIud3JpdGVySW5kZXgoKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgQnVmZmVyIHdyaXRlckluZGV4KGZpbmFsIGludCB3cml0ZXJJbmRleCkgeworICAgICAgICB0aGlzLmJ1ZmZlci53cml0ZXJJbmRleCh3cml0ZXJJbmRleCk7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBCdWZmZXIgbWFya1dyaXRlckluZGV4KCkgeworICAgICAgICB0aGlzLmJ1ZmZlci5tYXJrV3JpdGVySW5kZXgoKTsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIEJ1ZmZlciByZXNldFdyaXRlckluZGV4KCkgeworICAgICAgICB0aGlzLmJ1ZmZlci5yZXNldFdyaXRlckluZGV4KCk7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBpbnQgY2FwYWNpdHkoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmJ1ZmZlci5jYXBhY2l0eSgpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBib29sZWFuIGlzRGlyZWN0KCkgeworICAgICAgICByZXR1cm4gdGhpcy5idWZmZXIuaXNEaXJlY3QoKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgYm9vbGVhbiByZWFkQm9vbGVhbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuYnVmZmVyLnJlYWRCb29sZWFuKCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGJ5dGUgcmVhZEJ5dGUoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmJ1ZmZlci5yZWFkQnl0ZSgpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBzaG9ydCByZWFkU2hvcnQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmJ1ZmZlci5yZWFkU2hvcnQoKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgaW50IHJlYWRJbnQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmJ1ZmZlci5yZWFkSW50KCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGxvbmcgcmVhZExvbmcoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmJ1ZmZlci5yZWFkTG9uZygpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBmbG9hdCByZWFkRmxvYXQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmJ1ZmZlci5yZWFkRmxvYXQoKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgZG91YmxlIHJlYWREb3VibGUoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmJ1ZmZlci5yZWFkRG91YmxlKCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIEJ1ZmZlciByZWFkQnl0ZXMoZmluYWwgYnl0ZVtdIGRlc3RpbmF0aW9uKSB7CisgICAgICAgIHRoaXMuYnVmZmVyLnJlYWRCeXRlcyhkZXN0aW5hdGlvbik7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBCdWZmZXIgcmVhZEJ5dGVzKGZpbmFsIGJ5dGVbXSBkZXN0aW5hdGlvbiwgZmluYWwgaW50IGRzdEluZGV4LCBmaW5hbCBpbnQgbGVuZ3RoKSB7CisgICAgICAgIHRoaXMuYnVmZmVyLnJlYWRCeXRlcyhkZXN0aW5hdGlvbiwgZHN0SW5kZXgsIGxlbmd0aCk7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBCdWZmZXIgcmVhZEJ5dGVzKGZpbmFsIEJ5dGVCdWZmZXIgZHN0KSB7CisgICAgICAgIHRoaXMuYnVmZmVyLnJlYWRCeXRlcyhkc3QpOworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgQnVmZmVyIHJlYWRCeXRlcyhmaW5hbCBPdXRwdXRTdHJlYW0gb3V0LCBmaW5hbCBpbnQgbGVuZ3RoKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICB0aGlzLmJ1ZmZlci5yZWFkQnl0ZXMob3V0LCBsZW5ndGgpOworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgQnVmZmVyIHdyaXRlQm9vbGVhbihmaW5hbCBib29sZWFuIHZhbHVlKSB7CisgICAgICAgIHRoaXMuYnVmZmVyLndyaXRlQm9vbGVhbih2YWx1ZSk7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBCdWZmZXIgd3JpdGVCeXRlKGZpbmFsIGludCB2YWx1ZSkgeworICAgICAgICB0aGlzLmJ1ZmZlci53cml0ZUJ5dGUodmFsdWUpOworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgQnVmZmVyIHdyaXRlU2hvcnQoZmluYWwgaW50IHZhbHVlKSB7CisgICAgICAgIHRoaXMuYnVmZmVyLndyaXRlU2hvcnQodmFsdWUpOworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgQnVmZmVyIHdyaXRlSW50KGZpbmFsIGludCB2YWx1ZSkgeworICAgICAgICB0aGlzLmJ1ZmZlci53cml0ZUludCh2YWx1ZSk7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBCdWZmZXIgd3JpdGVMb25nKGZpbmFsIGxvbmcgdmFsdWUpIHsKKyAgICAgICAgdGhpcy5idWZmZXIud3JpdGVMb25nKHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIEJ1ZmZlciB3cml0ZUZsb2F0KGZpbmFsIGZsb2F0IHZhbHVlKSB7CisgICAgICAgIHRoaXMuYnVmZmVyLndyaXRlRmxvYXQodmFsdWUpOworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgQnVmZmVyIHdyaXRlRG91YmxlKGZpbmFsIGRvdWJsZSB2YWx1ZSkgeworICAgICAgICB0aGlzLmJ1ZmZlci53cml0ZURvdWJsZSh2YWx1ZSk7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBCdWZmZXIgd3JpdGVCeXRlcyhmaW5hbCBieXRlW10gc3JjKSB7CisgICAgICAgIHRoaXMuYnVmZmVyLndyaXRlQnl0ZXMoc3JjKTsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIEJ1ZmZlciB3cml0ZUJ5dGVzKGZpbmFsIEJ5dGVCdWZmZXIgc3JjKSB7CisgICAgICAgIHRoaXMuYnVmZmVyLndyaXRlQnl0ZXMoc3JjKTsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIEJ1ZmZlciB3cml0ZUJ5dGVzKGJ5dGVbXSBzcmMsIGZpbmFsIGludCBzcmNJbmRleCwgZmluYWwgaW50IGxlbmd0aCkgeworICAgICAgICB0aGlzLmJ1ZmZlci53cml0ZUJ5dGVzKHNyYywgc3JjSW5kZXgsIGxlbmd0aCk7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBib29sZWFuIHJlbGVhc2UoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmJ1ZmZlci5yZWxlYXNlKCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIEJ1ZmZlciByZXRhaW4oKSB7CisgICAgICAgIHRoaXMuYnVmZmVyLnJldGFpbigpOworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgaW50IHJlZmVyZW5jZUNvdW50KCkgeworICAgICAgICByZXR1cm4gdGhpcy5idWZmZXIucmVmQ250KCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIEJ5dGVCdWZmZXJbXSBuaW9CdWZmZXJzKCkgeworICAgICAgICByZXR1cm4gdGhpcy5idWZmZXIubmlvQnVmZmVycygpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBCeXRlQnVmZmVyIG5pb0J1ZmZlcigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuYnVmZmVyLm5pb0J1ZmZlcigpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBCeXRlQnVmZmVyIG5pb0J1ZmZlcihmaW5hbCBpbnQgaW5kZXgsIGZpbmFsIGludCBsZW5ndGgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuYnVmZmVyLm5pb0J1ZmZlcihpbmRleCwgbGVuZ3RoKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgQnl0ZUJ1ZmZlcltdIG5pb0J1ZmZlcnMoZmluYWwgaW50IGluZGV4LCBmaW5hbCBpbnQgbGVuZ3RoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmJ1ZmZlci5uaW9CdWZmZXJzKGluZGV4LCBsZW5ndGgpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBpbnQgbmlvQnVmZmVyQ291bnQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmJ1ZmZlci5uaW9CdWZmZXJDb3VudCgpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBCdWZmZXIgZ2V0Qnl0ZXMoZmluYWwgaW50IGluZGV4LCBmaW5hbCBieXRlW10gZHN0KSB7CisgICAgICAgIHRoaXMuYnVmZmVyLmdldEJ5dGVzKGluZGV4LCBkc3QpOworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlci4KKyAgICAgKi8KKyAgICBwdWJsaWMgQnl0ZUJ1ZiBnZXRVbmRlcmx5aW5nQnVmZmVyKCkgeworICAgICAgICByZXR1cm4gdGhpcy5idWZmZXI7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvTmV0dHlCdWZmZXJGYWN0b3J5LmphdmEgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9OZXR0eUJ1ZmZlckZhY3RvcnkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmVmMzFiCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvTmV0dHlCdWZmZXJGYWN0b3J5LmphdmEKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXI7CisKK2ltcG9ydCBpby5uZXR0eS5idWZmZXIuQnl0ZUJ1ZjsKK2ltcG9ydCBpby5uZXR0eS5idWZmZXIuVW5wb29sZWQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uQnVmZmVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlckZhY3Rvcnk7CisKK2ltcG9ydCBqYXZhLm5pby5CeXRlQnVmZmVyOworaW1wb3J0IGphdmEudXRpbC5mdW5jdGlvbi5Db25zdW1lcjsKKworLyoqCisgKiBSZXByZXNlbnRzIGEgZmFjdG9yeSB0byBjcmVhdGUge0BsaW5rIEJ1ZmZlcn0gaW5zdGFuY2VzIGZyb20gd3JhcHBlZCB7QGxpbmsgQnl0ZUJ1Zn0gaW5zdGFuY2VzLgorICovCitwdWJsaWMgY2xhc3MgTmV0dHlCdWZmZXJGYWN0b3J5IGltcGxlbWVudHMgQnVmZmVyRmFjdG9yeTxCeXRlQnVmPiB7CisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIEJ1ZmZlciBjcmVhdGUoZmluYWwgQnl0ZUJ1ZiB2YWx1ZSkgeworICAgICAgICByZXR1cm4gbmV3IE5ldHR5QnVmZmVyKHZhbHVlKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgQnVmZmVyIHdyYXAoZmluYWwgQnl0ZUJ1ZmZlciB2YWx1ZSkgeworICAgICAgICByZXR1cm4gY3JlYXRlKFVucG9vbGVkLndyYXBwZWRCdWZmZXIodmFsdWUpKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBCeXRlQnVmIGdldEZyb21JbmRleChmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBpbnQgaW5kZXgpIHsKKyAgICAgICAgaWYgKGJ1ZmZlci5uaW9CdWZmZXJDb3VudCgpID09IDEpIHsKKyAgICAgICAgICAgIC8vIEhlYXAgYW5kIGRpcmVjdCBidWZmZXJzIHVzdWFsbHkgdGFrZSBhIHNpbmdsZSBidWZmZXIKKyAgICAgICAgICAgIC8vIEl0IHdpbGwgY3JlYXRlIGEgbmV3IEJ5dGVCdWYgdXNpbmcgdGhlIHNhbWUgYmFja2luZyBieXRlIGFycmF5CisgICAgICAgICAgICByZXR1cm4gVW5wb29sZWQud3JhcHBlZEJ1ZmZlcihidWZmZXIubmlvQnVmZmVyKGluZGV4LCBidWZmZXIuY2FwYWNpdHkoKSAtIGluZGV4KSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBVc2UgYSB3cmFwcGVyIG9yIGNvbXBvc2l0ZSBidWZmZXIKKyAgICAgICAgcmV0dXJuIFVucG9vbGVkLndyYXBwZWRCdWZmZXIoYnVmZmVyLm5pb0J1ZmZlcnMoaW5kZXgsIGJ1ZmZlci5jYXBhY2l0eSgpIC0gaW5kZXgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBVdGlsaXR5IG1ldGhvZCB0byBhbGxvdyByZWFkaW5nIGZyb20gdGhlIHVuZGVybHlpbmcgYnl0ZXMgdXNpbmcgYSBOZXR0eSB7QGxpbmsgQnl0ZUJ1Zn0gaW5zdGFuY2UgZm9yCisgICAgICogaW50ZXJvcGVyYWJpbGl0eSwgYWR2YW5jaW5nIHRoZSByZWFkZXIgaW5kZXggb2YgdGhlIHtAbGluayBCdWZmZXJ9IGFmdGVyIHRoZSBjb25zdW1lciBpcyBjYWxsZWQuCisgICAgICoKKyAgICAgKiBOb3RlIHRoYXQgdGhlIHtAbGluayBCeXRlQnVmfSB1c2VkIGJ5IHRoZSBjb25zdW1lciBzaG91bGQgbm90IGJlIHJlbGVhc2VkIGJ5IHRoZSBjYWxsZXIuCisgICAgICogSW4gY2FzZSB0aGUgcHJvdmlkZWQge0BsaW5rIEJ1ZmZlcn0gaW5zdGFuY2UgaXMgbm90IGEge0BsaW5rIE5ldHR5QnVmZmVyfSwgaXQgd2lsbCBjcmVhdGUgYSB7QGxpbmsgQnl0ZUJ1Zn0KKyAgICAgKiB3cmFwcGVyIGZvciB0aGUgY29uc3VtZXIgdG8gdXNlLCByZWxlYXNpbmcgaXQgYWZ0ZXIgdXNlLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCByZWFkUmF3KGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIENvbnN1bWVyPEJ5dGVCdWY+IGNvbnN1bWVyKSB7CisgICAgICAgIGlmIChidWZmZXIgaW5zdGFuY2VvZiBOZXR0eUJ1ZmZlcikgeworICAgICAgICAgICAgY29uc3VtZXIuYWNjZXB0KCgoTmV0dHlCdWZmZXIpYnVmZmVyKS5nZXRVbmRlcmx5aW5nQnVmZmVyKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IEJ5dGVCdWYgYXMgYSB3cmFwcGVyCisgICAgICAgIGZpbmFsIGludCBpbml0aWFsSW5kZXggPSBidWZmZXIucmVhZGVySW5kZXgoKTsKKyAgICAgICAgZmluYWwgQnl0ZUJ1ZiBuZXdCdWZmZXIgPSBnZXRGcm9tSW5kZXgoYnVmZmVyLCBpbml0aWFsSW5kZXgpOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAvLyBJbnZva2UgdGhlIGNvbnN1bWVyIHRvIHJlYWQgZnJvbSB0aGUgQnl0ZUJ1ZgorICAgICAgICAgICAgY29uc3VtZXIuYWNjZXB0KG5ld0J1ZmZlcik7CisKKyAgICAgICAgICAgIC8vIEFkdmFuY2UgdGhlIHJlYWRlciBpbmRleCBvZiB0aGUgQnVmZmVyIGltcGxlbWVudGF0aW9uCisgICAgICAgICAgICBidWZmZXIucmVhZGVySW5kZXgoaW5pdGlhbEluZGV4ICsgbmV3QnVmZmVyLnJlYWRlckluZGV4KCkpOworICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgbmV3QnVmZmVyLnJlbGVhc2UoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEFsbG93cyB3cml0aW5nIGZyb20gdGhlIHVuZGVybHlpbmcgYnl0ZXMgdXNpbmcgYSBOZXR0eSB7QGxpbmsgQnl0ZUJ1Zn0gaW5zdGFuY2UgZm9yIGludGVyb3BlcmFiaWxpdHksCisgICAgICogYWR2YW5jaW5nIHRoZSB3cml0ZXIgaW5kZXggb2YgdGhlIHtAbGluayBCdWZmZXJ9IGFmdGVyIHRoZSBjb25zdW1lciBpcyBjYWxsZWQuCisgICAgICoKKyAgICAgKiBOb3RlIHRoYXQgdGhlIHtAbGluayBCeXRlQnVmfSB1c2VkIGJ5IHRoZSBjb25zdW1lciBzaG91bGQgbm90IGJlIHJlbGVhc2VkIGJ5IHRoZSBjYWxsZXIuCisgICAgICogSW4gY2FzZSB0aGUgcHJvdmlkZWQge0BsaW5rIEJ1ZmZlcn0gaW5zdGFuY2UgaXMgbm90IGEge0BsaW5rIE5ldHR5QnVmZmVyfSwgaXQgd2lsbCBjcmVhdGUgYSB7QGxpbmsgQnl0ZUJ1Zn0KKyAgICAgKiB3cmFwcGVyIGZvciB0aGUgY29uc3VtZXIgdG8gdXNlLCByZWxlYXNpbmcgaXQgYWZ0ZXIgdXNlLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCB3cml0ZVJhdyhmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBDb25zdW1lcjxCeXRlQnVmPiBjb25zdW1lcikgeworICAgICAgICBpZiAoYnVmZmVyIGluc3RhbmNlb2YgTmV0dHlCdWZmZXIpIHsKKyAgICAgICAgICAgIGNvbnN1bWVyLmFjY2VwdCgoKE5ldHR5QnVmZmVyKWJ1ZmZlcikuZ2V0VW5kZXJseWluZ0J1ZmZlcigpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIENyZWF0ZSBhIG5ldyBCeXRlQnVmIGFzIGEgd3JhcHBlcgorICAgICAgICBmaW5hbCBpbnQgaW5pdGlhbEluZGV4ID0gYnVmZmVyLndyaXRlckluZGV4KCk7CisgICAgICAgIGZpbmFsIEJ5dGVCdWYgbmV3QnVmZmVyID0gZ2V0RnJvbUluZGV4KGJ1ZmZlciwgaW5pdGlhbEluZGV4KTsKKworICAgICAgICAvLyBTZXQgd3JpdGVyIGluZGV4IHRvIDAKKyAgICAgICAgbmV3QnVmZmVyLndyaXRlckluZGV4KDApOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAvLyBJbnZva2UgdGhlIGNvbnN1bWVyIHRvIHJlYWQgZnJvbSB0aGUgQnl0ZUJ1ZgorICAgICAgICAgICAgY29uc3VtZXIuYWNjZXB0KG5ld0J1ZmZlcik7CisKKyAgICAgICAgICAgIC8vIEFkdmFuY2UgdGhlIHJlYWRlciBpbmRleCBvZiB0aGUgQnVmZmVyIGltcGxlbWVudGF0aW9uCisgICAgICAgICAgICBidWZmZXIud3JpdGVySW5kZXgoaW5pdGlhbEluZGV4ICsgbmV3QnVmZmVyLndyaXRlckluZGV4KCkpOworICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgbmV3QnVmZmVyLnJlbGVhc2UoKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL1NlclRva2Vucy5qYXZhIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvU2VyVG9rZW5zLmphdmEKaW5kZXggZjBhYjFlOC4uNWNjYjhkZCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvU2VyVG9rZW5zLmphdmEKKysrIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvU2VyVG9rZW5zLmphdmEKQEAgLTE4LDEwICsxOCwxMiBAQAogICovCiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlcjsKIAoraW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuZGVjb3JhdGlvbi5IYWx0ZWRUcmF2ZXJzZXJTdHJhdGVneTsKKwogLyoqCiAgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCiAgKi8KLXB1YmxpYyBmaW5hbCAgY2xhc3MgU2VyVG9rZW5zIHsKK3B1YmxpYyBmaW5hbCBjbGFzcyBTZXJUb2tlbnMgewogICAgIHByaXZhdGUgU2VyVG9rZW5zKCkge30KIAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFRPS0VOX0FUVFJJQlVURVMgPSAiYXR0cmlidXRlcyI7CkBAIC00MCw3ICs0MiwyMyBAQAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE1JTUVfR1JBUEhTT05fVjFEMCA9ICJhcHBsaWNhdGlvbi92bmQuZ3JlbWxpbi12MS4wK2pzb24iOwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE1JTUVfR1JBUEhTT05fVjJEMCA9ICJhcHBsaWNhdGlvbi92bmQuZ3JlbWxpbi12Mi4wK2pzb24iOwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE1JTUVfR1JBUEhTT05fVjNEMCA9ICJhcHBsaWNhdGlvbi92bmQuZ3JlbWxpbi12My4wK2pzb24iOworCisgICAgLyoqCisgICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjQuMywgcmVwbGFjZWQgYnkge0BsaW5rICNNSU1FX0dSQVBIQklOQVJZX1YxRDB9LgorICAgICAqLworICAgIEBEZXByZWNhdGVkCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTUlNRV9HUllPX1YxRDAgPSAiYXBwbGljYXRpb24vdm5kLmdyZW1saW4tdjEuMCtncnlvIjsKKworICAgIC8qKgorICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy40LjMsIHJlcGxhY2VkIGJ5IHtAbGluayAjTUlNRV9HUkFQSEJJTkFSWV9WMUQwfS4KKyAgICAgKi8KKyAgICBARGVwcmVjYXRlZAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE1JTUVfR1JZT19WM0QwID0gImFwcGxpY2F0aW9uL3ZuZC5ncmVtbGluLXYzLjArZ3J5byI7CisKKyAgICAvKioKKyAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuMi42LCBub3QgZGlyZWN0bHkgcmVwbGFjZWQgLSBzdXBwb3J0ZWQgdGhyb3VnaCB7QGxpbmsgSGFsdGVkVHJhdmVyc2VyU3RyYXRlZ3l9LgorICAgICAqLworICAgIEBEZXByZWNhdGVkCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTUlNRV9HUllPX0xJVEVfVjFEMCA9ICJhcHBsaWNhdGlvbi92bmQuZ3JlbWxpbi12MS4wK2dyeW8tbGl0ZSI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTUlNRV9HUkFQSEJJTkFSWV9WMUQwID0gImFwcGxpY2F0aW9uL3ZuZC5ncmFwaGJpbmFyeS12MS4wIjsKIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL1NlcmlhbGl6ZXJzLmphdmEgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9TZXJpYWxpemVycy5qYXZhCmluZGV4IDRjNThkZTIuLjQ3YWY2NDcgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL1NlcmlhbGl6ZXJzLmphdmEKKysrIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvU2VyaWFsaXplcnMuamF2YQpAQCAtMTksNiArMTksNyBAQAogcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXI7CiAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5NZXNzYWdlU2VyaWFsaXplcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uSGFsdGVkVHJhdmVyc2VyU3RyYXRlZ3k7CiAKIC8qKgogICogQW4gZW51bSBvZiB0aGUgZGVmYXVsdCBzZXJpYWxpemVycy4KQEAgLTMzLDggKzM0LDI0IEBACiAgICAgR1JBUEhTT05fVjFEMChTZXJUb2tlbnMuTUlNRV9HUkFQSFNPTl9WMUQwKSwKICAgICBHUkFQSFNPTl9WMkQwKFNlclRva2Vucy5NSU1FX0dSQVBIU09OX1YyRDApLAogICAgIEdSQVBIU09OX1YzRDAoU2VyVG9rZW5zLk1JTUVfR1JBUEhTT05fVjNEMCksCisgICAgR1JBUEhCSU5BUllfVjFEMChTZXJUb2tlbnMuTUlNRV9HUkFQSEJJTkFSWV9WMUQwKSwKKworICAgIC8qKgorICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy40LjMsIHJlcGxhY2VkIGJ5IHtAbGluayAjR1JBUEhCSU5BUllfVjFEMH0uCisgICAgICovCisgICAgQERlcHJlY2F0ZWQKICAgICBHUllPX1YxRDAoU2VyVG9rZW5zLk1JTUVfR1JZT19WMUQwKSwKKworICAgIC8qKgorICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy40LjMsIHJlcGxhY2VkIGJ5IHtAbGluayAjR1JBUEhCSU5BUllfVjFEMH0uCisgICAgICovCisgICAgQERlcHJlY2F0ZWQKICAgICBHUllPX1YzRDAoU2VyVG9rZW5zLk1JTUVfR1JZT19WM0QwKSwKKworICAgIC8qKgorICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy4yLjYsIG5vdCBkaXJlY3RseSByZXBsYWNlZCAtIHN1cHBvcnRlZCB0aHJvdWdoIHtAbGluayBIYWx0ZWRUcmF2ZXJzZXJTdHJhdGVneX0uCisgICAgICovCisgICAgQERlcHJlY2F0ZWQKICAgICBHUllPX0xJVEVfVjFEMChTZXJUb2tlbnMuTUlNRV9HUllPX0xJVEVfVjFEMCk7CiAKICAgICBwcml2YXRlIFN0cmluZyB2YWx1ZTsKQEAgLTcyLDcgKzg5LDcgQEAKICAgICAgICAgICAgIGNhc2UgU2VyVG9rZW5zLk1JTUVfR1JBUEhTT05fVjFEMDoKICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJHcmVtbGluVjFkMCgpOwogICAgICAgICAgICAgY2FzZSBTZXJUb2tlbnMuTUlNRV9HUkFQSFNPTl9WMkQwOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplckdyZW1saW5WMmQwKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjJkMCgpOwogICAgICAgICAgICAgY2FzZSBTZXJUb2tlbnMuTUlNRV9HUkFQSFNPTl9WM0QwOgogICAgICAgICAgICAgICAgIHJldHVybiBuZXcgR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYzZDAoKTsKICAgICAgICAgICAgIGNhc2UgU2VyVG9rZW5zLk1JTUVfR1JZT19WMUQwOgpAQCAtODEsNiArOTgsOCBAQAogICAgICAgICAgICAgICAgIHJldHVybiBuZXcgR3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMCgpOwogICAgICAgICAgICAgY2FzZSBTZXJUb2tlbnMuTUlNRV9HUllPX0xJVEVfVjFEMDoKICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEdyeW9MaXRlTWVzc2FnZVNlcmlhbGl6ZXJWMWQwKCk7CisgICAgICAgICAgICBjYXNlIFNlclRva2Vucy5NSU1FX0dSQVBIQklOQVJZX1YxRDA6CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBHcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjEoKTsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIkNvdWxkIG5vdCBjcmVhdGUgYSBzaW1wbGUgTWVzc2FnZVNlcmlhbGl6ZXIgaW5zdGFuY2Ugb2YgIiArIHZhbHVlKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvYmluYXJ5L1JlcXVlc3RNZXNzYWdlU2VyaWFsaXplci5qYXZhIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvYmluYXJ5L1JlcXVlc3RNZXNzYWdlU2VyaWFsaXplci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwNGJmZTkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9iaW5hcnkvUmVxdWVzdE1lc3NhZ2VTZXJpYWxpemVyLmphdmEKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5iaW5hcnk7CisKK2ltcG9ydCBpby5uZXR0eS5idWZmZXIuQnl0ZUJ1ZjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuTmV0dHlCdWZmZXJGYWN0b3J5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLm1lc3NhZ2UuUmVxdWVzdE1lc3NhZ2U7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLlNlcmlhbGl6YXRpb25FeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uQnVmZmVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlXcml0ZXI7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEudXRpbC5NYXA7CitpbXBvcnQgamF2YS51dGlsLlVVSUQ7CisKK3B1YmxpYyBjbGFzcyBSZXF1ZXN0TWVzc2FnZVNlcmlhbGl6ZXIgeworICAgIHByaXZhdGUgc3RhdGljIE5ldHR5QnVmZmVyRmFjdG9yeSBidWZmZXJGYWN0b3J5ID0gbmV3IE5ldHR5QnVmZmVyRmFjdG9yeSgpOworCisgICAgcHVibGljIFJlcXVlc3RNZXNzYWdlIHJlYWRWYWx1ZShmaW5hbCBCeXRlQnVmIGJ5dGVCdWYsIGZpbmFsIEdyYXBoQmluYXJ5UmVhZGVyIGNvbnRleHQpIHRocm93cyBTZXJpYWxpemF0aW9uRXhjZXB0aW9uIHsKKyAgICAgICAgLy8gV3JhcCBuZXR0eSdzIGJ1ZmZlcgorICAgICAgICBmaW5hbCBCdWZmZXIgYnVmZmVyID0gYnVmZmVyRmFjdG9yeS5jcmVhdGUoYnl0ZUJ1Zik7CisKKyAgICAgICAgZmluYWwgaW50IHZlcnNpb24gPSBidWZmZXIucmVhZEJ5dGUoKSAmIDB4ZmY7CisKKyAgICAgICAgaWYgKHZlcnNpb24gPj4+IDcgIT0gMSkgeworICAgICAgICAgICAgLy8gVGhpcyBpcyBhbiBpbmRpY2F0aW9uIHRoYXQgdGhlIHJlcXVlc3QgYnVmZmVyIHdhcyBpbmNvcnJlY3RseSBidWlsdAorICAgICAgICAgICAgLy8gT3IgdGhlIGJ1ZmZlciBvZmZzZXRzIGFyZSB3cm9uZworICAgICAgICAgICAgdGhyb3cgbmV3IFNlcmlhbGl6YXRpb25FeGNlcHRpb24oIlRoZSBtb3N0IHNpZ25pZmljYW50IGJpdCBzaG91bGQgYmUgc2V0IGFjY29yZGluZyB0byB0aGUgZm9ybWF0Iik7CisgICAgICAgIH0KKworICAgICAgICB0cnkgeworICAgICAgICAgICAgZmluYWwgVVVJRCBpZCA9IGNvbnRleHQucmVhZFZhbHVlKGJ1ZmZlciwgVVVJRC5jbGFzcywgZmFsc2UpOworICAgICAgICAgICAgZmluYWwgU3RyaW5nIG9wID0gY29udGV4dC5yZWFkVmFsdWUoYnVmZmVyLCBTdHJpbmcuY2xhc3MsIGZhbHNlKTsKKyAgICAgICAgICAgIGZpbmFsIFN0cmluZyBwcm9jZXNzb3IgPSBjb250ZXh0LnJlYWRWYWx1ZShidWZmZXIsIFN0cmluZy5jbGFzcywgZmFsc2UpOworCisgICAgICAgICAgICBmaW5hbCBSZXF1ZXN0TWVzc2FnZS5CdWlsZGVyIGJ1aWxkZXIgPSBSZXF1ZXN0TWVzc2FnZS5idWlsZChvcCkub3ZlcnJpZGVSZXF1ZXN0SWQoaWQpLnByb2Nlc3Nvcihwcm9jZXNzb3IpOworCisgICAgICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLCBPYmplY3Q+IGFyZ3MgPSBjb250ZXh0LnJlYWRWYWx1ZShidWZmZXIsIE1hcC5jbGFzcywgZmFsc2UpOworICAgICAgICAgICAgYXJncy5mb3JFYWNoKGJ1aWxkZXI6OmFkZEFyZyk7CisKKyAgICAgICAgICAgIHJldHVybiBidWlsZGVyLmNyZWF0ZSgpOworICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFNlcmlhbGl6YXRpb25FeGNlcHRpb24oZXgpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgd3JpdGVWYWx1ZShmaW5hbCBSZXF1ZXN0TWVzc2FnZSB2YWx1ZSwgZmluYWwgQnl0ZUJ1ZiBieXRlQnVmLCBmaW5hbCBHcmFwaEJpbmFyeVdyaXRlciBjb250ZXh0KSB0aHJvd3MgU2VyaWFsaXphdGlvbkV4Y2VwdGlvbiB7CisgICAgICAgIC8vIFdyYXAgbmV0dHkncyBidWZmZXIKKyAgICAgICAgZmluYWwgQnVmZmVyIGJ1ZmZlciA9IGJ1ZmZlckZhY3RvcnkuY3JlYXRlKGJ5dGVCdWYpOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAvLyBWZXJzaW9uCisgICAgICAgICAgICBidWZmZXIud3JpdGVCeXRlKEdyYXBoQmluYXJ5V3JpdGVyLlZFUlNJT05fQllURSk7CisgICAgICAgICAgICAvLyBSZXF1ZXN0SWQKKyAgICAgICAgICAgIGNvbnRleHQud3JpdGVWYWx1ZSh2YWx1ZS5nZXRSZXF1ZXN0SWQoKSwgYnVmZmVyLCBmYWxzZSk7CisgICAgICAgICAgICAvLyBPcAorICAgICAgICAgICAgY29udGV4dC53cml0ZVZhbHVlKHZhbHVlLmdldE9wKCksIGJ1ZmZlciwgZmFsc2UpOworICAgICAgICAgICAgLy8gUHJvY2Vzc29yCisgICAgICAgICAgICBjb250ZXh0LndyaXRlVmFsdWUodmFsdWUuZ2V0UHJvY2Vzc29yKCksIGJ1ZmZlciwgZmFsc2UpOworICAgICAgICAgICAgLy8gQXJncworICAgICAgICAgICAgY29udGV4dC53cml0ZVZhbHVlKHZhbHVlLmdldEFyZ3MoKSwgYnVmZmVyLCBmYWxzZSk7CisgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgU2VyaWFsaXphdGlvbkV4Y2VwdGlvbihleCk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9iaW5hcnkvUmVzcG9uc2VNZXNzYWdlU2VyaWFsaXplci5qYXZhIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvYmluYXJ5L1Jlc3BvbnNlTWVzc2FnZVNlcmlhbGl6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YTA3Y2RiCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvYmluYXJ5L1Jlc3BvbnNlTWVzc2FnZVNlcmlhbGl6ZXIuamF2YQpAQCAtMCwwICsxLDg5IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLmJpbmFyeTsKKworaW1wb3J0IGlvLm5ldHR5LmJ1ZmZlci5CeXRlQnVmOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5OZXR0eUJ1ZmZlckZhY3Rvcnk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIubWVzc2FnZS5SZXNwb25zZU1lc3NhZ2U7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIubWVzc2FnZS5SZXNwb25zZVJlc3VsdDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5tZXNzYWdlLlJlc3BvbnNlU3RhdHVzOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLm1lc3NhZ2UuUmVzcG9uc2VTdGF0dXNDb2RlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5TZXJpYWxpemF0aW9uRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlSZWFkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5V3JpdGVyOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworaW1wb3J0IGphdmEudXRpbC5VVUlEOworCitwdWJsaWMgY2xhc3MgUmVzcG9uc2VNZXNzYWdlU2VyaWFsaXplciB7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTmV0dHlCdWZmZXJGYWN0b3J5IGJ1ZmZlckZhY3RvcnkgPSBuZXcgTmV0dHlCdWZmZXJGYWN0b3J5KCk7CisKKyAgICBwdWJsaWMgUmVzcG9uc2VNZXNzYWdlIHJlYWRWYWx1ZShmaW5hbCBCeXRlQnVmIGJ5dGVCdWYsIGZpbmFsIEdyYXBoQmluYXJ5UmVhZGVyIGNvbnRleHQpIHRocm93cyBTZXJpYWxpemF0aW9uRXhjZXB0aW9uIHsKKyAgICAgICAgLy8gV3JhcCBuZXR0eSdzIGJ1ZmZlcgorICAgICAgICBmaW5hbCBCdWZmZXIgYnVmZmVyID0gYnVmZmVyRmFjdG9yeS5jcmVhdGUoYnl0ZUJ1Zik7CisgICAgICAgIGZpbmFsIGludCB2ZXJzaW9uID0gYnVmZmVyLnJlYWRCeXRlKCkgJiAweGZmOworCisgICAgICAgIGlmICh2ZXJzaW9uID4+PiA3ICE9IDEpIHsKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgYW4gaW5kaWNhdGlvbiB0aGF0IHRoZSByZXNwb25zZSBidWZmZXIgd2FzIGluY29ycmVjdGx5IGJ1aWx0CisgICAgICAgICAgICAvLyBPciB0aGUgYnVmZmVyIG9mZnNldHMgYXJlIHdyb25nCisgICAgICAgICAgICB0aHJvdyBuZXcgU2VyaWFsaXphdGlvbkV4Y2VwdGlvbigiVGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0IHNob3VsZCBiZSBzZXQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtYXQiKTsKKyAgICAgICAgfQorCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gUmVzcG9uc2VNZXNzYWdlLmJ1aWxkKGNvbnRleHQucmVhZFZhbHVlKGJ1ZmZlciwgVVVJRC5jbGFzcywgdHJ1ZSkpCisgICAgICAgICAgICAgICAgICAgIC5jb2RlKFJlc3BvbnNlU3RhdHVzQ29kZS5nZXRGcm9tVmFsdWUoY29udGV4dC5yZWFkVmFsdWUoYnVmZmVyLCBJbnRlZ2VyLmNsYXNzLCBmYWxzZSkpKQorICAgICAgICAgICAgICAgICAgICAuc3RhdHVzTWVzc2FnZShjb250ZXh0LnJlYWRWYWx1ZShidWZmZXIsIFN0cmluZy5jbGFzcywgdHJ1ZSkpCisgICAgICAgICAgICAgICAgICAgIC5zdGF0dXNBdHRyaWJ1dGVzKGNvbnRleHQucmVhZFZhbHVlKGJ1ZmZlciwgTWFwLmNsYXNzLCBmYWxzZSkpCisgICAgICAgICAgICAgICAgICAgIC5yZXNwb25zZU1ldGFEYXRhKGNvbnRleHQucmVhZFZhbHVlKGJ1ZmZlciwgTWFwLmNsYXNzLCBmYWxzZSkpCisgICAgICAgICAgICAgICAgICAgIC5yZXN1bHQoY29udGV4dC5yZWFkKGJ1ZmZlcikpCisgICAgICAgICAgICAgICAgICAgIC5jcmVhdGUoKTsKKyAgICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBTZXJpYWxpemF0aW9uRXhjZXB0aW9uKGV4KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHdyaXRlVmFsdWUoZmluYWwgUmVzcG9uc2VNZXNzYWdlIHZhbHVlLCBmaW5hbCBCeXRlQnVmIGJ5dGVCdWYsIGZpbmFsIEdyYXBoQmluYXJ5V3JpdGVyIGNvbnRleHQpIHRocm93cyBTZXJpYWxpemF0aW9uRXhjZXB0aW9uIHsKKyAgICAgICAgLy8gV3JhcCBuZXR0eSdzIGJ1ZmZlcgorICAgICAgICBmaW5hbCBCdWZmZXIgYnVmZmVyID0gYnVmZmVyRmFjdG9yeS5jcmVhdGUoYnl0ZUJ1Zik7CisKKyAgICAgICAgZmluYWwgUmVzcG9uc2VSZXN1bHQgcmVzdWx0ID0gdmFsdWUuZ2V0UmVzdWx0KCk7CisgICAgICAgIGZpbmFsIFJlc3BvbnNlU3RhdHVzIHN0YXR1cyA9IHZhbHVlLmdldFN0YXR1cygpOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAvLyBWZXJzaW9uCisgICAgICAgICAgICBidWZmZXIud3JpdGVCeXRlKEdyYXBoQmluYXJ5V3JpdGVyLlZFUlNJT05fQllURSk7CisgICAgICAgICAgICAvLyBOdWxsYWJsZSByZXF1ZXN0IGlkCisgICAgICAgICAgICBjb250ZXh0LndyaXRlVmFsdWUodmFsdWUuZ2V0UmVxdWVzdElkKCksIGJ1ZmZlciwgdHJ1ZSk7CisgICAgICAgICAgICAvLyBTdGF0dXMgY29kZQorICAgICAgICAgICAgY29udGV4dC53cml0ZVZhbHVlKHN0YXR1cy5nZXRDb2RlKCkuZ2V0VmFsdWUoKSwgYnVmZmVyLCBmYWxzZSk7CisgICAgICAgICAgICAvLyBOdWxsYWJsZSBzdGF0dXMgbWVzc2FnZQorICAgICAgICAgICAgY29udGV4dC53cml0ZVZhbHVlKHN0YXR1cy5nZXRNZXNzYWdlKCksIGJ1ZmZlciwgdHJ1ZSk7CisgICAgICAgICAgICAvLyBTdGF0dXMgYXR0cmlidXRlcworICAgICAgICAgICAgY29udGV4dC53cml0ZVZhbHVlKHN0YXR1cy5nZXRBdHRyaWJ1dGVzKCksIGJ1ZmZlciwgZmFsc2UpOworICAgICAgICAgICAgLy8gUmVzdWx0IG1ldGEKKyAgICAgICAgICAgIGNvbnRleHQud3JpdGVWYWx1ZShyZXN1bHQuZ2V0TWV0YSgpLCBidWZmZXIsIGZhbHNlKTsKKyAgICAgICAgICAgIC8vIEZ1bGx5LXF1YWxpZmllZCB2YWx1ZQorICAgICAgICAgICAgY29udGV4dC53cml0ZShyZXN1bHQuZ2V0RGF0YSgpLCBidWZmZXIpOworICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFNlcmlhbGl6YXRpb25FeGNlcHRpb24oZXgpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kcml2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zaW1wbGUvV2ViU29ja2V0Q2xpZW50LmphdmEgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3NpbXBsZS9XZWJTb2NrZXRDbGllbnQuamF2YQppbmRleCBjYzdkZDhmLi4zOTUwMzM5IDEwMDY0NAotLS0gYS9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3NpbXBsZS9XZWJTb2NrZXRDbGllbnQuamF2YQorKysgYi9ncmVtbGluLWRyaXZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3NpbXBsZS9XZWJTb2NrZXRDbGllbnQuamF2YQpAQCAtMjAsNiArMjAsNyBAQAogCiBpbXBvcnQgaW8ubmV0dHkuYnVmZmVyLlBvb2xlZEJ5dGVCdWZBbGxvY2F0b3I7CiBpbXBvcnQgaW8ubmV0dHkuY2hhbm5lbC5DaGFubmVsT3B0aW9uOworaW1wb3J0IGlvLm5ldHR5LmhhbmRsZXIuY29kZWMuaHR0cC5FbXB0eUh0dHBIZWFkZXJzOwogaW1wb3J0IGlvLm5ldHR5LmhhbmRsZXIuY29kZWMuaHR0cC5IdHRwSGVhZGVyczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5NZXNzYWdlU2VyaWFsaXplcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5oYW5kbGVyLldlYlNvY2tldENsaWVudEhhbmRsZXI7CkBAIC02Nyw3ICs2OCw3IEBACiAgICAgICAgICAgICBmaW5hbCBXZWJTb2NrZXRDbGllbnRIYW5kbGVyIHdzSGFuZGxlciA9CiAgICAgICAgICAgICAgICAgICAgIG5ldyBXZWJTb2NrZXRDbGllbnRIYW5kbGVyKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYlNvY2tldENsaWVudEhhbmRzaGFrZXJGYWN0b3J5Lm5ld0hhbmRzaGFrZXIoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmksIFdlYlNvY2tldFZlcnNpb24uVjEzLCBudWxsLCBmYWxzZSwgSHR0cEhlYWRlcnMuRU1QVFlfSEVBREVSUywgNjU1MzYpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVyaSwgV2ViU29ja2V0VmVyc2lvbi5WMTMsIG51bGwsIGZhbHNlLCBFbXB0eUh0dHBIZWFkZXJzLklOU1RBTkNFLCA2NTUzNikpOwogICAgICAgICAgICAgZmluYWwgTWVzc2FnZVNlcmlhbGl6ZXIgc2VyaWFsaXplciA9IG5ldyBHcnlvTWVzc2FnZVNlcmlhbGl6ZXJWM2QwKCk7CiAgICAgICAgICAgICBiLmNoYW5uZWwoTmlvU29ja2V0Q2hhbm5lbC5jbGFzcykKICAgICAgICAgICAgICAgICAgICAgLmhhbmRsZXIobmV3IENoYW5uZWxJbml0aWFsaXplcjxTb2NrZXRDaGFubmVsPigpIHsKZGlmZiAtLWdpdCBhL2dyZW1saW4tZHJpdmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvQWJzdHJhY3RSZXN1bHRRdWV1ZVRlc3QuamF2YSBiL2dyZW1saW4tZHJpdmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvQWJzdHJhY3RSZXN1bHRRdWV1ZVRlc3QuamF2YQppbmRleCAzYzg0Y2E2Li4zMDJmZGE5IDEwMDY0NAotLS0gYS9ncmVtbGluLWRyaXZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL0Fic3RyYWN0UmVzdWx0UXVldWVUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9BYnN0cmFjdFJlc3VsdFF1ZXVlVGVzdC5qYXZhCkBAIC0yMCw2ICsyMCw3IEBACiAKIGltcG9ydCBvcmcuanVuaXQuQmVmb3JlOwogCitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOwogaW1wb3J0IGphdmEudXRpbC5jb25jdXJyZW50LkNvbXBsZXRhYmxlRnV0dXJlOwogaW1wb3J0IGphdmEudXRpbC5jb25jdXJyZW50LkNvdW50RG93bkxhdGNoOwogaW1wb3J0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9yU2VydmljZTsKQEAgLTg0LDcgKzg1LDcgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChtYXJrRG9uZSkgcmVzdWx0UXVldWUubWFya0NvbXBsZXRlKCk7CisgICAgICAgICAgICBpZiAobWFya0RvbmUpIHJlc3VsdFF1ZXVlLm1hcmtDb21wbGV0ZShDb2xsZWN0aW9ucy5lbXB0eU1hcCgpKTsKIAogICAgICAgICB9LCAiUmVzdWx0UXVldWVUZXN0LWpvYi1zdWJtaXR0ZXIiKTsKIApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kcml2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9SZXN1bHRRdWV1ZVRlc3QuamF2YSBiL2dyZW1saW4tZHJpdmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvUmVzdWx0UXVldWVUZXN0LmphdmEKaW5kZXggYmFiNjhkZC4uNzVhZmI3NCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kcml2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9SZXN1bHRRdWV1ZVRlc3QuamF2YQorKysgYi9ncmVtbGluLWRyaXZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL1Jlc3VsdFF1ZXVlVGVzdC5qYXZhCkBAIC00NSw2ICs0NSwxMCBAQAogICovCiBwdWJsaWMgY2xhc3MgUmVzdWx0UXVldWVUZXN0IGV4dGVuZHMgQWJzdHJhY3RSZXN1bHRRdWV1ZVRlc3QgewogCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTWFwPFN0cmluZyxPYmplY3Q+IEFUVFJJQlVURVMgPSBuZXcgSGFzaE1hcDxTdHJpbmcsT2JqZWN0PigpIHt7CisgICAgICAgIHB1dCgidGhpcyIsICJ0aGF0Iik7CisgICAgfX07CisKICAgICBAVGVzdAogICAgIHB1YmxpYyB2b2lkIHNob3VsZEdldFNpemVVbnRpbEVycm9yKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CiAgICAgICAgIGZpbmFsIFRocmVhZCB0ID0gYWRkVG9RdWV1ZSgxMDAsIDEwLCB0cnVlLCBmYWxzZSwgMSk7CkBAIC0xMzUsNyArMTM5LDcgQEAKICAgICAgICAgcmVzdWx0UXVldWUuYWRkKG5ldyBSZXN1bHQoInRlc3QzIikpOwogCiAgICAgICAgIGFzc2VydFRoYXQoZnV0dXJlLmlzRG9uZSgpLCBpcyhmYWxzZSkpOwotICAgICAgICByZXN1bHRRdWV1ZS5tYXJrQ29tcGxldGUoKTsKKyAgICAgICAgcmVzdWx0UXVldWUubWFya0NvbXBsZXRlKEFUVFJJQlVURVMpOwogICAgICAgICBhc3NlcnRUaGF0KGZ1dHVyZS5pc0RvbmUoKSwgaXModHJ1ZSkpOwogCiAgICAgICAgIGZpbmFsIExpc3Q8UmVzdWx0PiByZXN1bHRzID0gZnV0dXJlLmdldCgpOwpAQCAtMTQ1LDYgKzE0OSw3IEBACiAgICAgICAgIGFzc2VydEVxdWFscygzLCByZXN1bHRzLnNpemUoKSk7CiAKICAgICAgICAgYXNzZXJ0VGhhdChyZXN1bHRRdWV1ZS5pc0VtcHR5KCksIGlzKHRydWUpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKCJ0aGF0IiwgcmVzdWx0UXVldWUuZ2V0U3RhdHVzQXR0cmlidXRlcygpLmdldCgidGhpcyIpKTsKICAgICB9CiAKICAgICBAVGVzdApAQCAtMjQyLDcgKzI0Nyw3IEBACiAgICAgICAgIHJlc3VsdFF1ZXVlLmFkZChuZXcgUmVzdWx0KCJ0ZXN0MiIpKTsKICAgICAgICAgcmVzdWx0UXVldWUuYWRkKG5ldyBSZXN1bHQoInRlc3QzIikpOwogCi0gICAgICAgIHJlc3VsdFF1ZXVlLm1hcmtDb21wbGV0ZSgpOworICAgICAgICByZXN1bHRRdWV1ZS5tYXJrQ29tcGxldGUoQVRUUklCVVRFUyk7CiAKICAgICAgICAgLy8geW91IG1pZ2h0IHdhbnQgMzAgYnV0IHRoZXJlIGFyZSBvbmx5IHRocmVlCiAgICAgICAgIGZpbmFsIENvbXBsZXRhYmxlRnV0dXJlPExpc3Q8UmVzdWx0Pj4gZnV0dXJlID0gcmVzdWx0UXVldWUuYXdhaXQoMzApOwpAQCAtMjU1LDYgKzI2MCw3IEBACiAgICAgICAgIGFzc2VydEVxdWFscygzLCByZXN1bHRzLnNpemUoKSk7CiAKICAgICAgICAgYXNzZXJ0VGhhdChyZXN1bHRRdWV1ZS5pc0VtcHR5KCksIGlzKHRydWUpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKCJ0aGF0IiwgcmVzdWx0UXVldWUuZ2V0U3RhdHVzQXR0cmlidXRlcygpLmdldCgidGhpcyIpKTsKICAgICB9CiAKICAgICBAVGVzdApAQCAtMzA3LDEyICszMTMsMTQgQEAKICAgICAgICAgcmVzdWx0UXVldWUuYWRkU2lkZUVmZmVjdChUb2tlbnMuVkFMX0FHR1JFR0FURV9UT19CVUxLU0VULCBuZXcgRGVmYXVsdFJlbW90ZVRyYXZlcnNlcjw+KCJiZWxpbmRhIiwgNikpOwogICAgICAgICBhc3NlcnRUaGF0KG8uaXNEb25lKCksIGlzKGZhbHNlKSk7CiAKLSAgICAgICAgcmVzdWx0UXVldWUubWFya0NvbXBsZXRlKCk7CisgICAgICAgIHJlc3VsdFF1ZXVlLm1hcmtDb21wbGV0ZShBVFRSSUJVVEVTKTsKIAogICAgICAgICBhc3NlcnRUaGF0KG8uaXNEb25lKCksIGlzKHRydWUpKTsKICAgICAgICAgZmluYWwgQnVsa1NldDxTdHJpbmc+IGJ1bGtTZXQgPSBvLmdldCgpLmdldCgwKS5nZXQoQnVsa1NldC5jbGFzcyk7CiAgICAgICAgIGFzc2VydEVxdWFscyg0LCBidWxrU2V0LmdldCgiYnJpYW4iKSk7CiAgICAgICAgIGFzc2VydEVxdWFscyg2LCBidWxrU2V0LmdldCgiYmVsaW5kYSIpKTsKKworICAgICAgICBhc3NlcnRFcXVhbHMoInRoYXQiLCByZXN1bHRRdWV1ZS5nZXRTdGF0dXNBdHRyaWJ1dGVzKCkuZ2V0KCJ0aGlzIikpOwogICAgIH0KIAogICAgIEBUZXN0CkBAIC0zMjksMTMgKzMzNywxNSBAQAogICAgICAgICByZXN1bHRRdWV1ZS5hZGRTaWRlRWZmZWN0KFRva2Vucy5WQUxfQUdHUkVHQVRFX1RPX0xJU1QsICJkYXZlIik7CiAgICAgICAgIGFzc2VydFRoYXQoby5pc0RvbmUoKSwgaXMoZmFsc2UpKTsKIAotICAgICAgICByZXN1bHRRdWV1ZS5tYXJrQ29tcGxldGUoKTsKKyAgICAgICAgcmVzdWx0UXVldWUubWFya0NvbXBsZXRlKEFUVFJJQlVURVMpOwogCiAgICAgICAgIGFzc2VydFRoYXQoby5pc0RvbmUoKSwgaXModHJ1ZSkpOwogICAgICAgICBmaW5hbCBMaXN0PFN0cmluZz4gbGlzdCA9IG8uZ2V0KCkuZ2V0KDApLmdldChBcnJheUxpc3QuY2xhc3MpOwogICAgICAgICBhc3NlcnRFcXVhbHMoInN0ZXBoZW4iLCBsaXN0LmdldCgwKSk7CiAgICAgICAgIGFzc2VydEVxdWFscygiZGFuaWVsIiwgbGlzdC5nZXQoMSkpOwogICAgICAgICBhc3NlcnRFcXVhbHMoImRhdmUiLCBsaXN0LmdldCgyKSk7CisKKyAgICAgICAgYXNzZXJ0RXF1YWxzKCJ0aGF0IiwgcmVzdWx0UXVldWUuZ2V0U3RhdHVzQXR0cmlidXRlcygpLmdldCgidGhpcyIpKTsKICAgICB9CiAKICAgICBAVGVzdApAQCAtMzUyLDEzICszNjIsMTUgQEAKICAgICAgICAgcmVzdWx0UXVldWUuYWRkU2lkZUVmZmVjdChUb2tlbnMuVkFMX0FHR1JFR0FURV9UT19TRVQsICJkYXZlIik7CiAgICAgICAgIGFzc2VydFRoYXQoby5pc0RvbmUoKSwgaXMoZmFsc2UpKTsKIAotICAgICAgICByZXN1bHRRdWV1ZS5tYXJrQ29tcGxldGUoKTsKKyAgICAgICAgcmVzdWx0UXVldWUubWFya0NvbXBsZXRlKEFUVFJJQlVURVMpOwogCiAgICAgICAgIGFzc2VydFRoYXQoby5pc0RvbmUoKSwgaXModHJ1ZSkpOwogICAgICAgICBmaW5hbCBTZXQ8U3RyaW5nPiBzZXQgPSBvLmdldCgpLmdldCgwKS5nZXQoSGFzaFNldC5jbGFzcyk7CiAgICAgICAgIGFzc2VydFRoYXQoc2V0LmNvbnRhaW5zKCJzdGVwaGVuIiksIGlzKHRydWUpKTsKICAgICAgICAgYXNzZXJ0VGhhdChzZXQuY29udGFpbnMoImRhbmllbCIpLCBpcyh0cnVlKSk7CiAgICAgICAgIGFzc2VydFRoYXQoc2V0LmNvbnRhaW5zKCJkYXZlIiksIGlzKHRydWUpKTsKKworICAgICAgICBhc3NlcnRFcXVhbHMoInRoYXQiLCByZXN1bHRRdWV1ZS5nZXRTdGF0dXNBdHRyaWJ1dGVzKCkuZ2V0KCJ0aGlzIikpOwogICAgIH0KIAogICAgIEBUZXN0CkBAIC0zNzYsMTMgKzM4OCwxNSBAQAogICAgICAgICAgICAgYXNzZXJ0VGhhdChvLmlzRG9uZSgpLCBpcyhmYWxzZSkpOwogICAgICAgICB9KTsKIAotICAgICAgICByZXN1bHRRdWV1ZS5tYXJrQ29tcGxldGUoKTsKKyAgICAgICAgcmVzdWx0UXVldWUubWFya0NvbXBsZXRlKEFUVFJJQlVURVMpOwogCiAgICAgICAgIGFzc2VydFRoYXQoby5pc0RvbmUoKSwgaXModHJ1ZSkpOwogICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLCBTdHJpbmc+IGxpc3QgPSBvLmdldCgpLmdldCgwKS5nZXQoSGFzaE1hcC5jbGFzcyk7CiAgICAgICAgIGFzc2VydEVxdWFscygic3RlcGhlbiIsIGxpc3QuZ2V0KCJzIikpOwogICAgICAgICBhc3NlcnRFcXVhbHMoImRhbmllbCIsIGxpc3QuZ2V0KCJkIikpOwogICAgICAgICBhc3NlcnRFcXVhbHMoIm1hcmtvIiwgbGlzdC5nZXQoIm0iKSk7CisKKyAgICAgICAgYXNzZXJ0RXF1YWxzKCJ0aGF0IiwgcmVzdWx0UXVldWUuZ2V0U3RhdHVzQXR0cmlidXRlcygpLmdldCgidGhpcyIpKTsKICAgICB9CiAKIApAQCAtMzk4LDEyICs0MTIsMTQgQEAKIAogICAgICAgICByZXN1bHRRdWV1ZS5hZGRTaWRlRWZmZWN0KFRva2Vucy5WQUxfQUdHUkVHQVRFX1RPX05PTkUsIG0pOwogCi0gICAgICAgIHJlc3VsdFF1ZXVlLm1hcmtDb21wbGV0ZSgpOworICAgICAgICByZXN1bHRRdWV1ZS5tYXJrQ29tcGxldGUoQVRUUklCVVRFUyk7CiAKICAgICAgICAgYXNzZXJ0VGhhdChvLmlzRG9uZSgpLCBpcyh0cnVlKSk7CiAgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsIFN0cmluZz4gbGlzdCA9IG8uZ2V0KCkuZ2V0KDApLmdldChIYXNoTWFwLmNsYXNzKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKCJzdGVwaGVuIiwgbGlzdC5nZXQoInMiKSk7CiAgICAgICAgIGFzc2VydEVxdWFscygiZGFuaWVsIiwgbGlzdC5nZXQoImQiKSk7CiAgICAgICAgIGFzc2VydEVxdWFscygibWFya28iLCBsaXN0LmdldCgibSIpKTsKKworICAgICAgICBhc3NlcnRFcXVhbHMoInRoYXQiLCByZXN1bHRRdWV1ZS5nZXRTdGF0dXNBdHRyaWJ1dGVzKCkuZ2V0KCJ0aGlzIikpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tZHJpdmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvUmVzdWx0U2V0VGVzdC5qYXZhIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9SZXN1bHRTZXRUZXN0LmphdmEKaW5kZXggMGNmNGZiNS4uNDRmMTNlNCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kcml2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9SZXN1bHRTZXRUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9SZXN1bHRTZXRUZXN0LmphdmEKQEAgLTIyLDggKzIyLDEwIEBACiBpbXBvcnQgb3JnLmp1bml0LkJlZm9yZTsKIGltcG9ydCBvcmcuanVuaXQuVGVzdDsKIAoraW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwogaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOwogaW1wb3J0IGphdmEudXRpbC5Ob1N1Y2hFbGVtZW50RXhjZXB0aW9uOwogaW1wb3J0IGphdmEudXRpbC5jb25jdXJyZW50LkNvbXBsZXRhYmxlRnV0dXJlOwogaW1wb3J0IGphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0OwpAQCAtNDEsNiArNDMsMTAgQEAKICAqLwogcHVibGljIGNsYXNzIFJlc3VsdFNldFRlc3QgZXh0ZW5kcyBBYnN0cmFjdFJlc3VsdFF1ZXVlVGVzdCB7CiAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBNYXA8U3RyaW5nLE9iamVjdD4gQVRUUklCVVRFUyA9IG5ldyBIYXNoTWFwPFN0cmluZyxPYmplY3Q+KCkge3sKKyAgICAgICAgcHV0KCJ0aGlzIiwgInRoYXQiKTsKKyAgICB9fTsKKwogICAgIHByaXZhdGUgUmVzdWx0U2V0IHJlc3VsdFNldDsKIAogICAgIEBCZWZvcmUKQEAgLTQ5LDYgKzU1LDEzIEBACiAgICAgfQogCiAgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRSZXR1cm5FbXB0eU1hcEZvck5vUmVzcG9uc2VBdHRyaWJ1dGVzKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIENvbXBsZXRhYmxlRnV0dXJlPE1hcDxTdHJpbmcsT2JqZWN0Pj4gYXR0cnMgPSByZXN1bHRTZXQuc3RhdHVzQXR0cmlidXRlcygpOworICAgICAgICByZWFkQ29tcGxldGVkLmNvbXBsZXRlKG51bGwpOworICAgICAgICBhc3NlcnRUaGF0KGF0dHJzLmdldCgpLmlzRW1wdHkoKSwgaXModHJ1ZSkpOworICAgIH0KKworICAgIEBUZXN0CiAgICAgcHVibGljIHZvaWQgc2hvdWxkSGF2ZUFsbEl0ZW1zQXZhaWxhYmxlQXN5bmNocm9ub3VzbHlPblJlYWRDb21wbGV0ZSgpIHsKICAgICAgICAgZmluYWwgQ29tcGxldGFibGVGdXR1cmU8Vm9pZD4gYWxsID0gcmVzdWx0U2V0LmFsbEl0ZW1zQXZhaWxhYmxlQXN5bmMoKTsKICAgICAgICAgYXNzZXJ0VGhhdChhbGwuaXNEb25lKCksIGlzKGZhbHNlKSk7CkBAIC0xMDcsNyArMTIwLDcgQEAKICAgICAgICAgcmVzdWx0UXVldWUuYWRkKG5ldyBSZXN1bHQoInRlc3QzIikpOwogCiAgICAgICAgIGFzc2VydFRoYXQoZnV0dXJlLmlzRG9uZSgpLCBpcyhmYWxzZSkpOwotICAgICAgICByZXN1bHRRdWV1ZS5tYXJrQ29tcGxldGUoKTsKKyAgICAgICAgcmVzdWx0UXVldWUubWFya0NvbXBsZXRlKEFUVFJJQlVURVMpOwogICAgICAgICBhc3NlcnRUaGF0KGZ1dHVyZS5pc0RvbmUoKSwgaXModHJ1ZSkpOwogCiAgICAgICAgIGZpbmFsIExpc3Q8UmVzdWx0PiByZXN1bHRzID0gZnV0dXJlLmdldCgpOwpAQCAtMTE4LDYgKzEzMSw4IEBACiAKICAgICAgICAgYXNzZXJ0VGhhdChyZXN1bHRTZXQuYWxsSXRlbXNBdmFpbGFibGUoKSwgaXModHJ1ZSkpOwogICAgICAgICBhc3NlcnRFcXVhbHMoMCwgcmVzdWx0U2V0LmdldEF2YWlsYWJsZUl0ZW1Db3VudCgpKTsKKworICAgICAgICBhc3NlcnRFcXVhbHMoInRoYXQiLCByZXN1bHRRdWV1ZS5nZXRTdGF0dXNBdHRyaWJ1dGVzKCkuZ2V0KCJ0aGlzIikpOwogICAgIH0KIAogICAgIEBUZXN0CkBAIC0xMjgsNyArMTQzLDcgQEAKICAgICAgICAgcmVzdWx0UXVldWUuYWRkKG5ldyBSZXN1bHQoInRlc3QzIikpOwogCiAgICAgICAgIGFzc2VydFRoYXQoZnV0dXJlLmlzRG9uZSgpLCBpcyhmYWxzZSkpOwotICAgICAgICByZXN1bHRRdWV1ZS5tYXJrQ29tcGxldGUoKTsKKyAgICAgICAgcmVzdWx0UXVldWUubWFya0NvbXBsZXRlKEFUVFJJQlVURVMpOwogCiAgICAgICAgIGZpbmFsIExpc3Q8UmVzdWx0PiByZXN1bHRzID0gZnV0dXJlLmdldCgpOwogICAgICAgICBhc3NlcnRFcXVhbHMoInRlc3QxIiwgcmVzdWx0cy5nZXQoMCkuZ2V0U3RyaW5nKCkpOwpAQCAtMTM5LDYgKzE1NCw4IEBACiAgICAgICAgIGFzc2VydFRoYXQoZnV0dXJlLmlzRG9uZSgpLCBpcyh0cnVlKSk7CiAgICAgICAgIGFzc2VydFRoYXQocmVzdWx0U2V0LmFsbEl0ZW1zQXZhaWxhYmxlKCksIGlzKHRydWUpKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIHJlc3VsdFNldC5nZXRBdmFpbGFibGVJdGVtQ291bnQoKSk7CisKKyAgICAgICAgYXNzZXJ0RXF1YWxzKCJ0aGF0IiwgcmVzdWx0UXVldWUuZ2V0U3RhdHVzQXR0cmlidXRlcygpLmdldCgidGhpcyIpKTsKICAgICB9CiAKICAgICBAVGVzdApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kcml2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9yZW1vdGUvRHJpdmVyUmVtb3RlQ29ubmVjdGlvblRlc3QuamF2YSBiL2dyZW1saW4tZHJpdmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvcmVtb3RlL0RyaXZlclJlbW90ZUNvbm5lY3Rpb25UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODIwYTBkMwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tZHJpdmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvcmVtb3RlL0RyaXZlclJlbW90ZUNvbm5lY3Rpb25UZXN0LmphdmEKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnJlbW90ZTsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLlJlcXVlc3RPcHRpb25zOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLlRva2VuczsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5HcmFwaFRyYXZlcnNhbFNvdXJjZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLmVtcHR5LkVtcHR5R3JhcGg7CitpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CisKK2ltcG9ydCBqYXZhLnV0aWwuVVVJRDsKKworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydEVxdWFsczsKKworLyoqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK3B1YmxpYyBjbGFzcyBEcml2ZXJSZW1vdGVDb25uZWN0aW9uVGVzdCB7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgR3JhcGhUcmF2ZXJzYWxTb3VyY2UgZyA9IEVtcHR5R3JhcGguaW5zdGFuY2UoKS50cmF2ZXJzYWwoKTsKKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkQnVpbGRSZXF1ZXN0T3B0aW9ucygpIHsKKyAgICAgICAgZmluYWwgVVVJRCByZXF1ZXN0SWQgPSBVVUlELmZyb21TdHJpbmcoIjM0YTlmNDVmLTg4NTQtNGQzMy04YjQwLTkyYTgxNzFlZTQ5NSIpOworICAgICAgICBmaW5hbCBSZXF1ZXN0T3B0aW9ucyBvcHRpb25zID0gRHJpdmVyUmVtb3RlQ29ubmVjdGlvbi5nZXRSZXF1ZXN0T3B0aW9ucygKKyAgICAgICAgICAgICAgICBnLndpdGgoIngiKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIHdpdGgoInkiLCAxMDApLgorICAgICAgICAgICAgICAgICAgICAgICAgd2l0aChUb2tlbnMuQVJHU19CQVRDSF9TSVpFLCAxMDAwKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIHdpdGgoVG9rZW5zLlJFUVVFU1RfSUQsIHJlcXVlc3RJZCkuCisgICAgICAgICAgICAgICAgICAgICAgICB3aXRoKFRva2Vucy5BUkdTX1NDUklQVF9FVkFMX1RJTUVPVVQsIDEwMDAwMEwpLgorICAgICAgICAgICAgICAgICAgICAgICAgd2l0aChUb2tlbnMuQVJHU19VU0VSX0FHRU5ULCAidGVzdCIpLgorICAgICAgICAgICAgICAgICAgICAgICAgVigpLmFzQWRtaW4oKS5nZXRCeXRlY29kZSgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKHJlcXVlc3RJZCwgb3B0aW9ucy5nZXRPdmVycmlkZVJlcXVlc3RJZCgpLmdldCgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDEwMDAsIG9wdGlvbnMuZ2V0QmF0Y2hTaXplKCkuZ2V0KCkuaW50VmFsdWUoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygxMDAwMDBMLCBvcHRpb25zLmdldFRpbWVvdXQoKS5nZXQoKS5sb25nVmFsdWUoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygidGVzdCIsIG9wdGlvbnMuZ2V0VXNlckFnZW50KCkuZ2V0KCkpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tZHJpdmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL0dyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwVGVzdC5qYXZhIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYyZDBUZXN0LmphdmEKaW5kZXggMGJkYzA4ZC4uZGMyMzE3OSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kcml2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYyZDBUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYyZDBUZXN0LmphdmEKQEAgLTE4LDYgKzE4LDExIEBACiAgKi8KIHBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyOwogCitpbXBvcnQgaW8ubmV0dHkuYnVmZmVyLkJ5dGVCdWY7CitpbXBvcnQgaW8ubmV0dHkuYnVmZmVyLkJ5dGVCdWZBbGxvY2F0b3I7CitpbXBvcnQgaW8ubmV0dHkuYnVmZmVyLlVucG9vbGVkQnl0ZUJ1ZkFsbG9jYXRvcjsKK2ltcG9ydCBvcmcuYXBhY2hlLmxvZzRqLkxldmVsOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLk1lc3NhZ2VTZXJpYWxpemVyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLm1lc3NhZ2UuUmVxdWVzdE1lc3NhZ2U7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIubWVzc2FnZS5SZXNwb25zZU1lc3NhZ2U7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIubWVzc2FnZS5SZXNwb25zZVN0YXR1c0NvZGU7CkBAIC0zNSwxMSArNDAsMTMgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncmFwaHNvbi5HcmFwaFNPTlRva2VuczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncmFwaHNvbi5HcmFwaFNPTlZlcnNpb247CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3JhcGhzb24uR3JhcGhTT05Xcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3JhcGhzb24uR3JhcGhTT05YTW9kdWxlVjJkMDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnN0cnVjdHVyZS5UaW5rZXJGYWN0b3J5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguc3RydWN0dXJlLlRpbmtlckdyYXBoOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udXRpbC5pdGVyYXRvci5JdGVyYXRvclV0aWxzOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLnNoYWRlZC5qYWNrc29uLmNvcmUuSnNvbkdlbmVyYXRpb25FeGNlcHRpb247CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3Auc2hhZGVkLmphY2tzb24uY29yZS5Kc29uR2VuZXJhdG9yOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLnNoYWRlZC5qYWNrc29uLmRhdGFiaW5kLkpzb25NYXBwaW5nRXhjZXB0aW9uOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLnNoYWRlZC5qYWNrc29uLmRhdGFiaW5kLkpzb25Ob2RlOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLnNoYWRlZC5qYWNrc29uLmRhdGFiaW5kLk9iamVjdE1hcHBlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5zaGFkZWQuamFja3Nvbi5kYXRhYmluZC5TZXJpYWxpemVyUHJvdmlkZXI7CkBAIC02NCw2ICs3MSw3IEBACiBpbXBvcnQgc3RhdGljIG9yZy5oYW1jcmVzdC5jb3JlLklzLmlzOwogaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydEVxdWFsczsKIGltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnROb3ROdWxsOworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydFRydWU7CiBpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuZmFpbDsKIAogLyoqCkBAIC03Miw2ICs4MCw3IEBACiAgKgogICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQogICovCitAU3VwcHJlc3NXYXJuaW5ncygidW5jaGVja2VkIikKIHB1YmxpYyBjbGFzcyBHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjJkMFRlc3QgewogCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjJkMCBTRVJJQUxJWkVSID0gbmV3IEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwKCk7CkBAIC03OSw2ICs4OCwxMCBAQAogICAgICAgICAgICAgLm92ZXJyaWRlUmVxdWVzdElkKFVVSUQuZnJvbVN0cmluZygiMkQ2MjE2MUItOTU0NC00RjM5LUFGNDQtNjJFQzQ5RjlBNTk1IikpLmNyZWF0ZSgpOwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIE9iamVjdE1hcHBlciBtYXBwZXIgPSBuZXcgT2JqZWN0TWFwcGVyKCk7CiAKKyAgICBwcml2YXRlIGZpbmFsIFVVSUQgcmVxdWVzdElkID0gVVVJRC5mcm9tU3RyaW5nKCI2NDU3MjcyQS00MDE4LTQ1MzgtQjlBRS0wOERENUREQzBBQTEiKTsKKyAgICBwcml2YXRlIGZpbmFsIFJlc3BvbnNlTWVzc2FnZS5CdWlsZGVyIHJlc3BvbnNlTWVzc2FnZUJ1aWxkZXIgPSBSZXNwb25zZU1lc3NhZ2UuYnVpbGQocmVxdWVzdElkKTsKKyAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBCeXRlQnVmQWxsb2NhdG9yIGFsbG9jYXRvciA9IFVucG9vbGVkQnl0ZUJ1ZkFsbG9jYXRvci5ERUZBVUxUOworCiAgICAgQFRlc3QKICAgICBwdWJsaWMgdm9pZCBzaG91bGRDb25maWd1cmVJb1JlZ2lzdHJ5KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CiAgICAgICAgIGZpbmFsIEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMWQwIHNlcmlhbGl6ZXIgPSBuZXcgR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYxZDAoKTsKQEAgLTM2Myw3ICszNzYsNiBAQAogCiAgICAgQFRlc3QKICAgICBwdWJsaWMgdm9pZCBzaG91bGREZXNlcmlhbGl6ZVJlcXVlc3ROaWNlbHlXaXRoQXJncygpIHRocm93cyBFeGNlcHRpb24gewotICAgICAgICBmaW5hbCBHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjJkMCBzZXJpYWxpemVyID0gbmV3IEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwKCk7CiAgICAgICAgIGZpbmFsIFVVSUQgcmVxdWVzdCA9IFVVSUQuZnJvbVN0cmluZygiMDExQ0ZFRTktRjY0MC00ODQ0LUFDOTMtMDM0NDQ4QUMwRTgwIik7CiAgICAgICAgIGZpbmFsIFJlcXVlc3RNZXNzYWdlIG0gPSBTRVJJQUxJWkVSLmRlc2VyaWFsaXplUmVxdWVzdChTdHJpbmcuZm9ybWF0KCJ7XCJyZXF1ZXN0SWRcIjpcIiVzXCIsXCJvcFwiOlwiZXZhbFwiLFwiYXJnc1wiOntcInhcIjpcInlcIn19IiwgcmVxdWVzdCkpOwogICAgICAgICBhc3NlcnRFcXVhbHMocmVxdWVzdCwgbS5nZXRSZXF1ZXN0SWQoKSk7CkBAIC01NDAsNiArNTUyLDQ3IEBACiAgICAgICAgIGFzc2VydEVxdWFscyhyZXNwb25zZU1lc3NhZ2UuZ2V0U3RhdHVzKCkuZ2V0TWVzc2FnZSgpLCByZXNwb25zZU1lc3NhZ2VSZWFkLmdldFN0YXR1cygpLmdldE1lc3NhZ2UoKSk7CiAgICAgfQogCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRSZWdpc3RlckdyZW1saW5TZXJ2ZXJNb2R1bGVBdXRvbWF0aWNhbGx5V2l0aE1hcHBlcigpIHRocm93cyBTZXJpYWxpemF0aW9uRXhjZXB0aW9uIHsKKyAgICAgICAgR3JhcGhTT05NYXBwZXIuQnVpbGRlciBidWlsZGVyID0gR3JhcGhTT05NYXBwZXIuYnVpbGQoKS5hZGRDdXN0b21Nb2R1bGUoR3JhcGhTT05YTW9kdWxlVjJkMC5idWlsZCgpLmNyZWF0ZShmYWxzZSkpOworICAgICAgICBHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjJkMCBncmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjJkMCA9IG5ldyBHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjJkMChidWlsZGVyKTsKKworICAgICAgICBSZXNwb25zZU1lc3NhZ2Ugcm0gPSBjb252ZXJ0KCJoZWxsbyIsIGdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMmQwKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKHJtLmdldFJlcXVlc3RJZCgpLCByZXF1ZXN0SWQpOworICAgICAgICBhc3NlcnRFcXVhbHMocm0uZ2V0UmVzdWx0KCkuZ2V0RGF0YSgpLCAiaGVsbG8iKTsKKyAgICB9CisKKworICAgIEBUZXN0CisgICAgQFN1cHByZXNzV2FybmluZ3MoImRlcHJlY2F0aW9uIikKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRGYWlsT25NZXNzYWdlU2VyaWFsaXplcldpdGhNYXBwZXJJZk5vR3JlbWxpblNlcnZlck1vZHVsZSgpIHsKKyAgICAgICAgb3JnLmFwYWNoZS5sb2c0ai5Mb2dnZXIgbG9nZ2VyID0gb3JnLmFwYWNoZS5sb2c0ai5Mb2dnZXIuZ2V0TG9nZ2VyKEFic3RyYWN0R3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYyZDAuY2xhc3MpOworICAgICAgICBMZXZlbCBwcmV2aW91c0xldmVsID0gbG9nZ2VyLmdldExldmVsKCk7CisKKyAgICAgICAgLy8gRGlzYWJsZSB0ZW1wb3JhcmlseSBsb2dnaW5nIGZvciB0aGlzIHRlc3QKKyAgICAgICAgbG9nZ2VyLnNldExldmVsKExldmVsLk9GRik7CisKKyAgICAgICAgR3JhcGhTT05NYXBwZXIuQnVpbGRlciBidWlsZGVyID0gR3JhcGhTT05NYXBwZXIuYnVpbGQoKS5hZGRDdXN0b21Nb2R1bGUoR3JhcGhTT05YTW9kdWxlVjJkMC5idWlsZCgpLmNyZWF0ZShmYWxzZSkpOworICAgICAgICBHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjJkMCBncmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjJkMCA9IG5ldyBHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjJkMChidWlsZGVyLmNyZWF0ZSgpKTsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgY29udmVydCgiaGVsbG8iLCBncmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjJkMCk7CisgICAgICAgICAgICBmYWlsKCJTZXJpYWxpemF0aW9uIHNob3VsZCBoYXZlIGZhaWxlZCBzaW5jZSBubyBHcmVtbGluU2VydmVyTW9kdWxlIHJlZ2lzdGVyZWQuIik7CisgICAgICAgIH0gY2F0Y2ggKFNlcmlhbGl6YXRpb25FeGNlcHRpb24gZSkgeworICAgICAgICAgICAgYXNzZXJ0VHJ1ZShlLmdldE1lc3NhZ2UoKS5jb250YWlucygiQ291bGQgbm90IGZpbmQgYSB0eXBlIGlkZW50aWZpZXIgZm9yIHRoZSBjbGFzcyIpKTsKKyAgICAgICAgICAgIGFzc2VydFRydWUoZS5nZXRDYXVzZSgpIGluc3RhbmNlb2YgSnNvbk1hcHBpbmdFeGNlcHRpb24pOworICAgICAgICAgICAgYXNzZXJ0VHJ1ZShlLmdldENhdXNlKCkuZ2V0Q2F1c2UoKSBpbnN0YW5jZW9mIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbik7CisgICAgICAgIH0KKworICAgICAgICAvLyBQdXQgbG9nZ2VyIGxldmVsIGJhY2sgdG8gaXRzIG9yaWdpbmFsIHZhbHVlCisgICAgICAgIGxvZ2dlci5zZXRMZXZlbChwcmV2aW91c0xldmVsKTsKKyAgICB9CisKKyAgICBwcml2YXRlIFJlc3BvbnNlTWVzc2FnZSBjb252ZXJ0KGZpbmFsIE9iamVjdCB0b1NlcmlhbGl6ZSwgTWVzc2FnZVNlcmlhbGl6ZXIgc2VyaWFsaXplcikgdGhyb3dzIFNlcmlhbGl6YXRpb25FeGNlcHRpb24geworICAgICAgICBmaW5hbCBCeXRlQnVmIGJiID0gc2VyaWFsaXplci5zZXJpYWxpemVSZXNwb25zZUFzQmluYXJ5KHJlc3BvbnNlTWVzc2FnZUJ1aWxkZXIucmVzdWx0KHRvU2VyaWFsaXplKS5jcmVhdGUoKSwgYWxsb2NhdG9yKTsKKyAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZXIuZGVzZXJpYWxpemVSZXNwb25zZShiYik7CisgICAgfQorCiAgICAgcHJpdmF0ZSBjbGFzcyBGdW5PYmplY3QgewogICAgICAgICBwcml2YXRlIFN0cmluZyB2YWw7CiAKZGlmZiAtLWdpdCBhL2dyZW1saW4tZHJpdmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL0dyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWM2QwVGVzdC5qYXZhIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYzZDBUZXN0LmphdmEKaW5kZXggODhkZmNmMC4uMDBjNWIyZSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1kcml2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYzZDBUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYzZDBUZXN0LmphdmEKQEAgLTIxLDYgKzIxLDggQEAKIGltcG9ydCBpby5uZXR0eS5idWZmZXIuQnl0ZUJ1ZjsKIGltcG9ydCBpby5uZXR0eS5idWZmZXIuQnl0ZUJ1ZkFsbG9jYXRvcjsKIGltcG9ydCBpby5uZXR0eS5idWZmZXIuVW5wb29sZWRCeXRlQnVmQWxsb2NhdG9yOworaW1wb3J0IG9yZy5hcGFjaGUubG9nNGouTGV2ZWw7CitpbXBvcnQgb3JnLmFwYWNoZS5sb2c0ai5Mb2dnZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuTWVzc2FnZVNlcmlhbGl6ZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIubWVzc2FnZS5SZXF1ZXN0TWVzc2FnZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5tZXNzYWdlLlJlc3BvbnNlTWVzc2FnZTsKQEAgLTMyLDkgKzM0LDEyIEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuUHJvcGVydHk7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleFByb3BlcnR5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyYXBoc29uLkdyYXBoU09OTWFwcGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyYXBoc29uLkdyYXBoU09OWE1vZHVsZVYzZDA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi50aW5rZXJncmFwaC5zdHJ1Y3R1cmUuVGlua2VyRmFjdG9yeTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnN0cnVjdHVyZS5UaW5rZXJHcmFwaDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnV0aWwuaXRlcmF0b3IuSXRlcmF0b3JVdGlsczsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5zaGFkZWQuamFja3Nvbi5kYXRhYmluZC5Kc29uTWFwcGluZ0V4Y2VwdGlvbjsKIGltcG9ydCBvcmcuanVuaXQuVGVzdDsKIAogaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CkBAIC00OCw2ICs1Myw3IEBACiBpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOwogaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydE5vdE51bGw7CiBpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0TnVsbDsKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRUcnVlOwogaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmZhaWw7CiAKIC8qKgpAQCAtNTUsNiArNjEsNyBAQAogICoKICAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKICAqLworQFN1cHByZXNzV2FybmluZ3MoInVuY2hlY2tlZCIpCiBwdWJsaWMgY2xhc3MgR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYzZDBUZXN0IHsKIAogICAgIHByaXZhdGUgZmluYWwgVVVJRCByZXF1ZXN0SWQgPSBVVUlELmZyb21TdHJpbmcoIjY0NTcyNzJBLTQwMTgtNDUzOC1COUFFLTA4REQ1RERDMEFBMSIpOwpAQCAtMzM3LDE0ICszNDQsNTIgQEAKICAgICAgICAgYXNzZXJ0RXF1YWxzKCJieXRlY29kZSIsIG0uZ2V0T3AoKSk7CiAgICAgICAgIGFzc2VydE5vdE51bGwobS5nZXRBcmdzKCkpOwogICAgIH0KLSAgICAKKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkUmVnaXN0ZXJHcmVtbGluU2VydmVyTW9kdWxlQXV0b21hdGljYWxseVdpdGhNYXBwZXIoKSB0aHJvd3MgU2VyaWFsaXphdGlvbkV4Y2VwdGlvbiB7CisgICAgICAgIEdyYXBoU09OTWFwcGVyLkJ1aWxkZXIgYnVpbGRlciA9IEdyYXBoU09OTWFwcGVyLmJ1aWxkKCkuYWRkQ3VzdG9tTW9kdWxlKEdyYXBoU09OWE1vZHVsZVYzZDAuYnVpbGQoKS5jcmVhdGUoZmFsc2UpKTsKKyAgICAgICAgR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYzZDAgZ3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYzZDAgPSBuZXcgR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYzZDAoYnVpbGRlcik7CisKKyAgICAgICAgUmVzcG9uc2VNZXNzYWdlIHJtID0gY29udmVydCgiaGVsbG8iLCBncmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjNkMCk7CisgICAgICAgIGFzc2VydEVxdWFscyhybS5nZXRSZXF1ZXN0SWQoKSwgcmVxdWVzdElkKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKHJtLmdldFJlc3VsdCgpLmdldERhdGEoKSwgImhlbGxvIik7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRGYWlsT25NZXNzYWdlU2VyaWFsaXplcldpdGhNYXBwZXJJZk5vR3JlbWxpblNlcnZlck1vZHVsZSgpIHsKKyAgICAgICAgTG9nZ2VyIGxvZ2dlciA9IExvZ2dlci5nZXRMb2dnZXIoQWJzdHJhY3RHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjJkMC5jbGFzcyk7CisgICAgICAgIExldmVsIHByZXZpb3VzTGV2ZWwgPSBsb2dnZXIuZ2V0TGV2ZWwoKTsKKworICAgICAgICAvLyBEaXNhYmxlIHRlbXBvcmFyaWx5IGxvZ2dpbmcgZm9yIHRoaXMgdGVzdAorICAgICAgICBsb2dnZXIuc2V0TGV2ZWwoTGV2ZWwuT0ZGKTsKKworICAgICAgICBHcmFwaFNPTk1hcHBlci5CdWlsZGVyIGJ1aWxkZXIgPSBHcmFwaFNPTk1hcHBlci5idWlsZCgpLmFkZEN1c3RvbU1vZHVsZShHcmFwaFNPTlhNb2R1bGVWM2QwLmJ1aWxkKCkuY3JlYXRlKGZhbHNlKSk7CisgICAgICAgIEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWM2QwIGdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWM2QwID0gbmV3IEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWM2QwKGJ1aWxkZXIuY3JlYXRlKCkpOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjb252ZXJ0KCJoZWxsbyIsIGdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWM2QwKTsKKyAgICAgICAgICAgIGZhaWwoIlNlcmlhbGl6YXRpb24gc2hvdWxkIGhhdmUgZmFpbGVkIHNpbmNlIG5vIEdyZW1saW5TZXJ2ZXJNb2R1bGUgcmVnaXN0ZXJlZC4iKTsKKyAgICAgICAgfSBjYXRjaCAoU2VyaWFsaXphdGlvbkV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBhc3NlcnRUcnVlKGUuZ2V0TWVzc2FnZSgpLmNvbnRhaW5zKCJDb3VsZCBub3QgZmluZCBhIHR5cGUgaWRlbnRpZmllciBmb3IgdGhlIGNsYXNzIikpOworICAgICAgICAgICAgYXNzZXJ0VHJ1ZShlLmdldENhdXNlKCkgaW5zdGFuY2VvZiBKc29uTWFwcGluZ0V4Y2VwdGlvbik7CisgICAgICAgICAgICBhc3NlcnRUcnVlKGUuZ2V0Q2F1c2UoKS5nZXRDYXVzZSgpIGluc3RhbmNlb2YgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFB1dCBsb2dnZXIgbGV2ZWwgYmFjayB0byBpdHMgb3JpZ2luYWwgdmFsdWUKKyAgICAgICAgbG9nZ2VyLnNldExldmVsKHByZXZpb3VzTGV2ZWwpOworICAgIH0KKwogICAgIHByaXZhdGUgdm9pZCBhc3NlcnRDb21tb24oZmluYWwgUmVzcG9uc2VNZXNzYWdlIHJlc3BvbnNlKSB7CiAgICAgICAgIGFzc2VydEVxdWFscyhyZXF1ZXN0SWQsIHJlc3BvbnNlLmdldFJlcXVlc3RJZCgpKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKFJlc3BvbnNlU3RhdHVzQ29kZS5TVUNDRVNTLCByZXNwb25zZS5nZXRTdGF0dXMoKS5nZXRDb2RlKCkpOwogICAgIH0KIAotICAgIHByaXZhdGUgUmVzcG9uc2VNZXNzYWdlIGNvbnZlcnQoZmluYWwgT2JqZWN0IHRvU2VyaWFsaXplKSB0aHJvd3MgU2VyaWFsaXphdGlvbkV4Y2VwdGlvbiB7CisgICAgcHJpdmF0ZSBSZXNwb25zZU1lc3NhZ2UgY29udmVydChmaW5hbCBPYmplY3QgdG9TZXJpYWxpemUsIE1lc3NhZ2VTZXJpYWxpemVyIHNlcmlhbGl6ZXIpIHRocm93cyBTZXJpYWxpemF0aW9uRXhjZXB0aW9uIHsKICAgICAgICAgZmluYWwgQnl0ZUJ1ZiBiYiA9IHNlcmlhbGl6ZXIuc2VyaWFsaXplUmVzcG9uc2VBc0JpbmFyeShyZXNwb25zZU1lc3NhZ2VCdWlsZGVyLnJlc3VsdCh0b1NlcmlhbGl6ZSkuY3JlYXRlKCksIGFsbG9jYXRvcik7CiAgICAgICAgIHJldHVybiBzZXJpYWxpemVyLmRlc2VyaWFsaXplUmVzcG9uc2UoYmIpOwogICAgIH0KKworICAgIHByaXZhdGUgUmVzcG9uc2VNZXNzYWdlIGNvbnZlcnQoZmluYWwgT2JqZWN0IHRvU2VyaWFsaXplKSB0aHJvd3MgU2VyaWFsaXphdGlvbkV4Y2VwdGlvbiB7CisgICAgICAgIHJldHVybiBjb252ZXJ0KHRvU2VyaWFsaXplLCB0aGlzLnNlcmlhbGl6ZXIpOworICAgIH0KIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tZHJpdmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL05ldHR5QnVmZmVyRmFjdG9yeVRlc3QuamF2YSBiL2dyZW1saW4tZHJpdmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL05ldHR5QnVmZmVyRmFjdG9yeVRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjNiMjg5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvTmV0dHlCdWZmZXJGYWN0b3J5VGVzdC5qYXZhCkBAIC0wLDAgKzEsMzg1IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXI7CisKK2ltcG9ydCBpby5uZXR0eS5idWZmZXIuQnl0ZUJ1ZjsKK2ltcG9ydCBpby5uZXR0eS5idWZmZXIuQnl0ZUJ1ZkFsbG9jYXRvcjsKK2ltcG9ydCBpby5uZXR0eS5idWZmZXIuVW5wb29sZWRCeXRlQnVmQWxsb2NhdG9yOworaW1wb3J0IGlvLm5ldHR5LnV0aWwuUmVmZXJlbmNlQ291bnRlZDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5CdWZmZXI7CitpbXBvcnQgb3JnLmp1bml0LkFmdGVyQ2xhc3M7CitpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uT3V0cHV0U3RyZWFtOworaW1wb3J0IGphdmEubmlvLkJ5dGVCdWZmZXI7CitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydEVxdWFsczsKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnROb3RTYW1lOworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydFNhbWU7CitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0VHJ1ZTsKKworcHVibGljIGNsYXNzIE5ldHR5QnVmZmVyRmFjdG9yeVRlc3QgeworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgTmV0dHlCdWZmZXJGYWN0b3J5IGZhY3RvcnkgPSBuZXcgTmV0dHlCdWZmZXJGYWN0b3J5KCk7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgQnl0ZUJ1ZkFsbG9jYXRvciBhbGxvY2F0b3IgPSBuZXcgVW5wb29sZWRCeXRlQnVmQWxsb2NhdG9yKGZhbHNlKTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMaXN0PEJ5dGVCdWY+IHJhd0luc3RhbmNlcyA9IG5ldyBBcnJheUxpc3Q8PigpOworCisgICAgQEFmdGVyQ2xhc3MKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgdGVhckRvd24oKSB7CisgICAgICAgIHJhd0luc3RhbmNlcy5mb3JFYWNoKFJlZmVyZW5jZUNvdW50ZWQ6OnJlbGVhc2UpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIEJ5dGVCdWYgZ2V0UmF3KCkgeworICAgICAgICBmaW5hbCBCeXRlQnVmIHJhdyA9IGFsbG9jYXRvci5idWZmZXIoMjU2KTsKKyAgICAgICAgcmF3SW5zdGFuY2VzLmFkZChyYXcpOworICAgICAgICByZXR1cm4gcmF3OworICAgIH0KKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkUmV0dXJuQVdyYXBwZXIoKSB7CisgICAgICAgIGZpbmFsIEJ5dGVCdWYgcmF3ID0gZ2V0UmF3KCk7CisgICAgICAgIGZpbmFsIEJ1ZmZlciBidWZmZXIgPSBmYWN0b3J5LmNyZWF0ZShyYXcpOworICAgICAgICBhc3NlcnRFcXVhbHMocmF3LnJlZkNudCgpLCBidWZmZXIucmVmZXJlbmNlQ291bnQoKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRBZHZhbmNlV3JpdGVyQW5kUmVhZGVySW5kZXgoKSB7CisgICAgICAgIGZpbmFsIEJ5dGVCdWYgcmF3ID0gZ2V0UmF3KCk7CisgICAgICAgIGZpbmFsIEJ1ZmZlciBidWZmZXIgPSBmYWN0b3J5LmNyZWF0ZShyYXcpOworCisgICAgICAgIGZpbmFsIGludCBpbnRWYWx1ZSA9IDEwMDsKKyAgICAgICAgZmluYWwgbG9uZyBsb25nVmFsdWUgPSAyMDE5TDsKKyAgICAgICAgZmluYWwgZmxvYXQgZmxvYXRWYWx1ZSA9IDEwLjlGOworCisgICAgICAgIGFzc2VydEVxdWFscygwLCBidWZmZXIud3JpdGVySW5kZXgoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygwLCBidWZmZXIucmVhZGVySW5kZXgoKSk7CisKKyAgICAgICAgYnVmZmVyLndyaXRlQm9vbGVhbih0cnVlKTsKKyAgICAgICAgYnVmZmVyLndyaXRlSW50KGludFZhbHVlKTsKKyAgICAgICAgYnVmZmVyLndyaXRlTG9uZyhsb25nVmFsdWUpOworICAgICAgICBidWZmZXIud3JpdGVGbG9hdChmbG9hdFZhbHVlKTsKKworICAgICAgICBhc3NlcnRFcXVhbHMoMTcsIGJ1ZmZlci53cml0ZXJJbmRleCgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIGJ1ZmZlci5yZWFkZXJJbmRleCgpKTsKKworICAgICAgICBhc3NlcnRUcnVlKGJ1ZmZlci5yZWFkQm9vbGVhbigpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKGludFZhbHVlLCBidWZmZXIucmVhZEludCgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKGxvbmdWYWx1ZSwgYnVmZmVyLnJlYWRMb25nKCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoZmxvYXRWYWx1ZSwgYnVmZmVyLnJlYWRGbG9hdCgpLCAwZik7CisKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDE3LCBidWZmZXIud3JpdGVySW5kZXgoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygxNywgYnVmZmVyLnJlYWRlckluZGV4KCkpOworICAgIH0KKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgcmVhZFJhd1Nob3VsZEFkdmFuY2VSZWFkZXJJbmRleEFuZFJlbGVhc2VJdCgpIHsKKyAgICAgICAgZmluYWwgaW50IGludFZhbHVlID0gNTsKKyAgICAgICAgZmluYWwgRmFrZUJ1ZmZlciBmYWtlQnVmZmVyID0gbmV3IEZha2VCdWZmZXIoKTsKKyAgICAgICAgZmFrZUJ1ZmZlci53cml0ZUludChpbnRWYWx1ZSk7CisgICAgICAgIGFzc2VydEVxdWFscyg0LCBmYWtlQnVmZmVyLndyaXRlckluZGV4KCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoMCwgZmFrZUJ1ZmZlci5yZWFkZXJJbmRleCgpKTsKKyAgICAgICAgZmluYWwgQnl0ZUJ1ZltdIGNhcHR1cmVkID0gbmV3IEJ5dGVCdWZbMV07CisKKyAgICAgICAgTmV0dHlCdWZmZXJGYWN0b3J5LnJlYWRSYXcoZmFrZUJ1ZmZlciwgYnl0ZUJ1ZiAtPiB7CisgICAgICAgICAgICBhc3NlcnRFcXVhbHMoaW50VmFsdWUsIGJ5dGVCdWYucmVhZEludCgpKTsKKyAgICAgICAgICAgIGFzc2VydE5vdFNhbWUoYnl0ZUJ1ZiwgZmFrZUJ1ZmZlci5nZXRVbmRlcmx5aW5nUmF3KCkpOworICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIGJ5dGVCdWYucmVmQ250KCkpOworICAgICAgICAgICAgY2FwdHVyZWRbMF0gPSBieXRlQnVmOworICAgICAgICB9KTsKKworICAgICAgICBhc3NlcnRFcXVhbHMoNCwgZmFrZUJ1ZmZlci53cml0ZXJJbmRleCgpKTsKKworICAgICAgICAvLyBUaGUgcmVhZGVyIGluZGV4IGFkdmFuY2VkCisgICAgICAgIGFzc2VydEVxdWFscyg0LCBmYWtlQnVmZmVyLnJlYWRlckluZGV4KCkpOworCisgICAgICAgIC8vIFNob3VsZCBiZSByZWxlYXNlZCBhZnRlcndhcmRzCisgICAgICAgIGFzc2VydEVxdWFscygwLCBjYXB0dXJlZFswXS5yZWZDbnQoKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCB3cml0ZVJhd1Nob3VsZEFkdmFuY2VXcml0ZXJJbmRleEFuZFJlbGVhc2VJdCgpIHsKKyAgICAgICAgZmluYWwgaW50IGludFZhbHVlMSA9IDMxNDsKKyAgICAgICAgZmluYWwgaW50IGludFZhbHVlMiA9IDMxNDsKKyAgICAgICAgZmluYWwgRmFrZUJ1ZmZlciBmYWtlQnVmZmVyID0gbmV3IEZha2VCdWZmZXIoKTsKKworICAgICAgICBmYWtlQnVmZmVyLndyaXRlSW50KGludFZhbHVlMSk7CisgICAgICAgIGFzc2VydEVxdWFscyg0LCBmYWtlQnVmZmVyLndyaXRlckluZGV4KCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoMCwgZmFrZUJ1ZmZlci5yZWFkZXJJbmRleCgpKTsKKyAgICAgICAgZmluYWwgQnl0ZUJ1ZltdIGNhcHR1cmVkID0gbmV3IEJ5dGVCdWZbMV07CisKKyAgICAgICAgTmV0dHlCdWZmZXJGYWN0b3J5LndyaXRlUmF3KGZha2VCdWZmZXIsIGJ5dGVCdWYgLT4geworICAgICAgICAgICAgYnl0ZUJ1Zi53cml0ZUludChpbnRWYWx1ZTIpOworICAgICAgICAgICAgYXNzZXJ0Tm90U2FtZShieXRlQnVmLCBmYWtlQnVmZmVyLmdldFVuZGVybHlpbmdSYXcoKSk7CisgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMSwgYnl0ZUJ1Zi5yZWZDbnQoKSk7CisgICAgICAgICAgICBjYXB0dXJlZFswXSA9IGJ5dGVCdWY7CisgICAgICAgIH0pOworCisgICAgICAgIC8vIFRoZSB3cml0ZXIgaW5kZXggYWR2YW5jZWQKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDgsIGZha2VCdWZmZXIud3JpdGVySW5kZXgoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygwLCBmYWtlQnVmZmVyLnJlYWRlckluZGV4KCkpOworCisgICAgICAgIC8vIFNob3VsZCBoYXZlIHBhaW50ZWQgdGhlIHVuZGVybHlpbmcgYnl0ZXMKKyAgICAgICAgYXNzZXJ0RXF1YWxzKGludFZhbHVlMSwgZmFrZUJ1ZmZlci5yZWFkSW50KCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoaW50VmFsdWUyLCBmYWtlQnVmZmVyLnJlYWRJbnQoKSk7CisKKyAgICAgICAgLy8gU2hvdWxkIGJlIHJlbGVhc2VkIGFmdGVyd2FyZHMKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIGNhcHR1cmVkWzBdLnJlZkNudCgpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHJlYWRSYXdTaG91bGRVc2VUaGVTYW1lQnVmZmVyV2hlbk5ldHR5QnVmZmVyKCkgeworICAgICAgICBmaW5hbCBOZXR0eUJ1ZmZlciB3cmFwcGVyQnVmZmVyID0gbmV3IE5ldHR5QnVmZmVyKGFsbG9jYXRvci5idWZmZXIoKSk7CisKKyAgICAgICAgTmV0dHlCdWZmZXJGYWN0b3J5LnJlYWRSYXcod3JhcHBlckJ1ZmZlciwgYnl0ZUJ1ZiAtPiB7CisgICAgICAgICAgICBhc3NlcnRTYW1lKGJ5dGVCdWYsIHdyYXBwZXJCdWZmZXIuZ2V0VW5kZXJseWluZ0J1ZmZlcigpKTsKKyAgICAgICAgICAgIGFzc2VydEVxdWFscygxLCBieXRlQnVmLnJlZkNudCgpKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgLy8gSXQgc2hvdWxkbid0IGhhdmUgcmVsZWFzZWQgaXQKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIHdyYXBwZXJCdWZmZXIucmVmZXJlbmNlQ291bnQoKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCB3cml0ZVJhd1Nob3VsZFVzZVRoZVNhbWVCdWZmZXJXaGVuTmV0dHlCdWZmZXIoKSB7CisgICAgICAgIGZpbmFsIE5ldHR5QnVmZmVyIHdyYXBwZXJCdWZmZXIgPSBuZXcgTmV0dHlCdWZmZXIoYWxsb2NhdG9yLmJ1ZmZlcigpKTsKKworICAgICAgICBOZXR0eUJ1ZmZlckZhY3Rvcnkud3JpdGVSYXcod3JhcHBlckJ1ZmZlciwgYnl0ZUJ1ZiAtPiB7CisgICAgICAgICAgICBhc3NlcnRTYW1lKGJ5dGVCdWYsIHdyYXBwZXJCdWZmZXIuZ2V0VW5kZXJseWluZ0J1ZmZlcigpKTsKKyAgICAgICAgICAgIGFzc2VydEVxdWFscygxLCBieXRlQnVmLnJlZkNudCgpKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgLy8gSXQgc2hvdWxkbid0IGhhdmUgcmVsZWFzZWQgaXQKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIHdyYXBwZXJCdWZmZXIucmVmZXJlbmNlQ291bnQoKSk7CisgICAgfQorCisgICAgLyoqIEFuIGluY29tcGxldGUgaW1wbGVtZW50YXRpb24gdGhhdCBhbGxvd3MgdGVzdGluZyAqLworICAgIGNsYXNzIEZha2VCdWZmZXIgaW1wbGVtZW50cyBCdWZmZXIgeworICAgICAgICBwcml2YXRlIGZpbmFsIEJ5dGVCdWYgYnVmZmVyID0gZ2V0UmF3KCk7CisKKyAgICAgICAgRmFrZUJ1ZmZlcigpIHsKKworICAgICAgICB9CisKKyAgICAgICAgQnl0ZUJ1ZiBnZXRVbmRlcmx5aW5nUmF3KCkgeworICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlcjsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgaW50IHJlYWRhYmxlQnl0ZXMoKSB7CisgICAgICAgICAgICByZXR1cm4gYnVmZmVyLnJlYWRhYmxlQnl0ZXMoKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgaW50IHJlYWRlckluZGV4KCkgeworICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlci5yZWFkZXJJbmRleCgpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBCdWZmZXIgcmVhZGVySW5kZXgoaW50IHJlYWRlckluZGV4KSB7CisgICAgICAgICAgICBidWZmZXIucmVhZGVySW5kZXgocmVhZGVySW5kZXgpOworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIGludCB3cml0ZXJJbmRleCgpIHsKKyAgICAgICAgICAgIHJldHVybiBidWZmZXIud3JpdGVySW5kZXgoKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgQnVmZmVyIHdyaXRlckluZGV4KGludCB3cml0ZXJJbmRleCkgeworICAgICAgICAgICAgYnVmZmVyLndyaXRlckluZGV4KHdyaXRlckluZGV4KTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBCdWZmZXIgbWFya1dyaXRlckluZGV4KCkgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIEJ1ZmZlciByZXNldFdyaXRlckluZGV4KCkgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIGludCBjYXBhY2l0eSgpIHsKKyAgICAgICAgICAgIHJldHVybiBidWZmZXIuY2FwYWNpdHkoKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgYm9vbGVhbiBpc0RpcmVjdCgpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgYm9vbGVhbiByZWFkQm9vbGVhbigpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgYnl0ZSByZWFkQnl0ZSgpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBzaG9ydCByZWFkU2hvcnQoKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgaW50IHJlYWRJbnQoKSB7CisgICAgICAgICAgICByZXR1cm4gYnVmZmVyLnJlYWRJbnQoKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgbG9uZyByZWFkTG9uZygpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBmbG9hdCByZWFkRmxvYXQoKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgZG91YmxlIHJlYWREb3VibGUoKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgQnVmZmVyIHJlYWRCeXRlcyhieXRlW10gZGVzdGluYXRpb24pIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBCdWZmZXIgcmVhZEJ5dGVzKGJ5dGVbXSBkZXN0aW5hdGlvbiwgaW50IGRzdEluZGV4LCBpbnQgbGVuZ3RoKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgQnVmZmVyIHJlYWRCeXRlcyhCeXRlQnVmZmVyIGRzdCkgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIEJ1ZmZlciByZWFkQnl0ZXMoT3V0cHV0U3RyZWFtIG91dCwgaW50IGxlbmd0aCkgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIEJ1ZmZlciB3cml0ZUJvb2xlYW4oYm9vbGVhbiB2YWx1ZSkgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIEJ1ZmZlciB3cml0ZUJ5dGUoaW50IHZhbHVlKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgQnVmZmVyIHdyaXRlU2hvcnQoaW50IHZhbHVlKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgQnVmZmVyIHdyaXRlSW50KGludCB2YWx1ZSkgeworICAgICAgICAgICAgYnVmZmVyLndyaXRlSW50KHZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBCdWZmZXIgd3JpdGVMb25nKGxvbmcgdmFsdWUpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBCdWZmZXIgd3JpdGVGbG9hdChmbG9hdCB2YWx1ZSkgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIEJ1ZmZlciB3cml0ZURvdWJsZShkb3VibGUgdmFsdWUpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBCdWZmZXIgd3JpdGVCeXRlcyhieXRlW10gc3JjKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgQnVmZmVyIHdyaXRlQnl0ZXMoQnl0ZUJ1ZmZlciBzcmMpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBCdWZmZXIgd3JpdGVCeXRlcyhieXRlW10gc3JjLCBpbnQgc3JjSW5kZXgsIGludCBsZW5ndGgpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBib29sZWFuIHJlbGVhc2UoKSB7CisgICAgICAgICAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2UoKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgQnVmZmVyIHJldGFpbigpIHsKKyAgICAgICAgICAgIGJ1ZmZlci5yZXRhaW4oKTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBpbnQgcmVmZXJlbmNlQ291bnQoKSB7CisgICAgICAgICAgICByZXR1cm4gYnVmZmVyLnJlZkNudCgpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBpbnQgbmlvQnVmZmVyQ291bnQoKSB7CisgICAgICAgICAgICByZXR1cm4gYnVmZmVyLm5pb0J1ZmZlckNvdW50KCk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIEJ5dGVCdWZmZXJbXSBuaW9CdWZmZXJzKCkgeworICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlci5uaW9CdWZmZXJzKCk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIEJ5dGVCdWZmZXJbXSBuaW9CdWZmZXJzKGludCBpbmRleCwgaW50IGxlbmd0aCkgeworICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlci5uaW9CdWZmZXJzKGluZGV4LCBsZW5ndGgpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBCeXRlQnVmZmVyIG5pb0J1ZmZlcigpIHsKKyAgICAgICAgICAgIHJldHVybiBidWZmZXIubmlvQnVmZmVyKCk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIEJ5dGVCdWZmZXIgbmlvQnVmZmVyKGludCBpbmRleCwgaW50IGxlbmd0aCkgeworICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlci5uaW9CdWZmZXIoaW5kZXgsIGxlbmd0aCk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIEJ1ZmZlciBnZXRCeXRlcyhpbnQgaW5kZXgsIGJ5dGVbXSBkc3QpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kcml2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvYmluYXJ5L0dyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMVRlc3QuamF2YSBiL2dyZW1saW4tZHJpdmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL2JpbmFyeS9HcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjFUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDAwNDJmZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tZHJpdmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL2JpbmFyeS9HcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjFUZXN0LmphdmEKQEAgLTAsMCArMSwxOTggQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuYmluYXJ5OworCitpbXBvcnQgaW8ubmV0dHkuYnVmZmVyLkJ5dGVCdWY7CitpbXBvcnQgaW8ubmV0dHkuYnVmZmVyLkJ5dGVCdWZBbGxvY2F0b3I7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIubWVzc2FnZS5SZXF1ZXN0TWVzc2FnZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5tZXNzYWdlLlJlc3BvbnNlTWVzc2FnZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5tZXNzYWdlLlJlc3BvbnNlU3RhdHVzQ29kZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5TZXJpYWxpemF0aW9uRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5UeXBlU2VyaWFsaXplclJlZ2lzdHJ5OworaW1wb3J0IG9yZy5qdW5pdC5UZXN0OworaW1wb3J0IG9yZy5tb2NraXRvLmludGVybmFsLm1hdGNoZXJzLmFwYWNoZWNvbW1vbnMuUmVmbGVjdGlvbkVxdWFsczsKKworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworaW1wb3J0IGphdmEudXRpbC5VVUlEOworaW1wb3J0IGphdmEudXRpbC5jb25jdXJyZW50LmF0b21pYy5BdG9taWNJbnRlZ2VyOworCitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydFRoYXQ7CisKK3B1YmxpYyBjbGFzcyBHcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjFUZXN0IHsKKyAgICBwcml2YXRlIGZpbmFsIEJ5dGVCdWZBbGxvY2F0b3IgYWxsb2NhdG9yID0gQnl0ZUJ1ZkFsbG9jYXRvci5ERUZBVUxUOworICAgIHByaXZhdGUgZmluYWwgR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxIHNlcmlhbGl6ZXIgPSBuZXcgR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxKCk7CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZFNlcmlhbGl6ZUFuZERlc2VyaWFsaXplUmVxdWVzdCgpIHRocm93cyBTZXJpYWxpemF0aW9uRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgUmVxdWVzdE1lc3NhZ2UgcmVxdWVzdCA9IFJlcXVlc3RNZXNzYWdlLmJ1aWxkKCJvcDEiKQorICAgICAgICAgICAgICAgIC5wcm9jZXNzb3IoInByb2MxIikKKyAgICAgICAgICAgICAgICAub3ZlcnJpZGVSZXF1ZXN0SWQoVVVJRC5yYW5kb21VVUlEKCkpCisgICAgICAgICAgICAgICAgLmFkZEFyZygiYXJnMSIsICJ2YWx1ZTEiKQorICAgICAgICAgICAgICAgIC5jcmVhdGUoKTsKKworICAgICAgICBmaW5hbCBCeXRlQnVmIGJ1ZmZlciA9IHNlcmlhbGl6ZXIuc2VyaWFsaXplUmVxdWVzdEFzQmluYXJ5KHJlcXVlc3QsIGFsbG9jYXRvcik7CisgICAgICAgIGZpbmFsIGludCBtaW1lTGVuID0gYnVmZmVyLnJlYWRCeXRlKCk7CisgICAgICAgIGJ1ZmZlci5yZWFkQnl0ZXMobmV3IGJ5dGVbbWltZUxlbl0pOworICAgICAgICBmaW5hbCBSZXF1ZXN0TWVzc2FnZSBkZXNlcmlhbGl6ZWQgPSBzZXJpYWxpemVyLmRlc2VyaWFsaXplUmVxdWVzdChidWZmZXIpOworICAgICAgICBhc3NlcnRUaGF0KHJlcXVlc3QsIG5ldyBSZWZsZWN0aW9uRXF1YWxzKGRlc2VyaWFsaXplZCkpOworICAgIH0KKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkU2VyaWFsaXplQW5kRGVzZXJpYWxpemVSZXF1ZXN0V2l0aG91dEFyZ3MoKSB0aHJvd3MgU2VyaWFsaXphdGlvbkV4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIFJlcXVlc3RNZXNzYWdlIHJlcXVlc3QgPSBSZXF1ZXN0TWVzc2FnZS5idWlsZCgib3AxIikKKyAgICAgICAgICAgICAgICAucHJvY2Vzc29yKCJwcm9jMSIpCisgICAgICAgICAgICAgICAgLm92ZXJyaWRlUmVxdWVzdElkKFVVSUQucmFuZG9tVVVJRCgpKQorICAgICAgICAgICAgICAgIC5jcmVhdGUoKTsKKworICAgICAgICBmaW5hbCBCeXRlQnVmIGJ1ZmZlciA9IHNlcmlhbGl6ZXIuc2VyaWFsaXplUmVxdWVzdEFzQmluYXJ5KHJlcXVlc3QsIGFsbG9jYXRvcik7CisgICAgICAgIGZpbmFsIGludCBtaW1lTGVuID0gYnVmZmVyLnJlYWRCeXRlKCk7CisgICAgICAgIGJ1ZmZlci5yZWFkQnl0ZXMobmV3IGJ5dGVbbWltZUxlbl0pOworICAgICAgICBmaW5hbCBSZXF1ZXN0TWVzc2FnZSBkZXNlcmlhbGl6ZWQgPSBzZXJpYWxpemVyLmRlc2VyaWFsaXplUmVxdWVzdChidWZmZXIpOworICAgICAgICBhc3NlcnRUaGF0KHJlcXVlc3QsIG5ldyBSZWZsZWN0aW9uRXF1YWxzKGRlc2VyaWFsaXplZCkpOworICAgIH0KKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkU2VyaWFsaXplQW5kRGVzZXJpYWxpemVSZXF1ZXN0V2l0aFVuc2V0UHJvY2Vzc29yKCkgdGhyb3dzIFNlcmlhbGl6YXRpb25FeGNlcHRpb24geworICAgICAgICBmaW5hbCBSZXF1ZXN0TWVzc2FnZSByZXF1ZXN0ID0gUmVxdWVzdE1lc3NhZ2UuYnVpbGQoIm9wMSIpCisgICAgICAgICAgICAgICAgLm92ZXJyaWRlUmVxdWVzdElkKFVVSUQucmFuZG9tVVVJRCgpKQorICAgICAgICAgICAgICAgIC5hZGRBcmcoImsiLCAxKQorICAgICAgICAgICAgICAgIC5jcmVhdGUoKTsKKworICAgICAgICBmaW5hbCBCeXRlQnVmIGJ1ZmZlciA9IHNlcmlhbGl6ZXIuc2VyaWFsaXplUmVxdWVzdEFzQmluYXJ5KHJlcXVlc3QsIGFsbG9jYXRvcik7CisgICAgICAgIGZpbmFsIGludCBtaW1lTGVuID0gYnVmZmVyLnJlYWRCeXRlKCk7CisgICAgICAgIGJ1ZmZlci5yZWFkQnl0ZXMobmV3IGJ5dGVbbWltZUxlbl0pOworICAgICAgICBmaW5hbCBSZXF1ZXN0TWVzc2FnZSBkZXNlcmlhbGl6ZWQgPSBzZXJpYWxpemVyLmRlc2VyaWFsaXplUmVxdWVzdChidWZmZXIpOworICAgICAgICBhc3NlcnRUaGF0KHJlcXVlc3QsIG5ldyBSZWZsZWN0aW9uRXF1YWxzKGRlc2VyaWFsaXplZCkpOworICAgIH0KKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkU2VyaWFsaXplQW5kRGVzZXJpYWxpemVSZXNwb25zZSgpIHRocm93cyBTZXJpYWxpemF0aW9uRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgUmVzcG9uc2VNZXNzYWdlIHJlc3BvbnNlID0gUmVzcG9uc2VNZXNzYWdlLmJ1aWxkKFVVSUQucmFuZG9tVVVJRCgpKQorICAgICAgICAgICAgICAgIC5jb2RlKFJlc3BvbnNlU3RhdHVzQ29kZS5TVUNDRVNTKQorICAgICAgICAgICAgICAgIC5zdGF0dXNNZXNzYWdlKCJGb3VuZCIpCisgICAgICAgICAgICAgICAgLnN0YXR1c0F0dHJpYnV0ZSgiazEiLCAxKQorICAgICAgICAgICAgICAgIC5yZXN1bHQoIlRoaXMgaXMgYSBmaW5lIG1lc3NhZ2Ugd2l0aCBhIHN0cmluZyIpCisgICAgICAgICAgICAgICAgLmNyZWF0ZSgpOworCisgICAgICAgIGZpbmFsIEJ5dGVCdWYgYnVmZmVyID0gc2VyaWFsaXplci5zZXJpYWxpemVSZXNwb25zZUFzQmluYXJ5KHJlc3BvbnNlLCBhbGxvY2F0b3IpOworICAgICAgICBmaW5hbCBSZXNwb25zZU1lc3NhZ2UgZGVzZXJpYWxpemVkID0gc2VyaWFsaXplci5kZXNlcmlhbGl6ZVJlc3BvbnNlKGJ1ZmZlcik7CisgICAgICAgIGFzc2VydFJlc3BvbnNlRXF1YWxzKHJlc3BvbnNlLCBkZXNlcmlhbGl6ZWQpOworICAgIH0KKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkU2VyaWFsaXplQW5kRGVzZXJpYWxpemVSZXNwb25zZVdpdGhvdXRTdGF0dXNNZXNzYWdlKCkgdGhyb3dzIFNlcmlhbGl6YXRpb25FeGNlcHRpb24geworICAgICAgICBmaW5hbCBSZXNwb25zZU1lc3NhZ2UgcmVzcG9uc2UgPSBSZXNwb25zZU1lc3NhZ2UuYnVpbGQoVVVJRC5yYW5kb21VVUlEKCkpCisgICAgICAgICAgICAgICAgLmNvZGUoUmVzcG9uc2VTdGF0dXNDb2RlLlNVQ0NFU1MpCisgICAgICAgICAgICAgICAgLnN0YXR1c0F0dHJpYnV0ZSgiazEiLCAxKQorICAgICAgICAgICAgICAgIC5yZXN1bHQoMTIzLjMpCisgICAgICAgICAgICAgICAgLmNyZWF0ZSgpOworCisgICAgICAgIGZpbmFsIEJ5dGVCdWYgYnVmZmVyID0gc2VyaWFsaXplci5zZXJpYWxpemVSZXNwb25zZUFzQmluYXJ5KHJlc3BvbnNlLCBhbGxvY2F0b3IpOworICAgICAgICBmaW5hbCBSZXNwb25zZU1lc3NhZ2UgZGVzZXJpYWxpemVkID0gc2VyaWFsaXplci5kZXNlcmlhbGl6ZVJlc3BvbnNlKGJ1ZmZlcik7CisgICAgICAgIGFzc2VydFJlc3BvbnNlRXF1YWxzKHJlc3BvbnNlLCBkZXNlcmlhbGl6ZWQpOworICAgIH0KKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkU2VyaWFsaXplQW5kRGVzZXJpYWxpemVSZXNwb25zZVdpdGhvdXRTdGF0dXNBdHRyaWJ1dGVzKCkgdGhyb3dzIFNlcmlhbGl6YXRpb25FeGNlcHRpb24geworICAgICAgICBmaW5hbCBSZXNwb25zZU1lc3NhZ2UgcmVzcG9uc2UgPSBSZXNwb25zZU1lc3NhZ2UuYnVpbGQoVVVJRC5yYW5kb21VVUlEKCkpCisgICAgICAgICAgICAgICAgLmNvZGUoUmVzcG9uc2VTdGF0dXNDb2RlLlNVQ0NFU1MpCisgICAgICAgICAgICAgICAgLnJlc3VsdCgxMjMuMykKKyAgICAgICAgICAgICAgICAuY3JlYXRlKCk7CisKKyAgICAgICAgZmluYWwgQnl0ZUJ1ZiBidWZmZXIgPSBzZXJpYWxpemVyLnNlcmlhbGl6ZVJlc3BvbnNlQXNCaW5hcnkocmVzcG9uc2UsIGFsbG9jYXRvcik7CisgICAgICAgIGZpbmFsIFJlc3BvbnNlTWVzc2FnZSBkZXNlcmlhbGl6ZWQgPSBzZXJpYWxpemVyLmRlc2VyaWFsaXplUmVzcG9uc2UoYnVmZmVyKTsKKyAgICAgICAgYXNzZXJ0UmVzcG9uc2VFcXVhbHMocmVzcG9uc2UsIGRlc2VyaWFsaXplZCk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRTZXJpYWxpemVBbmREZXNlcmlhbGl6ZVJlc3BvbnNlV2l0aG91dFJlc3VsdCgpIHRocm93cyBTZXJpYWxpemF0aW9uRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgUmVzcG9uc2VNZXNzYWdlIHJlc3BvbnNlID0gUmVzcG9uc2VNZXNzYWdlLmJ1aWxkKFVVSUQucmFuZG9tVVVJRCgpKQorICAgICAgICAgICAgICAgIC5jb2RlKFJlc3BvbnNlU3RhdHVzQ29kZS5TRVJWRVJfRVJST1IpCisgICAgICAgICAgICAgICAgLnN0YXR1c01lc3NhZ2UoIlNvbWV0aGluZyBoYXBwZW5lZCBvbiB0aGUgc2VydmVyIikKKyAgICAgICAgICAgICAgICAuY3JlYXRlKCk7CisKKyAgICAgICAgZmluYWwgQnl0ZUJ1ZiBidWZmZXIgPSBzZXJpYWxpemVyLnNlcmlhbGl6ZVJlc3BvbnNlQXNCaW5hcnkocmVzcG9uc2UsIGFsbG9jYXRvcik7CisgICAgICAgIGZpbmFsIFJlc3BvbnNlTWVzc2FnZSBkZXNlcmlhbGl6ZWQgPSBzZXJpYWxpemVyLmRlc2VyaWFsaXplUmVzcG9uc2UoYnVmZmVyKTsKKyAgICAgICAgYXNzZXJ0UmVzcG9uc2VFcXVhbHMocmVzcG9uc2UsIGRlc2VyaWFsaXplZCk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRTdXBwb3J0Q29uZmlndXJhdGlvbk9mUmVnaXN0cnlCdWlsZGVyKCkgeworICAgICAgICBmaW5hbCBHcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjEgc2VyaWFsaXplciA9IG5ldyBHcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjEoKTsKKyAgICAgICAgZmluYWwgTWFwPFN0cmluZywgT2JqZWN0PiBjb25maWcgPSBuZXcgSGFzaE1hcDw+KCk7CisgICAgICAgIGludCBjb3VudGVyID0gU2FtcGxlVHlwZVNlcmlhbGl6ZXJSZWdpc3RyeUJ1aWxkZXIuY3JlYXRlQ291bnRlci5nZXQoKTsKKworICAgICAgICBjb25maWcucHV0KEdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMS5UT0tFTl9CVUlMREVSLCAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLmJpbmFyeS5HcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjFUZXN0JFNhbXBsZVR5cGVTZXJpYWxpemVyUmVnaXN0cnlCdWlsZGVyIik7CisgICAgICAgIHNlcmlhbGl6ZXIuY29uZmlndXJlKGNvbmZpZywgbnVsbCk7CisKKyAgICAgICAgY291bnRlciA9IFNhbXBsZVR5cGVTZXJpYWxpemVyUmVnaXN0cnlCdWlsZGVyLmNyZWF0ZUNvdW50ZXIuZ2V0KCkgLSBjb3VudGVyOworICAgICAgICAvLyBUaGVyZSBzaG91bGQgYmUgYSBjYWxsIHRvIGBjcmVhdGUoKWAKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIGNvdW50ZXIpOworICAgIH0KKworICAgIEBUZXN0KGV4cGVjdGVkID0gSWxsZWdhbFN0YXRlRXhjZXB0aW9uLmNsYXNzKQorICAgIHB1YmxpYyB2b2lkIHNob3VsZFRocm93V2hlbkNvbmZpZ3VyYXRpb25PZlJlZ2lzdHJ5QnVpbGRlckZhaWxzKCkgeworICAgICAgICBmaW5hbCBHcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjEgc2VyaWFsaXplciA9IG5ldyBHcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjEoKTsKKyAgICAgICAgZmluYWwgTWFwPFN0cmluZywgT2JqZWN0PiBjb25maWcgPSBuZXcgSGFzaE1hcDw+KCk7CisgICAgICAgIGNvbmZpZy5wdXQoR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxLlRPS0VOX0JVSUxERVIsICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuYmluYXJ5Lk5vbkV4aXN0ZW50Q2xhc3MiKTsKKworICAgICAgICBzZXJpYWxpemVyLmNvbmZpZ3VyZShjb25maWcsIG51bGwpOworICAgIH0KKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkVG9TdHJpbmdTZXJpYWxpemUoKSB0aHJvd3MgU2VyaWFsaXphdGlvbkV4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIEdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMSBzZXJpYWxpemVyID0gbmV3IEdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMSgpOworICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLE9iamVjdD4gY29uZiA9IG5ldyBIYXNoTWFwPFN0cmluZyxPYmplY3Q+KCkge3sKKyAgICAgICAgICAgIHB1dChHcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjEuVE9LRU5fU0VSSUFMSVpFX1JFU1VMVF9UT19TVFJJTkcsIHRydWUpOworICAgICAgICB9fTsKKyAgICAgICAgc2VyaWFsaXplci5jb25maWd1cmUoY29uZiwgQ29sbGVjdGlvbnMuZW1wdHlNYXAoKSk7CisKKyAgICAgICAgZmluYWwgUmVzcG9uc2VNZXNzYWdlIG1lc3NhZ2VXaXRoVW5leHBlY3RlZFR5cGUgPSBSZXNwb25zZU1lc3NhZ2UuYnVpbGQoVVVJRC5yYW5kb21VVUlEKCkpLgorICAgICAgICAgICAgICAgIHJlc3VsdChqYXZhLmF3dC5Db2xvci5SRUQpLmNyZWF0ZSgpOworICAgICAgICBmaW5hbCBCeXRlQnVmIGJ1ZmZlciA9IHNlcmlhbGl6ZXIuc2VyaWFsaXplUmVzcG9uc2VBc0JpbmFyeShtZXNzYWdlV2l0aFVuZXhwZWN0ZWRUeXBlLCBhbGxvY2F0b3IpOworICAgICAgICBmaW5hbCBSZXNwb25zZU1lc3NhZ2UgZGVzZXJpYWxpemVkID0gc2VyaWFsaXplci5kZXNlcmlhbGl6ZVJlc3BvbnNlKGJ1ZmZlcik7CisKKyAgICAgICAgYXNzZXJ0RXF1YWxzKGphdmEuYXd0LkNvbG9yLlJFRC50b1N0cmluZygpLCBkZXNlcmlhbGl6ZWQuZ2V0UmVzdWx0KCkuZ2V0RGF0YSgpKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIGFzc2VydFJlc3BvbnNlRXF1YWxzKFJlc3BvbnNlTWVzc2FnZSBleHBlY3RlZCwgUmVzcG9uc2VNZXNzYWdlIGFjdHVhbCkgeworICAgICAgICBhc3NlcnRFcXVhbHMoZXhwZWN0ZWQuZ2V0UmVxdWVzdElkKCksIGFjdHVhbC5nZXRSZXF1ZXN0SWQoKSk7CisgICAgICAgIC8vIFN0YXR1cworICAgICAgICBhc3NlcnRFcXVhbHMoZXhwZWN0ZWQuZ2V0U3RhdHVzKCkuZ2V0Q29kZSgpLCBhY3R1YWwuZ2V0U3RhdHVzKCkuZ2V0Q29kZSgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKGV4cGVjdGVkLmdldFN0YXR1cygpLmdldE1lc3NhZ2UoKSwgYWN0dWFsLmdldFN0YXR1cygpLmdldE1lc3NhZ2UoKSk7CisgICAgICAgIGFzc2VydEVxdWFscyhleHBlY3RlZC5nZXRTdGF0dXMoKS5nZXRBdHRyaWJ1dGVzKCksIGFjdHVhbC5nZXRTdGF0dXMoKS5nZXRBdHRyaWJ1dGVzKCkpOworICAgICAgICAvLyBSZXN1bHQKKyAgICAgICAgYXNzZXJ0RXF1YWxzKGV4cGVjdGVkLmdldFJlc3VsdCgpLmdldERhdGEoKSwgYWN0dWFsLmdldFJlc3VsdCgpLmdldERhdGEoKSk7CisgICAgICAgIGFzc2VydEVxdWFscyhleHBlY3RlZC5nZXRSZXN1bHQoKS5nZXRNZXRhKCksIGFjdHVhbC5nZXRSZXN1bHQoKS5nZXRNZXRhKCkpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgU2FtcGxlVHlwZVNlcmlhbGl6ZXJSZWdpc3RyeUJ1aWxkZXIgZXh0ZW5kcyBUeXBlU2VyaWFsaXplclJlZ2lzdHJ5LkJ1aWxkZXIgeworICAgICAgICBwdWJsaWMgc3RhdGljIEF0b21pY0ludGVnZXIgY3JlYXRlQ291bnRlciA9IG5ldyBBdG9taWNJbnRlZ2VyKCk7CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUeXBlU2VyaWFsaXplclJlZ2lzdHJ5IGNyZWF0ZSgpIHsKKyAgICAgICAgICAgIGNyZWF0ZUNvdW50ZXIuaW5jcmVtZW50QW5kR2V0KCk7CisgICAgICAgICAgICByZXR1cm4gc3VwZXIuY3JlYXRlKCk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWRyaXZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9iaW5hcnkvR3JhcGhCaW5hcnlSZWFkZXJXcml0ZXJSb3VuZFRyaXBUZXN0LmphdmEgYi9ncmVtbGluLWRyaXZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9iaW5hcnkvR3JhcGhCaW5hcnlSZWFkZXJXcml0ZXJSb3VuZFRyaXBUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWE3MjU0ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tZHJpdmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL2JpbmFyeS9HcmFwaEJpbmFyeVJlYWRlcldyaXRlclJvdW5kVHJpcFRlc3QuamF2YQpAQCAtMCwwICsxLDMxMyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5iaW5hcnk7CisKK2ltcG9ydCBpby5uZXR0eS5idWZmZXIuQnl0ZUJ1ZkFsbG9jYXRvcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuTmV0dHlCdWZmZXJGYWN0b3J5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5Db21wdXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uVmVydGV4UHJvZ3JhbVN0cmF0ZWd5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5yZW1vdGUudHJhdmVyc2FsLkRlZmF1bHRSZW1vdGVUcmF2ZXJzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5CeXRlY29kZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLk9wZXJhdG9yOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuT3JkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUG9wOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuU2Fja0Z1bmN0aW9uczsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlNjb3BlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVGV4dFA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWxTb3VyY2U7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguR3JhcGhUcmF2ZXJzYWxTb3VyY2U7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLlRyYXZlcnNhbE9wdGlvblBhcmVudDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5CdWxrU2V0OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLlRyZWU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5UcmF2ZXJzYWxTdHJhdGVneVByb3h5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuZGVjb3JhdGlvbi5TdWJncmFwaFN0cmF0ZWd5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5EZWZhdWx0VHJhdmVyc2FsTWV0cmljczsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuTWV0cmljczsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuTXV0YWJsZU1ldHJpY3M7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLlRyYXZlcnNhbE1ldHJpY3M7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuQ29sdW1uOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkRpcmVjdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5HcmFwaDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5UOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXhQcm9wZXJ0eTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5CdWZmZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uSW9UZXN0OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlXcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5yZWZlcmVuY2UuUmVmZXJlbmNlRWRnZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLnJlZmVyZW5jZS5SZWZlcmVuY2VQcm9wZXJ0eTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLnJlZmVyZW5jZS5SZWZlcmVuY2VWZXJ0ZXg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5yZWZlcmVuY2UuUmVmZXJlbmNlVmVydGV4UHJvcGVydHk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi50aW5rZXJncmFwaC5zdHJ1Y3R1cmUuVGlua2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnV0aWwuZnVuY3Rpb24uTGFtYmRhOworaW1wb3J0IG9yZy5qdW5pdC5UZXN0OworaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXIuUnVuV2l0aDsKK2ltcG9ydCBvcmcuanVuaXQucnVubmVycy5QYXJhbWV0ZXJpemVkOworaW1wb3J0IG9yZy5tb2NraXRvLmludGVybmFsLm1hdGNoZXJzLmFwYWNoZWNvbW1vbnMuUmVmbGVjdGlvbkVxdWFsczsKKworaW1wb3J0IGphdmEubWF0aC5CaWdEZWNpbWFsOworaW1wb3J0IGphdmEubWF0aC5CaWdJbnRlZ2VyOworaW1wb3J0IGphdmEubmV0LkluZXRBZGRyZXNzOworaW1wb3J0IGphdmEubmlvLkJ5dGVCdWZmZXI7CitpbXBvcnQgamF2YS5zcWwuVGltZXN0YW1wOworaW1wb3J0IGphdmEudGV4dC5EYXRlRm9ybWF0OworaW1wb3J0IGphdmEudGltZS5EdXJhdGlvbjsKK2ltcG9ydCBqYXZhLnRpbWUuSW5zdGFudDsKK2ltcG9ydCBqYXZhLnRpbWUuTG9jYWxEYXRlOworaW1wb3J0IGphdmEudGltZS5Mb2NhbERhdGVUaW1lOworaW1wb3J0IGphdmEudGltZS5Mb2NhbFRpbWU7CitpbXBvcnQgamF2YS50aW1lLk1vbnRoRGF5OworaW1wb3J0IGphdmEudGltZS5PZmZzZXREYXRlVGltZTsKK2ltcG9ydCBqYXZhLnRpbWUuT2Zmc2V0VGltZTsKK2ltcG9ydCBqYXZhLnRpbWUuUGVyaW9kOworaW1wb3J0IGphdmEudGltZS5ZZWFyOworaW1wb3J0IGphdmEudGltZS5ZZWFyTW9udGg7CitpbXBvcnQgamF2YS50aW1lLlpvbmVPZmZzZXQ7CitpbXBvcnQgamF2YS50aW1lLlpvbmVkRGF0ZVRpbWU7CitpbXBvcnQgamF2YS51dGlsLio7CitpbXBvcnQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQ7CitpbXBvcnQgamF2YS51dGlsLmZ1bmN0aW9uLkNvbnN1bWVyOworCitpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLl9fLmhhc0xhYmVsOworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydEVxdWFsczsKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRUaGF0OworCitAUnVuV2l0aChQYXJhbWV0ZXJpemVkLmNsYXNzKQorcHVibGljIGNsYXNzIEdyYXBoQmluYXJ5UmVhZGVyV3JpdGVyUm91bmRUcmlwVGVzdCB7CisgICAgcHJpdmF0ZSBmaW5hbCBHcmFwaEJpbmFyeVdyaXRlciB3cml0ZXIgPSBuZXcgR3JhcGhCaW5hcnlXcml0ZXIoKTsKKyAgICBwcml2YXRlIGZpbmFsIEdyYXBoQmluYXJ5UmVhZGVyIHJlYWRlciA9IG5ldyBHcmFwaEJpbmFyeVJlYWRlcigpOworICAgIHByaXZhdGUgZmluYWwgQnl0ZUJ1ZkFsbG9jYXRvciBhbGxvY2F0b3IgPSBCeXRlQnVmQWxsb2NhdG9yLkRFRkFVTFQ7CisgICAgcHJpdmF0ZSBzdGF0aWMgTmV0dHlCdWZmZXJGYWN0b3J5IGJ1ZmZlckZhY3RvcnkgPSBuZXcgTmV0dHlCdWZmZXJGYWN0b3J5KCk7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBHcmFwaFRyYXZlcnNhbFNvdXJjZSBnID0gVGlua2VyRmFjdG9yeS5jcmVhdGVNb2Rlcm4oKS50cmF2ZXJzYWwoKTsKKworICAgIEBQYXJhbWV0ZXJpemVkLlBhcmFtZXRlcnMobmFtZSA9ICJUeXBlezB9IikKKyAgICBwdWJsaWMgc3RhdGljIENvbGxlY3Rpb24gaW5wdXQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgQnl0ZWNvZGUgYnl0ZWNvZGUgPSBuZXcgQnl0ZWNvZGUoKTsKKyAgICAgICAgYnl0ZWNvZGUuYWRkU3RlcCgiViIpOworICAgICAgICBieXRlY29kZS5hZGRTdGVwKCJ0YWlsIiwgMyk7CisgICAgICAgIGJ5dGVjb2RlLmFkZFNvdXJjZShUcmF2ZXJzYWxTb3VyY2UuU3ltYm9scy53aXRoQ29tcHV0ZXIsICJteUNvbXB1dGVyIik7CisKKyAgICAgICAgZmluYWwgTWFwPFN0cmluZywgSW50ZWdlcj4gbWFwID0gbmV3IEhhc2hNYXA8PigpOworICAgICAgICBtYXAucHV0KCJvbmUiLCAxKTsKKyAgICAgICAgbWFwLnB1dCgidHdvIiwgMik7CisKKyAgICAgICAgZmluYWwgTWFwPFN0cmluZywgTWFwPFN0cmluZywgSW50ZWdlcj4+IG5lc3RlZE1hcCA9IG5ldyBIYXNoTWFwPD4oKTsKKyAgICAgICAgbmVzdGVkTWFwLnB1dCgiZmlyc3QiLCBtYXApOworCisgICAgICAgIGZpbmFsIExpc3Q8T2JqZWN0PiBsaXN0ID0gbmV3IEFycmF5TGlzdDw+KCk7CisgICAgICAgIGxpc3QuYWRkKCJzdHJpbmcgMSIpOworICAgICAgICBsaXN0LmFkZCgic3RyaW5nIDEiKTsKKyAgICAgICAgbGlzdC5hZGQoMjAwKTsKKyAgICAgICAgbGlzdC5hZGQoInN0cmluZyAyIik7CisKKyAgICAgICAgZmluYWwgTGlzdDxMaXN0PE9iamVjdD4+IG5lc3RlZExpc3QgPSBuZXcgQXJyYXlMaXN0PD4oKTsKKyAgICAgICAgbmVzdGVkTGlzdC5hZGQobGlzdCk7CisKKyAgICAgICAgZmluYWwgU2V0PE9iamVjdD4gc2V0ID0gbmV3IEhhc2hTZXQ8PigpOworICAgICAgICBzZXQuYWRkKCJvbmUiKTsKKyAgICAgICAgc2V0LmFkZCgyKTsKKworICAgICAgICBmaW5hbCBTZXQ8U2V0PE9iamVjdD4+IG5lc3RlZFNldCA9IG5ldyBIYXNoU2V0PD4oKTsKKyAgICAgICAgbmVzdGVkU2V0LmFkZChzZXQpOworCisgICAgICAgIGZpbmFsIEJ1bGtTZXQ8U3RyaW5nPiBidWxrU2V0ID0gbmV3IEJ1bGtTZXQ8PigpOworICAgICAgICBidWxrU2V0LmFkZCgibWFya28iLCAxKTsKKyAgICAgICAgYnVsa1NldC5hZGQoImpvc2giLCAzKTsKKworICAgICAgICBmaW5hbCBUcmVlPFZlcnRleD4gdHJlZSA9IG5ldyBUcmVlPD4oKTsKKyAgICAgICAgZmluYWwgVHJlZTxWZXJ0ZXg+IHN1YlRyZWUgPSBuZXcgVHJlZTw+KCk7CisgICAgICAgIGZpbmFsIFRyZWU8VmVydGV4PiBzdWJTdWJUcmVlID0gbmV3IFRyZWU8PigpOworICAgICAgICBzdWJTdWJUcmVlLnB1dChuZXcgUmVmZXJlbmNlVmVydGV4KDEsICJhbmltYWwiKSwgbmV3IFRyZWU8PigpKTsKKyAgICAgICAgc3ViU3ViVHJlZS5wdXQobmV3IFJlZmVyZW5jZVZlcnRleCgyLCAiYW5pbWFsIiksIG5ldyBUcmVlPD4oKSk7CisgICAgICAgIHN1YlRyZWUucHV0KG5ldyBSZWZlcmVuY2VWZXJ0ZXgoMTAwLCAiYW5pbWFsIiksIHN1YlN1YlRyZWUpOworICAgICAgICB0cmVlLnB1dChuZXcgUmVmZXJlbmNlVmVydGV4KDEwMDAsICJhbmltYWwiKSwgc3ViVHJlZSk7CisKKyAgICAgICAgZmluYWwgTXV0YWJsZU1ldHJpY3MgbWV0cmljcyA9IG5ldyBNdXRhYmxlTWV0cmljcygiaWQxIiwgIm5hbWUxIik7CisgICAgICAgIG1ldHJpY3Muc2V0RHVyYXRpb24oMTIzLCBUaW1lVW5pdC5NSUNST1NFQ09ORFMpOworICAgICAgICBtZXRyaWNzLnNldENvdW50KCJjMSIsIDIwKTsKKyAgICAgICAgbWV0cmljcy5zZXRBbm5vdGF0aW9uKCJhIiwgImIiKTsKKyAgICAgICAgbWV0cmljcy5hZGROZXN0ZWQobmV3IE11dGFibGVNZXRyaWNzKCJpZE5lc3RlZCIsICJuYW1lTmVzdGVkIikpOworCisgICAgICAgIC8vIGNhbid0IHVzZSB0aGUgZXhpc3RpbmcgJ21ldHJpY3MnIGJlY2F1c2UgdHJhdmVyc2FsIG1ldHJpY3MgbW9kaWZpZXMgaXRzIG5lc3RlZCBtZXRyaWNzCisgICAgICAgIGZpbmFsIE11dGFibGVNZXRyaWNzIG1ldHJpY3MxID0gbWV0cmljcy5jbG9uZSgpOworCisgICAgICAgIGZpbmFsIE11dGFibGVNZXRyaWNzIG1ldHJpY3MyID0gbmV3IE11dGFibGVNZXRyaWNzKCJpZDIiLCAibmFtZTIiKTsKKyAgICAgICAgbWV0cmljczIuc2V0RHVyYXRpb24oNDU2LCBUaW1lVW5pdC5NSUNST1NFQ09ORFMpOworICAgICAgICBtZXRyaWNzMi5zZXRDb3VudCgiYzIiLCA0MCk7CisgICAgICAgIG1ldHJpY3MyLnNldEFubm90YXRpb24oImMiLCAiZCIpOworICAgICAgICBtZXRyaWNzMi5hZGROZXN0ZWQobmV3IE11dGFibGVNZXRyaWNzKCJpZE5lc3RlZDIiLCAibmFtZU5lc3RlZDIiKSk7CisKKyAgICAgICAgTGlzdDxNdXRhYmxlTWV0cmljcz4gbmVzdGVkTWV0cmljcyA9IEFycmF5cy5hc0xpc3QobWV0cmljczEsIG1ldHJpY3MyKTsKKyAgICAgICAgZmluYWwgRGVmYXVsdFRyYXZlcnNhbE1ldHJpY3MgdHJhdmVyc2FsTWV0cmljcyA9IG5ldyBEZWZhdWx0VHJhdmVyc2FsTWV0cmljcyg2NjYsIG5lc3RlZE1ldHJpY3MpOworICAgICAgICBmaW5hbCBEZWZhdWx0VHJhdmVyc2FsTWV0cmljcyBlbXB0eVRyYXZlcnNhbE1ldHJpY3MgPSBuZXcgRGVmYXVsdFRyYXZlcnNhbE1ldHJpY3MoNDQ0LCBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKSk7CisKKyAgICAgICAgcmV0dXJuIEFycmF5cy5hc0xpc3QoCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiU3RyaW5nIiwgIkFCQyIsIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IkNoYXIiLCAnwqMnLCBudWxsfSwKKworICAgICAgICAgICAgICAgIC8vIG51bWVyaWNzCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiQnl0ZSIsIDEsIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IkludGVnZXIiLCAxLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJGbG9hdCIsIDJmLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJEb3VibGUiLCAzLjFkLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJEb3VibGUiLCBEb3VibGUuTmFOLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJEb3VibGUiLCBEb3VibGUuUE9TSVRJVkVfSU5GSU5JVFksIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IkRvdWJsZSIsIERvdWJsZS5ORUdBVElWRV9JTkZJTklUWSwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiTG9uZyIsIDEwMTIyTCwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiSW50ZWdlclplcm8iLCAwLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJGbG9hdFplcm8iLCAwZiwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiSW50ZWdlck1pbiIsIEludGVnZXIuTUlOX1ZBTFVFLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJJbnRlZ2VyTWF4IiwgSW50ZWdlci5NQVhfVkFMVUUsIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IkxvbmdNYXgiLCBMb25nLk1BWF9WQUxVRSwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiQmlnSW50ZWdlclBvcyIsIG5ldyBCaWdJbnRlZ2VyKCIxMjM0NTY3ODkwOTg3NjU0MzIxIiksIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IkJpZ0ludGVnZXJOZWciLCBuZXcgQmlnSW50ZWdlcigiLTEyMzQ1Njc4OTA5ODc2NTQzMjEiKSwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiQmlnRGVjaW1hbFBvcyIsIG5ldyBCaWdEZWNpbWFsKCIxMjM0NTY3ODkwOTg3NjU0MzIxLjEyMzIxMzIiKSwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiQmlnRGVjaW1hbE5lZyIsIG5ldyBCaWdEZWNpbWFsKCItMTIzNDU2Nzg5MDk4NzY1NDMyMS4xMjMyMTMyIiksIG51bGx9LAorCisgICAgICAgICAgICAgICAgLy8gZGF0ZSt0aW1lCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiRGF0ZSIsIERhdGVGb3JtYXQuZ2V0RGF0ZUluc3RhbmNlKERhdGVGb3JtYXQuTUVESVVNLCBMb2NhbGUuVVMpLnBhcnNlKCJKYW4gMTIsIDE5NTIiKSwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiVGltZXN0YW1wIiwgVGltZXN0YW1wLnZhbHVlT2YoIjIwMTYtMDEtMTUgMTI6MDE6MDIiKSwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiRHVyYXRpb24iLCBEdXJhdGlvbi5vZlNlY29uZHMoMjEzMTIzMjEzLCA0MDApLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJJbnN0YW50IiwgSW5zdGFudC5vZkVwb2NoU2Vjb25kKDIxMzEyMzIxMywgNDAwKSwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiTG9jYWxEYXRlIiwgTG9jYWxEYXRlLm9mKDIwMTYsIDEwLCAyMSksIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IkxvY2FsVGltZSIsIExvY2FsVGltZS5vZigxMiwgMjAsIDMwLCAzMDApLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJMb2NhbERhdGVUaW1lIiwgTG9jYWxEYXRlVGltZS5vZigyMDE2LCAxMCwgMjEsIDEyLCAyMCwgMzAsIDMwMCksIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7Ik1vbnRoRGF5IiwgTW9udGhEYXkub2YoMTIsIDI4KSwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiT2Zmc2V0RGF0ZVRpbWUiLCBPZmZzZXREYXRlVGltZS5vZigyMDE3LCAxMSwgMTUsIDEyLCAzMCwgNDUsIDMwMCwgWm9uZU9mZnNldC5vZlRvdGFsU2Vjb25kcyg0MDApKSwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiT2Zmc2V0VGltZSIsIE9mZnNldFRpbWUub2YoMTIsIDMwLCA0NSwgMzAwLCBab25lT2Zmc2V0Lm9mVG90YWxTZWNvbmRzKDQwMCkpLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJQZXJpb2QiLCBQZXJpb2Qub2YoMSwgNiwgMTUpLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJZZWFyIiwgWWVhci5vZigxOTk2KSwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiWWVhck1vbnRoIiwgWWVhck1vbnRoLm9mKDIwMTYsIDExKSwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiWm9uZWREYXRlVGltZSIsIFpvbmVkRGF0ZVRpbWUub2YoMjAxNiwgMTEsIDE1LCAxMiwgMzAsIDQ1LCAzMDAsIFpvbmVPZmZzZXQub2ZUb3RhbFNlY29uZHMoMjAwKSksIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IlpvbmVPZmZzZXQiLCBab25lT2Zmc2V0Lm9mVG90YWxTZWNvbmRzKDEwMCksIG51bGx9LAorCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiVVVJRCIsIFVVSUQucmFuZG9tVVVJRCgpLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJCeXRlY29kZSIsIGJ5dGVjb2RlLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJCaW5kaW5nIiwgbmV3IEJ5dGVjb2RlLkJpbmRpbmc8PigieCIsIDEyMyksIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IlRyYXZlcnNlciIsIG5ldyBEZWZhdWx0UmVtb3RlVHJhdmVyc2VyPD4oIm1hcmtvIiwgMTAwKSwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiQ2xhc3MiLCBCeXRlY29kZS5jbGFzcywgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiQnl0ZUJ1ZmZlciIsIEJ5dGVCdWZmZXIud3JhcChuZXcgYnl0ZVtdeyAxLCAyLCAzIH0pLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJJbmV0QWRkcmVzc1Y0IiwgSW5ldEFkZHJlc3MuZ2V0QnlOYW1lKCJsb2NhbGhvc3QiKSwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiSW5ldEFkZHJlc3NWNiIsIEluZXRBZGRyZXNzLmdldEJ5TmFtZSgiOjoxIiksIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IkxhbWJkYTAiLCBMYW1iZGEuc3VwcGxpZXIoInJldHVybiAxIiksIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IkxhbWJkYTEiLCBMYW1iZGEuY29uc3VtZXIoIml0IiksIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IkxhbWJkYTIiLCBMYW1iZGEuYmlGdW5jdGlvbigieCx5IC0+IHggKyB5IiksIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IkxhbWJkYU4iLCBuZXcgTGFtYmRhLlVua25vd25BcmdMYW1iZGEoIngseSx6IC0+IHggKyB5ICsgeiIsICJncmVtbGluLWdyb292eSIsIDMpLCBudWxsfSwKKworICAgICAgICAgICAgICAgIC8vIGVudW1zCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiQmFycmllciIsIFNhY2tGdW5jdGlvbnMuQmFycmllci5ub3JtU2FjaywgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiQ2FyZGluYWxpdHkiLCBWZXJ0ZXhQcm9wZXJ0eS5DYXJkaW5hbGl0eS5saXN0LCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJDb2x1bW5zIiwgQ29sdW1uLnZhbHVlcywgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiRGlyZWN0aW9uIiwgRGlyZWN0aW9uLkJPVEgsIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7Ik9wZXJhdG9yIiwgT3BlcmF0b3Iuc3VtLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJPcGVyYXRvciIsIE9wZXJhdG9yLmRpdiwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiT3JkZXIiLCBPcmRlci5kZXNjLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJQaWNrIiwgVHJhdmVyc2FsT3B0aW9uUGFyZW50LlBpY2suYW55LCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJQb3AiLCBQb3AubWl4ZWQsIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IlNjb3BlIiwgU2NvcGUuZ2xvYmFsLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJUIiwgVC5sYWJlbCwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiUGd0IiwgUC5ndCgwKSwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiUGd0ZSIsIFAuZ3RlKDApLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJQYmV0d2VlbiIsIFAuYmV0d2VlbigwLDEpLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJQYW5kIiwgUC5ndCgxKS5hbmQoUC5sdCgyKSksIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IlBvciIsIFAuZ3QoMSkub3IoUC5sdCgyKSksIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IlBub3QiLCBQLm5vdChQLmx0ZSgxKSksIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IlB3aXRob3V0IiwgUC53aXRob3V0KDEsMiwzLDQpLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJQaW5zaWRlIiwgUC5pbnNpZGUoMC4wZCwgMC42ZCksIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IlRleHRQIiwgVGV4dFAuc3RhcnRpbmdXaXRoKCJtYXJrIiksIG51bGx9LAorCisgICAgICAgICAgICAgICAgLy8gZ3JhcGgKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJSZWZlcmVuY2VFZGdlIiwgbmV3IFJlZmVyZW5jZUVkZ2UoMTIzLCAicGVyc29uIiwgbmV3IFJlZmVyZW5jZVZlcnRleCgxMjMsICJwZXJzb24iKSwgbmV3IFJlZmVyZW5jZVZlcnRleCgzMjEsICJwZXJzb24iKSksIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IlRpbmtlckVkZ2UiLCBnLkUoKS5oYXNMYWJlbCgia25vd3MiKS5uZXh0KCksIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IlJlZmVyZW5jZVByb3BlcnR5IiwgbmV3IFJlZmVyZW5jZVByb3BlcnR5PD4oIm5hbWUiLCAiam9obiIpLCAoQ29uc3VtZXI8UmVmZXJlbmNlUHJvcGVydHk+KSByZWZlcmVuY2VQcm9wZXJ0eSAtPiB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygibmFtZSIsIHJlZmVyZW5jZVByb3BlcnR5LmtleSgpKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJqb2huIiwgcmVmZXJlbmNlUHJvcGVydHkudmFsdWUoKSk7CisgICAgICAgICAgICAgICAgfX0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiUmVmZXJlbmNlVmVydGV4IiwgbmV3IFJlZmVyZW5jZVZlcnRleCgxMjMsICJwZXJzb24iKSwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiVGlua2VyVmVydGV4IiwgZy5WKCkuaGFzTGFiZWwoInBlcnNvbiIpLm5leHQoKSwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiUmVmZXJlbmNlVmVydGV4UHJvcGVydHkiLCBuZXcgUmVmZXJlbmNlVmVydGV4UHJvcGVydHk8PigxMjMsICJuYW1lIiwgImpvaG4iKSwgKENvbnN1bWVyPFJlZmVyZW5jZVZlcnRleFByb3BlcnR5PikgcmVmZXJlbmNlUHJvcGVydHkgLT4geworICAgICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoIm5hbWUiLCByZWZlcmVuY2VQcm9wZXJ0eS5rZXkoKSk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygiam9obiIsIHJlZmVyZW5jZVByb3BlcnR5LnZhbHVlKCkpOworICAgICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMTIzLCByZWZlcmVuY2VQcm9wZXJ0eS5pZCgpKTsKKyAgICAgICAgICAgICAgICB9fSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJQYXRoTGFiZWxsZWQiLCBnLlYoKS5hcygiYSIsICJiIikub3V0KCkuYXMoImMiKS5wYXRoKCkubmV4dCgpLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJQYXRoTm90TGFiZWxsZWQiLCBnLlYoKS5vdXQoKS5pbkUoKS52YWx1ZXMoKS5wYXRoKCkubmV4dCgpLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJHcmFwaCIsIGcuRSgpLnN1YmdyYXBoKCJrIikuY2FwKCJrIikubmV4dCgpLCAoQ29uc3VtZXI8R3JhcGg+KSBncmFwaCAtPiB7CisgICAgICAgICAgICAgICAgICAgIElvVGVzdC5hc3NlcnRNb2Rlcm5HcmFwaChncmFwaCwgdHJ1ZSwgZmFsc2UpOworICAgICAgICAgICAgICAgIH19LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IlRyYXZlcnNhbFN0cmF0ZWd5VmVydGV4UHJvZ3JhbSIsIG5ldyBWZXJ0ZXhQcm9ncmFtU3RyYXRlZ3koQ29tcHV0ZXIuY29tcHV0ZSgpKSwgKENvbnN1bWVyPFRyYXZlcnNhbFN0cmF0ZWd5UHJveHk+KSBzdHJhdGVneSAtPiB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhWZXJ0ZXhQcm9ncmFtU3RyYXRlZ3kuY2xhc3MsIHN0cmF0ZWd5LmdldFN0cmF0ZWd5Q2xhc3MoKSk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLkdyYXBoQ29tcHV0ZXIiLCBzdHJhdGVneS5nZXRDb25maWd1cmF0aW9uKCkuZ2V0UHJvcGVydHkoVmVydGV4UHJvZ3JhbVN0cmF0ZWd5LkdSQVBIX0NPTVBVVEVSKSk7CisgICAgICAgICAgICAgICAgfX0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiVHJhdmVyc2FsU3RyYXRlZ3lTdWJncmFwaCIsIFN1YmdyYXBoU3RyYXRlZ3kuYnVpbGQoKS52ZXJ0aWNlcyhoYXNMYWJlbCgicGVyc29uIikpLmNyZWF0ZSgpLCAoQ29uc3VtZXI8VHJhdmVyc2FsU3RyYXRlZ3lQcm94eT4pIHN0cmF0ZWd5IC0+IHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKFN1YmdyYXBoU3RyYXRlZ3kuY2xhc3MsIHN0cmF0ZWd5LmdldFN0cmF0ZWd5Q2xhc3MoKSk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhoYXNMYWJlbCgicGVyc29uIikuYXNBZG1pbigpLmdldEJ5dGVjb2RlKCksIHN0cmF0ZWd5LmdldENvbmZpZ3VyYXRpb24oKS5nZXRQcm9wZXJ0eShTdWJncmFwaFN0cmF0ZWd5LlZFUlRJQ0VTKSk7CisgICAgICAgICAgICAgICAgfX0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiQnVsa1NldCIsIGJ1bGtTZXQsIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IlRyZWUiLCB0cmVlLCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJFbXB0eU1ldHJpY3MiLCBuZXcgTXV0YWJsZU1ldHJpY3MoImlkRW1wdHkiLCAibmFtZUVtcHR5IiksIChDb25zdW1lcjxNZXRyaWNzPikgbSAtPiB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydFRoYXQobSwgbmV3IFJlZmxlY3Rpb25FcXVhbHMobmV3IE11dGFibGVNZXRyaWNzKCJpZEVtcHR5IiwgIm5hbWVFbXB0eSIpKSk7CisgICAgICAgICAgICAgICAgfX0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiTWV0cmljcyIsIG1ldHJpY3MsIChDb25zdW1lcjxNZXRyaWNzPikgbSAtPiB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydFRoYXQobSwgbmV3IFJlZmxlY3Rpb25FcXVhbHMobWV0cmljcywgIm5lc3RlZCIsICJjb3VudHMiKSk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhuZXcgQXJyYXlMaXN0KG1ldHJpY3MuZ2V0Q291bnRzKCkudmFsdWVzKCkpLCBuZXcgQXJyYXlMaXN0KG0uZ2V0Q291bnRzKCkudmFsdWVzKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0VGhhdChtLmdldE5lc3RlZCgpLCBuZXcgUmVmbGVjdGlvbkVxdWFscyhtZXRyaWNzLmdldE5lc3RlZCgpKSk7CisgICAgICAgICAgICAgICAgfX0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiRW1wdHlUcmF2ZXJzYWxNZXRyaWNzIiwgZW1wdHlUcmF2ZXJzYWxNZXRyaWNzLCAoQ29uc3VtZXI8VHJhdmVyc2FsTWV0cmljcz4pIG0gLT4geworICAgICAgICAgICAgICAgICAgICBhc3NlcnRUaGF0KG0sIG5ldyBSZWZsZWN0aW9uRXF1YWxzKGVtcHR5VHJhdmVyc2FsTWV0cmljcykpOworICAgICAgICAgICAgICAgIH19LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IlRyYXZlcnNhbE1ldHJpY3MiLCB0cmF2ZXJzYWxNZXRyaWNzLCAoQ29uc3VtZXI8VHJhdmVyc2FsTWV0cmljcz4pIG0gLT4geworICAgICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMobS50b1N0cmluZygpLCB0cmF2ZXJzYWxNZXRyaWNzLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAgICBhc3NlcnRUaGF0KG0sIG5ldyBSZWZsZWN0aW9uRXF1YWxzKHRyYXZlcnNhbE1ldHJpY3MsICJzdGVwSW5kZXhlZE1ldHJpY3MiLCAicG9zaXRpb25JbmRleGVkTWV0cmljcyIpKTsKKyAgICAgICAgICAgICAgICB9fSwKKworICAgICAgICAgICAgICAgIC8vIGNvbGxlY3Rpb25zCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiTGlzdFNpbmdsZSIsIGxpc3QsIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7Ikxpc3ROZXN0ZWQiLCBuZXN0ZWRMaXN0LCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJNYXAiLCBtYXAsIG51bGx9LAorICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7Ik1hcCIsIG5lc3RlZE1hcCwgbnVsbH0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsiU2V0Iiwgc2V0LCBudWxsfSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyJTZXROZXN0ZWQiLCBuZXN0ZWRTZXQsIG51bGx9KTsKKyAgICB9CisKKyAgICBAUGFyYW1ldGVyaXplZC5QYXJhbWV0ZXIodmFsdWUgPSAwKQorICAgIHB1YmxpYyBTdHJpbmcgbmFtZTsKKworICAgIEBQYXJhbWV0ZXJpemVkLlBhcmFtZXRlcih2YWx1ZSA9IDEpCisgICAgcHVibGljIE9iamVjdCB2YWx1ZTsKKworICAgIEBQYXJhbWV0ZXJpemVkLlBhcmFtZXRlcih2YWx1ZSA9IDIpCisgICAgcHVibGljIENvbnN1bWVyPD8+IGFzc2VydGlvbjsKKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkV3JpdGVBbmRSZWFkKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIC8vIFRlc3QgaXQgbXVsdGlwbGUgdGltZXMgYXMgdGhlIHR5cGUgcmVnaXN0cnkgbWlnaHQgY2hhbmdlIGl0cyBpbnRlcm5hbCBzdGF0ZQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDU7IGkrKykgeworICAgICAgICAgICAgZmluYWwgQnVmZmVyIGJ1ZmZlciA9IGJ1ZmZlckZhY3RvcnkuY3JlYXRlKGFsbG9jYXRvci5idWZmZXIoKSk7CisgICAgICAgICAgICB3cml0ZXIud3JpdGUodmFsdWUsIGJ1ZmZlcik7CisgICAgICAgICAgICBidWZmZXIucmVhZGVySW5kZXgoMCk7CisgICAgICAgICAgICBmaW5hbCBPYmplY3QgcmVzdWx0ID0gcmVhZGVyLnJlYWQoYnVmZmVyKTsKKworICAgICAgICAgICAgT3B0aW9uYWwub2ZOdWxsYWJsZShhc3NlcnRpb24pLm9yRWxzZSgoQ29uc3VtZXIpIHIgLT4gYXNzZXJ0RXF1YWxzKHZhbHVlLCByKSkuYWNjZXB0KHJlc3VsdCk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWRyaXZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9iaW5hcnkvVHlwZVNlcmlhbGl6ZXJGYWlsdXJlVGVzdHMuamF2YSBiL2dyZW1saW4tZHJpdmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL2JpbmFyeS9UeXBlU2VyaWFsaXplckZhaWx1cmVUZXN0cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyNjhiZjEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWRyaXZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9iaW5hcnkvVHlwZVNlcmlhbGl6ZXJGYWlsdXJlVGVzdHMuamF2YQpAQCAtMCwwICsxLDEyMyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLmJpbmFyeTsKKworaW1wb3J0IGlvLm5ldHR5LmJ1ZmZlci5VbnBvb2xlZEJ5dGVCdWZBbGxvY2F0b3I7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLk5ldHR5QnVmZmVyRmFjdG9yeTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MucmVtb3RlLnRyYXZlcnNhbC5EZWZhdWx0UmVtb3RlVHJhdmVyc2VyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuQnl0ZWNvZGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuQnVsa1NldDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5FbXB0eVBhdGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuVHJlZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuRGVmYXVsdFRyYXZlcnNhbE1ldHJpY3M7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLk11dGFibGVNZXRyaWNzOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5CdWZmZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5V3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwucmVmZXJlbmNlLlJlZmVyZW5jZUVkZ2U7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5yZWZlcmVuY2UuUmVmZXJlbmNlUGF0aDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLnJlZmVyZW5jZS5SZWZlcmVuY2VWZXJ0ZXg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5yZWZlcmVuY2UuUmVmZXJlbmNlVmVydGV4UHJvcGVydHk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi51dGlsLmZ1bmN0aW9uLkxhbWJkYTsKK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKK2ltcG9ydCBvcmcuanVuaXQucnVubmVyLlJ1bldpdGg7CitpbXBvcnQgb3JnLmp1bml0LnJ1bm5lcnMuUGFyYW1ldGVyaXplZDsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS51dGlsLkFycmF5czsKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRFcXVhbHM7CitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuZmFpbDsKKworQFJ1bldpdGgoUGFyYW1ldGVyaXplZC5jbGFzcykKK3B1YmxpYyBjbGFzcyBUeXBlU2VyaWFsaXplckZhaWx1cmVUZXN0cyB7CisKKyAgICBwcml2YXRlIGZpbmFsIEdyYXBoQmluYXJ5V3JpdGVyIHdyaXRlciA9IG5ldyBHcmFwaEJpbmFyeVdyaXRlcigpOworICAgIHByaXZhdGUgZmluYWwgVW5wb29sZWRCeXRlQnVmQWxsb2NhdG9yIGFsbG9jYXRvciA9IG5ldyBVbnBvb2xlZEJ5dGVCdWZBbGxvY2F0b3IoZmFsc2UpOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIE5ldHR5QnVmZmVyRmFjdG9yeSBidWZmZXJGYWN0b3J5ID0gbmV3IE5ldHR5QnVmZmVyRmFjdG9yeSgpOworCisgICAgQFBhcmFtZXRlcml6ZWQuUGFyYW1ldGVycyhuYW1lID0gIlZhbHVlPXswfSIpCisgICAgcHVibGljIHN0YXRpYyBDb2xsZWN0aW9uIGlucHV0KCkgeworICAgICAgICBmaW5hbCBCeXRlY29kZS5CaW5kaW5nIGIgPSBuZXcgQnl0ZWNvZGUuQmluZGluZyhudWxsLCAiYiIpOworCisgICAgICAgIGZpbmFsIFJlZmVyZW5jZVZlcnRleCB2ZXJ0ZXggPSBuZXcgUmVmZXJlbmNlVmVydGV4KCJhIHZlcnRleCIsIG51bGwpOworCisgICAgICAgIGZpbmFsIEJ5dGVjb2RlIGJ5dGVjb2RlID0gbmV3IEJ5dGVjb2RlKCk7CisgICAgICAgIGJ5dGVjb2RlLmFkZFN0ZXAobnVsbCk7CisKKyAgICAgICAgZmluYWwgQnVsa1NldDxPYmplY3Q+IGJ1bGtTZXQgPSBuZXcgQnVsa1NldDw+KCk7CisgICAgICAgIGJ1bGtTZXQuYWRkKHZlcnRleCwgMUwpOworCisgICAgICAgIGZpbmFsIE11dGFibGVNZXRyaWNzIG1ldHJpY3MgPSBuZXcgTXV0YWJsZU1ldHJpY3MoImEgbWV0cmljIiwgbnVsbCk7CisKKyAgICAgICAgZmluYWwgVHJlZTxWZXJ0ZXg+IHRyZWUgPSBuZXcgVHJlZTw+KCk7CisgICAgICAgIHRyZWUucHV0KHZlcnRleCwgbnVsbCk7CisKKyAgICAgICAgLy8gUHJvdmlkZSBpbnN0YW5jZXMgdGhhdCBhcmUgbWFsZm9ybWVkIGZvciBzZXJpYWxpemF0aW9uIHRvIGZhaWwKKyAgICAgICAgcmV0dXJuIEFycmF5cy5hc0xpc3QoCisgICAgICAgICAgICAgICAgYiwKKyAgICAgICAgICAgICAgICB2ZXJ0ZXgsCisgICAgICAgICAgICAgICAgQ29sbGVjdGlvbnMuc2luZ2xldG9uTWFwKCJvbmUiLCBiKSwKKyAgICAgICAgICAgICAgICBidWxrU2V0LAorICAgICAgICAgICAgICAgIGJ5dGVjb2RlLAorICAgICAgICAgICAgICAgIENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QodmVydGV4KSwKKyAgICAgICAgICAgICAgICBuZXcgUmVmZXJlbmNlRWRnZSgiYW4gZWRnZSIsIG51bGwsIHZlcnRleCwgdmVydGV4KSwKKyAgICAgICAgICAgICAgICBMYW1iZGEuc3VwcGxpZXIobnVsbCksCisgICAgICAgICAgICAgICAgbWV0cmljcywKKyAgICAgICAgICAgICAgICBuZXcgRGVmYXVsdFRyYXZlcnNhbE1ldHJpY3MoMUwsIENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QobWV0cmljcykpLAorICAgICAgICAgICAgICAgIG5ldyBEZWZhdWx0UmVtb3RlVHJhdmVyc2VyPD4obmV3IE9iamVjdCgpLCAxTCksCisgICAgICAgICAgICAgICAgdHJlZSwKKyAgICAgICAgICAgICAgICBuZXcgUmVmZXJlbmNlVmVydGV4UHJvcGVydHk8PigiYSBwcm9wIiwgbnVsbCwgInZhbHVlIiksCisgICAgICAgICAgICAgICAgbmV3IEludmFsaWRQYXRoKCkKKyAgICAgICAgKTsKKyAgICB9CisKKyAgICBAUGFyYW1ldGVyaXplZC5QYXJhbWV0ZXIodmFsdWUgPSAwKQorICAgIHB1YmxpYyBPYmplY3QgdmFsdWU7CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZFJlbGVhc2VNZW1vcnlXaGVuRmFpbHMoKSB7CisgICAgICAgIGZpbmFsIEJ1ZmZlciBidWZmZXIgPSBidWZmZXJGYWN0b3J5LmNyZWF0ZShhbGxvY2F0b3IuYnVmZmVyKCkpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgd3JpdGVyLndyaXRlKHZhbHVlLCBidWZmZXIpOworICAgICAgICAgICAgZmFpbCgiU2hvdWxkIHRocm93IGV4Y2VwdGlvbiIpOworICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiB8IFJ1bnRpbWVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgLy8gV2UgYXJlIHRoZSBvd25lciBvZiB0aGUgYnVmZmVyLCB3ZSBzaG91bGQgcmVsZWFzZSBpdAorICAgICAgICAgICAgYnVmZmVyLnJlbGVhc2UoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE1ha2Ugc3VyZSBhbGwgYWxsb2NhdGlvbnMgd2hlcmUgcmVsZWFzZWQKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIGFsbG9jYXRvci5tZXRyaWMoKS51c2VkSGVhcE1lbW9yeSgpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIEludmFsaWRQYXRoIGV4dGVuZHMgUmVmZXJlbmNlUGF0aCB7CisgICAgICAgIHB1YmxpYyBJbnZhbGlkUGF0aCgpIHsKKyAgICAgICAgICAgIHN1cGVyKEVtcHR5UGF0aC5pbnN0YW5jZSgpKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgTGlzdDxPYmplY3Q+IG9iamVjdHMoKSB7CisgICAgICAgICAgICByZXR1cm4gQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdChuZXcgT2JqZWN0KCkpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kcml2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvYmluYXJ5L1R5cGVTZXJpYWxpemVyUmVnaXN0cnlUZXN0LmphdmEgYi9ncmVtbGluLWRyaXZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9iaW5hcnkvVHlwZVNlcmlhbGl6ZXJSZWdpc3RyeVRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDAyODViCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvYmluYXJ5L1R5cGVTZXJpYWxpemVyUmVnaXN0cnlUZXN0LmphdmEKQEAgLTAsMCArMSwxNjUgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuYmluYXJ5OworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLmJpbmFyeS50eXBlcy5zYW1wbGUuU2FtcGxlUGVyc29uOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5iaW5hcnkudHlwZXMuc2FtcGxlLlNhbXBsZVBlcnNvblNlcmlhbGl6ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkRhdGFUeXBlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlXcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LlR5cGVTZXJpYWxpemVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5UeXBlU2VyaWFsaXplclJlZ2lzdHJ5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlByb3BlcnR5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleFByb3BlcnR5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkJ1ZmZlcjsKK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS51dGlsLlVVSUQ7CisKK2ltcG9ydCBzdGF0aWMganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlLmFzc2VydEVxdWFsczsKK2ltcG9ydCBzdGF0aWMganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlLmFzc2VydFNhbWU7CisKK3B1YmxpYyBjbGFzcyBUeXBlU2VyaWFsaXplclJlZ2lzdHJ5VGVzdCB7CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZFJlc29sdmVUb1VzZXJQcm92aWRlZEZvckludGVyZmFjZXNfMSgpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIFR5cGVTZXJpYWxpemVyPFZlcnRleFByb3BlcnR5PiBleHBlY3RlZCA9IG5ldyBUZXN0VmVydGV4UHJvcGVydHlTZXJpYWxpemVyKCk7CisgICAgICAgIGZpbmFsIFR5cGVTZXJpYWxpemVyUmVnaXN0cnkgcmVnaXN0cnkgPSBUeXBlU2VyaWFsaXplclJlZ2lzdHJ5LmJ1aWxkKCkKKyAgICAgICAgICAgICAgICAuYWRkKFZlcnRleFByb3BlcnR5LmNsYXNzLCBleHBlY3RlZCkuY3JlYXRlKCk7CisKKyAgICAgICAgYXNzZXJ0U2FtZShleHBlY3RlZCwgcmVnaXN0cnkuZ2V0U2VyaWFsaXplcihWZXJ0ZXhQcm9wZXJ0eS5jbGFzcykpOworICAgICAgICBhc3NlcnRTYW1lKGV4cGVjdGVkLCByZWdpc3RyeS5nZXRTZXJpYWxpemVyKERhdGFUeXBlLlZFUlRFWFBST1BFUlRZKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRSZXNvbHZlVG9Vc2VyUHJvdmlkZWRGb3JJbnRlcmZhY2VzXzIoKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBmaW5hbCBUeXBlU2VyaWFsaXplcjxQcm9wZXJ0eT4gZXhwZWN0ZWQgPSBuZXcgVGVzdFByb3BlcnR5U2VyaWFsaXplcigpOworICAgICAgICBmaW5hbCBUeXBlU2VyaWFsaXplclJlZ2lzdHJ5IHJlZ2lzdHJ5ID0gVHlwZVNlcmlhbGl6ZXJSZWdpc3RyeS5idWlsZCgpCisgICAgICAgICAgICAgICAgLmFkZChQcm9wZXJ0eS5jbGFzcywgZXhwZWN0ZWQpLmNyZWF0ZSgpOworCisgICAgICAgIGFzc2VydFNhbWUoZXhwZWN0ZWQsIHJlZ2lzdHJ5LmdldFNlcmlhbGl6ZXIoUHJvcGVydHkuY2xhc3MpKTsKKyAgICAgICAgYXNzZXJ0U2FtZShleHBlY3RlZCwgcmVnaXN0cnkuZ2V0U2VyaWFsaXplcihEYXRhVHlwZS5QUk9QRVJUWSkpOworICAgIH0KKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkUmVzb2x2ZVRvVXNlclByb3ZpZGVkRm9yQ2xhc3NlcygpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBmaW5hbCBUeXBlU2VyaWFsaXplcjxVVUlEPiBleHBlY3RlZCA9IG5ldyBUZXN0VVVJRFNlcmlhbGl6ZXIoKTsKKyAgICAgICAgZmluYWwgVHlwZVNlcmlhbGl6ZXJSZWdpc3RyeSByZWdpc3RyeSA9IFR5cGVTZXJpYWxpemVyUmVnaXN0cnkuYnVpbGQoKQorICAgICAgICAgICAgICAgIC5hZGQoVVVJRC5jbGFzcywgZXhwZWN0ZWQpLmNyZWF0ZSgpOworCisgICAgICAgIGFzc2VydFNhbWUoZXhwZWN0ZWQsIHJlZ2lzdHJ5LmdldFNlcmlhbGl6ZXIoVVVJRC5jbGFzcykpOworICAgICAgICBhc3NlcnRTYW1lKGV4cGVjdGVkLCByZWdpc3RyeS5nZXRTZXJpYWxpemVyKERhdGFUeXBlLlVVSUQpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZFJlc29sdmVUb1RoZUZpcnN0U2VyaWFsaXplckZvckludGVyZmFjZXMoKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBmaW5hbCBUeXBlU2VyaWFsaXplcjxWZXJ0ZXhQcm9wZXJ0eT4gZXhwZWN0ZWRGb3JWZXJ0ZXhQcm9wZXJ0eSA9IG5ldyBUZXN0VmVydGV4UHJvcGVydHlTZXJpYWxpemVyKCk7CisgICAgICAgIGZpbmFsIFR5cGVTZXJpYWxpemVyPFByb3BlcnR5PiBleHBlY3RlZEZvclByb3BlcnR5ID0gbmV3IFRlc3RQcm9wZXJ0eVNlcmlhbGl6ZXIoKTsKKyAgICAgICAgZmluYWwgVHlwZVNlcmlhbGl6ZXJSZWdpc3RyeSByZWdpc3RyeSA9IFR5cGVTZXJpYWxpemVyUmVnaXN0cnkuYnVpbGQoKQorICAgICAgICAgICAgICAgIC5hZGQoVmVydGV4UHJvcGVydHkuY2xhc3MsIGV4cGVjdGVkRm9yVmVydGV4UHJvcGVydHkpCisgICAgICAgICAgICAgICAgLmFkZChQcm9wZXJ0eS5jbGFzcywgZXhwZWN0ZWRGb3JQcm9wZXJ0eSkuY3JlYXRlKCk7CisKKyAgICAgICAgYXNzZXJ0U2FtZShleHBlY3RlZEZvclZlcnRleFByb3BlcnR5LCByZWdpc3RyeS5nZXRTZXJpYWxpemVyKFZlcnRleFByb3BlcnR5LmNsYXNzKSk7CisgICAgICAgIGFzc2VydFNhbWUoZXhwZWN0ZWRGb3JQcm9wZXJ0eSwgcmVnaXN0cnkuZ2V0U2VyaWFsaXplcihQcm9wZXJ0eS5jbGFzcykpOworICAgICAgICBhc3NlcnRTYW1lKGV4cGVjdGVkRm9yVmVydGV4UHJvcGVydHksIHJlZ2lzdHJ5LmdldFNlcmlhbGl6ZXIoRGF0YVR5cGUuVkVSVEVYUFJPUEVSVFkpKTsKKyAgICAgICAgYXNzZXJ0U2FtZShleHBlY3RlZEZvclByb3BlcnR5LCByZWdpc3RyeS5nZXRTZXJpYWxpemVyKERhdGFUeXBlLlBST1BFUlRZKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRVc2VGYWxsYmFja1Jlc29sdmVyV2hlblRoZXJlSXNOb01hdGNoKCkgeworICAgICAgICBmaW5hbCBpbnRbXSBjYWxsZWQgPSB7MH07CisgICAgICAgIGZpbmFsIFR5cGVTZXJpYWxpemVyUmVnaXN0cnkgcmVnaXN0cnkgPSBUeXBlU2VyaWFsaXplclJlZ2lzdHJ5LmJ1aWxkKCkKKyAgICAgICAgICAgICAgICAud2l0aEZhbGxiYWNrUmVzb2x2ZXIodCAtPiB7CisgICAgICAgICAgICAgICAgICAgIGNhbGxlZFswXSsrOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgICAgICB9KS5jcmVhdGUoKTsKKworICAgICAgICBTdHJpbmcgbWVzc2FnZSA9IG51bGw7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZWdpc3RyeS5nZXRTZXJpYWxpemVyKFNhbXBsZVBlcnNvbi5jbGFzcyk7CisgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICBtZXNzYWdlID0gZXguZ2V0TWVzc2FnZSgpOworICAgICAgICB9CisKKyAgICAgICAgYXNzZXJ0RXF1YWxzKCJTZXJpYWxpemVyIGZvciB0eXBlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5iaW5hcnkudHlwZXMuc2FtcGxlLlNhbXBsZVBlcnNvbiBub3QgZm91bmQiLCBtZXNzYWdlKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIGNhbGxlZFswXSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRVc2VGYWxsYmFja1Jlc29sdmVyUmV0dXJuVmFsdWUoKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBUeXBlU2VyaWFsaXplciBleHBlY3RlZCA9IG5ldyBTYW1wbGVQZXJzb25TZXJpYWxpemVyKCk7CisgICAgICAgIGZpbmFsIGludFtdIGNhbGxlZCA9IHswfTsKKyAgICAgICAgZmluYWwgVHlwZVNlcmlhbGl6ZXJSZWdpc3RyeSByZWdpc3RyeSA9IFR5cGVTZXJpYWxpemVyUmVnaXN0cnkuYnVpbGQoKQorICAgICAgICAgICAgICAgIC53aXRoRmFsbGJhY2tSZXNvbHZlcih0IC0+IHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGVkWzBdKys7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBleHBlY3RlZDsKKyAgICAgICAgICAgICAgICB9KS5jcmVhdGUoKTsKKworICAgICAgICBUeXBlU2VyaWFsaXplcjxTYW1wbGVQZXJzb24+IHNlcmlhbGl6ZXIgPSByZWdpc3RyeS5nZXRTZXJpYWxpemVyKFNhbXBsZVBlcnNvbi5jbGFzcyk7CisgICAgICAgIGFzc2VydEVxdWFscygxLCBjYWxsZWRbMF0pOworICAgICAgICBhc3NlcnRTYW1lKGV4cGVjdGVkLCBzZXJpYWxpemVyKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBUZXN0VmVydGV4UHJvcGVydHlTZXJpYWxpemVyIGV4dGVuZHMgVGVzdEJhc2VUeXBlU2VyaWFsaXplcjxWZXJ0ZXhQcm9wZXJ0eT4geworCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgRGF0YVR5cGUgZ2V0RGF0YVR5cGUoKSB7CisgICAgICAgICAgICByZXR1cm4gRGF0YVR5cGUuVkVSVEVYUFJPUEVSVFk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBUZXN0UHJvcGVydHlTZXJpYWxpemVyIGV4dGVuZHMgVGVzdEJhc2VUeXBlU2VyaWFsaXplcjxQcm9wZXJ0eT4geworCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgRGF0YVR5cGUgZ2V0RGF0YVR5cGUoKSB7CisgICAgICAgICAgICByZXR1cm4gRGF0YVR5cGUuUFJPUEVSVFk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBUZXN0VVVJRFNlcmlhbGl6ZXIgZXh0ZW5kcyBUZXN0QmFzZVR5cGVTZXJpYWxpemVyPFVVSUQ+IHsKKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIERhdGFUeXBlIGdldERhdGFUeXBlKCkgeworICAgICAgICAgICAgcmV0dXJuIERhdGFUeXBlLlVVSUQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBhYnN0cmFjdCBjbGFzcyBUZXN0QmFzZVR5cGVTZXJpYWxpemVyPFQ+IGltcGxlbWVudHMgVHlwZVNlcmlhbGl6ZXI8VD4geworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFQgcmVhZChCdWZmZXIgYnVmZmVyLCBHcmFwaEJpbmFyeVJlYWRlciBjb250ZXh0KSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVCByZWFkVmFsdWUoQnVmZmVyIGJ1ZmZlciwgR3JhcGhCaW5hcnlSZWFkZXIgY29udGV4dCwgYm9vbGVhbiBudWxsYWJsZSkgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgd3JpdGUoVCB2YWx1ZSwgQnVmZmVyIGJ1ZmZlciwgR3JhcGhCaW5hcnlXcml0ZXIgY29udGV4dCkgeworCisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgd3JpdGVWYWx1ZShUIHZhbHVlLCBCdWZmZXIgYnVmZmVyLCBHcmFwaEJpbmFyeVdyaXRlciBjb250ZXh0LCBib29sZWFuIG51bGxhYmxlKSB7CisKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tZHJpdmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL2JpbmFyeS90eXBlcy9DaGFyU2VyaWFsaXplclRlc3QuamF2YSBiL2dyZW1saW4tZHJpdmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL2JpbmFyeS90eXBlcy9DaGFyU2VyaWFsaXplclRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDM4Yzk5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvYmluYXJ5L3R5cGVzL0NoYXJTZXJpYWxpemVyVGVzdC5qYXZhCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuYmluYXJ5LnR5cGVzOworCitpbXBvcnQgaW8ubmV0dHkuYnVmZmVyLkJ5dGVCdWZBbGxvY2F0b3I7CitpbXBvcnQgaW8ubmV0dHkuYnVmZmVyLlVucG9vbGVkOworaW1wb3J0IGlvLm5ldHR5LmJ1ZmZlci5VbnBvb2xlZEJ5dGVCdWZBbGxvY2F0b3I7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLk5ldHR5QnVmZmVyRmFjdG9yeTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5CdWZmZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5UmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVdyaXRlcjsKK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKK2ltcG9ydCBvcmcuanVuaXQucnVubmVyLlJ1bldpdGg7CitpbXBvcnQgb3JnLmp1bml0LnJ1bm5lcnMuUGFyYW1ldGVyaXplZDsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS51dGlsLkFycmF5czsKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKKworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydEVxdWFsczsKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRUcnVlOworCitAUnVuV2l0aChQYXJhbWV0ZXJpemVkLmNsYXNzKQorcHVibGljIGNsYXNzIENoYXJTZXJpYWxpemVyVGVzdCB7CisgICAgcHJpdmF0ZSBmaW5hbCBCeXRlQnVmQWxsb2NhdG9yIGFsbG9jYXRvciA9IG5ldyBVbnBvb2xlZEJ5dGVCdWZBbGxvY2F0b3IoZmFsc2UpOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIE5ldHR5QnVmZmVyRmFjdG9yeSBidWZmZXJGYWN0b3J5ID0gbmV3IE5ldHR5QnVmZmVyRmFjdG9yeSgpOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgR3JhcGhCaW5hcnlSZWFkZXIgcmVhZGVyID0gbmV3IEdyYXBoQmluYXJ5UmVhZGVyKCk7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgR3JhcGhCaW5hcnlXcml0ZXIgd3JpdGVyID0gbmV3IEdyYXBoQmluYXJ5V3JpdGVyKCk7CisKKyAgICBAUGFyYW1ldGVyaXplZC5QYXJhbWV0ZXJzKG5hbWUgPSAiQ2hhcmFjdGVyPXswfSIpCisgICAgcHVibGljIHN0YXRpYyBDb2xsZWN0aW9uIGlucHV0KCkgeworICAgICAgICByZXR1cm4gQXJyYXlzLmFzTGlzdCgKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geydhJywgbmV3IGJ5dGVbXXsgMHg2MSB9fSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geydiJywgbmV3IGJ5dGVbXXsgMHg2MiB9fSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyckJywgbmV3IGJ5dGVbXXsgMHgyNCB9fSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyfCoicsIG5ldyBieXRlW117IChieXRlKTB4YzIsIChieXRlKTB4YTIgfX0sCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsn4oKsJywgbmV3IGJ5dGVbXXsgKGJ5dGUpMHhlMiwgKGJ5dGUpMHg4MiwgKGJ5dGUpMHhhYyB9fSwKKyAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyfgpLknLCBuZXcgYnl0ZVtdeyAoYnl0ZSkweGUwLCAoYnl0ZSkweGE0LCAoYnl0ZSkweGI5IH19KTsKKyAgICB9CisKKyAgICBAUGFyYW1ldGVyaXplZC5QYXJhbWV0ZXIodmFsdWUgPSAwKQorICAgIHB1YmxpYyBjaGFyIGNoYXJWYWx1ZTsKKworICAgIEBQYXJhbWV0ZXJpemVkLlBhcmFtZXRlcih2YWx1ZSA9IDEpCisgICAgcHVibGljIGJ5dGVbXSBieXRlQXJyYXk7CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHJlYWRWYWx1ZVRlc3QoKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBmaW5hbCBDaGFyYWN0ZXIgYWN0dWFsID0gcmVhZGVyLnJlYWRWYWx1ZSgKKyAgICAgICAgICAgICAgICBidWZmZXJGYWN0b3J5LmNyZWF0ZShVbnBvb2xlZC53cmFwcGVkQnVmZmVyKGJ5dGVBcnJheSkpLENoYXJhY3Rlci5jbGFzcywgZmFsc2UpOworICAgICAgICBhc3NlcnRFcXVhbHMoY2hhclZhbHVlLCBhY3R1YWwuY2hhclZhbHVlKCkpOworICAgIH0KKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgd3JpdGVWYWx1ZVRlc3QoKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBmaW5hbCBCdWZmZXIgYWN0dWFsID0gYnVmZmVyRmFjdG9yeS5jcmVhdGUoYWxsb2NhdG9yLmJ1ZmZlcigpKTsKKyAgICAgICAgd3JpdGVyLndyaXRlVmFsdWUoY2hhclZhbHVlLCBhY3R1YWwsIGZhbHNlKTsKKyAgICAgICAgZmluYWwgYnl0ZVtdIGFjdHVhbEJ5dGVzID0gbmV3IGJ5dGVbYnl0ZUFycmF5Lmxlbmd0aF07CisgICAgICAgIGFjdHVhbC5yZWFkQnl0ZXMoYWN0dWFsQnl0ZXMpOworICAgICAgICBhc3NlcnRUcnVlKEFycmF5cy5kZWVwRXF1YWxzKG5ldyBieXRlW11bXXtieXRlQXJyYXl9LCBuZXcgYnl0ZVtdW117YWN0dWFsQnl0ZXN9KSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kcml2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvYmluYXJ5L3R5cGVzL3NhbXBsZS9TYW1wbGVQZXJzb24uamF2YSBiL2dyZW1saW4tZHJpdmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL2JpbmFyeS90eXBlcy9zYW1wbGUvU2FtcGxlUGVyc29uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQ0ZDA1YQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tZHJpdmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL2JpbmFyeS90eXBlcy9zYW1wbGUvU2FtcGxlUGVyc29uLmphdmEKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5iaW5hcnkudHlwZXMuc2FtcGxlOworCitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgamF2YS51dGlsLk9iamVjdHM7CisKKy8qKgorICogQSBzYW1wbGUgY3VzdG9tIGRhdGEgdHlwZSBjb250YWluaW5nIGZldyBwcm9wZXJ0aWVzLgorICovCitwdWJsaWMgY2xhc3MgU2FtcGxlUGVyc29uIHsKKyAgICBwcml2YXRlIGZpbmFsIFN0cmluZyBuYW1lOworICAgIHByaXZhdGUgZmluYWwgRGF0ZSBiaXJ0aERhdGU7CisKKyAgICBTYW1wbGVQZXJzb24oZmluYWwgU3RyaW5nIG5hbWUsIGZpbmFsIERhdGUgYmlydGhEYXRlKSB7CisgICAgICAgIE9iamVjdHMucmVxdWlyZU5vbk51bGwobmFtZSk7CisgICAgICAgIE9iamVjdHMucmVxdWlyZU5vbk51bGwoYmlydGhEYXRlKTsKKworICAgICAgICB0aGlzLm5hbWUgPSBuYW1lOworICAgICAgICB0aGlzLmJpcnRoRGF0ZSA9IGJpcnRoRGF0ZTsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7CisgICAgICAgIHJldHVybiBuYW1lOworICAgIH0KKworICAgIHB1YmxpYyBEYXRlIGdldEJpcnRoRGF0ZSgpIHsKKyAgICAgICAgcmV0dXJuIGJpcnRoRGF0ZTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLWRyaXZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9iaW5hcnkvdHlwZXMvc2FtcGxlL1NhbXBsZVBlcnNvblNlcmlhbGl6ZXIuamF2YSBiL2dyZW1saW4tZHJpdmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvc2VyL2JpbmFyeS90eXBlcy9zYW1wbGUvU2FtcGxlUGVyc29uU2VyaWFsaXplci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkOWU1ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWRyaXZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9iaW5hcnkvdHlwZXMvc2FtcGxlL1NhbXBsZVBlcnNvblNlcmlhbGl6ZXIuamF2YQpAQCAtMCwwICsxLDExNyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5iaW5hcnkudHlwZXMuc2FtcGxlOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLlNlcmlhbGl6YXRpb25FeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uQnVmZmVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5EYXRhVHlwZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlSZWFkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5V3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS50eXBlcy5DdXN0b21UeXBlU2VyaWFsaXplcjsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5uaW8uY2hhcnNldC5TdGFuZGFyZENoYXJzZXRzOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworCisvKioKKyAqIEEgc2FtcGxlIGN1c3RvbSB0eXBlIHNlcmlhbGl6ZXIuCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBTYW1wbGVQZXJzb25TZXJpYWxpemVyIGltcGxlbWVudHMgQ3VzdG9tVHlwZVNlcmlhbGl6ZXI8U2FtcGxlUGVyc29uPiB7CisgICAgcHJpdmF0ZSBmaW5hbCBieXRlW10gdHlwZUluZm9CdWZmZXIgPSBuZXcgYnl0ZVtdIHsgMCwgMCwgMCwgMCB9OworCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFN0cmluZyBnZXRUeXBlTmFtZSgpIHsKKyAgICAgICAgcmV0dXJuICJzYW1wbGVQcm92aWRlci5TYW1wbGVQZXJzb24iOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBEYXRhVHlwZSBnZXREYXRhVHlwZSgpIHsKKyAgICAgICAgcmV0dXJuIERhdGFUeXBlLkNVU1RPTTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgU2FtcGxlUGVyc29uIHJlYWQoZmluYWwgQnVmZmVyIGJ1ZmZlciwgZmluYWwgR3JhcGhCaW5hcnlSZWFkZXIgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgLy8ge2N1c3RvbSB0eXBlIGluZm99LCB7dmFsdWVfZmxhZ30gYW5kIHt2YWx1ZX0KKyAgICAgICAgLy8gTm8gY3VzdG9tX3R5cGVfaW5mbworICAgICAgICBpZiAoYnVmZmVyLnJlYWRJbnQoKSAhPSAwKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgU2VyaWFsaXphdGlvbkV4Y2VwdGlvbigie2N1c3RvbV90eXBlX2luZm99IHNob3VsZCBub3QgYmUgcHJvdmlkZWQgZm9yIHRoaXMgY3VzdG9tIHR5cGUiKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZWFkVmFsdWUoYnVmZmVyLCBjb250ZXh0LCB0cnVlKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgU2FtcGxlUGVyc29uIHJlYWRWYWx1ZShmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVJlYWRlciBjb250ZXh0LCBmaW5hbCBib29sZWFuIG51bGxhYmxlKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBpZiAobnVsbGFibGUpIHsKKyAgICAgICAgICAgIGZpbmFsIGJ5dGUgdmFsdWVGbGFnID0gYnVmZmVyLnJlYWRCeXRlKCk7CisgICAgICAgICAgICBpZiAoKHZhbHVlRmxhZyAmIDEpID09IDEpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFJlYWQgdGhlIGJ5dGUgbGVuZ3RoIG9mIHRoZSB2YWx1ZSBieXRlcworICAgICAgICBmaW5hbCBpbnQgdmFsdWVMZW5ndGggPSBidWZmZXIucmVhZEludCgpOworCisgICAgICAgIGlmICh2YWx1ZUxlbmd0aCA8PSAwKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgU2VyaWFsaXphdGlvbkV4Y2VwdGlvbihTdHJpbmcuZm9ybWF0KCJVbmV4cGVjdGVkIHZhbHVlIGxlbmd0aDogJWQiLCB2YWx1ZUxlbmd0aCkpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHZhbHVlTGVuZ3RoID4gYnVmZmVyLnJlYWRhYmxlQnl0ZXMoKSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFNlcmlhbGl6YXRpb25FeGNlcHRpb24oCisgICAgICAgICAgICAgICAgU3RyaW5nLmZvcm1hdCgiTm90IGVub3VnaCByZWFkYWJsZSBieXRlczogJWQgKGV4cGVjdGVkICVkKSIsIHZhbHVlTGVuZ3RoLCBidWZmZXIucmVhZGFibGVCeXRlcygpKSk7CisgICAgICAgIH0KKworICAgICAgICBmaW5hbCBTdHJpbmcgbmFtZSA9IGNvbnRleHQucmVhZFZhbHVlKGJ1ZmZlciwgU3RyaW5nLmNsYXNzLCBmYWxzZSk7CisgICAgICAgIGZpbmFsIERhdGUgYmlydGhEYXRlID0gY29udGV4dC5yZWFkVmFsdWUoYnVmZmVyLCBEYXRlLmNsYXNzLCBmYWxzZSk7CisKKyAgICAgICAgcmV0dXJuIG5ldyBTYW1wbGVQZXJzb24obmFtZSwgYmlydGhEYXRlKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCB3cml0ZShmaW5hbCBTYW1wbGVQZXJzb24gdmFsdWUsIGZpbmFsIEJ1ZmZlciBidWZmZXIsIGZpbmFsIEdyYXBoQmluYXJ5V3JpdGVyIGNvbnRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIC8vIFdyaXRlIHtjdXN0b20gdHlwZSBpbmZvfSwge3ZhbHVlX2ZsYWd9IGFuZCB7dmFsdWV9CisgICAgICAgIGJ1ZmZlci53cml0ZUJ5dGVzKHR5cGVJbmZvQnVmZmVyKTsKKworICAgICAgICB3cml0ZVZhbHVlKHZhbHVlLCBidWZmZXIsIGNvbnRleHQsIHRydWUpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIHdyaXRlVmFsdWUoZmluYWwgU2FtcGxlUGVyc29uIHZhbHVlLCBmaW5hbCBCdWZmZXIgYnVmZmVyLCBmaW5hbCBHcmFwaEJpbmFyeVdyaXRlciBjb250ZXh0LCBmaW5hbCBib29sZWFuIG51bGxhYmxlKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBpZiAodmFsdWUgPT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKCFudWxsYWJsZSkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBTZXJpYWxpemF0aW9uRXhjZXB0aW9uKCJVbmV4cGVjdGVkIG51bGwgdmFsdWUgd2hlbiBudWxsYWJsZSBpcyBmYWxzZSIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjb250ZXh0LndyaXRlVmFsdWVGbGFnTnVsbChidWZmZXIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG51bGxhYmxlKSB7CisgICAgICAgICAgICBjb250ZXh0LndyaXRlVmFsdWVGbGFnTm9uZShidWZmZXIpOworICAgICAgICB9CisKKyAgICAgICAgZmluYWwgU3RyaW5nIG5hbWUgPSB2YWx1ZS5nZXROYW1lKCk7CisKKyAgICAgICAgLy8gdmFsdWVfbGVuZ3RoID0gbmFtZV9ieXRlX2xlbmd0aCArIG5hbWVfYnl0ZXMgKyBsb25nCisgICAgICAgIGJ1ZmZlci53cml0ZUludCg0ICsgbmFtZS5nZXRCeXRlcyhTdGFuZGFyZENoYXJzZXRzLlVURl84KS5sZW5ndGggKyA4KTsKKworICAgICAgICBjb250ZXh0LndyaXRlVmFsdWUobmFtZSwgYnVmZmVyLCBmYWxzZSk7CisgICAgICAgIGNvbnRleHQud3JpdGVWYWx1ZSh2YWx1ZS5nZXRCaXJ0aERhdGUoKSwgYnVmZmVyLCBmYWxzZSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1kcml2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvYmluYXJ5L3R5cGVzL3NhbXBsZS9TYW1wbGVQZXJzb25TZXJpYWxpemVyVGVzdC5qYXZhIGIvZ3JlbWxpbi1kcml2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9zZXIvYmluYXJ5L3R5cGVzL3NhbXBsZS9TYW1wbGVQZXJzb25TZXJpYWxpemVyVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkNmJlZjMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLWRyaXZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3Nlci9iaW5hcnkvdHlwZXMvc2FtcGxlL1NhbXBsZVBlcnNvblNlcmlhbGl6ZXJUZXN0LmphdmEKQEAgLTAsMCArMSwxMjUgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuYmluYXJ5LnR5cGVzLnNhbXBsZTsKKworaW1wb3J0IGlvLm5ldHR5LmJ1ZmZlci5CeXRlQnVmOworaW1wb3J0IGlvLm5ldHR5LmJ1ZmZlci5CeXRlQnVmQWxsb2NhdG9yOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5OZXR0eUJ1ZmZlckZhY3Rvcnk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIubWVzc2FnZS5SZXNwb25zZU1lc3NhZ2U7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5BYnN0cmFjdElvUmVnaXN0cnk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uQnVmZmVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeUlvOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlXcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LlR5cGVTZXJpYWxpemVyUmVnaXN0cnk7CitpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CitpbXBvcnQgb3JnLm1vY2tpdG8uaW50ZXJuYWwubWF0Y2hlcnMuYXBhY2hlY29tbW9ucy5SZWZsZWN0aW9uRXF1YWxzOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnRpbWUuTG9jYWxEYXRlVGltZTsKK2ltcG9ydCBqYXZhLnRpbWUuWm9uZU9mZnNldDsKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CitpbXBvcnQgamF2YS51dGlsLk1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuVVVJRDsKKworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuQWJzdHJhY3RNZXNzYWdlU2VyaWFsaXplci5UT0tFTl9JT19SRUdJU1RSSUVTOworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxLlRPS0VOX0NVU1RPTTsKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRUaGF0OworCitwdWJsaWMgY2xhc3MgU2FtcGxlUGVyc29uU2VyaWFsaXplclRlc3QgeworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgQnl0ZUJ1ZkFsbG9jYXRvciBhbGxvY2F0b3IgPSBCeXRlQnVmQWxsb2NhdG9yLkRFRkFVTFQ7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTmV0dHlCdWZmZXJGYWN0b3J5IGJ1ZmZlckZhY3RvcnkgPSBuZXcgTmV0dHlCdWZmZXJGYWN0b3J5KCk7CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZEN1c3RvbVNlcmlhbGl6YXRpb25XaXRoUGVyc29uKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxIHNlcmlhbGl6ZXIgPSBuZXcgR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxKAorICAgICAgICAgICAgICAgIFR5cGVTZXJpYWxpemVyUmVnaXN0cnkuYnVpbGQoKS5hZGRDdXN0b21UeXBlKFNhbXBsZVBlcnNvbi5jbGFzcywgbmV3IFNhbXBsZVBlcnNvblNlcmlhbGl6ZXIoKSkuY3JlYXRlKCkpOworICAgICAgICBhc3NlcnRQZXJzb24oc2VyaWFsaXplcik7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRTZXJpYWxpemVQZXJzb25WaWFJb1JlZ2lzdHJ5KCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxIHNlcmlhbGl6ZXIgPSBuZXcgR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxKCk7CisgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsT2JqZWN0PiBjb25maWcgPSBuZXcgSGFzaE1hcDw+KCk7CisgICAgICAgIGNvbmZpZy5wdXQoVE9LRU5fSU9fUkVHSVNUUklFUywgQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdChDdXN0b21Jb1JlZ2lzdHJ5LmNsYXNzLmdldE5hbWUoKSkpOworICAgICAgICBzZXJpYWxpemVyLmNvbmZpZ3VyZShjb25maWcsIENvbGxlY3Rpb25zLmVtcHR5TWFwKCkpOworCisgICAgICAgIGFzc2VydFBlcnNvbihzZXJpYWxpemVyKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZFNlcmlhbGl6ZVBlcnNvblZpYUN1c3RvbSgpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIEdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMSBzZXJpYWxpemVyID0gbmV3IEdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMSgpOworICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLE9iamVjdD4gY29uZmlnID0gbmV3IEhhc2hNYXA8PigpOworICAgICAgICBjb25maWcucHV0KFRPS0VOX0NVU1RPTSwgQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdChTdHJpbmcuZm9ybWF0KCIlczslcyIsCisgICAgICAgICAgICAgICAgU2FtcGxlUGVyc29uLmNsYXNzLmdldENhbm9uaWNhbE5hbWUoKSwgU2FtcGxlUGVyc29uU2VyaWFsaXplci5jbGFzcy5nZXRDYW5vbmljYWxOYW1lKCkpKSk7CisgICAgICAgIHNlcmlhbGl6ZXIuY29uZmlndXJlKGNvbmZpZywgQ29sbGVjdGlvbnMuZW1wdHlNYXAoKSk7CisKKyAgICAgICAgYXNzZXJ0UGVyc29uKHNlcmlhbGl6ZXIpOworICAgIH0KKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgcmVhZFZhbHVlQW5kV3JpdGVWYWx1ZVNob3VsZEJlU3ltbWV0cmljKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgVHlwZVNlcmlhbGl6ZXJSZWdpc3RyeSByZWdpc3RyeSA9IFR5cGVTZXJpYWxpemVyUmVnaXN0cnkuYnVpbGQoKQorICAgICAgICAgICAgICAgIC5hZGRDdXN0b21UeXBlKFNhbXBsZVBlcnNvbi5jbGFzcywgbmV3IFNhbXBsZVBlcnNvblNlcmlhbGl6ZXIoKSkuY3JlYXRlKCk7CisgICAgICAgIGZpbmFsIEdyYXBoQmluYXJ5UmVhZGVyIHJlYWRlciA9IG5ldyBHcmFwaEJpbmFyeVJlYWRlcihyZWdpc3RyeSk7CisgICAgICAgIGZpbmFsIEdyYXBoQmluYXJ5V3JpdGVyIHdyaXRlciA9IG5ldyBHcmFwaEJpbmFyeVdyaXRlcihyZWdpc3RyeSk7CisKKyAgICAgICAgZmluYWwgU2FtcGxlUGVyc29uIHBlcnNvbiA9IG5ldyBTYW1wbGVQZXJzb24oIk1hdGlhcyIsCisgICAgICAgICAgICAgICAgRGF0ZS5mcm9tKExvY2FsRGF0ZVRpbWUub2YoMjAwNSwgOCwgNSwgMSwgMCkudG9JbnN0YW50KFpvbmVPZmZzZXQuVVRDKSkpOworCisgICAgICAgIGZvciAoYm9vbGVhbiBudWxsYWJsZTogbmV3IGJvb2xlYW5bXSB7IHRydWUsIGZhbHNlIH0pIHsKKyAgICAgICAgICAgIGZpbmFsIEJ1ZmZlciBidWZmZXIgPSBidWZmZXJGYWN0b3J5LmNyZWF0ZShhbGxvY2F0b3IuYnVmZmVyKCkpOworICAgICAgICAgICAgd3JpdGVyLndyaXRlVmFsdWUocGVyc29uLCBidWZmZXIsIG51bGxhYmxlKTsKKyAgICAgICAgICAgIGZpbmFsIFNhbXBsZVBlcnNvbiBhY3R1YWwgPSByZWFkZXIucmVhZFZhbHVlKGJ1ZmZlciwgU2FtcGxlUGVyc29uLmNsYXNzLCBudWxsYWJsZSk7CisKKyAgICAgICAgICAgIGFzc2VydFRoYXQoYWN0dWFsLCBuZXcgUmVmbGVjdGlvbkVxdWFscyhwZXJzb24pKTsKKyAgICAgICAgICAgIGJ1ZmZlci5yZWxlYXNlKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgYXNzZXJ0UGVyc29uKGZpbmFsIEdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMSBzZXJpYWxpemVyKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBmaW5hbCBEYXRlIGJpcnRoRGF0ZSA9IERhdGUuZnJvbShMb2NhbERhdGVUaW1lLm9mKDIwMTAsIDQsIDI5LCA1LCAzMCkudG9JbnN0YW50KFpvbmVPZmZzZXQuVVRDKSk7CisgICAgICAgIGZpbmFsIFNhbXBsZVBlcnNvbiBwZXJzb24gPSBuZXcgU2FtcGxlUGVyc29uKCJPbGl2aWEiLCBiaXJ0aERhdGUpOworCisgICAgICAgIGZpbmFsIEJ5dGVCdWYgc2VyaWFsaXplZCA9IHNlcmlhbGl6ZXIuc2VyaWFsaXplUmVzcG9uc2VBc0JpbmFyeSgKKyAgICAgICAgICAgICAgICBSZXNwb25zZU1lc3NhZ2UuYnVpbGQoVVVJRC5yYW5kb21VVUlEKCkpLnJlc3VsdChwZXJzb24pLmNyZWF0ZSgpLCBhbGxvY2F0b3IpOworCisgICAgICAgIGZpbmFsIFJlc3BvbnNlTWVzc2FnZSBkZXNlcmlhbGl6ZWQgPSBzZXJpYWxpemVyLmRlc2VyaWFsaXplUmVzcG9uc2Uoc2VyaWFsaXplZCk7CisKKyAgICAgICAgZmluYWwgU2FtcGxlUGVyc29uIGFjdHVhbCA9IChTYW1wbGVQZXJzb24pIGRlc2VyaWFsaXplZC5nZXRSZXN1bHQoKS5nZXREYXRhKCk7CisgICAgICAgIGFzc2VydFRoYXQoYWN0dWFsLCBuZXcgUmVmbGVjdGlvbkVxdWFscyhwZXJzb24pKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIEN1c3RvbUlvUmVnaXN0cnkgZXh0ZW5kcyBBYnN0cmFjdElvUmVnaXN0cnkgeworICAgICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBDdXN0b21Jb1JlZ2lzdHJ5IGlvcmVnID0gbmV3IEN1c3RvbUlvUmVnaXN0cnkoKTsKKworICAgICAgICBwcml2YXRlIEN1c3RvbUlvUmVnaXN0cnkoKSB7CisgICAgICAgICAgICByZWdpc3RlcihHcmFwaEJpbmFyeUlvLmNsYXNzLCBTYW1wbGVQZXJzb24uY2xhc3MsIG5ldyBTYW1wbGVQZXJzb25TZXJpYWxpemVyKCkpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHN0YXRpYyBDdXN0b21Jb1JlZ2lzdHJ5IGluc3RhbmNlKCkgeworICAgICAgICAgICAgcmV0dXJuIGlvcmVnOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1ncm9vdnkvcG9tLnhtbCBiL2dyZW1saW4tZ3Jvb3Z5L3BvbS54bWwKaW5kZXggNjg2Njg1NC4uNjk5OTdkMyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1ncm9vdnkvcG9tLnhtbAorKysgYi9ncmVtbGluLWdyb292eS9wb20ueG1sCkBAIC0yMSw3ICsyMSw3IEBACiAgICAgPHBhcmVudD4KICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS50aW5rZXJwb3A8L2dyb3VwSWQ+CiAgICAgICAgIDxhcnRpZmFjdElkPnRpbmtlcnBvcDwvYXJ0aWZhY3RJZD4KLSAgICAgICAgPHZlcnNpb24+My4zLjExLVNOQVBTSE9UPC92ZXJzaW9uPgorICAgICAgICA8dmVyc2lvbj4zLjQuNy1TTkFQU0hPVDwvdmVyc2lvbj4KICAgICA8L3BhcmVudD4KICAgICA8YXJ0aWZhY3RJZD5ncmVtbGluLWdyb292eTwvYXJ0aWZhY3RJZD4KICAgICA8bmFtZT5BcGFjaGUgVGlua2VyUG9wIDo6IEdyZW1saW4gR3Jvb3Z5PC9uYW1lPgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1ncm9vdnkvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZS5qYXZhIGIvZ3JlbWxpbi1ncm9vdnkvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZS5qYXZhCmluZGV4IDE4ZDEwZmYuLjZlNjg1N2YgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZ3Jvb3Z5L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL0dyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUuamF2YQorKysgYi9ncmVtbGluLWdyb292eS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9HcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lLmphdmEKQEAgLTkwLDggKzkwLDcgQEAKICAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKICAqIEBzZWUgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5ncm9vdnkuZW5naW5lLkdyZW1saW5FeGVjdXRvcgogICovCi1wdWJsaWMgY2xhc3MgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZSBleHRlbmRzIEdyb292eVNjcmlwdEVuZ2luZUltcGwKLSAgICAgICAgaW1wbGVtZW50cyBBdXRvQ2xvc2VhYmxlLCBHcmVtbGluU2NyaXB0RW5naW5lIHsKK3B1YmxpYyBjbGFzcyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lIGV4dGVuZHMgR3Jvb3Z5U2NyaXB0RW5naW5lSW1wbCBpbXBsZW1lbnRzIEdyZW1saW5TY3JpcHRFbmdpbmUgewogCiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUuY2xhc3MpOwogICAgIC8qKgpAQCAtMjU5LDcgKzI1OCw3IEBACiAgICAgICAgICAgICAgICAgZmlsdGVyKHAgLT4gcCBpbnN0YW5jZW9mIFRyYW5zbGF0b3JDdXN0b21pemVyKS4KICAgICAgICAgICAgICAgICBtYXAocCAtPiAoVHJhbnNsYXRvckN1c3RvbWl6ZXIpIHApLmZpbmRGaXJzdCgpOwogICAgICAgICB0eXBlVHJhbnNsYXRvciA9IHRyYW5zbGF0b3JDdXN0b21pemVyLm1hcChUcmFuc2xhdG9yQ3VzdG9taXplcjo6Y3JlYXRlVHlwZVRyYW5zbGF0b3IpLgotICAgICAgICAgICAgICAgIG9yRWxzZShUcmFuc2xhdG9yLlNjcmlwdFRyYW5zbGF0b3IuVHlwZVRyYW5zbGF0b3IuaWRlbnRpdHkoKSk7CisgICAgICAgICAgICAgICAgb3JFbHNlR2V0KEdyb292eVRyYW5zbGF0b3IuRGVmYXVsdFR5cGVUcmFuc2xhdG9yOjpuZXcpOwogCiAgICAgICAgIGNyZWF0ZUNsYXNzTG9hZGVyKCk7CiAgICAgfQpAQCAtMjk4LDE1ICsyOTcsNiBAQAogICAgIH0KIAogICAgIC8qKgotICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy4yLjQsIG5vdCByZXBsYWNlZCBhcyB0aGlzIGNsYXNzIHdpbGwgbm90IGltcGxlbWVudCB7QGNvZGUgQXV0b0Nsb3NlYWJsZX0gaW4gdGhlCi0gICAgICogZnV0dXJlLgotICAgICAqLwotICAgIEBPdmVycmlkZQotICAgIEBEZXByZWNhdGVkCi0gICAgcHVibGljIHZvaWQgY2xvc2UoKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICB9Ci0KLSAgICAvKioKICAgICAgKiBSZXNldHMgdGhlIGVudGlyZSB7QGNvZGUgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZX0gYnkgY2xlYXJpbmcgc2NyaXB0IGNhY2hlcywgcmVjcmVhdGluZyB0aGUgY2xhc3Nsb2FkZXIsCiAgICAgICogY2xlYXJpbmcgYmluZGluZ3MuCiAgICAgICovCmRpZmYgLS1naXQgYS9ncmVtbGluLWdyb292eS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9Hcm9vdnlUcmFuc2xhdG9yLmphdmEgYi9ncmVtbGluLWdyb292eS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9Hcm9vdnlUcmFuc2xhdG9yLmphdmEKaW5kZXggYmExNDk5Ni4uNTA1Zjg4YSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1ncm9vdnkvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvR3Jvb3Z5VHJhbnNsYXRvci5qYXZhCisrKyBiL2dyZW1saW4tZ3Jvb3Z5L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL0dyb292eVRyYW5zbGF0b3IuamF2YQpAQCAtMjQsNiArMjQsNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuQnl0ZWNvZGU7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuU2Fja0Z1bmN0aW9uczsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRleHRQOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhbnNsYXRvcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbFNvdXJjZTsKQEAgLTY5LDE4ICs3MCwxOSBAQAogICAgIH0KIAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgR3Jvb3Z5VHJhbnNsYXRvciBvZihmaW5hbCBTdHJpbmcgdHJhdmVyc2FsU291cmNlKSB7Ci0gICAgICAgIHJldHVybiBvZih0cmF2ZXJzYWxTb3VyY2UsIFR5cGVUcmFuc2xhdG9yLmlkZW50aXR5KCkpOworICAgICAgICByZXR1cm4gb2YodHJhdmVyc2FsU291cmNlLCBudWxsKTsKICAgICB9CiAKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIEdyb292eVRyYW5zbGF0b3Igb2YoZmluYWwgU3RyaW5nIHRyYXZlcnNhbFNvdXJjZSwgZmluYWwgVHlwZVRyYW5zbGF0b3IgdHlwZVRyYW5zbGF0b3IpIHsKLSAgICAgICAgcmV0dXJuIG5ldyBHcm9vdnlUcmFuc2xhdG9yKHRyYXZlcnNhbFNvdXJjZSwgT3B0aW9uYWwub2ZOdWxsYWJsZSh0eXBlVHJhbnNsYXRvcikub3JFbHNlKFR5cGVUcmFuc2xhdG9yLmlkZW50aXR5KCkpKTsKKyAgICAgICAgcmV0dXJuIG5ldyBHcm9vdnlUcmFuc2xhdG9yKHRyYXZlcnNhbFNvdXJjZSwKKyAgICAgICAgICAgICAgICBPcHRpb25hbC5vZk51bGxhYmxlKHR5cGVUcmFuc2xhdG9yKS5vckVsc2VHZXQoRGVmYXVsdFR5cGVUcmFuc2xhdG9yOjpuZXcpKTsKICAgICB9CiAKICAgICAvLy8vLy8vCiAKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgU3RyaW5nIHRyYW5zbGF0ZShmaW5hbCBCeXRlY29kZSBieXRlY29kZSkgewotICAgICAgICByZXR1cm4gdGhpcy5pbnRlcm5hbFRyYW5zbGF0ZSh0aGlzLnRyYXZlcnNhbFNvdXJjZSwgYnl0ZWNvZGUpOworICAgICAgICByZXR1cm4gdHlwZVRyYW5zbGF0b3IuYXBwbHkodHJhdmVyc2FsU291cmNlLCBieXRlY29kZSkudG9TdHJpbmcoKTsKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKQEAgLTk4LDE3MCArMTAwLDE4MSBAQAogICAgICAgICByZXR1cm4gdGhpcy50cmF2ZXJzYWxTb3VyY2U7CiAgICAgfQogCi0gICAgLy8vLy8vLworICAgIC8qKgorICAgICAqIFBlcmZvcm1zIHN0YW5kYXJkIHR5cGUgdHJhbnNsYXRpb24gZm9yIHRoZSBUaW5rZXJQb3AgdHlwZXMgdG8gR3Jvb3Z5LgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgRGVmYXVsdFR5cGVUcmFuc2xhdG9yIGltcGxlbWVudHMgVHlwZVRyYW5zbGF0b3IgewogCi0gICAgcHJpdmF0ZSBTdHJpbmcgaW50ZXJuYWxUcmFuc2xhdGUoZmluYWwgU3RyaW5nIHN0YXJ0LCBmaW5hbCBCeXRlY29kZSBieXRlY29kZSkgewotICAgICAgICBmaW5hbCBTdHJpbmdCdWlsZGVyIHRyYXZlcnNhbFNjcmlwdCA9IG5ldyBTdHJpbmdCdWlsZGVyKHN0YXJ0KTsKLSAgICAgICAgZm9yIChmaW5hbCBCeXRlY29kZS5JbnN0cnVjdGlvbiBpbnN0cnVjdGlvbiA6IGJ5dGVjb2RlLmdldEluc3RydWN0aW9ucygpKSB7Ci0gICAgICAgICAgICBmaW5hbCBTdHJpbmcgbWV0aG9kTmFtZSA9IGluc3RydWN0aW9uLmdldE9wZXJhdG9yKCk7Ci0gICAgICAgICAgICBpZiAoMCA9PSBpbnN0cnVjdGlvbi5nZXRBcmd1bWVudHMoKS5sZW5ndGgpCi0gICAgICAgICAgICAgICAgdHJhdmVyc2FsU2NyaXB0LmFwcGVuZCgiLiIpLmFwcGVuZChtZXRob2ROYW1lKS5hcHBlbmQoIigpIik7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICB0cmF2ZXJzYWxTY3JpcHQuYXBwZW5kKCIuIik7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIHRlbXAgPSBtZXRob2ROYW1lICsgIigiOwotCi0gICAgICAgICAgICAgICAgLy8gaGF2ZSB0byBzcGVjaWFsIGNhc2Ugd2l0aFNhY2soKSBmb3IgR3Jvb3Z5IGJlY2F1c2UgVW5hcnlPcGVyYXRvciBhbmQgQmluYXJ5T3BlcmF0b3Igc2lnbmF0dXJlcwotICAgICAgICAgICAgICAgIC8vIG1ha2UgaXQgaW1wb3NzaWJsZSBmb3IgdGhlIGludGVycHJldGVyIHRvIGZpZ3VyZSBvdXQgd2hpY2ggZnVuY3Rpb24gdG8gY2FsbC4gc3BlY2lmaWNhbGx5IHdlIG5lZWQKLSAgICAgICAgICAgICAgICAvLyB0byBkaXNjZXJuIGJldHdlZW46Ci0gICAgICAgICAgICAgICAgLy8gICAgIHdpdGhTYWNrKEEgaW5pdGlhbFZhbHVlLCBVbmFyeU9wZXJhdG9yPEE+IHNwbGl0T3BlcmF0b3IpCi0gICAgICAgICAgICAgICAgLy8gICAgIHdpdGhTYWNrKEEgaW5pdGlhbFZhbHVlLCBCaW5hcnlPcGVyYXRvcjxBPiBzcGxpdE9wZXJhdG9yKQotICAgICAgICAgICAgICAgIC8vIGFuZDoKLSAgICAgICAgICAgICAgICAvLyAgICAgd2l0aFNhY2soU3VwcGxpZXI8QT4gaW5pdGlhbFZhbHVlLCBVbmFyeU9wZXJhdG9yPEE+IG1lcmdlT3BlcmF0b3IpCi0gICAgICAgICAgICAgICAgLy8gICAgIHdpdGhTYWNrKFN1cHBsaWVyPEE+IGluaXRpYWxWYWx1ZSwgQmluYXJ5T3BlcmF0b3I8QT4gbWVyZ2VPcGVyYXRvcikKLSAgICAgICAgICAgICAgICBpZiAobWV0aG9kTmFtZS5lcXVhbHMoVHJhdmVyc2FsU291cmNlLlN5bWJvbHMud2l0aFNhY2spICYmCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbi5nZXRBcmd1bWVudHMoKS5sZW5ndGggPT0gMiAmJiBpbnN0cnVjdGlvbi5nZXRBcmd1bWVudHMoKVsxXSBpbnN0YW5jZW9mIExhbWJkYSkgewotICAgICAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgY2FzdEZpcnN0QXJnVG8gPSBpbnN0cnVjdGlvbi5nZXRBcmd1bWVudHMoKVswXSBpbnN0YW5jZW9mIExhbWJkYSA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU3VwcGxpZXIuY2xhc3MuZ2V0TmFtZSgpIDogIiI7Ci0gICAgICAgICAgICAgICAgICAgIGZpbmFsIExhbWJkYSBzZWNvbmRBcmcgPSAoTGFtYmRhKSBpbnN0cnVjdGlvbi5nZXRBcmd1bWVudHMoKVsxXTsKLSAgICAgICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nIGNhc3RTZWNvbmRBcmdUbyA9IHNlY29uZEFyZy5nZXRMYW1iZGFBcmd1bWVudHMoKSA9PSAxID8gVW5hcnlPcGVyYXRvci5jbGFzcy5nZXROYW1lKCkgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpbmFyeU9wZXJhdG9yLmNsYXNzLmdldE5hbWUoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjYXN0Rmlyc3RBcmdUby5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICB0ZW1wID0gdGVtcCArIFN0cmluZy5mb3JtYXQoIiglcykgIiwgY2FzdEZpcnN0QXJnVG8pOwotICAgICAgICAgICAgICAgICAgICB0ZW1wID0gdGVtcCArIFN0cmluZy5mb3JtYXQoIiVzLCAoJXMpICVzLCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydFRvU3RyaW5nKGluc3RydWN0aW9uLmdldEFyZ3VtZW50cygpWzBdKSwgY2FzdFNlY29uZEFyZ1RvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydFRvU3RyaW5nKGluc3RydWN0aW9uLmdldEFyZ3VtZW50cygpWzFdKSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgZm9yIChmaW5hbCBPYmplY3Qgb2JqZWN0IDogaW5zdHJ1Y3Rpb24uZ2V0QXJndW1lbnRzKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAgPSB0ZW1wICsgY29udmVydFRvU3RyaW5nKG9iamVjdCkgKyAiLCI7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgdHJhdmVyc2FsU2NyaXB0LmFwcGVuZCh0ZW1wLnN1YnN0cmluZygwLCB0ZW1wLmxlbmd0aCgpIC0gMSkpLmFwcGVuZCgiKSIpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cmF2ZXJzYWxTY3JpcHQudG9TdHJpbmcoKTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIFN0cmluZyBjb252ZXJ0VG9TdHJpbmcoZmluYWwgT2JqZWN0IG8pIHsKLSAgICAgICAgLy8gYSBUeXBlVHJhbnNsYXRvciB0aGF0IHJldHVybnMgSGFuZGxlZCBtZWFucyB0aGF0IHRoZSB0eXBldHJhbnNsYXRvciBmaWd1cmUgb3V0IGhvdyB0byBjb252ZXJ0IHRoZQotICAgICAgICAvLyBvYmplY3QgdG8gYSBzdHJpbmcgYW5kIGl0IHNob3VsZCBiZSB1c2VkIGFzLWlzLCBvdGhlcndpc2UgaXQgZ2V0cyBwYXNzZWQgZG93biB0aGUgbGluZSB0aHJvdWdoIHRoZSBub3JtYWwKLSAgICAgICAgLy8gcHJvY2VzcwotICAgICAgICBmaW5hbCBPYmplY3Qgb2JqZWN0ID0gdHlwZVRyYW5zbGF0b3IuYXBwbHkobyk7Ci0KLSAgICAgICAgaWYgKG9iamVjdCBpbnN0YW5jZW9mIEhhbmRsZWQpCi0gICAgICAgICAgICByZXR1cm4gKChIYW5kbGVkKSBvYmplY3QpLmdldFRyYW5zbGF0aW9uKCk7Ci0gICAgICAgIGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIEJ5dGVjb2RlLkJpbmRpbmcpCi0gICAgICAgICAgICByZXR1cm4gKChCeXRlY29kZS5CaW5kaW5nKSBvYmplY3QpLnZhcmlhYmxlKCk7Ci0gICAgICAgIGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIEJ5dGVjb2RlKQotICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW50ZXJuYWxUcmFuc2xhdGUoIl9fIiwgKEJ5dGVjb2RlKSBvYmplY3QpOwotICAgICAgICBlbHNlIGlmIChvYmplY3QgaW5zdGFuY2VvZiBUcmF2ZXJzYWwpCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvU3RyaW5nKCgoVHJhdmVyc2FsKSBvYmplY3QpLmFzQWRtaW4oKS5nZXRCeXRlY29kZSgpKTsKLSAgICAgICAgZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgU3RyaW5nKSB7Ci0gICAgICAgICAgICByZXR1cm4gKCgoU3RyaW5nKSBvYmplY3QpLmNvbnRhaW5zKCJcIiIpID8gIlwiXCJcIiIgKyBTdHJpbmdFc2NhcGVVdGlscy5lc2NhcGVKYXZhKChTdHJpbmcpIG9iamVjdCkgKyAiXCJcIlwiIiA6ICJcIiIgKyBTdHJpbmdFc2NhcGVVdGlscy5lc2NhcGVKYXZhKChTdHJpbmcpIG9iamVjdCkgKyAiXCIiKQotICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgiJCIsICJcXCQiKTsKLSAgICAgICAgfSBlbHNlIGlmIChvYmplY3QgaW5zdGFuY2VvZiBTZXQpIHsKLSAgICAgICAgICAgIGZpbmFsIFNldDxTdHJpbmc+IHNldCA9IG5ldyBIYXNoU2V0PD4oKChTZXQpIG9iamVjdCkuc2l6ZSgpKTsKLSAgICAgICAgICAgIGZvciAoZmluYWwgT2JqZWN0IGl0ZW0gOiAoU2V0KSBvYmplY3QpIHsKLSAgICAgICAgICAgICAgICBzZXQuYWRkKGNvbnZlcnRUb1N0cmluZyhpdGVtKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gc2V0LnRvU3RyaW5nKCkgKyAiIGFzIFNldCI7Ci0gICAgICAgIH0gZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgTGlzdCkgewotICAgICAgICAgICAgZmluYWwgTGlzdDxTdHJpbmc+IGxpc3QgPSBuZXcgQXJyYXlMaXN0PD4oKChMaXN0KSBvYmplY3QpLnNpemUoKSk7Ci0gICAgICAgICAgICBmb3IgKGZpbmFsIE9iamVjdCBpdGVtIDogKExpc3QpIG9iamVjdCkgewotICAgICAgICAgICAgICAgIGxpc3QuYWRkKGNvbnZlcnRUb1N0cmluZyhpdGVtKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gbGlzdC50b1N0cmluZygpOwotICAgICAgICB9IGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIE1hcCkgewotICAgICAgICAgICAgZmluYWwgU3RyaW5nQnVpbGRlciBtYXAgPSBuZXcgU3RyaW5nQnVpbGRlcigiWyIpOwotICAgICAgICAgICAgZm9yIChmaW5hbCBNYXAuRW50cnk8PywgPz4gZW50cnkgOiAoKE1hcDw/LCA/Pikgb2JqZWN0KS5lbnRyeVNldCgpKSB7Ci0gICAgICAgICAgICAgICAgbWFwLmFwcGVuZCgiKCIpLgotICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKGNvbnZlcnRUb1N0cmluZyhlbnRyeS5nZXRLZXkoKSkpLgotICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKCIpOigiKS4KLSAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZChjb252ZXJ0VG9TdHJpbmcoZW50cnkuZ2V0VmFsdWUoKSkpLgotICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKCIpLCIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBvbmx5IG5lZWQgdG8gcmVtb3ZlIHRoaXMgbGFzdCBiaXQgaWYgZW50cmllcyB3ZXJlIGFkZGVkCi0gICAgICAgICAgICBpZiAoISgoTWFwPD8sID8+KSBvYmplY3QpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBtYXAuZGVsZXRlQ2hhckF0KG1hcC5sZW5ndGgoKSAtIDEpOwotCi0gICAgICAgICAgICByZXR1cm4gbWFwLmFwcGVuZCgiXSIpLnRvU3RyaW5nKCk7Ci0gICAgICAgIH0gZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgTG9uZykKLSAgICAgICAgICAgIHJldHVybiBvYmplY3QgKyAiTCI7Ci0gICAgICAgIGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIERvdWJsZSkKLSAgICAgICAgICAgIHJldHVybiBvYmplY3QgKyAiZCI7Ci0gICAgICAgIGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIEZsb2F0KQotICAgICAgICAgICAgcmV0dXJuIG9iamVjdCArICJmIjsKLSAgICAgICAgZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgSW50ZWdlcikKLSAgICAgICAgICAgIHJldHVybiAiKGludCkgIiArIG9iamVjdDsKLSAgICAgICAgZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgQ2xhc3MpCi0gICAgICAgICAgICByZXR1cm4gKChDbGFzcykgb2JqZWN0KS5nZXRDYW5vbmljYWxOYW1lKCk7Ci0gICAgICAgIGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIFRpbWVzdGFtcCkKLSAgICAgICAgICAgIHJldHVybiAibmV3IGphdmEuc3FsLlRpbWVzdGFtcCgiICsgKChUaW1lc3RhbXApIG9iamVjdCkuZ2V0VGltZSgpICsgIikiOwotICAgICAgICBlbHNlIGlmIChvYmplY3QgaW5zdGFuY2VvZiBEYXRlKQotICAgICAgICAgICAgcmV0dXJuICJuZXcgamF2YS51dGlsLkRhdGUoIiArICgoRGF0ZSkgb2JqZWN0KS5nZXRUaW1lKCkgKyAiKSI7Ci0gICAgICAgIGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIFVVSUQpCi0gICAgICAgICAgICByZXR1cm4gImphdmEudXRpbC5VVUlELmZyb21TdHJpbmcoJyIgKyBvYmplY3QudG9TdHJpbmcoKSArICInKSI7Ci0gICAgICAgIGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIFApCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFBUb1N0cmluZygoUCkgb2JqZWN0LCBuZXcgU3RyaW5nQnVpbGRlcigpKS50b1N0cmluZygpOwotICAgICAgICBlbHNlIGlmIChvYmplY3QgaW5zdGFuY2VvZiBTYWNrRnVuY3Rpb25zLkJhcnJpZXIpCi0gICAgICAgICAgICByZXR1cm4gIlNhY2tGdW5jdGlvbnMuQmFycmllci4iICsgb2JqZWN0LnRvU3RyaW5nKCk7Ci0gICAgICAgIGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIFZlcnRleFByb3BlcnR5LkNhcmRpbmFsaXR5KQotICAgICAgICAgICAgcmV0dXJuICJWZXJ0ZXhQcm9wZXJ0eS5DYXJkaW5hbGl0eS4iICsgb2JqZWN0LnRvU3RyaW5nKCk7Ci0gICAgICAgIGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIFRyYXZlcnNhbE9wdGlvblBhcmVudC5QaWNrKQotICAgICAgICAgICAgcmV0dXJuICJUcmF2ZXJzYWxPcHRpb25QYXJlbnQuUGljay4iICsgb2JqZWN0LnRvU3RyaW5nKCk7Ci0gICAgICAgIGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIEVudW0pCi0gICAgICAgICAgICByZXR1cm4gKChFbnVtKSBvYmplY3QpLmdldERlY2xhcmluZ0NsYXNzKCkuZ2V0U2ltcGxlTmFtZSgpICsgIi4iICsgb2JqZWN0LnRvU3RyaW5nKCk7Ci0gICAgICAgIGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIEVsZW1lbnQpIHsKLSAgICAgICAgICAgIGlmIChvYmplY3QgaW5zdGFuY2VvZiBWZXJ0ZXgpIHsKLSAgICAgICAgICAgICAgICBmaW5hbCBWZXJ0ZXggdmVydGV4ID0gKFZlcnRleCkgb2JqZWN0OwotICAgICAgICAgICAgICAgIHJldHVybiAibmV3IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuZGV0YWNoZWQuRGV0YWNoZWRWZXJ0ZXgoIiArCi0gICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0VG9TdHJpbmcodmVydGV4LmlkKCkpICsgIiwiICsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRUb1N0cmluZyh2ZXJ0ZXgubGFiZWwoKSkgKyAiLCBDb2xsZWN0aW9ucy5lbXB0eU1hcCgpKSI7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIEVkZ2UpIHsKLSAgICAgICAgICAgICAgICBmaW5hbCBFZGdlIGVkZ2UgPSAoRWRnZSkgb2JqZWN0OwotICAgICAgICAgICAgICAgIHJldHVybiAibmV3IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuZGV0YWNoZWQuRGV0YWNoZWRFZGdlKCIgKwotICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydFRvU3RyaW5nKGVkZ2UuaWQoKSkgKyAiLCIgKwotICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydFRvU3RyaW5nKGVkZ2UubGFiZWwoKSkgKyAiLCIgKwotICAgICAgICAgICAgICAgICAgICAgICAgIkNvbGxlY3Rpb25zLmVtcHR5TWFwKCksIiArCi0gICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0VG9TdHJpbmcoZWRnZS5vdXRWZXJ0ZXgoKS5pZCgpKSArICIsIiArCi0gICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0VG9TdHJpbmcoZWRnZS5vdXRWZXJ0ZXgoKS5sYWJlbCgpKSArICIsIiArCi0gICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0VG9TdHJpbmcoZWRnZS5pblZlcnRleCgpLmlkKCkpICsgIiwiICsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRUb1N0cmluZyhlZGdlLmluVmVydGV4KCkubGFiZWwoKSkgKyAiKSI7Ci0gICAgICAgICAgICB9IGVsc2Ugey8vIFZlcnRleFByb3BlcnR5Ci0gICAgICAgICAgICAgICAgZmluYWwgVmVydGV4UHJvcGVydHkgdmVydGV4UHJvcGVydHkgPSAoVmVydGV4UHJvcGVydHkpIG9iamVjdDsKLSAgICAgICAgICAgICAgICByZXR1cm4gIm5ldyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLmRldGFjaGVkLkRldGFjaGVkVmVydGV4UHJvcGVydHkoIiArCi0gICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0VG9TdHJpbmcodmVydGV4UHJvcGVydHkuaWQoKSkgKyAiLCIgKwotICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydFRvU3RyaW5nKHZlcnRleFByb3BlcnR5LmxhYmVsKCkpICsgIiwiICsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRUb1N0cmluZyh2ZXJ0ZXhQcm9wZXJ0eS52YWx1ZSgpKSArICIsIiArCi0gICAgICAgICAgICAgICAgICAgICAgICAiQ29sbGVjdGlvbnMuZW1wdHlNYXAoKSwiICsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRUb1N0cmluZyh2ZXJ0ZXhQcm9wZXJ0eS5lbGVtZW50KCkpICsgIikiOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIExhbWJkYSkgewotICAgICAgICAgICAgZmluYWwgU3RyaW5nIGxhbWJkYVN0cmluZyA9ICgoTGFtYmRhKSBvYmplY3QpLmdldExhbWJkYVNjcmlwdCgpLnRyaW0oKTsKLSAgICAgICAgICAgIHJldHVybiBsYW1iZGFTdHJpbmcuc3RhcnRzV2l0aCgieyIpID8gbGFtYmRhU3RyaW5nIDogInsiICsgbGFtYmRhU3RyaW5nICsgIn0iOwotICAgICAgICB9IGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIFRyYXZlcnNhbFN0cmF0ZWd5UHJveHkpIHsKLSAgICAgICAgICAgIGZpbmFsIFRyYXZlcnNhbFN0cmF0ZWd5UHJveHkgcHJveHkgPSAoVHJhdmVyc2FsU3RyYXRlZ3lQcm94eSkgb2JqZWN0OwotICAgICAgICAgICAgaWYgKHByb3h5LmdldENvbmZpZ3VyYXRpb24oKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHByb3h5LmdldFN0cmF0ZWd5Q2xhc3MoKS5nZXRDYW5vbmljYWxOYW1lKCkgKyAiLmluc3RhbmNlKCkiOworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIE9iamVjdCBhcHBseShmaW5hbCBTdHJpbmcgdHJhdmVyc2FsU291cmNlLCBmaW5hbCBPYmplY3QgbykgeworICAgICAgICAgICAgaWYgKG8gaW5zdGFuY2VvZiBCeXRlY29kZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxUcmFuc2xhdGUodHJhdmVyc2FsU291cmNlLCAoQnl0ZWNvZGUpIG8pOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiBwcm94eS5nZXRTdHJhdGVneUNsYXNzKCkuZ2V0Q2Fub25pY2FsTmFtZSgpICsgIi5jcmVhdGUobmV3IG9yZy5hcGFjaGUuY29tbW9ucy5jb25maWd1cmF0aW9uLk1hcENvbmZpZ3VyYXRpb24oIiArIGNvbnZlcnRUb1N0cmluZyhDb25maWd1cmF0aW9uQ29udmVydGVyLmdldE1hcChwcm94eS5nZXRDb25maWd1cmF0aW9uKCkpKSArICIpKSI7Ci0gICAgICAgIH0gZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgVHJhdmVyc2FsU3RyYXRlZ3kpIHsKLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9TdHJpbmcobmV3IFRyYXZlcnNhbFN0cmF0ZWd5UHJveHkoKChUcmF2ZXJzYWxTdHJhdGVneSkgb2JqZWN0KSkpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJldHVybiBudWxsID09IG9iamVjdCA/ICJudWxsIiA6IG9iamVjdC50b1N0cmluZygpOwotICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydFRvU3RyaW5nKG8pOworICAgICAgICB9CiAKLSAgICBwcml2YXRlIFN0cmluZ0J1aWxkZXIgY29udmVydFBUb1N0cmluZyhmaW5hbCBQIHAsIGZpbmFsIFN0cmluZ0J1aWxkZXIgY3VycmVudCkgewotICAgICAgICBpZiAocCBpbnN0YW5jZW9mIENvbm5lY3RpdmVQKSB7Ci0gICAgICAgICAgICBmaW5hbCBMaXN0PFA8Pz4+IGxpc3QgPSAoKENvbm5lY3RpdmVQKSBwKS5nZXRQcmVkaWNhdGVzKCk7Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxpc3Quc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgICAgICAgICBjb252ZXJ0UFRvU3RyaW5nKGxpc3QuZ2V0KGkpLCBjdXJyZW50KTsKLSAgICAgICAgICAgICAgICBpZiAoaSA8IGxpc3Quc2l6ZSgpIC0gMSkKLSAgICAgICAgICAgICAgICAgICAgY3VycmVudC5hcHBlbmQocCBpbnN0YW5jZW9mIE9yUCA/ICIub3IoIiA6ICIuYW5kKCIpOworICAgICAgICBwcm90ZWN0ZWQgU3RyaW5nIGNvbnZlcnRUb1N0cmluZyhmaW5hbCBPYmplY3Qgb2JqZWN0KSB7CisgICAgICAgICAgICBpZiAob2JqZWN0IGluc3RhbmNlb2YgQnl0ZWNvZGUuQmluZGluZykKKyAgICAgICAgICAgICAgICByZXR1cm4gKChCeXRlY29kZS5CaW5kaW5nKSBvYmplY3QpLnZhcmlhYmxlKCk7CisgICAgICAgICAgICBlbHNlIGlmIChvYmplY3QgaW5zdGFuY2VvZiBCeXRlY29kZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxUcmFuc2xhdGUoIl9fIiwgKEJ5dGVjb2RlKSBvYmplY3QpOworICAgICAgICAgICAgZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgVHJhdmVyc2FsKQorICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9TdHJpbmcoKChUcmF2ZXJzYWwpIG9iamVjdCkuYXNBZG1pbigpLmdldEJ5dGVjb2RlKCkpOworICAgICAgICAgICAgZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgU3RyaW5nKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICgoKFN0cmluZykgb2JqZWN0KS5jb250YWlucygiXCIiKSA/ICJcIlwiXCIiICsgU3RyaW5nRXNjYXBlVXRpbHMuZXNjYXBlSmF2YSgoU3RyaW5nKSBvYmplY3QpICsgIlwiXCJcIiIgOiAiXCIiICsgU3RyaW5nRXNjYXBlVXRpbHMuZXNjYXBlSmF2YSgoU3RyaW5nKSBvYmplY3QpICsgIlwiIikKKyAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKCIkIiwgIlxcJCIpOworICAgICAgICAgICAgfSBlbHNlIGlmIChvYmplY3QgaW5zdGFuY2VvZiBTZXQpIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBTZXQ8U3RyaW5nPiBzZXQgPSBuZXcgSGFzaFNldDw+KCgoU2V0KSBvYmplY3QpLnNpemUoKSk7CisgICAgICAgICAgICAgICAgZm9yIChmaW5hbCBPYmplY3QgaXRlbSA6IChTZXQpIG9iamVjdCkgeworICAgICAgICAgICAgICAgICAgICBzZXQuYWRkKGNvbnZlcnRUb1N0cmluZyhpdGVtKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBzZXQudG9TdHJpbmcoKSArICIgYXMgU2V0IjsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgTGlzdCkgeworICAgICAgICAgICAgICAgIGZpbmFsIExpc3Q8U3RyaW5nPiBsaXN0ID0gbmV3IEFycmF5TGlzdDw+KCgoTGlzdCkgb2JqZWN0KS5zaXplKCkpOworICAgICAgICAgICAgICAgIGZvciAoZmluYWwgT2JqZWN0IGl0ZW0gOiAoTGlzdCkgb2JqZWN0KSB7CisgICAgICAgICAgICAgICAgICAgIGxpc3QuYWRkKGNvbnZlcnRUb1N0cmluZyhpdGVtKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBsaXN0LnRvU3RyaW5nKCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIE1hcCkgeworICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZ0J1aWxkZXIgbWFwID0gbmV3IFN0cmluZ0J1aWxkZXIoIlsiKTsKKyAgICAgICAgICAgICAgICBmb3IgKGZpbmFsIE1hcC5FbnRyeTw/LCA/PiBlbnRyeSA6ICgoTWFwPD8sID8+KSBvYmplY3QpLmVudHJ5U2V0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbWFwLmFwcGVuZCgiKCIpLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZChjb252ZXJ0VG9TdHJpbmcoZW50cnkuZ2V0S2V5KCkpKS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmQoIik6KCIpLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZChjb252ZXJ0VG9TdHJpbmcoZW50cnkuZ2V0VmFsdWUoKSkpLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZCgiKSwiKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBvbmx5IG5lZWQgdG8gcmVtb3ZlIHRoaXMgbGFzdCBiaXQgaWYgZW50cmllcyB3ZXJlIGFkZGVkCisgICAgICAgICAgICAgICAgaWYgKCEoKE1hcDw/LCA/Pikgb2JqZWN0KS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgIG1hcC5kZWxldGVDaGFyQXQobWFwLmxlbmd0aCgpIC0gMSk7CisKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFwLmFwcGVuZCgiXSIpLnRvU3RyaW5nKCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIExvbmcpCisgICAgICAgICAgICAgICAgcmV0dXJuIG9iamVjdCArICJMIjsKKyAgICAgICAgICAgIGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIERvdWJsZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gb2JqZWN0ICsgImQiOworICAgICAgICAgICAgZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgRmxvYXQpCisgICAgICAgICAgICAgICAgcmV0dXJuIG9iamVjdCArICJmIjsKKyAgICAgICAgICAgIGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIEludGVnZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuICIoaW50KSAiICsgb2JqZWN0OworICAgICAgICAgICAgZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgQ2xhc3MpCisgICAgICAgICAgICAgICAgcmV0dXJuICgoQ2xhc3MpIG9iamVjdCkuZ2V0Q2Fub25pY2FsTmFtZSgpOworICAgICAgICAgICAgZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgVGltZXN0YW1wKQorICAgICAgICAgICAgICAgIHJldHVybiAibmV3IGphdmEuc3FsLlRpbWVzdGFtcCgiICsgKChUaW1lc3RhbXApIG9iamVjdCkuZ2V0VGltZSgpICsgIikiOworICAgICAgICAgICAgZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgRGF0ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gIm5ldyBqYXZhLnV0aWwuRGF0ZSgiICsgKChEYXRlKSBvYmplY3QpLmdldFRpbWUoKSArICIpIjsKKyAgICAgICAgICAgIGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIFVVSUQpCisgICAgICAgICAgICAgICAgcmV0dXJuICJqYXZhLnV0aWwuVVVJRC5mcm9tU3RyaW5nKCciICsgb2JqZWN0LnRvU3RyaW5nKCkgKyAiJykiOworICAgICAgICAgICAgZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgUCkKKyAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydFBUb1N0cmluZygoUCkgb2JqZWN0LCBuZXcgU3RyaW5nQnVpbGRlcigpKS50b1N0cmluZygpOworICAgICAgICAgICAgZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgU2Fja0Z1bmN0aW9ucy5CYXJyaWVyKQorICAgICAgICAgICAgICAgIHJldHVybiAiU2Fja0Z1bmN0aW9ucy5CYXJyaWVyLiIgKyBvYmplY3QudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIFZlcnRleFByb3BlcnR5LkNhcmRpbmFsaXR5KQorICAgICAgICAgICAgICAgIHJldHVybiAiVmVydGV4UHJvcGVydHkuQ2FyZGluYWxpdHkuIiArIG9iamVjdC50b1N0cmluZygpOworICAgICAgICAgICAgZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgVHJhdmVyc2FsT3B0aW9uUGFyZW50LlBpY2spCisgICAgICAgICAgICAgICAgcmV0dXJuICJUcmF2ZXJzYWxPcHRpb25QYXJlbnQuUGljay4iICsgb2JqZWN0LnRvU3RyaW5nKCk7CisgICAgICAgICAgICBlbHNlIGlmIChvYmplY3QgaW5zdGFuY2VvZiBFbnVtKQorICAgICAgICAgICAgICAgIHJldHVybiAoKEVudW0pIG9iamVjdCkuZ2V0RGVjbGFyaW5nQ2xhc3MoKS5nZXRTaW1wbGVOYW1lKCkgKyAiLiIgKyBvYmplY3QudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIEVsZW1lbnQpIHsKKyAgICAgICAgICAgICAgICBpZiAob2JqZWN0IGluc3RhbmNlb2YgVmVydGV4KSB7CisgICAgICAgICAgICAgICAgICAgIGZpbmFsIFZlcnRleCB2ZXJ0ZXggPSAoVmVydGV4KSBvYmplY3Q7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAibmV3IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuZGV0YWNoZWQuRGV0YWNoZWRWZXJ0ZXgoIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydFRvU3RyaW5nKHZlcnRleC5pZCgpKSArICIsIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydFRvU3RyaW5nKHZlcnRleC5sYWJlbCgpKSArICIsIENvbGxlY3Rpb25zLmVtcHR5TWFwKCkpIjsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIEVkZ2UpIHsKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgRWRnZSBlZGdlID0gKEVkZ2UpIG9iamVjdDsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJuZXcgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5kZXRhY2hlZC5EZXRhY2hlZEVkZ2UoIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydFRvU3RyaW5nKGVkZ2UuaWQoKSkgKyAiLCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRUb1N0cmluZyhlZGdlLmxhYmVsKCkpICsgIiwiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29sbGVjdGlvbnMuZW1wdHlNYXAoKSwiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0VG9TdHJpbmcoZWRnZS5vdXRWZXJ0ZXgoKS5pZCgpKSArICIsIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydFRvU3RyaW5nKGVkZ2Uub3V0VmVydGV4KCkubGFiZWwoKSkgKyAiLCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRUb1N0cmluZyhlZGdlLmluVmVydGV4KCkuaWQoKSkgKyAiLCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRUb1N0cmluZyhlZGdlLmluVmVydGV4KCkubGFiZWwoKSkgKyAiKSI7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsvLyBWZXJ0ZXhQcm9wZXJ0eQorICAgICAgICAgICAgICAgICAgICBmaW5hbCBWZXJ0ZXhQcm9wZXJ0eSB2ZXJ0ZXhQcm9wZXJ0eSA9IChWZXJ0ZXhQcm9wZXJ0eSkgb2JqZWN0OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gIm5ldyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLmRldGFjaGVkLkRldGFjaGVkVmVydGV4UHJvcGVydHkoIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydFRvU3RyaW5nKHZlcnRleFByb3BlcnR5LmlkKCkpICsgIiwiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0VG9TdHJpbmcodmVydGV4UHJvcGVydHkubGFiZWwoKSkgKyAiLCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRUb1N0cmluZyh2ZXJ0ZXhQcm9wZXJ0eS52YWx1ZSgpKSArICIsIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbGxlY3Rpb25zLmVtcHR5TWFwKCksIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydFRvU3RyaW5nKHZlcnRleFByb3BlcnR5LmVsZW1lbnQoKSkgKyAiKSI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChvYmplY3QgaW5zdGFuY2VvZiBMYW1iZGEpIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgbGFtYmRhU3RyaW5nID0gKChMYW1iZGEpIG9iamVjdCkuZ2V0TGFtYmRhU2NyaXB0KCkudHJpbSgpOworICAgICAgICAgICAgICAgIHJldHVybiBsYW1iZGFTdHJpbmcuc3RhcnRzV2l0aCgieyIpID8gbGFtYmRhU3RyaW5nIDogInsiICsgbGFtYmRhU3RyaW5nICsgIn0iOworICAgICAgICAgICAgfSBlbHNlIGlmIChvYmplY3QgaW5zdGFuY2VvZiBUcmF2ZXJzYWxTdHJhdGVneVByb3h5KSB7CisgICAgICAgICAgICAgICAgZmluYWwgVHJhdmVyc2FsU3RyYXRlZ3lQcm94eSBwcm94eSA9IChUcmF2ZXJzYWxTdHJhdGVneVByb3h5KSBvYmplY3Q7CisgICAgICAgICAgICAgICAgaWYgKHByb3h5LmdldENvbmZpZ3VyYXRpb24oKS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm94eS5nZXRTdHJhdGVneUNsYXNzKCkuZ2V0Q2Fub25pY2FsTmFtZSgpICsgIi5pbnN0YW5jZSgpIjsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm94eS5nZXRTdHJhdGVneUNsYXNzKCkuZ2V0Q2Fub25pY2FsTmFtZSgpICsgIi5jcmVhdGUobmV3IG9yZy5hcGFjaGUuY29tbW9ucy5jb25maWd1cmF0aW9uLk1hcENvbmZpZ3VyYXRpb24oIiArIGNvbnZlcnRUb1N0cmluZyhDb25maWd1cmF0aW9uQ29udmVydGVyLmdldE1hcChwcm94eS5nZXRDb25maWd1cmF0aW9uKCkpKSArICIpKSI7CisgICAgICAgICAgICB9IGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIFRyYXZlcnNhbFN0cmF0ZWd5KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb1N0cmluZyhuZXcgVHJhdmVyc2FsU3RyYXRlZ3lQcm94eSgoKFRyYXZlcnNhbFN0cmF0ZWd5KSBvYmplY3QpKSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSBvYmplY3QgPyAibnVsbCIgOiBvYmplY3QudG9TdHJpbmcoKTsKKyAgICAgICAgfQorCisgICAgICAgIHByb3RlY3RlZCBTdHJpbmcgaW50ZXJuYWxUcmFuc2xhdGUoZmluYWwgU3RyaW5nIHN0YXJ0LCBmaW5hbCBCeXRlY29kZSBieXRlY29kZSkgeworICAgICAgICAgICAgZmluYWwgU3RyaW5nQnVpbGRlciB0cmF2ZXJzYWxTY3JpcHQgPSBuZXcgU3RyaW5nQnVpbGRlcihzdGFydCk7CisgICAgICAgICAgICBmb3IgKGZpbmFsIEJ5dGVjb2RlLkluc3RydWN0aW9uIGluc3RydWN0aW9uIDogYnl0ZWNvZGUuZ2V0SW5zdHJ1Y3Rpb25zKCkpIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgbWV0aG9kTmFtZSA9IGluc3RydWN0aW9uLmdldE9wZXJhdG9yKCk7CisgICAgICAgICAgICAgICAgaWYgKDAgPT0gaW5zdHJ1Y3Rpb24uZ2V0QXJndW1lbnRzKCkubGVuZ3RoKQorICAgICAgICAgICAgICAgICAgICB0cmF2ZXJzYWxTY3JpcHQuYXBwZW5kKCIuIikuYXBwZW5kKG1ldGhvZE5hbWUpLmFwcGVuZCgiKCkiKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdHJhdmVyc2FsU2NyaXB0LmFwcGVuZCgiLiIpOworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgdGVtcCA9IG1ldGhvZE5hbWUgKyAiKCI7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gaGF2ZSB0byBzcGVjaWFsIGNhc2Ugd2l0aFNhY2soKSBmb3IgR3Jvb3Z5IGJlY2F1c2UgVW5hcnlPcGVyYXRvciBhbmQgQmluYXJ5T3BlcmF0b3Igc2lnbmF0dXJlcworICAgICAgICAgICAgICAgICAgICAvLyBtYWtlIGl0IGltcG9zc2libGUgZm9yIHRoZSBpbnRlcnByZXRlciB0byBmaWd1cmUgb3V0IHdoaWNoIGZ1bmN0aW9uIHRvIGNhbGwuIHNwZWNpZmljYWxseSB3ZSBuZWVkCisgICAgICAgICAgICAgICAgICAgIC8vIHRvIGRpc2Nlcm4gYmV0d2VlbjoKKyAgICAgICAgICAgICAgICAgICAgLy8gICAgIHdpdGhTYWNrKEEgaW5pdGlhbFZhbHVlLCBVbmFyeU9wZXJhdG9yPEE+IHNwbGl0T3BlcmF0b3IpCisgICAgICAgICAgICAgICAgICAgIC8vICAgICB3aXRoU2FjayhBIGluaXRpYWxWYWx1ZSwgQmluYXJ5T3BlcmF0b3I8QT4gc3BsaXRPcGVyYXRvcikKKyAgICAgICAgICAgICAgICAgICAgLy8gYW5kOgorICAgICAgICAgICAgICAgICAgICAvLyAgICAgd2l0aFNhY2soU3VwcGxpZXI8QT4gaW5pdGlhbFZhbHVlLCBVbmFyeU9wZXJhdG9yPEE+IG1lcmdlT3BlcmF0b3IpCisgICAgICAgICAgICAgICAgICAgIC8vICAgICB3aXRoU2FjayhTdXBwbGllcjxBPiBpbml0aWFsVmFsdWUsIEJpbmFyeU9wZXJhdG9yPEE+IG1lcmdlT3BlcmF0b3IpCisgICAgICAgICAgICAgICAgICAgIGlmIChtZXRob2ROYW1lLmVxdWFscyhUcmF2ZXJzYWxTb3VyY2UuU3ltYm9scy53aXRoU2FjaykgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbi5nZXRBcmd1bWVudHMoKS5sZW5ndGggPT0gMiAmJiBpbnN0cnVjdGlvbi5nZXRBcmd1bWVudHMoKVsxXSBpbnN0YW5jZW9mIExhbWJkYSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nIGNhc3RGaXJzdEFyZ1RvID0gaW5zdHJ1Y3Rpb24uZ2V0QXJndW1lbnRzKClbMF0gaW5zdGFuY2VvZiBMYW1iZGEgPworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdXBwbGllci5jbGFzcy5nZXROYW1lKCkgOiAiIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIExhbWJkYSBzZWNvbmRBcmcgPSAoTGFtYmRhKSBpbnN0cnVjdGlvbi5nZXRBcmd1bWVudHMoKVsxXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyBjYXN0U2Vjb25kQXJnVG8gPSBzZWNvbmRBcmcuZ2V0TGFtYmRhQXJndW1lbnRzKCkgPT0gMSA/IFVuYXJ5T3BlcmF0b3IuY2xhc3MuZ2V0TmFtZSgpIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmluYXJ5T3BlcmF0b3IuY2xhc3MuZ2V0TmFtZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjYXN0Rmlyc3RBcmdUby5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcCA9IHRlbXAgKyBTdHJpbmcuZm9ybWF0KCIoJXMpICIsIGNhc3RGaXJzdEFyZ1RvKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAgPSB0ZW1wICsgU3RyaW5nLmZvcm1hdCgiJXMsICglcykgJXMsIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydFRvU3RyaW5nKGluc3RydWN0aW9uLmdldEFyZ3VtZW50cygpWzBdKSwgY2FzdFNlY29uZEFyZ1RvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0VG9TdHJpbmcoaW5zdHJ1Y3Rpb24uZ2V0QXJndW1lbnRzKClbMV0pKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZmluYWwgT2JqZWN0IG9iamVjdCA6IGluc3RydWN0aW9uLmdldEFyZ3VtZW50cygpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcCA9IHRlbXAgKyBjb252ZXJ0VG9TdHJpbmcob2JqZWN0KSArICIsIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB0cmF2ZXJzYWxTY3JpcHQuYXBwZW5kKHRlbXAuc3Vic3RyaW5nKDAsIHRlbXAubGVuZ3RoKCkgLSAxKSkuYXBwZW5kKCIpIik7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgY3VycmVudC5hcHBlbmQoIikiKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBjdXJyZW50LmFwcGVuZCgiUC4iKS5hcHBlbmQocC5nZXRCaVByZWRpY2F0ZSgpLnRvU3RyaW5nKCkpLmFwcGVuZCgiKCIpLmFwcGVuZChjb252ZXJ0VG9TdHJpbmcocC5nZXRWYWx1ZSgpKSkuYXBwZW5kKCIpIik7Ci0gICAgICAgIHJldHVybiBjdXJyZW50OworICAgICAgICAgICAgcmV0dXJuIHRyYXZlcnNhbFNjcmlwdC50b1N0cmluZygpOworICAgICAgICB9CisKKyAgICAgICAgcHJvdGVjdGVkIFN0cmluZ0J1aWxkZXIgY29udmVydFBUb1N0cmluZyhmaW5hbCBQIHAsIGZpbmFsIFN0cmluZ0J1aWxkZXIgY3VycmVudCkgeworICAgICAgICAgICAgaWYgKHAgaW5zdGFuY2VvZiBUZXh0UCkgcmV0dXJuIGNvbnZlcnRUZXh0UFRvU3RyaW5nKChUZXh0UCkgcCwgY3VycmVudCk7CisgICAgICAgICAgICBpZiAocCBpbnN0YW5jZW9mIENvbm5lY3RpdmVQKSB7CisgICAgICAgICAgICAgICAgZmluYWwgTGlzdDxQPD8+PiBsaXN0ID0gKChDb25uZWN0aXZlUCkgcCkuZ2V0UHJlZGljYXRlcygpOworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGlzdC5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBjb252ZXJ0UFRvU3RyaW5nKGxpc3QuZ2V0KGkpLCBjdXJyZW50KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGkgPCBsaXN0LnNpemUoKSAtIDEpCisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50LmFwcGVuZChwIGluc3RhbmNlb2YgT3JQID8gIi5vcigiIDogIi5hbmQoIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGN1cnJlbnQuYXBwZW5kKCIpIik7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBjdXJyZW50LmFwcGVuZCgiUC4iKS5hcHBlbmQocC5nZXRCaVByZWRpY2F0ZSgpLnRvU3RyaW5nKCkpLmFwcGVuZCgiKCIpLmFwcGVuZChjb252ZXJ0VG9TdHJpbmcocC5nZXRWYWx1ZSgpKSkuYXBwZW5kKCIpIik7CisgICAgICAgICAgICByZXR1cm4gY3VycmVudDsKKyAgICAgICAgfQorCisgICAgICAgIHByb3RlY3RlZCBTdHJpbmdCdWlsZGVyIGNvbnZlcnRUZXh0UFRvU3RyaW5nKGZpbmFsIFRleHRQIHAsIGZpbmFsIFN0cmluZ0J1aWxkZXIgY3VycmVudCkgeworICAgICAgICAgICAgY3VycmVudC5hcHBlbmQoIlRleHRQLiIpLmFwcGVuZChwLmdldEJpUHJlZGljYXRlKCkudG9TdHJpbmcoKSkuYXBwZW5kKCIoIikuYXBwZW5kKGNvbnZlcnRUb1N0cmluZyhwLmdldFZhbHVlKCkpKS5hcHBlbmQoIikiKTsKKyAgICAgICAgICAgIHJldHVybiBjdXJyZW50OworICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1ncm9vdnkvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvSW1wb3J0R3Jvb3Z5Q3VzdG9taXplci5qYXZhIGIvZ3JlbWxpbi1ncm9vdnkvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvSW1wb3J0R3Jvb3Z5Q3VzdG9taXplci5qYXZhCmluZGV4IDc5MjQzYTAuLjk0ZDNiNjIgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZ3Jvb3Z5L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL0ltcG9ydEdyb292eUN1c3RvbWl6ZXIuamF2YQorKysgYi9ncmVtbGluLWdyb292eS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9JbXBvcnRHcm9vdnlDdXN0b21pemVyLmphdmEKQEAgLTU5LDYgKzU5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihtIC0+ICFtLmdldERlY2xhcmluZ0NsYXNzKCkuZXF1YWxzKF9fLmNsYXNzKSkKICAgICAgICAgICAgICAgICAgICAgLmZvckVhY2gobSAtPiBpYy5hZGRTdGF0aWNJbXBvcnQobS5nZXREZWNsYXJpbmdDbGFzcygpLmdldENhbm9uaWNhbE5hbWUoKSwgbS5nZXROYW1lKCkpKTsKICAgICAgICAgICAgIGN1c3RvbWl6ZXIuZ2V0RW51bUltcG9ydHMoKS5mb3JFYWNoKG0gLT4gaWMuYWRkU3RhdGljSW1wb3J0KG0uZ2V0RGVjbGFyaW5nQ2xhc3MoKS5nZXRDYW5vbmljYWxOYW1lKCksIG0ubmFtZSgpKSk7CisgICAgICAgICAgICBjdXN0b21pemVyLmdldEZpZWxkSW1wb3J0cygpLmZvckVhY2goZiAtPiBpYy5hZGRTdGF0aWNJbXBvcnQoZi5nZXREZWNsYXJpbmdDbGFzcygpLmdldENhbm9uaWNhbE5hbWUoKSwgZi5nZXROYW1lKCkpKTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBpYzsKZGlmZiAtLWdpdCBhL2dyZW1saW4tZ3Jvb3Z5L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL2RzbC9jcmVkZW50aWFsL0NyZWRlbnRpYWxHcmFwaC5qYXZhIGIvZ3JlbWxpbi1ncm9vdnkvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvZHNsL2NyZWRlbnRpYWwvQ3JlZGVudGlhbEdyYXBoLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhZThlMDAuLjAwMDAwMDAKLS0tIGEvZ3JlbWxpbi1ncm9vdnkvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvZHNsL2NyZWRlbnRpYWwvQ3JlZGVudGlhbEdyYXBoLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotLyoKLSAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLSAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQotICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLSAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLSAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKLSAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKLSAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCi0gKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgotICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCi0gKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKLSAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKLSAqIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi1wYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ3Jvb3Z5LmpzcjIyMy5kc2wuY3JlZGVudGlhbDsKLQotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkdyYXBoVHJhdmVyc2FsOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkdyYXBoVHJhdmVyc2FsU291cmNlOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkdyYXBoOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlQ7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4OwotaW1wb3J0IG9yZy5taW5kcm90LmpiY3J5cHQuQkNyeXB0OwotCi1pbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLl9fLmRyb3A7Ci0KLS8qKgotICogQSBEU0wgZm9yIG1hbmFnaW5nIGEgImNyZWRlbnRpYWxzIGdyYXBoIiB1c2VkIGJ5IEdyZW1saW4gU2VydmVyIGZvciBzaW1wbGUgYXV0aGVudGljYXRpb24gZnVuY3Rpb25zLiAgSWYgdGhlCi0gKiB7QGxpbmsgR3JhcGh9IGlzIHRyYW5zYWN0aW9uYWwsIG5ldyB0cmFuc2FjdGlvbnMgd2lsbCBiZSBzdGFydGVkIGZvciBlYWNoIG1ldGhvZCBjYWxsLgotICoKLSAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKLSAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy4zLjMsIHJlcGxhY2VkIGJ5IHtAbGluayAgQ3JlZGVudGlhbFRyYXZlcnNhbERzbH0uCi0gKi8KLUBEZXByZWNhdGVkCi1wdWJsaWMgY2xhc3MgQ3JlZGVudGlhbEdyYXBoIHsKLQotICAgIHByaXZhdGUgZmluYWwgaW50IEJDUllQVF9ST1VORFMgPSA0OwotICAgIHByaXZhdGUgZmluYWwgR3JhcGggZ3JhcGg7Ci0gICAgcHJpdmF0ZSBmaW5hbCBHcmFwaFRyYXZlcnNhbFNvdXJjZSBnOwotICAgIHByaXZhdGUgZmluYWwgYm9vbGVhbiBzdXBwb3J0c1RyYW5zYWN0aW9uczsKLQotICAgIHB1YmxpYyBDcmVkZW50aWFsR3JhcGgoZmluYWwgR3JhcGggZ3JhcGgpIHsKLSAgICAgICAgdGhpcy5ncmFwaCA9IGdyYXBoOwotICAgICAgICBnID0gZ3JhcGgudHJhdmVyc2FsKCk7Ci0gICAgICAgIHN1cHBvcnRzVHJhbnNhY3Rpb25zID0gZ3JhcGguZmVhdHVyZXMoKS5ncmFwaCgpLnN1cHBvcnRzVHJhbnNhY3Rpb25zKCk7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogRmluZHMgYSB1c2VyIGJ5IHVzZXJuYW1lIGFuZCByZXR1cm4ge0Bjb2RlIG51bGx9IGlmIG9uZSBjb3VsZCBub3QgYmUgZm91bmQuCi0gICAgICoKLSAgICAgKiBAdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiBpZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIHVzZXIgd2l0aCBhIHBhcnRpY3VsYXIgdXNlcm5hbWUuCi0gICAgICovCi0gICAgcHVibGljIFZlcnRleCBmaW5kVXNlcihmaW5hbCBTdHJpbmcgdXNlcm5hbWUpIHsKLSAgICAgICAgaWYgKHN1cHBvcnRzVHJhbnNhY3Rpb25zKSBnLnR4KCkucm9sbGJhY2soKTsKLSAgICAgICAgZmluYWwgR3JhcGhUcmF2ZXJzYWw8VmVydGV4LFZlcnRleD4gdCA9IGcuVigpLmhhcyhDcmVkZW50aWFsR3JhcGhUb2tlbnMuUFJPUEVSVFlfVVNFUk5BTUUsIHVzZXJuYW1lKTsKLSAgICAgICAgZmluYWwgVmVydGV4IHYgPSB0Lmhhc05leHQoKSA/IHQubmV4dCgpIDogbnVsbDsKLSAgICAgICAgaWYgKHQuaGFzTmV4dCgpKSB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKFN0cmluZy5mb3JtYXQoIk11bHRpcGxlIHVzZXJzIHdpdGggdXNlcm5hbWUgJXMiLCB1c2VybmFtZSkpOwotICAgICAgICByZXR1cm4gdjsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBDcmVhdGVzIGEgbmV3IHVzZXIuCi0gICAgICoKLSAgICAgKiBAcmV0dXJuIHRoZSBuZXdseSBjcmVhdGVkIHVzZXIgdmVydGV4Ci0gICAgICovCi0gICAgcHVibGljIFZlcnRleCBjcmVhdGVVc2VyKGZpbmFsIFN0cmluZyB1c2VybmFtZSwgZmluYWwgU3RyaW5nIHBhc3N3b3JkKSB7Ci0gICAgICAgIGlmIChmaW5kVXNlcih1c2VybmFtZSkgIT0gbnVsbCkgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiVXNlciB3aXRoIHRoaXMgbmFtZSBhbHJlYWR5IGV4aXN0cyIpOwotICAgICAgICBpZiAoc3VwcG9ydHNUcmFuc2FjdGlvbnMpIGdyYXBoLnR4KCkucm9sbGJhY2soKTsKLQotICAgICAgICB0cnkgewotICAgICAgICAgICAgZmluYWwgVmVydGV4IHYgPSAgZ3JhcGguYWRkVmVydGV4KFQubGFiZWwsIENyZWRlbnRpYWxHcmFwaFRva2Vucy5WRVJURVhfTEFCRUxfVVNFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcmVkZW50aWFsR3JhcGhUb2tlbnMuUFJPUEVSVFlfVVNFUk5BTUUsIHVzZXJuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyZWRlbnRpYWxHcmFwaFRva2Vucy5QUk9QRVJUWV9QQVNTV09SRCwgQkNyeXB0Lmhhc2hwdyhwYXNzd29yZCwgQkNyeXB0LmdlbnNhbHQoQkNSWVBUX1JPVU5EUykpKTsKLSAgICAgICAgICAgIGlmIChzdXBwb3J0c1RyYW5zYWN0aW9ucykgZ3JhcGgudHgoKS5jb21taXQoKTsKLSAgICAgICAgICAgIHJldHVybiB2OwotICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKLSAgICAgICAgICAgIGlmIChzdXBwb3J0c1RyYW5zYWN0aW9ucykgZ3JhcGgudHgoKS5yb2xsYmFjaygpOwotICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oZXgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogUmVtb3ZlcyBhIHVzZXIgYnkgbmFtZS4KLSAgICAgKgotICAgICAqIEByZXR1cm4gdGhlIG51bWJlciBvZiB1c2VycyByZW1vdmVkICh3aGljaCBzaG91bGQgYmUgb25lIG9yIHplcm8pCi0gICAgICovCi0gICAgcHVibGljIGxvbmcgcmVtb3ZlVXNlcihmaW5hbCBTdHJpbmcgdXNlcm5hbWUpIHsKLSAgICAgICAgaWYgKHN1cHBvcnRzVHJhbnNhY3Rpb25zKSBncmFwaC50eCgpLnJvbGxiYWNrKCk7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBmaW5hbCBsb25nIGNvdW50ID0gZy5WKCkuaGFzKENyZWRlbnRpYWxHcmFwaFRva2Vucy5QUk9QRVJUWV9VU0VSTkFNRSwgdXNlcm5hbWUpLnNpZGVFZmZlY3QoZHJvcCgpKS5jb3VudCgpLm5leHQoKTsKLSAgICAgICAgICAgIGlmIChzdXBwb3J0c1RyYW5zYWN0aW9ucykgZ3JhcGgudHgoKS5jb21taXQoKTsKLSAgICAgICAgICAgIHJldHVybiBjb3VudDsKLSAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7Ci0gICAgICAgICAgICBpZiAoc3VwcG9ydHNUcmFuc2FjdGlvbnMpIGdyYXBoLnR4KCkucm9sbGJhY2soKTsKLSAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKGV4KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qKgotICAgICAqIEdldCBhIGNvdW50IG9mIHRoZSBudW1iZXIgb2YgdXNlcnMgaW4gdGhlIGRhdGFiYXNlLgotICAgICAqLwotICAgIHB1YmxpYyBsb25nIGNvdW50VXNlcnMoKSB7Ci0gICAgICAgIGlmIChzdXBwb3J0c1RyYW5zYWN0aW9ucykgZ3JhcGgudHgoKS5yb2xsYmFjaygpOwotICAgICAgICByZXR1cm4gZy5WKCkuaGFzTGFiZWwoQ3JlZGVudGlhbEdyYXBoVG9rZW5zLlZFUlRFWF9MQUJFTF9VU0VSKS5jb3VudCgpLm5leHQoKTsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgewotICAgICAgICByZXR1cm4gIkNyZWRlbnRpYWxHcmFwaHsiICsKLSAgICAgICAgICAgICAgICAiZ3JhcGg9IiArIGdyYXBoICsKLSAgICAgICAgICAgICAgICAnfSc7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogV3JhcCB1cCBhbnkge0BsaW5rIEdyYXBofSBpbnN0YW5jZSBpbiB0aGUge0Bjb2RlIENyZWRlbnRpYWxHcmFwaH0gRFNMLgotICAgICAqLwotICAgIHB1YmxpYyBzdGF0aWMgQ3JlZGVudGlhbEdyYXBoIGNyZWRlbnRpYWxzKGZpbmFsIEdyYXBoIGdyYXBoKSB7Ci0gICAgICAgIHJldHVybiBuZXcgQ3JlZGVudGlhbEdyYXBoKGdyYXBoKTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9ncmVtbGluLWdyb292eS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9kc2wvY3JlZGVudGlhbC9DcmVkZW50aWFsR3JhcGhHcmVtbGluUGx1Z2luLmphdmEgYi9ncmVtbGluLWdyb292eS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9kc2wvY3JlZGVudGlhbC9DcmVkZW50aWFsR3JhcGhHcmVtbGluUGx1Z2luLmphdmEKaW5kZXggZTM2ZGZmOS4uMWJhZmJlZSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1ncm9vdnkvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvZHNsL2NyZWRlbnRpYWwvQ3JlZGVudGlhbEdyYXBoR3JlbWxpblBsdWdpbi5qYXZhCisrKyBiL2dyZW1saW4tZ3Jvb3Z5L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL2RzbC9jcmVkZW50aWFsL0NyZWRlbnRpYWxHcmFwaEdyZW1saW5QbHVnaW4uamF2YQpAQCAtMzgsMTEgKzM4LDkgQEAKICAgICBzdGF0aWMgewogICAgICAgICB0cnkgewogICAgICAgICAgICAgaW1wb3J0cyA9IERlZmF1bHRJbXBvcnRDdXN0b21pemVyLmJ1aWxkKCkKLSAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzSW1wb3J0cyhDcmVkZW50aWFsR3JhcGguY2xhc3MpCiAgICAgICAgICAgICAgICAgICAgIC5hZGRDbGFzc0ltcG9ydHMoQ3JlZGVudGlhbFRyYXZlcnNhbERzbC5jbGFzcykKICAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzSW1wb3J0cyhDcmVkZW50aWFsVHJhdmVyc2FsLmNsYXNzKQogICAgICAgICAgICAgICAgICAgICAuYWRkQ2xhc3NJbXBvcnRzKENyZWRlbnRpYWxUcmF2ZXJzYWxTb3VyY2UuY2xhc3MpCi0gICAgICAgICAgICAgICAgICAgIC5hZGRNZXRob2RJbXBvcnRzKENyZWRlbnRpYWxHcmFwaC5jbGFzcy5nZXRNZXRob2QoImNyZWRlbnRpYWxzIiwgR3JhcGguY2xhc3MpKQogICAgICAgICAgICAgICAgICAgICAuY3JlYXRlKCk7CiAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgewogICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oZXgpOwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1ncm9vdnkvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvZHNsL2NyZWRlbnRpYWwvQ3JlZGVudGlhbFRyYXZlcnNhbFNvdXJjZURzbC5qYXZhIGIvZ3JlbWxpbi1ncm9vdnkvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvZHNsL2NyZWRlbnRpYWwvQ3JlZGVudGlhbFRyYXZlcnNhbFNvdXJjZURzbC5qYXZhCmluZGV4IDY4YjI0YjIuLmYwMzA0OTQgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZ3Jvb3Z5L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL2RzbC9jcmVkZW50aWFsL0NyZWRlbnRpYWxUcmF2ZXJzYWxTb3VyY2VEc2wuamF2YQorKysgYi9ncmVtbGluLWdyb292eS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9kc2wvY3JlZGVudGlhbC9DcmVkZW50aWFsVHJhdmVyc2FsU291cmNlRHNsLmphdmEKQEAgLTE4LDYgKzE4LDcgQEAKICAqLwogcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmdyb292eS5qc3IyMjMuZHNsLmNyZWRlbnRpYWw7CiAKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MucmVtb3RlLlJlbW90ZUNvbm5lY3Rpb247CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsU3RyYXRlZ2llczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5HcmFwaFRyYXZlcnNhbDsKQEAgLTQ0LDYgKzQ1LDEwIEBACiAgICAgICAgIHN1cGVyKGdyYXBoKTsKICAgICB9CiAKKyAgICBwdWJsaWMgQ3JlZGVudGlhbFRyYXZlcnNhbFNvdXJjZURzbChSZW1vdGVDb25uZWN0aW9uIGNvbm5lY3Rpb24pIHsKKyAgICAgICAgc3VwZXIoY29ubmVjdGlvbik7CisgICAgfQorCiAgICAgLyoqCiAgICAgICogRmluZHMgYWxsIHVzZXJzLgogICAgICAqLwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1ncm9vdnkvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvQmFzZVNjcmlwdEZvclRlc3RpbmcuamF2YSBiL2dyZW1saW4tZ3Jvb3Z5L3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL0Jhc2VTY3JpcHRGb3JUZXN0aW5nLmphdmEKaW5kZXggOThjOGU4Yy4uMGViYzMyZSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1ncm9vdnkvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvQmFzZVNjcmlwdEZvclRlc3RpbmcuamF2YQorKysgYi9ncmVtbGluLWdyb292eS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9CYXNlU2NyaXB0Rm9yVGVzdGluZy5qYXZhCkBAIC0yMCw2ICsyMCw4IEBACiAKIGltcG9ydCBncm9vdnkubGFuZy5TY3JpcHQ7CiAKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworCiAvKioKICAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKICAqLwpAQCAtMjcsNCArMjksOCBAQAogICAgIHB1YmxpYyBTdHJpbmcgaGVsbG8oZmluYWwgU3RyaW5nIG5hbWUpIHsKICAgICAgICAgcmV0dXJuICJoZWxsbywgIiArIG5hbWU7CiAgICAgfQorCisgICAgcHVibGljIFN0cmluZyB0eXBlT2YoZmluYWwgU3RyaW5nIG5hbWUpIHsKKyAgICAgICAgcmV0dXJuICgoTWFwPFN0cmluZyxPYmplY3Q+KSBnZXRCaW5kaW5nKCkuZ2V0VmFyaWFibGUoInJlZ2lzdHJ5IikpLmdldChuYW1lKS5nZXRDbGFzcygpLmdldFNpbXBsZU5hbWUoKTsKKyAgICB9CiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWdyb292eS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9HcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lQ29tcGlsZVN0YXRpY1Rlc3QuamF2YSBiL2dyZW1saW4tZ3Jvb3Z5L3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL0dyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmVDb21waWxlU3RhdGljVGVzdC5qYXZhCmluZGV4IDczMDdjODIuLmJjZWVmZDggMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZ3Jvb3Z5L3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL0dyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmVDb21waWxlU3RhdGljVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tZ3Jvb3Z5L3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL0dyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmVDb21waWxlU3RhdGljVGVzdC5qYXZhCkBAIC0zNywxMiArMzcsMTIgQEAKICAgICBAVGVzdAogICAgIHB1YmxpYyB2b2lkIHNob3VsZENvbXBpbGVTdGF0aWMoKSB0aHJvd3MgRXhjZXB0aW9uIHsKICAgICAgICAgLy8gd2l0aCBubyB0eXBlIGNoZWNraW5nIHRoaXMgc2hvdWxkIHBhc3MKLSAgICAgICAgdHJ5IChHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lIHNjcmlwdEVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKCkpIHsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscygyNTUsIHNjcmlwdEVuZ2luZS5ldmFsKCIoKE9iamVjdCkgbmV3IGphdmEuYXd0LkNvbG9yKDI1NSwgMjU1LCAyNTUpKS5nZXRSZWQoKSIpKTsKLSAgICAgICAgfQorICAgICAgICBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lIHNjcmlwdEVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKCk7CisgICAgICAgIGFzc2VydEVxdWFscygyNTUsIHNjcmlwdEVuZ2luZS5ldmFsKCIoKE9iamVjdCkgbmV3IGphdmEuYXd0LkNvbG9yKDI1NSwgMjU1LCAyNTUpKS5nZXRSZWQoKSIpKTsKIAogICAgICAgICBmaW5hbCBDb21waWxlU3RhdGljR3Jvb3Z5Q3VzdG9taXplciBwcm92aWRlciA9IG5ldyBDb21waWxlU3RhdGljR3Jvb3Z5Q3VzdG9taXplcigpOwotICAgICAgICB0cnkgKEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUgc2NyaXB0RW5naW5lID0gbmV3IEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUocHJvdmlkZXIpKSB7CisgICAgICAgIHNjcmlwdEVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKHByb3ZpZGVyKTsKKyAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIHNjcmlwdEVuZ2luZS5ldmFsKCIoKE9iamVjdCkgbmV3IGphdmEuYXd0LkNvbG9yKDI1NSwgMjU1LCAyNTUpKS5nZXRSZWQoKSIpOwogICAgICAgICAgICAgZmFpbCgiU2hvdWxkIGhhdmUgZmFpbGVkIHR5cGUgY2hlY2tpbmciKTsKICAgICAgICAgfSBjYXRjaCAoU2NyaXB0RXhjZXB0aW9uIHNlKSB7CkBAIC01NiwxMyArNTYsMTMgQEAKICAgICBwdWJsaWMgdm9pZCBzaG91bGRDb21waWxlU3RhdGljV2l0aEV4dGVuc2lvbigpIHRocm93cyBFeGNlcHRpb24gewogICAgICAgICAvLyB3aXRoIG5vIHR5cGUgY2hlY2tpbmcgZXh0ZW5zaW9uIHRoaXMgc2hvdWxkIHBhc3MKICAgICAgICAgZmluYWwgQ29tcGlsZVN0YXRpY0dyb292eUN1c3RvbWl6ZXIgcHJvdmlkZXJOb0V4dGVuc2lvbiA9IG5ldyBDb21waWxlU3RhdGljR3Jvb3Z5Q3VzdG9taXplcigpOwotICAgICAgICB0cnkgKEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUgc2NyaXB0RW5naW5lID0gbmV3IEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUocHJvdmlkZXJOb0V4dGVuc2lvbikpIHsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscygyNTUsIHNjcmlwdEVuZ2luZS5ldmFsKCJkZWYgYyA9IG5ldyBqYXZhLmF3dC5Db2xvcigyNTUsIDI1NSwgMjU1KTsgYy5yZWQiKSk7Ci0gICAgICAgIH0KKyAgICAgICAgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZSBzY3JpcHRFbmdpbmUgPSBuZXcgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZShwcm92aWRlck5vRXh0ZW5zaW9uKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDI1NSwgc2NyaXB0RW5naW5lLmV2YWwoImRlZiBjID0gbmV3IGphdmEuYXd0LkNvbG9yKDI1NSwgMjU1LCAyNTUpOyBjLnJlZCIpKTsKIAogICAgICAgICBmaW5hbCBDb21waWxlU3RhdGljR3Jvb3Z5Q3VzdG9taXplciBwcm92aWRlcldpdGhFeHRlbnNpb24gPSBuZXcgQ29tcGlsZVN0YXRpY0dyb292eUN1c3RvbWl6ZXIoCiAgICAgICAgICAgICAgICAgUHJlY29tcGlsZWRFeHRlbnNpb25zLlByZXZlbnRDb2xvclVzYWdlRXh0ZW5zaW9uLmNsYXNzLmdldE5hbWUoKSk7Ci0gICAgICAgIHRyeSAoR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZSBzY3JpcHRFbmdpbmUgPSBuZXcgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZShwcm92aWRlcldpdGhFeHRlbnNpb24pKSB7CisgICAgICAgIHNjcmlwdEVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKHByb3ZpZGVyV2l0aEV4dGVuc2lvbik7CisgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBzY3JpcHRFbmdpbmUuZXZhbCgiZGVmIGMgPSBuZXcgamF2YS5hd3QuQ29sb3IoMjU1LCAyNTUsIDI1NSk7IGMucmVkIik7CiAgICAgICAgICAgICBmYWlsKCJTaG91bGQgaGF2ZSBmYWlsZWQgdHlwZSBjaGVja2luZyIpOwogICAgICAgICB9IGNhdGNoIChTY3JpcHRFeGNlcHRpb24gc2UpIHsKQEAgLTc1LDE1ICs3NSwxNSBAQAogICAgIHB1YmxpYyB2b2lkIHNob3VsZENvbXBpbGVTdGF0aWNXaXRoTXVsdGlwbGVFeHRlbnNpb24oKSB0aHJvd3MgRXhjZXB0aW9uIHsKICAgICAgICAgLy8gd2l0aCBubyB0eXBlIGNoZWNraW5nIGV4dGVuc2lvbiB0aGlzIHNob3VsZCBwYXNzCiAgICAgICAgIGZpbmFsIENvbXBpbGVTdGF0aWNHcm9vdnlDdXN0b21pemVyIHByb3ZpZGVyTm9FeHRlbnNpb24gPSBuZXcgQ29tcGlsZVN0YXRpY0dyb292eUN1c3RvbWl6ZXIoKTsKLSAgICAgICAgdHJ5IChHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lIHNjcmlwdEVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKHByb3ZpZGVyTm9FeHRlbnNpb24pKSB7Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoMjU1LCBzY3JpcHRFbmdpbmUuZXZhbCgiZGVmIGMgPSBuZXcgamF2YS5hd3QuQ29sb3IoMjU1LCAyNTUsIDI1NSk7IGMucmVkIikpOwotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDFsLCBzY3JpcHRFbmdpbmUuZXZhbCgiZGVmIGMgPSBuZXcgamF2YS51dGlsLmNvbmN1cnJlbnQuQ291bnREb3duTGF0Y2goMSk7IGMuY291bnQiKSk7Ci0gICAgICAgIH0KKyAgICAgICAgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZSBzY3JpcHRFbmdpbmUgPSBuZXcgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZShwcm92aWRlck5vRXh0ZW5zaW9uKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDI1NSwgc2NyaXB0RW5naW5lLmV2YWwoImRlZiBjID0gbmV3IGphdmEuYXd0LkNvbG9yKDI1NSwgMjU1LCAyNTUpOyBjLnJlZCIpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDFsLCBzY3JpcHRFbmdpbmUuZXZhbCgiZGVmIGMgPSBuZXcgamF2YS51dGlsLmNvbmN1cnJlbnQuQ291bnREb3duTGF0Y2goMSk7IGMuY291bnQiKSk7CiAKICAgICAgICAgZmluYWwgQ29tcGlsZVN0YXRpY0dyb292eUN1c3RvbWl6ZXIgcHJvdmlkZXJXaXRoRXh0ZW5zaW9uID0gbmV3IENvbXBpbGVTdGF0aWNHcm9vdnlDdXN0b21pemVyKAogICAgICAgICAgICAgICAgIFByZWNvbXBpbGVkRXh0ZW5zaW9ucy5QcmV2ZW50Q29sb3JVc2FnZUV4dGVuc2lvbi5jbGFzcy5nZXROYW1lKCkgKwogICAgICAgICAgICAgICAgICAgICAgICAgIiwiICsgUHJlY29tcGlsZWRFeHRlbnNpb25zLlByZXZlbnRDb3VudERvd25MYXRjaFVzYWdlRXh0ZW5zaW9uLmNsYXNzLmdldE5hbWUoKSk7Ci0gICAgICAgIHRyeSAoR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZSBzY3JpcHRFbmdpbmUgPSBuZXcgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZShwcm92aWRlcldpdGhFeHRlbnNpb24pKSB7CisgICAgICAgIHNjcmlwdEVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKHByb3ZpZGVyV2l0aEV4dGVuc2lvbik7CisgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBzY3JpcHRFbmdpbmUuZXZhbCgiZGVmIGMgPSBuZXcgamF2YS5hd3QuQ29sb3IoMjU1LCAyNTUsIDI1NSk7IGMucmVkIik7CiAgICAgICAgICAgICBmYWlsKCJTaG91bGQgaGF2ZSBmYWlsZWQgdHlwZSBjaGVja2luZyIpOwogICAgICAgICB9IGNhdGNoIChTY3JpcHRFeGNlcHRpb24gc2UpIHsKQEAgLTkxLDcgKzkxLDggQEAKICAgICAgICAgICAgIGFzc2VydFRoYXQoc2UuZ2V0TWVzc2FnZSgpLCBjb250YWluc1N0cmluZygiTWV0aG9kIGNhbGwgaXMgbm90IGFsbG93ZWQhIikpOwogICAgICAgICB9CiAKLSAgICAgICAgdHJ5IChHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lIHNjcmlwdEVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKHByb3ZpZGVyV2l0aEV4dGVuc2lvbikpIHsKKyAgICAgICAgc2NyaXB0RW5naW5lID0gbmV3IEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUocHJvdmlkZXJXaXRoRXh0ZW5zaW9uKTsKKyAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIHNjcmlwdEVuZ2luZS5ldmFsKCJkZWYgYyA9IG5ldyBqYXZhLnV0aWwuY29uY3VycmVudC5Db3VudERvd25MYXRjaCgxKTsgYy5jb3VudCIpOwogICAgICAgICAgICAgZmFpbCgiU2hvdWxkIGhhdmUgZmFpbGVkIHR5cGUgY2hlY2tpbmciKTsKICAgICAgICAgfSBjYXRjaCAoU2NyaXB0RXhjZXB0aW9uIHNlKSB7CmRpZmYgLS1naXQgYS9ncmVtbGluLWdyb292eS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9HcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lQ29uZmlnVGVzdC5qYXZhIGIvZ3JlbWxpbi1ncm9vdnkvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZUNvbmZpZ1Rlc3QuamF2YQppbmRleCA4NDE0Mjc0Li4xMWQwZDFmIDEwMDY0NAotLS0gYS9ncmVtbGluLWdyb292eS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9HcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lQ29uZmlnVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tZ3Jvb3Z5L3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL0dyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmVDb25maWdUZXN0LmphdmEKQEAgLTIwLDcgKzIwLDExIEBACiAKIGltcG9ydCBvcmcuanVuaXQuVGVzdDsKIAoraW1wb3J0IGphdmF4LnNjcmlwdC5CaW5kaW5nczsKIGltcG9ydCBqYXZheC5zY3JpcHQuU2NyaXB0RW5naW5lOworaW1wb3J0IGphdmF4LnNjcmlwdC5TaW1wbGVCaW5kaW5nczsKKworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwogCiBpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOwogCkBAIC0zNSw1ICszOSwxMyBAQAogICAgICAgICAgICAgICAgIG5ldyBDb25maWd1cmF0aW9uR3Jvb3Z5Q3VzdG9taXplcigiU2NyaXB0QmFzZUNsYXNzIiwgQmFzZVNjcmlwdEZvclRlc3RpbmcuY2xhc3MuZ2V0TmFtZSgpKSk7CiAKICAgICAgICAgYXNzZXJ0RXF1YWxzKCJoZWxsbywgc3RlcGhlbiIsIGVuZ2luZS5ldmFsKCJoZWxsbygnc3RlcGhlbicpIikpOworCisgICAgICAgIGZpbmFsIEJpbmRpbmdzIGIgPSBuZXcgU2ltcGxlQmluZGluZ3MoKTsKKyAgICAgICAgYi5wdXQoInJlZ2lzdHJ5IiwgbmV3IEhhc2hNYXA8U3RyaW5nLE9iamVjdD4oKXt7CisgICAgICAgICAgICBwdXQoInh4eCIsIFN0cmluZy5jbGFzcy5nZXRTaW1wbGVOYW1lKCkpOworICAgICAgICB9fSk7CisKKyAgICAgICAgYXNzZXJ0RXF1YWxzKFN0cmluZy5jbGFzcy5nZXRTaW1wbGVOYW1lKCksIGVuZ2luZS5ldmFsKCJ0eXBlT2YoJ3h4eCcpIiwgYikpOwogICAgIH0KKwogfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1ncm9vdnkvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZUZpbGVTYW5kYm94VGVzdC5qYXZhIGIvZ3JlbWxpbi1ncm9vdnkvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZUZpbGVTYW5kYm94VGVzdC5qYXZhCmluZGV4IDJhNDBmZWUuLjJhMDk0ZTIgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZ3Jvb3Z5L3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL0dyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmVGaWxlU2FuZGJveFRlc3QuamF2YQorKysgYi9ncmVtbGluLWdyb292eS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9HcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lRmlsZVNhbmRib3hUZXN0LmphdmEKQEAgLTcxLDM1ICs3MSwzMyBAQAogICAgICAgICBmaW5hbCBGaWxlIGYgPSBUZXN0SGVscGVyLmdlbmVyYXRlVGVtcEZpbGVGcm9tUmVzb3VyY2UoZ3JhcGguZ2V0Q2xhc3MoKSwgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZUZpbGVTYW5kYm94VGVzdC5jbGFzcywgInNhbmRib3gtZW1wdHktc3RhdGljLXZhcmlhYmxlLXR5cGVzLnlhbWwiLCAiLnlhbWwiKTsKICAgICAgICAgU3lzdGVtLnNldFByb3BlcnR5KEZpbGVTYW5kYm94RXh0ZW5zaW9uLkdSRU1MSU5fU0VSVkVSX1NBTkRCT1gsIFN0b3JhZ2UudG9QYXRoKGYpKTsKICAgICAgICAgZmluYWwgQ29tcGlsZVN0YXRpY0dyb292eUN1c3RvbWl6ZXIgc3RhbmRhcmRTYW5kYm94ID0gbmV3IENvbXBpbGVTdGF0aWNHcm9vdnlDdXN0b21pemVyKEZpbGVTYW5kYm94RXh0ZW5zaW9uLmNsYXNzLmdldE5hbWUoKSk7Ci0gICAgICAgIHRyeSAoR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZSBlbmdpbmUgPSBuZXcgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZShzdGFuZGFyZFNhbmRib3gpKSB7Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoMTIzLCBlbmdpbmUuZXZhbCgiamF2YS5sYW5nLk1hdGguYWJzKC0xMjMpIikpOwotICAgICAgICAgICAgYXNzZXJ0VGhhdChlbmdpbmUuZXZhbCgibmV3IEJvb2xlYW4odHJ1ZSkiKSwgaXModHJ1ZSkpOwotICAgICAgICAgICAgYXNzZXJ0VGhhdChlbmdpbmUuZXZhbCgibmV3IEJvb2xlYW4odHJ1ZSkudG9TdHJpbmcoKSIpLCBpcygidHJ1ZSIpKTsKLSAgICAgICAgfQorICAgICAgICBmaW5hbCBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lIGVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKHN0YW5kYXJkU2FuZGJveCk7CisgICAgICAgIGFzc2VydEVxdWFscygxMjMsIGVuZ2luZS5ldmFsKCJqYXZhLmxhbmcuTWF0aC5hYnMoLTEyMykiKSk7CisgICAgICAgIGFzc2VydFRoYXQoZW5naW5lLmV2YWwoIm5ldyBCb29sZWFuKHRydWUpIiksIGlzKHRydWUpKTsKKyAgICAgICAgYXNzZXJ0VGhhdChlbmdpbmUuZXZhbCgibmV3IEJvb2xlYW4odHJ1ZSkudG9TdHJpbmcoKSIpLCBpcygidHJ1ZSIpKTsKICAgICB9CiAKICAgICBAVGVzdAogICAgIHB1YmxpYyB2b2lkIHNob3VsZEV2YWxBc1RoZU1ldGhvZElzV2hpdGVMaXN0ZWQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKICAgICAgICAgZmluYWwgQ29tcGlsZVN0YXRpY0dyb292eUN1c3RvbWl6ZXIgc3RhbmRhcmRTYW5kYm94ID0gbmV3IENvbXBpbGVTdGF0aWNHcm9vdnlDdXN0b21pemVyKEZpbGVTYW5kYm94RXh0ZW5zaW9uLmNsYXNzLmdldE5hbWUoKSk7Ci0gICAgICAgIHRyeSAoR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZSBlbmdpbmUgPSBuZXcgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZShzdGFuZGFyZFNhbmRib3gpKSB7Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoMTIzLCBlbmdpbmUuZXZhbCgiamF2YS5sYW5nLk1hdGguYWJzKC0xMjMpIikpOwotICAgICAgICAgICAgYXNzZXJ0VGhhdChlbmdpbmUuZXZhbCgibmV3IEJvb2xlYW4odHJ1ZSkiKSwgaXModHJ1ZSkpOwotICAgICAgICAgICAgYXNzZXJ0VGhhdChlbmdpbmUuZXZhbCgibmV3IEJvb2xlYW4odHJ1ZSkudG9TdHJpbmcoKSIpLCBpcygidHJ1ZSIpKTsKLSAgICAgICAgfQorICAgICAgICBmaW5hbCBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lIGVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKHN0YW5kYXJkU2FuZGJveCk7CisgICAgICAgIGFzc2VydEVxdWFscygxMjMsIGVuZ2luZS5ldmFsKCJqYXZhLmxhbmcuTWF0aC5hYnMoLTEyMykiKSk7CisgICAgICAgIGFzc2VydFRoYXQoZW5naW5lLmV2YWwoIm5ldyBCb29sZWFuKHRydWUpIiksIGlzKHRydWUpKTsKKyAgICAgICAgYXNzZXJ0VGhhdChlbmdpbmUuZXZhbCgibmV3IEJvb2xlYW4odHJ1ZSkudG9TdHJpbmcoKSIpLCBpcygidHJ1ZSIpKTsKICAgICB9CiAKICAgICBAVGVzdAogICAgIHB1YmxpYyB2b2lkIHNob3VsZEV2YWxBc0dyb292eVByb3BlcnRpZXNXaGVuV2hpdGVMaXN0ZWQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKICAgICAgICAgZmluYWwgQ29tcGlsZVN0YXRpY0dyb292eUN1c3RvbWl6ZXIgc3RhbmRhcmRTYW5kYm94ID0gbmV3IENvbXBpbGVTdGF0aWNHcm9vdnlDdXN0b21pemVyKEZpbGVTYW5kYm94RXh0ZW5zaW9uLmNsYXNzLmdldE5hbWUoKSk7Ci0gICAgICAgIHRyeSAoR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZSBlbmdpbmUgPSBuZXcgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZShzdGFuZGFyZFNhbmRib3gpKSB7Ci0gICAgICAgICAgICBhc3NlcnRUaGF0KEFycmF5cy5lcXVhbHMoInRlc3QiLmdldEJ5dGVzKCksIChieXRlW10pIGVuZ2luZS5ldmFsKCIndGVzdCcuYnl0ZXMiKSksIGlzKHRydWUpKTsKLSAgICAgICAgfQorICAgICAgICBmaW5hbCBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lIGVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKHN0YW5kYXJkU2FuZGJveCk7CisgICAgICAgIGFzc2VydFRoYXQoQXJyYXlzLmVxdWFscygidGVzdCIuZ2V0Qnl0ZXMoKSwgKGJ5dGVbXSkgZW5naW5lLmV2YWwoIid0ZXN0Jy5ieXRlcyIpKSwgaXModHJ1ZSkpOwogICAgIH0KIAogICAgIEBUZXN0CiAgICAgcHVibGljIHZvaWQgc2hvdWxkUHJldmVudE1hbGljaW91c1N0dWZmV2l0aFN5c3RlbUJ1dEFsbG93U29tZU1ldGhvZHNPblN5c3RlbSgpIHRocm93cyBFeGNlcHRpb24gewogICAgICAgICBmaW5hbCBDb21waWxlU3RhdGljR3Jvb3Z5Q3VzdG9taXplciBzdGFuZGFyZFNhbmRib3ggPSBuZXcgQ29tcGlsZVN0YXRpY0dyb292eUN1c3RvbWl6ZXIoRmlsZVNhbmRib3hFeHRlbnNpb24uY2xhc3MuZ2V0TmFtZSgpKTsKLSAgICAgICAgdHJ5IChHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lIGVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKHN0YW5kYXJkU2FuZGJveCkpIHsKKyAgICAgICAgZmluYWwgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZSBlbmdpbmUgPSBuZXcgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZShzdGFuZGFyZFNhbmRib3gpOworICAgICAgICB0cnkgewogICAgICAgICAgICAgYXNzZXJ0VGhhdCgobG9uZykgZW5naW5lLmV2YWwoIlN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpIiksIGdyZWF0ZXJUaGFuKDBMKSk7CiAgICAgICAgICAgICBhc3NlcnRUaGF0KChsb25nKSBlbmdpbmUuZXZhbCgiU3lzdGVtLm5hbm9UaW1lKCkiKSwgZ3JlYXRlclRoYW4oMEwpKTsKIApAQCAtMTE0LDcgKzExMiw4IEBACiAgICAgQFRlc3QKICAgICBwdWJsaWMgdm9pZCBzaG91bGRQcmV2ZW50TWFsaWNpb3VzU3R1ZmZXaXRoRmlsZSgpIHRocm93cyBFeGNlcHRpb24gewogICAgICAgICBmaW5hbCBDb21waWxlU3RhdGljR3Jvb3Z5Q3VzdG9taXplciBzdGFuZGFyZFNhbmRib3ggPSBuZXcgQ29tcGlsZVN0YXRpY0dyb292eUN1c3RvbWl6ZXIoRmlsZVNhbmRib3hFeHRlbnNpb24uY2xhc3MuZ2V0TmFtZSgpKTsKLSAgICAgICAgdHJ5IChHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lIGVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKHN0YW5kYXJkU2FuZGJveCkpIHsKKyAgICAgICAgZmluYWwgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZSBlbmdpbmUgPSBuZXcgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZShzdGFuZGFyZFNhbmRib3gpOworICAgICAgICB0cnkgewogICAgICAgICAgICAgZW5naW5lLmV2YWwoImphdmEubmlvLmZpbGUuRmlsZVN5c3RlbXMuZ2V0RGVmYXVsdCgpIik7CiAgICAgICAgICAgICBmYWlsKCJTaG91bGQgaGF2ZSBhIGNvbXBpbGUgZXJyb3IgYmVjYXVzZSBjbGFzcy9tZXRob2QgaXMgbm90IHdoaXRlIGxpc3RlZCIpOwogICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKQEAgLTEyNywxMyArMTI2LDEzIEBACiAgICAgQExvYWRHcmFwaFdpdGgoTG9hZEdyYXBoV2l0aC5HcmFwaERhdGEuTU9ERVJOKQogICAgIHB1YmxpYyB2b2lkIHNob3VsZEV2YWxPbkdBc1RoZU1ldGhvZElzV2hpdGVMaXN0ZWQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKICAgICAgICAgZmluYWwgQ29tcGlsZVN0YXRpY0dyb292eUN1c3RvbWl6ZXIgc3RhbmRhcmRTYW5kYm94ID0gbmV3IENvbXBpbGVTdGF0aWNHcm9vdnlDdXN0b21pemVyKEZpbGVTYW5kYm94RXh0ZW5zaW9uLmNsYXNzLmdldE5hbWUoKSk7Ci0gICAgICAgIHRyeSAoR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZSBlbmdpbmUgPSBuZXcgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZShzdGFuZGFyZFNhbmRib3gpKSB7Ci0gICAgICAgICAgICBmaW5hbCBCaW5kaW5ncyBiaW5kaW5ncyA9IGVuZ2luZS5jcmVhdGVCaW5kaW5ncygpOwotICAgICAgICAgICAgYmluZGluZ3MucHV0KCJnIiwgZyk7Ci0gICAgICAgICAgICBiaW5kaW5ncy5wdXQoIm1hcmtvIiwgY29udmVydFRvVmVydGV4SWQoZ3JhcGgsICJtYXJrbyIpKTsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscyhnLlYoY29udmVydFRvVmVydGV4SWQoZ3JhcGgsICJtYXJrbyIpKS5uZXh0KCksIGVuZ2luZS5ldmFsKCJnLlYobWFya28pLm5leHQoKSIsIGJpbmRpbmdzKSk7Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoZy5WKGNvbnZlcnRUb1ZlcnRleElkKGdyYXBoLCAibWFya28iKSkub3V0KCJjcmVhdGVkIikuY291bnQoKS5uZXh0KCksIGVuZ2luZS5ldmFsKCJnLlYobWFya28pLm91dChcImNyZWF0ZWRcIikuY291bnQoKS5uZXh0KCkiLCBiaW5kaW5ncykpOwotICAgICAgICB9CisgICAgICAgIGZpbmFsIEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUgZW5naW5lID0gbmV3IEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUoc3RhbmRhcmRTYW5kYm94KTsKKworICAgICAgICBmaW5hbCBCaW5kaW5ncyBiaW5kaW5ncyA9IGVuZ2luZS5jcmVhdGVCaW5kaW5ncygpOworICAgICAgICBiaW5kaW5ncy5wdXQoImciLCBnKTsKKyAgICAgICAgYmluZGluZ3MucHV0KCJtYXJrbyIsIGNvbnZlcnRUb1ZlcnRleElkKGdyYXBoLCAibWFya28iKSk7CisgICAgICAgIGFzc2VydEVxdWFscyhnLlYoY29udmVydFRvVmVydGV4SWQoZ3JhcGgsICJtYXJrbyIpKS5uZXh0KCksIGVuZ2luZS5ldmFsKCJnLlYobWFya28pLm5leHQoKSIsIGJpbmRpbmdzKSk7CisgICAgICAgIGFzc2VydEVxdWFscyhnLlYoY29udmVydFRvVmVydGV4SWQoZ3JhcGgsICJtYXJrbyIpKS5vdXQoImNyZWF0ZWQiKS5jb3VudCgpLm5leHQoKSwgZW5naW5lLmV2YWwoImcuVihtYXJrbykub3V0KFwiY3JlYXRlZFwiKS5jb3VudCgpLm5leHQoKSIsIGJpbmRpbmdzKSk7CiAgICAgfQogCiAgICAgcHJpdmF0ZSBPYmplY3QgY29udmVydFRvVmVydGV4SWQoZmluYWwgR3JhcGggZ3JhcGgsIGZpbmFsIFN0cmluZyB2ZXJ0ZXhOYW1lKSB7CmRpZmYgLS1naXQgYS9ncmVtbGluLWdyb292eS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9HcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lU2FuZGJveGVkU3RhbmRhcmRUZXN0LmphdmEgYi9ncmVtbGluLWdyb292eS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9HcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lU2FuZGJveGVkU3RhbmRhcmRUZXN0LmphdmEKaW5kZXggYzNiYWM3NC4uYjIwM2JhOCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1ncm9vdnkvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZVNhbmRib3hlZFN0YW5kYXJkVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tZ3Jvb3Z5L3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL0dyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmVTYW5kYm94ZWRTdGFuZGFyZFRlc3QuamF2YQpAQCAtNjEsMTUgKzYxLDE1IEBACiAgICAgcHVibGljIHZvaWQgc2hvdWxkRXZhbEdyYXBoVHJhdmVyc2FsU291cmNlKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CiAgICAgICAgIGZpbmFsIEdyYXBoIGdyYXBoID0gVGlua2VyRmFjdG9yeS5jcmVhdGVNb2Rlcm4oKTsKICAgICAgICAgZmluYWwgR3JhcGhUcmF2ZXJzYWxTb3VyY2UgZyA9IGdyYXBoLnRyYXZlcnNhbCgpOwotICAgICAgICB0cnkgKEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUgZW5naW5lID0gbmV3IEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUoKSkgewotICAgICAgICAgICAgZmluYWwgQmluZGluZ3MgYmluZGluZ3MgPSBlbmdpbmUuY3JlYXRlQmluZGluZ3MoKTsKLSAgICAgICAgICAgIGJpbmRpbmdzLnB1dCgiZyIsIGcpOwotICAgICAgICAgICAgYmluZGluZ3MucHV0KCJtYXJrbyIsIGNvbnZlcnRUb1ZlcnRleElkKGdyYXBoLCAibWFya28iKSk7Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoZy5WKGNvbnZlcnRUb1ZlcnRleElkKGdyYXBoLCAibWFya28iKSkubmV4dCgpLCBlbmdpbmUuZXZhbCgiZy5WKG1hcmtvKS5uZXh0KCkiLCBiaW5kaW5ncykpOwotICAgICAgICB9CisgICAgICAgIEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUgZW5naW5lID0gbmV3IEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUoKTsKKyAgICAgICAgQmluZGluZ3MgYmluZGluZ3MgPSBlbmdpbmUuY3JlYXRlQmluZGluZ3MoKTsKKyAgICAgICAgYmluZGluZ3MucHV0KCJnIiwgZyk7CisgICAgICAgIGJpbmRpbmdzLnB1dCgibWFya28iLCBjb252ZXJ0VG9WZXJ0ZXhJZChncmFwaCwgIm1hcmtvIikpOworICAgICAgICBhc3NlcnRFcXVhbHMoZy5WKGNvbnZlcnRUb1ZlcnRleElkKGdyYXBoLCAibWFya28iKSkubmV4dCgpLCBlbmdpbmUuZXZhbCgiZy5WKG1hcmtvKS5uZXh0KCkiLCBiaW5kaW5ncykpOwogCi0gICAgICAgIHRyeSAoR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZSBlbmdpbmUgPSBuZXcgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZShub3RTYW5kYm94ZWQpKSB7Ci0gICAgICAgICAgICBmaW5hbCBCaW5kaW5ncyBiaW5kaW5ncyA9IGVuZ2luZS5jcmVhdGVCaW5kaW5ncygpOworICAgICAgICBlbmdpbmUgPSBuZXcgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZShub3RTYW5kYm94ZWQpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgYmluZGluZ3MgPSBlbmdpbmUuY3JlYXRlQmluZGluZ3MoKTsKICAgICAgICAgICAgIGJpbmRpbmdzLnB1dCgiZyIsIGcpOwogICAgICAgICAgICAgYmluZGluZ3MucHV0KCJtYXJrbyIsIGNvbnZlcnRUb1ZlcnRleElkKGdyYXBoLCAibWFya28iKSk7CiAgICAgICAgICAgICBlbmdpbmUuZXZhbCgiZy5WKG1hcmtvKS5uZXh0KCkiLCBiaW5kaW5ncyk7CkBAIC03OSwyOCArNzksMjcgQEAKICAgICAgICAgICAgIGFzc2VydFRoYXQoZXguZ2V0TWVzc2FnZSgpLCBjb250YWluc1N0cmluZygiVGhlIHZhcmlhYmxlIFtnXSBpcyB1bmRlY2xhcmVkLiIpKTsKICAgICAgICAgfQogCi0gICAgICAgIHRyeSAoR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZSBlbmdpbmUgPSBuZXcgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZShzYW5kYm94ZWQpKSB7Ci0gICAgICAgICAgICBmaW5hbCBCaW5kaW5ncyBiaW5kaW5ncyA9IGVuZ2luZS5jcmVhdGVCaW5kaW5ncygpOwotICAgICAgICAgICAgYmluZGluZ3MucHV0KCJnIiwgZyk7Ci0gICAgICAgICAgICBiaW5kaW5ncy5wdXQoIm1hcmtvIiwgY29udmVydFRvVmVydGV4SWQoZ3JhcGgsICJtYXJrbyIpKTsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscyhnLlYoY29udmVydFRvVmVydGV4SWQoZ3JhcGgsICJtYXJrbyIpKS5uZXh0KCksIGVuZ2luZS5ldmFsKCJnLlYobWFya28pLm5leHQoKSIsIGJpbmRpbmdzKSk7Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoZy5WKGNvbnZlcnRUb1ZlcnRleElkKGdyYXBoLCAibWFya28iKSkub3V0KCJjcmVhdGVkIikuY291bnQoKS5uZXh0KCksIGVuZ2luZS5ldmFsKCJnLlYobWFya28pLm91dChcImNyZWF0ZWRcIikuY291bnQoKS5uZXh0KCkiLCBiaW5kaW5ncykpOwotICAgICAgICB9CisgICAgICAgIGVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKHNhbmRib3hlZCk7CisgICAgICAgIGJpbmRpbmdzID0gZW5naW5lLmNyZWF0ZUJpbmRpbmdzKCk7CisgICAgICAgIGJpbmRpbmdzLnB1dCgiZyIsIGcpOworICAgICAgICBiaW5kaW5ncy5wdXQoIm1hcmtvIiwgY29udmVydFRvVmVydGV4SWQoZ3JhcGgsICJtYXJrbyIpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKGcuVihjb252ZXJ0VG9WZXJ0ZXhJZChncmFwaCwgIm1hcmtvIikpLm5leHQoKSwgZW5naW5lLmV2YWwoImcuVihtYXJrbykubmV4dCgpIiwgYmluZGluZ3MpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKGcuVihjb252ZXJ0VG9WZXJ0ZXhJZChncmFwaCwgIm1hcmtvIikpLm91dCgiY3JlYXRlZCIpLmNvdW50KCkubmV4dCgpLCBlbmdpbmUuZXZhbCgiZy5WKG1hcmtvKS5vdXQoXCJjcmVhdGVkXCIpLmNvdW50KCkubmV4dCgpIiwgYmluZGluZ3MpKTsKICAgICB9CiAKICAgICBAVGVzdAogICAgIHB1YmxpYyB2b2lkIHNob3VsZEV2YWxHcmFwaCgpIHRocm93cyBFeGNlcHRpb24gewogICAgICAgICBmaW5hbCBHcmFwaCBncmFwaCA9IFRpbmtlckZhY3RvcnkuY3JlYXRlTW9kZXJuKCk7CiAgICAgICAgIGZpbmFsIEdyYXBoVHJhdmVyc2FsU291cmNlIGcgPSBncmFwaC50cmF2ZXJzYWwoKTsKLSAgICAgICAgdHJ5IChHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lIGVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKCkpIHsKLSAgICAgICAgICAgIGZpbmFsIEJpbmRpbmdzIGJpbmRpbmdzID0gZW5naW5lLmNyZWF0ZUJpbmRpbmdzKCk7Ci0gICAgICAgICAgICBiaW5kaW5ncy5wdXQoImdyYXBoIiwgZ3JhcGgpOwotICAgICAgICAgICAgYmluZGluZ3MucHV0KCJtYXJrbyIsIGNvbnZlcnRUb1ZlcnRleElkKGdyYXBoLCAibWFya28iKSk7Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoZ3JhcGgudmVydGljZXMoY29udmVydFRvVmVydGV4SWQoZ3JhcGgsICJtYXJrbyIpKS5uZXh0KCksIGVuZ2luZS5ldmFsKCJncmFwaC52ZXJ0aWNlcyhtYXJrbykubmV4dCgpIiwgYmluZGluZ3MpKTsKLSAgICAgICAgfQorICAgICAgICBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lIGVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKCk7CisgICAgICAgIEJpbmRpbmdzIGJpbmRpbmdzID0gZW5naW5lLmNyZWF0ZUJpbmRpbmdzKCk7CisgICAgICAgIGJpbmRpbmdzLnB1dCgiZ3JhcGgiLCBncmFwaCk7CisgICAgICAgIGJpbmRpbmdzLnB1dCgibWFya28iLCBjb252ZXJ0VG9WZXJ0ZXhJZChncmFwaCwgIm1hcmtvIikpOworICAgICAgICBhc3NlcnRFcXVhbHMoZ3JhcGgudmVydGljZXMoY29udmVydFRvVmVydGV4SWQoZ3JhcGgsICJtYXJrbyIpKS5uZXh0KCksIGVuZ2luZS5ldmFsKCJncmFwaC52ZXJ0aWNlcyhtYXJrbykubmV4dCgpIiwgYmluZGluZ3MpKTsKIAotICAgICAgICB0cnkgKEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUgZW5naW5lID0gbmV3IEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUobm90U2FuZGJveGVkKSkgewotICAgICAgICAgICAgZmluYWwgQmluZGluZ3MgYmluZGluZ3MgPSBlbmdpbmUuY3JlYXRlQmluZGluZ3MoKTsKKyAgICAgICAgZW5naW5lID0gbmV3IEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUobm90U2FuZGJveGVkKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGJpbmRpbmdzID0gZW5naW5lLmNyZWF0ZUJpbmRpbmdzKCk7CiAgICAgICAgICAgICBiaW5kaW5ncy5wdXQoImdyYXBoIiwgZ3JhcGgpOwogICAgICAgICAgICAgYmluZGluZ3MucHV0KCJtYXJrbyIsIGNvbnZlcnRUb1ZlcnRleElkKGdyYXBoLCAibWFya28iKSk7CiAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoZ3JhcGgudmVydGljZXMoY29udmVydFRvVmVydGV4SWQoZ3JhcGgsICJtYXJrbyIpKS5uZXh0KCksIGVuZ2luZS5ldmFsKCJncmFwaC52ZXJ0aWNlcyhtYXJrbykubmV4dCgpIiwgYmluZGluZ3MpKTsKQEAgLTExMCw4ICsxMDksOSBAQAogICAgICAgICAgICAgYXNzZXJ0VGhhdChleC5nZXRNZXNzYWdlKCksIGNvbnRhaW5zU3RyaW5nKCJUaGUgdmFyaWFibGUgW2dyYXBoXSBpcyB1bmRlY2xhcmVkLiIpKTsKICAgICAgICAgfQogCi0gICAgICAgIHRyeSAoR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZSBlbmdpbmUgPSBuZXcgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZShub3RTYW5kYm94ZWQpKSB7Ci0gICAgICAgICAgICBmaW5hbCBCaW5kaW5ncyBiaW5kaW5ncyA9IGVuZ2luZS5jcmVhdGVCaW5kaW5ncygpOworICAgICAgICBlbmdpbmUgPSBuZXcgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZShub3RTYW5kYm94ZWQpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgYmluZGluZ3MgPSBlbmdpbmUuY3JlYXRlQmluZGluZ3MoKTsKICAgICAgICAgICAgIGJpbmRpbmdzLnB1dCgiZ3JhcGgiLCBncmFwaCk7CiAgICAgICAgICAgICBiaW5kaW5ncy5wdXQoIngiLCBjb252ZXJ0VG9WZXJ0ZXhJZChncmFwaCwgIm1hcmtvIikpOwogICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKGdyYXBoLnZlcnRpY2VzKGNvbnZlcnRUb1ZlcnRleElkKGdyYXBoLCAibWFya28iKSkubmV4dCgpLCBlbmdpbmUuZXZhbCgiZ3JhcGgudmVydGljZXMoeCkubmV4dCgpIiwgYmluZGluZ3MpKTsKQEAgLTEyMSwxOSArMTIxLDE3IEBACiAgICAgICAgICAgICBhc3NlcnRUaGF0KGV4LmdldE1lc3NhZ2UoKSwgY29udGFpbnNTdHJpbmcoIlRoZSB2YXJpYWJsZSBbZ3JhcGhdIGlzIHVuZGVjbGFyZWQuIikpOwogICAgICAgICB9CiAKLSAgICAgICAgdHJ5IChHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lIGVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKHNhbmRib3hlZCkpIHsKLSAgICAgICAgICAgIGZpbmFsIEJpbmRpbmdzIGJpbmRpbmdzID0gZW5naW5lLmNyZWF0ZUJpbmRpbmdzKCk7Ci0gICAgICAgICAgICBiaW5kaW5ncy5wdXQoImdyYXBoIiwgZ3JhcGgpOwotICAgICAgICAgICAgYmluZGluZ3MucHV0KCJtYXJrbyIsIGNvbnZlcnRUb1ZlcnRleElkKGdyYXBoLCAibWFya28iKSk7Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoZ3JhcGgudmVydGljZXMoY29udmVydFRvVmVydGV4SWQoZ3JhcGgsICJtYXJrbyIpKS5uZXh0KCksIGVuZ2luZS5ldmFsKCJncmFwaC52ZXJ0aWNlcyhtYXJrbykubmV4dCgpIiwgYmluZGluZ3MpKTsKLSAgICAgICAgfQorICAgICAgICBlbmdpbmUgPSBuZXcgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZShzYW5kYm94ZWQpOworICAgICAgICBiaW5kaW5ncyA9IGVuZ2luZS5jcmVhdGVCaW5kaW5ncygpOworICAgICAgICBiaW5kaW5ncy5wdXQoImdyYXBoIiwgZ3JhcGgpOworICAgICAgICBiaW5kaW5ncy5wdXQoIm1hcmtvIiwgY29udmVydFRvVmVydGV4SWQoZ3JhcGgsICJtYXJrbyIpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKGdyYXBoLnZlcnRpY2VzKGNvbnZlcnRUb1ZlcnRleElkKGdyYXBoLCAibWFya28iKSkubmV4dCgpLCBlbmdpbmUuZXZhbCgiZ3JhcGgudmVydGljZXMobWFya28pLm5leHQoKSIsIGJpbmRpbmdzKSk7CiAKLSAgICAgICAgdHJ5IChHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lIGVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKHNhbmRib3hlZCkpIHsKLSAgICAgICAgICAgIGZpbmFsIEJpbmRpbmdzIGJpbmRpbmdzID0gZW5naW5lLmNyZWF0ZUJpbmRpbmdzKCk7Ci0gICAgICAgICAgICBiaW5kaW5ncy5wdXQoImdyYXBoIiwgZ3JhcGgpOwotICAgICAgICAgICAgYmluZGluZ3MucHV0KCJ4IiwgY29udmVydFRvVmVydGV4SWQoZ3JhcGgsICJtYXJrbyIpKTsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscyhncmFwaC52ZXJ0aWNlcyhjb252ZXJ0VG9WZXJ0ZXhJZChncmFwaCwgIm1hcmtvIikpLm5leHQoKSwgZW5naW5lLmV2YWwoImdyYXBoLnZlcnRpY2VzKHgpLm5leHQoKSIsIGJpbmRpbmdzKSk7Ci0gICAgICAgIH0KKyAgICAgICAgZW5naW5lID0gbmV3IEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUoc2FuZGJveGVkKTsKKyAgICAgICAgYmluZGluZ3MgPSBlbmdpbmUuY3JlYXRlQmluZGluZ3MoKTsKKyAgICAgICAgYmluZGluZ3MucHV0KCJncmFwaCIsIGdyYXBoKTsKKyAgICAgICAgYmluZGluZ3MucHV0KCJ4IiwgY29udmVydFRvVmVydGV4SWQoZ3JhcGgsICJtYXJrbyIpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKGdyYXBoLnZlcnRpY2VzKGNvbnZlcnRUb1ZlcnRleElkKGdyYXBoLCAibWFya28iKSkubmV4dCgpLCBlbmdpbmUuZXZhbCgiZ3JhcGgudmVydGljZXMoeCkubmV4dCgpIiwgYmluZGluZ3MpKTsKICAgICB9CiAKICAgICBwcml2YXRlIE9iamVjdCBjb252ZXJ0VG9WZXJ0ZXhJZChmaW5hbCBHcmFwaCBncmFwaCwgZmluYWwgU3RyaW5nIHZlcnRleE5hbWUpIHsKZGlmZiAtLWdpdCBhL2dyZW1saW4tZ3Jvb3Z5L3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL0dyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmVUaW5rZXJQb3BTYW5kYm94VGVzdC5qYXZhIGIvZ3JlbWxpbi1ncm9vdnkvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZVRpbmtlclBvcFNhbmRib3hUZXN0LmphdmEKaW5kZXggYzJkNTU1Zi4uZmQzNmVhYSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1ncm9vdnkvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZVRpbmtlclBvcFNhbmRib3hUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi1ncm9vdnkvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZVRpbmtlclBvcFNhbmRib3hUZXN0LmphdmEKQEAgLTQwLDcgKzQwLDggQEAKICAgICBAVGVzdAogICAgIHB1YmxpYyB2b2lkIHNob3VsZE5vdEV2YWxBc1RoZU1ldGhvZElzTm90V2hpdGVMaXN0ZWQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKICAgICAgICAgZmluYWwgQ29tcGlsZVN0YXRpY0dyb292eUN1c3RvbWl6ZXIgc3RhbmRhcmRTYW5kYm94ID0gbmV3IENvbXBpbGVTdGF0aWNHcm9vdnlDdXN0b21pemVyKFRpbmtlclBvcFNhbmRib3hFeHRlbnNpb24uY2xhc3MuZ2V0TmFtZSgpKTsKLSAgICAgICAgdHJ5IChHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lIGVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKHN0YW5kYXJkU2FuZGJveCkpIHsKKyAgICAgICAgZmluYWwgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZSBlbmdpbmUgPSBuZXcgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZShzdGFuZGFyZFNhbmRib3gpOworICAgICAgICB0cnkgewogICAgICAgICAgICAgZW5naW5lLmV2YWwoImphdmEubGFuZy5NYXRoLmFicygxMjMpIik7CiAgICAgICAgICAgICBmYWlsKCJTaG91bGQgaGF2ZSBhIGNvbXBpbGUgZXJyb3IgYmVjYXVzZSBjbGFzcy9tZXRob2QgaXMgbm90IHdoaXRlIGxpc3RlZCIpOwogICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKQEAgLTU0LDEzICs1NSwxMyBAQAogICAgICAgICBmaW5hbCBHcmFwaCBncmFwaCA9IFRpbmtlckZhY3RvcnkuY3JlYXRlTW9kZXJuKCk7CiAgICAgICAgIGZpbmFsIEdyYXBoVHJhdmVyc2FsU291cmNlIGcgPSBncmFwaC50cmF2ZXJzYWwoKTsKICAgICAgICAgZmluYWwgQ29tcGlsZVN0YXRpY0dyb292eUN1c3RvbWl6ZXIgc3RhbmRhcmRTYW5kYm94ID0gbmV3IENvbXBpbGVTdGF0aWNHcm9vdnlDdXN0b21pemVyKFRpbmtlclBvcFNhbmRib3hFeHRlbnNpb24uY2xhc3MuZ2V0TmFtZSgpKTsKLSAgICAgICAgdHJ5IChHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lIGVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKHN0YW5kYXJkU2FuZGJveCkpIHsKLSAgICAgICAgICAgIGZpbmFsIEJpbmRpbmdzIGJpbmRpbmdzID0gZW5naW5lLmNyZWF0ZUJpbmRpbmdzKCk7Ci0gICAgICAgICAgICBiaW5kaW5ncy5wdXQoImciLCBnKTsKLSAgICAgICAgICAgIGJpbmRpbmdzLnB1dCgibWFya28iLCBjb252ZXJ0VG9WZXJ0ZXhJZChncmFwaCwgIm1hcmtvIikpOwotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKGcuVihjb252ZXJ0VG9WZXJ0ZXhJZChncmFwaCwgIm1hcmtvIikpLm5leHQoKSwgZW5naW5lLmV2YWwoImcuVihtYXJrbykubmV4dCgpIiwgYmluZGluZ3MpKTsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscyhnLlYoY29udmVydFRvVmVydGV4SWQoZ3JhcGgsICJtYXJrbyIpKS5vdXQoImNyZWF0ZWQiKS5jb3VudCgpLm5leHQoKSwgZW5naW5lLmV2YWwoImcuVihtYXJrbykub3V0KFwiY3JlYXRlZFwiKS5jb3VudCgpLm5leHQoKSIsIGJpbmRpbmdzKSk7Ci0gICAgICAgIH0KKyAgICAgICAgZmluYWwgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZSBlbmdpbmUgPSBuZXcgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZShzdGFuZGFyZFNhbmRib3gpOworCisgICAgICAgIGZpbmFsIEJpbmRpbmdzIGJpbmRpbmdzID0gZW5naW5lLmNyZWF0ZUJpbmRpbmdzKCk7CisgICAgICAgIGJpbmRpbmdzLnB1dCgiZyIsIGcpOworICAgICAgICBiaW5kaW5ncy5wdXQoIm1hcmtvIiwgY29udmVydFRvVmVydGV4SWQoZ3JhcGgsICJtYXJrbyIpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKGcuVihjb252ZXJ0VG9WZXJ0ZXhJZChncmFwaCwgIm1hcmtvIikpLm5leHQoKSwgZW5naW5lLmV2YWwoImcuVihtYXJrbykubmV4dCgpIiwgYmluZGluZ3MpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKGcuVihjb252ZXJ0VG9WZXJ0ZXhJZChncmFwaCwgIm1hcmtvIikpLm91dCgiY3JlYXRlZCIpLmNvdW50KCkubmV4dCgpLCBlbmdpbmUuZXZhbCgiZy5WKG1hcmtvKS5vdXQoXCJjcmVhdGVkXCIpLmNvdW50KCkubmV4dCgpIiwgYmluZGluZ3MpKTsKICAgICB9CiAKICAgICBwcml2YXRlIE9iamVjdCBjb252ZXJ0VG9WZXJ0ZXhJZChmaW5hbCBHcmFwaCBncmFwaCwgZmluYWwgU3RyaW5nIHZlcnRleE5hbWUpIHsKZGlmZiAtLWdpdCBhL2dyZW1saW4tZ3Jvb3Z5L3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL0dyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmVUeXBlQ2hlY2tlZFRlc3QuamF2YSBiL2dyZW1saW4tZ3Jvb3Z5L3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL0dyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmVUeXBlQ2hlY2tlZFRlc3QuamF2YQppbmRleCBiM2ZmN2M4Li5kNDFmMDdkIDEwMDY0NAotLS0gYS9ncmVtbGluLWdyb292eS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9HcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lVHlwZUNoZWNrZWRUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi1ncm9vdnkvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZVR5cGVDaGVja2VkVGVzdC5qYXZhCkBAIC0zNywxMiArMzcsMTIgQEAKICAgICBAVGVzdAogICAgIHB1YmxpYyB2b2lkIHNob3VsZFR5cGVDaGVjaygpIHRocm93cyBFeGNlcHRpb24gewogICAgICAgICAvLyB3aXRoIG5vIHR5cGUgY2hlY2tpbmcgdGhpcyBzaG91bGQgcGFzcwotICAgICAgICB0cnkgKEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUgc2NyaXB0RW5naW5lID0gbmV3IEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUoKSkgewotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDI1NSwgc2NyaXB0RW5naW5lLmV2YWwoIigoT2JqZWN0KSBuZXcgamF2YS5hd3QuQ29sb3IoMjU1LCAyNTUsIDI1NSkpLmdldFJlZCgpIikpOwotICAgICAgICB9CisgICAgICAgIEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUgc2NyaXB0RW5naW5lID0gbmV3IEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUoKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDI1NSwgc2NyaXB0RW5naW5lLmV2YWwoIigoT2JqZWN0KSBuZXcgamF2YS5hd3QuQ29sb3IoMjU1LCAyNTUsIDI1NSkpLmdldFJlZCgpIikpOwogCiAgICAgICAgIGZpbmFsIFR5cGVDaGVja2VkR3Jvb3Z5Q3VzdG9taXplciBwcm92aWRlciA9IG5ldyBUeXBlQ2hlY2tlZEdyb292eUN1c3RvbWl6ZXIoKTsKLSAgICAgICAgdHJ5IChHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lIHNjcmlwdEVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKHByb3ZpZGVyKSkgeworICAgICAgICBzY3JpcHRFbmdpbmUgPSBuZXcgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZShwcm92aWRlcik7CisgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBzY3JpcHRFbmdpbmUuZXZhbCgiKChPYmplY3QpIG5ldyBqYXZhLmF3dC5Db2xvcigyNTUsIDI1NSwgMjU1KSkuZ2V0UmVkKCkiKTsKICAgICAgICAgICAgIGZhaWwoIlNob3VsZCBoYXZlIGZhaWxlZCB0eXBlIGNoZWNraW5nIik7CiAgICAgICAgIH0gY2F0Y2ggKFNjcmlwdEV4Y2VwdGlvbiBzZSkgewpAQCAtNTYsMTMgKzU2LDEzIEBACiAgICAgcHVibGljIHZvaWQgc2hvdWxkVHlwZUNoZWNrV2l0aEV4dGVuc2lvbigpIHRocm93cyBFeGNlcHRpb24gewogICAgICAgICAvLyB3aXRoIG5vIHR5cGUgY2hlY2tpbmcgZXh0ZW5zaW9uIHRoaXMgc2hvdWxkIHBhc3MKICAgICAgICAgZmluYWwgVHlwZUNoZWNrZWRHcm9vdnlDdXN0b21pemVyIHByb3ZpZGVyTm9FeHRlbnNpb24gPSBuZXcgVHlwZUNoZWNrZWRHcm9vdnlDdXN0b21pemVyKCk7Ci0gICAgICAgIHRyeSAoR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZSBzY3JpcHRFbmdpbmUgPSBuZXcgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZShwcm92aWRlck5vRXh0ZW5zaW9uKSkgewotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDI1NSwgc2NyaXB0RW5naW5lLmV2YWwoImRlZiBjID0gbmV3IGphdmEuYXd0LkNvbG9yKDI1NSwgMjU1LCAyNTUpOyBjLnJlZCIpKTsKLSAgICAgICAgfQorICAgICAgICBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lIHNjcmlwdEVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKHByb3ZpZGVyTm9FeHRlbnNpb24pOworICAgICAgICBhc3NlcnRFcXVhbHMoMjU1LCBzY3JpcHRFbmdpbmUuZXZhbCgiZGVmIGMgPSBuZXcgamF2YS5hd3QuQ29sb3IoMjU1LCAyNTUsIDI1NSk7IGMucmVkIikpOwogCiAgICAgICAgIGZpbmFsIFR5cGVDaGVja2VkR3Jvb3Z5Q3VzdG9taXplciBwcm92aWRlcldpdGhFeHRlbnNpb24gPSBuZXcgVHlwZUNoZWNrZWRHcm9vdnlDdXN0b21pemVyKAogICAgICAgICAgICAgICAgIFByZWNvbXBpbGVkRXh0ZW5zaW9ucy5QcmV2ZW50Q29sb3JVc2FnZUV4dGVuc2lvbi5jbGFzcy5nZXROYW1lKCkpOwotICAgICAgICB0cnkgKEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUgc2NyaXB0RW5naW5lID0gbmV3IEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUocHJvdmlkZXJXaXRoRXh0ZW5zaW9uKSkgeworICAgICAgICBzY3JpcHRFbmdpbmUgPSBuZXcgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZShwcm92aWRlcldpdGhFeHRlbnNpb24pOworICAgICAgICB0cnkgewogICAgICAgICAgICAgc2NyaXB0RW5naW5lLmV2YWwoImRlZiBjID0gbmV3IGphdmEuYXd0LkNvbG9yKDI1NSwgMjU1LCAyNTUpOyBjLnJlZCIpOwogICAgICAgICAgICAgZmFpbCgiU2hvdWxkIGhhdmUgZmFpbGVkIHR5cGUgY2hlY2tpbmciKTsKICAgICAgICAgfSBjYXRjaCAoU2NyaXB0RXhjZXB0aW9uIHNlKSB7CkBAIC03NSwxNSArNzUsMTUgQEAKICAgICBwdWJsaWMgdm9pZCBzaG91bGRUeXBlQ2hlY2tXaXRoTXVsdGlwbGVFeHRlbnNpb24oKSB0aHJvd3MgRXhjZXB0aW9uIHsKICAgICAgICAgLy8gd2l0aCBubyB0eXBlIGNoZWNraW5nIGV4dGVuc2lvbiB0aGlzIHNob3VsZCBwYXNzCiAgICAgICAgIGZpbmFsIFR5cGVDaGVja2VkR3Jvb3Z5Q3VzdG9taXplciBwcm92aWRlck5vRXh0ZW5zaW9uID0gbmV3IFR5cGVDaGVja2VkR3Jvb3Z5Q3VzdG9taXplcigpOwotICAgICAgICB0cnkgKEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUgc2NyaXB0RW5naW5lID0gbmV3IEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUocHJvdmlkZXJOb0V4dGVuc2lvbikpIHsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscygyNTUsIHNjcmlwdEVuZ2luZS5ldmFsKCJkZWYgYyA9IG5ldyBqYXZhLmF3dC5Db2xvcigyNTUsIDI1NSwgMjU1KTsgYy5yZWQiKSk7Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoMWwsIHNjcmlwdEVuZ2luZS5ldmFsKCJkZWYgYyA9IG5ldyBqYXZhLnV0aWwuY29uY3VycmVudC5Db3VudERvd25MYXRjaCgxKTsgYy5jb3VudCIpKTsKLSAgICAgICAgfQorICAgICAgICBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lIHNjcmlwdEVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKHByb3ZpZGVyTm9FeHRlbnNpb24pOworICAgICAgICBhc3NlcnRFcXVhbHMoMjU1LCBzY3JpcHRFbmdpbmUuZXZhbCgiZGVmIGMgPSBuZXcgamF2YS5hd3QuQ29sb3IoMjU1LCAyNTUsIDI1NSk7IGMucmVkIikpOworICAgICAgICBhc3NlcnRFcXVhbHMoMWwsIHNjcmlwdEVuZ2luZS5ldmFsKCJkZWYgYyA9IG5ldyBqYXZhLnV0aWwuY29uY3VycmVudC5Db3VudERvd25MYXRjaCgxKTsgYy5jb3VudCIpKTsKIAogICAgICAgICBmaW5hbCBUeXBlQ2hlY2tlZEdyb292eUN1c3RvbWl6ZXIgcHJvdmlkZXJXaXRoRXh0ZW5zaW9uID0gbmV3IFR5cGVDaGVja2VkR3Jvb3Z5Q3VzdG9taXplcigKICAgICAgICAgICAgICAgICBQcmVjb21waWxlZEV4dGVuc2lvbnMuUHJldmVudENvbG9yVXNhZ2VFeHRlbnNpb24uY2xhc3MuZ2V0TmFtZSgpICsKICAgICAgICAgICAgICAgICAgICAgICAgICIsIiArIFByZWNvbXBpbGVkRXh0ZW5zaW9ucy5QcmV2ZW50Q291bnREb3duTGF0Y2hVc2FnZUV4dGVuc2lvbi5jbGFzcy5nZXROYW1lKCkpOwotICAgICAgICB0cnkgKEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUgc2NyaXB0RW5naW5lID0gbmV3IEdyZW1saW5Hcm9vdnlTY3JpcHRFbmdpbmUocHJvdmlkZXJXaXRoRXh0ZW5zaW9uKSkgeworICAgICAgICBzY3JpcHRFbmdpbmUgPSBuZXcgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZShwcm92aWRlcldpdGhFeHRlbnNpb24pOworICAgICAgICB0cnkgewogICAgICAgICAgICAgc2NyaXB0RW5naW5lLmV2YWwoImRlZiBjID0gbmV3IGphdmEuYXd0LkNvbG9yKDI1NSwgMjU1LCAyNTUpOyBjLnJlZCIpOwogICAgICAgICAgICAgZmFpbCgiU2hvdWxkIGhhdmUgZmFpbGVkIHR5cGUgY2hlY2tpbmciKTsKICAgICAgICAgfSBjYXRjaCAoU2NyaXB0RXhjZXB0aW9uIHNlKSB7CkBAIC05MSw3ICs5MSw4IEBACiAgICAgICAgICAgICBhc3NlcnRUaGF0KHNlLmdldE1lc3NhZ2UoKSwgY29udGFpbnNTdHJpbmcoIk1ldGhvZCBjYWxsIGlzIG5vdCBhbGxvd2VkISIpKTsKICAgICAgICAgfQogCi0gICAgICAgIHRyeSAoR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZSBzY3JpcHRFbmdpbmUgPSBuZXcgR3JlbWxpbkdyb292eVNjcmlwdEVuZ2luZShwcm92aWRlcldpdGhFeHRlbnNpb24pKSB7CisgICAgICAgIHNjcmlwdEVuZ2luZSA9IG5ldyBHcmVtbGluR3Jvb3Z5U2NyaXB0RW5naW5lKHByb3ZpZGVyV2l0aEV4dGVuc2lvbik7CisgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBzY3JpcHRFbmdpbmUuZXZhbCgiZGVmIGMgPSBuZXcgamF2YS51dGlsLmNvbmN1cnJlbnQuQ291bnREb3duTGF0Y2goMSk7IGMuY291bnQiKTsKICAgICAgICAgICAgIGZhaWwoIlNob3VsZCBoYXZlIGZhaWxlZCB0eXBlIGNoZWNraW5nIik7CiAgICAgICAgIH0gY2F0Y2ggKFNjcmlwdEV4Y2VwdGlvbiBzZSkgewpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1ncm9vdnkvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvR3Jvb3Z5U2NyaXB0RW5naW5lU2V0dXAuamF2YSBiL2dyZW1saW4tZ3Jvb3Z5L3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL0dyb292eVNjcmlwdEVuZ2luZVNldHVwLmphdmEKaW5kZXggYTllZjY4ZS4uODE0MmEwNiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1ncm9vdnkvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvR3Jvb3Z5U2NyaXB0RW5naW5lU2V0dXAuamF2YQorKysgYi9ncmVtbGluLWdyb292eS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9Hcm9vdnlTY3JpcHRFbmdpbmVTZXR1cC5qYXZhCkBAIC0yNCw2ICsyNCw3IEBACiAKIGltcG9ydCBqYXZheC5zY3JpcHQuU2NyaXB0RW5naW5lOwogaW1wb3J0IGphdmF4LnNjcmlwdC5TY3JpcHRFeGNlcHRpb247CitpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuRmllbGQ7CiBpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuTWV0aG9kOwogaW1wb3J0IGphdmEudXRpbC5IYXNoU2V0OwogaW1wb3J0IGphdmEudXRpbC5TZXQ7CkBAIC01Nyw2ICs1OCwxMCBAQAogICAgICAgICAgICAgICAgIHN0YXRpY0ltcG9ydHMuYWRkKG0uZ2V0RGVjbGFyaW5nQ2xhc3MoKSk7CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIGZvciAoRmllbGQgZiA6IENvcmVJbXBvcnRzLmdldEZpZWxkSW1wb3J0cygpKSB7CisgICAgICAgICAgICAgICAgc3RhdGljSW1wb3J0cy5hZGQoZi5nZXREZWNsYXJpbmdDbGFzcygpKTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgZm9yIChDbGFzczw/PiBjIDogc3RhdGljSW1wb3J0cykgewogICAgICAgICAgICAgICAgIGdyb292eVNjcmlwdEVuZ2luZS5ldmFsKCJpbXBvcnQgc3RhdGljICIgKyBjLmdldE5hbWUoKSArICIuKiIpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1ncm9vdnkvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvR3Jvb3Z5VHJhbnNsYXRvclByb3ZpZGVyLmphdmEgYi9ncmVtbGluLWdyb292eS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9Hcm9vdnlUcmFuc2xhdG9yUHJvdmlkZXIuamF2YQppbmRleCAzNTJkMGMyLi41ZjU1NmI4IDEwMDY0NAotLS0gYS9ncmVtbGluLWdyb292eS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9Hcm9vdnlUcmFuc2xhdG9yUHJvdmlkZXIuamF2YQorKysgYi9ncmVtbGluLWdyb292eS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9Hcm9vdnlUcmFuc2xhdG9yUHJvdmlkZXIuamF2YQpAQCAtMjEwLDYgKzIxMCwxNCBAQAogICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuQ29yZVRyYXZlcnNhbFRlc3QiLAogICAgICAgICBtZXRob2QgPSAic2hvdWxkTmV2ZXJQcm9wYWdhdGVBTnVsbFZhbHVlZFRyYXZlcnNlciIsCiAgICAgICAgIHJlYXNvbiA9ICJSZWFzb24gcmVxdWlyZXMgaW52ZXN0aWdhdGlvbiIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuUmVhZFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiKiIsCisgICAgICAgIHJlYXNvbiA9ICJyZWFkIGFuZCB3cml0ZSB0ZXN0cyBkb24ndCB0cmFuc2xhdGUgbG9jYWxseSB3ZWxsIGJlY2F1c2Ugb2YgY2FsbGluZyBpdGVyYXRlKCkgaW5zaWRlIHJlYWQoKS93cml0ZSgpIGFkZCBhIG5vbmUoKSIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuV3JpdGVUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gIioiLAorICAgICAgICByZWFzb24gPSAicmVhZCBhbmQgd3JpdGUgdGVzdHMgZG9uJ3QgdHJhbnNsYXRlIGxvY2FsbHkgd2VsbCBiZWNhdXNlIG9mIGNhbGxpbmcgaXRlcmF0ZSgpIGluc2lkZSByZWFkKCkvd3JpdGUoKSBhZGQgYSBub25lKCkiKQogcHVibGljIGNsYXNzIEdyb292eVRyYW5zbGF0b3JQcm92aWRlciBleHRlbmRzIFRpbmtlckdyYXBoUHJvdmlkZXIgewogICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyBHcmFwaFRyYXZlcnNhbFNvdXJjZSB0cmF2ZXJzYWwoZmluYWwgR3JhcGggZ3JhcGgpIHsKZGlmZiAtLWdpdCBhL2dyZW1saW4tZ3Jvb3Z5L3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL0dyb292eVRyYW5zbGF0b3JUZXN0LmphdmEgYi9ncmVtbGluLWdyb292eS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9Hcm9vdnlUcmFuc2xhdG9yVGVzdC5qYXZhCmluZGV4IDMwNTcxN2MuLjcxZjc5ZWMgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tZ3Jvb3Z5L3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL0dyb292eVRyYW5zbGF0b3JUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi1ncm9vdnkvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvR3Jvb3Z5VHJhbnNsYXRvclRlc3QuamF2YQpAQCAtMjUxLDE3ICsyNTEsNiBAQAogICAgIH0KIAogICAgIEBUZXN0Ci0gICAgcHVibGljIHZvaWQgc2hvdWxkT3ZlcnJpZGVEZWZhdWx0VHlwZVRyYW5zbGF0aW9uV2l0aFNvbWV0aGluZ0JvbmtlcnMoKSB7Ci0gICAgICAgIGZpbmFsIFRpbmtlckdyYXBoIGdyYXBoID0gVGlua2VyR3JhcGgub3BlbigpOwotICAgICAgICBmaW5hbCBHcmFwaFRyYXZlcnNhbFNvdXJjZSBnID0gZ3JhcGgudHJhdmVyc2FsKCk7Ci0gICAgICAgIGZpbmFsIFN0cmluZyB0aGluZ1RvU3VmZml4QWxsU3RyaW5nc1dpdGggPSAiLXdoeS13b3VsZC1hbnlvbmUtZG8tdGhpcyI7Ci0gICAgICAgIGZpbmFsIFN0cmluZyBzY3JpcHQgPSBHcm9vdnlUcmFuc2xhdG9yLm9mKCJnIiwgeCAtPiB4IGluc3RhbmNlb2YgU3RyaW5nID8geCArIHRoaW5nVG9TdWZmaXhBbGxTdHJpbmdzV2l0aCA6IHgpLgotICAgICAgICAgICAgICAgIHRyYW5zbGF0ZShnLmluamVjdCgieXl5IiwgInh4eCIpLmFzQWRtaW4oKS5nZXRCeXRlY29kZSgpKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKFN0cmluZy5mb3JtYXQoImcuaW5qZWN0KFwieXl5JXNcIixcInh4eCVzXCIpIiwgdGhpbmdUb1N1ZmZpeEFsbFN0cmluZ3NXaXRoLCB0aGluZ1RvU3VmZml4QWxsU3RyaW5nc1dpdGgpLCBzY3JpcHQpOwotICAgICAgICBhc3NlcnRUaGF0U2NyaXB0T2soc2NyaXB0LCAiZyIsIGcpOwotICAgIH0KLQotICAgIEBUZXN0CiAgICAgcHVibGljIHZvaWQgc2hvdWxkSW5jbHVkZUN1c3RvbVR5cGVUcmFuc2xhdGlvbkZvclNvbWV0aGluZ1NpbGx5KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CiAgICAgICAgIGZpbmFsIFRpbmtlckdyYXBoIGdyYXBoID0gVGlua2VyR3JhcGgub3BlbigpOwogICAgICAgICBmaW5hbCBTaWxseUNsYXNzIG5vdFNpbGx5RW5vdWdoID0gU2lsbHlDbGFzcy5mcm9tKCJub3Qgc2lsbHkgZW5vdWdoIiwgMTAwKTsKQEAgLTI3MywxMCArMjYyLDcgQEAKICAgICAgICAgYXNzZXJ0RXF1YWxzKFN0cmluZy5mb3JtYXQoImcuaW5qZWN0KCVzKSIsICJub3Qgc2lsbHkgZW5vdWdoOjEwMCIpLCBzY3JpcHRCYWQpOwogCiAgICAgICAgIC8vIHdpdGggdHlwZSB0cmFuc2xhdGlvbiB3ZSBnZXQgdmFsaWQgZ3JlbWxpbgotICAgICAgICBmaW5hbCBTdHJpbmcgc2NyaXB0R29vZCA9IEdyb292eVRyYW5zbGF0b3Iub2YoImciLAotICAgICAgICAgICAgICAgIHggLT4geCBpbnN0YW5jZW9mIFNpbGx5Q2xhc3MgPwotICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFRyYW5zbGF0b3IuU2NyaXB0VHJhbnNsYXRvci5IYW5kbGVkKFN0cmluZy5mb3JtYXQoIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ3Jvb3Z5LmpzcjIyMy5Hcm9vdnlUcmFuc2xhdG9yVGVzdC5TaWxseUNsYXNzLmZyb20oJyVzJywgKGludCkgJXMpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICgoU2lsbHlDbGFzcykgeCkuZ2V0WCgpLCAoKFNpbGx5Q2xhc3MpIHgpLmdldFkoKSkpIDogeCkuCisgICAgICAgIGZpbmFsIFN0cmluZyBzY3JpcHRHb29kID0gR3Jvb3Z5VHJhbnNsYXRvci5vZigiZyIsIG5ldyBTaWxseUNsYXNzVHJhbnNsYXRvcigpKS4KICAgICAgICAgICAgICAgICB0cmFuc2xhdGUoZy5pbmplY3Qobm90U2lsbHlFbm91Z2gpLmFzQWRtaW4oKS5nZXRCeXRlY29kZSgpKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKFN0cmluZy5mb3JtYXQoImcuaW5qZWN0KG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ3Jvb3Z5LmpzcjIyMy5Hcm9vdnlUcmFuc2xhdG9yVGVzdC5TaWxseUNsYXNzLmZyb20oJyVzJywgKGludCkgJXMpKSIsIG5vdFNpbGx5RW5vdWdoLmdldFgoKSwgbm90U2lsbHlFbm91Z2guZ2V0WSgpKSwgc2NyaXB0R29vZCk7CiAgICAgICAgIGFzc2VydFRoYXRTY3JpcHRPayhzY3JpcHRHb29kLCAiZyIsIGcpOwpAQCAtNDE1LDEzICs0MDEsMjMgQEAKICAgICAgICAgfQogICAgIH0KIAorICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgU2lsbHlDbGFzc1RyYW5zbGF0b3IgZXh0ZW5kcyBHcm9vdnlUcmFuc2xhdG9yLkRlZmF1bHRUeXBlVHJhbnNsYXRvciB7CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHByb3RlY3RlZCBTdHJpbmcgY29udmVydFRvU3RyaW5nKGZpbmFsIE9iamVjdCBvYmplY3QpIHsKKyAgICAgICAgICAgIGlmIChvYmplY3QgaW5zdGFuY2VvZiBTaWxseUNsYXNzKQorICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcuZm9ybWF0KCJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmdyb292eS5qc3IyMjMuR3Jvb3Z5VHJhbnNsYXRvclRlc3QuU2lsbHlDbGFzcy5mcm9tKCclcycsIChpbnQpICVzKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAoKFNpbGx5Q2xhc3MpIG9iamVjdCkuZ2V0WCgpLCAoKFNpbGx5Q2xhc3MpIG9iamVjdCkuZ2V0WSgpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIuY29udmVydFRvU3RyaW5nKG9iamVjdCk7CisgICAgICAgIH0KKyAgICB9CisKICAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFNpbGx5Q2xhc3NUcmFuc2xhdG9yQ3VzdG9taXplciBpbXBsZW1lbnRzIFRyYW5zbGF0b3JDdXN0b21pemVyIHsKIAogICAgICAgICBAT3ZlcnJpZGUKICAgICAgICAgcHVibGljIFRyYW5zbGF0b3IuU2NyaXB0VHJhbnNsYXRvci5UeXBlVHJhbnNsYXRvciBjcmVhdGVUeXBlVHJhbnNsYXRvcigpIHsKLSAgICAgICAgICAgIHJldHVybiB4IC0+IHggaW5zdGFuY2VvZiBTaWxseUNsYXNzID8KLSAgICAgICAgICAgICAgICAgICAgbmV3IFRyYW5zbGF0b3IuU2NyaXB0VHJhbnNsYXRvci5IYW5kbGVkKFN0cmluZy5mb3JtYXQoIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ3Jvb3Z5LmpzcjIyMy5Hcm9vdnlUcmFuc2xhdG9yVGVzdC5TaWxseUNsYXNzLmZyb20oJyVzJywgKGludCkgJXMpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNpbGx5Q2xhc3MpIHgpLmdldFgoKSwgKChTaWxseUNsYXNzKSB4KS5nZXRZKCkpKSA6IHg7CisgICAgICAgICAgICByZXR1cm4gbmV3IFNpbGx5Q2xhc3NUcmFuc2xhdG9yKCk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWdyb292eS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9kc2wvY3JlZGVudGlhbC9DcmVkZW50aWFsR3JhcGhUZXN0LmphdmEgYi9ncmVtbGluLWdyb292eS9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9kc2wvY3JlZGVudGlhbC9DcmVkZW50aWFsR3JhcGhUZXN0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlMDU0Y2UuLjAwMDAwMDAKLS0tIGEvZ3JlbWxpbi1ncm9vdnkvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvZHNsL2NyZWRlbnRpYWwvQ3JlZGVudGlhbEdyYXBoVGVzdC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTIyICswLDAgQEAKLS8qCi0gKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCi0gKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKLSAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCi0gKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCi0gKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCi0gKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCi0gKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAotICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KLSAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQotICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCi0gKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCi0gKiB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmdyb292eS5qc3IyMjMuZHNsLmNyZWRlbnRpYWw7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5HcmFwaDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXg7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi50aW5rZXJncmFwaC5zdHJ1Y3R1cmUuVGlua2VyR3JhcGg7Ci1pbXBvcnQgb3JnLmhhbWNyZXN0Lk1hdGNoZXJBc3NlcnQ7Ci1pbXBvcnQgb3JnLmp1bml0LlRlc3Q7Ci0KLWltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5ncm9vdnkuanNyMjIzLmRzbC5jcmVkZW50aWFsLkNyZWRlbnRpYWxHcmFwaC5jcmVkZW50aWFsczsKLWltcG9ydCBzdGF0aWMgb3JnLmhhbWNyZXN0LkNvcmVNYXRjaGVycy5pczsKLWltcG9ydCBzdGF0aWMgb3JnLmhhbWNyZXN0Lk1hdGNoZXJBc3NlcnQuYXNzZXJ0VGhhdDsKLWltcG9ydCBzdGF0aWMgb3JnLmhhbWNyZXN0Lk1hdGNoZXJzLmdyZWF0ZXJUaGFuOwotaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydEVxdWFsczsKLWltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnROb3RFcXVhbHM7Ci1pbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0TnVsbDsKLQotLyoqCi0gKiBUaGVzZSB0ZXN0cyBjb3ZlciBvbGQgZnVuY3Rpb25hbGl0eSBwcmlvciB0byB0aGUgbmV3IG1ldGhvZCBmb3IgRFNMIGltcGxlbWVudGF0aW9uLgotICoKLSAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKLSAqIEBkZXByZWNhdGVkIEFzIGZvciByZWxlYXNlIDMuMy4zLCByZXBsYWNlZCBieSB7QGxpbmsgQ3JlZGVudGlhbFRyYXZlcnNhbERzbFRlc3R9LgotICovCi1ARGVwcmVjYXRlZAotcHVibGljIGNsYXNzIENyZWRlbnRpYWxHcmFwaFRlc3QgewotCi0gICAgQFRlc3QKLSAgICBwdWJsaWMgdm9pZCBzaG91bGRDcmVhdGVVc2VyKCkgewotICAgICAgICBmaW5hbCBHcmFwaCBncmFwaCA9IFRpbmtlckdyYXBoLm9wZW4oKTsKLSAgICAgICAgZmluYWwgVmVydGV4IHYgPSBjcmVkZW50aWFscyhncmFwaCkuY3JlYXRlVXNlcigic3RlcGhlbiIsICJzZWNyZXQiKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKCJzdGVwaGVuIiwgdi52YWx1ZSgidXNlcm5hbWUiKSk7Ci0gICAgICAgIGFzc2VydEVxdWFscygidXNlciIsIHYubGFiZWwoKSk7Ci0gICAgICAgIGFzc2VydE5vdEVxdWFscygic2VjcmV0Iiwgdi52YWx1ZSgicGFzc3dvcmQiKSk7ICAvLyBoYXNoZWQgdG8gc29tZXRoaW5nCi0gICAgICAgIGFzc2VydFRoYXQodi52YWx1ZSgicGFzc3dvcmQiKS50b1N0cmluZygpLmxlbmd0aCgpLCBncmVhdGVyVGhhbigwKSk7Ci0gICAgfQotCi0gICAgQFRlc3QKLSAgICBwdWJsaWMgdm9pZCBzaG91bGRSZW1vdmVVc2VyKCkgewotICAgICAgICBmaW5hbCBHcmFwaCBncmFwaCA9IFRpbmtlckdyYXBoLm9wZW4oKTsKLSAgICAgICAgTWF0Y2hlckFzc2VydC5hc3NlcnRUaGF0KGdyYXBoLnZlcnRpY2VzKCkuaGFzTmV4dCgpLCBpcyhmYWxzZSkpOwotICAgICAgICBjcmVkZW50aWFscyhncmFwaCkuY3JlYXRlVXNlcigic3RlcGhlbiIsICJzZWNyZXQiKTsKLSAgICAgICAgTWF0Y2hlckFzc2VydC5hc3NlcnRUaGF0KGdyYXBoLnZlcnRpY2VzKCkuaGFzTmV4dCgpLCBpcyh0cnVlKSk7Ci0KLSAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIGNyZWRlbnRpYWxzKGdyYXBoKS5yZW1vdmVVc2VyKCJzdGVwaGVuIikpOwotICAgICAgICBNYXRjaGVyQXNzZXJ0LmFzc2VydFRoYXQoZ3JhcGgudmVydGljZXMoKS5oYXNOZXh0KCksIGlzKGZhbHNlKSk7Ci0gICAgfQotCi0gICAgQFRlc3QKLSAgICBwdWJsaWMgdm9pZCBzaG91bGROb3RSZW1vdmVVc2VyKCkgewotICAgICAgICBmaW5hbCBHcmFwaCBncmFwaCA9IFRpbmtlckdyYXBoLm9wZW4oKTsKLSAgICAgICAgTWF0Y2hlckFzc2VydC5hc3NlcnRUaGF0KGdyYXBoLnZlcnRpY2VzKCkuaGFzTmV4dCgpLCBpcyhmYWxzZSkpOwotICAgICAgICBjcmVkZW50aWFscyhncmFwaCkuY3JlYXRlVXNlcigic3RlcGhlbiIsICJzZWNyZXQiKTsKLSAgICAgICAgTWF0Y2hlckFzc2VydC5hc3NlcnRUaGF0KGdyYXBoLnZlcnRpY2VzKCkuaGFzTmV4dCgpLCBpcyh0cnVlKSk7Ci0KLSAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIGNyZWRlbnRpYWxzKGdyYXBoKS5yZW1vdmVVc2VyKCJzdGVwaGFuaWUiKSk7Ci0gICAgICAgIE1hdGNoZXJBc3NlcnQuYXNzZXJ0VGhhdChncmFwaC52ZXJ0aWNlcygpLmhhc05leHQoKSwgaXModHJ1ZSkpOwotICAgIH0KLQotICAgIEBUZXN0Ci0gICAgcHVibGljIHZvaWQgc2hvdWxkRmluZFVzZXIoKSB7Ci0gICAgICAgIGZpbmFsIEdyYXBoIGdyYXBoID0gVGlua2VyR3JhcGgub3BlbigpOwotICAgICAgICBNYXRjaGVyQXNzZXJ0LmFzc2VydFRoYXQoZ3JhcGgudmVydGljZXMoKS5oYXNOZXh0KCksIGlzKGZhbHNlKSk7Ci0gICAgICAgIGNyZWRlbnRpYWxzKGdyYXBoKS5jcmVhdGVVc2VyKCJtYXJrbyIsICJzZWNyZXQiKTsKLSAgICAgICAgZmluYWwgVmVydGV4IHN0ZXBoZW4gPSBjcmVkZW50aWFscyhncmFwaCkuY3JlYXRlVXNlcigic3RlcGhlbiIsICJzZWNyZXQiKTsKLSAgICAgICAgY3JlZGVudGlhbHMoZ3JhcGgpLmNyZWF0ZVVzZXIoImRhbmllbCIsICJzZWNyZXQiKTsKLSAgICAgICAgTWF0Y2hlckFzc2VydC5hc3NlcnRUaGF0KGdyYXBoLnZlcnRpY2VzKCkuaGFzTmV4dCgpLCBpcyh0cnVlKSk7Ci0KLSAgICAgICAgYXNzZXJ0RXF1YWxzKHN0ZXBoZW4sIGNyZWRlbnRpYWxzKGdyYXBoKS5maW5kVXNlcigic3RlcGhlbiIpKTsKLSAgICB9Ci0KLSAgICBAVGVzdAotICAgIHB1YmxpYyB2b2lkIHNob3VsZE5vdEZpbmRVc2VyKCkgewotICAgICAgICBmaW5hbCBHcmFwaCBncmFwaCA9IFRpbmtlckdyYXBoLm9wZW4oKTsKLSAgICAgICAgTWF0Y2hlckFzc2VydC5hc3NlcnRUaGF0KGdyYXBoLnZlcnRpY2VzKCkuaGFzTmV4dCgpLCBpcyhmYWxzZSkpOwotICAgICAgICBjcmVkZW50aWFscyhncmFwaCkuY3JlYXRlVXNlcigibWFya28iLCAic2VjcmV0Iik7Ci0gICAgICAgIGNyZWRlbnRpYWxzKGdyYXBoKS5jcmVhdGVVc2VyKCJzdGVwaGVuIiwgInNlY3JldCIpOwotICAgICAgICBjcmVkZW50aWFscyhncmFwaCkuY3JlYXRlVXNlcigiZGFuaWVsIiwgInNlY3JldCIpOwotICAgICAgICBNYXRjaGVyQXNzZXJ0LmFzc2VydFRoYXQoZ3JhcGgudmVydGljZXMoKS5oYXNOZXh0KCksIGlzKHRydWUpKTsKLQotICAgICAgICBhc3NlcnROdWxsKGNyZWRlbnRpYWxzKGdyYXBoKS5maW5kVXNlcigic3RlcGhhbmllIikpOwotICAgIH0KLQotICAgIEBUZXN0Ci0gICAgcHVibGljIHZvaWQgc2hvdWxkQ291bnRVc2VycygpIHsKLSAgICAgICAgZmluYWwgR3JhcGggZ3JhcGggPSBUaW5rZXJHcmFwaC5vcGVuKCk7Ci0gICAgICAgIE1hdGNoZXJBc3NlcnQuYXNzZXJ0VGhhdChncmFwaC52ZXJ0aWNlcygpLmhhc05leHQoKSwgaXMoZmFsc2UpKTsKLSAgICAgICAgY3JlZGVudGlhbHMoZ3JhcGgpLmNyZWF0ZVVzZXIoIm1hcmtvIiwgInNlY3JldCIpOwotICAgICAgICBjcmVkZW50aWFscyhncmFwaCkuY3JlYXRlVXNlcigic3RlcGhlbiIsICJzZWNyZXQiKTsKLSAgICAgICAgY3JlZGVudGlhbHMoZ3JhcGgpLmNyZWF0ZVVzZXIoImRhbmllbCIsICJzZWNyZXQiKTsKLSAgICAgICAgTWF0Y2hlckFzc2VydC5hc3NlcnRUaGF0KGdyYXBoLnZlcnRpY2VzKCkuaGFzTmV4dCgpLCBpcyh0cnVlKSk7Ci0KLSAgICAgICAgYXNzZXJ0RXF1YWxzKDMsIGNyZWRlbnRpYWxzKGdyYXBoKS5jb3VudFVzZXJzKCkpOwotICAgIH0KLQotICAgIEBUZXN0KGV4cGVjdGVkID0gSWxsZWdhbFN0YXRlRXhjZXB0aW9uLmNsYXNzKQotICAgIHB1YmxpYyB2b2lkIHNob3VsZFRocm93SWZGaW5kaW5nTXVsdGlwbGVVc2VycygpIHsKLSAgICAgICAgZmluYWwgR3JhcGggZ3JhcGggPSBUaW5rZXJHcmFwaC5vcGVuKCk7Ci0gICAgICAgIE1hdGNoZXJBc3NlcnQuYXNzZXJ0VGhhdChncmFwaC52ZXJ0aWNlcygpLmhhc05leHQoKSwgaXMoZmFsc2UpKTsKLSAgICAgICAgY3JlZGVudGlhbHMoZ3JhcGgpLmNyZWF0ZVVzZXIoInN0ZXBoZW4iLCAic2VjcmV0Iik7Ci0gICAgICAgIGNyZWRlbnRpYWxzKGdyYXBoKS5jcmVhdGVVc2VyKCJzdGVwaGVuIiwgInNlY3JldCIpOwotICAgICAgICBNYXRjaGVyQXNzZXJ0LmFzc2VydFRoYXQoZ3JhcGgudmVydGljZXMoKS5oYXNOZXh0KCksIGlzKHRydWUpKTsKLQotICAgICAgICBhc3NlcnROdWxsKGNyZWRlbnRpYWxzKGdyYXBoKS5maW5kVXNlcigic3RlcGhlbiIpKTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9ncmVtbGluLWphdmFzY3JpcHQvZ2x2L1RyYXZlcnNhbFNvdXJjZS50ZW1wbGF0ZSBiL2dyZW1saW4tamF2YXNjcmlwdC9nbHYvVHJhdmVyc2FsU291cmNlLnRlbXBsYXRlCmluZGV4IDc3MmI1YTEuLjFjYWUxMjMgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tamF2YXNjcmlwdC9nbHYvVHJhdmVyc2FsU291cmNlLnRlbXBsYXRlCisrKyBiL2dyZW1saW4tamF2YXNjcmlwdC9nbHYvVHJhdmVyc2FsU291cmNlLnRlbXBsYXRlCkBAIC0xMzIsNiArMTMyLDE1IEBACiAgIH07CiB9CiAKKzwlIHRva2Vucy5lYWNoIHsgayx2IC0+ICU+CitjbGFzcyA8JT0gayAlPiB7Cis8JSB2LmVhY2gge2EsYiAtPiAlPgorIHN0YXRpYyBnZXQgPCU9IGEgJT4oKSB7CisgICByZXR1cm4gIjwlPSBiICU+IgorIH0KKzwlIH0gJT59Cis8JSB9ICU+CisKIGNsYXNzIFAgewogICAvKioKICAgICogUmVwcmVzZW50cyBhbiBvcGVyYXRpb24uCkBAIC0xOTEsNiArMjAwLDQ4IEBACiAgIHJldHVybiBuZXcgKEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kLmFwcGx5KFAsIGFyZ3MpKTsKIH0KIAorY2xhc3MgVGV4dFAgeworICAvKioKKyAgICogUmVwcmVzZW50cyBhbiBvcGVyYXRpb24uCisgICAqIEBjb25zdHJ1Y3RvcgorICAgKi8KKyAgY29uc3RydWN0b3Iob3BlcmF0b3IsIHZhbHVlLCBvdGhlcikgeworICAgIHRoaXMub3BlcmF0b3IgPSBvcGVyYXRvcjsKKyAgICB0aGlzLnZhbHVlID0gdmFsdWU7CisgICAgdGhpcy5vdGhlciA9IG90aGVyOworICB9CisKKyAgLyoqCisgICAqIFJldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgaW5zdGFuY2UuCisgICAqIEByZXR1cm5zIHtzdHJpbmd9CisgICAqLworICB0b1N0cmluZygpIHsKKyAgICBpZiAodGhpcy5vdGhlciA9PT0gdW5kZWZpbmVkKSB7CisgICAgICByZXR1cm4gdGhpcy5vcGVyYXRvciArICcoJyArIHRoaXMudmFsdWUgKyAnKSc7CisgICAgfQorICAgIHJldHVybiB0aGlzLm9wZXJhdG9yICsgJygnICsgdGhpcy52YWx1ZSArICcsICcgKyB0aGlzLm90aGVyICsgJyknOworICB9CisKKyAgYW5kKGFyZykgeworICAgIHJldHVybiBuZXcgUCgnYW5kJywgdGhpcywgYXJnKTsKKyAgfQorCisgIG9yKGFyZykgeworICAgIHJldHVybiBuZXcgUCgnb3InLCB0aGlzLCBhcmcpOworICB9Cis8JSB0cG1ldGhvZHMuZWFjaHsgbWV0aG9kIC0+ICU+CisgIC8qKiBAcGFyYW0gey4uLk9iamVjdH0gYXJncyAqLworICBzdGF0aWMgPCU9IHRvSnMuY2FsbChtZXRob2QpICU+KC4uLmFyZ3MpIHsKKyAgICByZXR1cm4gY3JlYXRlVGV4dFAoJzwlPSBtZXRob2QgJT4nLCBhcmdzKTsKKyAgfQorPCUgfSAlPgorfQorCitmdW5jdGlvbiBjcmVhdGVUZXh0UChvcGVyYXRvciwgYXJncykgeworICBhcmdzLnVuc2hpZnQobnVsbCwgb3BlcmF0b3IpOworICByZXR1cm4gbmV3IChGdW5jdGlvbi5wcm90b3R5cGUuYmluZC5hcHBseShUZXh0UCwgYXJncykpOworfQorCiBjbGFzcyBUcmF2ZXJzZXIgewogICBjb25zdHJ1Y3RvcihvYmplY3QsIGJ1bGspIHsKICAgICB0aGlzLm9iamVjdCA9IG9iamVjdDsKQEAgLTIwMiw2ICsyNTMsMTAgQEAKIAogfQogCitjb25zdCB3aXRoT3B0aW9ucyA9IHsKKyAgPCU9IHdpdGhPcHRpb25zLmNvbGxlY3QgeyBpdC5uYW1lICsgIjogIiArIGl0LnZhbHVlIH0uam9pbigiLFxuICAiKSU+Cit9OworCiBmdW5jdGlvbiB0b0VudW0odHlwZU5hbWUsIGtleXMpIHsKICAgY29uc3QgcmVzdWx0ID0ge307CiAgIGtleXMuc3BsaXQoJyAnKS5mb3JFYWNoKGsgPT4gewpAQCAtMjI4LDYgKzI4Myw5IEBACiBtb2R1bGUuZXhwb3J0cyA9IHsKICAgRW51bVZhbHVlLAogICBQLAorICBUZXh0UCwKKyAgd2l0aE9wdGlvbnMsCisgIElPLAogICBUcmF2ZXJzYWwsCiAgIFRyYXZlcnNhbFNpZGVFZmZlY3RzLAogICBUcmF2ZXJzZXI8JQpAQCAtMjM2LDQgKzI5NCw0IEBACiAgICAgICAgIGVudW1DbGFzcy5nZXRFbnVtQ29uc3RhbnRzKCkuc29ydCB7IGEsIGIgLT4gYS5uYW1lKCkgPD0+IGIubmFtZSgpIH0uY29sbGVjdCB7IHRvSnMuY2FsbChpdC5uYW1lKCkpIH0uam9pbignICcpICsgIicpIgogfQogJT4KLX07ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorfTsKZGlmZiAtLWdpdCBhL2dyZW1saW4tamF2YXNjcmlwdC9nbHYvZ2VuZXJhdGUuZ3Jvb3Z5IGIvZ3JlbWxpbi1qYXZhc2NyaXB0L2dsdi9nZW5lcmF0ZS5ncm9vdnkKaW5kZXggOGZkMjJlMy4uY2QzZTg5OSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1qYXZhc2NyaXB0L2dsdi9nZW5lcmF0ZS5ncm9vdnkKKysrIGIvZ3JlbWxpbi1qYXZhc2NyaXB0L2dsdi9nZW5lcmF0ZS5ncm9vdnkKQEAgLTIwLDE4ICsyMCwzMCBAQAogCiBpbXBvcnQgZ3Jvb3Z5LnRleHQuR1N0cmluZ1RlbXBsYXRlRW5naW5lCiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5qc3IyMjMuQ29yZUltcG9ydHMKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIudHJhdmVyc2FsLnN0ZXAubWFwLkNvbm5lY3RlZENvbXBvbmVudAoraW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwuc3RlcC5tYXAuUGFnZVJhbmsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIudHJhdmVyc2FsLnN0ZXAubWFwLlBlZXJQcmVzc3VyZQoraW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwuc3RlcC5tYXAuU2hvcnRlc3RQYXRoCiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWxTb3VyY2UKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5HcmFwaFRyYXZlcnNhbAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkdyYXBoVHJhdmVyc2FsU291cmNlCiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UZXh0UAoraW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuSU8KIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5fXworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLldpdGhPcHRpb25zCiBpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuTW9kaWZpZXIKIAogZGVmIHRvSnNNYXAgPSBbImluIjogImluXyIsCi0gICAgICAgICAgICAgICAiZnJvbSI6ICJmcm9tXyJdCisgICAgICAgICAgICAgICAiZnJvbSI6ICJmcm9tXyIsCisgICAgICAgICAgICAgICAid2l0aCI6ICJ3aXRoXyJdCiAKIGRlZiB0b0pzID0geyBzeW1ib2wgLT4gdG9Kc01hcC5nZXRPckRlZmF1bHQoc3ltYm9sLCBzeW1ib2wpIH0KIAorZGVmIHRvSlNWYWx1ZSA9IHsgdHlwZSwgdmFsdWUgLT4KKyAgdHlwZSA9PSBTdHJpbmcuY2xhc3MgJiYgdmFsdWUgIT0gbnVsbCA/ICgnIicgKyB2YWx1ZSArICciJykgOiB2YWx1ZQorfQorCiBkZWYgZGVjYXBpdGFsaXplID0gewogICAgIFN0cmluZyBzdHJpbmcgPSBpdDsKICAgICBpZiAoc3RyaW5nID09IG51bGwgfHwgc3RyaW5nLmxlbmd0aCgpID09IDApIHsKQEAgLTQ4LDYgKzYwLDEyIEBACiAgICAgcmV0dXJuIG1hdmVuVmVyc2lvbi5yZXBsYWNlKCItU05BUFNIT1QiLCAiLWFscGhhMSIpCiB9CiAKK2RlZiBnYXRoZXJUb2tlbnNGcm9tID0geyB0b2tlbkNsYXNzZXMgLT4KKyAgICBkZWYgbSA9IFs6XQorICAgIHRva2VuQ2xhc3Nlcy5lYWNoIHsgdGMgLT4gbSA8PCBbKHRjLnNpbXBsZU5hbWUpIDogdGMuZ2V0RmllbGRzKCkuc29ydHsgYSwgYiAtPiBhLm5hbWUgPD0+IGIubmFtZSB9LmNvbGxlY3RFbnRyaWVzeyBmIC0+IFsoZi5uYW1lKSA6IGYuZ2V0KG51bGwpXX1dfQorICAgIHJldHVybiBtCit9CisKIGRlZiBiaW5kaW5nID0gWyJlbnVtcyI6IENvcmVJbXBvcnRzLmdldENsYXNzSW1wb3J0cygpCiAgICAgICAgIC5maW5kQWxsIHsgRW51bS5jbGFzcy5pc0Fzc2lnbmFibGVGcm9tKGl0KSB9CiAgICAgICAgIC5zb3J0IHsgYSwgYiAtPiBhLmdldFNpbXBsZU5hbWUoKSA8PT4gYi5nZXRTaW1wbGVOYW1lKCkgfSwKQEAgLTU3LDYgKzc1LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3QgeyBpdC5uYW1lIH0uCiAgICAgICAgICAgICAgICAgICAgICAgIHVuaXF1ZSgpLgogICAgICAgICAgICAgICAgICAgICAgICBzb3J0IHsgYSwgYiAtPiBhIDw9PiBiIH0sCisgICAgICAgICAgICAgICAidHBtZXRob2RzIjogVGV4dFAuY2xhc3MuZ2V0TWV0aG9kcygpLgorICAgICAgICAgICAgICAgICAgICAgICBmaW5kQWxsIHsgTW9kaWZpZXIuaXNTdGF0aWMoaXQuZ2V0TW9kaWZpZXJzKCkpIH0uCisgICAgICAgICAgICAgICAgICAgICAgIGZpbmRBbGwgeyBUZXh0UC5jbGFzcy5pc0Fzc2lnbmFibGVGcm9tKGl0LnJldHVyblR5cGUpIH0uCisgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3QgeyBpdC5uYW1lIH0uCisgICAgICAgICAgICAgICAgICAgICAgIHVuaXF1ZSgpLgorICAgICAgICAgICAgICAgICAgICAgICBzb3J0IHsgYSwgYiAtPiBhIDw9PiBiIH0sCiAgICAgICAgICAgICAgICAic291cmNlU3RlcE1ldGhvZHMiOiBHcmFwaFRyYXZlcnNhbFNvdXJjZS5nZXRNZXRob2RzKCkuIC8vIFNPVVJDRSBTVEVQUwogICAgICAgICAgICAgICAgICAgICAgICBmaW5kQWxsIHsgR3JhcGhUcmF2ZXJzYWxTb3VyY2UuY2xhc3MuZXF1YWxzKGl0LnJldHVyblR5cGUpIH0uCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmRBbGwgewpAQCAtODcsOSArMTExLDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3QgeyBpdC5uYW1lIH0uCiAgICAgICAgICAgICAgICAgICAgICAgIHVuaXF1ZSgpLgogICAgICAgICAgICAgICAgICAgICAgICBzb3J0IHsgYSwgYiAtPiBhIDw9PiBiIH0sCisgICAgICAgICAgICAgICAidG9rZW5zIjogZ2F0aGVyVG9rZW5zRnJvbShbSU8sIENvbm5lY3RlZENvbXBvbmVudCwgU2hvcnRlc3RQYXRoLCBQYWdlUmFuaywgUGVlclByZXNzdXJlXSksCiAgICAgICAgICAgICAgICAidG9KcyI6IHRvSnMsCiAgICAgICAgICAgICAgICAidmVyc2lvbiI6IGRldGVybWluZVZlcnNpb24oKSwKLSAgICAgICAgICAgICAgICJkZWNhcGl0YWxpemUiOiBkZWNhcGl0YWxpemVdCisgICAgICAgICAgICAgICAiZGVjYXBpdGFsaXplIjogZGVjYXBpdGFsaXplLAorICAgICAgICAgICAgICAgIndpdGhPcHRpb25zIjogV2l0aE9wdGlvbnMuZ2V0RGVjbGFyZWRGaWVsZHMoKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3Qge1sibmFtZSI6IGl0Lm5hbWUsICJ2YWx1ZSI6IHRvSlNWYWx1ZShpdC50eXBlLCBpdC5nZXQobnVsbCkpXX1dCiAKIGRlZiBlbmdpbmUgPSBuZXcgR1N0cmluZ1RlbXBsYXRlRW5naW5lKCkKIGRlZiBncmFwaFRyYXZlcnNhbFRlbXBsYXRlID0gZW5naW5lLmNyZWF0ZVRlbXBsYXRlKG5ldyBGaWxlKCIke3Byb2plY3QuYmFzZWRpcn0vZ2x2L0dyYXBoVHJhdmVyc2FsU291cmNlLnRlbXBsYXRlIikpCkBAIC0xMDQsNCArMTMxLDQgQEAKIAogZGVmIHBhY2thZ2VKc29uVGVtcGxhdGUgPSBlbmdpbmUuY3JlYXRlVGVtcGxhdGUobmV3IEZpbGUoIiR7cHJvamVjdC5iYXNlZGlyfS9nbHYvUGFja2FnZUpzb24udGVtcGxhdGUiKSkubWFrZShiaW5kaW5nKQogZGVmIHBhY2thZ2VKc29uRmlsZSA9IG5ldyBGaWxlKCIke3Byb2plY3QuYmFzZWRpcn0vc3JjL21haW4vamF2YXNjcmlwdC9ncmVtbGluLWphdmFzY3JpcHQvcGFja2FnZS5qc29uIikKLXBhY2thZ2VKc29uRmlsZS5uZXdXcml0ZXIoKS53aXRoV3JpdGVyeyBpdCA8PCBwYWNrYWdlSnNvblRlbXBsYXRlIH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitwYWNrYWdlSnNvbkZpbGUubmV3V3JpdGVyKCkud2l0aFdyaXRlcnsgaXQgPDwgcGFja2FnZUpzb25UZW1wbGF0ZSB9CmRpZmYgLS1naXQgYS9ncmVtbGluLWphdmFzY3JpcHQvcG9tLnhtbCBiL2dyZW1saW4tamF2YXNjcmlwdC9wb20ueG1sCmluZGV4IDBjOTY4MTEuLmIzYmUyMTggMTAwNjQ0Ci0tLSBhL2dyZW1saW4tamF2YXNjcmlwdC9wb20ueG1sCisrKyBiL2dyZW1saW4tamF2YXNjcmlwdC9wb20ueG1sCkBAIC0yMSw3ICsyMSw3IEBACiAgICAgPHBhcmVudD4KICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS50aW5rZXJwb3A8L2dyb3VwSWQ+CiAgICAgICAgIDxhcnRpZmFjdElkPnRpbmtlcnBvcDwvYXJ0aWZhY3RJZD4KLSAgICAgICAgPHZlcnNpb24+My4zLjExLVNOQVBTSE9UPC92ZXJzaW9uPgorICAgICAgICA8dmVyc2lvbj4zLjQuNy1TTkFQU0hPVDwvdmVyc2lvbj4KICAgICA8L3BhcmVudD4KICAgICA8YXJ0aWZhY3RJZD5ncmVtbGluLWphdmFzY3JpcHQ8L2FydGlmYWN0SWQ+CiAgICAgPG5hbWU+QXBhY2hlIFRpbmtlclBvcCA6OiBHcmVtbGluIEphdmFzY3JpcHQ8L25hbWU+CkBAIC01OCw3ICs1OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuY29kZWhhdXMuZ3Jvb3Z5PC9ncm91cElkPgogICAgICAgICAgICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+Z3Jvb3Z5LWFsbDwvYXJ0aWZhY3RJZD4KICAgICAgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPiR7Z3Jvb3Z5LnZlcnNpb259PC92ZXJzaW9uPgotICAgICAgICAgICAgICAgICAgICAgICAgPGNsYXNzaWZpZXI+aW5keTwvY2xhc3NpZmllcj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlPnBvbTwvdHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5ydW50aW1lPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgPC9kZXBlbmRlbmN5PgogICAgICAgICAgICAgICAgIDwvZGVwZW5kZW5jaWVzPgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1qYXZhc2NyaXB0L3NyYy9tYWluL2phdmFzY3JpcHQvZ3JlbWxpbi1qYXZhc2NyaXB0L2luZGV4LmpzIGIvZ3JlbWxpbi1qYXZhc2NyaXB0L3NyYy9tYWluL2phdmFzY3JpcHQvZ3JlbWxpbi1qYXZhc2NyaXB0L2luZGV4LmpzCmluZGV4IDVlZjBlY2EuLjg3Zjk4NDIgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tamF2YXNjcmlwdC9zcmMvbWFpbi9qYXZhc2NyaXB0L2dyZW1saW4tamF2YXNjcmlwdC9pbmRleC5qcworKysgYi9ncmVtbGluLWphdmFzY3JpcHQvc3JjL21haW4vamF2YXNjcmlwdC9ncmVtbGluLWphdmFzY3JpcHQvaW5kZXguanMKQEAgLTU3LDYgKzU3LDcgQEAKICAgICBCeXRlY29kZSwKICAgICBFbnVtVmFsdWU6IHQuRW51bVZhbHVlLAogICAgIFA6IHQuUCwKKyAgICBUZXh0UDogdC5UZXh0UCwKICAgICBUcmF2ZXJzYWw6IHQuVHJhdmVyc2FsLAogICAgIFRyYXZlcnNhbFNpZGVFZmZlY3RzOiB0LlRyYXZlcnNhbFNpZGVFZmZlY3RzLAogICAgIFRyYXZlcnNhbFN0cmF0ZWdpZXM6IHN0cmF0ZWdpZXNNb2R1bGUuVHJhdmVyc2FsU3RyYXRlZ2llcywKQEAgLTc3LDcgKzc4LDggQEAKICAgICBzdGF0aWNzOiBndC5zdGF0aWNzLAogICAgIFRyYW5zbGF0b3IsCiAgICAgdHJhdmVyc2FsOiBBbm9ueW1vdXNUcmF2ZXJzYWxTb3VyY2UudHJhdmVyc2FsLAotICAgIEFub255bW91c1RyYXZlcnNhbFNvdXJjZQorICAgIEFub255bW91c1RyYXZlcnNhbFNvdXJjZSwKKyAgICB3aXRoT3B0aW9uczogdC53aXRoT3B0aW9ucwogICB9LAogICBzdHJ1Y3R1cmU6IHsKICAgICBpbzogZ3MsCmRpZmYgLS1naXQgYS9ncmVtbGluLWphdmFzY3JpcHQvc3JjL21haW4vamF2YXNjcmlwdC9ncmVtbGluLWphdmFzY3JpcHQvbGliL2RyaXZlci9jb25uZWN0aW9uLmpzIGIvZ3JlbWxpbi1qYXZhc2NyaXB0L3NyYy9tYWluL2phdmFzY3JpcHQvZ3JlbWxpbi1qYXZhc2NyaXB0L2xpYi9kcml2ZXIvY29ubmVjdGlvbi5qcwppbmRleCAyOWJlNWRjLi42N2RjZTNhIDEwMDY0NAotLS0gYS9ncmVtbGluLWphdmFzY3JpcHQvc3JjL21haW4vamF2YXNjcmlwdC9ncmVtbGluLWphdmFzY3JpcHQvbGliL2RyaXZlci9jb25uZWN0aW9uLmpzCisrKyBiL2dyZW1saW4tamF2YXNjcmlwdC9zcmMvbWFpbi9qYXZhc2NyaXB0L2dyZW1saW4tamF2YXNjcmlwdC9saWIvZHJpdmVyL2Nvbm5lY3Rpb24uanMKQEAgLTI4NCw3ICsyODQsNyBAQAogICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzLmNvZGUpIHsKICAgICAgIGNhc2UgcmVzcG9uc2VTdGF0dXNDb2RlLm5vQ29udGVudDoKICAgICAgICAgdGhpcy5fY2xlYXJIYW5kbGVyKHJlc3BvbnNlLnJlcXVlc3RJZCk7Ci0gICAgICAgIHJldHVybiBoYW5kbGVyLmNhbGxiYWNrKG51bGwsIG5ldyBSZXN1bHRTZXQodXRpbHMuZW1wdHlBcnJheSkpOworICAgICAgICByZXR1cm4gaGFuZGxlci5jYWxsYmFjayhudWxsLCBuZXcgUmVzdWx0U2V0KHV0aWxzLmVtcHR5QXJyYXksIHJlc3BvbnNlLnN0YXR1cy5hdHRyaWJ1dGVzKSk7CiAgICAgICBjYXNlIHJlc3BvbnNlU3RhdHVzQ29kZS5wYXJ0aWFsQ29udGVudDoKICAgICAgICAgaGFuZGxlci5yZXN1bHQgPSBoYW5kbGVyLnJlc3VsdCB8fCBbXTsKICAgICAgICAgaGFuZGxlci5yZXN1bHQucHVzaC5hcHBseShoYW5kbGVyLnJlc3VsdCwgcmVzcG9uc2UucmVzdWx0LmRhdGEpOwpAQCAtMjk3LDcgKzI5Nyw3IEBACiAgICAgICAgICAgaGFuZGxlci5yZXN1bHQgPSByZXNwb25zZS5yZXN1bHQuZGF0YTsKICAgICAgICAgfQogICAgICAgICB0aGlzLl9jbGVhckhhbmRsZXIocmVzcG9uc2UucmVxdWVzdElkKTsKLSAgICAgICAgcmV0dXJuIGhhbmRsZXIuY2FsbGJhY2sobnVsbCwgbmV3IFJlc3VsdFNldChoYW5kbGVyLnJlc3VsdCkpOworICAgICAgICByZXR1cm4gaGFuZGxlci5jYWxsYmFjayhudWxsLCBuZXcgUmVzdWx0U2V0KGhhbmRsZXIucmVzdWx0LCByZXNwb25zZS5zdGF0dXMuYXR0cmlidXRlcykpOwogICAgIH0KICAgfQogCmRpZmYgLS1naXQgYS9ncmVtbGluLWphdmFzY3JpcHQvc3JjL21haW4vamF2YXNjcmlwdC9ncmVtbGluLWphdmFzY3JpcHQvbGliL2RyaXZlci9yZXN1bHQtc2V0LmpzIGIvZ3JlbWxpbi1qYXZhc2NyaXB0L3NyYy9tYWluL2phdmFzY3JpcHQvZ3JlbWxpbi1qYXZhc2NyaXB0L2xpYi9kcml2ZXIvcmVzdWx0LXNldC5qcwppbmRleCAxODYwYWVhLi4zNjI3ZDllIDEwMDY0NAotLS0gYS9ncmVtbGluLWphdmFzY3JpcHQvc3JjL21haW4vamF2YXNjcmlwdC9ncmVtbGluLWphdmFzY3JpcHQvbGliL2RyaXZlci9yZXN1bHQtc2V0LmpzCisrKyBiL2dyZW1saW4tamF2YXNjcmlwdC9zcmMvbWFpbi9qYXZhc2NyaXB0L2dyZW1saW4tamF2YXNjcmlwdC9saWIvZHJpdmVyL3Jlc3VsdC1zZXQuanMKQEAgLTI0LDYgKzI0LDggQEAKIAogY29uc3QgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTsKIGNvbnN0IGluc3BlY3QgPSB1dGlsLmluc3BlY3QuY3VzdG9tIHx8ICdpbnNwZWN0JzsKK2NvbnN0IHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTsKK2NvbnN0IGVtcHR5TWFwID0gT2JqZWN0LmZyZWV6ZShuZXcgdXRpbHMuSW1tdXRhYmxlTWFwKCkpOwogCiAvKioKICAqIFJlcHJlc2VudHMgdGhlIHJlc3BvbnNlIHJldHVybmVkIGZyb20gdGhlIGV4ZWN1dGlvbiBvZiBhIEdyZW1saW4gdHJhdmVyc2FsIG9yIHNjcmlwdC4KQEAgLTMzLDggKzM1LDkgQEAKICAgLyoqCiAgICAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2Yge0BsaW5rIFJlc3VsdFNldH0uCiAgICAqIEBwYXJhbSB7QXJyYXl9IGl0ZW1zCisgICAqIEBwYXJhbSB7TWFwfSBbYXR0cmlidXRlc10KICAgICovCi0gIGNvbnN0cnVjdG9yKGl0ZW1zKSB7CisgIGNvbnN0cnVjdG9yKGl0ZW1zLCBhdHRyaWJ1dGVzKSB7CiAgICAgaWYgKCFBcnJheS5pc0FycmF5KGl0ZW1zKSkgewogICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaXRlbXMgbXVzdCBiZSBhbiBBcnJheSBpbnN0YW5jZScpOwogICAgIH0KQEAgLTQyLDE4ICs0NSwxNiBAQAogICAgIHRoaXMuX2l0ZW1zID0gaXRlbXM7CiAKICAgICAvKioKKyAgICAgKiBHZXRzIGEgTWFwIHJlcHJlc2VudGluZyB0aGUgYXR0cmlidXRlcyBvZiB0aGUgcmVzcG9uc2UuCisgICAgICogQHR5cGUge01hcH0KKyAgICAgKi8KKyAgICB0aGlzLmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzIHx8IGVtcHR5TWFwOworCisgICAgLyoqCiAgICAgICogR2V0cyB0aGUgYW1vdW50IG9mIGl0ZW1zIGluIHRoZSByZXN1bHQuCiAgICAgICogQHR5cGUge051bWJlcn0KICAgICAgKi8KICAgICB0aGlzLmxlbmd0aCA9IGl0ZW1zLmxlbmd0aDsKLQotICAgIC8qKgotICAgICAqIEFjY2VzcyB0aGUgcmF3IHJlc3VsdCBpdGVtcyB2aWEgYSBwcm9wZXJ0eS4KLSAgICAgKiBAZGVwcmVjYXRlZCBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gQXBhY2hlIFRpbmtlclBvcCB2ZXJzaW9uIDMuNC4KLSAgICAgKiBVc2UgPGNvZGU+dG9BcnJheSgpPC9jb2RlPiBvciBpdGVyYXRlIGRpcmVjdGx5IGZyb20gdGhlIDxjb2RlPlJlc3VsdFNldDwvY29kZT4uCi0gICAgICogQHR5cGUge0FycmF5fQotICAgICAqLwotICAgIHRoaXMudHJhdmVyc2VycyA9IGl0ZW1zOwogICB9CiAKICAgLyoqCmRpZmYgLS1naXQgYS9ncmVtbGluLWphdmFzY3JpcHQvc3JjL21haW4vamF2YXNjcmlwdC9ncmVtbGluLWphdmFzY3JpcHQvbGliL3Byb2Nlc3MvZ3JhcGgtdHJhdmVyc2FsLmpzIGIvZ3JlbWxpbi1qYXZhc2NyaXB0L3NyYy9tYWluL2phdmFzY3JpcHQvZ3JlbWxpbi1qYXZhc2NyaXB0L2xpYi9wcm9jZXNzL2dyYXBoLXRyYXZlcnNhbC5qcwppbmRleCAxYjc2NjY3Li5lZmEwOTdiIDEwMDY0NAotLS0gYS9ncmVtbGluLWphdmFzY3JpcHQvc3JjL21haW4vamF2YXNjcmlwdC9ncmVtbGluLWphdmFzY3JpcHQvbGliL3Byb2Nlc3MvZ3JhcGgtdHJhdmVyc2FsLmpzCisrKyBiL2dyZW1saW4tamF2YXNjcmlwdC9zcmMvbWFpbi9qYXZhc2NyaXB0L2dyZW1saW4tamF2YXNjcmlwdC9saWIvcHJvY2Vzcy9ncmFwaC10cmF2ZXJzYWwuanMKQEAgLTgzLDYgKzgzLDE2IEBACiAgIH0KICAgCiAgIC8qKgorICAgKiBHcmFwaCBUcmF2ZXJzYWwgU291cmNlIHdpdGggbWV0aG9kLgorICAgKiBAcGFyYW0gey4uLk9iamVjdH0gYXJncworICAgKiBAcmV0dXJucyB7R3JhcGhUcmF2ZXJzYWxTb3VyY2V9CisgICAqLworICB3aXRoXyguLi5hcmdzKSB7CisgICAgY29uc3QgYiA9IG5ldyBCeXRlY29kZSh0aGlzLmJ5dGVjb2RlKS5hZGRTb3VyY2UoJ3dpdGgnLCBhcmdzKTsKKyAgICByZXR1cm4gbmV3IHRoaXMuZ3JhcGhUcmF2ZXJzYWxTb3VyY2VDbGFzcyh0aGlzLmdyYXBoLCBuZXcgVHJhdmVyc2FsU3RyYXRlZ2llcyh0aGlzLnRyYXZlcnNhbFN0cmF0ZWdpZXMpLCBiLCB0aGlzLmdyYXBoVHJhdmVyc2FsU291cmNlQ2xhc3MsIHRoaXMuZ3JhcGhUcmF2ZXJzYWxDbGFzcyk7CisgIH0KKyAgCisgIC8qKgogICAgKiBHcmFwaCBUcmF2ZXJzYWwgU291cmNlIHdpdGhCdWxrIG1ldGhvZC4KICAgICogQHBhcmFtIHsuLi5PYmplY3R9IGFyZ3MKICAgICogQHJldHVybnMge0dyYXBoVHJhdmVyc2FsU291cmNlfQpAQCAtMTkyLDYgKzIwMiwxNiBAQAogICAgIHJldHVybiBuZXcgdGhpcy5ncmFwaFRyYXZlcnNhbENsYXNzKHRoaXMuZ3JhcGgsIG5ldyBUcmF2ZXJzYWxTdHJhdGVnaWVzKHRoaXMudHJhdmVyc2FsU3RyYXRlZ2llcyksIGIpOwogICB9CiAgIAorICAvKioKKyAgICogaW8gR3JhcGhUcmF2ZXJzYWxTb3VyY2Ugc3RlcCBtZXRob2QuCisgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBhcmdzCisgICAqIEByZXR1cm5zIHtHcmFwaFRyYXZlcnNhbH0KKyAgICovCisgIGlvKC4uLmFyZ3MpIHsKKyAgICBjb25zdCBiID0gbmV3IEJ5dGVjb2RlKHRoaXMuYnl0ZWNvZGUpLmFkZFN0ZXAoJ2lvJywgYXJncyk7CisgICAgcmV0dXJuIG5ldyB0aGlzLmdyYXBoVHJhdmVyc2FsQ2xhc3ModGhpcy5ncmFwaCwgbmV3IFRyYXZlcnNhbFN0cmF0ZWdpZXModGhpcy50cmF2ZXJzYWxTdHJhdGVnaWVzKSwgYik7CisgIH0KKyAgCiB9CiAKIC8qKgpAQCAtMzcxLDYgKzM5MSwxNiBAQAogICB9CiAgIAogICAvKioKKyAgICogR3JhcGggdHJhdmVyc2FsIGNvbm5lY3RlZENvbXBvbmVudCBtZXRob2QuCisgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBhcmdzCisgICAqIEByZXR1cm5zIHtHcmFwaFRyYXZlcnNhbH0KKyAgICovCisgIGNvbm5lY3RlZENvbXBvbmVudCguLi5hcmdzKSB7CisgICAgdGhpcy5ieXRlY29kZS5hZGRTdGVwKCdjb25uZWN0ZWRDb21wb25lbnQnLCBhcmdzKTsKKyAgICByZXR1cm4gdGhpczsKKyAgfQorICAKKyAgLyoqCiAgICAqIEdyYXBoIHRyYXZlcnNhbCBjb25zdGFudCBtZXRob2QuCiAgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBhcmdzCiAgICAqIEByZXR1cm5zIHtHcmFwaFRyYXZlcnNhbH0KQEAgLTQyMSw2ICs0NTEsMTYgQEAKICAgfQogICAKICAgLyoqCisgICAqIEdyYXBoIHRyYXZlcnNhbCBlbGVtZW50TWFwIG1ldGhvZC4KKyAgICogQHBhcmFtIHsuLi5PYmplY3R9IGFyZ3MKKyAgICogQHJldHVybnMge0dyYXBoVHJhdmVyc2FsfQorICAgKi8KKyAgZWxlbWVudE1hcCguLi5hcmdzKSB7CisgICAgdGhpcy5ieXRlY29kZS5hZGRTdGVwKCdlbGVtZW50TWFwJywgYXJncyk7CisgICAgcmV0dXJuIHRoaXM7CisgIH0KKyAgCisgIC8qKgogICAgKiBHcmFwaCB0cmF2ZXJzYWwgZW1pdCBtZXRob2QuCiAgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBhcmdzCiAgICAqIEByZXR1cm5zIHtHcmFwaFRyYXZlcnNhbH0KQEAgLTYwMSw2ICs2NDEsMTYgQEAKICAgfQogICAKICAgLyoqCisgICAqIEdyYXBoIHRyYXZlcnNhbCBpbmRleCBtZXRob2QuCisgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBhcmdzCisgICAqIEByZXR1cm5zIHtHcmFwaFRyYXZlcnNhbH0KKyAgICovCisgIGluZGV4KC4uLmFyZ3MpIHsKKyAgICB0aGlzLmJ5dGVjb2RlLmFkZFN0ZXAoJ2luZGV4JywgYXJncyk7CisgICAgcmV0dXJuIHRoaXM7CisgIH0KKyAgCisgIC8qKgogICAgKiBHcmFwaCB0cmF2ZXJzYWwgaW5qZWN0IG1ldGhvZC4KICAgICogQHBhcmFtIHsuLi5PYmplY3R9IGFyZ3MKICAgICogQHJldHVybnMge0dyYXBoVHJhdmVyc2FsfQpAQCAtOTIxLDYgKzk3MSwxNiBAQAogICB9CiAgIAogICAvKioKKyAgICogR3JhcGggdHJhdmVyc2FsIHJlYWQgbWV0aG9kLgorICAgKiBAcGFyYW0gey4uLk9iamVjdH0gYXJncworICAgKiBAcmV0dXJucyB7R3JhcGhUcmF2ZXJzYWx9CisgICAqLworICByZWFkKC4uLmFyZ3MpIHsKKyAgICB0aGlzLmJ5dGVjb2RlLmFkZFN0ZXAoJ3JlYWQnLCBhcmdzKTsKKyAgICByZXR1cm4gdGhpczsKKyAgfQorICAKKyAgLyoqCiAgICAqIEdyYXBoIHRyYXZlcnNhbCByZXBlYXQgbWV0aG9kLgogICAgKiBAcGFyYW0gey4uLk9iamVjdH0gYXJncwogICAgKiBAcmV0dXJucyB7R3JhcGhUcmF2ZXJzYWx9CkBAIC05NjEsNiArMTAyMSwxNiBAQAogICB9CiAgIAogICAvKioKKyAgICogR3JhcGggdHJhdmVyc2FsIHNob3J0ZXN0UGF0aCBtZXRob2QuCisgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBhcmdzCisgICAqIEByZXR1cm5zIHtHcmFwaFRyYXZlcnNhbH0KKyAgICovCisgIHNob3J0ZXN0UGF0aCguLi5hcmdzKSB7CisgICAgdGhpcy5ieXRlY29kZS5hZGRTdGVwKCdzaG9ydGVzdFBhdGgnLCBhcmdzKTsKKyAgICByZXR1cm4gdGhpczsKKyAgfQorICAKKyAgLyoqCiAgICAqIEdyYXBoIHRyYXZlcnNhbCBzaWRlRWZmZWN0IG1ldGhvZC4KICAgICogQHBhcmFtIHsuLi5PYmplY3R9IGFyZ3MKICAgICogQHJldHVybnMge0dyYXBoVHJhdmVyc2FsfQpAQCAtMTE2MCw2ICsxMjMwLDI2IEBACiAgICAgcmV0dXJuIHRoaXM7CiAgIH0KICAgCisgIC8qKgorICAgKiBHcmFwaCB0cmF2ZXJzYWwgd2l0aCBtZXRob2QuCisgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBhcmdzCisgICAqIEByZXR1cm5zIHtHcmFwaFRyYXZlcnNhbH0KKyAgICovCisgIHdpdGhfKC4uLmFyZ3MpIHsKKyAgICB0aGlzLmJ5dGVjb2RlLmFkZFN0ZXAoJ3dpdGgnLCBhcmdzKTsKKyAgICByZXR1cm4gdGhpczsKKyAgfQorICAKKyAgLyoqCisgICAqIEdyYXBoIHRyYXZlcnNhbCB3cml0ZSBtZXRob2QuCisgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBhcmdzCisgICAqIEByZXR1cm5zIHtHcmFwaFRyYXZlcnNhbH0KKyAgICovCisgIHdyaXRlKC4uLmFyZ3MpIHsKKyAgICB0aGlzLmJ5dGVjb2RlLmFkZFN0ZXAoJ3dyaXRlJywgYXJncyk7CisgICAgcmV0dXJuIHRoaXM7CisgIH0KKyAgCiB9CiAKIGZ1bmN0aW9uIGNhbGxPbkVtcHR5VHJhdmVyc2FsKGZuTmFtZSwgYXJncykgewpAQCAtMTE5Miw2ICsxMjgyLDcgQEAKICAgY3ljbGljUGF0aDogKC4uLmFyZ3MpID0+IGNhbGxPbkVtcHR5VHJhdmVyc2FsKCdjeWNsaWNQYXRoJywgYXJncyksCiAgIGRlZHVwOiAoLi4uYXJncykgPT4gY2FsbE9uRW1wdHlUcmF2ZXJzYWwoJ2RlZHVwJywgYXJncyksCiAgIGRyb3A6ICguLi5hcmdzKSA9PiBjYWxsT25FbXB0eVRyYXZlcnNhbCgnZHJvcCcsIGFyZ3MpLAorICBlbGVtZW50TWFwOiAoLi4uYXJncykgPT4gY2FsbE9uRW1wdHlUcmF2ZXJzYWwoJ2VsZW1lbnRNYXAnLCBhcmdzKSwKICAgZW1pdDogKC4uLmFyZ3MpID0+IGNhbGxPbkVtcHR5VHJhdmVyc2FsKCdlbWl0JywgYXJncyksCiAgIGZpbHRlcjogKC4uLmFyZ3MpID0+IGNhbGxPbkVtcHR5VHJhdmVyc2FsKCdmaWx0ZXInLCBhcmdzKSwKICAgZmxhdE1hcDogKC4uLmFyZ3MpID0+IGNhbGxPbkVtcHR5VHJhdmVyc2FsKCdmbGF0TWFwJywgYXJncyksCkBAIC0xMjA5LDYgKzEzMDAsNyBAQAogICBpbl86ICguLi5hcmdzKSA9PiBjYWxsT25FbXB0eVRyYXZlcnNhbCgnaW5fJywgYXJncyksCiAgIGluRTogKC4uLmFyZ3MpID0+IGNhbGxPbkVtcHR5VHJhdmVyc2FsKCdpbkUnLCBhcmdzKSwKICAgaW5WOiAoLi4uYXJncykgPT4gY2FsbE9uRW1wdHlUcmF2ZXJzYWwoJ2luVicsIGFyZ3MpLAorICBpbmRleDogKC4uLmFyZ3MpID0+IGNhbGxPbkVtcHR5VHJhdmVyc2FsKCdpbmRleCcsIGFyZ3MpLAogICBpbmplY3Q6ICguLi5hcmdzKSA9PiBjYWxsT25FbXB0eVRyYXZlcnNhbCgnaW5qZWN0JywgYXJncyksCiAgIGlzOiAoLi4uYXJncykgPT4gY2FsbE9uRW1wdHlUcmF2ZXJzYWwoJ2lzJywgYXJncyksCiAgIGtleTogKC4uLmFyZ3MpID0+IGNhbGxPbkVtcHR5VHJhdmVyc2FsKCdrZXknLCBhcmdzKSwKZGlmZiAtLWdpdCBhL2dyZW1saW4tamF2YXNjcmlwdC9zcmMvbWFpbi9qYXZhc2NyaXB0L2dyZW1saW4tamF2YXNjcmlwdC9saWIvcHJvY2Vzcy90cmF2ZXJzYWwuanMgYi9ncmVtbGluLWphdmFzY3JpcHQvc3JjL21haW4vamF2YXNjcmlwdC9ncmVtbGluLWphdmFzY3JpcHQvbGliL3Byb2Nlc3MvdHJhdmVyc2FsLmpzCmluZGV4IGE1MTcyZTMuLjkwNjI0MzMgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tamF2YXNjcmlwdC9zcmMvbWFpbi9qYXZhc2NyaXB0L2dyZW1saW4tamF2YXNjcmlwdC9saWIvcHJvY2Vzcy90cmF2ZXJzYWwuanMKKysrIGIvZ3JlbWxpbi1qYXZhc2NyaXB0L3NyYy9tYWluL2phdmFzY3JpcHQvZ3JlbWxpbi1qYXZhc2NyaXB0L2xpYi9wcm9jZXNzL3RyYXZlcnNhbC5qcwpAQCAtMTMyLDYgKzEzMiwxMDMgQEAKICAgfTsKIH0KIAorCitjbGFzcyBJTyB7CisKKyBzdGF0aWMgZ2V0IGdyYXBobWwoKSB7CisgICByZXR1cm4gImdyYXBobWwiCisgfQorCisgc3RhdGljIGdldCBncmFwaHNvbigpIHsKKyAgIHJldHVybiAiZ3JhcGhzb24iCisgfQorCisgc3RhdGljIGdldCBncnlvKCkgeworICAgcmV0dXJuICJncnlvIgorIH0KKworIHN0YXRpYyBnZXQgcmVhZGVyKCkgeworICAgcmV0dXJuICJ+dGlua2VycG9wLmlvLnJlYWRlciIKKyB9CisKKyBzdGF0aWMgZ2V0IHJlZ2lzdHJ5KCkgeworICAgcmV0dXJuICJ+dGlua2VycG9wLmlvLnJlZ2lzdHJ5IgorIH0KKworIHN0YXRpYyBnZXQgd3JpdGVyKCkgeworICAgcmV0dXJuICJ+dGlua2VycG9wLmlvLndyaXRlciIKKyB9Cit9CisKK2NsYXNzIENvbm5lY3RlZENvbXBvbmVudCB7CisKKyBzdGF0aWMgZ2V0IGNvbXBvbmVudCgpIHsKKyAgIHJldHVybiAiZ3JlbWxpbi5jb25uZWN0ZWRDb21wb25lbnRWZXJ0ZXhQcm9ncmFtLmNvbXBvbmVudCIKKyB9CisKKyBzdGF0aWMgZ2V0IGVkZ2VzKCkgeworICAgcmV0dXJuICJ+dGlua2VycG9wLmNvbm5lY3RlZENvbXBvbmVudC5lZGdlcyIKKyB9CisKKyBzdGF0aWMgZ2V0IHByb3BlcnR5TmFtZSgpIHsKKyAgIHJldHVybiAifnRpbmtlcnBvcC5jb25uZWN0ZWRDb21wb25lbnQucHJvcGVydHlOYW1lIgorIH0KK30KKworY2xhc3MgU2hvcnRlc3RQYXRoIHsKKworIHN0YXRpYyBnZXQgZGlzdGFuY2UoKSB7CisgICByZXR1cm4gIn50aW5rZXJwb3Auc2hvcnRlc3RQYXRoLmRpc3RhbmNlIgorIH0KKworIHN0YXRpYyBnZXQgZWRnZXMoKSB7CisgICByZXR1cm4gIn50aW5rZXJwb3Auc2hvcnRlc3RQYXRoLmVkZ2VzIgorIH0KKworIHN0YXRpYyBnZXQgaW5jbHVkZUVkZ2VzKCkgeworICAgcmV0dXJuICJ+dGlua2VycG9wLnNob3J0ZXN0UGF0aC5pbmNsdWRlRWRnZXMiCisgfQorCisgc3RhdGljIGdldCBtYXhEaXN0YW5jZSgpIHsKKyAgIHJldHVybiAifnRpbmtlcnBvcC5zaG9ydGVzdFBhdGgubWF4RGlzdGFuY2UiCisgfQorCisgc3RhdGljIGdldCB0YXJnZXQoKSB7CisgICByZXR1cm4gIn50aW5rZXJwb3Auc2hvcnRlc3RQYXRoLnRhcmdldCIKKyB9Cit9CisKK2NsYXNzIFBhZ2VSYW5rIHsKKworIHN0YXRpYyBnZXQgZWRnZXMoKSB7CisgICByZXR1cm4gIn50aW5rZXJwb3AucGFnZVJhbmsuZWRnZXMiCisgfQorCisgc3RhdGljIGdldCBwcm9wZXJ0eU5hbWUoKSB7CisgICByZXR1cm4gIn50aW5rZXJwb3AucGFnZVJhbmsucHJvcGVydHlOYW1lIgorIH0KKworIHN0YXRpYyBnZXQgdGltZXMoKSB7CisgICByZXR1cm4gIn50aW5rZXJwb3AucGFnZVJhbmsudGltZXMiCisgfQorfQorCitjbGFzcyBQZWVyUHJlc3N1cmUgeworCisgc3RhdGljIGdldCBlZGdlcygpIHsKKyAgIHJldHVybiAifnRpbmtlcnBvcC5wZWVyUHJlc3N1cmUuZWRnZXMiCisgfQorCisgc3RhdGljIGdldCBwcm9wZXJ0eU5hbWUoKSB7CisgICByZXR1cm4gIn50aW5rZXJwb3AucGVlclByZXNzdXJlLnByb3BlcnR5TmFtZSIKKyB9CisKKyBzdGF0aWMgZ2V0IHRpbWVzKCkgeworICAgcmV0dXJuICJ+dGlua2VycG9wLnBlZXJQcmVzc3VyZS50aW1lcyIKKyB9Cit9CisKKwogY2xhc3MgUCB7CiAgIC8qKgogICAgKiBSZXByZXNlbnRzIGFuIG9wZXJhdGlvbi4KQEAgLTI0MSw2ICszMzgsNzMgQEAKICAgcmV0dXJuIG5ldyAoRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQuYXBwbHkoUCwgYXJncykpOwogfQogCitjbGFzcyBUZXh0UCB7CisgIC8qKgorICAgKiBSZXByZXNlbnRzIGFuIG9wZXJhdGlvbi4KKyAgICogQGNvbnN0cnVjdG9yCisgICAqLworICBjb25zdHJ1Y3RvcihvcGVyYXRvciwgdmFsdWUsIG90aGVyKSB7CisgICAgdGhpcy5vcGVyYXRvciA9IG9wZXJhdG9yOworICAgIHRoaXMudmFsdWUgPSB2YWx1ZTsKKyAgICB0aGlzLm90aGVyID0gb3RoZXI7CisgIH0KKworICAvKioKKyAgICogUmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBpbnN0YW5jZS4KKyAgICogQHJldHVybnMge3N0cmluZ30KKyAgICovCisgIHRvU3RyaW5nKCkgeworICAgIGlmICh0aGlzLm90aGVyID09PSB1bmRlZmluZWQpIHsKKyAgICAgIHJldHVybiB0aGlzLm9wZXJhdG9yICsgJygnICsgdGhpcy52YWx1ZSArICcpJzsKKyAgICB9CisgICAgcmV0dXJuIHRoaXMub3BlcmF0b3IgKyAnKCcgKyB0aGlzLnZhbHVlICsgJywgJyArIHRoaXMub3RoZXIgKyAnKSc7CisgIH0KKworICBhbmQoYXJnKSB7CisgICAgcmV0dXJuIG5ldyBQKCdhbmQnLCB0aGlzLCBhcmcpOworICB9CisKKyAgb3IoYXJnKSB7CisgICAgcmV0dXJuIG5ldyBQKCdvcicsIHRoaXMsIGFyZyk7CisgIH0KKworICAvKiogQHBhcmFtIHsuLi5PYmplY3R9IGFyZ3MgKi8KKyAgc3RhdGljIGNvbnRhaW5pbmcoLi4uYXJncykgeworICAgIHJldHVybiBjcmVhdGVUZXh0UCgnY29udGFpbmluZycsIGFyZ3MpOworICB9CisKKyAgLyoqIEBwYXJhbSB7Li4uT2JqZWN0fSBhcmdzICovCisgIHN0YXRpYyBlbmRpbmdXaXRoKC4uLmFyZ3MpIHsKKyAgICByZXR1cm4gY3JlYXRlVGV4dFAoJ2VuZGluZ1dpdGgnLCBhcmdzKTsKKyAgfQorCisgIC8qKiBAcGFyYW0gey4uLk9iamVjdH0gYXJncyAqLworICBzdGF0aWMgbm90Q29udGFpbmluZyguLi5hcmdzKSB7CisgICAgcmV0dXJuIGNyZWF0ZVRleHRQKCdub3RDb250YWluaW5nJywgYXJncyk7CisgIH0KKworICAvKiogQHBhcmFtIHsuLi5PYmplY3R9IGFyZ3MgKi8KKyAgc3RhdGljIG5vdEVuZGluZ1dpdGgoLi4uYXJncykgeworICAgIHJldHVybiBjcmVhdGVUZXh0UCgnbm90RW5kaW5nV2l0aCcsIGFyZ3MpOworICB9CisKKyAgLyoqIEBwYXJhbSB7Li4uT2JqZWN0fSBhcmdzICovCisgIHN0YXRpYyBub3RTdGFydGluZ1dpdGgoLi4uYXJncykgeworICAgIHJldHVybiBjcmVhdGVUZXh0UCgnbm90U3RhcnRpbmdXaXRoJywgYXJncyk7CisgIH0KKworICAvKiogQHBhcmFtIHsuLi5PYmplY3R9IGFyZ3MgKi8KKyAgc3RhdGljIHN0YXJ0aW5nV2l0aCguLi5hcmdzKSB7CisgICAgcmV0dXJuIGNyZWF0ZVRleHRQKCdzdGFydGluZ1dpdGgnLCBhcmdzKTsKKyAgfQorCit9CisKK2Z1bmN0aW9uIGNyZWF0ZVRleHRQKG9wZXJhdG9yLCBhcmdzKSB7CisgIGFyZ3MudW5zaGlmdChudWxsLCBvcGVyYXRvcik7CisgIHJldHVybiBuZXcgKEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kLmFwcGx5KFRleHRQLCBhcmdzKSk7Cit9CisKIGNsYXNzIFRyYXZlcnNlciB7CiAgIGNvbnN0cnVjdG9yKG9iamVjdCwgYnVsaykgewogICAgIHRoaXMub2JqZWN0ID0gb2JqZWN0OwpAQCAtMjUyLDYgKzQxNiwxOSBAQAogCiB9CiAKK2NvbnN0IHdpdGhPcHRpb25zID0geworICB0b2tlbnM6ICJ+dGlua2VycG9wLnZhbHVlTWFwLnRva2VucyIsCisgIG5vbmU6IDAsCisgIGlkczogMSwKKyAgbGFiZWxzOiAyLAorICBrZXlzOiA0LAorICB2YWx1ZXM6IDgsCisgIGFsbDogMTUsCisgIGluZGV4ZXI6ICJ+dGlua2VycG9wLmluZGV4LmluZGV4ZXIiLAorICBsaXN0OiAwLAorICBtYXA6IDEKK307CisKIGZ1bmN0aW9uIHRvRW51bSh0eXBlTmFtZSwga2V5cykgewogICBjb25zdCByZXN1bHQgPSB7fTsKICAga2V5cy5zcGxpdCgnICcpLmZvckVhY2goayA9PiB7CkBAIC0yNzgsNiArNDU1LDkgQEAKIG1vZHVsZS5leHBvcnRzID0gewogICBFbnVtVmFsdWUsCiAgIFAsCisgIFRleHRQLAorICB3aXRoT3B0aW9ucywKKyAgSU8sCiAgIFRyYXZlcnNhbCwKICAgVHJhdmVyc2FsU2lkZUVmZmVjdHMsCiAgIFRyYXZlcnNlciwKQEAgLTI5Myw0ICs0NzMsNCBAQAogICBwb3A6IHRvRW51bSgnUG9wJywgJ2FsbCBmaXJzdCBsYXN0IG1peGVkJyksCiAgIHNjb3BlOiB0b0VudW0oJ1Njb3BlJywgJ2dsb2JhbCBsb2NhbCcpLAogICB0OiB0b0VudW0oJ1QnLCAnaWQga2V5IGxhYmVsIHZhbHVlJykKLX07ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorfTsKZGlmZiAtLWdpdCBhL2dyZW1saW4tamF2YXNjcmlwdC9zcmMvbWFpbi9qYXZhc2NyaXB0L2dyZW1saW4tamF2YXNjcmlwdC9saWIvc3RydWN0dXJlL2dyYXBoLmpzIGIvZ3JlbWxpbi1qYXZhc2NyaXB0L3NyYy9tYWluL2phdmFzY3JpcHQvZ3JlbWxpbi1qYXZhc2NyaXB0L2xpYi9zdHJ1Y3R1cmUvZ3JhcGguanMKaW5kZXggNTAxOWE5Yy4uMzU5ZTJmOCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1qYXZhc2NyaXB0L3NyYy9tYWluL2phdmFzY3JpcHQvZ3JlbWxpbi1qYXZhc2NyaXB0L2xpYi9zdHJ1Y3R1cmUvZ3JhcGguanMKKysrIGIvZ3JlbWxpbi1qYXZhc2NyaXB0L3NyYy9tYWluL2phdmFzY3JpcHQvZ3JlbWxpbi1qYXZhc2NyaXB0L2xpYi9zdHJ1Y3R1cmUvZ3JhcGguanMKQEAgLTM4LDcgKzM4LDcgQEAKICAgfQogCiAgIHRvU3RyaW5nKCkgewotICAgIHJldHVybiAnZ3JhcGhbZW1wdHldJzsKKyAgICByZXR1cm4gJ2dyYXBoW10nOwogICB9CiB9CiAKQEAgLTE4NCw0ICsxODQsNCBAQAogICBQcm9wZXJ0eSwKICAgVmVydGV4LAogICBWZXJ0ZXhQcm9wZXJ0eQotfTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit9OwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1qYXZhc2NyaXB0L3NyYy9tYWluL2phdmFzY3JpcHQvZ3JlbWxpbi1qYXZhc2NyaXB0L2xpYi9zdHJ1Y3R1cmUvaW8vZ3JhcGgtc2VyaWFsaXplci5qcyBiL2dyZW1saW4tamF2YXNjcmlwdC9zcmMvbWFpbi9qYXZhc2NyaXB0L2dyZW1saW4tamF2YXNjcmlwdC9saWIvc3RydWN0dXJlL2lvL2dyYXBoLXNlcmlhbGl6ZXIuanMKaW5kZXggZmI0NjFkOS4uMTIyZjMxNSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1qYXZhc2NyaXB0L3NyYy9tYWluL2phdmFzY3JpcHQvZ3JlbWxpbi1qYXZhc2NyaXB0L2xpYi9zdHJ1Y3R1cmUvaW8vZ3JhcGgtc2VyaWFsaXplci5qcworKysgYi9ncmVtbGluLWphdmFzY3JpcHQvc3JjL21haW4vamF2YXNjcmlwdC9ncmVtbGluLWphdmFzY3JpcHQvbGliL3N0cnVjdHVyZS9pby9ncmFwaC1zZXJpYWxpemVyLmpzCkBAIC0yMDYsMTIgKzIwNiwxNSBAQAogICAnZzpGbG9hdCc6ICB0eXBlU2VyaWFsaXplcnMuTnVtYmVyU2VyaWFsaXplciwKICAgJ2c6RG91YmxlJzogdHlwZVNlcmlhbGl6ZXJzLk51bWJlclNlcmlhbGl6ZXIsCiAgICdnOkRhdGUnOiB0eXBlU2VyaWFsaXplcnMuRGF0ZVNlcmlhbGl6ZXIsCisgICdnOkRpcmVjdGlvbic6IHR5cGVTZXJpYWxpemVycy5EaXJlY3Rpb25TZXJpYWxpemVyLAogICAnZzpWZXJ0ZXgnOiB0eXBlU2VyaWFsaXplcnMuVmVydGV4U2VyaWFsaXplciwKICAgJ2c6RWRnZSc6IHR5cGVTZXJpYWxpemVycy5FZGdlU2VyaWFsaXplciwKICAgJ2c6VmVydGV4UHJvcGVydHknOiB0eXBlU2VyaWFsaXplcnMuVmVydGV4UHJvcGVydHlTZXJpYWxpemVyLAogICAnZzpQcm9wZXJ0eSc6IHR5cGVTZXJpYWxpemVycy5Qcm9wZXJ0eVNlcmlhbGl6ZXIsCiAgICdnOlBhdGgnOiB0eXBlU2VyaWFsaXplcnMuUGF0aDNTZXJpYWxpemVyLAotICAnZzpUJzogdHlwZVNlcmlhbGl6ZXJzLlRTZXJpYWxpemVyCisgICdnOlRleHRQJzogdHlwZVNlcmlhbGl6ZXJzLlRleHRQU2VyaWFsaXplciwKKyAgJ2c6VCc6IHR5cGVTZXJpYWxpemVycy5UU2VyaWFsaXplciwKKyAgJ2c6QnVsa1NldCc6IHR5cGVTZXJpYWxpemVycy5CdWxrU2V0U2VyaWFsaXplcgogfTsKIAogY29uc3QgZ3JhcGhTT04zRGVzZXJpYWxpemVycyA9IE9iamVjdC5hc3NpZ24oe30sIGdyYXBoU09OMkRlc2VyaWFsaXplcnMsIHsKQEAgLTIyNyw2ICsyMzAsNyBAQAogICB0eXBlU2VyaWFsaXplcnMuVHJhdmVyc2VyU2VyaWFsaXplciwKICAgdHlwZVNlcmlhbGl6ZXJzLlRyYXZlcnNhbFN0cmF0ZWd5U2VyaWFsaXplciwKICAgdHlwZVNlcmlhbGl6ZXJzLlBTZXJpYWxpemVyLAorICB0eXBlU2VyaWFsaXplcnMuVGV4dFBTZXJpYWxpemVyLAogICB0eXBlU2VyaWFsaXplcnMuTGFtYmRhU2VyaWFsaXplciwKICAgdHlwZVNlcmlhbGl6ZXJzLkVudW1TZXJpYWxpemVyLAogICB0eXBlU2VyaWFsaXplcnMuVmVydGV4U2VyaWFsaXplciwKZGlmZiAtLWdpdCBhL2dyZW1saW4tamF2YXNjcmlwdC9zcmMvbWFpbi9qYXZhc2NyaXB0L2dyZW1saW4tamF2YXNjcmlwdC9saWIvc3RydWN0dXJlL2lvL3R5cGUtc2VyaWFsaXplcnMuanMgYi9ncmVtbGluLWphdmFzY3JpcHQvc3JjL21haW4vamF2YXNjcmlwdC9ncmVtbGluLWphdmFzY3JpcHQvbGliL3N0cnVjdHVyZS9pby90eXBlLXNlcmlhbGl6ZXJzLmpzCmluZGV4IDQyMTgzYjkuLmIxNzI3NDkgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tamF2YXNjcmlwdC9zcmMvbWFpbi9qYXZhc2NyaXB0L2dyZW1saW4tamF2YXNjcmlwdC9saWIvc3RydWN0dXJlL2lvL3R5cGUtc2VyaWFsaXplcnMuanMKKysrIGIvZ3JlbWxpbi1qYXZhc2NyaXB0L3NyYy9tYWluL2phdmFzY3JpcHQvZ3JlbWxpbi1qYXZhc2NyaXB0L2xpYi9zdHJ1Y3R1cmUvaW8vdHlwZS1zZXJpYWxpemVycy5qcwpAQCAtMTc3LDYgKzE3NywyOCBAQAogICB9CiB9CiAKK2NsYXNzIFRleHRQU2VyaWFsaXplciBleHRlbmRzIFR5cGVTZXJpYWxpemVyIHsKKyAgLyoqIEBwYXJhbSB7VGV4dFB9IGl0ZW0gKi8KKyAgc2VyaWFsaXplKGl0ZW0pIHsKKyAgICBjb25zdCByZXN1bHQgPSB7fTsKKyAgICByZXN1bHRbdHlwZUtleV0gPSAnZzpUZXh0UCc7CisgICAgY29uc3QgcmVzdWx0VmFsdWUgPSByZXN1bHRbdmFsdWVLZXldID0geworICAgICAgJ3ByZWRpY2F0ZSc6IGl0ZW0ub3BlcmF0b3IKKyAgICB9OworICAgIGlmIChpdGVtLm90aGVyID09PSB1bmRlZmluZWQgfHwgaXRlbS5vdGhlciA9PT0gbnVsbCkgeworICAgICAgcmVzdWx0VmFsdWVbJ3ZhbHVlJ10gPSB0aGlzLndyaXRlci5hZGFwdE9iamVjdChpdGVtLnZhbHVlKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXN1bHRWYWx1ZVsndmFsdWUnXSA9IFsgdGhpcy53cml0ZXIuYWRhcHRPYmplY3QoaXRlbS52YWx1ZSksIHRoaXMud3JpdGVyLmFkYXB0T2JqZWN0KGl0ZW0ub3RoZXIpIF07CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworICBjYW5CZVVzZWRGb3IodmFsdWUpIHsKKyAgICByZXR1cm4gKHZhbHVlIGluc3RhbmNlb2YgdC5UZXh0UCk7CisgIH0KK30KKwogY2xhc3MgTGFtYmRhU2VyaWFsaXplciBleHRlbmRzIFR5cGVTZXJpYWxpemVyIHsKICAgLyoqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZW0gKi8KICAgc2VyaWFsaXplKGl0ZW0pIHsKQEAgLTM0MSw2ICszNjMsMTIgQEAKICAgfQogfQogCitjbGFzcyBEaXJlY3Rpb25TZXJpYWxpemVyIGV4dGVuZHMgVHlwZVNlcmlhbGl6ZXIgeworICAgIGRlc2VyaWFsaXplKG9iaikgeworICAgICAgICByZXR1cm4gdC5kaXJlY3Rpb25bb2JqW3ZhbHVlS2V5XS50b0xvd2VyQ2FzZSgpXTsKKyAgICB9Cit9CisKIGNsYXNzIEFycmF5U2VyaWFsaXplciBleHRlbmRzIFR5cGVTZXJpYWxpemVyIHsKICAgY29uc3RydWN0b3IodHlwZUtleSkgewogICAgIHN1cGVyKCk7CkBAIC0zNjgsNiArMzk2LDI3IEBACiAgIH0KIH0KIAorY2xhc3MgQnVsa1NldFNlcmlhbGl6ZXIgZXh0ZW5kcyBUeXBlU2VyaWFsaXplciB7CisgIGRlc2VyaWFsaXplKG9iaikgeworICAgICAgY29uc3QgdmFsdWUgPSBvYmpbdmFsdWVLZXldOworICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkgeworICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgQXJyYXksIG9idGFpbmVkOiAnICsgdmFsdWUpOworICAgICAgfQorCisgICAgICAvLyBjb2VyY2UgdGhlIEJ1bGtTZXQgdG8gTGlzdC4gaWYgdGhlIGJ1bGsgZXhjZWVkcyB0aGUgaW50IHNwYWNlIHRoZW4gd2UgY2FuJ3QgY29lcmNlIHRvIExpc3QgYW55d2F5LAorICAgICAgLy8gc28gdGhpcyBxdWVyeSB3aWxsIGJlIHRyb3VibGUuIHdlJ2QgbmVlZCBhIGxlZ2l0IEJ1bGtTZXQgaW1wbGVtZW50YXRpb24gaGVyZSBpbiBqcy4gdGhpcyBjdXJyZW50CisgICAgICAvLyBpbXBsZW1lbnRhdGlvbiBpcyBoZXJlIHRvIHJlcGxpY2F0ZSB0aGUgcHJldmlvdXMgZnVuY3Rpb25hbGl0eSB0aGF0IGV4aXN0ZWQgb24gdGhlIHNlcnZlciBzaWRlIGluCisgICAgICAvLyBwcmV2aW91cyB2ZXJzaW9ucy4KKyAgICAgIGxldCByZXN1bHQgPSBbXTsKKyAgICAgIGZvciAobGV0IGl4ID0gMCwgaXkgPSB2YWx1ZS5sZW5ndGg7IGl4IDwgaXk7IGl4ICs9IDIpIHsKKyAgICAgICAgY29uc3QgcGFpciA9IHZhbHVlLnNsaWNlKGl4LCBpeCArIDIpOworICAgICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KEFycmF5KHRoaXMucmVhZGVyLnJlYWQocGFpclsxXSkpLmZpbGwodGhpcy5yZWFkZXIucmVhZChwYWlyWzBdKSkpOworICAgICAgfQorCisgICAgICByZXR1cm4gcmVzdWx0OworICB9Cit9CisKIGNsYXNzIE1hcFNlcmlhbGl6ZXIgZXh0ZW5kcyBUeXBlU2VyaWFsaXplciB7CiAgIGRlc2VyaWFsaXplKG9iaikgewogICAgIGNvbnN0IHZhbHVlID0gb2JqW3ZhbHVlS2V5XTsKQEAgLTQxMiw4ICs0NjEsMTAgQEAKIH0KIAogbW9kdWxlLmV4cG9ydHMgPSB7CisgIEJ1bGtTZXRTZXJpYWxpemVyLAogICBCeXRlY29kZVNlcmlhbGl6ZXIsCiAgIERhdGVTZXJpYWxpemVyLAorICBEaXJlY3Rpb25TZXJpYWxpemVyLAogICBFZGdlU2VyaWFsaXplciwKICAgRW51bVNlcmlhbGl6ZXIsCiAgIExhbWJkYVNlcmlhbGl6ZXIsCkBAIC00MjUsNiArNDc2LDcgQEAKICAgUGF0aFNlcmlhbGl6ZXIsCiAgIFByb3BlcnR5U2VyaWFsaXplciwKICAgUFNlcmlhbGl6ZXIsCisgIFRleHRQU2VyaWFsaXplciwKICAgU2V0U2VyaWFsaXplciwKICAgVFNlcmlhbGl6ZXIsCiAgIFRyYXZlcnNlclNlcmlhbGl6ZXIsCkBAIC00MzMsNCArNDg1LDQgQEAKICAgdmFsdWVLZXksCiAgIFZlcnRleFByb3BlcnR5U2VyaWFsaXplciwKICAgVmVydGV4U2VyaWFsaXplcgotfTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit9OwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1qYXZhc2NyaXB0L3NyYy9tYWluL2phdmFzY3JpcHQvZ3JlbWxpbi1qYXZhc2NyaXB0L2xpYi91dGlscy5qcyBiL2dyZW1saW4tamF2YXNjcmlwdC9zcmMvbWFpbi9qYXZhc2NyaXB0L2dyZW1saW4tamF2YXNjcmlwdC9saWIvdXRpbHMuanMKaW5kZXggYzZiMDkxZi4uZjk5NmRiYSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1qYXZhc2NyaXB0L3NyYy9tYWluL2phdmFzY3JpcHQvZ3JlbWxpbi1qYXZhc2NyaXB0L2xpYi91dGlscy5qcworKysgYi9ncmVtbGluLWphdmFzY3JpcHQvc3JjL21haW4vamF2YXNjcmlwdC9ncmVtbGluLWphdmFzY3JpcHQvbGliL3V0aWxzLmpzCkBAIC01NSw0ICs1NSwyMiBAQAogICAgIGhleC5zdWJzdHIoMjAsIDEyKSk7CiB9OwogCi1leHBvcnRzLmVtcHR5QXJyYXkgPSBPYmplY3QuZnJlZXplKFtdKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitleHBvcnRzLmVtcHR5QXJyYXkgPSBPYmplY3QuZnJlZXplKFtdKTsKKworY2xhc3MgSW1tdXRhYmxlTWFwIGV4dGVuZHMgTWFwIHsKKyAgY29uc3RydWN0b3IoaXRlcmFibGUpIHsKKyAgICBzdXBlcihpdGVyYWJsZSk7CisgIH0KKworICBzZXQoKXsKKyAgICByZXR1cm4gdGhpczsKKyAgfQorCisgIFsnZGVsZXRlJ10oKXsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICBjbGVhcigpIHsgfQorfQorCitleHBvcnRzLkltbXV0YWJsZU1hcCA9IEltbXV0YWJsZU1hcDsKZGlmZiAtLWdpdCBhL2dyZW1saW4tamF2YXNjcmlwdC9zcmMvbWFpbi9qYXZhc2NyaXB0L2dyZW1saW4tamF2YXNjcmlwdC9wYWNrYWdlLmpzb24gYi9ncmVtbGluLWphdmFzY3JpcHQvc3JjL21haW4vamF2YXNjcmlwdC9ncmVtbGluLWphdmFzY3JpcHQvcGFja2FnZS5qc29uCmluZGV4IDBiNjM1MmYuLjc4YzNkZjcgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tamF2YXNjcmlwdC9zcmMvbWFpbi9qYXZhc2NyaXB0L2dyZW1saW4tamF2YXNjcmlwdC9wYWNrYWdlLmpzb24KKysrIGIvZ3JlbWxpbi1qYXZhc2NyaXB0L3NyYy9tYWluL2phdmFzY3JpcHQvZ3JlbWxpbi1qYXZhc2NyaXB0L3BhY2thZ2UuanNvbgpAQCAtMSw2ICsxLDYgQEAKIHsKICAgIm5hbWUiOiAiZ3JlbWxpbiIsCi0gICJ2ZXJzaW9uIjogIjMuMy4xMS1hbHBoYTEiLAorICAidmVyc2lvbiI6ICIzLjQuNy1hbHBoYTEiLAogICAiZGVzY3JpcHRpb24iOiAiSmF2YVNjcmlwdCBHcmVtbGluIExhbmd1YWdlIFZhcmlhbnQiLAogICAiYXV0aG9yIjogIkFwYWNoZSBUaW5rZXJQb3AgdGVhbSIsCiAgICJrZXl3b3JkcyI6IFsKZGlmZiAtLWdpdCBhL2dyZW1saW4tamF2YXNjcmlwdC9zcmMvbWFpbi9qYXZhc2NyaXB0L2dyZW1saW4tamF2YXNjcmlwdC90ZXN0L2N1Y3VtYmVyL2ZlYXR1cmUtc3RlcHMuanMgYi9ncmVtbGluLWphdmFzY3JpcHQvc3JjL21haW4vamF2YXNjcmlwdC9ncmVtbGluLWphdmFzY3JpcHQvdGVzdC9jdWN1bWJlci9mZWF0dXJlLXN0ZXBzLmpzCmluZGV4IDJhZDA4NWYuLjRjMDQxNGEgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tamF2YXNjcmlwdC9zcmMvbWFpbi9qYXZhc2NyaXB0L2dyZW1saW4tamF2YXNjcmlwdC90ZXN0L2N1Y3VtYmVyL2ZlYXR1cmUtc3RlcHMuanMKKysrIGIvZ3JlbWxpbi1qYXZhc2NyaXB0L3NyYy9tYWluL2phdmFzY3JpcHQvZ3JlbWxpbi1qYXZhc2NyaXB0L3Rlc3QvY3VjdW1iZXIvZmVhdHVyZS1zdGVwcy5qcwpAQCAtMzQsNiArMzQsNyBAQAogY29uc3QgUGF0aCA9IGdyYXBoTW9kdWxlLlBhdGg7CiBjb25zdCBfXyA9IGdyYXBoVHJhdmVyc2FsTW9kdWxlLnN0YXRpY3M7CiBjb25zdCB0ID0gdHJhdmVyc2FsTW9kdWxlLnQ7Citjb25zdCBkaXJlY3Rpb24gPSB0cmF2ZXJzYWxNb2R1bGUuZGlyZWN0aW9uOwogCiAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGZlYXR1cmUgbWFwcyAobVtdKSwgYXJlIGRlc2VyaWFsaXplZCBhcyBvYmplY3RzICh0cnVlKSBvciBtYXBzIChmYWxzZSkuCiAvLyBVc2UgZmFsc2UgZm9yIEdyYXBoU09OMy4KQEAgLTUyLDcgKzUzLDggQEAKICAgWyAnc1xcWyguKilcXF0nLCB0b0FycmF5IF0sCiAgIFsgJ21cXFsoLispXFxdJywgdG9NYXAgXSwKICAgWyAnY1xcWyguKylcXF0nLCB0b0xhbWJkYSBdLAotICBbICd0XFxbKC4rKVxcXScsIHRvVCBdCisgIFsgJ3RcXFsoLispXFxdJywgdG9UIF0sCisgIFsgJ0RcXFsoLispXFxdJywgdG9EaXJlY3Rpb24gXQogXS5tYXAoeCA9PiBbIG5ldyBSZWdFeHAoJ14nICsgeFswXSArICckJyksIHhbMV0gXSk7CiAKIGNvbnN0IGlnbm9yZVJlYXNvbiA9IHsKQEAgLTYzLDYgKzY1LDkgQEAKIGNvbnN0IGlnbm9yZWRTY2VuYXJpb3MgPSB7CiAgIC8vIEFuIGFzc29jaWF0aXZlIGFycmF5IGNvbnRhaW5pbmcgdGhlIHNjZW5hcmlvIG5hbWUgYXMga2V5LCBmb3IgZXhhbXBsZToKICAgJ2dfd2l0aFNpZGVFZmZlY3RYYV9zZXRYX1ZfYm90aF9uYW1lX3N0b3JlWGFYX2NhcFhhWCc6IG5ldyBJZ25vcmVFcnJvcihpZ25vcmVSZWFzb24uc2V0Tm90U3VwcG9ydGVkKSwKKyAgJ2dfd2l0aFNpZGVFZmZlY3RYYV9zZXRYX1ZfYm90aF9uYW1lX2FnZ3JlZ2F0ZVhsb2NhbF9hWF9jYXBYYVgnOiBuZXcgSWdub3JlRXJyb3IoaWdub3JlUmVhc29uLnNldE5vdFN1cHBvcnRlZCksCisgICdnX1Zfc2hvcnRlc3RQYXRoX2VkZ2VzSW5jbHVkZWQnOiBuZXcgSWdub3JlRXJyb3IoaWdub3JlUmVhc29uLm5lZWRzRnVydGhlckludmVzdGlnYXRpb24pLAorICAnZ19WX3Nob3J0ZXN0UGF0aF9lZGdlc0luY2x1ZGVkX2VkZ2VzWG91dEVYJzogbmV3IElnbm9yZUVycm9yKGlnbm9yZVJlYXNvbi5uZWVkc0Z1cnRoZXJJbnZlc3RpZ2F0aW9uKQogfTsKIAogZGVmaW5lU3VwcG9ydENvZGUoZnVuY3Rpb24obWV0aG9kcykgewpAQCAtMTg2LDEyICsxOTEsMTUgQEAKICAgICB9LAogICAgIE9yZGVyOiB0cmF2ZXJzYWxNb2R1bGUub3JkZXIsCiAgICAgUDogdHJhdmVyc2FsTW9kdWxlLlAsCisgICAgVGV4dFA6IHRyYXZlcnNhbE1vZHVsZS5UZXh0UCwKKyAgICBJTzogdHJhdmVyc2FsTW9kdWxlLklPLAogICAgIFBpY2s6IHRyYXZlcnNhbE1vZHVsZS5waWNrLAogICAgIFBvcDogdHJhdmVyc2FsTW9kdWxlLnBvcCwKICAgICBTY29wZTogdHJhdmVyc2FsTW9kdWxlLnNjb3BlLAogICAgIE9wZXJhdG9yOiB0cmF2ZXJzYWxNb2R1bGUub3BlcmF0b3IsCiAgICAgVDogdHJhdmVyc2FsTW9kdWxlLnQsCi0gICAgdG9Mb25nOiB1dGlscy50b0xvbmcKKyAgICB0b0xvbmc6IHV0aWxzLnRvTG9uZywKKyAgICBXaXRoT3B0aW9uczogdHJhdmVyc2FsTW9kdWxlLndpdGhPcHRpb25zCiAgIH07CiAgIC8vIFBhc3MgdGhlIHBhcmFtZXRlciB0byB0aGUgc2FuZGJveAogICBPYmplY3Qua2V5cyhwYXJhbWV0ZXJzKS5mb3JFYWNoKHBhcmFtTmFtZSA9PiBzYW5kYm94W3BhcmFtTmFtZV0gPSBwYXJhbWV0ZXJzW3BhcmFtTmFtZV0pOwpAQCAtMTk5LDYgKzIwNyw4IEBACiB9CiAKIGZ1bmN0aW9uIHRyYW5zbGF0ZSh0cmF2ZXJzYWxUZXh0KSB7CisgIC8vIGNsZWFuIHVwIHRyYWlsaW5nIHBlcmlvZC9zcGFjZXMgc28gdGhhdCBpdCdzIGVhc2llciB0byBtYXRjaCBuZXdsaW5lIHdpdGgoKSB0byBjb252ZXJ0IHRvIHdpdGhfKCkgYmVsb3cKKyAgdHJhdmVyc2FsVGV4dCA9IHRyYXZlcnNhbFRleHQucmVwbGFjZSgvXClcLlxzKi9nLCAnKS4nKTsKICAgLy8gUmVtb3ZlIGVzY2FwZWQgY2hhcnMKICAgdHJhdmVyc2FsVGV4dCA9IHRyYXZlcnNhbFRleHQucmVwbGFjZSgvXFwiL2csICciJyk7CiAgIC8vIFJlcGxhY2UgbG9uZyBzdWZmaXggd2l0aCBMb25nIGluc3RhbmNlCkBAIC0yMDYsNiArMjE2LDcgQEAKICAgLy8gQ2hhbmdlIGFjY29yZGluZyB0byBuYW1pbmcgY29udmVudGlvbgogICB0cmF2ZXJzYWxUZXh0ID0gdHJhdmVyc2FsVGV4dC5yZXBsYWNlKC9cLmluXCgvZywgJy5pbl8oJyk7CiAgIHRyYXZlcnNhbFRleHQgPSB0cmF2ZXJzYWxUZXh0LnJlcGxhY2UoL1wuZnJvbVwoL2csICcuZnJvbV8oJyk7CisgIHRyYXZlcnNhbFRleHQgPSB0cmF2ZXJzYWxUZXh0LnJlcGxhY2UoL1wud2l0aFwoL2csICcud2l0aF8oJyk7CiAgIHJldHVybiB0cmF2ZXJzYWxUZXh0OwogfQogCkBAIC0yNjksNiArMjgwLDEwIEBACiAgIHJldHVybiB0W3ZhbHVlXTsKIH0KIAorZnVuY3Rpb24gdG9EaXJlY3Rpb24odmFsdWUpIHsKKyAgICByZXR1cm4gZGlyZWN0aW9uW3ZhbHVlLnRvTG93ZXJDYXNlKCldOworfQorCiBmdW5jdGlvbiB0b0FycmF5KHN0cmluZ0xpc3QpIHsKICAgaWYgKHN0cmluZ0xpc3QgPT09ICcnKSB7CiAgICAgcmV0dXJuIG5ldyBBcnJheSgwKTsKZGlmZiAtLWdpdCBhL2dyZW1saW4tamF2YXNjcmlwdC9zcmMvbWFpbi9qYXZhc2NyaXB0L2dyZW1saW4tamF2YXNjcmlwdC90ZXN0L2ludGVncmF0aW9uL2NsaWVudC10ZXN0cy5qcyBiL2dyZW1saW4tamF2YXNjcmlwdC9zcmMvbWFpbi9qYXZhc2NyaXB0L2dyZW1saW4tamF2YXNjcmlwdC90ZXN0L2ludGVncmF0aW9uL2NsaWVudC10ZXN0cy5qcwppbmRleCA5MmU3MDljLi41NmM3YzU4IDEwMDY0NAotLS0gYS9ncmVtbGluLWphdmFzY3JpcHQvc3JjL21haW4vamF2YXNjcmlwdC9ncmVtbGluLWphdmFzY3JpcHQvdGVzdC9pbnRlZ3JhdGlvbi9jbGllbnQtdGVzdHMuanMKKysrIGIvZ3JlbWxpbi1qYXZhc2NyaXB0L3NyYy9tYWluL2phdmFzY3JpcHQvZ3JlbWxpbi1qYXZhc2NyaXB0L3Rlc3QvaW50ZWdyYXRpb24vY2xpZW50LXRlc3RzLmpzCkBAIC02Niw1ICs2NiwxMyBAQAogICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQuZmlyc3QoKSwgJ0NhcmRpbmFsaXR5OnNldCcpOwogICAgICAgICB9KTsKICAgICB9KTsKKworICAgIGl0KCdzaG91bGQgcmV0cmlldmUgdGhlIGF0dHJpYnV0ZXMnLCAoKSA9PiB7CisgICAgICByZXR1cm4gY2xpZW50LnN1Ym1pdChuZXcgQnl0ZWNvZGUoKS5hZGRTdGVwKCdWJywgW10pLmFkZFN0ZXAoJ3RhaWwnLCBbXSkpCisgICAgICAgIC50aGVuKHJzID0+IHsKKyAgICAgICAgICBhc3NlcnQub2socnMuYXR0cmlidXRlcyBpbnN0YW5jZW9mIE1hcCk7CisgICAgICAgICAgYXNzZXJ0Lm9rKHJzLmF0dHJpYnV0ZXMuZ2V0KCdob3N0JykpOworICAgICAgICB9KTsKKyAgICB9KTsKICAgfSk7CiB9KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLWphdmFzY3JpcHQvc3JjL21haW4vamF2YXNjcmlwdC9ncmVtbGluLWphdmFzY3JpcHQvdGVzdC91bml0L2dyYXBoc29uLXRlc3QuanMgYi9ncmVtbGluLWphdmFzY3JpcHQvc3JjL21haW4vamF2YXNjcmlwdC9ncmVtbGluLWphdmFzY3JpcHQvdGVzdC91bml0L2dyYXBoc29uLXRlc3QuanMKaW5kZXggZTViNTA5ZC4uZjM1NWZiNSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1qYXZhc2NyaXB0L3NyYy9tYWluL2phdmFzY3JpcHQvZ3JlbWxpbi1qYXZhc2NyaXB0L3Rlc3QvdW5pdC9ncmFwaHNvbi10ZXN0LmpzCisrKyBiL2dyZW1saW4tamF2YXNjcmlwdC9zcmMvbWFpbi9qYXZhc2NyaXB0L2dyZW1saW4tamF2YXNjcmlwdC90ZXN0L3VuaXQvZ3JhcGhzb24tdGVzdC5qcwpAQCAtNzEsNiArNzEsMTMgQEAKICAgICAgICAgICAgICAgfSk7CiAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LCBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpOwogICB9KTsKKyAgaXQoJ3Nob3VsZCBwYXJzZSBCdWxrU2V0JywgZnVuY3Rpb24oKSB7CisgICAgICBjb25zdCBvYmogPSB7IkB0eXBlIjogImc6QnVsa1NldCIsICJAdmFsdWUiOiBbIm1hcmtvIiwgeyJAdHlwZSI6ICJnOkludDY0IiwgIkB2YWx1ZSI6IDF9LCAiam9zaCIsIHsiQHR5cGUiOiAiZzpJbnQ2NCIsICJAdmFsdWUiOiAzfV19OworICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEdyYXBoU09OUmVhZGVyKCk7CisgICAgICBjb25zdCByZXN1bHQgPSByZWFkZXIucmVhZChvYmopOworICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5sZW5ndGgsIDQpOworICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChyZXN1bHQsIFsibWFya28iLCAiam9zaCIsICJqb3NoIiwgImpvc2giXSk7CisgIH0pOwogICBpdCgnc2hvdWxkIHBhcnNlIERhdGUnLCBmdW5jdGlvbigpIHsKICAgICBjb25zdCBvYmogPSB7ICJAdHlwZSIgOiAiZzpEYXRlIiwgIkB2YWx1ZSIgOiAxNDgxNzUwMDc2Mjk1IH07CiAgICAgY29uc3QgcmVhZGVyID0gbmV3IEdyYXBoU09OUmVhZGVyKCk7CmRpZmYgLS1naXQgYS9ncmVtbGluLWphdmFzY3JpcHQvc3JjL21haW4vamF2YXNjcmlwdC9ncmVtbGluLWphdmFzY3JpcHQvdGVzdC91bml0L3Jlc3VsdC1zZXQtdGVzdC5qcyBiL2dyZW1saW4tamF2YXNjcmlwdC9zcmMvbWFpbi9qYXZhc2NyaXB0L2dyZW1saW4tamF2YXNjcmlwdC90ZXN0L3VuaXQvcmVzdWx0LXNldC10ZXN0LmpzCmluZGV4IDllYjk5YWYuLmRmMTYxZjAgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tamF2YXNjcmlwdC9zcmMvbWFpbi9qYXZhc2NyaXB0L2dyZW1saW4tamF2YXNjcmlwdC90ZXN0L3VuaXQvcmVzdWx0LXNldC10ZXN0LmpzCisrKyBiL2dyZW1saW4tamF2YXNjcmlwdC9zcmMvbWFpbi9qYXZhc2NyaXB0L2dyZW1saW4tamF2YXNjcmlwdC90ZXN0L3VuaXQvcmVzdWx0LXNldC10ZXN0LmpzCkBAIC03NiwxMSArNzYsMTggQEAKICAgICB9KTsKICAgfSk7CiAKLSAgZGVzY3JpYmUoJyN0cmF2ZXJzZXJzJywgKCkgPT4gewotICAgIGl0KCdzaG91bGQgZXhwb3NlIGRlcHJlY2F0ZWQgcHJvcGVydHknLCAoKSA9PiB7Ci0gICAgICBjb25zdCBpdGVtcyA9IFsgJ2EnLCAnYicgXTsKLSAgICAgIC8vIFRyYXZlcnNlcnMgcHJvcGVydHkgaXMgZ29pbmcgdG8gYmUgcmVtb3ZlZCBpbiB1cGNvbWluZyB2ZXJzaW9ucwotICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKG5ldyBSZXN1bHRTZXQoaXRlbXMpLnRyYXZlcnNlcnMsIGl0ZW1zKTsKKyAgZGVzY3JpYmUoJyNhdHRyaWJ1dGVzJywgKCkgPT4geworICAgIGl0KCdzaG91bGQgZGVmYXVsdCB0byBhbiBlbXB0eSBNYXAgd2hlbiBub3QgZGVmaW5lZCcsICgpID0+IHsKKyAgICAgIGNvbnN0IHJzID0gbmV3IFJlc3VsdFNldChbXSk7CisgICAgICBhc3NlcnQub2socnMuYXR0cmlidXRlcyBpbnN0YW5jZW9mIE1hcCk7CisgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocnMuYXR0cmlidXRlcy5zaXplLCAwKTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSBhdHRyaWJ1dGVzIHdoZW4gZGVmaW5lZCcsICgpID0+IHsKKyAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBuZXcgTWFwKFtbJ2EnLCAxXSwgWydiJywgMV1dKTsKKyAgICAgIGNvbnN0IHJzID0gbmV3IFJlc3VsdFNldChbXSwgYXR0cmlidXRlcyk7CisgICAgICBhc3NlcnQub2socnMuYXR0cmlidXRlcyBpbnN0YW5jZW9mIE1hcCk7CisgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocnMuYXR0cmlidXRlcywgYXR0cmlidXRlcyk7CiAgICAgfSk7CiAgIH0pOwogfSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1qYXZhc2NyaXB0L3NyYy9tYWluL2phdmFzY3JpcHQvZ3JlbWxpbi1qYXZhc2NyaXB0L3Rlc3QvdW5pdC90cmF2ZXJzYWwtdGVzdC5qcyBiL2dyZW1saW4tamF2YXNjcmlwdC9zcmMvbWFpbi9qYXZhc2NyaXB0L2dyZW1saW4tamF2YXNjcmlwdC90ZXN0L3VuaXQvdHJhdmVyc2FsLXRlc3QuanMKaW5kZXggOWU4MmY5YS4uYWNkY2RkNCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1qYXZhc2NyaXB0L3NyYy9tYWluL2phdmFzY3JpcHQvZ3JlbWxpbi1qYXZhc2NyaXB0L3Rlc3QvdW5pdC90cmF2ZXJzYWwtdGVzdC5qcworKysgYi9ncmVtbGluLWphdmFzY3JpcHQvc3JjL21haW4vamF2YXNjcmlwdC9ncmVtbGluLWphdmFzY3JpcHQvdGVzdC91bml0L3RyYXZlcnNhbC10ZXN0LmpzCkBAIC01OSw0MSArNTksNDEgQEAKICAgICB9KTsKICAgfSk7CiAKLSAgZGVzY3JpYmUoJyNoYXNOZXh0KCknLCBmdW5jdGlvbigpIHsKLSAgICBpdCgnc2hvdWxkIGFwcGx5IHN0cmF0ZWdpZXMgYW5kIGRldGVybWluZSBpZiB0aGVyZSBpcyBhbnl0aGluZyBsZWZ0IHRvIGl0ZXJhdGUgaW4gdGhlIHRyYXZlcnNhbCcpCi0gICAgY29uc3Qgc3RyYXRlZ3lNb2NrID0gewotICAgICAgYXBwbHk6IGZ1bmN0aW9uICh0cmF2ZXJzYWwpIHsKLSAgICAgICAgdHJhdmVyc2FsLnRyYXZlcnNlcnMgPSBbIG5ldyB0LlRyYXZlcnNlcigxLCAxKSwgbmV3IHQuVHJhdmVyc2VyKDIsIDEpIF07Ci0gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKLSAgICAgIH0KLSAgICB9OwotICAgIGNvbnN0IHN0cmF0ZWdpZXMgPSBuZXcgVHJhdmVyc2FsU3RyYXRlZ2llcygpOwotICAgIHN0cmF0ZWdpZXMuYWRkU3RyYXRlZ3koc3RyYXRlZ3lNb2NrKTsKLSAgICBjb25zdCB0cmF2ZXJzYWwgPSBuZXcgdC5UcmF2ZXJzYWwobnVsbCwgc3RyYXRlZ2llcywgbnVsbCk7Ci0gICAgcmV0dXJuIHRyYXZlcnNhbC5oYXNOZXh0KCkKLSAgICAgICAgLnRoZW4oZnVuY3Rpb24gKG1vcmUpIHsKLSAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwobW9yZSwgdHJ1ZSk7Ci0gICAgICAgICAgcmV0dXJuIHRyYXZlcnNhbC5uZXh0KCk7Ci0gICAgICAgIH0pCi0gICAgICAgIC50aGVuKGZ1bmN0aW9uIChpdGVtKSB7Ci0gICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGl0ZW0udmFsdWUsIDEpOwotICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChpdGVtLmRvbmUsIGZhbHNlKTsKLSAgICAgICAgICByZXR1cm4gdHJhdmVyc2FsLm5leHQoKTsKLSAgICAgICAgfSkKLSAgICAgICAgLnRoZW4oZnVuY3Rpb24gKGl0ZW0pIHsKLSAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoaXRlbS52YWx1ZSwgMik7Ci0gICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGl0ZW0uZG9uZSwgZmFsc2UpOwotICAgICAgICAgIHJldHVybiB0cmF2ZXJzYWwubmV4dCgpOwotICAgICAgICB9KQotICAgICAgICAudGhlbihmdW5jdGlvbiAoaXRlbSkgewotICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChpdGVtLnZhbHVlLCBudWxsKTsKLSAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoaXRlbS5kb25lLCB0cnVlKTsKLSAgICAgICAgICByZXR1cm4gdHJhdmVyc2FsLmhhc05leHQoKTsKLSAgICAgICAgfSkKLSAgICAgICAgLnRoZW4oZnVuY3Rpb24gKG1vcmUpIHsKLSAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwobW9yZSwgZmFsc2UpOwotICAgICAgICB9KTsKLSAgfSk7CisgIC8vIGRlc2NyaWJlKCcjaGFzTmV4dCgpJywgZnVuY3Rpb24oKSB7CisgIC8vICAgaXQoJ3Nob3VsZCBhcHBseSBzdHJhdGVnaWVzIGFuZCBkZXRlcm1pbmUgaWYgdGhlcmUgaXMgYW55dGhpbmcgbGVmdCB0byBpdGVyYXRlIGluIHRoZSB0cmF2ZXJzYWwnKQorICAvLyAgIGNvbnN0IHN0cmF0ZWd5TW9jayA9IHsKKyAgLy8gICAgIGFwcGx5OiBmdW5jdGlvbiAodHJhdmVyc2FsKSB7CisgIC8vICAgICAgIHRyYXZlcnNhbC50cmF2ZXJzZXJzID0gWyBuZXcgdC5UcmF2ZXJzZXIoMSwgMSksIG5ldyB0LlRyYXZlcnNlcigyLCAxKSBdOworICAvLyAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7CisgIC8vICAgICB9CisgIC8vICAgfTsKKyAgLy8gICBjb25zdCBzdHJhdGVnaWVzID0gbmV3IFRyYXZlcnNhbFN0cmF0ZWdpZXMoKTsKKyAgLy8gICBzdHJhdGVnaWVzLmFkZFN0cmF0ZWd5KHN0cmF0ZWd5TW9jayk7CisgIC8vICAgY29uc3QgdHJhdmVyc2FsID0gbmV3IHQuVHJhdmVyc2FsKG51bGwsIHN0cmF0ZWdpZXMsIG51bGwpOworICAvLyAgIHJldHVybiB0cmF2ZXJzYWwuaGFzTmV4dCgpCisgIC8vICAgICAgIC50aGVuKGZ1bmN0aW9uIChtb3JlKSB7CisgIC8vICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKG1vcmUsIHRydWUpOworICAvLyAgICAgICAgIHJldHVybiB0cmF2ZXJzYWwubmV4dCgpOworICAvLyAgICAgICB9KQorICAvLyAgICAgICAudGhlbihmdW5jdGlvbiAoaXRlbSkgeworICAvLyAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChpdGVtLnZhbHVlLCAxKTsKKyAgLy8gICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoaXRlbS5kb25lLCBmYWxzZSk7CisgIC8vICAgICAgICAgcmV0dXJuIHRyYXZlcnNhbC5uZXh0KCk7CisgIC8vICAgICAgIH0pCisgIC8vICAgICAgIC50aGVuKGZ1bmN0aW9uIChpdGVtKSB7CisgIC8vICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGl0ZW0udmFsdWUsIDIpOworICAvLyAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChpdGVtLmRvbmUsIGZhbHNlKTsKKyAgLy8gICAgICAgICByZXR1cm4gdHJhdmVyc2FsLm5leHQoKTsKKyAgLy8gICAgICAgfSkKKyAgLy8gICAgICAgLnRoZW4oZnVuY3Rpb24gKGl0ZW0pIHsKKyAgLy8gICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoaXRlbS52YWx1ZSwgbnVsbCk7CisgIC8vICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGl0ZW0uZG9uZSwgdHJ1ZSk7CisgIC8vICAgICAgICAgcmV0dXJuIHRyYXZlcnNhbC5oYXNOZXh0KCk7CisgIC8vICAgICAgIH0pCisgIC8vICAgICAgIC50aGVuKGZ1bmN0aW9uIChtb3JlKSB7CisgIC8vICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKG1vcmUsIGZhbHNlKTsKKyAgLy8gICAgICAgfSk7CisgIC8vIH0pOwogCiAgIGRlc2NyaWJlKCcjbmV4dCgpJywgZnVuY3Rpb24gKCkgewogICAgIGl0KCdzaG91bGQgYXBwbHkgdGhlIHN0cmF0ZWdpZXMgYW5kIHJldHVybiBhIFByb21pc2Ugd2l0aCB0aGUgaXRlcmF0b3IgaXRlbScsIGZ1bmN0aW9uICgpIHsKZGlmZiAtLWdpdCBhL2dyZW1saW4tcHl0aG9uL2dsdi9UcmF2ZXJzYWxTb3VyY2UudGVtcGxhdGUgYi9ncmVtbGluLXB5dGhvbi9nbHYvVHJhdmVyc2FsU291cmNlLnRlbXBsYXRlCmluZGV4IGQ2MTczMDguLjNiN2VlNzIgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tcHl0aG9uL2dsdi9UcmF2ZXJzYWxTb3VyY2UudGVtcGxhdGUKKysrIGIvZ3JlbWxpbi1weXRob24vZ2x2L1RyYXZlcnNhbFNvdXJjZS50ZW1wbGF0ZQpAQCAtMTk0LDkgKzE5NCw0MyBAQAogICAgIHJldHVybiBQLjwlPSBtZXRob2QgJT4oKmFyZ3MpCiAKIDwlIH0gJT4KLTwlIHBtZXRob2RzLmZpbmRBbGx7IWl0LmVxdWFscygiY2xvbmUiKX0uZWFjaCB7IG1ldGhvZCAtPiAlPnN0YXRpY3MuYWRkX3N0YXRpYygnPCU9IG1ldGhvZCAlPicsPCU9IG1ldGhvZCAlPikKKzwlIHBtZXRob2RzLmZpbmRBbGx7IWl0LmVxdWFscygiY2xvbmUiKX0uZWFjaCB7IG1ldGhvZCAtPiAlPnN0YXRpY3MuYWRkX3N0YXRpYygnPCU9IG1ldGhvZCAlPicsIDwlPSBtZXRob2QgJT4pCiAKIDwlIH0gJT4KK2NsYXNzIFRleHRQKFApOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcGVyYXRvciwgdmFsdWUsIG90aGVyPU5vbmUpOgorICAgICAgICBQLl9faW5pdF9fKHNlbGYsIG9wZXJhdG9yLCB2YWx1ZSwgb3RoZXIpCis8JSB0cG1ldGhvZHMuZWFjaCB7IG1ldGhvZCAtPiAlPgorICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgPCU9IG1ldGhvZCAlPigqYXJncyk6CisgICAgICAgIHJldHVybiBUZXh0UCgiPCU9IHRvSmF2YS5jYWxsKG1ldGhvZCkgJT4iLCAqYXJncykKKzwlIH0gJT4KKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIGlzaW5zdGFuY2Uob3RoZXIsIHNlbGYuX19jbGFzc19fKSBhbmQgc2VsZi5vcGVyYXRvciA9PSBvdGhlci5vcGVyYXRvciBhbmQgc2VsZi52YWx1ZSA9PSBvdGhlci52YWx1ZSBhbmQgc2VsZi5vdGhlciA9PSBvdGhlci5vdGhlcgorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5vcGVyYXRvciArICIoIiArIHN0cihzZWxmLnZhbHVlKSArICIpIiBpZiBzZWxmLm90aGVyIGlzIE5vbmUgZWxzZSBzZWxmLm9wZXJhdG9yICsgIigiICsgc3RyKHNlbGYudmFsdWUpICsgIiwiICsgc3RyKHNlbGYub3RoZXIpICsgIikiCisKKzwlIHRwbWV0aG9kcy5maW5kQWxseyFpdC5lcXVhbHMoImNsb25lIil9LmVhY2ggeyBtZXRob2QgLT4gJT4KK2RlZiA8JT0gbWV0aG9kICU+KCphcmdzKToKKyAgICByZXR1cm4gVGV4dFAuPCU9IG1ldGhvZCAlPigqYXJncykKKworPCUgfSAlPgorPCUgdHBtZXRob2RzLmZpbmRBbGx7IWl0LmVxdWFscygiY2xvbmUiKX0uZWFjaCB7IG1ldGhvZCAtPiAlPnN0YXRpY3MuYWRkX3N0YXRpYygnPCU9IG1ldGhvZCAlPicsIDwlPSBtZXRob2QgJT4pCisKKzwlIH0gJT4KKzwlIHRva2Vucy5lYWNoIHsgayx2IC0+ICU+CisKKycnJworPCU9IGsgJT4KKycnJworCisKK2NsYXNzIDwlPSBrICU+KG9iamVjdCk6Cis8JSB2LmVhY2gge2EsYiAtPiAlPgorICAgIDwlPSBhICU+ID0gIjwlPSBiICU+IgorPCUgfX0gJT4KKwogJycnCiBUUkFWRVJTRVIKICcnJwpAQCAtMjYzLDcgKzI5Nyw4IEBACiAKIAogY2xhc3MgVHJhdmVyc2FsU3RyYXRlZ3kob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgc3RyYXRlZ3lfbmFtZT1Ob25lLCBjb25maWd1cmF0aW9uPU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdHJhdGVneV9uYW1lPU5vbmUsIGNvbmZpZ3VyYXRpb249Tm9uZSwgZnFjbj1Ob25lKToKKyAgICAgICAgc2VsZi5mcWNuID0gZnFjbgogICAgICAgICBzZWxmLnN0cmF0ZWd5X25hbWUgPSB0eXBlKHNlbGYpLl9fbmFtZV9fIGlmIHN0cmF0ZWd5X25hbWUgaXMgTm9uZSBlbHNlIHN0cmF0ZWd5X25hbWUKICAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uID0ge30gaWYgY29uZmlndXJhdGlvbiBpcyBOb25lIGVsc2UgY29uZmlndXJhdGlvbgogCkBAIC0zNDgsOSArMzgzLDkgQEAKICAgICAgICAgICAgIGZvciBpdGVtIGluIGFyZzoKICAgICAgICAgICAgICAgICBuZXdTZXQuYWRkKHNlbGYuX19jb252ZXJ0QXJndW1lbnQoaXRlbSkpCiAgICAgICAgICAgICByZXR1cm4gbmV3U2V0Ci0gICAgICAgIGVsaWYgaXNpbnN0YW5jZShhcmcsIHR1cGxlKSBhbmQgMiA9PSBsZW4oYXJnKSBhbmQgaXNpbnN0YW5jZShhcmdbMF0sIHN0cik6Ci0gICAgICAgICAgICBzZWxmLmJpbmRpbmdzW2FyZ1swXV0gPSBhcmdbMV0KLSAgICAgICAgICAgIHJldHVybiBCaW5kaW5nKGFyZ1swXSxzZWxmLl9fY29udmVydEFyZ3VtZW50KGFyZ1sxXSkpCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShhcmcsIEJpbmRpbmcpOgorICAgICAgICAgICAgc2VsZi5iaW5kaW5nc1thcmcua2V5XSA9IGFyZy52YWx1ZQorICAgICAgICAgICAgcmV0dXJuIEJpbmRpbmcoYXJnLmtleSwgc2VsZi5fX2NvbnZlcnRBcmd1bWVudChhcmcudmFsdWUpKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIGFyZwogCkBAIC0zNjUsMTQgKzQwMCwxNiBAQAogCiAKIGNsYXNzIEJpbmRpbmdzKG9iamVjdCk6Ci0gICAgZGVmIG9mKHNlbGYsa2V5LHZhbHVlKToKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgb2Yoa2V5LCB2YWx1ZSk6CiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGtleSwgc3RyKToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiS2V5IG11c3QgYmUgc3RyIikKLSAgICAgICAgcmV0dXJuIChrZXksIHZhbHVlKQorICAgICAgICByZXR1cm4gQmluZGluZyhrZXksIHZhbHVlKQogCiAKIGNsYXNzIEJpbmRpbmcob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZixrZXksdmFsdWUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBrZXksIHZhbHVlKToKICAgICAgICAgc2VsZi5rZXkgPSBrZXkKICAgICAgICAgc2VsZi52YWx1ZSA9IHZhbHVlCiAKQEAgLTM4NCwzICs0MjEsMTQgQEAKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAgcmV0dXJuICJiaW5kaW5nWyIgKyBzZWxmLmtleSArICI9IiArIHN0cihzZWxmLnZhbHVlKSArICJdIgorCisKKycnJworV0lUSCBPUFRJT05TCisnJycKKworCitjbGFzcyBXaXRoT3B0aW9ucyhvYmplY3QpOgorPCUgd2l0aE9wdGlvbnMuZWFjaCB7ICU+CisgICAgPCU9IGl0Lm5hbWUgJT4gPSA8JT0gaXQudmFsdWUgJT4KKzwlIH0gJT4KZGlmZiAtLWdpdCBhL2dyZW1saW4tcHl0aG9uL2dsdi9nZW5lcmF0ZS5ncm9vdnkgYi9ncmVtbGluLXB5dGhvbi9nbHYvZ2VuZXJhdGUuZ3Jvb3Z5CmluZGV4IDMxNDI0YzguLjUwMTFhNDAgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tcHl0aG9uL2dsdi9nZW5lcmF0ZS5ncm9vdnkKKysrIGIvZ3JlbWxpbi1weXRob24vZ2x2L2dlbmVyYXRlLmdyb292eQpAQCAtMTgsMTQgKzE4LDIyIEBACiAgKi8KIAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uanNyMjIzLkNvcmVJbXBvcnRzCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnRyYXZlcnNhbC5zdGVwLm1hcC5Db25uZWN0ZWRDb21wb25lbnQKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIudHJhdmVyc2FsLnN0ZXAubWFwLlBhZ2VSYW5rCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnRyYXZlcnNhbC5zdGVwLm1hcC5QZWVyUHJlc3N1cmUKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIudHJhdmVyc2FsLnN0ZXAubWFwLlNob3J0ZXN0UGF0aAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsU291cmNlCiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguR3JhcGhUcmF2ZXJzYWwKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5HcmFwaFRyYXZlcnNhbFNvdXJjZQogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUAoraW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVGV4dFAKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLklPCiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5PcGVyYXRvcgogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLl9fCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuV2l0aE9wdGlvbnMKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5UCiBpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuTW9kaWZpZXIKKwogLy8gdGhpcyBpcyBhIGJpdCBvZiBhIGNvcHkgb2Ygd2hhdCdzIGluIFN5bWJvbEhlbHBlciAtIG5vIHdheSBhcm91bmQgaXQgYmVjYXVzZSB0aGlzIGNvZGUgZ2VuZXJhdGlvbiB0YXNrIG9jY3VycwogLy8gYmVmb3JlIHRoZSBTeW1ib2xIZWxwZXIgaXMgYXZhaWxhYmxlIHRvIHRoZSBwbHVnaW4uCiBkZWYgdG9QeXRob25NYXAgPSBbImFuZCI6ICJhbmRfIiwKQEAgLTQ0LDcgKzUyLDE4IEBACiAgICAgICAgICAgICAgICAgICAgInJhbmdlIjogInJhbmdlXyIsCiAgICAgICAgICAgICAgICAgICAgIm9yIjogIm9yXyIsCiAgICAgICAgICAgICAgICAgICAgInNldCI6ICJzZXRfIiwKLSAgICAgICAgICAgICAgICAgICAic3VtIjogInN1bV8iXQorICAgICAgICAgICAgICAgICAgICJzdW0iOiAic3VtXyIsCisgICAgICAgICAgICAgICAgICAgIndpdGgiOiAid2l0aF8iXQorCitkZWYgZ2F0aGVyVG9rZW5zRnJvbSA9IHsgdG9rZW5DbGFzc2VzIC0+CisgICAgZGVmIG0gPSBbOl0KKyAgICB0b2tlbkNsYXNzZXMuZWFjaCB7IHRjIC0+IG0gPDwgWyh0Yy5zaW1wbGVOYW1lKSA6IHRjLmdldEZpZWxkcygpLnNvcnR7IGEsIGIgLT4gYS5uYW1lIDw9PiBiLm5hbWUgfS5jb2xsZWN0RW50cmllc3sgZiAtPiBbKGYubmFtZSkgOiBmLmdldChudWxsKV19XX0KKyAgICByZXR1cm4gbQorfQorCitkZWYgdG9QeXRob25WYWx1ZSA9IHsgdHlwZSwgdmFsdWUgLT4KKyAgdHlwZSA9PSBTdHJpbmcuY2xhc3MgJiYgdmFsdWUgIT0gbnVsbCA/ICgnIicgKyB2YWx1ZSArICciJykgOiB2YWx1ZQorfQogCiBkZWYgdG9KYXZhTWFwID0gdG9QeXRob25NYXAuY29sbGVjdEVudHJpZXN7ayx2IC0+IFsodik6a119CiBkZWYgdG9QeXRob24gPSB7IHN5bWJvbCAtPiB0b1B5dGhvbk1hcC5nZXRPckRlZmF1bHQoc3ltYm9sLCBzeW1ib2wpIH0KQEAgLTYxLDYgKzgwLDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3QgeyB0b1B5dGhvbihpdC5uYW1lKSB9LgogICAgICAgICAgICAgICAgICAgICAgICB1bmlxdWUoKS4KICAgICAgICAgICAgICAgICAgICAgICAgc29ydCB7IGEsIGIgLT4gYSA8PT4gYiB9LAorICAgICAgICAgICAgICAgInRwbWV0aG9kcyI6IFRleHRQLmNsYXNzLmdldE1ldGhvZHMoKS4KKyAgICAgICAgICAgICAgICAgICAgICAgZmluZEFsbCB7IE1vZGlmaWVyLmlzU3RhdGljKGl0LmdldE1vZGlmaWVycygpKSB9LgorICAgICAgICAgICAgICAgICAgICAgICBmaW5kQWxsIHsgVGV4dFAuY2xhc3MuaXNBc3NpZ25hYmxlRnJvbShpdC5yZXR1cm5UeXBlKSB9LgorICAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0IHsgdG9QeXRob24oaXQubmFtZSkgfS4KKyAgICAgICAgICAgICAgICAgICAgICAgdW5pcXVlKCkuCisgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgeyBhLCBiIC0+IGEgPD0+IGIgfSwKICAgICAgICAgICAgICAgICJzb3VyY2VTdGVwTWV0aG9kcyI6IEdyYXBoVHJhdmVyc2FsU291cmNlLmdldE1ldGhvZHMoKS4gLy8gU09VUkNFIFNURVBTCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmRBbGwgeyBHcmFwaFRyYXZlcnNhbFNvdXJjZS5jbGFzcy5lcXVhbHMoaXQucmV0dXJuVHlwZSkgfS4KICAgICAgICAgICAgICAgICAgICAgICAgZmluZEFsbCB7CkBAIC04OSw4ICsxMTQsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgY29sbGVjdCB7IHRvUHl0aG9uKGl0Lm5hbWUpIH0uCiAgICAgICAgICAgICAgICAgICAgICAgIHVuaXF1ZSgpLgogICAgICAgICAgICAgICAgICAgICAgICBzb3J0IHsgYSwgYiAtPiBhIDw9PiBiIH0sCisgICAgICAgICAgICAgICAidG9rZW5zIjogZ2F0aGVyVG9rZW5zRnJvbShbSU8sIENvbm5lY3RlZENvbXBvbmVudCwgU2hvcnRlc3RQYXRoLCBQYWdlUmFuaywgUGVlclByZXNzdXJlXSksCiAgICAgICAgICAgICAgICAidG9QeXRob24iOiB0b1B5dGhvbiwKLSAgICAgICAgICAgICAgICJ0b0phdmEiOiB0b0phdmFdCisgICAgICAgICAgICAgICAidG9KYXZhIjogdG9KYXZhLAorICAgICAgICAgICAgICAgIndpdGhPcHRpb25zIjogV2l0aE9wdGlvbnMuZ2V0RGVjbGFyZWRGaWVsZHMoKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3Qge1sibmFtZSI6IGl0Lm5hbWUsICJ2YWx1ZSI6IHRvUHl0aG9uVmFsdWUoaXQudHlwZSwgaXQuZ2V0KG51bGwpKV19XQogCiBkZWYgZW5naW5lID0gbmV3IGdyb292eS50ZXh0LkdTdHJpbmdUZW1wbGF0ZUVuZ2luZSgpCiBkZWYgdHJhdmVyc2FsVGVtcGxhdGUgPSBlbmdpbmUuY3JlYXRlVGVtcGxhdGUobmV3IEZpbGUoIiR7cHJvamVjdEJhc2VEaXJ9L2dsdi9UcmF2ZXJzYWxTb3VyY2UudGVtcGxhdGUiKSkubWFrZShiaW5kaW5nKQpAQCAtOTksNCArMTI3LDQgQEAKIAogZGVmIGdyYXBoVHJhdmVyc2FsVGVtcGxhdGUgPSBlbmdpbmUuY3JlYXRlVGVtcGxhdGUobmV3IEZpbGUoIiR7cHJvamVjdEJhc2VEaXJ9L2dsdi9HcmFwaFRyYXZlcnNhbFNvdXJjZS50ZW1wbGF0ZSIpKS5tYWtlKGJpbmRpbmcpCiBkZWYgZ3JhcGhUcmF2ZXJzYWxGaWxlID0gbmV3IEZpbGUoIiR7cHJvamVjdEJhc2VEaXJ9L3NyYy9tYWluL2p5dGhvbi9ncmVtbGluX3B5dGhvbi9wcm9jZXNzL2dyYXBoX3RyYXZlcnNhbC5weSIpCi1ncmFwaFRyYXZlcnNhbEZpbGUubmV3V3JpdGVyKCkud2l0aFdyaXRlcnsgaXQgPDwgZ3JhcGhUcmF2ZXJzYWxUZW1wbGF0ZSB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZ3JhcGhUcmF2ZXJzYWxGaWxlLm5ld1dyaXRlcigpLndpdGhXcml0ZXJ7IGl0IDw8IGdyYXBoVHJhdmVyc2FsVGVtcGxhdGUgfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1weXRob24vcG9tLnhtbCBiL2dyZW1saW4tcHl0aG9uL3BvbS54bWwKaW5kZXggMDgxOTRjZi4uODI5OWQ1OCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1weXRob24vcG9tLnhtbAorKysgYi9ncmVtbGluLXB5dGhvbi9wb20ueG1sCkBAIC0yMSw3ICsyMSw3IEBACiAgICAgPHBhcmVudD4KICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS50aW5rZXJwb3A8L2dyb3VwSWQ+CiAgICAgICAgIDxhcnRpZmFjdElkPnRpbmtlcnBvcDwvYXJ0aWZhY3RJZD4KLSAgICAgICAgPHZlcnNpb24+My4zLjExLVNOQVBTSE9UPC92ZXJzaW9uPgorICAgICAgICA8dmVyc2lvbj4zLjQuNy1TTkFQU0hPVDwvdmVyc2lvbj4KICAgICA8L3BhcmVudD4KICAgICA8YXJ0aWZhY3RJZD5ncmVtbGluLXB5dGhvbjwvYXJ0aWZhY3RJZD4KICAgICA8bmFtZT5BcGFjaGUgVGlua2VyUG9wIDo6IEdyZW1saW4gUHl0aG9uPC9uYW1lPgpAQCAtNDQ5LDYgKzQ0OSwxMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW52IGtleT0iUFlUSE9OSU9FTkNPRElORyIgdmFsdWU9InV0Zi04OnN1cnJvZ2F0ZWVzY2FwZSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXJnIGxpbmU9Ii1mIGRvdHMgLWUgLXQgLWIgJHtwcm9qZWN0LmJ1aWxkLmRpcmVjdG9yeX0vcHl0aG9uMi9yYWRpc2ggJHtwcm9qZWN0LmJhc2VkaXJ9Ly4uL2dyZW1saW4tdGVzdC9mZWF0dXJlcy8gLS11c2VyLWRhdGE9JnF1b3Q7c2VyaWFsaXplcj1hcHBsaWNhdGlvbi92bmQuZ3JlbWxpbi12My4wK2pzb24mcXVvdDsiLz4gPCEtLSAtbm8tbGluZS1qdW1wIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXhlYz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHJ1biBmb3IgZ3JhcGhiaW5hcnkgMS4wIC0tPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxleGVjIGV4ZWN1dGFibGU9ImVudi9iaW4vcmFkaXNoIiBkaXI9IiR7cHJvamVjdC5idWlsZC5kaXJlY3Rvcnl9L3B5dGhvbjIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbG9uZXJyb3I9InRydWUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW52IGtleT0iUFlUSE9OUEFUSCIgdmFsdWU9IiIvPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW52IGtleT0iUFlUSE9OSU9FTkNPRElORyIgdmFsdWU9InV0Zi04OnN1cnJvZ2F0ZWVzY2FwZSIvPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXJnIGxpbmU9Ii1mIGRvdHMgLWUgLXQgLWIgJHtwcm9qZWN0LmJ1aWxkLmRpcmVjdG9yeX0vcHl0aG9uMi9yYWRpc2ggJHtwcm9qZWN0LmJhc2VkaXJ9Ly4uL2dyZW1saW4tdGVzdC9mZWF0dXJlcy8gLS11c2VyLWRhdGE9JnF1b3Q7c2VyaWFsaXplcj1hcHBsaWNhdGlvbi92bmQuZ3JhcGhiaW5hcnktdjEuMCZxdW90OyIvPiA8IS0tIC1uby1saW5lLWp1bXAgLS0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9leGVjPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YXJnZXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY29uZmlndXJhdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2V4ZWN1dGlvbj4KQEAgLTQ3OSw3ICs0ODYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuY29kZWhhdXMuZ3Jvb3Z5PC9ncm91cElkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5ncm9vdnktYWxsPC9hcnRpZmFjdElkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4ke2dyb292eS52ZXJzaW9ufTwvdmVyc2lvbj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsYXNzaWZpZXI+aW5keTwvY2xhc3NpZmllcj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGU+cG9tPC90eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+cnVudGltZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZXBlbmRlbmN5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZXBlbmRlbmN5PgpAQCAtNjE1LDExICs2MjIsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nb2Fscz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvbmZpZ3VyYXRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFyZ2V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWVtcyBsaWtlIGh0dHBzOi8vZ2l0aHViLmNvbS9weXBhL3R3aW5lL2lzc3Vlcy8zMzggaXMgdGhlIHJlYXNvbiB0byBzdGF5IGJvdW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhpcyBvbGQgdmVyc2lvbiBvZiB0d2luZS4gYXMgbG9uZyBhcyBrZXlyaW5nIGdldHMgaW4gdGhlIHdheSBhbmQgY2FuJ3QgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZCBhcyBkZXNjcmliZWQgdGhlbiB5b3UgZG9uJ3QgZ2V0IGEgcHJvbXB0IGZvciB0aGUgcGFzc3dvcmQgb24gZGVwbG95CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gcHlwaQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXhlYyBkaXI9IiR7cHJvamVjdC5idWlsZC5kaXJlY3Rvcnl9L3B5dGhvbi1wYWNrYWdlZCIgZXhlY3V0YWJsZT0iZW52L2Jpbi9waXAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbG9uZXJyb3I9InRydWUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXJnIGxpbmU9Imluc3RhbGwgdHdpbmU9PTEuMTIuMSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXhlYz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIGNoZWNrIHRoZSBkaXN0IGZvciBlcnJvcnMgYmVmb3JlIGRlcGxveWluZyAtLT4KKwkJCQkJICAgICAgICAgICAgICAgICAgICA8IS0tIGNoZWNrIHRoZSBkaXN0IGZvciBlcnJvcnMgYmVmb3JlIGRlcGxveWluZyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXhlYyBkaXI9IiR7cHJvamVjdC5idWlsZC5kaXJlY3Rvcnl9L3B5dGhvbi1wYWNrYWdlZCIgZXhlY3V0YWJsZT0iZW52L2Jpbi90d2luZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsb25lcnJvcj0idHJ1ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcmcgbGluZT0iY2hlY2sgZGlzdC8qIi8+CmRpZmYgLS1naXQgYS9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHl0aG9uL2pzcjIyMy9QeXRob25UcmFuc2xhdG9yLmphdmEgYi9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHl0aG9uL2pzcjIyMy9QeXRob25UcmFuc2xhdG9yLmphdmEKaW5kZXggNDMxOWE4MS4uYTI0ZTBlNSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1weXRob24vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3B5dGhvbi9qc3IyMjMvUHl0aG9uVHJhbnNsYXRvci5qYXZhCisrKyBiL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9weXRob24vanNyMjIzL1B5dGhvblRyYW5zbGF0b3IuamF2YQpAQCAtMjQsNiArMjQsNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuT3BlcmF0b3I7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuU2Fja0Z1bmN0aW9uczsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRleHRQOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhbnNsYXRvcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbFNvdXJjZTsKQEAgLTIyNyw2ICsyMjgsNyBAQAogICAgIH0KIAogICAgIHByaXZhdGUgU3RyaW5nQnVpbGRlciBjb252ZXJ0UFRvU3RyaW5nKGZpbmFsIFAgcCwgZmluYWwgU3RyaW5nQnVpbGRlciBjdXJyZW50KSB7CisgICAgICAgIGlmIChwIGluc3RhbmNlb2YgVGV4dFApIHJldHVybiBjb252ZXJ0VGV4dFBUb1N0cmluZygoVGV4dFApIHAsIGN1cnJlbnQpOwogICAgICAgICBpZiAocCBpbnN0YW5jZW9mIENvbm5lY3RpdmVQKSB7CiAgICAgICAgICAgICBmaW5hbCBMaXN0PFA8Pz4+IGxpc3QgPSAoKENvbm5lY3RpdmVQKSBwKS5nZXRQcmVkaWNhdGVzKCk7CiAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxpc3Quc2l6ZSgpOyBpKyspIHsKQEAgLTI0MCw2ICsyNDIsMTEgQEAKICAgICAgICAgcmV0dXJuIGN1cnJlbnQ7CiAgICAgfQogCisgICAgcHJpdmF0ZSBTdHJpbmdCdWlsZGVyIGNvbnZlcnRUZXh0UFRvU3RyaW5nKGZpbmFsIFRleHRQIHAsIGZpbmFsIFN0cmluZ0J1aWxkZXIgY3VycmVudCkgeworICAgICAgICBjdXJyZW50LmFwcGVuZChjb252ZXJ0U3RhdGljKCJUZXh0UC4iKSkuYXBwZW5kKHAuZ2V0QmlQcmVkaWNhdGUoKS50b1N0cmluZygpKS5hcHBlbmQoIigiKS5hcHBlbmQoY29udmVydFRvU3RyaW5nKHAuZ2V0VmFsdWUoKSkpLmFwcGVuZCgiKSIpOworICAgICAgICByZXR1cm4gY3VycmVudDsKKyAgICB9CisKICAgICBwcm90ZWN0ZWQgU3RyaW5nIGNvbnZlcnRMYW1iZGFUb1N0cmluZyhmaW5hbCBMYW1iZGEgbGFtYmRhKSB7CiAgICAgICAgIGZpbmFsIFN0cmluZyBsYW1iZGFTdHJpbmcgPSBsYW1iZGEuZ2V0TGFtYmRhU2NyaXB0KCkudHJpbSgpOwogICAgICAgICByZXR1cm4gbGFtYmRhU3RyaW5nLnN0YXJ0c1dpdGgoImxhbWJkYSIpID8gbGFtYmRhU3RyaW5nIDogImxhbWJkYSAiICsgbGFtYmRhU3RyaW5nOwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1weXRob24vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3B5dGhvbi9qc3IyMjMvU3ltYm9sSGVscGVyLmphdmEgYi9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHl0aG9uL2pzcjIyMy9TeW1ib2xIZWxwZXIuamF2YQppbmRleCBiNTRlODc0Li41NGNkNWIzIDEwMDY0NAotLS0gYS9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHl0aG9uL2pzcjIyMy9TeW1ib2xIZWxwZXIuamF2YQorKysgYi9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHl0aG9uL2pzcjIyMy9TeW1ib2xIZWxwZXIuamF2YQpAQCAtNDUsNiArNDUsNyBAQAogICAgICAgICBUT19QWVRIT05fTUFQLnB1dCgibGlzdCIsICJsaXN0XyIpOwogICAgICAgICBUT19QWVRIT05fTUFQLnB1dCgic2V0IiwgInNldF8iKTsKICAgICAgICAgVE9fUFlUSE9OX01BUC5wdXQoImFsbCIsICJhbGxfIik7CisgICAgICAgIFRPX1BZVEhPTl9NQVAucHV0KCJ3aXRoIiwgIndpdGhfIik7CiAgICAgICAgIC8vCiAgICAgICAgIFRPX1BZVEhPTl9NQVAuZm9yRWFjaCgoaywgdikgLT4gRlJPTV9QWVRIT05fTUFQLnB1dCh2LCBrKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL2dyZW1saW5fcHl0aG9uL2RyaXZlci9kcml2ZXJfcmVtb3RlX2Nvbm5lY3Rpb24ucHkgYi9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vZ3JlbWxpbl9weXRob24vZHJpdmVyL2RyaXZlcl9yZW1vdGVfY29ubmVjdGlvbi5weQppbmRleCAzZjRjMzljLi4zYjZhNzYwIDEwMDY0NAotLS0gYS9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vZ3JlbWxpbl9weXRob24vZHJpdmVyL2RyaXZlcl9yZW1vdGVfY29ubmVjdGlvbi5weQorKysgYi9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vZ3JlbWxpbl9weXRob24vZHJpdmVyL2RyaXZlcl9yZW1vdGVfY29ubmVjdGlvbi5weQpAQCAtNTQsOCArNTQsOCBAQAogICAgIGRlZiBzdWJtaXQoc2VsZiwgYnl0ZWNvZGUpOgogICAgICAgICByZXN1bHRfc2V0ID0gc2VsZi5fY2xpZW50LnN1Ym1pdChieXRlY29kZSkKICAgICAgICAgcmVzdWx0cyA9IHJlc3VsdF9zZXQuYWxsKCkucmVzdWx0KCkKLSAgICAgICAgc2lkZV9lZmZlY3RzID0gUmVtb3RlVHJhdmVyc2FsU2lkZUVmZmVjdHMocmVzdWx0X3NldC5yZXF1ZXN0X2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9jbGllbnQpCisgICAgICAgIHNpZGVfZWZmZWN0cyA9IFJlbW90ZVRyYXZlcnNhbFNpZGVFZmZlY3RzKHJlc3VsdF9zZXQucmVxdWVzdF9pZCwgc2VsZi5fY2xpZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRfc2V0LnN0YXR1c19hdHRyaWJ1dGVzKQogICAgICAgICByZXR1cm4gUmVtb3RlVHJhdmVyc2FsKGl0ZXIocmVzdWx0cyksIHNpZGVfZWZmZWN0cykKIAogICAgIGRlZiBzdWJtaXRBc3luYyhzZWxmLCBieXRlY29kZSk6CkBAIC02Niw4ICs2Niw4IEBACiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcmVzdWx0X3NldCA9IGYucmVzdWx0KCkKICAgICAgICAgICAgICAgICByZXN1bHRzID0gcmVzdWx0X3NldC5hbGwoKS5yZXN1bHQoKQotICAgICAgICAgICAgICAgIHNpZGVfZWZmZWN0cyA9IFJlbW90ZVRyYXZlcnNhbFNpZGVFZmZlY3RzKHJlc3VsdF9zZXQucmVxdWVzdF9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9jbGllbnQpCisgICAgICAgICAgICAgICAgc2lkZV9lZmZlY3RzID0gUmVtb3RlVHJhdmVyc2FsU2lkZUVmZmVjdHMocmVzdWx0X3NldC5yZXF1ZXN0X2lkLCBzZWxmLl9jbGllbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0X3NldC5zdGF0dXNfYXR0cmlidXRlcykKICAgICAgICAgICAgICAgICBmdXR1cmUuc2V0X3Jlc3VsdChSZW1vdGVUcmF2ZXJzYWwoaXRlcihyZXN1bHRzKSwgc2lkZV9lZmZlY3RzKSkKICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgICAgICBmdXR1cmUuc2V0X2V4Y2VwdGlvbihlKQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL2dyZW1saW5fcHl0aG9uL2RyaXZlci9wcm90b2NvbC5weSBiL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi9ncmVtbGluX3B5dGhvbi9kcml2ZXIvcHJvdG9jb2wucHkKaW5kZXggMWE2ZDVjNS4uYWQwZDQ2NyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL2dyZW1saW5fcHl0aG9uL2RyaXZlci9wcm90b2NvbC5weQorKysgYi9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vZ3JlbWxpbl9weXRob24vZHJpdmVyL3Byb3RvY29sLnB5CkBAIC0zMyw5ICszMywxNCBAQAogCiAKIGNsYXNzIEdyZW1saW5TZXJ2ZXJFcnJvcihFeGNlcHRpb24pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdGF0dXMsIG1lc3NhZ2UpOgotICAgICAgICBzdXBlcihHcmVtbGluU2VydmVyRXJyb3IsIHNlbGYpLl9faW5pdF9fKG1lc3NhZ2UpCi0gICAgICAgIHNlbGYuc3RhdHVzX2NvZGUgPSBzdGF0dXMKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc3RhdHVzKToKKyAgICAgICAgc3VwZXIoR3JlbWxpblNlcnZlckVycm9yLCBzZWxmKS5fX2luaXRfXygiezB9OiB7MX0iLmZvcm1hdChzdGF0dXNbImNvZGUiXSwgc3RhdHVzWyJtZXNzYWdlIl0pKQorICAgICAgICBzZWxmLl9zdGF0dXNfYXR0cmlidXRlcyA9IHN0YXR1c1siYXR0cmlidXRlcyJdCisgICAgICAgIHNlbGYuc3RhdHVzX2NvZGUgPSBzdGF0dXNbImNvZGUiXQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHN0YXR1c19hdHRyaWJ1dGVzKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fc3RhdHVzX2F0dHJpYnV0ZXMKIAogCiBAc2l4LmFkZF9tZXRhY2xhc3MoYWJjLkFCQ01ldGEpCkBAIC03Miw5ICs3NywxMCBAQAogICAgIGRlZiBkYXRhX3JlY2VpdmVkKHNlbGYsIG1lc3NhZ2UsIHJlc3VsdHNfZGljdCk6CiAgICAgICAgICMgaWYgR3JlbWxpbiBTZXJ2ZXIgY3V0cyBvZmYgdGhlbiB3ZSBnZXQgYSBOb25lIGZvciB0aGUgbWVzc2FnZQogICAgICAgICBpZiBtZXNzYWdlIGlzIE5vbmU6Ci0gICAgICAgICAgICByYWlzZSBHcmVtbGluU2VydmVyRXJyb3IoNTAwLCAiNTAwOiBTZXJ2ZXIgZGlzY29ubmVjdGVkIC0gcGxlYXNlIHRyeSB0byByZWNvbm5lY3QiKQorICAgICAgICAgICAgcmFpc2UgR3JlbWxpblNlcnZlckVycm9yKHsnY29kZSc6IDUwMCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtZXNzYWdlJzogJ1NlcnZlciBkaXNjb25uZWN0ZWQgLSBwbGVhc2UgdHJ5IHRvIHJlY29ubmVjdCcsICdhdHRyaWJ1dGVzJzoge319KQogCi0gICAgICAgIG1lc3NhZ2UgPSBzZWxmLl9tZXNzYWdlX3NlcmlhbGl6ZXIuZGVzZXJpYWxpemVfbWVzc2FnZShqc29uLmxvYWRzKG1lc3NhZ2UuZGVjb2RlKCd1dGYtOCcpKSkKKyAgICAgICAgbWVzc2FnZSA9IHNlbGYuX21lc3NhZ2Vfc2VyaWFsaXplci5kZXNlcmlhbGl6ZV9tZXNzYWdlKG1lc3NhZ2UpCiAgICAgICAgIHJlcXVlc3RfaWQgPSBtZXNzYWdlWydyZXF1ZXN0SWQnXQogICAgICAgICByZXN1bHRfc2V0ID0gcmVzdWx0c19kaWN0W3JlcXVlc3RfaWRdIGlmIHJlcXVlc3RfaWQgaW4gcmVzdWx0c19kaWN0IGVsc2UgUmVzdWx0U2V0KE5vbmUsIE5vbmUpCiAgICAgICAgIHN0YXR1c19jb2RlID0gbWVzc2FnZVsnc3RhdHVzJ11bJ2NvZGUnXQpAQCAtOTgsOSArMTA0LDkgQEAKICAgICAgICAgZWxpZiBzdGF0dXNfY29kZSBpbiBbMjAwLCAyMDZdOgogICAgICAgICAgICAgcmVzdWx0X3NldC5zdHJlYW0ucHV0X25vd2FpdChkYXRhKQogICAgICAgICAgICAgaWYgc3RhdHVzX2NvZGUgPT0gMjAwOgorICAgICAgICAgICAgICAgIHJlc3VsdF9zZXQuc3RhdHVzX2F0dHJpYnV0ZXMgPSBtZXNzYWdlWydzdGF0dXMnXVsnYXR0cmlidXRlcyddCiAgICAgICAgICAgICAgICAgZGVsIHJlc3VsdHNfZGljdFtyZXF1ZXN0X2lkXQogICAgICAgICAgICAgcmV0dXJuIHN0YXR1c19jb2RlCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBkZWwgcmVzdWx0c19kaWN0W3JlcXVlc3RfaWRdCi0gICAgICAgICAgICByYWlzZSBHcmVtbGluU2VydmVyRXJyb3Ioc3RhdHVzX2NvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInswfTogezF9Ii5mb3JtYXQoc3RhdHVzX2NvZGUsIG1lc3NhZ2VbInN0YXR1cyJdWyJtZXNzYWdlIl0pKQorICAgICAgICAgICAgcmFpc2UgR3JlbWxpblNlcnZlckVycm9yKG1lc3NhZ2VbInN0YXR1cyJdKQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL2dyZW1saW5fcHl0aG9uL2RyaXZlci9yZW1vdGVfY29ubmVjdGlvbi5weSBiL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi9ncmVtbGluX3B5dGhvbi9kcml2ZXIvcmVtb3RlX2Nvbm5lY3Rpb24ucHkKaW5kZXggZDI0YWJlNC4uNmI2ZGUxNCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL2dyZW1saW5fcHl0aG9uL2RyaXZlci9yZW1vdGVfY29ubmVjdGlvbi5weQorKysgYi9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vZ3JlbWxpbl9weXRob24vZHJpdmVyL3JlbW90ZV9jb25uZWN0aW9uLnB5CkBAIC02MywxMiArNjMsMTcgQEAKIAogCiBjbGFzcyBSZW1vdGVUcmF2ZXJzYWxTaWRlRWZmZWN0cyh0cmF2ZXJzYWwuVHJhdmVyc2FsU2lkZUVmZmVjdHMpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzaWRlX2VmZmVjdCwgY2xpZW50KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc2lkZV9lZmZlY3QsIGNsaWVudCwgc3RhdHVzX2F0dHJpYnV0ZXMpOgogICAgICAgICBzZWxmLl9zaWRlX2VmZmVjdCA9IHNpZGVfZWZmZWN0CiAgICAgICAgIHNlbGYuX2NsaWVudCA9IGNsaWVudAogICAgICAgICBzZWxmLl9rZXlzID0gc2V0KCkKICAgICAgICAgc2VsZi5fc2lkZV9lZmZlY3RzID0ge30KICAgICAgICAgc2VsZi5fY2xvc2VkID0gRmFsc2UKKyAgICAgICAgc2VsZi5fc3RhdHVzX2F0dHJpYnV0ZXMgPSBzdGF0dXNfYXR0cmlidXRlcworCisgICAgQHByb3BlcnR5CisgICAgZGVmIHN0YXR1c19hdHRyaWJ1dGVzKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fc3RhdHVzX2F0dHJpYnV0ZXMKIAogICAgIGRlZiBrZXlzKHNlbGYpOgogICAgICAgICBpZiBub3Qgc2VsZi5fY2xvc2VkOgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL2dyZW1saW5fcHl0aG9uL2RyaXZlci9yZXN1bHRzZXQucHkgYi9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vZ3JlbWxpbl9weXRob24vZHJpdmVyL3Jlc3VsdHNldC5weQppbmRleCA4Mjk0NmE3Li42NjU2NmZlIDEwMDY0NAotLS0gYS9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vZ3JlbWxpbl9weXRob24vZHJpdmVyL3Jlc3VsdHNldC5weQorKysgYi9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vZ3JlbWxpbl9weXRob24vZHJpdmVyL3Jlc3VsdHNldC5weQpAQCAtMjgsNiArMjgsNyBAQAogICAgICAgICBzZWxmLl9yZXF1ZXN0X2lkID0gcmVxdWVzdF9pZAogICAgICAgICBzZWxmLl9kb25lID0gTm9uZQogICAgICAgICBzZWxmLl9hZ2dyZWdhdGVfdG8gPSBOb25lCisgICAgICAgIHNlbGYuX3N0YXR1c19hdHRyaWJ1dGVzID0ge30KIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBhZ2dyZWdhdGVfdG8oc2VsZik6CkBAIC0zOCw2ICszOSwxNCBAQAogICAgICAgICBzZWxmLl9hZ2dyZWdhdGVfdG8gPSB2YWwKIAogICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzdGF0dXNfYXR0cmlidXRlcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3N0YXR1c19hdHRyaWJ1dGVzCisKKyAgICBAc3RhdHVzX2F0dHJpYnV0ZXMuc2V0dGVyCisgICAgZGVmIHN0YXR1c19hdHRyaWJ1dGVzKHNlbGYsIHZhbCk6CisgICAgICAgIHNlbGYuX3N0YXR1c19hdHRyaWJ1dGVzID0gdmFsCisKKyAgICBAcHJvcGVydHkKICAgICBkZWYgcmVxdWVzdF9pZChzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX3JlcXVlc3RfaWQKIApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL2dyZW1saW5fcHl0aG9uL2RyaXZlci9zZXJpYWxpemVyLnB5IGIvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL2dyZW1saW5fcHl0aG9uL2RyaXZlci9zZXJpYWxpemVyLnB5CmluZGV4IDQxZDYwM2QuLmM3YjZiNGQgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi9ncmVtbGluX3B5dGhvbi9kcml2ZXIvc2VyaWFsaXplci5weQorKysgYi9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vZ3JlbWxpbl9weXRob24vZHJpdmVyL3NlcmlhbGl6ZXIucHkKQEAgLTYsOSArNiw5IEBACiAjIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKICMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQogIyB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jIAorIwogIyBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSMgCisjCiAjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKICMgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KICMgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCkBAIC0yMCw3ICsyMCwxMSBAQAogICAgIGltcG9ydCB1anNvbiBhcyBqc29uCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgaW1wb3J0IGpzb24KK2ltcG9ydCBzdHJ1Y3QKK2ltcG9ydCB1dWlkCitpbXBvcnQgaW8KIAorZnJvbSBncmVtbGluX3B5dGhvbi5zdHJ1Y3R1cmUuaW8gaW1wb3J0IGdyYXBoYmluYXJ5VjEKIGZyb20gZ3JlbWxpbl9weXRob24uc3RydWN0dXJlLmlvIGltcG9ydCBncmFwaHNvblYyZDAKIGZyb20gZ3JlbWxpbl9weXRob24uc3RydWN0dXJlLmlvIGltcG9ydCBncmFwaHNvblYzZDAKIApAQCAtMzEsNyArMzUsNyBAQAogICAgICIiIkJhc2UgY2xhc3MgZm9yIE9wUHJvY2Vzc29yIHNlcmlhbGl6YXRpb24gc3lzdGVtLiIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHdyaXRlcik6Ci0gICAgICAgIHNlbGYuX2dyYXBoc29uX3dyaXRlciA9IHdyaXRlcgorICAgICAgICBzZWxmLl93cml0ZXIgPSB3cml0ZXIKIAogICAgIGRlZiBnZXRfb3BfYXJncyhzZWxmLCBvcCwgYXJncyk6CiAgICAgICAgIG9wX21ldGhvZCA9IGdldGF0dHIoc2VsZiwgb3AsIE5vbmUpCkBAIC02Nyw3ICs3MSw3IEBACiAKICAgICBkZWYgYnl0ZWNvZGUoc2VsZiwgYXJncyk6CiAgICAgICAgIGdyZW1saW4gPSBhcmdzWydncmVtbGluJ10KLSAgICAgICAgYXJnc1snZ3JlbWxpbiddID0gc2VsZi5fZ3JhcGhzb25fd3JpdGVyLnRvRGljdChncmVtbGluKQorICAgICAgICBhcmdzWydncmVtbGluJ10gPSBzZWxmLl93cml0ZXIudG9EaWN0KGdyZW1saW4pCiAgICAgICAgIGFsaWFzZXMgPSBhcmdzLmdldCgnYWxpYXNlcycsICcnKQogICAgICAgICBpZiBub3QgYWxpYXNlczoKICAgICAgICAgICAgIGFsaWFzZXMgPSB7J2cnOiAnZyd9CkBAIC03OCw4ICs4Miw4IEBACiAgICAgICAgIHJldHVybiBzZWxmLmtleXMoYXJncykKIAogICAgIGRlZiBnYXRoZXIoc2VsZiwgYXJncyk6Ci0gICAgICAgIHNpZGVfZWZmZWN0ID0gYXJnc1snc2lkZUVmZmVjdCddCi0gICAgICAgIGFyZ3NbJ3NpZGVFZmZlY3QnXSA9IHsnQHR5cGUnOiAnZzpVVUlEJywgJ0B2YWx1ZSc6IHNpZGVfZWZmZWN0fQorICAgICAgICBzaWRlX2VmZmVjdCA9IHV1aWQuVVVJRChhcmdzWydzaWRlRWZmZWN0J10pCisgICAgICAgIGFyZ3NbJ3NpZGVFZmZlY3QnXSA9IHNlbGYuX3dyaXRlci50b0RpY3Qoc2lkZV9lZmZlY3QpCiAgICAgICAgIGFsaWFzZXMgPSBhcmdzLmdldCgnYWxpYXNlcycsICcnKQogICAgICAgICBpZiBub3QgYWxpYXNlczoKICAgICAgICAgICAgIGFsaWFzZXMgPSB7J2cnOiAnZyd9CkBAIC04Nyw4ICs5MSw4IEBACiAgICAgICAgIHJldHVybiBhcmdzCiAKICAgICBkZWYga2V5cyhzZWxmLCBhcmdzKToKLSAgICAgICAgc2lkZV9lZmZlY3QgPSBhcmdzWydzaWRlRWZmZWN0J10KLSAgICAgICAgYXJnc1snc2lkZUVmZmVjdCddID0geydAdHlwZSc6ICdnOlVVSUQnLCAnQHZhbHVlJzogc2lkZV9lZmZlY3R9CisgICAgICAgIHNpZGVfZWZmZWN0ID0gdXVpZC5VVUlEKGFyZ3NbJ3NpZGVFZmZlY3QnXSkKKyAgICAgICAgYXJnc1snc2lkZUVmZmVjdCddID0gc2VsZi5fd3JpdGVyLnRvRGljdChzaWRlX2VmZmVjdCkKICAgICAgICAgcmV0dXJuIGFyZ3MKIAogCkBAIC0xNTUsNyArMTU5LDggQEAKICAgICAgICAgcmV0dXJuIG1lc3NhZ2UKIAogICAgIGRlZiBkZXNlcmlhbGl6ZV9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UpOgotICAgICAgICByZXR1cm4gc2VsZi5fZ3JhcGhzb25fcmVhZGVyLnRvT2JqZWN0KG1lc3NhZ2UpCisgICAgICAgIG1zZyA9IGpzb24ubG9hZHMobWVzc2FnZS5kZWNvZGUoJ3V0Zi04JykpCisgICAgICAgIHJldHVybiBzZWxmLl9ncmFwaHNvbl9yZWFkZXIudG9PYmplY3QobXNnKQogCiAKIGNsYXNzIEdyYXBoU09OU2VyaWFsaXplcnNWMmQwKEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXIpOgpAQCAtMTc0LDMgKzE3OSwxMTUgQEAKICAgICAgICAgd3JpdGVyID0gZ3JhcGhzb25WM2QwLkdyYXBoU09OV3JpdGVyKCkKICAgICAgICAgdmVyc2lvbiA9IGIiYXBwbGljYXRpb24vdm5kLmdyZW1saW4tdjMuMCtqc29uIgogICAgICAgICBzdXBlcihHcmFwaFNPTlNlcmlhbGl6ZXJzVjNkMCwgc2VsZikuX19pbml0X18ocmVhZGVyLCB3cml0ZXIsIHZlcnNpb24pCisKKworY2xhc3MgR3JhcGhCaW5hcnlTZXJpYWxpemVyc1YxKG9iamVjdCk6CisgICAgREVGQVVMVF9SRUFERVJfQ0xBU1MgPSBncmFwaGJpbmFyeVYxLkdyYXBoQmluYXJ5UmVhZGVyCisgICAgREVGQVVMVF9XUklURVJfQ0xBU1MgPSBncmFwaGJpbmFyeVYxLkdyYXBoQmluYXJ5V3JpdGVyCisgICAgREVGQVVMVF9WRVJTSU9OID0gYiJhcHBsaWNhdGlvbi92bmQuZ3JhcGhiaW5hcnktdjEuMCIKKworICAgIG1heF9pbnQ2NCA9IDB4RkZGRkZGRkZGRkZGRkZGRgorICAgIGhlYWRlcl9zdHJ1Y3QgPSBzdHJ1Y3QuU3RydWN0KCc+YjMyc0JRUScpCisgICAgaGVhZGVyX3BhY2sgPSBoZWFkZXJfc3RydWN0LnBhY2sKKyAgICBpbnRfcGFjayA9IGdyYXBoYmluYXJ5VjEuaW50MzJfcGFjaworICAgIGludDMyX3VucGFjayA9IHN0cnVjdC5TdHJ1Y3QoIj5pIikudW5wYWNrCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmVhZGVyPU5vbmUsIHdyaXRlcj1Ob25lLCB2ZXJzaW9uPU5vbmUpOgorICAgICAgICBpZiBub3QgdmVyc2lvbjoKKyAgICAgICAgICAgIHZlcnNpb24gPSBzZWxmLkRFRkFVTFRfVkVSU0lPTgorICAgICAgICBzZWxmLl92ZXJzaW9uID0gdmVyc2lvbgorICAgICAgICBpZiBub3QgcmVhZGVyOgorICAgICAgICAgICAgcmVhZGVyID0gc2VsZi5ERUZBVUxUX1JFQURFUl9DTEFTUygpCisgICAgICAgIHNlbGYuX2dyYXBoYmluYXJ5X3JlYWRlciA9IHJlYWRlcgorICAgICAgICBpZiBub3Qgd3JpdGVyOgorICAgICAgICAgICAgd3JpdGVyID0gc2VsZi5ERUZBVUxUX1dSSVRFUl9DTEFTUygpCisgICAgICAgIHNlbGYuX2dyYXBoYmluYXJ5X3dyaXRlciA9IHdyaXRlcgorICAgICAgICBzZWxmLnN0YW5kYXJkID0gU3RhbmRhcmQod3JpdGVyKQorICAgICAgICBzZWxmLnRyYXZlcnNhbCA9IFRyYXZlcnNhbCh3cml0ZXIpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdmVyc2lvbihzZWxmKToKKyAgICAgICAgIiIiUmVhZCBvbmx5IHByb3BlcnR5IiIiCisgICAgICAgIHJldHVybiBzZWxmLl92ZXJzaW9uCisKKyAgICBkZWYgZ2V0X3Byb2Nlc3NvcihzZWxmLCBwcm9jZXNzb3IpOgorICAgICAgICBwcm9jZXNzb3IgPSBnZXRhdHRyKHNlbGYsIHByb2Nlc3NvciwgTm9uZSkKKyAgICAgICAgaWYgbm90IHByb2Nlc3NvcjoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiVW5rbm93biBwcm9jZXNzb3IiKQorICAgICAgICByZXR1cm4gcHJvY2Vzc29yCisKKyAgICBkZWYgc2VyaWFsaXplX21lc3NhZ2Uoc2VsZiwgcmVxdWVzdF9pZCwgcmVxdWVzdF9tZXNzYWdlKToKKyAgICAgICAgcHJvY2Vzc29yID0gcmVxdWVzdF9tZXNzYWdlLnByb2Nlc3NvcgorICAgICAgICBvcCA9IHJlcXVlc3RfbWVzc2FnZS5vcAorICAgICAgICBhcmdzID0gcmVxdWVzdF9tZXNzYWdlLmFyZ3MKKyAgICAgICAgaWYgbm90IHByb2Nlc3NvcjoKKyAgICAgICAgICAgIHByb2Nlc3Nvcl9vYmogPSBzZWxmLmdldF9wcm9jZXNzb3IoJ3N0YW5kYXJkJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHByb2Nlc3Nvcl9vYmogPSBzZWxmLmdldF9wcm9jZXNzb3IocHJvY2Vzc29yKQorICAgICAgICBhcmdzID0gcHJvY2Vzc29yX29iai5nZXRfb3BfYXJncyhvcCwgYXJncykKKyAgICAgICAgbWVzc2FnZSA9IHNlbGYuYnVpbGRfbWVzc2FnZShyZXF1ZXN0X2lkLCBwcm9jZXNzb3IsIG9wLCBhcmdzKQorICAgICAgICByZXR1cm4gbWVzc2FnZQorCisgICAgZGVmIGJ1aWxkX21lc3NhZ2Uoc2VsZiwgcmVxdWVzdF9pZCwgcHJvY2Vzc29yLCBvcCwgYXJncyk6CisgICAgICAgIG1lc3NhZ2UgPSB7CisgICAgICAgICAgICAncmVxdWVzdElkJzogcmVxdWVzdF9pZCwKKyAgICAgICAgICAgICdwcm9jZXNzb3InOiBwcm9jZXNzb3IsCisgICAgICAgICAgICAnb3AnOiBvcCwKKyAgICAgICAgICAgICdhcmdzJzogYXJncworICAgICAgICB9CisgICAgICAgIHJldHVybiBzZWxmLmZpbmFsaXplX21lc3NhZ2UobWVzc2FnZSwgMHgyMCwgc2VsZi52ZXJzaW9uKQorCisgICAgZGVmIGZpbmFsaXplX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSwgbWltZV9sZW4sIG1pbWVfdHlwZSk6CisgICAgICAgIGJhID0gYnl0ZWFycmF5KCkKKworICAgICAgICByZXF1ZXN0X2lkID0gdXVpZC5VVUlEKG1lc3NhZ2VbJ3JlcXVlc3RJZCddKQorICAgICAgICBiYS5leHRlbmQoc2VsZi5oZWFkZXJfcGFjayhtaW1lX2xlbiwgbWltZV90eXBlLCAweDgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVxdWVzdF9pZC5pbnQgPj4gNjQpICYgc2VsZi5tYXhfaW50NjQsIHJlcXVlc3RfaWQuaW50ICYgc2VsZi5tYXhfaW50NjQpKQorCisgICAgICAgIG9wX2J5dGVzID0gbWVzc2FnZVsnb3AnXS5lbmNvZGUoInV0Zi04IikKKyAgICAgICAgYmEuZXh0ZW5kKHNlbGYuaW50X3BhY2sobGVuKG9wX2J5dGVzKSkpCisgICAgICAgIGJhLmV4dGVuZChvcF9ieXRlcykKKworICAgICAgICBwcm9jZXNzb3JfYnl0ZXMgPSBtZXNzYWdlWydwcm9jZXNzb3InXS5lbmNvZGUoInV0Zi04IikKKyAgICAgICAgYmEuZXh0ZW5kKHNlbGYuaW50X3BhY2sobGVuKHByb2Nlc3Nvcl9ieXRlcykpKQorICAgICAgICBiYS5leHRlbmQocHJvY2Vzc29yX2J5dGVzKQorCisgICAgICAgIGFyZ3MgPSBtZXNzYWdlWyJhcmdzIl0KKyAgICAgICAgYmEuZXh0ZW5kKHNlbGYuaW50X3BhY2sobGVuKGFyZ3MpKSkKKyAgICAgICAgZm9yIGssIHYgaW4gYXJncy5pdGVtcygpOgorICAgICAgICAgICAgc2VsZi5fZ3JhcGhiaW5hcnlfd3JpdGVyLnRvRGljdChrLCBiYSkKKworICAgICAgICAgICAgIyBwcm9jZXNzb3Jfb2JqLmdldF9vcF9hcmdzIGluIHNlcmlhbGl6ZV9tZXNzYWdlKCkgc2VlbXMgdG8gYWxyZWFkeSBoYW5kbGUgYnl0ZWNvZGUuIGluIHB5dGhvbiAzCisgICAgICAgICAgICAjIGJlY2F1c2UgYnl0ZWFycmF5IGlzbid0IGJvdW5kIHRvIGEgdHlwZSBpbiBncmFwaGJpbmFyeSBpdCBmYWxscyB0aHJvdWdoIHRoZSB3cml0ZU9iamVjdCgpIGFuZAorICAgICAgICAgICAgIyBqdXN0IHdvcmtzIGJ1dCBweXRob24gMiBieXRlYXJyYXkgaXMgYm91bmQgdG8gQnl0ZUJ1ZmZlclR5cGUgc28gaXQgd3JpdGVzIERhdGFUeXBlLmJ5dGVidWZmZXIKKyAgICAgICAgICAgICMgcmF0aGVyIHRoYW4gRGF0YVR5cGUuYnl0ZWNvZGUgYW5kIHRoZSBzZXJ2ZXIgZ2V0cyBjb25mdXNlZC4gc3BlY2lhbCBjYXNpbmcgdGhpcyBmb3Igbm93IHVudGlsCisgICAgICAgICAgICAjIGl0IGNhbiBiZSByZWZhY3RvcmVkCisgICAgICAgICAgICBpZiBrID09ICJncmVtbGluIiBvciBrID09ICJzaWRlRWZmZWN0IjoKKyAgICAgICAgICAgICAgICBiYS5leHRlbmQodikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5fZ3JhcGhiaW5hcnlfd3JpdGVyLnRvRGljdCh2LCBiYSkKKworICAgICAgICByZXR1cm4gYnl0ZXMoYmEpCisKKyAgICBkZWYgZGVzZXJpYWxpemVfbWVzc2FnZShzZWxmLCBtZXNzYWdlKToKKyAgICAgICAgYiA9IGlvLkJ5dGVzSU8obWVzc2FnZSkKKworICAgICAgICBiLnJlYWQoMSkgICMgdmVyc2lvbgorCisgICAgICAgIHJlcXVlc3RfaWQgPSBzdHIoc2VsZi5fZ3JhcGhiaW5hcnlfcmVhZGVyLnRvT2JqZWN0KGIsIGdyYXBoYmluYXJ5VjEuRGF0YVR5cGUudXVpZCkpCisgICAgICAgIHN0YXR1c19jb2RlID0gc2VsZi5pbnQzMl91bnBhY2soYi5yZWFkKDQpKVswXQorICAgICAgICBzdGF0dXNfbXNnID0gc2VsZi5fZ3JhcGhiaW5hcnlfcmVhZGVyLnRvT2JqZWN0KGIsIGdyYXBoYmluYXJ5VjEuRGF0YVR5cGUuc3RyaW5nKQorICAgICAgICBzdGF0dXNfYXR0cnMgPSBzZWxmLl9ncmFwaGJpbmFyeV9yZWFkZXIudG9PYmplY3QoYiwgZ3JhcGhiaW5hcnlWMS5EYXRhVHlwZS5tYXAsIG51bGxhYmxlPUZhbHNlKQorICAgICAgICBtZXRhX2F0dHJzID0gc2VsZi5fZ3JhcGhiaW5hcnlfcmVhZGVyLnRvT2JqZWN0KGIsIGdyYXBoYmluYXJ5VjEuRGF0YVR5cGUubWFwLCBudWxsYWJsZT1GYWxzZSkKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5fZ3JhcGhiaW5hcnlfcmVhZGVyLnRvT2JqZWN0KGIpCisKKyAgICAgICAgYi5jbG9zZSgpCisKKyAgICAgICAgbXNnID0geydyZXF1ZXN0SWQnOiByZXF1ZXN0X2lkLAorICAgICAgICAgICAgICAgJ3N0YXR1cyc6IHsnY29kZSc6IHN0YXR1c19jb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnbWVzc2FnZSc6IHN0YXR1c19tc2csCisgICAgICAgICAgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGVzJzogc3RhdHVzX2F0dHJzfSwKKyAgICAgICAgICAgICAgICdyZXN1bHQnOiB7J21ldGEnOiBtZXRhX2F0dHJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YSc6IHJlc3VsdH19CisKKyAgICAgICAgcmV0dXJuIG1zZwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL2dyZW1saW5fcHl0aG9uL3Byb2Nlc3MvZ3JhcGhfdHJhdmVyc2FsLnB5IGIvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL2dyZW1saW5fcHl0aG9uL3Byb2Nlc3MvZ3JhcGhfdHJhdmVyc2FsLnB5CmluZGV4IGNhYzEwN2QuLmQ0NzMwMWIgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi9ncmVtbGluX3B5dGhvbi9wcm9jZXNzL2dyYXBoX3RyYXZlcnNhbC5weQorKysgYi9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vZ3JlbWxpbl9weXRob24vcHJvY2Vzcy9ncmFwaF90cmF2ZXJzYWwucHkKQEAgLTcxLDYgKzcxLDExIEBACiAgICAgICAgIHNvdXJjZS5ieXRlY29kZS5hZGRfc291cmNlKCJ3aXRoU3RyYXRlZ2llcyIsICphcmdzKQogICAgICAgICByZXR1cm4gc291cmNlCiAKKyAgICBkZWYgd2l0aF8oc2VsZiwgKmFyZ3MpOgorICAgICAgICBzb3VyY2UgPSBzZWxmLmdldF9ncmFwaF90cmF2ZXJzYWxfc291cmNlKCkKKyAgICAgICAgc291cmNlLmJ5dGVjb2RlLmFkZF9zb3VyY2UoIndpdGgiLCAqYXJncykKKyAgICAgICAgcmV0dXJuIHNvdXJjZQorCiAgICAgZGVmIHdpdGhvdXRTdHJhdGVnaWVzKHNlbGYsICphcmdzKToKICAgICAgICAgc291cmNlID0gc2VsZi5nZXRfZ3JhcGhfdHJhdmVyc2FsX3NvdXJjZSgpCiAgICAgICAgIHNvdXJjZS5ieXRlY29kZS5hZGRfc291cmNlKCJ3aXRob3V0U3RyYXRlZ2llcyIsICphcmdzKQpAQCAtMTExLDYgKzExNiwxMSBAQAogICAgICAgICB0cmF2ZXJzYWwuYnl0ZWNvZGUuYWRkX3N0ZXAoImluamVjdCIsICphcmdzKQogICAgICAgICByZXR1cm4gdHJhdmVyc2FsCiAKKyAgICBkZWYgaW8oc2VsZiwgKmFyZ3MpOgorICAgICAgICB0cmF2ZXJzYWwgPSBzZWxmLmdldF9ncmFwaF90cmF2ZXJzYWwoKQorICAgICAgICB0cmF2ZXJzYWwuYnl0ZWNvZGUuYWRkX3N0ZXAoImlvIiwgKmFyZ3MpCisgICAgICAgIHJldHVybiB0cmF2ZXJzYWwKKwogCiBjbGFzcyBHcmFwaFRyYXZlcnNhbChUcmF2ZXJzYWwpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBncmFwaCwgdHJhdmVyc2FsX3N0cmF0ZWdpZXMsIGJ5dGVjb2RlKToKQEAgLTE5OSw2ICsyMDksMTAgQEAKICAgICAgICAgc2VsZi5ieXRlY29kZS5hZGRfc3RlcCgiY29pbiIsICphcmdzKQogICAgICAgICByZXR1cm4gc2VsZgogCisgICAgZGVmIGNvbm5lY3RlZENvbXBvbmVudChzZWxmLCAqYXJncyk6CisgICAgICAgIHNlbGYuYnl0ZWNvZGUuYWRkX3N0ZXAoImNvbm5lY3RlZENvbXBvbmVudCIsICphcmdzKQorICAgICAgICByZXR1cm4gc2VsZgorCiAgICAgZGVmIGNvbnN0YW50KHNlbGYsICphcmdzKToKICAgICAgICAgc2VsZi5ieXRlY29kZS5hZGRfc3RlcCgiY29uc3RhbnQiLCAqYXJncykKICAgICAgICAgcmV0dXJuIHNlbGYKQEAgLTIxOSw2ICsyMzMsMTAgQEAKICAgICAgICAgc2VsZi5ieXRlY29kZS5hZGRfc3RlcCgiZHJvcCIsICphcmdzKQogICAgICAgICByZXR1cm4gc2VsZgogCisgICAgZGVmIGVsZW1lbnRNYXAoc2VsZiwgKmFyZ3MpOgorICAgICAgICBzZWxmLmJ5dGVjb2RlLmFkZF9zdGVwKCJlbGVtZW50TWFwIiwgKmFyZ3MpCisgICAgICAgIHJldHVybiBzZWxmCisKICAgICBkZWYgZW1pdChzZWxmLCAqYXJncyk6CiAgICAgICAgIHNlbGYuYnl0ZWNvZGUuYWRkX3N0ZXAoImVtaXQiLCAqYXJncykKICAgICAgICAgcmV0dXJuIHNlbGYKQEAgLTI5MSw2ICszMDksMTAgQEAKICAgICAgICAgc2VsZi5ieXRlY29kZS5hZGRfc3RlcCgiaW4iLCAqYXJncykKICAgICAgICAgcmV0dXJuIHNlbGYKIAorICAgIGRlZiBpbmRleChzZWxmLCAqYXJncyk6CisgICAgICAgIHNlbGYuYnl0ZWNvZGUuYWRkX3N0ZXAoImluZGV4IiwgKmFyZ3MpCisgICAgICAgIHJldHVybiBzZWxmCisKICAgICBkZWYgaW5qZWN0KHNlbGYsICphcmdzKToKICAgICAgICAgc2VsZi5ieXRlY29kZS5hZGRfc3RlcCgiaW5qZWN0IiwgKmFyZ3MpCiAgICAgICAgIHJldHVybiBzZWxmCkBAIC00MTksNiArNDQxLDEwIEBACiAgICAgICAgIHNlbGYuYnl0ZWNvZGUuYWRkX3N0ZXAoInJhbmdlIiwgKmFyZ3MpCiAgICAgICAgIHJldHVybiBzZWxmCiAKKyAgICBkZWYgcmVhZChzZWxmLCAqYXJncyk6CisgICAgICAgIHNlbGYuYnl0ZWNvZGUuYWRkX3N0ZXAoInJlYWQiLCAqYXJncykKKyAgICAgICAgcmV0dXJuIHNlbGYKKwogICAgIGRlZiByZXBlYXQoc2VsZiwgKmFyZ3MpOgogICAgICAgICBzZWxmLmJ5dGVjb2RlLmFkZF9zdGVwKCJyZXBlYXQiLCAqYXJncykKICAgICAgICAgcmV0dXJuIHNlbGYKQEAgLTQzNSw2ICs0NjEsMTAgQEAKICAgICAgICAgc2VsZi5ieXRlY29kZS5hZGRfc3RlcCgic2VsZWN0IiwgKmFyZ3MpCiAgICAgICAgIHJldHVybiBzZWxmCiAKKyAgICBkZWYgc2hvcnRlc3RQYXRoKHNlbGYsICphcmdzKToKKyAgICAgICAgc2VsZi5ieXRlY29kZS5hZGRfc3RlcCgic2hvcnRlc3RQYXRoIiwgKmFyZ3MpCisgICAgICAgIHJldHVybiBzZWxmCisKICAgICBkZWYgc2lkZUVmZmVjdChzZWxmLCAqYXJncyk6CiAgICAgICAgIHNlbGYuYnl0ZWNvZGUuYWRkX3N0ZXAoInNpZGVFZmZlY3QiLCAqYXJncykKICAgICAgICAgcmV0dXJuIHNlbGYKQEAgLTUxNSw2ICs1NDUsMTQgQEAKICAgICAgICAgc2VsZi5ieXRlY29kZS5hZGRfc3RlcCgid2hlcmUiLCAqYXJncykKICAgICAgICAgcmV0dXJuIHNlbGYKIAorICAgIGRlZiB3aXRoXyhzZWxmLCAqYXJncyk6CisgICAgICAgIHNlbGYuYnl0ZWNvZGUuYWRkX3N0ZXAoIndpdGgiLCAqYXJncykKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiB3cml0ZShzZWxmLCAqYXJncyk6CisgICAgICAgIHNlbGYuYnl0ZWNvZGUuYWRkX3N0ZXAoIndyaXRlIiwgKmFyZ3MpCisgICAgICAgIHJldHVybiBzZWxmCisKICAgICAjIERlcHJlY2F0ZWQgLSBwcmVmZXIgdGhlIHVuZGVyc2NvcmUgc3VmZml4ZWQgdmVyc2lvbnMgZS5nIGZpbHRlcl8oKQogCiAgICAgZGVmIGZpbHRlcihzZWxmLCAqYXJncyk6CkBAIC02MzQsNiArNjcyLDEwIEBACiAgICAgICAgIHJldHVybiBjbHMuZ3JhcGhfdHJhdmVyc2FsKE5vbmUsIE5vbmUsIEJ5dGVjb2RlKCkpLmRyb3AoKmFyZ3MpCiAKICAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZWxlbWVudE1hcChjbHMsICphcmdzKToKKyAgICAgICAgcmV0dXJuIGNscy5ncmFwaF90cmF2ZXJzYWwoTm9uZSwgTm9uZSwgQnl0ZWNvZGUoKSkuZWxlbWVudE1hcCgqYXJncykKKworICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBlbWl0KGNscywgKmFyZ3MpOgogICAgICAgICByZXR1cm4gY2xzLmdyYXBoX3RyYXZlcnNhbChOb25lLCBOb25lLCBCeXRlY29kZSgpKS5lbWl0KCphcmdzKQogCkBAIC03MDIsNiArNzQ0LDEwIEBACiAgICAgICAgIHJldHVybiBjbHMuZ3JhcGhfdHJhdmVyc2FsKE5vbmUsIE5vbmUsIEJ5dGVjb2RlKCkpLmluXygqYXJncykKIAogICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBpbmRleChjbHMsICphcmdzKToKKyAgICAgICAgcmV0dXJuIGNscy5ncmFwaF90cmF2ZXJzYWwoTm9uZSwgTm9uZSwgQnl0ZWNvZGUoKSkuaW5kZXgoKmFyZ3MpCisKKyAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgaW5qZWN0KGNscywgKmFyZ3MpOgogICAgICAgICByZXR1cm4gY2xzLmdyYXBoX3RyYXZlcnNhbChOb25lLCBOb25lLCBCeXRlY29kZSgpKS5pbmplY3QoKmFyZ3MpCiAKQEAgLTEwMTIsNiArMTA1OCwxMCBAQAogICAgIHJldHVybiBfXy5kcm9wKCphcmdzKQogCiAKK2RlZiBlbGVtZW50TWFwKCphcmdzKToKKyAgICByZXR1cm4gX18uZWxlbWVudE1hcCgqYXJncykKKworCiBkZWYgZW1pdCgqYXJncyk6CiAgICAgcmV0dXJuIF9fLmVtaXQoKmFyZ3MpCiAKQEAgLTEwODAsNiArMTEzMCwxMCBAQAogICAgIHJldHVybiBfXy5pbl8oKmFyZ3MpCiAKIAorZGVmIGluZGV4KCphcmdzKToKKyAgICByZXR1cm4gX18uaW5kZXgoKmFyZ3MpCisKKwogZGVmIGluamVjdCgqYXJncyk6CiAgICAgcmV0dXJuIF9fLmluamVjdCgqYXJncykKIApAQCAtMTM1MCw2ICsxNDA0LDggQEAKIAogc3RhdGljcy5hZGRfc3RhdGljKCdkcm9wJywgZHJvcCkKIAorc3RhdGljcy5hZGRfc3RhdGljKCdlbGVtZW50TWFwJywgZWxlbWVudE1hcCkKKwogc3RhdGljcy5hZGRfc3RhdGljKCdlbWl0JywgZW1pdCkKIAogc3RhdGljcy5hZGRfc3RhdGljKCdmaWx0ZXJfJywgZmlsdGVyXykKQEAgLTEzODQsNiArMTQ0MCw4IEBACiAKIHN0YXRpY3MuYWRkX3N0YXRpYygnaW5fJywgaW5fKQogCitzdGF0aWNzLmFkZF9zdGF0aWMoJ2luZGV4JywgaW5kZXgpCisKIHN0YXRpY3MuYWRkX3N0YXRpYygnaW5qZWN0JywgaW5qZWN0KQogCiBzdGF0aWNzLmFkZF9zdGF0aWMoJ2lzXycsIGlzXykKZGlmZiAtLWdpdCBhL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi9ncmVtbGluX3B5dGhvbi9wcm9jZXNzL3N0cmF0ZWdpZXMucHkgYi9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vZ3JlbWxpbl9weXRob24vcHJvY2Vzcy9zdHJhdGVnaWVzLnB5CmluZGV4IDljMmE2ZGYuLjg5ODhiNzkgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi9ncmVtbGluX3B5dGhvbi9wcm9jZXNzL3N0cmF0ZWdpZXMucHkKKysrIGIvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL2dyZW1saW5fcHl0aG9uL3Byb2Nlc3Mvc3RyYXRlZ2llcy5weQpAQCAtMjgsMjYgKzI4LDMxIEBACiAKIGNsYXNzIENvbm5lY3RpdmVTdHJhdGVneShUcmF2ZXJzYWxTdHJhdGVneSk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBUcmF2ZXJzYWxTdHJhdGVneS5fX2luaXRfXyhzZWxmKQorICAgICAgICBUcmF2ZXJzYWxTdHJhdGVneS5fX2luaXRfXyhzZWxmLCBmcWNuPSJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uQ29ubmVjdGl2ZVN0cmF0ZWd5IikKIAogCiBjbGFzcyBFbGVtZW50SWRTdHJhdGVneShUcmF2ZXJzYWxTdHJhdGVneSk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBUcmF2ZXJzYWxTdHJhdGVneS5fX2luaXRfXyhzZWxmKQorICAgICAgICBUcmF2ZXJzYWxTdHJhdGVneS5fX2luaXRfXyhzZWxmLCBmcWNuPSJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uRWxlbWVudElkU3RyYXRlZ3kiKQogCiAKICMgRXZlbnRTdHJhdGVneSBkb2Vzbid0IG1ha2Ugc2Vuc2Ugb3V0c2lkZSBKVk0gdHJhdmVyc2FsIG1hY2hpbmUKIAogY2xhc3MgSGFsdGVkVHJhdmVyc2VyU3RyYXRlZ3koVHJhdmVyc2FsU3RyYXRlZ3kpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBoYWx0ZWRfdHJhdmVyc2VyX2ZhY3Rvcnk9Tm9uZSk6Ci0gICAgICAgIFRyYXZlcnNhbFN0cmF0ZWd5Ll9faW5pdF9fKHNlbGYpCisgICAgICAgIFRyYXZlcnNhbFN0cmF0ZWd5Ll9faW5pdF9fKHNlbGYsIGZxY249Im9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuZGVjb3JhdGlvbi5IYWx0ZWRUcmF2ZXJzZXJTdHJhdGVneSIpCiAgICAgICAgIGlmIGhhbHRlZF90cmF2ZXJzZXJfZmFjdG9yeSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHNlbGYuY29uZmlndXJhdGlvblsiaGFsdGVkVHJhdmVyc2VyRmFjdG9yeSJdID0gaGFsdGVkX3RyYXZlcnNlcl9mYWN0b3J5CiAKIAorY2xhc3MgT3B0aW9uc1N0cmF0ZWd5KFRyYXZlcnNhbFN0cmF0ZWd5KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucz1Ob25lKToKKyAgICAgICAgVHJhdmVyc2FsU3RyYXRlZ3kuX19pbml0X18oc2VsZiwgY29uZmlndXJhdGlvbj1vcHRpb25zLCBmcWNuPSJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uT3B0aW9uc1N0cmF0ZWd5IikKKworCiBjbGFzcyBQYXJ0aXRpb25TdHJhdGVneShUcmF2ZXJzYWxTdHJhdGVneSk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnRpdGlvbl9rZXk9Tm9uZSwgd3JpdGVfcGFydGl0aW9uPU5vbmUsIHJlYWRfcGFydGl0aW9ucz1Ob25lLCBpbmNsdWRlX21ldGFfcHJvcGVydGllcz1Ob25lKToKLSAgICAgICAgVHJhdmVyc2FsU3RyYXRlZ3kuX19pbml0X18oc2VsZikKKyAgICAgICAgVHJhdmVyc2FsU3RyYXRlZ3kuX19pbml0X18oc2VsZiwgZnFjbj0ib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLlBhcnRpdGlvblN0cmF0ZWd5IikKICAgICAgICAgaWYgcGFydGl0aW9uX2tleSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHNlbGYuY29uZmlndXJhdGlvblsicGFydGl0aW9uS2V5Il0gPSBwYXJ0aXRpb25fa2V5CiAgICAgICAgIGlmIHdyaXRlX3BhcnRpdGlvbiBpcyBub3QgTm9uZToKQEAgLTU5LDggKzY0LDkgQEAKIAogCiBjbGFzcyBTdWJncmFwaFN0cmF0ZWd5KFRyYXZlcnNhbFN0cmF0ZWd5KToKKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2ZXJ0aWNlcz1Ob25lLCBlZGdlcz1Ob25lLCB2ZXJ0ZXhfcHJvcGVydGllcz1Ob25lKToKLSAgICAgICAgVHJhdmVyc2FsU3RyYXRlZ3kuX19pbml0X18oc2VsZikKKyAgICAgICAgVHJhdmVyc2FsU3RyYXRlZ3kuX19pbml0X18oc2VsZiwgZnFjbj0ib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLlN1YmdyYXBoU3RyYXRlZ3kiKQogICAgICAgICBpZiB2ZXJ0aWNlcyBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHNlbGYuY29uZmlndXJhdGlvblsidmVydGljZXMiXSA9IHZlcnRpY2VzCiAgICAgICAgIGlmIGVkZ2VzIGlzIG5vdCBOb25lOgpAQCAtNzIsNyArNzgsNyBAQAogY2xhc3MgVmVydGV4UHJvZ3JhbVN0cmF0ZWd5KFRyYXZlcnNhbFN0cmF0ZWd5KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgZ3JhcGhfY29tcHV0ZXI9Tm9uZSwgd29ya2Vycz1Ob25lLCBwZXJzaXN0PU5vbmUsIHJlc3VsdD1Ob25lLCB2ZXJ0aWNlcz1Ob25lLCBlZGdlcz1Ob25lLAogICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uPU5vbmUpOgotICAgICAgICBUcmF2ZXJzYWxTdHJhdGVneS5fX2luaXRfXyhzZWxmKQorICAgICAgICBUcmF2ZXJzYWxTdHJhdGVneS5fX2luaXRfXyhzZWxmLCBmcWNuPSJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uVmVydGV4UHJvZ3JhbVN0cmF0ZWd5IikKICAgICAgICAgaWYgZ3JhcGhfY29tcHV0ZXIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBzZWxmLmNvbmZpZ3VyYXRpb25bImdyYXBoQ29tcHV0ZXIiXSA9IGdyYXBoX2NvbXB1dGVyCiAgICAgICAgIGlmIHdvcmtlcnMgaXMgbm90IE5vbmU6CkBAIC05NSw3ICsxMDEsNyBAQAogCiBjbGFzcyBNYXRjaEFsZ29yaXRobVN0cmF0ZWd5KFRyYXZlcnNhbFN0cmF0ZWd5KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgbWF0Y2hfYWxnb3JpdGhtPU5vbmUpOgotICAgICAgICBUcmF2ZXJzYWxTdHJhdGVneS5fX2luaXRfXyhzZWxmKQorICAgICAgICBUcmF2ZXJzYWxTdHJhdGVneS5fX2luaXRfXyhzZWxmLCBmcWNuPSJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmZpbmFsaXphdGlvbi5NYXRjaEFsZ29yaXRobVN0cmF0ZWd5IikKICAgICAgICAgaWYgbWF0Y2hfYWxnb3JpdGhtIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uWyJtYXRjaEFsZ29yaXRobSJdID0gbWF0Y2hfYWxnb3JpdGhtCiAKQEAgLTEwNiw3MiArMTEyLDczIEBACiAKIGNsYXNzIEFkamFjZW50VG9JbmNpZGVudFN0cmF0ZWd5KFRyYXZlcnNhbFN0cmF0ZWd5KToKICAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIFRyYXZlcnNhbFN0cmF0ZWd5Ll9faW5pdF9fKHNlbGYpCisgICAgICAgIFRyYXZlcnNhbFN0cmF0ZWd5Ll9faW5pdF9fKHNlbGYsIGZxY249Im9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kub3B0aW1pemF0aW9uLkFkamFjZW50VG9JbmNpZGVudFN0cmF0ZWd5IikKIAogCiBjbGFzcyBGaWx0ZXJSYW5raW5nU3RyYXRlZ3koVHJhdmVyc2FsU3RyYXRlZ3kpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgVHJhdmVyc2FsU3RyYXRlZ3kuX19pbml0X18oc2VsZikKKyAgICAgICAgVHJhdmVyc2FsU3RyYXRlZ3kuX19pbml0X18oc2VsZiwgZnFjbj0ib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5vcHRpbWl6YXRpb24uRmlsdGVyUmFua2luZ1N0cmF0ZWd5IikKIAogCiBjbGFzcyBJZGVudGl0eVJlbW92YWxTdHJhdGVneShUcmF2ZXJzYWxTdHJhdGVneSk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBUcmF2ZXJzYWxTdHJhdGVneS5fX2luaXRfXyhzZWxmKQorICAgICAgICBUcmF2ZXJzYWxTdHJhdGVneS5fX2luaXRfXyhzZWxmLCBmcWNuPSJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5Lm9wdGltaXphdGlvbi5JZGVudGl0eVJlbW92YWxTdHJhdGVneSIpCiAKIAogY2xhc3MgSW5jaWRlbnRUb0FkamFjZW50U3RyYXRlZ3koVHJhdmVyc2FsU3RyYXRlZ3kpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgVHJhdmVyc2FsU3RyYXRlZ3kuX19pbml0X18oc2VsZikKKyAgICAgICAgVHJhdmVyc2FsU3RyYXRlZ3kuX19pbml0X18oc2VsZiwgZnFjbj0ib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5vcHRpbWl6YXRpb24uSW5jaWRlbnRUb0FkamFjZW50U3RyYXRlZ3kiKQogCiAKIGNsYXNzIElubGluZUZpbHRlclN0cmF0ZWd5KFRyYXZlcnNhbFN0cmF0ZWd5KToKICAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIFRyYXZlcnNhbFN0cmF0ZWd5Ll9faW5pdF9fKHNlbGYpCisgICAgICAgIFRyYXZlcnNhbFN0cmF0ZWd5Ll9faW5pdF9fKHNlbGYsIGZxY249Im9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kub3B0aW1pemF0aW9uLklubGluZUZpbHRlclN0cmF0ZWd5IikKIAogCiBjbGFzcyBMYXp5QmFycmllclN0cmF0ZWd5KFRyYXZlcnNhbFN0cmF0ZWd5KToKICAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIFRyYXZlcnNhbFN0cmF0ZWd5Ll9faW5pdF9fKHNlbGYpCisgICAgICAgIFRyYXZlcnNhbFN0cmF0ZWd5Ll9faW5pdF9fKHNlbGYsIGZxY249Im9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kub3B0aW1pemF0aW9uLkxhenlCYXJyaWVyU3RyYXRlZ3kiKQogCiAKIGNsYXNzIE1hdGNoUHJlZGljYXRlU3RyYXRlZ3koVHJhdmVyc2FsU3RyYXRlZ3kpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgVHJhdmVyc2FsU3RyYXRlZ3kuX19pbml0X18oc2VsZikKKyAgICAgICAgVHJhdmVyc2FsU3RyYXRlZ3kuX19pbml0X18oc2VsZiwgZnFjbj0ib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5vcHRpbWl6YXRpb24uTWF0Y2hQcmVkaWNhdGVTdHJhdGVneSIpCiAKIAogY2xhc3MgT3JkZXJMaW1pdFN0cmF0ZWd5KFRyYXZlcnNhbFN0cmF0ZWd5KToKICAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIFRyYXZlcnNhbFN0cmF0ZWd5Ll9faW5pdF9fKHNlbGYpCisgICAgICAgIFRyYXZlcnNhbFN0cmF0ZWd5Ll9faW5pdF9fKHNlbGYsIGZxY249Im9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kub3B0aW1pemF0aW9uLk9yZGVyTGltaXRTdHJhdGVneSIpCiAKIAogY2xhc3MgUGF0aFByb2Nlc3NvclN0cmF0ZWd5KFRyYXZlcnNhbFN0cmF0ZWd5KToKICAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIFRyYXZlcnNhbFN0cmF0ZWd5Ll9faW5pdF9fKHNlbGYpCisgICAgICAgIFRyYXZlcnNhbFN0cmF0ZWd5Ll9faW5pdF9fKHNlbGYsIGZxY249Im9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kub3B0aW1pemF0aW9uLlBhdGhQcm9jZXNzb3JTdHJhdGVneSIpCiAKIAogY2xhc3MgUGF0aFJldHJhY3Rpb25TdHJhdGVneShUcmF2ZXJzYWxTdHJhdGVneSk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBUcmF2ZXJzYWxTdHJhdGVneS5fX2luaXRfXyhzZWxmKQorICAgICAgICBUcmF2ZXJzYWxTdHJhdGVneS5fX2luaXRfXyhzZWxmLCBmcWNuPSJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5Lm9wdGltaXphdGlvbi5QYXRoUmV0cmFjdGlvblN0cmF0ZWd5IikKIAogCiBjbGFzcyBDb3VudFN0cmF0ZWd5KFRyYXZlcnNhbFN0cmF0ZWd5KToKICAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIFRyYXZlcnNhbFN0cmF0ZWd5Ll9faW5pdF9fKHNlbGYpCisgICAgICAgIFRyYXZlcnNhbFN0cmF0ZWd5Ll9faW5pdF9fKHNlbGYsIGZxY249Im9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kub3B0aW1pemF0aW9uLkNvdW50U3RyYXRlZ3kiKQogCiAKIGNsYXNzIFJlcGVhdFVucm9sbFN0cmF0ZWd5KFRyYXZlcnNhbFN0cmF0ZWd5KToKICAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIFRyYXZlcnNhbFN0cmF0ZWd5Ll9faW5pdF9fKHNlbGYpCisgICAgICAgIFRyYXZlcnNhbFN0cmF0ZWd5Ll9faW5pdF9fKHNlbGYsIGZxY249Im9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kub3B0aW1pemF0aW9uLlJlcGVhdFVucm9sbFN0cmF0ZWd5IikKIAogCiBjbGFzcyBHcmFwaEZpbHRlclN0cmF0ZWd5KFRyYXZlcnNhbFN0cmF0ZWd5KToKICAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIFRyYXZlcnNhbFN0cmF0ZWd5Ll9faW5pdF9fKHNlbGYpCisgICAgICAgIFRyYXZlcnNhbFN0cmF0ZWd5Ll9faW5pdF9fKHNlbGYsIGZxY249Im9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwuc3RyYXRlZ3kub3B0aW1pemF0aW9uLkdyYXBoRmlsdGVyU3RyYXRlZ3kiKQorCiAKIAogY2xhc3MgRWFybHlMaW1pdFN0cmF0ZWd5KFRyYXZlcnNhbFN0cmF0ZWd5KToKICAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIFRyYXZlcnNhbFN0cmF0ZWd5Ll9faW5pdF9fKHNlbGYpCisgICAgICAgIFRyYXZlcnNhbFN0cmF0ZWd5Ll9faW5pdF9fKHNlbGYsIGZxY249Im9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kub3B0aW1pemF0aW9uLkVhcmx5TGltaXRTdHJhdGVneSIpCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBWRVJJRklDQVRJT04gU1RSQVRFR0lFUyAjCkBAIC0xODAsMjQgKzE4NywyNCBAQAogCiBjbGFzcyBMYW1iZGFSZXN0cmljdGlvblN0cmF0ZWd5KFRyYXZlcnNhbFN0cmF0ZWd5KToKICAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIFRyYXZlcnNhbFN0cmF0ZWd5Ll9faW5pdF9fKHNlbGYpCisgICAgICAgIFRyYXZlcnNhbFN0cmF0ZWd5Ll9faW5pdF9fKHNlbGYsIGZxY249Im9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kudmVyaWZpY2F0aW9uLkxhbWJkYVJlc3RyaWN0aW9uU3RyYXRlZ3kiKQogCiAKIGNsYXNzIFJlYWRPbmx5U3RyYXRlZ3koVHJhdmVyc2FsU3RyYXRlZ3kpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgVHJhdmVyc2FsU3RyYXRlZ3kuX19pbml0X18oc2VsZikKKyAgICAgICAgVHJhdmVyc2FsU3RyYXRlZ3kuX19pbml0X18oc2VsZiwgZnFjbj0ib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS52ZXJpZmljYXRpb24uUmVhZE9ubHlTdHJhdGVneSIpCiAKIAogY2xhc3MgRWRnZUxhYmVsVmVyaWZpY2F0aW9uU3RyYXRlZ3koVHJhdmVyc2FsU3RyYXRlZ3kpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dfd2FybmluZz1GYWxzZSwgdGhyb3dfZXhjZXB0aW9uPUZhbHNlKToKLSAgICAgICAgVHJhdmVyc2FsU3RyYXRlZ3kuX19pbml0X18oc2VsZikKKyAgICAgICAgVHJhdmVyc2FsU3RyYXRlZ3kuX19pbml0X18oc2VsZiwgZnFjbj0ib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS52ZXJpZmljYXRpb24uRWRnZUxhYmVsVmVyaWZpY2F0aW9uU3RyYXRlZ3kiKQogICAgICAgICBzZWxmLmNvbmZpZ3VyYXRpb25bImxvZ1dhcm5pbmciXSA9IGxvZ193YXJuaW5nCiAgICAgICAgIHNlbGYuY29uZmlndXJhdGlvblsidGhyb3dFeGNlcHRpb24iXSA9IHRocm93X2V4Y2VwdGlvbgogCiAKIGNsYXNzIFJlc2VydmVkS2V5c1ZlcmlmaWNhdGlvblN0cmF0ZWd5KFRyYXZlcnNhbFN0cmF0ZWd5KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nX3dhcm5pbmc9RmFsc2UsIHRocm93X2V4Y2VwdGlvbj1GYWxzZSwga2V5cz1bImlkIiwgImxhYmVsIl0pOgotICAgICAgICBUcmF2ZXJzYWxTdHJhdGVneS5fX2luaXRfXyhzZWxmKQorICAgICAgICBUcmF2ZXJzYWxTdHJhdGVneS5fX2luaXRfXyhzZWxmLCBmcWNuPSJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LnZlcmlmaWNhdGlvbi5SZXNlcnZlZEtleXNWZXJpZmljYXRpb25TdHJhdGVneSIpCiAgICAgICAgIHNlbGYuY29uZmlndXJhdGlvblsibG9nV2FybmluZyJdID0gbG9nX3dhcm5pbmcKICAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uWyJ0aHJvd0V4Y2VwdGlvbiJdID0gdGhyb3dfZXhjZXB0aW9uCiAgICAgICAgIHNlbGYuY29uZmlndXJhdGlvblsia2V5cyJdID0ga2V5cwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL2dyZW1saW5fcHl0aG9uL3Byb2Nlc3MvdHJhdmVyc2FsLnB5IGIvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL2dyZW1saW5fcHl0aG9uL3Byb2Nlc3MvdHJhdmVyc2FsLnB5CmluZGV4IGI5NDI0MDkuLmZmMGQxMjEgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi9ncmVtbGluX3B5dGhvbi9wcm9jZXNzL3RyYXZlcnNhbC5weQorKysgYi9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vZ3JlbWxpbl9weXRob24vcHJvY2Vzcy90cmF2ZXJzYWwucHkKQEAgLTMzNSwzMSArMzM1LDE4NSBAQAogICAgIHJldHVybiBQLndpdGhvdXQoKmFyZ3MpCiAKIAotc3RhdGljcy5hZGRfc3RhdGljKCdiZXR3ZWVuJyxiZXR3ZWVuKQorc3RhdGljcy5hZGRfc3RhdGljKCdiZXR3ZWVuJywgYmV0d2VlbikKIAotc3RhdGljcy5hZGRfc3RhdGljKCdlcScsZXEpCitzdGF0aWNzLmFkZF9zdGF0aWMoJ2VxJywgZXEpCiAKLXN0YXRpY3MuYWRkX3N0YXRpYygnZ3QnLGd0KQorc3RhdGljcy5hZGRfc3RhdGljKCdndCcsIGd0KQogCi1zdGF0aWNzLmFkZF9zdGF0aWMoJ2d0ZScsZ3RlKQorc3RhdGljcy5hZGRfc3RhdGljKCdndGUnLCBndGUpCiAKLXN0YXRpY3MuYWRkX3N0YXRpYygnaW5zaWRlJyxpbnNpZGUpCitzdGF0aWNzLmFkZF9zdGF0aWMoJ2luc2lkZScsIGluc2lkZSkKIAotc3RhdGljcy5hZGRfc3RhdGljKCdsdCcsbHQpCitzdGF0aWNzLmFkZF9zdGF0aWMoJ2x0JywgbHQpCiAKLXN0YXRpY3MuYWRkX3N0YXRpYygnbHRlJyxsdGUpCitzdGF0aWNzLmFkZF9zdGF0aWMoJ2x0ZScsIGx0ZSkKIAotc3RhdGljcy5hZGRfc3RhdGljKCduZXEnLG5lcSkKK3N0YXRpY3MuYWRkX3N0YXRpYygnbmVxJywgbmVxKQogCi1zdGF0aWNzLmFkZF9zdGF0aWMoJ25vdF8nLG5vdF8pCitzdGF0aWNzLmFkZF9zdGF0aWMoJ25vdF8nLCBub3RfKQogCi1zdGF0aWNzLmFkZF9zdGF0aWMoJ291dHNpZGUnLG91dHNpZGUpCitzdGF0aWNzLmFkZF9zdGF0aWMoJ291dHNpZGUnLCBvdXRzaWRlKQogCi1zdGF0aWNzLmFkZF9zdGF0aWMoJ3Rlc3QnLHRlc3QpCitzdGF0aWNzLmFkZF9zdGF0aWMoJ3Rlc3QnLCB0ZXN0KQogCi1zdGF0aWNzLmFkZF9zdGF0aWMoJ3dpdGhpbicsd2l0aGluKQorc3RhdGljcy5hZGRfc3RhdGljKCd3aXRoaW4nLCB3aXRoaW4pCiAKLXN0YXRpY3MuYWRkX3N0YXRpYygnd2l0aG91dCcsd2l0aG91dCkKK3N0YXRpY3MuYWRkX3N0YXRpYygnd2l0aG91dCcsIHdpdGhvdXQpCisKKworY2xhc3MgVGV4dFAoUCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wZXJhdG9yLCB2YWx1ZSwgb3RoZXI9Tm9uZSk6CisgICAgICAgIFAuX19pbml0X18oc2VsZiwgb3BlcmF0b3IsIHZhbHVlLCBvdGhlcikKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgY29udGFpbmluZygqYXJncyk6CisgICAgICAgIHJldHVybiBUZXh0UCgiY29udGFpbmluZyIsICphcmdzKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBlbmRpbmdXaXRoKCphcmdzKToKKyAgICAgICAgcmV0dXJuIFRleHRQKCJlbmRpbmdXaXRoIiwgKmFyZ3MpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIG5vdENvbnRhaW5pbmcoKmFyZ3MpOgorICAgICAgICByZXR1cm4gVGV4dFAoIm5vdENvbnRhaW5pbmciLCAqYXJncykKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgbm90RW5kaW5nV2l0aCgqYXJncyk6CisgICAgICAgIHJldHVybiBUZXh0UCgibm90RW5kaW5nV2l0aCIsICphcmdzKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBub3RTdGFydGluZ1dpdGgoKmFyZ3MpOgorICAgICAgICByZXR1cm4gVGV4dFAoIm5vdFN0YXJ0aW5nV2l0aCIsICphcmdzKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBzdGFydGluZ1dpdGgoKmFyZ3MpOgorICAgICAgICByZXR1cm4gVGV4dFAoInN0YXJ0aW5nV2l0aCIsICphcmdzKQorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBpc2luc3RhbmNlKG90aGVyLCBzZWxmLl9fY2xhc3NfXykgYW5kIHNlbGYub3BlcmF0b3IgPT0gb3RoZXIub3BlcmF0b3IgYW5kIHNlbGYudmFsdWUgPT0gb3RoZXIudmFsdWUgYW5kIHNlbGYub3RoZXIgPT0gb3RoZXIub3RoZXIKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYub3BlcmF0b3IgKyAiKCIgKyBzdHIoc2VsZi52YWx1ZSkgKyAiKSIgaWYgc2VsZi5vdGhlciBpcyBOb25lIGVsc2Ugc2VsZi5vcGVyYXRvciArICIoIiArIHN0cihzZWxmLnZhbHVlKSArICIsIiArIHN0cihzZWxmLm90aGVyKSArICIpIgorCisKK2RlZiBjb250YWluaW5nKCphcmdzKToKKyAgICByZXR1cm4gVGV4dFAuY29udGFpbmluZygqYXJncykKKworCitkZWYgZW5kaW5nV2l0aCgqYXJncyk6CisgICAgcmV0dXJuIFRleHRQLmVuZGluZ1dpdGgoKmFyZ3MpCisKKworZGVmIG5vdENvbnRhaW5pbmcoKmFyZ3MpOgorICAgIHJldHVybiBUZXh0UC5ub3RDb250YWluaW5nKCphcmdzKQorCisKK2RlZiBub3RFbmRpbmdXaXRoKCphcmdzKToKKyAgICByZXR1cm4gVGV4dFAubm90RW5kaW5nV2l0aCgqYXJncykKKworCitkZWYgbm90U3RhcnRpbmdXaXRoKCphcmdzKToKKyAgICByZXR1cm4gVGV4dFAubm90U3RhcnRpbmdXaXRoKCphcmdzKQorCisKK2RlZiBzdGFydGluZ1dpdGgoKmFyZ3MpOgorICAgIHJldHVybiBUZXh0UC5zdGFydGluZ1dpdGgoKmFyZ3MpCisKKworc3RhdGljcy5hZGRfc3RhdGljKCdjb250YWluaW5nJywgY29udGFpbmluZykKKworc3RhdGljcy5hZGRfc3RhdGljKCdlbmRpbmdXaXRoJywgZW5kaW5nV2l0aCkKKworc3RhdGljcy5hZGRfc3RhdGljKCdub3RDb250YWluaW5nJywgbm90Q29udGFpbmluZykKKworc3RhdGljcy5hZGRfc3RhdGljKCdub3RFbmRpbmdXaXRoJywgbm90RW5kaW5nV2l0aCkKKworc3RhdGljcy5hZGRfc3RhdGljKCdub3RTdGFydGluZ1dpdGgnLCBub3RTdGFydGluZ1dpdGgpCisKK3N0YXRpY3MuYWRkX3N0YXRpYygnc3RhcnRpbmdXaXRoJywgc3RhcnRpbmdXaXRoKQorCisKKworCisnJycKK0lPCisnJycKKworCitjbGFzcyBJTyhvYmplY3QpOgorCisgICAgZ3JhcGhtbCA9ICJncmFwaG1sIgorCisgICAgZ3JhcGhzb24gPSAiZ3JhcGhzb24iCisKKyAgICBncnlvID0gImdyeW8iCisKKyAgICByZWFkZXIgPSAifnRpbmtlcnBvcC5pby5yZWFkZXIiCisKKyAgICByZWdpc3RyeSA9ICJ+dGlua2VycG9wLmlvLnJlZ2lzdHJ5IgorCisgICAgd3JpdGVyID0gIn50aW5rZXJwb3AuaW8ud3JpdGVyIgorCisKKycnJworQ29ubmVjdGVkQ29tcG9uZW50CisnJycKKworCitjbGFzcyBDb25uZWN0ZWRDb21wb25lbnQob2JqZWN0KToKKworICAgIGNvbXBvbmVudCA9ICJncmVtbGluLmNvbm5lY3RlZENvbXBvbmVudFZlcnRleFByb2dyYW0uY29tcG9uZW50IgorCisgICAgZWRnZXMgPSAifnRpbmtlcnBvcC5jb25uZWN0ZWRDb21wb25lbnQuZWRnZXMiCisKKyAgICBwcm9wZXJ0eU5hbWUgPSAifnRpbmtlcnBvcC5jb25uZWN0ZWRDb21wb25lbnQucHJvcGVydHlOYW1lIgorCisKKycnJworU2hvcnRlc3RQYXRoCisnJycKKworCitjbGFzcyBTaG9ydGVzdFBhdGgob2JqZWN0KToKKworICAgIGRpc3RhbmNlID0gIn50aW5rZXJwb3Auc2hvcnRlc3RQYXRoLmRpc3RhbmNlIgorCisgICAgZWRnZXMgPSAifnRpbmtlcnBvcC5zaG9ydGVzdFBhdGguZWRnZXMiCisKKyAgICBpbmNsdWRlRWRnZXMgPSAifnRpbmtlcnBvcC5zaG9ydGVzdFBhdGguaW5jbHVkZUVkZ2VzIgorCisgICAgbWF4RGlzdGFuY2UgPSAifnRpbmtlcnBvcC5zaG9ydGVzdFBhdGgubWF4RGlzdGFuY2UiCisKKyAgICB0YXJnZXQgPSAifnRpbmtlcnBvcC5zaG9ydGVzdFBhdGgudGFyZ2V0IgorCisKKycnJworUGFnZVJhbmsKKycnJworCisKK2NsYXNzIFBhZ2VSYW5rKG9iamVjdCk6CisKKyAgICBlZGdlcyA9ICJ+dGlua2VycG9wLnBhZ2VSYW5rLmVkZ2VzIgorCisgICAgcHJvcGVydHlOYW1lID0gIn50aW5rZXJwb3AucGFnZVJhbmsucHJvcGVydHlOYW1lIgorCisgICAgdGltZXMgPSAifnRpbmtlcnBvcC5wYWdlUmFuay50aW1lcyIKKworCisnJycKK1BlZXJQcmVzc3VyZQorJycnCisKKworY2xhc3MgUGVlclByZXNzdXJlKG9iamVjdCk6CisKKyAgICBlZGdlcyA9ICJ+dGlua2VycG9wLnBlZXJQcmVzc3VyZS5lZGdlcyIKKworICAgIHByb3BlcnR5TmFtZSA9ICJ+dGlua2VycG9wLnBlZXJQcmVzc3VyZS5wcm9wZXJ0eU5hbWUiCisKKyAgICB0aW1lcyA9ICJ+dGlua2VycG9wLnBlZXJQcmVzc3VyZS50aW1lcyIKIAogCiAnJycKQEAgLTQyNyw3ICs1ODEsOCBAQAogCiAKIGNsYXNzIFRyYXZlcnNhbFN0cmF0ZWd5KG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0cmF0ZWd5X25hbWU9Tm9uZSwgY29uZmlndXJhdGlvbj1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc3RyYXRlZ3lfbmFtZT1Ob25lLCBjb25maWd1cmF0aW9uPU5vbmUsIGZxY249Tm9uZSk6CisgICAgICAgIHNlbGYuZnFjbiA9IGZxY24KICAgICAgICAgc2VsZi5zdHJhdGVneV9uYW1lID0gdHlwZShzZWxmKS5fX25hbWVfXyBpZiBzdHJhdGVneV9uYW1lIGlzIE5vbmUgZWxzZSBzdHJhdGVneV9uYW1lCiAgICAgICAgIHNlbGYuY29uZmlndXJhdGlvbiA9IHt9IGlmIGNvbmZpZ3VyYXRpb24gaXMgTm9uZSBlbHNlIGNvbmZpZ3VyYXRpb24KIApAQCAtNTEyLDkgKzY2Nyw5IEBACiAgICAgICAgICAgICBmb3IgaXRlbSBpbiBhcmc6CiAgICAgICAgICAgICAgICAgbmV3U2V0LmFkZChzZWxmLl9fY29udmVydEFyZ3VtZW50KGl0ZW0pKQogICAgICAgICAgICAgcmV0dXJuIG5ld1NldAotICAgICAgICBlbGlmIGlzaW5zdGFuY2UoYXJnLCB0dXBsZSkgYW5kIDIgPT0gbGVuKGFyZykgYW5kIGlzaW5zdGFuY2UoYXJnWzBdLCBzdHIpOgotICAgICAgICAgICAgc2VsZi5iaW5kaW5nc1thcmdbMF1dID0gYXJnWzFdCi0gICAgICAgICAgICByZXR1cm4gQmluZGluZyhhcmdbMF0sc2VsZi5fX2NvbnZlcnRBcmd1bWVudChhcmdbMV0pKQorICAgICAgICBlbGlmIGlzaW5zdGFuY2UoYXJnLCBCaW5kaW5nKToKKyAgICAgICAgICAgIHNlbGYuYmluZGluZ3NbYXJnLmtleV0gPSBhcmcudmFsdWUKKyAgICAgICAgICAgIHJldHVybiBCaW5kaW5nKGFyZy5rZXksIHNlbGYuX19jb252ZXJ0QXJndW1lbnQoYXJnLnZhbHVlKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBhcmcKIApAQCAtNTI5LDE0ICs2ODQsMTYgQEAKIAogCiBjbGFzcyBCaW5kaW5ncyhvYmplY3QpOgotICAgIGRlZiBvZihzZWxmLGtleSx2YWx1ZSk6CisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIG9mKGtleSwgdmFsdWUpOgogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShrZXksIHN0cik6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIktleSBtdXN0IGJlIHN0ciIpCi0gICAgICAgIHJldHVybiAoa2V5LCB2YWx1ZSkKKyAgICAgICAgcmV0dXJuIEJpbmRpbmcoa2V5LCB2YWx1ZSkKIAogCiBjbGFzcyBCaW5kaW5nKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsa2V5LHZhbHVlKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwga2V5LCB2YWx1ZSk6CiAgICAgICAgIHNlbGYua2V5ID0ga2V5CiAgICAgICAgIHNlbGYudmFsdWUgPSB2YWx1ZQogCkBAIC01NDgsMyArNzA1LDMyIEBACiAKICAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgIHJldHVybiAiYmluZGluZ1siICsgc2VsZi5rZXkgKyAiPSIgKyBzdHIoc2VsZi52YWx1ZSkgKyAiXSIKKworCisnJycKK1dJVEggT1BUSU9OUworJycnCisKKworY2xhc3MgV2l0aE9wdGlvbnMob2JqZWN0KToKKworICAgIHRva2VucyA9ICJ+dGlua2VycG9wLnZhbHVlTWFwLnRva2VucyIKKworICAgIG5vbmUgPSAwCisKKyAgICBpZHMgPSAxCisKKyAgICBsYWJlbHMgPSAyCisKKyAgICBrZXlzID0gNAorCisgICAgdmFsdWVzID0gOAorCisgICAgYWxsID0gMTUKKworICAgIGluZGV4ZXIgPSAifnRpbmtlcnBvcC5pbmRleC5pbmRleGVyIgorCisgICAgbGlzdCA9IDAKKworICAgIG1hcCA9IDEKKwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL2dyZW1saW5fcHl0aG9uL3N0YXRpY3MucHkgYi9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vZ3JlbWxpbl9weXRob24vc3RhdGljcy5weQppbmRleCA3M2Y3ZTk0Li4yMjFlMTY2IDEwMDY0NAotLS0gYS9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vZ3JlbWxpbl9weXRob24vc3RhdGljcy5weQorKysgYi9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vZ3JlbWxpbl9weXRob24vc3RhdGljcy5weQpAQCAtNDMsMTkgKzQzLDIwIEBACiAgICAgZnJvbSB0eXBlcyBpbXBvcnQgVHlwZVR5cGUKICAgICBmcm9tIHR5cGVzIGltcG9ydCBMaXN0VHlwZQogICAgIGZyb20gdHlwZXMgaW1wb3J0IERpY3RUeXBlCisgICAgZnJvbSB0eXBlcyBpbXBvcnQgVHlwZVR5cGUKIAogCiBjbGFzcyB0aW1lc3RhbXAoZmxvYXQpOgogICAgICIiIgogICAgIEluIFB5dGhvbiBhIHRpbWVzdGFtcCBpcyBzaW1wbHkgYSBmbG9hdC4gVGhpcyBkdW1teSBjbGFzcyAoc2ltaWxhciB0byBsb25nKSwgYWxsb3dzIHVzZXJzIHRvIHdyYXAgYSBmbG9hdAotICAgIGluIGEgR0xWIHNjcmlwdCB0byBtYWtlIHN1cmUgdGhlIHZhbHVlIGlzIHNlcmlhbGl6ZWQgYXMgYSBHcmFwaFNPTiB0aW1lc3RhbXAuCisgICAgaW4gYSBHTFYgc2NyaXB0IHRvIG1ha2Ugc3VyZSB0aGUgdmFsdWUgaXMgc2VyaWFsaXplZCBhcyBhIEdyZW1saW4gdGltZXN0YW1wLgogICAgICIiIgogICAgIHBhc3MKIAogCiBjbGFzcyBTaW5nbGVCeXRlKGludCk6CiAgICAgIiIiCi0gICAgUHJvdmlkZXMgYSB3YXkgdG8gcGFzcyBhIHNpbmdsZSBieXRlIHZpYSBHcmFwaFNPTi4KKyAgICBQcm92aWRlcyBhIHdheSB0byBwYXNzIGEgc2luZ2xlIGJ5dGUgdmlhIEdyZW1saW4uCiAgICAgIiIiCiAgICAgZGVmIF9fbmV3X18oY2xzLCBiKToKICAgICAgICAgaWYgLTEyOCA8PSBiIDwgMTI4OgpAQCAtNjYsNyArNjcsNyBAQAogCiBjbGFzcyBTaW5nbGVDaGFyKHN0cik6CiAgICAgIiIiCi0gICAgUHJvdmlkZXMgYSB3YXkgdG8gcGFzcyBhIHNpbmdsZSBjaGFyYWN0ZXIgdmlhIEdyYXBoU09OLgorICAgIFByb3ZpZGVzIGEgd2F5IHRvIHBhc3MgYSBzaW5nbGUgY2hhcmFjdGVyIHZpYSBHcmVtbGluLgogICAgICIiIgogICAgIGRlZiBfX25ld19fKGNscywgYyk6CiAgICAgICAgIGlmIGxlbihiKSA9PSAxOgpAQCAtNzUsNiArNzYsMTQgQEAKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInN0cmluZyBtdXN0IGNvbnRhaW4gYSBzaW5nbGUgY2hhcmFjdGVyIikKIAogCitjbGFzcyBHcmVtbGluVHlwZShvYmplY3QpOgorICAgICIiIgorICAgIFByb3ZpZGVzIGEgd2F5IHRvIHJlcHJlc2VudCBhICJKYXZhIGNsYXNzIiBmb3IgR3JlbWxpbi4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZ3JlbWxpbl90eXBlKToKKyAgICAgICAgc2VsZi5ncmVtbGluX3R5cGUgPSBncmVtbGluX3R5cGUKKyAgICAgICAgCisKIHN0YXRpY01ldGhvZHMgPSB7fQogc3RhdGljRW51bXMgPSB7fQogZGVmYXVsdF9sYW1iZGFfbGFuZ3VhZ2UgPSAiZ3JlbWxpbi1weXRob24iCmRpZmYgLS1naXQgYS9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vZ3JlbWxpbl9weXRob24vc3RydWN0dXJlL2dyYXBoLnB5IGIvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL2dyZW1saW5fcHl0aG9uL3N0cnVjdHVyZS9ncmFwaC5weQppbmRleCBiNDUwZWMxLi43NTFmMGJiIDEwMDY0NAotLS0gYS9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vZ3JlbWxpbl9weXRob24vc3RydWN0dXJlL2dyYXBoLnB5CisrKyBiL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi9ncmVtbGluX3B5dGhvbi9zdHJ1Y3R1cmUvZ3JhcGgucHkKQEAgLTM5LDcgKzM5LDcgQEAKICAgICAgICAgcmV0dXJuIHRyYXZlcnNhbF9zb3VyY2VfY2xhc3Moc2VsZiwgVHJhdmVyc2FsU3RyYXRlZ2llcy5nbG9iYWxfY2FjaGVbc2VsZi5fX2NsYXNzX19dKQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gImdyYXBoW2VtcHR5XSIKKyAgICAgICAgcmV0dXJuICJncmFwaFtdIgogCiAKIGNsYXNzIEVsZW1lbnQob2JqZWN0KToKQEAgLTEwOCw3ICsxMDgsNyBAQAogICAgICAgICBzZWxmLm9iamVjdHMgPSBvYmplY3RzCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBzdHIoc2VsZi5vYmplY3RzKQorICAgICAgICByZXR1cm4gInBhdGhbIiArICIsICIuam9pbihtYXAoc3RyLCBzZWxmLm9iamVjdHMpKSArICJdIgogCiAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIHJldHVybiBpc2luc3RhbmNlKG90aGVyLCBzZWxmLl9fY2xhc3NfXykgYW5kIHNlbGYub2JqZWN0cyA9PSBvdGhlci5vYmplY3RzIGFuZCBzZWxmLmxhYmVscyA9PSBvdGhlci5sYWJlbHMKZGlmZiAtLWdpdCBhL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi9ncmVtbGluX3B5dGhvbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnlWMS5weSBiL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi9ncmVtbGluX3B5dGhvbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnlWMS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDZlZTEyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL2dyZW1saW5fcHl0aG9uL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeVYxLnB5CkBAIC0wLDAgKzEsMTA4MyBAQAorIiIiCitMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCitvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKK2Rpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCityZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCit0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCit3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKK2h0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCitVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCitzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCitLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKK3NwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKK3VuZGVyIHRoZSBMaWNlbnNlLgorIiIiCisKK2ltcG9ydCBzaXgKK2ltcG9ydCBkYXRldGltZQoraW1wb3J0IGNhbGVuZGFyCitpbXBvcnQgdXVpZAoraW1wb3J0IG1hdGgKK2ltcG9ydCBpbworaW1wb3J0IHN0cnVjdAorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKK2ltcG9ydCBsb2dnaW5nCisKK2Zyb20gc3RydWN0IGltcG9ydCBwYWNrLCB1bnBhY2sKK2Zyb20gYWVudW0gaW1wb3J0IEVudW0KK2Zyb20gZGF0ZXRpbWUgaW1wb3J0IHRpbWVkZWx0YQorZnJvbSBncmVtbGluX3B5dGhvbiBpbXBvcnQgc3RhdGljcworZnJvbSBncmVtbGluX3B5dGhvbi5zdGF0aWNzIGltcG9ydCBGbG9hdFR5cGUsIEZ1bmN0aW9uVHlwZSwgSW50VHlwZSwgTG9uZ1R5cGUsIFR5cGVUeXBlLCBEaWN0VHlwZSwgTGlzdFR5cGUsIFNldFR5cGUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2luZ2xlQnl0ZSwgQnl0ZUJ1ZmZlclR5cGUsIEdyZW1saW5UeXBlLCBTaW5nbGVDaGFyCitmcm9tIGdyZW1saW5fcHl0aG9uLnByb2Nlc3MudHJhdmVyc2FsIGltcG9ydCBCYXJyaWVyLCBCaW5kaW5nLCBCeXRlY29kZSwgQ2FyZGluYWxpdHksIENvbHVtbiwgRGlyZWN0aW9uLCBPcGVyYXRvciwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXIsIFBpY2ssIFBvcCwgUCwgU2NvcGUsIFRleHRQLCBUcmF2ZXJzYWwsIFRyYXZlcnNlciwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhdmVyc2FsU3RyYXRlZ3ksIFQKK2Zyb20gZ3JlbWxpbl9weXRob24ucHJvY2Vzcy5ncmFwaF90cmF2ZXJzYWwgaW1wb3J0IEdyYXBoVHJhdmVyc2FsCitmcm9tIGdyZW1saW5fcHl0aG9uLnN0cnVjdHVyZS5ncmFwaCBpbXBvcnQgR3JhcGgsIEVkZ2UsIFByb3BlcnR5LCBWZXJ0ZXgsIFZlcnRleFByb3BlcnR5LCBQYXRoCisKK2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQorCisjIFdoZW4gd2UgZmFsbCBiYWNrIHRvIGEgc3VwZXJjbGFzcydzIHNlcmlhbGl6ZXIsIHdlIGl0ZXJhdGUgb3ZlciB0aGlzIG1hcC4KKyMgV2Ugd2FudCB0aGF0IGl0ZXJhdGlvbiBvcmRlciB0byBiZSBjb25zaXN0ZW50LCBzbyB3ZSB1c2UgYW4gT3JkZXJlZERpY3QsCisjIG5vdCBhIGRpY3QuCitfc2VyaWFsaXplcnMgPSBPcmRlcmVkRGljdCgpCitfZGVzZXJpYWxpemVycyA9IHt9CisKKworY2xhc3MgRGF0YVR5cGUoRW51bSk6CisgICAgbnVsbCA9IDB4ZmUKKyAgICBpbnQgPSAweDAxCisgICAgbG9uZyA9IDB4MDIKKyAgICBzdHJpbmcgPSAweDAzCisgICAgZGF0ZSA9IDB4MDQKKyAgICB0aW1lc3RhbXAgPSAweDA1CisgICAgY2xhenogPSAweDA2CisgICAgZG91YmxlID0gMHgwNworICAgIGZsb2F0ID0gMHgwOAorICAgIGxpc3QgPSAweDA5CisgICAgbWFwID0gMHgwYQorICAgIHNldCA9IDB4MGIKKyAgICB1dWlkID0gMHgwYworICAgIGVkZ2UgPSAweDBkCisgICAgcGF0aCA9IDB4MGUKKyAgICBwcm9wZXJ0eSA9IDB4MGYKKyAgICBncmFwaCA9IDB4MTAgICAgICAgICAgICAgICAgICAjIG5vdCBzdXBwb3J0ZWQgLSBubyBncmFwaCBvYmplY3QgaW4gcHl0aG9uIHlldAorICAgIHZlcnRleCA9IDB4MTEKKyAgICB2ZXJ0ZXhwcm9wZXJ0eSA9IDB4MTIKKyAgICBiYXJyaWVyID0gMHgxMworICAgIGJpbmRpbmcgPSAweDE0CisgICAgYnl0ZWNvZGUgPSAweDE1CisgICAgY2FyZGluYWxpdHkgPSAweDE2CisgICAgY29sdW1uID0gMHgxNworICAgIGRpcmVjdGlvbiA9IDB4MTgKKyAgICBvcGVyYXRvciA9IDB4MTkKKyAgICBvcmRlciA9IDB4MWEKKyAgICBwaWNrID0gMHgxYgorICAgIHBvcCA9IDB4MWMKKyAgICBsYW1iZGFfID0gMHgxZAorICAgIHAgPSAweDFlCisgICAgc2NvcGUgPSAweDFmCisgICAgdCA9IDB4MjAKKyAgICB0cmF2ZXJzZXIgPSAweDIxCisgICAgYmlnZGVjaW1hbCA9IDB4MjIgICAgICAgICAgICAgIyB0b2RvCisgICAgYmlnaW50ZWdlciA9IDB4MjMgICAgICAgICAgICAgIyB0b2RvCisgICAgYnl0ZSA9IDB4MjQKKyAgICBieXRlYnVmZmVyID0gMHgyNQorICAgIHNob3J0ID0gMHgyNiAgICAgICAgICAgICAgICAgICMgdG9kbworICAgIGJvb2xlYW4gPSAweDI3CisgICAgdGV4dHAgPSAweDI4CisgICAgdHJhdmVyc2Fsc3RyYXRlZ3kgPSAweDI5CisgICAgYnVsa3NldCA9IDB4MmEKKyAgICB0cmVlID0gMHgyYiAgICAgICAgICAgICAgICAgICAjIG5vdCBzdXBwb3J0ZWQgLSBubyB0cmVlIG9iamVjdCBpbiBQeXRob24geWV0CisgICAgbWV0cmljcyA9IDB4MmMKKyAgICB0cmF2ZXJzYWxtZXRyaWNzID0gMHgyZAorICAgIGNoYXIgPSAweDgwCisgICAgZHVyYXRpb24gPSAweDgxCisgICAgaW5ldGFkZHJlc3MgPSAweDgyICAgICAgICAgICAgIyB0b2RvCisgICAgaW5zdGFudCA9IDB4ODMgICAgICAgICAgICAgICAgIyB0b2RvCisgICAgbG9jYWxkYXRlID0gMHg4NCAgICAgICAgICAgICAgIyB0b2RvCisgICAgbG9jYWxkYXRldGltZSA9IDB4ODUgICAgICAgICAgIyB0b2RvCisgICAgbG9jYWx0aW1lID0gMHg4NiAgICAgICAgICAgICAgIyB0b2RvCisgICAgbW9udGhkYXkgPSAweDg3ICAgICAgICAgICAgICAgIyB0b2RvCisgICAgb2Zmc2V0ZGF0ZXRpbWUgPSAweDg4ICAgICAgICAgIyB0b2RvCisgICAgb2Zmc2V0dGltZSA9IDB4ODkgICAgICAgICAgICAgIyB0b2RvCisgICAgcGVyaW9kID0gMHg4YSAgICAgICAgICAgICAgICAgIyB0b2RvCisgICAgeWVhciA9IDB4OGIgICAgICAgICAgICAgICAgICAgIyB0b2RvCisgICAgeWVhcm1vbnRoID0gMHg4YyAgICAgICAgICAgICAgIyB0b2RvCisgICAgem9uZWRhdGV0aW1lID0gMHg4ZCAgICAgICAgICAgIyB0b2RvCisgICAgem9uZW9mZnNldCA9IDB4OGUgICAgICAgICAgICAgIyB0b2RvCisgICAgY3VzdG9tID0gMHgwMCAgICAgICAgICAgICAgICAgIyB0b2RvCisKKworTlVMTF9CWVRFUyA9IFtEYXRhVHlwZS5udWxsLnZhbHVlLCAweDAxXQorCisKK2RlZiBfbWFrZV9wYWNrZXIoZm9ybWF0X3N0cmluZyk6CisgICAgcGFja2VyID0gc3RydWN0LlN0cnVjdChmb3JtYXRfc3RyaW5nKQorICAgIHBhY2sgPSBwYWNrZXIucGFjaworICAgIHVucGFjayA9IGxhbWJkYSBzOiBwYWNrZXIudW5wYWNrKHMpWzBdCisgICAgcmV0dXJuIHBhY2ssIHVucGFjaworCisKK2ludDY0X3BhY2ssIGludDY0X3VucGFjayA9IF9tYWtlX3BhY2tlcignPnEnKQoraW50MzJfcGFjaywgaW50MzJfdW5wYWNrID0gX21ha2VfcGFja2VyKCc+aScpCitpbnQ4X3BhY2ssIGludDhfdW5wYWNrID0gX21ha2VfcGFja2VyKCc+YicpCit1aW50NjRfcGFjaywgdWludDY0X3VucGFjayA9IF9tYWtlX3BhY2tlcignPlEnKQordWludDhfcGFjaywgdWludDhfdW5wYWNrID0gX21ha2VfcGFja2VyKCc+QicpCitmbG9hdF9wYWNrLCBmbG9hdF91bnBhY2sgPSBfbWFrZV9wYWNrZXIoJz5mJykKK2RvdWJsZV9wYWNrLCBkb3VibGVfdW5wYWNrID0gX21ha2VfcGFja2VyKCc+ZCcpCisKKworY2xhc3MgR3JhcGhCaW5hcnlUeXBlVHlwZSh0eXBlKToKKyAgICBkZWYgX19uZXdfXyhtY3MsIG5hbWUsIGJhc2VzLCBkY3QpOgorICAgICAgICBjbHMgPSBzdXBlcihHcmFwaEJpbmFyeVR5cGVUeXBlLCBtY3MpLl9fbmV3X18obWNzLCBuYW1lLCBiYXNlcywgZGN0KQorICAgICAgICBpZiBub3QgbmFtZS5zdGFydHN3aXRoKCdfJyk6CisgICAgICAgICAgICBpZiBjbHMucHl0aG9uX3R5cGU6CisgICAgICAgICAgICAgICAgX3NlcmlhbGl6ZXJzW2Nscy5weXRob25fdHlwZV0gPSBjbHMKKyAgICAgICAgICAgIGlmIGNscy5ncmFwaGJpbmFyeV90eXBlOgorICAgICAgICAgICAgICAgIF9kZXNlcmlhbGl6ZXJzW2Nscy5ncmFwaGJpbmFyeV90eXBlXSA9IGNscworICAgICAgICByZXR1cm4gY2xzCisKKworY2xhc3MgR3JhcGhCaW5hcnlXcml0ZXIob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc2VyaWFsaXplcl9tYXA9Tm9uZSk6CisgICAgICAgIHNlbGYuc2VyaWFsaXplcnMgPSBfc2VyaWFsaXplcnMuY29weSgpCisgICAgICAgIGlmIHNlcmlhbGl6ZXJfbWFwOgorICAgICAgICAgICAgc2VsZi5zZXJpYWxpemVycy51cGRhdGUoc2VyaWFsaXplcl9tYXApCisKKyAgICBkZWYgd3JpdGVPYmplY3Qoc2VsZiwgb2JqZWN0RGF0YSk6CisgICAgICAgIHJldHVybiBzZWxmLnRvRGljdChvYmplY3REYXRhKQorCisgICAgZGVmIHRvRGljdChzZWxmLCBvYmosIHRvX2V4dGVuZD1Ob25lKToKKyAgICAgICAgaWYgdG9fZXh0ZW5kIGlzIE5vbmU6CisgICAgICAgICAgICB0b19leHRlbmQgPSBieXRlYXJyYXkoKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHQgPSB0eXBlKG9iaikKKyAgICAgICAgICAgIAorICAgICAgICAgICAgIyBjb2VyY2UgdW5pY29kZSB0byBzdHIgc28gdGhlIHNlcmlhbGl6ZXIgd2lsbCBiZSBmb3VuZCBwcm9wZXJseSBpbiB0aGUgY2FjaGUuLi5iZXR0ZXIgd2F5PworICAgICAgICAgICAgaWYgbm90IHNpeC5QWTM6CisgICAgICAgICAgICAgICAgdCA9IHN0ciBpZiBpc2luc3RhbmNlKG9iaiwgdW5pY29kZSkgZWxzZSB0CisgICAgICAgICAgICByZXR1cm4gc2VsZi5zZXJpYWxpemVyc1t0XS5kaWN0aWZ5KG9iaiwgc2VsZiwgdG9fZXh0ZW5kKQorICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICBmb3Iga2V5LCBzZXJpYWxpemVyIGluIHNlbGYuc2VyaWFsaXplcnMuaXRlbXMoKToKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG9iaiwga2V5KToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZXIuZGljdGlmeShvYmosIHNlbGYsIHRvX2V4dGVuZCkKKworICAgICAgICBpZiBpc2luc3RhbmNlKG9iaiwgZGljdCk6CisgICAgICAgICAgICByZXR1cm4gZGljdCgoc2VsZi50b0RpY3QoaywgdG9fZXh0ZW5kKSwgc2VsZi50b0RpY3QodiwgdG9fZXh0ZW5kKSkgZm9yIGssIHYgaW4gb2JqLml0ZW1zKCkpCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShvYmosIHNldCk6CisgICAgICAgICAgICByZXR1cm4gc2V0KFtzZWxmLnRvRGljdChvLCB0b19leHRlbmQpIGZvciBvIGluIG9ial0pCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShvYmosIGxpc3QpOgorICAgICAgICAgICAgcmV0dXJuIFtzZWxmLnRvRGljdChvLCB0b19leHRlbmQpIGZvciBvIGluIG9ial0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBvYmoKKworCitjbGFzcyBHcmFwaEJpbmFyeVJlYWRlcihvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkZXNlcmlhbGl6ZXJfbWFwPU5vbmUpOgorICAgICAgICBzZWxmLmRlc2VyaWFsaXplcnMgPSBfZGVzZXJpYWxpemVycy5jb3B5KCkKKyAgICAgICAgaWYgZGVzZXJpYWxpemVyX21hcDoKKyAgICAgICAgICAgIHNlbGYuZGVzZXJpYWxpemVycy51cGRhdGUoZGVzZXJpYWxpemVyX21hcCkKKworICAgIGRlZiByZWFkT2JqZWN0KHNlbGYsIGIpOgorICAgICAgICBpZiBpc2luc3RhbmNlKGIsIGJ5dGVhcnJheSk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi50b09iamVjdChpby5CeXRlc0lPKGIpKQorICAgICAgICBlbGlmIGlzaW5zdGFuY2UoYiwgaW8uQnVmZmVyZWRJT0Jhc2UpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYudG9PYmplY3QoYikKKworICAgIGRlZiB0b09iamVjdChzZWxmLCBidWZmLCBkYXRhX3R5cGU9Tm9uZSwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIGlmIGRhdGFfdHlwZSBpcyBOb25lOgorICAgICAgICAgICAgYnQgPSB1aW50OF91bnBhY2soYnVmZi5yZWFkKDEpKQorICAgICAgICAgICAgaWYgYnQgPT0gRGF0YVR5cGUubnVsbC52YWx1ZToKKyAgICAgICAgICAgICAgICBpZiBudWxsYWJsZToKKyAgICAgICAgICAgICAgICAgICAgYnVmZi5yZWFkKDEpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmRlc2VyaWFsaXplcnNbRGF0YVR5cGUoYnQpXS5vYmplY3RpZnkoYnVmZiwgc2VsZiwgbnVsbGFibGUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5kZXNlcmlhbGl6ZXJzW2RhdGFfdHlwZV0ub2JqZWN0aWZ5KGJ1ZmYsIHNlbGYsIG51bGxhYmxlKQorCisKK0BzaXguYWRkX21ldGFjbGFzcyhHcmFwaEJpbmFyeVR5cGVUeXBlKQorY2xhc3MgX0dyYXBoQmluYXJ5VHlwZUlPKG9iamVjdCk6CisgICAgcHl0aG9uX3R5cGUgPSBOb25lCisgICAgZ3JhcGhiaW5hcnlfdHlwZSA9IE5vbmUKKworICAgIHN5bWJvbE1hcCA9IHsiZ2xvYmFsXyI6ICJnbG9iYWwiLCAiYXNfIjogImFzIiwgImluXyI6ICJpbiIsICJhbmRfIjogImFuZCIsCisgICAgICAgICAgICAgICAgICJvcl8iOiAib3IiLCAiaXNfIjogImlzIiwgIm5vdF8iOiAibm90IiwgImZyb21fIjogImZyb20iLAorICAgICAgICAgICAgICAgICAic2V0XyI6ICJzZXQiLCAibGlzdF8iOiAibGlzdCIsICJhbGxfIjogImFsbCIsICJ3aXRoXyI6ICJ3aXRoIiwKKyAgICAgICAgICAgICAgICAgImZpbHRlcl8iOiAiZmlsdGVyIiwgImlkXyI6ICJpZCIsICJtYXhfIjogIm1heCIsICJtaW5fIjogIm1pbiIsICJzdW1fIjogInN1bSJ9CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcHJlZml4X2J5dGVzKGNscywgZ3JhcGhiaW5fdHlwZSwgYXNfdmFsdWU9RmFsc2UsIG51bGxhYmxlPVRydWUsIHRvX2V4dGVuZD1Ob25lKToKKyAgICAgICAgaWYgdG9fZXh0ZW5kIGlzIE5vbmU6CisgICAgICAgICAgICB0b19leHRlbmQgPSBieXRlYXJyYXkoKQorCisgICAgICAgIGlmIG5vdCBhc192YWx1ZToKKyAgICAgICAgICAgIHRvX2V4dGVuZCArPSB1aW50OF9wYWNrKGdyYXBoYmluX3R5cGUudmFsdWUpCisKKyAgICAgICAgaWYgbnVsbGFibGU6CisgICAgICAgICAgICB0b19leHRlbmQgKz0gaW50OF9wYWNrKDApCisKKyAgICAgICAgcmV0dXJuIHRvX2V4dGVuZAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHJlYWRfaW50KGNscywgYnVmZik6CisgICAgICAgIHJldHVybiBpbnQzMl91bnBhY2soYnVmZi5yZWFkKDQpKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHVubWFuZ2xlX2tleXdvcmQoY2xzLCBzeW1ib2wpOgorICAgICAgICByZXR1cm4gY2xzLnN5bWJvbE1hcC5nZXQoc3ltYm9sLCBzeW1ib2wpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgaXNfbnVsbChjbHMsIGJ1ZmYsIHJlYWRlciwgZWxzZV9vcHQsIG51bGxhYmxlPVRydWUpOgorICAgICAgICByZXR1cm4gTm9uZSBpZiBudWxsYWJsZSBhbmQgYnVmZi5yZWFkKDEpWzBdID09IDB4MDEgZWxzZSBlbHNlX29wdChidWZmLCByZWFkZXIpCisKKyAgICBkZWYgZGljdGlmeShzZWxmLCBvYmosIHdyaXRlciwgdG9fZXh0ZW5kLCBhc192YWx1ZT1GYWxzZSwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoKQorCisgICAgZGVmIG9iamVjdGlmeShzZWxmLCBkLCByZWFkZXIsIG51bGxhYmxlPVRydWUpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCkKKyAgICAgICAgCisKK2NsYXNzIExvbmdJTyhfR3JhcGhCaW5hcnlUeXBlSU8pOgorCisgICAgcHl0aG9uX3R5cGUgPSBMb25nVHlwZQorICAgIGdyYXBoYmluYXJ5X3R5cGUgPSBEYXRhVHlwZS5sb25nCisgICAgYnl0ZV9mb3JtYXRfcGFjayA9IGludDY0X3BhY2sKKyAgICBieXRlX2Zvcm1hdF91bnBhY2sgPSBpbnQ2NF91bnBhY2sKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBkaWN0aWZ5KGNscywgb2JqLCB3cml0ZXIsIHRvX2V4dGVuZCwgYXNfdmFsdWU9RmFsc2UsIG51bGxhYmxlPVRydWUpOgorICAgICAgICBpZiBvYmogPCAtOTIyMzM3MjAzNjg1NDc3NTgwOCBvciBvYmogPiA5MjIzMzcyMDM2ODU0Nzc1ODA3OgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJUT0RPOiBkb24ndCBmb3JnZXQgYmlnaW50IikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNscy5wcmVmaXhfYnl0ZXMoY2xzLmdyYXBoYmluYXJ5X3R5cGUsIGFzX3ZhbHVlLCBudWxsYWJsZSwgdG9fZXh0ZW5kKQorICAgICAgICAgICAgdG9fZXh0ZW5kLmV4dGVuZChjbHMuYnl0ZV9mb3JtYXRfcGFjayhvYmopKQorICAgICAgICAgICAgcmV0dXJuIHRvX2V4dGVuZAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIG9iamVjdGlmeShjbHMsIGJ1ZmYsIHJlYWRlciwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgICAgICByZXR1cm4gY2xzLmlzX251bGwoYnVmZiwgcmVhZGVyLCBsYW1iZGEgYiwgcjogaW50NjRfdW5wYWNrKGJ1ZmYucmVhZCg4KSksIG51bGxhYmxlKQorCisKK2NsYXNzIEludElPKExvbmdJTyk6CisKKyAgICBweXRob25fdHlwZSA9IEludFR5cGUKKyAgICBncmFwaGJpbmFyeV90eXBlID0gRGF0YVR5cGUuaW50CisgICAgYnl0ZV9mb3JtYXRfcGFjayA9IGludDMyX3BhY2sKKyAgICBieXRlX2Zvcm1hdF91bnBhY2sgPSBpbnQzMl91bnBhY2sKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBvYmplY3RpZnkoY2xzLCBidWZmLCByZWFkZXIsIG51bGxhYmxlPVRydWUpOgorICAgICAgICByZXR1cm4gY2xzLmlzX251bGwoYnVmZiwgcmVhZGVyLCBsYW1iZGEgYiwgcjogY2xzLnJlYWRfaW50KGIpLCBudWxsYWJsZSkKKworCitjbGFzcyBEYXRlSU8oX0dyYXBoQmluYXJ5VHlwZUlPKToKKworICAgIHB5dGhvbl90eXBlID0gZGF0ZXRpbWUuZGF0ZXRpbWUKKyAgICBncmFwaGJpbmFyeV90eXBlID0gRGF0YVR5cGUuZGF0ZQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGRpY3RpZnkoY2xzLCBvYmosIHdyaXRlciwgdG9fZXh0ZW5kLCBhc192YWx1ZT1GYWxzZSwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRpbWVzdGFtcF9zZWNvbmRzID0gY2FsZW5kYXIudGltZWdtKG9iai51dGN0aW1ldHVwbGUoKSkKKyAgICAgICAgICAgIHB0cyA9IHRpbWVzdGFtcF9zZWNvbmRzICogMWUzICsgZ2V0YXR0cihvYmosICdtaWNyb3NlY29uZCcsIDApIC8gMWUzCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHB0cyA9IGNhbGVuZGFyLnRpbWVnbShvYmoudGltZXR1cGxlKCkpICogMWUzCisKKyAgICAgICAgdHMgPSBpbnQocm91bmQocHRzKSkKKyAgICAgICAgY2xzLnByZWZpeF9ieXRlcyhjbHMuZ3JhcGhiaW5hcnlfdHlwZSwgYXNfdmFsdWUsIG51bGxhYmxlLCB0b19leHRlbmQpCisgICAgICAgIHRvX2V4dGVuZC5leHRlbmQoaW50NjRfcGFjayh0cykpCisgICAgICAgIHJldHVybiB0b19leHRlbmQKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBvYmplY3RpZnkoY2xzLCBidWZmLCByZWFkZXIsIG51bGxhYmxlPVRydWUpOgorICAgICAgICByZXR1cm4gY2xzLmlzX251bGwoYnVmZiwgcmVhZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIGIsIHI6IGRhdGV0aW1lLmRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAoaW50NjRfdW5wYWNrKGIucmVhZCg4KSkgLyAxMDAwLjApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbGFibGUpCisKKworIyBCYXNlZCBvbiBjdXJyZW50IGltcGxlbWVudGF0aW9uLCB0aGlzIGNsYXNzIG11c3QgYWx3YXlzIGJlIGRlY2xhcmVkIGJlZm9yZSBGbG9hdElPLgorIyBTZWVtcyBwcmV0dHkgZnJhZ2lsZSBmb3IgZnV0dXJlIG1haW50YWluZXJzLiBNYXliZSBsb29rIGludG8gdGhpcy4KK2NsYXNzIFRpbWVzdGFtcElPKF9HcmFwaEJpbmFyeVR5cGVJTyk6CisgICAgcHl0aG9uX3R5cGUgPSBzdGF0aWNzLnRpbWVzdGFtcAorICAgIGdyYXBoYmluYXJ5X3R5cGUgPSBEYXRhVHlwZS50aW1lc3RhbXAKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBkaWN0aWZ5KGNscywgb2JqLCB3cml0ZXIsIHRvX2V4dGVuZCwgYXNfdmFsdWU9RmFsc2UsIG51bGxhYmxlPVRydWUpOgorICAgICAgICAjIEphdmEgdGltZXN0YW1wIGV4cGVjdHMgbWlsbGlzZWNvbmRzIGludGVnZXIgLSBIYXZlIHRvIHVzZSBpbnQgYmVjYXVzZSBvZiBsZWdhY3kgUHl0aG9uCisgICAgICAgIHRzID0gaW50KHJvdW5kKG9iaiAqIDEwMDApKQorICAgICAgICBjbHMucHJlZml4X2J5dGVzKGNscy5ncmFwaGJpbmFyeV90eXBlLCBhc192YWx1ZSwgbnVsbGFibGUsIHRvX2V4dGVuZCkKKyAgICAgICAgdG9fZXh0ZW5kLmV4dGVuZChpbnQ2NF9wYWNrKHRzKSkKKyAgICAgICAgcmV0dXJuIHRvX2V4dGVuZAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIG9iamVjdGlmeShjbHMsIGJ1ZmYsIHJlYWRlciwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgICMgUHl0aG9uIHRpbWVzdGFtcCBleHBlY3RzIHNlY29uZHMKKyAgICAgICAgcmV0dXJuIGNscy5pc19udWxsKGJ1ZmYsIHJlYWRlciwgbGFtYmRhIGIsIHI6IHN0YXRpY3MudGltZXN0YW1wKGludDY0X3VucGFjayhiLnJlYWQoOCkpIC8gMTAwMC4wKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxhYmxlKQorICAgIAorCitkZWYgX2xvbmdfYml0c190b19kb3VibGUoYml0cyk6CisgICAgcmV0dXJuIHVucGFjaygnZCcsIHBhY2soJ1EnLCBiaXRzKSlbMF0KKworCitOQU4gPSBfbG9uZ19iaXRzX3RvX2RvdWJsZSgweDdmZjgwMDAwMDAwMDAwMDApCitQT1NJVElWRV9JTkZJTklUWSA9IF9sb25nX2JpdHNfdG9fZG91YmxlKDB4N2ZmMDAwMDAwMDAwMDAwMCkKK05FR0FUSVZFX0lORklOSVRZID0gX2xvbmdfYml0c190b19kb3VibGUoMHhGZmYwMDAwMDAwMDAwMDAwKQorCisKK2NsYXNzIEZsb2F0SU8oTG9uZ0lPKToKKworICAgIHB5dGhvbl90eXBlID0gRmxvYXRUeXBlCisgICAgZ3JhcGhiaW5hcnlfdHlwZSA9IERhdGFUeXBlLmZsb2F0CisgICAgZ3JhcGhiaW5hcnlfYmFzZV90eXBlID0gRGF0YVR5cGUuZmxvYXQKKyAgICBieXRlX2Zvcm1hdF9wYWNrID0gZmxvYXRfcGFjaworICAgIGJ5dGVfZm9ybWF0X3VucGFjayA9IGZsb2F0X3VucGFjaworCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGRpY3RpZnkoY2xzLCBvYmosIHdyaXRlciwgdG9fZXh0ZW5kLCBhc192YWx1ZT1GYWxzZSwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIGlmIG1hdGguaXNuYW4ob2JqKToKKyAgICAgICAgICAgIGNscy5wcmVmaXhfYnl0ZXMoY2xzLmdyYXBoYmluYXJ5X3R5cGUsIGFzX3ZhbHVlLCBudWxsYWJsZSwgdG9fZXh0ZW5kKQorICAgICAgICAgICAgdG9fZXh0ZW5kLmV4dGVuZChjbHMuYnl0ZV9mb3JtYXRfcGFjayhOQU4pKQorICAgICAgICBlbGlmIG1hdGguaXNpbmYob2JqKSBhbmQgb2JqID4gMDoKKyAgICAgICAgICAgIGNscy5wcmVmaXhfYnl0ZXMoY2xzLmdyYXBoYmluYXJ5X3R5cGUsIGFzX3ZhbHVlLCBudWxsYWJsZSwgdG9fZXh0ZW5kKQorICAgICAgICAgICAgdG9fZXh0ZW5kLmV4dGVuZChjbHMuYnl0ZV9mb3JtYXRfcGFjayhQT1NJVElWRV9JTkZJTklUWSkpCisgICAgICAgIGVsaWYgbWF0aC5pc2luZihvYmopIGFuZCBvYmogPCAwOgorICAgICAgICAgICAgY2xzLnByZWZpeF9ieXRlcyhjbHMuZ3JhcGhiaW5hcnlfdHlwZSwgYXNfdmFsdWUsIG51bGxhYmxlLCB0b19leHRlbmQpCisgICAgICAgICAgICB0b19leHRlbmQuZXh0ZW5kKGNscy5ieXRlX2Zvcm1hdF9wYWNrKE5FR0FUSVZFX0lORklOSVRZKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNscy5wcmVmaXhfYnl0ZXMoY2xzLmdyYXBoYmluYXJ5X3R5cGUsIGFzX3ZhbHVlLCBudWxsYWJsZSwgdG9fZXh0ZW5kKQorICAgICAgICAgICAgdG9fZXh0ZW5kLmV4dGVuZChjbHMuYnl0ZV9mb3JtYXRfcGFjayhvYmopKQorCisgICAgICAgIHJldHVybiB0b19leHRlbmQKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBvYmplY3RpZnkoY2xzLCBidWZmLCByZWFkZXIsIG51bGxhYmxlPVRydWUpOgorICAgICAgICByZXR1cm4gY2xzLmlzX251bGwoYnVmZiwgcmVhZGVyLCBsYW1iZGEgYiwgcjogZmxvYXRfdW5wYWNrKGIucmVhZCg0KSksIG51bGxhYmxlKQorCisKK2NsYXNzIERvdWJsZUlPKEZsb2F0SU8pOgorICAgICIiIgorICAgIEZsb2F0cyBiYXNpY2FsbHkganVzdCBmYWxsIHRocm91Z2ggdG8gZG91YmxlIHNlcmlhbGl6YXRpb24uCisgICAgIiIiCisKKyAgICBncmFwaGJpbmFyeV90eXBlID0gRGF0YVR5cGUuZG91YmxlCisgICAgZ3JhcGhiaW5hcnlfYmFzZV90eXBlID0gRGF0YVR5cGUuZG91YmxlCisgICAgYnl0ZV9mb3JtYXRfcGFjayA9IGRvdWJsZV9wYWNrCisgICAgYnl0ZV9mb3JtYXRfdW5wYWNrID0gZG91YmxlX3VucGFjaworCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIG9iamVjdGlmeShjbHMsIGJ1ZmYsIHJlYWRlciwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIHJldHVybiBjbHMuaXNfbnVsbChidWZmLCByZWFkZXIsIGxhbWJkYSBiLCByOiBkb3VibGVfdW5wYWNrKGIucmVhZCg4KSksIG51bGxhYmxlKQorCisKK2NsYXNzIENoYXJJTyhfR3JhcGhCaW5hcnlUeXBlSU8pOgorICAgIHB5dGhvbl90eXBlID0gU2luZ2xlQ2hhcgorICAgIGdyYXBoYmluYXJ5X3R5cGUgPSBEYXRhVHlwZS5jaGFyCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZGljdGlmeShjbHMsIG9iaiwgd3JpdGVyLCB0b19leHRlbmQsIGFzX3ZhbHVlPUZhbHNlLCBudWxsYWJsZT1UcnVlKToKKyAgICAgICAgY2xzLnByZWZpeF9ieXRlcyhjbHMuZ3JhcGhiaW5hcnlfdHlwZSwgYXNfdmFsdWUsIG51bGxhYmxlLCB0b19leHRlbmQpCisgICAgICAgIHRvX2V4dGVuZC5leHRlbmQob2JqLmVuY29kZSgidXRmLTgiKSkKKyAgICAgICAgcmV0dXJuIHRvX2V4dGVuZAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIG9iamVjdGlmeShjbHMsIGJ1ZmYsIHJlYWRlciwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIHJldHVybiBjbHMuaXNfbnVsbChidWZmLCByZWFkZXIsIGNscy5fcmVhZF9jaGFyLCBudWxsYWJsZSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfcmVhZF9jaGFyKGNscywgYiwgcik6CisgICAgICAgIG1heF9ieXRlcyA9IDQKKyAgICAgICAgeCA9IGIucmVhZCgxKQorICAgICAgICB3aGlsZSBtYXhfYnl0ZXMgPiAwOgorICAgICAgICAgICAgbWF4X2J5dGVzID0gbWF4X2J5dGVzIC0gMQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJldHVybiB4LmRlY29kZSgidXRmLTgiKQorICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvcjoKKyAgICAgICAgICAgICAgICB4ICs9IGIucmVhZCgxKQorCisKK2NsYXNzIFN0cmluZ0lPKF9HcmFwaEJpbmFyeVR5cGVJTyk6CisKKyAgICBweXRob25fdHlwZSA9IHN0cgorICAgIGdyYXBoYmluYXJ5X3R5cGUgPSBEYXRhVHlwZS5zdHJpbmcKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBkaWN0aWZ5KGNscywgb2JqLCB3cml0ZXIsIHRvX2V4dGVuZCwgYXNfdmFsdWU9RmFsc2UsIG51bGxhYmxlPVRydWUpOgorICAgICAgICBjbHMucHJlZml4X2J5dGVzKGNscy5ncmFwaGJpbmFyeV90eXBlLCBhc192YWx1ZSwgbnVsbGFibGUsIHRvX2V4dGVuZCkKKyAgICAgICAgc3RyX2J5dGVzID0gb2JqLmVuY29kZSgidXRmLTgiKQorICAgICAgICB0b19leHRlbmQgKz0gaW50MzJfcGFjayhsZW4oc3RyX2J5dGVzKSkKKyAgICAgICAgdG9fZXh0ZW5kICs9IHN0cl9ieXRlcworICAgICAgICByZXR1cm4gdG9fZXh0ZW5kCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgb2JqZWN0aWZ5KGNscywgYnVmZiwgcmVhZGVyLCBudWxsYWJsZT1UcnVlKToKKyAgICAgICAgcmV0dXJuIGNscy5pc19udWxsKGJ1ZmYsIHJlYWRlciwgbGFtYmRhIGIsIHI6IGIucmVhZChjbHMucmVhZF9pbnQoYikpLmRlY29kZSgidXRmLTgiKSwgbnVsbGFibGUpCisKKworY2xhc3MgTGlzdElPKF9HcmFwaEJpbmFyeVR5cGVJTyk6CisKKyAgICBweXRob25fdHlwZSA9IGxpc3QKKyAgICBncmFwaGJpbmFyeV90eXBlID0gRGF0YVR5cGUubGlzdAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGRpY3RpZnkoY2xzLCBvYmosIHdyaXRlciwgdG9fZXh0ZW5kLCBhc192YWx1ZT1GYWxzZSwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIGNscy5wcmVmaXhfYnl0ZXMoY2xzLmdyYXBoYmluYXJ5X3R5cGUsIGFzX3ZhbHVlLCBudWxsYWJsZSwgdG9fZXh0ZW5kKQorICAgICAgICB0b19leHRlbmQuZXh0ZW5kKGludDMyX3BhY2sobGVuKG9iaikpKQorICAgICAgICBmb3IgaXRlbSBpbiBvYmo6CisgICAgICAgICAgICB3cml0ZXIudG9EaWN0KGl0ZW0sIHRvX2V4dGVuZCkKKworICAgICAgICByZXR1cm4gdG9fZXh0ZW5kCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgb2JqZWN0aWZ5KGNscywgYnVmZiwgcmVhZGVyLCBudWxsYWJsZT1UcnVlKToKKyAgICAgICAgcmV0dXJuIGNscy5pc19udWxsKGJ1ZmYsIHJlYWRlciwgY2xzLl9yZWFkX2xpc3QsIG51bGxhYmxlKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9yZWFkX2xpc3QoY2xzLCBiLCByKToKKyAgICAgICAgc2l6ZSA9IGNscy5yZWFkX2ludChiKQorICAgICAgICB0aGVfbGlzdCA9IFtdCisgICAgICAgIHdoaWxlIHNpemUgPiAwOgorICAgICAgICAgICAgdGhlX2xpc3QuYXBwZW5kKHIucmVhZE9iamVjdChiKSkKKyAgICAgICAgICAgIHNpemUgPSBzaXplIC0gMQorCisgICAgICAgIHJldHVybiB0aGVfbGlzdAorCisKK2NsYXNzIFNldERlc2VyaWFsaXplcihMaXN0SU8pOgorCisgICAgcHl0aG9uX3R5cGUgPSBTZXRUeXBlCisgICAgZ3JhcGhiaW5hcnlfdHlwZSA9IERhdGFUeXBlLnNldAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIG9iamVjdGlmeShjbHMsIGJ1ZmYsIHJlYWRlciwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIHJldHVybiBzZXQoTGlzdElPLm9iamVjdGlmeShidWZmLCByZWFkZXIsIG51bGxhYmxlKSkKKworCitjbGFzcyBNYXBJTyhfR3JhcGhCaW5hcnlUeXBlSU8pOgorCisgICAgcHl0aG9uX3R5cGUgPSBEaWN0VHlwZQorICAgIGdyYXBoYmluYXJ5X3R5cGUgPSBEYXRhVHlwZS5tYXAKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBkaWN0aWZ5KGNscywgb2JqLCB3cml0ZXIsIHRvX2V4dGVuZCwgYXNfdmFsdWU9RmFsc2UsIG51bGxhYmxlPVRydWUpOgorICAgICAgICBjbHMucHJlZml4X2J5dGVzKGNscy5ncmFwaGJpbmFyeV90eXBlLCBhc192YWx1ZSwgbnVsbGFibGUsIHRvX2V4dGVuZCkKKworICAgICAgICB0b19leHRlbmQuZXh0ZW5kKGludDMyX3BhY2sobGVuKG9iaikpKQorICAgICAgICBmb3IgaywgdiBpbiBvYmouaXRlbXMoKToKKyAgICAgICAgICAgIHdyaXRlci50b0RpY3QoaywgdG9fZXh0ZW5kKQorICAgICAgICAgICAgd3JpdGVyLnRvRGljdCh2LCB0b19leHRlbmQpCisKKyAgICAgICAgcmV0dXJuIHRvX2V4dGVuZAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIG9iamVjdGlmeShjbHMsIGJ1ZmYsIHJlYWRlciwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIHJldHVybiBjbHMuaXNfbnVsbChidWZmLCByZWFkZXIsIGNscy5fcmVhZF9tYXAsIG51bGxhYmxlKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9yZWFkX21hcChjbHMsIGIsIHIpOgorICAgICAgICBzaXplID0gY2xzLnJlYWRfaW50KGIpCisgICAgICAgIHRoZV9kaWN0ID0ge30KKyAgICAgICAgd2hpbGUgc2l6ZSA+IDA6CisgICAgICAgICAgICBrID0gci5yZWFkT2JqZWN0KGIpCisgICAgICAgICAgICB2ID0gci5yZWFkT2JqZWN0KGIpCisgICAgICAgICAgICB0aGVfZGljdFtrXSA9IHYKKyAgICAgICAgICAgIHNpemUgPSBzaXplIC0gMQorCisgICAgICAgIHJldHVybiB0aGVfZGljdAorCisKK2NsYXNzIFV1aWRJTyhfR3JhcGhCaW5hcnlUeXBlSU8pOgorCisgICAgcHl0aG9uX3R5cGUgPSB1dWlkLlVVSUQKKyAgICBncmFwaGJpbmFyeV90eXBlID0gRGF0YVR5cGUudXVpZAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGRpY3RpZnkoY2xzLCBvYmosIHdyaXRlciwgdG9fZXh0ZW5kLCBhc192YWx1ZT1GYWxzZSwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIGNscy5wcmVmaXhfYnl0ZXMoY2xzLmdyYXBoYmluYXJ5X3R5cGUsIGFzX3ZhbHVlLCBudWxsYWJsZSwgdG9fZXh0ZW5kKQorICAgICAgICB0b19leHRlbmQuZXh0ZW5kKG9iai5ieXRlcykKKyAgICAgICAgcmV0dXJuIHRvX2V4dGVuZAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIG9iamVjdGlmeShjbHMsIGJ1ZmYsIHJlYWRlciwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIHJldHVybiBjbHMuaXNfbnVsbChidWZmLCByZWFkZXIsIGxhbWJkYSBiLCByOiB1dWlkLlVVSUQoYnl0ZXM9Yi5yZWFkKDE2KSksIG51bGxhYmxlKQorCisKK2NsYXNzIEVkZ2VJTyhfR3JhcGhCaW5hcnlUeXBlSU8pOgorCisgICAgcHl0aG9uX3R5cGUgPSBFZGdlCisgICAgZ3JhcGhiaW5hcnlfdHlwZSA9IERhdGFUeXBlLmVkZ2UKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBkaWN0aWZ5KGNscywgb2JqLCB3cml0ZXIsIHRvX2V4dGVuZCwgYXNfdmFsdWU9RmFsc2UsIG51bGxhYmxlPVRydWUpOgorICAgICAgICBjbHMucHJlZml4X2J5dGVzKGNscy5ncmFwaGJpbmFyeV90eXBlLCBhc192YWx1ZSwgbnVsbGFibGUsIHRvX2V4dGVuZCkKKworICAgICAgICB3cml0ZXIudG9EaWN0KG9iai5pZCwgdG9fZXh0ZW5kKQorICAgICAgICBTdHJpbmdJTy5kaWN0aWZ5KG9iai5sYWJlbCwgd3JpdGVyLCB0b19leHRlbmQsIFRydWUsIEZhbHNlKQorICAgICAgICB3cml0ZXIudG9EaWN0KG9iai5pblYuaWQsIHRvX2V4dGVuZCkKKyAgICAgICAgU3RyaW5nSU8uZGljdGlmeShvYmouaW5WLmxhYmVsLCB3cml0ZXIsIHRvX2V4dGVuZCwgVHJ1ZSwgRmFsc2UpCisgICAgICAgIHdyaXRlci50b0RpY3Qob2JqLm91dFYuaWQsIHRvX2V4dGVuZCkKKyAgICAgICAgU3RyaW5nSU8uZGljdGlmeShvYmoub3V0Vi5sYWJlbCwgd3JpdGVyLCB0b19leHRlbmQsIFRydWUsIEZhbHNlKQorICAgICAgICB0b19leHRlbmQuZXh0ZW5kKE5VTExfQllURVMpCisgICAgICAgIHRvX2V4dGVuZC5leHRlbmQoTlVMTF9CWVRFUykKKworICAgICAgICByZXR1cm4gdG9fZXh0ZW5kCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgb2JqZWN0aWZ5KGNscywgYnVmZiwgcmVhZGVyLCBudWxsYWJsZT1UcnVlKToKKyAgICAgICAgcmV0dXJuIGNscy5pc19udWxsKGJ1ZmYsIHJlYWRlciwgY2xzLl9yZWFkX2VkZ2UsIG51bGxhYmxlKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9yZWFkX2VkZ2UoY2xzLCBiLCByKToKKyAgICAgICAgZWRnZWlkID0gci5yZWFkT2JqZWN0KGIpCisgICAgICAgIGVkZ2VsYmwgPSByLnRvT2JqZWN0KGIsIERhdGFUeXBlLnN0cmluZywgRmFsc2UpCisgICAgICAgIGludiA9IFZlcnRleChyLnJlYWRPYmplY3QoYiksIHIudG9PYmplY3QoYiwgRGF0YVR5cGUuc3RyaW5nLCBGYWxzZSkpCisgICAgICAgIG91dHYgPSBWZXJ0ZXgoci5yZWFkT2JqZWN0KGIpLCByLnRvT2JqZWN0KGIsIERhdGFUeXBlLnN0cmluZywgRmFsc2UpKQorICAgICAgICBlZGdlID0gRWRnZShlZGdlaWQsIG91dHYsIGVkZ2VsYmwsIGludikKKyAgICAgICAgYi5yZWFkKDQpCisgICAgICAgIHJldHVybiBlZGdlCisKKworY2xhc3MgUGF0aElPKF9HcmFwaEJpbmFyeVR5cGVJTyk6CisKKyAgICBweXRob25fdHlwZSA9IFBhdGgKKyAgICBncmFwaGJpbmFyeV90eXBlID0gRGF0YVR5cGUucGF0aAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGRpY3RpZnkoY2xzLCBvYmosIHdyaXRlciwgdG9fZXh0ZW5kLCBhc192YWx1ZT1GYWxzZSwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIGNscy5wcmVmaXhfYnl0ZXMoY2xzLmdyYXBoYmluYXJ5X3R5cGUsIGFzX3ZhbHVlLCBudWxsYWJsZSwgdG9fZXh0ZW5kKQorICAgICAgICB3cml0ZXIudG9EaWN0KG9iai5sYWJlbHMsIHRvX2V4dGVuZCkKKyAgICAgICAgd3JpdGVyLnRvRGljdChvYmoub2JqZWN0cywgdG9fZXh0ZW5kKQorICAgICAgICByZXR1cm4gdG9fZXh0ZW5kCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgb2JqZWN0aWZ5KGNscywgYnVmZiwgcmVhZGVyLCBudWxsYWJsZT1UcnVlKToKKyAgICAgICAgcmV0dXJuIGNscy5pc19udWxsKGJ1ZmYsIHJlYWRlciwgbGFtYmRhIGIsIHI6IFBhdGgoci5yZWFkT2JqZWN0KGIpLCByLnJlYWRPYmplY3QoYikpLCBudWxsYWJsZSkKKworCitjbGFzcyBQcm9wZXJ0eUlPKF9HcmFwaEJpbmFyeVR5cGVJTyk6CisKKyAgICBweXRob25fdHlwZSA9IFByb3BlcnR5CisgICAgZ3JhcGhiaW5hcnlfdHlwZSA9IERhdGFUeXBlLnByb3BlcnR5CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZGljdGlmeShjbHMsIG9iaiwgd3JpdGVyLCB0b19leHRlbmQsIGFzX3ZhbHVlPUZhbHNlLCBudWxsYWJsZT1UcnVlKToKKyAgICAgICAgY2xzLnByZWZpeF9ieXRlcyhjbHMuZ3JhcGhiaW5hcnlfdHlwZSwgYXNfdmFsdWUsIG51bGxhYmxlLCB0b19leHRlbmQpCisgICAgICAgIFN0cmluZ0lPLmRpY3RpZnkob2JqLmtleSwgd3JpdGVyLCB0b19leHRlbmQsIFRydWUsIEZhbHNlKQorICAgICAgICB3cml0ZXIudG9EaWN0KG9iai52YWx1ZSwgdG9fZXh0ZW5kKQorICAgICAgICB0b19leHRlbmQuZXh0ZW5kKE5VTExfQllURVMpCisgICAgICAgIHJldHVybiB0b19leHRlbmQKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBvYmplY3RpZnkoY2xzLCBidWZmLCByZWFkZXIsIG51bGxhYmxlPVRydWUpOgorICAgICAgICByZXR1cm4gY2xzLmlzX251bGwoYnVmZiwgcmVhZGVyLCBjbHMuX3JlYWRfcHJvcGVydHksIG51bGxhYmxlKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9yZWFkX3Byb3BlcnR5KGNscywgYiwgcik6CisgICAgICAgIHAgPSBQcm9wZXJ0eShyLnRvT2JqZWN0KGIsIERhdGFUeXBlLnN0cmluZywgRmFsc2UpLCByLnJlYWRPYmplY3QoYiksIE5vbmUpCisgICAgICAgIGIucmVhZCgyKQorICAgICAgICByZXR1cm4gcAorCisKK2NsYXNzIFRpbmtlckdyYXBoSU8oX0dyYXBoQmluYXJ5VHlwZUlPKToKKworICAgIHB5dGhvbl90eXBlID0gR3JhcGgKKyAgICBncmFwaGJpbmFyeV90eXBlID0gRGF0YVR5cGUuZ3JhcGgKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBkaWN0aWZ5KGNscywgb2JqLCB3cml0ZXIsIHRvX2V4dGVuZCwgYXNfdmFsdWU9RmFsc2UsIG51bGxhYmxlPVRydWUpOgorICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiVGlua2VyR3JhcGggc2VyaWFsaXphdGlvbiBpcyBub3QgY3VycmVudGx5IHN1cHBvcnRlZCBieSBncmVtbGluLXB5dGhvbiIpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgb2JqZWN0aWZ5KGNscywgYiwgcmVhZGVyLCBhc192YWx1ZT1GYWxzZSk6CisgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCJUaW5rZXJHcmFwaCBkZXNlcmlhbGl6YXRpb24gaXMgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgYnkgZ3JlbWxpbi1weXRob24iKQorCisKK2NsYXNzIFZlcnRleElPKF9HcmFwaEJpbmFyeVR5cGVJTyk6CisKKyAgICBweXRob25fdHlwZSA9IFZlcnRleAorICAgIGdyYXBoYmluYXJ5X3R5cGUgPSBEYXRhVHlwZS52ZXJ0ZXgKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBkaWN0aWZ5KGNscywgb2JqLCB3cml0ZXIsIHRvX2V4dGVuZCwgYXNfdmFsdWU9RmFsc2UsIG51bGxhYmxlPVRydWUpOgorICAgICAgICBjbHMucHJlZml4X2J5dGVzKGNscy5ncmFwaGJpbmFyeV90eXBlLCBhc192YWx1ZSwgbnVsbGFibGUsIHRvX2V4dGVuZCkKKyAgICAgICAgd3JpdGVyLnRvRGljdChvYmouaWQsIHRvX2V4dGVuZCkKKyAgICAgICAgU3RyaW5nSU8uZGljdGlmeShvYmoubGFiZWwsIHdyaXRlciwgdG9fZXh0ZW5kLCBUcnVlLCBGYWxzZSkKKyAgICAgICAgdG9fZXh0ZW5kLmV4dGVuZChOVUxMX0JZVEVTKQorICAgICAgICByZXR1cm4gdG9fZXh0ZW5kCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgb2JqZWN0aWZ5KGNscywgYnVmZiwgcmVhZGVyLCBudWxsYWJsZT1UcnVlKToKKyAgICAgICAgcmV0dXJuIGNscy5pc19udWxsKGJ1ZmYsIHJlYWRlciwgY2xzLl9yZWFkX3ZlcnRleCwgbnVsbGFibGUpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3JlYWRfdmVydGV4KGNscywgYiwgcik6CisgICAgICAgIHZlcnRleCA9IFZlcnRleChyLnJlYWRPYmplY3QoYiksIHIudG9PYmplY3QoYiwgRGF0YVR5cGUuc3RyaW5nLCBGYWxzZSkpCisgICAgICAgIGIucmVhZCgyKQorICAgICAgICByZXR1cm4gdmVydGV4CisKKworY2xhc3MgVmVydGV4UHJvcGVydHlJTyhfR3JhcGhCaW5hcnlUeXBlSU8pOgorCisgICAgcHl0aG9uX3R5cGUgPSBWZXJ0ZXhQcm9wZXJ0eQorICAgIGdyYXBoYmluYXJ5X3R5cGUgPSBEYXRhVHlwZS52ZXJ0ZXhwcm9wZXJ0eQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGRpY3RpZnkoY2xzLCBvYmosIHdyaXRlciwgdG9fZXh0ZW5kLCBhc192YWx1ZT1GYWxzZSwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIGNscy5wcmVmaXhfYnl0ZXMoY2xzLmdyYXBoYmluYXJ5X3R5cGUsIGFzX3ZhbHVlLCBudWxsYWJsZSwgdG9fZXh0ZW5kKQorICAgICAgICB3cml0ZXIudG9EaWN0KG9iai5pZCwgdG9fZXh0ZW5kKQorICAgICAgICBTdHJpbmdJTy5kaWN0aWZ5KG9iai5sYWJlbCwgd3JpdGVyLCB0b19leHRlbmQsIFRydWUsIEZhbHNlKQorICAgICAgICB3cml0ZXIudG9EaWN0KG9iai52YWx1ZSwgdG9fZXh0ZW5kKQorICAgICAgICB0b19leHRlbmQuZXh0ZW5kKE5VTExfQllURVMpCisgICAgICAgIHRvX2V4dGVuZC5leHRlbmQoTlVMTF9CWVRFUykKKyAgICAgICAgcmV0dXJuIHRvX2V4dGVuZAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIG9iamVjdGlmeShjbHMsIGJ1ZmYsIHJlYWRlciwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIHJldHVybiBjbHMuaXNfbnVsbChidWZmLCByZWFkZXIsIGNscy5fcmVhZF92ZXJ0ZXhwcm9wZXJ0eSwgbnVsbGFibGUpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3JlYWRfdmVydGV4cHJvcGVydHkoY2xzLCBiLCByKToKKyAgICAgICAgdnAgPSBWZXJ0ZXhQcm9wZXJ0eShyLnJlYWRPYmplY3QoYiksIHIudG9PYmplY3QoYiwgRGF0YVR5cGUuc3RyaW5nLCBGYWxzZSksIHIucmVhZE9iamVjdChiKSwgTm9uZSkKKyAgICAgICAgYi5yZWFkKDQpCisgICAgICAgIHJldHVybiB2cAorCisKK2NsYXNzIF9FbnVtSU8oX0dyYXBoQmluYXJ5VHlwZUlPKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBkaWN0aWZ5KGNscywgb2JqLCB3cml0ZXIsIHRvX2V4dGVuZCwgYXNfdmFsdWU9RmFsc2UsIG51bGxhYmxlPVRydWUpOgorICAgICAgICBjbHMucHJlZml4X2J5dGVzKGNscy5ncmFwaGJpbmFyeV90eXBlLCBhc192YWx1ZSwgbnVsbGFibGUsIHRvX2V4dGVuZCkKKyAgICAgICAgU3RyaW5nSU8uZGljdGlmeShjbHMudW5tYW5nbGVfa2V5d29yZChzdHIob2JqLm5hbWUpKSwgd3JpdGVyLCB0b19leHRlbmQpCisgICAgICAgIHJldHVybiB0b19leHRlbmQKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBvYmplY3RpZnkoY2xzLCBidWZmLCByZWFkZXIsIG51bGxhYmxlPVRydWUpOgorICAgICAgICByZXR1cm4gY2xzLmlzX251bGwoYnVmZiwgcmVhZGVyLCBjbHMuX3JlYWRfZW51bXZhbCwgbnVsbGFibGUpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3JlYWRfZW51bXZhbChjbHMsIGIsIHIpOgorICAgICAgICBlbnVtX25hbWUgPSByLnRvT2JqZWN0KGIpCisgICAgICAgIHJldHVybiBjbHMucHl0aG9uX3R5cGVbZW51bV9uYW1lXQorCisKK2NsYXNzIEJhcnJpZXJJTyhfRW51bUlPKToKKyAgICBncmFwaGJpbmFyeV90eXBlID0gRGF0YVR5cGUuYmFycmllcgorICAgIHB5dGhvbl90eXBlID0gQmFycmllcgorCisKK2NsYXNzIENhcmRpbmFsaXR5SU8oX0VudW1JTyk6CisgICAgZ3JhcGhiaW5hcnlfdHlwZSA9IERhdGFUeXBlLmNhcmRpbmFsaXR5CisgICAgcHl0aG9uX3R5cGUgPSBDYXJkaW5hbGl0eQorCisKK2NsYXNzIENvbHVtbklPKF9FbnVtSU8pOgorICAgIGdyYXBoYmluYXJ5X3R5cGUgPSBEYXRhVHlwZS5jb2x1bW4KKyAgICBweXRob25fdHlwZSA9IENvbHVtbgorCisKK2NsYXNzIERpcmVjdGlvbklPKF9FbnVtSU8pOgorICAgIGdyYXBoYmluYXJ5X3R5cGUgPSBEYXRhVHlwZS5kaXJlY3Rpb24KKyAgICBweXRob25fdHlwZSA9IERpcmVjdGlvbgorCisKK2NsYXNzIE9wZXJhdG9ySU8oX0VudW1JTyk6CisgICAgZ3JhcGhiaW5hcnlfdHlwZSA9IERhdGFUeXBlLm9wZXJhdG9yCisgICAgcHl0aG9uX3R5cGUgPSBPcGVyYXRvcgorCisKK2NsYXNzIE9yZGVySU8oX0VudW1JTyk6CisgICAgZ3JhcGhiaW5hcnlfdHlwZSA9IERhdGFUeXBlLm9yZGVyCisgICAgcHl0aG9uX3R5cGUgPSBPcmRlcgorCisKK2NsYXNzIFBpY2tJTyhfRW51bUlPKToKKyAgICBncmFwaGJpbmFyeV90eXBlID0gRGF0YVR5cGUucGljaworICAgIHB5dGhvbl90eXBlID0gUGljaworCisKK2NsYXNzIFBvcElPKF9FbnVtSU8pOgorICAgIGdyYXBoYmluYXJ5X3R5cGUgPSBEYXRhVHlwZS5wb3AKKyAgICBweXRob25fdHlwZSA9IFBvcAorCisKK2NsYXNzIEJpbmRpbmdJTyhfR3JhcGhCaW5hcnlUeXBlSU8pOgorCisgICAgcHl0aG9uX3R5cGUgPSBCaW5kaW5nCisgICAgZ3JhcGhiaW5hcnlfdHlwZSA9IERhdGFUeXBlLmJpbmRpbmcKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBkaWN0aWZ5KGNscywgb2JqLCB3cml0ZXIsIHRvX2V4dGVuZCwgYXNfdmFsdWU9RmFsc2UsIG51bGxhYmxlPVRydWUpOgorICAgICAgICBjbHMucHJlZml4X2J5dGVzKGNscy5ncmFwaGJpbmFyeV90eXBlLCBhc192YWx1ZSwgbnVsbGFibGUsIHRvX2V4dGVuZCkKKyAgICAgICAgU3RyaW5nSU8uZGljdGlmeShvYmoua2V5LCB3cml0ZXIsIHRvX2V4dGVuZCwgVHJ1ZSwgRmFsc2UpCisgICAgICAgIHdyaXRlci50b0RpY3Qob2JqLnZhbHVlLCB0b19leHRlbmQpCisgICAgICAgIHJldHVybiB0b19leHRlbmQKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBvYmplY3RpZnkoY2xzLCBidWZmLCByZWFkZXIsIG51bGxhYmxlPVRydWUpOgorICAgICAgICByZXR1cm4gY2xzLmlzX251bGwoYnVmZiwgcmVhZGVyLCBsYW1iZGEgYiwgcjogQmluZGluZyhyLnRvT2JqZWN0KGIsIERhdGFUeXBlLnN0cmluZywgRmFsc2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkZXIucmVhZE9iamVjdChiKSksIG51bGxhYmxlKQorCisKK2NsYXNzIEJ5dGVjb2RlSU8oX0dyYXBoQmluYXJ5VHlwZUlPKToKKyAgICBweXRob25fdHlwZSA9IEJ5dGVjb2RlCisgICAgZ3JhcGhiaW5hcnlfdHlwZSA9IERhdGFUeXBlLmJ5dGVjb2RlCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZGljdGlmeShjbHMsIG9iaiwgd3JpdGVyLCB0b19leHRlbmQsIGFzX3ZhbHVlPUZhbHNlLCBudWxsYWJsZT1UcnVlKToKKyAgICAgICAgY2xzLnByZWZpeF9ieXRlcyhjbHMuZ3JhcGhiaW5hcnlfdHlwZSwgYXNfdmFsdWUsIG51bGxhYmxlLCB0b19leHRlbmQpCisgICAgICAgIGJjID0gb2JqLmJ5dGVjb2RlIGlmIGlzaW5zdGFuY2Uob2JqLCBUcmF2ZXJzYWwpIGVsc2Ugb2JqCisgICAgICAgIHRvX2V4dGVuZC5leHRlbmQoaW50MzJfcGFjayhsZW4oYmMuc3RlcF9pbnN0cnVjdGlvbnMpKSkKKyAgICAgICAgZm9yIGluc3QgaW4gYmMuc3RlcF9pbnN0cnVjdGlvbnM6CisgICAgICAgICAgICBpbnN0X25hbWUsIGluc3RfYXJncyA9IGluc3RbMF0sIGluc3RbMTpdIGlmIGxlbihpbnN0KSA+IDEgZWxzZSBbXQorICAgICAgICAgICAgU3RyaW5nSU8uZGljdGlmeShpbnN0X25hbWUsIHdyaXRlciwgdG9fZXh0ZW5kLCBUcnVlLCBGYWxzZSkKKyAgICAgICAgICAgIHRvX2V4dGVuZC5leHRlbmQoaW50MzJfcGFjayhsZW4oaW5zdF9hcmdzKSkpCisgICAgICAgICAgICBmb3IgYXJnIGluIGluc3RfYXJnczoKKyAgICAgICAgICAgICAgICB3cml0ZXIudG9EaWN0KGFyZywgdG9fZXh0ZW5kKQorCisgICAgICAgIHRvX2V4dGVuZC5leHRlbmQoaW50MzJfcGFjayhsZW4oYmMuc291cmNlX2luc3RydWN0aW9ucykpKQorICAgICAgICBmb3IgaW5zdCBpbiBiYy5zb3VyY2VfaW5zdHJ1Y3Rpb25zOgorICAgICAgICAgICAgaW5zdF9uYW1lLCBpbnN0X2FyZ3MgPSBpbnN0WzBdLCBpbnN0WzE6XSBpZiBsZW4oaW5zdCkgPiAxIGVsc2UgW10KKyAgICAgICAgICAgIFN0cmluZ0lPLmRpY3RpZnkoaW5zdF9uYW1lLCB3cml0ZXIsIHRvX2V4dGVuZCwgVHJ1ZSwgRmFsc2UpCisgICAgICAgICAgICB0b19leHRlbmQuZXh0ZW5kKGludDMyX3BhY2sobGVuKGluc3RfYXJncykpKQorICAgICAgICAgICAgZm9yIGFyZyBpbiBpbnN0X2FyZ3M6CisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShhcmcsIFR5cGVUeXBlKToKKyAgICAgICAgICAgICAgICAgICAgd3JpdGVyLnRvRGljdChHcmVtbGluVHlwZShhcmcoKS5mcWNuKSwgdG9fZXh0ZW5kKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHdyaXRlci50b0RpY3QoYXJnLCB0b19leHRlbmQpCisgICAgICAgIHJldHVybiB0b19leHRlbmQKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBvYmplY3RpZnkoY2xzLCBidWZmLCByZWFkZXIsIG51bGxhYmxlPVRydWUpOgorICAgICAgICByZXR1cm4gY2xzLmlzX251bGwoYnVmZiwgcmVhZGVyLCBjbHMuX3JlYWRfYnl0ZWNvZGUsIG51bGxhYmxlKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9yZWFkX2J5dGVjb2RlKGNscywgYiwgcik6CisgICAgICAgIGJ5dGVjb2RlID0gQnl0ZWNvZGUoKQorCisgICAgICAgIHN0ZXBfY291bnQgPSBjbHMucmVhZF9pbnQoYikKKyAgICAgICAgaXggPSAwCisgICAgICAgIHdoaWxlIGl4IDwgc3RlcF9jb3VudDoKKyAgICAgICAgICAgIGluc3QgPSBbci50b09iamVjdChiLCBEYXRhVHlwZS5zdHJpbmcsIEZhbHNlKV0KKyAgICAgICAgICAgIGluc3RfY3QgPSBjbHMucmVhZF9pbnQoYikKKyAgICAgICAgICAgIGl5ID0gMAorICAgICAgICAgICAgd2hpbGUgaXkgPCBpbnN0X2N0OgorICAgICAgICAgICAgICAgIGluc3QuYXBwZW5kKHIucmVhZE9iamVjdChiKSkKKyAgICAgICAgICAgICAgICBpeSArPSAxCisgICAgICAgICAgICBieXRlY29kZS5zdGVwX2luc3RydWN0aW9ucy5hcHBlbmQoaW5zdCkKKyAgICAgICAgICAgIGl4ICs9IDEKKworICAgICAgICBzb3VyY2VfY291bnQgPSBjbHMucmVhZF9pbnQoYikKKyAgICAgICAgaXggPSAwCisgICAgICAgIHdoaWxlIGl4IDwgc291cmNlX2NvdW50OgorICAgICAgICAgICAgaW5zdCA9IFtyLnRvT2JqZWN0KGIsIERhdGFUeXBlLnN0cmluZywgRmFsc2UpXQorICAgICAgICAgICAgaW5zdF9jdCA9IGNscy5yZWFkX2ludChiKQorICAgICAgICAgICAgaXkgPSAwCisgICAgICAgICAgICB3aGlsZSBpeSA8IGluc3RfY3Q6CisgICAgICAgICAgICAgICAgaW5zdC5hcHBlbmQoci5yZWFkT2JqZWN0KGIpKQorICAgICAgICAgICAgICAgIGl5ICs9IDEKKyAgICAgICAgICAgIGJ5dGVjb2RlLnNvdXJjZV9pbnN0cnVjdGlvbnMuYXBwZW5kKGluc3QpCisgICAgICAgICAgICBpeCArPSAxCisKKyAgICAgICAgcmV0dXJuIGJ5dGVjb2RlCisKKworY2xhc3MgVHJhdmVyc2FsSU8oQnl0ZWNvZGVJTyk6CisgICAgcHl0aG9uX3R5cGUgPSBHcmFwaFRyYXZlcnNhbAorCisKK2NsYXNzIExhbWJkYVNlcmlhbGl6ZXIoX0dyYXBoQmluYXJ5VHlwZUlPKToKKworICAgIHB5dGhvbl90eXBlID0gRnVuY3Rpb25UeXBlCisgICAgZ3JhcGhiaW5hcnlfdHlwZSA9IERhdGFUeXBlLmxhbWJkYV8KKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBkaWN0aWZ5KGNscywgb2JqLCB3cml0ZXIsIHRvX2V4dGVuZCwgYXNfdmFsdWU9RmFsc2UsIG51bGxhYmxlPVRydWUpOgorICAgICAgICBjbHMucHJlZml4X2J5dGVzKGNscy5ncmFwaGJpbmFyeV90eXBlLCBhc192YWx1ZSwgbnVsbGFibGUsIHRvX2V4dGVuZCkKKworICAgICAgICBsYW1iZGFfcmVzdWx0ID0gb2JqKCkKKyAgICAgICAgc2NyaXB0ID0gbGFtYmRhX3Jlc3VsdCBpZiBpc2luc3RhbmNlKGxhbWJkYV9yZXN1bHQsIHN0cikgZWxzZSBsYW1iZGFfcmVzdWx0WzBdCisgICAgICAgIGxhbmd1YWdlID0gc3RhdGljcy5kZWZhdWx0X2xhbWJkYV9sYW5ndWFnZSBpZiBpc2luc3RhbmNlKGxhbWJkYV9yZXN1bHQsIHN0cikgZWxzZSBsYW1iZGFfcmVzdWx0WzFdCisKKyAgICAgICAgU3RyaW5nSU8uZGljdGlmeShsYW5ndWFnZSwgd3JpdGVyLCB0b19leHRlbmQsIFRydWUsIEZhbHNlKQorCisgICAgICAgIHNjcmlwdF9jbGVhbmVkID0gc2NyaXB0CisgICAgICAgIHNjcmlwdF9hcmdzID0gLTEKKworICAgICAgICBpZiBsYW5ndWFnZSA9PSAiZ3JlbWxpbi1qeXRob24iIG9yIGxhbmd1YWdlID09ICJncmVtbGluLXB5dGhvbiI6CisgICAgICAgICAgICBpZiBub3Qgc2NyaXB0LnN0cmlwKCkuc3RhcnRzd2l0aCgibGFtYmRhIik6CisgICAgICAgICAgICAgICAgc2NyaXB0X2NsZWFuZWQgPSAibGFtYmRhICIgKyBzY3JpcHQKKyAgICAgICAgICAgIHNjcmlwdF9hcmdzID0gc2l4LmdldF9mdW5jdGlvbl9jb2RlKGV2YWwoc2NyaXB0X2NsZWFuZWQpKS5jb19hcmdjb3VudAorICAgICAgICBlbGlmIGxhbmd1YWdlID09ICJncmVtbGluLWdyb292eSIgYW5kICItPiIgaW4gc2NyaXB0OgorICAgICAgICAgICAgIyBpZiB0aGUgdXNlciBoYXMgZXhwbGljaXRseSBhZGRlZCBwYXJhbWV0ZXJzIHRvIHRoZSBncm9vdnkgY2xvc3VyZSB0aGVuIHdlIGNhbiBlYXNpbHkgZGV0ZWN0IG9uZSBvciB0d28KKyAgICAgICAgICAgICMgYXJnIGxhbWJkYXMgLSBpZiB3ZSBjYW4ndCBkZXRlY3QgMSBvciAyIHRoZW4gd2UganVzdCBnbyB3aXRoICJ1bmtub3duIgorICAgICAgICAgICAgYXJncyA9IHNjcmlwdFswOnNjcmlwdC5maW5kKCItPiIpXQorICAgICAgICAgICAgc2NyaXB0X2FyZ3MgPSAyIGlmICIsIiBpbiBhcmdzIGVsc2UgMQorCisgICAgICAgIFN0cmluZ0lPLmRpY3RpZnkoc2NyaXB0X2NsZWFuZWQsIHdyaXRlciwgdG9fZXh0ZW5kLCBUcnVlLCBGYWxzZSkKKyAgICAgICAgdG9fZXh0ZW5kLmV4dGVuZChpbnQzMl9wYWNrKHNjcmlwdF9hcmdzKSkKKworICAgICAgICByZXR1cm4gdG9fZXh0ZW5kCisKKworY2xhc3MgUFNlcmlhbGl6ZXIoX0dyYXBoQmluYXJ5VHlwZUlPKToKKyAgICBncmFwaGJpbmFyeV90eXBlID0gRGF0YVR5cGUucAorICAgIHB5dGhvbl90eXBlID0gUAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGRpY3RpZnkoY2xzLCBvYmosIHdyaXRlciwgdG9fZXh0ZW5kLCBhc192YWx1ZT1GYWxzZSwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIGNscy5wcmVmaXhfYnl0ZXMoY2xzLmdyYXBoYmluYXJ5X3R5cGUsIGFzX3ZhbHVlLCBudWxsYWJsZSwgdG9fZXh0ZW5kKQorCisgICAgICAgIFN0cmluZ0lPLmRpY3RpZnkob2JqLm9wZXJhdG9yLCB3cml0ZXIsIHRvX2V4dGVuZCwgVHJ1ZSwgRmFsc2UpCisKKyAgICAgICAgYXJncyA9IFtdCisgICAgICAgIGlmIG9iai5vdGhlciBpcyBOb25lOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShvYmoudmFsdWUsIExpc3RUeXBlKToKKyAgICAgICAgICAgICAgICBhcmdzID0gb2JqLnZhbHVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKG9iai52YWx1ZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFyZ3MuYXBwZW5kKG9iai52YWx1ZSkKKyAgICAgICAgICAgIGFyZ3MuYXBwZW5kKG9iai5vdGhlcikKKworICAgICAgICB0b19leHRlbmQuZXh0ZW5kKGludDMyX3BhY2sobGVuKGFyZ3MpKSkKKyAgICAgICAgZm9yIGEgaW4gYXJnczoKKyAgICAgICAgICAgIHdyaXRlci50b0RpY3QoYSwgdG9fZXh0ZW5kKQorCisgICAgICAgIHJldHVybiB0b19leHRlbmQKKworCitjbGFzcyBTY29wZUlPKF9FbnVtSU8pOgorICAgIGdyYXBoYmluYXJ5X3R5cGUgPSBEYXRhVHlwZS5zY29wZQorICAgIHB5dGhvbl90eXBlID0gU2NvcGUKKworCitjbGFzcyBUSU8oX0VudW1JTyk6CisgICAgZ3JhcGhiaW5hcnlfdHlwZSA9IERhdGFUeXBlLnQKKyAgICBweXRob25fdHlwZSA9IFQKKworCitjbGFzcyBUcmF2ZXJzZXJJTyhfR3JhcGhCaW5hcnlUeXBlSU8pOgorICAgIGdyYXBoYmluYXJ5X3R5cGUgPSBEYXRhVHlwZS50cmF2ZXJzZXIKKyAgICBweXRob25fdHlwZSA9IFRyYXZlcnNlcgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGRpY3RpZnkoY2xzLCBvYmosIHdyaXRlciwgdG9fZXh0ZW5kLCBhc192YWx1ZT1GYWxzZSwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIGNscy5wcmVmaXhfYnl0ZXMoY2xzLmdyYXBoYmluYXJ5X3R5cGUsIGFzX3ZhbHVlLCBudWxsYWJsZSwgdG9fZXh0ZW5kKQorICAgICAgICB0b19leHRlbmQuZXh0ZW5kKGludDY0X3BhY2sob2JqLmJ1bGspKQorICAgICAgICB3cml0ZXIudG9EaWN0KG9iai5vYmplY3QsIHRvX2V4dGVuZCkKKyAgICAgICAgcmV0dXJuIHRvX2V4dGVuZAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIG9iamVjdGlmeShjbHMsIGJ1ZmYsIHJlYWRlciwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIHJldHVybiBjbHMuaXNfbnVsbChidWZmLCByZWFkZXIsIGNscy5fcmVhZF90cmF2ZXJzZXIsIG51bGxhYmxlKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9yZWFkX3RyYXZlcnNlcihjbHMsIGIsIHIpOgorICAgICAgICBidWxrID0gaW50NjRfdW5wYWNrKGIucmVhZCg4KSkKKyAgICAgICAgb2JqID0gci5yZWFkT2JqZWN0KGIpCisgICAgICAgIHJldHVybiBUcmF2ZXJzZXIob2JqLCBidWxrPWJ1bGspCisKKworY2xhc3MgQnl0ZUlPKF9HcmFwaEJpbmFyeVR5cGVJTyk6CisgICAgcHl0aG9uX3R5cGUgPSBTaW5nbGVCeXRlCisgICAgZ3JhcGhiaW5hcnlfdHlwZSA9IERhdGFUeXBlLmJ5dGUKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBkaWN0aWZ5KGNscywgb2JqLCB3cml0ZXIsIHRvX2V4dGVuZCwgYXNfdmFsdWU9RmFsc2UsIG51bGxhYmxlPVRydWUpOgorICAgICAgICBjbHMucHJlZml4X2J5dGVzKGNscy5ncmFwaGJpbmFyeV90eXBlLCBhc192YWx1ZSwgbnVsbGFibGUsIHRvX2V4dGVuZCkKKyAgICAgICAgdG9fZXh0ZW5kLmV4dGVuZChpbnQ4X3BhY2sob2JqKSkKKyAgICAgICAgcmV0dXJuIHRvX2V4dGVuZAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIG9iamVjdGlmeShjbHMsIGJ1ZmYsIHJlYWRlciwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIHJldHVybiBjbHMuaXNfbnVsbChidWZmLCByZWFkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgYiwgcjogaW50Ll9fbmV3X18oU2luZ2xlQnl0ZSwgaW50OF91bnBhY2soYi5yZWFkKDEpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsYWJsZSkKKworCitjbGFzcyBCeXRlQnVmZmVySU8oX0dyYXBoQmluYXJ5VHlwZUlPKToKKyAgICBweXRob25fdHlwZSA9IEJ5dGVCdWZmZXJUeXBlCisgICAgZ3JhcGhiaW5hcnlfdHlwZSA9IERhdGFUeXBlLmJ5dGVidWZmZXIKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBkaWN0aWZ5KGNscywgb2JqLCB3cml0ZXIsIHRvX2V4dGVuZCwgYXNfdmFsdWU9RmFsc2UsIG51bGxhYmxlPVRydWUpOgorICAgICAgICBjbHMucHJlZml4X2J5dGVzKGNscy5ncmFwaGJpbmFyeV90eXBlLCBhc192YWx1ZSwgbnVsbGFibGUsIHRvX2V4dGVuZCkKKyAgICAgICAgdG9fZXh0ZW5kLmV4dGVuZChpbnQzMl9wYWNrKGxlbihvYmopKSkKKyAgICAgICAgdG9fZXh0ZW5kLmV4dGVuZChvYmopCisgICAgICAgIHJldHVybiB0b19leHRlbmQKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBvYmplY3RpZnkoY2xzLCBidWZmLCByZWFkZXIsIG51bGxhYmxlPVRydWUpOgorICAgICAgICByZXR1cm4gY2xzLmlzX251bGwoYnVmZiwgcmVhZGVyLCBjbHMuX3JlYWRfYnl0ZWJ1ZmZlciwgbnVsbGFibGUpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3JlYWRfYnl0ZWJ1ZmZlcihjbHMsIGIsIHIpOgorICAgICAgICBzaXplID0gY2xzLnJlYWRfaW50KGIpCisgICAgICAgIHJldHVybiBCeXRlQnVmZmVyVHlwZShiLnJlYWQoc2l6ZSkpCisKKworY2xhc3MgQm9vbGVhbklPKF9HcmFwaEJpbmFyeVR5cGVJTyk6CisgICAgcHl0aG9uX3R5cGUgPSBib29sCisgICAgZ3JhcGhiaW5hcnlfdHlwZSA9IERhdGFUeXBlLmJvb2xlYW4KKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBkaWN0aWZ5KGNscywgb2JqLCB3cml0ZXIsIHRvX2V4dGVuZCwgYXNfdmFsdWU9RmFsc2UsIG51bGxhYmxlPVRydWUpOgorICAgICAgICBjbHMucHJlZml4X2J5dGVzKGNscy5ncmFwaGJpbmFyeV90eXBlLCBhc192YWx1ZSwgbnVsbGFibGUsIHRvX2V4dGVuZCkKKyAgICAgICAgdG9fZXh0ZW5kLmV4dGVuZChpbnQ4X3BhY2soMHgwMSBpZiBvYmogZWxzZSAweDAwKSkKKyAgICAgICAgcmV0dXJuIHRvX2V4dGVuZAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIG9iamVjdGlmeShjbHMsIGJ1ZmYsIHJlYWRlciwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIHJldHVybiBjbHMuaXNfbnVsbChidWZmLCByZWFkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgYiwgcjogVHJ1ZSBpZiBpbnQ4X3VucGFjayhiLnJlYWQoMSkpID09IDB4MDEgZWxzZSBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxhYmxlKQorCisKK2NsYXNzIFRleHRQU2VyaWFsaXplcihfR3JhcGhCaW5hcnlUeXBlSU8pOgorICAgIGdyYXBoYmluYXJ5X3R5cGUgPSBEYXRhVHlwZS50ZXh0cAorICAgIHB5dGhvbl90eXBlID0gVGV4dFAKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBkaWN0aWZ5KGNscywgb2JqLCB3cml0ZXIsIHRvX2V4dGVuZCwgYXNfdmFsdWU9RmFsc2UsIG51bGxhYmxlPVRydWUpOgorICAgICAgICBjbHMucHJlZml4X2J5dGVzKGNscy5ncmFwaGJpbmFyeV90eXBlLCBhc192YWx1ZSwgbnVsbGFibGUsIHRvX2V4dGVuZCkKKworICAgICAgICBTdHJpbmdJTy5kaWN0aWZ5KG9iai5vcGVyYXRvciwgd3JpdGVyLCB0b19leHRlbmQsIFRydWUsIEZhbHNlKQorCisgICAgICAgIGFyZ3MgPSBbXQorICAgICAgICBpZiBvYmoub3RoZXIgaXMgTm9uZToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uob2JqLnZhbHVlLCBMaXN0VHlwZSk6CisgICAgICAgICAgICAgICAgYXJncyA9IG9iai52YWx1ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBhcmdzLmFwcGVuZChvYmoudmFsdWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhcmdzLmFwcGVuZChvYmoudmFsdWUpCisgICAgICAgICAgICBhcmdzLmFwcGVuZChvYmoub3RoZXIpCisKKyAgICAgICAgdG9fZXh0ZW5kLmV4dGVuZChpbnQzMl9wYWNrKGxlbihhcmdzKSkpCisgICAgICAgIGZvciBhIGluIGFyZ3M6CisgICAgICAgICAgICB3cml0ZXIudG9EaWN0KGEsIHRvX2V4dGVuZCkKKworICAgICAgICByZXR1cm4gdG9fZXh0ZW5kCisKKworY2xhc3MgQnVsa1NldERlc2VyaWFsaXplcihfR3JhcGhCaW5hcnlUeXBlSU8pOgorCisgICAgZ3JhcGhiaW5hcnlfdHlwZSA9IERhdGFUeXBlLmJ1bGtzZXQKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBvYmplY3RpZnkoY2xzLCBidWZmLCByZWFkZXIsIG51bGxhYmxlPVRydWUpOgorICAgICAgICByZXR1cm4gY2xzLmlzX251bGwoYnVmZiwgcmVhZGVyLCBjbHMuX3JlYWRfYnVsa3NldCwgbnVsbGFibGUpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3JlYWRfYnVsa3NldChjbHMsIGIsIHIpOgorICAgICAgICBzaXplID0gY2xzLnJlYWRfaW50KGIpCisgICAgICAgIHRoZV9saXN0ID0gW10KKyAgICAgICAgd2hpbGUgc2l6ZSA+IDA6CisgICAgICAgICAgICBpdG0gPSByLnJlYWRPYmplY3QoYikKKyAgICAgICAgICAgIGJ1bGsgPSBpbnQ2NF91bnBhY2soYi5yZWFkKDgpKQorICAgICAgICAgICAgZm9yIHkgaW4gcmFuZ2UoYnVsayk6CisgICAgICAgICAgICAgICAgdGhlX2xpc3QuYXBwZW5kKGl0bSkgICAgICAgICAgICAKKyAgICAgICAgICAgIHNpemUgPSBzaXplIC0gMQorCisgICAgICAgIHJldHVybiB0aGVfbGlzdAorCisKK2NsYXNzIE1ldHJpY3NEZXNlcmlhbGl6ZXIoX0dyYXBoQmluYXJ5VHlwZUlPKToKKworICAgIGdyYXBoYmluYXJ5X3R5cGUgPSBEYXRhVHlwZS5tZXRyaWNzCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgb2JqZWN0aWZ5KGNscywgYnVmZiwgcmVhZGVyLCBudWxsYWJsZT1UcnVlKToKKyAgICAgICAgcmV0dXJuIGNscy5pc19udWxsKGJ1ZmYsIHJlYWRlciwgY2xzLl9yZWFkX21ldHJpY3MsIG51bGxhYmxlKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9yZWFkX21ldHJpY3MoY2xzLCBiLCByKToKKyAgICAgICAgbWV0cmljaWQgPSByLnRvT2JqZWN0KGIsIERhdGFUeXBlLnN0cmluZywgRmFsc2UpCisgICAgICAgIG5hbWUgPSByLnRvT2JqZWN0KGIsIERhdGFUeXBlLnN0cmluZywgRmFsc2UpCisgICAgICAgIGR1cmF0aW9uID0gci50b09iamVjdChiLCBEYXRhVHlwZS5sb25nLCBudWxsYWJsZT1GYWxzZSkKKyAgICAgICAgY291bnRzID0gci50b09iamVjdChiLCBEYXRhVHlwZS5tYXAsIG51bGxhYmxlPUZhbHNlKQorICAgICAgICBhbm5vdGF0aW9ucyA9IHIudG9PYmplY3QoYiwgRGF0YVR5cGUubWFwLCBudWxsYWJsZT1GYWxzZSkKKyAgICAgICAgbWV0cmljcyA9IHIudG9PYmplY3QoYiwgRGF0YVR5cGUubGlzdCwgbnVsbGFibGU9RmFsc2UpCisKKyAgICAgICAgcmV0dXJuIHsiaWQiOiBtZXRyaWNpZCwKKyAgICAgICAgICAgICAgICAibmFtZSI6IG5hbWUsCisgICAgICAgICAgICAgICAgImR1ciI6IGR1cmF0aW9uLAorICAgICAgICAgICAgICAgICJjb3VudHMiOiBjb3VudHMsCisgICAgICAgICAgICAgICAgImFubm90YXRpb25zIjogYW5ub3RhdGlvbnMsCisgICAgICAgICAgICAgICAgIm1ldHJpY3MiOiBtZXRyaWNzfQorCisKK2NsYXNzIFRyYXZlcnNhbE1ldHJpY3NEZXNlcmlhbGl6ZXIoX0dyYXBoQmluYXJ5VHlwZUlPKToKKworICAgIGdyYXBoYmluYXJ5X3R5cGUgPSBEYXRhVHlwZS50cmF2ZXJzYWxtZXRyaWNzCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgb2JqZWN0aWZ5KGNscywgYnVmZiwgcmVhZGVyLCBudWxsYWJsZT1UcnVlKToKKyAgICAgICAgcmV0dXJuIGNscy5pc19udWxsKGJ1ZmYsIHJlYWRlciwgY2xzLl9yZWFkX3RyYXZlcnNhbG1ldHJpY3MsIG51bGxhYmxlKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9yZWFkX3RyYXZlcnNhbG1ldHJpY3MoY2xzLCBiLCByKToKKyAgICAgICAgZHVyYXRpb24gPSByLnRvT2JqZWN0KGIsIERhdGFUeXBlLmxvbmcsIG51bGxhYmxlPUZhbHNlKQorICAgICAgICBtZXRyaWNzID0gci50b09iamVjdChiLCBEYXRhVHlwZS5saXN0LCBudWxsYWJsZT1GYWxzZSkKKworICAgICAgICByZXR1cm4geyJkdXIiOiBkdXJhdGlvbiwKKyAgICAgICAgICAgICAgICAibWV0cmljcyI6IG1ldHJpY3N9CisKKworY2xhc3MgQ2xhc3NTZXJpYWxpemVyKF9HcmFwaEJpbmFyeVR5cGVJTyk6CisgICAgZ3JhcGhiaW5hcnlfdHlwZSA9IERhdGFUeXBlLmNsYXp6CisgICAgcHl0aG9uX3R5cGUgPSBHcmVtbGluVHlwZQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGRpY3RpZnkoY2xzLCBvYmosIHdyaXRlciwgdG9fZXh0ZW5kLCBhc192YWx1ZT1GYWxzZSwgbnVsbGFibGU9VHJ1ZSk6CisgICAgICAgIGNscy5wcmVmaXhfYnl0ZXMoY2xzLmdyYXBoYmluYXJ5X3R5cGUsIGFzX3ZhbHVlLCBudWxsYWJsZSwgdG9fZXh0ZW5kKQorICAgICAgICBTdHJpbmdJTy5kaWN0aWZ5KG9iai5ncmVtbGluX3R5cGUsIHdyaXRlciwgdG9fZXh0ZW5kLCBUcnVlLCBGYWxzZSkKKyAgICAgICAgcmV0dXJuIHRvX2V4dGVuZAorCisKK2NsYXNzIFRyYXZlcnNhbFN0cmF0ZWd5U2VyaWFsaXplcihfR3JhcGhCaW5hcnlUeXBlSU8pOgorICAgIGdyYXBoYmluYXJ5X3R5cGUgPSBEYXRhVHlwZS50cmF2ZXJzYWxzdHJhdGVneQorICAgIHB5dGhvbl90eXBlID0gVHJhdmVyc2FsU3RyYXRlZ3kKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBkaWN0aWZ5KGNscywgb2JqLCB3cml0ZXIsIHRvX2V4dGVuZCwgYXNfdmFsdWU9RmFsc2UsIG51bGxhYmxlPVRydWUpOgorICAgICAgICBjbHMucHJlZml4X2J5dGVzKGNscy5ncmFwaGJpbmFyeV90eXBlLCBhc192YWx1ZSwgbnVsbGFibGUsIHRvX2V4dGVuZCkKKworICAgICAgICBDbGFzc1NlcmlhbGl6ZXIuZGljdGlmeShHcmVtbGluVHlwZShvYmouZnFjbiksIHdyaXRlciwgdG9fZXh0ZW5kLCBUcnVlLCBGYWxzZSkKKyAgICAgICAgY29uZiA9IHtrOiBjbHMuX2NvbnZlcnQodikgZm9yIGssIHYgaW4gb2JqLmNvbmZpZ3VyYXRpb24uaXRlbXMoKX0KKyAgICAgICAgTWFwSU8uZGljdGlmeShjb25mLCB3cml0ZXIsIHRvX2V4dGVuZCwgVHJ1ZSwgRmFsc2UpCisKKyAgICAgICAgcmV0dXJuIHRvX2V4dGVuZAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9jb252ZXJ0KGNscywgdik6CisgICAgICAgIHJldHVybiB2LmJ5dGVjb2RlIGlmIGlzaW5zdGFuY2UodiwgVHJhdmVyc2FsKSBlbHNlIHYKKworCitjbGFzcyBEdXJhdGlvbklPKF9HcmFwaEJpbmFyeVR5cGVJTyk6CisgICAgcHl0aG9uX3R5cGUgPSB0aW1lZGVsdGEKKyAgICBncmFwaGJpbmFyeV90eXBlID0gRGF0YVR5cGUuZHVyYXRpb24KKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBkaWN0aWZ5KGNscywgb2JqLCB3cml0ZXIsIHRvX2V4dGVuZCwgYXNfdmFsdWU9RmFsc2UsIG51bGxhYmxlPVRydWUpOgorICAgICAgICBjbHMucHJlZml4X2J5dGVzKGNscy5ncmFwaGJpbmFyeV90eXBlLCBhc192YWx1ZSwgbnVsbGFibGUsIHRvX2V4dGVuZCkKKyAgICAgICAgTG9uZ0lPLmRpY3RpZnkob2JqLnNlY29uZHMsIHdyaXRlciwgdG9fZXh0ZW5kLCBUcnVlLCBGYWxzZSkKKyAgICAgICAgSW50SU8uZGljdGlmeShvYmoubWljcm9zZWNvbmRzICogMTAwMCwgd3JpdGVyLCB0b19leHRlbmQsIFRydWUsIEZhbHNlKQorICAgICAgICByZXR1cm4gdG9fZXh0ZW5kCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgb2JqZWN0aWZ5KGNscywgYnVmZiwgcmVhZGVyLCBudWxsYWJsZT1UcnVlKToKKyAgICAgICAgcmV0dXJuIGNscy5pc19udWxsKGJ1ZmYsIHJlYWRlciwgY2xzLl9yZWFkX2R1cmF0aW9uLCBudWxsYWJsZSkKKyAgICAKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3JlYWRfZHVyYXRpb24oY2xzLCBiLCByKToKKyAgICAgICAgc2Vjb25kcyA9IHIudG9PYmplY3QoYiwgRGF0YVR5cGUubG9uZywgRmFsc2UpCisgICAgICAgIG5hbm9zID0gci50b09iamVjdChiLCBEYXRhVHlwZS5pbnQsIEZhbHNlKQorICAgICAgICByZXR1cm4gdGltZWRlbHRhKHNlY29uZHM9c2Vjb25kcywgbWljcm9zZWNvbmRzPW5hbm9zIC8gMTAwMCkKZGlmZiAtLWdpdCBhL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi9ncmVtbGluX3B5dGhvbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb25WMmQwLnB5IGIvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL2dyZW1saW5fcHl0aG9uL3N0cnVjdHVyZS9pby9ncmFwaHNvblYyZDAucHkKaW5kZXggZTQwNWE4ZS4uMjkwNmRiYSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL2dyZW1saW5fcHl0aG9uL3N0cnVjdHVyZS9pby9ncmFwaHNvblYyZDAucHkKKysrIGIvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL2dyZW1saW5fcHl0aG9uL3N0cnVjdHVyZS9pby9ncmFwaHNvblYyZDAucHkKQEAgLTMyLDcgKzMyLDcgQEAKIAogZnJvbSBncmVtbGluX3B5dGhvbiBpbXBvcnQgc3RhdGljcwogZnJvbSBncmVtbGluX3B5dGhvbi5zdGF0aWNzIGltcG9ydCBGbG9hdFR5cGUsIEZ1bmN0aW9uVHlwZSwgSW50VHlwZSwgTG9uZ1R5cGUsIFR5cGVUeXBlLCBTaW5nbGVCeXRlLCBCeXRlQnVmZmVyVHlwZSwgU2luZ2xlQ2hhcgotZnJvbSBncmVtbGluX3B5dGhvbi5wcm9jZXNzLnRyYXZlcnNhbCBpbXBvcnQgQmluZGluZywgQnl0ZWNvZGUsIFAsIFRyYXZlcnNhbCwgVHJhdmVyc2VyLCBUcmF2ZXJzYWxTdHJhdGVneQorZnJvbSBncmVtbGluX3B5dGhvbi5wcm9jZXNzLnRyYXZlcnNhbCBpbXBvcnQgQmluZGluZywgQnl0ZWNvZGUsIFAsIFRleHRQLCBUcmF2ZXJzYWwsIFRyYXZlcnNlciwgVHJhdmVyc2FsU3RyYXRlZ3kKIGZyb20gZ3JlbWxpbl9weXRob24uc3RydWN0dXJlLmdyYXBoIGltcG9ydCBFZGdlLCBQcm9wZXJ0eSwgVmVydGV4LCBWZXJ0ZXhQcm9wZXJ0eSwgUGF0aAogCiAjIFdoZW4gd2UgZmFsbCBiYWNrIHRvIGEgc3VwZXJjbGFzcydzIHNlcmlhbGl6ZXIsIHdlIGl0ZXJhdGUgb3ZlciB0aGlzIG1hcC4KQEAgLTE0MCw5ICsxNDAsOSBAQAogCiAgICAgc3ltYm9sTWFwID0geyJnbG9iYWxfIjogImdsb2JhbCIsICJhc18iOiAiYXMiLCAiaW5fIjogImluIiwgImFuZF8iOiAiYW5kIiwKICAgICAgICAgICAgICAgICAgIm9yXyI6ICJvciIsICJpc18iOiAiaXMiLCAibm90XyI6ICJub3QiLCAiZnJvbV8iOiAiZnJvbSIsCi0gICAgICAgICAgICAgICAgICJzZXRfIjogInNldCIsICJsaXN0XyI6ICJsaXN0IiwgImFsbF8iOiAiYWxsIiwKKyAgICAgICAgICAgICAgICAgInNldF8iOiAic2V0IiwgImxpc3RfIjogImxpc3QiLCAiYWxsXyI6ICJhbGwiLCAid2l0aF8iOiAid2l0aCIsCiAgICAgICAgICAgICAgICAgICJmaWx0ZXJfIjogImZpbHRlciIsICJpZF8iOiAiaWQiLCAibWF4XyI6ICJtYXgiLCAibWluXyI6ICJtaW4iLCAic3VtXyI6ICJzdW0ifQotICAgIAorCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHVubWFuZ2xlS2V5d29yZChjbHMsIHN5bWJvbCk6CiAgICAgICAgIHJldHVybiBjbHMuc3ltYm9sTWFwLmdldChzeW1ib2wsIHN5bWJvbCkKQEAgLTI4NCw2ICsyODQsMTcgQEAKICAgICAgICAgcmV0dXJuIEdyYXBoU09OVXRpbC50eXBlZFZhbHVlKCJQIiwgb3V0KQogCiAKK2NsYXNzIFRleHRQU2VyaWFsaXplcihfR3JhcGhTT05UeXBlSU8pOgorICAgIHB5dGhvbl90eXBlID0gVGV4dFAKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBkaWN0aWZ5KGNscywgcCwgd3JpdGVyKToKKyAgICAgICAgb3V0ID0geyJwcmVkaWNhdGUiOiBwLm9wZXJhdG9yLAorICAgICAgICAgICAgICAgInZhbHVlIjogW3dyaXRlci50b0RpY3QocC52YWx1ZSksIHdyaXRlci50b0RpY3QocC5vdGhlcildIGlmIHAub3RoZXIgaXMgbm90IE5vbmUgZWxzZQorICAgICAgICAgICAgICAgd3JpdGVyLnRvRGljdChwLnZhbHVlKX0KKyAgICAgICAgcmV0dXJuIEdyYXBoU09OVXRpbC50eXBlZFZhbHVlKCJUZXh0UCIsIG91dCkKKworCiBjbGFzcyBCaW5kaW5nU2VyaWFsaXplcihfR3JhcGhTT05UeXBlSU8pOgogICAgIHB5dGhvbl90eXBlID0gQmluZGluZwogCkBAIC00NzEsNyArNDgyLDcgQEAKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBkaWN0aWZ5KGNscywgbiwgd3JpdGVyKToKLSAgICAgICAgIyBpZiB3ZSBleGNlZWQgSmF2YSBsb25nIHJhbmdlIHRoZW4gd2UgbmVlZCBhIEJpZ0ludGVnZXIgCisgICAgICAgICMgaWYgd2UgZXhjZWVkIEphdmEgbG9uZyByYW5nZSB0aGVuIHdlIG5lZWQgYSBCaWdJbnRlZ2VyCiAgICAgICAgIGlmIGlzaW5zdGFuY2UobiwgYm9vbCk6CiAgICAgICAgICAgICByZXR1cm4gbgogICAgICAgICBlbGlmIG4gPCAtOTIyMzM3MjAzNjg1NDc3NTgwOCBvciBuID4gOTIyMzM3MjAzNjg1NDc3NTgwNzoKZGlmZiAtLWdpdCBhL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi9ncmVtbGluX3B5dGhvbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb25WM2QwLnB5IGIvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL2dyZW1saW5fcHl0aG9uL3N0cnVjdHVyZS9pby9ncmFwaHNvblYzZDAucHkKaW5kZXggYmQ1YjMxZS4uYjE1YWNhNiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL2dyZW1saW5fcHl0aG9uL3N0cnVjdHVyZS9pby9ncmFwaHNvblYzZDAucHkKKysrIGIvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL2dyZW1saW5fcHl0aG9uL3N0cnVjdHVyZS9pby9ncmFwaHNvblYzZDAucHkKQEAgLTMwLDcgKzMwLDcgQEAKIAogZnJvbSBncmVtbGluX3B5dGhvbiBpbXBvcnQgc3RhdGljcwogZnJvbSBncmVtbGluX3B5dGhvbi5zdGF0aWNzIGltcG9ydCBGbG9hdFR5cGUsIEZ1bmN0aW9uVHlwZSwgSW50VHlwZSwgTG9uZ1R5cGUsIFR5cGVUeXBlLCBEaWN0VHlwZSwgTGlzdFR5cGUsIFNldFR5cGUsIFNpbmdsZUJ5dGUsIEJ5dGVCdWZmZXJUeXBlLCBTaW5nbGVDaGFyCi1mcm9tIGdyZW1saW5fcHl0aG9uLnByb2Nlc3MudHJhdmVyc2FsIGltcG9ydCBCaW5kaW5nLCBCeXRlY29kZSwgUCwgVHJhdmVyc2FsLCBUcmF2ZXJzZXIsIFRyYXZlcnNhbFN0cmF0ZWd5LCBUCitmcm9tIGdyZW1saW5fcHl0aG9uLnByb2Nlc3MudHJhdmVyc2FsIGltcG9ydCBCaW5kaW5nLCBCeXRlY29kZSwgRGlyZWN0aW9uLCBQLCBUZXh0UCwgVHJhdmVyc2FsLCBUcmF2ZXJzZXIsIFRyYXZlcnNhbFN0cmF0ZWd5LCBUCiBmcm9tIGdyZW1saW5fcHl0aG9uLnN0cnVjdHVyZS5ncmFwaCBpbXBvcnQgRWRnZSwgUHJvcGVydHksIFZlcnRleCwgVmVydGV4UHJvcGVydHksIFBhdGgKIAogbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCkBAIC0xNDIsNyArMTQyLDcgQEAKIAogICAgIHN5bWJvbE1hcCA9IHsiZ2xvYmFsXyI6ICJnbG9iYWwiLCAiYXNfIjogImFzIiwgImluXyI6ICJpbiIsICJhbmRfIjogImFuZCIsCiAgICAgICAgICAgICAgICAgICJvcl8iOiAib3IiLCAiaXNfIjogImlzIiwgIm5vdF8iOiAibm90IiwgImZyb21fIjogImZyb20iLAotICAgICAgICAgICAgICAgICAic2V0XyI6ICJzZXQiLCAibGlzdF8iOiAibGlzdCIsICJhbGxfIjogImFsbCIsCisgICAgICAgICAgICAgICAgICJzZXRfIjogInNldCIsICJsaXN0XyI6ICJsaXN0IiwgImFsbF8iOiAiYWxsIiwgIndpdGhfIjogIndpdGgiLAogICAgICAgICAgICAgICAgICAiZmlsdGVyXyI6ICJmaWx0ZXIiLCAiaWRfIjogImlkIiwgIm1heF8iOiAibWF4IiwgIm1pbl8iOiAibWluIiwgInN1bV8iOiAic3VtIn0KIAogICAgIEBjbGFzc21ldGhvZApAQCAtMjkwLDYgKzI5MCwxNyBAQAogICAgICAgICByZXR1cm4gR3JhcGhTT05VdGlsLnR5cGVkVmFsdWUoIlAiLCBvdXQpCiAKIAorY2xhc3MgVGV4dFBTZXJpYWxpemVyKF9HcmFwaFNPTlR5cGVJTyk6CisgICAgcHl0aG9uX3R5cGUgPSBUZXh0UAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGRpY3RpZnkoY2xzLCBwLCB3cml0ZXIpOgorICAgICAgICBvdXQgPSB7InByZWRpY2F0ZSI6IHAub3BlcmF0b3IsCisgICAgICAgICAgICAgICAidmFsdWUiOiBbd3JpdGVyLnRvRGljdChwLnZhbHVlKSwgd3JpdGVyLnRvRGljdChwLm90aGVyKV0gaWYgcC5vdGhlciBpcyBub3QgTm9uZSBlbHNlCisgICAgICAgICAgICAgICB3cml0ZXIudG9EaWN0KHAudmFsdWUpfQorICAgICAgICByZXR1cm4gR3JhcGhTT05VdGlsLnR5cGVkVmFsdWUoIlRleHRQIiwgb3V0KQorCisKIGNsYXNzIEJpbmRpbmdTZXJpYWxpemVyKF9HcmFwaFNPTlR5cGVJTyk6CiAgICAgcHl0aG9uX3R5cGUgPSBCaW5kaW5nCiAKQEAgLTQ3NSw2ICs0ODYsMjcgQEAKICAgICAgICAgcmV0dXJuIG5ld19kaWN0CiAKIAorY2xhc3MgQnVsa1NldElPKF9HcmFwaFNPTlR5cGVJTyk6CisgICAgZ3JhcGhzb25fdHlwZSA9ICJnOkJ1bGtTZXQiCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgb2JqZWN0aWZ5KGNscywgbCwgcmVhZGVyKToKKyAgICAgICAgbmV3X2xpc3QgPSBbXQorCisgICAgICAgICMgdGhpcyBhcHByb2FjaCBiYXNpY2FsbHkgbWltaWNzIHdoYXQgY3VycmVudGx5IGV4aXN0ZWQgaW4gMy4zLjQgYW5kIHByaW9yIHZlcnNpb25zIHdoZXJlIEJ1bGtTZXQgaXMKKyAgICAgICAgIyBiYXNpY2FsbHkganVzdCBjb2VyY2VkIHRvIGxpc3QuIHRoZSBsaW1pdGF0aW9uIGhlcmUgaXMgdGhhdCBpZiB0aGUgdmFsdWUgb2YgYSBidWxrIGV4Y2VlZHMgdGhlIHNpemUgb2YKKyAgICAgICAgIyBhIGxpc3QgKGludG8gdGhlIGxvbmcgc3BhY2UpIHRoZW4gc3R1ZmYgd29uJ3Qgd29yayBuaWNlLgorICAgICAgICBpZiBsZW4obCkgPiAwOgorICAgICAgICAgICAgeCA9IDAKKyAgICAgICAgICAgIHdoaWxlIHggPCBsZW4obCk6CisgICAgICAgICAgICAgICAgb2JqID0gcmVhZGVyLnRvT2JqZWN0KGxbeF0pCisgICAgICAgICAgICAgICAgYnVsayA9IHJlYWRlci50b09iamVjdChsW3ggKyAxXSkKKyAgICAgICAgICAgICAgICBmb3IgeSBpbiByYW5nZShidWxrKToKKyAgICAgICAgICAgICAgICAgICAgbmV3X2xpc3QuYXBwZW5kKG9iaikKKyAgICAgICAgICAgICAgICB4ID0geCArIDIKKyAgICAgICAgcmV0dXJuIG5ld19saXN0CisKKwogY2xhc3MgRmxvYXRJTyhfTnVtYmVySU8pOgogICAgIHB5dGhvbl90eXBlID0gRmxvYXRUeXBlCiAgICAgZ3JhcGhzb25fdHlwZSA9ICJnOkZsb2F0IgpAQCAtNjkyLDYgKzcyNCwyMSBAQAogICAgIGRlZiBvYmplY3RpZnkoY2xzLCBkLCByZWFkZXIpOgogICAgICAgICByZXR1cm4gVFtkXQogCisKK2NsYXNzIERpcmVjdGlvbklPKF9HcmFwaFNPTlR5cGVJTyk6CisgICAgZ3JhcGhzb25fdHlwZSA9ICJnOkRpcmVjdGlvbiIKKyAgICBncmFwaHNvbl9iYXNlX3R5cGUgPSAiRGlyZWN0aW9uIgorICAgIHB5dGhvbl90eXBlID0gRGlyZWN0aW9uCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZGljdGlmeShjbHMsIGQsIHdyaXRlcik6CisgICAgICAgIHJldHVybiBHcmFwaFNPTlV0aWwudHlwZWRWYWx1ZShjbHMuZ3JhcGhzb25fYmFzZV90eXBlLCBkLm5hbWUsICJnIikKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBvYmplY3RpZnkoY2xzLCBkLCByZWFkZXIpOgorICAgICAgICByZXR1cm4gRGlyZWN0aW9uW2RdCisKKwogY2xhc3MgVHJhdmVyc2FsTWV0cmljc0Rlc2VyaWFsaXplcihfR3JhcGhTT05UeXBlSU8pOgogICAgIGdyYXBoc29uX3R5cGUgPSAiZzpUcmF2ZXJzYWxNZXRyaWNzIgogCmRpZmYgLS1naXQgYS9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vcmFkaXNoL2ZlYXR1cmVfc3RlcHMucHkgYi9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vcmFkaXNoL2ZlYXR1cmVfc3RlcHMucHkKaW5kZXggZmVhY2YyMi4uNDBkMjUxOCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL3JhZGlzaC9mZWF0dXJlX3N0ZXBzLnB5CisrKyBiL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi9yYWRpc2gvZmVhdHVyZV9zdGVwcy5weQpAQCAtMjIsNyArMjIsNyBAQAogZnJvbSBncmVtbGluX3B5dGhvbi5zdHJ1Y3R1cmUuZ3JhcGggaW1wb3J0IFBhdGgKIGZyb20gZ3JlbWxpbl9weXRob24ucHJvY2Vzcy5hbm9ueW1vdXNfdHJhdmVyc2FsIGltcG9ydCB0cmF2ZXJzYWwKIGZyb20gZ3JlbWxpbl9weXRob24ucHJvY2Vzcy5ncmFwaF90cmF2ZXJzYWwgaW1wb3J0IF9fCi1mcm9tIGdyZW1saW5fcHl0aG9uLnByb2Nlc3MudHJhdmVyc2FsIGltcG9ydCBCYXJyaWVyLCBDYXJkaW5hbGl0eSwgUCwgUG9wLCBTY29wZSwgQ29sdW1uLCBPcmRlciwgRGlyZWN0aW9uLCBULCBQaWNrLCBPcGVyYXRvcgorZnJvbSBncmVtbGluX3B5dGhvbi5wcm9jZXNzLnRyYXZlcnNhbCBpbXBvcnQgQmFycmllciwgQ2FyZGluYWxpdHksIFAsIFRleHRQLCBQb3AsIFNjb3BlLCBDb2x1bW4sIE9yZGVyLCBEaXJlY3Rpb24sIFQsIFBpY2ssIE9wZXJhdG9yLCBJTywgV2l0aE9wdGlvbnMKIGZyb20gcmFkaXNoIGltcG9ydCBnaXZlbiwgd2hlbiwgdGhlbgogZnJvbSBoYW1jcmVzdCBpbXBvcnQgKgogCkBAIC0zMSwxMCArMzEsMTIgQEAKIHJlZ2V4X2FzID0gcmUuY29tcGlsZShyIihbKC4sXHNdKWFzXCgiKQogcmVnZXhfZnJvbSA9IHJlLmNvbXBpbGUociIoWyguLFxzXSlmcm9tXCgiKQogcmVnZXhfZ2xvYmFsID0gcmUuY29tcGlsZShyIihbKC4sXHNdKWdsb2JhbCIpCityZWdleF9jYXJkbGlzdCA9IHJlLmNvbXBpbGUociJDYXJkaW5hbGl0eVwubGlzdCIpCiByZWdleF9pbiA9IHJlLmNvbXBpbGUociIoWyguLFxzXSlpblwoIikKIHJlZ2V4X2lzID0gcmUuY29tcGlsZShyIihbKC4sXHNdKWlzXCgiKQogcmVnZXhfbm90ID0gcmUuY29tcGlsZShyIihbKC4sXHNdKW5vdFwoIikKIHJlZ2V4X29yID0gcmUuY29tcGlsZShyIihbKC4sXHNdKW9yXCgiKQorcmVnZXhfd2l0aCA9IHJlLmNvbXBpbGUociIoWyguLFxzXSl3aXRoXCgiKQogcmVnZXhfdHJ1ZSA9IHJlLmNvbXBpbGUociIodHJ1ZSkiKQogcmVnZXhfZmFsc2UgPSByZS5jb21waWxlKHIiKGZhbHNlKSIpCiAKQEAgLTc5LDcgKzgxLDcgQEAKICAgICBpZiBub3QgaGFzYXR0cihzdGVwLmNvbnRleHQsICJ0cmF2ZXJzYWxfcGFyYW1zIik6CiAgICAgICAgIHN0ZXAuY29udGV4dC50cmF2ZXJzYWxfcGFyYW1zID0ge30KIAotICAgIHN0ZXAuY29udGV4dC50cmF2ZXJzYWxfcGFyYW1zW3BhcmFtX25hbWVdID0gX2NvbnZlcnQocGFyYW0sIHN0ZXAuY29udGV4dCkKKyAgICBzdGVwLmNvbnRleHQudHJhdmVyc2FsX3BhcmFtc1twYXJhbV9uYW1lXSA9IF9jb252ZXJ0KHBhcmFtLnJlcGxhY2UoJ1xcIicsICciJyksIHN0ZXAuY29udGV4dCkKIAogCiBAZ2l2ZW4oInRoZSB0cmF2ZXJzYWwgb2YiKQpAQCAtMTcxLDE0ICsxNzMsMTYgQEAKICAgICBlbGlmIGlzaW5zdGFuY2UodmFsLCBzdHIpIGFuZCByZS5tYXRjaCgiXmVcWy4qXF0kIiwgdmFsKTogICAgICAgICAgICMgcGFyc2UgZWRnZQogICAgICAgICByZXR1cm4gX19maW5kX2NhY2hlZF9lbGVtZW50KGN0eCwgZ3JhcGhfbmFtZSwgdmFsWzI6LTFdLCAiZSIpCiAgICAgZWxpZiBpc2luc3RhbmNlKHZhbCwgc3RyKSBhbmQgcmUubWF0Y2goIl5tXFsuKlxdJCIsIHZhbCk6ICAgICAgICAgICAjIHBhcnNlIGpzb24gYXMgYSBtYXAKLSAgICAgICAgcmV0dXJuIF9jb252ZXJ0KGpzb24ubG9hZHModmFsWzI6LTFdLnJlcGxhY2UoJ1xcIicsICciJykpLCBjdHgpCisgICAgICAgIHJldHVybiBfY29udmVydChqc29uLmxvYWRzKHZhbFsyOi0xXSksIGN0eCkKICAgICBlbGlmIGlzaW5zdGFuY2UodmFsLCBzdHIpIGFuZCByZS5tYXRjaCgiXnBcWy4qXF0kIiwgdmFsKTogICAgICAgICAgICMgcGFyc2UgcGF0aAogICAgICAgICBwYXRoX29iamVjdHMgPSBsaXN0KG1hcCgobGFtYmRhIHg6IF9jb252ZXJ0KHgsIGN0eCkpLCB2YWxbMjotMV0uc3BsaXQoIiwiKSkpCiAgICAgICAgIHJldHVybiBQYXRoKFtzZXQoW10pXSwgcGF0aF9vYmplY3RzKQogICAgIGVsaWYgaXNpbnN0YW5jZSh2YWwsIHN0cikgYW5kIHJlLm1hdGNoKCJeY1xbLipcXSQiLCB2YWwpOiAgICAgICAgICAgIyBwYXJzZSBsYW1iZGEvY2xvc3VyZQogICAgICAgICByZXR1cm4gbGFtYmRhOiAodmFsWzI6LTFdLCAiZ3JlbWxpbi1ncm9vdnkiKQotICAgIGVsaWYgaXNpbnN0YW5jZSh2YWwsIHN0cikgYW5kIHJlLm1hdGNoKCJedFxbLipcXSQiLCB2YWwpOiAgICAgICAgICMgcGFyc2UgaW5zdGFuY2Ugb2YgVCBlbnVtCisgICAgZWxpZiBpc2luc3RhbmNlKHZhbCwgc3RyKSBhbmQgcmUubWF0Y2goIl50XFsuKlxdJCIsIHZhbCk6ICAgICAgICAgICAjIHBhcnNlIGluc3RhbmNlIG9mIFQgZW51bQogICAgICAgICByZXR1cm4gVFt2YWxbMjotMV1dCisgICAgZWxpZiBpc2luc3RhbmNlKHZhbCwgc3RyKSBhbmQgcmUubWF0Y2goIl5EXFsuKlxdJCIsIHZhbCk6ICAgICAgICAgICAjIHBhcnNlIGluc3RhbmNlIG9mIERpcmVjdGlvbiBlbnVtCisgICAgICAgIHJldHVybiBEaXJlY3Rpb25bdmFsWzI6LTFdXQogICAgIGVsc2U6CiAgICAgICAgIHJldHVybiB2YWwKIApAQCAtMjM0LDYgKzIzOCw3IEBACiBkZWYgX3RyYW5zbGF0ZSh0cmF2ZXJzYWxfKToKICAgICByZXBsYWNlZCA9IHRyYXZlcnNhbF8ucmVwbGFjZSgiXG4iLCAiIikKICAgICByZXBsYWNlZCA9IHJlZ2V4X2FsbC5zdWIociJQb3AuYWxsXyIsIHJlcGxhY2VkKQorICAgIHJlcGxhY2VkID0gcmVnZXhfY2FyZGxpc3Quc3ViKHIiQ2FyZGluYWxpdHkubGlzdF8iLCByZXBsYWNlZCkKICAgICByZXBsYWNlZCA9IHJlZ2V4X2FuZC5zdWIociJcMWFuZF8oIiwgcmVwbGFjZWQpCiAgICAgcmVwbGFjZWQgPSByZWdleF9mcm9tLnN1YihyIlwxZnJvbV8oIiwgcmVwbGFjZWQpCiAgICAgcmVwbGFjZWQgPSByZWdleF9nbG9iYWwuc3ViKHIiXDFnbG9iYWxfIiwgcmVwbGFjZWQpCkBAIC0yNDIsNiArMjQ3LDcgQEAKICAgICByZXBsYWNlZCA9IHJlZ2V4X25vdC5zdWIociJcMW5vdF8oIiwgcmVwbGFjZWQpCiAgICAgcmVwbGFjZWQgPSByZWdleF9vci5zdWIociJcMW9yXygiLCByZXBsYWNlZCkKICAgICByZXBsYWNlZCA9IHJlZ2V4X2luLnN1YihyIlwxaW5fKCIsIHJlcGxhY2VkKQorICAgIHJlcGxhY2VkID0gcmVnZXhfd2l0aC5zdWIociJcMXdpdGhfKCIsIHJlcGxhY2VkKQogICAgIHJlcGxhY2VkID0gcmVnZXhfdHJ1ZS5zdWIociJUcnVlIiwgcmVwbGFjZWQpCiAgICAgcmV0dXJuIHJlZ2V4X2ZhbHNlLnN1YihyIkZhbHNlIiwgcmVwbGFjZWQpCiAKQEAgLTI1NSwxMSArMjYxLDE0IEBACiAgICAgICAgICAiRGlyZWN0aW9uIjogRGlyZWN0aW9uLAogICAgICAgICAgIk9yZGVyIjogT3JkZXIsCiAgICAgICAgICAiUCI6IFAsCisgICAgICAgICAiVGV4dFAiOiBUZXh0UCwKKyAgICAgICAgICJJTyI6IElPLAogICAgICAgICAgIlBpY2siOiBQaWNrLAogICAgICAgICAgIlBvcCI6IFBvcCwKICAgICAgICAgICJTY29wZSI6IFNjb3BlLAogICAgICAgICAgIk9wZXJhdG9yIjogT3BlcmF0b3IsCi0gICAgICAgICAiVCI6IFR9CisgICAgICAgICAiVCI6IFQsCisgICAgICAgICAiV2l0aE9wdGlvbnMiOiBXaXRoT3B0aW9uc30KIAogICAgIGIudXBkYXRlKHBhcmFtcykKIApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL3JhZGlzaC90ZXJyYWluLnB5IGIvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL3JhZGlzaC90ZXJyYWluLnB5CmluZGV4IGEyNjgyNWIuLjhmYTAxZDAyIDEwMDY0NAotLS0gYS9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vcmFkaXNoL3RlcnJhaW4ucHkKKysrIGIvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL3JhZGlzaC90ZXJyYWluLnB5CkBAIC04OSw2ICs4OSw4IEBACiAKICAgICBpZiB3b3JsZC5jb25maWcudXNlcl9kYXRhWyJzZXJpYWxpemVyIl0gPT0gImFwcGxpY2F0aW9uL3ZuZC5ncmVtbGluLXYzLjAranNvbiI6CiAgICAgICAgIHMgPSBzZXJpYWxpemVyLkdyYXBoU09OU2VyaWFsaXplcnNWM2QwKCkKKyAgICBlbGlmIHdvcmxkLmNvbmZpZy51c2VyX2RhdGFbInNlcmlhbGl6ZXIiXSA9PSAiYXBwbGljYXRpb24vdm5kLmdyYXBoYmluYXJ5LXYxLjAiOgorICAgICAgICBzID0gc2VyaWFsaXplci5HcmFwaEJpbmFyeVNlcmlhbGl6ZXJzVjEoKQogICAgIGVsc2U6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3NlcmlhbGl6ZXIgbm90IGZvdW5kIC0gJyArIHdvcmxkLmNvbmZpZy51c2VyX2RhdGFbInNlcmlhbGl6ZXIiXSkKIApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL3Rlc3RzL2NvbmZ0ZXN0LnB5IGIvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL3Rlc3RzL2NvbmZ0ZXN0LnB5CmluZGV4IDk2MmExNDguLmNjMzg1NWUgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi90ZXN0cy9jb25mdGVzdC5weQorKysgYi9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vdGVzdHMvY29uZnRlc3QucHkKQEAgLTI4LDEwICsyOCwxNCBAQAogICAgIERyaXZlclJlbW90ZUNvbm5lY3Rpb24pCiBmcm9tIGdyZW1saW5fcHl0aG9uLmRyaXZlci5wcm90b2NvbCBpbXBvcnQgR3JlbWxpblNlcnZlcldTUHJvdG9jb2wKIGZyb20gZ3JlbWxpbl9weXRob24uZHJpdmVyLnNlcmlhbGl6ZXIgaW1wb3J0ICgKLSAgICBHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyLCBHcmFwaFNPTlNlcmlhbGl6ZXJzVjJkMCwKLSAgICBHcmFwaFNPTlNlcmlhbGl6ZXJzVjNkMCkKKyAgICBHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyLCBHcmFwaFNPTlNlcmlhbGl6ZXJzVjJkMCwgR3JhcGhTT05TZXJpYWxpemVyc1YzZDAsCisgICAgR3JhcGhCaW5hcnlTZXJpYWxpemVyc1YxKQogZnJvbSBncmVtbGluX3B5dGhvbi5kcml2ZXIudG9ybmFkby50cmFuc3BvcnQgaW1wb3J0IFRvcm5hZG9UcmFuc3BvcnQKIAorIyBkb2NrZXIgR3JlbWxpbiBTZXJ2ZXIgPSAxNzIuMTcuMC4yCitncmVtbGluX3NlcnZlcl9ob3N0ID0gImxvY2FsaG9zdCIKK2dyZW1saW5fc2VydmVyX3VybCA9ICd3czovLycgKyBncmVtbGluX3NlcnZlcl9ob3N0ICsgJzo0NTk0MC9ncmVtbGluJworCiAKIEBweXRlc3QuZml4dHVyZQogZGVmIGNvbm5lY3Rpb24ocmVxdWVzdCk6CkBAIC00MSw3ICs0NSw3IEBACiAgICAgZXhlY3V0b3IgPSBjb25jdXJyZW50LmZ1dHVyZXMuVGhyZWFkUG9vbEV4ZWN1dG9yKDUpCiAgICAgcG9vbCA9IHF1ZXVlLlF1ZXVlKCkKICAgICB0cnk6Ci0gICAgICAgIGNvbm4gPSBDb25uZWN0aW9uKCd3czovL2xvY2FsaG9zdDo0NTk0MS9ncmVtbGluJywgJ2dtb2Rlcm4nLCBwcm90b2NvbCwKKyAgICAgICAgY29ubiA9IENvbm5lY3Rpb24oZ3JlbWxpbl9zZXJ2ZXJfdXJsLCAnZ21vZGVybicsIHByb3RvY29sLAogICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGE6IFRvcm5hZG9UcmFuc3BvcnQoKSwgZXhlY3V0b3IsIHBvb2wpCiAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgIGV4ZWN1dG9yLnNodXRkb3duKCkKQEAgLTU3LDcgKzYxLDcgQEAKIEBweXRlc3QuZml4dHVyZQogZGVmIGNsaWVudChyZXF1ZXN0KToKICAgICB0cnk6Ci0gICAgICAgIGNsaWVudCA9IENsaWVudCgnd3M6Ly9sb2NhbGhvc3Q6NDU5NDAvZ3JlbWxpbicsICdnbW9kZXJuJykKKyAgICAgICAgY2xpZW50ID0gQ2xpZW50KGdyZW1saW5fc2VydmVyX3VybCwgJ2dtb2Rlcm4nKQogICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICBweXRlc3Quc2tpcCgnR3JlbWxpbiBTZXJ2ZXIgaXMgbm90IHJ1bm5pbmcnKQogICAgIGVsc2U6CkBAIC03MCw3ICs3NCw4IEBACiBAcHl0ZXN0LmZpeHR1cmUKIGRlZiBzZWN1cmVfY2xpZW50KHJlcXVlc3QpOgogICAgIHRyeToKLSAgICAgICAgY2xpZW50ID0gQ2xpZW50KCd3czovL2xvY2FsaG9zdDo0NTk0MS9ncmVtbGluJywgJ2dtb2Rlcm4nLCB1c2VybmFtZT0nc3RlcGhlbicsIHBhc3N3b3JkPSdwYXNzd29yZCcpCisgICAgICAgIGNsaWVudCA9IENsaWVudCgnd3M6Ly8nICsgZ3JlbWxpbl9zZXJ2ZXJfaG9zdCArICc6NDU5NDEvZ3JlbWxpbicsICdnbW9kZXJuJywKKyAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdzdGVwaGVuJywgcGFzc3dvcmQ9J3Bhc3N3b3JkJykKICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgcHl0ZXN0LnNraXAoJ0dyZW1saW4gU2VydmVyIGlzIG5vdCBydW5uaW5nJykKICAgICBlbHNlOgpAQCAtODAsMTQgKzg1LDIwIEBACiAgICAgICAgIHJldHVybiBjbGllbnQKIAogCi1AcHl0ZXN0LmZpeHR1cmUocGFyYW1zPVsndjInLCAndjMnXSkKK0BweXRlc3QuZml4dHVyZShwYXJhbXM9WydncmFwaHNvbnYyJywgJ2dyYXBoc29udjMnLCAnZ3JhcGhiaW5hcnl2MSddKQogZGVmIHJlbW90ZV9jb25uZWN0aW9uKHJlcXVlc3QpOgogICAgIHRyeToKLSAgICAgICAgaWYgcmVxdWVzdC5wYXJhbSA9PSAndjInOgotICAgICAgICAgICAgcmVtb3RlX2Nvbm4gPSBEcml2ZXJSZW1vdGVDb25uZWN0aW9uKCd3czovL2xvY2FsaG9zdDo0NTk0MC9ncmVtbGluJywgJ2dtb2Rlcm4nLAorICAgICAgICBpZiByZXF1ZXN0LnBhcmFtID09ICdncmFwaGJpbmFyeXYxJzoKKyAgICAgICAgICAgIHJlbW90ZV9jb25uID0gRHJpdmVyUmVtb3RlQ29ubmVjdGlvbihncmVtbGluX3NlcnZlcl91cmwsICdnbW9kZXJuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlX3NlcmlhbGl6ZXI9c2VyaWFsaXplci5HcmFwaEJpbmFyeVNlcmlhbGl6ZXJzVjEoKSkKKyAgICAgICAgZWxpZiByZXF1ZXN0LnBhcmFtID09ICdncmFwaHNvbnYyJzoKKyAgICAgICAgICAgIHJlbW90ZV9jb25uID0gRHJpdmVyUmVtb3RlQ29ubmVjdGlvbihncmVtbGluX3NlcnZlcl91cmwsICdnbW9kZXJuJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlX3NlcmlhbGl6ZXI9c2VyaWFsaXplci5HcmFwaFNPTlNlcmlhbGl6ZXJzVjJkMCgpKQorICAgICAgICBlbGlmIHJlcXVlc3QucGFyYW0gPT0gJ2dyYXBoc29udjMnOgorICAgICAgICAgICAgcmVtb3RlX2Nvbm4gPSBEcml2ZXJSZW1vdGVDb25uZWN0aW9uKGdyZW1saW5fc2VydmVyX3VybCwgJ2dtb2Rlcm4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2Vfc2VyaWFsaXplcj1zZXJpYWxpemVyLkdyYXBoU09OU2VyaWFsaXplcnNWM2QwKCkpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZW1vdGVfY29ubiA9IERyaXZlclJlbW90ZUNvbm5lY3Rpb24oJ3dzOi8vbG9jYWxob3N0OjQ1OTQwL2dyZW1saW4nLCAnZ21vZGVybicpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIHNlcmlhbGl6ZXIgb3B0aW9uIC0gIiArIHJlcXVlc3QucGFyYW0pCiAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgIHB5dGVzdC5za2lwKCdHcmVtbGluIFNlcnZlciBpcyBub3QgcnVubmluZycpCiAgICAgZWxzZToKQEAgLTEwMCw3ICsxMTEsOCBAQAogQHB5dGVzdC5maXh0dXJlCiBkZWYgcmVtb3RlX2Nvbm5lY3Rpb25fdjIocmVxdWVzdCk6CiAgICAgdHJ5OgotICAgICAgICByZW1vdGVfY29ubiA9IERyaXZlclJlbW90ZUNvbm5lY3Rpb24oJ3dzOi8vbG9jYWxob3N0OjQ1OTQwL2dyZW1saW4nLCAnZycsIG1lc3NhZ2Vfc2VyaWFsaXplcj1zZXJpYWxpemVyLkdyYXBoU09OU2VyaWFsaXplcnNWMmQwKCkpCisgICAgICAgIHJlbW90ZV9jb25uID0gRHJpdmVyUmVtb3RlQ29ubmVjdGlvbihncmVtbGluX3NlcnZlcl91cmwsICdnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2Vfc2VyaWFsaXplcj1zZXJpYWxpemVyLkdyYXBoU09OU2VyaWFsaXplcnNWMmQwKCkpCiAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgIHB5dGVzdC5za2lwKCdHcmVtbGluIFNlcnZlciBpcyBub3QgcnVubmluZycpCiAgICAgZWxzZToKQEAgLTExOCwzICsxMzAsOCBAQAogQHB5dGVzdC5maXh0dXJlCiBkZWYgZ3JhcGhzb25fc2VyaWFsaXplcl92MyhyZXF1ZXN0KToKICAgICByZXR1cm4gR3JhcGhTT05TZXJpYWxpemVyc1YzZDAoKQorCisKK0BweXRlc3QuZml4dHVyZQorZGVmIGdyYXBoYmluYXJ5X3NlcmlhbGl6ZXJfdjEocmVxdWVzdCk6CisgICAgcmV0dXJuIEdyYXBoQmluYXJ5U2VyaWFsaXplcnNWMSgpCmRpZmYgLS1naXQgYS9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vdGVzdHMvZHJpdmVyL3Rlc3RfY2xpZW50LnB5IGIvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL3Rlc3RzL2RyaXZlci90ZXN0X2NsaWVudC5weQppbmRleCBmMGVhMTYzLi40NmViNmUwIDEwMDY0NAotLS0gYS9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vdGVzdHMvZHJpdmVyL3Rlc3RfY2xpZW50LnB5CisrKyBiL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi90ZXN0cy9kcml2ZXIvdGVzdF9jbGllbnQucHkKQEAgLTIxLDcgKzIxLDkgQEAKIGltcG9ydCB1dWlkCiBmcm9tIGdyZW1saW5fcHl0aG9uLmRyaXZlci5wcm90b2NvbCBpbXBvcnQgR3JlbWxpblNlcnZlckVycm9yCiBmcm9tIGdyZW1saW5fcHl0aG9uLmRyaXZlci5jbGllbnQgaW1wb3J0IENsaWVudAorZnJvbSBncmVtbGluX3B5dGhvbi5kcml2ZXIucHJvdG9jb2wgaW1wb3J0IEdyZW1saW5TZXJ2ZXJFcnJvcgogZnJvbSBncmVtbGluX3B5dGhvbi5kcml2ZXIucmVxdWVzdCBpbXBvcnQgUmVxdWVzdE1lc3NhZ2UKK2Zyb20gZ3JlbWxpbl9weXRob24ucHJvY2Vzcy5zdHJhdGVnaWVzIGltcG9ydCBPcHRpb25zU3RyYXRlZ3kKIGZyb20gZ3JlbWxpbl9weXRob24ucHJvY2Vzcy5ncmFwaF90cmF2ZXJzYWwgaW1wb3J0IF9fCiBmcm9tIGdyZW1saW5fcHl0aG9uLnN0cnVjdHVyZS5ncmFwaCBpbXBvcnQgR3JhcGgKIApAQCAtMzcsNiArMzksOCBAQAogICAgIHJlc3VsdHMgPSBmdXR1cmUucmVzdWx0KCkKICAgICBhc3NlcnQgbGVuKHJlc3VsdHMpID09IDYKICAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXN1bHRzLCBsaXN0KQorICAgIGFzc2VydCByZXN1bHRzX3NldC5kb25lLmRvbmUoKQorICAgIGFzc2VydCAnaG9zdCcgaW4gcmVzdWx0c19zZXQuc3RhdHVzX2F0dHJpYnV0ZXMKIAogCiBkZWYgdGVzdF9jbGllbnRfc2ltcGxlX2V2YWwoY2xpZW50KToKQEAgLTUxLDYgKzU1LDE2IEBACiAgICAgYXNzZXJ0IGxlbihjbGllbnQuc3VibWl0KCdnLlYoKScpLmFsbCgpLnJlc3VsdCgpKSA9PSA2CiAKIAorZGVmIHRlc3RfY2xpZW50X2Vycm9yKGNsaWVudCk6CisgICAgdHJ5OgorICAgICAgICAjIHNob3VsZCBmaXJlIGFuIGV4Y2VwdGlvbgorICAgICAgICBjbGllbnQuc3VibWl0KCcxLzAnKS5hbGwoKS5yZXN1bHQoKQorICAgICAgICBhc3NlcnQgRmFsc2UKKyAgICBleGNlcHQgR3JlbWxpblNlcnZlckVycm9yIGFzIGV4OgorICAgICAgICBhc3NlcnQgJ2V4Y2VwdGlvbnMnIGluIGV4LnN0YXR1c19hdHRyaWJ1dGVzCisgICAgICAgIGFzc2VydCAnc3RhY2tUcmFjZScgaW4gZXguc3RhdHVzX2F0dHJpYnV0ZXMKKworCiBkZWYgdGVzdF9jbGllbnRfY29ubmVjdGlvbl9wb29sX2FmdGVyX2Vycm9yKGNsaWVudCk6CiAgICAgIyBPdmVyd3JpdGUgZml4dHVyZSB3aXRoIHBvb2xfc2l6ZT0xIGNsaWVudAogICAgIGNsaWVudCA9IENsaWVudCgnd3M6Ly9sb2NhbGhvc3Q6NDU5NDAvZ3JlbWxpbicsICdnbW9kZXJuJywgcG9vbF9zaXplPTEpCkBAIC03Myw2ICs4NywyMSBAQAogICAgIGFzc2VydCBsZW4ocmVzdWx0X3NldC5hbGwoKS5yZXN1bHQoKSkgPT0gNgogCiAKK2RlZiB0ZXN0X2NsaWVudF9ieXRlY29kZV9vcHRpb25zKGNsaWVudCk6CisgICAgIyBzbW9rZSB0ZXN0IHRvIHZhbGlkYXRlIHNlcmlhbGl6YXRpb24gb2YgT3B0aW9uc1N0cmF0ZWd5LiBubyB3YXkgdG8gcmVhbGx5IHZhbGlkYXRlIHRoaXMgZnJvbSBhbiBpbnRlZ3JhdGlvbgorICAgICMgdGVzdCBwZXJzcGVjdGl2ZSBiZWNhdXNlIHRoZXJlJ3Mgbm8gd2F5IHRvIGFjY2VzcyB0aGUgaW50ZXJuYWxzIG9mIHRoZSBzdHJhdGVneSB2aWEgYnl0ZWNvZGUKKyAgICBnID0gR3JhcGgoKS50cmF2ZXJzYWwoKQorICAgIHQgPSBnLndpdGhTdHJhdGVnaWVzKE9wdGlvbnNTdHJhdGVneShvcHRpb25zPXsieCI6ICJ0ZXN0IiwgInkiOiBUcnVlfSkpLlYoKQorICAgIG1lc3NhZ2UgPSBSZXF1ZXN0TWVzc2FnZSgndHJhdmVyc2FsJywgJ2J5dGVjb2RlJywgeydncmVtbGluJzogdC5ieXRlY29kZSwgJ2FsaWFzZXMnOiB7J2cnOiAnZ21vZGVybid9fSkKKyAgICByZXN1bHRfc2V0ID0gY2xpZW50LnN1Ym1pdChtZXNzYWdlKQorICAgIGFzc2VydCBsZW4ocmVzdWx0X3NldC5hbGwoKS5yZXN1bHQoKSkgPT0gNgorICAgICMjCisgICAgdCA9IGcud2l0aF8oIngiLCAidGVzdCIpLndpdGhfKCJ5IiwgVHJ1ZSkuVigpCisgICAgbWVzc2FnZSA9IFJlcXVlc3RNZXNzYWdlKCd0cmF2ZXJzYWwnLCAnYnl0ZWNvZGUnLCB7J2dyZW1saW4nOiB0LmJ5dGVjb2RlLCAnYWxpYXNlcyc6IHsnZyc6ICdnbW9kZXJuJ319KQorICAgIHJlc3VsdF9zZXQgPSBjbGllbnQuc3VibWl0KG1lc3NhZ2UpCisgICAgYXNzZXJ0IGxlbihyZXN1bHRfc2V0LmFsbCgpLnJlc3VsdCgpKSA9PSA2CisKKwogZGVmIHRlc3RfaXRlcmF0ZV9yZXN1bHRfc2V0KGNsaWVudCk6CiAgICAgZyA9IEdyYXBoKCkudHJhdmVyc2FsKCkKICAgICB0ID0gZy5WKCkKZGlmZiAtLWdpdCBhL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi90ZXN0cy9kcml2ZXIvdGVzdF9kcml2ZXJfcmVtb3RlX2Nvbm5lY3Rpb24ucHkgYi9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vdGVzdHMvZHJpdmVyL3Rlc3RfZHJpdmVyX3JlbW90ZV9jb25uZWN0aW9uLnB5CmluZGV4IDY0M2FlNmUuLjQ0ZDhkZWEgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi90ZXN0cy9kcml2ZXIvdGVzdF9kcml2ZXJfcmVtb3RlX2Nvbm5lY3Rpb24ucHkKKysrIGIvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL3Rlc3RzL2RyaXZlci90ZXN0X2RyaXZlcl9yZW1vdGVfY29ubmVjdGlvbi5weQpAQCAtMjcsNiArMjcsNyBAQAogICAgIERyaXZlclJlbW90ZUNvbm5lY3Rpb24pCiBmcm9tIGdyZW1saW5fcHl0aG9uLnByb2Nlc3MudHJhdmVyc2FsIGltcG9ydCBUcmF2ZXJzZXIKIGZyb20gZ3JlbWxpbl9weXRob24ucHJvY2Vzcy50cmF2ZXJzYWwgaW1wb3J0IFRyYXZlcnNhbFN0cmF0ZWd5Citmcm9tIGdyZW1saW5fcHl0aG9uLnByb2Nlc3MudHJhdmVyc2FsIGltcG9ydCBCaW5kaW5ncwogZnJvbSBncmVtbGluX3B5dGhvbi5wcm9jZXNzLnRyYXZlcnNhbCBpbXBvcnQgUAogZnJvbSBncmVtbGluX3B5dGhvbi5wcm9jZXNzLmdyYXBoX3RyYXZlcnNhbCBpbXBvcnQgX18KIGZyb20gZ3JlbWxpbl9weXRob24ucHJvY2Vzcy5hbm9ueW1vdXNfdHJhdmVyc2FsIGltcG9ydCB0cmF2ZXJzYWwKQEAgLTM5LDcgKzQwLDYgQEAKIGNsYXNzIFRlc3REcml2ZXJSZW1vdGVDb25uZWN0aW9uKG9iamVjdCk6CiAgICAgZGVmIHRlc3RfdHJhdmVyc2FscyhzZWxmLCByZW1vdGVfY29ubmVjdGlvbik6CiAgICAgICAgIHN0YXRpY3MubG9hZF9zdGF0aWNzKGdsb2JhbHMoKSkKLSAgICAgICAgYXNzZXJ0ICJyZW1vdGVjb25uZWN0aW9uW3dzOi8vbG9jYWxob3N0OjQ1OTQwL2dyZW1saW4sZ21vZGVybl0iID09IHN0cihyZW1vdGVfY29ubmVjdGlvbikKICAgICAgICAgZyA9IHRyYXZlcnNhbCgpLndpdGhSZW1vdGUocmVtb3RlX2Nvbm5lY3Rpb24pCiAKICAgICAgICAgYXNzZXJ0IGxvbmcoNikgPT0gZy5WKCkuY291bnQoKS50b0xpc3QoKVswXQpAQCAtNjEsOCArNjEsNyBAQAogICAgICAgICBhc3NlcnQgNCA9PSBnLlYoKVsyOl0uY291bnQoKS5uZXh0KCkKICAgICAgICAgYXNzZXJ0IDIgPT0gZy5WKClbOjJdLmNvdW50KCkubmV4dCgpCiAgICAgICAgICMgIwotICAgICAgICByZXN1bHRzID0gZy53aXRoU2lkZUVmZmVjdCgnYScsIFsnam9zaCcsICdwZXRlciddKS5WKDEpLm91dCgnY3JlYXRlZCcpLmluXygnY3JlYXRlZCcpLnZhbHVlcygnbmFtZScpLndoZXJlKAotICAgICAgICAgICAgd2l0aGluKCdhJykpLnRvTGlzdCgpCisgICAgICAgIHJlc3VsdHMgPSBnLndpdGhTaWRlRWZmZWN0KCdhJywgWydqb3NoJywgJ3BldGVyJ10pLlYoMSkub3V0KCdjcmVhdGVkJykuaW5fKCdjcmVhdGVkJykudmFsdWVzKCduYW1lJykud2hlcmUoUC53aXRoaW4oJ2EnKSkudG9MaXN0KCkKICAgICAgICAgYXNzZXJ0IDIgPT0gbGVuKHJlc3VsdHMpCiAgICAgICAgIGFzc2VydCAnam9zaCcgaW4gcmVzdWx0cwogICAgICAgICBhc3NlcnQgJ3BldGVyJyBpbiByZXN1bHRzCkBAIC04Nyw2ICs4NiwxMCBAQAogICAgICAgICBhc3NlcnQgJ21hcmtvJyBpbiByZXN1bHRzCiAgICAgICAgIGFzc2VydCAndmFkYXMnIGluIHJlc3VsdHMKICAgICAgICAgIyAjCisgICAgICAgIHJlc3VsdHMgPSBnLlYoKS5oYXMoJ3BlcnNvbicsICduYW1lJywgJ21hcmtvJykubWFwKGxhbWJkYTogKCJpdC5nZXQoKS52YWx1ZSgnbmFtZScpIiwgImdyZW1saW4tZ3Jvb3Z5IikpLnRvTGlzdCgpCisgICAgICAgIGFzc2VydCAxID09IGxlbihyZXN1bHRzKQorICAgICAgICBhc3NlcnQgJ21hcmtvJyBpbiByZXN1bHRzCisgICAgICAgICMgIwogICAgICAgICAjIHRoaXMgdGVzdCBqdXN0IHZhbGlkYXRlcyB0aGF0IHRoZSB1bmRlcnNjb3JlZCB2ZXJzaW9ucyBvZiBzdGVwcyBjb25mbGljdGluZyB3aXRoIEdyZW1saW4gd29yawogICAgICAgICAjIHByb3Blcmx5IGFuZCBjYW4gYmUgcmVtb3ZlZCB3aGVuIHRoZSBvbGQgc3RlcHMgYXJlIHJlbW92ZWQgLSBUSU5LRVJQT1AtMjI3MgogICAgICAgICByZXN1bHRzID0gZy5WKCkuZmlsdGVyXyhfXy52YWx1ZXMoJ2FnZScpLnN1bV8oKS5hbmRfKApAQCAtOTQsNyArOTcsNyBAQAogICAgICAgICBhc3NlcnQgMSA9PSByZXN1bHRzCiAgICAgICAgICMgIwogICAgICAgICAjIHRlc3QgYmluZGluZyBpbiBQCi0gICAgICAgIHJlc3VsdHMgPSBnLlYoKS5oYXMoJ3BlcnNvbicsICdhZ2UnLCAoJ3gnLCBsdCgzMCkpKS5jb3VudCgpLm5leHQoKQorICAgICAgICByZXN1bHRzID0gZy5WKCkuaGFzKCdwZXJzb24nLCAnYWdlJywgQmluZGluZ3Mub2YoJ3gnLCBsdCgzMCkpKS5jb3VudCgpLm5leHQoKQogICAgICAgICBhc3NlcnQgMiA9PSByZXN1bHRzCiAKIApAQCAtMTExLDcgKzExNCw2IEBACiAKICAgICBkZWYgdGVzdF9pdGVyYXRpb24oc2VsZiwgcmVtb3RlX2Nvbm5lY3Rpb24pOgogICAgICAgICBzdGF0aWNzLmxvYWRfc3RhdGljcyhnbG9iYWxzKCkpCi0gICAgICAgIGFzc2VydCAicmVtb3RlY29ubmVjdGlvblt3czovL2xvY2FsaG9zdDo0NTk0MC9ncmVtbGluLGdtb2Rlcm5dIiA9PSBzdHIocmVtb3RlX2Nvbm5lY3Rpb24pCiAgICAgICAgIGcgPSB0cmF2ZXJzYWwoKS53aXRoUmVtb3RlKHJlbW90ZV9jb25uZWN0aW9uKQogCiAgICAgICAgIHQgPSBnLlYoKS5jb3VudCgpCkBAIC0xNDksMTEgKzE1MSwxMSBAQAogCiAgICAgZGVmIHRlc3Rfc3RyYXRlZ2llcyhzZWxmLCByZW1vdGVfY29ubmVjdGlvbik6CiAgICAgICAgIHN0YXRpY3MubG9hZF9zdGF0aWNzKGdsb2JhbHMoKSkKLSAgICAgICAgIwogICAgICAgICBnID0gdHJhdmVyc2FsKCkud2l0aFJlbW90ZShyZW1vdGVfY29ubmVjdGlvbikuIFwKICAgICAgICAgICAgIHdpdGhTdHJhdGVnaWVzKFRyYXZlcnNhbFN0cmF0ZWd5KCJTdWJncmFwaFN0cmF0ZWd5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsidmVydGljZXMiOiBfXy5oYXNMYWJlbCgicGVyc29uIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVkZ2VzIjogX18uaGFzTGFiZWwoImNyZWF0ZWQiKX0pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlZGdlcyI6IF9fLmhhc0xhYmVsKCJjcmVhdGVkIil9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uU3ViZ3JhcGhTdHJhdGVneSIpKQogICAgICAgICBhc3NlcnQgNCA9PSBnLlYoKS5jb3VudCgpLm5leHQoKQogICAgICAgICBhc3NlcnQgMCA9PSBnLkUoKS5jb3VudCgpLm5leHQoKQogICAgICAgICBhc3NlcnQgMSA9PSBnLlYoKS5sYWJlbCgpLmRlZHVwKCkuY291bnQoKS5uZXh0KCkKQEAgLTIxNSw4ICsyMTcsMTAgQEAKICAgICAgICAgYXNzZXJ0IDIgPT0gbGVuKG0pCiAgICAgICAgIGFzc2VydCAzID09IG1bImxvcCJdCiAgICAgICAgIGFzc2VydCAxID09IG1bInJpcHBsZSJdCi0gICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG1bImxvcCJdLCBsb25nKQotICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShtWyJyaXBwbGUiXSwgbG9uZykKKworICAgICAgICAjIGNoZWNrIHN0YXR1cyBhdHRyaWJ1dGVzCisgICAgICAgIGFzc2VydCAiaG9zdCIgaW4gdC5zaWRlX2VmZmVjdHMuc3RhdHVzX2F0dHJpYnV0ZXMKKwogICAgICAgICAjIwogICAgICAgICB0ID0gZy5WKCkub3V0KCJjcmVhdGVkIikuZ3JvdXBDb3VudCgibSIpLmJ5KCJuYW1lIikubmFtZS5hZ2dyZWdhdGUoIm4iKQogICAgICAgICByZXN1bHRzID0gdC50b1NldCgpCmRpZmYgLS1naXQgYS9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vdGVzdHMvZHJpdmVyL3Rlc3Rfc2VyaWFsaXplci5weSBiL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi90ZXN0cy9kcml2ZXIvdGVzdF9zZXJpYWxpemVyLnB5CmluZGV4IGRhMmFiZjMuLjg0M2FmOTcgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi90ZXN0cy9kcml2ZXIvdGVzdF9zZXJpYWxpemVyLnB5CisrKyBiL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi90ZXN0cy9kcml2ZXIvdGVzdF9zZXJpYWxpemVyLnB5CkBAIC0xOCwyMCArMTgsMjggQEAKICMKIGZyb20gZ3JlbWxpbl9weXRob24uc3RydWN0dXJlLmlvIGltcG9ydCBncmFwaHNvblYyZDAKIGZyb20gZ3JlbWxpbl9weXRob24uc3RydWN0dXJlLmlvIGltcG9ydCBncmFwaHNvblYzZDAKK2Zyb20gZ3JlbWxpbl9weXRob24uc3RydWN0dXJlLmlvIGltcG9ydCBncmFwaGJpbmFyeVYxCiAKIAogX19hdXRob3JfXyA9ICdEYXZpZCBNLiBCcm93bicKIAogCi1kZWYgdGVzdF9ncmFwaHNvbl9zZXJpYWx6aWVyX3YyKGdyYXBoc29uX3NlcmlhbGl6ZXJfdjIpOgorZGVmIHRlc3RfZ3JhcGhzb25fc2VyaWFsaXplcl92MihncmFwaHNvbl9zZXJpYWxpemVyX3YyKToKICAgICBhc3NlcnQgZ3JhcGhzb25fc2VyaWFsaXplcl92Mi52ZXJzaW9uID09IGIiYXBwbGljYXRpb24vdm5kLmdyZW1saW4tdjIuMCtqc29uIgogICAgIGFzc2VydCBpc2luc3RhbmNlKGdyYXBoc29uX3NlcmlhbGl6ZXJfdjIuX2dyYXBoc29uX3JlYWRlciwgZ3JhcGhzb25WMmQwLkdyYXBoU09OUmVhZGVyKQotICAgIGFzc2VydCBpc2luc3RhbmNlKGdyYXBoc29uX3NlcmlhbGl6ZXJfdjIuc3RhbmRhcmQuX2dyYXBoc29uX3dyaXRlciwgZ3JhcGhzb25WMmQwLkdyYXBoU09OV3JpdGVyKQotICAgIGFzc2VydCBpc2luc3RhbmNlKGdyYXBoc29uX3NlcmlhbGl6ZXJfdjIudHJhdmVyc2FsLl9ncmFwaHNvbl93cml0ZXIsIGdyYXBoc29uVjJkMC5HcmFwaFNPTldyaXRlcikKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShncmFwaHNvbl9zZXJpYWxpemVyX3YyLnN0YW5kYXJkLl93cml0ZXIsIGdyYXBoc29uVjJkMC5HcmFwaFNPTldyaXRlcikKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShncmFwaHNvbl9zZXJpYWxpemVyX3YyLnRyYXZlcnNhbC5fd3JpdGVyLCBncmFwaHNvblYyZDAuR3JhcGhTT05Xcml0ZXIpCiAKIAotZGVmIHRlc3RfZ3JhcGhzb25fc2VyaWFsemllcl92MyhncmFwaHNvbl9zZXJpYWxpemVyX3YzKToKK2RlZiB0ZXN0X2dyYXBoc29uX3NlcmlhbGl6ZXJfdjMoZ3JhcGhzb25fc2VyaWFsaXplcl92Myk6CiAgICAgYXNzZXJ0IGdyYXBoc29uX3NlcmlhbGl6ZXJfdjMudmVyc2lvbiA9PSBiImFwcGxpY2F0aW9uL3ZuZC5ncmVtbGluLXYzLjAranNvbiIKICAgICBhc3NlcnQgaXNpbnN0YW5jZShncmFwaHNvbl9zZXJpYWxpemVyX3YzLl9ncmFwaHNvbl9yZWFkZXIsIGdyYXBoc29uVjNkMC5HcmFwaFNPTlJlYWRlcikKLSAgICBhc3NlcnQgaXNpbnN0YW5jZShncmFwaHNvbl9zZXJpYWxpemVyX3YzLnN0YW5kYXJkLl9ncmFwaHNvbl93cml0ZXIsIGdyYXBoc29uVjNkMC5HcmFwaFNPTldyaXRlcikKLSAgICBhc3NlcnQgaXNpbnN0YW5jZShncmFwaHNvbl9zZXJpYWxpemVyX3YzLnRyYXZlcnNhbC5fZ3JhcGhzb25fd3JpdGVyLCBncmFwaHNvblYzZDAuR3JhcGhTT05Xcml0ZXIpCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZ3JhcGhzb25fc2VyaWFsaXplcl92My5zdGFuZGFyZC5fd3JpdGVyLCBncmFwaHNvblYzZDAuR3JhcGhTT05Xcml0ZXIpCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZ3JhcGhzb25fc2VyaWFsaXplcl92My50cmF2ZXJzYWwuX3dyaXRlciwgZ3JhcGhzb25WM2QwLkdyYXBoU09OV3JpdGVyKQorCisKK2RlZiB0ZXN0X2dyYXBoYmluYXJ5X3NlcmlhbGl6ZXJfdjEoZ3JhcGhiaW5hcnlfc2VyaWFsaXplcl92MSk6CisgICAgYXNzZXJ0IGdyYXBoYmluYXJ5X3NlcmlhbGl6ZXJfdjEudmVyc2lvbiA9PSBiImFwcGxpY2F0aW9uL3ZuZC5ncmFwaGJpbmFyeS12MS4wIgorICAgIGFzc2VydCBpc2luc3RhbmNlKGdyYXBoYmluYXJ5X3NlcmlhbGl6ZXJfdjEuX2dyYXBoYmluYXJ5X3JlYWRlciwgZ3JhcGhiaW5hcnlWMS5HcmFwaEJpbmFyeVJlYWRlcikKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShncmFwaGJpbmFyeV9zZXJpYWxpemVyX3YxLnN0YW5kYXJkLl93cml0ZXIsIGdyYXBoYmluYXJ5VjEuR3JhcGhCaW5hcnlXcml0ZXIpCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZ3JhcGhiaW5hcnlfc2VyaWFsaXplcl92MS50cmF2ZXJzYWwuX3dyaXRlciwgZ3JhcGhiaW5hcnlWMS5HcmFwaEJpbmFyeVdyaXRlcikKZGlmZiAtLWdpdCBhL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi90ZXN0cy9wcm9jZXNzL3Rlc3Rfc3RyYXRlZ2llcy5weSBiL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi90ZXN0cy9wcm9jZXNzL3Rlc3Rfc3RyYXRlZ2llcy5weQppbmRleCA4MmYyNDYzLi40YjAzZjhhIDEwMDY0NAotLS0gYS9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vdGVzdHMvcHJvY2Vzcy90ZXN0X3N0cmF0ZWdpZXMucHkKKysrIGIvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL3Rlc3RzL3Byb2Nlc3MvdGVzdF9zdHJhdGVnaWVzLnB5CkBAIC05MCw3ICs5MCw3IEBACiAgICAgICAgICAgICBieXRlY29kZS5zb3VyY2VfaW5zdHJ1Y3Rpb25zWzBdWzFdKSAgIyBldmVuIHRob3VnaCBkaWZmZXJlbnQgY29uZnMsIHNhbWUgc3RyYXRlZ3kKICAgICAgICAgYXNzZXJ0IDAgPT0gbGVuKGcudHJhdmVyc2FsX3N0cmF0ZWdpZXMudHJhdmVyc2FsX3N0cmF0ZWdpZXMpICAjIHRoZXNlIHN0cmF0ZWdpZXMgYXJlIHByb3hpZXMKICAgICAgICAgIyMjCi0gICAgICAgIGJ5dGVjb2RlID0gZy53aXRoU3RyYXRlZ2llcyhTdWJncmFwaFN0cmF0ZWd5KHZlcnRpY2VzPV9fLmhhcygibmFtZSIsIm1hcmtvIikpKS5ieXRlY29kZQorICAgICAgICBieXRlY29kZSA9IGcud2l0aFN0cmF0ZWdpZXMoU3ViZ3JhcGhTdHJhdGVneSh2ZXJ0aWNlcz1fXy5oYXMoIm5hbWUiLCAibWFya28iKSkpLmJ5dGVjb2RlCiAgICAgICAgIGFzc2VydCAxID09IGxlbihieXRlY29kZS5zb3VyY2VfaW5zdHJ1Y3Rpb25zKQogICAgICAgICBhc3NlcnQgMiA9PSBsZW4oYnl0ZWNvZGUuc291cmNlX2luc3RydWN0aW9uc1swXSkKICAgICAgICAgYXNzZXJ0ICJ3aXRoU3RyYXRlZ2llcyIgPT0gYnl0ZWNvZGUuc291cmNlX2luc3RydWN0aW9uc1swXVswXQpAQCAtOTgsMyArOTgsMTMgQEAKICAgICAgICAgc3RyYXRlZ3kgPSBieXRlY29kZS5zb3VyY2VfaW5zdHJ1Y3Rpb25zWzBdWzFdCiAgICAgICAgIGFzc2VydCAxID09IGxlbihzdHJhdGVneS5jb25maWd1cmF0aW9uKQogICAgICAgICBhc3NlcnQgX18uaGFzKCJuYW1lIiwibWFya28iKSA9PSBzdHJhdGVneS5jb25maWd1cmF0aW9uWyJ2ZXJ0aWNlcyJdCisgICAgICAgICMjIworICAgICAgICBieXRlY29kZSA9IGcud2l0aFN0cmF0ZWdpZXMoT3B0aW9uc1N0cmF0ZWd5KG9wdGlvbnM9eyJ4IjogInRlc3QiLCAieSI6IFRydWV9KSkuYnl0ZWNvZGUKKyAgICAgICAgYXNzZXJ0IDEgPT0gbGVuKGJ5dGVjb2RlLnNvdXJjZV9pbnN0cnVjdGlvbnMpCisgICAgICAgIGFzc2VydCAyID09IGxlbihieXRlY29kZS5zb3VyY2VfaW5zdHJ1Y3Rpb25zWzBdKQorICAgICAgICBhc3NlcnQgIndpdGhTdHJhdGVnaWVzIiA9PSBieXRlY29kZS5zb3VyY2VfaW5zdHJ1Y3Rpb25zWzBdWzBdCisgICAgICAgIGFzc2VydCBPcHRpb25zU3RyYXRlZ3koKSA9PSBieXRlY29kZS5zb3VyY2VfaW5zdHJ1Y3Rpb25zWzBdWzFdCisgICAgICAgIHN0cmF0ZWd5ID0gYnl0ZWNvZGUuc291cmNlX2luc3RydWN0aW9uc1swXVsxXQorICAgICAgICBhc3NlcnQgMiA9PSBsZW4oc3RyYXRlZ3kuY29uZmlndXJhdGlvbikKKyAgICAgICAgYXNzZXJ0ICJ0ZXN0IiA9PSBzdHJhdGVneS5jb25maWd1cmF0aW9uWyJ4Il0KKyAgICAgICAgYXNzZXJ0IHN0cmF0ZWd5LmNvbmZpZ3VyYXRpb25bInkiXQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL3Rlc3RzL3Byb2Nlc3MvdGVzdF90cmF2ZXJzYWwucHkgYi9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vdGVzdHMvcHJvY2Vzcy90ZXN0X3RyYXZlcnNhbC5weQppbmRleCAxOThkMTFiLi41YjliNjE5IDEwMDY0NAotLS0gYS9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vdGVzdHMvcHJvY2Vzcy90ZXN0X3RyYXZlcnNhbC5weQorKysgYi9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vdGVzdHMvcHJvY2Vzcy90ZXN0X3RyYXZlcnNhbC5weQpAQCAtMjIsNyArMjIsNyBAQAogZnJvbSBncmVtbGluX3B5dGhvbi5zdHJ1Y3R1cmUuZ3JhcGggaW1wb3J0IEdyYXBoCiBmcm9tIGdyZW1saW5fcHl0aG9uLnByb2Nlc3MuYW5vbnltb3VzX3RyYXZlcnNhbCBpbXBvcnQgdHJhdmVyc2FsCiBmcm9tIGdyZW1saW5fcHl0aG9uLnByb2Nlc3MudHJhdmVyc2FsIGltcG9ydCBQCi1mcm9tIGdyZW1saW5fcHl0aG9uLnByb2Nlc3MudHJhdmVyc2FsIGltcG9ydCBCaW5kaW5nCitmcm9tIGdyZW1saW5fcHl0aG9uLnByb2Nlc3MudHJhdmVyc2FsIGltcG9ydCBCaW5kaW5nLCBCaW5kaW5ncwogZnJvbSBncmVtbGluX3B5dGhvbi5wcm9jZXNzLmdyYXBoX3RyYXZlcnNhbCBpbXBvcnQgX18KIAogCkBAIC01Myw3ICs1MywxMCBAQAogICAgICAgICBhc3NlcnQgMSA9PSBsZW4oYnl0ZWNvZGUuc3RlcF9pbnN0cnVjdGlvbnNbMV0pCiAgICAgICAgIGFzc2VydCAyID09IGxlbihieXRlY29kZS5zdGVwX2luc3RydWN0aW9uc1syXSkKICAgICAgICAgIyMKLSAgICAgICAgYnl0ZWNvZGUgPSBnLlYoKCdhJyxbMSwyLDNdKSkub3V0KCgnYicsJ2NyZWF0ZWQnKSkud2hlcmUoX18uaW5fKCgnYycsJ2NyZWF0ZWQnKSwoJ2QnLCdrbm93cycpKS5jb3VudCgpLmlzXygoJ2UnLFAuZ3QoMikpKSkuYnl0ZWNvZGUKKyAgICAgICAgYnl0ZWNvZGUgPSBnLlYoQmluZGluZ3Mub2YoJ2EnLCBbMSwyLDNdKSkgXAorICAgICAgICAgICAgLm91dChCaW5kaW5ncy5vZignYicsJ2NyZWF0ZWQnKSkgXAorICAgICAgICAgICAgLndoZXJlKF9fLmluXyhCaW5kaW5ncy5vZignYycsJ2NyZWF0ZWQnKSwgQmluZGluZ3Mub2YoJ2QnLCdrbm93cycpKSBcCisgICAgICAgICAgICAuY291bnQoKS5pc18oQmluZGluZ3Mub2YoJ2UnLFAuZ3QoMikpKSkuYnl0ZWNvZGUKICAgICAgICAgYXNzZXJ0IDUgPT0gbGVuKGJ5dGVjb2RlLmJpbmRpbmdzLmtleXMoKSkKICAgICAgICAgYXNzZXJ0IFsxLDIsM10gPT0gYnl0ZWNvZGUuYmluZGluZ3NbJ2EnXQogICAgICAgICBhc3NlcnQgJ2NyZWF0ZWQnID09IGJ5dGVjb2RlLmJpbmRpbmdzWydiJ10KZGlmZiAtLWdpdCBhL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi90ZXN0cy9zdHJ1Y3R1cmUvaW8vdGVzdF9mdW5jdGlvbmFsaXR5aW8ucHkgYi9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vdGVzdHMvc3RydWN0dXJlL2lvL3Rlc3RfZnVuY3Rpb25hbGl0eWlvLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2YTYyYTIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vdGVzdHMvc3RydWN0dXJlL2lvL3Rlc3RfZnVuY3Rpb25hbGl0eWlvLnB5CkBAIC0wLDAgKzEsOTcgQEAKKycnJworTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCitkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQordG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQord2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCitodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCitzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCit1bmRlciB0aGUgTGljZW5zZS4KKycnJworCitpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCB1dWlkCisKK2Zyb20gZ3JlbWxpbl9weXRob24uZHJpdmVyLnNlcmlhbGl6ZXIgaW1wb3J0IEdyYXBoU09OU2VyaWFsaXplcnNWMmQwCitmcm9tIGdyZW1saW5fcHl0aG9uLnN0cnVjdHVyZS5ncmFwaCBpbXBvcnQgR3JhcGgKK2Zyb20gZ3JlbWxpbl9weXRob24uc3RhdGljcyBpbXBvcnQgKgorCisKK2RlZiB0ZXN0X3RpbWVzdGFtcChyZW1vdGVfY29ubmVjdGlvbik6CisgICAgZyA9IEdyYXBoKCkudHJhdmVyc2FsKCkud2l0aFJlbW90ZShyZW1vdGVfY29ubmVjdGlvbikKKyAgICB0cyA9IHRpbWVzdGFtcCgxNDgxNzUwMDc2Mjk1IC8gMTAwMCkKKyAgICByZXNwID0gZy5hZGRWKCd0ZXN0X3ZlcnRleCcpLnByb3BlcnR5KCd0cycsIHRzKQorICAgIHJlc3AgPSByZXNwLnRvTGlzdCgpCisgICAgdmlkID0gcmVzcFswXS5pZAorICAgIHRyeToKKyAgICAgICAgdHNfcHJvcCA9IGcuVih2aWQpLnByb3BlcnRpZXMoJ3RzJykudG9MaXN0KClbMF0KKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UodHNfcHJvcC52YWx1ZSwgdGltZXN0YW1wKQorICAgICAgICBhc3NlcnQgdHNfcHJvcC52YWx1ZSA9PSB0cworICAgIGZpbmFsbHk6CisgICAgICAgIGcuVih2aWQpLmRyb3AoKS5pdGVyYXRlKCkKKworCitkZWYgdGVzdF9kYXRldGltZShyZW1vdGVfY29ubmVjdGlvbik6CisgICAgZyA9IEdyYXBoKCkudHJhdmVyc2FsKCkud2l0aFJlbW90ZShyZW1vdGVfY29ubmVjdGlvbikKKyAgICBkdCA9IGRhdGV0aW1lLmRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAoMTQ4MTc1MDA3NjI5NSAvIDEwMDApCisgICAgcmVzcCA9IGcuYWRkVigndGVzdF92ZXJ0ZXgnKS5wcm9wZXJ0eSgnZHQnLCBkdCkudG9MaXN0KCkKKyAgICB2aWQgPSByZXNwWzBdLmlkCisgICAgdHJ5OgorICAgICAgICBkdF9wcm9wID0gZy5WKHZpZCkucHJvcGVydGllcygnZHQnKS50b0xpc3QoKVswXQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShkdF9wcm9wLnZhbHVlLCBkYXRldGltZS5kYXRldGltZSkKKyAgICAgICAgYXNzZXJ0IGR0X3Byb3AudmFsdWUgPT0gZHQKKyAgICBmaW5hbGx5OgorICAgICAgICBnLlYodmlkKS5kcm9wKCkuaXRlcmF0ZSgpCisKKworZGVmIHRlc3RfdXVpZChyZW1vdGVfY29ubmVjdGlvbik6CisgICAgZyA9IEdyYXBoKCkudHJhdmVyc2FsKCkud2l0aFJlbW90ZShyZW1vdGVfY29ubmVjdGlvbikKKyAgICB1aWQgPSB1dWlkLlVVSUQoIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIpCisgICAgcmVzcCA9IGcuYWRkVigndGVzdF92ZXJ0ZXgnKS5wcm9wZXJ0eSgndXVpZCcsIHVpZCkudG9MaXN0KCkKKyAgICB2aWQgPSByZXNwWzBdLmlkCisgICAgdHJ5OgorICAgICAgICB1aWRfcHJvcCA9IGcuVih2aWQpLnByb3BlcnRpZXMoJ3V1aWQnKS50b0xpc3QoKVswXQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZSh1aWRfcHJvcC52YWx1ZSwgdXVpZC5VVUlEKQorICAgICAgICBhc3NlcnQgdWlkX3Byb3AudmFsdWUgPT0gdWlkCisgICAgZmluYWxseToKKyAgICAgICAgZy5WKHZpZCkuZHJvcCgpLml0ZXJhdGUoKQorCisKK2RlZiB0ZXN0X29kZF9iaXRzKHJlbW90ZV9jb25uZWN0aW9uKToKKyAgICBpZiBub3QgaXNpbnN0YW5jZShyZW1vdGVfY29ubmVjdGlvbi5fY2xpZW50Ll9tZXNzYWdlX3NlcmlhbGl6ZXIsIEdyYXBoU09OU2VyaWFsaXplcnNWMmQwKToKKyAgICAgICAgZyA9IEdyYXBoKCkudHJhdmVyc2FsKCkud2l0aFJlbW90ZShyZW1vdGVfY29ubmVjdGlvbikKKyAgICAgICAgY2hhcl9sb3dlciA9IHN0ci5fX25ld19fKFNpbmdsZUNoYXIsIGNocig3OCkpCisgICAgICAgIHJlc3AgPSBnLmFkZFYoJ3Rlc3RfdmVydGV4JykucHJvcGVydHkoJ2NoYXJfbG93ZXInLCBjaGFyX2xvd2VyKS50b0xpc3QoKQorICAgICAgICB2aWQgPSByZXNwWzBdLmlkCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHYgPSBnLlYodmlkKS52YWx1ZXMoJ2NoYXJfbG93ZXInKS50b0xpc3QoKVswXQorICAgICAgICAgICAgYXNzZXJ0IHYgPT0gY2hhcl9sb3dlcgorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZy5WKHZpZCkuZHJvcCgpLml0ZXJhdGUoKQorCisgICAgICAgIGlmIHNpeC5QWTM6CisgICAgICAgICAgICBjaGFyX3VwcGVyID0gc3RyLl9fbmV3X18oU2luZ2xlQ2hhciwgY2hyKDU3MzQ0KSkKKyAgICAgICAgICAgIHJlc3AgPSBnLmFkZFYoJ3Rlc3RfdmVydGV4JykucHJvcGVydHkoJ2NoYXJfdXBwZXInLCBjaGFyX3VwcGVyKS50b0xpc3QoKQorICAgICAgICAgICAgdmlkID0gcmVzcFswXS5pZAorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHYgPSBnLlYodmlkKS52YWx1ZXMoJ2NoYXJfdXBwZXInKS50b0xpc3QoKVswXQorICAgICAgICAgICAgICAgIGFzc2VydCB2ID09IGNoYXJfdXBwZXIKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgZy5WKHZpZCkuZHJvcCgpLml0ZXJhdGUoKQorICAgICAgICAgICAgICAgIAorICAgICAgICBkdXIgPSBkYXRldGltZS50aW1lZGVsdGEoc2Vjb25kcz0xMDAwLCBtaWNyb3NlY29uZHM9MTAwMCkKKyAgICAgICAgcmVzcCA9IGcuYWRkVigndGVzdF92ZXJ0ZXgnKS5wcm9wZXJ0eSgnZHVyJywgZHVyKS50b0xpc3QoKQorICAgICAgICB2aWQgPSByZXNwWzBdLmlkCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHYgPSBnLlYodmlkKS52YWx1ZXMoJ2R1cicpLnRvTGlzdCgpWzBdCisgICAgICAgICAgICBhc3NlcnQgdiA9PSBkdXIKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGcuVih2aWQpLmRyb3AoKS5pdGVyYXRlKCkKZGlmZiAtLWdpdCBhL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi90ZXN0cy9zdHJ1Y3R1cmUvaW8vdGVzdF9ncmFwaGJpbmFyeVYxLnB5IGIvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL3Rlc3RzL3N0cnVjdHVyZS9pby90ZXN0X2dyYXBoYmluYXJ5VjEucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTIzMjBiYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi90ZXN0cy9zdHJ1Y3R1cmUvaW8vdGVzdF9ncmFwaGJpbmFyeVYxLnB5CkBAIC0wLDAgKzEsMjE1IEBACisiIiIKK0xpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKK29yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KK3JlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKK3RvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKK3dpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKK3NvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKK0tJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucwordW5kZXIgdGhlIExpY2Vuc2UuCisiIiIKKworaW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgY2FsZW5kYXIKK2ltcG9ydCB0aW1lCitpbXBvcnQgdXVpZAoraW1wb3J0IG1hdGgKK2Zyb20gZGVjaW1hbCBpbXBvcnQgKgorCitmcm9tIG1vY2sgaW1wb3J0IE1vY2sKKworaW1wb3J0IHNpeAorCitmcm9tIGdyZW1saW5fcHl0aG9uLnN0YXRpY3MgaW1wb3J0IHRpbWVzdGFtcCwgbG9uZywgU2luZ2xlQnl0ZSwgU2luZ2xlQ2hhciwgQnl0ZUJ1ZmZlclR5cGUKK2Zyb20gZ3JlbWxpbl9weXRob24uc3RydWN0dXJlLmdyYXBoIGltcG9ydCBWZXJ0ZXgsIEVkZ2UsIFByb3BlcnR5LCBWZXJ0ZXhQcm9wZXJ0eSwgR3JhcGgsIFBhdGgKK2Zyb20gZ3JlbWxpbl9weXRob24uc3RydWN0dXJlLmlvLmdyYXBoYmluYXJ5VjEgaW1wb3J0IEdyYXBoQmluYXJ5V3JpdGVyLCBHcmFwaEJpbmFyeVJlYWRlciwgRGF0YVR5cGUKK2Zyb20gZ3JlbWxpbl9weXRob24ucHJvY2Vzcy50cmF2ZXJzYWwgaW1wb3J0IFAsIEJhcnJpZXIsIEJpbmRpbmcsIEJ5dGVjb2RlCitmcm9tIGdyZW1saW5fcHl0aG9uLnByb2Nlc3Muc3RyYXRlZ2llcyBpbXBvcnQgU3ViZ3JhcGhTdHJhdGVneQorZnJvbSBncmVtbGluX3B5dGhvbi5wcm9jZXNzLmdyYXBoX3RyYXZlcnNhbCBpbXBvcnQgX18KKworCitjbGFzcyBUZXN0R3JhcGhCaW5hcnlSZWFkZXIob2JqZWN0KToKKyAgICBncmFwaGJpbmFyeV9yZWFkZXIgPSBHcmFwaEJpbmFyeVJlYWRlcigpCisKKworY2xhc3MgVGVzdEdyYXBoU09OV3JpdGVyKG9iamVjdCk6CisgICAgZ3JhcGhiaW5hcnlfd3JpdGVyID0gR3JhcGhCaW5hcnlXcml0ZXIoKQorICAgIGdyYXBoYmluYXJ5X3JlYWRlciA9IEdyYXBoQmluYXJ5UmVhZGVyKCkKKworICAgIGRlZiB0ZXN0X2ludChzZWxmKToKKyAgICAgICAgeCA9IDEwMAorICAgICAgICBvdXRwdXQgPSBzZWxmLmdyYXBoYmluYXJ5X3JlYWRlci5yZWFkT2JqZWN0KHNlbGYuZ3JhcGhiaW5hcnlfd3JpdGVyLndyaXRlT2JqZWN0KHgpKQorICAgICAgICBhc3NlcnQgeCA9PSBvdXRwdXQKKworICAgIGRlZiB0ZXN0X2xvbmcoc2VsZik6CisgICAgICAgIHggPSBsb25nKDEwMCkKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ncmFwaGJpbmFyeV9yZWFkZXIucmVhZE9iamVjdChzZWxmLmdyYXBoYmluYXJ5X3dyaXRlci53cml0ZU9iamVjdCh4KSkKKyAgICAgICAgYXNzZXJ0IHggPT0gb3V0cHV0CisKKyAgICBkZWYgdGVzdF9mbG9hdChzZWxmKToKKyAgICAgICAgeCA9IGZsb2F0KDEwMC4wMDEpCisgICAgICAgIG91dHB1dCA9IHNlbGYuZ3JhcGhiaW5hcnlfcmVhZGVyLnJlYWRPYmplY3Qoc2VsZi5ncmFwaGJpbmFyeV93cml0ZXIud3JpdGVPYmplY3QoeCkpCisgICAgICAgIGFzc2VydCB4ID09IG91dHB1dAorCisgICAgICAgIHggPSBmbG9hdCgnbmFuJykKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ncmFwaGJpbmFyeV9yZWFkZXIucmVhZE9iamVjdChzZWxmLmdyYXBoYmluYXJ5X3dyaXRlci53cml0ZU9iamVjdCh4KSkKKyAgICAgICAgYXNzZXJ0IG1hdGguaXNuYW4ob3V0cHV0KQorCisgICAgICAgIHggPSBmbG9hdCgnLWluZicpCisgICAgICAgIG91dHB1dCA9IHNlbGYuZ3JhcGhiaW5hcnlfcmVhZGVyLnJlYWRPYmplY3Qoc2VsZi5ncmFwaGJpbmFyeV93cml0ZXIud3JpdGVPYmplY3QoeCkpCisgICAgICAgIGFzc2VydCBtYXRoLmlzaW5mKG91dHB1dCkgYW5kIG91dHB1dCA8IDAKKworICAgICAgICB4ID0gZmxvYXQoJ2luZicpCisgICAgICAgIG91dHB1dCA9IHNlbGYuZ3JhcGhiaW5hcnlfcmVhZGVyLnJlYWRPYmplY3Qoc2VsZi5ncmFwaGJpbmFyeV93cml0ZXIud3JpdGVPYmplY3QoeCkpCisgICAgICAgIGFzc2VydCBtYXRoLmlzaW5mKG91dHB1dCkgYW5kIG91dHB1dCA+IDAKKworICAgIGRlZiB0ZXN0X2RvdWJsZShzZWxmKToKKyAgICAgICAgeCA9IDEwMC4wMDEKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ncmFwaGJpbmFyeV9yZWFkZXIucmVhZE9iamVjdChzZWxmLmdyYXBoYmluYXJ5X3dyaXRlci53cml0ZU9iamVjdCh4KSkKKyAgICAgICAgYXNzZXJ0IHggPT0gb3V0cHV0CisKKyAgICBkZWYgdGVzdF9kYXRlKHNlbGYpOgorICAgICAgICB4ID0gZGF0ZXRpbWUuZGF0ZXRpbWUoMjAxNiwgMTIsIDE0LCAxNiwgMTQsIDM2LCAyOTUwMDApCisgICAgICAgIG91dHB1dCA9IHNlbGYuZ3JhcGhiaW5hcnlfcmVhZGVyLnJlYWRPYmplY3Qoc2VsZi5ncmFwaGJpbmFyeV93cml0ZXIud3JpdGVPYmplY3QoeCkpCisgICAgICAgIGFzc2VydCB4ID09IG91dHB1dAorCisgICAgZGVmIHRlc3RfdGltZXN0YW1wKHNlbGYpOgorICAgICAgICB4ID0gdGltZXN0YW1wKDE0ODE3NTAwNzYyOTUgLyAxMDAwKQorICAgICAgICBvdXRwdXQgPSBzZWxmLmdyYXBoYmluYXJ5X3JlYWRlci5yZWFkT2JqZWN0KHNlbGYuZ3JhcGhiaW5hcnlfd3JpdGVyLndyaXRlT2JqZWN0KHgpKQorICAgICAgICBhc3NlcnQgeCA9PSBvdXRwdXQKKworICAgIGRlZiB0ZXN0X3N0cmluZyhzZWxmKToKKyAgICAgICAgeCA9ICJzZXJpYWxpemUgdGhpcyEiCisgICAgICAgIG91dHB1dCA9IHNlbGYuZ3JhcGhiaW5hcnlfcmVhZGVyLnJlYWRPYmplY3Qoc2VsZi5ncmFwaGJpbmFyeV93cml0ZXIud3JpdGVPYmplY3QoeCkpCisgICAgICAgIGFzc2VydCB4ID09IG91dHB1dAorCisgICAgZGVmIHRlc3RfaG9tb2dlbmVvdXNfbGlzdChzZWxmKToKKyAgICAgICAgeCA9IFsic2VyaWFsaXplIHRoaXMhIiwgInNlcmlhbGl6ZSB0aGF0ISIsICJzZXJpYWxpemUgdGhhdCEiLCJzdG9wIHRlbGxpbmcgbWUgd2hhdCB0byBzZXJpYWxpemUiXQorICAgICAgICBvdXRwdXQgPSBzZWxmLmdyYXBoYmluYXJ5X3JlYWRlci5yZWFkT2JqZWN0KHNlbGYuZ3JhcGhiaW5hcnlfd3JpdGVyLndyaXRlT2JqZWN0KHgpKQorICAgICAgICBhc3NlcnQgeCA9PSBvdXRwdXQKKworICAgIGRlZiB0ZXN0X2hldGVyb2dlbmVvdXNfbGlzdChzZWxmKToKKyAgICAgICAgeCA9IFsic2VyaWFsaXplIHRoaXMhIiwgMCwgInNlcmlhbGl6ZSB0aGF0ISIsICJzZXJpYWxpemUgdGhhdCEiLCAxLCAic3RvcCB0ZWxsaW5nIG1lIHdoYXQgdG8gc2VyaWFsaXplIiwgMl0KKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ncmFwaGJpbmFyeV9yZWFkZXIucmVhZE9iamVjdChzZWxmLmdyYXBoYmluYXJ5X3dyaXRlci53cml0ZU9iamVjdCh4KSkKKyAgICAgICAgYXNzZXJ0IHggPT0gb3V0cHV0CisKKyAgICBkZWYgdGVzdF9ob21vZ2VuZW91c19zZXQoc2VsZik6CisgICAgICAgIHggPSB7InNlcmlhbGl6ZSB0aGlzISIsICJzZXJpYWxpemUgdGhhdCEiLCAic3RvcCB0ZWxsaW5nIG1lIHdoYXQgdG8gc2VyaWFsaXplIn0KKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ncmFwaGJpbmFyeV9yZWFkZXIucmVhZE9iamVjdChzZWxmLmdyYXBoYmluYXJ5X3dyaXRlci53cml0ZU9iamVjdCh4KSkKKyAgICAgICAgYXNzZXJ0IHggPT0gb3V0cHV0CisKKyAgICBkZWYgdGVzdF9oZXRlcm9nZW5lb3VzX3NldChzZWxmKToKKyAgICAgICAgeCA9IHsic2VyaWFsaXplIHRoaXMhIiwgMCwgInNlcmlhbGl6ZSB0aGF0ISIsIDEsICJzdG9wIHRlbGxpbmcgbWUgd2hhdCB0byBzZXJpYWxpemUiLCAyfQorICAgICAgICBvdXRwdXQgPSBzZWxmLmdyYXBoYmluYXJ5X3JlYWRlci5yZWFkT2JqZWN0KHNlbGYuZ3JhcGhiaW5hcnlfd3JpdGVyLndyaXRlT2JqZWN0KHgpKQorICAgICAgICBhc3NlcnQgeCA9PSBvdXRwdXQKKworICAgIGRlZiB0ZXN0X2RpY3Qoc2VsZik6CisgICAgICAgIHggPSB7InlvIjogIndoYXQ/IiwKKyAgICAgICAgICAgICAiZ28iOiAibm8hIiwKKyAgICAgICAgICAgICAibnVtYmVyIjogMTIzLAorICAgICAgICAgICAgIDMyMTogImNyYXp5IHdpdGggdGhlIG51bWJlciBmb3IgYSBrZXkiLAorICAgICAgICAgICAgIDk4NzogWyJnbyIsICJkZWVwIiwgeyJoZXJlIjogIiEifV19CisgICAgICAgIG91dHB1dCA9IHNlbGYuZ3JhcGhiaW5hcnlfcmVhZGVyLnJlYWRPYmplY3Qoc2VsZi5ncmFwaGJpbmFyeV93cml0ZXIud3JpdGVPYmplY3QoeCkpCisgICAgICAgIGFzc2VydCB4ID09IG91dHB1dAorCisgICAgICAgIHggPSB7Im1hcmtvIjogWzY2Nl0sICJub29uZSI6IFsiYmxhaCJdfQorICAgICAgICBvdXRwdXQgPSBzZWxmLmdyYXBoYmluYXJ5X3JlYWRlci5yZWFkT2JqZWN0KHNlbGYuZ3JhcGhiaW5hcnlfd3JpdGVyLndyaXRlT2JqZWN0KHgpKQorICAgICAgICBhc3NlcnQgeCA9PSBvdXRwdXQKKworICAgICAgICB4ID0geyJyaXBwbGUiOiBbXSwgInBldGVyIjogWyJjcmVhdGVkIl0sICJub29uZSI6IFsiYmxhaCJdLCAidmFkYXMiOiBbXSwKKyAgICAgICAgICAgICAiam9zaCI6IFsiY3JlYXRlZCIsICJjcmVhdGVkIl0sICJsb3AiOiBbXSwgIm1hcmtvIjogWzY2NiwgImNyZWF0ZWQiLCAia25vd3MiLCAia25vd3MiXX0KKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ncmFwaGJpbmFyeV9yZWFkZXIucmVhZE9iamVjdChzZWxmLmdyYXBoYmluYXJ5X3dyaXRlci53cml0ZU9iamVjdCh4KSkKKyAgICAgICAgYXNzZXJ0IHggPT0gb3V0cHV0CisKKyAgICBkZWYgdGVzdF91dWlkKHNlbGYpOgorICAgICAgICB4ID0gdXVpZC5VVUlEKCI0MWQyZTI4YS0yMGE0LTRhYjAtYjM3OS1kODEwZGVkZTM3ODYiKQorICAgICAgICBvdXRwdXQgPSBzZWxmLmdyYXBoYmluYXJ5X3JlYWRlci5yZWFkT2JqZWN0KHNlbGYuZ3JhcGhiaW5hcnlfd3JpdGVyLndyaXRlT2JqZWN0KHgpKQorICAgICAgICBhc3NlcnQgeCA9PSBvdXRwdXQKKworICAgIGRlZiB0ZXN0X2VkZ2Uoc2VsZik6CisgICAgICAgIHggPSBFZGdlKDEyMywgVmVydGV4KDEsICdwZXJzb24nKSwgImRldmVsb3BlZCIsIFZlcnRleCgxMCwgInNvZnR3YXJlIikpCisgICAgICAgIG91dHB1dCA9IHNlbGYuZ3JhcGhiaW5hcnlfcmVhZGVyLnJlYWRPYmplY3Qoc2VsZi5ncmFwaGJpbmFyeV93cml0ZXIud3JpdGVPYmplY3QoeCkpCisgICAgICAgIGFzc2VydCB4ID09IG91dHB1dAorICAgICAgICBhc3NlcnQgeC5pblYgPT0gb3V0cHV0LmluVgorICAgICAgICBhc3NlcnQgeC5vdXRWID09IG91dHB1dC5vdXRWCisKKyAgICBkZWYgdGVzdF9wYXRoKHNlbGYpOgorICAgICAgICB4ID0gUGF0aChbIngiLCAieSIsICJ6Il0sIFsxLCAyLCAzXSkKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ncmFwaGJpbmFyeV9yZWFkZXIucmVhZE9iamVjdChzZWxmLmdyYXBoYmluYXJ5X3dyaXRlci53cml0ZU9iamVjdCh4KSkKKyAgICAgICAgYXNzZXJ0IHggPT0gb3V0cHV0CisKKyAgICBkZWYgdGVzdF9wcm9wZXJ0eShzZWxmKToKKyAgICAgICAgeCA9IFByb3BlcnR5KCJuYW1lIiwgInN0ZXBoZW4iLCBOb25lKQorICAgICAgICBvdXRwdXQgPSBzZWxmLmdyYXBoYmluYXJ5X3JlYWRlci5yZWFkT2JqZWN0KHNlbGYuZ3JhcGhiaW5hcnlfd3JpdGVyLndyaXRlT2JqZWN0KHgpKQorICAgICAgICBhc3NlcnQgeCA9PSBvdXRwdXQKKworICAgIGRlZiB0ZXN0X3ZlcnRleChzZWxmKToKKyAgICAgICAgeCA9IFZlcnRleCgxMjMsICJwZXJzb24iKQorICAgICAgICBvdXRwdXQgPSBzZWxmLmdyYXBoYmluYXJ5X3JlYWRlci5yZWFkT2JqZWN0KHNlbGYuZ3JhcGhiaW5hcnlfd3JpdGVyLndyaXRlT2JqZWN0KHgpKQorICAgICAgICBhc3NlcnQgeCA9PSBvdXRwdXQKKworICAgIGRlZiB0ZXN0X3ZlcnRleHByb3BlcnR5KHNlbGYpOgorICAgICAgICB4ID0gVmVydGV4UHJvcGVydHkoMTIzLCAibmFtZSIsICJzdGVwaGVuIiwgTm9uZSkKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ncmFwaGJpbmFyeV9yZWFkZXIucmVhZE9iamVjdChzZWxmLmdyYXBoYmluYXJ5X3dyaXRlci53cml0ZU9iamVjdCh4KSkKKyAgICAgICAgYXNzZXJ0IHggPT0gb3V0cHV0CisgICAgICAgIAorICAgIGRlZiB0ZXN0X2JhcnJpZXIoc2VsZik6CisgICAgICAgIHggPSBCYXJyaWVyLm5vcm1TYWNrCisgICAgICAgIG91dHB1dCA9IHNlbGYuZ3JhcGhiaW5hcnlfcmVhZGVyLnJlYWRPYmplY3Qoc2VsZi5ncmFwaGJpbmFyeV93cml0ZXIud3JpdGVPYmplY3QoeCkpCisgICAgICAgIGFzc2VydCB4ID09IG91dHB1dAorCisgICAgZGVmIHRlc3RfYmluZGluZyhzZWxmKToKKyAgICAgICAgeCA9IEJpbmRpbmcoIm5hbWUiLCAibWFya28iKQorICAgICAgICBvdXRwdXQgPSBzZWxmLmdyYXBoYmluYXJ5X3JlYWRlci5yZWFkT2JqZWN0KHNlbGYuZ3JhcGhiaW5hcnlfd3JpdGVyLndyaXRlT2JqZWN0KHgpKQorICAgICAgICBhc3NlcnQgeCA9PSBvdXRwdXQKKworICAgIGRlZiB0ZXN0X2J5dGVjb2RlKHNlbGYpOgorICAgICAgICB4ID0gQnl0ZWNvZGUoKQorICAgICAgICB4LnNvdXJjZV9pbnN0cnVjdGlvbnMuYXBwZW5kKFsid2l0aFN0cmF0ZWdpZXMiLCAiU3ViZ3JhcGhTdHJhdGVneSJdKQorICAgICAgICB4LnN0ZXBfaW5zdHJ1Y3Rpb25zLmFwcGVuZChbIlYiLCAxLCAyLCAzXSkKKyAgICAgICAgeC5zdGVwX2luc3RydWN0aW9ucy5hcHBlbmQoWyJvdXQiXSkKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ncmFwaGJpbmFyeV9yZWFkZXIucmVhZE9iamVjdChzZWxmLmdyYXBoYmluYXJ5X3dyaXRlci53cml0ZU9iamVjdCh4KSkKKyAgICAgICAgYXNzZXJ0IHggPT0gb3V0cHV0CisKKyAgICBkZWYgdGVzdF9ieXRlKHNlbGYpOgorICAgICAgICB4ID0gaW50Ll9fbmV3X18oU2luZ2xlQnl0ZSwgMSkKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ncmFwaGJpbmFyeV9yZWFkZXIucmVhZE9iamVjdChzZWxmLmdyYXBoYmluYXJ5X3dyaXRlci53cml0ZU9iamVjdCh4KSkKKyAgICAgICAgYXNzZXJ0IHggPT0gb3V0cHV0CisKKyAgICBkZWYgdGVzdF9ieXRlYnVmZmVyKHNlbGYpOgorICAgICAgICB4ID0gQnl0ZUJ1ZmZlclR5cGUoImMyOXRaU0JpZVhSbGN5Qm1iM0lnZVc5MSIsICJ1dGY4IikKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ncmFwaGJpbmFyeV9yZWFkZXIucmVhZE9iamVjdChzZWxmLmdyYXBoYmluYXJ5X3dyaXRlci53cml0ZU9iamVjdCh4KSkKKyAgICAgICAgYXNzZXJ0IHggPT0gb3V0cHV0CisKKyAgICBkZWYgdGVzdF9ib29sZWFuKHNlbGYpOgorICAgICAgICB4ID0gVHJ1ZQorICAgICAgICBvdXRwdXQgPSBzZWxmLmdyYXBoYmluYXJ5X3JlYWRlci5yZWFkT2JqZWN0KHNlbGYuZ3JhcGhiaW5hcnlfd3JpdGVyLndyaXRlT2JqZWN0KHgpKQorICAgICAgICBhc3NlcnQgeCA9PSBvdXRwdXQKKworICAgICAgICB4ID0gRmFsc2UKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ncmFwaGJpbmFyeV9yZWFkZXIucmVhZE9iamVjdChzZWxmLmdyYXBoYmluYXJ5X3dyaXRlci53cml0ZU9iamVjdCh4KSkKKyAgICAgICAgYXNzZXJ0IHggPT0gb3V0cHV0CisKKyAgICBkZWYgdGVzdF9jaGFyKHNlbGYpOgorICAgICAgICB4ID0gc3RyLl9fbmV3X18oU2luZ2xlQ2hhciwgY2hyKDc2KSkKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ncmFwaGJpbmFyeV9yZWFkZXIucmVhZE9iamVjdChzZWxmLmdyYXBoYmluYXJ5X3dyaXRlci53cml0ZU9iamVjdCh4KSkKKyAgICAgICAgYXNzZXJ0IHggPT0gb3V0cHV0CisKKyAgICAgICAgaWYgc2l4LlBZMzoKKyAgICAgICAgICAgIHggPSBzdHIuX19uZXdfXyhTaW5nbGVDaGFyLCBjaHIoNTczNDQpKQorICAgICAgICAgICAgb3V0cHV0ID0gc2VsZi5ncmFwaGJpbmFyeV9yZWFkZXIucmVhZE9iamVjdChzZWxmLmdyYXBoYmluYXJ5X3dyaXRlci53cml0ZU9iamVjdCh4KSkKKyAgICAgICAgICAgIGFzc2VydCB4ID09IG91dHB1dAorCisgICAgZGVmIHRlc3RfZHVyYXRpb24oc2VsZik6CisgICAgICAgIHggPSBkYXRldGltZS50aW1lZGVsdGEoc2Vjb25kcz0xMDAwLCBtaWNyb3NlY29uZHM9MTAwMCkKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ncmFwaGJpbmFyeV9yZWFkZXIucmVhZE9iamVjdChzZWxmLmdyYXBoYmluYXJ5X3dyaXRlci53cml0ZU9iamVjdCh4KSkKKyAgICAgICAgYXNzZXJ0IHggPT0gb3V0cHV0CisgICAgICAgIApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL3Rlc3RzL3N0cnVjdHVyZS9pby90ZXN0X2dyYXBoc29uVjJkMC5weSBiL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi90ZXN0cy9zdHJ1Y3R1cmUvaW8vdGVzdF9ncmFwaHNvblYyZDAucHkKaW5kZXggZmE4ZDhiZi4uYjkwMjVlOCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL3Rlc3RzL3N0cnVjdHVyZS9pby90ZXN0X2dyYXBoc29uVjJkMC5weQorKysgYi9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vdGVzdHMvc3RydWN0dXJlL2lvL3Rlc3RfZ3JhcGhzb25WMmQwLnB5CkBAIC0yMDIsMTAgKzIwMiw3IEBACiAgICAgICAgICAgICAiIiJ7IkB0eXBlIjoiZzpQYXRoIiwiQHZhbHVlIjp7ImxhYmVscyI6W1siYSJdLFsiYiIsImMiXSxbXV0sIm9iamVjdHMiOlt7IkB0eXBlIjoiZzpWZXJ0ZXgiLCJAdmFsdWUiOnsiaWQiOnsiQHR5cGUiOiJnOkludDMyIiwiQHZhbHVlIjoxfSwibGFiZWwiOiJwZXJzb24iLCJwcm9wZXJ0aWVzIjp7Im5hbWUiOlt7IkB0eXBlIjoiZzpWZXJ0ZXhQcm9wZXJ0eSIsIkB2YWx1ZSI6eyJpZCI6eyJAdHlwZSI6Imc6SW50NjQiLCJAdmFsdWUiOjB9LCJ2YWx1ZSI6Im1hcmtvIiwibGFiZWwiOiJuYW1lIn19XSwiYWdlIjpbeyJAdHlwZSI6Imc6VmVydGV4UHJvcGVydHkiLCJAdmFsdWUiOnsiaWQiOnsiQHR5cGUiOiJnOkludDY0IiwiQHZhbHVlIjoxfSwidmFsdWUiOnsiQHR5cGUiOiJnOkludDMyIiwiQHZhbHVlIjoyOX0sImxhYmVsIjoiYWdlIn19XX19fSx7IkB0eXBlIjoiZzpWZXJ0ZXgiLCJAdmFsdWUiOnsiaWQiOnsiQHR5cGUiOiJnOkludDMyIiwiQHZhbHVlIjozfSwibGFiZWwiOiJzb2Z0d2FyZSIsInByb3BlcnRpZXMiOnsibmFtZSI6W3siQHR5cGUiOiJnOlZlcnRleFByb3BlcnR5IiwiQHZhbHVlIjp7ImlkIjp7IkB0eXBlIjoiZzpJbnQ2NCIsIkB2YWx1ZSI6NH0sInZhbHVlIjoibG9wIiwibGFiZWwiOiJuYW1lIn19XSwibGFuZyI6W3siQHR5cGUiOiJnOlZlcnRleFByb3BlcnR5IiwiQHZhbHVlIjp7ImlkIjp7IkB0eXBlIjoiZzpJbnQ2NCIsIkB2YWx1ZSI6NX0sInZhbHVlIjoiamF2YSIsImxhYmVsIjoibGFuZyJ9fV19fX0sImxvcCJdfX0iIiIKICAgICAgICAgKQogICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShwYXRoLCBQYXRoKQotICAgICAgICBpZiBzaXguUFkzOgotICAgICAgICAgICAgYXNzZXJ0ICJbdlsxXSwgdlszXSwgJ2xvcCddIiA9PSBzdHIocGF0aCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGFzc2VydCAiW3ZbMV0sIHZbM10sIHUnbG9wJ10iID09IHN0cihwYXRoKQorICAgICAgICBhc3NlcnQgInBhdGhbdlsxXSwgdlszXSwgbG9wXSIgPT0gc3RyKHBhdGgpCiAgICAgICAgIGFzc2VydCBWZXJ0ZXgoMSkgPT0gcGF0aFswXQogICAgICAgICBhc3NlcnQgVmVydGV4KDEpID09IHBhdGhbImEiXQogICAgICAgICBhc3NlcnQgImxvcCIgPT0gcGF0aFsyXQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL3Rlc3RzL3N0cnVjdHVyZS9pby90ZXN0X2dyYXBoc29uVjNkMC5weSBiL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi90ZXN0cy9zdHJ1Y3R1cmUvaW8vdGVzdF9ncmFwaHNvblYzZDAucHkKaW5kZXggMjAwZTAxNC4uN2FhZmQ2YSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL3Rlc3RzL3N0cnVjdHVyZS9pby90ZXN0X2dyYXBoc29uVjNkMC5weQorKysgYi9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vdGVzdHMvc3RydWN0dXJlL2lvL3Rlc3RfZ3JhcGhzb25WM2QwLnB5CkBAIC03OSw2ICs3OSwxNSBAQAogICAgICAgICBhc3NlcnQgeFsnYiddID09ICJtYXJrbyIKICAgICAgICAgYXNzZXJ0IGxlbih4KSA9PSAyCiAKKyAgICAgICAgIyBCdWxrU2V0IGdldHMgY29lcmNlZCB0byBhIExpc3QgLSBib3RoIGhhdmUgdGhlIHNhbWUgYmVoYXZpb3IKKyAgICAgICAgeCA9IHNlbGYuZ3JhcGhzb25fcmVhZGVyLnJlYWRPYmplY3QoCisgICAgICAgICAgICBqc29uLmR1bXBzKHsiQHR5cGUiOiAiZzpCdWxrU2V0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiOiBbIm1hcmtvIiwgeyJAdHlwZSI6ICJnOkludDY0IiwgIkB2YWx1ZSI6IDF9LCAiam9zaCIsIHsiQHR5cGUiOiAiZzpJbnQ2NCIsICJAdmFsdWUiOiAzfV19KSkKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoeCwgbGlzdCkKKyAgICAgICAgYXNzZXJ0IGxlbih4KSA9PSA0CisgICAgICAgIGFzc2VydCB4LmNvdW50KCJtYXJrbyIpID09IDEKKyAgICAgICAgYXNzZXJ0IHguY291bnQoImpvc2giKSA9PSAzCisKICAgICBkZWYgdGVzdF9udW1iZXJfaW5wdXQoc2VsZik6CiAgICAgICAgIHggPSBzZWxmLmdyYXBoc29uX3JlYWRlci5yZWFkT2JqZWN0KGpzb24uZHVtcHMoewogICAgICAgICAgICAgIkB0eXBlIjogImd4OkJ5dGUiLApAQCAtMjM5LDEwICsyNDgsNyBAQAogICAgICAgICAgICAgIiIieyJAdHlwZSI6Imc6UGF0aCIsIkB2YWx1ZSI6eyJsYWJlbHMiOnsiQHR5cGUiOiJnOkxpc3QiLCJAdmFsdWUiOlt7IkB0eXBlIjoiZzpTZXQiLCJAdmFsdWUiOlsiYSJdfSx7IkB0eXBlIjoiZzpTZXQiLCJAdmFsdWUiOlsiYiIsImMiXX0seyJAdHlwZSI6Imc6U2V0IiwiQHZhbHVlIjpbXX1dfSwib2JqZWN0cyI6eyJAdHlwZSI6Imc6TGlzdCIsIkB2YWx1ZSI6W3siQHR5cGUiOiJnOlZlcnRleCIsIkB2YWx1ZSI6eyJpZCI6eyJAdHlwZSI6Imc6SW50MzIiLCJAdmFsdWUiOjF9LCJsYWJlbCI6InBlcnNvbiIsInByb3BlcnRpZXMiOnsibmFtZSI6W3siQHR5cGUiOiJnOlZlcnRleFByb3BlcnR5IiwiQHZhbHVlIjp7ImlkIjp7IkB0eXBlIjoiZzpJbnQ2NCIsIkB2YWx1ZSI6MH0sInZhbHVlIjoibWFya28iLCJsYWJlbCI6Im5hbWUifX1dLCJhZ2UiOlt7IkB0eXBlIjoiZzpWZXJ0ZXhQcm9wZXJ0eSIsIkB2YWx1ZSI6eyJpZCI6eyJAdHlwZSI6Imc6SW50NjQiLCJAdmFsdWUiOjF9LCJ2YWx1ZSI6eyJAdHlwZSI6Imc6SW50MzIiLCJAdmFsdWUiOjI5fSwibGFiZWwiOiJhZ2UifX1dfX19LHsiQHR5cGUiOiJnOlZlcnRleCIsIkB2YWx1ZSI6eyJpZCI6eyJAdHlwZSI6Imc6SW50MzIiLCJAdmFsdWUiOjN9LCJsYWJlbCI6InNvZnR3YXJlIiwicHJvcGVydGllcyI6eyJuYW1lIjpbeyJAdHlwZSI6Imc6VmVydGV4UHJvcGVydHkiLCJAdmFsdWUiOnsiaWQiOnsiQHR5cGUiOiJnOkludDY0IiwiQHZhbHVlIjo0fSwidmFsdWUiOiJsb3AiLCJsYWJlbCI6Im5hbWUifX1dLCJsYW5nIjpbeyJAdHlwZSI6Imc6VmVydGV4UHJvcGVydHkiLCJAdmFsdWUiOnsiaWQiOnsiQHR5cGUiOiJnOkludDY0IiwiQHZhbHVlIjo1fSwidmFsdWUiOiJqYXZhIiwibGFiZWwiOiJsYW5nIn19XX19fSwibG9wIl19fX0iIiIKICAgICAgICAgKQogICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShwYXRoLCBQYXRoKQotICAgICAgICBpZiBzaXguUFkzOgotICAgICAgICAgICAgYXNzZXJ0ICJbdlsxXSwgdlszXSwgJ2xvcCddIiA9PSBzdHIocGF0aCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGFzc2VydCAiW3ZbMV0sIHZbM10sIHUnbG9wJ10iID09IHN0cihwYXRoKQorICAgICAgICBhc3NlcnQgInBhdGhbdlsxXSwgdlszXSwgbG9wXSIgPT0gc3RyKHBhdGgpCiAgICAgICAgIGFzc2VydCBWZXJ0ZXgoMSkgPT0gcGF0aFswXQogICAgICAgICBhc3NlcnQgVmVydGV4KDEpID09IHBhdGhbImEiXQogICAgICAgICBhc3NlcnQgImxvcCIgPT0gcGF0aFsyXQpAQCAtNDAxLDcgKzQwNyw4IEBACiAgICAgICAgIGFzc2VydCByZXN1bHQgPT0ganNvbi5sb2FkcyhzZWxmLmdyYXBoc29uX3dyaXRlci53cml0ZU9iamVjdChQLndpdGhpbigxKSkpCiAKICAgICBkZWYgdGVzdF9zdHJhdGVnaWVzKHNlbGYpOgotICAgICAgICAjIHdlIGhhdmUgYSBwcm94eSBtb2RlbCBmb3Igbm93IGdpdmVuIHRoYXQgd2UgZG9uJ3Qgd2FudCB0byBoYXZlIHRvIGhhdmUgZzpYWFggYWxsIHJlZ2lzdGVyZWQgb24gdGhlIEdyZW1saW4gdHJhdmVyc2FsIG1hY2hpbmUgKHlldCkKKyAgICAgICAgIyB3ZSBoYXZlIGEgcHJveHkgbW9kZWwgZm9yIG5vdyBnaXZlbiB0aGF0IHdlIGRvbid0IHdhbnQgdG8gaGF2ZSB0byBoYXZlIGc6WFhYIGFsbCByZWdpc3RlcmVkIG9uIHRoZSAKKyAgICAgICAgIyBHcmVtbGluIHRyYXZlcnNhbCBtYWNoaW5lICh5ZXQpCiAgICAgICAgIGFzc2VydCB7IkB0eXBlIjogImc6U3ViZ3JhcGhTdHJhdGVneSIsICJAdmFsdWUiOiB7fX0gPT0ganNvbi5sb2FkcygKICAgICAgICAgICAgIHNlbGYuZ3JhcGhzb25fd3JpdGVyLndyaXRlT2JqZWN0KFN1YmdyYXBoU3RyYXRlZ3kpKQogICAgICAgICBhc3NlcnQgeyJAdHlwZSI6ICJnOlN1YmdyYXBoU3RyYXRlZ3kiLCAiQHZhbHVlIjogewpAQCAtNTI2LDQ0ICs1MzMsMyBAQAogICAgICAgICBjID0gc3RyLl9fbmV3X18oU2luZ2xlQ2hhciwgY2hyKDc2KSkKICAgICAgICAgb3V0cHV0ID0gc2VsZi5ncmFwaHNvbl93cml0ZXIud3JpdGVPYmplY3QoYykKICAgICAgICAgYXNzZXJ0IGV4cGVjdGVkID09IG91dHB1dAotCi0KLWNsYXNzIFRlc3RGdW5jdGlvbmFsR3JhcGhTT05JTyhvYmplY3QpOgotICAgICIiIkZ1bmN0aW9uYWwgSU8gdGVzdHMiIiIKLQotICAgIGRlZiB0ZXN0X3RpbWVzdGFtcChzZWxmLCByZW1vdGVfY29ubmVjdGlvbik6Ci0gICAgICAgIGcgPSBHcmFwaCgpLnRyYXZlcnNhbCgpLndpdGhSZW1vdGUocmVtb3RlX2Nvbm5lY3Rpb24pCi0gICAgICAgIHRzID0gdGltZXN0YW1wKDE0ODE3NTAwNzYyOTUgLyAxMDAwKQotICAgICAgICByZXNwID0gZy5hZGRWKCd0ZXN0X3ZlcnRleCcpLnByb3BlcnR5KCd0cycsIHRzKQotICAgICAgICByZXNwID0gcmVzcC50b0xpc3QoKQotICAgICAgICB2aWQgPSByZXNwWzBdLmlkCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRzX3Byb3AgPSBnLlYodmlkKS5wcm9wZXJ0aWVzKCd0cycpLnRvTGlzdCgpWzBdCi0gICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZSh0c19wcm9wLnZhbHVlLCB0aW1lc3RhbXApCi0gICAgICAgICAgICBhc3NlcnQgdHNfcHJvcC52YWx1ZSA9PSB0cwotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgZy5WKHZpZCkuZHJvcCgpLml0ZXJhdGUoKQotCi0gICAgZGVmIHRlc3RfZGF0ZXRpbWUoc2VsZiwgcmVtb3RlX2Nvbm5lY3Rpb24pOgotICAgICAgICBnID0gR3JhcGgoKS50cmF2ZXJzYWwoKS53aXRoUmVtb3RlKHJlbW90ZV9jb25uZWN0aW9uKQotICAgICAgICBkdCA9IGRhdGV0aW1lLmRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAoMTQ4MTc1MDA3NjI5NSAvIDEwMDApCi0gICAgICAgIHJlc3AgPSBnLmFkZFYoJ3Rlc3RfdmVydGV4JykucHJvcGVydHkoJ2R0JywgZHQpLnRvTGlzdCgpCi0gICAgICAgIHZpZCA9IHJlc3BbMF0uaWQKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZHRfcHJvcCA9IGcuVih2aWQpLnByb3BlcnRpZXMoJ2R0JykudG9MaXN0KClbMF0KLSAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGR0X3Byb3AudmFsdWUsIGRhdGV0aW1lLmRhdGV0aW1lKQotICAgICAgICAgICAgYXNzZXJ0IGR0X3Byb3AudmFsdWUgPT0gZHQKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGcuVih2aWQpLmRyb3AoKS5pdGVyYXRlKCkKLQotICAgIGRlZiB0ZXN0X3V1aWQoc2VsZiwgcmVtb3RlX2Nvbm5lY3Rpb24pOgotICAgICAgICBnID0gR3JhcGgoKS50cmF2ZXJzYWwoKS53aXRoUmVtb3RlKHJlbW90ZV9jb25uZWN0aW9uKQotICAgICAgICB1aWQgPSB1dWlkLlVVSUQoIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIpCi0gICAgICAgIHJlc3AgPSBnLmFkZFYoJ3Rlc3RfdmVydGV4JykucHJvcGVydHkoJ3V1aWQnLCB1aWQpLnRvTGlzdCgpCi0gICAgICAgIHZpZCA9IHJlc3BbMF0uaWQKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdWlkX3Byb3AgPSBnLlYodmlkKS5wcm9wZXJ0aWVzKCd1dWlkJykudG9MaXN0KClbMF0KLSAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHVpZF9wcm9wLnZhbHVlLCB1dWlkLlVVSUQpCi0gICAgICAgICAgICBhc3NlcnQgdWlkX3Byb3AudmFsdWUgPT0gdWlkCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBnLlYodmlkKS5kcm9wKCkuaXRlcmF0ZSgpCmRpZmYgLS1naXQgYS9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vdGVzdHMvc3RydWN0dXJlL3Rlc3RfZ3JhcGgucHkgYi9ncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qeXRob24vdGVzdHMvc3RydWN0dXJlL3Rlc3RfZ3JhcGgucHkKaW5kZXggZDlkY2YzNy4uNjc4NDlmNiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1weXRob24vc3JjL21haW4vanl0aG9uL3Rlc3RzL3N0cnVjdHVyZS90ZXN0X2dyYXBoLnB5CisrKyBiL2dyZW1saW4tcHl0aG9uL3NyYy9tYWluL2p5dGhvbi90ZXN0cy9zdHJ1Y3R1cmUvdGVzdF9ncmFwaC5weQpAQCAtNzUsNyArNzUsNyBAQAogCiAgICAgZGVmIHRlc3RfcGF0aChzZWxmKToKICAgICAgICAgcGF0aCA9IFBhdGgoW3NldChbImEiLCAiYiJdKSwgc2V0KFsiYyIsICJiIl0pLCBzZXQoW10pXSwgWzEsIFZlcnRleCgxKSwgImhlbGxvIl0pCi0gICAgICAgIGFzc2VydCAiWzEsIHZbMV0sICdoZWxsbyddIiA9PSBzdHIocGF0aCkKKyAgICAgICAgYXNzZXJ0ICJwYXRoWzEsIHZbMV0sIGhlbGxvXSIgPT0gc3RyKHBhdGgpCiAgICAgICAgIGFzc2VydCAxID09IHBhdGhbImEiXQogICAgICAgICBhc3NlcnQgVmVydGV4KDEpID09IHBhdGhbImMiXQogICAgICAgICBhc3NlcnQgWzEsIFZlcnRleCgxKV0gPT0gcGF0aFsiYiJdCmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9jb25mL2dyZW1saW4tc2VydmVyLWNsYXNzaWMueWFtbCBiL2dyZW1saW4tc2VydmVyL2NvbmYvZ3JlbWxpbi1zZXJ2ZXItY2xhc3NpYy55YW1sCmluZGV4IGJhN2JkYTUuLjI0OGE2YmYgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tc2VydmVyL2NvbmYvZ3JlbWxpbi1zZXJ2ZXItY2xhc3NpYy55YW1sCisrKyBiL2dyZW1saW4tc2VydmVyL2NvbmYvZ3JlbWxpbi1zZXJ2ZXItY2xhc3NpYy55YW1sCkBAIC0zMCw2ICszMCw4IEBACiAgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcnlvTWVzc2FnZVNlcmlhbGl6ZXJWM2QwLCBjb25maWc6IHsgaW9SZWdpc3RyaWVzOiBbb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi50aW5rZXJncmFwaC5zdHJ1Y3R1cmUuVGlua2VySW9SZWdpc3RyeVYzZDBdIH19ICAgICAgICAgICAgIyBhcHBsaWNhdGlvbi92bmQuZ3JlbWxpbi12My4wK2dyeW8KICAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAsIGNvbmZpZzogeyBzZXJpYWxpemVSZXN1bHRUb1N0cmluZzogdHJ1ZSB9fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFwcGxpY2F0aW9uL3ZuZC5ncmVtbGluLXYzLjArZ3J5by1zdHJpbmdkCiAgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjNkMCwgY29uZmlnOiB7IGlvUmVnaXN0cmllczogW29yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguc3RydWN0dXJlLlRpbmtlcklvUmVnaXN0cnlWM2QwXSB9fSAgICAgICAgIyBhcHBsaWNhdGlvbi9qc29uCisgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjEgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhcHBsaWNhdGlvbi92bmQuZ3JhcGhiaW5hcnktdjEuMAorICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxLCBjb25maWc6IHsgc2VyaWFsaXplUmVzdWx0VG9TdHJpbmc6IHRydWUgfX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYXBwbGljYXRpb24vdm5kLmdyYXBoYmluYXJ5LXYxLjAtc3RyaW5nZAogbWV0cmljczogewogICBzbGY0alJlcG9ydGVyOiB7ZW5hYmxlZDogdHJ1ZSwgaW50ZXJ2YWw6IDE4MDAwMH19CiBzdHJpY3RUcmFuc2FjdGlvbk1hbmFnZW1lbnQ6IGZhbHNlCmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9jb25mL2dyZW1saW4tc2VydmVyLW1vZGVybi1weS55YW1sIGIvZ3JlbWxpbi1zZXJ2ZXIvY29uZi9ncmVtbGluLXNlcnZlci1tb2Rlcm4tcHkueWFtbAppbmRleCBjMDMxYzIzLi4zMTkzZDVmIDEwMDY0NAotLS0gYS9ncmVtbGluLXNlcnZlci9jb25mL2dyZW1saW4tc2VydmVyLW1vZGVybi1weS55YW1sCisrKyBiL2dyZW1saW4tc2VydmVyL2NvbmYvZ3JlbWxpbi1zZXJ2ZXItbW9kZXJuLXB5LnlhbWwKQEAgLTQ1LDYgKzQ1LDggQEAKICAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAsIGNvbmZpZzogeyBpb1JlZ2lzdHJpZXM6IFtvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnN0cnVjdHVyZS5UaW5rZXJJb1JlZ2lzdHJ5VjNkMF0gfX0gICAgICAgICAgICAjIGFwcGxpY2F0aW9uL3ZuZC5ncmVtbGluLXYzLjArZ3J5bwogICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMCwgY29uZmlnOiB7IHNlcmlhbGl6ZVJlc3VsdFRvU3RyaW5nOiB0cnVlIH19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYXBwbGljYXRpb24vdm5kLmdyZW1saW4tdjMuMCtncnlvLXN0cmluZ2QKICAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWM2QwLCBjb25maWc6IHsgaW9SZWdpc3RyaWVzOiBbb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi50aW5rZXJncmFwaC5zdHJ1Y3R1cmUuVGlua2VySW9SZWdpc3RyeVYzZDBdIH19ICAgICAgICAjIGFwcGxpY2F0aW9uL2pzb24KKyAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMSB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFwcGxpY2F0aW9uL3ZuZC5ncmFwaGJpbmFyeS12MS4wCisgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjEsIGNvbmZpZzogeyBzZXJpYWxpemVSZXN1bHRUb1N0cmluZzogdHJ1ZSB9fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhcHBsaWNhdGlvbi92bmQuZ3JhcGhiaW5hcnktdjEuMC1zdHJpbmdkCiBtZXRyaWNzOiB7CiAgIHNsZjRqUmVwb3J0ZXI6IHtlbmFibGVkOiB0cnVlLCBpbnRlcnZhbDogMTgwMDAwfX0KIHN0cmljdFRyYW5zYWN0aW9uTWFuYWdlbWVudDogZmFsc2UKZGlmZiAtLWdpdCBhL2dyZW1saW4tc2VydmVyL2NvbmYvZ3JlbWxpbi1zZXJ2ZXItbW9kZXJuLXJlYWRvbmx5LnlhbWwgYi9ncmVtbGluLXNlcnZlci9jb25mL2dyZW1saW4tc2VydmVyLW1vZGVybi1yZWFkb25seS55YW1sCmluZGV4IDVhM2Y1ZGIuLjczODhmNzMgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tc2VydmVyL2NvbmYvZ3JlbWxpbi1zZXJ2ZXItbW9kZXJuLXJlYWRvbmx5LnlhbWwKKysrIGIvZ3JlbWxpbi1zZXJ2ZXIvY29uZi9ncmVtbGluLXNlcnZlci1tb2Rlcm4tcmVhZG9ubHkueWFtbApAQCAtMzAsNiArMzAsOCBAQAogICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMCwgY29uZmlnOiB7IGlvUmVnaXN0cmllczogW29yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguc3RydWN0dXJlLlRpbmtlcklvUmVnaXN0cnlWM2QwXSB9fSAgICAgICAgICAgICMgYXBwbGljYXRpb24vdm5kLmdyZW1saW4tdjMuMCtncnlvCiAgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcnlvTWVzc2FnZVNlcmlhbGl6ZXJWM2QwLCBjb25maWc6IHsgc2VyaWFsaXplUmVzdWx0VG9TdHJpbmc6IHRydWUgfX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhcHBsaWNhdGlvbi92bmQuZ3JlbWxpbi12My4wK2dyeW8tc3RyaW5nZAogICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYzZDAsIGNvbmZpZzogeyBpb1JlZ2lzdHJpZXM6IFtvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnN0cnVjdHVyZS5UaW5rZXJJb1JlZ2lzdHJ5VjNkMF0gfX0gICAgICAgICMgYXBwbGljYXRpb24vanNvbgorICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYXBwbGljYXRpb24vdm5kLmdyYXBoYmluYXJ5LXYxLjAKKyAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMSwgY29uZmlnOiB7IHNlcmlhbGl6ZVJlc3VsdFRvU3RyaW5nOiB0cnVlIH19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFwcGxpY2F0aW9uL3ZuZC5ncmFwaGJpbmFyeS12MS4wLXN0cmluZ2QKIG1ldHJpY3M6IHsKICAgc2xmNGpSZXBvcnRlcjoge2VuYWJsZWQ6IHRydWUsIGludGVydmFsOiAxODAwMDB9fQogc3RyaWN0VHJhbnNhY3Rpb25NYW5hZ2VtZW50OiBmYWxzZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1zZXJ2ZXIvY29uZi9ncmVtbGluLXNlcnZlci1tb2Rlcm4ueWFtbCBiL2dyZW1saW4tc2VydmVyL2NvbmYvZ3JlbWxpbi1zZXJ2ZXItbW9kZXJuLnlhbWwKaW5kZXggNzk3YzQ4NS4uNWY4MzUwOCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1zZXJ2ZXIvY29uZi9ncmVtbGluLXNlcnZlci1tb2Rlcm4ueWFtbAorKysgYi9ncmVtbGluLXNlcnZlci9jb25mL2dyZW1saW4tc2VydmVyLW1vZGVybi55YW1sCkBAIC0zMSw2ICszMSw4IEBACiAgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcnlvTWVzc2FnZVNlcmlhbGl6ZXJWM2QwLCBjb25maWc6IHsgaW9SZWdpc3RyaWVzOiBbb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi50aW5rZXJncmFwaC5zdHJ1Y3R1cmUuVGlua2VySW9SZWdpc3RyeVYzZDBdIH19ICAgICAgICAgICAgIyBhcHBsaWNhdGlvbi92bmQuZ3JlbWxpbi12My4wK2dyeW8KICAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAsIGNvbmZpZzogeyBzZXJpYWxpemVSZXN1bHRUb1N0cmluZzogdHJ1ZSB9fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFwcGxpY2F0aW9uL3ZuZC5ncmVtbGluLXYzLjArZ3J5by1zdHJpbmdkCiAgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjNkMCwgY29uZmlnOiB7IGlvUmVnaXN0cmllczogW29yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguc3RydWN0dXJlLlRpbmtlcklvUmVnaXN0cnlWM2QwXSB9fSAgICAgICAgIyBhcHBsaWNhdGlvbi9qc29uCisgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjEgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhcHBsaWNhdGlvbi92bmQuZ3JhcGhiaW5hcnktdjEuMAorICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxLCBjb25maWc6IHsgc2VyaWFsaXplUmVzdWx0VG9TdHJpbmc6IHRydWUgfX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYXBwbGljYXRpb24vdm5kLmdyYXBoYmluYXJ5LXYxLjAtc3RyaW5nZAogbWV0cmljczogewogICBzbGY0alJlcG9ydGVyOiB7ZW5hYmxlZDogdHJ1ZSwgaW50ZXJ2YWw6IDE4MDAwMH19CiBzdHJpY3RUcmFuc2FjdGlvbk1hbmFnZW1lbnQ6IGZhbHNlCmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9jb25mL2dyZW1saW4tc2VydmVyLW5lbzRqLnlhbWwgYi9ncmVtbGluLXNlcnZlci9jb25mL2dyZW1saW4tc2VydmVyLW5lbzRqLnlhbWwKaW5kZXggN2ExODVmNy4uMDhlNDJhOCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1zZXJ2ZXIvY29uZi9ncmVtbGluLXNlcnZlci1uZW80ai55YW1sCisrKyBiL2dyZW1saW4tc2VydmVyL2NvbmYvZ3JlbWxpbi1zZXJ2ZXItbmVvNGoueWFtbApAQCAtNDEsNiArNDEsOCBAQAogICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMCwgY29uZmlnOiB7IGlvUmVnaXN0cmllczogW29yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguc3RydWN0dXJlLlRpbmtlcklvUmVnaXN0cnlWM2QwXSB9fSAgICAgICAgICAgICMgYXBwbGljYXRpb24vdm5kLmdyZW1saW4tdjMuMCtncnlvCiAgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcnlvTWVzc2FnZVNlcmlhbGl6ZXJWM2QwLCBjb25maWc6IHsgc2VyaWFsaXplUmVzdWx0VG9TdHJpbmc6IHRydWUgfX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhcHBsaWNhdGlvbi92bmQuZ3JlbWxpbi12My4wK2dyeW8tc3RyaW5nZAogICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYzZDAsIGNvbmZpZzogeyBpb1JlZ2lzdHJpZXM6IFtvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnN0cnVjdHVyZS5UaW5rZXJJb1JlZ2lzdHJ5VjNkMF0gfX0gICAgICAgICMgYXBwbGljYXRpb24vanNvbgorICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYXBwbGljYXRpb24vdm5kLmdyYXBoYmluYXJ5LXYxLjAKKyAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMSwgY29uZmlnOiB7IHNlcmlhbGl6ZVJlc3VsdFRvU3RyaW5nOiB0cnVlIH19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFwcGxpY2F0aW9uL3ZuZC5ncmFwaGJpbmFyeS12MS4wLXN0cmluZ2QKIHByb2Nlc3NvcnM6CiAgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc2VydmVyLm9wLnNlc3Npb24uU2Vzc2lvbk9wUHJvY2Vzc29yLCBjb25maWc6IHsgc2Vzc2lvblRpbWVvdXQ6IDI4ODAwMDAwIH19CiAgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc2VydmVyLm9wLnRyYXZlcnNhbC5UcmF2ZXJzYWxPcFByb2Nlc3NvciwgY29uZmlnOiB7IGNhY2hlRXhwaXJhdGlvblRpbWU6IDYwMDAwMCwgY2FjaGVNYXhTaXplOiAxMDAwIH19CmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9jb25mL2dyZW1saW4tc2VydmVyLXNlY3VyZS55YW1sIGIvZ3JlbWxpbi1zZXJ2ZXIvY29uZi9ncmVtbGluLXNlcnZlci1zZWN1cmUueWFtbAppbmRleCA3MTBhMDFmLi5kZWMyYmIzIDEwMDY0NAotLS0gYS9ncmVtbGluLXNlcnZlci9jb25mL2dyZW1saW4tc2VydmVyLXNlY3VyZS55YW1sCisrKyBiL2dyZW1saW4tc2VydmVyL2NvbmYvZ3JlbWxpbi1zZXJ2ZXItc2VjdXJlLnlhbWwKQEAgLTQwLDYgKzQwLDggQEAKICAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAsIGNvbmZpZzogeyBpb1JlZ2lzdHJpZXM6IFtvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnN0cnVjdHVyZS5UaW5rZXJJb1JlZ2lzdHJ5VjNkMF0gfX0gICAgICAgICAgICAjIGFwcGxpY2F0aW9uL3ZuZC5ncmVtbGluLXYzLjArZ3J5bwogICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMCwgY29uZmlnOiB7IHNlcmlhbGl6ZVJlc3VsdFRvU3RyaW5nOiB0cnVlIH19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYXBwbGljYXRpb24vdm5kLmdyZW1saW4tdjMuMCtncnlvLXN0cmluZ2QKICAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWM2QwLCBjb25maWc6IHsgaW9SZWdpc3RyaWVzOiBbb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi50aW5rZXJncmFwaC5zdHJ1Y3R1cmUuVGlua2VySW9SZWdpc3RyeVYzZDBdIH19ICAgICAgICAjIGFwcGxpY2F0aW9uL2pzb24KKyAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMSB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFwcGxpY2F0aW9uL3ZuZC5ncmFwaGJpbmFyeS12MS4wCisgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjEsIGNvbmZpZzogeyBzZXJpYWxpemVSZXN1bHRUb1N0cmluZzogdHJ1ZSB9fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhcHBsaWNhdGlvbi92bmQuZ3JhcGhiaW5hcnktdjEuMC1zdHJpbmdkCiBwcm9jZXNzb3JzOgogICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNlcnZlci5vcC5zZXNzaW9uLlNlc3Npb25PcFByb2Nlc3NvciwgY29uZmlnOiB7IHNlc3Npb25UaW1lb3V0OiAyODgwMDAwMCB9fQogICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNlcnZlci5vcC50cmF2ZXJzYWwuVHJhdmVyc2FsT3BQcm9jZXNzb3IsIGNvbmZpZzogeyBjYWNoZUV4cGlyYXRpb25UaW1lOiA2MDAwMDAsIGNhY2hlTWF4U2l6ZTogMTAwMCB9fQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1zZXJ2ZXIvY29uZi9ncmVtbGluLXNlcnZlci1zcGFyay55YW1sIGIvZ3JlbWxpbi1zZXJ2ZXIvY29uZi9ncmVtbGluLXNlcnZlci1zcGFyay55YW1sCmluZGV4IDAzYzg5NzguLjRkOTc0YmYgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tc2VydmVyL2NvbmYvZ3JlbWxpbi1zZXJ2ZXItc3BhcmsueWFtbAorKysgYi9ncmVtbGluLXNlcnZlci9jb25mL2dyZW1saW4tc2VydmVyLXNwYXJrLnlhbWwKQEAgLTU0LDYgKzU0LDggQEAKICAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAsIGNvbmZpZzogeyBpb1JlZ2lzdHJpZXM6IFtvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnN0cnVjdHVyZS5UaW5rZXJJb1JlZ2lzdHJ5VjNkMF0gfX0gICAgICAgICAgICAjIGFwcGxpY2F0aW9uL3ZuZC5ncmVtbGluLXYzLjArZ3J5bwogICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMCwgY29uZmlnOiB7IHNlcmlhbGl6ZVJlc3VsdFRvU3RyaW5nOiB0cnVlIH19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYXBwbGljYXRpb24vdm5kLmdyZW1saW4tdjMuMCtncnlvLXN0cmluZ2QKICAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWM2QwLCBjb25maWc6IHsgaW9SZWdpc3RyaWVzOiBbb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi50aW5rZXJncmFwaC5zdHJ1Y3R1cmUuVGlua2VySW9SZWdpc3RyeVYzZDBdIH19ICAgICAgICAjIGFwcGxpY2F0aW9uL2pzb24KKyAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMSB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFwcGxpY2F0aW9uL3ZuZC5ncmFwaGJpbmFyeS12MS4wCisgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjEsIGNvbmZpZzogeyBzZXJpYWxpemVSZXN1bHRUb1N0cmluZzogdHJ1ZSB9fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhcHBsaWNhdGlvbi92bmQuZ3JhcGhiaW5hcnktdjEuMC1zdHJpbmdkCiBwcm9jZXNzb3JzOgogICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNlcnZlci5vcC5zZXNzaW9uLlNlc3Npb25PcFByb2Nlc3NvciwgY29uZmlnOiB7IHNlc3Npb25UaW1lb3V0OiAyODgwMDAwMCB9fQogICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNlcnZlci5vcC50cmF2ZXJzYWwuVHJhdmVyc2FsT3BQcm9jZXNzb3IsIGNvbmZpZzogeyBjYWNoZUV4cGlyYXRpb25UaW1lOiA2MDAwMDAsIGNhY2hlTWF4U2l6ZTogMTAwMCB9fQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1zZXJ2ZXIvY29uZi9ncmVtbGluLXNlcnZlci55YW1sIGIvZ3JlbWxpbi1zZXJ2ZXIvY29uZi9ncmVtbGluLXNlcnZlci55YW1sCmluZGV4IDFlZjZhMGIuLjg2ZjRlOTIgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tc2VydmVyL2NvbmYvZ3JlbWxpbi1zZXJ2ZXIueWFtbAorKysgYi9ncmVtbGluLXNlcnZlci9jb25mL2dyZW1saW4tc2VydmVyLnlhbWwKQEAgLTI4LDkgKzI4LDExIEBACiAgICAgICAgICAgICAgICBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmpzcjIyMy5JbXBvcnRHcmVtbGluUGx1Z2luOiB7Y2xhc3NJbXBvcnRzOiBbamF2YS5sYW5nLk1hdGhdLCBtZXRob2RJbXBvcnRzOiBbamF2YS5sYW5nLk1hdGgjKl19LAogICAgICAgICAgICAgICAgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5qc3IyMjMuU2NyaXB0RmlsZUdyZW1saW5QbHVnaW46IHtmaWxlczogW3NjcmlwdHMvZW1wdHktc2FtcGxlLmdyb292eV19fX19CiBzZXJpYWxpemVyczoKLSAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAsIGNvbmZpZzogeyBpb1JlZ2lzdHJpZXM6IFtvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnN0cnVjdHVyZS5UaW5rZXJJb1JlZ2lzdHJ5VjNkMF0gfX0gICAgICAgICAgICAgIyBhcHBsaWNhdGlvbi92bmQuZ3JlbWxpbi12My4wK2dyeW8KLSAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAsIGNvbmZpZzogeyBzZXJpYWxpemVSZXN1bHRUb1N0cmluZzogdHJ1ZSB9fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhcHBsaWNhdGlvbi92bmQuZ3JlbWxpbi12My4wK2dyeW8tc3RyaW5nZAotICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYzZDAsIGNvbmZpZzogeyBpb1JlZ2lzdHJpZXM6IFtvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnN0cnVjdHVyZS5UaW5rZXJJb1JlZ2lzdHJ5VjNkMF0gfX0gICAgICAgICAjIGFwcGxpY2F0aW9uL2pzb24KKyAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAsIGNvbmZpZzogeyBpb1JlZ2lzdHJpZXM6IFtvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnN0cnVjdHVyZS5UaW5rZXJJb1JlZ2lzdHJ5VjNkMF0gfX0gICAgICAgICAgICAjIGFwcGxpY2F0aW9uL3ZuZC5ncmVtbGluLXYzLjArZ3J5bworICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMCwgY29uZmlnOiB7IHNlcmlhbGl6ZVJlc3VsdFRvU3RyaW5nOiB0cnVlIH19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYXBwbGljYXRpb24vdm5kLmdyZW1saW4tdjMuMCtncnlvLXN0cmluZ2QKKyAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWM2QwLCBjb25maWc6IHsgaW9SZWdpc3RyaWVzOiBbb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi50aW5rZXJncmFwaC5zdHJ1Y3R1cmUuVGlua2VySW9SZWdpc3RyeVYzZDBdIH19ICAgICAgICAjIGFwcGxpY2F0aW9uL2pzb24KKyAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMSB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFwcGxpY2F0aW9uL3ZuZC5ncmFwaGJpbmFyeS12MS4wCisgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjEsIGNvbmZpZzogeyBzZXJpYWxpemVSZXN1bHRUb1N0cmluZzogdHJ1ZSB9fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhcHBsaWNhdGlvbi92bmQuZ3JhcGhiaW5hcnktdjEuMC1zdHJpbmdkCiBwcm9jZXNzb3JzOgogICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNlcnZlci5vcC5zZXNzaW9uLlNlc3Npb25PcFByb2Nlc3NvciwgY29uZmlnOiB7IHNlc3Npb25UaW1lb3V0OiAyODgwMDAwMCB9fQogICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNlcnZlci5vcC50cmF2ZXJzYWwuVHJhdmVyc2FsT3BQcm9jZXNzb3IsIGNvbmZpZzogeyBjYWNoZUV4cGlyYXRpb25UaW1lOiA2MDAwMDAsIGNhY2hlTWF4U2l6ZTogMTAwMCB9fQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1zZXJ2ZXIvY29uZi9uZW80ai1lbXB0eS5wcm9wZXJ0aWVzIGIvZ3JlbWxpbi1zZXJ2ZXIvY29uZi9uZW80ai1lbXB0eS5wcm9wZXJ0aWVzCmluZGV4IDQ3NjQ1OGIuLmQxYWQ2MWUgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tc2VydmVyL2NvbmYvbmVvNGotZW1wdHkucHJvcGVydGllcworKysgYi9ncmVtbGluLXNlcnZlci9jb25mL25lbzRqLWVtcHR5LnByb3BlcnRpZXMKQEAgLTMzLDMgKzMzLDggQEAKICNncmVtbGluLm5lbzRqLmNvbmYuZGJtcy5hdXRvX2luZGV4Lm5vZGVzLmtleXM9CiBncmVtbGluLm5lbzRqLmNvbmYuZGJtcy5hdXRvX2luZGV4LnJlbGF0aW9uc2hpcHMuZW5hYmxlZD10cnVlCiAjZ3JlbWxpbi5uZW80ai5jb25mLmRibXMuYXV0b19pbmRleC5yZWxhdGlvbnNoaXBzLmtleXM9CisKKyMgdW5jb21tZW50IHRoZSBmb2xsb3dpbmcgdG8gZW5hYmxlIEJvbHQgb24gdGhlIHNwZWNpZmllZCBwb3J0CisjIGdyZW1saW4ubmVvNGouY29uZi5kYm1zLmNvbm5lY3Rvci4wLnR5cGU9Qk9MVAorIyBncmVtbGluLm5lbzRqLmNvbmYuZGJtcy5jb25uZWN0b3IuMC5lbmFibGVkPXRydWUKKyMgZ3JlbWxpbi5uZW80ai5jb25mLmRibXMuY29ubmVjdG9yLjAuYWRkcmVzcz1sb2NhbGhvc3Q6NzY4NwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1zZXJ2ZXIvcG9tLnhtbCBiL2dyZW1saW4tc2VydmVyL3BvbS54bWwKaW5kZXggNDQ3ZWFlMy4uYzBmOTk4YSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1zZXJ2ZXIvcG9tLnhtbAorKysgYi9ncmVtbGluLXNlcnZlci9wb20ueG1sCkBAIC0yMSw3ICsyMSw3IEBACiAgICAgPHBhcmVudD4KICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS50aW5rZXJwb3A8L2dyb3VwSWQ+CiAgICAgICAgIDxhcnRpZmFjdElkPnRpbmtlcnBvcDwvYXJ0aWZhY3RJZD4KLSAgICAgICAgPHZlcnNpb24+My4zLjExLVNOQVBTSE9UPC92ZXJzaW9uPgorICAgICAgICA8dmVyc2lvbj4zLjQuNy1TTkFQU0hPVDwvdmVyc2lvbj4KICAgICA8L3BhcmVudD4KICAgICA8YXJ0aWZhY3RJZD5ncmVtbGluLXNlcnZlcjwvYXJ0aWZhY3RJZD4KICAgICA8bmFtZT5BcGFjaGUgVGlua2VyUG9wIDo6IEdyZW1saW4gU2VydmVyPC9uYW1lPgpAQCAtMjk3LDYgKzI5NywxNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NvbmZpZ3VyYXRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9leGVjdXRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGV4ZWN1dGlvbj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlkPmRvY2tlci1pbWFnZS10YWctbGF0ZXN0PC9pZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdvYWxzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdvYWw+dGFnPC9nb2FsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dvYWxzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29uZmlndXJhdGlvbj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWc+bGF0ZXN0PC90YWc+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2tpcD4ke29ubHkud2hlbi5pcy5wcmVyZWxlYXNlLnZlcnNpb259PC9za2lwPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NvbmZpZ3VyYXRpb24+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9leGVjdXRpb24+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGV4ZWN1dGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlkPmRvY2tlci1pbWFnZS1wdXNoPC9pZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBoYXNlPmRlcGxveTwvcGhhc2U+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnb2Fscz4KQEAgLTMxOCw2ICszMjgsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxza2lwPiR7b25seS53aGVuLmlzLnByZXJlbGVhc2UudmVyc2lvbn08L3NraXA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY29uZmlndXJhdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2V4ZWN1dGlvbj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXhlY3V0aW9uPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aWQ+ZG9ja2VyLWltYWdlLXB1c2gtbGF0ZXN0PC9pZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBoYXNlPmRlcGxveTwvcGhhc2U+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnb2Fscz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnb2FsPnB1c2g8L2dvYWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ29hbHM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjb25maWd1cmF0aW9uPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhZz5sYXRlc3Q8L3RhZz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxza2lwPiR7b25seS53aGVuLmlzLnByZXJlbGVhc2UudmVyc2lvbn08L3NraXA+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY29uZmlndXJhdGlvbj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2V4ZWN1dGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXhlY3V0aW9ucz4KICAgICAgICAgICAgICAgICAgICAgICAgIDxjb25maWd1cmF0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBvc2l0b3J5PnRpbmtlcnBvcC9ncmVtbGluLXNlcnZlcjwvcmVwb3NpdG9yeT4KZGlmZiAtLWdpdCBhL2dyZW1saW4tc2VydmVyL3NjcmlwdHMvZW1wdHktc2FtcGxlLXNlY3VyZS5ncm9vdnkgYi9ncmVtbGluLXNlcnZlci9zY3JpcHRzL2VtcHR5LXNhbXBsZS1zZWN1cmUuZ3Jvb3Z5CmluZGV4IGNmMmY3YTcuLjA2YzIxMjcgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tc2VydmVyL3NjcmlwdHMvZW1wdHktc2FtcGxlLXNlY3VyZS5ncm9vdnkKKysrIGIvZ3JlbWxpbi1zZXJ2ZXIvc2NyaXB0cy9lbXB0eS1zYW1wbGUtc2VjdXJlLmdyb292eQpAQCAtNDcsNCArNDcsOSBAQAogXSBhcyBMaWZlQ3ljbGVIb29rXQogCiAvLyBkZWZpbmUgdGhlIGRlZmF1bHQgVHJhdmVyc2FsU291cmNlIHRvIGJpbmQgcXVlcmllcyB0byAtIHRoaXMgb25lIHdpbGwgYmUgbmFtZWQgImciLgotZ2xvYmFscyA8PCBbZyA6IGdyYXBoLnRyYXZlcnNhbCgpXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKy8vIFJlZmVyZW5jZUVsZW1lbnRTdHJhdGVneSBjb252ZXJ0cyBhbGwgZ3JhcGggZWxlbWVudHMgKHZlcnRpY2VzL2VkZ2VzL3ZlcnRleCBwcm9wZXJ0aWVzKQorLy8gdG8gInJlZmVyZW5jZXMiIChpLmUuIGp1c3QgaWQgYW5kIGxhYmVsIHdpdGhvdXQgcHJvcGVydGllcykuIHRoaXMgc3RyYXRlZ3kgd2FzIGFkZGVkCisvLyBpbiAzLjQuMCB0byBtYWtlIGFsbCBHcmVtbGluIFNlcnZlciByZXN1bHRzIGNvbnNpc3RlbnQgYWNyb3NzIGFsbCBwcm90b2NvbHMgYW5kCisvLyBzZXJpYWxpemF0aW9uIGZvcm1hdHMgYWxpZ25pbmcgaXQgd2l0aCBUaW5rZXJQb3AgcmVjb21tZW5kZWQgcHJhY3RpY2VzIGZvciB3cml0aW5nCisvLyBHcmVtbGluLgorZ2xvYmFscyA8PCBbZyA6IGdyYXBoLnRyYXZlcnNhbCgpLndpdGhTdHJhdGVnaWVzKFJlZmVyZW5jZUVsZW1lbnRTdHJhdGVneS5pbnN0YW5jZSgpKV0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9zY3JpcHRzL2VtcHR5LXNhbXBsZS5ncm9vdnkgYi9ncmVtbGluLXNlcnZlci9zY3JpcHRzL2VtcHR5LXNhbXBsZS5ncm9vdnkKaW5kZXggMzQ2NTU3Ny4uMWViYjc3NyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1zZXJ2ZXIvc2NyaXB0cy9lbXB0eS1zYW1wbGUuZ3Jvb3Z5CisrKyBiL2dyZW1saW4tc2VydmVyL3NjcmlwdHMvZW1wdHktc2FtcGxlLmdyb292eQpAQCAtMzcsNCArMzcsOSBAQAogXSBhcyBMaWZlQ3ljbGVIb29rXQogCiAvLyBkZWZpbmUgdGhlIGRlZmF1bHQgVHJhdmVyc2FsU291cmNlIHRvIGJpbmQgcXVlcmllcyB0byAtIHRoaXMgb25lIHdpbGwgYmUgbmFtZWQgImciLgotZ2xvYmFscyA8PCBbZyA6IGdyYXBoLnRyYXZlcnNhbCgpXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKy8vIFJlZmVyZW5jZUVsZW1lbnRTdHJhdGVneSBjb252ZXJ0cyBhbGwgZ3JhcGggZWxlbWVudHMgKHZlcnRpY2VzL2VkZ2VzL3ZlcnRleCBwcm9wZXJ0aWVzKQorLy8gdG8gInJlZmVyZW5jZXMiIChpLmUuIGp1c3QgaWQgYW5kIGxhYmVsIHdpdGhvdXQgcHJvcGVydGllcykuIHRoaXMgc3RyYXRlZ3kgd2FzIGFkZGVkCisvLyBpbiAzLjQuMCB0byBtYWtlIGFsbCBHcmVtbGluIFNlcnZlciByZXN1bHRzIGNvbnNpc3RlbnQgYWNyb3NzIGFsbCBwcm90b2NvbHMgYW5kCisvLyBzZXJpYWxpemF0aW9uIGZvcm1hdHMgYWxpZ25pbmcgaXQgd2l0aCBUaW5rZXJQb3AgcmVjb21tZW5kZWQgcHJhY3RpY2VzIGZvciB3cml0aW5nCisvLyBHcmVtbGluLgorZ2xvYmFscyA8PCBbZyA6IGdyYXBoLnRyYXZlcnNhbCgpLndpdGhTdHJhdGVnaWVzKFJlZmVyZW5jZUVsZW1lbnRTdHJhdGVneS5pbnN0YW5jZSgpKV0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9zY3JpcHRzL2dlbmVyYXRlLWNsYXNzaWMuZ3Jvb3Z5IGIvZ3JlbWxpbi1zZXJ2ZXIvc2NyaXB0cy9nZW5lcmF0ZS1jbGFzc2ljLmdyb292eQppbmRleCA0YzczZTc0Li41ZjVmODQ4IDEwMDY0NAotLS0gYS9ncmVtbGluLXNlcnZlci9zY3JpcHRzL2dlbmVyYXRlLWNsYXNzaWMuZ3Jvb3Z5CisrKyBiL2dyZW1saW4tc2VydmVyL3NjcmlwdHMvZ2VuZXJhdGUtY2xhc3NpYy5ncm9vdnkKQEAgLTMwLDQgKzMwLDkgQEAKIF0gYXMgTGlmZUN5Y2xlSG9va10KIAogLy8gZGVmaW5lIHRoZSBkZWZhdWx0IFRyYXZlcnNhbFNvdXJjZSB0byBiaW5kIHF1ZXJpZXMgdG8gLSB0aGlzIG9uZSB3aWxsIGJlIG5hbWVkICJnIi4KLWdsb2JhbHMgPDwgW2cgOiBncmFwaC50cmF2ZXJzYWwoKV0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisvLyBSZWZlcmVuY2VFbGVtZW50U3RyYXRlZ3kgY29udmVydHMgYWxsIGdyYXBoIGVsZW1lbnRzICh2ZXJ0aWNlcy9lZGdlcy92ZXJ0ZXggcHJvcGVydGllcykKKy8vIHRvICJyZWZlcmVuY2VzIiAoaS5lLiBqdXN0IGlkIGFuZCBsYWJlbCB3aXRob3V0IHByb3BlcnRpZXMpLiB0aGlzIHN0cmF0ZWd5IHdhcyBhZGRlZAorLy8gaW4gMy40LjAgdG8gbWFrZSBhbGwgR3JlbWxpbiBTZXJ2ZXIgcmVzdWx0cyBjb25zaXN0ZW50IGFjcm9zcyBhbGwgcHJvdG9jb2xzIGFuZAorLy8gc2VyaWFsaXphdGlvbiBmb3JtYXRzIGFsaWduaW5nIGl0IHdpdGggVGlua2VyUG9wIHJlY29tbWVuZGVkIHByYWN0aWNlcyBmb3Igd3JpdGluZworLy8gR3JlbWxpbi4KK2dsb2JhbHMgPDwgW2cgOiBncmFwaC50cmF2ZXJzYWwoKS53aXRoU3RyYXRlZ2llcyhSZWZlcmVuY2VFbGVtZW50U3RyYXRlZ3kuaW5zdGFuY2UoKSldClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1zZXJ2ZXIvc2NyaXB0cy9nZW5lcmF0ZS1tb2Rlcm4tcmVhZG9ubHkuZ3Jvb3Z5IGIvZ3JlbWxpbi1zZXJ2ZXIvc2NyaXB0cy9nZW5lcmF0ZS1tb2Rlcm4tcmVhZG9ubHkuZ3Jvb3Z5CmluZGV4IGZkYTgwNTIuLjFmZDAxY2UgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tc2VydmVyL3NjcmlwdHMvZ2VuZXJhdGUtbW9kZXJuLXJlYWRvbmx5Lmdyb292eQorKysgYi9ncmVtbGluLXNlcnZlci9zY3JpcHRzL2dlbmVyYXRlLW1vZGVybi1yZWFkb25seS5ncm9vdnkKQEAgLTMwLDQgKzMwLDkgQEAKIF0gYXMgTGlmZUN5Y2xlSG9va10KIAogLy8gZGVmaW5lIHRoZSBkZWZhdWx0IFRyYXZlcnNhbFNvdXJjZSB0byBiaW5kIHF1ZXJpZXMgdG8gLSB0aGlzIG9uZSB3aWxsIGJlIG5hbWVkICJnIi4KLWdsb2JhbHMgPDwgW2cgOiBncmFwaC50cmF2ZXJzYWwoKS53aXRoU3RyYXRlZ2llcyhSZWFkT25seVN0cmF0ZWd5Lmluc3RhbmNlKCkpXQorLy8gUmVmZXJlbmNlRWxlbWVudFN0cmF0ZWd5IGNvbnZlcnRzIGFsbCBncmFwaCBlbGVtZW50cyAodmVydGljZXMvZWRnZXMvdmVydGV4IHByb3BlcnRpZXMpCisvLyB0byAicmVmZXJlbmNlcyIgKGkuZS4ganVzdCBpZCBhbmQgbGFiZWwgd2l0aG91dCBwcm9wZXJ0aWVzKS4gdGhpcyBzdHJhdGVneSB3YXMgYWRkZWQKKy8vIGluIDMuNC4wIHRvIG1ha2UgYWxsIEdyZW1saW4gU2VydmVyIHJlc3VsdHMgY29uc2lzdGVudCBhY3Jvc3MgYWxsIHByb3RvY29scyBhbmQKKy8vIHNlcmlhbGl6YXRpb24gZm9ybWF0cyBhbGlnbmluZyBpdCB3aXRoIFRpbmtlclBvcCByZWNvbW1lbmRlZCBwcmFjdGljZXMgZm9yIHdyaXRpbmcKKy8vIEdyZW1saW4uCitnbG9iYWxzIDw8IFtnIDogZ3JhcGgudHJhdmVyc2FsKCkud2l0aFN0cmF0ZWdpZXMoUmVhZE9ubHlTdHJhdGVneS5pbnN0YW5jZSgpLCBSZWZlcmVuY2VFbGVtZW50U3RyYXRlZ3kuaW5zdGFuY2UoKSldCmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9zY3JpcHRzL2dlbmVyYXRlLW1vZGVybi5ncm9vdnkgYi9ncmVtbGluLXNlcnZlci9zY3JpcHRzL2dlbmVyYXRlLW1vZGVybi5ncm9vdnkKaW5kZXggZTI1NGNkNC4uOTUwMDQ5OCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1zZXJ2ZXIvc2NyaXB0cy9nZW5lcmF0ZS1tb2Rlcm4uZ3Jvb3Z5CisrKyBiL2dyZW1saW4tc2VydmVyL3NjcmlwdHMvZ2VuZXJhdGUtbW9kZXJuLmdyb292eQpAQCAtMzAsNCArMzAsOSBAQAogXSBhcyBMaWZlQ3ljbGVIb29rXQogCiAvLyBkZWZpbmUgdGhlIGRlZmF1bHQgVHJhdmVyc2FsU291cmNlIHRvIGJpbmQgcXVlcmllcyB0byAtIHRoaXMgb25lIHdpbGwgYmUgbmFtZWQgImciLgotZ2xvYmFscyA8PCBbZyA6IGdyYXBoLnRyYXZlcnNhbCgpXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKy8vIFJlZmVyZW5jZUVsZW1lbnRTdHJhdGVneSBjb252ZXJ0cyBhbGwgZ3JhcGggZWxlbWVudHMgKHZlcnRpY2VzL2VkZ2VzL3ZlcnRleCBwcm9wZXJ0aWVzKQorLy8gdG8gInJlZmVyZW5jZXMiIChpLmUuIGp1c3QgaWQgYW5kIGxhYmVsIHdpdGhvdXQgcHJvcGVydGllcykuIHRoaXMgc3RyYXRlZ3kgd2FzIGFkZGVkCisvLyBpbiAzLjQuMCB0byBtYWtlIGFsbCBHcmVtbGluIFNlcnZlciByZXN1bHRzIGNvbnNpc3RlbnQgYWNyb3NzIGFsbCBwcm90b2NvbHMgYW5kCisvLyBzZXJpYWxpemF0aW9uIGZvcm1hdHMgYWxpZ25pbmcgaXQgd2l0aCBUaW5rZXJQb3AgcmVjb21tZW5kZWQgcHJhY3RpY2VzIGZvciB3cml0aW5nCisvLyBHcmVtbGluLgorZ2xvYmFscyA8PCBbZyA6IGdyYXBoLnRyYXZlcnNhbCgpLndpdGhTdHJhdGVnaWVzKFJlZmVyZW5jZUVsZW1lbnRTdHJhdGVneS5pbnN0YW5jZSgpKV0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9zY3JpcHRzL2xvYWQtc2FtcGxlLmdyb292eSBiL2dyZW1saW4tc2VydmVyL3NjcmlwdHMvbG9hZC1zYW1wbGUuZ3Jvb3Z5CmluZGV4IDgxMjQxYTAuLjFjNTYxNTUgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tc2VydmVyL3NjcmlwdHMvbG9hZC1zYW1wbGUuZ3Jvb3Z5CisrKyBiL2dyZW1saW4tc2VydmVyL3NjcmlwdHMvbG9hZC1zYW1wbGUuZ3Jvb3Z5CkBAIC0zNiw0ICszNiw5IEBACiBdIGFzIExpZmVDeWNsZUhvb2tdCiAKIC8vIGRlZmluZSB0aGUgZGVmYXVsdCBUcmF2ZXJzYWxTb3VyY2UgdG8gYmluZCBxdWVyaWVzIHRvIC0gdGhpcyBvbmUgd2lsbCBiZSBuYW1lZCAiZyIuCi1nbG9iYWxzIDw8IFtnIDogZ3JhcGgudHJhdmVyc2FsKCldClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorLy8gUmVmZXJlbmNlRWxlbWVudFN0cmF0ZWd5IGNvbnZlcnRzIGFsbCBncmFwaCBlbGVtZW50cyAodmVydGljZXMvZWRnZXMvdmVydGV4IHByb3BlcnRpZXMpCisvLyB0byAicmVmZXJlbmNlcyIgKGkuZS4ganVzdCBpZCBhbmQgbGFiZWwgd2l0aG91dCBwcm9wZXJ0aWVzKS4gdGhpcyBzdHJhdGVneSB3YXMgYWRkZWQKKy8vIGluIDMuNC4wIHRvIG1ha2UgYWxsIEdyZW1saW4gU2VydmVyIHJlc3VsdHMgY29uc2lzdGVudCBhY3Jvc3MgYWxsIHByb3RvY29scyBhbmQKKy8vIHNlcmlhbGl6YXRpb24gZm9ybWF0cyBhbGlnbmluZyBpdCB3aXRoIFRpbmtlclBvcCByZWNvbW1lbmRlZCBwcmFjdGljZXMgZm9yIHdyaXRpbmcKKy8vIEdyZW1saW4uCitnbG9iYWxzIDw8IFtnIDogZ3JhcGgudHJhdmVyc2FsKCkud2l0aFN0cmF0ZWdpZXMoUmVmZXJlbmNlRWxlbWVudFN0cmF0ZWd5Lmluc3RhbmNlKCkpXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tc2VydmVyL3NjcmlwdHMvc3BhcmsuZ3Jvb3Z5IGIvZ3JlbWxpbi1zZXJ2ZXIvc2NyaXB0cy9zcGFyay5ncm9vdnkKaW5kZXggNzRhOTFhNC4uZGIwN2ZkYyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1zZXJ2ZXIvc2NyaXB0cy9zcGFyay5ncm9vdnkKKysrIGIvZ3JlbWxpbi1zZXJ2ZXIvc2NyaXB0cy9zcGFyay5ncm9vdnkKQEAgLTQ0LDQgKzQ0LDEwIEBACiAvLwogLy8gUGxlYXNlIHNlZSBjb25mL2dyZW1saW4tc2VydmVyLXNwYXJrLnlhbWwgZm9yIGEgd29ya2luZyBleGFtcGxlIG9mIGEgY29uZmlnIGZpbGUgdGhhdCB3aWxsCiAvLyB3b3JrIHdpdGggdGhpcyBpbml0IHNjcmlwdC4KLWdsb2JhbHMgPDwgW2cgOiBncmFwaC50cmF2ZXJzYWwoKS53aXRoQ29tcHV0ZXIoU3BhcmtHcmFwaENvbXB1dGVyKV0KKy8vCisvLyBSZWZlcmVuY2VFbGVtZW50U3RyYXRlZ3kgY29udmVydHMgYWxsIGdyYXBoIGVsZW1lbnRzICh2ZXJ0aWNlcy9lZGdlcy92ZXJ0ZXggcHJvcGVydGllcykKKy8vIHRvICJyZWZlcmVuY2VzIiAoaS5lLiBqdXN0IGlkIGFuZCBsYWJlbCB3aXRob3V0IHByb3BlcnRpZXMpLiB0aGlzIHN0cmF0ZWd5IHdhcyBhZGRlZAorLy8gaW4gMy40LjAgdG8gbWFrZSBhbGwgR3JlbWxpbiBTZXJ2ZXIgcmVzdWx0cyBjb25zaXN0ZW50IGFjcm9zcyBhbGwgcHJvdG9jb2xzIGFuZAorLy8gc2VyaWFsaXphdGlvbiBmb3JtYXRzIGFsaWduaW5nIGl0IHdpdGggVGlua2VyUG9wIHJlY29tbWVuZGVkIHByYWN0aWNlcyBmb3Igd3JpdGluZworLy8gR3JlbWxpbi4KK2dsb2JhbHMgPDwgW2cgOiBncmFwaC50cmF2ZXJzYWwoKS53aXRoQ29tcHV0ZXIoU3BhcmtHcmFwaENvbXB1dGVyKS53aXRoU3RyYXRlZ2llcyhSZWZlcmVuY2VFbGVtZW50U3RyYXRlZ3kuaW5zdGFuY2UoKSldCmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9iaW4vZ3JlbWxpbi1zZXJ2ZXIuYmF0IGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vYmluL2dyZW1saW4tc2VydmVyLmJhdAppbmRleCA2YzczZjQ4Li43M2RmMmEzIDEwMDY0NAotLS0gYS9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9iaW4vZ3JlbWxpbi1zZXJ2ZXIuYmF0CisrKyBiL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2Jpbi9ncmVtbGluLXNlcnZlci5iYXQKQEAgLTM2LDcgKzM2LDYgQEAKIHNldCBKQVZBX09QVElPTlM9LVhtczMybSAtWG14NTEybQogCiBpZiAiJTEiID09ICIiIGdvdG8gc2VydmVyCi1pZiAiJTEiID09ICItaSIgZ290byBkYXNoaQogaWYgIiUxIiA9PSAiaW5zdGFsbCIgZ290byBpbnN0YWxsCiAKIDpzZXJ2ZXIKQEAgLTQ0LDExICs0Myw2IEBACiA6OiBMYXVuY2ggdGhlIGFwcGxpY2F0aW9uCiBqYXZhIC1EbG9nNGouY29uZmlndXJhdGlvbj1jb25mL2xvZzRqLXNlcnZlci5wcm9wZXJ0aWVzICVKQVZBX09QVElPTlMlICVKQVZBX0FSR1MlIC1jcCAiJUxJQkRJUiUvKjslRVhURElSJTsiIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc2VydmVyLkdyZW1saW5TZXJ2ZXIgJSoKIAotOmRhc2hpCi0KLWVjaG8gTk9URTogLWkgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVwZGF0ZSB5b3VyIHNjcmlwdHMuIFVzaW5nICdpbnN0YWxsJyBjb21tYW5kLi4uCi1nb3RvIGluc3RhbGwKLQogOmluc3RhbGwKIAogc2V0IFJFU1RWQVI9CmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9iaW4vZ3JlbWxpbi1zZXJ2ZXIuc2ggYi9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9iaW4vZ3JlbWxpbi1zZXJ2ZXIuc2gKaW5kZXggNzZhZmEwOS4uM2MwYzgyYyAxMDA3NTUKLS0tIGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vYmluL2dyZW1saW4tc2VydmVyLnNoCisrKyBiL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2Jpbi9ncmVtbGluLXNlcnZlci5zaApAQCAtMjUyLDExICsyNTIsNiBAQAogICBzdG9wKQogICAgIHN0b3AKICAgICA7OwotICAtaSkKLSAgICBzaGlmdAotICAgIGVjaG8gIlJlZGlyZWN0aW5nIHRvICdpbnN0YWxsICRAJyAoLWkgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UpIgotICAgIGluc3RhbGwgIiRAIgotICAgIDs7CiAgIGluc3RhbGwpCiAgICAgc2hpZnQKICAgICBpbnN0YWxsICIkQCIKZGlmZiAtLWdpdCBhL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvQWJzdHJhY3RDaGFubmVsaXplci5qYXZhIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9BYnN0cmFjdENoYW5uZWxpemVyLmphdmEKaW5kZXggMTRiODQ5Mi4uNzdjZDQ2NSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9BYnN0cmFjdENoYW5uZWxpemVyLmphdmEKKysrIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9BYnN0cmFjdENoYW5uZWxpemVyLmphdmEKQEAgLTI3LDYgKzI3LDcgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5tZXNzYWdlLlJlcXVlc3RNZXNzYWdlOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLm1lc3NhZ2UuUmVzcG9uc2VNZXNzYWdlOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5BYnN0cmFjdEdyeW9NZXNzYWdlU2VyaWFsaXplclYxZDA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYyZDA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5ncm9vdnkuZW5naW5lLkdyZW1saW5FeGVjdXRvcjsKQEAgLTg0LDcgKzg1LDExIEBACiAgICAgICAgICAgICBuZXcgU2V0dGluZ3MuU2VyaWFsaXplclNldHRpbmdzKEdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAuY2xhc3MuZ2V0TmFtZSgpLCBuZXcgSGFzaE1hcDxTdHJpbmcsT2JqZWN0Pigpe3sKICAgICAgICAgICAgICAgICBwdXQoQWJzdHJhY3RHcnlvTWVzc2FnZVNlcmlhbGl6ZXJWMWQwLlRPS0VOX1NFUklBTElaRV9SRVNVTFRfVE9fU1RSSU5HLCB0cnVlKTsKICAgICAgICAgICAgIH19KSwKLSAgICAgICAgICAgIG5ldyBTZXR0aW5ncy5TZXJpYWxpemVyU2V0dGluZ3MoR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYyZDAuY2xhc3MuZ2V0TmFtZSgpLCBDb2xsZWN0aW9ucy5lbXB0eU1hcCgpKQorICAgICAgICAgICAgbmV3IFNldHRpbmdzLlNlcmlhbGl6ZXJTZXR0aW5ncyhHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjJkMC5jbGFzcy5nZXROYW1lKCksIENvbGxlY3Rpb25zLmVtcHR5TWFwKCkpLAorICAgICAgICAgICAgbmV3IFNldHRpbmdzLlNlcmlhbGl6ZXJTZXR0aW5ncyhHcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjEuY2xhc3MuZ2V0TmFtZSgpLCBDb2xsZWN0aW9ucy5lbXB0eU1hcCgpKSwKKyAgICAgICAgICAgIG5ldyBTZXR0aW5ncy5TZXJpYWxpemVyU2V0dGluZ3MoR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxLmNsYXNzLmdldE5hbWUoKSwgbmV3IEhhc2hNYXA8U3RyaW5nLE9iamVjdD4oKXt7CisgICAgICAgICAgICAgICAgcHV0KEdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMS5UT0tFTl9TRVJJQUxJWkVfUkVTVUxUX1RPX1NUUklORywgdHJ1ZSk7CisgICAgICAgICAgICB9fSkKICAgICApOwogCiAgICAgcHJvdGVjdGVkIFNldHRpbmdzIHNldHRpbmdzOwpAQCAtMTA4LDE1ICsxMTMsMTQgQEAKIAogICAgIHByb3RlY3RlZCBmaW5hbCBNYXA8U3RyaW5nLCBNZXNzYWdlU2VyaWFsaXplcj4gc2VyaWFsaXplcnMgPSBuZXcgSGFzaE1hcDw+KCk7CiAKLSAgICBwcml2YXRlIElkbGVTdGF0ZUhhbmRsZXIgaWRsZVN0YXRlSGFuZGxlcjsKICAgICBwcml2YXRlIE9wU2VsZWN0b3JIYW5kbGVyIG9wU2VsZWN0b3JIYW5kbGVyOwogICAgIHByaXZhdGUgT3BFeGVjdXRvckhhbmRsZXIgb3BFeGVjdXRvckhhbmRsZXI7CiAKICAgICBwcm90ZWN0ZWQgQXV0aGVudGljYXRvciBhdXRoZW50aWNhdG9yOwogCiAgICAgLyoqCi0gICAgICogVGhpcyBtZXRob2QgaXMgY2FsbGVkIGZyb20gd2l0aGluIHtAbGluayAjaW5pdENoYW5uZWwoaW8ubmV0dHkuY2hhbm5lbC5zb2NrZXQuU29ja2V0Q2hhbm5lbCl9IGp1c3QgYWZ0ZXIKLSAgICAgKiB0aGUgU1NMIGhhbmRsZXIgaXMgcHV0IGluIHRoZSBwaXBlbGluZS4gIE1vZGlmeSB0aGUgcGlwZWxpbmUgYXMgbmVlZGVkIGhlcmUuCisgICAgICogVGhpcyBtZXRob2QgaXMgY2FsbGVkIGZyb20gd2l0aGluIHtAY29kZSBTb2NrZXRDaGFubmVsfSBqdXN0IGFmdGVyIHRoZSBTU0wgaGFuZGxlciBpcyBwdXQgaW4gdGhlIHBpcGVsaW5lLgorICAgICAqIE1vZGlmeSB0aGUgcGlwZWxpbmUgYXMgbmVlZGVkIGhlcmUuCiAgICAgICovCiAgICAgcHVibGljIGFic3RyYWN0IHZvaWQgY29uZmlndXJlKGZpbmFsIENoYW5uZWxQaXBlbGluZSBwaXBlbGluZSk7CiAKQEAgLTE5MSwxMiArMTk1LDcgQEAKICAgICB9CiAKICAgICBwcml2YXRlIEF1dGhlbnRpY2F0b3IgY3JlYXRlQXV0aGVudGljYXRvcihmaW5hbCBTZXR0aW5ncy5BdXRoZW50aWNhdGlvblNldHRpbmdzIGNvbmZpZykgewotICAgICAgICBTdHJpbmcgYXV0aGVudGljYXRvckNsYXNzID0gbnVsbDsKLSAgICAgICAgaWYgKGNvbmZpZy5hdXRoZW50aWNhdG9yID09IG51bGwpIHsKLSAgICAgICAgICAgIGF1dGhlbnRpY2F0b3JDbGFzcyA9IGNvbmZpZy5jbGFzc05hbWU7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBhdXRoZW50aWNhdG9yQ2xhc3MgPSBjb25maWcuYXV0aGVudGljYXRvcjsKLSAgICAgICAgfQorICAgICAgICBmaW5hbCBTdHJpbmcgYXV0aGVudGljYXRvckNsYXNzID0gY29uZmlnLmF1dGhlbnRpY2F0b3I7CiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBmaW5hbCBDbGFzczw/PiBjbGF6eiA9IENsYXNzLmZvck5hbWUoYXV0aGVudGljYXRvckNsYXNzKTsKICAgICAgICAgICAgIGZpbmFsIEF1dGhlbnRpY2F0b3IgYXV0aGVudGljYXRvciA9IChBdXRoZW50aWNhdG9yKSBjbGF6ei5uZXdJbnN0YW5jZSgpOwpAQCAtMjQ3LDcgKzI0Niw3IEBACiAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgbWltZVR5cGUgPSBwYWlyLmdldFZhbHVlMCgpOwogICAgICAgICAgICAgZmluYWwgTWVzc2FnZVNlcmlhbGl6ZXIgc2VyaWFsaXplciA9IHBhaXIuZ2V0VmFsdWUxKCk7CiAgICAgICAgICAgICBpZiAoc2VyaWFsaXplcnMuY29udGFpbnNLZXkobWltZVR5cGUpKQotICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJ7fSBhbHJlYWR5IGhhcyB7fSBjb25maWd1cmVkIC0gaXQgd2lsbCBub3QgYmUgcmVwbGFjZWQgYnkge30uIiwKKyAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygie30gYWxyZWFkeSBoYXMge30gY29uZmlndXJlZCAtIGl0IHdpbGwgbm90IGJlIHJlcGxhY2VkIGJ5IHt9LCBjaGFuZ2Ugb3JkZXIgb2Ygc2VyaWFsaXphdGlvbiBjb25maWd1cmF0aW9uIGlmIHRoaXMgaXMgbm90IGRlc2lyZWQuIiwKICAgICAgICAgICAgICAgICAgICAgICAgIG1pbWVUeXBlLCBzZXJpYWxpemVycy5nZXQobWltZVR5cGUpLmdldENsYXNzKCkuZ2V0TmFtZSgpLCBzZXJpYWxpemVyLmdldENsYXNzKCkuZ2V0TmFtZSgpKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJDb25maWd1cmVkIHt9IHdpdGgge30iLCBtaW1lVHlwZSwgcGFpci5nZXRWYWx1ZTEoKS5nZXRDbGFzcygpLmdldE5hbWUoKSk7CmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL0dyYXBoTWFuYWdlci5qYXZhIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9HcmFwaE1hbmFnZXIuamF2YQppbmRleCBiY2I0YThlLi5iNjRiYmE0IDEwMDY0NAotLS0gYS9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL0dyYXBoTWFuYWdlci5qYXZhCisrKyBiL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvR3JhcGhNYW5hZ2VyLmphdmEKQEAgLTM1LDE2ICszNSw2IEBACiAgKiB0aGUgaW50ZXJmYWNlIGFsc28gZGVmaW5lcyBzaW1pbGFyIGZlYXR1cmVzIGZvciB7QGxpbmsgVHJhdmVyc2FsU291cmNlfSBvYmplY3RzLgogICovCiBwdWJsaWMgaW50ZXJmYWNlIEdyYXBoTWFuYWdlciB7Ci0gICAgLyoqCi0gICAgICogR2V0IGEgbGlzdCBvZiB0aGUge0BsaW5rIEdyYXBofSBpbnN0YW5jZXMgYW5kIHRoZWlyIGJpbmRpbmcgbmFtZXMuCi0gICAgICoKLSAgICAgKiBAcmV0dXJuIGEge0Bjb2RlIE1hcH0gd2hlcmUgdGhlIGtleSBpcyB0aGUgbmFtZSBvZiB0aGUge0BsaW5rIEdyYXBofSBhbmQgdGhlIHZhbHVlIGlzIHRoZSB7QGxpbmsgR3JhcGh9IGl0c2VsZgotICAgICAqIEBkZXByZWNhdGVkICBBcyBvZiByZWxlYXNlIDMuMi41LCByZXBsYWNlZCBieSBhIGNvbWJpbmF0aW9uIG9mIHtAbGluayAjZ2V0R3JhcGhOYW1lcygpfSBhbmQKLSAgICAgKiB7QGxpbmsgI2dldEdyYXBoKFN0cmluZyl9IC0gbm90ZSB0aGF0IHRoZSBleHBlY3RhdGlvbiBpcyB0aGlzIG1ldGhvZCByZXR1cm4gYW4gaW1tdXRhYmxlIHtAY29kZSBNYXB9IHdoaWNoIHdhcwotICAgICAqIG5vdCB0aGUgZXhwZWN0YXRpb24gcHJpb3IgdG8gMy4yLjUuCi0gICAgICovCi0gICAgQERlcHJlY2F0ZWQKLSAgICBwdWJsaWMgTWFwPFN0cmluZywgR3JhcGg+IGdldEdyYXBocygpOwogCiAgICAgLyoqCiAgICAgICogR2V0IGEge0BsaW5rIFNldH0gb2Yge0BsaW5rIFN0cmluZ30gZ3JhcGhOYW1lcyBjb3JyZXNwb25kaW5nIHRvIG5hbWVzIHN0b3JlZCBpbiB0aGUgZ3JhcGgncwpAQCAtNjUsMTggKzU1LDYgQEAKICAgICBwdWJsaWMgdm9pZCBwdXRHcmFwaChmaW5hbCBTdHJpbmcgZ3JhcGhOYW1lLCBmaW5hbCBHcmFwaCBnKTsKIAogICAgIC8qKgotICAgICAqIEdldCBhIGxpc3Qgb2YgdGhlIHtAbGluayBUcmF2ZXJzYWxTb3VyY2V9IGluc3RhbmNlcyBhbmQgdGhlaXIgYmluZGluZyBuYW1lcwotICAgICAqCi0gICAgICogQHJldHVybiBhIHtAbGluayBNYXB9IHdoZXJlIHRoZSBrZXkgaXMgdGhlIG5hbWUgb2YgdGhlIHtAbGluayBUcmF2ZXJzYWxTb3VyY2V9IGFuZCB0aGUgdmFsdWUgaXMgdGhlCi0gICAgICogICAgICAgICB7QGxpbmsgVHJhdmVyc2FsU291cmNlfSBpdHNlbGYKLSAgICAgKiBAZGVwcmVjYXRlZCAgQXMgb2YgcmVsZWFzZSAzLjIuNSwgcmVwbGFjZWQgYnkgYSBjb21iaW5hdGlvbiBvZiB7QGxpbmsgI2dldFRyYXZlcnNhbFNvdXJjZU5hbWVzKCl9IGFuZAotICAgICAqIHtAbGluayAjZ2V0VHJhdmVyc2FsU291cmNlKFN0cmluZyl9IC0gbm90ZSB0aGF0IHRoZSBleHBlY3RhdGlvbiBpcyB0aGlzIG1ldGhvZCByZXR1cm4gYW4gaW1tdXRhYmxlCi0gICAgICoge0Bjb2RlIE1hcH0gd2hpY2ggd2FzIG5vdCB0aGUgZXhwZWN0YXRpb24gcHJpb3IgdG8gMy4yLjUuCi0gICAgICovCi0gICAgQERlcHJlY2F0ZWQKLSAgICBwdWJsaWMgTWFwPFN0cmluZywgVHJhdmVyc2FsU291cmNlPiBnZXRUcmF2ZXJzYWxTb3VyY2VzKCk7Ci0KLSAgICAvKioKICAgICAgKiBHZXQgYSB7QGNvZGUgU2V0fSBvZiB0aGUgbmFtZXMgb2YgdGhlIHRoZSBzdG9yZWQge0BsaW5rIFRyYXZlcnNhbFNvdXJjZX0gaW5zdGFuY2VzLgogICAgICAqLwogICAgIHB1YmxpYyBTZXQ8U3RyaW5nPiBnZXRUcmF2ZXJzYWxTb3VyY2VOYW1lcygpOwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9HcmVtbGluU2VydmVyLmphdmEgYi9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL0dyZW1saW5TZXJ2ZXIuamF2YQppbmRleCA1MGFmZGIyLi4yYTFhZGY3IDEwMDY0NAotLS0gYS9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL0dyZW1saW5TZXJ2ZXIuamF2YQorKysgYi9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL0dyZW1saW5TZXJ2ZXIuamF2YQpAQCAtMjUsNiArMjUsNyBAQAogaW1wb3J0IGlvLm5ldHR5LmNoYW5uZWwuQ2hhbm5lbEZ1dHVyZUxpc3RlbmVyOwogaW1wb3J0IGlvLm5ldHR5LmNoYW5uZWwuQ2hhbm5lbE9wdGlvbjsKIGltcG9ydCBpby5uZXR0eS5jaGFubmVsLkV2ZW50TG9vcEdyb3VwOworaW1wb3J0IGlvLm5ldHR5LmNoYW5uZWwuV3JpdGVCdWZmZXJXYXRlck1hcms7CiBpbXBvcnQgaW8ubmV0dHkuY2hhbm5lbC5lcG9sbC5FcG9sbEV2ZW50TG9vcEdyb3VwOwogaW1wb3J0IGlvLm5ldHR5LmNoYW5uZWwuZXBvbGwuRXBvbGxTZXJ2ZXJTb2NrZXRDaGFubmVsOwogaW1wb3J0IGlvLm5ldHR5LmNoYW5uZWwubmlvLk5pb0V2ZW50TG9vcEdyb3VwOwpAQCAtNTksNyArNjAsNyBAQAogCiAgICAgc3RhdGljIHsKICAgICAgICAgLy8gaG9vayBzbGY0aiB1cCB0byBuZXR0eSBpbnRlcm5hbCBsb2dnaW5nCi0gICAgICAgIEludGVybmFsTG9nZ2VyRmFjdG9yeS5zZXREZWZhdWx0RmFjdG9yeShuZXcgU2xmNEpMb2dnZXJGYWN0b3J5KCkpOworICAgICAgICBJbnRlcm5hbExvZ2dlckZhY3Rvcnkuc2V0RGVmYXVsdEZhY3RvcnkoU2xmNEpMb2dnZXJGYWN0b3J5LklOU1RBTkNFKTsKICAgICB9CiAKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0VSVkVSX1RIUkVBRF9QUkVGSVggPSAiZ3JlbWxpbi1zZXJ2ZXItIjsKQEAgLTE0Miw4ICsxNDMsOCBAQAogCiAgICAgICAgICAgICAvLyB3aGVuIGhpZ2ggdmFsdWUgaXMgcmVhY2hlZCB0aGVuIHRoZSBjaGFubmVsIGJlY29tZXMgbm9uLXdyaXRhYmxlIGFuZCBzdGF5cyBsaWtlIHRoYXQgdW50aWwgdGhlCiAgICAgICAgICAgICAvLyBsb3cgdmFsdWUgaXMgc28gdGhhdCB0aGVyZSBpcyB0aW1lIHRvIHJlY292ZXIKLSAgICAgICAgICAgIGIuY2hpbGRPcHRpb24oQ2hhbm5lbE9wdGlvbi5XUklURV9CVUZGRVJfSElHSF9XQVRFUl9NQVJLLCBzZXR0aW5ncy53cml0ZUJ1ZmZlckhpZ2hXYXRlck1hcmspOwotICAgICAgICAgICAgYi5jaGlsZE9wdGlvbihDaGFubmVsT3B0aW9uLldSSVRFX0JVRkZFUl9MT1dfV0FURVJfTUFSSywgc2V0dGluZ3Mud3JpdGVCdWZmZXJMb3dXYXRlck1hcmspOworICAgICAgICAgICAgYi5jaGlsZE9wdGlvbihDaGFubmVsT3B0aW9uLldSSVRFX0JVRkZFUl9XQVRFUl9NQVJLLAorICAgICAgICAgICAgICAgICAgICBuZXcgV3JpdGVCdWZmZXJXYXRlck1hcmsoc2V0dGluZ3Mud3JpdGVCdWZmZXJMb3dXYXRlck1hcmssIHNldHRpbmdzLndyaXRlQnVmZmVySGlnaFdhdGVyTWFyaykpOwogICAgICAgICAgICAgYi5jaGlsZE9wdGlvbihDaGFubmVsT3B0aW9uLkFMTE9DQVRPUiwgUG9vbGVkQnl0ZUJ1ZkFsbG9jYXRvci5ERUZBVUxUKTsKIAogICAgICAgICAgICAgLy8gZmlyZSBvZmYgYW55IGxpZmVjeWNsZSBzY3JpcHRzIHRoYXQgd2VyZSBwcm92aWRlZCBieSB0aGUgdXNlci4gaG9va3MgZ2V0IGluaXRpYWxpemVkIGR1cmluZwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9TZXR0aW5ncy5qYXZhIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9TZXR0aW5ncy5qYXZhCmluZGV4IGM0YWFiMjcuLjA1OTE2M2UgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvU2V0dGluZ3MuamF2YQorKysgYi9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL1NldHRpbmdzLmphdmEKQEAgLTExNiwxNSArMTE2LDYgQEAKICAgICBwdWJsaWMgbG9uZyBldmFsdWF0aW9uVGltZW91dCA9IDMwMDAwTDsKIAogICAgIC8qKgotICAgICAqIFRpbWUgaW4gbWlsbGlzZWNvbmRzIHRvIHdhaXQgd2hpbGUgYW4gZXZhbHVhdGVkIHNjcmlwdCBzZXJpYWxpemVzIGl0cyByZXN1bHRzLiBUaGlzIHZhbHVlIHJlcHJlc2VudHMgdGhlCi0gICAgICogdG90YWwgc2VyaWFsaXphdGlvbiB0aW1lIGFsbG93ZWQgZm9yIHRoZSByZXF1ZXN0LiAgRGVmYXVsdHMgdG8gMCB3aGljaCBkaXNhYmxlcyB0aGlzIHNldHRpbmcuCi0gICAgICoKLSAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuMi4xLCByZXBsYWNlZCB3aG9sbHkgYnkge0BsaW5rICNldmFsdWF0aW9uVGltZW91dH0uCi0gICAgICovCi0gICAgQERlcHJlY2F0ZWQKLSAgICBwdWJsaWMgbG9uZyBzZXJpYWxpemVkUmVzcG9uc2VUaW1lb3V0ID0gMEw7Ci0KLSAgICAvKioKICAgICAgKiBOdW1iZXIgb2YgaXRlbXMgaW4gYSBwYXJ0aWN1bGFyIHJlc3VsdHNldCB0byBpdGVyYXRlIGFuZCBzZXJpYWxpemUgcHJpb3IgdG8gcHVzaGluZyB0aGUgZGF0YSBkb3duIHRoZSB3aXJlCiAgICAgICogdG8gdGhlIGNsaWVudC4KICAgICAgKi8KQEAgLTQyNiwxNiArNDE3LDcgQEAKICAgICAgICAgICogdXNlZCB0byBsb2FkIHRoZSBpbXBsZW1lbnRhdGlvbiBmcm9tIHRoZSBjbGFzc3BhdGguIERlZmF1bHRzIHRvIHtAbGluayBBbGxvd0FsbEF1dGhlbnRpY2F0b3J9IHdoZW4KICAgICAgICAgICogbm90IHNwZWNpZmllZC4KICAgICAgICAgICovCi0gICAgICAgIHB1YmxpYyBTdHJpbmcgYXV0aGVudGljYXRvciA9IG51bGw7Ci0KLSAgICAgICAgLyoqCi0gICAgICAgICAqIFRoZSBmdWxseSBxdWFsaWZpZWQgY2xhc3MgbmFtZSBvZiB0aGUge0BsaW5rIEF1dGhlbnRpY2F0b3J9IGltcGxlbWVudGF0aW9uLiBUaGlzIGNsYXNzIG5hbWUgd2lsbCBiZQotICAgICAgICAgKiB1c2VkIHRvIGxvYWQgdGhlIGltcGxlbWVudGF0aW9uIGZyb20gdGhlIGNsYXNzcGF0aC4gRGVmYXVsdHMgdG8ge0BsaW5rIEFsbG93QWxsQXV0aGVudGljYXRvcn0gd2hlbgotICAgICAgICAgKiBub3Qgc3BlY2lmaWVkLgotICAgICAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuMi41LCByZXBsYWNlZCBieSB7QGxpbmsgI2F1dGhlbnRpY2F0b3J9LgotICAgICAgICAgKi8KLSAgICAgICAgQERlcHJlY2F0ZWQKLSAgICAgICAgcHVibGljIFN0cmluZyBjbGFzc05hbWUgPSBBbGxvd0FsbEF1dGhlbnRpY2F0b3IuY2xhc3MuZ2V0TmFtZSgpOworICAgICAgICBwdWJsaWMgU3RyaW5nIGF1dGhlbnRpY2F0b3IgPSBBbGxvd0FsbEF1dGhlbnRpY2F0b3IuY2xhc3MuZ2V0TmFtZSgpOwogCiAgICAgICAgIC8qKgogICAgICAgICAgKiBUaGUgZnVsbHkgcXVhbGlmaWVkIGNsYXNzIG5hbWUgb2YgdGhlIHtAbGluayBBYnN0cmFjdEF1dGhlbnRpY2F0aW9uSGFuZGxlcn0gaW1wbGVtZW50YXRpb24uCmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL2NoYW5uZWwvV2ViU29ja2V0Q2hhbm5lbGl6ZXIuamF2YSBiL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvY2hhbm5lbC9XZWJTb2NrZXRDaGFubmVsaXplci5qYXZhCmluZGV4IDAxMDExNGIuLjc3M2I2ZmMgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvY2hhbm5lbC9XZWJTb2NrZXRDaGFubmVsaXplci5qYXZhCisrKyBiL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvY2hhbm5lbC9XZWJTb2NrZXRDaGFubmVsaXplci5qYXZhCkBAIC0xOSw2ICsxOSw3IEBACiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc2VydmVyLmNoYW5uZWw7CiAKIGltcG9ydCBpby5uZXR0eS5oYW5kbGVyLmNvZGVjLmh0dHAud2Vic29ja2V0eC5QaW5nV2ViU29ja2V0RnJhbWU7CitpbXBvcnQgaW8ubmV0dHkuaGFuZGxlci5jb2RlYy5odHRwLndlYnNvY2tldHguV2ViU29ja2V0RGVjb2RlckNvbmZpZzsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNlcnZlci5BYnN0cmFjdENoYW5uZWxpemVyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc2VydmVyLkNoYW5uZWxpemVyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc2VydmVyLmF1dGguQWxsb3dBbGxBdXRoZW50aWNhdG9yOwpAQCAtOTUsOCArOTYsMTIgQEAKIAogICAgICAgICBwaXBlbGluZS5hZGRMYXN0KFBJUEVMSU5FX0hUVFBfUkVTUE9OU0VfRU5DT0RFUiwgbmV3IEh0dHBSZXNwb25zZUVuY29kZXIoKSk7CiAKKyAgICAgICAgLy8gc2V0dGluZyBjbG9zZU9uUHJvdG9jb2xWaW9sYXRpb24gdG8gZmFsc2UgcHJldmVudHMgY2F1c2luZyBhbGwgdGhlIG90aGVyIHJlcXVlc3RzIHVzaW5nIHRoZSBzYW1lIGNoYW5uZWwKKyAgICAgICAgLy8gdG8gZmFpbCB3aGVuIGEgc2luZ2xlIHJlcXVlc3QgY2F1c2VzIGEgcHJvdG9jb2wgdmlvbGF0aW9uLgorICAgICAgICBmaW5hbCBXZWJTb2NrZXREZWNvZGVyQ29uZmlnIHdzRGVjb2RlckNvbmZpZyA9IFdlYlNvY2tldERlY29kZXJDb25maWcubmV3QnVpbGRlcigpLgorICAgICAgICAgICAgICAgIGNsb3NlT25Qcm90b2NvbFZpb2xhdGlvbihmYWxzZSkuYWxsb3dFeHRlbnNpb25zKGZhbHNlKS5tYXhGcmFtZVBheWxvYWRMZW5ndGgoc2V0dGluZ3MubWF4Q29udGVudExlbmd0aCkuYnVpbGQoKTsKICAgICAgICAgcGlwZWxpbmUuYWRkTGFzdChQSVBFTElORV9SRVFVRVNUX0hBTkRMRVIsIG5ldyBXZWJTb2NrZXRTZXJ2ZXJQcm90b2NvbEhhbmRsZXIoR1JFTUxJTl9FTkRQT0lOVCwKLSAgICAgICAgICAgICAgICBudWxsLCBmYWxzZSwgc2V0dGluZ3MubWF4Q29udGVudExlbmd0aCkpOworICAgICAgICAgICAgICAgIG51bGwsIGZhbHNlLCBmYWxzZSwgMTAwMDBMLCB3c0RlY29kZXJDb25maWcpKTsKIAogICAgICAgICBpZiAobG9nZ2VyLmlzRGVidWdFbmFibGVkKCkpCiAgICAgICAgICAgICBwaXBlbGluZS5hZGRMYXN0KG5ldyBMb2dnaW5nSGFuZGxlcigibG9nLWFnZ3JlZ2F0b3ItZW5jb2RlciIsIExvZ0xldmVsLkRFQlVHKSk7CmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL2hhbmRsZXIvSHR0cEdyZW1saW5FbmRwb2ludEhhbmRsZXIuamF2YSBiL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvaGFuZGxlci9IdHRwR3JlbWxpbkVuZHBvaW50SGFuZGxlci5qYXZhCmluZGV4IGNkNWMzNDMuLmQxMDM3NDEgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvaGFuZGxlci9IdHRwR3JlbWxpbkVuZHBvaW50SGFuZGxlci5qYXZhCisrKyBiL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvaGFuZGxlci9IdHRwR3JlbWxpbkVuZHBvaW50SGFuZGxlci5qYXZhCkBAIC0yMSw2ICsyMSw4IEBACiBpbXBvcnQgY29tLmNvZGFoYWxlLm1ldHJpY3MuTWV0ZXI7CiBpbXBvcnQgY29tLmNvZGFoYWxlLm1ldHJpY3MuVGltZXI7CiBpbXBvcnQgaW8ubmV0dHkuaGFuZGxlci5jb2RlYy5Ub29Mb25nRnJhbWVFeGNlcHRpb247CitpbXBvcnQgaW8ubmV0dHkuaGFuZGxlci5jb2RlYy5odHRwLkh0dHBIZWFkZXJWYWx1ZXM7CitpbXBvcnQgaW8ubmV0dHkuaGFuZGxlci5jb2RlYy5odHRwLkh0dHBVdGlsOwogaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5sYW5nMy5leGNlcHRpb24uRXhjZXB0aW9uVXRpbHM7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuTWVzc2FnZVNlcmlhbGl6ZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuVG9rZW5zOwpAQCAtODAsMTMgKzgyLDExIEBACiBpbXBvcnQgamF2YS51dGlsLnN0cmVhbS5TdHJlYW07CiAKIGltcG9ydCBzdGF0aWMgY29tLmNvZGFoYWxlLm1ldHJpY3MuTWV0cmljUmVnaXN0cnkubmFtZTsKLWltcG9ydCBzdGF0aWMgaW8ubmV0dHkuaGFuZGxlci5jb2RlYy5odHRwLkh0dHBIZWFkZXJzLk5hbWVzLkFDQ0VTU19DT05UUk9MX0FMTE9XX09SSUdJTjsKLWltcG9ydCBzdGF0aWMgaW8ubmV0dHkuaGFuZGxlci5jb2RlYy5odHRwLkh0dHBIZWFkZXJzLk5hbWVzLkNPTk5FQ1RJT047Ci1pbXBvcnQgc3RhdGljIGlvLm5ldHR5LmhhbmRsZXIuY29kZWMuaHR0cC5IdHRwSGVhZGVycy5OYW1lcy5DT05URU5UX0xFTkdUSDsKLWltcG9ydCBzdGF0aWMgaW8ubmV0dHkuaGFuZGxlci5jb2RlYy5odHRwLkh0dHBIZWFkZXJzLk5hbWVzLkNPTlRFTlRfVFlQRTsKLWltcG9ydCBzdGF0aWMgaW8ubmV0dHkuaGFuZGxlci5jb2RlYy5odHRwLkh0dHBIZWFkZXJzLk5hbWVzLk9SSUdJTjsKLWltcG9ydCBzdGF0aWMgaW8ubmV0dHkuaGFuZGxlci5jb2RlYy5odHRwLkh0dHBIZWFkZXJzLmlzMTAwQ29udGludWVFeHBlY3RlZDsKLWltcG9ydCBzdGF0aWMgaW8ubmV0dHkuaGFuZGxlci5jb2RlYy5odHRwLkh0dHBIZWFkZXJzLmlzS2VlcEFsaXZlOworaW1wb3J0IHN0YXRpYyBpby5uZXR0eS5oYW5kbGVyLmNvZGVjLmh0dHAuSHR0cEhlYWRlck5hbWVzLkFDQ0VTU19DT05UUk9MX0FMTE9XX09SSUdJTjsKK2ltcG9ydCBzdGF0aWMgaW8ubmV0dHkuaGFuZGxlci5jb2RlYy5odHRwLkh0dHBIZWFkZXJOYW1lcy5DT05ORUNUSU9OOworaW1wb3J0IHN0YXRpYyBpby5uZXR0eS5oYW5kbGVyLmNvZGVjLmh0dHAuSHR0cEhlYWRlck5hbWVzLkNPTlRFTlRfTEVOR1RIOworaW1wb3J0IHN0YXRpYyBpby5uZXR0eS5oYW5kbGVyLmNvZGVjLmh0dHAuSHR0cEhlYWRlck5hbWVzLkNPTlRFTlRfVFlQRTsKK2ltcG9ydCBzdGF0aWMgaW8ubmV0dHkuaGFuZGxlci5jb2RlYy5odHRwLkh0dHBIZWFkZXJOYW1lcy5PUklHSU47CiBpbXBvcnQgc3RhdGljIGlvLm5ldHR5LmhhbmRsZXIuY29kZWMuaHR0cC5IdHRwTWV0aG9kLkdFVDsKIGltcG9ydCBzdGF0aWMgaW8ubmV0dHkuaGFuZGxlci5jb2RlYy5odHRwLkh0dHBNZXRob2QuUE9TVDsKIGltcG9ydCBzdGF0aWMgaW8ubmV0dHkuaGFuZGxlci5jb2RlYy5odHRwLkh0dHBSZXNwb25zZVN0YXR1cy5CQURfUkVRVUVTVDsKQEAgLTExMSwxMSArMTExLDYgQEAKIAogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBBUkdTX0JJTkRJTkdTX0RPVCA9IFRva2Vucy5BUkdTX0JJTkRJTkdTICsgIi4iOwogCi0gICAgLyoqCi0gICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjEuMCwgcmVwbGFjZWQgYnkge0BsaW5rICNBUkdTX0FMSUFTRVNfRE9UfS4KLSAgICAgKi8KLSAgICBARGVwcmVjYXRlZAotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBBUkdTX1JFQklORElOR1NfRE9UID0gVG9rZW5zLkFSR1NfUkVCSU5ESU5HUyArICIuIjsKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQVJHU19BTElBU0VTX0RPVCA9IFRva2Vucy5BUkdTX0FMSUFTRVMgKyAiLiI7CiAKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBUaW1lciBldmFsT3BUaW1lciA9IE1ldHJpY01hbmFnZXIuSU5TVEFOQ0UuZ2V0VGltZXIobmFtZShHcmVtbGluU2VydmVyLmNsYXNzLCAib3AiLCAiZXZhbCIpKTsKQEAgLTE1MiwxNyArMTQ3LDE3IEBACiAgICAgICAgIGlmIChtc2cgaW5zdGFuY2VvZiBGdWxsSHR0cFJlcXVlc3QpIHsKICAgICAgICAgICAgIGZpbmFsIEZ1bGxIdHRwUmVxdWVzdCByZXEgPSAoRnVsbEh0dHBSZXF1ZXN0KSBtc2c7CiAKLSAgICAgICAgICAgIGlmICgiL2Zhdmljb24uaWNvIi5lcXVhbHMocmVxLmdldFVyaSgpKSkgeworICAgICAgICAgICAgaWYgKCIvZmF2aWNvbi5pY28iLmVxdWFscyhyZXEudXJpKCkpKSB7CiAgICAgICAgICAgICAgICAgc2VuZEVycm9yKGN0eCwgTk9UX0ZPVU5ELCAiR3JlbWxpbiBTZXJ2ZXIgZG9lc24ndCBoYXZlIGEgZmF2aWNvbi5pY28iKTsKICAgICAgICAgICAgICAgICBSZWZlcmVuY2VDb3VudFV0aWwucmVsZWFzZShtc2cpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKGlzMTAwQ29udGludWVFeHBlY3RlZChyZXEpKSB7CisgICAgICAgICAgICBpZiAoSHR0cFV0aWwuaXMxMDBDb250aW51ZUV4cGVjdGVkKHJlcSkpIHsKICAgICAgICAgICAgICAgICBjdHgud3JpdGUobmV3IERlZmF1bHRGdWxsSHR0cFJlc3BvbnNlKEhUVFBfMV8xLCBDT05USU5VRSkpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAocmVxLmdldE1ldGhvZCgpICE9IEdFVCAmJiByZXEuZ2V0TWV0aG9kKCkgIT0gUE9TVCkgeworICAgICAgICAgICAgaWYgKHJlcS5tZXRob2QoKSAhPSBHRVQgJiYgcmVxLm1ldGhvZCgpICE9IFBPU1QpIHsKICAgICAgICAgICAgICAgICBzZW5kRXJyb3IoY3R4LCBNRVRIT0RfTk9UX0FMTE9XRUQsIE1FVEhPRF9OT1RfQUxMT1dFRC50b1N0cmluZygpKTsKICAgICAgICAgICAgICAgICBSZWZlcmVuY2VDb3VudFV0aWwucmVsZWFzZShtc2cpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTE4Niw3ICsxODEsNyBAQAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgb3JpZ2luID0gcmVxLmhlYWRlcnMoKS5nZXQoT1JJR0lOKTsKLSAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4ga2VlcEFsaXZlID0gaXNLZWVwQWxpdmUocmVxKTsKKyAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4ga2VlcEFsaXZlID0gSHR0cFV0aWwuaXNLZWVwQWxpdmUocmVxKTsKIAogICAgICAgICAgICAgLy8gbm90IHVzaW5nIHRoZSByZXEgYW55IHdoZXJlIGJlbG93IGhlcmUgLSBhc3N1bWUgaXQgaXMgc2FmZSB0byByZWxlYXNlIGF0IHRoaXMgcG9pbnQuCiAgICAgICAgICAgICBSZWZlcmVuY2VDb3VudFV0aWwucmVsZWFzZShtc2cpOwpAQCAtMjE3LDcgKzIxMiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWtlZXBBbGl2ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC53cml0ZUFuZEZsdXNoKHJlc3BvbnNlKS5hZGRMaXN0ZW5lcihDaGFubmVsRnV0dXJlTGlzdGVuZXIuQ0xPU0UpOwogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5oZWFkZXJzKCkuc2V0KENPTk5FQ1RJT04sIEh0dHBIZWFkZXJzLlZhbHVlcy5LRUVQX0FMSVZFKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5oZWFkZXJzKCkuc2V0KENPTk5FQ1RJT04sIEh0dHBIZWFkZXJWYWx1ZXMuS0VFUF9BTElWRSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LndyaXRlQW5kRmx1c2gocmVzcG9uc2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CkBAIC0zNTQsOCArMzQ5LDggQEAKICAgICB9CiAKICAgICBwcml2YXRlIHN0YXRpYyBRdWFydGV0PFN0cmluZywgTWFwPFN0cmluZywgT2JqZWN0PiwgU3RyaW5nLCBNYXA8U3RyaW5nLFN0cmluZz4+IGdldFJlcXVlc3RBcmd1bWVudHMoZmluYWwgRnVsbEh0dHBSZXF1ZXN0IHJlcXVlc3QpIHsKLSAgICAgICAgaWYgKHJlcXVlc3QuZ2V0TWV0aG9kKCkgPT0gR0VUKSB7Ci0gICAgICAgICAgICBmaW5hbCBRdWVyeVN0cmluZ0RlY29kZXIgZGVjb2RlciA9IG5ldyBRdWVyeVN0cmluZ0RlY29kZXIocmVxdWVzdC5nZXRVcmkoKSk7CisgICAgICAgIGlmIChyZXF1ZXN0Lm1ldGhvZCgpID09IEdFVCkgeworICAgICAgICAgICAgZmluYWwgUXVlcnlTdHJpbmdEZWNvZGVyIGRlY29kZXIgPSBuZXcgUXVlcnlTdHJpbmdEZWNvZGVyKHJlcXVlc3QudXJpKCkpOwogICAgICAgICAgICAgZmluYWwgTGlzdDxTdHJpbmc+IGdyZW1saW5QYXJtcyA9IGRlY29kZXIucGFyYW1ldGVycygpLmdldChUb2tlbnMuQVJHU19HUkVNTElOKTsKIAogICAgICAgICAgICAgaWYgKG51bGwgPT0gZ3JlbWxpblBhcm1zIHx8IGdyZW1saW5QYXJtcy5zaXplKCkgPT0gMCkKQEAgLTM2OCwxOCArMzYzLDkgQEAKICAgICAgICAgICAgIGRlY29kZXIucGFyYW1ldGVycygpLmVudHJ5U2V0KCkuc3RyZWFtKCkuZmlsdGVyKGt2IC0+IGt2LmdldEtleSgpLnN0YXJ0c1dpdGgoQVJHU19CSU5ESU5HU19ET1QpKQogICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaChrdiAtPiBiaW5kaW5ncy5wdXQoa3YuZ2V0S2V5KCkuc3Vic3RyaW5nKEFSR1NfQklORElOR1NfRE9ULmxlbmd0aCgpKSwga3YuZ2V0VmFsdWUoKS5nZXQoMCkpKTsKIAotICAgICAgICAgICAgLy8gZG9uJ3QgYWxsb3cgYm90aCByZWJpbmRpbmdzIGFuZCBhbGlhc2VzIHBhcmFtZXRlcnMgYXMgdGhleSBhcmUgdGhlIHNhbWUgdGhpbmcuIGFsaWFzZXMgd2VyZSBpbnRyb2R1Y2VkCi0gICAgICAgICAgICAvLyBhcyBvZiAzLjEuMCBhcyBhIHJlcGxhY2VtZW50IGZvciByZWJpbmRpbmdzLiB0aGlzIGNoZWNrIGNhbiBiZSByZW1vdmVkIHdoZW4gcmViaW5kaW5ncyBhcmUgY29tcGxldGVseQotICAgICAgICAgICAgLy8gcmVtb3ZlZCBmcm9tIHRoZSBwcm90b2NvbAotICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBoYXNSZWJpbmRpbmdzID0gZGVjb2Rlci5wYXJhbWV0ZXJzKCkuZW50cnlTZXQoKS5zdHJlYW0oKS5hbnlNYXRjaChrdiAtPiBrdi5nZXRLZXkoKS5zdGFydHNXaXRoKEFSR1NfUkVCSU5ESU5HU19ET1QpKTsKLSAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gaGFzQWxpYXNlcyA9IGRlY29kZXIucGFyYW1ldGVycygpLmVudHJ5U2V0KCkuc3RyZWFtKCkuYW55TWF0Y2goa3YgLT4ga3YuZ2V0S2V5KCkuc3RhcnRzV2l0aChBUkdTX0FMSUFTRVNfRE9UKSk7Ci0gICAgICAgICAgICBpZiAoaGFzUmViaW5kaW5ncyAmJiBoYXNBbGlhc2VzKQotICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oInByZWZlciB1c2Ugb2YgdGhlICdhbGlhc2VzJyBwYXJhbWV0ZXIgb3ZlciAncmViaW5kaW5ncycgYW5kIGRvIG5vdCB1c2UgYm90aCIpOwotCiAgICAgICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLCBTdHJpbmc+IGFsaWFzZXMgPSBuZXcgSGFzaE1hcDw+KCk7Ci0gICAgICAgICAgICBmaW5hbCBTdHJpbmcgcmViaW5kaW5nT3JBbGlhc1BhcmFtZXRlciA9IGhhc1JlYmluZGluZ3MgPyBBUkdTX1JFQklORElOR1NfRE9UIDogQVJHU19BTElBU0VTX0RPVDsKLSAgICAgICAgICAgIGRlY29kZXIucGFyYW1ldGVycygpLmVudHJ5U2V0KCkuc3RyZWFtKCkuZmlsdGVyKGt2IC0+IGt2LmdldEtleSgpLnN0YXJ0c1dpdGgocmViaW5kaW5nT3JBbGlhc1BhcmFtZXRlcikpCi0gICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKGt2IC0+IGFsaWFzZXMucHV0KGt2LmdldEtleSgpLnN1YnN0cmluZyhyZWJpbmRpbmdPckFsaWFzUGFyYW1ldGVyLmxlbmd0aCgpKSwga3YuZ2V0VmFsdWUoKS5nZXQoMCkpKTsKKyAgICAgICAgICAgIGRlY29kZXIucGFyYW1ldGVycygpLmVudHJ5U2V0KCkuc3RyZWFtKCkuZmlsdGVyKGt2IC0+IGt2LmdldEtleSgpLnN0YXJ0c1dpdGgoQVJHU19BTElBU0VTX0RPVCkpCisgICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKGt2IC0+IGFsaWFzZXMucHV0KGt2LmdldEtleSgpLnN1YnN0cmluZyhBUkdTX0FMSUFTRVNfRE9ULmxlbmd0aCgpKSwga3YuZ2V0VmFsdWUoKS5nZXQoMCkpKTsKIAogICAgICAgICAgICAgZmluYWwgTGlzdDxTdHJpbmc+IGxhbmd1YWdlUGFybXMgPSBkZWNvZGVyLnBhcmFtZXRlcnMoKS5nZXQoVG9rZW5zLkFSR1NfTEFOR1VBR0UpOwogICAgICAgICAgICAgZmluYWwgU3RyaW5nIGxhbmd1YWdlID0gKG51bGwgPT0gbGFuZ3VhZ2VQYXJtcyB8fCBsYW5ndWFnZVBhcm1zLnNpemUoKSA9PSAwKSA/IG51bGwgOiBsYW5ndWFnZVBhcm1zLmdldCgwKTsKQEAgLTQwNCwxNiArMzkwLDcgQEAKICAgICAgICAgICAgIGlmIChiaW5kaW5nc05vZGUgIT0gbnVsbCkKICAgICAgICAgICAgICAgICBiaW5kaW5nc05vZGUuZmllbGRzKCkuZm9yRWFjaFJlbWFpbmluZyhrdiAtPiBiaW5kaW5ncy5wdXQoa3YuZ2V0S2V5KCksIGZyb21Kc29uTm9kZShrdi5nZXRWYWx1ZSgpKSkpOwogCi0gICAgICAgICAgICAvLyBkb24ndCBhbGxvdyBib3RoIHJlYmluZGluZ3MgYW5kIGFsaWFzZXMgcGFyYW1ldGVycyBhcyB0aGV5IGFyZSB0aGUgc2FtZSB0aGluZy4gYWxpYXNlcyB3ZXJlIGludHJvZHVjZWQKLSAgICAgICAgICAgIC8vIGFzIG9mIDMuMS4wIGFzIGEgcmVwbGFjZW1lbnQgZm9yIHJlYmluZGluZ3MuIHRoaXMgY2hlY2sgY2FuIGJlIHJlbW92ZWQgd2hlbiByZWJpbmRpbmdzIGFyZSBjb21wbGV0ZWx5Ci0gICAgICAgICAgICAvLyByZW1vdmVkIGZyb20gdGhlIHByb3RvY29sCi0gICAgICAgICAgICBmaW5hbCBib29sZWFuIGhhc1JlYmluZGluZ3MgPSBib2R5LmhhcyhUb2tlbnMuQVJHU19SRUJJTkRJTkdTKTsKLSAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gaGFzQWxpYXNlcyA9IGJvZHkuaGFzKFRva2Vucy5BUkdTX0FMSUFTRVMpOwotICAgICAgICAgICAgaWYgKGhhc1JlYmluZGluZ3MgJiYgaGFzQWxpYXNlcykKLSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJwcmVmZXIgdXNlIG9mIHRoZSAnYWxpYXNlcycgcGFyYW1ldGVyIG92ZXIgJ3JlYmluZGluZ3MnIGFuZCBkbyBub3QgdXNlIGJvdGgiKTsKLQotICAgICAgICAgICAgZmluYWwgU3RyaW5nIHJlYmluZGluZ09yQWxpYXNQYXJhbWV0ZXIgPSBoYXNSZWJpbmRpbmdzID8gVG9rZW5zLkFSR1NfUkVCSU5ESU5HUyA6IFRva2Vucy5BUkdTX0FMSUFTRVM7Ci0gICAgICAgICAgICBmaW5hbCBKc29uTm9kZSBhbGlhc2VzTm9kZSA9IGJvZHkuZ2V0KHJlYmluZGluZ09yQWxpYXNQYXJhbWV0ZXIpOworICAgICAgICAgICAgZmluYWwgSnNvbk5vZGUgYWxpYXNlc05vZGUgPSBib2R5LmdldChUb2tlbnMuQVJHU19BTElBU0VTKTsKICAgICAgICAgICAgIGlmIChhbGlhc2VzTm9kZSAhPSBudWxsICYmICFhbGlhc2VzTm9kZS5pc09iamVjdCgpKQogICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImFsaWFzZXMgbXVzdCBiZSBhIE1hcCIpOwogCmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL2hhbmRsZXIvT3BTZWxlY3RvckhhbmRsZXIuamF2YSBiL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvaGFuZGxlci9PcFNlbGVjdG9ySGFuZGxlci5qYXZhCmluZGV4IDg5YWUwZWUuLjVhMmUxZjggMTAwNjQ0Ci0tLSBhL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvaGFuZGxlci9PcFNlbGVjdG9ySGFuZGxlci5qYXZhCisrKyBiL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvaGFuZGxlci9PcFNlbGVjdG9ySGFuZGxlci5qYXZhCkBAIC01NiwxNSArNTYsNiBAQAogICAgIHByaXZhdGUgZmluYWwgU2NoZWR1bGVkRXhlY3V0b3JTZXJ2aWNlIHNjaGVkdWxlZEV4ZWN1dG9yU2VydmljZTsKICAgICBwcml2YXRlIGZpbmFsIENoYW5uZWxpemVyIGNoYW5uZWxpemVyOwogCi0gICAgLyoqCi0gICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjIuOCwgcmVwbGFjZWQgYnkge0BsaW5rICNPcFNlbGVjdG9ySGFuZGxlcihTZXR0aW5ncywgR3JhcGhNYW5hZ2VyLCBHcmVtbGluRXhlY3V0b3IsIFNjaGVkdWxlZEV4ZWN1dG9yU2VydmljZSwgQ2hhbm5lbGl6ZXIpfQotICAgICAqLwotICAgIEBEZXByZWNhdGVkCi0gICAgcHVibGljIE9wU2VsZWN0b3JIYW5kbGVyKGZpbmFsIFNldHRpbmdzIHNldHRpbmdzLCBmaW5hbCBHcmFwaE1hbmFnZXIgZ3JhcGhNYW5hZ2VyLCBmaW5hbCBHcmVtbGluRXhlY3V0b3IgZ3JlbWxpbkV4ZWN1dG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBTY2hlZHVsZWRFeGVjdXRvclNlcnZpY2Ugc2NoZWR1bGVkRXhlY3V0b3JTZXJ2aWNlKSB7Ci0gICAgICAgIHRoaXMoc2V0dGluZ3MsIGdyYXBoTWFuYWdlciwgZ3JlbWxpbkV4ZWN1dG9yLCBzY2hlZHVsZWRFeGVjdXRvclNlcnZpY2UsIG51bGwpOwotICAgIH0KLQogICAgIHB1YmxpYyBPcFNlbGVjdG9ySGFuZGxlcihmaW5hbCBTZXR0aW5ncyBzZXR0aW5ncywgZmluYWwgR3JhcGhNYW5hZ2VyIGdyYXBoTWFuYWdlciwgZmluYWwgR3JlbWxpbkV4ZWN1dG9yIGdyZW1saW5FeGVjdXRvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgU2NoZWR1bGVkRXhlY3V0b3JTZXJ2aWNlIHNjaGVkdWxlZEV4ZWN1dG9yU2VydmljZSwgZmluYWwgQ2hhbm5lbGl6ZXIgY2hhbm5lbGl6ZXIpIHsKICAgICAgICAgdGhpcy5zZXR0aW5ncyA9IHNldHRpbmdzOwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9oYW5kbGVyL1Nhc2xBdXRoZW50aWNhdGlvbkhhbmRsZXIuamF2YSBiL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvaGFuZGxlci9TYXNsQXV0aGVudGljYXRpb25IYW5kbGVyLmphdmEKaW5kZXggZWQzZGRjOS4uM2UxMWFlOCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9oYW5kbGVyL1Nhc2xBdXRoZW50aWNhdGlvbkhhbmRsZXIuamF2YQorKysgYi9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL2hhbmRsZXIvU2FzbEF1dGhlbnRpY2F0aW9uSGFuZGxlci5qYXZhCkBAIC0zMiw2ICszMiw3IEBACiBpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CiBpbXBvcnQgamF2YS51dGlsLk1hcDsKIAoraW1wb3J0IGlvLm5ldHR5LnV0aWwuQXR0cmlidXRlTWFwOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLlRva2VuczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5tZXNzYWdlLlJlcXVlc3RNZXNzYWdlOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLm1lc3NhZ2UuUmVzcG9uc2VNZXNzYWdlOwpAQCAtNzMsOCArNzQsOCBAQAogICAgICAgICBpZiAobXNnIGluc3RhbmNlb2YgUmVxdWVzdE1lc3NhZ2UpewogICAgICAgICAgICAgZmluYWwgUmVxdWVzdE1lc3NhZ2UgcmVxdWVzdE1lc3NhZ2UgPSAoUmVxdWVzdE1lc3NhZ2UpIG1zZzsKIAotICAgICAgICAgICAgZmluYWwgQXR0cmlidXRlPEF1dGhlbnRpY2F0b3IuU2FzbE5lZ290aWF0b3I+IG5lZ290aWF0b3IgPSBjdHguYXR0cihTdGF0ZUtleS5ORUdPVElBVE9SKTsKLSAgICAgICAgICAgIGZpbmFsIEF0dHJpYnV0ZTxSZXF1ZXN0TWVzc2FnZT4gcmVxdWVzdCA9IGN0eC5hdHRyKFN0YXRlS2V5LlJFUVVFU1RfTUVTU0FHRSk7CisgICAgICAgICAgICBmaW5hbCBBdHRyaWJ1dGU8QXV0aGVudGljYXRvci5TYXNsTmVnb3RpYXRvcj4gbmVnb3RpYXRvciA9ICgoQXR0cmlidXRlTWFwKSBjdHgpLmF0dHIoU3RhdGVLZXkuTkVHT1RJQVRPUik7CisgICAgICAgICAgICBmaW5hbCBBdHRyaWJ1dGU8UmVxdWVzdE1lc3NhZ2U+IHJlcXVlc3QgPSAoKEF0dHJpYnV0ZU1hcCkgY3R4KS5hdHRyKFN0YXRlS2V5LlJFUVVFU1RfTUVTU0FHRSk7CiAgICAgICAgICAgICBpZiAobmVnb3RpYXRvci5nZXQoKSA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgLy8gRmlyc3QgdGltZSB0aHJvdWdoIHNvIHNhdmUgdGhlIHJlcXVlc3QgYW5kIHNlbmQgYW4gQVVUSEVOVElDQVRFIGNoYWxsZW5nZSB3aXRoIG5vIGRhdGEKZGlmZiAtLWdpdCBhL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvaGFuZGxlci9XZWJTb2NrZXRIYW5kbGVyVXRpbC5qYXZhIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9oYW5kbGVyL1dlYlNvY2tldEhhbmRsZXJVdGlsLmphdmEKaW5kZXggYWIwNGI4Yy4uZWUzN2U0NCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9oYW5kbGVyL1dlYlNvY2tldEhhbmRsZXJVdGlsLmphdmEKKysrIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9oYW5kbGVyL1dlYlNvY2tldEhhbmRsZXJVdGlsLmphdmEKQEAgLTIwLDggKzIwLDggQEAKIAogaW1wb3J0IGlvLm5ldHR5LmhhbmRsZXIuY29kZWMuaHR0cC5IdHRwTWVzc2FnZTsKIAotaW1wb3J0IHN0YXRpYyBpby5uZXR0eS5oYW5kbGVyLmNvZGVjLmh0dHAuSHR0cEhlYWRlcnMuTmFtZXMuVVBHUkFERTsKLWltcG9ydCBzdGF0aWMgaW8ubmV0dHkuaGFuZGxlci5jb2RlYy5odHRwLkh0dHBIZWFkZXJzLk5hbWVzLkNPTk5FQ1RJT047CitpbXBvcnQgc3RhdGljIGlvLm5ldHR5LmhhbmRsZXIuY29kZWMuaHR0cC5IdHRwSGVhZGVyTmFtZXMuVVBHUkFERTsKK2ltcG9ydCBzdGF0aWMgaW8ubmV0dHkuaGFuZGxlci5jb2RlYy5odHRwLkh0dHBIZWFkZXJOYW1lcy5DT05ORUNUSU9OOwogCiAvKioKICAqIEEgY2xhc3MgdG8gaGFuZGxlIGNvbW1vbiBXZWJTb2NrZXQgb3BlcmF0aW9ucy4KZGlmZiAtLWdpdCBhL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvaGFuZGxlci9Xc0FuZEh0dHBDaGFubmVsaXplckhhbmRsZXIuamF2YSBiL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvaGFuZGxlci9Xc0FuZEh0dHBDaGFubmVsaXplckhhbmRsZXIuamF2YQppbmRleCAwMTU3OWEzLi5lNGY3OWI0IDEwMDY0NAotLS0gYS9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL2hhbmRsZXIvV3NBbmRIdHRwQ2hhbm5lbGl6ZXJIYW5kbGVyLmphdmEKKysrIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9oYW5kbGVyL1dzQW5kSHR0cENoYW5uZWxpemVySGFuZGxlci5qYXZhCkBAIC0yMiwyMSArMjIsMTIgQEAKIGltcG9ydCBpby5uZXR0eS5jaGFubmVsLkNoYW5uZWxIYW5kbGVyQ29udGV4dDsKIGltcG9ydCBpby5uZXR0eS5jaGFubmVsLkNoYW5uZWxJbmJvdW5kSGFuZGxlckFkYXB0ZXI7CiBpbXBvcnQgaW8ubmV0dHkuY2hhbm5lbC5DaGFubmVsUGlwZWxpbmU7Ci1pbXBvcnQgaW8ubmV0dHkuY2hhbm5lbC5FdmVudExvb3BHcm91cDsKIGltcG9ydCBpby5uZXR0eS5oYW5kbGVyLmNvZGVjLmh0dHAuSHR0cE1lc3NhZ2U7Ci1pbXBvcnQgaW8ubmV0dHkuaGFuZGxlci5jb2RlYy5odHRwLndlYnNvY2tldHguV2ViU29ja2V0U2VydmVyUHJvdG9jb2xIYW5kbGVyOwotaW1wb3J0IGlvLm5ldHR5LmhhbmRsZXIuY29kZWMuaHR0cC5IdHRwU2VydmVyQ29kZWM7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIuQ2hhbm5lbGl6ZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIuY2hhbm5lbC5IdHRwQ2hhbm5lbGl6ZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIuY2hhbm5lbC5XZWJTb2NrZXRDaGFubmVsaXplcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNlcnZlci5jaGFubmVsLldzQW5kSHR0cENoYW5uZWxpemVyOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc2VydmVyLmhhbmRsZXIuSHR0cEdyZW1saW5FbmRwb2ludEhhbmRsZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIuaGFuZGxlci5Xc0FuZEh0dHBDaGFubmVsaXplckhhbmRsZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIuaGFuZGxlci5XZWJTb2NrZXRIYW5kbGVyVXRpbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNlcnZlci51dGlsLlNlcnZlckdyZW1saW5FeGVjdXRvcjsKIAotaW1wb3J0IHN0YXRpYyBpby5uZXR0eS5oYW5kbGVyLmNvZGVjLmh0dHAuSHR0cEhlYWRlcnMuTmFtZXMuVVBHUkFERTsKLWltcG9ydCBzdGF0aWMgaW8ubmV0dHkuaGFuZGxlci5jb2RlYy5odHRwLkh0dHBIZWFkZXJzLk5hbWVzLkNPTk5FQ1RJT047CiBpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc2VydmVyLmNoYW5uZWwuV2ViU29ja2V0Q2hhbm5lbGl6ZXIuUElQRUxJTkVfQVVUSEVOVElDQVRPUjsKIGltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIuY2hhbm5lbC5XZWJTb2NrZXRDaGFubmVsaXplci5QSVBFTElORV9SRVFVRVNUX0hBTkRMRVI7CiBpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc2VydmVyLmNoYW5uZWwuV2ViU29ja2V0Q2hhbm5lbGl6ZXIuUElQRUxJTkVfSFRUUF9SRVNQT05TRV9FTkNPREVSOwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9vcC9BYnN0cmFjdEV2YWxPcFByb2Nlc3Nvci5qYXZhIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9vcC9BYnN0cmFjdEV2YWxPcFByb2Nlc3Nvci5qYXZhCmluZGV4IDk1MDM4ZTQuLjI2MjBlNDcgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvb3AvQWJzdHJhY3RFdmFsT3BQcm9jZXNzb3IuamF2YQorKysgYi9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL29wL0Fic3RyYWN0RXZhbE9wUHJvY2Vzc29yLmphdmEKQEAgLTI5OSw5ICsyOTksOSBAQAogICAgICAgICAgICAgICAgICAgICAvLyBwcmVzZW50ZWQgaXRzZWxmIHdoZXJlIHRoZSAiTWV0aG9kIGNvZGUgdG9vIGxhcmdlISIgY29tZXMgd2l0aCBvdGhlciBjb21waWxhdGlvbiBlcnJvcnMgc28KICAgICAgICAgICAgICAgICAgICAgLy8gaXQgc2VlbXMgdGhhdCB0aGlzIG1lc3NhZ2UgdHJ1bXBzIG90aGVyIGNvbXBpbGF0aW9uIGVycm9ycyB0byBzb21lIHJlYXNvbmFibGUgZGVncmVlIHRoYXQgZW5kcwogICAgICAgICAgICAgICAgICAgICAvLyB1cCBiZWluZyBmYXZvcmFibGUgZm9yIHRoaXMgcHJvYmxlbQotICAgICAgICAgICAgICAgICAgICBpZiAodCBpbnN0YW5jZW9mIE11bHRpcGxlQ29tcGlsYXRpb25FcnJvcnNFeGNlcHRpb24gJiYgdC5nZXRNZXNzYWdlKCkuY29udGFpbnMoIk1ldGhvZCBjb2RlIHRvbyBsYXJnZSEiKSAmJgorICAgICAgICAgICAgICAgICAgICBpZiAodCBpbnN0YW5jZW9mIE11bHRpcGxlQ29tcGlsYXRpb25FcnJvcnNFeGNlcHRpb24gJiYgdC5nZXRNZXNzYWdlKCkuY29udGFpbnMoIk1ldGhvZCB0b28gbGFyZ2UiKSAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTXVsdGlwbGVDb21waWxhdGlvbkVycm9yc0V4Y2VwdGlvbikgdCkuZ2V0RXJyb3JDb2xsZWN0b3IoKS5nZXRFcnJvckNvdW50KCkgPT0gMSkgewotICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nIGVycm9yTWVzc2FnZSA9IFN0cmluZy5mb3JtYXQoIlRoZSBHcmVtbGluIHN0YXRlbWVudCB0aGF0IHdhcyBzdWJtaXR0ZWQgZXhjZWVkIHRoZSBtYXhpbXVtIGNvbXBpbGF0aW9uIHNpemUgYWxsb3dlZCBieSB0aGUgSlZNLCBwbGVhc2Ugc3BsaXQgaXQgaW50byBtdWx0aXBsZSBzbWFsbGVyIHN0YXRlbWVudHMgLSAlcyIsIHRyaW1NZXNzYWdlKG1zZykpOworICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nIGVycm9yTWVzc2FnZSA9IFN0cmluZy5mb3JtYXQoIlRoZSBHcmVtbGluIHN0YXRlbWVudCB0aGF0IHdhcyBzdWJtaXR0ZWQgZXhjZWVkcyB0aGUgbWF4aW11bSBjb21waWxhdGlvbiBzaXplIGFsbG93ZWQgYnkgdGhlIEpWTSwgcGxlYXNlIHNwbGl0IGl0IGludG8gbXVsdGlwbGUgc21hbGxlciBzdGF0ZW1lbnRzIC0gJXMiLCB0cmltTWVzc2FnZShtc2cpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuKGVycm9yTWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBjdHgud3JpdGVBbmRGbHVzaChSZXNwb25zZU1lc3NhZ2UuYnVpbGQobXNnKS5jb2RlKFJlc3BvbnNlU3RhdHVzQ29kZS5TRVJWRVJfRVJST1JfU0NSSVBUX0VWQUxVQVRJT04pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3RhdHVzTWVzc2FnZShlcnJvck1lc3NhZ2UpCkBAIC0zMjEsNyArMzIxLDcgQEAKICAgICB9CiAKICAgICAvKioKLSAgICAgKiBVc2VkIHRvIGRlY3JlYXNlIHRoZSBzaXplIG9mIGEgR3JlbWxpbiBzY3JpcHQgdGhhdCB0cmlnZ2VyZWQgYSAibWV0aG9kIGNvZGUgdG9vIGxhcmdlIiBleGNlcHRpb24gc28gdGhhdCBpdAorICAgICAqIFVzZWQgdG8gZGVjcmVhc2UgdGhlIHNpemUgb2YgYSBHcmVtbGluIHNjcmlwdCB0aGF0IHRyaWdnZXJlZCBhICJtZXRob2QgdG9vIGxhcmdlIiBleGNlcHRpb24gc28gdGhhdCBpdAogICAgICAqIGRvZXNuJ3QgbG9nIGEgbWFzc2l2ZSB0ZXh0IHN0cmluZyBub3IgcmV0dXJuIGEgbGFyZ2UgZXJyb3IgbWVzc2FnZS4KICAgICAgKi8KICAgICBwcml2YXRlIFJlcXVlc3RNZXNzYWdlIHRyaW1NZXNzYWdlKGZpbmFsIFJlcXVlc3RNZXNzYWdlIG1zZykgewpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9vcC9BYnN0cmFjdE9wUHJvY2Vzc29yLmphdmEgYi9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL29wL0Fic3RyYWN0T3BQcm9jZXNzb3IuamF2YQppbmRleCAwM2JmNmZkLi42MjU0YjFkIDEwMDY0NAotLS0gYS9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL29wL0Fic3RyYWN0T3BQcm9jZXNzb3IuamF2YQorKysgYi9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL29wL0Fic3RyYWN0T3BQcm9jZXNzb3IuamF2YQpAQCAtMTksNyArMTksNiBAQAogcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNlcnZlci5vcDsKIAogaW1wb3J0IGlvLm5ldHR5LmNoYW5uZWwuQ2hhbm5lbEhhbmRsZXJDb250ZXh0OwotaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5sYW5nMy50aW1lLlN0b3BXYXRjaDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5NZXNzYWdlU2VyaWFsaXplcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5Ub2tlbnM7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIubWVzc2FnZS5SZXF1ZXN0TWVzc2FnZTsKQEAgLTM5LDEyICszOCwxMiBAQAogCiBpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKIGltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7CitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CiBpbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7CiBpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwogaW1wb3J0IGphdmEudXRpbC5MaXN0OwogaW1wb3J0IGphdmEudXRpbC5NYXA7CiBpbXBvcnQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQ7Ci1pbXBvcnQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZW91dEV4Y2VwdGlvbjsKIAogLyoqCiAgKiBBIGJhc2Uge0BsaW5rIE9wUHJvY2Vzc29yfSBpbXBsZW1lbnRhdGlvbiB0aGF0IHByb2Nlc3NlcyBhbiB7QGNvZGUgSXRlcmF0b3J9IG9mIHJlc3VsdHMgaW4gYSBnZW5lcmFsaXplZCB3YXkgd2hpbGUKQEAgLTY1LDI3ICs2NCwyMCBAQAogICAgIH0KIAogICAgIC8qKgotICAgICAqIEEgdmFyaWFudCBvZiB7QGxpbmsgI2hhbmRsZUl0ZXJhdG9yKENvbnRleHQsIEl0ZXJhdG9yKX0gdGhhdCBpcyBzdWl0YWJsZSBmb3IgdXNlIGluIHNpdHVhdGlvbnMgd2hlbiBtdWx0aXBsZQotICAgICAqIHRocmVhZHMgbWF5IHByb2R1Y2Uge0BsaW5rIFJlc3BvbnNlU3RhdHVzQ29kZSNpc0ZpbmFsUmVzcG9uc2UoKSBmaW5hbH0gcmVzcG9uc2UgbWVzc2FnZXMgY29uY3VycmVudGx5LgogICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy4zLjgsIG5vdCByZXBsYWNlZC4KICAgICAgKi8KICAgICBARGVwcmVjYXRlZAotICAgIHByb3RlY3RlZCB2b2lkIGhhbmRsZUl0ZXJhdG9yKGZpbmFsIFJlc3BvbnNlSGFuZGxlckNvbnRleHQgcmhjLCBmaW5hbCBJdGVyYXRvciBpdHR5KSB0aHJvd3MgVGltZW91dEV4Y2VwdGlvbiwgSW50ZXJydXB0ZWRFeGNlcHRpb24geworICAgIHByb3RlY3RlZCB2b2lkIGhhbmRsZUl0ZXJhdG9yKGZpbmFsIFJlc3BvbnNlSGFuZGxlckNvbnRleHQgcmhjLCBmaW5hbCBJdGVyYXRvciBpdHR5KSB0aHJvd3MgSW50ZXJydXB0ZWRFeGNlcHRpb24gewogICAgICAgICBoYW5kbGVJdGVyYXRvcihyaGMuZ2V0Q29udGV4dCgpLCBpdHR5KTsKICAgICB9CiAKICAgICAvKioKLSAgICAgKiBQcm92aWRlcyBhIGdlbmVyaWMgd2F5IG9mIGl0ZXJhdGluZyBhIHJlc3VsdCBzZXQgYmFjayB0byB0aGUgY2xpZW50LiBJbXBsZW1lbnRlcnMgc2hvdWxkIHJlc3BlY3QgdGhlCi0gICAgICoge0BsaW5rIFNldHRpbmdzI3NlcmlhbGl6ZWRSZXNwb25zZVRpbWVvdXR9IGNvbmZpZ3VyYXRpb24gYW5kIGJyZWFrIHRoZSBzZXJpYWxpemF0aW9uIHByb2Nlc3MgaWYKLSAgICAgKiBpdCBiZWdpbnMgdG8gdGFrZSB0b28gbG9uZyB0byBkbyBzbywgdGhyb3dpbmcgYSB7QGNvZGUgVGltZW91dEV4Y2VwdGlvbn0gaW4gc3VjaAotICAgICAqIGNhc2VzLgorICAgICAqIFByb3ZpZGVzIGEgZ2VuZXJpYyB3YXkgb2YgaXRlcmF0aW5nIGEgcmVzdWx0IHNldCBiYWNrIHRvIHRoZSBjbGllbnQuCiAgICAgICoKLSAgICAgKiBAcGFyYW0gY29udGV4dCBUaGUgR3JlbWxpbiBTZXJ2ZXIge0BsaW5rIENvbnRleHR9IHdoaWNoIGVuZm9yY2VzIHRoYXQgb25seSBhIHNpbmdsZSBmaW5hbCByZXNwb25zZSBpcwotICAgICAqICAgICAgICAgICAgc2VudCB0byB0aGUgY2xpZW50LgorICAgICAqIEBwYXJhbSBjb250ZXh0IFRoZSBHcmVtbGluIFNlcnZlciB7QGxpbmsgQ29udGV4dH0gb2JqZWN0IGNvbnRhaW5pbmcgc2V0dGluZ3MsIHJlcXVlc3QgbWVzc2FnZSwgZXRjLgogICAgICAqIEBwYXJhbSBpdHR5IFRoZSByZXN1bHQgdG8gaXRlcmF0b3IKLSAgICAgKiBAdGhyb3dzIFRpbWVvdXRFeGNlcHRpb24gaWYgdGhlIHRpbWUgdGFrZW4gdG8gc2VyaWFsaXplIHRoZSBlbnRpcmUgcmVzdWx0IHNldCBleGNlZWRzIHRoZSBhbGxvd2FibGUgdGltZS4KICAgICAgKi8KLSAgICBwcm90ZWN0ZWQgdm9pZCBoYW5kbGVJdGVyYXRvcihmaW5hbCBDb250ZXh0IGNvbnRleHQsIGZpbmFsIEl0ZXJhdG9yIGl0dHkpIHRocm93cyBUaW1lb3V0RXhjZXB0aW9uLCBJbnRlcnJ1cHRlZEV4Y2VwdGlvbiB7CisgICAgcHJvdGVjdGVkIHZvaWQgaGFuZGxlSXRlcmF0b3IoZmluYWwgQ29udGV4dCBjb250ZXh0LCBmaW5hbCBJdGVyYXRvciBpdHR5KSB0aHJvd3MgSW50ZXJydXB0ZWRFeGNlcHRpb24gewogICAgICAgICBmaW5hbCBDaGFubmVsSGFuZGxlckNvbnRleHQgbmV0dHlDb250ZXh0ID0gY29udGV4dC5nZXRDaGFubmVsSGFuZGxlckNvbnRleHQoKTsKICAgICAgICAgZmluYWwgUmVxdWVzdE1lc3NhZ2UgbXNnID0gY29udGV4dC5nZXRSZXF1ZXN0TWVzc2FnZSgpOwogICAgICAgICBmaW5hbCBTZXR0aW5ncyBzZXR0aW5ncyA9IGNvbnRleHQuZ2V0U2V0dGluZ3MoKTsKQEAgLTk5LDE5ICs5MSwxNyBAQAogCiAgICAgICAgIC8vIHdlIGhhdmUgYW4gZW1wdHkgaXRlcmF0b3IgLSBoYXBwZW5zIG9uIHN0dWZmIGxpa2U6IGcuVigpLml0ZXJhdGUoKQogICAgICAgICBpZiAoIWl0dHkuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLCBPYmplY3Q+IGF0dHJpYnV0ZXMgPSBnZW5lcmF0ZVN0YXR1c0F0dHJpYnV0ZXMobmV0dHlDb250ZXh0LCBtc2csIFJlc3BvbnNlU3RhdHVzQ29kZS5OT19DT05URU5ULCBpdHR5LCBzZXR0aW5ncyk7CiAgICAgICAgICAgICAvLyBhcyB0aGVyZSBpcyBub3RoaW5nIGxlZnQgdG8gaXRlcmF0ZSBpZiB3ZSBhcmUgdHJhbnNhY3Rpb24gbWFuYWdlZCB0aGVuIHdlIHNob3VsZCBleGVjdXRlIGEKICAgICAgICAgICAgIC8vIGNvbW1pdCBoZXJlIGJlZm9yZSB3ZSBzZW5kIGJhY2sgYSBOT19DT05URU5UIHdoaWNoIGltcGxpZXMgc3VjY2VzcwogICAgICAgICAgICAgaWYgKG1hbmFnZWRUcmFuc2FjdGlvbnNGb3JSZXF1ZXN0KSBhdHRlbXB0Q29tbWl0KG1zZywgY29udGV4dC5nZXRHcmFwaE1hbmFnZXIoKSwgc2V0dGluZ3Muc3RyaWN0VHJhbnNhY3Rpb25NYW5hZ2VtZW50KTsKICAgICAgICAgICAgIGNvbnRleHQud3JpdGVBbmRGbHVzaChSZXNwb25zZU1lc3NhZ2UuYnVpbGQobXNnKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNvZGUoUmVzcG9uc2VTdGF0dXNDb2RlLk5PX0NPTlRFTlQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY3JlYXRlKCkpOworICAgICAgICAgICAgICAgICAgICAuY29kZShSZXNwb25zZVN0YXR1c0NvZGUuTk9fQ09OVEVOVCkKKyAgICAgICAgICAgICAgICAgICAgLnN0YXR1c0F0dHJpYnV0ZXMoYXR0cmlidXRlcykKKyAgICAgICAgICAgICAgICAgICAgLmNyZWF0ZSgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIC8vIHRpbWVyIGZvciB0aGUgdG90YWwgc2VyaWFsaXphdGlvbiB0aW1lCi0gICAgICAgIGZpbmFsIFN0b3BXYXRjaCBzdG9wV2F0Y2ggPSBuZXcgU3RvcFdhdGNoKCk7Ci0gICAgICAgIHN0b3BXYXRjaC5zdGFydCgpOwotCiAgICAgICAgIC8vIHRoZSBiYXRjaCBzaXplIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSByZXF1ZXN0CiAgICAgICAgIGZpbmFsIGludCByZXN1bHRJdGVyYXRpb25CYXRjaFNpemUgPSAoSW50ZWdlcikgbXNnLm9wdGlvbmFsQXJncyhUb2tlbnMuQVJHU19CQVRDSF9TSVpFKQogICAgICAgICAgICAgICAgIC5vckVsc2Uoc2V0dGluZ3MucmVzdWx0SXRlcmF0aW9uQmF0Y2hTaXplKTsKQEAgLTE2MSw3ICsxNTEsOSBAQAogICAgICAgICAgICAgICAgICAgICAvLyB0aHJlYWQgdGhhdCBwcm9jZXNzZWQgdGhlIGV2YWwgb2YgdGhlIHNjcmlwdCBzbywgd2UgaGF2ZSB0byBwdXNoIHNlcmlhbGl6YXRpb24gZG93biBpbnRvIHRoYXQKICAgICAgICAgICAgICAgICAgICAgRnJhbWUgZnJhbWUgPSBudWxsOwogICAgICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUgPSBtYWtlRnJhbWUoY29udGV4dCwgbXNnLCBzZXJpYWxpemVyLCB1c2VCaW5hcnksIGFnZ3JlZ2F0ZSwgY29kZSwgZ2VuZXJhdGVNZXRhRGF0YShuZXR0eUNvbnRleHQsIG1zZywgY29kZSwgaXR0eSkpOworICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUgPSBtYWtlRnJhbWUoY29udGV4dCwgbXNnLCBzZXJpYWxpemVyLCB1c2VCaW5hcnksIGFnZ3JlZ2F0ZSwgY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVSZXN1bHRNZXRhRGF0YShuZXR0eUNvbnRleHQsIG1zZywgY29kZSwgaXR0eSwgc2V0dGluZ3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZVN0YXR1c0F0dHJpYnV0ZXMobmV0dHlDb250ZXh0LCBtc2csIGNvZGUsIGl0dHksIHNldHRpbmdzKSk7CiAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBmcmFtZSBtYXkgdXNlIGEgQnl0ZWJ1ZiB3aGljaCBpcyBhIGNvdW50YWJsZSByZWxlYXNlIC0gaWYgaXQgZG9lcyBub3QgZ2V0IHdyaXR0ZW4KICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvd25zdHJlYW0gaXQgbmVlZHMgdG8gYmUgcmVsZWFzZWQgaGVyZQpAQCAtMjIyLDE4ICsyMTQsNyBAQAogICAgICAgICAgICAgICAgIC8vIHRoaXMgaXNuJ3QgYmxvY2tpbmcgdGhlIElPIHRocmVhZCAtIGp1c3QgYSB3b3JrZXIuCiAgICAgICAgICAgICAgICAgVGltZVVuaXQuTUlMTElTRUNPTkRTLnNsZWVwKDEwKTsKICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgc3RvcFdhdGNoLnNwbGl0KCk7Ci0gICAgICAgICAgICBpZiAoc2V0dGluZ3Muc2VyaWFsaXplZFJlc3BvbnNlVGltZW91dCA+IDAgJiYgc3RvcFdhdGNoLmdldFNwbGl0VGltZSgpID4gc2V0dGluZ3Muc2VyaWFsaXplZFJlc3BvbnNlVGltZW91dCkgewotICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyB0aW1lb3V0TXNnID0gU3RyaW5nLmZvcm1hdCgiU2VyaWFsaXphdGlvbiBvZiB0aGUgZW50aXJlIHJlc3BvbnNlIGV4Y2VlZGVkIHRoZSAnc2VyaWFsaXplUmVzcG9uc2VUaW1lb3V0JyBzZXR0aW5nICVzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5PbmNlID8gIltHcmVtbGluIFNlcnZlciBwYXVzZWQgd3JpdGVzIHRvIGNsaWVudCBhcyBtZXNzYWdlcyB3ZXJlIG5vdCBiZWluZyBjb25zdW1lZCBxdWlja2x5IGVub3VnaF0iIDogIiIpOwotICAgICAgICAgICAgICAgIHRocm93IG5ldyBUaW1lb3V0RXhjZXB0aW9uKHRpbWVvdXRNc2cudHJpbSgpKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgc3RvcFdhdGNoLnVuc3BsaXQoKTsKICAgICAgICAgfQotCi0gICAgICAgIHN0b3BXYXRjaC5zdG9wKCk7CiAgICAgfQogCiAgICAgLyoqCkBAIC0yNTcsMjQgKzIzOCw0NiBAQAogICAgIH0KIAogICAgIC8qKgotICAgICAqIEdlbmVyYXRlcyBtZXRhLWRhdGEgdG8gcHV0IG9uIGEge0BsaW5rIFJlc3BvbnNlTWVzc2FnZX0uCisgICAgICogR2VuZXJhdGVzIHJlc3BvbnNlIHJlc3VsdCBtZXRhLWRhdGEgdG8gcHV0IG9uIGEge0BsaW5rIFJlc3BvbnNlTWVzc2FnZX0uCiAgICAgICoKICAgICAgKiBAcGFyYW0gaXR0eSBhIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCB7QGxpbmsgSXRlcmF0b3J9IG9mIHJlc3VsdHMgLSBpdCBpcyBub3QgbWVhbnQgdG8gYmUgZm9yd2FyZGVkIGluCiAgICAgICogICAgICAgICAgICAgdGhpcyBtZXRob2QKKyAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuNC4wLCByZXBsYWNlZCBieSB7QGxpbmsgI2dlbmVyYXRlUmVzdWx0TWV0YURhdGEoQ2hhbm5lbEhhbmRsZXJDb250ZXh0LCBSZXF1ZXN0TWVzc2FnZSwgUmVzcG9uc2VTdGF0dXNDb2RlLCBJdGVyYXRvciwgU2V0dGluZ3MpfQogICAgICAqLwotICAgIHByb3RlY3RlZCBNYXA8U3RyaW5nLE9iamVjdD4gZ2VuZXJhdGVNZXRhRGF0YShmaW5hbCBDaGFubmVsSGFuZGxlckNvbnRleHQgY3R4LCBmaW5hbCBSZXF1ZXN0TWVzc2FnZSBtc2csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIFJlc3BvbnNlU3RhdHVzQ29kZSBjb2RlLCBmaW5hbCBJdGVyYXRvciBpdHR5KSB7CisgICAgQERlcHJlY2F0ZWQKKyAgICBwcm90ZWN0ZWQgTWFwPFN0cmluZywgT2JqZWN0PiBnZW5lcmF0ZU1ldGFEYXRhKGZpbmFsIENoYW5uZWxIYW5kbGVyQ29udGV4dCBjdHgsIGZpbmFsIFJlcXVlc3RNZXNzYWdlIG1zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIFJlc3BvbnNlU3RhdHVzQ29kZSBjb2RlLCBmaW5hbCBJdGVyYXRvciBpdHR5KSB7CiAgICAgICAgIHJldHVybiBDb2xsZWN0aW9ucy5lbXB0eU1hcCgpOwogICAgIH0KIAogICAgIC8qKgotICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy4yLjIsIHJlcGxhY2VkIGJ5IHtAbGluayAjbWFrZUZyYW1lKENvbnRleHQsIFJlcXVlc3RNZXNzYWdlLCBNZXNzYWdlU2VyaWFsaXplciwgYm9vbGVhbiwgTGlzdCwgUmVzcG9uc2VTdGF0dXNDb2RlLCBNYXApfS4KKyAgICAgKiBHZW5lcmF0ZXMgcmVzcG9uc2UgcmVzdWx0IG1ldGEtZGF0YSB0byBwdXQgb24gYSB7QGxpbmsgUmVzcG9uc2VNZXNzYWdlfS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBpdHR5IGEgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IHtAbGluayBJdGVyYXRvcn0gb2YgcmVzdWx0cyAtIGl0IGlzIG5vdCBtZWFudCB0byBiZSBmb3J3YXJkZWQgaW4KKyAgICAgKiAgICAgICAgICAgICB0aGlzIG1ldGhvZAogICAgICAqLwotICAgIEBEZXByZWNhdGVkCi0gICAgcHJvdGVjdGVkIHN0YXRpYyBGcmFtZSBtYWtlRnJhbWUoZmluYWwgQ2hhbm5lbEhhbmRsZXJDb250ZXh0IGN0eCwgZmluYWwgUmVxdWVzdE1lc3NhZ2UgbXNnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIE1lc3NhZ2VTZXJpYWxpemVyIHNlcmlhbGl6ZXIsIGZpbmFsIGJvb2xlYW4gdXNlQmluYXJ5LCBmaW5hbCBMaXN0PE9iamVjdD4gYWdncmVnYXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIFJlc3BvbnNlU3RhdHVzQ29kZSBjb2RlKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICAgICAgcmV0dXJuIG1ha2VGcmFtZShjdHgsIG1zZywgc2VyaWFsaXplciwgdXNlQmluYXJ5LCBhZ2dyZWdhdGUsIGNvZGUsIENvbGxlY3Rpb25zLmVtcHR5TWFwKCkpOworICAgIHByb3RlY3RlZCBNYXA8U3RyaW5nLCBPYmplY3Q+IGdlbmVyYXRlUmVzdWx0TWV0YURhdGEoZmluYWwgQ2hhbm5lbEhhbmRsZXJDb250ZXh0IGN0eCwgZmluYWwgUmVxdWVzdE1lc3NhZ2UgbXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgUmVzcG9uc2VTdGF0dXNDb2RlIGNvZGUsIGZpbmFsIEl0ZXJhdG9yIGl0dHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBTZXR0aW5ncyBzZXR0aW5ncykgeworICAgICAgICByZXR1cm4gZ2VuZXJhdGVNZXRhRGF0YShjdHgsIG1zZywgY29kZSwgaXR0eSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2VuZXJhdGVzIHJlc3BvbnNlIHN0YXR1cyBtZXRhLWRhdGEgdG8gcHV0IG9uIGEge0BsaW5rIFJlc3BvbnNlTWVzc2FnZX0uCisgICAgICoKKyAgICAgKiBAcGFyYW0gaXR0eSBhIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCB7QGxpbmsgSXRlcmF0b3J9IG9mIHJlc3VsdHMgLSBpdCBpcyBub3QgbWVhbnQgdG8gYmUgZm9yd2FyZGVkIGluCisgICAgICogICAgICAgICAgICAgdGhpcyBtZXRob2QKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgTWFwPFN0cmluZywgT2JqZWN0PiBnZW5lcmF0ZVN0YXR1c0F0dHJpYnV0ZXMoZmluYWwgQ2hhbm5lbEhhbmRsZXJDb250ZXh0IGN0eCwgZmluYWwgUmVxdWVzdE1lc3NhZ2UgbXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBSZXNwb25zZVN0YXR1c0NvZGUgY29kZSwgZmluYWwgSXRlcmF0b3IgaXR0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgU2V0dGluZ3Mgc2V0dGluZ3MpIHsKKyAgICAgICAgLy8gb25seSByZXR1cm4gc2VydmVyIG1ldGFkYXRhIG9uIHRoZSBsYXN0IG1lc3NhZ2UKKyAgICAgICAgaWYgKGl0dHkuaGFzTmV4dCgpKSByZXR1cm4gQ29sbGVjdGlvbnMuZW1wdHlNYXAoKTsKKworICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLCBPYmplY3Q+IG1ldGFEYXRhID0gbmV3IEhhc2hNYXA8PigpOworICAgICAgICBtZXRhRGF0YS5wdXQoVG9rZW5zLkFSR1NfSE9TVCwgY3R4LmNoYW5uZWwoKS5yZW1vdGVBZGRyZXNzKCkudG9TdHJpbmcoKSk7CisKKyAgICAgICAgcmV0dXJuIG1ldGFEYXRhOwogICAgIH0KIAogICAgIC8qKgpAQCAtMjgzLDEwICsyODYsMTEgQEAKICAgICBARGVwcmVjYXRlZAogICAgIHByb3RlY3RlZCBzdGF0aWMgRnJhbWUgbWFrZUZyYW1lKGZpbmFsIENoYW5uZWxIYW5kbGVyQ29udGV4dCBjdHgsIGZpbmFsIFJlcXVlc3RNZXNzYWdlIG1zZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBNZXNzYWdlU2VyaWFsaXplciBzZXJpYWxpemVyLCBmaW5hbCBib29sZWFuIHVzZUJpbmFyeSwgZmluYWwgTGlzdDxPYmplY3Q+IGFnZ3JlZ2F0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBSZXNwb25zZVN0YXR1c0NvZGUgY29kZSwgZmluYWwgTWFwPFN0cmluZyxPYmplY3Q+IHJlc3BvbnNlTWV0YURhdGEpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIFJlc3BvbnNlU3RhdHVzQ29kZSBjb2RlLCBmaW5hbCBNYXA8U3RyaW5nLE9iamVjdD4gcmVzcG9uc2VNZXRhRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLE9iamVjdD4gc3RhdHVzQXR0cmlidXRlcykgdGhyb3dzIEV4Y2VwdGlvbiB7CiAgICAgICAgIGZpbmFsIENvbnRleHQgY29udGV4dCA9IG5ldyBDb250ZXh0KG1zZywgY3R4LCBudWxsLCBudWxsLCBudWxsLCBudWxsKTsgLy8gZHVtbXkgY29udGV4dCwgZ29vZCBvbmx5IGZvciB3cml0aW5nIHJlc3BvbnNlIG1lc3NhZ2VzIHRvIHRoZSBjaGFubmVsCiAgICAgICAgIGZpbmFsIFJlc3BvbnNlSGFuZGxlckNvbnRleHQgcmhjID0gbmV3IFJlc3BvbnNlSGFuZGxlckNvbnRleHQoY29udGV4dCk7Ci0gICAgICAgIHJldHVybiBtYWtlRnJhbWUocmhjLCBtc2csIHNlcmlhbGl6ZXIsIHVzZUJpbmFyeSwgYWdncmVnYXRlLCBjb2RlLCByZXNwb25zZU1ldGFEYXRhKTsKKyAgICAgICAgcmV0dXJuIG1ha2VGcmFtZShyaGMsIG1zZywgc2VyaWFsaXplciwgdXNlQmluYXJ5LCBhZ2dyZWdhdGUsIGNvZGUsIHJlc3BvbnNlTWV0YURhdGEsIHN0YXR1c0F0dHJpYnV0ZXMpOwogICAgIH0KIAogICAgIC8qKgpAQCAtMjk5LDE1ICszMDMsMzggQEAKICAgICAgICAgcmV0dXJuIG1ha2VGcmFtZShyaGMuZ2V0Q29udGV4dCgpLCBtc2csIHNlcmlhbGl6ZXIsIHVzZUJpbmFyeSxhZ2dyZWdhdGUsIGNvZGUsIHJlc3BvbnNlTWV0YURhdGEpOwogICAgIH0KIAorICAgIC8qKgorICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy4zLjgsIHJlcGxhY2VkIGJ5IHtAbGluayAjbWFrZUZyYW1lKENvbnRleHQsIFJlcXVlc3RNZXNzYWdlLCBNZXNzYWdlU2VyaWFsaXplciwgYm9vbGVhbiwgTGlzdCwgUmVzcG9uc2VTdGF0dXNDb2RlLCBNYXApfS4KKyAgICAgKi8KKyAgICBARGVwcmVjYXRlZAorICAgIHByb3RlY3RlZCBzdGF0aWMgRnJhbWUgbWFrZUZyYW1lKGZpbmFsIFJlc3BvbnNlSGFuZGxlckNvbnRleHQgcmhjLCBmaW5hbCBSZXF1ZXN0TWVzc2FnZSBtc2csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgTWVzc2FnZVNlcmlhbGl6ZXIgc2VyaWFsaXplciwgZmluYWwgYm9vbGVhbiB1c2VCaW5hcnksIGZpbmFsIExpc3Q8T2JqZWN0PiBhZ2dyZWdhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgUmVzcG9uc2VTdGF0dXNDb2RlIGNvZGUsIGZpbmFsIE1hcDxTdHJpbmcsT2JqZWN0PiByZXNwb25zZU1ldGFEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsT2JqZWN0PiBzdGF0dXNBdHRyaWJ1dGVzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgcmV0dXJuIG1ha2VGcmFtZShyaGMuZ2V0Q29udGV4dCgpLCBtc2csIHNlcmlhbGl6ZXIsIHVzZUJpbmFyeSxhZ2dyZWdhdGUsIGNvZGUsIHJlc3BvbnNlTWV0YURhdGEsIHN0YXR1c0F0dHJpYnV0ZXMpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy40LjMsIHJlcGxhY2VkIGJ5IHtAbGluayAjbWFrZUZyYW1lKENvbnRleHQsIFJlcXVlc3RNZXNzYWdlLCBNZXNzYWdlU2VyaWFsaXplciwgYm9vbGVhbiwgTGlzdCwgUmVzcG9uc2VTdGF0dXNDb2RlLCBNYXApfS4KKyAgICAgKi8KKyAgICBARGVwcmVjYXRlZAogICAgIHByb3RlY3RlZCBzdGF0aWMgRnJhbWUgbWFrZUZyYW1lKGZpbmFsIENvbnRleHQgY3R4LCBmaW5hbCBSZXF1ZXN0TWVzc2FnZSBtc2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgTWVzc2FnZVNlcmlhbGl6ZXIgc2VyaWFsaXplciwgZmluYWwgYm9vbGVhbiB1c2VCaW5hcnksIGZpbmFsIExpc3Q8T2JqZWN0PiBhZ2dyZWdhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgUmVzcG9uc2VTdGF0dXNDb2RlIGNvZGUsIGZpbmFsIE1hcDxTdHJpbmcsT2JqZWN0PiByZXNwb25zZU1ldGFEYXRhKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgcmV0dXJuIG1ha2VGcmFtZShjdHgsIG1zZywgc2VyaWFsaXplciwgdXNlQmluYXJ5LGFnZ3JlZ2F0ZSwgY29kZSwgcmVzcG9uc2VNZXRhRGF0YSwgQ29sbGVjdGlvbnMuZW1wdHlNYXAoKSk7CisgICAgfQorCisgICAgcHJvdGVjdGVkIHN0YXRpYyBGcmFtZSBtYWtlRnJhbWUoZmluYWwgQ29udGV4dCBjdHgsIGZpbmFsIFJlcXVlc3RNZXNzYWdlIG1zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBNZXNzYWdlU2VyaWFsaXplciBzZXJpYWxpemVyLCBmaW5hbCBib29sZWFuIHVzZUJpbmFyeSwgZmluYWwgTGlzdDxPYmplY3Q+IGFnZ3JlZ2F0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBSZXNwb25zZVN0YXR1c0NvZGUgY29kZSwgZmluYWwgTWFwPFN0cmluZyxPYmplY3Q+IHJlc3BvbnNlTWV0YURhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgTWFwPFN0cmluZyxPYmplY3Q+IHN0YXR1c0F0dHJpYnV0ZXMpIHRocm93cyBFeGNlcHRpb24gewogICAgICAgICB0cnkgewogICAgICAgICAgICAgZmluYWwgQ2hhbm5lbEhhbmRsZXJDb250ZXh0IG5ldHR5Q29udGV4dCA9IGN0eC5nZXRDaGFubmVsSGFuZGxlckNvbnRleHQoKTsKIAogICAgICAgICAgICAgaWYgKHVzZUJpbmFyeSkgewogICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRnJhbWUoc2VyaWFsaXplci5zZXJpYWxpemVSZXNwb25zZUFzQmluYXJ5KFJlc3BvbnNlTWVzc2FnZS5idWlsZChtc2cpCiAgICAgICAgICAgICAgICAgICAgICAgICAuY29kZShjb2RlKQorICAgICAgICAgICAgICAgICAgICAgICAgLnN0YXR1c0F0dHJpYnV0ZXMoc3RhdHVzQXR0cmlidXRlcykKICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXNwb25zZU1ldGFEYXRhKHJlc3BvbnNlTWV0YURhdGEpCiAgICAgICAgICAgICAgICAgICAgICAgICAucmVzdWx0KGFnZ3JlZ2F0ZSkuY3JlYXRlKCksIG5ldHR5Q29udGV4dC5hbGxvYygpKSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMzE2LDYgKzM0Myw3IEBACiAgICAgICAgICAgICAgICAgZmluYWwgTWVzc2FnZVRleHRTZXJpYWxpemVyIHRleHRTZXJpYWxpemVyID0gKE1lc3NhZ2VUZXh0U2VyaWFsaXplcikgc2VyaWFsaXplcjsKICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZyYW1lKHRleHRTZXJpYWxpemVyLnNlcmlhbGl6ZVJlc3BvbnNlQXNTdHJpbmcoUmVzcG9uc2VNZXNzYWdlLmJ1aWxkKG1zZykKICAgICAgICAgICAgICAgICAgICAgICAgIC5jb2RlKGNvZGUpCisgICAgICAgICAgICAgICAgICAgICAgICAuc3RhdHVzQXR0cmlidXRlcyhzdGF0dXNBdHRyaWJ1dGVzKQogICAgICAgICAgICAgICAgICAgICAgICAgLnJlc3BvbnNlTWV0YURhdGEocmVzcG9uc2VNZXRhRGF0YSkKICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXN1bHQoYWdncmVnYXRlKS5jcmVhdGUoKSkpOwogICAgICAgICAgICAgfQpAQCAtMzMzLDEzICszNjEsOCBAQAogCiAgICAgcHJvdGVjdGVkIHN0YXRpYyB2b2lkIGF0dGVtcHRDb21taXQoZmluYWwgUmVxdWVzdE1lc3NhZ2UgbXNnLCBmaW5hbCBHcmFwaE1hbmFnZXIgZ3JhcGhNYW5hZ2VyLCBmaW5hbCBib29sZWFuIHN0cmljdCkgewogICAgICAgICBpZiAoc3RyaWN0KSB7Ci0gICAgICAgICAgICAvLyB2YWxpZGF0aW9ucyBzaG91bGQgaGF2ZSBhbHJlYWR5IGJlZW4gcGVyZm9ybWVkIGluIFN0YW5kYXJkT3BQcm9jZXNzb3IsIGJ1dCBhIGZhaWx1cmUgaW4gYmluZGluZ3MgbWFrZXIKLSAgICAgICAgICAgIC8vIGF0IHRoZSB0aW1lIG9mIHRoZSBldmFsIG1pZ2h0IHJhaXNlIHRocm91Z2ggaGVyZSBhdCB3aGljaCBwb2ludCB0aGUgdmFsaWRhdGlvbiBkaWRuJ3QgeWV0IGhhcHBlbi4gYmV0dGVyCi0gICAgICAgICAgICAvLyB0byBqdXN0IGNoZWNrIGFnYWluCi0gICAgICAgICAgICBmaW5hbCBib29sZWFuIGhhc1JlYmluZGluZ3MgPSBtc2cuZ2V0QXJncygpLmNvbnRhaW5zS2V5KFRva2Vucy5BUkdTX1JFQklORElOR1MpOwotICAgICAgICAgICAgZmluYWwgU3RyaW5nIHJlYmluZGluZ09yQWxpYXNQYXJhbWV0ZXIgPSBoYXNSZWJpbmRpbmdzID8gVG9rZW5zLkFSR1NfUkVCSU5ESU5HUyA6IFRva2Vucy5BUkdTX0FMSUFTRVM7Ci0gICAgICAgICAgICBpZiAobXNnLmdldEFyZ3MoKS5jb250YWluc0tleShyZWJpbmRpbmdPckFsaWFzUGFyYW1ldGVyKSkgewotICAgICAgICAgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsIFN0cmluZz4gYWxpYXNlcyA9IChNYXA8U3RyaW5nLCBTdHJpbmc+KSBtc2cuZ2V0QXJncygpLmdldChyZWJpbmRpbmdPckFsaWFzUGFyYW1ldGVyKTsKKyAgICAgICAgICAgIGlmIChtc2cuZ2V0QXJncygpLmNvbnRhaW5zS2V5KFRva2Vucy5BUkdTX0FMSUFTRVMpKSB7CisgICAgICAgICAgICAgICAgZmluYWwgTWFwPFN0cmluZywgU3RyaW5nPiBhbGlhc2VzID0gKE1hcDxTdHJpbmcsIFN0cmluZz4pIG1zZy5nZXRBcmdzKCkuZ2V0KFRva2Vucy5BUkdTX0FMSUFTRVMpOwogICAgICAgICAgICAgICAgIGdyYXBoTWFuYWdlci5jb21taXQobmV3IEhhc2hTZXQ8PihhbGlhc2VzLnZhbHVlcygpKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGdyYXBoTWFuYWdlci5jb21taXRBbGwoKTsKQEAgLTM1MSwxMyArMzc0LDggQEAKIAogICAgIHByb3RlY3RlZCBzdGF0aWMgdm9pZCBhdHRlbXB0Um9sbGJhY2soZmluYWwgUmVxdWVzdE1lc3NhZ2UgbXNnLCBmaW5hbCBHcmFwaE1hbmFnZXIgZ3JhcGhNYW5hZ2VyLCBmaW5hbCBib29sZWFuIHN0cmljdCkgewogICAgICAgICBpZiAoc3RyaWN0KSB7Ci0gICAgICAgICAgICAvLyB2YWxpZGF0aW9ucyBzaG91bGQgaGF2ZSBhbHJlYWR5IGJlZW4gcGVyZm9ybWVkIGluIFN0YW5kYXJkT3BQcm9jZXNzb3IsIGJ1dCBhIGZhaWx1cmUgaW4gYmluZGluZ3MgbWFrZXIKLSAgICAgICAgICAgIC8vIGF0IHRoZSB0aW1lIG9mIHRoZSBldmFsIG1pZ2h0IHJhaXNlIHRocm91Z2ggaGVyZSBhdCB3aGljaCBwb2ludCB0aGUgdmFsaWRhdGlvbiBkaWRuJ3QgeWV0IGhhcHBlbi4gYmV0dGVyCi0gICAgICAgICAgICAvLyB0byBqdXN0IGNoZWNrIGFnYWluCi0gICAgICAgICAgICBmaW5hbCBib29sZWFuIGhhc1JlYmluZGluZ3MgPSBtc2cuZ2V0QXJncygpLmNvbnRhaW5zS2V5KFRva2Vucy5BUkdTX1JFQklORElOR1MpOwotICAgICAgICAgICAgZmluYWwgU3RyaW5nIHJlYmluZGluZ09yQWxpYXNQYXJhbWV0ZXIgPSBoYXNSZWJpbmRpbmdzID8gVG9rZW5zLkFSR1NfUkVCSU5ESU5HUyA6IFRva2Vucy5BUkdTX0FMSUFTRVM7Ci0gICAgICAgICAgICBpZiAobXNnLmdldEFyZ3MoKS5jb250YWluc0tleShyZWJpbmRpbmdPckFsaWFzUGFyYW1ldGVyKSkgewotICAgICAgICAgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsIFN0cmluZz4gYWxpYXNlcyA9IChNYXA8U3RyaW5nLCBTdHJpbmc+KSBtc2cuZ2V0QXJncygpLmdldChyZWJpbmRpbmdPckFsaWFzUGFyYW1ldGVyKTsKKyAgICAgICAgICAgIGlmIChtc2cuZ2V0QXJncygpLmNvbnRhaW5zS2V5KFRva2Vucy5BUkdTX0FMSUFTRVMpKSB7CisgICAgICAgICAgICAgICAgZmluYWwgTWFwPFN0cmluZywgU3RyaW5nPiBhbGlhc2VzID0gKE1hcDxTdHJpbmcsIFN0cmluZz4pIG1zZy5nZXRBcmdzKCkuZ2V0KFRva2Vucy5BUkdTX0FMSUFTRVMpOwogICAgICAgICAgICAgICAgIGdyYXBoTWFuYWdlci5yb2xsYmFjayhuZXcgSGFzaFNldDw+KGFsaWFzZXMudmFsdWVzKCkpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgZ3JhcGhNYW5hZ2VyLnJvbGxiYWNrQWxsKCk7CmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL29wL3Nlc3Npb24vU2Vzc2lvbi5qYXZhIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9vcC9zZXNzaW9uL1Nlc3Npb24uamF2YQppbmRleCAyNGQ3OTliLi44ZDRmZTNmIDEwMDY0NAotLS0gYS9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL29wL3Nlc3Npb24vU2Vzc2lvbi5qYXZhCisrKyBiL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvb3Avc2Vzc2lvbi9TZXNzaW9uLmphdmEKQEAgLTM1LDYgKzM1LDcgQEAKIGltcG9ydCBqYXZheC5zY3JpcHQuU2ltcGxlQmluZGluZ3M7CiBpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CiBpbXBvcnQgamF2YS51dGlsLk1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuT3B0aW9uYWw7CiBpbXBvcnQgamF2YS51dGlsLmNvbmN1cnJlbnQuQ29uY3VycmVudEhhc2hNYXA7CiBpbXBvcnQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JTZXJ2aWNlOwogaW1wb3J0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9yczsKQEAgLTE2Nyw3ICsxNjgsMTIgQEAKICAgICAgKiBzZXNzaW9uIGtpbGwgd2lsbCBtZWFuLgogICAgICAqLwogICAgIHB1YmxpYyB2b2lkIG1hbnVhbEtpbGwoZmluYWwgYm9vbGVhbiBmb3JjZSkgewotICAgICAgICBraWxsLmdldCgpLmNhbmNlbCh0cnVlKTsKKyAgICAgICAgLy8gc2VlbXMgdGhlcmUgaXMgYSBzaXR1YXRpb24gd2hlcmUga2lsbCBjYW4gZ2V0IG51bGxlZC4gc2VlbXMgdG8gb25seSBoYXBwZW4gaW4gdHJhdmlzIGFzIGEgcmVzdWx0IG9mIHRlc3QKKyAgICAgICAgLy8gcnVucyBhbmQgaSdtIGd1ZXNzaW5nIGl0IGhhcyBzb21ldGhpbmcgdG8gZG8gd2l0aCBhIGNvbWJpbmF0aW9uIG9mIHNodXRkb3duIGFuZCBzZXNzaW9uIGNsb3NlIHRob3VnaCBpJ20KKyAgICAgICAgLy8gbm90IHN1cmUgd2h5LiBwZXJoYXBzIHRoaXMgImZpeCIganVzdCBtYXNrcyB1cCBhIGRlZXBlciBwcm9ibGVtIGJ1dCBhcyBpIHJlYXNvbiBvbiBpdCBub3csIGl0IHNlZW1zIG1vc3RseQorICAgICAgICAvLyBib3VuZCB0byBzaHV0ZG93biBzaXR1YXRpb25zIHdoaWNoIGJhc2ljYWxseSBtZWFucyB0aGUgZm9yY2VkIGVuZCBvZiB0aGUgc2Vzc2lvbiBhbnl3YXksIHNvIHBlcmhhcHMgdGhlCisgICAgICAgIC8vIHJvb3QgY2F1c2UgaXNuJ3Qgc29tZXRoaW5nIHRoYXQgbmVlZHMgaW1tZWRpYXRlIGNoYXNpbmcgKGF0IGxlYXN0IHVudGlsIGl0IGNhbiBiZSBzaG93biBvdGhlcndpc2UgYW55d2F5KQorICAgICAgICBPcHRpb25hbC5vZk51bGxhYmxlKGtpbGwuZ2V0KCkpLmlmUHJlc2VudChmIC0+IGYuY2FuY2VsKHRydWUpKTsKICAgICAgICAga2lsbChmb3JjZSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL29wL3Nlc3Npb24vU2Vzc2lvbk9wUHJvY2Vzc29yLmphdmEgYi9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL29wL3Nlc3Npb24vU2Vzc2lvbk9wUHJvY2Vzc29yLmphdmEKaW5kZXggMzc1MmY0OC4uMmJjYjQzMCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9vcC9zZXNzaW9uL1Nlc3Npb25PcFByb2Nlc3Nvci5qYXZhCisrKyBiL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvb3Avc2Vzc2lvbi9TZXNzaW9uT3BQcm9jZXNzb3IuamF2YQpAQCAtMjI2LDIyICsyMjYsOSBAQAogICAgICAgICAgICAgZmluYWwgUmVxdWVzdE1lc3NhZ2UgbXNnID0gY29udGV4dC5nZXRSZXF1ZXN0TWVzc2FnZSgpOwogICAgICAgICAgICAgZmluYWwgQmluZGluZ3MgYmluZGluZ3MgPSBzZXNzaW9uLmdldEJpbmRpbmdzKCk7CiAKLSAgICAgICAgICAgIC8vIGRvbid0IGFsbG93IGJvdGggcmViaW5kaW5ncyBhbmQgYWxpYXNlcyBwYXJhbWV0ZXJzIGFzIHRoZXkgYXJlIHRoZSBzYW1lIHRoaW5nLiBhbGlhc2VzIHdlcmUgaW50cm9kdWNlZAotICAgICAgICAgICAgLy8gYXMgb2YgMy4xLjAgYXMgYSByZXBsYWNlbWVudCBmb3IgcmViaW5kaW5ncy4gdGhpcyBjaGVjayBjYW4gYmUgcmVtb3ZlZCB3aGVuIHJlYmluZGluZ3MgYXJlIGNvbXBsZXRlbHkKLSAgICAgICAgICAgIC8vIHJlbW92ZWQgZnJvbSB0aGUgcHJvdG9jb2wKLSAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gaGFzUmViaW5kaW5ncyA9IG1zZy5nZXRBcmdzKCkuY29udGFpbnNLZXkoVG9rZW5zLkFSR1NfUkVCSU5ESU5HUyk7Ci0gICAgICAgICAgICBmaW5hbCBib29sZWFuIGhhc0FsaWFzZXMgPSBtc2cuZ2V0QXJncygpLmNvbnRhaW5zS2V5KFRva2Vucy5BUkdTX0FMSUFTRVMpOwotICAgICAgICAgICAgaWYgKGhhc1JlYmluZGluZ3MgJiYgaGFzQWxpYXNlcykgewotICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyBlcnJvciA9ICJQcmVmZXIgdXNlIG9mIHRoZSAnYWxpYXNlcycgcGFyYW1ldGVyIG92ZXIgJ3JlYmluZGluZ3MnIGFuZCBkbyBub3QgdXNlIGJvdGgiOwotICAgICAgICAgICAgICAgIHRocm93IG5ldyBPcFByb2Nlc3NvckV4Y2VwdGlvbihlcnJvciwgUmVzcG9uc2VNZXNzYWdlLmJ1aWxkKG1zZykKLSAgICAgICAgICAgICAgICAgICAgICAgIC5jb2RlKFJlc3BvbnNlU3RhdHVzQ29kZS5SRVFVRVNUX0VSUk9SX0lOVkFMSURfUkVRVUVTVF9BUkdVTUVOVFMpLnN0YXR1c01lc3NhZ2UoZXJyb3IpLmNyZWF0ZSgpKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZmluYWwgU3RyaW5nIHJlYmluZGluZ09yQWxpYXNQYXJhbWV0ZXIgPSBoYXNSZWJpbmRpbmdzID8gVG9rZW5zLkFSR1NfUkVCSU5ESU5HUyA6IFRva2Vucy5BUkdTX0FMSUFTRVM7Ci0KICAgICAgICAgICAgIC8vIGFsaWFzIGFueSBnbG9iYWwgYmluZGluZ3MgdG8gYSBkaWZmZXJlbnQgdmFyaWFibGUKLSAgICAgICAgICAgIGlmIChtc2cuZ2V0QXJncygpLmNvbnRhaW5zS2V5KHJlYmluZGluZ09yQWxpYXNQYXJhbWV0ZXIpKSB7Ci0gICAgICAgICAgICAgICAgZmluYWwgTWFwPFN0cmluZywgU3RyaW5nPiBhbGlhc2VzID0gKE1hcDxTdHJpbmcsIFN0cmluZz4pIG1zZy5nZXRBcmdzKCkuZ2V0KHJlYmluZGluZ09yQWxpYXNQYXJhbWV0ZXIpOworICAgICAgICAgICAgaWYgKG1zZy5nZXRBcmdzKCkuY29udGFpbnNLZXkoVG9rZW5zLkFSR1NfQUxJQVNFUykpIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLCBTdHJpbmc+IGFsaWFzZXMgPSAoTWFwPFN0cmluZywgU3RyaW5nPikgbXNnLmdldEFyZ3MoKS5nZXQoVG9rZW5zLkFSR1NfQUxJQVNFUyk7CiAgICAgICAgICAgICAgICAgZm9yIChNYXAuRW50cnk8U3RyaW5nLFN0cmluZz4gYWxpYXNLdiA6IGFsaWFzZXMuZW50cnlTZXQoKSkgewogICAgICAgICAgICAgICAgICAgICBib29sZWFuIGZvdW5kID0gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvb3Avc3RhbmRhcmQvU3RhbmRhcmRPcFByb2Nlc3Nvci5qYXZhIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9vcC9zdGFuZGFyZC9TdGFuZGFyZE9wUHJvY2Vzc29yLmphdmEKaW5kZXggZjJlYzEzNC4uNzQ2Mzk3YSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9vcC9zdGFuZGFyZC9TdGFuZGFyZE9wUHJvY2Vzc29yLmphdmEKKysrIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9vcC9zdGFuZGFyZC9TdGFuZGFyZE9wUHJvY2Vzc29yLmphdmEKQEAgLTExNCwyMiArMTE0LDkgQEAKICAgICAgICAgICAgIGZpbmFsIFJlcXVlc3RNZXNzYWdlIG1zZyA9IGNvbnRleHQuZ2V0UmVxdWVzdE1lc3NhZ2UoKTsKICAgICAgICAgICAgIGZpbmFsIEJpbmRpbmdzIGJpbmRpbmdzID0gbmV3IFNpbXBsZUJpbmRpbmdzKCk7CiAKLSAgICAgICAgICAgIC8vIGRvbid0IGFsbG93IGJvdGggcmViaW5kaW5ncyBhbmQgYWxpYXNlcyBwYXJhbWV0ZXJzIGFzIHRoZXkgYXJlIHRoZSBzYW1lIHRoaW5nLiBhbGlhc2VzIHdlcmUgaW50cm9kdWNlZAotICAgICAgICAgICAgLy8gYXMgb2YgMy4xLjAgYXMgYSByZXBsYWNlbWVudCBmb3IgcmViaW5kaW5ncy4gdGhpcyBjaGVjayBjYW4gYmUgcmVtb3ZlZCB3aGVuIHJlYmluZGluZ3MgYXJlIGNvbXBsZXRlbHkKLSAgICAgICAgICAgIC8vIHJlbW92ZWQgZnJvbSB0aGUgcHJvdG9jb2wKLSAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gaGFzUmViaW5kaW5ncyA9IG1zZy5nZXRBcmdzKCkuY29udGFpbnNLZXkoVG9rZW5zLkFSR1NfUkVCSU5ESU5HUyk7Ci0gICAgICAgICAgICBmaW5hbCBib29sZWFuIGhhc0FsaWFzZXMgPSBtc2cuZ2V0QXJncygpLmNvbnRhaW5zS2V5KFRva2Vucy5BUkdTX0FMSUFTRVMpOwotICAgICAgICAgICAgaWYgKGhhc1JlYmluZGluZ3MgJiYgaGFzQWxpYXNlcykgewotICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyBlcnJvciA9ICJQcmVmZXIgdXNlIG9mIHRoZSAnYWxpYXNlcycgcGFyYW1ldGVyIG92ZXIgJ3JlYmluZGluZ3MnIGFuZCBkbyBub3QgdXNlIGJvdGgiOwotICAgICAgICAgICAgICAgIHRocm93IG5ldyBPcFByb2Nlc3NvckV4Y2VwdGlvbihlcnJvciwgUmVzcG9uc2VNZXNzYWdlLmJ1aWxkKG1zZykKLSAgICAgICAgICAgICAgICAgICAgICAgIC5jb2RlKFJlc3BvbnNlU3RhdHVzQ29kZS5SRVFVRVNUX0VSUk9SX0lOVkFMSURfUkVRVUVTVF9BUkdVTUVOVFMpLnN0YXR1c01lc3NhZ2UoZXJyb3IpLmNyZWF0ZSgpKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZmluYWwgU3RyaW5nIHJlYmluZGluZ09yQWxpYXNQYXJhbWV0ZXIgPSBoYXNSZWJpbmRpbmdzID8gVG9rZW5zLkFSR1NfUkVCSU5ESU5HUyA6IFRva2Vucy5BUkdTX0FMSUFTRVM7Ci0KICAgICAgICAgICAgIC8vIGFsaWFzIGFueSBnbG9iYWwgYmluZGluZ3MgdG8gYSBkaWZmZXJlbnQgdmFyaWFibGUuCi0gICAgICAgICAgICBpZiAobXNnLmdldEFyZ3MoKS5jb250YWluc0tleShyZWJpbmRpbmdPckFsaWFzUGFyYW1ldGVyKSkgewotICAgICAgICAgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsIFN0cmluZz4gYWxpYXNlcyA9IChNYXA8U3RyaW5nLCBTdHJpbmc+KSBtc2cuZ2V0QXJncygpLmdldChyZWJpbmRpbmdPckFsaWFzUGFyYW1ldGVyKTsKKyAgICAgICAgICAgIGlmIChtc2cuZ2V0QXJncygpLmNvbnRhaW5zS2V5KFRva2Vucy5BUkdTX0FMSUFTRVMpKSB7CisgICAgICAgICAgICAgICAgZmluYWwgTWFwPFN0cmluZywgU3RyaW5nPiBhbGlhc2VzID0gKE1hcDxTdHJpbmcsIFN0cmluZz4pIG1zZy5nZXRBcmdzKCkuZ2V0KFRva2Vucy5BUkdTX0FMSUFTRVMpOwogICAgICAgICAgICAgICAgIGZvciAoTWFwLkVudHJ5PFN0cmluZyxTdHJpbmc+IGFsaWFzS3YgOiBhbGlhc2VzLmVudHJ5U2V0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBmb3VuZCA9IGZhbHNlOwogCmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL29wL3RyYXZlcnNhbC9UcmF2ZXJzYWxPcFByb2Nlc3Nvci5qYXZhIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9vcC90cmF2ZXJzYWwvVHJhdmVyc2FsT3BQcm9jZXNzb3IuamF2YQppbmRleCA4NzM3YTlhLi40MThjNjZjIDEwMDY0NAotLS0gYS9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL29wL3RyYXZlcnNhbC9UcmF2ZXJzYWxPcFByb2Nlc3Nvci5qYXZhCisrKyBiL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvb3AvdHJhdmVyc2FsL1RyYXZlcnNhbE9wUHJvY2Vzc29yLmphdmEKQEAgLTY5LDcgKzY5LDYgQEAKIGltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmU7CiBpbXBvcnQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzazsKIGltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdDsKLWltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lb3V0RXhjZXB0aW9uOwogCiBpbXBvcnQgc3RhdGljIGNvbS5jb2RhaGFsZS5tZXRyaWNzLk1ldHJpY1JlZ2lzdHJ5Lm5hbWU7CiAKQEAgLTMyMiwxNCArMzIxLDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlSXRlcmF0b3IoY29udGV4dCwgbmV3IFNpZGVFZmZlY3RJdGVyYXRvcihzaWRlRWZmZWN0cy5nZXQoc2lkZUVmZmVjdEtleS5nZXQoKSksIHNpZGVFZmZlY3RLZXkuZ2V0KCkpKTsKLSAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoVGltZW91dEV4Y2VwdGlvbiBleCkgewotICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nIGVycm9yTWVzc2FnZSA9IFN0cmluZy5mb3JtYXQoIlJlc3BvbnNlIGl0ZXJhdGlvbiBleGNlZWRlZCB0aGUgY29uZmlndXJlZCB0aHJlc2hvbGQgZm9yIHJlcXVlc3QgWyVzXSAtICVzIiwgbXNnLmdldFJlcXVlc3RJZCgpLCBleC5nZXRNZXNzYWdlKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oZXJyb3JNZXNzYWdlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQud3JpdGVBbmRGbHVzaChSZXNwb25zZU1lc3NhZ2UuYnVpbGQobXNnKS5jb2RlKFJlc3BvbnNlU3RhdHVzQ29kZS5TRVJWRVJfRVJST1JfVElNRU9VVCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3RhdHVzTWVzc2FnZShlcnJvck1lc3NhZ2UpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnN0YXR1c0F0dHJpYnV0ZUV4Y2VwdGlvbihleCkuY3JlYXRlKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgb25FcnJvcihncmFwaCwgY29udGV4dCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgewogICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oU3RyaW5nLmZvcm1hdCgiRXhjZXB0aW9uIHByb2Nlc3NpbmcgYSBzaWRlLWVmZmVjdCBvbiBpdGVyYXRpb24gZm9yIHJlcXVlc3QgWyVzXS4iLCBtc2cuZ2V0UmVxdWVzdElkKCkpLCBleCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LndyaXRlQW5kRmx1c2goUmVzcG9uc2VNZXNzYWdlLmJ1aWxkKG1zZykuY29kZShSZXNwb25zZVN0YXR1c0NvZGUuU0VSVkVSX0VSUk9SKQpAQCAtNDg5LDYgKzQ4MCw5IEBACiAgICAgQE92ZXJyaWRlCiAgICAgcHJvdGVjdGVkIE1hcDxTdHJpbmcsIE9iamVjdD4gZ2VuZXJhdGVNZXRhRGF0YShmaW5hbCBDaGFubmVsSGFuZGxlckNvbnRleHQgY3R4LCBmaW5hbCBSZXF1ZXN0TWVzc2FnZSBtc2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBSZXNwb25zZVN0YXR1c0NvZGUgY29kZSwgZmluYWwgSXRlcmF0b3IgaXR0eSkgeworICAgICAgICAvLyBsZWF2aW5nIHRoaXMgb3ZlcnJpZGluZyB0aGUgZGVwcmVjYXRlZCB2ZXJzaW9uIG9mIHRoaXMgbWV0aG9kIGJlY2F1c2UgaXQgcHJvdmlkZXMgYSBkZWNlbnQgdGVzdCB0byB0aG9zZQorICAgICAgICAvLyB3aG8gbWlnaHQgaGF2ZSB0aGVpciBvd24gT3BQcm9jZXNzb3IgaW1wbGVtZW50YXRpb25zIHRoYXQgYXBwbHkgbWV0YS1kYXRhLiBsZWF2aW5nIHRoaXMgYWxvbmUgaGVscHMgdmFsaWRhdGUKKyAgICAgICAgLy8gdGhhdCB0aGUgdXBncmFkZSBwYXRoIGlzIGNsZWFuLiAgaXQgY2FuIGJlIHJlbW92ZWQgYXQgdGhlIG5leHQgYnJlYWtpbmcgY2hhbmdlIDMuNS4wCiAgICAgICAgIE1hcDxTdHJpbmcsIE9iamVjdD4gbWV0YURhdGEgPSBDb2xsZWN0aW9ucy5lbXB0eU1hcCgpOwogICAgICAgICBpZiAoaXR0eSBpbnN0YW5jZW9mIFNpZGVFZmZlY3RJdGVyYXRvcikgewogICAgICAgICAgICAgZmluYWwgU2lkZUVmZmVjdEl0ZXJhdG9yIHRyYXZlcnNhbEl0ZXJhdG9yID0gKFNpZGVFZmZlY3RJdGVyYXRvcikgaXR0eTsKQEAgLTQ5OCw2ICs0OTIsOSBAQAogICAgICAgICAgICAgICAgIG1ldGFEYXRhLnB1dChUb2tlbnMuQVJHU19TSURFX0VGRkVDVF9LRVksIGtleSk7CiAgICAgICAgICAgICAgICAgbWV0YURhdGEucHV0KFRva2Vucy5BUkdTX0FHR1JFR0FURV9UTywgdHJhdmVyc2FsSXRlcmF0b3IuZ2V0U2lkZUVmZmVjdEFnZ3JlZ2F0b3IoKSk7CiAgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyB0aGlzIGlzIGEgc3RhbmRhcmQgdHJhdmVyc2FsIGl0ZXJhdG9yCisgICAgICAgICAgICBtZXRhRGF0YSA9IHN1cGVyLmdlbmVyYXRlTWV0YURhdGEoY3R4LCBtc2csIGNvZGUsIGl0dHkpOwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIG1ldGFEYXRhOwpAQCAtNTEzLDE3ICs1MTAsMTkgQEAKIAogICAgICAgICAvLyB3ZSBoYXZlIGFuIGVtcHR5IGl0ZXJhdG9yIC0gaGFwcGVucyBvbiBzdHVmZiBsaWtlOiBnLlYoKS5pdGVyYXRlKCkKICAgICAgICAgaWYgKCFpdHR5Lmhhc05leHQoKSkgewotICAgICAgICAgICAgLy8gYXMgdGhlcmUgaXMgbm90aGluZyBsZWZ0IHRvIGl0ZXJhdGUgaWYgd2UgYXJlIHRyYW5zYWN0aW9uIG1hbmFnZWQgdGhlbiB3ZSBzaG91bGQgZXhlY3V0ZSBhCi0gICAgICAgICAgICAvLyBjb21taXQgaGVyZSBiZWZvcmUgd2Ugc2VuZCBiYWNrIGEgTk9fQ09OVEVOVCB3aGljaCBpbXBsaWVzIHN1Y2Nlc3MKLSAgICAgICAgICAgIG9uVHJhdmVyc2FsU3VjY2VzcyhncmFwaCwgY29udGV4dCk7CisgICAgICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLCBPYmplY3Q+IGF0dHJpYnV0ZXMgPSBnZW5lcmF0ZVN0YXR1c0F0dHJpYnV0ZXMobmV0dHlDb250ZXh0LCBtc2csIFJlc3BvbnNlU3RhdHVzQ29kZS5OT19DT05URU5ULCBpdHR5LCBzZXR0aW5ncyk7CiAgICAgICAgICAgICAvLyBpZiBpdCB3YXMgYSBnLlYoKS5pdGVyYXRlKCksIHRoZW4gYmUgc3VyZSB0byBhZGQgdGhlIHNpZGUtZWZmZWN0cyB0byB0aGUgY2FjaGUKICAgICAgICAgICAgIGlmIChpdHR5IGluc3RhbmNlb2YgVHJhdmVyc2VySXRlcmF0b3IgJiYKICAgICAgICAgICAgICAgICAgICAgISgoVHJhdmVyc2VySXRlcmF0b3IpaXR0eSkuZ2V0VHJhdmVyc2FsKCkuZ2V0U2lkZUVmZmVjdHMoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBjYWNoZS5wdXQobXNnLmdldFJlcXVlc3RJZCgpLCAoKFRyYXZlcnNlckl0ZXJhdG9yKWl0dHkpLmdldFRyYXZlcnNhbCgpLmdldFNpZGVFZmZlY3RzKCkpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gYXMgdGhlcmUgaXMgbm90aGluZyBsZWZ0IHRvIGl0ZXJhdGUgaWYgd2UgYXJlIHRyYW5zYWN0aW9uIG1hbmFnZWQgdGhlbiB3ZSBzaG91bGQgZXhlY3V0ZSBhCisgICAgICAgICAgICAvLyBjb21taXQgaGVyZSBiZWZvcmUgd2Ugc2VuZCBiYWNrIGEgTk9fQ09OVEVOVCB3aGljaCBpbXBsaWVzIHN1Y2Nlc3MKKyAgICAgICAgICAgIG9uVHJhdmVyc2FsU3VjY2VzcyhncmFwaCwgY29udGV4dCk7CiAgICAgICAgICAgICBjb250ZXh0LndyaXRlQW5kRmx1c2goUmVzcG9uc2VNZXNzYWdlLmJ1aWxkKG1zZykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY29kZShSZXNwb25zZVN0YXR1c0NvZGUuTk9fQ09OVEVOVCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY3JlYXRlKCkpOworICAgICAgICAgICAgICAgICAgICAuY29kZShSZXNwb25zZVN0YXR1c0NvZGUuTk9fQ09OVEVOVCkKKyAgICAgICAgICAgICAgICAgICAgLnN0YXR1c0F0dHJpYnV0ZXMoYXR0cmlidXRlcykKKyAgICAgICAgICAgICAgICAgICAgLmNyZWF0ZSgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC01NzQsMTAgKzU3MywxMiBAQAogICAgICAgICAgICAgICAgICAgICAvLyBzZXJpYWxpemUgaGVyZSBiZWNhdXNlIGluIHNlc3Npb25sZXNzIHJlcXVlc3RzIHRoZSBzZXJpYWxpemF0aW9uIG11c3Qgb2NjdXIgaW4gdGhlIHNhbWUKICAgICAgICAgICAgICAgICAgICAgLy8gdGhyZWFkIGFzIHRoZSBldmFsLiAgYXMgZXZhbCBvY2N1cnMgaW4gdGhlIEdyZW1saW5FeGVjdXRvciB0aGVyZSdzIG5vIHdheSB0byBnZXQgYmFjayB0byB0aGUKICAgICAgICAgICAgICAgICAgICAgLy8gdGhyZWFkIHRoYXQgcHJvY2Vzc2VkIHRoZSBldmFsIG9mIHRoZSBzY3JpcHQgc28sIHdlIGhhdmUgdG8gcHVzaCBzZXJpYWxpemF0aW9uIGRvd24gaW50byB0aGF0Ci0gICAgICAgICAgICAgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsIE9iamVjdD4gbWV0YWRhdGEgPSBnZW5lcmF0ZU1ldGFEYXRhKG5ldHR5Q29udGV4dCwgbXNnLCBjb2RlLCBpdHR5KTsKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgTWFwPFN0cmluZywgT2JqZWN0PiBtZXRhZGF0YSA9IGdlbmVyYXRlUmVzdWx0TWV0YURhdGEobmV0dHlDb250ZXh0LCBtc2csIGNvZGUsIGl0dHksIHNldHRpbmdzKTsKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgTWFwPFN0cmluZywgT2JqZWN0PiBzdGF0dXNBdHRyYiA9IGdlbmVyYXRlU3RhdHVzQXR0cmlidXRlcyhuZXR0eUNvbnRleHQsIG1zZywgY29kZSwgaXR0eSwgc2V0dGluZ3MpOwogICAgICAgICAgICAgICAgICAgICBGcmFtZSBmcmFtZSA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmcmFtZSA9IG1ha2VGcmFtZShjb250ZXh0LCBtc2csIHNlcmlhbGl6ZXIsIHVzZUJpbmFyeSwgYWdncmVnYXRlLCBjb2RlLCBtZXRhZGF0YSk7CisgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZSA9IG1ha2VGcmFtZShjb250ZXh0LCBtc2csIHNlcmlhbGl6ZXIsIHVzZUJpbmFyeSwgYWdncmVnYXRlLCBjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEsIHN0YXR1c0F0dHJiKTsKICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhIGZyYW1lIG1heSB1c2UgYSBCeXRlYnVmIHdoaWNoIGlzIGEgY291bnRhYmxlIHJlbGVhc2UgLSBpZiBpdCBkb2VzIG5vdCBnZXQgd3JpdHRlbgogICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG93bnN0cmVhbSBpdCBuZWVkcyB0byBiZSByZWxlYXNlZCBoZXJlCmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL3V0aWwvRGVmYXVsdEdyYXBoTWFuYWdlci5qYXZhIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci91dGlsL0RlZmF1bHRHcmFwaE1hbmFnZXIuamF2YQppbmRleCA5YjU2NjhmLi5hOWU5OTAyIDEwMDY0NAotLS0gYS9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL3V0aWwvRGVmYXVsdEdyYXBoTWFuYWdlci5qYXZhCisrKyBiL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvdXRpbC9EZWZhdWx0R3JhcGhNYW5hZ2VyLmphdmEKQEAgLTY1LDE5ICs2NSw2IEBACiAgICAgICAgIH0pOwogICAgIH0KIAotICAgIC8qKgotICAgICAqIEdldCBhIGxpc3Qgb2YgdGhlIHtAbGluayBHcmFwaH0gaW5zdGFuY2VzIGFuZCB0aGVpciBiaW5kaW5nIG5hbWVzIGFzIGRlZmluZWQgaW4gdGhlIEdyZW1saW4gU2VydmVyCi0gICAgICogY29uZmlndXJhdGlvbiBmaWxlLgotICAgICAqCi0gICAgICogQHJldHVybiBhIHtAY29kZSBNYXB9IHdoZXJlIHRoZSBrZXkgaXMgdGhlIG5hbWUgb2YgdGhlIHtAbGluayBHcmFwaH0gYW5kIHRoZSB2YWx1ZSBpcyB0aGUge0BsaW5rIEdyYXBofSBpdHNlbGYKLSAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuMi41LCByZXBsYWNlZCBieSBhIGNvbWJpbmF0aW9uIG9mIHtAbGluayAjZ2V0R3JhcGhOYW1lcygpfSBhbmQKLSAgICAgKiB7QGxpbmsgI2dldEdyYXBoKFN0cmluZyl9Ci0gICAgICovCi0gICAgQERlcHJlY2F0ZWQKLSAgICBwdWJsaWMgZmluYWwgTWFwPFN0cmluZywgR3JhcGg+IGdldEdyYXBocygpIHsKLSAgICAgICAgcmV0dXJuIGdyYXBoczsKLSAgICB9Ci0KICAgICBwdWJsaWMgZmluYWwgU2V0PFN0cmluZz4gZ2V0R3JhcGhOYW1lcygpIHsKICAgICAgICAgcmV0dXJuIGdyYXBocy5rZXlTZXQoKTsKICAgICB9CkBAIC05MCwyMCArNzcsNiBAQAogICAgICAgICBncmFwaHMucHV0KGdyYXBoTmFtZSwgZyk7CiAgICAgfQogCi0gICAgLyoqCi0gICAgICogR2V0IGEgbGlzdCBvZiB0aGUge0BsaW5rIFRyYXZlcnNhbFNvdXJjZX0gaW5zdGFuY2VzIGFuZCB0aGVpciBiaW5kaW5nIG5hbWVzIGFzIGRlZmluZWQgYnkgR3JlbWxpbiBTZXJ2ZXIKLSAgICAgKiBpbml0aWFsaXphdGlvbiBzY3JpcHRzLgotICAgICAqCi0gICAgICogQHJldHVybiBhIHtAY29kZSBNYXB9IHdoZXJlIHRoZSBrZXkgaXMgdGhlIG5hbWUgb2YgdGhlIHtAbGluayBUcmF2ZXJzYWxTb3VyY2V9IGFuZCB0aGUgdmFsdWUgaXMgdGhlCi0gICAgICoge0BsaW5rIFRyYXZlcnNhbFNvdXJjZX0gaXRzZWxmCi0gICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjIuNSwgcmVwbGFjZWQgYnkgYSBjb21iaW5hdGlvbiBvZiB7QGxpbmsgI2dldFRyYXZlcnNhbFNvdXJjZU5hbWVzKCl9IGFuZAotICAgICAqIHtAbGluayAjZ2V0VHJhdmVyc2FsU291cmNlKFN0cmluZyl9Ci0gICAgICovCi0gICAgQERlcHJlY2F0ZWQKLSAgICBwdWJsaWMgZmluYWwgTWFwPFN0cmluZywgVHJhdmVyc2FsU291cmNlPiBnZXRUcmF2ZXJzYWxTb3VyY2VzKCkgewotICAgICAgICByZXR1cm4gdHJhdmVyc2FsU291cmNlczsKLSAgICB9Ci0KICAgICBwdWJsaWMgZmluYWwgU2V0PFN0cmluZz4gZ2V0VHJhdmVyc2FsU291cmNlTmFtZXMoKSB7CiAgICAgICAgIHJldHVybiB0cmF2ZXJzYWxTb3VyY2VzLmtleVNldCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL3N0YXRpYy9MSUNFTlNFIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vc3RhdGljL0xJQ0VOU0UKaW5kZXggNzhhZTU3MC4uZjNkYTRmNyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vc3RhdGljL0xJQ0VOU0UKKysrIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vc3RhdGljL0xJQ0VOU0UKQEAgLTIwOSw3ICsyMDksNyBAQAogCiAgICAgIGpjYWJpLWxvZyAoY29tLmpjYWJpOmpjYWJpLWxvZzowLjE0IC0gaHR0cDovL3d3dy5qY2FiaS5jb20vamNhYmktbG9nKSAtIGZvciBkZXRhaWxzLCBzZWUgbGljZW5zZXMvamNhYmktbG9nCiAgICAgIGpjYWJpLW1hbmlmZXN0cyAxLjEgKGNvbS5qY2FiaTpqY2FiaS1tYW5pZmVzdHM6MS4xIC0gaHR0cDovL3d3dy5qY2FiaS5jb20vamNhYmktbWFuaWZlc3RzKSAtIGZvciBkZXRhaWxzLCBzZWUgbGljZW5zZXMvamNhYmktbWFuaWZlc3RzCi0gICAgIEpMaW5lIChqbGluZTpqbGluZToyLjEyIC0gaHR0cHM6Ly9naXRodWIuY29tL2psaW5lL2psaW5lMikgLSBmb3IgZGV0YWlscywgc2VlIGxpY2Vuc2VzL2psaW5lMgorICAgICBKTGluZSAoamxpbmU6amxpbmU6Mi4xNC42IC0gaHR0cHM6Ly9naXRodWIuY29tL2psaW5lL2psaW5lMikgLSBmb3IgZGV0YWlscywgc2VlIGxpY2Vuc2VzL2psaW5lMgogICAgICBLcnlvIChjb20uZXNvdGVyaWNzb2Z0d2FyZTprcnlvLXNoYWRlZDozLjAuMyAtIGh0dHBzOi8vZ2l0aHViLmNvbS9Fc290ZXJpY1NvZnR3YXJlL2tyeW8pCiAgICAgICAgLSBzaGFkZWQgaW4gZ3JlbWxpbi1zaGFkZWQgdG8gb3JnLmFwYWNoZS50aW5rZXJwb3Auc2hhZGVkLmtyeW8KICAgICAgICAtIGZvciBkZXRhaWxzLCBzZWUgbGljZW5zZXMva3J5bwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vc3RhdGljL05PVElDRSBiL2dyZW1saW4tc2VydmVyL3NyYy9tYWluL3N0YXRpYy9OT1RJQ0UKaW5kZXggZGFmY2ViYS4uNWY3ZWI2ZSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL21haW4vc3RhdGljL05PVElDRQorKysgYi9ncmVtbGluLXNlcnZlci9zcmMvbWFpbi9zdGF0aWMvTk9USUNFCkBAIC01LDcgKzUsNyBAQAogVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChodHRwOi8vd3d3LmFwYWNoZS5vcmcvKS4KIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1BcGFjaGUgR3Jvb3Z5IDIuNC4xNiAoQUwgQVNGKQorQXBhY2hlIEdyb292eSAyLjUuNyAoQUwgQVNGKQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBUaGlzIHByb2R1Y3QgaW5jbHVkZXMvdXNlcyBBTlRMUiAoaHR0cDovL3d3dy5hbnRscjIub3JnLykKIGRldmVsb3BlZCBieSBUZXJlbmNlIFBhcnIgMTk4OS0yMDA2CkBAIC00OSw2ICs0OSwxOCBAQAogICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1OZXR0eSA0LjAuNTYKK0hQUEMgMC43LjEKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorSFBQQyBib3Jyb3dlZCBjb2RlLCBpZGVhcyBvciBib3RoIGZyb206CisKKyAqIEFwYWNoZSBMdWNlbmUsIGh0dHA6Ly9sdWNlbmUuYXBhY2hlLm9yZy8KKyAgIChBcGFjaGUgbGljZW5zZSkKKyAqIEZhc3R1dGlsLCBodHRwOi8vZmFzdHV0aWwuZGkudW5pbWkuaXQvCisgICAoQXBhY2hlIGxpY2Vuc2UpCisgKiBLb2xvYm9rZSwgaHR0cHM6Ly9naXRodWIuY29tL09wZW5IRlQvS29sb2Jva2UKKyAgIChBcGFjaGUgbGljZW5zZSkKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitOZXR0eSA0LjEuNDIKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogQ29weXJpZ2h0IDIwMTQgVGhlIE5ldHR5IFByb2plY3QKZGlmZiAtLWdpdCBhL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvcmVtb3RlL0Fic3RyYWN0UmVtb3RlR3JhcGhQcm92aWRlci5qYXZhIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9yZW1vdGUvQWJzdHJhY3RSZW1vdGVHcmFwaFByb3ZpZGVyLmphdmEKaW5kZXggYjU5ZDkwMS4uZTg2YTU0NiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9yZW1vdGUvQWJzdHJhY3RSZW1vdGVHcmFwaFByb3ZpZGVyLmphdmEKKysrIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9yZW1vdGUvQWJzdHJhY3RSZW1vdGVHcmFwaFByb3ZpZGVyLmphdmEKQEAgLTI2LDcgKzI2LDggQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5DbHVzdGVyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5TZXJpYWxpemVyczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuQ29tcHV0ZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnJlbW90ZS5SZW1vdGVHcmFwaDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MucmVtb3RlLlJlbW90ZUNvbm5lY3Rpb247CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuUmVtb3RlR3JhcGg7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5Bbm9ueW1vdXNUcmF2ZXJzYWxTb3VyY2U7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguR3JhcGhUcmF2ZXJzYWxTb3VyY2U7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIuR3JlbWxpblNlcnZlcjsKQEAgLTI0Niw3ICsyNDcsNyBAQAogICAgIHB1YmxpYyBHcmFwaCBvcGVuVGVzdEdyYXBoKGZpbmFsIENvbmZpZ3VyYXRpb24gY29uZmlnKSB7CiAgICAgICAgIGZpbmFsIFN0cmluZyBzZXJ2ZXJHcmFwaE5hbWUgPSBjb25maWcuZ2V0U3RyaW5nKERyaXZlclJlbW90ZUNvbm5lY3Rpb24uR1JFTUxJTl9SRU1PVEVfRFJJVkVSX1NPVVJDRU5BTUUpOwogICAgICAgICByZXR1cm4gcmVtb3RlQ2FjaGUuY29tcHV0ZUlmQWJzZW50KHNlcnZlckdyYXBoTmFtZSwKLSAgICAgICAgICAgICAgICBrIC0+IFJlbW90ZUdyYXBoLm9wZW4obmV3IERyaXZlclJlbW90ZUNvbm5lY3Rpb24oY2x1c3RlciwgY29uZmlnKSkpOworICAgICAgICAgICAgICAgIGsgLT4gUmVtb3RlR3JhcGgub3BlbihuZXcgRHJpdmVyUmVtb3RlQ29ubmVjdGlvbihjbHVzdGVyLCBjb25maWcpLCBjb25maWcpKTsKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKQEAgLTI1Nyw3ICsyNTgsNyBAQAogICAgICAgICBmaW5hbCBTdXBwbGllcjxHcmFwaD4gZ3JhcGhHZXR0ZXIgPSAoKSAtPiBzZXJ2ZXIuZ2V0U2VydmVyR3JlbWxpbkV4ZWN1dG9yKCkuZ2V0R3JhcGhNYW5hZ2VyKCkuZ2V0R3JhcGgoc2VydmVyR3JhcGhOYW1lKTsKICAgICAgICAgcmV0dXJuIG5ldyBIYXNoTWFwPFN0cmluZywgT2JqZWN0PigpIHt7CiAgICAgICAgICAgICBwdXQoR3JhcGguR1JBUEgsIFJlbW90ZUdyYXBoLmNsYXNzLmdldE5hbWUoKSk7Ci0gICAgICAgICAgICBwdXQoUmVtb3RlR3JhcGguR1JFTUxJTl9SRU1PVEVfR1JBUEhfUkVNT1RFX0NPTk5FQ1RJT05fQ0xBU1MsIERyaXZlclJlbW90ZUNvbm5lY3Rpb24uY2xhc3MuZ2V0TmFtZSgpKTsKKyAgICAgICAgICAgIHB1dChSZW1vdGVDb25uZWN0aW9uLkdSRU1MSU5fUkVNT1RFX0NPTk5FQ1RJT05fQ0xBU1MsIERyaXZlclJlbW90ZUNvbm5lY3Rpb24uY2xhc3MuZ2V0TmFtZSgpKTsKICAgICAgICAgICAgIHB1dChEcml2ZXJSZW1vdGVDb25uZWN0aW9uLkdSRU1MSU5fUkVNT1RFX0RSSVZFUl9TT1VSQ0VOQU1FLCAiZyIgKyBzZXJ2ZXJHcmFwaE5hbWUpOwogICAgICAgICAgICAgcHV0KCJjbHVzdGVyQ29uZmlndXJhdGlvbi5wb3J0IiwgVGVzdENsaWVudEZhY3RvcnkuUE9SVCk7CiAgICAgICAgICAgICBwdXQoImNsdXN0ZXJDb25maWd1cmF0aW9uLmhvc3RzIiwgImxvY2FsaG9zdCIpOwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9yZW1vdGUvR3JhcGhCaW5hcnlSZW1vdGVHcmFwaENvbXB1dGVyUHJvdmlkZXIuamF2YSBiL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvcmVtb3RlL0dyYXBoQmluYXJ5UmVtb3RlR3JhcGhDb21wdXRlclByb3ZpZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjEzM2EwYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvcmVtb3RlL0dyYXBoQmluYXJ5UmVtb3RlR3JhcGhDb21wdXRlclByb3ZpZGVyLmphdmEKQEAgLTAsMCArMSwzNzYgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnJlbW90ZTsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uR3JhcGhQcm92aWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuU2VyaWFsaXplcnM7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi50aW5rZXJncmFwaC5wcm9jZXNzLmNvbXB1dGVyLlRpbmtlckdyYXBoQ29tcHV0ZXI7CisKKy8qKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuQWRkRWRnZVRlc3QiLAorICAgICAgICBtZXRob2QgPSAiKiIsCisgICAgICAgIHJlYXNvbiA9ICJUaGUgYWRkRWRnZSgpIHN0ZXAgaXMgbm90IHN1cHBvcnRlZCBieSBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLmZpbHRlci5BbmRUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfVl9hc1hhWF9vdXRYa25vd3NYX2FuZF9vdXRYY3JlYXRlZFhfaW5YY3JlYXRlZFhfYXNYYVhfbmFtZSIsCisgICAgICAgIHJlYXNvbiA9ICJMb2NhbCB0cmF2ZXJzYWxzIG1heSBub3QgdHJhdmVyc2UgcGFzdCB0aGUgbG9jYWwgc3Rhci1ncmFwaCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLmJyYW5jaC5DaG9vc2VUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfaW5qZWN0WDFYX2Nob29zZVhpc1gxWF9fY29uc3RhbnRYMTBYZm9sZF9fZm9sZFgiLAorICAgICAgICByZWFzb24gPSAiVGhlIGluamVjdCgpIHN0ZXAgaXMgbm90IHN1cHBvcnRlZCBieSBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLmJyYW5jaC5DaG9vc2VUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfaW5qZWN0WDJYX2Nob29zZVhpc1gxWF9fY29uc3RhbnRYMTBYZm9sZF9fZm9sZFgiLAorICAgICAgICByZWFzb24gPSAiVGhlIGluamVjdCgpIHN0ZXAgaXMgbm90IHN1cHBvcnRlZCBieSBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5Db2FsZXNjZVRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WX2NvYWxlc2NlWG91dEVYa25vd3NYX291dEVYY3JlYXRlZFhYX290aGVyVl9wYXRoX2J5WG5hbWVYX2J5WGxhYmVsWCIsCisgICAgICAgIHJlYXNvbiA9ICJJdCBpcyBub3QgcG9zc2libGUgdG8gYWNjZXNzIG1vcmUgdGhhbiBhIHBhdGggZWxlbWVudCdzIGlkIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuQ29tcGxleFRlc3QiLAorICAgICAgICBtZXRob2QgPSAicGxheWxpc3RQYXRocyIsCisgICAgICAgIHJlYXNvbiA9ICJMb2NhbCB0cmF2ZXJzYWxzIG1heSBub3QgdHJhdmVyc2UgcGFzdCB0aGUgbG9jYWwgc3Rhci1ncmFwaCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5Db3VudFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WX3doZXJlWGluWGtrbm93c1hfb3V0WGNyZWF0ZWRYX2NvdW50X2lzXzBYWF9uYW1lIiwKKyAgICAgICAgcmVhc29uID0gIkxvY2FsIHRyYXZlcnNhbHMgbWF5IG5vdCB0cmF2ZXJzZSBwYXN0IHRoZSBsb2NhbCBzdGFyLWdyYXBoIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuZmlsdGVyLkRlZHVwVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZfYXNYYVhfYm90aF9hc1hiWF9kZWR1cFhhX2JYX2J5WGxhYmVsWF9zZWxlY3RYYV9iWCIsCisgICAgICAgIHJlYXNvbiA9ICJJdCBpcyBub3QgcG9zc2libGUgdG8gYWNjZXNzIG1vcmUgdGhhbiBhIHBhdGggZWxlbWVudCdzIGlkIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLkdyYXBoVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZfaGFzTGFiZWxYcGVyc29uWF9hc1hwWF9WWHNvZnR3YXJlWF9hZGRJbkVYdXNlc19wWCIsCisgICAgICAgIHJlYXNvbiA9ICJNaWQtdHJhdmVyc2FsIFYoKS9FKCkgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQgb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuR3JhcGhUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfVl9oYXNYbmFtZV9HYXJjaWFYX2luWHN1bmdCeVhfYXNYc29uZ1hfVl9oYXNYbmFtZV9XaWxsaWVfRGl4b25YX2luWHdyaXR0ZW5CeVhfd2hlcmVYZXFYc29uZ1hYX25hbWUiLAorICAgICAgICByZWFzb24gPSAiTWlkLXRyYXZlcnNhbCBWKCkvRSgpIGlzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLkdyYXBoVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1Zfb3V0WGtub3dzWF9WX25hbWUiLAorICAgICAgICByZWFzb24gPSAiTWlkLXRyYXZlcnNhbCBWKCkvRSgpIGlzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLkdyYXBoVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZYMVhfVl92YWx1ZXNYbmFtZVgiLAorICAgICAgICByZWFzb24gPSAiTWlkLXRyYXZlcnNhbCBWKCkvRSgpIGlzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuc2lkZUVmZmVjdC5Hcm91cFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WX2dyb3VwWG1YX2J5WG5hbWVYX2J5WGluWGtub3dzWF9uYW1lWF9jYXBYbVgiLAorICAgICAgICByZWFzb24gPSAiTG9jYWwgdHJhdmVyc2FscyBtYXkgbm90IHRyYXZlcnNlIHBhc3QgdGhlIGxvY2FsIHN0YXItZ3JhcGggb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5zaWRlRWZmZWN0Lkdyb3VwVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZfaGFzTGFiZWxYcGVyc29uWF9hc1hwWF9vdXRYY3JlYXRlZFhfZ3JvdXBfYnlYbmFtZVhfYnlYc2VsZWN0WHBYX3ZhbHVlc1hhZ2VYX3N1bVgiLAorICAgICAgICByZWFzb24gPSAiTG9jYWwgdHJhdmVyc2FscyBtYXkgbm90IHRyYXZlcnNlIHBhc3QgdGhlIGxvY2FsIHN0YXItZ3JhcGggb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5zaWRlRWZmZWN0LkluamVjdFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WWDFYX2luamVjdFhnX1ZYNFhYX291dF9uYW1lIiwKKyAgICAgICAgcmVhc29uID0gIlRoZSBpbmplY3QoKSBzdGVwIGlzIG5vdCBzdXBwb3J0ZWQgYnkgR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5zaWRlRWZmZWN0LkluamVjdFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WWDFYX291dF9pbmplY3RYdjJYX25hbWUiLAorICAgICAgICByZWFzb24gPSAiVGhlIGluamVjdCgpIHN0ZXAgaXMgbm90IHN1cHBvcnRlZCBieSBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLmJyYW5jaC5Mb2NhbFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WX2xvY2FsWG1hdGNoWHByb2plY3RfX2NyZWF0ZWRfcGVyc29uX19wZXJzb25fbmFtZV9uYW1lWF9zZWxlY3RYbmFtZV9wcm9qZWN0WF9ieV9ieVhuYW1lWCIsCisgICAgICAgIHJlYXNvbiA9ICJMb2NhbCB0cmF2ZXJzYWxzIG1heSBub3QgdHJhdmVyc2UgcGFzdCB0aGUgbG9jYWwgc3Rhci1ncmFwaCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5Mb29wc1Rlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WWDFYX3JlcGVhdFhib3RoX3NpbXBsZVBhdGhYX3VudGlsWGhhc1huYW1lX3BldGVyWF9hbmRfbG9vcHNfaXNYM1hYX2hhc1huYW1lX3BldGVyWF9wYXRoX2J5WG5hbWVYIiwKKyAgICAgICAgcmVhc29uID0gIkl0IGlzIG5vdCBwb3NzaWJsZSB0byBhY2Nlc3MgbW9yZSB0aGFuIGEgcGF0aCBlbGVtZW50J3MgaWQgb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuTG9vcHNUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfVlgxWF9yZXBlYXRYYm90aF9zaW1wbGVQYXRoWF91bnRpbFhoYXNYbmFtZV9wZXRlclhfb3JfbG9vcHNfaXNYMlhYX2hhc1huYW1lX3BldGVyWF9wYXRoX2J5WG5hbWVYIiwKKyAgICAgICAgcmVhc29uID0gIkl0IGlzIG5vdCBwb3NzaWJsZSB0byBhY2Nlc3MgbW9yZSB0aGFuIGEgcGF0aCBlbGVtZW50J3MgaWQgb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuTG9vcHNUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfVlgxWF9yZXBlYXRYYm90aF9zaW1wbGVQYXRoWF91bnRpbFhoYXNYbmFtZV9wZXRlclhfb3JfbG9vcHNfaXNYM1hYX2hhc1huYW1lX3BldGVyWF9wYXRoX2J5WG5hbWVYIiwKKyAgICAgICAgcmVhc29uID0gIkl0IGlzIG5vdCBwb3NzaWJsZSB0byBhY2Nlc3MgbW9yZSB0aGFuIGEgcGF0aCBlbGVtZW50J3MgaWQgb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuTWF0Y2hUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfVl9tYXRjaFhhX2JvdGhfYl9fYl9ib3RoX2NYX2RlZHVwWGFfYlhfYnlYbGFiZWxYIiwKKyAgICAgICAgcmVhc29uID0gIkl0IGlzIG5vdCBwb3NzaWJsZSB0byBhY2Nlc3MgbW9yZSB0aGFuIGEgcGF0aCBlbGVtZW50J3MgaWQgb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuTWF0Y2hUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfVl9tYXRjaFhhX2NyZWF0ZWRfbG9wX2JfX2JfMGNyZWF0ZWRfMjlfY19fY193aGVyZVhyZXBlYXRYb3V0WF90aW1lc1gyWFhYIiwKKyAgICAgICAgcmVhc29uID0gIkl0IGlzIG5vdCBwb3NzaWJsZSB0byBhY2Nlc3MgbW9yZSB0aGFuIGEgcGF0aCBlbGVtZW50J3MgaWQgb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuTWF0Y2hUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfVl9tYXRjaFhhX2NyZWF0ZWRfbG9wX2JfX2JfMGNyZWF0ZWRfMjlfY1hfd2hlcmVYY19yZXBlYXRYb3V0WF90aW1lc1gyWFhfc2VsZWN0WGFfYl9jWCIsCisgICAgICAgIHJlYXNvbiA9ICJMb2NhbCB0cmF2ZXJzYWxzIG1heSBub3QgdHJhdmVyc2UgcGFzdCB0aGUgbG9jYWwgc3Rhci1ncmFwaCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5NYXRjaFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WX21hdGNoWHdoZXJlWGFuZFhhX2NyZWF0ZWRfYl9fYl8wY3JlYXRlZF9jb3VudF9pc1hlcVgzWFhYWF9fYV9ib3RoX2JfX3doZXJlWGJfaW5YWCIsCisgICAgICAgIHJlYXNvbiA9ICJJdCBpcyBub3QgcG9zc2libGUgdG8gYWNjZXNzIG1vcmUgdGhhbiBhIHBhdGggZWxlbWVudCdzIGlkIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLk1hdGNoVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZfbWF0Y2hYYV9ib3RoX2JfX2JfYm90aF9jWF9kZWR1cFhhX2JYX2J5WGxhYmVsWCIsCisgICAgICAgIHJlYXNvbiA9ICJJdCBpcyBub3QgcG9zc2libGUgdG8gYWNjZXNzIG1vcmUgdGhhbiBhIHBhdGggZWxlbWVudCdzIGlkIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLk1hdGNoVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZfbWF0Y2hYYV9jcmVhdGVkX2xvcF9iX19iXzBjcmVhdGVkXzI5X2NfX2Nfd2hlcmVYcmVwZWF0WG91dFhfdGltZXNYMlhYWCIsCisgICAgICAgIHJlYXNvbiA9ICJMb2NhbCB0cmF2ZXJzYWxzIG1heSBub3QgdHJhdmVyc2UgcGFzdCB0aGUgbG9jYWwgc3Rhci1ncmFwaCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5NYXRjaFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WX21hdGNoWGFfY3JlYXRlZF9sb3BfYl9fYl8wY3JlYXRlZF8yOV9jWF93aGVyZVhjX3JlcGVhdFhvdXRYX3RpbWVzWDJYWF9zZWxlY3RYYV9iX2NYIiwKKyAgICAgICAgcmVhc29uID0gIkxvY2FsIHRyYXZlcnNhbHMgbWF5IG5vdCB0cmF2ZXJzZSBwYXN0IHRoZSBsb2NhbCBzdGFyLWdyYXBoIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLk1hdGNoVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZfbWF0Y2hYd2hlcmVYYW5kWGFfY3JlYXRlZF9iX19iXzBjcmVhdGVkX2NvdW50X2lzWGVxWDNYWFhYX19hX2JvdGhfYl9fd2hlcmVYYl9pblhYIiwKKyAgICAgICAgcmVhc29uID0gIkl0IGlzIG5vdCBwb3NzaWJsZSB0byBhY2Nlc3MgbW9yZSB0aGFuIGEgcGF0aCBlbGVtZW50J3MgaWQgb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuTWF0aFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WX2FzWGFYX291dFhjcmVhdGVkWF9hc1hiWF9tYXRoWGJfcGx1c19hWF9ieVhpblhjcmVhdGVkWF9jb3VudFhfYnlYYWdlWCIsCisgICAgICAgIHJlYXNvbiA9ICJJdCBpcyBub3QgcG9zc2libGUgdG8gYWNjZXNzIG1vcmUgdGhhbiBhIHBhdGggZWxlbWVudCdzIGlkIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLk1hdGhUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfVl9hc1hhWF9vdXRYa25vd3NYX2FzWGJYX21hdGhYYV9wbHVzX2JYX2J5WGFnZVgiLAorICAgICAgICByZWFzb24gPSAiSXQgaXMgbm90IHBvc3NpYmxlIHRvIGFjY2VzcyBtb3JlIHRoYW4gYSBwYXRoIGVsZW1lbnQncyBpZCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5NYXRoVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX3dpdGhTYWNrWDFYX2luamVjdFgxWF9yZXBlYXRYc2Fja1hzdW1YX2J5WGNvbnN0YW50WDFYWFhfdGltZXNYNVhfZW1pdF9tYXRoWHNpbl9fWF9ieVhzYWNrWCIsCisgICAgICAgIHJlYXNvbiA9ICJUaGUgaW5qZWN0KCkgc3RlcCBpcyBub3Qgc3VwcG9ydGVkIGJ5IEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLk1pblRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WX2Zvb19pbmplY3RYOTk5OTk5OTk5OVhfbWluIiwKKyAgICAgICAgcmVhc29uID0gIlRoZSBpbmplY3QoKSBzdGVwIGlzIG5vdCBzdXBwb3J0ZWQgYnkgR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5icmFuY2guT3B0aW9uYWxUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfVl9oYXNMYWJlbFhwZXJzb25YX29wdGlvbmFsWG91dFhrbm93c1hfb3B0aW9uYWxYb3V0WGNyZWF0ZWRYWFhfcGF0aCIsCisgICAgICAgIHJlYXNvbiA9ICJMb2NhbCB0cmF2ZXJzYWxzIG1heSBub3QgdHJhdmVyc2UgcGFzdCB0aGUgbG9jYWwgc3Rhci1ncmFwaCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLmJyYW5jaC5PcHRpb25hbFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WX29wdGlvbmFsWG91dF9vcHRpb25hbFhvdXRYWF9wYXRoIiwKKyAgICAgICAgcmVhc29uID0gIkxvY2FsIHRyYXZlcnNhbHMgbWF5IG5vdCB0cmF2ZXJzZSBwYXN0IHRoZSBsb2NhbCBzdGFyLWdyYXBoIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuYnJhbmNoLk9wdGlvbmFsVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZYMVhfb3B0aW9uYWxYYWRkVlhkb2dYWF9sYWJlbCIsCisgICAgICAgIHJlYXNvbiA9ICJUaGUgYWRkVigpIHN0ZXAgaXMgbm90IHN1cHBvcnRlZCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLmZpbHRlci5TaW1wbGVQYXRoVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZfYXNYYVhfb3V0X2FzWGJYX291dF9hc1hjWF9zaW1wbGVQYXRoX2J5WGxhYmVsWF9mcm9tWGJYX3RvWGNYX3BhdGhfYnlYbmFtZVgiLAorICAgICAgICByZWFzb24gPSAiSXQgaXMgbm90IHBvc3NpYmxlIHRvIGFjY2VzcyBtb3JlIHRoYW4gYSBwYXRoIGVsZW1lbnQncyBpZCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLlN1YmdyYXBoU3RyYXRlZ3lQcm9jZXNzVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJzaG91bGRGaWx0ZXJDb21wbGV4VmVydGV4Q3JpdGVyaW9uIiwKKyAgICAgICAgcmVhc29uID0gIkxvY2FsIHRyYXZlcnNhbHMgbWF5IG5vdCB0cmF2ZXJzZSBwYXN0IHRoZSBsb2NhbCBzdGFyLWdyYXBoIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uU3ViZ3JhcGhTdHJhdGVneVByb2Nlc3NUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gInNob3VsZEZpbHRlckVkZ2VDcml0ZXJpb24iLAorICAgICAgICByZWFzb24gPSAiTG9jYWwgdHJhdmVyc2FscyBtYXkgbm90IHRyYXZlcnNlIHBhc3QgdGhlIGxvY2FsIHN0YXItZ3JhcGggb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuZGVjb3JhdGlvbi5TdWJncmFwaFN0cmF0ZWd5UHJvY2Vzc1Rlc3QiLAorICAgICAgICBtZXRob2QgPSAic2hvdWxkRmlsdGVyTWl4ZWRDcml0ZXJpYSIsCisgICAgICAgIHJlYXNvbiA9ICJMb2NhbCB0cmF2ZXJzYWxzIG1heSBub3QgdHJhdmVyc2UgcGFzdCB0aGUgbG9jYWwgc3Rhci1ncmFwaCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLlN1YmdyYXBoU3RyYXRlZ3lQcm9jZXNzVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJzaG91bGRGaWx0ZXJWZXJ0ZXhDcml0ZXJpb24iLAorICAgICAgICByZWFzb24gPSAiTG9jYWwgdHJhdmVyc2FscyBtYXkgbm90IHRyYXZlcnNlIHBhc3QgdGhlIGxvY2FsIHN0YXItZ3JhcGggb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuZGVjb3JhdGlvbi5TdWJncmFwaFN0cmF0ZWd5UHJvY2Vzc1Rlc3QiLAorICAgICAgICBtZXRob2QgPSAic2hvdWxkRmlsdGVyVmVydGV4Q3JpdGVyaW9uQW5kS2VlcExhYmVscyIsCisgICAgICAgIHJlYXNvbiA9ICJMb2NhbCB0cmF2ZXJzYWxzIG1heSBub3QgdHJhdmVyc2UgcGFzdCB0aGUgbG9jYWwgc3Rhci1ncmFwaCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLlN1YmdyYXBoU3RyYXRlZ3lQcm9jZXNzVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJzaG91bGRHZXRFeGNsdWRlZEVkZ2UiLAorICAgICAgICByZWFzb24gPSAiTG9jYWwgdHJhdmVyc2FscyBtYXkgbm90IHRyYXZlcnNlIHBhc3QgdGhlIGxvY2FsIHN0YXItZ3JhcGggb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5maWx0ZXIuVGFpbFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WX2FzWGFYX291dF9hc1hhWF9vdXRfYXNYYVhfc2VsZWN0WG1peGVkX2FYX2J5WGxpbWl0WGxvY2FsXzBYWF90YWlsWGxvY2FsXzFYIiwKKyAgICAgICAgcmVhc29uID0gIkl0IGlzIG5vdCBwb3NzaWJsZSB0byBhY2Nlc3MgbW9yZSB0aGFuIGEgcGF0aCBlbGVtZW50J3MgaWQgb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5maWx0ZXIuVGFpbFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WX2FzWGFYX291dF9hc1hhWF9vdXRfYXNYYVhfc2VsZWN0WG1peGVkX2FYX2J5WHVuZm9sZF92YWx1ZXNYbmFtZVhfZm9sZFhfdGFpbFhsb2NhbF8xWCIsCisgICAgICAgIHJlYXNvbiA9ICJJdCBpcyBub3QgcG9zc2libGUgdG8gYWNjZXNzIG1vcmUgdGhhbiBhIHBhdGggZWxlbWVudCdzIGlkIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuZmlsdGVyLlRhaWxUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfVl9hc1hhWF9vdXRfYXNYYVhfb3V0X2FzWGFYX3NlbGVjdFhtaXhlZF9hWF9ieVh1bmZvbGRfdmFsdWVzWG5hbWVYX2ZvbGRYX3RhaWxYbG9jYWxfMlgiLAorICAgICAgICByZWFzb24gPSAiSXQgaXMgbm90IHBvc3NpYmxlIHRvIGFjY2VzcyBtb3JlIHRoYW4gYSBwYXRoIGVsZW1lbnQncyBpZCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLmZpbHRlci5UYWlsVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZfYXNYYVhfb3V0X2FzWGFYX291dF9hc1hhWF9zZWxlY3RYbWl4ZWRfYVhfYnlYdW5mb2xkX3ZhbHVlc1huYW1lWF9mb2xkWF90YWlsWGxvY2FsWCIsCisgICAgICAgIHJlYXNvbiA9ICJJdCBpcyBub3QgcG9zc2libGUgdG8gYWNjZXNzIG1vcmUgdGhhbiBhIHBhdGggZWxlbWVudCdzIGlkIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuc2lkZUVmZmVjdC5UcmVlVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZYMVhfb3V0X291dF90cmVlX2J5WG5hbWVYIiwKKyAgICAgICAgcmVhc29uID0gIkl0IGlzIG5vdCBwb3NzaWJsZSB0byBhY2Nlc3MgbW9yZSB0aGFuIGEgcGF0aCBlbGVtZW50J3MgaWQgb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5zaWRlRWZmZWN0LlRyZWVUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfVlgxWF9vdXRfb3V0X3RyZWVYYVhfYnlYbmFtZVhfYm90aF9ib3RoX2NhcFhhWCIsCisgICAgICAgIHJlYXNvbiA9ICJJdCBpcyBub3QgcG9zc2libGUgdG8gYWNjZXNzIG1vcmUgdGhhbiBhIHBhdGggZWxlbWVudCdzIGlkIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlVuZm9sZFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WWDFYX3JlcGVhdFhib3RoX3NpbXBsZVBhdGhYX3VudGlsWGhhc0lkWDZYWF9wYXRoX2J5WG5hbWVYX3VuZm9sZCIsCisgICAgICAgIHJlYXNvbiA9ICJJdCBpcyBub3QgcG9zc2libGUgdG8gYWNjZXNzIG1vcmUgdGhhbiBhIHBhdGggZWxlbWVudCdzIGlkIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlZlcnRleFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WX2hhc0xhYmVsWHBlcnNvblhfVl9oYXNMYWJlbFhzb2Z0d2FyZVhfbmFtZSIsCisgICAgICAgIHJlYXNvbiA9ICJNaWQtdHJhdmVyc2FsIFYoKS9FKCkgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQgb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5maWx0ZXIuV2hlcmVUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfVl9hc1hhWF9vdXRfYXNYYlhfd2hlcmVYYW5kWGFzWGFYX291dFhrbm93c1hfYXNYYlhfX29yWGFzWGJYX291dFhjcmVhdGVkWF9oYXNYbmFtZV9yaXBwbGVYX19hc1hiWF9pblhrbm93c1hfY291bnRfaXNYbm90WGVxWDBYWFhYWF9zZWxlY3RYYV9iWCIsCisgICAgICAgIHJlYXNvbiA9ICJJdCBpcyBub3QgcG9zc2libGUgdG8gYWNjZXNzIG1vcmUgdGhhbiBhIHBhdGggZWxlbWVudCdzIGlkIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuZmlsdGVyLldoZXJlVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZfYXNYYVhfb3V0X2FzWGJYX3doZXJlWGluX2NvdW50X2lzWGVxWDNYWF9vcl93aGVyZVhvdXRYY3JlYXRlZFhfYW5kX2hhc1hsYWJlbF9wZXJzb25YWFhfc2VsZWN0WGFfYlgiLAorICAgICAgICByZWFzb24gPSAiSXQgaXMgbm90IHBvc3NpYmxlIHRvIGFjY2VzcyBtb3JlIHRoYW4gYSBwYXRoIGVsZW1lbnQncyBpZCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLmZpbHRlci5XaGVyZVRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WX2FzWGFYX291dEVYY3JlYXRlZFhfYXNYYlhfaW5WX2FzWGNYX2luWGNyZWF0ZWRYX2FzWGRYX3doZXJlWGFfbHRYYlhfb3JYZ3RYY1hYX2FuZFhuZXFYZFhYWF9ieVhhZ2VYX2J5WHdlaWdodFhfYnlYaW5YY3JlYXRlZFhfdmFsdWVzWGFnZVhfbWluWF9zZWxlY3RYYV9jX2RYIiwKKyAgICAgICAgcmVhc29uID0gIkl0IGlzIG5vdCBwb3NzaWJsZSB0byBhY2Nlc3MgbW9yZSB0aGFuIGEgcGF0aCBlbGVtZW50J3MgaWQgb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5maWx0ZXIuV2hlcmVUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfVl9hc1hhWF9vdXRFWGNyZWF0ZWRYX2FzWGJYX2luVl9hc1hjWF93aGVyZVhhX2d0WGJYX29yWGVxWGJYWFhfYnlYYWdlWF9ieVh3ZWlnaHRYX2J5WHdlaWdodFhfc2VsZWN0WGFfY1hfYnlYbmFtZVgiLAorICAgICAgICByZWFzb24gPSAiSXQgaXMgbm90IHBvc3NpYmxlIHRvIGFjY2VzcyBtb3JlIHRoYW4gYSBwYXRoIGVsZW1lbnQncyBpZCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLmZpbHRlci5XaGVyZVRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WX2FzWGFYX291dFhjcmVhdGVkWF9hc1hiWF93aGVyZVhhbmRYYXNYYlhfaW5fX25vdFhhc1hhWF9vdXRYY3JlYXRlZFhfaGFzWG5hbWVfcmlwcGxlWFhYX3NlbGVjdFhhX2JYIiwKKyAgICAgICAgcmVhc29uID0gIkl0IGlzIG5vdCBwb3NzaWJsZSB0byBhY2Nlc3MgbW9yZSB0aGFuIGEgcGF0aCBlbGVtZW50J3MgaWQgb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5maWx0ZXIuV2hlcmVUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfVl9hc1hhWF9vdXRYY3JlYXRlZFhfaW5YY3JlYXRlZFhfYXNYYlhfd2hlcmVYYV9ndFhiWFhfYnlYYWdlWF9zZWxlY3RYYV9iWF9ieVhuYW1lWCIsCisgICAgICAgIHJlYXNvbiA9ICJJdCBpcyBub3QgcG9zc2libGUgdG8gYWNjZXNzIG1vcmUgdGhhbiBhIHBhdGggZWxlbWVudCdzIGlkIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuZmlsdGVyLldoZXJlVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZYMVhfYXNYYVhfb3V0X2hhc1hhZ2VYX3doZXJlWGd0WGFYWF9ieVhhZ2VYX25hbWUiLAorICAgICAgICByZWFzb24gPSAiSXQgaXMgbm90IHBvc3NpYmxlIHRvIGFjY2VzcyBtb3JlIHRoYW4gYSBwYXRoIGVsZW1lbnQncyBpZCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLmZpbHRlci5XaGVyZVRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WWDFYX2FzWGFYX291dFhjcmVhdGVkWF9pblhjcmVhdGVkWF9hc1hiWF93aGVyZVhhc1hiWF9vdXRYY3JlYXRlZFhfaGFzWG5hbWVfcmlwcGxlWFhfdmFsdWVzWGFnZV9uYW1lWCIsCisgICAgICAgIHJlYXNvbiA9ICJMb2NhbCB0cmF2ZXJzYWxzIG1heSBub3QgdHJhdmVyc2UgcGFzdCB0aGUgbG9jYWwgc3Rhci1ncmFwaCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5QYXRoVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZfYXNYYVhfb3V0X2FzWGJYX291dF9hc1hjWF9wYXRoX2Zyb21YYlhfdG9YY1hfYnlYbmFtZVgiLAorICAgICAgICByZWFzb24gPSAiSXQgaXMgbm90IHBvc3NpYmxlIHRvIGFjY2VzcyBtb3JlIHRoYW4gYSBwYXRoIGVsZW1lbnQncyBpZCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5QYXRoVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1Zfb3V0X291dF9wYXRoX2J5WG5hbWVYX2J5WGFnZVgiLAorICAgICAgICByZWFzb24gPSAiSXQgaXMgbm90IHBvc3NpYmxlIHRvIGFjY2VzcyBtb3JlIHRoYW4gYSBwYXRoIGVsZW1lbnQncyBpZCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5QYXRoVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZfcmVwZWF0WG91dFhfdGltZXNYMlhfcGF0aF9ieVhpdFhfYnlYbmFtZVhfYnlYbGFuZ1giLAorICAgICAgICByZWFzb24gPSAiSXQgaXMgbm90IHBvc3NpYmxlIHRvIGFjY2VzcyBtb3JlIHRoYW4gYSBwYXRoIGVsZW1lbnQncyBpZCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5QYXRoVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZYMVhfb3V0X3BhdGhfYnlYYWdlWF9ieVhuYW1lWCIsCisgICAgICAgIHJlYXNvbiA9ICJJdCBpcyBub3QgcG9zc2libGUgdG8gYWNjZXNzIG1vcmUgdGhhbiBhIHBhdGggZWxlbWVudCdzIGlkIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuZmlsdGVyLlJhbmdlVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZfYXNYYVhfaW5fYXNYYVhfaW5fYXNYYVhfc2VsZWN0WG1peGVkX2FYX2J5WHVuZm9sZF92YWx1ZXNYbmFtZVhfZm9sZFhfbGltaXRYbG9jYWxfMVgiLAorICAgICAgICByZWFzb24gPSAiSXQgaXMgbm90IHBvc3NpYmxlIHRvIGFjY2VzcyBtb3JlIHRoYW4gYSBwYXRoIGVsZW1lbnQncyBpZCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLmZpbHRlci5SYW5nZVRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WX2FzWGFYX2luX2FzWGFYX2luX2FzWGFYX3NlbGVjdFhtaXhlZF9hWF9ieVh1bmZvbGRfdmFsdWVzWG5hbWVYX2ZvbGRYX2xpbWl0WGxvY2FsXzJYIiwKKyAgICAgICAgcmVhc29uID0gIkl0IGlzIG5vdCBwb3NzaWJsZSB0byBhY2Nlc3MgbW9yZSB0aGFuIGEgcGF0aCBlbGVtZW50J3MgaWQgb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5maWx0ZXIuUmFuZ2VUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfVl9hc1hhWF9vdXRfYXNYYVhfb3V0X2FzWGFYX3NlbGVjdFhtaXhlZF9hWF9ieVh1bmZvbGRfdmFsdWVzWG5hbWVYX2ZvbGRYX3JhbmdlWGxvY2FsXzFfMlgiLAorICAgICAgICByZWFzb24gPSAiSXQgaXMgbm90IHBvc3NpYmxlIHRvIGFjY2VzcyBtb3JlIHRoYW4gYSBwYXRoIGVsZW1lbnQncyBpZCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLmZpbHRlci5SYW5nZVRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WX2FzWGFYX291dF9hc1hhWF9vdXRfYXNYYVhfc2VsZWN0WG1peGVkX2FYX2J5WHVuZm9sZF92YWx1ZXNYbmFtZVhfZm9sZFhfcmFuZ2VYbG9jYWxfMV8zWCIsCisgICAgICAgIHJlYXNvbiA9ICJJdCBpcyBub3QgcG9zc2libGUgdG8gYWNjZXNzIG1vcmUgdGhhbiBhIHBhdGggZWxlbWVudCdzIGlkIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuZmlsdGVyLlJhbmdlVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZfYXNYYVhfb3V0X2FzWGFYX291dF9hc1hhWF9zZWxlY3RYbWl4ZWRfYVhfYnlYdW5mb2xkX3ZhbHVlc1huYW1lWF9mb2xkWF9yYW5nZVhsb2NhbF80XzVYIiwKKyAgICAgICAgcmVhc29uID0gIkl0IGlzIG5vdCBwb3NzaWJsZSB0byBhY2Nlc3MgbW9yZSB0aGFuIGEgcGF0aCBlbGVtZW50J3MgaWQgb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5icmFuY2guUmVwZWF0VGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZfaGFzWGxvb3BfbmFtZV9sb29wWF9yZXBlYXRYaW5YX3RpbWVzWDVYX3BhdGhfYnlfbmFtZSIsCisgICAgICAgIHJlYXNvbiA9ICJJdCBpcyBub3QgcG9zc2libGUgdG8gYWNjZXNzIG1vcmUgdGhhbiBhIHBhdGggZWxlbWVudCdzIGlkIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuYnJhbmNoLlJlcGVhdFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WX2hhc1huYW1lX21hcmtvWF9yZXBlYXRYb3V0RV9pblZfc2ltcGxlUGF0aFhfdW50aWxYaGFzWG5hbWVfcmlwcGxlWFhfcGF0aF9ieVhuYW1lWF9ieVhsYWJlbFgiLAorICAgICAgICByZWFzb24gPSAiSXQgaXMgbm90IHBvc3NpYmxlIHRvIGFjY2VzcyBtb3JlIHRoYW4gYSBwYXRoIGVsZW1lbnQncyBpZCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnNpZGVFZmZlY3QuU2Fja1Rlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ193aXRoQnVsa1hmYWxzZVhfd2l0aFNhY2tYMV9zdW1YX1Zfb3V0X2JhcnJpZXJfc2FjayIsCisgICAgICAgIHJlYXNvbiA9ICJPbmUgYnVsayBpcyBjdXJyZW50bHkgbm90IHN1cHBvcnRlZCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnNpZGVFZmZlY3QuU2Fja1Rlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ193aXRoQnVsa1hmYWxzZVhfd2l0aFNhY2tYMV9zdW1YX1ZYMVhfbG9jYWxYb3V0RVhrbm93c1hfYmFycmllclhub3JtU2Fja1hfaW5WWF9pblhrbm93c1hfYmFycmllcl9zYWNrIiwKKyAgICAgICAgcmVhc29uID0gIk9uZSBidWxrIGlzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlNlbGVjdFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WX2FzWGFYX2dyb3VwWG1YX2J5X2J5WGJvdGhFX2NvdW50WF9iYXJyaWVyX3NlbGVjdFhtWF9zZWxlY3RYc2VsZWN0WGFYWF9ieVhtYXRoWF9wbHVzX1hYIiwKKyAgICAgICAgcmVhc29uID0gIkl0IGlzIG5vdCBwb3NzaWJsZSB0byBhY2Nlc3MgbW9yZSB0aGFuIGEgcGF0aCBlbGVtZW50J3MgaWQgb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuU2VsZWN0VGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZfYXNYYVhfb3V0WGtub3dzWF9hc1hiWF9sb2NhbFhzZWxlY3RYYV9iWF9ieVhuYW1lWFgiLAorICAgICAgICByZWFzb24gPSAiSXQgaXMgbm90IHBvc3NpYmxlIHRvIGFjY2VzcyBtb3JlIHRoYW4gYSBwYXRoIGVsZW1lbnQncyBpZCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5TZWxlY3RUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfVl9oYXNMYWJlbFhzb2Z0d2FyZVhfYXNYbmFtZVhfYXNYbGFuZ3VhZ2VYX2FzWGNyZWF0b3JzWF9zZWxlY3RYbmFtZV9sYW5ndWFnZV9jcmVhdG9yc1hfYnlYbmFtZVhfYnlYbGFuZ1hfYnlYaW5YY3JlYXRlZFhfbmFtZV9mb2xkX29yZGVyWGxvY2FsWFgiLAorICAgICAgICByZWFzb24gPSAiTG9jYWwgdHJhdmVyc2FscyBtYXkgbm90IHRyYXZlcnNlIHBhc3QgdGhlIGxvY2FsIHN0YXItZ3JhcGggb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuU2VsZWN0VGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZfaGFzTGFiZWxYc29mdHdhcmVYX2FzWG5hbWVYX2FzWGxhbmd1YWdlWF9hc1hjcmVhdG9yc1hfc2VsZWN0WG5hbWVfbGFuZ3VhZ2VfY3JlYXRvcnNYX2J5WG5hbWVYX2J5WGxhbmdYX2J5WGluWGNyZWF0ZWRYX25hbWVfZm9sZF9vcmRlclhsb2NhbFhYIiwKKyAgICAgICAgcmVhc29uID0gIkxvY2FsIHRyYXZlcnNhbHMgbWF5IG5vdCB0cmF2ZXJzZSBwYXN0IHRoZSBsb2NhbCBzdGFyLWdyYXBoIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlNlbGVjdFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WX2hhc0xhYmVsWHNvZnR3YXJlWF9hc1huYW1lWF9hc1hsYW5ndWFnZVhfYXNYY3JlYXRvcnNYX3NlbGVjdFhuYW1lX2xhbmd1YWdlX2NyZWF0b3JzWF9ieVhuYW1lWF9ieVhsYW5nWF9ieVhpblhjcmVhdGVkWF9uYW1lX2ZvbGRfb3JkZXJYbG9jYWxYWCIsCisgICAgICAgIHJlYXNvbiA9ICJMb2NhbCB0cmF2ZXJzYWxzIG1heSBub3QgdHJhdmVyc2UgcGFzdCB0aGUgbG9jYWwgc3Rhci1ncmFwaCBvbiBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5TZWxlY3RUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfVl91bnRpbFhvdXRfb3V0WF9yZXBlYXRYaW5fYXNYYVhfaW5fYXNYYlhYX3NlbGVjdFhhX2JYX2J5WG5hbWVYIiwKKyAgICAgICAgcmVhc29uID0gIkxvY2FsIHRyYXZlcnNhbHMgbWF5IG5vdCB0cmF2ZXJzZSBwYXN0IHRoZSBsb2NhbCBzdGFyLWdyYXBoIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlNlbGVjdFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WX3VudGlsWG91dF9vdXRYX3JlcGVhdFhpbl9hc1hhWFhfc2VsZWN0WGFYX2J5WHRhaWxYbG9jYWxYX25hbWVYIiwKKyAgICAgICAgcmVhc29uID0gIkxvY2FsIHRyYXZlcnNhbHMgbWF5IG5vdCB0cmF2ZXJzZSBwYXN0IHRoZSBsb2NhbCBzdGFyLWdyYXBoIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlByb3BlcnRpZXNUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfaW5qZWN0WGdfVlgxWF9wcm9wZXJ0aWVzWG5hbWVYX25leHRYX3ZhbHVlIiwKKyAgICAgICAgcmVhc29uID0gIk5lZWRzIGludmVzdGlnYXRpb24iKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlJlYWRUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gIioiLAorICAgICAgICByZWFzb24gPSAiVGhlIGlvKCkgc3RlcCBpcyBub3Qgc3VwcG9ydGVkIGdlbmVyYWxseSBieSBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5Xcml0ZVRlc3QiLAorICAgICAgICBtZXRob2QgPSAiKiIsCisgICAgICAgIHJlYXNvbiA9ICJUaGUgaW8oKSBzdGVwIGlzIG5vdCBzdXBwb3J0ZWQgZ2VuZXJhbGx5IGJ5IEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuYnJhbmNoLlJlcGVhdFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WX3JlcGVhdFhvdXRfcmVwZWF0WG91dFhfdGltZXNYMVhYX3RpbWVzWDFYX2xpbWl0WDFYX3BhdGhfYnlfbmFtZSIsCisgICAgICAgIHJlYXNvbiA9ICJJdCBpcyBub3QgcG9zc2libGUgdG8gYWNjZXNzIG1vcmUgdGhhbiBhIHBhdGggZWxlbWVudCdzIGlkIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuYnJhbmNoLlJlcGVhdFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WX3JlcGVhdFhvdXRYa25vd3NYWF91bnRpbFhyZXBlYXRYb3V0WGNyZWF0ZWRYWF9lbWl0WGhhc1huYW1lX2xvcFhYWF9wYXRoX2J5WG5hbWVYIiwKKyAgICAgICAgcmVhc29uID0gIkl0IGlzIG5vdCBwb3NzaWJsZSB0byBhY2Nlc3MgbW9yZSB0aGFuIGEgcGF0aCBlbGVtZW50J3MgaWQgb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5icmFuY2guUmVwZWF0VGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZYM1hfcmVwZWF0WGJvdGhYX2NyZWF0ZWRYWF91bnRpbFhsb29wc19pc180MFhYZW1pdF9yZXBlYXRYaW5fa25vd3NYWF9lbWl0X2xvb3BzWGlzWDFYZGVkdXBfdmFsdWVzIiwKKyAgICAgICAgcmVhc29uID0gIkxvY2FsIHRyYXZlcnNhbHMgbWF5IG5vdCB0cmF2ZXJzZSBwYXN0IHRoZSBsb2NhbCBzdGFyLWdyYXBoIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuYnJhbmNoLlJlcGVhdFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WWDZYX3JlcGVhdFhhX2JvdGhYY3JlYXRlZFhfc2ltcGxlUGF0aFhfZW1pdFhyZXBlYXRYYl9ib3RoWGtub3dzWFhfdW50aWxYbG9vcHNYYlhfYXNYYl93aGVyZVhsb29wc1hhWF9hc1hiWF9oYXNYbmFtZV92YWRhc1hYX2RlZHVwX25hbWUiLAorICAgICAgICByZWFzb24gPSAiTG9jYWwgdHJhdmVyc2FscyBtYXkgbm90IHRyYXZlcnNlIHBhc3QgdGhlIGxvY2FsIHN0YXItZ3JhcGggb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGhQcm92aWRlci5EZXNjcmlwdG9yKGNvbXB1dGVyID0gVGlua2VyR3JhcGhDb21wdXRlci5jbGFzcykKK3B1YmxpYyBjbGFzcyBHcmFwaEJpbmFyeVJlbW90ZUdyYXBoQ29tcHV0ZXJQcm92aWRlciBleHRlbmRzIEFic3RyYWN0UmVtb3RlR3JhcGhQcm92aWRlciB7CisKKyAgICBwdWJsaWMgR3JhcGhCaW5hcnlSZW1vdGVHcmFwaENvbXB1dGVyUHJvdmlkZXIoKSB7CisgICAgICAgIHN1cGVyKGNyZWF0ZUNsdXN0ZXJCdWlsZGVyKFNlcmlhbGl6ZXJzLkdSQVBIQklOQVJZX1YxRDApLmNyZWF0ZSgpLCB0cnVlKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3JlbW90ZS9HcmFwaEJpbmFyeVJlbW90ZUdyYXBoUHJvdmlkZXIuamF2YSBiL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvcmVtb3RlL0dyYXBoQmluYXJ5UmVtb3RlR3JhcGhQcm92aWRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1ZjhmODgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3JlbW90ZS9HcmFwaEJpbmFyeVJlbW90ZUdyYXBoUHJvdmlkZXIuamF2YQpAQCAtMCwwICsxLDMwIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIucmVtb3RlOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLlNlcmlhbGl6ZXJzOworCisvKioKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqLworcHVibGljIGNsYXNzIEdyYXBoQmluYXJ5UmVtb3RlR3JhcGhQcm92aWRlciBleHRlbmRzIEFic3RyYWN0UmVtb3RlR3JhcGhQcm92aWRlciBpbXBsZW1lbnRzIEF1dG9DbG9zZWFibGUgeworICAgIHB1YmxpYyBHcmFwaEJpbmFyeVJlbW90ZUdyYXBoUHJvdmlkZXIoKSB7CisgICAgICAgIHN1cGVyKGNyZWF0ZUNsdXN0ZXJCdWlsZGVyKFNlcmlhbGl6ZXJzLkdSQVBIQklOQVJZX1YxRDApLmNyZWF0ZSgpKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3JlbW90ZS9HcmFwaFNPTlJlbW90ZUdyYXBoQ29tcHV0ZXJQcm92aWRlci5qYXZhIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9yZW1vdGUvR3JhcGhTT05SZW1vdGVHcmFwaENvbXB1dGVyUHJvdmlkZXIuamF2YQppbmRleCA4YjY2OWM5Li43YjgwYzJjIDEwMDY0NAotLS0gYS9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3JlbW90ZS9HcmFwaFNPTlJlbW90ZUdyYXBoQ29tcHV0ZXJQcm92aWRlci5qYXZhCisrKyBiL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvcmVtb3RlL0dyYXBoU09OUmVtb3RlR3JhcGhDb21wdXRlclByb3ZpZGVyLmphdmEKQEAgLTIwLDE3ICsyMCwxMCBAQAogcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5yZW1vdGU7CiAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkdyYXBoUHJvdmlkZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5UZXN0SGVscGVyOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLkNsdXN0ZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLlNlcmlhbGl6ZXJzOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5Db21wdXRlcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MucmVtb3RlLlJlbW90ZUdyYXBoOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkdyYXBoVHJhdmVyc2FsU291cmNlOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkdyYXBoOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGgucHJvY2Vzcy5jb21wdXRlci5UaW5rZXJHcmFwaENvbXB1dGVyOwogCi1pbXBvcnQgamF2YS51dGlsLlJhbmRvbTsKLQogLyoqCiAgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCiAgKi8KQEAgLTM1MCw2ICszNDMsMzAgQEAKICAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlByb3BlcnRpZXNUZXN0IiwKICAgICAgICAgbWV0aG9kID0gImdfaW5qZWN0WGdfVlgxWF9wcm9wZXJ0aWVzWG5hbWVYX25leHRYX3ZhbHVlIiwKICAgICAgICAgcmVhc29uID0gIk5lZWRzIGludmVzdGlnYXRpb24iKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlJlYWRUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gIioiLAorICAgICAgICByZWFzb24gPSAiVGhlIGlvKCkgc3RlcCBpcyBub3Qgc3VwcG9ydGVkIGdlbmVyYWxseSBieSBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5Xcml0ZVRlc3QiLAorICAgICAgICBtZXRob2QgPSAiKiIsCisgICAgICAgIHJlYXNvbiA9ICJUaGUgaW8oKSBzdGVwIGlzIG5vdCBzdXBwb3J0ZWQgZ2VuZXJhbGx5IGJ5IEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuYnJhbmNoLlJlcGVhdFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WX3JlcGVhdFhvdXRfcmVwZWF0WG91dFhfdGltZXNYMVhYX3RpbWVzWDFYX2xpbWl0WDFYX3BhdGhfYnlfbmFtZSIsCisgICAgICAgIHJlYXNvbiA9ICJJdCBpcyBub3QgcG9zc2libGUgdG8gYWNjZXNzIG1vcmUgdGhhbiBhIHBhdGggZWxlbWVudCdzIGlkIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuYnJhbmNoLlJlcGVhdFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WX3JlcGVhdFhvdXRYa25vd3NYWF91bnRpbFhyZXBlYXRYb3V0WGNyZWF0ZWRYWF9lbWl0WGhhc1huYW1lX2xvcFhYWF9wYXRoX2J5WG5hbWVYIiwKKyAgICAgICAgcmVhc29uID0gIkl0IGlzIG5vdCBwb3NzaWJsZSB0byBhY2Nlc3MgbW9yZSB0aGFuIGEgcGF0aCBlbGVtZW50J3MgaWQgb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5icmFuY2guUmVwZWF0VGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZYM1hfcmVwZWF0WGJvdGhYX2NyZWF0ZWRYWF91bnRpbFhsb29wc19pc180MFhYZW1pdF9yZXBlYXRYaW5fa25vd3NYWF9lbWl0X2xvb3BzWGlzWDFYZGVkdXBfdmFsdWVzIiwKKyAgICAgICAgcmVhc29uID0gIkxvY2FsIHRyYXZlcnNhbHMgbWF5IG5vdCB0cmF2ZXJzZSBwYXN0IHRoZSBsb2NhbCBzdGFyLWdyYXBoIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuYnJhbmNoLlJlcGVhdFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WWDZYX3JlcGVhdFhhX2JvdGhYY3JlYXRlZFhfc2ltcGxlUGF0aFhfZW1pdFhyZXBlYXRYYl9ib3RoWGtub3dzWFhfdW50aWxYbG9vcHNYYlhfYXNYYl93aGVyZVhsb29wc1hhWF9hc1hiWF9oYXNYbmFtZV92YWRhc1hYX2RlZHVwX25hbWUiLAorICAgICAgICByZWFzb24gPSAiTG9jYWwgdHJhdmVyc2FscyBtYXkgbm90IHRyYXZlcnNlIHBhc3QgdGhlIGxvY2FsIHN0YXItZ3JhcGggb24gR3JhcGhDb21wdXRlciIpCiBAR3JhcGhQcm92aWRlci5EZXNjcmlwdG9yKGNvbXB1dGVyID0gVGlua2VyR3JhcGhDb21wdXRlci5jbGFzcykKIHB1YmxpYyBjbGFzcyBHcmFwaFNPTlJlbW90ZUdyYXBoQ29tcHV0ZXJQcm92aWRlciBleHRlbmRzIEFic3RyYWN0UmVtb3RlR3JhcGhQcm92aWRlciB7CiAgICAgcHVibGljIEdyYXBoU09OUmVtb3RlR3JhcGhDb21wdXRlclByb3ZpZGVyKCkgewpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9yZW1vdGUvR3J5b1JlbW90ZUdyYXBoQ29tcHV0ZXJQcm92aWRlci5qYXZhIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9yZW1vdGUvR3J5b1JlbW90ZUdyYXBoQ29tcHV0ZXJQcm92aWRlci5qYXZhCmluZGV4IDA3NTgzMzYuLjEyNjkzMjIgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvcmVtb3RlL0dyeW9SZW1vdGVHcmFwaENvbXB1dGVyUHJvdmlkZXIuamF2YQorKysgYi9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZHJpdmVyL3JlbW90ZS9HcnlvUmVtb3RlR3JhcGhDb21wdXRlclByb3ZpZGVyLmphdmEKQEAgLTIwLDE3ICsyMCwxMCBAQAogcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5yZW1vdGU7CiAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkdyYXBoUHJvdmlkZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5UZXN0SGVscGVyOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLkNsdXN0ZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLlNlcmlhbGl6ZXJzOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5Db21wdXRlcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MucmVtb3RlLlJlbW90ZUdyYXBoOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkdyYXBoVHJhdmVyc2FsU291cmNlOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkdyYXBoOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGgucHJvY2Vzcy5jb21wdXRlci5UaW5rZXJHcmFwaENvbXB1dGVyOwogCi1pbXBvcnQgamF2YS51dGlsLlJhbmRvbTsKLQogLyoqCiAgKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKICAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKQEAgLTM1MSw2ICszNDQsMzAgQEAKICAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlByb3BlcnRpZXNUZXN0IiwKICAgICAgICAgbWV0aG9kID0gImdfaW5qZWN0WGdfVlgxWF9wcm9wZXJ0aWVzWG5hbWVYX25leHRYX3ZhbHVlIiwKICAgICAgICAgcmVhc29uID0gIk5lZWRzIGludmVzdGlnYXRpb24iKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlJlYWRUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gIioiLAorICAgICAgICByZWFzb24gPSAiVGhlIGlvKCkgc3RlcCBpcyBub3Qgc3VwcG9ydGVkIGdlbmVyYWxseSBieSBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5Xcml0ZVRlc3QiLAorICAgICAgICBtZXRob2QgPSAiKiIsCisgICAgICAgIHJlYXNvbiA9ICJUaGUgaW8oKSBzdGVwIGlzIG5vdCBzdXBwb3J0ZWQgZ2VuZXJhbGx5IGJ5IEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuYnJhbmNoLlJlcGVhdFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WX3JlcGVhdFhvdXRfcmVwZWF0WG91dFhfdGltZXNYMVhYX3RpbWVzWDFYX2xpbWl0WDFYX3BhdGhfYnlfbmFtZSIsCisgICAgICAgIHJlYXNvbiA9ICJJdCBpcyBub3QgcG9zc2libGUgdG8gYWNjZXNzIG1vcmUgdGhhbiBhIHBhdGggZWxlbWVudCdzIGlkIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuYnJhbmNoLlJlcGVhdFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WX3JlcGVhdFhvdXRYa25vd3NYWF91bnRpbFhyZXBlYXRYb3V0WGNyZWF0ZWRYWF9lbWl0WGhhc1huYW1lX2xvcFhYWF9wYXRoX2J5WG5hbWVYIiwKKyAgICAgICAgcmVhc29uID0gIkl0IGlzIG5vdCBwb3NzaWJsZSB0byBhY2Nlc3MgbW9yZSB0aGFuIGEgcGF0aCBlbGVtZW50J3MgaWQgb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5icmFuY2guUmVwZWF0VGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZYM1hfcmVwZWF0WGJvdGhYX2NyZWF0ZWRYWF91bnRpbFhsb29wc19pc180MFhYZW1pdF9yZXBlYXRYaW5fa25vd3NYWF9lbWl0X2xvb3BzWGlzWDFYZGVkdXBfdmFsdWVzIiwKKyAgICAgICAgcmVhc29uID0gIkxvY2FsIHRyYXZlcnNhbHMgbWF5IG5vdCB0cmF2ZXJzZSBwYXN0IHRoZSBsb2NhbCBzdGFyLWdyYXBoIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuYnJhbmNoLlJlcGVhdFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WWDZYX3JlcGVhdFhhX2JvdGhYY3JlYXRlZFhfc2ltcGxlUGF0aFhfZW1pdFhyZXBlYXRYYl9ib3RoWGtub3dzWFhfdW50aWxYbG9vcHNYYlhfYXNYYl93aGVyZVhsb29wc1hhWF9hc1hiWF9oYXNYbmFtZV92YWRhc1hYX2RlZHVwX25hbWUiLAorICAgICAgICByZWFzb24gPSAiTG9jYWwgdHJhdmVyc2FscyBtYXkgbm90IHRyYXZlcnNlIHBhc3QgdGhlIGxvY2FsIHN0YXItZ3JhcGggb24gR3JhcGhDb21wdXRlciIpCiBAR3JhcGhQcm92aWRlci5EZXNjcmlwdG9yKGNvbXB1dGVyID0gVGlua2VyR3JhcGhDb21wdXRlci5jbGFzcykKIHB1YmxpYyBjbGFzcyBHcnlvUmVtb3RlR3JhcGhDb21wdXRlclByb3ZpZGVyIGV4dGVuZHMgQWJzdHJhY3RSZW1vdGVHcmFwaFByb3ZpZGVyIHsKIApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvR3J5b1JlbW90ZUdyYXBoR3Jvb3Z5VHJhbnNsYXRvckNvbXB1dGVyUHJvdmlkZXIuamF2YSBiL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL0dyeW9SZW1vdGVHcmFwaEdyb292eVRyYW5zbGF0b3JDb21wdXRlclByb3ZpZGVyLmphdmEKaW5kZXggYzUzNTE2Zi4uNzdmYTVmNiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvR3J5b1JlbW90ZUdyYXBoR3Jvb3Z5VHJhbnNsYXRvckNvbXB1dGVyUHJvdmlkZXIuamF2YQorKysgYi9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9HcnlvUmVtb3RlR3JhcGhHcm9vdnlUcmFuc2xhdG9yQ29tcHV0ZXJQcm92aWRlci5qYXZhCkBAIC0yMiw3ICsyMiw3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5HcmFwaFByb3ZpZGVyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uVGVzdEhlbHBlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuQ29tcHV0ZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnJlbW90ZS5SZW1vdGVHcmFwaDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5SZW1vdGVHcmFwaDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5HcmFwaFRyYXZlcnNhbFNvdXJjZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5HcmFwaDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnByb2Nlc3MuY29tcHV0ZXIuVGlua2VyR3JhcGhDb21wdXRlcjsKQEAgLTM0Miw2ICszNDIsMzAgQEAKICAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlNlbGVjdFRlc3QiLAogICAgICAgICBtZXRob2QgPSAiZ19WX3VudGlsWG91dF9vdXRYX3JlcGVhdFhpbl9hc1hhWFhfc2VsZWN0WGFYX2J5WHRhaWxYbG9jYWxYX25hbWVYIiwKICAgICAgICAgcmVhc29uID0gIkxvY2FsIHRyYXZlcnNhbHMgbWF5IG5vdCB0cmF2ZXJzZSBwYXN0IHRoZSBsb2NhbCBzdGFyLWdyYXBoIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlJlYWRUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gIioiLAorICAgICAgICByZWFzb24gPSAiVGhlIGlvKCkgc3RlcCBpcyBub3Qgc3VwcG9ydGVkIGdlbmVyYWxseSBieSBHcmFwaENvbXB1dGVyIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5Xcml0ZVRlc3QiLAorICAgICAgICBtZXRob2QgPSAiKiIsCisgICAgICAgIHJlYXNvbiA9ICJUaGUgaW8oKSBzdGVwIGlzIG5vdCBzdXBwb3J0ZWQgZ2VuZXJhbGx5IGJ5IEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuYnJhbmNoLlJlcGVhdFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WX3JlcGVhdFhvdXRfcmVwZWF0WG91dFhfdGltZXNYMVhYX3RpbWVzWDFYX2xpbWl0WDFYX3BhdGhfYnlfbmFtZSIsCisgICAgICAgIHJlYXNvbiA9ICJJdCBpcyBub3QgcG9zc2libGUgdG8gYWNjZXNzIG1vcmUgdGhhbiBhIHBhdGggZWxlbWVudCdzIGlkIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuYnJhbmNoLlJlcGVhdFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WX3JlcGVhdFhvdXRYa25vd3NYWF91bnRpbFhyZXBlYXRYb3V0WGNyZWF0ZWRYWF9lbWl0WGhhc1huYW1lX2xvcFhYWF9wYXRoX2J5WG5hbWVYIiwKKyAgICAgICAgcmVhc29uID0gIkl0IGlzIG5vdCBwb3NzaWJsZSB0byBhY2Nlc3MgbW9yZSB0aGFuIGEgcGF0aCBlbGVtZW50J3MgaWQgb24gR3JhcGhDb21wdXRlciIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5icmFuY2guUmVwZWF0VGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICJnX1ZYM1hfcmVwZWF0WGJvdGhYX2NyZWF0ZWRYWF91bnRpbFhsb29wc19pc180MFhYZW1pdF9yZXBlYXRYaW5fa25vd3NYWF9lbWl0X2xvb3BzWGlzWDFYZGVkdXBfdmFsdWVzIiwKKyAgICAgICAgcmVhc29uID0gIkxvY2FsIHRyYXZlcnNhbHMgbWF5IG5vdCB0cmF2ZXJzZSBwYXN0IHRoZSBsb2NhbCBzdGFyLWdyYXBoIG9uIEdyYXBoQ29tcHV0ZXIiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuYnJhbmNoLlJlcGVhdFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiZ19WWDZYX3JlcGVhdFhhX2JvdGhYY3JlYXRlZFhfc2ltcGxlUGF0aFhfZW1pdFhyZXBlYXRYYl9ib3RoWGtub3dzWFhfdW50aWxYbG9vcHNYYlhfYXNYYl93aGVyZVhsb29wc1hhWF9hc1hiWF9oYXNYbmFtZV92YWRhc1hYX2RlZHVwX25hbWUiLAorICAgICAgICByZWFzb24gPSAiTG9jYWwgdHJhdmVyc2FscyBtYXkgbm90IHRyYXZlcnNlIHBhc3QgdGhlIGxvY2FsIHN0YXItZ3JhcGggb24gR3JhcGhDb21wdXRlciIpCiBAR3JhcGhQcm92aWRlci5EZXNjcmlwdG9yKGNvbXB1dGVyID0gVGlua2VyR3JhcGhDb21wdXRlci5jbGFzcykKIHB1YmxpYyBjbGFzcyBHcnlvUmVtb3RlR3JhcGhHcm9vdnlUcmFuc2xhdG9yQ29tcHV0ZXJQcm92aWRlciBleHRlbmRzIEdyeW9SZW1vdGVHcmFwaEdyb292eVRyYW5zbGF0b3JQcm92aWRlciB7CiAgICAgcHJpdmF0ZSBmaW5hbCBpbnQgQVZBSUxBQkxFX1BST0NFU1NPUlMgPSBSdW50aW1lLmdldFJ1bnRpbWUoKS5hdmFpbGFibGVQcm9jZXNzb3JzKCk7CmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9SZW1vdGVHcmFwaEdyb292eVRyYW5zbGF0b3JQcm9jZXNzQ29tcHV0ZXJUZXN0LmphdmEgYi9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9SZW1vdGVHcmFwaEdyb292eVRyYW5zbGF0b3JQcm9jZXNzQ29tcHV0ZXJUZXN0LmphdmEKaW5kZXggMzZjZDhmNS4uNzIzMjFhNCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvUmVtb3RlR3JhcGhHcm9vdnlUcmFuc2xhdG9yUHJvY2Vzc0NvbXB1dGVyVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL1JlbW90ZUdyYXBoR3Jvb3Z5VHJhbnNsYXRvclByb2Nlc3NDb21wdXRlclRlc3QuamF2YQpAQCAtMjEsNyArMjEsNyBAQAogCiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5HcmFwaFByb3ZpZGVyQ2xhc3M7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLlByb2Nlc3NDb21wdXRlclN1aXRlOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5yZW1vdGUuUmVtb3RlR3JhcGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuUmVtb3RlR3JhcGg7CiBpbXBvcnQgb3JnLmp1bml0LnJ1bm5lci5SdW5XaXRoOwogCiAvKioKZGlmZiAtLWdpdCBhL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL1JlbW90ZUdyYXBoR3Jvb3Z5VHJhbnNsYXRvclByb2Nlc3NTdGFuZGFyZFRlc3QuamF2YSBiL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9ncm9vdnkvanNyMjIzL1JlbW90ZUdyYXBoR3Jvb3Z5VHJhbnNsYXRvclByb2Nlc3NTdGFuZGFyZFRlc3QuamF2YQppbmRleCA4N2ViMzc1Li45YjE4NTZhIDEwMDY0NAotLS0gYS9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vZ3Jvb3Z5L2pzcjIyMy9SZW1vdGVHcmFwaEdyb292eVRyYW5zbGF0b3JQcm9jZXNzU3RhbmRhcmRUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2dyb292eS9qc3IyMjMvUmVtb3RlR3JhcGhHcm9vdnlUcmFuc2xhdG9yUHJvY2Vzc1N0YW5kYXJkVGVzdC5qYXZhCkBAIC0yMSw3ICsyMSw3IEBACiAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkdyYXBoUHJvdmlkZXJDbGFzczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuUHJvY2Vzc1N0YW5kYXJkU3VpdGU7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnJlbW90ZS5SZW1vdGVHcmFwaDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5SZW1vdGVHcmFwaDsKIGltcG9ydCBvcmcuanVuaXQucnVubmVyLlJ1bldpdGg7CiAKIC8qKgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvcmVtb3RlL0dyYXBoQmluYXJ5UmVtb3RlR3JhcGhQcm9jZXNzQ29tcHV0ZXJUZXN0LmphdmEgYi9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9yZW1vdGUvR3JhcGhCaW5hcnlSZW1vdGVHcmFwaFByb2Nlc3NDb21wdXRlclRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MGM0MmY1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvcmVtb3RlL0dyYXBoQmluYXJ5UmVtb3RlR3JhcGhQcm9jZXNzQ29tcHV0ZXJUZXN0LmphdmEKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiAgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MucmVtb3RlOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5HcmFwaFByb3ZpZGVyQ2xhc3M7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIucmVtb3RlLkdyYXBoQmluYXJ5UmVtb3RlR3JhcGhDb21wdXRlclByb3ZpZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5Qcm9jZXNzQ29tcHV0ZXJTdWl0ZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5SZW1vdGVHcmFwaDsKK2ltcG9ydCBvcmcuanVuaXQucnVubmVyLlJ1bldpdGg7CisKKy8qKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitAUnVuV2l0aChQcm9jZXNzQ29tcHV0ZXJTdWl0ZS5jbGFzcykKK0BHcmFwaFByb3ZpZGVyQ2xhc3MocHJvdmlkZXIgPSBHcmFwaEJpbmFyeVJlbW90ZUdyYXBoQ29tcHV0ZXJQcm92aWRlci5jbGFzcywgZ3JhcGggPSBSZW1vdGVHcmFwaC5jbGFzcykKK3B1YmxpYyBjbGFzcyBHcmFwaEJpbmFyeVJlbW90ZUdyYXBoUHJvY2Vzc0NvbXB1dGVyVGVzdCB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvcmVtb3RlL0dyYXBoQmluYXJ5UmVtb3RlR3JhcGhQcm9jZXNzU3RhbmRhcmRUZXN0LmphdmEgYi9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9yZW1vdGUvR3JhcGhCaW5hcnlSZW1vdGVHcmFwaFByb2Nlc3NTdGFuZGFyZFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MmIxZDIxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvcmVtb3RlL0dyYXBoQmluYXJ5UmVtb3RlR3JhcGhQcm9jZXNzU3RhbmRhcmRUZXN0LmphdmEKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiAgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnJlbW90ZTsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uR3JhcGhQcm92aWRlckNsYXNzOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnJlbW90ZS5HcmFwaEJpbmFyeVJlbW90ZUdyYXBoUHJvdmlkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLlByb2Nlc3NTdGFuZGFyZFN1aXRlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlJlbW90ZUdyYXBoOworaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXIuUnVuV2l0aDsKKworLyoqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK0BSdW5XaXRoKFByb2Nlc3NTdGFuZGFyZFN1aXRlLmNsYXNzKQorQEdyYXBoUHJvdmlkZXJDbGFzcyhwcm92aWRlciA9IEdyYXBoQmluYXJ5UmVtb3RlR3JhcGhQcm92aWRlci5jbGFzcywgZ3JhcGggPSBSZW1vdGVHcmFwaC5jbGFzcykKK3B1YmxpYyBjbGFzcyBHcmFwaEJpbmFyeVJlbW90ZUdyYXBoUHJvY2Vzc1N0YW5kYXJkVGVzdCB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvcmVtb3RlL0dyYXBoU09OUmVtb3RlR3JhcGhQcm9jZXNzQ29tcHV0ZXJUZXN0LmphdmEgYi9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9yZW1vdGUvR3JhcGhTT05SZW1vdGVHcmFwaFByb2Nlc3NDb21wdXRlclRlc3QuamF2YQppbmRleCBlOTdhNDc2Li44ZDYwMTNiIDEwMDY0NAotLS0gYS9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9yZW1vdGUvR3JhcGhTT05SZW1vdGVHcmFwaFByb2Nlc3NDb21wdXRlclRlc3QuamF2YQorKysgYi9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9yZW1vdGUvR3JhcGhTT05SZW1vdGVHcmFwaFByb2Nlc3NDb21wdXRlclRlc3QuamF2YQpAQCAtMjIsNiArMjIsNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uR3JhcGhQcm92aWRlckNsYXNzOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnJlbW90ZS5HcmFwaFNPTlJlbW90ZUdyYXBoQ29tcHV0ZXJQcm92aWRlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuUHJvY2Vzc0NvbXB1dGVyU3VpdGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuUmVtb3RlR3JhcGg7CiBpbXBvcnQgb3JnLmp1bml0LnJ1bm5lci5SdW5XaXRoOwogCiAvKioKZGlmZiAtLWdpdCBhL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3JlbW90ZS9HcmFwaFNPTlJlbW90ZUdyYXBoUHJvY2Vzc1N0YW5kYXJkVGVzdC5qYXZhIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvcmVtb3RlL0dyYXBoU09OUmVtb3RlR3JhcGhQcm9jZXNzU3RhbmRhcmRUZXN0LmphdmEKaW5kZXggN2YzZjlmMS4uYzFkNDI5YyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvcmVtb3RlL0dyYXBoU09OUmVtb3RlR3JhcGhQcm9jZXNzU3RhbmRhcmRUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvcmVtb3RlL0dyYXBoU09OUmVtb3RlR3JhcGhQcm9jZXNzU3RhbmRhcmRUZXN0LmphdmEKQEAgLTIxLDYgKzIxLDcgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkdyYXBoUHJvdmlkZXJDbGFzczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5yZW1vdGUuR3JhcGhTT05SZW1vdGVHcmFwaFByb3ZpZGVyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5Qcm9jZXNzU3RhbmRhcmRTdWl0ZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5SZW1vdGVHcmFwaDsKIGltcG9ydCBvcmcuanVuaXQucnVubmVyLlJ1bldpdGg7CiAKIC8qKgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvcmVtb3RlL0dyeW9SZW1vdGVHcmFwaFByb2Nlc3NDb21wdXRlclRlc3QuamF2YSBiL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3JlbW90ZS9HcnlvUmVtb3RlR3JhcGhQcm9jZXNzQ29tcHV0ZXJUZXN0LmphdmEKaW5kZXggMzYzMTQ5MC4uY2ZlZTM4ZiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvcmVtb3RlL0dyeW9SZW1vdGVHcmFwaFByb2Nlc3NDb21wdXRlclRlc3QuamF2YQorKysgYi9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9yZW1vdGUvR3J5b1JlbW90ZUdyYXBoUHJvY2Vzc0NvbXB1dGVyVGVzdC5qYXZhCkBAIC0yMiw2ICsyMiw3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5HcmFwaFByb3ZpZGVyQ2xhc3M7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIucmVtb3RlLkdyeW9SZW1vdGVHcmFwaENvbXB1dGVyUHJvdmlkZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLlByb2Nlc3NDb21wdXRlclN1aXRlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlJlbW90ZUdyYXBoOwogaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXIuUnVuV2l0aDsKIAogLyoqCmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9yZW1vdGUvR3J5b1JlbW90ZUdyYXBoUHJvY2Vzc1N0YW5kYXJkVGVzdC5qYXZhIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvcmVtb3RlL0dyeW9SZW1vdGVHcmFwaFByb2Nlc3NTdGFuZGFyZFRlc3QuamF2YQppbmRleCBkNDBjMjY4Li44N2Y0YjZmIDEwMDY0NAotLS0gYS9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9yZW1vdGUvR3J5b1JlbW90ZUdyYXBoUHJvY2Vzc1N0YW5kYXJkVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3JlbW90ZS9HcnlvUmVtb3RlR3JhcGhQcm9jZXNzU3RhbmRhcmRUZXN0LmphdmEKQEAgLTIxLDYgKzIxLDcgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkdyYXBoUHJvdmlkZXJDbGFzczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuUHJvY2Vzc1N0YW5kYXJkU3VpdGU7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIucmVtb3RlLkdyeW9SZW1vdGVHcmFwaFByb3ZpZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlJlbW90ZUdyYXBoOwogaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXIuUnVuV2l0aDsKIAogLyoqCmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL0dyZW1saW5Ecml2ZXJJbnRlZ3JhdGVUZXN0LmphdmEgYi9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL0dyZW1saW5Ecml2ZXJJbnRlZ3JhdGVUZXN0LmphdmEKaW5kZXggOTc0NGY3OS4uODZhYzgwOSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9HcmVtbGluRHJpdmVySW50ZWdyYXRlVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvR3JlbWxpbkRyaXZlckludGVncmF0ZVRlc3QuamF2YQpAQCAtMjQsMjAgKzI0LDI4IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuQ2hhbm5lbGl6ZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuQ2xpZW50OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLkNsdXN0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuUmVxdWVzdE9wdGlvbnM7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuUmVzdWx0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLlJlc3VsdFNldDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5Ub2tlbnM7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuZXhjZXB0aW9uLlJlc3BvbnNlRXhjZXB0aW9uOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLmhhbmRsZXIuV2ViU29ja2V0Q2xpZW50SGFuZGxlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5tZXNzYWdlLlJlcXVlc3RNZXNzYWdlOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLm1lc3NhZ2UuUmVzcG9uc2VTdGF0dXNDb2RlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnJlbW90ZS5Ecml2ZXJSZW1vdGVDb25uZWN0aW9uOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcnlvTWVzc2FnZVNlcmlhbGl6ZXJWM2QwOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5Kc29uQnVpbGRlckdyeW9TZXJpYWxpemVyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcnlvTWVzc2FnZVNlcmlhbGl6ZXJWMWQwOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5TZXJpYWxpemVyczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmpzcjIyMy5TY3JpcHRGaWxlR3JlbWxpblBsdWdpbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLkFub255bW91c1RyYXZlcnNhbFNvdXJjZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLkJ5dGVjb2RlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkdyYXBoVHJhdmVyc2FsU291cmNlOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc2VydmVyLmNoYW5uZWwuTmlvQ2hhbm5lbGl6ZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLlN0b3JhZ2U7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5kZXRhY2hlZC5EZXRhY2hlZFZlcnRleDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLnJlZmVyZW5jZS5SZWZlcmVuY2VWZXJ0ZXg7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi50aW5rZXJncmFwaC5zdHJ1Y3R1cmUuVGlua2VyRmFjdG9yeTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnV0aWwuTG9nNGpSZWNvcmRpbmdBcHBlbmRlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnV0aWwuVGltZVV0aWw7CkBAIC00OCw2ICs1Niw4IEBACiBpbXBvcnQgb3JnLmp1bml0LkFmdGVyOwogaW1wb3J0IG9yZy5qdW5pdC5CZWZvcmU7CiBpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CitpbXBvcnQgb3JnLm1vY2tpdG8uQXJndW1lbnRDYXB0b3I7CitpbXBvcnQgb3JnLm1vY2tpdG8uTW9ja2l0bzsKIGltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOwogaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXJGYWN0b3J5OwogCkBAIC02MSw2ICs3MSw3IEBACiBpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwogaW1wb3J0IGphdmEudXRpbC5MaXN0OwogaW1wb3J0IGphdmEudXRpbC5NYXA7CitpbXBvcnQgamF2YS51dGlsLlVVSUQ7CiBpbXBvcnQgamF2YS51dGlsLmNvbmN1cnJlbnQuQ29tcGxldGFibGVGdXR1cmU7CiBpbXBvcnQgamF2YS51dGlsLmNvbmN1cnJlbnQuQ29uY3VycmVudEhhc2hNYXA7CiBpbXBvcnQgamF2YS51dGlsLmNvbmN1cnJlbnQuQ291bnREb3duTGF0Y2g7CkBAIC04OCw2ICs5OSw3IEBACiBpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuZmFpbDsKIGltcG9ydCBzdGF0aWMgb3JnLmhhbWNyZXN0LkNvcmVNYXRjaGVycy5pczsKIGltcG9ydCBzdGF0aWMgb3JnLmhhbWNyZXN0LmNvcmUuU3RyaW5nU3RhcnRzV2l0aC5zdGFydHNXaXRoOworaW1wb3J0IHN0YXRpYyBvcmcubW9ja2l0by5Nb2NraXRvLnZlcmlmeTsKIAogLyoqCiAgKiBJbnRlZ3JhdGlvbiB0ZXN0cyBmb3IgZ3JlbWxpbi1kcml2ZXIgY29uZmlndXJhdGlvbnMgYW5kIHNldHRpbmdzLgpAQCAtMTgxLDYgKzE5Myw5IEBACiAgICAgICAgICAgICBjYXNlICJzaG91bGRQcm9jZXNzRXZhbEludGVycnVwdGlvbiI6CiAgICAgICAgICAgICAgICAgc2V0dGluZ3MuZXZhbHVhdGlvblRpbWVvdXQgPSAxNTAwOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAic2hvdWxkUHJvY2Vzc0V2YWxUaW1lb3V0T3ZlcnJpZGUiOgorICAgICAgICAgICAgICAgIHNldHRpbmdzLnNjcmlwdEV2YWx1YXRpb25UaW1lb3V0ID0gMTUwMDA7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gc2V0dGluZ3M7CkBAIC0yMTEsNiArMjI2LDIzIEBACiAgICAgfQogCiAgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRQcm9jZXNzRXZhbFRpbWVvdXRPdmVycmlkZSgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBmaW5hbCBDbHVzdGVyIGNsdXN0ZXIgPSBUZXN0Q2xpZW50RmFjdG9yeS5vcGVuKCk7CisgICAgICAgIGZpbmFsIENsaWVudCBjbGllbnQgPSBjbHVzdGVyLmNvbm5lY3QoKTsKKyAgICAgICAgZmluYWwgUmVxdWVzdE9wdGlvbnMgb3B0aW9ucyA9IFJlcXVlc3RPcHRpb25zLmJ1aWxkKCkudGltZW91dCg1MDApLmNyZWF0ZSgpOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjbGllbnQuc3VibWl0KCJUaHJlYWQuc2xlZXAoNTAwMCk7J2RvbmUnIiwgb3B0aW9ucykuYWxsKCkuZ2V0KCk7CisgICAgICAgICAgICBmYWlsKCJTaG91bGQgaGF2ZSB0aW1lZCBvdXQiKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICBmaW5hbCBSZXNwb25zZUV4Y2VwdGlvbiByZSA9IChSZXNwb25zZUV4Y2VwdGlvbikgZXguZ2V0Q2F1c2UoKTsKKyAgICAgICAgICAgIGFzc2VydEVxdWFscyhSZXNwb25zZVN0YXR1c0NvZGUuU0VSVkVSX0VSUk9SX1RJTUVPVVQsIHJlLmdldFJlc3BvbnNlU3RhdHVzQ29kZSgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGNsdXN0ZXIuY2xvc2UoKTsKKyAgICB9CisKKyAgICBAVGVzdAogICAgIHB1YmxpYyB2b2lkIHNob3VsZFByb2Nlc3NUcmF2ZXJzYWxJbnRlcnJ1cHRpb24oKSB0aHJvd3MgRXhjZXB0aW9uIHsKICAgICAgICAgZmluYWwgQ2x1c3RlciBjbHVzdGVyID0gVGVzdENsaWVudEZhY3Rvcnkub3BlbigpOwogICAgICAgICBmaW5hbCBDbGllbnQgY2xpZW50ID0gY2x1c3Rlci5jb25uZWN0KCk7CkBAIC00MTcsNyArNDQ5LDcgQEAKICAgICAgICAgICAgICAgICAiICAgIHYgPSBncmFwaC5hZGRWZXJ0ZXgoKTtcbiIgKwogICAgICAgICAgICAgICAgICIgICAgdi5wcm9wZXJ0eShcImlpXCIsIGlpKTtcbiIgKwogICAgICAgICAgICAgICAgICIgICAgdi5wcm9wZXJ0eShcInNpblwiLCBNYXRoLnNpbihpaS81LjApKTtcbiIgKwotICAgICAgICAgICAgICAgICIgICAgVmVydGV4IHUgPSBnLlYoaWRzLmdldChyYW5kLm5leHRJbnQoaWRzLnNpemUoKSkpKS5uZXh0KCk7XG4iICsKKyAgICAgICAgICAgICAgICAiICAgIFZlcnRleCB1ID0gZ3JhcGgudmVydGljZXMoaWRzLmdldChyYW5kLm5leHRJbnQoaWRzLnNpemUoKSkpKS5uZXh0KCk7XG4iICsKICAgICAgICAgICAgICAgICAiICAgIHYuYWRkRWRnZShcImxpbmtlZFwiLCB1KTtcbiIgKwogICAgICAgICAgICAgICAgICIgICAgaWRzLmFkZCh1LmlkKCkpO1xuIiArCiAgICAgICAgICAgICAgICAgIiAgICBpZHMuYWRkKHYuaWQoKSk7XG4iICsKQEAgLTkzOSw2ICs5NzEsMjEgQEAKICAgICB9CiAKICAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZFdvcmtXaXRoR3JhcGhCaW5hcnlWMVNlcmlhbGl6YXRpb24oKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgQ2x1c3RlciBjbHVzdGVyID0gVGVzdENsaWVudEZhY3RvcnkuYnVpbGQoKS5zZXJpYWxpemVyKFNlcmlhbGl6ZXJzLkdSQVBIQklOQVJZX1YxRDApLmNyZWF0ZSgpOworICAgICAgICBmaW5hbCBDbGllbnQgY2xpZW50ID0gY2x1c3Rlci5jb25uZWN0KCk7CisKKyAgICAgICAgZmluYWwgTGlzdDxSZXN1bHQ+IHIgPSBjbGllbnQuc3VibWl0KCJUaW5rZXJGYWN0b3J5LmNyZWF0ZU1vZGVybigpLnRyYXZlcnNhbCgpLlYoMSkiKS5hbGwoKS5qb2luKCk7CisgICAgICAgIGFzc2VydEVxdWFscygxLCByLnNpemUoKSk7CisKKyAgICAgICAgZmluYWwgVmVydGV4IHYgPSByLmdldCgwKS5nZXQoUmVmZXJlbmNlVmVydGV4LmNsYXNzKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIHYuaWQoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygicGVyc29uIiwgdi5sYWJlbCgpKTsKKworICAgICAgICBjbHVzdGVyLmNsb3NlKCk7CisgICAgfQorCisgICAgQFRlc3QKICAgICBwdWJsaWMgdm9pZCBzaG91bGRGYWlsQ2xpZW50U2lkZVdpdGhUb29MYXJnZUFSZXNwb25zZSgpIHsKICAgICAgICAgZmluYWwgQ2x1c3RlciBjbHVzdGVyID0gVGVzdENsaWVudEZhY3RvcnkuYnVpbGQoKS5tYXhDb250ZW50TGVuZ3RoKDEpLmNyZWF0ZSgpOwogICAgICAgICBmaW5hbCBDbGllbnQgY2xpZW50ID0gY2x1c3Rlci5jb25uZWN0KCk7CkBAIC0xMTMzLDE0ICsxMTgwLDEyIEBACiAKICAgICAgICAgLy8gdGhpcyBsaW5lIGlzIGltcG9ydGFudCBiZWNhdXNlIGl0IHRlc3RzIEdyYXBoVHJhdmVyc2FsIHdoaWNoIGhhcyBhIGNlcnRhaW4gdHJhbnNhY3Rpb25hbCBwYXRoCiAgICAgICAgIGZpbmFsIFZlcnRleCB2ZXJ0ZXhSZXF1ZXN0MSA9IGNsaWVudC5zdWJtaXQoImcuYWRkVigpLnByb3BlcnR5KFwibmFtZVwiLFwic3RlcGhlblwiKSIpLmFsbCgpLmdldCgpLmdldCgwKS5nZXRWZXJ0ZXgoKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKCJzdGVwaGVuIiwgdmVydGV4UmVxdWVzdDEudmFsdWVzKCJuYW1lIikubmV4dCgpKTsKIAogICAgICAgICBmaW5hbCBWZXJ0ZXggdmVydGV4UmVxdWVzdDIgPSBjbGllbnQuc3VibWl0KCJncmFwaC52ZXJ0aWNlcygpLm5leHQoKSIpLmFsbCgpLmdldCgpLmdldCgwKS5nZXRWZXJ0ZXgoKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKCJzdGVwaGVuIiwgdmVydGV4UmVxdWVzdDIudmFsdWVzKCJuYW1lIikubmV4dCgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKHZlcnRleFJlcXVlc3QxLmlkKCksIHZlcnRleFJlcXVlc3QyLmlkKCkpOwogCiAgICAgICAgIC8vIHRoaXMgbGluZSBpcyBpbXBvcnRhbnQgYmVjYXVzZSBpdCB0ZXN0cyB0aGUgb3RoZXIgdHJhbnNhY3Rpb25hbCBwYXRoCi0gICAgICAgIGZpbmFsIFZlcnRleCB2ZXJ0ZXhSZXF1ZXN0MyA9IGNsaWVudC5zdWJtaXQoImdyYXBoLmFkZFZlcnRleChcIm5hbWVcIixcIm1hcmtvXCIpIikuYWxsKCkuZ2V0KCkuZ2V0KDApLmdldFZlcnRleCgpOwotICAgICAgICBhc3NlcnRFcXVhbHMoIm1hcmtvIiwgdmVydGV4UmVxdWVzdDMudmFsdWVzKCJuYW1lIikubmV4dCgpKTsKKyAgICAgICAgY2xpZW50LnN1Ym1pdCgiZ3JhcGguYWRkVmVydGV4KFwibmFtZVwiLFwibWFya29cIikiKS5hbGwoKS5nZXQoKS5nZXQoMCkuZ2V0VmVydGV4KCk7CiAKICAgICAgICAgYXNzZXJ0RXF1YWxzKDIsIGNsaWVudC5zdWJtaXQoImcuVigpLmNvdW50KCkiKS5hbGwoKS5nZXQoKS5nZXQoMCkuZ2V0TG9uZygpKTsKIApAQCAtMTMxMywxMSArMTM1OCw2IEBACiAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoUmVzcG9uc2VTdGF0dXNDb2RlLlJFUVVFU1RfRVJST1JfSU5WQUxJRF9SRVFVRVNUX0FSR1VNRU5UUywgcmUuZ2V0UmVzcG9uc2VTdGF0dXNDb2RlKCkpOwogICAgICAgICB9CiAKLSAgICAgICAgLy8ga2VlcCB0aGUgdGVzdGluZyBoZXJlIHVudGlsICJyZWJpbmQiIGlzIGNvbXBsZXRlbHkgcmVtb3ZlZAotICAgICAgICBmaW5hbCBDbGllbnQgcmVib3VuZExlZ2FjeSA9IGNsdXN0ZXIuY29ubmVjdCgpLnJlYmluZCgiZ3JhcGgiKTsKLSAgICAgICAgZmluYWwgVmVydGV4IHZMZWdhY3kgPSByZWJvdW5kTGVnYWN5LnN1Ym1pdCgiZy5hZGRWZXJ0ZXgoJ25hbWUnLCdzdGVwaGVuJykiKS5hbGwoKS5nZXQoKS5nZXQoMCkuZ2V0VmVydGV4KCk7Ci0gICAgICAgIGFzc2VydEVxdWFscygic3RlcGhlbiIsIHZMZWdhY3kudmFsdWUoIm5hbWUiKSk7Ci0KICAgICAgICAgZmluYWwgQ2xpZW50IHJlYm91bmQgPSBjbHVzdGVyLmNvbm5lY3QoKS5hbGlhcygiZ3JhcGgiKTsKICAgICAgICAgZmluYWwgVmVydGV4IHYgPSByZWJvdW5kLnN1Ym1pdCgiZy5hZGRWZXJ0ZXgoJ25hbWUnLCdqYXNvbicpIikuYWxsKCkuZ2V0KCkuZ2V0KDApLmdldFZlcnRleCgpOwogICAgICAgICBhc3NlcnRFcXVhbHMoImphc29uIiwgdi52YWx1ZSgibmFtZSIpKTsKQEAgLTEzNDAsMTEgKzEzODAsNiBAQAogICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKFJlc3BvbnNlU3RhdHVzQ29kZS5TRVJWRVJfRVJST1JfU0NSSVBUX0VWQUxVQVRJT04sIHJlLmdldFJlc3BvbnNlU3RhdHVzQ29kZSgpKTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIGtlZXAgdGhlIHRlc3RpbmcgaGVyZSB1bnRpbCAicmViaW5kIiBpcyBjb21wbGV0ZWx5IHJlbW92ZWQKLSAgICAgICAgZmluYWwgQ2xpZW50IHJlYm91bmRMZWdhY3kgPSBjbHVzdGVyLmNvbm5lY3QoKS5yZWJpbmQoImdyYXBoIik7Ci0gICAgICAgIGZpbmFsIFZlcnRleCB2TGVnYWN5ID0gcmVib3VuZExlZ2FjeS5zdWJtaXQoImcuYWRkVmVydGV4KCduYW1lJywnc3RlcGhlbicpIikuYWxsKCkuZ2V0KCkuZ2V0KDApLmdldFZlcnRleCgpOwotICAgICAgICBhc3NlcnRFcXVhbHMoInN0ZXBoZW4iLCB2TGVnYWN5LnZhbHVlKCJuYW1lIikpOwotCiAgICAgICAgIGZpbmFsIENsaWVudCByZWJvdW5kID0gY2x1c3Rlci5jb25uZWN0KCkuYWxpYXMoImdyYXBoIik7CiAgICAgICAgIGZpbmFsIFZlcnRleCB2ID0gcmVib3VuZC5zdWJtaXQoImcuYWRkVmVydGV4KCduYW1lJywnamFzb24nKSIpLmFsbCgpLmdldCgpLmdldCgwKS5nZXRWZXJ0ZXgoKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKCJqYXNvbiIsIHYudmFsdWUoIm5hbWUiKSk7CkBAIC0xMzY3LDExICsxNDAyLDYgQEAKICAgICAgICAgICAgIGFzc2VydEVxdWFscyhSZXNwb25zZVN0YXR1c0NvZGUuU0VSVkVSX0VSUk9SX1NDUklQVF9FVkFMVUFUSU9OLCByZS5nZXRSZXNwb25zZVN0YXR1c0NvZGUoKSk7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBrZWVwIHRoZSB0ZXN0aW5nIGhlcmUgdW50aWwgInJlYmluZCIgaXMgY29tcGxldGVseSByZW1vdmVkCi0gICAgICAgIGZpbmFsIENsaWVudCBjbGllbnRMZWdhY3kgPSBjbGllbnQucmViaW5kKCJnMSIpOwotICAgICAgICBmaW5hbCBWZXJ0ZXggdkxlZ2FjeSA9IGNsaWVudExlZ2FjeS5zdWJtaXQoImcuYWRkVigpLnByb3BlcnR5KCduYW1lJywnc3RlcGhlbicpIikuYWxsKCkuZ2V0KCkuZ2V0KDApLmdldFZlcnRleCgpOwotICAgICAgICBhc3NlcnRFcXVhbHMoInN0ZXBoZW4iLCB2TGVnYWN5LnZhbHVlKCJuYW1lIikpOwotCiAgICAgICAgIGZpbmFsIENsaWVudCBjbGllbnRBbGlhc2VkID0gY2xpZW50LmFsaWFzKCJnMSIpOwogICAgICAgICBmaW5hbCBWZXJ0ZXggdiA9IGNsaWVudEFsaWFzZWQuc3VibWl0KCJnLmFkZFYoKS5wcm9wZXJ0eSgnbmFtZScsJ2phc29uJykiKS5hbGwoKS5nZXQoKS5nZXQoMCkuZ2V0VmVydGV4KCk7CiAgICAgICAgIGFzc2VydEVxdWFscygiamFzb24iLCB2LnZhbHVlKCJuYW1lIikpOwpAQCAtMTM5NCwxNCArMTQyNCw4IEBACiAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoUmVzcG9uc2VTdGF0dXNDb2RlLlNFUlZFUl9FUlJPUl9TQ1JJUFRfRVZBTFVBVElPTiwgcmUuZ2V0UmVzcG9uc2VTdGF0dXNDb2RlKCkpOwogICAgICAgICB9CiAKLSAgICAgICAgLy8ga2VlcCB0aGUgdGVzdGluZyBoZXJlIHVudGlsICJyZWJpbmQiIGlzIGNvbXBsZXRlbHkgcmVtb3ZlZAotICAgICAgICBmaW5hbCBDbGllbnQgcmVib3VuZExlZ2FjeSA9IGNsaWVudC5yZWJpbmQoImdyYXBoIik7Ci0gICAgICAgIGFzc2VydEVxdWFscygic3RlcGhlbiIsIHJlYm91bmRMZWdhY3kuc3VibWl0KCJuPSdzdGVwaGVuJyIpLmFsbCgpLmdldCgpLmdldCgwKS5nZXRTdHJpbmcoKSk7Ci0gICAgICAgIGZpbmFsIFZlcnRleCB2TGVnYWN5ID0gcmVib3VuZExlZ2FjeS5zdWJtaXQoImcuYWRkVmVydGV4KCduYW1lJyxuKSIpLmFsbCgpLmdldCgpLmdldCgwKS5nZXRWZXJ0ZXgoKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKCJzdGVwaGVuIiwgdkxlZ2FjeS52YWx1ZSgibmFtZSIpKTsKLQogICAgICAgICBmaW5hbCBDbGllbnQgYWxpYXNlZCA9IGNsaWVudC5hbGlhcygiZ3JhcGgiKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKCJqYXNvbiIsIHJlYm91bmRMZWdhY3kuc3VibWl0KCJuPSdqYXNvbiciKS5hbGwoKS5nZXQoKS5nZXQoMCkuZ2V0U3RyaW5nKCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoImphc29uIiwgYWxpYXNlZC5zdWJtaXQoIm49J2phc29uJyIpLmFsbCgpLmdldCgpLmdldCgwKS5nZXRTdHJpbmcoKSk7CiAgICAgICAgIGZpbmFsIFZlcnRleCB2ID0gYWxpYXNlZC5zdWJtaXQoImcuYWRkVmVydGV4KCduYW1lJyxuKSIpLmFsbCgpLmdldCgpLmdldCgwKS5nZXRWZXJ0ZXgoKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKCJqYXNvbiIsIHYudmFsdWUoIm5hbWUiKSk7CiAKQEAgLTE0MjMsMTIgKzE0NDcsNiBAQAogICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKFJlc3BvbnNlU3RhdHVzQ29kZS5TRVJWRVJfRVJST1JfU0NSSVBUX0VWQUxVQVRJT04sIHJlLmdldFJlc3BvbnNlU3RhdHVzQ29kZSgpKTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIGtlZXAgdGhlIHRlc3RpbmcgaGVyZSB1bnRpbCAicmViaW5kIiBpcyBjb21wbGV0ZWx5IHJlbW92ZWQKLSAgICAgICAgZmluYWwgQ2xpZW50IGNsaWVudExlZ2FjeSA9IGNsaWVudC5yZWJpbmQoImcxIik7Ci0gICAgICAgIGFzc2VydEVxdWFscygic3RlcGhlbiIsIGNsaWVudExlZ2FjeS5zdWJtaXQoIm49J3N0ZXBoZW4nIikuYWxsKCkuZ2V0KCkuZ2V0KDApLmdldFN0cmluZygpKTsKLSAgICAgICAgZmluYWwgVmVydGV4IHZMZWdhY3kgPSBjbGllbnRMZWdhY3kuc3VibWl0KCJnLmFkZFYoKS5wcm9wZXJ0eSgnbmFtZScsbikiKS5hbGwoKS5nZXQoKS5nZXQoMCkuZ2V0VmVydGV4KCk7Ci0gICAgICAgIGFzc2VydEVxdWFscygic3RlcGhlbiIsIHZMZWdhY3kudmFsdWUoIm5hbWUiKSk7Ci0KICAgICAgICAgZmluYWwgQ2xpZW50IGNsaWVudEFsaWFzZWQgPSBjbGllbnQuYWxpYXMoImcxIik7CiAgICAgICAgIGFzc2VydEVxdWFscygiamFzb24iLCBjbGllbnRBbGlhc2VkLnN1Ym1pdCgibj0namFzb24nIikuYWxsKCkuZ2V0KCkuZ2V0KDApLmdldFN0cmluZygpKTsKICAgICAgICAgZmluYWwgVmVydGV4IHYgPSBjbGllbnRBbGlhc2VkLnN1Ym1pdCgiZy5hZGRWKCkucHJvcGVydHkoJ25hbWUnLG4pIikuYWxsKCkuZ2V0KCkuZ2V0KDApLmdldFZlcnRleCgpOwpAQCAtMTQ0Nyw4ICsxNDY1LDcgQEAKICAgICAgICAgZmluYWwgQ2xpZW50IHNlc3Npb25XaXRob3V0TWFuYWdlZFR4ID0gY2x1c3Rlci5jb25uZWN0KG5hbWUuZ2V0TWV0aG9kTmFtZSgpICsgIi1ub3QtbWFuYWdlZCIpOwogCiAgICAgICAgIC8vIHRoaXMgc2hvdWxkIGF1dG8tY29tbWl0Ci0gICAgICAgIGZpbmFsIFZlcnRleCB2U3RlcGhlbiA9IHNlc3Npb25XaXRoTWFuYWdlZFR4LnN1Ym1pdCgidiA9IGcuYWRkVigpLnByb3BlcnR5KCduYW1lJywnc3RlcGhlbicpLm5leHQoKSIpLmFsbCgpLmdldCgpLmdldCgwKS5nZXRWZXJ0ZXgoKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKCJzdGVwaGVuIiwgdlN0ZXBoZW4udmFsdWUoIm5hbWUiKSk7CisgICAgICAgIHNlc3Npb25XaXRoTWFuYWdlZFR4LnN1Ym1pdCgidiA9IGcuYWRkVigpLnByb3BlcnR5KCduYW1lJywnc3RlcGhlbicpLm5leHQoKSIpLmFsbCgpLmdldCgpLmdldCgwKS5nZXRWZXJ0ZXgoKTsKIAogICAgICAgICAvLyB0aGUgb3RoZXIgY2xpZW50cyBzaG91bGQgc2VlIHRoYXQgY2hhbmdlIGJlY2F1c2Ugb2YgYXV0by1jb21taXQKICAgICAgICAgYXNzZXJ0VGhhdChjbGllbnQuc3VibWl0KCJnLlYoKS5oYXMoJ25hbWUnLCdzdGVwaGVuJykuaGFzTmV4dCgpIikuYWxsKCkuZ2V0KCkuZ2V0KDApLmdldEJvb2xlYW4oKSwgaXModHJ1ZSkpOwpAQCAtMTQ1Niw3ICsxNDczLDYgQEAKIAogICAgICAgICAvLyB0aGlzIHNob3VsZCBOT1QgYXV0by1jb21taXQKICAgICAgICAgZmluYWwgVmVydGV4IHZEYW5pZWwgPSBzZXNzaW9uV2l0aG91dE1hbmFnZWRUeC5zdWJtaXQoInYgPSBnLmFkZFYoKS5wcm9wZXJ0eSgnbmFtZScsJ2RhbmllbCcpLm5leHQoKSIpLmFsbCgpLmdldCgpLmdldCgwKS5nZXRWZXJ0ZXgoKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKCJkYW5pZWwiLCB2RGFuaWVsLnZhbHVlKCJuYW1lIikpOwogCiAgICAgICAgIC8vIHRoZSBvdGhlciBjbGllbnRzIHNob3VsZCBOT1Qgc2VlIHRoYXQgY2hhbmdlIGJlY2F1c2Ugb2YgYXV0by1jb21taXQKICAgICAgICAgYXNzZXJ0VGhhdChjbGllbnQuc3VibWl0KCJnLlYoKS5oYXMoJ25hbWUnLCdkYW5pZWwnKS5oYXNOZXh0KCkiKS5hbGwoKS5nZXQoKS5nZXQoMCkuZ2V0Qm9vbGVhbigpLCBpcyhmYWxzZSkpOwpAQCAtMTQ2NCw3ICsxNDgwLDcgQEAKIAogICAgICAgICAvLyBidXQgInYiIHNob3VsZCBzdGlsbCBiZSB0aGVyZQogICAgICAgICBmaW5hbCBWZXJ0ZXggdkRhbmllbEFnYWluID0gc2Vzc2lvbldpdGhvdXRNYW5hZ2VkVHguc3VibWl0KCJ2IikuYWxsKCkuZ2V0KCkuZ2V0KDApLmdldFZlcnRleCgpOwotICAgICAgICBhc3NlcnRFcXVhbHMoImRhbmllbCIsIHZEYW5pZWxBZ2Fpbi52YWx1ZSgibmFtZSIpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKHZEYW5pZWwuaWQoKSwgdkRhbmllbEFnYWluLmlkKCkpOwogCiAgICAgICAgIC8vIG5vdyBjb21taXQgbWFudWFsbHkKICAgICAgICAgc2Vzc2lvbldpdGhvdXRNYW5hZ2VkVHguc3VibWl0KCJnLnR4KCkuY29tbWl0KCkiKS5hbGwoKS5nZXQoKTsKQEAgLTE1OTIsNiArMTYwOCw1OCBAQAogICAgICAgICBjbHVzdGVyLmNsb3NlKCk7CiAgICAgfQogCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRTZW5kVXNlckFnZW50KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIENsdXN0ZXIgY2x1c3RlciA9IFRlc3RDbGllbnRGYWN0b3J5LmJ1aWxkKCkuc2VyaWFsaXplcihTZXJpYWxpemVycy5HUkFQSFNPTl9WM0QwKS5jcmVhdGUoKTsKKyAgICAgICAgZmluYWwgQ2xpZW50IGNsaWVudCA9IE1vY2tpdG8uc3B5KGNsdXN0ZXIuY29ubmVjdCgpLmFsaWFzKCJnIikpOworICAgICAgICBjbGllbnQuc3VibWl0KCIiLCBSZXF1ZXN0T3B0aW9ucy5idWlsZCgpLnVzZXJBZ2VudCgidGVzdCIpLmNyZWF0ZSgpKS5hbGwoKS5nZXQoKTsKKyAgICAgICAgY2x1c3Rlci5jbG9zZSgpOworICAgICAgICBBcmd1bWVudENhcHRvcjxSZXF1ZXN0TWVzc2FnZT4gcmVxdWVzdE1lc3NhZ2VDYXB0b3IgPSBBcmd1bWVudENhcHRvci5mb3JDbGFzcyhSZXF1ZXN0TWVzc2FnZS5jbGFzcyk7CisgICAgICAgIHZlcmlmeShjbGllbnQpLnN1Ym1pdEFzeW5jKHJlcXVlc3RNZXNzYWdlQ2FwdG9yLmNhcHR1cmUoKSk7CisgICAgICAgIFJlcXVlc3RNZXNzYWdlIHJlcXVlc3RNZXNzYWdlID0gcmVxdWVzdE1lc3NhZ2VDYXB0b3IuZ2V0VmFsdWUoKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKCJ0ZXN0IiwgcmVxdWVzdE1lc3NhZ2UuZ2V0QXJncygpLmdldChUb2tlbnMuQVJHU19VU0VSX0FHRU5UKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRTZW5kVXNlckFnZW50Qnl0ZWNvZGUoKSB7CisgICAgICAgIGZpbmFsIENsdXN0ZXIgY2x1c3RlciA9IFRlc3RDbGllbnRGYWN0b3J5LmJ1aWxkKCkuc2VyaWFsaXplcihTZXJpYWxpemVycy5HUkFQSFNPTl9WM0QwKS5jcmVhdGUoKTsKKyAgICAgICAgZmluYWwgQ2xpZW50IGNsaWVudCA9IE1vY2tpdG8uc3B5KGNsdXN0ZXIuY29ubmVjdCgpLmFsaWFzKCJnIikpOworICAgICAgICBNb2NraXRvLndoZW4oY2xpZW50LmFsaWFzKCJnIikpLnRoZW5SZXR1cm4oY2xpZW50KTsKKyAgICAgICAgR3JhcGhUcmF2ZXJzYWxTb3VyY2UgZyA9IEFub255bW91c1RyYXZlcnNhbFNvdXJjZS50cmF2ZXJzYWwoKS53aXRoUmVtb3RlKERyaXZlclJlbW90ZUNvbm5lY3Rpb24udXNpbmcoY2xpZW50KSk7CisgICAgICAgIGcud2l0aChUb2tlbnMuQVJHU19VU0VSX0FHRU5ULCAidGVzdCIpLlYoKS5pdGVyYXRlKCk7CisgICAgICAgIGNsdXN0ZXIuY2xvc2UoKTsKKyAgICAgICAgQXJndW1lbnRDYXB0b3I8UmVxdWVzdE9wdGlvbnM+IHJlcXVlc3RPcHRpb25zQ2FwdG9yID0gQXJndW1lbnRDYXB0b3IuZm9yQ2xhc3MoUmVxdWVzdE9wdGlvbnMuY2xhc3MpOworICAgICAgICB2ZXJpZnkoY2xpZW50KS5zdWJtaXRBc3luYyhNb2NraXRvLmFueShCeXRlY29kZS5jbGFzcyksIHJlcXVlc3RPcHRpb25zQ2FwdG9yLmNhcHR1cmUoKSk7CisgICAgICAgIFJlcXVlc3RPcHRpb25zIHJlcXVlc3RPcHRpb25zID0gcmVxdWVzdE9wdGlvbnNDYXB0b3IuZ2V0VmFsdWUoKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKCJ0ZXN0IiwgcmVxdWVzdE9wdGlvbnMuZ2V0VXNlckFnZW50KCkuZ2V0KCkpOworCisgICAgICAgIEFyZ3VtZW50Q2FwdG9yPFJlcXVlc3RNZXNzYWdlPiByZXF1ZXN0TWVzc2FnZUNhcHRvciA9IEFyZ3VtZW50Q2FwdG9yLmZvckNsYXNzKFJlcXVlc3RNZXNzYWdlLmNsYXNzKTsKKyAgICAgICAgdmVyaWZ5KGNsaWVudCkuc3VibWl0QXN5bmMocmVxdWVzdE1lc3NhZ2VDYXB0b3IuY2FwdHVyZSgpKTsKKyAgICAgICAgUmVxdWVzdE1lc3NhZ2UgcmVxdWVzdE1lc3NhZ2UgPSByZXF1ZXN0TWVzc2FnZUNhcHRvci5nZXRWYWx1ZSgpOworICAgICAgICBhc3NlcnRFcXVhbHMoInRlc3QiLCByZXF1ZXN0TWVzc2FnZS5nZXRBcmdzKCkuZ2V0T3JEZWZhdWx0KFRva2Vucy5BUkdTX1VTRVJfQUdFTlQsIG51bGwpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZFNlbmRSZXF1ZXN0SWRCeXRlY29kZSgpIHsKKyAgICAgICAgZmluYWwgVVVJRCBvdmVycmlkZVJlcXVlc3RJZCA9IFVVSUQucmFuZG9tVVVJRCgpOworICAgICAgICBmaW5hbCBDbHVzdGVyIGNsdXN0ZXIgPSBUZXN0Q2xpZW50RmFjdG9yeS5idWlsZCgpLnNlcmlhbGl6ZXIoU2VyaWFsaXplcnMuR1JBUEhTT05fVjNEMCkuY3JlYXRlKCk7CisgICAgICAgIGZpbmFsIENsaWVudCBjbGllbnQgPSBNb2NraXRvLnNweShjbHVzdGVyLmNvbm5lY3QoKS5hbGlhcygiZyIpKTsKKyAgICAgICAgTW9ja2l0by53aGVuKGNsaWVudC5hbGlhcygiZyIpKS50aGVuUmV0dXJuKGNsaWVudCk7CisgICAgICAgIEdyYXBoVHJhdmVyc2FsU291cmNlIGcgPSBBbm9ueW1vdXNUcmF2ZXJzYWxTb3VyY2UudHJhdmVyc2FsKCkud2l0aFJlbW90ZShEcml2ZXJSZW1vdGVDb25uZWN0aW9uLnVzaW5nKGNsaWVudCkpOworICAgICAgICBnLndpdGgoVG9rZW5zLlJFUVVFU1RfSUQsIG92ZXJyaWRlUmVxdWVzdElkKS5WKCkuaXRlcmF0ZSgpOworICAgICAgICBjbHVzdGVyLmNsb3NlKCk7CisgICAgICAgIEFyZ3VtZW50Q2FwdG9yPFJlcXVlc3RPcHRpb25zPiByZXF1ZXN0T3B0aW9uc0NhcHRvciA9IEFyZ3VtZW50Q2FwdG9yLmZvckNsYXNzKFJlcXVlc3RPcHRpb25zLmNsYXNzKTsKKyAgICAgICAgdmVyaWZ5KGNsaWVudCkuc3VibWl0QXN5bmMoTW9ja2l0by5hbnkoQnl0ZWNvZGUuY2xhc3MpLCByZXF1ZXN0T3B0aW9uc0NhcHRvci5jYXB0dXJlKCkpOworICAgICAgICBSZXF1ZXN0T3B0aW9ucyByZXF1ZXN0T3B0aW9ucyA9IHJlcXVlc3RPcHRpb25zQ2FwdG9yLmdldFZhbHVlKCk7CisgICAgICAgIGFzc2VydFRydWUocmVxdWVzdE9wdGlvbnMuZ2V0T3ZlcnJpZGVSZXF1ZXN0SWQoKS5pc1ByZXNlbnQoKSk7CisgICAgICAgIGFzc2VydEVxdWFscyhvdmVycmlkZVJlcXVlc3RJZCwgcmVxdWVzdE9wdGlvbnMuZ2V0T3ZlcnJpZGVSZXF1ZXN0SWQoKS5nZXQoKSk7CisKKyAgICAgICAgQXJndW1lbnRDYXB0b3I8UmVxdWVzdE1lc3NhZ2U+IHJlcXVlc3RNZXNzYWdlQ2FwdG9yID0gQXJndW1lbnRDYXB0b3IuZm9yQ2xhc3MoUmVxdWVzdE1lc3NhZ2UuY2xhc3MpOworICAgICAgICB2ZXJpZnkoY2xpZW50KS5zdWJtaXRBc3luYyhyZXF1ZXN0TWVzc2FnZUNhcHRvci5jYXB0dXJlKCkpOworICAgICAgICBSZXF1ZXN0TWVzc2FnZSByZXF1ZXN0TWVzc2FnZSA9IHJlcXVlc3RNZXNzYWdlQ2FwdG9yLmdldFZhbHVlKCk7CisgICAgICAgIGFzc2VydEVxdWFscyhvdmVycmlkZVJlcXVlc3RJZCwgcmVxdWVzdE1lc3NhZ2UuZ2V0UmVxdWVzdElkKCkpOworICAgIH0KKwogICAgIHByaXZhdGUgdm9pZCBhc3NlcnRGdXR1cmVUaW1lb3V0KGZpbmFsIENvbXBsZXRhYmxlRnV0dXJlPExpc3Q8UmVzdWx0Pj4gZnV0dXJlRmlyc3QpIHsKICAgICAgICAgdHJ5CiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvR3JlbWxpblJlc3VsdFNldEludGVncmF0ZVRlc3QuamF2YSBiL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvR3JlbWxpblJlc3VsdFNldEludGVncmF0ZVRlc3QuamF2YQppbmRleCA2NmUyYzk0Li5iZDQ2Njc5IDEwMDY0NAotLS0gYS9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL0dyZW1saW5SZXN1bHRTZXRJbnRlZ3JhdGVUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9HcmVtbGluUmVzdWx0U2V0SW50ZWdyYXRlVGVzdC5qYXZhCkBAIC0yMyw5ICsyMywxMiBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLk1lc3NhZ2VTZXJpYWxpemVyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLlJlc3VsdDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5SZXN1bHRTZXQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuVG9rZW5zOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjE7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyeW9MaXRlTWVzc2FnZVNlcmlhbGl6ZXJWMWQwOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcnlvTWVzc2FnZVNlcmlhbGl6ZXJWMWQwOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcnlvTWVzc2FnZVNlcmlhbGl6ZXJWM2QwOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5TZXJpYWxpemVyczsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmpzcjIyMy5TY3JpcHRGaWxlR3JlbWxpblBsdWdpbjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlBhdGg7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguR3JhcGhUcmF2ZXJzYWxTb3VyY2U7CkBAIC0zNSw1MCArMzgsODIgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXg7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4UHJvcGVydHk7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uSW9UZXN0OwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuZGV0YWNoZWQuRGV0YWNoZWRFZGdlOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuZGV0YWNoZWQuRGV0YWNoZWRQYXRoOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuZGV0YWNoZWQuRGV0YWNoZWRQcm9wZXJ0eTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLmRldGFjaGVkLkRldGFjaGVkVmVydGV4OwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuZGV0YWNoZWQuRGV0YWNoZWRWZXJ0ZXhQcm9wZXJ0eTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLnJlZmVyZW5jZS5SZWZlcmVuY2VFZGdlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwucmVmZXJlbmNlLlJlZmVyZW5jZVBhdGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5yZWZlcmVuY2UuUmVmZXJlbmNlUHJvcGVydHk7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5yZWZlcmVuY2UuUmVmZXJlbmNlVmVydGV4OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwucmVmZXJlbmNlLlJlZmVyZW5jZVZlcnRleFByb3BlcnR5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguc3RydWN0dXJlLlRpbmtlckdyYXBoOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguc3RydWN0dXJlLlRpbmtlcklvUmVnaXN0cnlWM2QwOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udXRpbC5pdGVyYXRvci5JdGVyYXRvclV0aWxzOwogaW1wb3J0IG9yZy5oYW1jcmVzdC5Db3JlTWF0Y2hlcnM7CiBpbXBvcnQgb3JnLmp1bml0LkFmdGVyOwogaW1wb3J0IG9yZy5qdW5pdC5CZWZvcmU7CiBpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CitpbXBvcnQgb3JnLmp1bml0LnJ1bm5lci5SdW5XaXRoOworaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXJzLlBhcmFtZXRlcml6ZWQ7CiAKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOwogaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKIGltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsKIGltcG9ydCBqYXZhLnV0aWwuTWFwOworaW1wb3J0IGphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0OwogCi1pbXBvcnQgc3RhdGljIG9yZy5oYW1jcmVzdC5Db3JlTWF0Y2hlcnMuYW55T2Y7CiBpbXBvcnQgc3RhdGljIG9yZy5oYW1jcmVzdC5Db3JlTWF0Y2hlcnMuaXM7CiBpbXBvcnQgc3RhdGljIG9yZy5oYW1jcmVzdC5NYXRjaGVyQXNzZXJ0LmFzc2VydFRoYXQ7CiBpbXBvcnQgc3RhdGljIG9yZy5oYW1jcmVzdC5jb3JlLklzSW5zdGFuY2VPZi5pbnN0YW5jZU9mOwogaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydEVxdWFsczsKIGltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnROdWxsOwotaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmZhaWw7CiAKIC8qKgogICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQogICovCitAUnVuV2l0aChQYXJhbWV0ZXJpemVkLmNsYXNzKQogcHVibGljIGNsYXNzIEdyZW1saW5SZXN1bHRTZXRJbnRlZ3JhdGVUZXN0IGV4dGVuZHMgQWJzdHJhY3RHcmVtbGluU2VydmVySW50ZWdyYXRpb25UZXN0IHsKIAogICAgIHByaXZhdGUgQ2x1c3RlciBjbHVzdGVyOwogICAgIHByaXZhdGUgQ2xpZW50IGNsaWVudDsKIAorICAgIEBQYXJhbWV0ZXJpemVkLlBhcmFtZXRlcnMobmFtZSA9ICJ7MH0iKQorICAgIHB1YmxpYyBzdGF0aWMgSXRlcmFibGU8T2JqZWN0W10+IGRhdGEoKSB7CisgICAgICAgIGZpbmFsIE1lc3NhZ2VTZXJpYWxpemVyIGdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMSA9IG5ldyBHcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjEoKTsKKworICAgICAgICAvLyBtdXN0IGNvbmZpZ3VyZSBHcnlvIHdpdGggImN1c3RvbSIgc2luY2UgaXQncyBjb25maWd1cmVkIG9uIHRoZSBzZXJ2ZXIKKyAgICAgICAgZmluYWwgTWVzc2FnZVNlcmlhbGl6ZXIgZ3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMCA9IG5ldyBHcnlvTWVzc2FnZVNlcmlhbGl6ZXJWM2QwKCk7CisgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsT2JqZWN0PiBncnlvVjNkMENvbmZpZyA9IG5ldyBIYXNoTWFwPD4oKTsKKyAgICAgICAgZ3J5b1YzZDBDb25maWcucHV0KCJpb1JlZ2lzdHJpZXMiLCBDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KFRpbmtlcklvUmVnaXN0cnlWM2QwLmNsYXNzLmdldE5hbWUoKSkpOworICAgICAgICBncnlvVjNkMENvbmZpZy5wdXQoImN1c3RvbSIsIENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QoImdyb292eS5qc29uLkpzb25CdWlsZGVyO29yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5Kc29uQnVpbGRlckdyeW9TZXJpYWxpemVyIikpOworICAgICAgICBncnlvTWVzc2FnZVNlcmlhbGl6ZXJWM2QwLmNvbmZpZ3VyZShncnlvVjNkMENvbmZpZywgbnVsbCk7CisKKyAgICAgICAgZmluYWwgTWVzc2FnZVNlcmlhbGl6ZXIgZ3J5b01lc3NhZ2VTZXJpYWxpemVyVjFkMCA9IG5ldyBHcnlvTWVzc2FnZVNlcmlhbGl6ZXJWMWQwKCk7CisgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsT2JqZWN0PiBncnlvVjFkMENvbmZpZyA9IG5ldyBIYXNoTWFwPD4oKTsKKyAgICAgICAgZ3J5b1YxZDBDb25maWcucHV0KCJpb1JlZ2lzdHJpZXMiLCBDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KFRpbmtlcklvUmVnaXN0cnlWM2QwLmNsYXNzLmdldE5hbWUoKSkpOworICAgICAgICBncnlvVjFkMENvbmZpZy5wdXQoImN1c3RvbSIsIENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QoImdyb292eS5qc29uLkpzb25CdWlsZGVyO29yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5Kc29uQnVpbGRlckdyeW9TZXJpYWxpemVyIikpOworICAgICAgICBncnlvTWVzc2FnZVNlcmlhbGl6ZXJWMWQwLmNvbmZpZ3VyZShncnlvVjFkMENvbmZpZywgbnVsbCk7CisKKyAgICAgICAgZmluYWwgTWVzc2FnZVNlcmlhbGl6ZXIgZ3J5b0xpdGVNZXNzYWdlU2VyaWFsaXplclYxZDAgPSBuZXcgR3J5b0xpdGVNZXNzYWdlU2VyaWFsaXplclYxZDAoKTsKKyAgICAgICAgZmluYWwgTWFwPFN0cmluZyxPYmplY3Q+IGdyeW9MaXRlVjFkMENvbmZpZyA9IG5ldyBIYXNoTWFwPD4oKTsKKyAgICAgICAgZ3J5b0xpdGVWMWQwQ29uZmlnLnB1dCgiaW9SZWdpc3RyaWVzIiwgQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdChUaW5rZXJJb1JlZ2lzdHJ5VjNkMC5jbGFzcy5nZXROYW1lKCkpKTsKKyAgICAgICAgZ3J5b0xpdGVWMWQwQ29uZmlnLnB1dCgiY3VzdG9tIiwgQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdCgiZ3Jvb3Z5Lmpzb24uSnNvbkJ1aWxkZXI7b3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkpzb25CdWlsZGVyR3J5b1NlcmlhbGl6ZXIiKSk7CisgICAgICAgIGdyeW9MaXRlTWVzc2FnZVNlcmlhbGl6ZXJWMWQwLmNvbmZpZ3VyZShncnlvTGl0ZVYxZDBDb25maWcsIG51bGwpOworCisgICAgICAgIHJldHVybiBBcnJheXMuYXNMaXN0KG5ldyBPYmplY3RbXVtdeworICAgICAgICAgICAgICAgIHtTZXJpYWxpemVycy5HUkFQSEJJTkFSWV9WMUQwLCBncmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjF9LAorICAgICAgICAgICAgICAgIHtTZXJpYWxpemVycy5HUllPX1YzRDAsIGdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDB9LAorICAgICAgICAgICAgICAgIHtTZXJpYWxpemVycy5HUllPX1YxRDAsIGdyeW9NZXNzYWdlU2VyaWFsaXplclYxZDB9LAorICAgICAgICAgICAgICAgIHtTZXJpYWxpemVycy5HUllPX0xJVEVfVjFEMCwgZ3J5b0xpdGVNZXNzYWdlU2VyaWFsaXplclYxZDB9CisgICAgICAgIH0pOworICAgIH0KKworICAgIEBQYXJhbWV0ZXJpemVkLlBhcmFtZXRlcih2YWx1ZSA9IDApCisgICAgcHVibGljIFNlcmlhbGl6ZXJzIG5hbWU7CisKKyAgICBAUGFyYW1ldGVyaXplZC5QYXJhbWV0ZXIodmFsdWUgPSAxKQorICAgIHB1YmxpYyBNZXNzYWdlU2VyaWFsaXplciBtZXNzYWdlU2VyaWFsaXplcjsKKwogICAgIEBCZWZvcmUKICAgICBwdWJsaWMgdm9pZCBiZWZvcmVUZXN0KCkgewotICAgICAgICBmaW5hbCBNZXNzYWdlU2VyaWFsaXplciBzZXJpYWxpemVyID0gbmV3IEdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAoKTsKLSAgICAgICAgZmluYWwgTWFwPFN0cmluZyxPYmplY3Q+IGMgPSBuZXcgSGFzaE1hcDw+KCk7Ci0gICAgICAgIGMucHV0KCJpb1JlZ2lzdHJpZXMiLCBDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KFRpbmtlcklvUmVnaXN0cnlWM2QwLmNsYXNzLmdldE5hbWUoKSkpOwotICAgICAgICBjLnB1dCgiY3VzdG9tIiwgQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdCgiZ3Jvb3Z5Lmpzb24uSnNvbkJ1aWxkZXI7b3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkpzb25CdWlsZGVyR3J5b1NlcmlhbGl6ZXIiKSk7Ci0KLSAgICAgICAgc2VyaWFsaXplci5jb25maWd1cmUoYywgbnVsbCk7Ci0gICAgICAgIGNsdXN0ZXIgPSBUZXN0Q2xpZW50RmFjdG9yeS5idWlsZCgpLnNlcmlhbGl6ZXIoc2VyaWFsaXplcikuY3JlYXRlKCk7CisgICAgICAgIGNsdXN0ZXIgPSBUZXN0Q2xpZW50RmFjdG9yeS5idWlsZCgpLnNlcmlhbGl6ZXIobWVzc2FnZVNlcmlhbGl6ZXIpLmNyZWF0ZSgpOwogICAgICAgICBjbGllbnQgPSBjbHVzdGVyLmNvbm5lY3QoKTsKICAgICB9CiAKQEAgLTg4LDYgKzEyMywyMCBAQAogICAgIH0KIAogICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkUmV0dXJuUmVzcG9uc2VBdHRyaWJ1dGVzVmlhTm9Db250ZW50KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIFJlc3VsdFNldCByZXN1bHRzID0gY2xpZW50LnN1Ym1pdCgiW10iKTsKKyAgICAgICAgZmluYWwgTWFwPFN0cmluZyxPYmplY3Q+IGF0dHIgPSByZXN1bHRzLnN0YXR1c0F0dHJpYnV0ZXMoKS5nZXQoMjAwMDAsIFRpbWVVbml0Lk1JTExJU0VDT05EUyk7CisgICAgICAgIGFzc2VydFRoYXQoYXR0ci5jb250YWluc0tleShUb2tlbnMuQVJHU19IT1NUKSwgaXModHJ1ZSkpOworICAgIH0KKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkUmV0dXJuUmVzcG9uc2VBdHRyaWJ1dGVzVmlhU3VjY2VzcygpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBmaW5hbCBSZXN1bHRTZXQgcmVzdWx0cyA9IGNsaWVudC5zdWJtaXQoImdtb2Rlcm4uVigpIik7CisgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsT2JqZWN0PiBhdHRyID0gcmVzdWx0cy5zdGF0dXNBdHRyaWJ1dGVzKCkuZ2V0KDIwMDAwLCBUaW1lVW5pdC5NSUxMSVNFQ09ORFMpOworICAgICAgICBhc3NlcnRUaGF0KGF0dHIuY29udGFpbnNLZXkoVG9rZW5zLkFSR1NfSE9TVCksIGlzKHRydWUpKTsKKyAgICB9CisKKyAgICBAVGVzdAogICAgIHB1YmxpYyB2b2lkIHNob3VsZEhhbmRsZVZlcnRleFJlc3VsdEZyb21UcmF2ZXJzYWxCdWxrZWQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKICAgICAgICAgZmluYWwgR3JhcGggZ3JhcGggPSBUaW5rZXJHcmFwaC5vcGVuKCk7CiAgICAgICAgIGZpbmFsIEdyYXBoVHJhdmVyc2FsU291cmNlIGcgPSBncmFwaC50cmF2ZXJzYWwoKTsKQEAgLTEyMSw1OCArMTcwLDM1IEBACiAgICAgcHVibGljIHZvaWQgc2hvdWxkSGFuZGxlVmVydGV4UmVzdWx0KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CiAgICAgICAgIGZpbmFsIFJlc3VsdFNldCByZXN1bHRzID0gY2xpZW50LnN1Ym1pdCgiZ21vZGVybi5WKDEpLm5leHQoKSIpOwogICAgICAgICBmaW5hbCBWZXJ0ZXggdiA9IHJlc3VsdHMuYWxsKCkuZ2V0KCkuZ2V0KDApLmdldFZlcnRleCgpOwotICAgICAgICBhc3NlcnRUaGF0KHYsIGluc3RhbmNlT2YoRGV0YWNoZWRWZXJ0ZXguY2xhc3MpKTsKLQotICAgICAgICBhc3NlcnRFcXVhbHMoIm1hcmtvIiwgdi5wcm9wZXJ0aWVzKCJuYW1lIikubmV4dCgpLnZhbHVlKCkpOwotICAgICAgICB2LnByb3BlcnRpZXMoKS5mb3JFYWNoUmVtYWluaW5nKHAgLT4gewotICAgICAgICAgICAgaWYgKHAua2V5KCkuZXF1YWxzKCJuYW1lIikpCi0gICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJtYXJrbyIsIHAudmFsdWUoKSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChwLmtleSgpLmVxdWFscygiYWdlIikpCi0gICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDI5LCBwLnZhbHVlKCkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGZhaWwoIlNob3VsZCBub3QgaGF2ZSBhbnkgb3RoZXIga2V5cyBiZXNpZGVzICduYW1lJyBhbmQgJ2FnZSciKTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgQFRlc3QKLSAgICBwdWJsaWMgdm9pZCBzaG91bGRIYW5kbGVWZXJ0ZXhSZXN1bHRXaXRoTGl0ZVNlcmlhbGl6YXRpb24oKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICAgICAgZmluYWwgQ2x1c3RlciBjbHVzdGVyID0gVGVzdENsaWVudEZhY3RvcnkuYnVpbGQoKS5zZXJpYWxpemVyKFNlcmlhbGl6ZXJzLkdSWU9fTElURV9WMUQwKS5jcmVhdGUoKTsKLSAgICAgICAgZmluYWwgQ2xpZW50IGNsaWVudExpdGUgPSBjbHVzdGVyLmNvbm5lY3QoKTsKLSAgICAgICAgZmluYWwgUmVzdWx0U2V0IHJlc3VsdHMgPSBjbGllbnRMaXRlLnN1Ym1pdCgiZ21vZGVybi5WKDEpLm5leHQoKSIpOwotICAgICAgICBmaW5hbCBWZXJ0ZXggdiA9IHJlc3VsdHMuYWxsKCkuZ2V0KCkuZ2V0KDApLmdldFZlcnRleCgpOwogICAgICAgICBhc3NlcnRUaGF0KHYsIGluc3RhbmNlT2YoUmVmZXJlbmNlVmVydGV4LmNsYXNzKSk7Ci0KLSAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIHYuaWQoKSk7Ci0gICAgICAgIGFzc2VydEVxdWFscygicGVyc29uIiwgdi5sYWJlbCgpKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIEl0ZXJhdG9yVXRpbHMuY291bnQodi5wcm9wZXJ0aWVzKCkpKTsKICAgICB9CiAKICAgICBAVGVzdAogICAgIHB1YmxpYyB2b2lkIHNob3VsZEhhbmRsZVZlcnRleFByb3BlcnR5UmVzdWx0KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CiAgICAgICAgIGZpbmFsIFJlc3VsdFNldCByZXN1bHRzID0gY2xpZW50LnN1Ym1pdCgiZ21vZGVybi5WKCkucHJvcGVydGllcygnbmFtZScpLm5leHQoKSIpOwogICAgICAgICBmaW5hbCBWZXJ0ZXhQcm9wZXJ0eTxTdHJpbmc+IHYgPSByZXN1bHRzLmFsbCgpLmdldCgpLmdldCgwKS5nZXRWZXJ0ZXhQcm9wZXJ0eSgpOwotICAgICAgICBhc3NlcnRUaGF0KHYsIGluc3RhbmNlT2YoRGV0YWNoZWRWZXJ0ZXhQcm9wZXJ0eS5jbGFzcykpOworICAgICAgICBhc3NlcnRUaGF0KHYsIGluc3RhbmNlT2YoUmVmZXJlbmNlVmVydGV4UHJvcGVydHkuY2xhc3MpKTsKICAgICB9CiAKICAgICBAVGVzdAogICAgIHB1YmxpYyB2b2lkIHNob3VsZEhhbmRsZUVkZ2VSZXN1bHQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKICAgICAgICAgZmluYWwgUmVzdWx0U2V0IHJlc3VsdHMgPSBjbGllbnQuc3VibWl0KCJnbW9kZXJuLkUoKS5uZXh0KCkiKTsKICAgICAgICAgZmluYWwgRWRnZSBlID0gcmVzdWx0cy5hbGwoKS5nZXQoKS5nZXQoMCkuZ2V0RWRnZSgpOwotICAgICAgICBhc3NlcnRUaGF0KGUsIGluc3RhbmNlT2YoRGV0YWNoZWRFZGdlLmNsYXNzKSk7CisgICAgICAgIGFzc2VydFRoYXQoZSwgaW5zdGFuY2VPZihSZWZlcmVuY2VFZGdlLmNsYXNzKSk7CiAgICAgfQogCiAgICAgQFRlc3QKICAgICBwdWJsaWMgdm9pZCBzaG91bGRIYW5kbGVQcm9wZXJ0eVJlc3VsdCgpIHRocm93cyBFeGNlcHRpb24gewogICAgICAgICBmaW5hbCBSZXN1bHRTZXQgcmVzdWx0cyA9IGNsaWVudC5zdWJtaXQoImdtb2Rlcm4uRSgpLnByb3BlcnRpZXMoJ3dlaWdodCcpLm5leHQoKSIpOwogICAgICAgICBmaW5hbCBQcm9wZXJ0eTxEb3VibGU+IHAgPSByZXN1bHRzLmFsbCgpLmdldCgpLmdldCgwKS5nZXRQcm9wZXJ0eSgpOwotICAgICAgICBhc3NlcnRUaGF0KHAsIGluc3RhbmNlT2YoRGV0YWNoZWRQcm9wZXJ0eS5jbGFzcykpOworICAgICAgICBhc3NlcnRUaGF0KHAsIGluc3RhbmNlT2YoUmVmZXJlbmNlUHJvcGVydHkuY2xhc3MpKTsKICAgICB9CiAKICAgICBAVGVzdAogICAgIHB1YmxpYyB2b2lkIHNob3VsZEhhbmRsZVBhdGhSZXN1bHQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKICAgICAgICAgZmluYWwgUmVzdWx0U2V0IHJlc3VsdHMgPSBjbGllbnQuc3VibWl0KCJnbW9kZXJuLlYoKS5vdXQoKS5wYXRoKCkiKTsKICAgICAgICAgZmluYWwgUGF0aCBwID0gcmVzdWx0cy5hbGwoKS5nZXQoKS5nZXQoMCkuZ2V0UGF0aCgpOwotICAgICAgICBhc3NlcnRUaGF0KHAsIGluc3RhbmNlT2YoRGV0YWNoZWRQYXRoLmNsYXNzKSk7CisgICAgICAgIGFzc2VydFRoYXQocCwgaW5zdGFuY2VPZihSZWZlcmVuY2VQYXRoLmNsYXNzKSk7CiAgICAgfQogCiAgICAgQFRlc3QKQEAgLTE5NSwxNyArMjIxLDQgQEAKICAgICAgICAgYXNzZXJ0RXF1YWxzKDNMLCBtLmdldCgxTCkpOwogICAgICAgICBhc3NlcnRFcXVhbHMoM0wsIG0uZ2V0KDNMKSk7CiAgICAgfQotCi0gICAgQFRlc3QKLSAgICBwdWJsaWMgdm9pZCBzaG91bGRIYW5kbGVNYXBPYmplY3RSZXN1bHQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICAgICAgZmluYWwgUmVzdWx0U2V0IHJlc3VsdHMgPSBjbGllbnQuc3VibWl0KCJnbW9kZXJuLlYoKS5ncm91cENvdW50KCkuYnkoYm90aEUoKS5jb3VudCgpKS5uZXh0KCkiKTsKLSAgICAgICAgZmluYWwgTGlzdDxSZXN1bHQ+IHJlc3VsdExpc3QgPSByZXN1bHRzLmFsbCgpLmdldCgpOwotICAgICAgICBhc3NlcnRFcXVhbHMoMiwgcmVzdWx0TGlzdC5zaXplKCkpOwotICAgICAgICBmaW5hbCBNYXAuRW50cnkgZmlyc3RFbnRyeSA9IHJlc3VsdExpc3QuZ2V0KDApLmdldChIYXNoTWFwLkVudHJ5LmNsYXNzKTsKLSAgICAgICAgZmluYWwgTWFwLkVudHJ5IHNlY29uZEVudHJ5ID0gcmVzdWx0TGlzdC5nZXQoMSkuZ2V0KEhhc2hNYXAuRW50cnkuY2xhc3MpOwotICAgICAgICBhc3NlcnRUaGF0KGZpcnN0RW50cnkuZ2V0S2V5KCksIGFueU9mKGlzKDNMKSwgaXMoMUwpKSk7Ci0gICAgICAgIGFzc2VydFRoYXQoZmlyc3RFbnRyeS5nZXRWYWx1ZSgpLCBpcygzTCkpOwotICAgICAgICBhc3NlcnRUaGF0KHNlY29uZEVudHJ5LmdldEtleSgpLCBhbnlPZihpcygzTCksIGlzKDFMKSkpOwotICAgICAgICBhc3NlcnRUaGF0KHNlY29uZEVudHJ5LmdldFZhbHVlKCksIGlzKDNMKSk7Ci0gICAgfQogfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9HcmVtbGluU2VydmVyQXVkaXRMb2dJbnRlZ3JhdGVUZXN0LmphdmEgYi9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL0dyZW1saW5TZXJ2ZXJBdWRpdExvZ0ludGVncmF0ZVRlc3QuamF2YQppbmRleCBjZjAwZTBjLi41ZDM0YTc4IDEwMDY0NAotLS0gYS9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL0dyZW1saW5TZXJ2ZXJBdWRpdExvZ0ludGVncmF0ZVRlc3QuamF2YQorKysgYi9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL0dyZW1saW5TZXJ2ZXJBdWRpdExvZ0ludGVncmF0ZVRlc3QuamF2YQpAQCAtMTE4LDcgKzExOCw3IEBACiAgICAgICAgIGZpbmFsIFNldHRpbmdzLkF1dGhlbnRpY2F0aW9uU2V0dGluZ3MgYXV0aFNldHRpbmdzID0gbmV3IFNldHRpbmdzLkF1dGhlbnRpY2F0aW9uU2V0dGluZ3MoKTsKICAgICAgICAgc2V0dGluZ3MuYXV0aGVudGljYXRpb24gPSBhdXRoU2V0dGluZ3M7CiAgICAgICAgIGF1dGhTZXR0aW5ncy5lbmFibGVBdWRpdExvZyA9IEFVRElUX0xPR19FTkFCTEVEOwotICAgICAgICBhdXRoU2V0dGluZ3MuY2xhc3NOYW1lID0gS3JiNUF1dGhlbnRpY2F0b3IuY2xhc3MuZ2V0TmFtZSgpOworICAgICAgICBhdXRoU2V0dGluZ3MuYXV0aGVudGljYXRvciA9IEtyYjVBdXRoZW50aWNhdG9yLmNsYXNzLmdldE5hbWUoKTsKICAgICAgICAgZmluYWwgTWFwPFN0cmluZyxPYmplY3Q+IGF1dGhDb25maWcgPSBuZXcgSGFzaE1hcDw+KCk7CiAgICAgICAgIGF1dGhTZXR0aW5ncy5jb25maWcgPSBhdXRoQ29uZmlnOwogCmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL0dyZW1saW5TZXJ2ZXJBdXRoSW50ZWdyYXRlVGVzdC5qYXZhIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9HcmVtbGluU2VydmVyQXV0aEludGVncmF0ZVRlc3QuamF2YQppbmRleCAwY2E3M2E1Li44MDdlOWE3IDEwMDY0NAotLS0gYS9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL0dyZW1saW5TZXJ2ZXJBdXRoSW50ZWdyYXRlVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvR3JlbWxpblNlcnZlckF1dGhJbnRlZ3JhdGVUZXN0LmphdmEKQEAgLTU0LDcgKzU0LDcgQEAKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgU2V0dGluZ3Mgb3ZlcnJpZGVTZXR0aW5ncyhmaW5hbCBTZXR0aW5ncyBzZXR0aW5ncykgewogICAgICAgICBmaW5hbCBTZXR0aW5ncy5BdXRoZW50aWNhdGlvblNldHRpbmdzIGF1dGhTZXR0aW5ncyA9IG5ldyBTZXR0aW5ncy5BdXRoZW50aWNhdGlvblNldHRpbmdzKCk7Ci0gICAgICAgIGF1dGhTZXR0aW5ncy5jbGFzc05hbWUgPSBTaW1wbGVBdXRoZW50aWNhdG9yLmNsYXNzLmdldE5hbWUoKTsKKyAgICAgICAgYXV0aFNldHRpbmdzLmF1dGhlbnRpY2F0b3IgPSBTaW1wbGVBdXRoZW50aWNhdG9yLmNsYXNzLmdldE5hbWUoKTsKIAogICAgICAgICAvLyB1c2UgYSBjcmVkZW50aWFscyBncmFwaCB3aXRoIG9uZSB1c2VyIGluIGl0OiBzdGVwaGVuL3Bhc3N3b3JkCiAgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsT2JqZWN0PiBhdXRoQ29uZmlnID0gbmV3IEhhc2hNYXA8PigpOwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9HcmVtbGluU2VydmVyQXV0aEtyYjVJbnRlZ3JhdGVUZXN0LmphdmEgYi9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL0dyZW1saW5TZXJ2ZXJBdXRoS3JiNUludGVncmF0ZVRlc3QuamF2YQppbmRleCAyOWRhYjg4Li4wMjlhNDA4IDEwMDY0NAotLS0gYS9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL0dyZW1saW5TZXJ2ZXJBdXRoS3JiNUludGVncmF0ZVRlc3QuamF2YQorKysgYi9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL0dyZW1saW5TZXJ2ZXJBdXRoS3JiNUludGVncmF0ZVRlc3QuamF2YQpAQCAtMjQsNiArMjQsNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLk1lc3NhZ2VTZXJpYWxpemVyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLmV4Y2VwdGlvbi5SZXNwb25zZUV4Y2VwdGlvbjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5tZXNzYWdlLlJlc3BvbnNlU3RhdHVzQ29kZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcnlvTWVzc2FnZVNlcmlhbGl6ZXJWMWQwOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcnlvTWVzc2FnZVNlcmlhbGl6ZXJWM2QwOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc2VydmVyLmF1dGguS3JiNUF1dGhlbnRpY2F0b3I7CkBAIC0zNyw3ICszOCw2IEBACiBpbXBvcnQgamF2YS51dGlsLk1hcDsKIGltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRpb25FeGNlcHRpb247CiBpbXBvcnQgamF2YXguc2VjdXJpdHkuYXV0aC5sb2dpbi5Mb2dpbkV4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lb3V0RXhjZXB0aW9uOwogCiBpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOwogaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydFRydWU7CkBAIC03OSw3ICs3OSw3IEBACiAgICAgICAgIHNldHRpbmdzLnNzbCA9IHNzbENvbmZpZzsKICAgICAgICAgZmluYWwgU2V0dGluZ3MuQXV0aGVudGljYXRpb25TZXR0aW5ncyBhdXRoU2V0dGluZ3MgPSBuZXcgU2V0dGluZ3MuQXV0aGVudGljYXRpb25TZXR0aW5ncygpOwogICAgICAgICBzZXR0aW5ncy5hdXRoZW50aWNhdGlvbiA9IGF1dGhTZXR0aW5nczsKLSAgICAgICAgYXV0aFNldHRpbmdzLmNsYXNzTmFtZSA9IEtyYjVBdXRoZW50aWNhdG9yLmNsYXNzLmdldE5hbWUoKTsKKyAgICAgICAgYXV0aFNldHRpbmdzLmF1dGhlbnRpY2F0b3IgPSBLcmI1QXV0aGVudGljYXRvci5jbGFzcy5nZXROYW1lKCk7CiAgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsT2JqZWN0PiBhdXRoQ29uZmlnID0gbmV3IEhhc2hNYXA8PigpOwogICAgICAgICBhdXRoQ29uZmlnLnB1dCgicHJpbmNpcGFsIiwga2RjU2VydmVyLnNlcnZlclByaW5jaXBhbCk7CiAgICAgICAgIGF1dGhDb25maWcucHV0KCJrZXl0YWIiLCBrZGNTZXJ2ZXIuc2VydmljZUtleXRhYkZpbGUuZ2V0QWJzb2x1dGVQYXRoKCkpOwpAQCAtMTk4LDIxICsxOTgsMjIgQEAKICAgICB9CiAKICAgICBAVGVzdAotICAgIHB1YmxpYyB2b2lkIHNob3VsZEF1dGhlbnRpY2F0ZVdpdGhTZXJpYWxpemVSZXN1bHRUb1N0cmluZ1YxKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0gICAgICAgIGZpbmFsIE1lc3NhZ2VTZXJpYWxpemVyIHNlcmlhbGl6ZXIgPSBuZXcgR3J5b01lc3NhZ2VTZXJpYWxpemVyVjFkMCgpOwotICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLE9iamVjdD4gY29uZmlnID0gbmV3IEhhc2hNYXA8PigpOwotICAgICAgICBjb25maWcucHV0KCJzZXJpYWxpemVSZXN1bHRUb1N0cmluZyIsIHRydWUpOwotICAgICAgICBzZXJpYWxpemVyLmNvbmZpZ3VyZShjb25maWcsIG51bGwpOwotICAgICAgICBmaW5hbCBDbHVzdGVyIGNsdXN0ZXIgPSBUZXN0Q2xpZW50RmFjdG9yeS5idWlsZCgpLmphYXNFbnRyeShURVNUQ09OU09MRSkKLSAgICAgICAgICAgICAgICAucHJvdG9jb2woa2RjU2VydmVyLnNlcnZlclByaW5jaXBhbE5hbWUpLmFkZENvbnRhY3RQb2ludChrZGNTZXJ2ZXIuaG9zdG5hbWUpLnNlcmlhbGl6ZXIoc2VyaWFsaXplcikuY3JlYXRlKCk7Ci0gICAgICAgIGZpbmFsIENsaWVudCBjbGllbnQgPSBjbHVzdGVyLmNvbm5lY3QoKTsKLSAgICAgICAgYXNzZXJ0Q29ubmVjdGlvbihjbHVzdGVyLCBjbGllbnQpOworICAgIHB1YmxpYyB2b2lkIHNob3VsZEF1dGhlbnRpY2F0ZVdpdGhTZXJpYWxpemVSZXN1bHRUb1N0cmluZ0dyeW9WMSgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBhc3NlcnRBdXRoVmlhVG9TdHJpbmdXaXRoU3BlY2lmaWVkU2VyaWFsaXplcihuZXcgR3J5b01lc3NhZ2VTZXJpYWxpemVyVjFkMCgpKTsKICAgICB9CiAKICAgICBAVGVzdAotICAgIHB1YmxpYyB2b2lkIHNob3VsZEF1dGhlbnRpY2F0ZVdpdGhTZXJpYWxpemVSZXN1bHRUb1N0cmluZ1YzKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0gICAgICAgIGZpbmFsIE1lc3NhZ2VTZXJpYWxpemVyIHNlcmlhbGl6ZXIgPSBuZXcgR3J5b01lc3NhZ2VTZXJpYWxpemVyVjNkMCgpOwotICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLCBPYmplY3Q+IGNvbmZpZyA9IG5ldyBIYXNoTWFwPD4oKTsKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRBdXRoZW50aWNhdGVXaXRoU2VyaWFsaXplUmVzdWx0VG9TdHJpbmdHcnlvVjMoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgYXNzZXJ0QXV0aFZpYVRvU3RyaW5nV2l0aFNwZWNpZmllZFNlcmlhbGl6ZXIobmV3IEdyeW9NZXNzYWdlU2VyaWFsaXplclYzZDAoKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRBdXRoZW50aWNhdGVXaXRoU2VyaWFsaXplUmVzdWx0VG9TdHJpbmdHcmFwaEJpbmFyeVYxKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGFzc2VydEF1dGhWaWFUb1N0cmluZ1dpdGhTcGVjaWZpZWRTZXJpYWxpemVyKG5ldyBHcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjEoKSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgYXNzZXJ0QXV0aFZpYVRvU3RyaW5nV2l0aFNwZWNpZmllZFNlcmlhbGl6ZXIoZmluYWwgTWVzc2FnZVNlcmlhbGl6ZXIgc2VyaWFsaXplcikgdGhyb3dzIEludGVycnVwdGVkRXhjZXB0aW9uLCBFeGVjdXRpb25FeGNlcHRpb24geworICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLE9iamVjdD4gY29uZmlnID0gbmV3IEhhc2hNYXA8PigpOwogICAgICAgICBjb25maWcucHV0KCJzZXJpYWxpemVSZXN1bHRUb1N0cmluZyIsIHRydWUpOwogICAgICAgICBzZXJpYWxpemVyLmNvbmZpZ3VyZShjb25maWcsIG51bGwpOwogICAgICAgICBmaW5hbCBDbHVzdGVyIGNsdXN0ZXIgPSBUZXN0Q2xpZW50RmFjdG9yeS5idWlsZCgpLmphYXNFbnRyeShURVNUQ09OU09MRSkKZGlmZiAtLWdpdCBhL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvR3JlbWxpblNlcnZlckh0dHBJbnRlZ3JhdGVUZXN0LmphdmEgYi9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL0dyZW1saW5TZXJ2ZXJIdHRwSW50ZWdyYXRlVGVzdC5qYXZhCmluZGV4IDFlYzg0YzEuLjBiZDllY2YgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvR3JlbWxpblNlcnZlckh0dHBJbnRlZ3JhdGVUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9HcmVtbGluU2VydmVySHR0cEludGVncmF0ZVRlc3QuamF2YQpAQCAtMTksMTEgKzE5LDEyIEBACiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc2VydmVyOwogCiBpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmxhbmczLlJhbmRvbVN0cmluZ1V0aWxzOworaW1wb3J0IG9yZy5hcGFjaGUuaHR0cC5IdHRwSGVhZGVyczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYxZDA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuVG9rZW5zOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjJkMDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYzZDA7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5qc3IyMjMuU2NyaXB0RmlsZUdyZW1saW5QbHVnaW47CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLlNlclRva2VuczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNlcnZlci5hdXRoLlNpbXBsZUF1dGhlbnRpY2F0b3I7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIuY2hhbm5lbC5IdHRwQ2hhbm5lbGl6ZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIuaGFuZGxlci5IdHRwQmFzaWNBdXRoZW50aWNhdGlvbkhhbmRsZXI7CkBAIC05OSw2ICsxMDAsMTggQEAKICAgICAgICAgICAgICAgICBzZXJpYWxpemVyU2V0dGluZ3NWMy5jbGFzc05hbWUgPSBHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjNkMC5jbGFzcy5nZXROYW1lKCk7CiAgICAgICAgICAgICAgICAgc2V0dGluZ3Muc2VyaWFsaXplcnMuYWRkKHNlcmlhbGl6ZXJTZXR0aW5nc1YzKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgInNob3VsZDIwME9uUE9TVFdpdGhBbnlHcmFwaFNPTkFjY2VwdEhlYWRlckRlZmF1bHRSZXN1bHRUb0pzb24iOgorICAgICAgICAgICAgICAgIHNldHRpbmdzLnNlcmlhbGl6ZXJzLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgZmluYWwgU2V0dGluZ3MuU2VyaWFsaXplclNldHRpbmdzIHNlcmlhbGl6ZXJTZXR0aW5nc0FsbFYxID0gbmV3IFNldHRpbmdzLlNlcmlhbGl6ZXJTZXR0aW5ncygpOworICAgICAgICAgICAgICAgIHNlcmlhbGl6ZXJTZXR0aW5nc0FsbFYxLmNsYXNzTmFtZSA9IEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWMWQwLmNsYXNzLmdldE5hbWUoKTsKKyAgICAgICAgICAgICAgICBzZXR0aW5ncy5zZXJpYWxpemVycy5hZGQoc2VyaWFsaXplclNldHRpbmdzQWxsVjEpOworICAgICAgICAgICAgICAgIGZpbmFsIFNldHRpbmdzLlNlcmlhbGl6ZXJTZXR0aW5ncyBzZXJpYWxpemVyU2V0dGluZ3NBbGxWMiA9IG5ldyBTZXR0aW5ncy5TZXJpYWxpemVyU2V0dGluZ3MoKTsKKyAgICAgICAgICAgICAgICBzZXJpYWxpemVyU2V0dGluZ3NBbGxWMi5jbGFzc05hbWUgPSBHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjJkMC5jbGFzcy5nZXROYW1lKCk7CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc2VyaWFsaXplcnMuYWRkKHNlcmlhbGl6ZXJTZXR0aW5nc0FsbFYyKTsKKyAgICAgICAgICAgICAgICBmaW5hbCBTZXR0aW5ncy5TZXJpYWxpemVyU2V0dGluZ3Mgc2VyaWFsaXplclNldHRpbmdzQWxsVjMgPSBuZXcgU2V0dGluZ3MuU2VyaWFsaXplclNldHRpbmdzKCk7CisgICAgICAgICAgICAgICAgc2VyaWFsaXplclNldHRpbmdzQWxsVjMuY2xhc3NOYW1lID0gR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplclYzZDAuY2xhc3MuZ2V0TmFtZSgpOworICAgICAgICAgICAgICAgIHNldHRpbmdzLnNlcmlhbGl6ZXJzLmFkZChzZXJpYWxpemVyU2V0dGluZ3NBbGxWMyk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlICJzaG91bGQ0MDFPbkdFVFdpdGhOb0F1dGhvcml6YXRpb25IZWFkZXIiOgogICAgICAgICAgICAgY2FzZSAic2hvdWxkNDAxT25QT1NUV2l0aE5vQXV0aG9yaXphdGlvbkhlYWRlciI6CiAgICAgICAgICAgICBjYXNlICJzaG91bGQ0MDFPbkdFVFdpdGhCYWRBdXRob3JpemF0aW9uSGVhZGVyIjoKQEAgLTMzMCwzMiArMzQzLDYgQEAKICAgICB9CiAKICAgICBAVGVzdAotICAgIHB1YmxpYyB2b2lkIHNob3VsZDIwME9uR0VUV2l0aEdyZW1saW5RdWVyeVN0cmluZ0FyZ3VtZW50V2l0aEl0ZXJhdG9yUmVzdWx0QW5kQWxpYXNlcygpIHRocm93cyBFeGNlcHRpb24gewotICAgICAgICAvLyB3ZSBjYW4gcmVtb3ZlIHRoaXMgZmlyc3QgdGVzdCB3aGVuIHJlYmluZGluZ3MgYXJlIGNvbXBsZXRlbHkgcmVtb3ZlZAotICAgICAgICBmaW5hbCBDbG9zZWFibGVIdHRwQ2xpZW50IGh0dHBjbGllbnRMZWdhY3kgPSBIdHRwQ2xpZW50cy5jcmVhdGVEZWZhdWx0KCk7Ci0gICAgICAgIGZpbmFsIEh0dHBHZXQgaHR0cGdldExlZ2FjeSA9IG5ldyBIdHRwR2V0KFRlc3RDbGllbnRGYWN0b3J5LmNyZWF0ZVVSTFN0cmluZygiP2dyZW1saW49ZzEuVigpJnJlYmluZGluZ3MuZzE9Z2NsYXNzaWMiKSk7Ci0KLSAgICAgICAgdHJ5IChmaW5hbCBDbG9zZWFibGVIdHRwUmVzcG9uc2UgcmVzcG9uc2UgPSBodHRwY2xpZW50TGVnYWN5LmV4ZWN1dGUoaHR0cGdldExlZ2FjeSkpIHsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscygyMDAsIHJlc3BvbnNlLmdldFN0YXR1c0xpbmUoKS5nZXRTdGF0dXNDb2RlKCkpOwotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJhcHBsaWNhdGlvbi9qc29uIiwgcmVzcG9uc2UuZ2V0RW50aXR5KCkuZ2V0Q29udGVudFR5cGUoKS5nZXRWYWx1ZSgpKTsKLSAgICAgICAgICAgIGZpbmFsIFN0cmluZyBqc29uID0gRW50aXR5VXRpbHMudG9TdHJpbmcocmVzcG9uc2UuZ2V0RW50aXR5KCkpOwotICAgICAgICAgICAgZmluYWwgSnNvbk5vZGUgbm9kZSA9IG1hcHBlci5yZWFkVHJlZShqc29uKTsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscyg2LCBub2RlLmdldCgicmVzdWx0IikuZ2V0KCJkYXRhIikuZ2V0KEdyYXBoU09OVG9rZW5zLlZBTFVFUFJPUCkuc2l6ZSgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZpbmFsIENsb3NlYWJsZUh0dHBDbGllbnQgaHR0cGNsaWVudCA9IEh0dHBDbGllbnRzLmNyZWF0ZURlZmF1bHQoKTsKLSAgICAgICAgZmluYWwgSHR0cEdldCBodHRwZ2V0ID0gbmV3IEh0dHBHZXQoVGVzdENsaWVudEZhY3RvcnkuY3JlYXRlVVJMU3RyaW5nKCI/Z3JlbWxpbj1nMS5WKCkmYWxpYXNlcy5nMT1nY2xhc3NpYyIpKTsKLQotICAgICAgICB0cnkgKGZpbmFsIENsb3NlYWJsZUh0dHBSZXNwb25zZSByZXNwb25zZSA9IGh0dHBjbGllbnQuZXhlY3V0ZShodHRwZ2V0KSkgewotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDIwMCwgcmVzcG9uc2UuZ2V0U3RhdHVzTGluZSgpLmdldFN0YXR1c0NvZGUoKSk7Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoImFwcGxpY2F0aW9uL2pzb24iLCByZXNwb25zZS5nZXRFbnRpdHkoKS5nZXRDb250ZW50VHlwZSgpLmdldFZhbHVlKCkpOwotICAgICAgICAgICAgZmluYWwgU3RyaW5nIGpzb24gPSBFbnRpdHlVdGlscy50b1N0cmluZyhyZXNwb25zZS5nZXRFbnRpdHkoKSk7Ci0gICAgICAgICAgICBmaW5hbCBKc29uTm9kZSBub2RlID0gbWFwcGVyLnJlYWRUcmVlKGpzb24pOwotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDYsIG5vZGUuZ2V0KCJyZXN1bHQiKS5nZXQoImRhdGEiKS5nZXQoR3JhcGhTT05Ub2tlbnMuVkFMVUVQUk9QKS5zaXplKCkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgQFRlc3QKICAgICBwdWJsaWMgdm9pZCBzaG91bGQyMDBPbkdFVFdpdGhHcmVtbGluUXVlcnlTdHJpbmdBcmd1bWVudCgpIHRocm93cyBFeGNlcHRpb24gewogICAgICAgICBmaW5hbCBDbG9zZWFibGVIdHRwQ2xpZW50IGh0dHBjbGllbnQgPSBIdHRwQ2xpZW50cy5jcmVhdGVEZWZhdWx0KCk7CiAgICAgICAgIGZpbmFsIEh0dHBHZXQgaHR0cGdldCA9IG5ldyBIdHRwR2V0KFRlc3RDbGllbnRGYWN0b3J5LmNyZWF0ZVVSTFN0cmluZygiP2dyZW1saW49MS0xIikpOwpAQCAtNTA0LDIwICs0OTEsNiBAQAogICAgIHB1YmxpYyB2b2lkIHNob3VsZDIwME9uUE9TVFRyYW5zYWN0aW9uYWxHcmFwaEluU3RyaWN0TW9kZSgpIHRocm93cyBFeGNlcHRpb24gewogICAgICAgICBhc3N1bWVOZW80aklzUHJlc2VudCgpOwogCi0gICAgICAgIC8vIHdlIGNhbiByZW1vdmUgdGhpcyBmaXJzdCB0ZXN0IHdoZW4gcmViaW5kaW5ncyBhcmUgY29tcGxldGVseSByZW1vdmVkCi0gICAgICAgIGZpbmFsIENsb3NlYWJsZUh0dHBDbGllbnQgaHR0cGNsaWVudExlZ2FjeSA9IEh0dHBDbGllbnRzLmNyZWF0ZURlZmF1bHQoKTsKLSAgICAgICAgZmluYWwgSHR0cFBvc3QgaHR0cHBvc3RMZWdhY3kgPSBuZXcgSHR0cFBvc3QoVGVzdENsaWVudEZhY3RvcnkuY3JlYXRlVVJMU3RyaW5nKCkpOwotICAgICAgICBodHRwcG9zdExlZ2FjeS5hZGRIZWFkZXIoIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qc29uIik7Ci0gICAgICAgIGh0dHBwb3N0TGVnYWN5LnNldEVudGl0eShuZXcgU3RyaW5nRW50aXR5KCJ7XCJncmVtbGluXCI6XCJnMS5hZGRWKClcIixcInJlYmluZGluZ3NcIjp7XCJnMVwiOlwiZ1wifX0iLCBDb25zdHMuVVRGXzgpKTsKLQotICAgICAgICB0cnkgKGZpbmFsIENsb3NlYWJsZUh0dHBSZXNwb25zZSByZXNwb25zZSA9IGh0dHBjbGllbnRMZWdhY3kuZXhlY3V0ZShodHRwcG9zdExlZ2FjeSkpIHsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscygyMDAsIHJlc3BvbnNlLmdldFN0YXR1c0xpbmUoKS5nZXRTdGF0dXNDb2RlKCkpOwotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJhcHBsaWNhdGlvbi9qc29uIiwgcmVzcG9uc2UuZ2V0RW50aXR5KCkuZ2V0Q29udGVudFR5cGUoKS5nZXRWYWx1ZSgpKTsKLSAgICAgICAgICAgIGZpbmFsIFN0cmluZyBqc29uID0gRW50aXR5VXRpbHMudG9TdHJpbmcocmVzcG9uc2UuZ2V0RW50aXR5KCkpOwotICAgICAgICAgICAgZmluYWwgSnNvbk5vZGUgbm9kZSA9IG1hcHBlci5yZWFkVHJlZShqc29uKTsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscygxLCBub2RlLmdldCgicmVzdWx0IikuZ2V0KCJkYXRhIikuZ2V0KEdyYXBoU09OVG9rZW5zLlZBTFVFUFJPUCkuc2l6ZSgpKTsKLSAgICAgICAgfQotCiAgICAgICAgIGZpbmFsIENsb3NlYWJsZUh0dHBDbGllbnQgaHR0cGNsaWVudCA9IEh0dHBDbGllbnRzLmNyZWF0ZURlZmF1bHQoKTsKICAgICAgICAgZmluYWwgSHR0cFBvc3QgaHR0cHBvc3QgPSBuZXcgSHR0cFBvc3QoVGVzdENsaWVudEZhY3RvcnkuY3JlYXRlVVJMU3RyaW5nKCkpOwogICAgICAgICBodHRwcG9zdC5hZGRIZWFkZXIoIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qc29uIik7CkBAIC01NzAsMjAgKzU0Myw2IEBACiAKICAgICBAVGVzdAogICAgIHB1YmxpYyB2b2lkIHNob3VsZDIwME9uUE9TVFdpdGhHcmVtbGluSnNvbkVuZGNvZGVkQm9keVdpdGhJdGVyYXRvclJlc3VsdEFuZEFsaWFzZXMoKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICAgICAgLy8gd2UgY2FuIHJlbW92ZSB0aGlzIGZpcnN0IHRlc3Qgd2hlbiByZWJpbmRpbmdzIGFyZSBjb21wbGV0ZWx5IHJlbW92ZWQKLSAgICAgICAgZmluYWwgQ2xvc2VhYmxlSHR0cENsaWVudCBodHRwY2xpZW50TGVnYWN5ID0gSHR0cENsaWVudHMuY3JlYXRlRGVmYXVsdCgpOwotICAgICAgICBmaW5hbCBIdHRwUG9zdCBodHRwcG9zdExlZ2FjeSA9IG5ldyBIdHRwUG9zdChUZXN0Q2xpZW50RmFjdG9yeS5jcmVhdGVVUkxTdHJpbmcoKSk7Ci0gICAgICAgIGh0dHBwb3N0TGVnYWN5LmFkZEhlYWRlcigiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2pzb24iKTsKLSAgICAgICAgaHR0cHBvc3RMZWdhY3kuc2V0RW50aXR5KG5ldyBTdHJpbmdFbnRpdHkoIntcImdyZW1saW5cIjpcImcxLlYoKVwiLFwicmViaW5kaW5nc1wiOntcImcxXCI6XCJnY2xhc3NpY1wifX0iLCBDb25zdHMuVVRGXzgpKTsKLQotICAgICAgICB0cnkgKGZpbmFsIENsb3NlYWJsZUh0dHBSZXNwb25zZSByZXNwb25zZSA9IGh0dHBjbGllbnRMZWdhY3kuZXhlY3V0ZShodHRwcG9zdExlZ2FjeSkpIHsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscygyMDAsIHJlc3BvbnNlLmdldFN0YXR1c0xpbmUoKS5nZXRTdGF0dXNDb2RlKCkpOwotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJhcHBsaWNhdGlvbi9qc29uIiwgcmVzcG9uc2UuZ2V0RW50aXR5KCkuZ2V0Q29udGVudFR5cGUoKS5nZXRWYWx1ZSgpKTsKLSAgICAgICAgICAgIGZpbmFsIFN0cmluZyBqc29uID0gRW50aXR5VXRpbHMudG9TdHJpbmcocmVzcG9uc2UuZ2V0RW50aXR5KCkpOwotICAgICAgICAgICAgZmluYWwgSnNvbk5vZGUgbm9kZSA9IG1hcHBlci5yZWFkVHJlZShqc29uKTsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscyg2LCBub2RlLmdldCgicmVzdWx0IikuZ2V0KCJkYXRhIikuZ2V0KEdyYXBoU09OVG9rZW5zLlZBTFVFUFJPUCkuc2l6ZSgpKTsKLSAgICAgICAgfQotCiAgICAgICAgIGZpbmFsIENsb3NlYWJsZUh0dHBDbGllbnQgaHR0cGNsaWVudCA9IEh0dHBDbGllbnRzLmNyZWF0ZURlZmF1bHQoKTsKICAgICAgICAgZmluYWwgSHR0cFBvc3QgaHR0cHBvc3QgPSBuZXcgSHR0cFBvc3QoVGVzdENsaWVudEZhY3RvcnkuY3JlYXRlVVJMU3RyaW5nKCkpOwogICAgICAgICBodHRwcG9zdC5hZGRIZWFkZXIoIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qc29uIik7CkBAIC04MjYsNyArNzg1LDcgQEAKIAogICAgICAgICB0cnkgKGZpbmFsIENsb3NlYWJsZUh0dHBSZXNwb25zZSByZXNwb25zZSA9IGh0dHBjbGllbnQuZXhlY3V0ZShodHRwcG9zdCkpIHsKICAgICAgICAgICAgIGFzc2VydEVxdWFscygyMDAsIHJlc3BvbnNlLmdldFN0YXR1c0xpbmUoKS5nZXRTdGF0dXNDb2RlKCkpOwotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJhcHBsaWNhdGlvbi9qc29uIiwgcmVzcG9uc2UuZ2V0RW50aXR5KCkuZ2V0Q29udGVudFR5cGUoKS5nZXRWYWx1ZSgpKTsKKyAgICAgICAgICAgIGFzc2VydEVxdWFscyhTZXJUb2tlbnMuTUlNRV9KU09OLCByZXNwb25zZS5nZXRFbnRpdHkoKS5nZXRDb250ZW50VHlwZSgpLmdldFZhbHVlKCkpOwogICAgICAgICAgICAgZmluYWwgU3RyaW5nIGpzb24gPSBFbnRpdHlVdGlscy50b1N0cmluZyhyZXNwb25zZS5nZXRFbnRpdHkoKSk7CiAgICAgICAgICAgICBmaW5hbCBKc29uTm9kZSBub2RlID0gbWFwcGVyLnJlYWRUcmVlKGpzb24pOwogICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIG5vZGUuZ2V0KCJyZXN1bHQiKS5nZXQoImRhdGEiKS5nZXQoMCkuYXNJbnQoKSk7CkBAIC04NDEsNyArODAwLDcgQEAKIAogICAgICAgICB0cnkgKGZpbmFsIENsb3NlYWJsZUh0dHBSZXNwb25zZSByZXNwb25zZSA9IGh0dHBjbGllbnQuZXhlY3V0ZShodHRwcG9zdCkpIHsKICAgICAgICAgICAgIGFzc2VydEVxdWFscygyMDAsIHJlc3BvbnNlLmdldFN0YXR1c0xpbmUoKS5nZXRTdGF0dXNDb2RlKCkpOwotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJhcHBsaWNhdGlvbi9qc29uIiwgcmVzcG9uc2UuZ2V0RW50aXR5KCkuZ2V0Q29udGVudFR5cGUoKS5nZXRWYWx1ZSgpKTsKKyAgICAgICAgICAgIGFzc2VydEVxdWFscyhTZXJUb2tlbnMuTUlNRV9KU09OLCByZXNwb25zZS5nZXRFbnRpdHkoKS5nZXRDb250ZW50VHlwZSgpLmdldFZhbHVlKCkpOwogICAgICAgICAgICAgZmluYWwgU3RyaW5nIGpzb24gPSBFbnRpdHlVdGlscy50b1N0cmluZyhyZXNwb25zZS5nZXRFbnRpdHkoKSk7CiAgICAgICAgICAgICBmaW5hbCBKc29uTm9kZSBub2RlID0gbWFwcGVyLnJlYWRUcmVlKGpzb24pOwogICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIG5vZGUuZ2V0KCJyZXN1bHQiKS5nZXQoImRhdGEiKS5nZXQoMCkuYXNJbnQoKSk7CkBAIC04NTYsNyArODE1LDUwIEBACiAKICAgICAgICAgdHJ5IChmaW5hbCBDbG9zZWFibGVIdHRwUmVzcG9uc2UgcmVzcG9uc2UgPSBodHRwY2xpZW50LmV4ZWN1dGUoaHR0cHBvc3QpKSB7CiAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMjAwLCByZXNwb25zZS5nZXRTdGF0dXNMaW5lKCkuZ2V0U3RhdHVzQ29kZSgpKTsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscygiYXBwbGljYXRpb24vanNvbiIsIHJlc3BvbnNlLmdldEVudGl0eSgpLmdldENvbnRlbnRUeXBlKCkuZ2V0VmFsdWUoKSk7CisgICAgICAgICAgICBhc3NlcnRFcXVhbHMoU2VyVG9rZW5zLk1JTUVfSlNPTiwgcmVzcG9uc2UuZ2V0RW50aXR5KCkuZ2V0Q29udGVudFR5cGUoKS5nZXRWYWx1ZSgpKTsKKyAgICAgICAgICAgIGZpbmFsIFN0cmluZyBqc29uID0gRW50aXR5VXRpbHMudG9TdHJpbmcocmVzcG9uc2UuZ2V0RW50aXR5KCkpOworICAgICAgICAgICAgZmluYWwgSnNvbk5vZGUgbm9kZSA9IG1hcHBlci5yZWFkVHJlZShqc29uKTsKKyAgICAgICAgICAgIGFzc2VydEVxdWFscygwLCBub2RlLmdldCgicmVzdWx0IikuZ2V0KCJkYXRhIikuZ2V0KEdyYXBoU09OVG9rZW5zLlZBTFVFUFJPUCkuZ2V0KDApLmdldChHcmFwaFNPTlRva2Vucy5WQUxVRVBST1ApLmFzSW50KCkpOworICAgICAgICB9CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGQyMDBPblBPU1RXaXRoQW55R3JhcGhTT05BY2NlcHRIZWFkZXJEZWZhdWx0UmVzdWx0VG9Kc29uKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIENsb3NlYWJsZUh0dHBDbGllbnQgaHR0cGNsaWVudCA9IEh0dHBDbGllbnRzLmNyZWF0ZURlZmF1bHQoKTsKKyAgICAgICAgZmluYWwgSHR0cFBvc3QgaHR0cHBvc3QxID0gbmV3IEh0dHBQb3N0KFRlc3RDbGllbnRGYWN0b3J5LmNyZWF0ZVVSTFN0cmluZygpKTsKKyAgICAgICAgaHR0cHBvc3QxLnNldEhlYWRlcihIdHRwSGVhZGVycy5DT05URU5UX1RZUEUsIFNlclRva2Vucy5NSU1FX0pTT04pOworICAgICAgICBodHRwcG9zdDEuc2V0SGVhZGVyKEh0dHBIZWFkZXJzLkFDQ0VQVCwgU2VyVG9rZW5zLk1JTUVfSlNPTik7CisgICAgICAgIGh0dHBwb3N0MS5zZXRFbnRpdHkobmV3IFN0cmluZ0VudGl0eSgie1wiZ3JlbWxpblwiOlwiMS0xXCJ9IiwgQ29uc3RzLlVURl84KSk7CisKKyAgICAgICAgdHJ5IChmaW5hbCBDbG9zZWFibGVIdHRwUmVzcG9uc2UgcmVzcG9uc2UgPSBodHRwY2xpZW50LmV4ZWN1dGUoaHR0cHBvc3QxKSkgeworICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDIwMCwgcmVzcG9uc2UuZ2V0U3RhdHVzTGluZSgpLmdldFN0YXR1c0NvZGUoKSk7CisgICAgICAgICAgICBhc3NlcnRFcXVhbHMoU2VyVG9rZW5zLk1JTUVfSlNPTiwgcmVzcG9uc2UuZ2V0RW50aXR5KCkuZ2V0Q29udGVudFR5cGUoKS5nZXRWYWx1ZSgpKTsKKyAgICAgICAgICAgIGZpbmFsIFN0cmluZyBqc29uID0gRW50aXR5VXRpbHMudG9TdHJpbmcocmVzcG9uc2UuZ2V0RW50aXR5KCkpOworICAgICAgICAgICAgZmluYWwgSnNvbk5vZGUgbm9kZSA9IG1hcHBlci5yZWFkVHJlZShqc29uKTsKKyAgICAgICAgICAgIGFzc2VydEVxdWFscygwLCBub2RlLmdldCgicmVzdWx0IikuZ2V0KCJkYXRhIikuZ2V0KDApLmFzSW50KCkpOworICAgICAgICB9CisKKyAgICAgICAgZmluYWwgSHR0cFBvc3QgaHR0cHBvc3QyID0gbmV3IEh0dHBQb3N0KFRlc3RDbGllbnRGYWN0b3J5LmNyZWF0ZVVSTFN0cmluZygpKTsKKyAgICAgICAgaHR0cHBvc3QyLnNldEhlYWRlcihIdHRwSGVhZGVycy5DT05URU5UX1RZUEUsIFNlclRva2Vucy5NSU1FX0pTT04pOworICAgICAgICBodHRwcG9zdDIuc2V0SGVhZGVyKEh0dHBIZWFkZXJzLkFDQ0VQVCwgU2VyVG9rZW5zLk1JTUVfR1JBUEhTT05fVjJEMCk7CisgICAgICAgIGh0dHBwb3N0Mi5zZXRFbnRpdHkobmV3IFN0cmluZ0VudGl0eSgie1wiZ3JlbWxpblwiOlwiMS0xXCJ9IiwgQ29uc3RzLlVURl84KSk7CisKKyAgICAgICAgdHJ5IChmaW5hbCBDbG9zZWFibGVIdHRwUmVzcG9uc2UgcmVzcG9uc2UgPSBodHRwY2xpZW50LmV4ZWN1dGUoaHR0cHBvc3QyKSkgeworICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDIwMCwgcmVzcG9uc2UuZ2V0U3RhdHVzTGluZSgpLmdldFN0YXR1c0NvZGUoKSk7CisgICAgICAgICAgICBhc3NlcnRFcXVhbHMoU2VyVG9rZW5zLk1JTUVfR1JBUEhTT05fVjJEMCwgcmVzcG9uc2UuZ2V0RW50aXR5KCkuZ2V0Q29udGVudFR5cGUoKS5nZXRWYWx1ZSgpKTsKKyAgICAgICAgICAgIGZpbmFsIFN0cmluZyBqc29uID0gRW50aXR5VXRpbHMudG9TdHJpbmcocmVzcG9uc2UuZ2V0RW50aXR5KCkpOworICAgICAgICAgICAgZmluYWwgSnNvbk5vZGUgbm9kZSA9IG1hcHBlci5yZWFkVHJlZShqc29uKTsKKyAgICAgICAgICAgIGFzc2VydEVxdWFscygwLCBub2RlLmdldCgicmVzdWx0IikuZ2V0KCJkYXRhIikuZ2V0KDApLmdldChHcmFwaFNPTlRva2Vucy5WQUxVRVBST1ApLmFzSW50KCkpOworICAgICAgICB9CisKKyAgICAgICAgZmluYWwgSHR0cFBvc3QgaHR0cHBvc3QzID0gbmV3IEh0dHBQb3N0KFRlc3RDbGllbnRGYWN0b3J5LmNyZWF0ZVVSTFN0cmluZygpKTsKKyAgICAgICAgaHR0cHBvc3QzLnNldEhlYWRlcihIdHRwSGVhZGVycy5DT05URU5UX1RZUEUsIFNlclRva2Vucy5NSU1FX0pTT04pOworICAgICAgICBodHRwcG9zdDMuc2V0SGVhZGVyKEh0dHBIZWFkZXJzLkFDQ0VQVCwgU2VyVG9rZW5zLk1JTUVfR1JBUEhTT05fVjNEMCk7CisgICAgICAgIGh0dHBwb3N0My5zZXRFbnRpdHkobmV3IFN0cmluZ0VudGl0eSgie1wiZ3JlbWxpblwiOlwiMS0xXCJ9IiwgQ29uc3RzLlVURl84KSk7CisKKyAgICAgICAgdHJ5IChmaW5hbCBDbG9zZWFibGVIdHRwUmVzcG9uc2UgcmVzcG9uc2UgPSBodHRwY2xpZW50LmV4ZWN1dGUoaHR0cHBvc3QzKSkgeworICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDIwMCwgcmVzcG9uc2UuZ2V0U3RhdHVzTGluZSgpLmdldFN0YXR1c0NvZGUoKSk7CisgICAgICAgICAgICBhc3NlcnRFcXVhbHMoU2VyVG9rZW5zLk1JTUVfR1JBUEhTT05fVjNEMCwgcmVzcG9uc2UuZ2V0RW50aXR5KCkuZ2V0Q29udGVudFR5cGUoKS5nZXRWYWx1ZSgpKTsKICAgICAgICAgICAgIGZpbmFsIFN0cmluZyBqc29uID0gRW50aXR5VXRpbHMudG9TdHJpbmcocmVzcG9uc2UuZ2V0RW50aXR5KCkpOwogICAgICAgICAgICAgZmluYWwgSnNvbk5vZGUgbm9kZSA9IG1hcHBlci5yZWFkVHJlZShqc29uKTsKICAgICAgICAgICAgIGFzc2VydEVxdWFscygwLCBub2RlLmdldCgicmVzdWx0IikuZ2V0KCJkYXRhIikuZ2V0KEdyYXBoU09OVG9rZW5zLlZBTFVFUFJPUCkuZ2V0KDApLmdldChHcmFwaFNPTlRva2Vucy5WQUxVRVBST1ApLmFzSW50KCkpOwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9HcmVtbGluU2VydmVySW50ZWdyYXRlVGVzdC5qYXZhIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9HcmVtbGluU2VydmVySW50ZWdyYXRlVGVzdC5qYXZhCmluZGV4IDA5MDU2YzIuLjIzZDRmZTAgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvR3JlbWxpblNlcnZlckludGVncmF0ZVRlc3QuamF2YQorKysgYi9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL0dyZW1saW5TZXJ2ZXJJbnRlZ3JhdGVUZXN0LmphdmEKQEAgLTE4LDEyICsxOCw2IEBACiAgKi8KIHBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXI7CiAKLWltcG9ydCBpby5uZXR0eS5oYW5kbGVyLnNzbC5DbGllbnRBdXRoOwotaW1wb3J0IGlvLm5ldHR5LmhhbmRsZXIuc3NsLlNzbENvbnRleHQ7Ci1pbXBvcnQgaW8ubmV0dHkuaGFuZGxlci5zc2wuU3NsQ29udGV4dEJ1aWxkZXI7Ci1pbXBvcnQgaW8ubmV0dHkuaGFuZGxlci5zc2wuU3NsUHJvdmlkZXI7Ci1pbXBvcnQgaW8ubmV0dHkuaGFuZGxlci5zc2wudXRpbC5JbnNlY3VyZVRydXN0TWFuYWdlckZhY3Rvcnk7Ci1pbXBvcnQgaW8ubmV0dHkuaGFuZGxlci5zc2wudXRpbC5TZWxmU2lnbmVkQ2VydGlmaWNhdGU7CiBpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmNvbmZpZ3VyYXRpb24uQmFzZUNvbmZpZ3VyYXRpb247CiBpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmNvbmZpZ3VyYXRpb24uQ29uZmlndXJhdGlvbjsKIGltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMubGFuZzMuZXhjZXB0aW9uLkV4Y2VwdGlvblV0aWxzOwpAQCAtNDcsNyArNDEsNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ3Jvb3Z5LmpzcjIyMy5Hcm9vdnlDb21waWxlckdyZW1saW5QbHVnaW47CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5ncm9vdnkuanNyMjIzLmN1c3RvbWl6ZXIuU2ltcGxlU2FuZGJveEV4dGVuc2lvbjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmpzcjIyMy5TY3JpcHRGaWxlR3JlbWxpblBsdWdpbjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MucmVtb3RlLlJlbW90ZUdyYXBoOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlJlbW90ZUdyYXBoOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkdyYXBoVHJhdmVyc2FsOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkdyYXBoVHJhdmVyc2FsU291cmNlOwpAQCAtNTksNyArNTMsNiBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkdyYXBoOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlQ7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4OwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuZGV0YWNoZWQuRGV0YWNoZWRWZXJ0ZXg7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi51dGlsLkxvZzRqUmVjb3JkaW5nQXBwZW5kZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi51dGlsLmZ1bmN0aW9uLkxhbWJkYTsKIGltcG9ydCBvcmcuaGFtY3Jlc3QuQ29yZU1hdGNoZXJzOwpAQCAtNjgsOCArNjEsNiBAQAogaW1wb3J0IG9yZy5qdW5pdC5CZWZvcmU7CiBpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CiBpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuRmllbGQ7Ci1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOwogaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwogaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsKQEAgLTg0LDYgKzc1LDggQEAKIGltcG9ydCBqYXZhLnV0aWwuZnVuY3Rpb24uU3VwcGxpZXI7CiBpbXBvcnQgamF2YS51dGlsLnN0cmVhbS5Db2xsZWN0b3JzOwogaW1wb3J0IGphdmEudXRpbC5zdHJlYW0uSW50U3RyZWFtOworCitpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLlRva2Vucy5BUkdTX1NDUklQVF9FVkFMX1RJTUVPVVQ7CiBpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ3Jvb3Z5LmpzcjIyMy5Hcm9vdnlDb21waWxlckdyZW1saW5QbHVnaW4uQ29tcGlsYXRpb24uQ09NUElMRV9TVEFUSUM7CiBpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5yZW1vdGUuUmVtb3RlQ29ubmVjdGlvbi5HUkVNTElOX1JFTU9URTsKIGltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnJlbW90ZS5SZW1vdGVDb25uZWN0aW9uLkdSRU1MSU5fUkVNT1RFX0NPTk5FQ1RJT05fQ0xBU1M7CkBAIC05Myw3ICs4Niw2IEBACiBpbXBvcnQgc3RhdGljIG9yZy5oYW1jcmVzdC5NYXRjaGVyQXNzZXJ0LmFzc2VydFRoYXQ7CiBpbXBvcnQgc3RhdGljIG9yZy5oYW1jcmVzdC5jb3JlLklzSW5zdGFuY2VPZi5pbnN0YW5jZU9mOwogaW1wb3J0IHN0YXRpYyBvcmcuaGFtY3Jlc3QuY29yZS5Jc05vdC5ub3Q7Ci1pbXBvcnQgc3RhdGljIG9yZy5oYW1jcmVzdC5jb3JlLlN0cmluZ0VuZHNXaXRoLmVuZHNXaXRoOwogaW1wb3J0IHN0YXRpYyBvcmcuaGFtY3Jlc3QuY29yZS5TdHJpbmdTdGFydHNXaXRoLnN0YXJ0c1dpdGg7CiBpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOwogaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydE51bGw7CkBAIC0xMDUsMTAgKzk3LDYgQEAKICAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKICAqLwogcHVibGljIGNsYXNzIEdyZW1saW5TZXJ2ZXJJbnRlZ3JhdGVUZXN0IGV4dGVuZHMgQWJzdHJhY3RHcmVtbGluU2VydmVySW50ZWdyYXRpb25UZXN0IHsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgUEVNX1NFUlZFUl9LRVkgPSAic3JjL3Rlc3QvcmVzb3VyY2VzL3NlcnZlci5rZXkucGs4IjsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgUEVNX1NFUlZFUl9DUlQgPSAic3JjL3Rlc3QvcmVzb3VyY2VzL3NlcnZlci5jcnQiOwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBQRU1fQ0xJRU5UX0tFWSA9ICJzcmMvdGVzdC9yZXNvdXJjZXMvY2xpZW50LmtleS5wazgiOwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBQRU1fQ0xJRU5UX0NSVCA9ICJzcmMvdGVzdC9yZXNvdXJjZXMvY2xpZW50LmNydCI7CiAgICAgcHJpdmF0ZSBMZXZlbCBwcmV2aW91c0xvZ0xldmVsOwogCiAgICAgcHJpdmF0ZSBMb2c0alJlY29yZGluZ0FwcGVuZGVyIHJlY29yZGluZ0FwcGVuZGVyID0gbnVsbDsKQEAgLTE3NCwxMTIgKzE2MiwxMiBAQAogICAgICAgICAgICAgY2FzZSAic2hvdWxkUmVjZWl2ZUZhaWx1cmVUaW1lT3V0T25TY3JpcHRFdmFsIjoKICAgICAgICAgICAgICAgICBzZXR0aW5ncy5ldmFsdWF0aW9uVGltZW91dCA9IDEwMDA7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICJzaG91bGRSZWNlaXZlRmFpbHVyZVRpbWVPdXRPblRvdGFsU2VyaWFsaXphdGlvbiI6Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc2VyaWFsaXplZFJlc3BvbnNlVGltZW91dCA9IDE7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlICJzaG91bGRCbG9ja1JlcXVlc3RXaGVuVG9vQmlnIjoKICAgICAgICAgICAgICAgICBzZXR0aW5ncy5tYXhDb250ZW50TGVuZ3RoID0gMTAyNDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgInNob3VsZEJhdGNoUmVzdWx0c0J5VHdvcyI6CiAgICAgICAgICAgICAgICAgc2V0dGluZ3MucmVzdWx0SXRlcmF0aW9uQmF0Y2hTaXplID0gMjsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgInNob3VsZEVuYWJsZVNzbCI6Ci0gICAgICAgICAgICBjYXNlICJzaG91bGRFbmFibGVTc2xCdXRGYWlsSWZDbGllbnRDb25uZWN0c1dpdGhvdXRJdCI6Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsID0gbmV3IFNldHRpbmdzLlNzbFNldHRpbmdzKCk7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmVuYWJsZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5rZXlTdG9yZSA9IEpLU19TRVJWRVJfS0VZOwotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5rZXlTdG9yZVBhc3N3b3JkID0gS0VZX1BBU1M7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmtleVN0b3JlVHlwZSA9IEtFWVNUT1JFX1RZUEVfSktTOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAic2hvdWxkRW5hYmxlU3NsV2l0aFNzbENvbnRleHRQcm9ncmFtbWF0aWNhbGx5U3BlY2lmaWVkIjoKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wgPSBuZXcgU2V0dGluZ3MuU3NsU2V0dGluZ3MoKTsKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wuZW5hYmxlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLm92ZXJyaWRlU3NsQ29udGV4dChjcmVhdGVTZXJ2ZXJTc2xDb250ZXh0KCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAic2hvdWxkRW5hYmxlU3NsQW5kQ2xpZW50Q2VydGlmaWNhdGVBdXRoV2l0aExlZ2FjeVBlbSI6Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsID0gbmV3IFNldHRpbmdzLlNzbFNldHRpbmdzKCk7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmVuYWJsZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5uZWVkQ2xpZW50QXV0aCA9IENsaWVudEF1dGguUkVRVUlSRTsKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wua2V5Q2VydENoYWluRmlsZSA9IFBFTV9TRVJWRVJfQ1JUOwotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5rZXlGaWxlID0gUEVNX1NFUlZFUl9LRVk7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmtleVBhc3N3b3JkID0gS0VZX1BBU1M7Ci0gICAgICAgICAgICAgICAgLy8gVHJ1c3QgdGhlIGNsaWVudAotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC50cnVzdENlcnRDaGFpbkZpbGUgPSBQRU1fQ0xJRU5UX0NSVDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgInNob3VsZEVuYWJsZVNzbEFuZENsaWVudENlcnRpZmljYXRlQXV0aEFuZEZhaWxXaXRob3V0Q2VydFdpdGhMZWdhY3lQZW0iOgotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbCA9IG5ldyBTZXR0aW5ncy5Tc2xTZXR0aW5ncygpOwotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5lbmFibGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wubmVlZENsaWVudEF1dGggPSBDbGllbnRBdXRoLlJFUVVJUkU7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmtleUNlcnRDaGFpbkZpbGUgPSBQRU1fU0VSVkVSX0NSVDsKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wua2V5RmlsZSA9IFBFTV9TRVJWRVJfS0VZOwotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5rZXlQYXNzd29yZCA9IEtFWV9QQVNTOwotICAgICAgICAgICAgICAgIC8vIFRydXN0IHRoZSBjbGllbnQKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wudHJ1c3RDZXJ0Q2hhaW5GaWxlID0gUEVNX0NMSUVOVF9DUlQ7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICJzaG91bGRFbmFibGVTc2xBbmRDbGllbnRDZXJ0aWZpY2F0ZUF1dGhBbmRGYWlsV2l0aG91dFRydXN0ZWRDbGllbnRDZXJ0V2l0aExlZ2FjeVBlbSI6Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsID0gbmV3IFNldHRpbmdzLlNzbFNldHRpbmdzKCk7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmVuYWJsZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5uZWVkQ2xpZW50QXV0aCA9IENsaWVudEF1dGguUkVRVUlSRTsKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wua2V5Q2VydENoYWluRmlsZSA9IFBFTV9TRVJWRVJfQ1JUOwotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5rZXlGaWxlID0gUEVNX1NFUlZFUl9LRVk7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmtleVBhc3N3b3JkID0gS0VZX1BBU1M7Ci0gICAgICAgICAgICAgICAgLy8gVHJ1c3QgT05MWSB0aGUgc2VydmVyIGNlcnQKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wudHJ1c3RDZXJ0Q2hhaW5GaWxlID0gUEVNX1NFUlZFUl9DUlQ7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICJzaG91bGRFbmFibGVTc2xBbmRDbGllbnRDZXJ0aWZpY2F0ZUF1dGhXaXRoUGtjczEyIjoKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wgPSBuZXcgU2V0dGluZ3MuU3NsU2V0dGluZ3MoKTsKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wuZW5hYmxlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLm5lZWRDbGllbnRBdXRoID0gQ2xpZW50QXV0aC5SRVFVSVJFOwotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5rZXlTdG9yZSA9IFAxMl9TRVJWRVJfS0VZOwotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5rZXlTdG9yZVBhc3N3b3JkID0gS0VZX1BBU1M7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmtleVN0b3JlVHlwZSA9IEtFWVNUT1JFX1RZUEVfUEtDUzEyOwotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC50cnVzdFN0b3JlID0gUDEyX1NFUlZFUl9UUlVTVDsKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wudHJ1c3RTdG9yZVBhc3N3b3JkID0gS0VZX1BBU1M7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICJzaG91bGRFbmFibGVTc2xBbmRDbGllbnRDZXJ0aWZpY2F0ZUF1dGgiOgotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbCA9IG5ldyBTZXR0aW5ncy5Tc2xTZXR0aW5ncygpOwotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5lbmFibGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wubmVlZENsaWVudEF1dGggPSBDbGllbnRBdXRoLlJFUVVJUkU7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmtleVN0b3JlID0gSktTX1NFUlZFUl9LRVk7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmtleVN0b3JlUGFzc3dvcmQgPSBLRVlfUEFTUzsKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wua2V5U3RvcmVUeXBlID0gS0VZU1RPUkVfVFlQRV9KS1M7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLnRydXN0U3RvcmUgPSBKS1NfU0VSVkVSX1RSVVNUOwotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC50cnVzdFN0b3JlUGFzc3dvcmQgPSBLRVlfUEFTUzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgInNob3VsZEVuYWJsZVNzbEFuZENsaWVudENlcnRpZmljYXRlQXV0aEFuZEZhaWxXaXRob3V0Q2VydCI6Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsID0gbmV3IFNldHRpbmdzLlNzbFNldHRpbmdzKCk7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmVuYWJsZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5uZWVkQ2xpZW50QXV0aCA9IENsaWVudEF1dGguUkVRVUlSRTsKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wua2V5U3RvcmUgPSBKS1NfU0VSVkVSX0tFWTsKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wua2V5U3RvcmVQYXNzd29yZCA9IEtFWV9QQVNTOwotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5rZXlTdG9yZVR5cGUgPSBLRVlTVE9SRV9UWVBFX0pLUzsKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wudHJ1c3RTdG9yZSA9IEpLU19TRVJWRVJfVFJVU1Q7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLnRydXN0U3RvcmVQYXNzd29yZCA9IEtFWV9QQVNTOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAic2hvdWxkRW5hYmxlU3NsQW5kQ2xpZW50Q2VydGlmaWNhdGVBdXRoQW5kRmFpbFdpdGhvdXRUcnVzdGVkQ2xpZW50Q2VydCI6Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsID0gbmV3IFNldHRpbmdzLlNzbFNldHRpbmdzKCk7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmVuYWJsZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5uZWVkQ2xpZW50QXV0aCA9IENsaWVudEF1dGguUkVRVUlSRTsKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wua2V5U3RvcmUgPSBKS1NfU0VSVkVSX0tFWTsKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wua2V5U3RvcmVQYXNzd29yZCA9IEtFWV9QQVNTOwotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5rZXlTdG9yZVR5cGUgPSBLRVlTVE9SRV9UWVBFX0pLUzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgInNob3VsZEVuYWJsZVNzbEFuZEZhaWxJZlByb3RvY29sc0RvbnRNYXRjaCI6Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsID0gbmV3IFNldHRpbmdzLlNzbFNldHRpbmdzKCk7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmVuYWJsZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5rZXlTdG9yZSA9IEpLU19TRVJWRVJfS0VZOwotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5rZXlTdG9yZVBhc3N3b3JkID0gS0VZX1BBU1M7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmtleVN0b3JlVHlwZSA9IEtFWVNUT1JFX1RZUEVfSktTOwotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5zc2xFbmFibGVkUHJvdG9jb2xzID0gQXJyYXlzLmFzTGlzdCgiVExTdjEuMSIpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAic2hvdWxkRW5hYmxlU3NsQW5kRmFpbElmQ2lwaGVyc0RvbnRNYXRjaCI6Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsID0gbmV3IFNldHRpbmdzLlNzbFNldHRpbmdzKCk7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmVuYWJsZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5rZXlTdG9yZSA9IEpLU19TRVJWRVJfS0VZOwotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5rZXlTdG9yZVBhc3N3b3JkID0gS0VZX1BBU1M7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmtleVN0b3JlVHlwZSA9IEtFWVNUT1JFX1RZUEVfSktTOwotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5zc2xDaXBoZXJTdWl0ZXMgPSBBcnJheXMuYXNMaXN0KCJUTFNfREhFX1JTQV9XSVRIX0FFU18xMjhfQ0JDX1NIQSIpOwotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSAic2hvdWxkVXNlU2ltcGxlU2FuZGJveCI6CiAgICAgICAgICAgICAgICAgc2V0dGluZ3Muc2NyaXB0RW5naW5lcy5nZXQoImdyZW1saW4tZ3Jvb3Z5IikucGx1Z2lucy5wdXQoR3Jvb3Z5Q29tcGlsZXJHcmVtbGluUGx1Z2luLmNsYXNzLmdldE5hbWUoKSwgZ2V0U2NyaXB0RW5naW5lQ29uZkZvclNpbXBsZVNhbmRib3goKSk7CiAgICAgICAgICAgICAgICAgLy8gcmVtb3ZlIHRoZSBzY3JpcHQgYmVjYXVzZSBpdCBpc24ndCB1c2VkIGluIHRoZSB0ZXN0IGJ1dCBhbHNvIGJlY2F1c2UgaXQncyBub3QgQ29tcGlsZVN0YXRpYyByZWFkeQpAQCAtMzE2LDE5ICsyMDQsNiBAQAogICAgICAgICAgICAgY2FzZSAic2hvdWxkQ2xvc2VDaGFubmVsSWZDbGllbnREb2VzbnRSZXNwb25kIjoKICAgICAgICAgICAgICAgICBzZXR0aW5ncy5pZGxlQ29ubmVjdGlvblRpbWVvdXQgPSAxMDAwOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAic2hvdWxkRW5hYmxlU3NsQW5kQ2xpZW50Q2VydGlmaWNhdGVBdXRoV2l0aERpZmZlcmVudFN0b3JlVHlwZSI6Ci0gICAgICAgICAgICBjYXNlICJzaG91bGRFbmFibGVTc2xBbmRDbGllbnRDZXJ0aWZpY2F0ZUF1dGhBbmRGYWlsV2l0aEluY29ycmVjdEtleVN0b3JlVHlwZSI6Ci0gICAgICAgICAgICBjYXNlICJzaG91bGRFbmFibGVTc2xBbmRDbGllbnRDZXJ0aWZpY2F0ZUF1dGhBbmRGYWlsV2l0aEluY29ycmVjdFRydXN0U3RvcmVUeXBlIjoKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wgPSBuZXcgU2V0dGluZ3MuU3NsU2V0dGluZ3MoKTsKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wuZW5hYmxlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLm5lZWRDbGllbnRBdXRoID0gQ2xpZW50QXV0aC5SRVFVSVJFOwotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5rZXlTdG9yZSA9IEpLU19TRVJWRVJfS0VZOwotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5rZXlTdG9yZVBhc3N3b3JkID0gS0VZX1BBU1M7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmtleVN0b3JlVHlwZSA9IEtFWVNUT1JFX1RZUEVfSktTOwotICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC50cnVzdFN0b3JlID0gUDEyX1NFUlZFUl9UUlVTVDsKLSAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wudHJ1c3RTdG9yZVBhc3N3b3JkID0gS0VZX1BBU1M7Ci0gICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLnRydXN0U3RvcmVUeXBlID0gVFJVU1RTVE9SRV9UWVBFX1BLQ1MxMjsKLSAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTMzNiwxOCArMjExLDYgQEAKICAgICAgICAgcmV0dXJuIHNldHRpbmdzOwogICAgIH0KIAotICAgIHByaXZhdGUgc3RhdGljIFNzbENvbnRleHQgY3JlYXRlU2VydmVyU3NsQ29udGV4dCgpIHsKLSAgICAgICAgZmluYWwgU3NsUHJvdmlkZXIgcHJvdmlkZXIgPSBTc2xQcm92aWRlci5KREs7Ci0KLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIC8vIHRoaXMgaXMgbm90IGdvb2QgZm9yIHByb2R1Y3Rpb24gLSBqdXN0IHRlc3RpbmcKLSAgICAgICAgICAgIGZpbmFsIFNlbGZTaWduZWRDZXJ0aWZpY2F0ZSBzc2MgPSBuZXcgU2VsZlNpZ25lZENlcnRpZmljYXRlKCk7Ci0gICAgICAgICAgICByZXR1cm4gU3NsQ29udGV4dEJ1aWxkZXIuZm9yU2VydmVyKHNzYy5jZXJ0aWZpY2F0ZSgpLCBzc2MucHJpdmF0ZUtleSgpKS5zc2xQcm92aWRlcihwcm92aWRlcikuYnVpbGQoKTsKLSAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGNlKSB7Ci0gICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigiQ291bGRuJ3Qgc2V0dXAgc2VsZi1zaWduZWQgY2VydGlmaWNhdGUgZm9yIHRlc3QiKTsKLSAgICAgICAgfQotICAgIH0KLQogICAgIHByaXZhdGUgc3RhdGljIE1hcDxTdHJpbmcsIE9iamVjdD4gZ2V0U2NyaXB0RW5naW5lQ29uZkZvclNpbXBsZVNhbmRib3goKSB7CiAgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsT2JqZWN0PiBzY3JpcHRFbmdpbmVDb25mID0gbmV3IEhhc2hNYXA8PigpOwogICAgICAgICBzY3JpcHRFbmdpbmVDb25mLnB1dCgiY29tcGlsYXRpb24iLCBDT01QSUxFX1NUQVRJQy5uYW1lKCkpOwpAQCAtNDkyLDYgKzM1NSwzNCBAQAogICAgIH0KIAogICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkVGltZU91dFJlbW90ZVRyYXZlcnNhbFdpdGhQZXJSZXF1ZXN0T3B0aW9uKCkgeworICAgICAgICBmaW5hbCBHcmFwaFRyYXZlcnNhbFNvdXJjZSBnID0gdHJhdmVyc2FsKCkud2l0aFJlbW90ZShjb25mKTsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgLy8gdGVzdHMgc2xlZXBpbmcgdGhyZWFkCisgICAgICAgICAgICBnLndpdGgoQVJHU19TQ1JJUFRfRVZBTF9USU1FT1VULCA1MDBMKS5pbmplY3QoMSkuc2lkZUVmZmVjdChMYW1iZGEuY29uc3VtZXIoIlRocmVhZC5zbGVlcCgxMDAwMCkiKSkuaXRlcmF0ZSgpOworICAgICAgICAgICAgZmFpbCgiVGhpcyB0cmF2ZXJzYWwgc2hvdWxkIGhhdmUgdGltZWQgb3V0Iik7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgZmluYWwgVGhyb3dhYmxlIHQgPSBleC5nZXRDYXVzZSgpOworICAgICAgICAgICAgYXNzZXJ0VGhhdCh0LCBpbnN0YW5jZU9mKFJlc3BvbnNlRXhjZXB0aW9uLmNsYXNzKSk7CisgICAgICAgICAgICBhc3NlcnRFcXVhbHMoUmVzcG9uc2VTdGF0dXNDb2RlLlNFUlZFUl9FUlJPUl9USU1FT1VULCAoKFJlc3BvbnNlRXhjZXB0aW9uKSB0KS5nZXRSZXNwb25zZVN0YXR1c0NvZGUoKSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBtYWtlIGEgZ3JhcGggd2l0aCBhIGN5Y2xlIGluIGl0IHRvIGZvcmNlIGEgbG9uZyBydW4gdHJhdmVyc2FsCisgICAgICAgIGdyYXBoR2V0dGVyLmdldCgpLnRyYXZlcnNhbCgpLmFkZFYoInBlcnNvbiIpLmFzKCJwIikuYWRkRSgic2VsZiIpLnRvKCJwIikuaXRlcmF0ZSgpOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAvLyB0ZXN0cyBhbiAidW5lbmRpbmciIHRyYXZlcnNhbAorICAgICAgICAgICAgZy53aXRoKEFSR1NfU0NSSVBUX0VWQUxfVElNRU9VVCwgNTAwTCkuVigpLnJlcGVhdChfXy5vdXQoKSkudW50aWwoX18ub3V0RSgpLmNvdW50KCkuaXMoMCkpLml0ZXJhdGUoKTsKKyAgICAgICAgICAgIGZhaWwoIlRoaXMgdHJhdmVyc2FsIHNob3VsZCBoYXZlIHRpbWVkIG91dCIpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgIGZpbmFsIFRocm93YWJsZSB0ID0gZXguZ2V0Q2F1c2UoKTsKKyAgICAgICAgICAgIGFzc2VydFRoYXQodCwgaW5zdGFuY2VPZihSZXNwb25zZUV4Y2VwdGlvbi5jbGFzcykpOworICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKFJlc3BvbnNlU3RhdHVzQ29kZS5TRVJWRVJfRVJST1JfVElNRU9VVCwgKChSZXNwb25zZUV4Y2VwdGlvbikgdCkuZ2V0UmVzcG9uc2VTdGF0dXNDb2RlKCkpOworICAgICAgICB9CisgICAgfQorCisgICAgQFRlc3QKICAgICBwdWJsaWMgdm9pZCBzaG91bGRQcm9kdWNlUHJvcGVyRXhjZXB0aW9uT25UaW1lb3V0KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CiAgICAgICAgIGZpbmFsIENsdXN0ZXIgY2x1c3RlciA9IFRlc3RDbGllbnRGYWN0b3J5Lm9wZW4oKTsKICAgICAgICAgZmluYWwgQ2xpZW50IGNsaWVudCA9IGNsdXN0ZXIuY29ubmVjdChuYW1lLmdldE1ldGhvZE5hbWUoKSk7CkBAIC01OTgsMTk1ICs0ODksNiBAQAogICAgIH0KIAogICAgIEBUZXN0Ci0gICAgcHVibGljIHZvaWQgc2hvdWxkRW5hYmxlU3NsKCkgewotICAgICAgICBmaW5hbCBDbHVzdGVyIGNsdXN0ZXIgPSBUZXN0Q2xpZW50RmFjdG9yeS5idWlsZCgpLmVuYWJsZVNzbCh0cnVlKS5rZXlTdG9yZShKS1NfU0VSVkVSX0tFWSkua2V5U3RvcmVQYXNzd29yZChLRVlfUEFTUykuc3NsU2tpcENlcnRWYWxpZGF0aW9uKHRydWUpLmNyZWF0ZSgpOwotICAgICAgICBmaW5hbCBDbGllbnQgY2xpZW50ID0gY2x1c3Rlci5jb25uZWN0KCk7Ci0KLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIC8vIHRoaXMgc2hvdWxkIHJldHVybiAibm90aGluZyIgLSB0aGVyZSBzaG91bGQgYmUgbm8gZXhjZXB0aW9uCi0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoInRlc3QiLCBjbGllbnQuc3VibWl0KCIndGVzdCciKS5vbmUoKS5nZXRTdHJpbmcoKSk7Ci0gICAgICAgIH0gZmluYWxseSB7Ci0gICAgICAgICAgICBjbHVzdGVyLmNsb3NlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBAVGVzdAotICAgIHB1YmxpYyB2b2lkIHNob3VsZEVuYWJsZVNzbFdpdGhTc2xDb250ZXh0UHJvZ3JhbW1hdGljYWxseVNwZWNpZmllZCgpIHRocm93cyBFeGNlcHRpb24gewotICAgICAgICAvLyBqdXN0IGZvciB0ZXN0aW5nIC0gdGhpcyBpcyBub3QgZ29vZCBmb3IgcHJvZHVjdGlvbiB1c2UKLSAgICAgICAgZmluYWwgU3NsQ29udGV4dEJ1aWxkZXIgYnVpbGRlciA9IFNzbENvbnRleHRCdWlsZGVyLmZvckNsaWVudCgpOwotICAgICAgICBidWlsZGVyLnRydXN0TWFuYWdlcihJbnNlY3VyZVRydXN0TWFuYWdlckZhY3RvcnkuSU5TVEFOQ0UpOwotICAgICAgICBidWlsZGVyLnNzbFByb3ZpZGVyKFNzbFByb3ZpZGVyLkpESyk7Ci0KLSAgICAgICAgZmluYWwgQ2x1c3RlciBjbHVzdGVyID0gVGVzdENsaWVudEZhY3RvcnkuYnVpbGQoKS5lbmFibGVTc2wodHJ1ZSkuc3NsQ29udGV4dChidWlsZGVyLmJ1aWxkKCkpLmNyZWF0ZSgpOwotICAgICAgICBmaW5hbCBDbGllbnQgY2xpZW50ID0gY2x1c3Rlci5jb25uZWN0KCk7Ci0KLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIC8vIHRoaXMgc2hvdWxkIHJldHVybiAibm90aGluZyIgLSB0aGVyZSBzaG91bGQgYmUgbm8gZXhjZXB0aW9uCi0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoInRlc3QiLCBjbGllbnQuc3VibWl0KCIndGVzdCciKS5vbmUoKS5nZXRTdHJpbmcoKSk7Ci0gICAgICAgIH0gZmluYWxseSB7Ci0gICAgICAgICAgICBjbHVzdGVyLmNsb3NlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBAVGVzdAotICAgIHB1YmxpYyB2b2lkIHNob3VsZEVuYWJsZVNzbEJ1dEZhaWxJZkNsaWVudENvbm5lY3RzV2l0aG91dEl0KCkgewotICAgICAgICBmaW5hbCBDbHVzdGVyIGNsdXN0ZXIgPSBUZXN0Q2xpZW50RmFjdG9yeS5idWlsZCgpLmVuYWJsZVNzbChmYWxzZSkuY3JlYXRlKCk7Ci0gICAgICAgIGZpbmFsIENsaWVudCBjbGllbnQgPSBjbHVzdGVyLmNvbm5lY3QoKTsKLQotICAgICAgICB0cnkgewotICAgICAgICAgICAgY2xpZW50LnN1Ym1pdCgiJ3Rlc3QnIikub25lKCk7Ci0gICAgICAgICAgICBmYWlsKCJTaG91bGQgdGhyb3cgZXhjZXB0aW9uIGJlY2F1c2Ugc3NsIGlzIGVuYWJsZWQgb24gdGhlIHNlcnZlciBidXQgbm90IG9uIGNsaWVudCIpOwotICAgICAgICB9IGNhdGNoKEV4Y2VwdGlvbiB4KSB7Ci0gICAgICAgICAgICBmaW5hbCBUaHJvd2FibGUgcm9vdCA9IEV4Y2VwdGlvblV0aWxzLmdldFJvb3RDYXVzZSh4KTsKLSAgICAgICAgICAgIGFzc2VydFRoYXQocm9vdCwgaW5zdGFuY2VPZihUaW1lb3V0RXhjZXB0aW9uLmNsYXNzKSk7Ci0gICAgICAgIH0gZmluYWxseSB7Ci0gICAgICAgICAgICBjbHVzdGVyLmNsb3NlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBAVGVzdAotICAgIHB1YmxpYyB2b2lkIHNob3VsZEVuYWJsZVNzbEFuZENsaWVudENlcnRpZmljYXRlQXV0aFdpdGhMZWdhY3lQZW0oKSB7Ci0gICAgICAgIGZpbmFsIENsdXN0ZXIgY2x1c3RlciA9IFRlc3RDbGllbnRGYWN0b3J5LmJ1aWxkKCkuZW5hYmxlU3NsKHRydWUpCi0gICAgICAgICAgICAgICAgLmtleUNlcnRDaGFpbkZpbGUoUEVNX0NMSUVOVF9DUlQpLmtleUZpbGUoUEVNX0NMSUVOVF9LRVkpCi0gICAgICAgICAgICAgICAgLmtleVBhc3N3b3JkKEtFWV9QQVNTKS50cnVzdENlcnRpZmljYXRlQ2hhaW5GaWxlKFBFTV9TRVJWRVJfQ1JUKS5jcmVhdGUoKTsKLSAgICAgICAgZmluYWwgQ2xpZW50IGNsaWVudCA9IGNsdXN0ZXIuY29ubmVjdCgpOwotCi0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoInRlc3QiLCBjbGllbnQuc3VibWl0KCIndGVzdCciKS5vbmUoKS5nZXRTdHJpbmcoKSk7Ci0gICAgICAgIH0gZmluYWxseSB7Ci0gICAgICAgICAgICBjbHVzdGVyLmNsb3NlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBAVGVzdAotICAgIHB1YmxpYyB2b2lkIHNob3VsZEVuYWJsZVNzbEFuZENsaWVudENlcnRpZmljYXRlQXV0aEFuZEZhaWxXaXRob3V0Q2VydFdpdGhMZWdhY3lQZW0oKSB7Ci0gICAgICAgIGZpbmFsIENsdXN0ZXIgY2x1c3RlciA9IFRlc3RDbGllbnRGYWN0b3J5LmJ1aWxkKCkuZW5hYmxlU3NsKHRydWUpLmtleVN0b3JlKEpLU19TRVJWRVJfS0VZKS5rZXlTdG9yZVBhc3N3b3JkKEtFWV9QQVNTKS5zc2xTa2lwQ2VydFZhbGlkYXRpb24odHJ1ZSkuY3JlYXRlKCk7Ci0gICAgICAgIGZpbmFsIENsaWVudCBjbGllbnQgPSBjbHVzdGVyLmNvbm5lY3QoKTsKLQotICAgICAgICB0cnkgewotICAgICAgICAgICAgY2xpZW50LnN1Ym1pdCgiJ3Rlc3QnIikub25lKCk7Ci0gICAgICAgICAgICBmYWlsKCJTaG91bGQgdGhyb3cgZXhjZXB0aW9uIGJlY2F1c2Ugc3NsIGNsaWVudCBhdXRoIGlzIGVuYWJsZWQgb24gdGhlIHNlcnZlciBidXQgY2xpZW50IGRvZXMgbm90IGhhdmUgYSBjZXJ0Iik7Ci0gICAgICAgIH0gY2F0Y2goRXhjZXB0aW9uIHgpIHsKLSAgICAgICAgICAgIGZpbmFsIFRocm93YWJsZSByb290ID0gRXhjZXB0aW9uVXRpbHMuZ2V0Um9vdENhdXNlKHgpOwotICAgICAgICAgICAgYXNzZXJ0VGhhdChyb290LCBpbnN0YW5jZU9mKFRpbWVvdXRFeGNlcHRpb24uY2xhc3MpKTsKLSAgICAgICAgfSBmaW5hbGx5IHsKLSAgICAgICAgICAgIGNsdXN0ZXIuY2xvc2UoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEBUZXN0Ci0gICAgcHVibGljIHZvaWQgc2hvdWxkRW5hYmxlU3NsQW5kQ2xpZW50Q2VydGlmaWNhdGVBdXRoQW5kRmFpbFdpdGhvdXRUcnVzdGVkQ2xpZW50Q2VydFdpdGhMZWdhY3lQZW0oKSB7Ci0gICAgICAgIGZpbmFsIENsdXN0ZXIgY2x1c3RlciA9IFRlc3RDbGllbnRGYWN0b3J5LmJ1aWxkKCkuZW5hYmxlU3NsKHRydWUpCi0gICAgICAgICAgICAgICAgLmtleUNlcnRDaGFpbkZpbGUoUEVNX0NMSUVOVF9DUlQpLmtleUZpbGUoUEVNX0NMSUVOVF9LRVkpCi0gICAgICAgICAgICAgICAgLmtleVBhc3N3b3JkKEtFWV9QQVNTKS50cnVzdENlcnRpZmljYXRlQ2hhaW5GaWxlKFBFTV9TRVJWRVJfQ1JUKS5jcmVhdGUoKTsKLSAgICAgICAgZmluYWwgQ2xpZW50IGNsaWVudCA9IGNsdXN0ZXIuY29ubmVjdCgpOwotCi0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBjbGllbnQuc3VibWl0KCIndGVzdCciKS5vbmUoKTsKLSAgICAgICAgICAgIGZhaWwoIlNob3VsZCB0aHJvdyBleGNlcHRpb24gYmVjYXVzZSBzc2wgY2xpZW50IGF1dGggaXMgZW5hYmxlZCBvbiB0aGUgc2VydmVyIGJ1dCBkb2VzIG5vdCB0cnVzdCBjbGllbnQncyBjZXJ0Iik7Ci0gICAgICAgIH0gY2F0Y2goRXhjZXB0aW9uIHgpIHsKLSAgICAgICAgICAgIGZpbmFsIFRocm93YWJsZSByb290ID0gRXhjZXB0aW9uVXRpbHMuZ2V0Um9vdENhdXNlKHgpOwotICAgICAgICAgICAgYXNzZXJ0VGhhdChyb290LCBpbnN0YW5jZU9mKFRpbWVvdXRFeGNlcHRpb24uY2xhc3MpKTsKLSAgICAgICAgfSBmaW5hbGx5IHsKLSAgICAgICAgICAgIGNsdXN0ZXIuY2xvc2UoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEBUZXN0Ci0gICAgcHVibGljIHZvaWQgc2hvdWxkRW5hYmxlU3NsQW5kQ2xpZW50Q2VydGlmaWNhdGVBdXRoV2l0aFBrY3MxMigpIHsKLSAgICAgICAgZmluYWwgQ2x1c3RlciBjbHVzdGVyID0gVGVzdENsaWVudEZhY3RvcnkuYnVpbGQoKS5lbmFibGVTc2wodHJ1ZSkua2V5U3RvcmUoUDEyX0NMSUVOVF9LRVkpLmtleVN0b3JlUGFzc3dvcmQoS0VZX1BBU1MpCi0gICAgICAgICAgICAgICAgLmtleVN0b3JlVHlwZShLRVlTVE9SRV9UWVBFX1BLQ1MxMikudHJ1c3RTdG9yZShQMTJfQ0xJRU5UX1RSVVNUKS50cnVzdFN0b3JlUGFzc3dvcmQoS0VZX1BBU1MpLmNyZWF0ZSgpOwotICAgICAgICBmaW5hbCBDbGllbnQgY2xpZW50ID0gY2x1c3Rlci5jb25uZWN0KCk7Ci0KLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscygidGVzdCIsIGNsaWVudC5zdWJtaXQoIid0ZXN0JyIpLm9uZSgpLmdldFN0cmluZygpKTsKLSAgICAgICAgfSBmaW5hbGx5IHsKLSAgICAgICAgICAgIGNsdXN0ZXIuY2xvc2UoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEBUZXN0Ci0gICAgcHVibGljIHZvaWQgc2hvdWxkRW5hYmxlU3NsQW5kQ2xpZW50Q2VydGlmaWNhdGVBdXRoKCkgewotICAgICAgICBmaW5hbCBDbHVzdGVyIGNsdXN0ZXIgPSBUZXN0Q2xpZW50RmFjdG9yeS5idWlsZCgpLmVuYWJsZVNzbCh0cnVlKS5rZXlTdG9yZShKS1NfQ0xJRU5UX0tFWSkua2V5U3RvcmVQYXNzd29yZChLRVlfUEFTUykKLSAgICAgICAgICAgICAgICAua2V5U3RvcmVUeXBlKEtFWVNUT1JFX1RZUEVfSktTKS50cnVzdFN0b3JlKEpLU19DTElFTlRfVFJVU1QpLnRydXN0U3RvcmVQYXNzd29yZChLRVlfUEFTUykuY3JlYXRlKCk7Ci0gICAgICAgIGZpbmFsIENsaWVudCBjbGllbnQgPSBjbHVzdGVyLmNvbm5lY3QoKTsKLQotICAgICAgICB0cnkgewotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJ0ZXN0IiwgY2xpZW50LnN1Ym1pdCgiJ3Rlc3QnIikub25lKCkuZ2V0U3RyaW5nKCkpOwotICAgICAgICB9IGZpbmFsbHkgewotICAgICAgICAgICAgY2x1c3Rlci5jbG9zZSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgQFRlc3QKLSAgICBwdWJsaWMgdm9pZCBzaG91bGRFbmFibGVTc2xBbmRDbGllbnRDZXJ0aWZpY2F0ZUF1dGhBbmRGYWlsV2l0aG91dENlcnQoKSB7Ci0gICAgICAgIGZpbmFsIENsdXN0ZXIgY2x1c3RlciA9IFRlc3RDbGllbnRGYWN0b3J5LmJ1aWxkKCkuZW5hYmxlU3NsKHRydWUpLmtleVN0b3JlKEpLU19TRVJWRVJfS0VZKS5rZXlTdG9yZVBhc3N3b3JkKEtFWV9QQVNTKQotICAgICAgICAgICAgICAgIC5rZXlTdG9yZVR5cGUoS0VZU1RPUkVfVFlQRV9KS1MpLnNzbFNraXBDZXJ0VmFsaWRhdGlvbih0cnVlKS5jcmVhdGUoKTsKLSAgICAgICAgZmluYWwgQ2xpZW50IGNsaWVudCA9IGNsdXN0ZXIuY29ubmVjdCgpOwotCi0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBjbGllbnQuc3VibWl0KCIndGVzdCciKS5vbmUoKTsKLSAgICAgICAgICAgIGZhaWwoIlNob3VsZCB0aHJvdyBleGNlcHRpb24gYmVjYXVzZSBzc2wgY2xpZW50IGF1dGggaXMgZW5hYmxlZCBvbiB0aGUgc2VydmVyIGJ1dCBjbGllbnQgZG9lcyBub3QgaGF2ZSBhIGNlcnQiKTsKLSAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIHgpIHsKLSAgICAgICAgICAgIGZpbmFsIFRocm93YWJsZSByb290ID0gRXhjZXB0aW9uVXRpbHMuZ2V0Um9vdENhdXNlKHgpOwotICAgICAgICAgICAgYXNzZXJ0VGhhdChyb290LCBpbnN0YW5jZU9mKFRpbWVvdXRFeGNlcHRpb24uY2xhc3MpKTsKLSAgICAgICAgfSBmaW5hbGx5IHsKLSAgICAgICAgICAgIGNsdXN0ZXIuY2xvc2UoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEBUZXN0Ci0gICAgcHVibGljIHZvaWQgc2hvdWxkRW5hYmxlU3NsQW5kQ2xpZW50Q2VydGlmaWNhdGVBdXRoQW5kRmFpbFdpdGhvdXRUcnVzdGVkQ2xpZW50Q2VydCgpIHsKLSAgICAgICAgZmluYWwgQ2x1c3RlciBjbHVzdGVyID0gVGVzdENsaWVudEZhY3RvcnkuYnVpbGQoKS5lbmFibGVTc2wodHJ1ZSkua2V5U3RvcmUoSktTX0NMSUVOVF9LRVkpLmtleVN0b3JlUGFzc3dvcmQoS0VZX1BBU1MpCi0gICAgICAgICAgICAgICAgLmtleVN0b3JlVHlwZShLRVlTVE9SRV9UWVBFX0pLUykudHJ1c3RTdG9yZShKS1NfQ0xJRU5UX1RSVVNUKS50cnVzdFN0b3JlUGFzc3dvcmQoS0VZX1BBU1MpLmNyZWF0ZSgpOwotICAgICAgICBmaW5hbCBDbGllbnQgY2xpZW50ID0gY2x1c3Rlci5jb25uZWN0KCk7Ci0KLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGNsaWVudC5zdWJtaXQoIid0ZXN0JyIpLm9uZSgpOwotICAgICAgICAgICAgZmFpbCgiU2hvdWxkIHRocm93IGV4Y2VwdGlvbiBiZWNhdXNlIHNzbCBjbGllbnQgYXV0aCBpcyBlbmFibGVkIG9uIHRoZSBzZXJ2ZXIgYnV0IGRvZXMgbm90IHRydXN0IGNsaWVudCdzIGNlcnQiKTsKLSAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIHgpIHsKLSAgICAgICAgICAgIGZpbmFsIFRocm93YWJsZSByb290ID0gRXhjZXB0aW9uVXRpbHMuZ2V0Um9vdENhdXNlKHgpOwotICAgICAgICAgICAgYXNzZXJ0VGhhdChyb290LCBpbnN0YW5jZU9mKFRpbWVvdXRFeGNlcHRpb24uY2xhc3MpKTsKLSAgICAgICAgfSBmaW5hbGx5IHsKLSAgICAgICAgICAgIGNsdXN0ZXIuY2xvc2UoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEBUZXN0Ci0gICAgcHVibGljIHZvaWQgc2hvdWxkRW5hYmxlU3NsQW5kRmFpbElmUHJvdG9jb2xzRG9udE1hdGNoKCkgewotICAgICAgICBmaW5hbCBDbHVzdGVyIGNsdXN0ZXIgPSBUZXN0Q2xpZW50RmFjdG9yeS5idWlsZCgpLmVuYWJsZVNzbCh0cnVlKS5rZXlTdG9yZShKS1NfU0VSVkVSX0tFWSkua2V5U3RvcmVQYXNzd29yZChLRVlfUEFTUykKLSAgICAgICAgICAgICAgICAuc3NsU2tpcENlcnRWYWxpZGF0aW9uKHRydWUpLnNzbEVuYWJsZWRQcm90b2NvbHMoQXJyYXlzLmFzTGlzdCgiVExTdjEuMiIpKS5jcmVhdGUoKTsKLSAgICAgICAgZmluYWwgQ2xpZW50IGNsaWVudCA9IGNsdXN0ZXIuY29ubmVjdCgpOwotCi0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBjbGllbnQuc3VibWl0KCIndGVzdCciKS5vbmUoKTsKLSAgICAgICAgICAgIGZhaWwoIlNob3VsZCB0aHJvdyBleGNlcHRpb24gYmVjYXVzZSBzc2wgY2xpZW50IHJlcXVpcmVzIFRMU3YxLjIgd2hlcmVhcyBzZXJ2ZXIgc3VwcG9ydHMgb25seSBUTFN2MS4xIik7Ci0gICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiB4KSB7Ci0gICAgICAgICAgICBmaW5hbCBUaHJvd2FibGUgcm9vdCA9IEV4Y2VwdGlvblV0aWxzLmdldFJvb3RDYXVzZSh4KTsKLSAgICAgICAgICAgIGFzc2VydFRoYXQocm9vdCwgaW5zdGFuY2VPZihUaW1lb3V0RXhjZXB0aW9uLmNsYXNzKSk7Ci0gICAgICAgIH0gZmluYWxseSB7Ci0gICAgICAgICAgICBjbHVzdGVyLmNsb3NlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBAVGVzdAotICAgIHB1YmxpYyB2b2lkIHNob3VsZEVuYWJsZVNzbEFuZEZhaWxJZkNpcGhlcnNEb250TWF0Y2goKSB7Ci0gICAgICAgIGZpbmFsIENsdXN0ZXIgY2x1c3RlciA9IFRlc3RDbGllbnRGYWN0b3J5LmJ1aWxkKCkuZW5hYmxlU3NsKHRydWUpLmtleVN0b3JlKEpLU19TRVJWRVJfS0VZKS5rZXlTdG9yZVBhc3N3b3JkKEtFWV9QQVNTKQotICAgICAgICAgICAgICAgIC5zc2xTa2lwQ2VydFZhbGlkYXRpb24odHJ1ZSkuc3NsQ2lwaGVyU3VpdGVzKEFycmF5cy5hc0xpc3QoIlNTTF9SU0FfV0lUSF9SQzRfMTI4X1NIQSIpKS5jcmVhdGUoKTsKLSAgICAgICAgZmluYWwgQ2xpZW50IGNsaWVudCA9IGNsdXN0ZXIuY29ubmVjdCgpOwotCi0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBjbGllbnQuc3VibWl0KCIndGVzdCciKS5vbmUoKTsKLSAgICAgICAgICAgIGZhaWwoIlNob3VsZCB0aHJvdyBleGNlcHRpb24gYmVjYXVzZSBzc2wgY2xpZW50IHJlcXVpcmVzIFRMU3YxLjIgd2hlcmVhcyBzZXJ2ZXIgc3VwcG9ydHMgb25seSBUTFN2MS4xIik7Ci0gICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiB4KSB7Ci0gICAgICAgICAgICBmaW5hbCBUaHJvd2FibGUgcm9vdCA9IEV4Y2VwdGlvblV0aWxzLmdldFJvb3RDYXVzZSh4KTsKLSAgICAgICAgICAgIGFzc2VydFRoYXQocm9vdCwgaW5zdGFuY2VPZihUaW1lb3V0RXhjZXB0aW9uLmNsYXNzKSk7Ci0gICAgICAgIH0gZmluYWxseSB7Ci0gICAgICAgICAgICBjbHVzdGVyLmNsb3NlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBAVGVzdAogICAgIHB1YmxpYyB2b2lkIHNob3VsZFJlc3BlY3RIaWdoV2F0ZXJNYXJrU2V0dGluZ0FuZFN1Y2NlZWQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKICAgICAgICAgLy8gdGhlIGhpZ2h3YXRlcm1hcmsgc2hvdWxkIGdldCBleGNlZWRlZCBvbiB0aGUgc2VydmVyIGFuZCB0aHVzIHBhdXNlIHRoZSB3cml0ZXMsIGJ1dCBoYXZlIG5vIHByb2JsZW0gY2F0Y2hpbmcKICAgICAgICAgLy8gaXRzZWxmIHVwIC0gdGhpcyBpcyBhIHRyaWNreSB0ZXN0cyB0byBnZXQgcGFzc2luZyBvbiBhbGwgZW52aXJvbm1lbnRzIHNvIHRoaXMgYXNzdW1wdGlvbiB3aWxsIGRlbnkgdGhlCkBAIC0xMDQyLDcgKzc0NCw3IEBACiAgICAgcHVibGljIHZvaWQgc2hvdWxkUmVjZWl2ZUZhaWx1cmVUaW1lT3V0T25TY3JpcHRFdmFsVXNpbmdPdmVycmlkZSgpIHRocm93cyBFeGNlcHRpb24gewogICAgICAgICB0cnkgKFNpbXBsZUNsaWVudCBjbGllbnQgPSBUZXN0Q2xpZW50RmFjdG9yeS5jcmVhdGVXZWJTb2NrZXRDbGllbnQoKSkgewogICAgICAgICAgICAgZmluYWwgUmVxdWVzdE1lc3NhZ2UgbXNnID0gUmVxdWVzdE1lc3NhZ2UuYnVpbGQoImV2YWwiKQotICAgICAgICAgICAgICAgICAgICAuYWRkQXJnKFRva2Vucy5BUkdTX1NDUklQVF9FVkFMX1RJTUVPVVQsIDEwMEwpCisgICAgICAgICAgICAgICAgICAgIC5hZGRBcmcoQVJHU19TQ1JJUFRfRVZBTF9USU1FT1VULCAxMDBMKQogICAgICAgICAgICAgICAgICAgICAuYWRkQXJnKFRva2Vucy5BUkdTX0dSRU1MSU4sICJUaHJlYWQuc2xlZXAoMzAwMCk7J3NvbWUtc3R1ZmYtdGhhdC1zaG91bGQgbm90IHJldHVybiciKQogICAgICAgICAgICAgICAgICAgICAuY3JlYXRlKCk7CiAgICAgICAgICAgICBmaW5hbCBMaXN0PFJlc3BvbnNlTWVzc2FnZT4gcmVzcG9uc2VzID0gY2xpZW50LnN1Ym1pdChtc2cpOwpAQCAtMTA4MiwyNCArNzg0LDYgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIC8qKgotICAgICAqIEBkZXByZWNhdGVkIEFzIG9mIHJlbGVhc2UgMy4yLjEsIHJlcGxhY2VkIGJ5IHRlc3RzIGNvdmVyaW5nIHtAbGluayBTZXR0aW5ncyNldmFsdWF0aW9uVGltZW91dH0uCi0gICAgICovCi0gICAgQFRlc3QKLSAgICBAU3VwcHJlc3NXYXJuaW5ncygidW5jaGVja2VkIikKLSAgICBARGVwcmVjYXRlZAotICAgIHB1YmxpYyB2b2lkIHNob3VsZFJlY2VpdmVGYWlsdXJlVGltZU91dE9uVG90YWxTZXJpYWxpemF0aW9uKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0gICAgICAgIHRyeSAoU2ltcGxlQ2xpZW50IGNsaWVudCA9IFRlc3RDbGllbnRGYWN0b3J5LmNyZWF0ZVdlYlNvY2tldENsaWVudCgpKXsKLSAgICAgICAgICAgIGZpbmFsIExpc3Q8UmVzcG9uc2VNZXNzYWdlPiByZXNwb25zZXMgPSBjbGllbnQuc3VibWl0KCIoMC4uPDEwMDAwMCkiKTsKLQotICAgICAgICAgICAgLy8gdGhlIGxhc3QgbWVzc2FnZSBzaG91bGQgY29udGFpbiB0aGUgZXJyb3IKLSAgICAgICAgICAgIGFzc2VydFRoYXQocmVzcG9uc2VzLmdldChyZXNwb25zZXMuc2l6ZSgpIC0gMSkuZ2V0U3RhdHVzKCkuZ2V0TWVzc2FnZSgpLCBlbmRzV2l0aCgiU2VyaWFsaXphdGlvbiBvZiB0aGUgZW50aXJlIHJlc3BvbnNlIGV4Y2VlZGVkIHRoZSAnc2VyaWFsaXplUmVzcG9uc2VUaW1lb3V0JyBzZXR0aW5nIikpOwotCi0gICAgICAgICAgICAvLyB2YWxpZGF0ZSB0aGF0IHdlIGNhbiBzdGlsbCBzZW5kIG1lc3NhZ2VzIHRvIHRoZSBzZXJ2ZXIKLSAgICAgICAgICAgIGFzc2VydEVxdWFscygyLCAoKExpc3Q8SW50ZWdlcj4pIGNsaWVudC5zdWJtaXQoIjErMSIpLmdldCgwKS5nZXRSZXN1bHQoKS5nZXREYXRhKCkpLmdldCgwKS5pbnRWYWx1ZSgpKTsKLSAgICAgICAgfQotICAgIH0KLQogICAgIEBUZXN0CiAgICAgQFN1cHByZXNzV2FybmluZ3MoInVuY2hlY2tlZCIpCiAgICAgcHVibGljIHZvaWQgc2hvdWxkTG9hZEluaXRTY3JpcHQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKQEAgLTExODgsMTAgKzg3Miw3IEBACiAgICAgICAgICAgICAvLyBpdCBzZWVtcyBvayB0byBwYXNzIGluIHRoaXMgY2FzZS4KICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIHJlKSB7CiAgICAgICAgICAgICBmaW5hbCBUaHJvd2FibGUgcm9vdCA9IEV4Y2VwdGlvblV0aWxzLmdldFJvb3RDYXVzZShyZSk7Ci0gICAgICAgICAgICAvLyBOZXR0eSBjbG9zZXMgdGhlIGNoYW5uZWwgdG8gdGhlIHNlcnZlciBvbiBhIG5vbi1yZWNvdmVyYWJsZSBlcnJvciBzdWNoIGFzIENvcnJ1cHRlZEZyYW1lRXhjZXB0aW9uCi0gICAgICAgICAgICAvLyBhbmQgdGhlIGNvbm5lY3Rpb24gaXMgc3Vic2VxdWVudGx5IGRlc3Ryb3llZC4gRWFjaCBvZiB0aGUgcGVuZGluZyByZXF1ZXN0cyBhcmUgZ2l2ZW4gYW4gZXJyb3Igd2l0aAotICAgICAgICAgICAgLy8gdGhlIGZvbGxvd2luZyBlcnJvciBtZXNzYWdlLgotICAgICAgICAgICAgLy8KKwogICAgICAgICAgICAgLy8gd2VudCB3aXRoIHR3byBwb3NzaWJsZSBlcnJvciBtZXNzYWdlcyBoZXJlIGFzIGkgdGhpbmsgdGhhdCB0aGVyZSBpcyBzb21lIGVpdGhlciBub24tZGV0ZXJtaW5pc3RpYwogICAgICAgICAgICAgLy8gYmVoYXZpb3IgYXJvdW5kIHRoZSBlcnJvciBtZXNzYWdlIG9yIGl0J3MgZW52aXJvbm1lbnRhbGx5IGRlcGVuZGVudCAoZS5nLiBkaWZmZXJlbnQgamRrLCB2ZXJzaW9ucywgZXRjKQogICAgICAgICAgICAgYXNzZXJ0VGhhdChyb290LmdldE1lc3NhZ2UoKSwgTWF0Y2hlcnMuYW55T2YoaXMoIkNvbm5lY3Rpb24gdG8gc2VydmVyIGlzIG5vIGxvbmdlciBhY3RpdmUiKSwgaXMoIkNvbm5lY3Rpb24gcmVzZXQgYnkgcGVlciIpKSk7CkBAIC0xMjI5LDEzICs5MTAsMjEgQEAKIAogICAgICAgICAgICAgLy8gcmVzdGFydCBzZXJ2ZXIKICAgICAgICAgICAgIHRoaXMuc3RhcnRTZXJ2ZXIoKTsKLSAgICAgICAgICAgIC8vIHRoZSByZXRyeSBpbnRlcnZhbCBpcyAxIHNlY29uZCwgd2FpdCBhIGJpdCBsb25nZXIKLSAgICAgICAgICAgIFRpbWVVbml0LlNFQ09ORFMuc2xlZXAoNSk7CiAKLSAgICAgICAgICAgIExpc3Q8UmVzdWx0PiByZXN1bHRzID0gY2xpZW50LnN1Ym1pdCgiMSsxIikuYWxsKCkuam9pbigpOwotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIHJlc3VsdHMuc2l6ZSgpKTsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscygyLCByZXN1bHRzLmdldCgwKS5nZXRJbnQoKSk7CisgICAgICAgICAgICAvLyB0cnkgYSBidW5jaCBvZiB0aW1lcyB0byByZWNvbm5lY3QuIG9uIHNsb3dlciBzeXN0ZW1zIHRoaXMgbWF5IHNpbXBseSB0YWtlIGxvbmdlci4uLmxvb2tpbmcgYXQgeW91IHRyYXZpcworICAgICAgICAgICAgZm9yIChpbnQgaXggPSAxOyBpeCA8IDExOyBpeCsrKSB7CisgICAgICAgICAgICAgICAgLy8gdGhlIHJldHJ5IGludGVydmFsIGlzIDEgc2Vjb25kLCB3YWl0IGEgYml0IGxvbmdlcgorICAgICAgICAgICAgICAgIFRpbWVVbml0LlNFQ09ORFMuc2xlZXAoNSk7CiAKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBmaW5hbCBMaXN0PFJlc3VsdD4gcmVzdWx0cyA9IGNsaWVudC5zdWJtaXQoIjErMSIpLmFsbCgpLmpvaW4oKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIHJlc3VsdHMuc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDIsIHJlc3VsdHMuZ2V0KDApLmdldEludCgpKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGl4ID09IDEwKQorICAgICAgICAgICAgICAgICAgICAgICAgZmFpbCgiU2hvdWxkIGhhdmUgZXZlbnR1YWxseSBzdWNjZWVkZWQiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICBjbHVzdGVyLmNsb3NlKCk7CiAgICAgICAgIH0KQEAgLTEyNzksMjQgKzk2OCw2IEBACiAgICAgfQogCiAgICAgQFRlc3QKLSAgICBAU3VwcHJlc3NXYXJuaW5ncygidW5jaGVja2VkIikKLSAgICBwdWJsaWMgdm9pZCBzaG91bGRTdGlsbFN1cHBvcnREZXByZWNhdGVkUmViaW5kaW5nc1BhcmFtZXRlck9uU2VydmVyKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0gICAgICAgIC8vIHRoaXMgdGVzdCBjYW4gYmUgcmVtb3ZlZCB3aGVuIHRoZSByZWJpbmRpbmdzIGFyZyBpcyByZW1vdmVkCi0gICAgICAgIHRyeSAoU2ltcGxlQ2xpZW50IGNsaWVudCA9IFRlc3RDbGllbnRGYWN0b3J5LmNyZWF0ZVdlYlNvY2tldENsaWVudCgpKSB7Ci0gICAgICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLFN0cmluZz4gcmViaW5kaW5ncyA9IG5ldyBIYXNoTWFwPD4oKTsKLSAgICAgICAgICAgIHJlYmluZGluZ3MucHV0KCJ4eXoiLCAiZ3JhcGgiKTsKLSAgICAgICAgICAgIGZpbmFsIFJlcXVlc3RNZXNzYWdlIHJlcXVlc3QgPSBSZXF1ZXN0TWVzc2FnZS5idWlsZChUb2tlbnMuT1BTX0VWQUwpCi0gICAgICAgICAgICAgICAgICAgIC5hZGRBcmcoVG9rZW5zLkFSR1NfR1JFTUxJTiwgInh5ei5hZGRWZXJ0ZXgoJ25hbWUnLCdqYXNvbicpIikKLSAgICAgICAgICAgICAgICAgICAgLmFkZEFyZyhUb2tlbnMuQVJHU19SRUJJTkRJTkdTLCByZWJpbmRpbmdzKS5jcmVhdGUoKTsKLSAgICAgICAgICAgIGZpbmFsIExpc3Q8UmVzcG9uc2VNZXNzYWdlPiByZXNwb25zZXMgPSBjbGllbnQuc3VibWl0KHJlcXVlc3QpOwotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIHJlc3BvbnNlcy5zaXplKCkpOwotCi0gICAgICAgICAgICBmaW5hbCBEZXRhY2hlZFZlcnRleCB2ID0gKChBcnJheUxpc3Q8RGV0YWNoZWRWZXJ0ZXg+KSByZXNwb25zZXMuZ2V0KDApLmdldFJlc3VsdCgpLmdldERhdGEoKSkuZ2V0KDApOwotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJqYXNvbiIsIHYudmFsdWUoIm5hbWUiKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBAVGVzdAogICAgIHB1YmxpYyB2b2lkIHNob3VsZFN1cHBvcnRMYW1iZGFzVXNpbmdXaXRoUmVtb3RlKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CiAgICAgICAgIGZpbmFsIEdyYXBoVHJhdmVyc2FsU291cmNlIGcgPSB0cmF2ZXJzYWwoKS53aXRoUmVtb3RlKGNvbmYpOwogICAgICAgICBnLmFkZFYoInBlcnNvbiIpLnByb3BlcnR5KCJhZ2UiLCAyMCkuaXRlcmF0ZSgpOwpAQCAtMTMwNSwxMyArOTc2LDE0IEBACiAgICAgfQogCiAgICAgQFRlc3QKLSAgICBwdWJsaWMgdm9pZCBzaG91bGRHZXRTaWRlRWZmZWN0S2V5c1VzaW5nV2l0aFJlbW90ZSgpIHRocm93cyBFeGNlcHRpb24geworICAgIHB1YmxpYyB2b2lkIHNob3VsZEdldFNpZGVFZmZlY3RLZXlzQW5kU3RhdHVzVXNpbmdXaXRoUmVtb3RlKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CiAgICAgICAgIGZpbmFsIEdyYXBoVHJhdmVyc2FsU291cmNlIGcgPSB0cmF2ZXJzYWwoKS53aXRoUmVtb3RlKGNvbmYpOwogICAgICAgICBnLmFkZFYoInBlcnNvbiIpLnByb3BlcnR5KCJhZ2UiLCAyMCkuaXRlcmF0ZSgpOwogICAgICAgICBnLmFkZFYoInBlcnNvbiIpLnByb3BlcnR5KCJhZ2UiLCAxMCkuaXRlcmF0ZSgpOwogICAgICAgICBmaW5hbCBHcmFwaFRyYXZlcnNhbCB0cmF2ZXJzYWwgPSBnLlYoKS5hZ2dyZWdhdGUoImEiKS5hZ2dyZWdhdGUoImIiKTsKICAgICAgICAgdHJhdmVyc2FsLml0ZXJhdGUoKTsKICAgICAgICAgZmluYWwgRHJpdmVyUmVtb3RlVHJhdmVyc2FsU2lkZUVmZmVjdHMgc2UgPSAoRHJpdmVyUmVtb3RlVHJhdmVyc2FsU2lkZUVmZmVjdHMpIHRyYXZlcnNhbC5hc0FkbWluKCkuZ2V0U2lkZUVmZmVjdHMoKTsKKyAgICAgICAgYXNzZXJ0VGhhdChzZS5zdGF0dXNBdHRyaWJ1dGVzKCkuY29udGFpbnNLZXkoVG9rZW5zLkFSR1NfSE9TVCksIGlzKHRydWUpKTsKIAogICAgICAgICAvLyBHZXQga2V5cwogICAgICAgICBmaW5hbCBTZXQ8U3RyaW5nPiBzaWRlRWZmZWN0S2V5cyA9IHNlLmtleXMoKTsKQEAgLTEzMzQsNiArMTAwNiwxMSBAQAogCiAgICAgICAgIGZpbmFsIEJ1bGtTZXQgbG9jYWxCU2lkZUVmZmVjdHMgPSBzZS5nZXQoImIiKTsKICAgICAgICAgYXNzZXJ0VGhhdChsb2NhbEJTaWRlRWZmZWN0cy5pc0VtcHR5KCksIGlzKGZhbHNlKSk7CisKKyAgICAgICAgZmluYWwgR3JhcGhUcmF2ZXJzYWwgZ2RvdHYgPSBnLlYoKTsKKyAgICAgICAgZ2RvdHYudG9MaXN0KCk7CisgICAgICAgIGZpbmFsIERyaXZlclJlbW90ZVRyYXZlcnNhbFNpZGVFZmZlY3RzIGdkb3R2U2UgPSAoRHJpdmVyUmVtb3RlVHJhdmVyc2FsU2lkZUVmZmVjdHMpIGdkb3R2LmFzQWRtaW4oKS5nZXRTaWRlRWZmZWN0cygpOworICAgICAgICBhc3NlcnRUaGF0KGdkb3R2U2Uuc3RhdHVzQXR0cmlidXRlcygpLmNvbnRhaW5zS2V5KFRva2Vucy5BUkdTX0hPU1QpLCBpcyh0cnVlKSk7CiAgICAgfQogCiAgICAgQFRlc3QKQEAgLTE1MTQsNzIgKzExOTEsNyBAQAogICAgICAgICAgICAgY2xpZW50LnN1Ym1pdChzY3JpcHQsIGIpLmFsbCgpLmdldCgpOwogICAgICAgICAgICAgZmFpbCgiU2hvdWxkIGhhdmUgdGFua2VkIG91dCBiZWNhdXNlIG9mIG51bWJlciBvZiBwYXJhbWV0ZXJzIHVzZWQgYW5kIHNpemUgb2YgdGhlIGNvbXBpbGUgc2NyaXB0Iik7CiAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgewotICAgICAgICAgICAgYXNzZXJ0VGhhdChleC5nZXRNZXNzYWdlKCksIGNvbnRhaW5zU3RyaW5nKCJUaGUgR3JlbWxpbiBzdGF0ZW1lbnQgdGhhdCB3YXMgc3VibWl0dGVkIGV4Y2VlZCB0aGUgbWF4aW11bSBjb21waWxhdGlvbiBzaXplIGFsbG93ZWQgYnkgdGhlIEpWTSIpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEBUZXN0Ci0gICAgcHVibGljIHZvaWQgc2hvdWxkRW5hYmxlU3NsQW5kQ2xpZW50Q2VydGlmaWNhdGVBdXRoV2l0aERpZmZlcmVudFN0b3JlVHlwZSgpIHsKLSAgICAgICAgZmluYWwgQ2x1c3RlciBjbHVzdGVyID0gVGVzdENsaWVudEZhY3RvcnkuYnVpbGQoKS5lbmFibGVTc2wodHJ1ZSkKLSAgICAgICAgICAgICAgICAua2V5U3RvcmUoSktTX0NMSUVOVF9LRVkpLmtleVN0b3JlUGFzc3dvcmQoS0VZX1BBU1MpLmtleVN0b3JlVHlwZShLRVlTVE9SRV9UWVBFX0pLUykKLSAgICAgICAgICAgICAgICAudHJ1c3RTdG9yZShQMTJfQ0xJRU5UX1RSVVNUKS50cnVzdFN0b3JlUGFzc3dvcmQoS0VZX1BBU1MpLnRydXN0U3RvcmVUeXBlKFRSVVNUU1RPUkVfVFlQRV9QS0NTMTIpCi0gICAgICAgICAgICAgICAgLmNyZWF0ZSgpOwotICAgICAgICBmaW5hbCBDbGllbnQgY2xpZW50ID0gY2x1c3Rlci5jb25uZWN0KCk7Ci0KLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscygidGVzdCIsIGNsaWVudC5zdWJtaXQoIid0ZXN0JyIpLm9uZSgpLmdldFN0cmluZygpKTsKLSAgICAgICAgfSBmaW5hbGx5IHsKLSAgICAgICAgICAgIGNsdXN0ZXIuY2xvc2UoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZpbmFsIENsdXN0ZXIgY2x1c3RlcjIgPSBUZXN0Q2xpZW50RmFjdG9yeS5idWlsZCgpLmVuYWJsZVNzbCh0cnVlKQotICAgICAgICAgICAgICAgIC5rZXlTdG9yZShQMTJfQ0xJRU5UX0tFWSkua2V5U3RvcmVQYXNzd29yZChLRVlfUEFTUykua2V5U3RvcmVUeXBlKEtFWVNUT1JFX1RZUEVfUEtDUzEyKQotICAgICAgICAgICAgICAgIC50cnVzdFN0b3JlKEpLU19DTElFTlRfVFJVU1QpLnRydXN0U3RvcmVQYXNzd29yZChLRVlfUEFTUykudHJ1c3RTdG9yZVR5cGUoVFJVU1RTVE9SRV9UWVBFX0pLUykKLSAgICAgICAgICAgICAgICAuY3JlYXRlKCk7Ci0gICAgICAgIGZpbmFsIENsaWVudCBjbGllbnQyID0gY2x1c3RlcjIuY29ubmVjdCgpOwotCi0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoInRlc3QiLCBjbGllbnQyLnN1Ym1pdCgiJ3Rlc3QnIikub25lKCkuZ2V0U3RyaW5nKCkpOwotICAgICAgICB9IGZpbmFsbHkgewotICAgICAgICAgICAgY2x1c3RlcjIuY2xvc2UoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEBUZXN0Ci0gICAgcHVibGljIHZvaWQgc2hvdWxkRW5hYmxlU3NsQW5kQ2xpZW50Q2VydGlmaWNhdGVBdXRoQW5kRmFpbFdpdGhJbmNvcnJlY3RLZXlTdG9yZVR5cGUoKSB7Ci0gICAgICAgIGZpbmFsIENsdXN0ZXIgY2x1c3RlciA9IFRlc3RDbGllbnRGYWN0b3J5LmJ1aWxkKCkuZW5hYmxlU3NsKHRydWUpCi0gICAgICAgICAgICAgICAgLmtleVN0b3JlKEpLU19DTElFTlRfS0VZKS5rZXlTdG9yZVBhc3N3b3JkKEtFWV9QQVNTKS5rZXlTdG9yZVR5cGUoS0VZU1RPUkVfVFlQRV9QS0NTMTIpCi0gICAgICAgICAgICAgICAgLnRydXN0U3RvcmUoUDEyX0NMSUVOVF9UUlVTVCkudHJ1c3RTdG9yZVBhc3N3b3JkKEtFWV9QQVNTKS50cnVzdFN0b3JlVHlwZShUUlVTVFNUT1JFX1RZUEVfUEtDUzEyKQotICAgICAgICAgICAgICAgIC5jcmVhdGUoKTsKLSAgICAgICAgZmluYWwgQ2xpZW50IGNsaWVudCA9IGNsdXN0ZXIuY29ubmVjdCgpOwotCi0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBTdHJpbmcgcmVzID0gY2xpZW50LnN1Ym1pdCgiJ3Rlc3QnIikub25lKCkuZ2V0U3RyaW5nKCk7Ci0gICAgICAgICAgICBmYWlsKCJTaG91bGQgdGhyb3cgZXhjZXB0aW9uIGJlY2F1c2UgaW5jb3JyZWN0IGtleVN0b3JlVHlwZSBpcyBzcGVjaWZpZWQiKTsKLSAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIHgpIHsKLSAgICAgICAgICAgIGZpbmFsIFRocm93YWJsZSByb290ID0gRXhjZXB0aW9uVXRpbHMuZ2V0Um9vdENhdXNlKHgpOwotICAgICAgICAgICAgYXNzZXJ0VGhhdChyb290LCBpbnN0YW5jZU9mKFRpbWVvdXRFeGNlcHRpb24uY2xhc3MpKTsKLSAgICAgICAgfSBmaW5hbGx5IHsKLSAgICAgICAgICAgIGNsdXN0ZXIuY2xvc2UoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEBUZXN0Ci0gICAgcHVibGljIHZvaWQgc2hvdWxkRW5hYmxlU3NsQW5kQ2xpZW50Q2VydGlmaWNhdGVBdXRoQW5kRmFpbFdpdGhJbmNvcnJlY3RUcnVzdFN0b3JlVHlwZSgpIHsKLSAgICAgICAgZmluYWwgQ2x1c3RlciBjbHVzdGVyID0gVGVzdENsaWVudEZhY3RvcnkuYnVpbGQoKS5lbmFibGVTc2wodHJ1ZSkKLSAgICAgICAgICAgICAgICAua2V5U3RvcmUoUDEyX0NMSUVOVF9LRVkpLmtleVN0b3JlUGFzc3dvcmQoS0VZX1BBU1MpLmtleVN0b3JlVHlwZShLRVlTVE9SRV9UWVBFX1BLQ1MxMikKLSAgICAgICAgICAgICAgICAudHJ1c3RTdG9yZShKS1NfQ0xJRU5UX1RSVVNUKS50cnVzdFN0b3JlUGFzc3dvcmQoS0VZX1BBU1MpLnRydXN0U3RvcmVUeXBlKFRSVVNUU1RPUkVfVFlQRV9QS0NTMTIpCi0gICAgICAgICAgICAgICAgLmNyZWF0ZSgpOwotICAgICAgICBmaW5hbCBDbGllbnQgY2xpZW50ID0gY2x1c3Rlci5jb25uZWN0KCk7Ci0KLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGNsaWVudC5zdWJtaXQoIid0ZXN0JyIpLm9uZSgpOwotICAgICAgICAgICAgZmFpbCgiU2hvdWxkIHRocm93IGV4Y2VwdGlvbiBiZWNhdXNlIGluY29ycmVjdCB0cnVzdFN0b3JlVHlwZSBpcyBzcGVjaWZpZWQiKTsKLSAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIHgpIHsKLSAgICAgICAgICAgIGZpbmFsIFRocm93YWJsZSByb290ID0gRXhjZXB0aW9uVXRpbHMuZ2V0Um9vdENhdXNlKHgpOwotICAgICAgICAgICAgYXNzZXJ0VGhhdChyb290LCBpbnN0YW5jZU9mKFRpbWVvdXRFeGNlcHRpb24uY2xhc3MpKTsKLSAgICAgICAgfSBmaW5hbGx5IHsKLSAgICAgICAgICAgIGNsdXN0ZXIuY2xvc2UoKTsKKyAgICAgICAgICAgIGFzc2VydFRoYXQoZXguZ2V0TWVzc2FnZSgpLCBjb250YWluc1N0cmluZygiVGhlIEdyZW1saW4gc3RhdGVtZW50IHRoYXQgd2FzIHN1Ym1pdHRlZCBleGNlZWRzIHRoZSBtYXhpbXVtIGNvbXBpbGF0aW9uIHNpemUgYWxsb3dlZCBieSB0aGUgSlZNIikpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9HcmVtbGluU2VydmVyU2Vzc2lvbkludGVncmF0ZVRlc3QuamF2YSBiL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvR3JlbWxpblNlcnZlclNlc3Npb25JbnRlZ3JhdGVUZXN0LmphdmEKaW5kZXggOWRhOGNmZC4uYjQwMTMwMyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9HcmVtbGluU2VydmVyU2Vzc2lvbkludGVncmF0ZVRlc3QuamF2YQorKysgYi9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL0dyZW1saW5TZXJ2ZXJTZXNzaW9uSW50ZWdyYXRlVGVzdC5qYXZhCkBAIC0zMzksMzIgKzMzOSwzOCBAQAogCiAgICAgQFRlc3QKICAgICBwdWJsaWMgdm9pZCBzaG91bGRFbnN1cmVTZXNzaW9uQmluZGluZ3NBcmVUaHJlYWRTYWZlKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0gICAgICAgIGZpbmFsIENsdXN0ZXIgY2x1c3RlciA9IFRlc3RDbGllbnRGYWN0b3J5LmJ1aWxkKCkubWluSW5Qcm9jZXNzUGVyQ29ubmVjdGlvbigxNikubWF4SW5Qcm9jZXNzUGVyQ29ubmVjdGlvbig2NCkuY3JlYXRlKCk7CisgICAgICAgIGZpbmFsIENsdXN0ZXIgY2x1c3RlciA9IFRlc3RDbGllbnRGYWN0b3J5LmJ1aWxkKCkuCisgICAgICAgICAgICAgICAgbWluSW5Qcm9jZXNzUGVyQ29ubmVjdGlvbigxNikubWF4SW5Qcm9jZXNzUGVyQ29ubmVjdGlvbig2NCkuY3JlYXRlKCk7CiAgICAgICAgIGZpbmFsIENsaWVudCBjbGllbnQgPSBjbHVzdGVyLmNvbm5lY3QobmFtZS5nZXRNZXRob2ROYW1lKCkpOwogCi0gICAgICAgIGNsaWVudC5zdWJtaXRBc3luYygiYT0xMDA7Yj0xMDAwO2M9MTAwMDA7bnVsbCIpOwotICAgICAgICBmaW5hbCBpbnQgcmVxdWVzdHMgPSAxMDAwMDsKLSAgICAgICAgZmluYWwgTGlzdDxDb21wbGV0YWJsZUZ1dHVyZTxSZXN1bHRTZXQ+PiBmdXR1cmVzID0gbmV3IEFycmF5TGlzdDw+KHJlcXVlc3RzKTsKLSAgICAgICAgSW50U3RyZWFtLnJhbmdlKDAsIHJlcXVlc3RzKS5mb3JFYWNoKGkgLT4gewotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBmdXR1cmVzLmFkZChjbGllbnQuc3VibWl0QXN5bmMoImErYitjIikpOwotICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7Ci0gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oZXgpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgY2xpZW50LnN1Ym1pdCgiYT0xMDA7Yj0xMDAwO2M9MTAwMDA7bnVsbCIpLmFsbCgpLmdldCgpOworICAgICAgICAgICAgZmluYWwgaW50IHJlcXVlc3RzID0gMTAwMDA7CisgICAgICAgICAgICBmaW5hbCBMaXN0PENvbXBsZXRhYmxlRnV0dXJlPFJlc3VsdFNldD4+IGZ1dHVyZXMgPSBuZXcgQXJyYXlMaXN0PD4ocmVxdWVzdHMpOworICAgICAgICAgICAgSW50U3RyZWFtLnJhbmdlKDAsIHJlcXVlc3RzKS5mb3JFYWNoKGkgLT4geworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIGZ1dHVyZXMuYWRkKGNsaWVudC5zdWJtaXRBc3luYygiYStiK2MiKSk7CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKGV4KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKHJlcXVlc3RzLCBmdXR1cmVzLnNpemUoKSk7CisKKyAgICAgICAgICAgIGludCBjb3VudGVyID0gMDsKKyAgICAgICAgICAgIGZvciAoQ29tcGxldGFibGVGdXR1cmU8UmVzdWx0U2V0PiBmIDogZnV0dXJlcykgeworICAgICAgICAgICAgICAgIGZpbmFsIFJlc3VsdCByID0gZi5nZXQoKS5hbGwoKS5nZXQoMzAwMDAsIFRpbWVVbml0Lk1JTExJU0VDT05EUykuZ2V0KDApOworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygxMTEwMCwgci5nZXRJbnQoKSk7CisgICAgICAgICAgICAgICAgY291bnRlcisrOwogICAgICAgICAgICAgfQotICAgICAgICB9KTsKIAotICAgICAgICBhc3NlcnRFcXVhbHMocmVxdWVzdHMsIGZ1dHVyZXMuc2l6ZSgpKTsKLQotICAgICAgICBpbnQgY291bnRlciA9IDA7Ci0gICAgICAgIGZvcihDb21wbGV0YWJsZUZ1dHVyZTxSZXN1bHRTZXQ+IGYgOiBmdXR1cmVzKSB7Ci0gICAgICAgICAgICBmaW5hbCBSZXN1bHQgciA9IGYuZ2V0KCkuYWxsKCkuZ2V0KDMwMDAwLCBUaW1lVW5pdC5NSUxMSVNFQ09ORFMpLmdldCgwKTsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscygxMTEwMCwgci5nZXRJbnQoKSk7Ci0gICAgICAgICAgICBjb3VudGVyKys7CisgICAgICAgICAgICBhc3NlcnRFcXVhbHMocmVxdWVzdHMsIGNvdW50ZXIpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgIGZhaWwoZXguZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgIGNsdXN0ZXIuY2xvc2UoKTsKICAgICAgICAgfQogCi0gICAgICAgIGFzc2VydEVxdWFscyhyZXF1ZXN0cywgY291bnRlcik7Ci0KLSAgICAgICAgY2x1c3Rlci5jbG9zZSgpOwogICAgIH0KIAogICAgIEBUZXN0CmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL0dyZW1saW5TZXJ2ZXJTc2xJbnRlZ3JhdGVUZXN0LmphdmEgYi9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL0dyZW1saW5TZXJ2ZXJTc2xJbnRlZ3JhdGVUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWI3NWI4ZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvR3JlbWxpblNlcnZlclNzbEludGVncmF0ZVRlc3QuamF2YQpAQCAtMCwwICsxLDQxOCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc2VydmVyOworCitpbXBvcnQgaW8ubmV0dHkuaGFuZGxlci5zc2wuQ2xpZW50QXV0aDsKK2ltcG9ydCBpby5uZXR0eS5oYW5kbGVyLnNzbC5Tc2xDb250ZXh0OworaW1wb3J0IGlvLm5ldHR5LmhhbmRsZXIuc3NsLlNzbENvbnRleHRCdWlsZGVyOworaW1wb3J0IGlvLm5ldHR5LmhhbmRsZXIuc3NsLlNzbFByb3ZpZGVyOworaW1wb3J0IGlvLm5ldHR5LmhhbmRsZXIuc3NsLnV0aWwuSW5zZWN1cmVUcnVzdE1hbmFnZXJGYWN0b3J5OworaW1wb3J0IGlvLm5ldHR5LmhhbmRsZXIuc3NsLnV0aWwuU2VsZlNpZ25lZENlcnRpZmljYXRlOworaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5sYW5nMy5leGNlcHRpb24uRXhjZXB0aW9uVXRpbHM7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuQ2xpZW50OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLkNsdXN0ZXI7CitpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CisKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKK2ltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lb3V0RXhjZXB0aW9uOworCitpbXBvcnQgc3RhdGljIG9yZy5oYW1jcmVzdC5NYXRjaGVyQXNzZXJ0LmFzc2VydFRoYXQ7CitpbXBvcnQgc3RhdGljIG9yZy5oYW1jcmVzdC5jb3JlLklzSW5zdGFuY2VPZi5pbnN0YW5jZU9mOworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydEVxdWFsczsKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5mYWlsOworCitwdWJsaWMgY2xhc3MgR3JlbWxpblNlcnZlclNzbEludGVncmF0ZVRlc3QgZXh0ZW5kcyBBYnN0cmFjdEdyZW1saW5TZXJ2ZXJJbnRlZ3JhdGlvblRlc3QgeworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBQRU1fU0VSVkVSX0tFWSA9ICJzcmMvdGVzdC9yZXNvdXJjZXMvc2VydmVyLmtleS5wazgiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBQRU1fU0VSVkVSX0NSVCA9ICJzcmMvdGVzdC9yZXNvdXJjZXMvc2VydmVyLmNydCI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFBFTV9DTElFTlRfS0VZID0gInNyYy90ZXN0L3Jlc291cmNlcy9jbGllbnQua2V5LnBrOCI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFBFTV9DTElFTlRfQ1JUID0gInNyYy90ZXN0L3Jlc291cmNlcy9jbGllbnQuY3J0IjsKKworICAgIC8qKgorICAgICAqIENvbmZpZ3VyZSBzcGVjaWZpYyBHcmVtbGluIFNlcnZlciBzZXR0aW5ncyBmb3Igc3BlY2lmaWMgdGVzdHMuCisgICAgICovCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFNldHRpbmdzIG92ZXJyaWRlU2V0dGluZ3MoZmluYWwgU2V0dGluZ3Mgc2V0dGluZ3MpIHsKKyAgICAgICAgZmluYWwgU3RyaW5nIG5hbWVPZlRlc3QgPSBuYW1lLmdldE1ldGhvZE5hbWUoKTsKKyAgICAgICAgc3dpdGNoIChuYW1lT2ZUZXN0KSB7CisgICAgICAgICAgICBjYXNlICJzaG91bGRFbmFibGVTc2wiOgorICAgICAgICAgICAgY2FzZSAic2hvdWxkRW5hYmxlU3NsQnV0RmFpbElmQ2xpZW50Q29ubmVjdHNXaXRob3V0SXQiOgorICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbCA9IG5ldyBTZXR0aW5ncy5Tc2xTZXR0aW5ncygpOworICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5lbmFibGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wua2V5U3RvcmUgPSBKS1NfU0VSVkVSX0tFWTsKKyAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wua2V5U3RvcmVQYXNzd29yZCA9IEtFWV9QQVNTOworICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5rZXlTdG9yZVR5cGUgPSBLRVlTVE9SRV9UWVBFX0pLUzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgInNob3VsZEVuYWJsZVNzbFdpdGhTc2xDb250ZXh0UHJvZ3JhbW1hdGljYWxseVNwZWNpZmllZCI6CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsID0gbmV3IFNldHRpbmdzLlNzbFNldHRpbmdzKCk7CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmVuYWJsZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5vdmVycmlkZVNzbENvbnRleHQoY3JlYXRlU2VydmVyU3NsQ29udGV4dCgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgInNob3VsZEVuYWJsZVNzbEFuZENsaWVudENlcnRpZmljYXRlQXV0aFdpdGhMZWdhY3lQZW0iOgorICAgICAgICAgICAgY2FzZSAic2hvdWxkRW5hYmxlU3NsQW5kQ2xpZW50Q2VydGlmaWNhdGVBdXRoQW5kRmFpbFdpdGhvdXRDZXJ0V2l0aExlZ2FjeVBlbSI6CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsID0gbmV3IFNldHRpbmdzLlNzbFNldHRpbmdzKCk7CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmVuYWJsZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5uZWVkQ2xpZW50QXV0aCA9IENsaWVudEF1dGguUkVRVUlSRTsKKyAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wua2V5Q2VydENoYWluRmlsZSA9IFBFTV9TRVJWRVJfQ1JUOworICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5rZXlGaWxlID0gUEVNX1NFUlZFUl9LRVk7CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmtleVBhc3N3b3JkID0gS0VZX1BBU1M7CisgICAgICAgICAgICAgICAgLy8gVHJ1c3QgdGhlIGNsaWVudAorICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC50cnVzdENlcnRDaGFpbkZpbGUgPSBQRU1fQ0xJRU5UX0NSVDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIC8vIFRydXN0IHRoZSBjbGllbnQKKyAgICAgICAgICAgIGNhc2UgInNob3VsZEVuYWJsZVNzbEFuZENsaWVudENlcnRpZmljYXRlQXV0aEFuZEZhaWxXaXRob3V0VHJ1c3RlZENsaWVudENlcnRXaXRoTGVnYWN5UGVtIjoKKyAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wgPSBuZXcgU2V0dGluZ3MuU3NsU2V0dGluZ3MoKTsKKyAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wuZW5hYmxlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLm5lZWRDbGllbnRBdXRoID0gQ2xpZW50QXV0aC5SRVFVSVJFOworICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5rZXlDZXJ0Q2hhaW5GaWxlID0gUEVNX1NFUlZFUl9DUlQ7CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmtleUZpbGUgPSBQRU1fU0VSVkVSX0tFWTsKKyAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wua2V5UGFzc3dvcmQgPSBLRVlfUEFTUzsKKyAgICAgICAgICAgICAgICAvLyBUcnVzdCBPTkxZIHRoZSBzZXJ2ZXIgY2VydAorICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC50cnVzdENlcnRDaGFpbkZpbGUgPSBQRU1fU0VSVkVSX0NSVDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgInNob3VsZEVuYWJsZVNzbEFuZENsaWVudENlcnRpZmljYXRlQXV0aFdpdGhQa2NzMTIiOgorICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbCA9IG5ldyBTZXR0aW5ncy5Tc2xTZXR0aW5ncygpOworICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5lbmFibGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wubmVlZENsaWVudEF1dGggPSBDbGllbnRBdXRoLlJFUVVJUkU7CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmtleVN0b3JlID0gUDEyX1NFUlZFUl9LRVk7CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmtleVN0b3JlUGFzc3dvcmQgPSBLRVlfUEFTUzsKKyAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wua2V5U3RvcmVUeXBlID0gS0VZU1RPUkVfVFlQRV9QS0NTMTI7CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLnRydXN0U3RvcmUgPSBQMTJfU0VSVkVSX1RSVVNUOworICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC50cnVzdFN0b3JlUGFzc3dvcmQgPSBLRVlfUEFTUzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgInNob3VsZEVuYWJsZVNzbEFuZENsaWVudENlcnRpZmljYXRlQXV0aCI6CisgICAgICAgICAgICBjYXNlICJzaG91bGRFbmFibGVTc2xBbmRDbGllbnRDZXJ0aWZpY2F0ZUF1dGhBbmRGYWlsV2l0aG91dENlcnQiOgorICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbCA9IG5ldyBTZXR0aW5ncy5Tc2xTZXR0aW5ncygpOworICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5lbmFibGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wubmVlZENsaWVudEF1dGggPSBDbGllbnRBdXRoLlJFUVVJUkU7CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmtleVN0b3JlID0gSktTX1NFUlZFUl9LRVk7CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmtleVN0b3JlUGFzc3dvcmQgPSBLRVlfUEFTUzsKKyAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wua2V5U3RvcmVUeXBlID0gS0VZU1RPUkVfVFlQRV9KS1M7CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLnRydXN0U3RvcmUgPSBKS1NfU0VSVkVSX1RSVVNUOworICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC50cnVzdFN0b3JlUGFzc3dvcmQgPSBLRVlfUEFTUzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgInNob3VsZEVuYWJsZVNzbEFuZENsaWVudENlcnRpZmljYXRlQXV0aEFuZEZhaWxXaXRob3V0VHJ1c3RlZENsaWVudENlcnQiOgorICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbCA9IG5ldyBTZXR0aW5ncy5Tc2xTZXR0aW5ncygpOworICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5lbmFibGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wubmVlZENsaWVudEF1dGggPSBDbGllbnRBdXRoLlJFUVVJUkU7CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmtleVN0b3JlID0gSktTX1NFUlZFUl9LRVk7CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmtleVN0b3JlUGFzc3dvcmQgPSBLRVlfUEFTUzsKKyAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wua2V5U3RvcmVUeXBlID0gS0VZU1RPUkVfVFlQRV9KS1M7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICJzaG91bGRFbmFibGVTc2xBbmRGYWlsSWZQcm90b2NvbHNEb250TWF0Y2giOgorICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbCA9IG5ldyBTZXR0aW5ncy5Tc2xTZXR0aW5ncygpOworICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5lbmFibGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wua2V5U3RvcmUgPSBKS1NfU0VSVkVSX0tFWTsKKyAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wua2V5U3RvcmVQYXNzd29yZCA9IEtFWV9QQVNTOworICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5rZXlTdG9yZVR5cGUgPSBLRVlTVE9SRV9UWVBFX0pLUzsKKyAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wuc3NsRW5hYmxlZFByb3RvY29scyA9IENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QoIlRMU3YxLjEiKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgInNob3VsZEVuYWJsZVNzbEFuZEZhaWxJZkNpcGhlcnNEb250TWF0Y2giOgorICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbCA9IG5ldyBTZXR0aW5ncy5Tc2xTZXR0aW5ncygpOworICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5lbmFibGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wua2V5U3RvcmUgPSBKS1NfU0VSVkVSX0tFWTsKKyAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wua2V5U3RvcmVQYXNzd29yZCA9IEtFWV9QQVNTOworICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5rZXlTdG9yZVR5cGUgPSBLRVlTVE9SRV9UWVBFX0pLUzsKKyAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wuc3NsQ2lwaGVyU3VpdGVzID0gQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdCgiVExTX0RIRV9SU0FfV0lUSF9BRVNfMTI4X0NCQ19TSEEiKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgInNob3VsZEVuYWJsZVNzbEFuZENsaWVudENlcnRpZmljYXRlQXV0aFdpdGhEaWZmZXJlbnRTdG9yZVR5cGUiOgorICAgICAgICAgICAgY2FzZSAic2hvdWxkRW5hYmxlU3NsQW5kQ2xpZW50Q2VydGlmaWNhdGVBdXRoQW5kRmFpbFdpdGhJbmNvcnJlY3RLZXlTdG9yZVR5cGUiOgorICAgICAgICAgICAgY2FzZSAic2hvdWxkRW5hYmxlU3NsQW5kQ2xpZW50Q2VydGlmaWNhdGVBdXRoQW5kRmFpbFdpdGhJbmNvcnJlY3RUcnVzdFN0b3JlVHlwZSI6CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsID0gbmV3IFNldHRpbmdzLlNzbFNldHRpbmdzKCk7CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLmVuYWJsZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5uZWVkQ2xpZW50QXV0aCA9IENsaWVudEF1dGguUkVRVUlSRTsKKyAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wua2V5U3RvcmUgPSBKS1NfU0VSVkVSX0tFWTsKKyAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wua2V5U3RvcmVQYXNzd29yZCA9IEtFWV9QQVNTOworICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC5rZXlTdG9yZVR5cGUgPSBLRVlTVE9SRV9UWVBFX0pLUzsKKyAgICAgICAgICAgICAgICBzZXR0aW5ncy5zc2wudHJ1c3RTdG9yZSA9IFAxMl9TRVJWRVJfVFJVU1Q7CisgICAgICAgICAgICAgICAgc2V0dGluZ3Muc3NsLnRydXN0U3RvcmVQYXNzd29yZCA9IEtFWV9QQVNTOworICAgICAgICAgICAgICAgIHNldHRpbmdzLnNzbC50cnVzdFN0b3JlVHlwZSA9IFRSVVNUU1RPUkVfVFlQRV9QS0NTMTI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gc2V0dGluZ3M7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgU3NsQ29udGV4dCBjcmVhdGVTZXJ2ZXJTc2xDb250ZXh0KCkgeworICAgICAgICBmaW5hbCBTc2xQcm92aWRlciBwcm92aWRlciA9IFNzbFByb3ZpZGVyLkpESzsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgLy8gdGhpcyBpcyBub3QgZ29vZCBmb3IgcHJvZHVjdGlvbiAtIGp1c3QgdGVzdGluZworICAgICAgICAgICAgZmluYWwgU2VsZlNpZ25lZENlcnRpZmljYXRlIHNzYyA9IG5ldyBTZWxmU2lnbmVkQ2VydGlmaWNhdGUoKTsKKyAgICAgICAgICAgIHJldHVybiBTc2xDb250ZXh0QnVpbGRlci5mb3JTZXJ2ZXIoc3NjLmNlcnRpZmljYXRlKCksIHNzYy5wcml2YXRlS2V5KCkpLnNzbFByb3ZpZGVyKHByb3ZpZGVyKS5idWlsZCgpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gY2UpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJDb3VsZG4ndCBzZXR1cCBzZWxmLXNpZ25lZCBjZXJ0aWZpY2F0ZSBmb3IgdGVzdCIpOworICAgICAgICB9CisgICAgfQorCisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZEVuYWJsZVNzbCgpIHsKKyAgICAgICAgZmluYWwgQ2x1c3RlciBjbHVzdGVyID0gVGVzdENsaWVudEZhY3RvcnkuYnVpbGQoKS5lbmFibGVTc2wodHJ1ZSkua2V5U3RvcmUoSktTX1NFUlZFUl9LRVkpLmtleVN0b3JlUGFzc3dvcmQoS0VZX1BBU1MpLnNzbFNraXBDZXJ0VmFsaWRhdGlvbih0cnVlKS5jcmVhdGUoKTsKKyAgICAgICAgZmluYWwgQ2xpZW50IGNsaWVudCA9IGNsdXN0ZXIuY29ubmVjdCgpOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAvLyB0aGlzIHNob3VsZCByZXR1cm4gIm5vdGhpbmciIC0gdGhlcmUgc2hvdWxkIGJlIG5vIGV4Y2VwdGlvbgorICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJ0ZXN0IiwgY2xpZW50LnN1Ym1pdCgiJ3Rlc3QnIikub25lKCkuZ2V0U3RyaW5nKCkpOworICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgY2x1c3Rlci5jbG9zZSgpOworICAgICAgICB9CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRFbmFibGVTc2xXaXRoU3NsQ29udGV4dFByb2dyYW1tYXRpY2FsbHlTcGVjaWZpZWQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgLy8ganVzdCBmb3IgdGVzdGluZyAtIHRoaXMgaXMgbm90IGdvb2QgZm9yIHByb2R1Y3Rpb24gdXNlCisgICAgICAgIGZpbmFsIFNzbENvbnRleHRCdWlsZGVyIGJ1aWxkZXIgPSBTc2xDb250ZXh0QnVpbGRlci5mb3JDbGllbnQoKTsKKyAgICAgICAgYnVpbGRlci50cnVzdE1hbmFnZXIoSW5zZWN1cmVUcnVzdE1hbmFnZXJGYWN0b3J5LklOU1RBTkNFKTsKKyAgICAgICAgYnVpbGRlci5zc2xQcm92aWRlcihTc2xQcm92aWRlci5KREspOworCisgICAgICAgIGZpbmFsIENsdXN0ZXIgY2x1c3RlciA9IFRlc3RDbGllbnRGYWN0b3J5LmJ1aWxkKCkuZW5hYmxlU3NsKHRydWUpLnNzbENvbnRleHQoYnVpbGRlci5idWlsZCgpKS5jcmVhdGUoKTsKKyAgICAgICAgZmluYWwgQ2xpZW50IGNsaWVudCA9IGNsdXN0ZXIuY29ubmVjdCgpOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAvLyB0aGlzIHNob3VsZCByZXR1cm4gIm5vdGhpbmciIC0gdGhlcmUgc2hvdWxkIGJlIG5vIGV4Y2VwdGlvbgorICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJ0ZXN0IiwgY2xpZW50LnN1Ym1pdCgiJ3Rlc3QnIikub25lKCkuZ2V0U3RyaW5nKCkpOworICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgY2x1c3Rlci5jbG9zZSgpOworICAgICAgICB9CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRFbmFibGVTc2xCdXRGYWlsSWZDbGllbnRDb25uZWN0c1dpdGhvdXRJdCgpIHsKKyAgICAgICAgZmluYWwgQ2x1c3RlciBjbHVzdGVyID0gVGVzdENsaWVudEZhY3RvcnkuYnVpbGQoKS5lbmFibGVTc2woZmFsc2UpLmNyZWF0ZSgpOworICAgICAgICBmaW5hbCBDbGllbnQgY2xpZW50ID0gY2x1c3Rlci5jb25uZWN0KCk7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNsaWVudC5zdWJtaXQoIid0ZXN0JyIpLm9uZSgpOworICAgICAgICAgICAgZmFpbCgiU2hvdWxkIHRocm93IGV4Y2VwdGlvbiBiZWNhdXNlIHNzbCBpcyBlbmFibGVkIG9uIHRoZSBzZXJ2ZXIgYnV0IG5vdCBvbiBjbGllbnQiKTsKKyAgICAgICAgfSBjYXRjaChFeGNlcHRpb24geCkgeworICAgICAgICAgICAgZmluYWwgVGhyb3dhYmxlIHJvb3QgPSBFeGNlcHRpb25VdGlscy5nZXRSb290Q2F1c2UoeCk7CisgICAgICAgICAgICBhc3NlcnRUaGF0KHJvb3QsIGluc3RhbmNlT2YoVGltZW91dEV4Y2VwdGlvbi5jbGFzcykpOworICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgY2x1c3Rlci5jbG9zZSgpOworICAgICAgICB9CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRFbmFibGVTc2xBbmRDbGllbnRDZXJ0aWZpY2F0ZUF1dGhXaXRoTGVnYWN5UGVtKCkgeworICAgICAgICBmaW5hbCBDbHVzdGVyIGNsdXN0ZXIgPSBUZXN0Q2xpZW50RmFjdG9yeS5idWlsZCgpLmVuYWJsZVNzbCh0cnVlKQorICAgICAgICAgICAgICAgIC5rZXlDZXJ0Q2hhaW5GaWxlKFBFTV9DTElFTlRfQ1JUKS5rZXlGaWxlKFBFTV9DTElFTlRfS0VZKQorICAgICAgICAgICAgICAgIC5rZXlQYXNzd29yZChLRVlfUEFTUykudHJ1c3RDZXJ0aWZpY2F0ZUNoYWluRmlsZShQRU1fU0VSVkVSX0NSVCkuY3JlYXRlKCk7CisgICAgICAgIGZpbmFsIENsaWVudCBjbGllbnQgPSBjbHVzdGVyLmNvbm5lY3QoKTsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJ0ZXN0IiwgY2xpZW50LnN1Ym1pdCgiJ3Rlc3QnIikub25lKCkuZ2V0U3RyaW5nKCkpOworICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgY2x1c3Rlci5jbG9zZSgpOworICAgICAgICB9CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRFbmFibGVTc2xBbmRDbGllbnRDZXJ0aWZpY2F0ZUF1dGhBbmRGYWlsV2l0aG91dENlcnRXaXRoTGVnYWN5UGVtKCkgeworICAgICAgICBmaW5hbCBDbHVzdGVyIGNsdXN0ZXIgPSBUZXN0Q2xpZW50RmFjdG9yeS5idWlsZCgpLmVuYWJsZVNzbCh0cnVlKS5rZXlTdG9yZShKS1NfU0VSVkVSX0tFWSkua2V5U3RvcmVQYXNzd29yZChLRVlfUEFTUykuc3NsU2tpcENlcnRWYWxpZGF0aW9uKHRydWUpLmNyZWF0ZSgpOworICAgICAgICBmaW5hbCBDbGllbnQgY2xpZW50ID0gY2x1c3Rlci5jb25uZWN0KCk7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNsaWVudC5zdWJtaXQoIid0ZXN0JyIpLm9uZSgpOworICAgICAgICAgICAgZmFpbCgiU2hvdWxkIHRocm93IGV4Y2VwdGlvbiBiZWNhdXNlIHNzbCBjbGllbnQgYXV0aCBpcyBlbmFibGVkIG9uIHRoZSBzZXJ2ZXIgYnV0IGNsaWVudCBkb2VzIG5vdCBoYXZlIGEgY2VydCIpOworICAgICAgICB9IGNhdGNoKEV4Y2VwdGlvbiB4KSB7CisgICAgICAgICAgICBmaW5hbCBUaHJvd2FibGUgcm9vdCA9IEV4Y2VwdGlvblV0aWxzLmdldFJvb3RDYXVzZSh4KTsKKyAgICAgICAgICAgIGFzc2VydFRoYXQocm9vdCwgaW5zdGFuY2VPZihUaW1lb3V0RXhjZXB0aW9uLmNsYXNzKSk7CisgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICBjbHVzdGVyLmNsb3NlKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZEVuYWJsZVNzbEFuZENsaWVudENlcnRpZmljYXRlQXV0aEFuZEZhaWxXaXRob3V0VHJ1c3RlZENsaWVudENlcnRXaXRoTGVnYWN5UGVtKCkgeworICAgICAgICBmaW5hbCBDbHVzdGVyIGNsdXN0ZXIgPSBUZXN0Q2xpZW50RmFjdG9yeS5idWlsZCgpLmVuYWJsZVNzbCh0cnVlKQorICAgICAgICAgICAgICAgIC5rZXlDZXJ0Q2hhaW5GaWxlKFBFTV9DTElFTlRfQ1JUKS5rZXlGaWxlKFBFTV9DTElFTlRfS0VZKQorICAgICAgICAgICAgICAgIC5rZXlQYXNzd29yZChLRVlfUEFTUykudHJ1c3RDZXJ0aWZpY2F0ZUNoYWluRmlsZShQRU1fU0VSVkVSX0NSVCkuY3JlYXRlKCk7CisgICAgICAgIGZpbmFsIENsaWVudCBjbGllbnQgPSBjbHVzdGVyLmNvbm5lY3QoKTsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgY2xpZW50LnN1Ym1pdCgiJ3Rlc3QnIikub25lKCk7CisgICAgICAgICAgICBmYWlsKCJTaG91bGQgdGhyb3cgZXhjZXB0aW9uIGJlY2F1c2Ugc3NsIGNsaWVudCBhdXRoIGlzIGVuYWJsZWQgb24gdGhlIHNlcnZlciBidXQgZG9lcyBub3QgdHJ1c3QgY2xpZW50J3MgY2VydCIpOworICAgICAgICB9IGNhdGNoKEV4Y2VwdGlvbiB4KSB7CisgICAgICAgICAgICBmaW5hbCBUaHJvd2FibGUgcm9vdCA9IEV4Y2VwdGlvblV0aWxzLmdldFJvb3RDYXVzZSh4KTsKKyAgICAgICAgICAgIGFzc2VydFRoYXQocm9vdCwgaW5zdGFuY2VPZihUaW1lb3V0RXhjZXB0aW9uLmNsYXNzKSk7CisgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICBjbHVzdGVyLmNsb3NlKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZEVuYWJsZVNzbEFuZENsaWVudENlcnRpZmljYXRlQXV0aFdpdGhQa2NzMTIoKSB7CisgICAgICAgIGZpbmFsIENsdXN0ZXIgY2x1c3RlciA9IFRlc3RDbGllbnRGYWN0b3J5LmJ1aWxkKCkuZW5hYmxlU3NsKHRydWUpLmtleVN0b3JlKFAxMl9DTElFTlRfS0VZKS5rZXlTdG9yZVBhc3N3b3JkKEtFWV9QQVNTKQorICAgICAgICAgICAgICAgIC5rZXlTdG9yZVR5cGUoS0VZU1RPUkVfVFlQRV9QS0NTMTIpLnRydXN0U3RvcmUoUDEyX0NMSUVOVF9UUlVTVCkudHJ1c3RTdG9yZVBhc3N3b3JkKEtFWV9QQVNTKS5jcmVhdGUoKTsKKyAgICAgICAgZmluYWwgQ2xpZW50IGNsaWVudCA9IGNsdXN0ZXIuY29ubmVjdCgpOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBhc3NlcnRFcXVhbHMoInRlc3QiLCBjbGllbnQuc3VibWl0KCIndGVzdCciKS5vbmUoKS5nZXRTdHJpbmcoKSk7CisgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICBjbHVzdGVyLmNsb3NlKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZEVuYWJsZVNzbEFuZENsaWVudENlcnRpZmljYXRlQXV0aCgpIHsKKyAgICAgICAgZmluYWwgQ2x1c3RlciBjbHVzdGVyID0gVGVzdENsaWVudEZhY3RvcnkuYnVpbGQoKS5lbmFibGVTc2wodHJ1ZSkua2V5U3RvcmUoSktTX0NMSUVOVF9LRVkpLmtleVN0b3JlUGFzc3dvcmQoS0VZX1BBU1MpCisgICAgICAgICAgICAgICAgLmtleVN0b3JlVHlwZShLRVlTVE9SRV9UWVBFX0pLUykudHJ1c3RTdG9yZShKS1NfQ0xJRU5UX1RSVVNUKS50cnVzdFN0b3JlUGFzc3dvcmQoS0VZX1BBU1MpLmNyZWF0ZSgpOworICAgICAgICBmaW5hbCBDbGllbnQgY2xpZW50ID0gY2x1c3Rlci5jb25uZWN0KCk7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGFzc2VydEVxdWFscygidGVzdCIsIGNsaWVudC5zdWJtaXQoIid0ZXN0JyIpLm9uZSgpLmdldFN0cmluZygpKTsKKyAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgIGNsdXN0ZXIuY2xvc2UoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkRW5hYmxlU3NsQW5kQ2xpZW50Q2VydGlmaWNhdGVBdXRoQW5kRmFpbFdpdGhvdXRDZXJ0KCkgeworICAgICAgICBmaW5hbCBDbHVzdGVyIGNsdXN0ZXIgPSBUZXN0Q2xpZW50RmFjdG9yeS5idWlsZCgpLmVuYWJsZVNzbCh0cnVlKS5rZXlTdG9yZShKS1NfU0VSVkVSX0tFWSkua2V5U3RvcmVQYXNzd29yZChLRVlfUEFTUykKKyAgICAgICAgICAgICAgICAua2V5U3RvcmVUeXBlKEtFWVNUT1JFX1RZUEVfSktTKS5zc2xTa2lwQ2VydFZhbGlkYXRpb24odHJ1ZSkuY3JlYXRlKCk7CisgICAgICAgIGZpbmFsIENsaWVudCBjbGllbnQgPSBjbHVzdGVyLmNvbm5lY3QoKTsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgY2xpZW50LnN1Ym1pdCgiJ3Rlc3QnIikub25lKCk7CisgICAgICAgICAgICBmYWlsKCJTaG91bGQgdGhyb3cgZXhjZXB0aW9uIGJlY2F1c2Ugc3NsIGNsaWVudCBhdXRoIGlzIGVuYWJsZWQgb24gdGhlIHNlcnZlciBidXQgY2xpZW50IGRvZXMgbm90IGhhdmUgYSBjZXJ0Iik7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiB4KSB7CisgICAgICAgICAgICBmaW5hbCBUaHJvd2FibGUgcm9vdCA9IEV4Y2VwdGlvblV0aWxzLmdldFJvb3RDYXVzZSh4KTsKKyAgICAgICAgICAgIGFzc2VydFRoYXQocm9vdCwgaW5zdGFuY2VPZihUaW1lb3V0RXhjZXB0aW9uLmNsYXNzKSk7CisgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICBjbHVzdGVyLmNsb3NlKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZEVuYWJsZVNzbEFuZENsaWVudENlcnRpZmljYXRlQXV0aEFuZEZhaWxXaXRob3V0VHJ1c3RlZENsaWVudENlcnQoKSB7CisgICAgICAgIGZpbmFsIENsdXN0ZXIgY2x1c3RlciA9IFRlc3RDbGllbnRGYWN0b3J5LmJ1aWxkKCkuZW5hYmxlU3NsKHRydWUpLmtleVN0b3JlKEpLU19DTElFTlRfS0VZKS5rZXlTdG9yZVBhc3N3b3JkKEtFWV9QQVNTKQorICAgICAgICAgICAgICAgIC5rZXlTdG9yZVR5cGUoS0VZU1RPUkVfVFlQRV9KS1MpLnRydXN0U3RvcmUoSktTX0NMSUVOVF9UUlVTVCkudHJ1c3RTdG9yZVBhc3N3b3JkKEtFWV9QQVNTKS5jcmVhdGUoKTsKKyAgICAgICAgZmluYWwgQ2xpZW50IGNsaWVudCA9IGNsdXN0ZXIuY29ubmVjdCgpOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjbGllbnQuc3VibWl0KCIndGVzdCciKS5vbmUoKTsKKyAgICAgICAgICAgIGZhaWwoIlNob3VsZCB0aHJvdyBleGNlcHRpb24gYmVjYXVzZSBzc2wgY2xpZW50IGF1dGggaXMgZW5hYmxlZCBvbiB0aGUgc2VydmVyIGJ1dCBkb2VzIG5vdCB0cnVzdCBjbGllbnQncyBjZXJ0Iik7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiB4KSB7CisgICAgICAgICAgICBmaW5hbCBUaHJvd2FibGUgcm9vdCA9IEV4Y2VwdGlvblV0aWxzLmdldFJvb3RDYXVzZSh4KTsKKyAgICAgICAgICAgIGFzc2VydFRoYXQocm9vdCwgaW5zdGFuY2VPZihUaW1lb3V0RXhjZXB0aW9uLmNsYXNzKSk7CisgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICBjbHVzdGVyLmNsb3NlKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZEVuYWJsZVNzbEFuZEZhaWxJZlByb3RvY29sc0RvbnRNYXRjaCgpIHsKKyAgICAgICAgZmluYWwgQ2x1c3RlciBjbHVzdGVyID0gVGVzdENsaWVudEZhY3RvcnkuYnVpbGQoKS5lbmFibGVTc2wodHJ1ZSkua2V5U3RvcmUoSktTX1NFUlZFUl9LRVkpLmtleVN0b3JlUGFzc3dvcmQoS0VZX1BBU1MpCisgICAgICAgICAgICAgICAgLnNzbFNraXBDZXJ0VmFsaWRhdGlvbih0cnVlKS5zc2xFbmFibGVkUHJvdG9jb2xzKEFycmF5cy5hc0xpc3QoIlRMU3YxLjIiKSkuY3JlYXRlKCk7CisgICAgICAgIGZpbmFsIENsaWVudCBjbGllbnQgPSBjbHVzdGVyLmNvbm5lY3QoKTsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgY2xpZW50LnN1Ym1pdCgiJ3Rlc3QnIikub25lKCk7CisgICAgICAgICAgICBmYWlsKCJTaG91bGQgdGhyb3cgZXhjZXB0aW9uIGJlY2F1c2Ugc3NsIGNsaWVudCByZXF1aXJlcyBUTFN2MS4yIHdoZXJlYXMgc2VydmVyIHN1cHBvcnRzIG9ubHkgVExTdjEuMSIpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24geCkgeworICAgICAgICAgICAgZmluYWwgVGhyb3dhYmxlIHJvb3QgPSBFeGNlcHRpb25VdGlscy5nZXRSb290Q2F1c2UoeCk7CisgICAgICAgICAgICBhc3NlcnRUaGF0KHJvb3QsIGluc3RhbmNlT2YoVGltZW91dEV4Y2VwdGlvbi5jbGFzcykpOworICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgY2x1c3Rlci5jbG9zZSgpOworICAgICAgICB9CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRFbmFibGVTc2xBbmRGYWlsSWZDaXBoZXJzRG9udE1hdGNoKCkgeworICAgICAgICBmaW5hbCBDbHVzdGVyIGNsdXN0ZXIgPSBUZXN0Q2xpZW50RmFjdG9yeS5idWlsZCgpLmVuYWJsZVNzbCh0cnVlKS5rZXlTdG9yZShKS1NfU0VSVkVSX0tFWSkua2V5U3RvcmVQYXNzd29yZChLRVlfUEFTUykKKyAgICAgICAgICAgICAgICAuc3NsU2tpcENlcnRWYWxpZGF0aW9uKHRydWUpLnNzbENpcGhlclN1aXRlcyhBcnJheXMuYXNMaXN0KCJTU0xfUlNBX1dJVEhfUkM0XzEyOF9TSEEiKSkuY3JlYXRlKCk7CisgICAgICAgIGZpbmFsIENsaWVudCBjbGllbnQgPSBjbHVzdGVyLmNvbm5lY3QoKTsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgY2xpZW50LnN1Ym1pdCgiJ3Rlc3QnIikub25lKCk7CisgICAgICAgICAgICBmYWlsKCJTaG91bGQgdGhyb3cgZXhjZXB0aW9uIGJlY2F1c2Ugc3NsIGNsaWVudCByZXF1aXJlcyBUTFN2MS4yIHdoZXJlYXMgc2VydmVyIHN1cHBvcnRzIG9ubHkgVExTdjEuMSIpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24geCkgeworICAgICAgICAgICAgZmluYWwgVGhyb3dhYmxlIHJvb3QgPSBFeGNlcHRpb25VdGlscy5nZXRSb290Q2F1c2UoeCk7CisgICAgICAgICAgICBhc3NlcnRUaGF0KHJvb3QsIGluc3RhbmNlT2YoVGltZW91dEV4Y2VwdGlvbi5jbGFzcykpOworICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgY2x1c3Rlci5jbG9zZSgpOworICAgICAgICB9CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRFbmFibGVTc2xBbmRDbGllbnRDZXJ0aWZpY2F0ZUF1dGhXaXRoRGlmZmVyZW50U3RvcmVUeXBlKCkgeworICAgICAgICBmaW5hbCBDbHVzdGVyIGNsdXN0ZXIgPSBUZXN0Q2xpZW50RmFjdG9yeS5idWlsZCgpLmVuYWJsZVNzbCh0cnVlKQorICAgICAgICAgICAgICAgIC5rZXlTdG9yZShKS1NfQ0xJRU5UX0tFWSkua2V5U3RvcmVQYXNzd29yZChLRVlfUEFTUykua2V5U3RvcmVUeXBlKEtFWVNUT1JFX1RZUEVfSktTKQorICAgICAgICAgICAgICAgIC50cnVzdFN0b3JlKFAxMl9DTElFTlRfVFJVU1QpLnRydXN0U3RvcmVQYXNzd29yZChLRVlfUEFTUykudHJ1c3RTdG9yZVR5cGUoVFJVU1RTVE9SRV9UWVBFX1BLQ1MxMikKKyAgICAgICAgICAgICAgICAuY3JlYXRlKCk7CisgICAgICAgIGZpbmFsIENsaWVudCBjbGllbnQgPSBjbHVzdGVyLmNvbm5lY3QoKTsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJ0ZXN0IiwgY2xpZW50LnN1Ym1pdCgiJ3Rlc3QnIikub25lKCkuZ2V0U3RyaW5nKCkpOworICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgY2x1c3Rlci5jbG9zZSgpOworICAgICAgICB9CisKKyAgICAgICAgZmluYWwgQ2x1c3RlciBjbHVzdGVyMiA9IFRlc3RDbGllbnRGYWN0b3J5LmJ1aWxkKCkuZW5hYmxlU3NsKHRydWUpCisgICAgICAgICAgICAgICAgLmtleVN0b3JlKFAxMl9DTElFTlRfS0VZKS5rZXlTdG9yZVBhc3N3b3JkKEtFWV9QQVNTKS5rZXlTdG9yZVR5cGUoS0VZU1RPUkVfVFlQRV9QS0NTMTIpCisgICAgICAgICAgICAgICAgLnRydXN0U3RvcmUoSktTX0NMSUVOVF9UUlVTVCkudHJ1c3RTdG9yZVBhc3N3b3JkKEtFWV9QQVNTKS50cnVzdFN0b3JlVHlwZShUUlVTVFNUT1JFX1RZUEVfSktTKQorICAgICAgICAgICAgICAgIC5jcmVhdGUoKTsKKyAgICAgICAgZmluYWwgQ2xpZW50IGNsaWVudDIgPSBjbHVzdGVyMi5jb25uZWN0KCk7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGFzc2VydEVxdWFscygidGVzdCIsIGNsaWVudDIuc3VibWl0KCIndGVzdCciKS5vbmUoKS5nZXRTdHJpbmcoKSk7CisgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICBjbHVzdGVyMi5jbG9zZSgpOworICAgICAgICB9CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRFbmFibGVTc2xBbmRDbGllbnRDZXJ0aWZpY2F0ZUF1dGhBbmRGYWlsV2l0aEluY29ycmVjdEtleVN0b3JlVHlwZSgpIHsKKyAgICAgICAgZmluYWwgQ2x1c3RlciBjbHVzdGVyID0gVGVzdENsaWVudEZhY3RvcnkuYnVpbGQoKS5lbmFibGVTc2wodHJ1ZSkKKyAgICAgICAgICAgICAgICAua2V5U3RvcmUoSktTX0NMSUVOVF9LRVkpLmtleVN0b3JlUGFzc3dvcmQoS0VZX1BBU1MpLmtleVN0b3JlVHlwZShLRVlTVE9SRV9UWVBFX1BLQ1MxMikKKyAgICAgICAgICAgICAgICAudHJ1c3RTdG9yZShQMTJfQ0xJRU5UX1RSVVNUKS50cnVzdFN0b3JlUGFzc3dvcmQoS0VZX1BBU1MpLnRydXN0U3RvcmVUeXBlKFRSVVNUU1RPUkVfVFlQRV9QS0NTMTIpCisgICAgICAgICAgICAgICAgLmNyZWF0ZSgpOworICAgICAgICBmaW5hbCBDbGllbnQgY2xpZW50ID0gY2x1c3Rlci5jb25uZWN0KCk7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIFN0cmluZyByZXMgPSBjbGllbnQuc3VibWl0KCIndGVzdCciKS5vbmUoKS5nZXRTdHJpbmcoKTsKKyAgICAgICAgICAgIGZhaWwoIlNob3VsZCB0aHJvdyBleGNlcHRpb24gYmVjYXVzZSBpbmNvcnJlY3Qga2V5U3RvcmVUeXBlIGlzIHNwZWNpZmllZCIpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24geCkgeworICAgICAgICAgICAgZmluYWwgVGhyb3dhYmxlIHJvb3QgPSBFeGNlcHRpb25VdGlscy5nZXRSb290Q2F1c2UoeCk7CisgICAgICAgICAgICBhc3NlcnRUaGF0KHJvb3QsIGluc3RhbmNlT2YoVGltZW91dEV4Y2VwdGlvbi5jbGFzcykpOworICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgY2x1c3Rlci5jbG9zZSgpOworICAgICAgICB9CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRFbmFibGVTc2xBbmRDbGllbnRDZXJ0aWZpY2F0ZUF1dGhBbmRGYWlsV2l0aEluY29ycmVjdFRydXN0U3RvcmVUeXBlKCkgeworICAgICAgICBmaW5hbCBDbHVzdGVyIGNsdXN0ZXIgPSBUZXN0Q2xpZW50RmFjdG9yeS5idWlsZCgpLmVuYWJsZVNzbCh0cnVlKQorICAgICAgICAgICAgICAgIC5rZXlTdG9yZShQMTJfQ0xJRU5UX0tFWSkua2V5U3RvcmVQYXNzd29yZChLRVlfUEFTUykua2V5U3RvcmVUeXBlKEtFWVNUT1JFX1RZUEVfUEtDUzEyKQorICAgICAgICAgICAgICAgIC50cnVzdFN0b3JlKEpLU19DTElFTlRfVFJVU1QpLnRydXN0U3RvcmVQYXNzd29yZChLRVlfUEFTUykudHJ1c3RTdG9yZVR5cGUoVFJVU1RTVE9SRV9UWVBFX1BLQ1MxMikKKyAgICAgICAgICAgICAgICAuY3JlYXRlKCk7CisgICAgICAgIGZpbmFsIENsaWVudCBjbGllbnQgPSBjbHVzdGVyLmNvbm5lY3QoKTsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgY2xpZW50LnN1Ym1pdCgiJ3Rlc3QnIikub25lKCk7CisgICAgICAgICAgICBmYWlsKCJTaG91bGQgdGhyb3cgZXhjZXB0aW9uIGJlY2F1c2UgaW5jb3JyZWN0IHRydXN0U3RvcmVUeXBlIGlzIHNwZWNpZmllZCIpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24geCkgeworICAgICAgICAgICAgZmluYWwgVGhyb3dhYmxlIHJvb3QgPSBFeGNlcHRpb25VdGlscy5nZXRSb290Q2F1c2UoeCk7CisgICAgICAgICAgICBhc3NlcnRUaGF0KHJvb3QsIGluc3RhbmNlT2YoVGltZW91dEV4Y2VwdGlvbi5jbGFzcykpOworICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgY2x1c3Rlci5jbG9zZSgpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9jaGFubmVsL0Fic3RyYWN0R3JlbWxpblNlcnZlckNoYW5uZWxpemVySW50ZWdyYXRlVGVzdC5qYXZhIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9jaGFubmVsL0Fic3RyYWN0R3JlbWxpblNlcnZlckNoYW5uZWxpemVySW50ZWdyYXRlVGVzdC5qYXZhCmluZGV4IGQ2OGQ4OTAuLmI2MDQyNTQgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvY2hhbm5lbC9BYnN0cmFjdEdyZW1saW5TZXJ2ZXJDaGFubmVsaXplckludGVncmF0ZVRlc3QuamF2YQorKysgYi9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL2NoYW5uZWwvQWJzdHJhY3RHcmVtbGluU2VydmVyQ2hhbm5lbGl6ZXJJbnRlZ3JhdGVUZXN0LmphdmEKQEAgLTE4LDMwICsxOCwyMyBAQAogICovCiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc2VydmVyLmNoYW5uZWw7CiAKK2ltcG9ydCBvcmcuYXBhY2hlLmh0dHAuY29ubi5zc2wuTm9vcEhvc3RuYW1lVmVyaWZpZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuQXV0aFByb3BlcnRpZXM7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuQ2xpZW50OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLkNsdXN0ZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuQ2xpZW50OwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNpbXBsZS5TaW1wbGVDbGllbnQ7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuQ2hhbm5lbGl6ZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIuQWJzdHJhY3RHcmVtbGluU2VydmVySW50ZWdyYXRpb25UZXN0OwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc2VydmVyLmNoYW5uZWwuV3NBbmRIdHRwQ2hhbm5lbGl6ZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIuU2V0dGluZ3M7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zZXJ2ZXIuVGVzdENsaWVudEZhY3Rvcnk7CiAKLQogaW1wb3J0IG9yZy5hcGFjaGUuaHR0cC5Db25zdHM7CiBpbXBvcnQgb3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkNsb3NlYWJsZUh0dHBSZXNwb25zZTsKLWltcG9ydCBvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lm1ldGhvZHMuSHR0cEdldDsKIGltcG9ydCBvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lm1ldGhvZHMuSHR0cFBvc3Q7CiBpbXBvcnQgb3JnLmFwYWNoZS5odHRwLmNvbmZpZy5SZWdpc3RyeTsKIGltcG9ydCBvcmcuYXBhY2hlLmh0dHAuY29uZmlnLlJlZ2lzdHJ5QnVpbGRlcjsKIGltcG9ydCBvcmcuYXBhY2hlLmh0dHAuY29ubi5zb2NrZXQuQ29ubmVjdGlvblNvY2tldEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmFwYWNoZS5odHRwLmNvbm4uc3NsLkFsbG93QWxsSG9zdG5hbWVWZXJpZmllcjsKIGltcG9ydCBvcmcuYXBhY2hlLmh0dHAuY29ubi5zc2wuU1NMQ29ubmVjdGlvblNvY2tldEZhY3Rvcnk7Ci1pbXBvcnQgb3JnLmFwYWNoZS5odHRwLmNvbm4uc3NsLlNTTENvbnRleHRCdWlsZGVyOwotaW1wb3J0IG9yZy5hcGFjaGUuaHR0cC5jb25uLnNzbC5UcnVzdFNlbGZTaWduZWRTdHJhdGVneTsKLWltcG9ydCBvcmcuYXBhY2hlLmh0dHAuY29ubi5zc2wuVHJ1c3RTdHJhdGVneTsKK2ltcG9ydCBvcmcuYXBhY2hlLmh0dHAuc3NsLlNTTENvbnRleHRCdWlsZGVyOwogaW1wb3J0IG9yZy5hcGFjaGUuaHR0cC5lbnRpdHkuU3RyaW5nRW50aXR5OwogaW1wb3J0IG9yZy5hcGFjaGUuaHR0cC5pbXBsLmNsaWVudC5IdHRwQ2xpZW50czsKIGltcG9ydCBvcmcuYXBhY2hlLmh0dHAuaW1wbC5jbGllbnQuQ2xvc2VhYmxlSHR0cENsaWVudDsKQEAgLTQ5LDE5ICs0Miw5IEBACiBpbXBvcnQgb3JnLmFwYWNoZS5odHRwLnV0aWwuRW50aXR5VXRpbHM7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3Auc2hhZGVkLmphY2tzb24uZGF0YWJpbmQuSnNvbk5vZGU7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3Auc2hhZGVkLmphY2tzb24uZGF0YWJpbmQuT2JqZWN0TWFwcGVyOwotaW1wb3J0IG9yZy5qdW5pdC5BZnRlcjsKLWltcG9ydCBvcmcuanVuaXQuQmVmb3JlOwogaW1wb3J0IG9yZy5qdW5pdC5UZXN0OwotaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXIuUnVuV2l0aDsKLWltcG9ydCBvcmcuanVuaXQucnVubmVycy5QYXJhbWV0ZXJpemVkOwotaW1wb3J0IG9yZy5qdW5pdC5ydWxlcy5FeHRlcm5hbFJlc291cmNlOwogCi1pbXBvcnQgamF2YS5pby5GaWxlOwotaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07Ci1pbXBvcnQgamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlRXhjZXB0aW9uOwotaW1wb3J0IGphdmEuc2VjdXJpdHkuY2VydC5YNTA5Q2VydGlmaWNhdGU7CiBpbXBvcnQgamF2YS51dGlsLkJhc2U2NDsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKIAogaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydEVxdWFsczsKIGltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5mYWlsOwpAQCAtMjIxLDE1ICsyMDQsOSBAQAogCiAgICAgICAgIHByaXZhdGUgQ2xvc2VhYmxlSHR0cENsaWVudCBjcmVhdGVTc2xIdHRwQ2xpZW50KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CiAgICAgICAgICAgICBmaW5hbCBTU0xDb250ZXh0QnVpbGRlciB3c0J1aWxkZXIgPSBuZXcgU1NMQ29udGV4dEJ1aWxkZXIoKTsKLSAgICAgICAgICAgIHdzQnVpbGRlci5sb2FkVHJ1c3RNYXRlcmlhbChudWxsLCBuZXcgVHJ1c3RTdHJhdGVneSgpIHsKLSAgICAgICAgICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgICAgICAgICBwdWJsaWMgYm9vbGVhbiBpc1RydXN0ZWQoWDUwOUNlcnRpZmljYXRlW10gY2hhaW4sCi0gICAgICAgICAgICAgICAgICAgIFN0cmluZyBhdXRoVHlwZSkgdGhyb3dzIENlcnRpZmljYXRlRXhjZXB0aW9uIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB3c0J1aWxkZXIubG9hZFRydXN0TWF0ZXJpYWwobnVsbCwgKGNoYWluLCBhdXRoVHlwZSkgLT4gdHJ1ZSk7CiAgICAgICAgICAgICBmaW5hbCBTU0xDb25uZWN0aW9uU29ja2V0RmFjdG9yeSBzc2xzZiA9IG5ldyBTU0xDb25uZWN0aW9uU29ja2V0RmFjdG9yeSh3c0J1aWxkZXIuYnVpbGQoKSwKLSAgICAgICAgICAgICAgICBuZXcgQWxsb3dBbGxIb3N0bmFtZVZlcmlmaWVyKCkpOworICAgICAgICAgICAgICAgIG5ldyBOb29wSG9zdG5hbWVWZXJpZmllcigpKTsKICAgICAgICAgICAgIC8vVGhpcyB3aW5kcyB1cCB1c2luZyBhIFBvb2xpbmdIdHRwQ2xpZW50Q29ubmVjdGlvbk1hbmFnZXIgc28gbmVlZCB0byBwYXNzIHRoZQogICAgICAgICAgICAgLy9SZWdpc3RyeUJ1aWxkZXIKICAgICAgICAgICAgIGZpbmFsIFJlZ2lzdHJ5PENvbm5lY3Rpb25Tb2NrZXRGYWN0b3J5PiByZWdpc3RyeSA9IFJlZ2lzdHJ5QnVpbGRlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9vcC9BYnN0cmFjdE9wUHJvY2Vzc29yVGVzdC5qYXZhIGIvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9vcC9BYnN0cmFjdE9wUHJvY2Vzc29yVGVzdC5qYXZhCmluZGV4IDE4NTJkMzEuLmVhYmExYzYgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvb3AvQWJzdHJhY3RPcFByb2Nlc3NvclRlc3QuamF2YQorKysgYi9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc2VydmVyL29wL0Fic3RyYWN0T3BQcm9jZXNzb3JUZXN0LmphdmEKQEAgLTMwLDYgKzMwLDcgQEAKIGltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5mYWlsOwogCiBwdWJsaWMgY2xhc3MgQWJzdHJhY3RPcFByb2Nlc3NvclRlc3QgeworCiAgICAgQFRlc3QKICAgICBwdWJsaWMgdm9pZCBtYWtlRnJhbWVNZXRob2RUZXN0KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CiAgICAgICAgIGZpbmFsIFJlcXVlc3RNZXNzYWdlIHJlcXVlc3QgPSBSZXF1ZXN0TWVzc2FnZS5idWlsZCgidGVzdCIpLmNyZWF0ZSgpOwpAQCAtMzksNyArNDAsNyBAQAogCiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAvLyBJbmR1Y2UgYSBOdWxsUG9pbnRlckV4Y2VwdGlvbiB0byB2YWxpZGF0ZSBlcnJvciByZXNwb25zZSBtZXNzYWdlIHdyaXRpbmcKLSAgICAgICAgICAgIEFic3RyYWN0T3BQcm9jZXNzb3IubWFrZUZyYW1lKGN0eCwgcmVxdWVzdCwgbnVsbCwgdHJ1ZSwgbnVsbCwgUmVzcG9uc2VTdGF0dXNDb2RlLlBBUlRJQUxfQ09OVEVOVCwgbnVsbCk7CisgICAgICAgICAgICBBYnN0cmFjdE9wUHJvY2Vzc29yLm1ha2VGcmFtZShjdHgsIHJlcXVlc3QsIG51bGwsIHRydWUsIG51bGwsIFJlc3BvbnNlU3RhdHVzQ29kZS5QQVJUSUFMX0NPTlRFTlQsIG51bGwsIG51bGwpOwogICAgICAgICAgICAgZmFpbCgiRXhwZWN0ZWQgYSBOdWxsUG9pbnRlckV4Y2VwdGlvbiIpOwogICAgICAgICB9IGNhdGNoIChOdWxsUG9pbnRlckV4Y2VwdGlvbiBleHBlY3RlZCkgewogICAgICAgICAgICAgLy8gbm9wCmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zZXJ2ZXIvZ3JlbWxpbi1zZXJ2ZXItaW50ZWdyYXRpb24ueWFtbCBiL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9ncmVtbGluLXNlcnZlci1pbnRlZ3JhdGlvbi55YW1sCmluZGV4IDRlYWU1NGMuLjYwMWU0MDQgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9ncmVtbGluLXNlcnZlci1pbnRlZ3JhdGlvbi55YW1sCisrKyBiL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NlcnZlci9ncmVtbGluLXNlcnZlci1pbnRlZ3JhdGlvbi55YW1sCkBAIC0xNSw2ICsxNSwxOSBAQAogIyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCiAjIHVuZGVyIHRoZSBMaWNlbnNlLgogCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIElNUE9SVEFOVAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBDaGFuZ2VzIHRvIHRoaXMgZmlsZSBuZWVkIHRvIGJlIGFwcHJvcHJpYXRlbHkgcmVwbGljYXRlZCB0bworIworIyAtIGRvY2tlci9ncmVtbGluLXNlcnZlci9ncmVtbGluLXNlcnZlci1pbnRlZ3JhdGlvbi55YW1sCisjIC0gZG9ja2VyL2dyZW1saW4tc2VydmVyL2dyZW1saW4tc2VydmVyLWludGVncmF0aW9uLXNlY3VyZS55YW1sCisjCisjIFdpdGhvdXQgc3VjaCBjaGFuZ2VzLCB0aGUgdGVzdCBkb2NrZXIgc2VydmVyIGNhbid0IGJlIHN0YXJ0ZWQgZm9yIGluZGVwZW5kZW50CisjIHRlc3Rpbmcgd2l0aCBHcmVtbGluIExhbmd1YWdlIFZhcmlhbnRzLiBOb3RlIHRoaXMgZmlsZSdzIHJlbGF0aW9uIHRvCisjIGdyZW1saW4tc2VydmVyL3NyYy90ZXN0L3Jlc291cmNlcy9zY3JpcHRzL3Rlc3Qtc2VydmVyLXN0YXJ0Lmdyb292eQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCiBob3N0OiBsb2NhbGhvc3QKIHBvcnQ6IDQ1OTQwCiBldmFsdWF0aW9uVGltZW91dDogMzAwMDAKQEAgLTI5LDYgKzQyLDcgQEAKICAgZ3JlbWxpbi1ncm9vdnk6IHsKICAgICBwbHVnaW5zOiB7IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc2VydmVyLmpzcjIyMy5HcmVtbGluU2VydmVyR3JlbWxpblBsdWdpbjoge30sCiAgICAgICAgICAgICAgICBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLmpzcjIyMy5UaW5rZXJHcmFwaEdyZW1saW5QbHVnaW46IHt9LAorICAgICAgICAgICAgICAgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5ncm9vdnkuanNyMjIzLkdyb292eUNvbXBpbGVyR3JlbWxpblBsdWdpbjoge2V4cGVjdGVkQ29tcGlsYXRpb25UaW1lOiAzMDAwMH0sCiAgICAgICAgICAgICAgICBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmpzcjIyMy5JbXBvcnRHcmVtbGluUGx1Z2luOiB7Y2xhc3NJbXBvcnRzOiBbamF2YS5sYW5nLk1hdGhdLCBtZXRob2RJbXBvcnRzOiBbamF2YS5sYW5nLk1hdGgjKl19LAogICAgICAgICAgICAgICAgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5qc3IyMjMuU2NyaXB0RmlsZUdyZW1saW5QbHVnaW46IHtmaWxlczogW3NjcmlwdHMvZ2VuZXJhdGUtYWxsLmdyb292eV19fX19CiBzZXJpYWxpemVyczoKQEAgLTM3LDkgKzUxLDExIEBACiAgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcnlvTGl0ZU1lc3NhZ2VTZXJpYWxpemVyVjFkMCwgY29uZmlnOiB7IGlvUmVnaXN0cmllczogW29yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguc3RydWN0dXJlLlRpbmtlcklvUmVnaXN0cnlWMWQwXSwgY3VzdG9tOiBbZ3Jvb3Z5Lmpzb24uSnNvbkJ1aWxkZXI7b3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkpzb25CdWlsZGVyR3J5b1NlcmlhbGl6ZXJdfX0KICAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyeW9NZXNzYWdlU2VyaWFsaXplclYxZDAsIGNvbmZpZzogeyBzZXJpYWxpemVSZXN1bHRUb1N0cmluZzogdHJ1ZX19CiAgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcnlvTWVzc2FnZVNlcmlhbGl6ZXJWM2QwLCBjb25maWc6IHsgc2VyaWFsaXplUmVzdWx0VG9TdHJpbmc6IHRydWV9fQotICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplckdyZW1saW5WMWQwLCBjb25maWc6IHsgaW9SZWdpc3RyaWVzOiBbb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi50aW5rZXJncmFwaC5zdHJ1Y3R1cmUuVGlua2VySW9SZWdpc3RyeVYxZDBdIH19Ci0gIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyR3JlbWxpblYyZDAsIGNvbmZpZzogeyBpb1JlZ2lzdHJpZXM6IFtvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnN0cnVjdHVyZS5UaW5rZXJJb1JlZ2lzdHJ5VjJkMF0gfX0KICAgLSB7IGNsYXNzTmFtZTogb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLkdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWM2QwLCBjb25maWc6IHsgaW9SZWdpc3RyaWVzOiBbb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi50aW5rZXJncmFwaC5zdHJ1Y3R1cmUuVGlua2VySW9SZWdpc3RyeVYzZDBdIH19CisgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjJkMCwgY29uZmlnOiB7IGlvUmVnaXN0cmllczogW29yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguc3RydWN0dXJlLlRpbmtlcklvUmVnaXN0cnlWMmQwXSB9fQorICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhTT05NZXNzYWdlU2VyaWFsaXplckdyZW1saW5WMWQwLCBjb25maWc6IHsgaW9SZWdpc3RyaWVzOiBbb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi50aW5rZXJncmFwaC5zdHJ1Y3R1cmUuVGlua2VySW9SZWdpc3RyeVYxZDBdIH19CisgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaEJpbmFyeU1lc3NhZ2VTZXJpYWxpemVyVjEgfQorICAtIHsgY2xhc3NOYW1lOiBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxLCBjb25maWc6IHsgc2VyaWFsaXplUmVzdWx0VG9TdHJpbmc6IHRydWUgfX0KIHByb2Nlc3NvcnM6CiAgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc2VydmVyLm9wLnNlc3Npb24uU2Vzc2lvbk9wUHJvY2Vzc29yLCBjb25maWc6IHsgc2Vzc2lvblRpbWVvdXQ6IDI4ODAwMDAwIH19CiAgIC0geyBjbGFzc05hbWU6IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc2VydmVyLm9wLnN0YW5kYXJkLlN0YW5kYXJkT3BQcm9jZXNzb3IsIGNvbmZpZzoge319CkBAIC01NSw0ICs3MSw0IEBACiBtYXhBY2N1bXVsYXRpb25CdWZmZXJDb21wb25lbnRzOiAxMDI0CiByZXN1bHRJdGVyYXRpb25CYXRjaFNpemU6IDY0CiB3cml0ZUJ1ZmZlckxvd1dhdGVyTWFyazogMzI3NjgKLXdyaXRlQnVmZmVySGlnaFdhdGVyTWFyazogNjU1MzYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit3cml0ZUJ1ZmZlckhpZ2hXYXRlck1hcms6IDY1NTM2CmRpZmYgLS1naXQgYS9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9zY3JpcHRzL2dlbmVyYXRlLWFsbC5ncm9vdnkgYi9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9zY3JpcHRzL2dlbmVyYXRlLWFsbC5ncm9vdnkKaW5kZXggYWEzYzVlNS4uNGIxYWNiMyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3Qvc2NyaXB0cy9nZW5lcmF0ZS1hbGwuZ3Jvb3Z5CisrKyBiL2dyZW1saW4tc2VydmVyL3NyYy90ZXN0L3NjcmlwdHMvZ2VuZXJhdGUtYWxsLmdyb292eQpAQCAtNTAsMjAgKzUwLDIwIEBACiAgICAgICBhbGxvd1NldE9mSWRNYW5hZ2VyKGl0LCAiZWRnZUlkTWFuYWdlciIpCiAgICAgICBhbGxvd1NldE9mSWRNYW5hZ2VyKGl0LCAidmVydGV4UHJvcGVydHlJZE1hbmFnZXIiKQogICAgIH0KLQogICAgIFRpbmtlckZhY3RvcnkuZ2VuZXJhdGVDbGFzc2ljKGNsYXNzaWMpCiAgICAgVGlua2VyRmFjdG9yeS5nZW5lcmF0ZU1vZGVybihtb2Rlcm4pCiAgICAgVGlua2VyRmFjdG9yeS5nZW5lcmF0ZVRoZUNyZXcoY3JldykKICAgICBUaW5rZXJGYWN0b3J5LmdlbmVyYXRlR3JhdGVmdWxEZWFkKGdyYXRlZnVsKQogICAgIFRpbmtlckZhY3RvcnkuZ2VuZXJhdGVLaXRjaGVuU2luayhzaW5rKQorCiAgIH0KIF0gYXMgTGlmZUN5Y2xlSG9va10KIAogLy8gYWRkIGRlZmF1bHQgVHJhdmVyc2FsU291cmNlIGluc3RhbmNlcyBmb3IgZWFjaCBncmFwaCBpbnN0YW5jZQotZ2xvYmFscyA8PCBbZ2NsYXNzaWMgOiBjbGFzc2ljLnRyYXZlcnNhbCgpXQotZ2xvYmFscyA8PCBbZ21vZGVybiA6IG1vZGVybi50cmF2ZXJzYWwoKV0KLWdsb2JhbHMgPDwgW2cgOiBncmFwaC50cmF2ZXJzYWwoKV0KLWdsb2JhbHMgPDwgW2djcmV3IDogY3Jldy50cmF2ZXJzYWwoKV0KLWdsb2JhbHMgPDwgW2dncmFwaCA6IGdyYXBoLnRyYXZlcnNhbCgpXQotZ2xvYmFscyA8PCBbZ2dyYXRlZnVsIDogZ3JhdGVmdWwudHJhdmVyc2FsKCldCi1nbG9iYWxzIDw8IFtnc2luayA6IHNpbmsudHJhdmVyc2FsKCldClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZ2xvYmFscyA8PCBbZ2NsYXNzaWMgOiBjbGFzc2ljLnRyYXZlcnNhbCgpLndpdGhTdHJhdGVnaWVzKFJlZmVyZW5jZUVsZW1lbnRTdHJhdGVneS5pbnN0YW5jZSgpKV0KK2dsb2JhbHMgPDwgW2dtb2Rlcm4gOiBtb2Rlcm4udHJhdmVyc2FsKCkud2l0aFN0cmF0ZWdpZXMoUmVmZXJlbmNlRWxlbWVudFN0cmF0ZWd5Lmluc3RhbmNlKCkpXQorZ2xvYmFscyA8PCBbZyA6IGdyYXBoLnRyYXZlcnNhbCgpLndpdGhTdHJhdGVnaWVzKFJlZmVyZW5jZUVsZW1lbnRTdHJhdGVneS5pbnN0YW5jZSgpKV0KK2dsb2JhbHMgPDwgW2djcmV3IDogY3Jldy50cmF2ZXJzYWwoKS53aXRoU3RyYXRlZ2llcyhSZWZlcmVuY2VFbGVtZW50U3RyYXRlZ3kuaW5zdGFuY2UoKSldCitnbG9iYWxzIDw8IFtnZ3JhcGggOiBncmFwaC50cmF2ZXJzYWwoKS53aXRoU3RyYXRlZ2llcyhSZWZlcmVuY2VFbGVtZW50U3RyYXRlZ3kuaW5zdGFuY2UoKSldCitnbG9iYWxzIDw8IFtnZ3JhdGVmdWwgOiBncmF0ZWZ1bC50cmF2ZXJzYWwoKS53aXRoU3RyYXRlZ2llcyhSZWZlcmVuY2VFbGVtZW50U3RyYXRlZ3kuaW5zdGFuY2UoKSldCitnbG9iYWxzIDw8IFtnc2luayA6IHNpbmsudHJhdmVyc2FsKCkud2l0aFN0cmF0ZWdpZXMoUmVmZXJlbmNlRWxlbWVudFN0cmF0ZWd5Lmluc3RhbmNlKCkpXQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1zZXJ2ZXIvc3JjL3Rlc3Qvc2NyaXB0cy90ZXN0LXNlcnZlci1zdGFydC5ncm9vdnkgYi9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9zY3JpcHRzL3Rlc3Qtc2VydmVyLXN0YXJ0Lmdyb292eQppbmRleCAxZTJiMDEyLi5lNzIxYWZmIDEwMDY0NAotLS0gYS9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9zY3JpcHRzL3Rlc3Qtc2VydmVyLXN0YXJ0Lmdyb292eQorKysgYi9ncmVtbGluLXNlcnZlci9zcmMvdGVzdC9zY3JpcHRzL3Rlc3Qtc2VydmVyLXN0YXJ0Lmdyb292eQpAQCAtMTksNyArMTksMTggQEAKIAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc2VydmVyLkdyZW1saW5TZXJ2ZXIKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNlcnZlci5TZXR0aW5ncwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc2VydmVyLlNldHRpbmdzLlNlcmlhbGl6ZXJTZXR0aW5ncworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gSU1QT1JUQU5UCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gQ2hhbmdlcyB0byB0aGlzIGZpbGUgbmVlZCB0byBiZSBhcHByb3ByaWF0ZWx5IHJlcGxpY2F0ZWQgdG8KKy8vCisvLyAtIGRvY2tlci9ncmVtbGluLXNlcnZlci9ncmVtbGluLXNlcnZlci1pbnRlZ3JhdGlvbi55YW1sCisvLyAtIGRvY2tlci9ncmVtbGluLXNlcnZlci9ncmVtbGluLXNlcnZlci1pbnRlZ3JhdGlvbi1zZWN1cmUueWFtbAorLy8KKy8vIFdpdGhvdXQgc3VjaCBjaGFuZ2VzLCB0aGUgdGVzdCBkb2NrZXIgc2VydmVyIGNhbid0IGJlIHN0YXJ0ZWQgZm9yIGluZGVwZW5kZW50CisvLyB0ZXN0aW5nIHdpdGggR3JlbWxpbiBMYW5ndWFnZSBWYXJpYW50cy4KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKIGlmIChCb29sZWFuLnBhcnNlQm9vbGVhbihza2lwVGVzdHMpKSByZXR1cm4KIApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi1zaGFkZWQvcG9tLnhtbCBiL2dyZW1saW4tc2hhZGVkL3BvbS54bWwKaW5kZXggZWMyZDJhNi4uMjdiYWFhMSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi1zaGFkZWQvcG9tLnhtbAorKysgYi9ncmVtbGluLXNoYWRlZC9wb20ueG1sCkBAIC0yMCw3ICsyMCw3IEBACiAgICAgPHBhcmVudD4KICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS50aW5rZXJwb3A8L2dyb3VwSWQ+CiAgICAgICAgIDxhcnRpZmFjdElkPnRpbmtlcnBvcDwvYXJ0aWZhY3RJZD4KLSAgICAgICAgPHZlcnNpb24+My4zLjExLVNOQVBTSE9UPC92ZXJzaW9uPgorICAgICAgICA8dmVyc2lvbj4zLjQuNy1TTkFQU0hPVDwvdmVyc2lvbj4KICAgICA8L3BhcmVudD4KICAgICA8YXJ0aWZhY3RJZD5ncmVtbGluLXNoYWRlZDwvYXJ0aWZhY3RJZD4KICAgICA8bmFtZT5BcGFjaGUgVGlua2VyUG9wIDo6IEdyZW1saW4gU2hhZGVkPC9uYW1lPgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL2JyYW5jaC9SZXBlYXQuZmVhdHVyZSBiL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9icmFuY2gvUmVwZWF0LmZlYXR1cmUKaW5kZXggMzA0ZDg1Ni4uMzA2MTVhNSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL2JyYW5jaC9SZXBlYXQuZmVhdHVyZQorKysgYi9ncmVtbGluLXRlc3QvZmVhdHVyZXMvYnJhbmNoL1JlcGVhdC5mZWF0dXJlCkBAIC0yNDEsMyArMjQxLDExMyBAQAogICAgICAgfCBsb29wIHwKICAgICAgIHwgbG9vcCAgfAogICAgICAgfCBsb29wICB8CisKK1NjZW5hcmlvOiBnX1ZfcmVwZWF0WG91dF9yZXBlYXRYb3V0WF90aW1lc1gxWFhfdGltZXNYMVhfbGltaXRYMVhfcGF0aF9ieV9uYW1lCisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcuVigpLnJlcGVhdChfXy5vdXQoKS5yZXBlYXQoX18ub3V0KCkpLnRpbWVzKDEpKS50aW1lcygxKS5saW1pdCgxKS5wYXRoKCkuYnkoIm5hbWUiKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCBuZXh0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0IHwKKyAgICAgIHwgbWFya28gfAorICAgICAgfCBqb3NoIHwKKyAgICAgIHwgcmlwcGxlIHwKKworU2NlbmFyaW86IGdfVl9yZXBlYXRYb3V0WGtub3dzWFhfdW50aWxYcmVwZWF0WG91dFhjcmVhdGVkWFhfZW1pdFhoYXNYbmFtZV9sb3BYWFhfcGF0aF9ieVhuYW1lWAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLlYoKS5yZXBlYXQoX18ub3V0KCJrbm93cyIpKS51bnRpbChfXy5yZXBlYXQoX18ub3V0KCJjcmVhdGVkIikpLmVtaXQoX18uaGFzKCJuYW1lIiwgImxvcCIpKSkucGF0aCgpLmJ5KCJuYW1lIikKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgbmV4dAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgICB8IHJlc3VsdCB8CisgICAgICB8IG1hcmtvIHwKKyAgICAgIHwgam9zaCB8CisKK1NjZW5hcmlvOiBnX1ZfcmVwZWF0WHJlcGVhdFhvdXRfY3JlYXRlZFhYX3VudGlsWGhhc1huYW1lX3JpcHBsZVhYWGVtaXRfbGFuZworICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCisgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgIiIiCisgICAgZy5WKCkucmVwZWF0KF9fLnJlcGVhdChfXy5vdXQoImNyZWF0ZWQiKSkudW50aWwoX18uaGFzKCJuYW1lIiwgInJpcHBsZSIpKSkuZW1pdCgpLnZhbHVlcygibGFuZyIpCisgICAgIiIiCisgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHVub3JkZXJlZAorICAgIHwgcmVzdWx0IHwKKyAgICB8IGphdmEgfAorCitTY2VuYXJpbzogZ19WX3VudGlsWGNvbnN0YW50WHRydWVYWF9yZXBlYXRYcmVwZWF0WG91dF9jcmVhdGVkWFhfdW50aWxYaGFzWG5hbWVfcmlwcGxlWFhYZW1pdF9sYW5nCisgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAiIiIKKyAgICBnLlYoKS51bnRpbChfXy5jb25zdGFudCh0cnVlKSkucmVwZWF0KF9fLnJlcGVhdChfXy5vdXQoImNyZWF0ZWQiKSkudW50aWwoX18uaGFzKCJuYW1lIiwgInJpcHBsZSIpKSkuZW1pdCgpLnZhbHVlcygibGFuZyIpCisgICAgIiIiCisgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHVub3JkZXJlZAorICAgIHwgcmVzdWx0IHwKKyAgICB8IGphdmEgfAorICAgIHwgamF2YSB8CisKK1NjZW5hcmlvOiBnX1ZfZW1pdF9yZXBlYXRYYV9vdXRYa25vd3NfZmlsdGVyWGxvb3BzX2lzWDBYWF9sYW5nCisgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAiIiIKKyAgICBnLlYoKS5lbWl0KCkucmVwZWF0KCJhIiwgX18ub3V0KCJrbm93cyIpLmZpbHRlcihfXy5sb29wcygiYSIpLmlzKDApKSkudmFsdWVzKCJsYW5nIikKKyAgICAiIiIKKyAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgfCByZXN1bHQgfAorICAgIHwgamF2YSB8CisgICAgfCBqYXZhIHwKKworU2NlbmFyaW86IGdfVlgzWF9yZXBlYXRYYm90aFhfY3JlYXRlZFhYX3VudGlsWGxvb3BzX2lzXzQwWFhlbWl0X3JlcGVhdFhpbl9rbm93c1hYX2VtaXRfbG9vcHNYaXNYMVhkZWR1cF92YWx1ZXMKKyAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCisgICAgQW5kIHVzaW5nIHRoZSBwYXJhbWV0ZXIgdjNJZCBkZWZpbmVkIGFzICJ2W2xvcF0uaWQiCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAgICIiIgorICAgICAgZy5WKHYzSWQpLnJlcGVhdChfXy5ib3RoKCJjcmVhdGVkIikpLnVudGlsKF9fLmxvb3BzKCkuaXMoNDApKS5lbWl0KF9fLnJlcGVhdChfXy5pbigia25vd3MiKSkuZW1pdChfXy5sb29wcygpLmlzKDEpKSkuZGVkdXAoKS52YWx1ZXMoIm5hbWUiKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHVub3JkZXJlZAorICAgICAgICB8IHJlc3VsdCB8CisgICAgICAgIHwgam9zaCB8CisgICAgICAgIHwgbG9wIHwKKyAgICAgICAgfCByaXBwbGUgfAorCitTY2VuYXJpbzogZ19WWDFYX3JlcGVhdFhyZXBlYXRYdW5pb25Yb3V0X3VzZXNfb3V0X3RyYXZlcnNlc1hYX3doZXJlWGxvb3BzX2lzWDBYX3RpbWVzWDFYX3RpbWVYMlhfbmFtZQorICAgIEdpdmVuIHRoZSBjcmV3IGdyYXBoCisgICAgQW5kIHVzaW5nIHRoZSBwYXJhbWV0ZXIgdjFJZCBkZWZpbmVkIGFzICJ2W21hcmtvXS5pZCIKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLlYodjFJZCkucmVwZWF0KF9fLnJlcGVhdChfXy51bmlvbihfXy5vdXQoInVzZXMiKSwgX18ub3V0KCJ0cmF2ZXJzZXMiKSkud2hlcmUoX18ubG9vcHMoKS5pcygwKSkpLnRpbWVzKDEpKS50aW1lcygyKS52YWx1ZXMoIm5hbWUiKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHVub3JkZXJlZAorICAgICAgICB8IHJlc3VsdCB8CisgICAgICAgIHwgdGlua2VyZ3JhcGggfAorCitTY2VuYXJpbzogZ19WX3JlcGVhdFhhX291dFhrbm93c19yZXBlYXRYYl9vdXRYY3JlYXRlZFhfZmlsdGVyWGxvb3BzX2lzWDBYWF9lbWl0X2xhbmcKKyAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICIiIgorICAgIGcuVigpLnJlcGVhdCgiYSIsIF9fLm91dCgia25vd3MiKS5yZXBlYXQoImIiLCBfXy5vdXQoImNyZWF0ZWQiKS5maWx0ZXIoX18ubG9vcHMoImEiKS5pcygwKSkpLmVtaXQoKSkuZW1pdCgpLnZhbHVlcygibGFuZyIpCisgICAgIiIiCisgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHVub3JkZXJlZAorICAgIHwgcmVzdWx0IHwKKyAgICB8IGphdmEgfAorICAgIHwgamF2YSB8CisKK1NjZW5hcmlvOiBnX1ZYNlhfcmVwZWF0WGFfYm90aFhjcmVhdGVkWF9zaW1wbGVQYXRoWF9lbWl0WHJlcGVhdFhiX2JvdGhYa25vd3NYWF91bnRpbFhsb29wc1hiWF9hc1hiX3doZXJlWGxvb3BzWGFYX2FzWGJYX2hhc1huYW1lX3ZhZGFzWFhfZGVkdXBfbmFtZQorICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCisgIEFuZCB1c2luZyB0aGUgcGFyYW1ldGVyIHY2SWQgZGVmaW5lZCBhcyAidltwZXRlcl0uaWQiCisgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgIiIiCisgICAgZy5WKHY2SWQpLnJlcGVhdCgiYSIsIF9fLmJvdGgoImNyZWF0ZWQiKS5zaW1wbGVQYXRoKCkpLmVtaXQoX18ucmVwZWF0KCJiIiwgX18uYm90aCgia25vd3MiKSkudW50aWwoX18ubG9vcHMoImIiKS5hcygiYiIpLndoZXJlKF9fLmxvb3BzKCJhIikuYXMoImIiKSkpLmhhcygibmFtZSIsICJ2YWRhcyIpKS5kZWR1cCgpLnZhbHVlcygibmFtZSIpCisgICAgIiIiCisgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHVub3JkZXJlZAorICAgIHwgcmVzdWx0IHwKKyAgICB8IGpvc2ggfApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL2JyYW5jaC9Vbmlvbi5mZWF0dXJlIGIvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL2JyYW5jaC9Vbmlvbi5mZWF0dXJlCmluZGV4IDgzMzE4ZjYuLjhmNTI5N2UgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9icmFuY2gvVW5pb24uZmVhdHVyZQorKysgYi9ncmVtbGluLXRlc3QvZmVhdHVyZXMvYnJhbmNoL1VuaW9uLmZlYXR1cmUKQEAgLTEzNSw3ICsxMzUsNiBAQAogICAgICAgfCBkWzNdLmwgICB8CiAgICAgICB8IGRbMF0ubCAgIHwKICAgICAgIHwgZFsxLjldLmQgfAotICAgICAgfCBkWzBdLmkgICB8CiAgICAgICB8IGRbMF0ubCAgIHwKICAgICAgIHwgZFsxXS5sICAgfAogCkBAIC0xNTEsNCArMTUwLDQgQEAKICAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHVub3JkZXJlZAogICAgICAgfCByZXN1bHQgfAogICAgICAgfCBkWzFdLmwgICB8Ci0gICAgICB8IGRbMV0ubCAgIHwKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisgICAgICB8IGRbMV0ubCAgIHwKZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9maWx0ZXIvQW5kLmZlYXR1cmUgYi9ncmVtbGluLXRlc3QvZmVhdHVyZXMvZmlsdGVyL0FuZC5mZWF0dXJlCmluZGV4IDFlODczMmUuLmYxMzc4NDEgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9maWx0ZXIvQW5kLmZlYXR1cmUKKysrIGIvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL2ZpbHRlci9BbmQuZmVhdHVyZQpAQCAtNjYsNCArNjYsMTUgQEAKICAgICAgIHwgdltsb3BdIHwKICAgICAgIHwgdltqb3NoXSB8CiAgICAgICB8IHZbcmlwcGxlXSB8Ci0gICAgICB8IHZbcGV0ZXJdICB8ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorICAgICAgfCB2W3BldGVyXSAgfAorCisgIFNjZW5hcmlvOiBnX1ZfaGFzWG5hbWVfbWFya29YX2FuZF9oYXNYbmFtZV9tYXJrb1hfYW5kX2hhc1huYW1lX21hcmtvWAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLlYoKS5oYXMoIm5hbWUiLCAibWFya28iKS5hbmQoKS5oYXMoIm5hbWUiLCAibWFya28iKS5hbmQoKS5oYXMoIm5hbWUiLCAibWFya28iKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0IHwKKyAgICAgIHwgdlttYXJrb10gfApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL2ZpbHRlci9Ecm9wLmZlYXR1cmUgYi9ncmVtbGluLXRlc3QvZmVhdHVyZXMvZmlsdGVyL0Ryb3AuZmVhdHVyZQppbmRleCA3NTNiMzc3Li4xNDQzOTllIDEwMDY0NAotLS0gYS9ncmVtbGluLXRlc3QvZmVhdHVyZXMvZmlsdGVyL0Ryb3AuZmVhdHVyZQorKysgYi9ncmVtbGluLXRlc3QvZmVhdHVyZXMvZmlsdGVyL0Ryb3AuZmVhdHVyZQpAQCAtNjAsNCArNjAsNDUgQEAKICAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKICAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIGVtcHR5CiAgICAgQW5kIHRoZSBncmFwaCBzaG91bGQgcmV0dXJuIDIgZm9yIGNvdW50IG9mICJnLlYoKSIKLSAgICBBbmQgdGhlIGdyYXBoIHNob3VsZCByZXR1cm4gMCBmb3IgY291bnQgb2YgImcuVigpLnByb3BlcnRpZXMoKSIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisgICAgQW5kIHRoZSBncmFwaCBzaG91bGQgcmV0dXJuIDAgZm9yIGNvdW50IG9mICJnLlYoKS5wcm9wZXJ0aWVzKCkiCisKKyAgU2NlbmFyaW86IGdfRV9wcm9wZXJ0aWVzWHdlaWdodFhfZHJvcAorICAgIEdpdmVuIHRoZSBlbXB0eSBncmFwaAorICAgIEFuZCB0aGUgZ3JhcGggaW5pdGlhbGl6ZXIgb2YKKyAgICAgICIiIgorICAgICAgZy5hZGRWKCJwZXJzb24iKS5wcm9wZXJ0eShULmlkLCAxKS5wcm9wZXJ0eSgibmFtZSIsICJtYXJrbyIpLnByb3BlcnR5KCJhZ2UiLCAyOSkuYXMoIm1hcmtvIikuCisgICAgICAgIGFkZFYoInBlcnNvbiIpLnByb3BlcnR5KFQuaWQsIDIpLnByb3BlcnR5KCJuYW1lIiwgInZhZGFzIikucHJvcGVydHkoImFnZSIsIDI3KS5hcygidmFkYXMiKS4KKyAgICAgICAgYWRkVigic29mdHdhcmUiKS5wcm9wZXJ0eShULmlkLCAzKS5wcm9wZXJ0eSgibmFtZSIsICJsb3AiKS5wcm9wZXJ0eSgibGFuZyIsICJqYXZhIikuYXMoImxvcCIpLgorICAgICAgICBhZGRWKCJwZXJzb24iKS5wcm9wZXJ0eShULmlkLCA0KS5wcm9wZXJ0eSgibmFtZSIsImpvc2giKS5wcm9wZXJ0eSgiYWdlIiwgMzIpLmFzKCJqb3NoIikuCisgICAgICAgIGFkZFYoInNvZnR3YXJlIikucHJvcGVydHkoVC5pZCwgNSkucHJvcGVydHkoIm5hbWUiLCAicmlwcGxlIikucHJvcGVydHkoImxhbmciLCAiamF2YSIpLmFzKCJyaXBwbGUiKS4KKyAgICAgICAgYWRkVigicGVyc29uIikucHJvcGVydHkoVC5pZCwgNikucHJvcGVydHkoIm5hbWUiLCAicGV0ZXIiKS5wcm9wZXJ0eSgiYWdlIiwgMzUpLmFzKCdwZXRlcicpLgorICAgICAgICBhZGRFKCJrbm93cyIpLmZyb20oIm1hcmtvIikudG8oInZhZGFzIikucHJvcGVydHkoVC5pZCwgNykucHJvcGVydHkoIndlaWdodCIsIDAuNSkuCisgICAgICAgIGFkZEUoImtub3dzIikuZnJvbSgibWFya28iKS50bygiam9zaCIpLnByb3BlcnR5KFQuaWQsIDgpLnByb3BlcnR5KCJ3ZWlnaHQiLCAxLjApLgorICAgICAgICBhZGRFKCJjcmVhdGVkIikuZnJvbSgibWFya28iKS50bygibG9wIikucHJvcGVydHkoVC5pZCwgOSkucHJvcGVydHkoIndlaWdodCIsIDAuNCkuCisgICAgICAgIGFkZEUoImNyZWF0ZWQiKS5mcm9tKCJqb3NoIikudG8oInJpcHBsZSIpLnByb3BlcnR5KFQuaWQsIDEwKS5wcm9wZXJ0eSgid2VpZ2h0IiwgMS4wKS4KKyAgICAgICAgYWRkRSgiY3JlYXRlZCIpLmZyb20oImpvc2giKS50bygibG9wIikucHJvcGVydHkoVC5pZCwgMTEpLnByb3BlcnR5KCJ3ZWlnaHQiLCAwLjQpLgorICAgICAgICBhZGRFKCJjcmVhdGVkIikuZnJvbSgicGV0ZXIiKS50bygibG9wIikucHJvcGVydHkoVC5pZCwgMTIpLnByb3BlcnR5KCJ3ZWlnaHQiLCAwLjIpCisgICAgICAiIiIKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLkUoKS5wcm9wZXJ0aWVzKCJ3ZWlnaHQiKS5kcm9wKCkKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgZW1wdHkKKyAgICBBbmQgdGhlIGdyYXBoIHNob3VsZCByZXR1cm4gMCBmb3IgY291bnQgb2YgImcuRSgpLnByb3BlcnRpZXMoKSIKKworICBTY2VuYXJpbzogZ19WX3Byb3BlcnRpZXNfcHJvcGVydGllc1hzdGFydFRpbWVYX2Ryb3AKKyAgICBHaXZlbiB0aGUgZW1wdHkgZ3JhcGgKKyAgICBBbmQgdGhlIGdyYXBoIGluaXRpYWxpemVyIG9mCisgICAgICAiIiIKKyAgICAgIGcuYWRkVigpLnByb3BlcnR5KCJuYW1lIiwiYm9iIikucHJvcGVydHkoQ2FyZGluYWxpdHkubGlzdCwgImxvY2F0aW9uIiwgIm55IiwgInN0YXJ0VGltZSIsIDIwMTQsICJlbmRUaW1lIiwgMjAxNikucHJvcGVydHkoQ2FyZGluYWxpdHkubGlzdCwgImxvY2F0aW9uIiwgInZhIiwgInN0YXJ0VGltZSIsIDIwMTYpLgorICAgICAgICBhZGRWKCkucHJvcGVydHkoIm5hbWUiLCJhbGljZSIpLnByb3BlcnR5KENhcmRpbmFsaXR5Lmxpc3QsICJsb2NhdGlvbiIsICJ2YSIsICJzdGFydFRpbWUiLCAyMDE0LCAiZW5kVGltZSIsIDIwMTYpLnByb3BlcnR5KENhcmRpbmFsaXR5Lmxpc3QsICJsb2NhdGlvbiIsICJueSIsICJzdGFydFRpbWUiLCAyMDE2KQorICAgICAgIiIiCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAgICIiIgorICAgICAgZy5WKCkucHJvcGVydGllcygpLnByb3BlcnRpZXMoInN0YXJ0VGltZSIpLmRyb3AoKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSBlbXB0eQorICAgIEFuZCB0aGUgZ3JhcGggc2hvdWxkIHJldHVybiAyIGZvciBjb3VudCBvZiAiZy5WKCkucHJvcGVydGllcygpLnByb3BlcnRpZXMoKSIKKyAgICBBbmQgdGhlIGdyYXBoIHNob3VsZCByZXR1cm4gMCBmb3IgY291bnQgb2YgImcuVigpLnByb3BlcnRpZXMoKS5wcm9wZXJ0aWVzKFwic3RhcnRUaW1lXCIpIgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9maWx0ZXIvSGFzLmZlYXR1cmUgYi9ncmVtbGluLXRlc3QvZmVhdHVyZXMvZmlsdGVyL0hhcy5mZWF0dXJlCmluZGV4IGRkZjk5ODQuLmFkZTMyNjUgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9maWx0ZXIvSGFzLmZlYXR1cmUKKysrIGIvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL2ZpbHRlci9IYXMuZmVhdHVyZQpAQCAtNDA4LDE5ICs0MDgsNiBAQAogICAgICAgfCB2W2pvc2hdIHwKICAgICAgIHwgdltwZXRlcl0gfAogCi0gIFNjZW5hcmlvOiBnX1ZfYm90aF9kZWR1cF9wcm9wZXJ0aWVzX2hhc0tleVhhZ2VYX3ZhbHVlCi0gICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAotICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCi0gICAgIiIiCi0gICAgZy5WKCkuYm90aCgpLnByb3BlcnRpZXMoKS5kZWR1cCgpLmhhc0tleSgiYWdlIikudmFsdWUoKQotICAgICIiIgotICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAotICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCi0gICAgICB8IHJlc3VsdCB8Ci0gICAgICB8IGRbMjldLmkgfAotICAgICAgfCBkWzI3XS5pIHwKLSAgICAgIHwgZFszMl0uaSB8Ci0gICAgICB8IGRbMzVdLmkgfAogICBTY2VuYXJpbzogZ19WX2hhc1hhZ2Vfd2l0aGluWDI3WF9jb3VudAogICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKICAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgpAQCAtNDY1LDYgKzQ1MiwxOSBAQAogICAgICAgfCByZXN1bHQgfAogICAgICAgfCBkWzJdLmwgfAogCisgIFNjZW5hcmlvOiBnX1ZfYm90aF9kZWR1cF9wcm9wZXJ0aWVzX2hhc0tleVhhZ2VYX3ZhbHVlCisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgIiIiCisgICAgZy5WKCkuYm90aCgpLnByb3BlcnRpZXMoKS5kZWR1cCgpLmhhc0tleSgiYWdlIikudmFsdWUoKQorICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgICB8IHJlc3VsdCB8CisgICAgICB8IGRbMjldLmkgfAorICAgICAgfCBkWzI3XS5pIHwKKyAgICAgIHwgZFszMl0uaSB8CisgICAgICB8IGRbMzVdLmkgfAogCiAgIFNjZW5hcmlvOiBnX1ZfYm90aF9kZWR1cF9wcm9wZXJ0aWVzX2hhc0tleVhhZ2VYX2hhc1ZhbHVlWGd0WDMwWFhfdmFsdWUKICAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCkBAIC00NzksNiArNDc5LDMyIEBACiAgICAgICB8IGRbMzJdLmkgfAogICAgICAgfCBkWzM1XS5pIHwKIAorICBTY2VuYXJpbzogZ19WX2JvdGhFX3Byb3BlcnRpZXNfZGVkdXBfaGFzS2V5WHdlaWdodFhfdmFsdWUKKyAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAiIiIKKyAgICBnLlYoKS5ib3RoRSgpLnByb3BlcnRpZXMoKS5kZWR1cCgpLmhhc0tleSgid2VpZ2h0IikudmFsdWUoKQorICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgICB8IHJlc3VsdCB8CisgICAgICB8IGRbMC41XS5kIHwKKyAgICAgIHwgZFsxLjBdLmQgfAorICAgICAgfCBkWzAuNF0uZCB8CisgICAgICB8IGRbMC4yXS5kIHwKKworICBTY2VuYXJpbzogZ19WX2JvdGhFX3Byb3BlcnRpZXNfZGVkdXBfaGFzS2V5WHdlaWdodFhfaGFzVmFsdWVYbHRYMGQzWFhfdmFsdWUKKyAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCisgICAgQW5kIHVzaW5nIHRoZSBwYXJhbWV0ZXIgZDBkMyBkZWZpbmVkIGFzICJkWzAuM10uZCIKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICIiIgorICAgIGcuVigpLmJvdGhFKCkucHJvcGVydGllcygpLmRlZHVwKCkuaGFzS2V5KCJ3ZWlnaHQiKS5oYXNWYWx1ZShQLmx0KDAuMykpLnZhbHVlKCkKKyAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHVub3JkZXJlZAorICAgICAgfCByZXN1bHQgfAorICAgICAgfCBkWzAuMl0uZCB8CisKICAgU2NlbmFyaW86IGdfVl9oYXNOb3RYYWdlWF9uYW1lCiAgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAogICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCkBAIC01NTcsNCArNTgzLDExMyBAQAogICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAogICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCiAgICAgICB8IHJlc3VsdCB8Ci0gICAgICB8IGRbNl0ubCB8ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorICAgICAgfCBkWzZdLmwgfAorCisgIFNjZW5hcmlvOiBnX1ZfaGFzWG5hbWVfY29udGFpbmluZ1hhcmtYWAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLlYoKS5oYXMoIm5hbWUiLCBUZXh0UC5jb250YWluaW5nKCJhcmsiKSkKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgICB8IHJlc3VsdCB8CisgICAgICB8IHZbbWFya29dIHwKKworICBTY2VuYXJpbzogZ19WX2hhc1huYW1lX3N0YXJ0aW5nV2l0aFhtYXJYWAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLlYoKS5oYXMoIm5hbWUiLCBUZXh0UC5zdGFydGluZ1dpdGgoIm1hciIpKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0IHwKKyAgICAgIHwgdlttYXJrb10gfAorCisgIFNjZW5hcmlvOiBnX1ZfaGFzWG5hbWVfZW5kaW5nV2l0aFhhc1hYCisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcuVigpLmhhcygibmFtZSIsIFRleHRQLmVuZGluZ1dpdGgoImFzIikpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHVub3JkZXJlZAorICAgICAgfCByZXN1bHQgfAorICAgICAgfCB2W3ZhZGFzXSB8CisKKyAgU2NlbmFyaW86IGdfVl9oYXNYcGVyc29uX25hbWVfY29udGFpbmluZ1hvWF9hbmRYbHRYbVhYWAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLlYoKS5oYXMoInBlcnNvbiIsICJuYW1lIiwgVGV4dFAuY29udGFpbmluZygibyIpLmFuZChQLmx0KCJtIikpKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0IHwKKyAgICAgIHwgdltqb3NoXSB8CisKKyAgU2NlbmFyaW86IGdfVl9oYXNYbmFtZV9ndFhtWF9hbmRYY29udGFpbmluZ1hvWFhYCisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcuVigpLmhhcygibmFtZSIsIFAuZ3QoIm0iKS5hbmQoVGV4dFAuY29udGFpbmluZygibyIpKSkKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgICB8IHJlc3VsdCB8CisgICAgICB8IHZbbWFya29dIHwKKworICBTY2VuYXJpbzogZ19WX2hhc1huYW1lX25vdF9jb250YWluaW5nWGFya1hYCisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcuVigpLmhhcygibmFtZSIsIFRleHRQLm5vdENvbnRhaW5pbmcoImFyayIpKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0IHwKKyAgICAgIHwgdlt2YWRhc10gfAorICAgICAgfCB2W2xvcF0gfAorICAgICAgfCB2W2pvc2hdIHwKKyAgICAgIHwgdltyaXBwbGVdIHwKKyAgICAgIHwgdltwZXRlcl0gfAorCisgIFNjZW5hcmlvOiBnX1ZfaGFzWG5hbWVfbm90X3N0YXJ0aW5nV2l0aFhtYXJYWAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLlYoKS5oYXMoIm5hbWUiLCBUZXh0UC5ub3RTdGFydGluZ1dpdGgoIm1hciIpKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0IHwKKyAgICAgIHwgdlt2YWRhc10gfAorICAgICAgfCB2W2xvcF0gfAorICAgICAgfCB2W2pvc2hdIHwKKyAgICAgIHwgdltyaXBwbGVdIHwKKyAgICAgIHwgdltwZXRlcl0gfAorCisgIFNjZW5hcmlvOiBnX1ZfaGFzWG5hbWVfbm90X2VuZGluZ1dpdGhYYXNYWAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLlYoKS5oYXMoIm5hbWUiLCBUZXh0UC5ub3RFbmRpbmdXaXRoKCJhcyIpKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0IHwKKyAgICAgIHwgdlttYXJrb10gfAorICAgICAgfCB2W2xvcF0gfAorICAgICAgfCB2W2pvc2hdIHwKKyAgICAgIHwgdltyaXBwbGVdIHwKKyAgICAgIHwgdltwZXRlcl0gfAorCisgIFNjZW5hcmlvOiBnX1ZfaGFzWHBfbmVxWHZYWAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLlYoKS5oYXMoInAiLCBQLm5lcSgidiIpKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSBlbXB0eQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9tYXAvQWRkVmVydGV4LmZlYXR1cmUgYi9ncmVtbGluLXRlc3QvZmVhdHVyZXMvbWFwL0FkZFZlcnRleC5mZWF0dXJlCmluZGV4IDc2MTkxNmUuLmE2MGZlZmIgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9tYXAvQWRkVmVydGV4LmZlYXR1cmUKKysrIGIvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL21hcC9BZGRWZXJ0ZXguZmVhdHVyZQpAQCAtMzM2LDcgKzMzNiw3IEBACiAgICAgICB8IG1hcmtvIHwKICAgICBBbmQgdGhlIGdyYXBoIHNob3VsZCByZXR1cm4gMiBmb3IgY291bnQgb2YgImcuVigpLmhhcyhcIm5hbWVcIixcIm1hcmtvXCIpIgogCi0gIFNjZW5hcmlvOiBnX1ZfYXNYYVhfaGFzWG5hbWVfbWFya29YX291dFhjcmVhdGVkWF9hc1hiWF9hZGRWWHNlbGVjdFhhWF9sYWJlbFhfcHJvcGVydHlYdGVzdF9zZWxlY3RYYlhfbGFiZWxYX3ZhbHVlTWFwWHRydWVYCisgIFNjZW5hcmlvOiBnX1ZfYXNYYVhfaGFzWG5hbWVfbWFya29YX291dFhjcmVhdGVkWF9hc1hiWF9hZGRWWHNlbGVjdFhhWF9sYWJlbFhfcHJvcGVydHlYdGVzdF9zZWxlY3RYYlhfbGFiZWxYX3ZhbHVlTWFwX3dpdGhYdG9rZW5zWAogICAgIEdpdmVuIHRoZSBlbXB0eSBncmFwaAogICAgIEFuZCB0aGUgZ3JhcGggaW5pdGlhbGl6ZXIgb2YKICAgICAgICIiIgpAQCAtMzU1LDcgKzM1NSw3IEBACiAgICAgICAiIiIKICAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgogICAgICAgIiIiCi0gICAgICBnLlYoKS5hcygiYSIpLmhhcygibmFtZSIsICJtYXJrbyIpLm91dCgiY3JlYXRlZCIpLmFzKCJiIikuYWRkVihfXy5zZWxlY3QoImEiKS5sYWJlbCgpKS5wcm9wZXJ0eSgidGVzdCIsIF9fLnNlbGVjdCgiYiIpLmxhYmVsKCkpLnZhbHVlTWFwKHRydWUpCisgICAgICBnLlYoKS5hcygiYSIpLmhhcygibmFtZSIsICJtYXJrbyIpLm91dCgiY3JlYXRlZCIpLmFzKCJiIikuYWRkVihfXy5zZWxlY3QoImEiKS5sYWJlbCgpKS5wcm9wZXJ0eSgidGVzdCIsIF9fLnNlbGVjdCgiYiIpLmxhYmVsKCkpLnZhbHVlTWFwKCkud2l0aChXaXRoT3B0aW9ucy50b2tlbnMpCiAgICAgICAiIiIKICAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKICAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGhhdmUgYSBjb3VudCBvZiAxCmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3QvZmVhdHVyZXMvbWFwL0Nvbm5lY3RlZENvbXBvbmVudC5mZWF0dXJlIGIvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL21hcC9Db25uZWN0ZWRDb21wb25lbnQuZmVhdHVyZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjk1NDg4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL21hcC9Db25uZWN0ZWRDb21wb25lbnQuZmVhdHVyZQpAQCAtMCwwICsxLDc2IEBACisjIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyMgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisjIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisjIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyMgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisjIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyMKKyMgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjCisjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyMgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyMgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisjIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorIyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisjIHVuZGVyIHRoZSBMaWNlbnNlLgorCitGZWF0dXJlOiBTdGVwIC0gY29ubmVjdGVkQ29tcG9uZW50KCkKKyAgICAgICAgICAgICAgICAKKyAgU2NlbmFyaW86IGdfVl9jb25uZWN0ZWRDb21wb25lbnRfaGFzWGNvbXBvbmVudFgKKyAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAgICIiIgorICAgICAgZy53aXRoQ29tcHV0ZXIoKS5WKCkuY29ubmVjdGVkQ29tcG9uZW50KCkuaGFzKCJncmVtbGluLmNvbm5lY3RlZENvbXBvbmVudFZlcnRleFByb2dyYW0uY29tcG9uZW50IikKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgICB8IHJlc3VsdCB8CisgICAgICB8IHZbbWFya29dIHwKKyAgICAgIHwgdlt2YWRhc10gfAorICAgICAgfCB2W2xvcF0gfAorICAgICAgfCB2W2pvc2hdIHwKKyAgICAgIHwgdltyaXBwbGVdIHwKKyAgICAgIHwgdltwZXRlcl0gfAorCisgIFNjZW5hcmlvOiBnX1ZfZGVkdXBfY29ubmVjdGVkQ29tcG9uZW50X2hhc1hjb21wb25lbnRYCisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcud2l0aENvbXB1dGVyKCkuVigpLmRlZHVwKCkuY29ubmVjdGVkQ29tcG9uZW50KCkuaGFzKCJncmVtbGluLmNvbm5lY3RlZENvbXBvbmVudFZlcnRleFByb2dyYW0uY29tcG9uZW50IikKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgICB8IHJlc3VsdCB8CisgICAgICB8IHZbbWFya29dIHwKKyAgICAgIHwgdlt2YWRhc10gfAorICAgICAgfCB2W2xvcF0gfAorICAgICAgfCB2W2pvc2hdIHwKKyAgICAgIHwgdltyaXBwbGVdIHwKKyAgICAgIHwgdltwZXRlcl0gfAorCisgIFNjZW5hcmlvOiBnX1ZfaGFzTGFiZWxYc29mdHdhcmVYX2Nvbm5lY3RlZENvbXBvbmVudF9wcm9qZWN0X2J5WG5hbWVYX2J5WGNvbXBvbmVudFgKKyAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAgICIiIgorICAgICAgZy53aXRoQ29tcHV0ZXIoKS5WKCkuaGFzTGFiZWwoInNvZnR3YXJlIikuY29ubmVjdGVkQ29tcG9uZW50KCkucHJvamVjdCgibmFtZSIsImNvbXBvbmVudCIpLmJ5KCJuYW1lIikuYnkoImdyZW1saW4uY29ubmVjdGVkQ29tcG9uZW50VmVydGV4UHJvZ3JhbS5jb21wb25lbnQiKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0IHwKKyAgICAgIHwgbVt7Im5hbWUiOiAibG9wIiwgImNvbXBvbmVudCI6ICIxIn1dIHwKKyAgICAgIHwgbVt7Im5hbWUiOiAicmlwcGxlIiwgImNvbXBvbmVudCI6ICIxIn1dIHwKKworICBTY2VuYXJpbzogZ19WX2Nvbm5lY3RlZENvbXBvbmVudF93aXRoWEVER0VTX2JvdGhFWGtub3dzWFhfd2l0aFhQUk9QRVJUWV9OQU1FX2NsdXN0ZXJYX3Byb2plY3RfYnlYbmFtZVhfYnlYY2x1c3RlclgKKyAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAgICIiIgorICAgICAgZy53aXRoQ29tcHV0ZXIoKS5WKCkuaGFzTGFiZWwoInBlcnNvbiIpLmNvbm5lY3RlZENvbXBvbmVudCgpLndpdGgoIn50aW5rZXJwb3AuY29ubmVjdGVkQ29tcG9uZW50LmVkZ2VzIiwgX18uYm90aEUoImtub3dzIikpLndpdGgoIn50aW5rZXJwb3AuY29ubmVjdGVkQ29tcG9uZW50LnByb3BlcnR5TmFtZSIsICJjbHVzdGVyIikucHJvamVjdCgibmFtZSIsImNsdXN0ZXIiKS5ieSgibmFtZSIpLmJ5KCJjbHVzdGVyIikKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgICB8IHJlc3VsdCB8CisgICAgICB8IG1beyJuYW1lIjogIm1hcmtvIiwgImNsdXN0ZXIiOiAiMSJ9XSB8CisgICAgICB8IG1beyJuYW1lIjogInZhZGFzIiwgImNsdXN0ZXIiOiAiMSJ9XSB8CisgICAgICB8IG1beyJuYW1lIjogImpvc2giLCAiY2x1c3RlciI6ICIxIn1dIHwKKyAgICAgIHwgbVt7Im5hbWUiOiAicGV0ZXIiLCAiY2x1c3RlciI6ICI2In1dIHwKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3QvZmVhdHVyZXMvbWFwL0VsZW1lbnRNYXAuZmVhdHVyZSBiL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9tYXAvRWxlbWVudE1hcC5mZWF0dXJlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1ZGU2ODgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRlc3QvZmVhdHVyZXMvbWFwL0VsZW1lbnRNYXAuZmVhdHVyZQpAQCAtMCwwICsxLDYyIEBACisjIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyMgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisjIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisjIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyMgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisjIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyMKKyMgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjCisjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyMgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyMgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisjIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorIyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisjIHVuZGVyIHRoZSBMaWNlbnNlLgorCitGZWF0dXJlOiBTdGVwIC0gZWxlbWVudE1hcCgpCisKKyAgU2NlbmFyaW86IGdfVl9lbGVtZW50TWFwCisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcuVigpLmVsZW1lbnRNYXAoKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0IHwKKyAgICAgIHwgbVt7InRbaWRdIjogInZbbWFya29dLmlkIiwgInRbbGFiZWxdIjogInBlcnNvbiIsICJuYW1lIjogIm1hcmtvIiwgImFnZSI6IDI5fV0gfAorICAgICAgfCBtW3sidFtpZF0iOiAidltqb3NoXS5pZCIsICJ0W2xhYmVsXSI6ICJwZXJzb24iLCAibmFtZSI6ICJqb3NoIiwgImFnZSI6IDMyfV0gfAorICAgICAgfCBtW3sidFtpZF0iOiAidltwZXRlcl0uaWQiLCAidFtsYWJlbF0iOiAicGVyc29uIiwgIm5hbWUiOiAicGV0ZXIiLCAiYWdlIjogMzV9XSB8CisgICAgICB8IG1beyJ0W2lkXSI6ICJ2W3ZhZGFzXS5pZCIsICJ0W2xhYmVsXSI6ICJwZXJzb24iLCAibmFtZSI6ICJ2YWRhcyIsICJhZ2UiOiAyN31dIHwKKyAgICAgIHwgbVt7InRbaWRdIjogInZbbG9wXS5pZCIsICJ0W2xhYmVsXSI6ICJzb2Z0d2FyZSIsICJuYW1lIjogImxvcCIsICJsYW5nIjogImphdmEifV0gfAorICAgICAgfCBtW3sidFtpZF0iOiAidltyaXBwbGVdLmlkIiwgInRbbGFiZWxdIjogInNvZnR3YXJlIiwgIm5hbWUiOiAicmlwcGxlIiwgImxhbmciOiAiamF2YSJ9XSB8CisKKyAgU2NlbmFyaW86IGdfVl9lbGVtZW50TWFwWG5hbWVfYWdlWAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLlYoKS5lbGVtZW50TWFwKCJuYW1lIiwgImFnZSIpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHVub3JkZXJlZAorICAgICAgfCByZXN1bHQgfAorICAgICAgfCBtW3sidFtpZF0iOiAidlttYXJrb10uaWQiLCAidFtsYWJlbF0iOiAicGVyc29uIiwgIm5hbWUiOiAibWFya28iLCAiYWdlIjogMjl9XSB8CisgICAgICB8IG1beyJ0W2lkXSI6ICJ2W2pvc2hdLmlkIiwgInRbbGFiZWxdIjogInBlcnNvbiIsICJuYW1lIjogImpvc2giLCAiYWdlIjogMzJ9XSB8CisgICAgICB8IG1beyJ0W2lkXSI6ICJ2W3BldGVyXS5pZCIsICJ0W2xhYmVsXSI6ICJwZXJzb24iLCAibmFtZSI6ICJwZXRlciIsICJhZ2UiOiAzNX1dIHwKKyAgICAgIHwgbVt7InRbaWRdIjogInZbdmFkYXNdLmlkIiwgInRbbGFiZWxdIjogInBlcnNvbiIsICJuYW1lIjogInZhZGFzIiwgImFnZSI6IDI3fV0gfAorICAgICAgfCBtW3sidFtpZF0iOiAidltsb3BdLmlkIiwgInRbbGFiZWxdIjogInNvZnR3YXJlIiwgIm5hbWUiOiAibG9wIn1dIHwKKyAgICAgIHwgbVt7InRbaWRdIjogInZbcmlwcGxlXS5pZCIsICJ0W2xhYmVsXSI6ICJzb2Z0d2FyZSIsICJuYW1lIjogInJpcHBsZSJ9XSB8CisKKyAgU2NlbmFyaW86IGdfRVgxMVhfZWxlbWVudE1hcAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdXNpbmcgdGhlIHBhcmFtZXRlciBlMTFJZCBkZWZpbmVkIGFzICJlW2pvc2gtY3JlYXRlZC0+bG9wXS5pZCIKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICIiIgorICAgICAgZy5FKGUxMUlkKS5lbGVtZW50TWFwKCkKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgICB8IHJlc3VsdCB8CisgICAgICB8IG1beyJ0W2lkXSI6ICJlW2pvc2gtY3JlYXRlZC0+bG9wXS5pZCIsICJ0W2xhYmVsXSI6ICJjcmVhdGVkIiwgIndlaWdodCI6ICJkWzAuNF0uZCIsICJEW09VVF0iOiAibVt7XFwidFtpZF1cXCI6IFxcInZbam9zaF0uaWRcXCIsIFxcInRbbGFiZWxdXFwiOiBcXCJwZXJzb25cXCJ9XSIsICJEW0lOXSI6ICJtW3tcXCJ0W2lkXVxcIjogXFwidltsb3BdLmlkXFwiLCBcXCJ0W2xhYmVsXVxcIjogXFwic29mdHdhcmVcXCJ9XSJ9XSB8ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL21hcC9JbmRleC5mZWF0dXJlIGIvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL21hcC9JbmRleC5mZWF0dXJlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0YzE5MGIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRlc3QvZmVhdHVyZXMvbWFwL0luZGV4LmZlYXR1cmUKQEAgLTAsMCArMSw2NSBAQAorIyBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisjIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorIyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorIyByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisjIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorIyB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisjCisjIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorIworIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisjIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisjICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorIyBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyMgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworIyB1bmRlciB0aGUgTGljZW5zZS4KKworRmVhdHVyZTogU3RlcCAtIGluZGV4KCkKKworICBTY2VuYXJpbzogZ19WX2hhc0xhYmVsWHNvZnR3YXJlWF9pbmRleF91bmZvbGQKKyAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAgICIiIgorICAgICAgZy5WKCkuaGFzTGFiZWwoInNvZnR3YXJlIikuaW5kZXgoKS51bmZvbGQoKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0IHwKKyAgICAgIHwgbFt2W2xvcF0sZFswXS5pXSB8CisgICAgICB8IGxbdltyaXBwbGVdLGRbMF0uaV0gfAorCisgIFNjZW5hcmlvOiBnX1ZfaGFzTGFiZWxYc29mdHdhcmVYX29yZGVyX2J5WG5hbWVYX2luZGV4X3dpdGhYbWFwWAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLlYoKS5oYXNMYWJlbCgic29mdHdhcmUiKS5vcmRlcigpLmJ5KCJuYW1lIikuaW5kZXgoKS53aXRoKFdpdGhPcHRpb25zLmluZGV4ZXIsIFdpdGhPcHRpb25zLm1hcCkKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgb3JkZXJlZAorICAgICAgfCByZXN1bHQgfAorICAgICAgfCBtW3siZFswXS5pIjogInZbbG9wXSJ9XSB8CisgICAgICB8IG1beyJkWzBdLmkiOiAidltyaXBwbGVdIn1dIHwKKworICBTY2VuYXJpbzogZ19WX2hhc0xhYmVsWHNvZnR3YXJlWF9uYW1lX2ZvbGRfb3JkZXJYbG9jYWxYX2luZGV4X3VuZm9sZF9vcmRlcl9ieVh0YWlsWGxvY2FsXzFYWAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLlYoKS5oYXNMYWJlbCgic29mdHdhcmUiKS52YWx1ZXMoIm5hbWUiKS5mb2xkKCkub3JkZXIoU2NvcGUubG9jYWwpLmluZGV4KCkudW5mb2xkKCkub3JkZXIoKS5ieShfXy50YWlsKFNjb3BlLmxvY2FsLCAxKSkKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgICB8IHJlc3VsdCB8CisgICAgICB8IGxbbG9wLGRbMF0uaV0gfAorICAgICAgfCBsW3JpcHBsZSxkWzFdLmldIHwKKworICBTY2VuYXJpbzogZ19WX2hhc0xhYmVsWHBlcnNvblhfbmFtZV9mb2xkX29yZGVyWGxvY2FsWF9pbmRleF93aXRoWG1hcFgKKyAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAgICIiIgorICAgICAgZy5WKCkuaGFzTGFiZWwoInBlcnNvbiIpLnZhbHVlcygibmFtZSIpLmZvbGQoKS5vcmRlcihTY29wZS5sb2NhbCkuaW5kZXgoKS53aXRoKFdpdGhPcHRpb25zLmluZGV4ZXIsIFdpdGhPcHRpb25zLm1hcCkKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgICB8IHJlc3VsdCB8CisgICAgICB8IG1beyJkWzBdLmkiOiAiam9zaCIsICJkWzFdLmkiOiAibWFya28iLCAiZFsyXS5pIjogInBldGVyIiwgImRbM10uaSI6ICJ2YWRhcyJ9XSB8CmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3QvZmVhdHVyZXMvbWFwL01heC5mZWF0dXJlIGIvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL21hcC9NYXguZmVhdHVyZQppbmRleCBhZDBhMjcwLi40NGQ5NjQwIDEwMDY0NAotLS0gYS9ncmVtbGluLXRlc3QvZmVhdHVyZXMvbWFwL01heC5mZWF0dXJlCisrKyBiL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9tYXAvTWF4LmZlYXR1cmUKQEAgLTI4LDYgKzI4LDU3IEBACiAgICAgICB8IHJlc3VsdCB8CiAgICAgICB8IGRbMzVdLmkgfAogCisgIFNjZW5hcmlvOiBnX1ZfZm9vX21heAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLlYoKS52YWx1ZXMoImZvbyIpLm1heCgpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIGVtcHR5CisKKyAgU2NlbmFyaW86IGdfVl9uYW1lX21heAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLlYoKS52YWx1ZXMoIm5hbWUiKS5tYXgoKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0IHwKKyAgICAgIHwgdmFkYXMgfAorCisgIFNjZW5hcmlvOiBnX1ZfYWdlX2ZvbGRfbWF4WGxvY2FsWAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLlYoKS52YWx1ZXMoImFnZSIpLmZvbGQoKS5tYXgoU2NvcGUubG9jYWwpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHVub3JkZXJlZAorICAgICAgfCByZXN1bHQgfAorICAgICAgfCBkWzM1XS5pIHwKKworICBTY2VuYXJpbzogZ19WX2Zvb19mb2xkX21heFhsb2NhbFgKKyAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAgICIiIgorICAgICAgZy5WKCkudmFsdWVzKCJmb28iKS5mb2xkKCkubWF4KFNjb3BlLmxvY2FsKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSBlbXB0eQorCisgIFNjZW5hcmlvOiBnX1ZfbmFtZV9mb2xkX21heFhsb2NhbFgKKyAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAgICIiIgorICAgICAgZy5WKCkudmFsdWVzKCJuYW1lIikuZm9sZCgpLm1heChTY29wZS5sb2NhbCkKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgICB8IHJlc3VsdCB8CisgICAgICB8IHZhZGFzIHwKKwogICBTY2VuYXJpbzogZ19WX3JlcGVhdFhib3RoWF90aW1lc1g1WF9hZ2VfbWF4CiAgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAogICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3QvZmVhdHVyZXMvbWFwL01lYW4uZmVhdHVyZSBiL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9tYXAvTWVhbi5mZWF0dXJlCmluZGV4IGIxMDkzNTYuLmRjMjhlY2IgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9tYXAvTWVhbi5mZWF0dXJlCisrKyBiL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9tYXAvTWVhbi5mZWF0dXJlCkBAIC0yOCw2ICsyOCwzNSBAQAogICAgICAgfCByZXN1bHQgfAogICAgICAgfCBkWzMwLjc1XS5kIHwKIAorICBTY2VuYXJpbzogZ19WX2Zvb19tZWFuCisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcuVigpLnZhbHVlcygiZm9vIikubWVhbigpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIGVtcHR5CisKKyAgU2NlbmFyaW86IGdfVl9hZ2VfZm9sZF9tZWFuWGxvY2FsWAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLlYoKS52YWx1ZXMoImFnZSIpLmZvbGQoKS5tZWFuKFNjb3BlLmxvY2FsKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0IHwKKyAgICAgIHwgZFszMC43NV0uZCB8CisKKyAgU2NlbmFyaW86IGdfVl9mb29fZm9sZF9tZWFuWGxvY2FsWAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLlYoKS52YWx1ZXMoImZvbyIpLmZvbGQoKS5tZWFuKFNjb3BlLmxvY2FsKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSBlbXB0eQorCiAgIFNjZW5hcmlvOiBnX1ZfaGFzTGFiZWxYc29mdHdhcmVYX2dyb3VwX2J5WG5hbWVYX2J5WGJvdGhFX3dlaWdodF9tZWFuWAogICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKICAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgpAQCAtMzcsNCArNjYsNCBAQAogICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAogICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCiAgICAgICB8IHJlc3VsdCB8Ci0gICAgICB8IG1beyJyaXBwbGUiOiJkWzEuMF0uZCIsImxvcCI6ImRbMC4zMzMzMzMzMzMzMzMzMzMzXS5kIn1dIHwKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisgICAgICB8IG1beyJyaXBwbGUiOiJkWzEuMF0uZCIsImxvcCI6ImRbMC4zMzMzMzMzMzMzMzMzMzMzXS5kIn1dIHwKZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9tYXAvTWluLmZlYXR1cmUgYi9ncmVtbGluLXRlc3QvZmVhdHVyZXMvbWFwL01pbi5mZWF0dXJlCmluZGV4IGQ3N2U5ZjMuLmQxNWVmZjcgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9tYXAvTWluLmZlYXR1cmUKKysrIGIvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL21hcC9NaW4uZmVhdHVyZQpAQCAtMjgsNiArMjgsNTcgQEAKICAgICAgIHwgcmVzdWx0IHwKICAgICAgIHwgZFsyN10uaSB8CiAKKyAgU2NlbmFyaW86IGdfVl9mb29fbWluCisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcuVigpLnZhbHVlcygiZm9vIikubWluKCkKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgZW1wdHkKKworICBTY2VuYXJpbzogZ19WX25hbWVfbWluCisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcuVigpLnZhbHVlcygibmFtZSIpLm1pbigpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHVub3JkZXJlZAorICAgICAgfCByZXN1bHQgfAorICAgICAgfCBqb3NoIHwKKworICBTY2VuYXJpbzogZ19WX2FnZV9mb2xkX21pblhsb2NhbFgKKyAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAgICIiIgorICAgICAgZy5WKCkudmFsdWVzKCJhZ2UiKS5mb2xkKCkubWluKFNjb3BlLmxvY2FsKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0IHwKKyAgICAgIHwgZFsyN10uaSB8CisKKyAgU2NlbmFyaW86IGdfVl9mb29fZm9sZF9taW5YbG9jYWxYCisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcuVigpLnZhbHVlcygiZm9vIikuZm9sZCgpLm1pbihTY29wZS5sb2NhbCkKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgZW1wdHkKKworICBTY2VuYXJpbzogZ19WX25hbWVfZm9sZF9taW5YbG9jYWxYCisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcuVigpLnZhbHVlcygibmFtZSIpLmZvbGQoKS5taW4oU2NvcGUubG9jYWwpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHVub3JkZXJlZAorICAgICAgfCByZXN1bHQgfAorICAgICAgfCBqb3NoIHwKKwogICBTY2VuYXJpbzogZ19WX3JlcGVhdFhib3RoWF90aW1lc1g1WF9hZ2VfbWluCiAgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAogICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3QvZmVhdHVyZXMvbWFwL09yZGVyLmZlYXR1cmUgYi9ncmVtbGluLXRlc3QvZmVhdHVyZXMvbWFwL09yZGVyLmZlYXR1cmUKaW5kZXggOGRlYmM0Zi4uNmEwNjg5MCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL21hcC9PcmRlci5mZWF0dXJlCisrKyBiL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9tYXAvT3JkZXIuZmVhdHVyZQpAQCAtMjI0LDEzICsyMjQsMTMgQEAKICAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKICAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIG9yZGVyZWQKICAgICAgIHwgcmVzdWx0IHwKLSAgICAgIHwgbVt7InZhZGFzIjoiZFswXS5pIiwicGV0ZXIiOiJkWzAuMl0uZCIsImpvc2giOiJkWzEuNF0uZCIsIm1hcmtvIjoiZFsxLjldLmQifV0gfAorICAgICAgfCBtW3sicGV0ZXIiOiJkWzAuMl0uZCIsImpvc2giOiJkWzEuNF0uZCIsIm1hcmtvIjoiZFsxLjldLmQifV0gfAogCi0gIFNjZW5hcmlvOiBnX1ZfbG9jYWxYYm90aEVfd2VpZ2h0X2ZvbGRYX29yZGVyX2J5WHN1bVhsb2NhbFhfZGVzY1gKKyAgU2NlbmFyaW86IGdfVl9tYXBYYm90aEVfd2VpZ2h0X2ZvbGRYX29yZGVyX2J5WHN1bVhsb2NhbFhfZGVzY1gKICAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCiAgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKICAgICAgICIiIgotICAgICAgZy5WKCkubG9jYWwoX18uYm90aEUoKS52YWx1ZXMoIndlaWdodCIpLmZvbGQoKSkub3JkZXIoKS5ieShfXy5zdW0oU2NvcGUubG9jYWwpLCBPcmRlci5kZXNjKQorICAgICAgZy5WKCkubWFwKF9fLmJvdGhFKCkudmFsdWVzKCJ3ZWlnaHQiKS5mb2xkKCkpLm9yZGVyKCkuYnkoX18uc3VtKFNjb3BlLmxvY2FsKSwgT3JkZXIuZGVzYykKICAgICAgICIiIgogICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAogICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgb3JkZXJlZApAQCAtMjY1LDcgKzI2NSw2IEBACiAgICAgICB8IG1beyJtYXJrbyI6ImRbMS45XS5kIn1dICB8CiAgICAgICB8IG1beyJqb3NoIjoiZFsxLjRdLmQifV0gIHwKICAgICAgIHwgbVt7InBldGVyIjoiZFswLjJdLmQifV0gIHwKLSAgICAgIHwgbVt7InZhZGFzIjoiZFswXS5pIn1dICB8CiAKICAgU2NlbmFyaW86IGdfVl9hc1h2WF9tYXBYYm90aEVfd2VpZ2h0X2ZvbGRYX3N1bVhsb2NhbFhfYXNYc1hfc2VsZWN0WHZfc1hfb3JkZXJfYnlYc2VsZWN0WHNYX2Rlc2NYCiAgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaApAQCAtMzY5LDE3ICszNjgsMTcgQEAKICAgICAgIFRPRE8KICAgICAgICIiIgogCi0gIFNjZW5hcmlvOiBnX1ZYMVhfdmFsdWVNYXBYdHJ1ZVhfb3JkZXJYbG9jYWxYX2J5WGtleXNfZGVzY1h1bmZvbGQKKyAgU2NlbmFyaW86IGdfVlgxWF9lbGVtZW50TWFwX29yZGVyWGxvY2FsWF9ieVhrZXlzX2Rlc2NYdW5mb2xkCiAgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAogICAgIEFuZCB1c2luZyB0aGUgcGFyYW1ldGVyIHYxSWQgZGVmaW5lZCBhcyAidlttYXJrb10uaWQiCiAgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKICAgICAgICIiIgotICAgICAgZy5WKHYxSWQpLnZhbHVlTWFwKHRydWUpLm9yZGVyKFNjb3BlLmxvY2FsKS5ieShDb2x1bW4ua2V5cywgT3JkZXIuZGVzYykudW5mb2xkKCkKKyAgICAgIGcuVih2MUlkKS5lbGVtZW50TWFwKCkub3JkZXIoU2NvcGUubG9jYWwpLmJ5KENvbHVtbi5rZXlzLCBPcmRlci5kZXNjKS51bmZvbGQoKQogICAgICAgIiIiCiAgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CiAgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSBvcmRlcmVkCiAgICAgICB8IHJlc3VsdCB8Ci0gICAgICB8IG1beyJuYW1lIjpbIm1hcmtvIl19XSB8CisgICAgICB8IG1beyJuYW1lIjoibWFya28ifV0gfAogICAgICAgfCBtW3sidFtsYWJlbF0iOiJwZXJzb24ifV0gfAogICAgICAgfCBtW3sidFtpZF0iOiJ2W21hcmtvXS5pZCJ9XSB8Ci0gICAgICB8IG1beyJhZ2UiOlsyOV19XSB8ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorICAgICAgfCBtW3siYWdlIjoyOX1dIHwKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3QvZmVhdHVyZXMvbWFwL1BhdGguZmVhdHVyZSBiL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9tYXAvUGF0aC5mZWF0dXJlCmluZGV4IGIwY2I5ZGQuLjBiYjc1NzMgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9tYXAvUGF0aC5mZWF0dXJlCisrKyBiL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9tYXAvUGF0aC5mZWF0dXJlCkBAIC0xNSw3ICsxNSw3IEBACiAjIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKICMgdW5kZXIgdGhlIExpY2Vuc2UuCiAKLUZlYXR1cmU6IFN0ZXAgLSBjb3VudCgpCitGZWF0dXJlOiBTdGVwIC0gcGF0aCgpCiAKICAgU2NlbmFyaW86IGdfVlgxWF9uYW1lX3BhdGgKICAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3QvZmVhdHVyZXMvbWFwL1BlZXJQcmVzc3VyZS5mZWF0dXJlIGIvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL21hcC9QZWVyUHJlc3N1cmUuZmVhdHVyZQppbmRleCBkZDA4ODA2Li44MWNhNmY4IDEwMDY0NAotLS0gYS9ncmVtbGluLXRlc3QvZmVhdHVyZXMvbWFwL1BlZXJQcmVzc3VyZS5mZWF0dXJlCisrKyBiL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9tYXAvUGVlclByZXNzdXJlLmZlYXR1cmUKQEAgLTYwLDMgKzYwLDIwIEBACiAgICAgICB8IG1beyJuYW1lIjogWyJqb3NoIl0sICJjbHVzdGVyIjogWzRdfV0gfAogICAgICAgfCBtW3sibmFtZSI6IFsicmlwcGxlIl0sICJjbHVzdGVyIjogWzRdfV0gfAogICAgICAgfCBtW3sibmFtZSI6IFsicGV0ZXIiXSwgImNsdXN0ZXIiOiBbNl19XSB8CisKKyAgU2NlbmFyaW86IGdfVl9oYXNYbmFtZV9yaXBwbGVYX2luWGNyZWF0ZWRYX3BlZXJQcmVzc3VyZV93aXRoWEVER0VTX291dEVYX3dpdGhYUFJPUEVSVFlfTkFNRV9jbHVzdGVyWF9yZXBlYXRYdW5pb25YaWRlbnRpdHlfX2JvdGhYX3RpbWVzWDJYX2RlZHVwX3ZhbHVlTWFwWG5hbWVfY2x1c3RlclgKKyAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAgICIiIgorICAgICAgZy53aXRoQ29tcHV0ZXIoKS5WKCkuaGFzKCJuYW1lIiwgInJpcHBsZSIpLmluKCJjcmVhdGVkIikucGVlclByZXNzdXJlKCkud2l0aCgifnRpbmtlcnBvcC5wZWVyUHJlc3N1cmUuZWRnZXMiLF9fLm91dEUoKSkud2l0aCgifnRpbmtlcnBvcC5wZWVyUHJlc3N1cmUucHJvcGVydHlOYW1lIiwgImNsdXN0ZXIiKS5yZXBlYXQoX18udW5pb24oX18uaWRlbnRpdHkoKSwgX18uYm90aCgpKSkudGltZXMoMikuZGVkdXAoKS52YWx1ZU1hcCgibmFtZSIsICJjbHVzdGVyIikKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgICB8IHJlc3VsdCB8CisgICAgICB8IG1beyJuYW1lIjogWyJtYXJrbyJdLCAiY2x1c3RlciI6IFsxXX1dIHwKKyAgICAgIHwgbVt7Im5hbWUiOiBbInZhZGFzIl0sICJjbHVzdGVyIjogWzJdfV0gfAorICAgICAgfCBtW3sibmFtZSI6IFsibG9wIl0sICJjbHVzdGVyIjogWzRdfV0gfAorICAgICAgfCBtW3sibmFtZSI6IFsiam9zaCJdLCAiY2x1c3RlciI6IFs0XX1dIHwKKyAgICAgIHwgbVt7Im5hbWUiOiBbInJpcHBsZSJdLCAiY2x1c3RlciI6IFs0XX1dIHwKKyAgICAgIHwgbVt7Im5hbWUiOiBbInBldGVyIl0sICJjbHVzdGVyIjogWzZdfV0gfAorCmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3QvZmVhdHVyZXMvbWFwL1Byb2plY3QuZmVhdHVyZSBiL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9tYXAvUHJvamVjdC5mZWF0dXJlCmluZGV4IDg5NzQzMTIuLmYzNjY2YjggMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9tYXAvUHJvamVjdC5mZWF0dXJlCisrKyBiL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9tYXAvUHJvamVjdC5mZWF0dXJlCkBAIC01Miw0ICs1MiwyMCBAQAogICAgICAgfCBsb3AgfAogICAgICAgfCBsb3AgfAogICAgICAgfCBsb3AgfAotICAgICAgfCByaXBwbGUgfApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKyAgICAgIHwgcmlwcGxlIHwKKworICBTY2VuYXJpbzogZ19WX3ZhbHVlTWFwX3Byb2plY3RYeFhfYnlYc2VsZWN0WG5hbWVYWAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLlYoKS52YWx1ZU1hcCgpLnByb2plY3QoIngiKS5ieShfXy5zZWxlY3QoIm5hbWUiKSkKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgICB8IHJlc3VsdCB8CisgICAgICB8IG1beyJ4IjpbIm1hcmtvIl19XSB8CisgICAgICB8IG1beyJ4IjpbImpvc2giXX1dIHwKKyAgICAgIHwgbVt7IngiOlsidmFkYXMiXX1dIHwKKyAgICAgIHwgbVt7IngiOlsicGV0ZXIiXX1dIHwKKyAgICAgIHwgbVt7IngiOlsibG9wIl19XSB8CisgICAgICB8IG1beyJ4IjpbInJpcHBsZSJdfV0gfApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9tYXAvU2VsZWN0LmZlYXR1cmUgYi9ncmVtbGluLXRlc3QvZmVhdHVyZXMvbWFwL1NlbGVjdC5mZWF0dXJlCmluZGV4IDQ2ODM0NjQuLmJlMWE4OTkgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9tYXAvU2VsZWN0LmZlYXR1cmUKKysrIGIvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL21hcC9TZWxlY3QuZmVhdHVyZQpAQCAtMjA0LDYgKzIwNCwyMiBAQAogICAgICAgfCB2W3JpcHBsZV0gfAogICAgICAgfCB2W3BldGVyXSB8CiAKKyAgU2NlbmFyaW86IGdfVlgxWF9ncm91cFhhWF9ieVhjb25zdGFudFhhWFhfYnlYbmFtZVhfc2VsZWN0WGFYX3NlbGVjdFhhWAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdXNpbmcgdGhlIHBhcmFtZXRlciB2MUlkIGRlZmluZWQgYXMgInZbbWFya29dLmlkIgorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcuVih2MUlkKS5ncm91cCgiYSIpLgorICAgICAgICAgICAgICAgICAgYnkoX18uY29uc3RhbnQoImEiKSkuCisgICAgICAgICAgICAgICAgICBieShfXy52YWx1ZXMoIm5hbWUiKSkuCisgICAgICAgIGJhcnJpZXIoKS4KKyAgICAgICAgc2VsZWN0KCJhIikuc2VsZWN0KCJhIikKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgICB8IHJlc3VsdCB8CisgICAgICB8IG1hcmtvIHwKKwogICBTY2VuYXJpbzogZ19WWDFYX2FzWGhlcmVYX291dF9zZWxlY3RYaGVyZVgKICAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCiAgICAgQW5kIHVzaW5nIHRoZSBwYXJhbWV0ZXIgdjFJZCBkZWZpbmVkIGFzICJ2W21hcmtvXS5pZCIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9tYXAvU2hvcnRlc3RQYXRoLmZlYXR1cmUgYi9ncmVtbGluLXRlc3QvZmVhdHVyZXMvbWFwL1Nob3J0ZXN0UGF0aC5mZWF0dXJlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhZTAxYjIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRlc3QvZmVhdHVyZXMvbWFwL1Nob3J0ZXN0UGF0aC5mZWF0dXJlCkBAIC0wLDAgKzEsMzYxIEBACisjIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyMgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisjIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisjIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyMgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSxWZXJzaW9uIDIuMCAodGhlCisjICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyMgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorIworIyBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyMKKyMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorIyBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorIyAiQVMgSVMiIEJBU0lTLFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorIyBLSU5ELGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorIyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisjIHVuZGVyIHRoZSBMaWNlbnNlLgorCitGZWF0dXJlOiBTdGVwIC0gc2hvcnRlc3RQYXRoKCkKKworICBTY2VuYXJpbzogZ19WX3Nob3J0ZXN0UGF0aAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLndpdGhDb21wdXRlcigpLlYoKS5zaG9ydGVzdFBhdGgoKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3Zbam9zaF0sdltsb3BdLHZbcGV0ZXJdXSAgICAgICAgICAgICB8CisgICAgICB8IHBbdltqb3NoXSx2W2xvcF1dICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W2pvc2hdLHZbbWFya29dLHZbdmFkYXNdXSAgICAgICAgICAgfAorICAgICAgfCBwW3Zbam9zaF0sdlttYXJrb11dICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltqb3NoXSx2W3JpcHBsZV1dICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W2pvc2hdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbG9wXSx2W2pvc2hdLHZbcmlwcGxlXV0gICAgICAgICAgICB8CisgICAgICB8IHBbdltsb3BdLHZbam9zaF1dICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W2xvcF0sdlttYXJrb10sdlt2YWRhc11dICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbG9wXSx2W21hcmtvXV0gICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltsb3BdLHZbcGV0ZXJdXSAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W2xvcF1dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbWFya29dLHZbam9zaF0sdltyaXBwbGVdXSAgICAgICAgICB8CisgICAgICB8IHBbdlttYXJrb10sdltqb3NoXV0gICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W21hcmtvXSx2W2xvcF0sdltwZXRlcl1dICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbWFya29dLHZbbG9wXV0gICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdlttYXJrb10sdlt2YWRhc11dICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W21hcmtvXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbcGV0ZXJdLHZbbG9wXSx2W2pvc2hdLHZbcmlwcGxlXV0gICB8CisgICAgICB8IHBbdltwZXRlcl0sdltsb3BdLHZbam9zaF1dICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W3BldGVyXSx2W2xvcF0sdlttYXJrb10sdlt2YWRhc11dICAgfAorICAgICAgfCBwW3ZbcGV0ZXJdLHZbbG9wXSx2W21hcmtvXV0gICAgICAgICAgICB8CisgICAgICB8IHBbdltwZXRlcl0sdltsb3BdXSAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W3BldGVyXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbcmlwcGxlXSx2W2pvc2hdLHZbbG9wXSx2W3BldGVyXV0gICB8CisgICAgICB8IHBbdltyaXBwbGVdLHZbam9zaF0sdltsb3BdXSAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W3JpcHBsZV0sdltqb3NoXSx2W21hcmtvXSx2W3ZhZGFzXV0gfAorICAgICAgfCBwW3ZbcmlwcGxlXSx2W2pvc2hdLHZbbWFya29dXSAgICAgICAgICB8CisgICAgICB8IHBbdltyaXBwbGVdLHZbam9zaF1dICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W3JpcHBsZV1dICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbdmFkYXNdLHZbbWFya29dLHZbam9zaF0sdltyaXBwbGVdXSB8CisgICAgICB8IHBbdlt2YWRhc10sdlttYXJrb10sdltqb3NoXV0gICAgICAgICAgIHwKKyAgICAgIHwgcFt2W3ZhZGFzXSx2W21hcmtvXSx2W2xvcF0sdltwZXRlcl1dICAgfAorICAgICAgfCBwW3ZbdmFkYXNdLHZbbWFya29dLHZbbG9wXV0gICAgICAgICAgICB8CisgICAgICB8IHBbdlt2YWRhc10sdlttYXJrb11dICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W3ZhZGFzXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorCisgIFNjZW5hcmlvOiBnX1ZfYm90aF9kZWR1cF9zaG9ydGVzdFBhdGgKKyAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAgICIiIgorICAgICAgZy53aXRoQ29tcHV0ZXIoKS5WKCkuYm90aCgpLmRlZHVwKCkuc2hvcnRlc3RQYXRoKCkKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgICB8IHJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W2pvc2hdLHZbbG9wXSx2W3BldGVyXV0gICAgICAgICAgICAgfAorICAgICAgfCBwW3Zbam9zaF0sdltsb3BdXSAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltqb3NoXSx2W21hcmtvXSx2W3ZhZGFzXV0gICAgICAgICAgIHwKKyAgICAgIHwgcFt2W2pvc2hdLHZbbWFya29dXSAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3Zbam9zaF0sdltyaXBwbGVdXSAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltqb3NoXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W2xvcF0sdltqb3NoXSx2W3JpcHBsZV1dICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbG9wXSx2W2pvc2hdXSAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltsb3BdLHZbbWFya29dLHZbdmFkYXNdXSAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W2xvcF0sdlttYXJrb11dICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbG9wXSx2W3BldGVyXV0gICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltsb3BdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W21hcmtvXSx2W2pvc2hdLHZbcmlwcGxlXV0gICAgICAgICAgfAorICAgICAgfCBwW3ZbbWFya29dLHZbam9zaF1dICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdlttYXJrb10sdltsb3BdLHZbcGV0ZXJdXSAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W21hcmtvXSx2W2xvcF1dICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbWFya29dLHZbdmFkYXNdXSAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdlttYXJrb11dICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W3BldGVyXSx2W2xvcF0sdltqb3NoXSx2W3JpcHBsZV1dICAgfAorICAgICAgfCBwW3ZbcGV0ZXJdLHZbbG9wXSx2W2pvc2hdXSAgICAgICAgICAgICB8CisgICAgICB8IHBbdltwZXRlcl0sdltsb3BdLHZbbWFya29dLHZbdmFkYXNdXSAgIHwKKyAgICAgIHwgcFt2W3BldGVyXSx2W2xvcF0sdlttYXJrb11dICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbcGV0ZXJdLHZbbG9wXV0gICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltwZXRlcl1dICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W3JpcHBsZV0sdltqb3NoXSx2W2xvcF0sdltwZXRlcl1dICAgfAorICAgICAgfCBwW3ZbcmlwcGxlXSx2W2pvc2hdLHZbbG9wXV0gICAgICAgICAgICB8CisgICAgICB8IHBbdltyaXBwbGVdLHZbam9zaF0sdlttYXJrb10sdlt2YWRhc11dIHwKKyAgICAgIHwgcFt2W3JpcHBsZV0sdltqb3NoXSx2W21hcmtvXV0gICAgICAgICAgfAorICAgICAgfCBwW3ZbcmlwcGxlXSx2W2pvc2hdXSAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltyaXBwbGVdXSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W3ZhZGFzXSx2W21hcmtvXSx2W2pvc2hdLHZbcmlwcGxlXV0gfAorICAgICAgfCBwW3ZbdmFkYXNdLHZbbWFya29dLHZbam9zaF1dICAgICAgICAgICB8CisgICAgICB8IHBbdlt2YWRhc10sdlttYXJrb10sdltsb3BdLHZbcGV0ZXJdXSAgIHwKKyAgICAgIHwgcFt2W3ZhZGFzXSx2W21hcmtvXSx2W2xvcF1dICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbdmFkYXNdLHZbbWFya29dXSAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdlt2YWRhc11dICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKworICBTY2VuYXJpbzogZ19WX3Nob3J0ZXN0UGF0aF9lZGdlc0luY2x1ZGVkCisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcud2l0aENvbXB1dGVyKCkuVigpLnNob3J0ZXN0UGF0aCgpLndpdGgoIn50aW5rZXJwb3Auc2hvcnRlc3RQYXRoLmluY2x1ZGVFZGdlcyIpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHVub3JkZXJlZAorICAgICAgfCByZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3Zbam9zaF0sZVtqb3NoLWNyZWF0ZWQtPmxvcF0sdltsb3BdLGVbcGV0ZXItY3JlYXRlZC0+bG9wXSx2W3BldGVyXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3Zbam9zaF0sZVtqb3NoLWNyZWF0ZWQtPmxvcF0sdltsb3BdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3Zbam9zaF0sZVtqb3NoLWNyZWF0ZWQtPnJpcHBsZV0sdltyaXBwbGVdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3Zbam9zaF0sZVttYXJrby1rbm93cy0+am9zaF0sdlttYXJrb10sZVttYXJrby1rbm93cy0+dmFkYXNdLHZbdmFkYXNdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3Zbam9zaF0sZVttYXJrby1rbm93cy0+am9zaF0sdlttYXJrb11dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3Zbam9zaF1dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbG9wXSxlW2pvc2gtY3JlYXRlZC0+bG9wXSx2W2pvc2hdLGVbam9zaC1jcmVhdGVkLT5yaXBwbGVdLHZbcmlwcGxlXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbG9wXSxlW2pvc2gtY3JlYXRlZC0+bG9wXSx2W2pvc2hdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbG9wXSxlW21hcmtvLWNyZWF0ZWQtPmxvcF0sdlttYXJrb10sZVttYXJrby1rbm93cy0+dmFkYXNdLHZbdmFkYXNdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbG9wXSxlW21hcmtvLWNyZWF0ZWQtPmxvcF0sdlttYXJrb11dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbG9wXSxlW3BldGVyLWNyZWF0ZWQtPmxvcF0sdltwZXRlcl1dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbG9wXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbWFya29dLGVbbWFya28tY3JlYXRlZC0+bG9wXSx2W2xvcF0sZVtwZXRlci1jcmVhdGVkLT5sb3BdLHZbcGV0ZXJdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbWFya29dLGVbbWFya28tY3JlYXRlZC0+bG9wXSx2W2xvcF1dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbWFya29dLGVbbWFya28ta25vd3MtPmpvc2hdLHZbam9zaF0sZVtqb3NoLWNyZWF0ZWQtPnJpcHBsZV0sdltyaXBwbGVdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbWFya29dLGVbbWFya28ta25vd3MtPmpvc2hdLHZbam9zaF1dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbWFya29dLGVbbWFya28ta25vd3MtPnZhZGFzXSx2W3ZhZGFzXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbWFya29dXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbcGV0ZXJdLGVbcGV0ZXItY3JlYXRlZC0+bG9wXSx2W2xvcF0sZVtqb3NoLWNyZWF0ZWQtPmxvcF0sdltqb3NoXSxlW2pvc2gtY3JlYXRlZC0+cmlwcGxlXSx2W3JpcHBsZV1dICAgfAorICAgICAgfCBwW3ZbcGV0ZXJdLGVbcGV0ZXItY3JlYXRlZC0+bG9wXSx2W2xvcF0sZVtqb3NoLWNyZWF0ZWQtPmxvcF0sdltqb3NoXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbcGV0ZXJdLGVbcGV0ZXItY3JlYXRlZC0+bG9wXSx2W2xvcF0sZVttYXJrby1jcmVhdGVkLT5sb3BdLHZbbWFya29dLGVbbWFya28ta25vd3MtPnZhZGFzXSx2W3ZhZGFzXV0gICAgfAorICAgICAgfCBwW3ZbcGV0ZXJdLGVbcGV0ZXItY3JlYXRlZC0+bG9wXSx2W2xvcF0sZVttYXJrby1jcmVhdGVkLT5sb3BdLHZbbWFya29dXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbcGV0ZXJdLGVbcGV0ZXItY3JlYXRlZC0+bG9wXSx2W2xvcF1dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbcGV0ZXJdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbcmlwcGxlXSxlW2pvc2gtY3JlYXRlZC0+cmlwcGxlXSx2W2pvc2hdLGVbam9zaC1jcmVhdGVkLT5sb3BdLHZbbG9wXSxlW3BldGVyLWNyZWF0ZWQtPmxvcF0sdltwZXRlcl1dICAgfAorICAgICAgfCBwW3ZbcmlwcGxlXSxlW2pvc2gtY3JlYXRlZC0+cmlwcGxlXSx2W2pvc2hdLGVbam9zaC1jcmVhdGVkLT5sb3BdLHZbbG9wXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbcmlwcGxlXSxlW2pvc2gtY3JlYXRlZC0+cmlwcGxlXSx2W2pvc2hdLGVbbWFya28ta25vd3MtPmpvc2hdLHZbbWFya29dLGVbbWFya28ta25vd3MtPnZhZGFzXSx2W3ZhZGFzXV0gfAorICAgICAgfCBwW3ZbcmlwcGxlXSxlW2pvc2gtY3JlYXRlZC0+cmlwcGxlXSx2W2pvc2hdLGVbbWFya28ta25vd3MtPmpvc2hdLHZbbWFya29dXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbcmlwcGxlXSxlW2pvc2gtY3JlYXRlZC0+cmlwcGxlXSx2W2pvc2hdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbcmlwcGxlXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbdmFkYXNdLGVbbWFya28ta25vd3MtPnZhZGFzXSx2W21hcmtvXSxlW21hcmtvLWNyZWF0ZWQtPmxvcF0sdltsb3BdLGVbcGV0ZXItY3JlYXRlZC0+bG9wXSx2W3BldGVyXV0gICAgfAorICAgICAgfCBwW3ZbdmFkYXNdLGVbbWFya28ta25vd3MtPnZhZGFzXSx2W21hcmtvXSxlW21hcmtvLWNyZWF0ZWQtPmxvcF0sdltsb3BdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbdmFkYXNdLGVbbWFya28ta25vd3MtPnZhZGFzXSx2W21hcmtvXSxlW21hcmtvLWtub3dzLT5qb3NoXSx2W2pvc2hdLGVbam9zaC1jcmVhdGVkLT5yaXBwbGVdLHZbcmlwcGxlXV0gfAorICAgICAgfCBwW3ZbdmFkYXNdLGVbbWFya28ta25vd3MtPnZhZGFzXSx2W21hcmtvXSxlW21hcmtvLWtub3dzLT5qb3NoXSx2W2pvc2hdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbdmFkYXNdLGVbbWFya28ta25vd3MtPnZhZGFzXSx2W21hcmtvXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbdmFkYXNdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorCisgIFNjZW5hcmlvOiBnX1Zfc2hvcnRlc3RQYXRoX2RpcmVjdGlvblhJTlgKKyAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAgICIiIgorICAgICAgZy53aXRoQ29tcHV0ZXIoKS5WKCkuc2hvcnRlc3RQYXRoKCkud2l0aCgifnRpbmtlcnBvcC5zaG9ydGVzdFBhdGguZWRnZXMiLCBEaXJlY3Rpb24uSU4pCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHVub3JkZXJlZAorICAgICAgfCByZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltqb3NoXSx2W21hcmtvXV0gICAgICAgICAgIHwKKyAgICAgIHwgcFt2W2pvc2hdXSAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbG9wXSx2W2pvc2hdXSAgICAgICAgICAgICB8CisgICAgICB8IHBbdltsb3BdLHZbbWFya29dXSAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W2xvcF0sdltwZXRlcl1dICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbG9wXV0gICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdlttYXJrb11dICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W3BldGVyXV0gICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbcmlwcGxlXSx2W2pvc2hdLHZbbWFya29dXSB8CisgICAgICB8IHBbdltyaXBwbGVdLHZbam9zaF1dICAgICAgICAgIHwKKyAgICAgIHwgcFt2W3JpcHBsZV1dICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbdmFkYXNdLHZbbWFya29dXSAgICAgICAgICB8CisgICAgICB8IHBbdlt2YWRhc11dICAgICAgICAgICAgICAgICAgIHwKKworICBTY2VuYXJpbzogZ19WX3Nob3J0ZXN0UGF0aF9lZGdlc1hvdXRFWAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLndpdGhDb21wdXRlcigpLlYoKS5zaG9ydGVzdFBhdGgoKS53aXRoKCJ+dGlua2VycG9wLnNob3J0ZXN0UGF0aC5lZGdlcyIsIF9fLm91dEUoKSkKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgICB8IHJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W2pvc2hdLHZbbG9wXV0gICAgICAgICAgICAgfAorICAgICAgfCBwW3Zbam9zaF0sdltyaXBwbGVdXSAgICAgICAgICB8CisgICAgICB8IHBbdltqb3NoXV0gICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W2xvcF1dICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbWFya29dLHZbam9zaF0sdltyaXBwbGVdXSB8CisgICAgICB8IHBbdlttYXJrb10sdltqb3NoXV0gICAgICAgICAgIHwKKyAgICAgIHwgcFt2W21hcmtvXSx2W2xvcF1dICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbWFya29dLHZbdmFkYXNdXSAgICAgICAgICB8CisgICAgICB8IHBbdlttYXJrb11dICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W3BldGVyXSx2W2xvcF1dICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbcGV0ZXJdXSAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltyaXBwbGVdXSAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W3ZhZGFzXV0gICAgICAgICAgICAgICAgICAgfAorCisgIFNjZW5hcmlvOiBnX1Zfc2hvcnRlc3RQYXRoX2VkZ2VzSW5jbHVkZWRfZWRnZXNYb3V0RVgKKyAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAgICIiIgorICAgICAgZy53aXRoQ29tcHV0ZXIoKS5WKCkuc2hvcnRlc3RQYXRoKCkuCisgICAgICAgICAgd2l0aCgifnRpbmtlcnBvcC5zaG9ydGVzdFBhdGguaW5jbHVkZUVkZ2VzIikuCisgICAgICAgICAgd2l0aCgifnRpbmtlcnBvcC5zaG9ydGVzdFBhdGguZWRnZXMiLCBfXy5vdXRFKCkpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHVub3JkZXJlZAorICAgICAgfCByZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltqb3NoXSxlW2pvc2gtY3JlYXRlZC0+bG9wXSx2W2xvcF1dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W2pvc2hdLGVbam9zaC1jcmVhdGVkLT5yaXBwbGVdLHZbcmlwcGxlXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3Zbam9zaF1dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltsb3BdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W21hcmtvXSxlW21hcmtvLWNyZWF0ZWQtPmxvcF0sdltsb3BdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbWFya29dLGVbbWFya28ta25vd3MtPmpvc2hdLHZbam9zaF0sZVtqb3NoLWNyZWF0ZWQtPnJpcHBsZV0sdltyaXBwbGVdXSB8CisgICAgICB8IHBbdlttYXJrb10sZVttYXJrby1rbm93cy0+am9zaF0sdltqb3NoXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W21hcmtvXSxlW21hcmtvLWtub3dzLT52YWRhc10sdlt2YWRhc11dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbWFya29dXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltwZXRlcl0sZVtwZXRlci1jcmVhdGVkLT5sb3BdLHZbbG9wXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W3BldGVyXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbcmlwcGxlXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdlt2YWRhc11dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKworICBTY2VuYXJpbzogZ19WX2hhc1huYW1lX21hcmtvWF9zaG9ydGVzdFBhdGgKKyAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAgICIiIgorICAgICAgZy53aXRoQ29tcHV0ZXIoKS5WKCkuaGFzKCJuYW1lIiwibWFya28iKS5zaG9ydGVzdFBhdGgoKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbWFya29dLHZbam9zaF0sdltyaXBwbGVdXSB8CisgICAgICB8IHBbdlttYXJrb10sdltqb3NoXV0gICAgICAgICAgIHwKKyAgICAgIHwgcFt2W21hcmtvXSx2W2xvcF0sdltwZXRlcl1dICAgfAorICAgICAgfCBwW3ZbbWFya29dLHZbbG9wXV0gICAgICAgICAgICB8CisgICAgICB8IHBbdlttYXJrb10sdlt2YWRhc11dICAgICAgICAgIHwKKyAgICAgIHwgcFt2W21hcmtvXV0gICAgICAgICAgICAgICAgICAgfAorCisgIFNjZW5hcmlvOiBnX1Zfc2hvcnRlc3RQYXRoX3RhcmdldFhoYXNYbmFtZV9tYXJrb1hYCisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcud2l0aENvbXB1dGVyKCkuVigpLnNob3J0ZXN0UGF0aCgpLndpdGgoIn50aW5rZXJwb3Auc2hvcnRlc3RQYXRoLnRhcmdldCIsIF9fLmhhcygibmFtZSIsIm1hcmtvIikpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHVub3JkZXJlZAorICAgICAgfCByZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltqb3NoXSx2W21hcmtvXV0gICAgICAgICAgIHwKKyAgICAgIHwgcFt2W2xvcF0sdlttYXJrb11dICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbWFya29dXSAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltwZXRlcl0sdltsb3BdLHZbbWFya29dXSAgIHwKKyAgICAgIHwgcFt2W3JpcHBsZV0sdltqb3NoXSx2W21hcmtvXV0gfAorICAgICAgfCBwW3ZbdmFkYXNdLHZbbWFya29dXSAgICAgICAgICB8CisKKyAgU2NlbmFyaW86IGdfVl9zaG9ydGVzdFBhdGhfdGFyZ2V0WHZhbHVlc1huYW1lWF9pc1htYXJrb1hYCisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcud2l0aENvbXB1dGVyKCkuVigpLnNob3J0ZXN0UGF0aCgpLndpdGgoIn50aW5rZXJwb3Auc2hvcnRlc3RQYXRoLnRhcmdldCIsIF9fLnZhbHVlcygibmFtZSIpLmlzKCJtYXJrbyIpKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3Zbam9zaF0sdlttYXJrb11dICAgICAgICAgICB8CisgICAgICB8IHBbdltsb3BdLHZbbWFya29dXSAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W21hcmtvXV0gICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbcGV0ZXJdLHZbbG9wXSx2W21hcmtvXV0gICB8CisgICAgICB8IHBbdltyaXBwbGVdLHZbam9zaF0sdlttYXJrb11dIHwKKyAgICAgIHwgcFt2W3ZhZGFzXSx2W21hcmtvXV0gICAgICAgICAgfAorCisgIFNjZW5hcmlvOiBnX1ZfaGFzWG5hbWVfbWFya29YX3Nob3J0ZXN0UGF0aF90YXJnZXRYaGFzTGFiZWxYc29mdHdhcmVYWAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLndpdGhDb21wdXRlcigpLlYoKS5oYXMoIm5hbWUiLCJtYXJrbyIpLnNob3J0ZXN0UGF0aCgpLndpdGgoIn50aW5rZXJwb3Auc2hvcnRlc3RQYXRoLnRhcmdldCIsIF9fLmhhc0xhYmVsKCJzb2Z0d2FyZSIpKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbWFya29dLHZbam9zaF0sdltyaXBwbGVdXSB8CisgICAgICB8IHBbdlttYXJrb10sdltsb3BdXSAgICAgICAgICAgIHwKKworICBTY2VuYXJpbzogZ19WX2hhc1huYW1lX21hcmtvWF9zaG9ydGVzdFBhdGhfdGFyZ2V0WGhhc1huYW1lX2pvc2hYWF9kaXN0YW5jZVh3ZWlnaHRYCisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcud2l0aENvbXB1dGVyKCkuVigpLmhhcygibmFtZSIsIm1hcmtvIikuc2hvcnRlc3RQYXRoKCkuCisgICAgICAgICAgd2l0aCgifnRpbmtlcnBvcC5zaG9ydGVzdFBhdGgudGFyZ2V0IiwgX18uaGFzKCJuYW1lIiwiam9zaCIpKS4KKyAgICAgICAgICB3aXRoKCJ+dGlua2VycG9wLnNob3J0ZXN0UGF0aC5kaXN0YW5jZSIsICJ3ZWlnaHQiKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0ICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbWFya29dLHZbbG9wXSx2W2pvc2hdXSB8CisKKyAgU2NlbmFyaW86IGdfVl9oYXNYbmFtZV9kYW5pZWxYX3Nob3J0ZXN0UGF0aF90YXJnZXRYaGFzWG5hbWVfc3RlcGhlblhYX2VkZ2VzWGJvdGhFWHVzZXNYWAorICAgIEdpdmVuIHRoZSBjcmV3IGdyYXBoCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAgICIiIgorICAgICAgZy53aXRoQ29tcHV0ZXIoKS5WKCkuaGFzKCJuYW1lIiwiZGFuaWVsIikuc2hvcnRlc3RQYXRoKCkuCisgICAgICAgICAgd2l0aCgifnRpbmtlcnBvcC5zaG9ydGVzdFBhdGgudGFyZ2V0IiwgX18uaGFzKCJuYW1lIiwic3RlcGhlbiIpKS4KKyAgICAgICAgICB3aXRoKCJ+dGlua2VycG9wLnNob3J0ZXN0UGF0aC5lZGdlcyIsIF9fLmJvdGhFKCJ1c2VzIikpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHVub3JkZXJlZAorICAgICAgfCByZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8IHBbdltkYW5pZWxdLHZbZ3JlbWxpbl0sdltzdGVwaGVuXV0gICAgIHwKKyAgICAgIHwgcFt2W2RhbmllbF0sdlt0aW5rZXJncmFwaF0sdltzdGVwaGVuXV0gfAorCisgIFNjZW5hcmlvOiBnX1ZfaGFzWHNvbmdfbmFtZV9NSUdIVF9BU19XRUxMWF9zaG9ydGVzdFBhdGhfdGFyZ2V0WGhhc1hzb25nX25hbWVfTUFZQkVfWU9VX0tOT1dfSE9XX0lfRkVFTFhYX2VkZ2VzWG91dEVYZm9sbG93ZWRCeVhYX2Rpc3RhbmNlWHdlaWdodFgKKyAgICBHaXZlbiB0aGUgZ3JhdGVmdWwgZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLndpdGhDb21wdXRlcigpLlYoKS5oYXMoInNvbmciLCJuYW1lIiwiTUlHSFQgQVMgV0VMTCIpLgorICAgICAgICBzaG9ydGVzdFBhdGgoKS4KKyAgICAgICAgICB3aXRoKCJ+dGlua2VycG9wLnNob3J0ZXN0UGF0aC50YXJnZXQiLCBfXy5oYXMoInNvbmciLCJuYW1lIiwiTUFZQkUgWU9VIEtOT1cgSE9XIEkgRkVFTCIpKS4KKyAgICAgICAgICB3aXRoKCJ+dGlua2VycG9wLnNob3J0ZXN0UGF0aC5lZGdlcyIsIF9fLm91dEUoImZvbGxvd2VkQnkiKSkuCisgICAgICAgICAgd2l0aCgifnRpbmtlcnBvcC5zaG9ydGVzdFBhdGguZGlzdGFuY2UiLCAid2VpZ2h0IikKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgICB8IHJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W01JR0hUIEFTIFdFTExdLHZbRFJVTVNdLHZbTUFZQkUgWU9VIEtOT1cgSE9XIEkgRkVFTF1dICAgICAgICAgfAorICAgICAgfCBwW3ZbTUlHSFQgQVMgV0VMTF0sdltTSElQIE9GIEZPT0xTXSx2W01BWUJFIFlPVSBLTk9XIEhPVyBJIEZFRUxdXSB8CisKKyAgU2NlbmFyaW86IGdfVl9oYXNYbmFtZV9tYXJrb1hfc2hvcnRlc3RQYXRoX21heERpc3RhbmNlWDFYCisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcud2l0aENvbXB1dGVyKCkuVigpLmhhcygibmFtZSIsIm1hcmtvIikuc2hvcnRlc3RQYXRoKCkud2l0aCgifnRpbmtlcnBvcC5zaG9ydGVzdFBhdGgubWF4RGlzdGFuY2UiLCAxKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0ICAgICAgICAgICAgICAgfAorICAgICAgfCBwW3ZbbWFya29dLHZbam9zaF1dICB8CisgICAgICB8IHBbdlttYXJrb10sdltsb3BdXSAgIHwKKyAgICAgIHwgcFt2W21hcmtvXSx2W3ZhZGFzXV0gfAorICAgICAgfCBwW3ZbbWFya29dXSAgICAgICAgICB8CisKKyAgU2NlbmFyaW86IGdfVl9oYXNYbmFtZV92YWRhc1hfc2hvcnRlc3RQYXRoX2Rpc3RhbmNlWHdlaWdodFhfbWF4RGlzdGFuY2VYMV8zWAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLndpdGhDb21wdXRlcigpLlYoKS5oYXMoIm5hbWUiLCJ2YWRhcyIpLnNob3J0ZXN0UGF0aCgpLgorICAgICAgICAgIHdpdGgoIn50aW5rZXJwb3Auc2hvcnRlc3RQYXRoLmRpc3RhbmNlIiwgIndlaWdodCIpLgorICAgICAgICAgIHdpdGgoIn50aW5rZXJwb3Auc2hvcnRlc3RQYXRoLm1heERpc3RhbmNlIiwgMS4zKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W3ZhZGFzXSx2W21hcmtvXSx2W2xvcF0sdltqb3NoXV0gIHwKKyAgICAgIHwgcFt2W3ZhZGFzXSx2W21hcmtvXSx2W2xvcF0sdltwZXRlcl1dIHwKKyAgICAgIHwgcFt2W3ZhZGFzXSx2W21hcmtvXSx2W2xvcF1dICAgICAgICAgIHwKKyAgICAgIHwgcFt2W3ZhZGFzXSx2W21hcmtvXV0gICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgcFt2W3ZhZGFzXV0gICAgICAgICAgICAgICAgICAgICAgICAgIHwKZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9tYXAvU3VtLmZlYXR1cmUgYi9ncmVtbGluLXRlc3QvZmVhdHVyZXMvbWFwL1N1bS5mZWF0dXJlCmluZGV4IDJjODk5NDYuLjBlMjAzNjggMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9tYXAvU3VtLmZlYXR1cmUKKysrIGIvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL21hcC9TdW0uZmVhdHVyZQpAQCAtMTcsNyArMTcsNyBAQAogCiBGZWF0dXJlOiBTdGVwIC0gc3VtKCkKIAotICBTY2VuYXJpbzogZ19WX3ZhbHVlc1hhZ2VYX3N1bQorICBTY2VuYXJpbzogZ19WX2FnZV9zdW0KICAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCiAgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKICAgICAgICIiIgpAQCAtMjgsNiArMjgsMzUgQEAKICAgICAgIHwgcmVzdWx0IHwKICAgICAgIHwgZFsxMjNdLmwgfAogCisgIFNjZW5hcmlvOiBnX1ZfZm9vX3N1bQorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLlYoKS52YWx1ZXMoImZvbyIpLnN1bSgpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIGVtcHR5CisKKyAgU2NlbmFyaW86IGdfVl9hZ2VfZm9sZF9zdW1YbG9jYWxYCisgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAorICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCisgICAgICAiIiIKKyAgICAgIGcuVigpLnZhbHVlcygiYWdlIikuZm9sZCgpLnN1bShTY29wZS5sb2NhbCkKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgICB8IHJlc3VsdCB8CisgICAgICB8IGRbMTIzXS5pIHwKKworICBTY2VuYXJpbzogZ19WX2Zvb19mb2xkX3N1bVhsb2NhbFgKKyAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAgICIiIgorICAgICAgZy5WKCkudmFsdWVzKCJmb28iKS5mb2xkKCkuc3VtKFNjb3BlLmxvY2FsKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSBlbXB0eQorCiAgIFNjZW5hcmlvOiBnX1ZfaGFzTGFiZWxYc29mdHdhcmVYX2dyb3VwX2J5WG5hbWVYX2J5WGJvdGhFX3dlaWdodF9zdW1YCiAgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAogICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCkBAIC0zNyw0ICs2Niw0IEBACiAgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CiAgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKICAgICAgIHwgcmVzdWx0IHwKLSAgICAgIHwgbVt7InJpcHBsZSI6ImRbMS4wXS5kIiwibG9wIjoiZFsxLjBdLmQifV0gfApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKyAgICAgIHwgbVt7InJpcHBsZSI6ImRbMS4wXS5kIiwibG9wIjoiZFsxLjBdLmQifV0gfApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL21hcC9WYWx1ZU1hcC5mZWF0dXJlIGIvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL21hcC9WYWx1ZU1hcC5mZWF0dXJlCmluZGV4IDEwOTMxOGYuLjgyYWFmZmQgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9tYXAvVmFsdWVNYXAuZmVhdHVyZQorKysgYi9ncmVtbGluLXRlc3QvZmVhdHVyZXMvbWFwL1ZhbHVlTWFwLmZlYXR1cmUKQEAgLTQ5LDYgKzQ5LDIyIEBACiAgICAgICB8IG1beyJ0W2lkXSI6ICJ2W2xvcF0uaWQiLCAidFtsYWJlbF0iOiAic29mdHdhcmUiLCAibmFtZSI6IFsibG9wIl0sICJsYW5nIjogWyJqYXZhIl19XSB8CiAgICAgICB8IG1beyJ0W2lkXSI6ICJ2W3JpcHBsZV0uaWQiLCAidFtsYWJlbF0iOiAic29mdHdhcmUiLCAibmFtZSI6IFsicmlwcGxlIl0sICJsYW5nIjogWyJqYXZhIl19XSB8CiAKKyAgU2NlbmFyaW86IGdfVl92YWx1ZU1hcF93aXRoWHRva2Vuc1gKKyAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAgICIiIgorICAgICAgZy5WKCkudmFsdWVNYXAoKS53aXRoKFdpdGhPcHRpb25zLnRva2VucykKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgICB8IHJlc3VsdCB8CisgICAgICB8IG1beyJ0W2lkXSI6ICJ2W21hcmtvXS5pZCIsICJ0W2xhYmVsXSI6ICJwZXJzb24iLCAibmFtZSI6IFsibWFya28iXSwgImFnZSI6IFsyOV19XSB8CisgICAgICB8IG1beyJ0W2lkXSI6ICJ2W2pvc2hdLmlkIiwgInRbbGFiZWxdIjogInBlcnNvbiIsICJuYW1lIjogWyJqb3NoIl0sICJhZ2UiOiBbMzJdfV0gfAorICAgICAgfCBtW3sidFtpZF0iOiAidltwZXRlcl0uaWQiLCAidFtsYWJlbF0iOiAicGVyc29uIiwgIm5hbWUiOiBbInBldGVyIl0sICJhZ2UiOiBbMzVdfV0gfAorICAgICAgfCBtW3sidFtpZF0iOiAidlt2YWRhc10uaWQiLCAidFtsYWJlbF0iOiAicGVyc29uIiwgIm5hbWUiOiBbInZhZGFzIl0sICJhZ2UiOiBbMjddfV0gfAorICAgICAgfCBtW3sidFtpZF0iOiAidltsb3BdLmlkIiwgInRbbGFiZWxdIjogInNvZnR3YXJlIiwgIm5hbWUiOiBbImxvcCJdLCAibGFuZyI6IFsiamF2YSJdfV0gfAorICAgICAgfCBtW3sidFtpZF0iOiAidltyaXBwbGVdLmlkIiwgInRbbGFiZWxdIjogInNvZnR3YXJlIiwgIm5hbWUiOiBbInJpcHBsZSJdLCAibGFuZyI6IFsiamF2YSJdfV0gfAorCiAgIFNjZW5hcmlvOiBnX1ZfdmFsdWVNYXBYbmFtZV9hZ2VYCiAgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAogICAgIEFuZCB0aGUgdHJhdmVyc2FsIG9mCkBAIC04MSw2ICs5NywzOCBAQAogICAgICAgfCBtW3sidFtpZF0iOiAidltsb3BdLmlkIiwgInRbbGFiZWxdIjogInNvZnR3YXJlIiwgIm5hbWUiOiBbImxvcCJdfV0gfAogICAgICAgfCBtW3sidFtpZF0iOiAidltyaXBwbGVdLmlkIiwgInRbbGFiZWxdIjogInNvZnR3YXJlIiwgIm5hbWUiOiBbInJpcHBsZSJdfV0gfAogCisgIFNjZW5hcmlvOiBnX1ZfdmFsdWVNYXBYbmFtZV9hZ2VYX3dpdGhYdG9rZW5zWAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLlYoKS52YWx1ZU1hcCgibmFtZSIsICJhZ2UiKS53aXRoKFdpdGhPcHRpb25zLnRva2VucykKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgICB8IHJlc3VsdCB8CisgICAgICB8IG1beyJ0W2lkXSI6ICJ2W21hcmtvXS5pZCIsICJ0W2xhYmVsXSI6ICJwZXJzb24iLCAibmFtZSI6IFsibWFya28iXSwgImFnZSI6IFsyOV19XSB8CisgICAgICB8IG1beyJ0W2lkXSI6ICJ2W2pvc2hdLmlkIiwgInRbbGFiZWxdIjogInBlcnNvbiIsICJuYW1lIjogWyJqb3NoIl0sICJhZ2UiOiBbMzJdfV0gfAorICAgICAgfCBtW3sidFtpZF0iOiAidltwZXRlcl0uaWQiLCAidFtsYWJlbF0iOiAicGVyc29uIiwgIm5hbWUiOiBbInBldGVyIl0sICJhZ2UiOiBbMzVdfV0gfAorICAgICAgfCBtW3sidFtpZF0iOiAidlt2YWRhc10uaWQiLCAidFtsYWJlbF0iOiAicGVyc29uIiwgIm5hbWUiOiBbInZhZGFzIl0sICJhZ2UiOiBbMjddfV0gfAorICAgICAgfCBtW3sidFtpZF0iOiAidltsb3BdLmlkIiwgInRbbGFiZWxdIjogInNvZnR3YXJlIiwgIm5hbWUiOiBbImxvcCJdfV0gfAorICAgICAgfCBtW3sidFtpZF0iOiAidltyaXBwbGVdLmlkIiwgInRbbGFiZWxdIjogInNvZnR3YXJlIiwgIm5hbWUiOiBbInJpcHBsZSJdfV0gfAorCisgIFNjZW5hcmlvOiBnX1ZfdmFsdWVNYXBYbmFtZV9hZ2VYX3dpdGhYdG9rZW5zX2xhYmVsc1hfYnlYdW5mb2xkWAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLlYoKS52YWx1ZU1hcCgibmFtZSIsICJhZ2UiKS53aXRoKFdpdGhPcHRpb25zLnRva2VucywgV2l0aE9wdGlvbnMubGFiZWxzKS5ieShfXy51bmZvbGQoKSkKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgICB8IHJlc3VsdCB8CisgICAgICB8IG1beyJ0W2xhYmVsXSI6ICJwZXJzb24iLCAibmFtZSI6ICJtYXJrbyIsICJhZ2UiOiAyOX1dIHwKKyAgICAgIHwgbVt7InRbbGFiZWxdIjogInBlcnNvbiIsICJuYW1lIjogImpvc2giLCAiYWdlIjogMzJ9XSB8CisgICAgICB8IG1beyJ0W2xhYmVsXSI6ICJwZXJzb24iLCAibmFtZSI6ICJwZXRlciIsICJhZ2UiOiAzNX1dIHwKKyAgICAgIHwgbVt7InRbbGFiZWxdIjogInBlcnNvbiIsICJuYW1lIjogInZhZGFzIiwgImFnZSI6IDI3fV0gfAorICAgICAgfCBtW3sidFtsYWJlbF0iOiAic29mdHdhcmUiLCAibmFtZSI6ICJsb3AifV0gfAorICAgICAgfCBtW3sidFtsYWJlbF0iOiAic29mdHdhcmUiLCAibmFtZSI6ICJyaXBwbGUifV0gfAorCiAgIFNjZW5hcmlvOiBnX1ZYMVhfb3V0WGNyZWF0ZWRYX3ZhbHVlTWFwCiAgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaAogICAgIEFuZCB1c2luZyB0aGUgcGFyYW1ldGVyIHYxSWQgZGVmaW5lZCBhcyAidlttYXJrb10uaWQiCkBAIC0xMDQsNCArMTUyLDMwIEBACiAgICAgICB8IHJlc3VsdCB8CiAgICAgICB8IG1beyJuYW1lIjogWyJtYXJrbyJdLCAiYWdlIjogWzI5XSwgInRbbGFiZWxdIjoicGVyc29uIiwgInRbaWRdIjoidlttYXJrb10uaWQifV0gfAogICAgICAgfCBtW3sibmFtZSI6IFsiam9zaCJdLCAiYWdlIjogWzMyXSwgInRbbGFiZWxdIjoicGVyc29uIiwgInRbaWRdIjoidltqb3NoXS5pZCJ9XSB8Ci0gICAgICB8IG1beyJuYW1lIjogWyJwZXRlciJdLCAiYWdlIjogWzM1XSwgInRbbGFiZWxdIjoicGVyc29uIiwgInRbaWRdIjoidltwZXRlcl0uaWQifV0gfApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKyAgICAgIHwgbVt7Im5hbWUiOiBbInBldGVyIl0sICJhZ2UiOiBbMzVdLCAidFtsYWJlbF0iOiJwZXJzb24iLCAidFtpZF0iOiJ2W3BldGVyXS5pZCJ9XSB8CisKKyAgU2NlbmFyaW86IGdfVl9oYXNMYWJlbFhwZXJzb25YX2ZpbHRlclhvdXRFWGNyZWF0ZWRYWF92YWx1ZU1hcF93aXRoWHRva2Vuc1gKKyAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAgICIiIgorICAgICAgZy5WKCkuaGFzTGFiZWwoInBlcnNvbiIpLmZpbHRlcihfXy5vdXRFKCJjcmVhdGVkIikpLnZhbHVlTWFwKCkud2l0aChXaXRoT3B0aW9ucy50b2tlbnMpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHVub3JkZXJlZAorICAgICAgfCByZXN1bHQgfAorICAgICAgfCBtW3sibmFtZSI6IFsibWFya28iXSwgImFnZSI6IFsyOV0sICJ0W2xhYmVsXSI6InBlcnNvbiIsICJ0W2lkXSI6InZbbWFya29dLmlkIn1dIHwKKyAgICAgIHwgbVt7Im5hbWUiOiBbImpvc2giXSwgImFnZSI6IFszMl0sICJ0W2xhYmVsXSI6InBlcnNvbiIsICJ0W2lkXSI6InZbam9zaF0uaWQifV0gfAorICAgICAgfCBtW3sibmFtZSI6IFsicGV0ZXIiXSwgImFnZSI6IFszNV0sICJ0W2xhYmVsXSI6InBlcnNvbiIsICJ0W2lkXSI6InZbcGV0ZXJdLmlkIn1dIHwKKworICBTY2VuYXJpbzogZ19WWDFYX3ZhbHVlTWFwWG5hbWVfbG9jYXRpb25YX2J5WHVuZm9sZFhfYnkKKyAgICBHaXZlbiB0aGUgY3JldyBncmFwaAorICAgIEFuZCB1c2luZyB0aGUgcGFyYW1ldGVyIHYxSWQgZGVmaW5lZCBhcyAidlttYXJrb10uaWQiCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAgICIiIgorICAgICAgZy5WKHYxSWQpLnZhbHVlTWFwKCJuYW1lIiwgImxvY2F0aW9uIikuYnkoX18udW5mb2xkKCkpLmJ5KCkKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgICB8IHJlc3VsdCB8CisgICAgICB8IG1beyJuYW1lIjogIm1hcmtvIiwgImxvY2F0aW9uIjogWyJzYW4gZGllZ28iLCAic2FudGEgY3J1eiIsICJicnVzc2VscyIsICJzYW50YSBmZSJdfV0gfAorCmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3QvZmVhdHVyZXMvc2lkZUVmZmVjdC9BZ2dyZWdhdGUuZmVhdHVyZSBiL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9zaWRlRWZmZWN0L0FnZ3JlZ2F0ZS5mZWF0dXJlCmluZGV4IDJhYjM1ZWYuLjJlODA5OTAgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9zaWRlRWZmZWN0L0FnZ3JlZ2F0ZS5mZWF0dXJlCisrKyBiL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9zaWRlRWZmZWN0L0FnZ3JlZ2F0ZS5mZWF0dXJlCkBAIC0zMyw2ICszMywyMiBAQAogICAgICAgfCB2YWRhcyB8CiAgICAgICB8IHJpcHBsZSB8CiAKKyAgU2NlbmFyaW86IGdfVl92YWx1ZVhuYW1lWF9hZ2dyZWdhdGVYZ2xvYmFsX3hYX2NhcFh4WAorICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLlYoKS52YWx1ZXMoIm5hbWUiKS5hZ2dyZWdhdGUoU2NvcGUuZ2xvYmFsLCJ4IikuY2FwKCJ4IikKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgbmV4dAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgICB8IHJlc3VsdCB8CisgICAgICB8IG1hcmtvIHwKKyAgICAgIHwgam9zaCB8CisgICAgICB8IHBldGVyIHwKKyAgICAgIHwgbG9wIHwKKyAgICAgIHwgdmFkYXMgfAorICAgICAgfCByaXBwbGUgfAorCiAgIFNjZW5hcmlvOiBnX1ZfYWdncmVnYXRlWHhYX2J5WG5hbWVYX2NhcFh4WAogICAgIEdpdmVuIHRoZSBtb2Rlcm4gZ3JhcGgKICAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgpAQCAtNzcsNCArOTMsNzQgQEAKICAgICAgIHwgZFsyOV0uaSB8CiAgICAgICB8IGRbMjddLmkgfAogICAgICAgfCBkWzMyXS5pIHwKLSAgICAgIHwgZFszNV0uaSB8ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorICAgICAgfCBkWzM1XS5pIHwKKworICBTY2VuYXJpbzogZ19WX2FnZ3JlZ2F0ZVhsb2NhbF9hX25hbWVYX291dF9jYXBYYVgKKyAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAgICIiIgorICAgICAgZy5WKCkuYWdncmVnYXRlKFNjb3BlLmxvY2FsLCJhIikuYnkoIm5hbWUiKS5vdXQoKS5jYXAoImEiKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCBuZXh0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKKyAgICAgIHwgcmVzdWx0IHwKKyAgICAgIHwgbWFya28gfAorICAgICAgfCB2YWRhcyB8CisgICAgICB8IGxvcCB8CisgICAgICB8IGpvc2ggfAorICAgICAgfCByaXBwbGUgfAorICAgICAgfCBwZXRlciAgfAorCisgIFNjZW5hcmlvOiBnX1ZYMVhfYWdncmVnYXRlWGxvY2FsX2FYX2J5WG5hbWVYX291dF9hZ2dyZWdhdGVYbG9jYWxfYVhfYnlYbmFtZVhfbmFtZV9jYXBYYVgKKyAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCisgICAgQW5kIHVzaW5nIHRoZSBwYXJhbWV0ZXIgdjFJZCBkZWZpbmVkIGFzICJ2W21hcmtvXS5pZCIKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLlYodjFJZCkuYWdncmVnYXRlKFNjb3BlLmxvY2FsLCJhIikuYnkoIm5hbWUiKS5vdXQoKS5hZ2dyZWdhdGUoU2NvcGUubG9jYWwsImEiKS5ieSgibmFtZSIpLnZhbHVlcygibmFtZSIpLmNhcCgiYSIpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIG5leHQKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHVub3JkZXJlZAorICAgICAgfCByZXN1bHQgfAorICAgICAgfCBtYXJrbyB8CisgICAgICB8IHZhZGFzIHwKKyAgICAgIHwgbG9wIHwKKyAgICAgIHwgam9zaCB8CisKKyAgU2NlbmFyaW86IGdfd2l0aFNpZGVFZmZlY3RYYV9zZXRYX1ZfYm90aF9uYW1lX2FnZ3JlZ2F0ZVhsb2NhbF9hWF9jYXBYYVgKKyAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCisgICAgQW5kIHVzaW5nIHRoZSBwYXJhbWV0ZXIgaW5pdGlhbCBkZWZpbmVkIGFzICJzW10iCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAgICIiIgorICAgICAgZy53aXRoU2lkZUVmZmVjdCgiYSIsIGluaXRpYWwpLlYoKS5ib3RoKCkudmFsdWVzKCJuYW1lIikuYWdncmVnYXRlKFNjb3BlLmxvY2FsLCJhIikuY2FwKCJhIikKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgbmV4dAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgICB8IHJlc3VsdCB8CisgICAgICB8IG1hcmtvIHwKKyAgICAgIHwgdmFkYXMgfAorICAgICAgfCBsb3AgfAorICAgICAgfCBqb3NoIHwKKyAgICAgIHwgcmlwcGxlIHwKKyAgICAgIHwgcGV0ZXIgIHwKKworICBTY2VuYXJpbzogZ19WX2FnZ3JlZ2F0ZVhsb2NhbF9hWF9ieVhvdXRFWGNyZWF0ZWRYX2NvdW50WF9vdXRfb3V0X2FnZ3JlZ2F0ZVhsb2NhbF9hWF9ieVhpbkVYY3JlYXRlZFhfd2VpZ2h0X3N1bVgKKyAgICBHaXZlbiB0aGUgbW9kZXJuIGdyYXBoCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAgICIiIgorICAgICAgZy5WKCkuYWdncmVnYXRlKFNjb3BlLmxvY2FsLCJhIikuCisgICAgICAgICAgICAgYnkoX18ub3V0RSgiY3JlYXRlZCIpLmNvdW50KCkpLgorICAgICAgICBvdXQoKS5vdXQoKS5hZ2dyZWdhdGUoU2NvcGUubG9jYWwsImEiKS4KKyAgICAgICAgICAgICAgICAgICAgICBieShfXy5pbkUoImNyZWF0ZWQiKS52YWx1ZXMoIndlaWdodCIpLnN1bSgpKS4KKyAgICAgICAgY2FwKCJhIikKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgbmV4dAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCisgICAgICB8IHJlc3VsdCB8CisgICAgICB8IGRbMV0ubCB8CisgICAgICB8IGRbMV0ubCB8CisgICAgICB8IGRbMF0ubCB8CisgICAgICB8IGRbMF0ubCB8CisgICAgICB8IGRbMF0ubCB8CisgICAgICB8IGRbMl0ubCB8CisgICAgICB8IGRbMS4wXS5kIHwKKyAgICAgIHwgZFsxLjBdLmQgfApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9zaWRlRWZmZWN0L0dyb3VwLmZlYXR1cmUgYi9ncmVtbGluLXRlc3QvZmVhdHVyZXMvc2lkZUVmZmVjdC9Hcm91cC5mZWF0dXJlCmluZGV4IGQzODNhODMuLmU2OWI0NDcgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9zaWRlRWZmZWN0L0dyb3VwLmZlYXR1cmUKKysrIGIvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL3NpZGVFZmZlY3QvR3JvdXAuZmVhdHVyZQpAQCAtMTAzLDcgKzEwMyw3IEBACiAgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CiAgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSB1bm9yZGVyZWQKICAgICAgIHwgcmVzdWx0IHwKLSAgICAgIHwgbVt7InNvZnR3YXJlIjoiZFswXS5pIiwgInBlcnNvbiI6ImRbMy41XS5kIn1dIHwKKyAgICAgIHwgbVt7InBlcnNvbiI6ImRbMy41XS5kIn1dIHwKIAogICBTY2VuYXJpbzogZ19WX3JlcGVhdFhib3RoWGZvbGxvd2VkQnlYWF90aW1lc1gyWF9ncm91cF9ieVhzb25nVHlwZVhfYnlYY291bnRYCiAgICAgR2l2ZW4gdGhlIGdyYXRlZnVsIGdyYXBoCkBAIC0yMDQsNyArMjA0LDcgQEAKICAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKICAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHVub3JkZXJlZAogICAgICAgfCByZXN1bHQgfAotICAgICAgfCBtW3siY292ZXIiOnsiZm9sbG93ZWRCeSI6ImRbNzc3OTgyXS5sIiwgInN1bmdCeSI6ImRbMF0uaSIsICJ3cml0dGVuQnkiOiJkWzBdLmkifSwgIiI6eyJmb2xsb3dlZEJ5IjoiZFsxNzkzNTBdLmwifSwgIm9yaWdpbmFsIjp7ImZvbGxvd2VkQnkiOiJkWzIxODU2MTNdLmwiLCAic3VuZ0J5IjoiZFswXS5pIiwgIndyaXR0ZW5CeSI6ImRbMF0uaSJ9fV0gfAorICAgICAgfCBtW3siY292ZXIiOnsiZm9sbG93ZWRCeSI6ImRbNzc3OTgyXS5sIn0sICIiOnsiZm9sbG93ZWRCeSI6ImRbMTc5MzUwXS5sIn0sICJvcmlnaW5hbCI6eyJmb2xsb3dlZEJ5IjoiZFsyMTg1NjEzXS5sIn19XSB8CiAKICAgU2NlbmFyaW86IGdfVl9ncm91cFhtWF9ieVhuYW1lWF9ieVhpblhrbm93c1hfbmFtZVhfY2FwWG1YCiAgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL3NpZGVFZmZlY3QvUmVhZC5mZWF0dXJlIGIvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL3NpZGVFZmZlY3QvUmVhZC5mZWF0dXJlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlOTYxMDIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRlc3QvZmVhdHVyZXMvc2lkZUVmZmVjdC9SZWFkLmZlYXR1cmUKQEAgLTAsMCArMSw4NCBAQAorIyBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisjIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorIyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorIyByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisjIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorIyB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisjCisjIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorIworIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisjIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisjICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorIyBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyMgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworIyB1bmRlciB0aGUgTGljZW5zZS4KKworRmVhdHVyZTogU3RlcCAtIHJlYWQoKQorCisgIFNjZW5hcmlvOiBnX2lvX3JlYWRYa3J5b1gKKyAgICBHaXZlbiB0aGUgZW1wdHkgZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLmlvKCJkYXRhL3RpbmtlcnBvcC1tb2Rlcm4ua3J5byIpLnJlYWQoKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSBlbXB0eQorICAgIEFuZCB0aGUgZ3JhcGggc2hvdWxkIHJldHVybiA2IGZvciBjb3VudCBvZiAiZy5WKCkiCisgICAgQW5kIHRoZSBncmFwaCBzaG91bGQgcmV0dXJuIDYgZm9yIGNvdW50IG9mICJnLkUoKSIKKworICBTY2VuYXJpbzogZ19pb19yZWFkX3dpdGhYcmVhZGVyX2dyeW9YCisgICAgR2l2ZW4gdGhlIGVtcHR5IGdyYXBoCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAgICIiIgorICAgICAgZy5pbygiZGF0YS90aW5rZXJwb3AtbW9kZXJuLmtyeW8iKS53aXRoKElPLnJlYWRlciwgSU8uZ3J5bykucmVhZCgpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIGVtcHR5CisgICAgQW5kIHRoZSBncmFwaCBzaG91bGQgcmV0dXJuIDYgZm9yIGNvdW50IG9mICJnLlYoKSIKKyAgICBBbmQgdGhlIGdyYXBoIHNob3VsZCByZXR1cm4gNiBmb3IgY291bnQgb2YgImcuRSgpIgorCisgIFNjZW5hcmlvOiBnX2lvX3JlYWRYZ3JhcGhzb25YCisgICAgR2l2ZW4gdGhlIGVtcHR5IGdyYXBoCisgICAgQW5kIHRoZSB0cmF2ZXJzYWwgb2YKKyAgICAgICIiIgorICAgICAgZy5pbygiZGF0YS90aW5rZXJwb3AtbW9kZXJuLmpzb24iKS5yZWFkKCkKKyAgICAgICIiIgorICAgIFdoZW4gaXRlcmF0ZWQgdG8gbGlzdAorICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgZW1wdHkKKyAgICBBbmQgdGhlIGdyYXBoIHNob3VsZCByZXR1cm4gNiBmb3IgY291bnQgb2YgImcuVigpIgorICAgIEFuZCB0aGUgZ3JhcGggc2hvdWxkIHJldHVybiA2IGZvciBjb3VudCBvZiAiZy5FKCkiCisKKyAgU2NlbmFyaW86IGdfaW9fcmVhZF93aXRoWHJlYWRlcl9ncmFwaHNvblgKKyAgICBHaXZlbiB0aGUgZW1wdHkgZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLmlvKCJkYXRhL3RpbmtlcnBvcC1tb2Rlcm4uanNvbiIpLndpdGgoSU8ucmVhZGVyLCBJTy5ncmFwaHNvbikucmVhZCgpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIGVtcHR5CisgICAgQW5kIHRoZSBncmFwaCBzaG91bGQgcmV0dXJuIDYgZm9yIGNvdW50IG9mICJnLlYoKSIKKyAgICBBbmQgdGhlIGdyYXBoIHNob3VsZCByZXR1cm4gNiBmb3IgY291bnQgb2YgImcuRSgpIgorCisgIFNjZW5hcmlvOiBnX2lvX3JlYWRYZ3JhcGhtbFgKKyAgICBHaXZlbiB0aGUgZW1wdHkgZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLmlvKCJkYXRhL3RpbmtlcnBvcC1tb2Rlcm4ueG1sIikucmVhZCgpCisgICAgICAiIiIKKyAgICBXaGVuIGl0ZXJhdGVkIHRvIGxpc3QKKyAgICBUaGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIGVtcHR5CisgICAgQW5kIHRoZSBncmFwaCBzaG91bGQgcmV0dXJuIDYgZm9yIGNvdW50IG9mICJnLlYoKSIKKyAgICBBbmQgdGhlIGdyYXBoIHNob3VsZCByZXR1cm4gNiBmb3IgY291bnQgb2YgImcuRSgpIgorCisgIFNjZW5hcmlvOiBnX2lvX3JlYWRfd2l0aFhyZWFkZXJfZ3JhcGhtbFgKKyAgICBHaXZlbiB0aGUgZW1wdHkgZ3JhcGgKKyAgICBBbmQgdGhlIHRyYXZlcnNhbCBvZgorICAgICAgIiIiCisgICAgICBnLmlvKCJkYXRhL3RpbmtlcnBvcC1tb2Rlcm4ueG1sIikud2l0aChJTy5yZWFkZXIsIElPLmdyYXBobWwpLnJlYWQoKQorICAgICAgIiIiCisgICAgV2hlbiBpdGVyYXRlZCB0byBsaXN0CisgICAgVGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSBlbXB0eQorICAgIEFuZCB0aGUgZ3JhcGggc2hvdWxkIHJldHVybiA2IGZvciBjb3VudCBvZiAiZy5WKCkiCisgICAgQW5kIHRoZSBncmFwaCBzaG91bGQgcmV0dXJuIDYgZm9yIGNvdW50IG9mICJnLkUoKSIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3QvZmVhdHVyZXMvc2lkZUVmZmVjdC9TdG9yZS5mZWF0dXJlIGIvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL3NpZGVFZmZlY3QvU3RvcmUuZmVhdHVyZQppbmRleCAwYTgxYjc1Li5mNjFjYmM0IDEwMDY0NAotLS0gYS9ncmVtbGluLXRlc3QvZmVhdHVyZXMvc2lkZUVmZmVjdC9TdG9yZS5mZWF0dXJlCisrKyBiL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9zaWRlRWZmZWN0L1N0b3JlLmZlYXR1cmUKQEAgLTU4LDEyICs1OCwxMiBAQAogICAgIFdoZW4gaXRlcmF0ZWQgbmV4dAogICAgIFRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgdW5vcmRlcmVkCiAgICAgICB8IHJlc3VsdCB8Ci0gICAgICB8IGxvcCAgICB8Ci0gICAgICB8IHZhZGFzICB8Ci0gICAgICB8IGpvc2ggICB8Ci0gICAgICB8IG1hcmtvICB8Ci0gICAgICB8IHBldGVyICB8CisgICAgICB8IG1hcmtvIHwKKyAgICAgIHwgdmFkYXMgfAorICAgICAgfCBsb3AgfAorICAgICAgfCBqb3NoIHwKICAgICAgIHwgcmlwcGxlIHwKKyAgICAgIHwgcGV0ZXIgIHwKIAogICBTY2VuYXJpbzogZ19WX3N0b3JlWGFYX2J5WG91dEVYY3JlYXRlZFhfY291bnRYX291dF9vdXRfc3RvcmVYYVhfYnlYaW5FWGNyZWF0ZWRYX3dlaWdodF9zdW1YCiAgICAgR2l2ZW4gdGhlIG1vZGVybiBncmFwaApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L2ZlYXR1cmVzL3NpZGVFZmZlY3QvV3JpdGUuZmVhdHVyZSBiL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9zaWRlRWZmZWN0L1dyaXRlLmZlYXR1cmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWE3NzRlOAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdGVzdC9mZWF0dXJlcy9zaWRlRWZmZWN0L1dyaXRlLmZlYXR1cmUKQEAgLTAsMCArMSw2MCBAQAorIyBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisjIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorIyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorIyByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisjIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorIyB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisjCisjIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorIworIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisjIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisjICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorIyBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyMgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworIyB1bmRlciB0aGUgTGljZW5zZS4KKworRmVhdHVyZTogU3RlcCAtIHdyaXRlKCkKKworICBTY2VuYXJpbzogZ19pb193cml0ZVhrcnlvWAorICAgIEdpdmVuIGFuIHVuc3VwcG9ydGVkIHRlc3QKKyAgICBUaGVuIG5vdGhpbmcgc2hvdWxkIGhhcHBlbiBiZWNhdXNlCisgICAgICAiIiIKKyAgICAgIFdlIGRvbid0IGhhdmUgYSBuaWNlIHdheSB0byBhc3NlcnQgdGhlIHJlbW90ZWx5IHdyaXR0ZW4gZmlsZSB3aXRoIHRoaXMgZnJhbWV3b3JrIC0ganVzdCB0ZXN0aW5nIGNvbXBpbGF0aW9uLgorICAgICAgIiIiCisKKyAgU2NlbmFyaW86IGdfaW9fd3JpdGVfd2l0aFh3cml0ZXJfZ3J5b1gKKyAgICBHaXZlbiBhbiB1bnN1cHBvcnRlZCB0ZXN0CisgICAgVGhlbiBub3RoaW5nIHNob3VsZCBoYXBwZW4gYmVjYXVzZQorICAgICAgIiIiCisgICAgICBXZSBkb24ndCBoYXZlIGEgbmljZSB3YXkgdG8gYXNzZXJ0IHRoZSByZW1vdGVseSB3cml0dGVuIGZpbGUgd2l0aCB0aGlzIGZyYW1ld29yayAtIGp1c3QgdGVzdGluZyBjb21waWxhdGlvbi4KKyAgICAgICIiIgorCisgIFNjZW5hcmlvOiBnX2lvX3dyaXRlWGdyYXBoc29uWAorICAgIEdpdmVuIGFuIHVuc3VwcG9ydGVkIHRlc3QKKyAgICBUaGVuIG5vdGhpbmcgc2hvdWxkIGhhcHBlbiBiZWNhdXNlCisgICAgICAiIiIKKyAgICAgIFdlIGRvbid0IGhhdmUgYSBuaWNlIHdheSB0byBhc3NlcnQgdGhlIHJlbW90ZWx5IHdyaXR0ZW4gZmlsZSB3aXRoIHRoaXMgZnJhbWV3b3JrIC0ganVzdCB0ZXN0aW5nIGNvbXBpbGF0aW9uLgorICAgICAgIiIiCisKKyAgU2NlbmFyaW86IGdfaW9fd3JpdGVfd2l0aFh3cml0ZXJfZ3JhcGhzb25YCisgICAgR2l2ZW4gYW4gdW5zdXBwb3J0ZWQgdGVzdAorICAgIFRoZW4gbm90aGluZyBzaG91bGQgaGFwcGVuIGJlY2F1c2UKKyAgICAgICIiIgorICAgICAgV2UgZG9uJ3QgaGF2ZSBhIG5pY2Ugd2F5IHRvIGFzc2VydCB0aGUgcmVtb3RlbHkgd3JpdHRlbiBmaWxlIHdpdGggdGhpcyBmcmFtZXdvcmsgLSBqdXN0IHRlc3RpbmcgY29tcGlsYXRpb24uCisgICAgICAiIiIKKworICBTY2VuYXJpbzogZ19pb193cml0ZVhncmFwaG1sWAorICAgIEdpdmVuIGFuIHVuc3VwcG9ydGVkIHRlc3QKKyAgICBUaGVuIG5vdGhpbmcgc2hvdWxkIGhhcHBlbiBiZWNhdXNlCisgICAgICAiIiIKKyAgICAgIFdlIGRvbid0IGhhdmUgYSBuaWNlIHdheSB0byBhc3NlcnQgdGhlIHJlbW90ZWx5IHdyaXR0ZW4gZmlsZSB3aXRoIHRoaXMgZnJhbWV3b3JrIC0ganVzdCB0ZXN0aW5nIGNvbXBpbGF0aW9uLgorICAgICAgIiIiCisKKyAgU2NlbmFyaW86IGdfaW9fd3JpdGVfd2l0aFh3cml0ZXJfZ3JhcGhtbFgKKyAgICBHaXZlbiBhbiB1bnN1cHBvcnRlZCB0ZXN0CisgICAgVGhlbiBub3RoaW5nIHNob3VsZCBoYXBwZW4gYmVjYXVzZQorICAgICAgIiIiCisgICAgICBXZSBkb24ndCBoYXZlIGEgbmljZSB3YXkgdG8gYXNzZXJ0IHRoZSByZW1vdGVseSB3cml0dGVuIGZpbGUgd2l0aCB0aGlzIGZyYW1ld29yayAtIGp1c3QgdGVzdGluZyBjb21waWxhdGlvbi4KKyAgICAgICIiIgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9wb20ueG1sIGIvZ3JlbWxpbi10ZXN0L3BvbS54bWwKaW5kZXggMGYzMGJhNi4uNjIzMWExZiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L3BvbS54bWwKKysrIGIvZ3JlbWxpbi10ZXN0L3BvbS54bWwKQEAgLTIxLDcgKzIxLDcgQEAKICAgICA8cGFyZW50PgogICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLnRpbmtlcnBvcDwvZ3JvdXBJZD4KICAgICAgICAgPGFydGlmYWN0SWQ+dGlua2VycG9wPC9hcnRpZmFjdElkPgotICAgICAgICA8dmVyc2lvbj4zLjMuMTEtU05BUFNIT1Q8L3ZlcnNpb24+CisgICAgICAgIDx2ZXJzaW9uPjMuNC43LVNOQVBTSE9UPC92ZXJzaW9uPgogICAgIDwvcGFyZW50PgogICAgIDxhcnRpZmFjdElkPmdyZW1saW4tdGVzdDwvYXJ0aWZhY3RJZD4KICAgICA8bmFtZT5BcGFjaGUgVGlua2VyUG9wIDo6IEdyZW1saW4gVGVzdDwvbmFtZT4KZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vQWJzdHJhY3RGaWxlR3JhcGhQcm92aWRlci5qYXZhIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9BYnN0cmFjdEZpbGVHcmFwaFByb3ZpZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMThlOWEwZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vQWJzdHJhY3RGaWxlR3JhcGhQcm92aWRlci5qYXZhCkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbjsKKworaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5jb25maWd1cmF0aW9uLkNvbmZpZ3VyYXRpb247CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uU3RvcmFnZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncmFwaHNvbi5HcmFwaFNPTlJlc291cmNlQWNjZXNzOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyeW8uR3J5b1Jlc291cmNlQWNjZXNzOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLnNjcmlwdC5TY3JpcHRSZXNvdXJjZUFjY2VzczsKKworaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgamF2YS51dGlsLk1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuUmFuZG9tOworCisvKioKKyAqIEEgYmFzZSB7QGxpbmsgR3JhcGhQcm92aWRlcn0gdGhhdCBpcyB0eXBpY2FsbHkgZm9yIHVzZSB3aXRoIEhhZG9vcC1iYXNlZCBncmFwaHMgYXMgaXQgZW5hYmxlcyBhY2Nlc3MgdG8gdGhlIHZhcmlvdXMKKyAqIHJlc291cmNlIGRhdGEgZmlsZXMgdGhhdCBhcmUgdXNlZCBpbiB0aGUgdGVzdHMuCisgKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RGaWxlR3JhcGhQcm92aWRlciBleHRlbmRzIEFic3RyYWN0R3JhcGhQcm92aWRlciB7CisKKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFJhbmRvbSBSQU5ET00gPSBUZXN0SGVscGVyLlJBTkRPTTsKKworICAgIHByb3RlY3RlZCBib29sZWFuIGdyYXBoU09OSW5wdXQgPSBmYWxzZTsKKworICAgIHB1YmxpYyBzdGF0aWMgTWFwPFN0cmluZywgU3RyaW5nPiBQQVRIUyA9IG5ldyBIYXNoTWFwPD4oKTsKKyAgICBzdGF0aWMgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgZmluYWwgTGlzdDxTdHJpbmc+IGtyeW9SZXNvdXJjZXMgPSBBcnJheXMuYXNMaXN0KAorICAgICAgICAgICAgICAgICAgICAidGlua2VycG9wLW1vZGVybi12M2QwLmtyeW8iLAorICAgICAgICAgICAgICAgICAgICAiZ3JhdGVmdWwtZGVhZC12M2QwLmtyeW8iLAorICAgICAgICAgICAgICAgICAgICAidGlua2VycG9wLWNsYXNzaWMtdjNkMC5rcnlvIiwKKyAgICAgICAgICAgICAgICAgICAgInRpbmtlcnBvcC1jcmV3LXYzZDAua3J5byIsCisgICAgICAgICAgICAgICAgICAgICJ0aW5rZXJwb3Atc2luay12M2QwLmtyeW8iKTsKKyAgICAgICAgICAgIGZvciAoZmluYWwgU3RyaW5nIGZpbGVOYW1lIDoga3J5b1Jlc291cmNlcykgeworICAgICAgICAgICAgICAgIFBBVEhTLnB1dChmaWxlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JhZ2UudG9QYXRoKFRlc3RIZWxwZXIuZ2VuZXJhdGVUZW1wRmlsZUZyb21SZXNvdXJjZShHcnlvUmVzb3VyY2VBY2Nlc3MuY2xhc3MsIGZpbGVOYW1lLCAiIikpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZmluYWwgTGlzdDxTdHJpbmc+IGdyYXBoc29uUmVzb3VyY2VzID0gQXJyYXlzLmFzTGlzdCgKKyAgICAgICAgICAgICAgICAgICAgInRpbmtlcnBvcC1tb2Rlcm4tdHlwZWQtdjJkMC5qc29uIiwKKyAgICAgICAgICAgICAgICAgICAgInRpbmtlcnBvcC1tb2Rlcm4tdjNkMC5qc29uIiwKKyAgICAgICAgICAgICAgICAgICAgImdyYXRlZnVsLWRlYWQtdHlwZWQtdjJkMC5qc29uIiwKKyAgICAgICAgICAgICAgICAgICAgImdyYXRlZnVsLWRlYWQtdjNkMC5qc29uIiwKKyAgICAgICAgICAgICAgICAgICAgInRpbmtlcnBvcC1jbGFzc2ljLXR5cGVkLXYyZDAuanNvbiIsCisgICAgICAgICAgICAgICAgICAgICJ0aW5rZXJwb3AtY2xhc3NpYy12M2QwLmpzb24iLAorICAgICAgICAgICAgICAgICAgICAidGlua2VycG9wLWNyZXctdHlwZWQtdjJkMC5qc29uIiwKKyAgICAgICAgICAgICAgICAgICAgInRpbmtlcnBvcC1jcmV3LXYzZDAuanNvbiIsCisgICAgICAgICAgICAgICAgICAgICJ0aW5rZXJwb3Atc2luay12M2QwLmpzb24iKTsKKyAgICAgICAgICAgIGZvciAoZmluYWwgU3RyaW5nIGZpbGVOYW1lIDogZ3JhcGhzb25SZXNvdXJjZXMpIHsKKyAgICAgICAgICAgICAgICBQQVRIUy5wdXQoZmlsZU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICBTdG9yYWdlLnRvUGF0aChUZXN0SGVscGVyLmdlbmVyYXRlVGVtcEZpbGVGcm9tUmVzb3VyY2UoR3JhcGhTT05SZXNvdXJjZUFjY2Vzcy5jbGFzcywgZmlsZU5hbWUsICIiKSkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmaW5hbCBMaXN0PFN0cmluZz4gc2NyaXB0UmVzb3VyY2VzID0gQXJyYXlzLmFzTGlzdCgKKyAgICAgICAgICAgICAgICAgICAgInRpbmtlcnBvcC1jbGFzc2ljLnR4dCIsCisgICAgICAgICAgICAgICAgICAgICJzY3JpcHQtaW5wdXQuZ3Jvb3Z5IiwKKyAgICAgICAgICAgICAgICAgICAgInNjcmlwdC1vdXRwdXQuZ3Jvb3Z5IiwKKyAgICAgICAgICAgICAgICAgICAgImdyYXRlZnVsLWRlYWQudHh0IiwKKyAgICAgICAgICAgICAgICAgICAgInNjcmlwdC1pbnB1dC1ncmF0ZWZ1bC1kZWFkLmdyb292eSIsCisgICAgICAgICAgICAgICAgICAgICJzY3JpcHQtb3V0cHV0LWdyYXRlZnVsLWRlYWQuZ3Jvb3Z5Iik7CisgICAgICAgICAgICBmb3IgKGZpbmFsIFN0cmluZyBmaWxlTmFtZSA6IHNjcmlwdFJlc291cmNlcykgeworICAgICAgICAgICAgICAgIFBBVEhTLnB1dChmaWxlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JhZ2UudG9QYXRoKFRlc3RIZWxwZXIuZ2VuZXJhdGVUZW1wRmlsZUZyb21SZXNvdXJjZShTY3JpcHRSZXNvdXJjZUFjY2Vzcy5jbGFzcywgZmlsZU5hbWUsICIiKSkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIGNsZWFyKGZpbmFsIEdyYXBoIGdyYXBoLCBmaW5hbCBDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBpZiAoZ3JhcGggIT0gbnVsbCkKKyAgICAgICAgICAgIGdyYXBoLmNsb3NlKCk7CisgICAgfQorCisgICAgcHJvdGVjdGVkIFN0cmluZyBnZXRJbnB1dExvY2F0aW9uKGZpbmFsIEdyYXBoIGcsIGZpbmFsIExvYWRHcmFwaFdpdGguR3JhcGhEYXRhIGdyYXBoRGF0YSkgeworICAgICAgICBmaW5hbCBTdHJpbmcgdHlwZSA9IHRoaXMuZ3JhcGhTT05JbnB1dCA/ICItdjNkMC5qc29uIiA6ICItdjNkMC5rcnlvIjsKKworICAgICAgICBpZiAoZ3JhcGhEYXRhLmVxdWFscyhMb2FkR3JhcGhXaXRoLkdyYXBoRGF0YS5HUkFURUZVTCkpCisgICAgICAgICAgICByZXR1cm4gUEFUSFMuZ2V0KCJncmF0ZWZ1bC1kZWFkIiArIHR5cGUpOworICAgICAgICBlbHNlIGlmIChncmFwaERhdGEuZXF1YWxzKExvYWRHcmFwaFdpdGguR3JhcGhEYXRhLk1PREVSTikpCisgICAgICAgICAgICByZXR1cm4gUEFUSFMuZ2V0KCJ0aW5rZXJwb3AtbW9kZXJuIiArIHR5cGUpOworICAgICAgICBlbHNlIGlmIChncmFwaERhdGEuZXF1YWxzKExvYWRHcmFwaFdpdGguR3JhcGhEYXRhLkNMQVNTSUMpKQorICAgICAgICAgICAgcmV0dXJuIFBBVEhTLmdldCgidGlua2VycG9wLWNsYXNzaWMiICsgdHlwZSk7CisgICAgICAgIGVsc2UgaWYgKGdyYXBoRGF0YS5lcXVhbHMoTG9hZEdyYXBoV2l0aC5HcmFwaERhdGEuQ1JFVykpCisgICAgICAgICAgICByZXR1cm4gUEFUSFMuZ2V0KCJ0aW5rZXJwb3AtY3JldyIgKyB0eXBlKTsKKyAgICAgICAgZWxzZSBpZiAoZ3JhcGhEYXRhLmVxdWFscyhMb2FkR3JhcGhXaXRoLkdyYXBoRGF0YS5TSU5LKSkKKyAgICAgICAgICAgIHJldHVybiBQQVRIUy5nZXQoInRpbmtlcnBvcC1zaW5rIiArIHR5cGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigiQ291bGQgbm90IGxvYWQgZ3JhcGggd2l0aCAiICsgZ3JhcGhEYXRhKTsKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vQWJzdHJhY3RHcmFwaFByb3ZpZGVyLmphdmEgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL0Fic3RyYWN0R3JhcGhQcm92aWRlci5qYXZhCmluZGV4IDA1MmU0N2EuLjNlYzJhYjEgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vQWJzdHJhY3RHcmFwaFByb3ZpZGVyLmphdmEKKysrIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9BYnN0cmFjdEdyYXBoUHJvdmlkZXIuamF2YQpAQCAtMjAsMTEgKzIwLDEzIEBACiAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5HcmFwaDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5HcmFwaFJlYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5Jb1JlZ2lzdHJ5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyeW8uR3J5b0lvOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyeW8uR3J5b1JlYWRlcjsKIGltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29uZmlndXJhdGlvbi5CYXNlQ29uZmlndXJhdGlvbjsKIGltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29uZmlndXJhdGlvbi5Db25maWd1cmF0aW9uOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuR3JhcGhGYWN0b3J5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyeW8uR3J5b1Jlc291cmNlQWNjZXNzOwogaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CiBpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlckZhY3Rvcnk7CiAKQEAgLTEzNiwxMiArMTM4LDE4IEBACiAgICAgICAgIHJldHVybiBtZXRob2ROYW1lLnJlcGxhY2VBbGwoIlswLTksIC1dKyQiLCBTdHJpbmcudmFsdWVPZihyYW5kb20pKTsKICAgICB9CiAKLSAgICBwcm90ZWN0ZWQgdm9pZCByZWFkSW50b0dyYXBoKGZpbmFsIEdyYXBoIGcsIGZpbmFsIFN0cmluZyBwYXRoKSB0aHJvd3MgSU9FeGNlcHRpb24gewotICAgICAgICBmaW5hbCBHcmFwaFJlYWRlciByZWFkZXIgPSBHcnlvUmVhZGVyLmJ1aWxkKCkKLSAgICAgICAgICAgICAgICAubWFwcGVyKGcuaW8oR3J5b0lvLmJ1aWxkKCkpLm1hcHBlcigpLmNyZWF0ZSgpKQotICAgICAgICAgICAgICAgIC5jcmVhdGUoKTsKLSAgICAgICAgdHJ5IChmaW5hbCBJbnB1dFN0cmVhbSBzdHJlYW0gPSBBYnN0cmFjdEdyZW1saW5UZXN0LmNsYXNzLmdldFJlc291cmNlQXNTdHJlYW0ocGF0aCkpIHsKLSAgICAgICAgICAgIHJlYWRlci5yZWFkR3JhcGgoc3RyZWFtLCBnKTsKLSAgICAgICAgfQorICAgIC8qKgorICAgICAqIFVzZWQgYnkgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2Yge0BsaW5rIEFic3RyYWN0R3JhcGhQcm92aWRlciNsb2FkR3JhcGhEYXRhKEdyYXBoLCBMb2FkR3JhcGhXaXRoLCBDbGFzcywgU3RyaW5nKX0KKyAgICAgKiB0byByZWFkIHRoZSBncmFwaCBmcm9tIGEgS3J5byBmaWxlIHVzaW5nIHRoZSBkZWZhdWx0IHtAbGluayBHcnlvUmVhZGVyfSBpbXBsZW1lbnRhdGlvbi4gSWYgdGhlIGRlZmF1bHQKKyAgICAgKiBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCB3b3JrIChwZXJoYXBzIGEgZ3JhcGggaW1wbGVtZW50YXRpb24gbmVlZHMgdG8gcmVnaXN0ZXIgc29tZSBzcGVjaWFsIHtAbGluayBJb1JlZ2lzdHJ5fQorICAgICAqIHRoZW4gdGhpcyBtZXRob2Qgb3IgaXRzIGNhbGxlciBzaG91bGQgYmUgb3ZlcnJpZGRlbiB0byBzdWl0IHRoZSBpbXBsZW1lbnRhdGlvbi4KKyAgICAgKgorICAgICAqIEBwYXJhbSBncmFwaCB0aGUgZ3JhcGggdG8gbG9hZCB0bworICAgICAqIEBwYXJhbSBwYXRoIHRoZSBwYXRoIHRvIHRoZSBmaWxlIHRvIGxvYWQgaW50byB0aGUgZ3JhcGgKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgdm9pZCByZWFkSW50b0dyYXBoKGZpbmFsIEdyYXBoIGdyYXBoLCBmaW5hbCBTdHJpbmcgcGF0aCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgU3RyaW5nIGRhdGFGaWxlID0gVGVzdEhlbHBlci5nZW5lcmF0ZVRlbXBGaWxlRnJvbVJlc291cmNlKGdyYXBoLmdldENsYXNzKCksCisgICAgICAgICAgICAgICAgR3J5b1Jlc291cmNlQWNjZXNzLmNsYXNzLCBwYXRoLnN1YnN0cmluZyhwYXRoLmxhc3RJbmRleE9mKEZpbGUuc2VwYXJhdG9yKSArIDEpLCAiIiwgZmFsc2UpLmdldEFic29sdXRlUGF0aCgpOworICAgICAgICBncmFwaC50cmF2ZXJzYWwoKS5pbyhkYXRhRmlsZSkucmVhZCgpLml0ZXJhdGUoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL0Fic3RyYWN0R3JlbWxpblRlc3QuamF2YSBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vQWJzdHJhY3RHcmVtbGluVGVzdC5qYXZhCmluZGV4IDVkMGZhZWUuLmYwNjlhMTIgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vQWJzdHJhY3RHcmVtbGluVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vQWJzdHJhY3RHcmVtbGluVGVzdC5qYXZhCkBAIC0zNywxMSArMzcsMTMgQEAKIGltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOwogaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXJGYWN0b3J5OwogCitpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuSW52b2NhdGlvblRhcmdldEV4Y2VwdGlvbjsKIGltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5NZXRob2Q7CiBpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKIGltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOwogaW1wb3J0IGphdmEudXRpbC5IYXNoU2V0OwogaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5PcHRpb25hbDsKIGltcG9ydCBqYXZhLnV0aWwuU2V0OwogaW1wb3J0IGphdmEudXRpbC5mdW5jdGlvbi5Db25zdW1lcjsKIGltcG9ydCBqYXZhLnV0aWwuc3RyZWFtLkNvbGxlY3RvcnM7CkBAIC03NSw4ICs3NywxNiBAQAogICAgICAgICBmaW5hbCBMb2FkR3JhcGhXaXRoW10gbG9hZEdyYXBoV2l0aHMgPSB0ZXN0TWV0aG9kLmdldEFubm90YXRpb25zQnlUeXBlKExvYWRHcmFwaFdpdGguY2xhc3MpOwogICAgICAgICBmaW5hbCBMb2FkR3JhcGhXaXRoIGxvYWRHcmFwaFdpdGggPSBsb2FkR3JhcGhXaXRocy5sZW5ndGggPT0gMCA/IG51bGwgOiBsb2FkR3JhcGhXaXRoc1swXTsKICAgICAgICAgZmluYWwgTG9hZEdyYXBoV2l0aC5HcmFwaERhdGEgbG9hZEdyYXBoV2l0aERhdGEgPSBudWxsID09IGxvYWRHcmFwaFdpdGggPyBudWxsIDogbG9hZEdyYXBoV2l0aC52YWx1ZSgpOworICAgICAgICBmaW5hbCBTZXQ8RmVhdHVyZVJlcXVpcmVtZW50PiBmZWF0dXJlUmVxdWlyZW1lbnRTZXQgPSBnZXRGZWF0dXJlUmVxdWlyZW1lbnRzRm9yVGVzdCh0ZXN0TWV0aG9kLCBsb2FkR3JhcGhXaXRocyk7CiAKICAgICAgICAgZ3JhcGhQcm92aWRlciA9IEdyYXBoTWFuYWdlci5nZXRHcmFwaFByb3ZpZGVyKCk7CisKKyAgICAgICAgLy8gcHJlLWNoZWNrIGlmIGF2YWlsYWJsZSBmcm9tIGdyYXBoIHByb3ZpZGVyIHRvIGF2b2lkIGdyYXBoIGNyZWF0aW9uCisgICAgICAgIGZpbmFsIE9wdGlvbmFsPEdyYXBoLkZlYXR1cmVzPiBzdGF0aWNGZWF0dXJlcyA9IGdyYXBoUHJvdmlkZXIuZ2V0U3RhdGljRmVhdHVyZXMoKTsKKyAgICAgICAgaWYgKHN0YXRpY0ZlYXR1cmVzLmlzUHJlc2VudCgpKSB7CisgICAgICAgICAgICBhc3N1bWVSZXF1aXJlbWVudHNBcmVNZXRGb3JUZXN0KGZlYXR1cmVSZXF1aXJlbWVudFNldCwgc3RhdGljRmVhdHVyZXMuZ2V0KCksIHRydWUpOworICAgICAgICB9CisKICAgICAgICAgZ3JhcGhQcm92aWRlci5nZXRUZXN0TGlzdGVuZXIoKS5pZlByZXNlbnQobCAtPiBsLm9uVGVzdFN0YXJ0KHRoaXMuZ2V0Q2xhc3MoKSwgbmFtZS5nZXRNZXRob2ROYW1lKCkpKTsKIAogICAgICAgICAvLyBSZXNldCB0aGUgY291bnRlciBmb3Igb3BlbiBpdGVyYXRvcnMgYnkgdGhpcyB0ZXN0CkBAIC05MSwzMSArMTAxLDEwIEBACiAgICAgICAgIGdyYXBoID0gZ3JhcGhQcm92aWRlci5vcGVuVGVzdEdyYXBoKGNvbmZpZyk7CiAgICAgICAgIGcgPSBncmFwaFByb3ZpZGVyLnRyYXZlcnNhbChncmFwaCk7CiAKLSAgICAgICAgLy8gZ2V0IGZlYXR1cmUgcmVxdWlyZW1lbnRzIG9uIHRoZSB0ZXN0IG1ldGhvZCBhbmQgYWRkIHRoZW0gdG8gdGhlIGxpc3Qgb2Ygb25lcyB0byBjaGVjawotICAgICAgICBmaW5hbCBGZWF0dXJlUmVxdWlyZW1lbnRbXSBmZWF0dXJlUmVxdWlyZW1lbnQgPSB0ZXN0TWV0aG9kLmdldEFubm90YXRpb25zQnlUeXBlKEZlYXR1cmVSZXF1aXJlbWVudC5jbGFzcyk7Ci0gICAgICAgIGZpbmFsIExpc3Q8RmVhdHVyZVJlcXVpcmVtZW50PiBmcnMgPSBuZXcgQXJyYXlMaXN0PD4oQXJyYXlzLmFzTGlzdChmZWF0dXJlUmVxdWlyZW1lbnQpKTsKLQotICAgICAgICAvLyBpZiB0aGUgZ3JhcGggaXMgbG9hZGluZyBkYXRhIHRoZW4gaXQgd2lsbCBjb21lIHdpdGggaXQncyBvd24gcmVxdWlyZW1lbnRzCi0gICAgICAgIGlmIChsb2FkR3JhcGhXaXRocy5sZW5ndGggPiAwKSBmcnMuYWRkQWxsKGxvYWRHcmFwaFdpdGhzWzBdLnZhbHVlKCkuZmVhdHVyZXNSZXF1aXJlZCgpKTsKLQotICAgICAgICAvLyBpZiB0aGUgZ3JhcGggaGFzIGEgc2V0IG9mIGZlYXR1cmUgcmVxdWlyZW1lbnRzIGJ1bmRsZWQgdG9nZXRoZXIgdGhlbiBhZGQgdGhvc2UKLSAgICAgICAgZmluYWwgRmVhdHVyZVJlcXVpcmVtZW50U2V0W10gZmVhdHVyZVJlcXVpcmVtZW50U2V0cyA9IHRlc3RNZXRob2QuZ2V0QW5ub3RhdGlvbnNCeVR5cGUoRmVhdHVyZVJlcXVpcmVtZW50U2V0LmNsYXNzKTsKLSAgICAgICAgaWYgKGZlYXR1cmVSZXF1aXJlbWVudFNldHMubGVuZ3RoID4gMCkKLSAgICAgICAgICAgIGZycy5hZGRBbGwoQXJyYXlzLnN0cmVhbShmZWF0dXJlUmVxdWlyZW1lbnRTZXRzKQotICAgICAgICAgICAgICAgICAgICAuZmxhdE1hcChmIC0+IGYudmFsdWUoKS5mZWF0dXJlc1JlcXVpcmVkKCkuc3RyZWFtKCkpLmNvbGxlY3QoQ29sbGVjdG9ycy50b0xpc3QoKSkpOwotCi0gICAgICAgIC8vIHByb2Nlc3MgdGhlIHVuaXF1ZSBzZXQgb2YgZmVhdHVyZSByZXF1aXJlbWVudHMKLSAgICAgICAgZmluYWwgU2V0PEZlYXR1cmVSZXF1aXJlbWVudD4gZmVhdHVyZVJlcXVpcmVtZW50U2V0ID0gbmV3IEhhc2hTZXQ8PihmcnMpOwotICAgICAgICBmb3IgKEZlYXR1cmVSZXF1aXJlbWVudCBmciA6IGZlYXR1cmVSZXF1aXJlbWVudFNldCkgewotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbihTdHJpbmcuZm9ybWF0KCJBc3N1bWUgdGhhdCAlcyBtZWV0cyBGZWF0dXJlIFJlcXVpcmVtZW50IC0gJXMgLSB3aXRoICVzIiwgZnIuZmVhdHVyZUNsYXNzKCkuZ2V0U2ltcGxlTmFtZSgpLCBmci5mZWF0dXJlKCksIGZyLnN1cHBvcnRlZCgpKSk7Ci0gICAgICAgICAgICAgICAgYXNzdW1lVGhhdChTdHJpbmcuZm9ybWF0KCIlcyBkb2VzIG5vdCBzdXBwb3J0IGFsbCBvZiB0aGUgZmVhdHVyZXMgcmVxdWlyZWQgYnkgdGhpcyB0ZXN0IHNvIGl0IHdpbGwgYmUgaWdub3JlZDogJXMuJXM9JXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmFwaC5nZXRDbGFzcygpLmdldFNpbXBsZU5hbWUoKSwgZnIuZmVhdHVyZUNsYXNzKCkuZ2V0U2ltcGxlTmFtZSgpLCBmci5mZWF0dXJlKCksIGZyLnN1cHBvcnRlZCgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGdyYXBoLmZlYXR1cmVzKCkuc3VwcG9ydHMoZnIuZmVhdHVyZUNsYXNzKCksIGZyLmZlYXR1cmUoKSksIGlzKGZyLnN1cHBvcnRlZCgpKSk7Ci0gICAgICAgICAgICB9IGNhdGNoIChOb1N1Y2hNZXRob2RFeGNlcHRpb24gbnNtZSkgewotICAgICAgICAgICAgICAgIHRocm93IG5ldyBOb1N1Y2hNZXRob2RFeGNlcHRpb24oU3RyaW5nLmZvcm1hdCgiW3N1cHBvcnRzJXNdIGlzIG5vdCBhIHZhbGlkIGZlYXR1cmUgb24gJXMiLCBmci5mZWF0dXJlKCksIGZyLmZlYXR1cmVDbGFzcygpKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgLy8gZXZlbiBpZiB3ZSBjaGVja2VkIHN0YXRpYyBmZWF0dXJlcyBlYXJsaWVyIGl0J3Mgb2YgbGl0dGxlIGNvc3QgdG8gcmVjaGVjayBhZ2FpbiB3aXRoIHRoZSByZWFsIGdyYXBoCisgICAgICAgIC8vIG9uY2UgaXQgaXMgaW5zdGFudGlhdGVkLiB0aGUgcmVhbCBjb3N0IHNhdmluZ3MgaXMgcHJldmVudGluZyBncmFwaCBjcmVhdGlvbiBpbiB0aGUgZmlyc3QgcGxhY2Ugc28KKyAgICAgICAgLy8gbGV0J3MgZG91YmxlIGNoZWNrIHRoYXQgYWxsIGlzIGxlZ2l0LgorICAgICAgICBhc3N1bWVSZXF1aXJlbWVudHNBcmVNZXRGb3JUZXN0KGZlYXR1cmVSZXF1aXJlbWVudFNldCwgZ3JhcGguZmVhdHVyZXMoKSwgZmFsc2UpOwogCiAgICAgICAgIGJlZm9yZUxvYWRHcmFwaFdpdGgoZ3JhcGgpOwogCkBAIC0xMjUsNiArMTE0LDI1IEBACiAgICAgICAgIGFmdGVyTG9hZEdyYXBoV2l0aChncmFwaCk7CiAgICAgfQogCisgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBhc3N1bWVSZXF1aXJlbWVudHNBcmVNZXRGb3JUZXN0KGZpbmFsIFNldDxGZWF0dXJlUmVxdWlyZW1lbnQ+IGZlYXR1cmVSZXF1aXJlbWVudFNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgR3JhcGguRmVhdHVyZXMgZmVhdHVyZXMsIGZpbmFsIGJvb2xlYW4gc3RhdGljQ2hlY2spCisgICAgICAgICAgICB0aHJvd3MgSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiwgSW52b2NhdGlvblRhcmdldEV4Y2VwdGlvbiwgTm9TdWNoTWV0aG9kRXhjZXB0aW9uIHsKKyAgICAgICAgZm9yIChGZWF0dXJlUmVxdWlyZW1lbnQgZnIgOiBmZWF0dXJlUmVxdWlyZW1lbnRTZXQpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgYXNzdW1lVGhhdChTdHJpbmcuZm9ybWF0KCJGZWF0dXJlcyBvZiB0aGUgZ3JhcGggZG8gbm90IHN1cHBvcnQgYWxsIG9mIHRoZSBmZWF0dXJlcyByZXF1aXJlZCBieSB0aGlzIHRlc3Qgc28gaXQgd2lsbCBiZSBpZ25vcmVkOiAlcy4lcz0lcyIsCisgICAgICAgICAgICAgICAgICAgICAgICBmci5mZWF0dXJlQ2xhc3MoKS5nZXRTaW1wbGVOYW1lKCksIGZyLmZlYXR1cmUoKSwgZnIuc3VwcG9ydGVkKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMuc3VwcG9ydHMoZnIuZmVhdHVyZUNsYXNzKCksIGZyLmZlYXR1cmUoKSksIGlzKGZyLnN1cHBvcnRlZCgpKSk7CisgICAgICAgICAgICB9IGNhdGNoIChOb1N1Y2hNZXRob2RFeGNlcHRpb24gbnNtZSkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBOb1N1Y2hNZXRob2RFeGNlcHRpb24oU3RyaW5nLmZvcm1hdCgiW3N1cHBvcnRzJXNdIGlzIG5vdCBhIHZhbGlkIGZlYXR1cmUgb24gJXMiLCBmci5mZWF0dXJlKCksIGZyLmZlYXR1cmVDbGFzcygpKSk7CisgICAgICAgICAgICB9IGNhdGNoIChVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiB1b2UpIHsKKyAgICAgICAgICAgICAgICAvLyBubyB3b3JyaWVzIGlmIHRoaXMgaXMgYSBjaGVjayBvZiBzdGF0aWMgZmVhdHVyZXMgLSBpdCBqdXN0IG1lYW5zIHRoYXQgd2UgY2FuJ3QgdXNlIHRoZSBjYWNoZSB0bworICAgICAgICAgICAgICAgIC8vIHN1cHBvcnQgdGhpcyBjaGVjayBhbmQgd2lsbCBoYXZlIHRvIGluY3VyIHRoZSBjb3N0IG9mIGluc3RhbnRpYXRpbmcgYSBncmFwaCBpbnN0YW5jZSBkaXJlY3RseS4gYnV0LAorICAgICAgICAgICAgICAgIC8vIGlmIHRoaXMgaXMgbm90IGEgc3RhdGljIGNoZWNrIHRoZW4gc29tZXRoaW5nIGVsc2UgaXMgYW1pc3MgYW5kIHdlIHNob3VsZCB0aHJvdy4KKyAgICAgICAgICAgICAgICBpZiAoc3RhdGljQ2hlY2spIHRocm93IHVvZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKwogICAgIHByb3RlY3RlZCB2b2lkIGJlZm9yZUxvYWRHcmFwaFdpdGgoZmluYWwgR3JhcGggZykgdGhyb3dzIEV4Y2VwdGlvbiB7CiAgICAgICAgIC8vIGRvIG5vdGhpbmcKICAgICB9CkBAIC0xMzksNiArMTQ3LDcgQEAKICAgICAgICAgICAgIGdyYXBoUHJvdmlkZXIuZ2V0VGVzdExpc3RlbmVyKCkuaWZQcmVzZW50KGwgLT4gbC5vblRlc3RFbmQodGhpcy5nZXRDbGFzcygpLCBuYW1lLmdldE1ldGhvZE5hbWUoKSkpOwogCiAgICAgICAgICAgICAvLyBHcmFwaFByb3ZpZGVyIHRoYXQgaGFzIGltcGxlbWVudGVkIHRoZSBjbGVhciBtZXRob2QgbXVzdCBjaGVjayBudWxsIGZvciBncmFwaCBhbmQgY29uZmlnLgorICAgICAgICAgICAgLy8gSWYgI2Fzc3VtZVJlcXVpcmVtZW50c0FyZU1ldEZvclRlc3QgcmV0dXJucyBmYWxzZSBpbiAjc2V0dXAsIGdyYXBoIGFuZCBjb25maWcgd2lsbCBiZSBudWxsLgogICAgICAgICAgICAgZ3JhcGhQcm92aWRlci5jbGVhcihncmFwaCwgY29uZmlnKTsKIAogICAgICAgICAgICAgLy8gQWxsIEdyYXBoUHJvdmlkZXIgb2JqZWN0cyBzaG91bGQgYmUgYW4gaW5zdGFuY2Ugb2YgTWFuYWdlZEdyYXBoUHJvdmlkZXIsIGFzIHRoaXMgaXMgaGFuZGxlZCBieSBHcmFwaE1hbmFnZXIKQEAgLTE1MCw4ICsxNTksOCBAQAogICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuKCJUaGUge30gaXMgbm90IG9mIHR5cGUgTWFuYWdlZEdyYXBoUHJvdmlkZXIgYW5kIHRoZXJlZm9yZSBncmFwaCBpbnN0YW5jZXMgbWF5IGxlYWsgYmV0d2VlbiB0ZXN0IGNhc2VzLiIsIGdyYXBoUHJvdmlkZXIuZ2V0Q2xhc3MoKSk7CiAKICAgICAgICAgICAgIGlmIChzaG91bGRUZXN0SXRlcmF0b3JMZWFrKSB7Ci0gICAgICAgICAgICAgICAgbG9uZyB3YWl0ID0gMzAwOwotICAgICAgICAgICAgICAgIGxvbmdbXSB0cmllcyA9IG5ldyBsb25nW10geyAxLCAzLCA1LCA3LCA5LCAxOCwgMjcsIDM2LCA3MiwgMTQ0LCAyNTYsIDUxMiB9OworICAgICAgICAgICAgICAgIGZpbmFsIGxvbmcgd2FpdCA9IDMwMDsKKyAgICAgICAgICAgICAgICBmaW5hbCBsb25nW10gdHJpZXMgPSBuZXcgbG9uZ1tdIHsgMSwgMywgNSwgNywgOSwgMTgsIDI3LCAzNiwgNzIsIDE0NCwgMjU2LCA1MTIgfTsKICAgICAgICAgICAgICAgICBsb25nIG9wZW5JdHJDb3VudCA9IFN0b3JlSXRlcmF0b3JDb3VudGVyLklOU1RBTkNFLmdldE9wZW5JdGVyYXRvckNvdW50KCk7CiAgICAgICAgICAgICAgICAgZm9yIChpbnQgaXggPSAwOyBpeCA8IHRyaWVzLmxlbmd0aCAmJiBvcGVuSXRyQ291bnQgPiAwOyBpeCsrKSB7CiAgICAgICAgICAgICAgICAgICAgIFRocmVhZC5zbGVlcCh3YWl0ICogdHJpZXNbaXhdKTsKQEAgLTE4OSw5ICsxOTgsMTMgQEAKICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb1ZlcnRleChncmFwaCwgdmVydGV4TmFtZSkuaWQoKTsKICAgICB9CiAKKyAgICBwdWJsaWMgVmVydGV4IGNvbnZlcnRUb1ZlcnRleChmaW5hbCBTdHJpbmcgdmVydGV4TmFtZSkgeworICAgICAgICByZXR1cm4gY29udmVydFRvVmVydGV4KGdyYXBoLCB2ZXJ0ZXhOYW1lKTsKKyAgICB9CisKICAgICBwdWJsaWMgVmVydGV4IGNvbnZlcnRUb1ZlcnRleChmaW5hbCBHcmFwaCBncmFwaCwgZmluYWwgU3RyaW5nIHZlcnRleE5hbWUpIHsKICAgICAgICAgLy8gYWxsIHRlc3QgZ3JhcGhzIGhhdmUgIm5hbWUiIGFzIGEgdW5pcXVlIGlkIHdoaWNoIG1ha2VzIGl0IGVhc3kgdG8gaGFyZGNvZGUgdGhpcy4uLndvcmtzIGZvciBub3cKLSAgICAgICAgcmV0dXJuIGdyYXBoLnRyYXZlcnNhbCgpLlYoKS5oYXMoIm5hbWUiLCB2ZXJ0ZXhOYW1lKS50b0xpc3QoKS5nZXQoMCk7CisgICAgICAgIHJldHVybiBncmFwaFByb3ZpZGVyLnRyYXZlcnNhbChncmFwaCkuVigpLmhhcygibmFtZSIsIHZlcnRleE5hbWUpLnRvTGlzdCgpLmdldCgwKTsKICAgICB9CiAKICAgICBwdWJsaWMgR3JhcGhUcmF2ZXJzYWw8VmVydGV4LCBPYmplY3Q+IGNvbnZlcnRUb1ZlcnRleFByb3BlcnR5SWQoZmluYWwgU3RyaW5nIHZlcnRleE5hbWUsIGZpbmFsIFN0cmluZyB2ZXJ0ZXhQcm9wZXJ0eUtleSkgewpAQCAtMjA0LDcgKzIxNyw3IEBACiAKICAgICBwdWJsaWMgR3JhcGhUcmF2ZXJzYWw8VmVydGV4LCBWZXJ0ZXhQcm9wZXJ0eTxPYmplY3Q+PiBjb252ZXJ0VG9WZXJ0ZXhQcm9wZXJ0eShmaW5hbCBHcmFwaCBncmFwaCwgZmluYWwgU3RyaW5nIHZlcnRleE5hbWUsIGZpbmFsIFN0cmluZyB2ZXJ0ZXhQcm9wZXJ0eUtleSkgewogICAgICAgICAvLyBhbGwgdGVzdCBncmFwaHMgaGF2ZSAibmFtZSIgYXMgYSB1bmlxdWUgaWQgd2hpY2ggbWFrZXMgaXQgZWFzeSB0byBoYXJkY29kZSB0aGlzLi4ud29ya3MgZm9yIG5vdwotICAgICAgICByZXR1cm4gKEdyYXBoVHJhdmVyc2FsPFZlcnRleCwgVmVydGV4UHJvcGVydHk8T2JqZWN0Pj4pIGdyYXBoLnRyYXZlcnNhbCgpLlYoKS5oYXMoIm5hbWUiLCB2ZXJ0ZXhOYW1lKS5wcm9wZXJ0aWVzKHZlcnRleFByb3BlcnR5S2V5KTsKKyAgICAgICAgcmV0dXJuIChHcmFwaFRyYXZlcnNhbDxWZXJ0ZXgsIFZlcnRleFByb3BlcnR5PE9iamVjdD4+KSBncmFwaFByb3ZpZGVyLnRyYXZlcnNhbChncmFwaCkuVigpLmhhcygibmFtZSIsIHZlcnRleE5hbWUpLnByb3BlcnRpZXModmVydGV4UHJvcGVydHlLZXkpOwogICAgIH0KIAogICAgIHB1YmxpYyBFZGdlIGNvbnZlcnRUb0VkZ2UoZmluYWwgR3JhcGggZ3JhcGgsIGZpbmFsIFN0cmluZyBvdXRWZXJ0ZXhOYW1lLCBTdHJpbmcgZWRnZUxhYmVsLCBmaW5hbCBTdHJpbmcgaW5WZXJ0ZXhOYW1lKSB7CkBAIC0yNjIsNyArMjc1LDcgQEAKICAgICBwdWJsaWMgdm9pZCBwcmludFRyYXZlcnNhbEZvcm0oZmluYWwgVHJhdmVyc2FsIHRyYXZlcnNhbCkgewogICAgICAgICBsb2dnZXIuaW5mbyhTdHJpbmcuZm9ybWF0KCJUZXN0aW5nOiAlcyIsIG5hbWUuZ2V0TWV0aG9kTmFtZSgpKSk7CiAgICAgICAgIGxvZ2dlci5pbmZvKCIgICBwcmUtc3RyYXRlZ3k6IiArIHRyYXZlcnNhbCk7Ci0gICAgICAgIHRyYXZlcnNhbC5oYXNOZXh0KCk7CisgICAgICAgIGlmICghdHJhdmVyc2FsLmFzQWRtaW4oKS5pc0xvY2tlZCgpKSB0cmF2ZXJzYWwuYXNBZG1pbigpLmFwcGx5U3RyYXRlZ2llcygpOwogICAgICAgICBsb2dnZXIuaW5mbygiICBwb3N0LXN0cmF0ZWd5OiIgKyB0cmF2ZXJzYWwpOwogICAgICAgICB2ZXJpZnlVbmlxdWVTdGVwSWRzKHRyYXZlcnNhbC5hc0FkbWluKCkpOwogICAgIH0KQEAgLTI4Niw2ICsyOTksMjQgQEAKICAgICAgICAgQWJzdHJhY3RHcmVtbGluVGVzdC52ZXJpZnlVbmlxdWVTdGVwSWRzKHRyYXZlcnNhbCwgMCwgbmV3IEhhc2hTZXQ8PigpKTsKICAgICB9CiAKKyAgICBwcml2YXRlIHN0YXRpYyBTZXQ8RmVhdHVyZVJlcXVpcmVtZW50PiBnZXRGZWF0dXJlUmVxdWlyZW1lbnRzRm9yVGVzdChmaW5hbCBNZXRob2QgdGVzdE1ldGhvZCwgZmluYWwgTG9hZEdyYXBoV2l0aFtdIGxvYWRHcmFwaFdpdGhzKSB7CisgICAgICAgIC8vIGdldCBmZWF0dXJlIHJlcXVpcmVtZW50cyBvbiB0aGUgdGVzdCBtZXRob2QgYW5kIGFkZCB0aGVtIHRvIHRoZSBsaXN0IG9mIG9uZXMgdG8gY2hlY2sKKyAgICAgICAgZmluYWwgRmVhdHVyZVJlcXVpcmVtZW50W10gZmVhdHVyZVJlcXVpcmVtZW50ID0gdGVzdE1ldGhvZC5nZXRBbm5vdGF0aW9uc0J5VHlwZShGZWF0dXJlUmVxdWlyZW1lbnQuY2xhc3MpOworICAgICAgICBmaW5hbCBMaXN0PEZlYXR1cmVSZXF1aXJlbWVudD4gZnJzID0gbmV3IEFycmF5TGlzdDw+KEFycmF5cy5hc0xpc3QoZmVhdHVyZVJlcXVpcmVtZW50KSk7CisKKyAgICAgICAgLy8gaWYgdGhlIGdyYXBoIGlzIGxvYWRpbmcgZGF0YSB0aGVuIGl0IHdpbGwgY29tZSB3aXRoIGl0J3Mgb3duIHJlcXVpcmVtZW50cworICAgICAgICBpZiAobG9hZEdyYXBoV2l0aHMubGVuZ3RoID4gMCkgZnJzLmFkZEFsbChsb2FkR3JhcGhXaXRoc1swXS52YWx1ZSgpLmZlYXR1cmVzUmVxdWlyZWQoKSk7CisKKyAgICAgICAgLy8gaWYgdGhlIGdyYXBoIGhhcyBhIHNldCBvZiBmZWF0dXJlIHJlcXVpcmVtZW50cyBidW5kbGVkIHRvZ2V0aGVyIHRoZW4gYWRkIHRob3NlCisgICAgICAgIGZpbmFsIEZlYXR1cmVSZXF1aXJlbWVudFNldFtdIGZlYXR1cmVSZXF1aXJlbWVudFNldHMgPSB0ZXN0TWV0aG9kLmdldEFubm90YXRpb25zQnlUeXBlKEZlYXR1cmVSZXF1aXJlbWVudFNldC5jbGFzcyk7CisgICAgICAgIGlmIChmZWF0dXJlUmVxdWlyZW1lbnRTZXRzLmxlbmd0aCA+IDApCisgICAgICAgICAgICBmcnMuYWRkQWxsKEFycmF5cy5zdHJlYW0oZmVhdHVyZVJlcXVpcmVtZW50U2V0cykKKyAgICAgICAgICAgICAgICAgICAgLmZsYXRNYXAoZiAtPiBmLnZhbHVlKCkuZmVhdHVyZXNSZXF1aXJlZCgpLnN0cmVhbSgpKS5jb2xsZWN0KENvbGxlY3RvcnMudG9MaXN0KCkpKTsKKworICAgICAgICAvLyBwcm9jZXNzIHRoZSB1bmlxdWUgc2V0IG9mIGZlYXR1cmUgcmVxdWlyZW1lbnRzCisgICAgICAgIHJldHVybiBuZXcgSGFzaFNldDw+KGZycyk7CisgICAgfQorCiAgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCB2ZXJpZnlVbmlxdWVTdGVwSWRzKGZpbmFsIFRyYXZlcnNhbC5BZG1pbjw/LCA/PiB0cmF2ZXJzYWwsIGZpbmFsIGludCBkZXB0aCwgZmluYWwgU2V0PFN0cmluZz4gaWRzKSB7CiAgICAgICAgIGZvciAoZmluYWwgU3RlcCBzdGVwIDogdHJhdmVyc2FsLmFzQWRtaW4oKS5nZXRTdGVwcygpKSB7CiAgICAgICAgICAgICAvKmZvciAoaW50IGkgPSAwOyBpIDwgZGVwdGg7IGkrKykgU3lzdGVtLm91dC5wcmludCgiXHQiKTsKZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vR3JhcGhNYW5hZ2VyLmphdmEgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL0dyYXBoTWFuYWdlci5qYXZhCmluZGV4IDY4ODY0NjUuLjc1MDYyMjYgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vR3JhcGhNYW5hZ2VyLmphdmEKKysrIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9HcmFwaE1hbmFnZXIuamF2YQpAQCAtMTgzLDYgKzE4MywxMSBAQAogICAgICAgICAgICAgaWYgKGlubmVyR3JhcGhQcm92aWRlciBpbnN0YW5jZW9mIEF1dG9DbG9zZWFibGUpCiAgICAgICAgICAgICAgICAgKChBdXRvQ2xvc2VhYmxlKSBpbm5lckdyYXBoUHJvdmlkZXIpLmNsb3NlKCk7CiAgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIE9wdGlvbmFsPEdyYXBoLkZlYXR1cmVzPiBnZXRTdGF0aWNGZWF0dXJlcygpIHsKKyAgICAgICAgICAgIHJldHVybiBpbm5lckdyYXBoUHJvdmlkZXIuZ2V0U3RhdGljRmVhdHVyZXMoKTsKKyAgICAgICAgfQogICAgIH0KIAogfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9HcmFwaFByb3ZpZGVyLmphdmEgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL0dyYXBoUHJvdmlkZXIuamF2YQppbmRleCBmZTkwNjE5Li5lZmUyNzBhIDEwMDY0NAotLS0gYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL0dyYXBoUHJvdmlkZXIuamF2YQorKysgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL0dyYXBoUHJvdmlkZXIuamF2YQpAQCAtMzAwLDYgKzMwMCwyMiBAQAogICAgIH0KIAogICAgIC8qKgorICAgICAqIEdldHMgYSB7QGxpbmsgR3JhcGguRmVhdHVyZXN9IGltcGxlbWVudGF0aW9uIHRoYXQgY29udGFpbnMgZ3JhcGggZmVhdHVyZSBjb25maWd1cmF0aW9uIHRoYXQgd2lsbCBuZXZlciBjaGFuZ2UKKyAgICAgKiBmcm9tIGV4ZWN1dGlvbiB0byBleGVjdXRpb24gb2YgdGhlIHRlc3RzIGdpdmVuIHRoaXMgY3VycmVudCB7QGNvZGUgR3JhcGhQcm92aWRlcn0gaW1wbGVtZW50YXRpb24uIEltcGxlbWVudGluZworICAgICAqIHRoaXMgbWV0aG9kIHdpbGwgYWxsb3cgdGhlIHRlc3Qgc3VpdGUgdG8gYXZvaWQgY3JlYXRpb24gb2YgYSB7QGxpbmsgR3JhcGh9IGluc3RhbmNlIGFuZCB0aHVzIHNwZWVkIHVwIHRoZQorICAgICAqIGV4ZWN1dGlvbiBvZiB0ZXN0cyBpZiB0aGF0IGNyZWF0aW9uIHByb2Nlc3MgaXMgZXhwZW5zaXZlLiBJdCBpcyBpbXBvcnRhbnQgdGhhdCB0aGlzIHN0YXRpYyBzZXQgb2YgZmVhdHVyZXMgYmUKKyAgICAgKiByZXByZXNlbnRhdGl2ZSBvZiB3aGF0IHRoZSB7QGxpbmsgR3JhcGh9IGluc3RhbmNlIHByb2R1Y2VkIGJ5IHRoaXMge0Bjb2RlIEdyYXBoUHJvdmlkZXJ9IGNhbiBhY3R1YWxseSBkbyBvcgorICAgICAqIGVsc2UgdGhlIGNvc3Qgb2Yge0BsaW5rIEdyYXBofSBpbnN0YW50aWF0aW9uIHdpbGwgYmUgaW5jdXJyZWQgd2hlbiBpdCBkb2Vzbid0IG5lZWQgdG8gYmUuIEl0IGlzIGFsc28gaW1wb3J0YW50CisgICAgICogdGhhdCB0aGlzIG1ldGhvZCBiZSBmYXN0ZXIgdGhhbiB0aGUgY29zdCBvZiB7QGxpbmsgR3JhcGh9IGNyZWF0aW9uIGluIHRoZSBmaXJzdCBwbGFjZSBvciB0aGVyZSByZWFsbHkgd29uJ3QgYmUKKyAgICAgKiBhbnkgZGlmZmVyZW5jZSBpbiBleGVjdXRpb24gc3BlZWQuIEluIGNhc2VzIHdoZXJlIHNvbWUgZmVhdHVyZXMgYXJlIHN0YXRpYyBhbmQgb3RoZXJzIGFyZSBub3QsIHNpbXBseSB0aHJvdworICAgICAqIGFuIHtAY29kZSBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbn0gZnJvbSB0aG9zZSBmZWF0dXJlcyB0byBsZXQgdGhlIHRlc3Qgc3VpdGUga25vdyB0aGF0IGl0IGNhbm5vdCByZWx5CisgICAgICogb24gdGhlbSBhbmQgdGhlIHRlc3Qgc3VpdGUgd2lsbCByZXZlcnQgdG8gdXNpbmcgYSBjb25zdHJ1Y3RlZCB7QGxpbmsgR3JhcGh9IGluc3RhbmNlLgorICAgICAqLworICAgIHB1YmxpYyBkZWZhdWx0IE9wdGlvbmFsPEdyYXBoLkZlYXR1cmVzPiBnZXRTdGF0aWNGZWF0dXJlcygpIHsKKyAgICAgICAgcmV0dXJuIE9wdGlvbmFsLmVtcHR5KCk7CisgICAgfQorCisgICAgLyoqCiAgICAgICogQW4gYW5ub3RhdGlvbiB0byBiZSBhcHBsaWVkIHRvIGEge0Bjb2RlIEdyYXBoUHJvdmlkZXJ9IGltcGxlbWVudGF0aW9uIHRoYXQgcHJvdmlkZXMgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgogICAgICAqIGFib3V0IGl0cyBpbnRlbnRpb25zLiBUaGUge0Bjb2RlIERlc2NyaXB0b3J9IGlzIHJlcXVpcmVkIGJ5IHRob3NlIHtAY29kZSBHcmFwaFByb3ZpZGVyfSBpbXBsZW1lbnRhdGlvbnMKICAgICAgKiB0aGF0IHdpbGwgYmUgYXNzaWduZWQgdG8gdGVzdCBzdWl0ZXMgdGhhdCB1c2UKZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vVGVzdEhlbHBlci5qYXZhIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9UZXN0SGVscGVyLmphdmEKaW5kZXggMDc2NzA2NC4uMDYyOTVmNCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9UZXN0SGVscGVyLmphdmEKKysrIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9UZXN0SGVscGVyLmphdmEKQEAgLTQ3LDcgKzQ3LDggQEAKICAqCiAgKiBOT1RFOiBUaGlzIGNsYXNzIGR1cGxpY2F0ZXMgdGhlIFRlc3RIZWxwZXIgY2xhc3MgZnJvbSBncmVtbGluLWNvcmUuIE9uZSBvZiB0aGVtIG11c3QgYmUgcmVtb3ZlZC4KICAqLwotcHVibGljIGZpbmFsIGNsYXNzIFRlc3RIZWxwZXIgZXh0ZW5kcyBUZXN0U3VwcG9ydCB7cHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKFRlc3RTdXBwb3J0LmNsYXNzKTsKK3B1YmxpYyBmaW5hbCBjbGFzcyBUZXN0SGVscGVyIGV4dGVuZHMgVGVzdFN1cHBvcnQgeworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcihUZXN0U3VwcG9ydC5jbGFzcyk7CiAKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFJhbmRvbSBSQU5ET007CiAKQEAgLTU5LDcgKzYwLDcgQEAKIAogICAgIHByaXZhdGUgVGVzdEhlbHBlcigpIHsKICAgICB9Ci0gICAgCisKICAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBjb252ZXJ0VG9SZWxhdGl2ZShmaW5hbCBDbGFzcyBjbGF6eiwgZmluYWwgRmlsZSBmKSB7CiAgICAgICAgIGZpbmFsIEZpbGUgcm9vdCA9IGdldFJvb3RPZkJ1aWxkRGlyZWN0b3J5KGNsYXp6KS5nZXRQYXJlbnRGaWxlKCk7CiAgICAgICAgIHJldHVybiByb290LnRvVVJJKCkucmVsYXRpdml6ZShmLnRvVVJJKCkpLnRvU3RyaW5nKCk7CkBAIC03OCw3ICs3OSw3IEBACiAgICAgICAgIGFzc3VtZVRoYXQoIlNldCB0aGUgJ2Fzc2VydE5vbkRldGVybWluaXN0aWMnIHByb3BlcnR5IHRvIHRydWUgdG8gZXhlY3V0ZSB0aGlzIHRlc3QiLAogICAgICAgICAgICAgICAgIFN5c3RlbS5nZXRQcm9wZXJ0eSgiYXNzZXJ0Tm9uRGV0ZXJtaW5pc3RpYyIpLCBpcygidHJ1ZSIpKTsKICAgICB9Ci0gICAgICAgIAorCiAgICAgLy8vLy8vLy8vLy8vLy8vCiAKICAgICBwdWJsaWMgc3RhdGljIHZvaWQgdmFsaWRhdGVWZXJ0ZXhFcXVhbGl0eShmaW5hbCBWZXJ0ZXggb3JpZ2luYWxWZXJ0ZXgsIGZpbmFsIFZlcnRleCBvdGhlclZlcnRleCwgYm9vbGVhbiB0ZXN0RWRnZXMpIHsKZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9BYnN0cmFjdEdyZW1saW5Qcm9jZXNzVGVzdC5qYXZhIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL0Fic3RyYWN0R3JlbWxpblByb2Nlc3NUZXN0LmphdmEKaW5kZXggNDc0OWU5My4uMGEyYTQwNSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL0Fic3RyYWN0R3JlbWxpblByb2Nlc3NUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL0Fic3RyYWN0R3JlbWxpblByb2Nlc3NUZXN0LmphdmEKQEAgLTEyNyw3ICsxMjcsNyBAQAogCiAgICAgcHVibGljIHN0YXRpYyA8VD4gdm9pZCBjaGVja1Jlc3VsdHMoZmluYWwgTGlzdDxUPiBleHBlY3RlZFJlc3VsdHMsIGZpbmFsIFRyYXZlcnNhbDw/LCBUPiB0cmF2ZXJzYWwpIHsKICAgICAgICAgZmluYWwgTGlzdDxUPiByZXN1bHRzID0gdHJhdmVyc2FsLnRvTGlzdCgpOwotICAgICAgICBhc3NlcnRGYWxzZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKKyAgICAgICAgYXNzZXJ0VGhhdCh0cmF2ZXJzYWwuaGFzTmV4dCgpLCBpcyhmYWxzZSkpOwogICAgICAgICBpZiAoZXhwZWN0ZWRSZXN1bHRzLnNpemUoKSAhPSByZXN1bHRzLnNpemUoKSkgewogICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJFeHBlY3RlZCByZXN1bHRzOiAiICsgZXhwZWN0ZWRSZXN1bHRzKTsKICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiQWN0dWFsIHJlc3VsdHM6ICAgIiArIHJlc3VsdHMpOwpAQCAtMTQ1LDExICsxNDUsMTAgQEAKICAgICAgICAgfQogICAgICAgICBmaW5hbCBNYXA8VCwgTG9uZz4gZXhwZWN0ZWRSZXN1bHRzQ291bnQgPSBuZXcgSGFzaE1hcDw+KCk7CiAgICAgICAgIGZpbmFsIE1hcDxULCBMb25nPiByZXN1bHRzQ291bnQgPSBuZXcgSGFzaE1hcDw+KCk7CisgICAgICAgIGV4cGVjdGVkUmVzdWx0cy5mb3JFYWNoKHQgLT4gTWFwSGVscGVyLmluY3IoZXhwZWN0ZWRSZXN1bHRzQ291bnQsIHQsIDFMKSk7CisgICAgICAgIHJlc3VsdHMuZm9yRWFjaCh0IC0+IE1hcEhlbHBlci5pbmNyKHJlc3VsdHNDb3VudCwgdCwgMUwpKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKCJDaGVja2luZyBpbmRleGluZyBpcyBlcXVpdmFsZW50IiwgZXhwZWN0ZWRSZXN1bHRzQ291bnQuc2l6ZSgpLCByZXN1bHRzQ291bnQuc2l6ZSgpKTsKLSAgICAgICAgZXhwZWN0ZWRSZXN1bHRzLmZvckVhY2godCAtPiBNYXBIZWxwZXIuaW5jcihleHBlY3RlZFJlc3VsdHNDb3VudCwgdCwgMWwpKTsKLSAgICAgICAgcmVzdWx0cy5mb3JFYWNoKHQgLT4gTWFwSGVscGVyLmluY3IocmVzdWx0c0NvdW50LCB0LCAxbCkpOwogICAgICAgICBleHBlY3RlZFJlc3VsdHNDb3VudC5mb3JFYWNoKChrLCB2KSAtPiBhc3NlcnRFcXVhbHMoIkNoZWNraW5nIHJlc3VsdCBncm91cCBjb3VudHMiLCB2LCByZXN1bHRzQ291bnQuZ2V0KGspKSk7Ci0gICAgICAgIGFzc2VydFRoYXQodHJhdmVyc2FsLmhhc05leHQoKSwgaXMoZmFsc2UpKTsKICAgICB9CiAKICAgICBwdWJsaWMgc3RhdGljIDxUPiB2b2lkIGNoZWNrUmVzdWx0cyhmaW5hbCBNYXA8VCwgTG9uZz4gZXhwZWN0ZWRSZXN1bHRzLCBmaW5hbCBUcmF2ZXJzYWw8PywgVD4gdHJhdmVyc2FsKSB7CmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvR3JlbWxpblByb2Nlc3NSdW5uZXIuamF2YSBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9HcmVtbGluUHJvY2Vzc1J1bm5lci5qYXZhCmluZGV4IGI3NjE3MTkuLjI2MzYxNzEgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9HcmVtbGluUHJvY2Vzc1J1bm5lci5qYXZhCisrKyBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9HcmVtbGluUHJvY2Vzc1J1bm5lci5qYXZhCkBAIC00Niw3ICs0Niw3IEBACiAgICAgICAgIGlmICh0aGlzLmlzSWdub3JlZChtZXRob2QpKSB7CiAgICAgICAgICAgICBub3RpZmllci5maXJlVGVzdElnbm9yZWQoZGVzY3JpcHRpb24pOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgRWFjaFRlc3ROb3RpZmllciBlYWNoTm90aWZpZXIgPSBuZXcgRWFjaFRlc3ROb3RpZmllcihub3RpZmllciwgZGVzY3JpcHRpb24pOworICAgICAgICAgICAgZmluYWwgRWFjaFRlc3ROb3RpZmllciBlYWNoTm90aWZpZXIgPSBuZXcgRWFjaFRlc3ROb3RpZmllcihub3RpZmllciwgZGVzY3JpcHRpb24pOwogICAgICAgICAgICAgZWFjaE5vdGlmaWVyLmZpcmVUZXN0U3RhcnRlZCgpOwogICAgICAgICAgICAgYm9vbGVhbiBpZ25vcmVkID0gZmFsc2U7CiAgICAgICAgICAgICB0cnkgewpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL1Byb2Nlc3NDb21wdXRlclN1aXRlLmphdmEgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvUHJvY2Vzc0NvbXB1dGVyU3VpdGUuamF2YQppbmRleCBkZTUzZDg3Li4zY2E1Yjc2IDEwMDY0NAotLS0gYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvUHJvY2Vzc0NvbXB1dGVyU3VpdGUuamF2YQorKysgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvUHJvY2Vzc0NvbXB1dGVyU3VpdGUuamF2YQpAQCAtMjYsNiArMjYsNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5jbG9uZS5DbG9uZVZlcnRleFByb2dyYW1UZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5jbHVzdGVyaW5nLnBlZXJwcmVzc3VyZS5QZWVyUHJlc3N1cmVWZXJ0ZXhQcm9ncmFtVGVzdDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIucmFua2luZy5wYWdlcmFuay5QYWdlUmFua1ZlcnRleFByb2dyYW1UZXN0OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5zZWFyY2gucGF0aC5TaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtVGVzdDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbEVuZ2luZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbEludGVycnVwdGlvbkNvbXB1dGVyVGVzdDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuQ29tcGxleFRlc3Q7CkBAIC01MCw4ICs1MSwxMCBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5maWx0ZXIuV2hlcmVUZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuQWRkRWRnZVRlc3Q7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5Db2FsZXNjZVRlc3Q7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5Db25uZWN0ZWRDb21wb25lbnRUZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuQ29uc3RhbnRUZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuQ291bnRUZXN0OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuRWxlbWVudE1hcFRlc3Q7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5GbGF0TWFwVGVzdDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLkZvbGRUZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuR3JhcGhUZXN0OwpAQCAtNzAsMTEgKzczLDE0IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5Qcm9ncmFtVGVzdDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlByb2plY3RUZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuUHJvcGVydGllc1Rlc3Q7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5SZWFkVGVzdDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlNob3J0ZXN0UGF0aFRlc3Q7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5TZWxlY3RUZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuU3VtVGVzdDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlVuZm9sZFRlc3Q7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5WYWx1ZU1hcFRlc3Q7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5WZXJ0ZXhUZXN0OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuV3JpdGVUZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5zaWRlRWZmZWN0LkFnZ3JlZ2F0ZVRlc3Q7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnNpZGVFZmZlY3QuRXhwbGFpblRlc3Q7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnNpZGVFZmZlY3QuR3JvdXBDb3VudFRlc3Q7CkBAIC0xNDIsOCArMTQ4LDEwIEBACiAKICAgICAgICAgICAgIC8vIG1hcAogICAgICAgICAgICAgQ29hbGVzY2VUZXN0LlRyYXZlcnNhbHMuY2xhc3MsCisgICAgICAgICAgICBDb25uZWN0ZWRDb21wb25lbnRUZXN0LlRyYXZlcnNhbHMuY2xhc3MsCiAgICAgICAgICAgICBDb25zdGFudFRlc3QuVHJhdmVyc2Fscy5jbGFzcywKICAgICAgICAgICAgIENvdW50VGVzdC5UcmF2ZXJzYWxzLmNsYXNzLAorICAgICAgICAgICAgRWxlbWVudE1hcFRlc3QuVHJhdmVyc2Fscy5jbGFzcywKICAgICAgICAgICAgIEZsYXRNYXBUZXN0LlRyYXZlcnNhbHMuY2xhc3MsCiAgICAgICAgICAgICBGb2xkVGVzdC5UcmF2ZXJzYWxzLmNsYXNzLAogICAgICAgICAgICAgR3JhcGhUZXN0LlRyYXZlcnNhbHMuY2xhc3MsCkBAIC0xNjQsMTAgKzE3MiwxMyBAQAogICAgICAgICAgICAgUHJvamVjdFRlc3QuVHJhdmVyc2Fscy5jbGFzcywKICAgICAgICAgICAgIFByb2dyYW1UZXN0LlRyYXZlcnNhbHMuY2xhc3MsCiAgICAgICAgICAgICBQcm9wZXJ0aWVzVGVzdC5UcmF2ZXJzYWxzLmNsYXNzLAorICAgICAgICAgICAgUmVhZFRlc3QuVHJhdmVyc2Fscy5jbGFzcywKKyAgICAgICAgICAgIFNob3J0ZXN0UGF0aFRlc3QuVHJhdmVyc2Fscy5jbGFzcywKICAgICAgICAgICAgIFNlbGVjdFRlc3QuVHJhdmVyc2Fscy5jbGFzcywKICAgICAgICAgICAgIFVuZm9sZFRlc3QuVHJhdmVyc2Fscy5jbGFzcywKICAgICAgICAgICAgIFZhbHVlTWFwVGVzdC5UcmF2ZXJzYWxzLmNsYXNzLAogICAgICAgICAgICAgVmVydGV4VGVzdC5UcmF2ZXJzYWxzLmNsYXNzLAorICAgICAgICAgICAgV3JpdGVUZXN0LlRyYXZlcnNhbHMuY2xhc3MsCiAKICAgICAgICAgICAgIC8vIHNpZGVFZmZlY3QKICAgICAgICAgICAgIEFkZEVkZ2VUZXN0LlRyYXZlcnNhbHMuY2xhc3MsCkBAIC0xOTEsNiArMjAyLDcgQEAKICAgICAgICAgICAgIC8vIGFsZ29yaXRobXMKICAgICAgICAgICAgIFBhZ2VSYW5rVmVydGV4UHJvZ3JhbVRlc3QuY2xhc3MsCiAgICAgICAgICAgICBQZWVyUHJlc3N1cmVWZXJ0ZXhQcm9ncmFtVGVzdC5jbGFzcywKKyAgICAgICAgICAgIFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW1UZXN0LmNsYXNzLAogICAgICAgICAgICAgQnVsa0xvYWRlclZlcnRleFByb2dyYW1UZXN0LmNsYXNzLAogICAgICAgICAgICAgQnVsa0R1bXBlclZlcnRleFByb2dyYW1UZXN0LmNsYXNzLAogICAgICAgICAgICAgQ2xvbmVWZXJ0ZXhQcm9ncmFtVGVzdC5jbGFzcywKQEAgLTIzOSw2ICsyNTEsNyBAQAogICAgICAgICAgICAgQ29uc3RhbnRUZXN0LmNsYXNzLAogICAgICAgICAgICAgQ291bnRUZXN0LmNsYXNzLAogICAgICAgICAgICAgRmxhdE1hcFRlc3QuY2xhc3MsCisgICAgICAgICAgICBFbGVtZW50TWFwVGVzdC5jbGFzcywKICAgICAgICAgICAgIEZvbGRUZXN0LmNsYXNzLAogICAgICAgICAgICAgTWF0Y2hUZXN0LmNsYXNzLAogICAgICAgICAgICAgTWF0aFRlc3QuY2xhc3MsCkBAIC0yNTYsNiArMjY5LDcgQEAKICAgICAgICAgICAgIFByb2plY3RUZXN0LmNsYXNzLAogICAgICAgICAgICAgUHJvZ3JhbVRlc3QuY2xhc3MsCiAgICAgICAgICAgICBQcm9wZXJ0aWVzVGVzdC5jbGFzcywKKyAgICAgICAgICAgIFNob3J0ZXN0UGF0aFRlc3QuY2xhc3MsCiAgICAgICAgICAgICBTZWxlY3RUZXN0LmNsYXNzLAogICAgICAgICAgICAgVW5mb2xkVGVzdC5jbGFzcywKICAgICAgICAgICAgIFZhbHVlTWFwVGVzdC5jbGFzcywKZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9Qcm9jZXNzU3RhbmRhcmRTdWl0ZS5qYXZhIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL1Byb2Nlc3NTdGFuZGFyZFN1aXRlLmphdmEKaW5kZXggMTZjMGQwZC4uZjEyN2NhMCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL1Byb2Nlc3NTdGFuZGFyZFN1aXRlLmphdmEKKysrIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL1Byb2Nlc3NTdGFuZGFyZFN1aXRlLmphdmEKQEAgLTQ4LDkgKzQ4LDExIEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5Db2FsZXNjZVRlc3Q7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5Db25zdGFudFRlc3Q7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5Db3VudFRlc3Q7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5FbGVtZW50TWFwVGVzdDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLkZsYXRNYXBUZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuRm9sZFRlc3Q7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5HcmFwaFRlc3Q7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5JbmRleFRlc3Q7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5Mb29wc1Rlc3Q7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5NYXBUZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuTWF0Y2hUZXN0OwpAQCAtNjMsMTEgKzY1LDEzIEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5Qcm9maWxlVGVzdDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlByb2plY3RUZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuUHJvcGVydGllc1Rlc3Q7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5SZWFkVGVzdDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlNlbGVjdFRlc3Q7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5TdW1UZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuVW5mb2xkVGVzdDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlZhbHVlTWFwVGVzdDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlZlcnRleFRlc3Q7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5Xcml0ZVRlc3Q7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnNpZGVFZmZlY3QuQWdncmVnYXRlVGVzdDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuc2lkZUVmZmVjdC5FeHBsYWluVGVzdDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuc2lkZUVmZmVjdC5Hcm91cENvdW50VGVzdDsKQEAgLTEzNywxMCArMTQxLDEyIEBACiAgICAgICAgICAgICBDb2FsZXNjZVRlc3QuVHJhdmVyc2Fscy5jbGFzcywKICAgICAgICAgICAgIENvbnN0YW50VGVzdC5UcmF2ZXJzYWxzLmNsYXNzLAogICAgICAgICAgICAgQ291bnRUZXN0LlRyYXZlcnNhbHMuY2xhc3MsCisgICAgICAgICAgICBFbGVtZW50TWFwVGVzdC5UcmF2ZXJzYWxzLmNsYXNzLAogICAgICAgICAgICAgRmxhdE1hcFRlc3QuVHJhdmVyc2Fscy5jbGFzcywKICAgICAgICAgICAgIEZvbGRUZXN0LlRyYXZlcnNhbHMuY2xhc3MsCiAgICAgICAgICAgICBHcmFwaFRlc3QuVHJhdmVyc2Fscy5jbGFzcywKICAgICAgICAgICAgIExvb3BzVGVzdC5UcmF2ZXJzYWxzLmNsYXNzLAorICAgICAgICAgICAgSW5kZXhUZXN0LlRyYXZlcnNhbHMuY2xhc3MsCiAgICAgICAgICAgICBNYXBUZXN0LlRyYXZlcnNhbHMuY2xhc3MsCiAgICAgICAgICAgICBNYXRjaFRlc3QuQ291bnRNYXRjaFRyYXZlcnNhbHMuY2xhc3MsCiAgICAgICAgICAgICBNYXRjaFRlc3QuR3JlZWR5TWF0Y2hUcmF2ZXJzYWxzLmNsYXNzLApAQCAtMTU0LDEwICsxNjAsMTIgQEAKICAgICAgICAgICAgIFByb2ZpbGVUZXN0LlRyYXZlcnNhbHMuY2xhc3MsCiAgICAgICAgICAgICBQcm9qZWN0VGVzdC5UcmF2ZXJzYWxzLmNsYXNzLAogICAgICAgICAgICAgUHJvcGVydGllc1Rlc3QuVHJhdmVyc2Fscy5jbGFzcywKKyAgICAgICAgICAgIFJlYWRUZXN0LlRyYXZlcnNhbHMuY2xhc3MsCiAgICAgICAgICAgICBTZWxlY3RUZXN0LlRyYXZlcnNhbHMuY2xhc3MsCiAgICAgICAgICAgICBWZXJ0ZXhUZXN0LlRyYXZlcnNhbHMuY2xhc3MsCiAgICAgICAgICAgICBVbmZvbGRUZXN0LlRyYXZlcnNhbHMuY2xhc3MsCiAgICAgICAgICAgICBWYWx1ZU1hcFRlc3QuVHJhdmVyc2Fscy5jbGFzcywKKyAgICAgICAgICAgIFdyaXRlVGVzdC5UcmF2ZXJzYWxzLmNsYXNzLAogCiAgICAgICAgICAgICAvLyBzaWRlRWZmZWN0CiAgICAgICAgICAgICBBZ2dyZWdhdGVUZXN0LlRyYXZlcnNhbHMuY2xhc3MsCkBAIC0yMjYsOSArMjM0LDExIEBACiAgICAgICAgICAgICBDb2FsZXNjZVRlc3QuY2xhc3MsCiAgICAgICAgICAgICBDb25zdGFudFRlc3QuY2xhc3MsCiAgICAgICAgICAgICBDb3VudFRlc3QuY2xhc3MsCisgICAgICAgICAgICBFbGVtZW50TWFwVGVzdC5jbGFzcywKICAgICAgICAgICAgIEZsYXRNYXBUZXN0LmNsYXNzLAogICAgICAgICAgICAgRm9sZFRlc3QuY2xhc3MsCiAgICAgICAgICAgICBMb29wc1Rlc3QuY2xhc3MsCisgICAgICAgICAgICBJbmRleFRlc3QuY2xhc3MsCiAgICAgICAgICAgICBNYXBUZXN0LmNsYXNzLAogICAgICAgICAgICAgTWF0Y2hUZXN0LmNsYXNzLAogICAgICAgICAgICAgTWF0aFRlc3QuY2xhc3MsCmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvR3JhcGhDb21wdXRlclRlc3QuamF2YSBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci9HcmFwaENvbXB1dGVyVGVzdC5qYXZhCmluZGV4IDJiMDE4ZGIuLmQxNmM4YjggMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci9HcmFwaENvbXB1dGVyVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci9HcmFwaENvbXB1dGVyVGVzdC5qYXZhCkBAIC0xMzUwLDEzICsxMzUwLDEzIEBACiAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoTG9uZy52YWx1ZU9mKDBsKSwgcmVzdWx0LmdyYXBoKCkudHJhdmVyc2FsKCkuRSgpLmNvdW50KCkubmV4dCgpKTsKICAgICAgICAgICAgIGFzc2VydEVxdWFscyhMb25nLnZhbHVlT2YoMGwpLCByZXN1bHQuZ3JhcGgoKS50cmF2ZXJzYWwoKS5WKCkudmFsdWVzKCkuY291bnQoKS5uZXh0KCkpOwogICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKExvbmcudmFsdWVPZigwbCksIHJlc3VsdC5ncmFwaCgpLnRyYXZlcnNhbCgpLkUoKS52YWx1ZXMoKS5jb3VudCgpLm5leHQoKSk7Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoMCwgcmVzdWx0LmdyYXBoKCkudHJhdmVyc2FsKCkuVigpLnZhbHVlcygibW9uZXkiKS5zdW0oKS5uZXh0KCkpOworICAgICAgICAgICAgYXNzZXJ0RmFsc2UocmVzdWx0LmdyYXBoKCkudHJhdmVyc2FsKCkuVigpLnZhbHVlcygibW9uZXkiKS5zdW0oKS5oYXNOZXh0KCkpOwogICAgICAgICAgICAgLy8vCiAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoTG9uZy52YWx1ZU9mKDZsKSwgZ3JhcGgudHJhdmVyc2FsKCkuVigpLmNvdW50KCkubmV4dCgpKTsKICAgICAgICAgICAgIGFzc2VydEVxdWFscyhMb25nLnZhbHVlT2YoNmwpLCBncmFwaC50cmF2ZXJzYWwoKS5FKCkuY291bnQoKS5uZXh0KCkpOwogICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKExvbmcudmFsdWVPZigxMmwpLCBncmFwaC50cmF2ZXJzYWwoKS5WKCkudmFsdWVzKCkuY291bnQoKS5uZXh0KCkpOwogICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKExvbmcudmFsdWVPZig2bCksIGdyYXBoLnRyYXZlcnNhbCgpLkUoKS52YWx1ZXMoKS5jb3VudCgpLm5leHQoKSk7Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoMCwgZ3JhcGgudHJhdmVyc2FsKCkuVigpLnZhbHVlcygibW9uZXkiKS5zdW0oKS5uZXh0KCkpOworICAgICAgICAgICAgYXNzZXJ0RmFsc2UoZ3JhcGgudHJhdmVyc2FsKCkuVigpLnZhbHVlcygibW9uZXkiKS5zdW0oKS5oYXNOZXh0KCkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMzc2LDcgKzEzNzYsNyBAQAogICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKExvbmcudmFsdWVPZig2bCksIGdyYXBoLnRyYXZlcnNhbCgpLkUoKS5jb3VudCgpLm5leHQoKSk7CiAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoTG9uZy52YWx1ZU9mKDEybCksIGdyYXBoLnRyYXZlcnNhbCgpLlYoKS52YWx1ZXMoKS5jb3VudCgpLm5leHQoKSk7CiAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoTG9uZy52YWx1ZU9mKDZsKSwgZ3JhcGgudHJhdmVyc2FsKCkuRSgpLnZhbHVlcygpLmNvdW50KCkubmV4dCgpKTsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscygwLCBncmFwaC50cmF2ZXJzYWwoKS5WKCkudmFsdWVzKCJtb25leSIpLnN1bSgpLm5leHQoKSk7CisgICAgICAgICAgICBhc3NlcnRGYWxzZShncmFwaC50cmF2ZXJzYWwoKS5WKCkudmFsdWVzKCJtb25leSIpLnN1bSgpLmhhc05leHQoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEzOTYsNyArMTM5Niw3IEBACiAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoTG9uZy52YWx1ZU9mKDZsKSwgZ3JhcGgudHJhdmVyc2FsKCkuRSgpLmNvdW50KCkubmV4dCgpKTsKICAgICAgICAgICAgIGFzc2VydEVxdWFscyhMb25nLnZhbHVlT2YoMTJsKSwgZ3JhcGgudHJhdmVyc2FsKCkuVigpLnZhbHVlcygpLmNvdW50KCkubmV4dCgpKTsKICAgICAgICAgICAgIGFzc2VydEVxdWFscyhMb25nLnZhbHVlT2YoNmwpLCBncmFwaC50cmF2ZXJzYWwoKS5FKCkudmFsdWVzKCkuY291bnQoKS5uZXh0KCkpOwotICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIGdyYXBoLnRyYXZlcnNhbCgpLlYoKS52YWx1ZXMoIm1vbmV5Iikuc3VtKCkubmV4dCgpKTsKKyAgICAgICAgICAgIGFzc2VydEZhbHNlKGdyYXBoLnRyYXZlcnNhbCgpLlYoKS52YWx1ZXMoIm1vbmV5Iikuc3VtKCkuaGFzTmV4dCgpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTQxMCwxMyArMTQxMCwxMyBAQAogICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKExvbmcudmFsdWVPZig2bCksIHJlc3VsdC5ncmFwaCgpLnRyYXZlcnNhbCgpLkUoKS5jb3VudCgpLm5leHQoKSk7CiAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoTG9uZy52YWx1ZU9mKDEybCksIHJlc3VsdC5ncmFwaCgpLnRyYXZlcnNhbCgpLlYoKS52YWx1ZXMoKS5jb3VudCgpLm5leHQoKSk7CiAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoTG9uZy52YWx1ZU9mKDZsKSwgcmVzdWx0LmdyYXBoKCkudHJhdmVyc2FsKCkuRSgpLnZhbHVlcygpLmNvdW50KCkubmV4dCgpKTsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscygwLCByZXN1bHQuZ3JhcGgoKS50cmF2ZXJzYWwoKS5WKCkudmFsdWVzKCJtb25leSIpLnN1bSgpLm5leHQoKSk7CisgICAgICAgICAgICBhc3NlcnRGYWxzZShyZXN1bHQuZ3JhcGgoKS50cmF2ZXJzYWwoKS5WKCkudmFsdWVzKCJtb25leSIpLnN1bSgpLmhhc05leHQoKSk7CiAgICAgICAgICAgICAvLy8KICAgICAgICAgICAgIGFzc2VydEVxdWFscyhMb25nLnZhbHVlT2YoNmwpLCBncmFwaC50cmF2ZXJzYWwoKS5WKCkuY291bnQoKS5uZXh0KCkpOwogICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKExvbmcudmFsdWVPZig2bCksIGdyYXBoLnRyYXZlcnNhbCgpLkUoKS5jb3VudCgpLm5leHQoKSk7CiAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoTG9uZy52YWx1ZU9mKDEybCksIGdyYXBoLnRyYXZlcnNhbCgpLlYoKS52YWx1ZXMoKS5jb3VudCgpLm5leHQoKSk7CiAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoTG9uZy52YWx1ZU9mKDZsKSwgZ3JhcGgudHJhdmVyc2FsKCkuRSgpLnZhbHVlcygpLmNvdW50KCkubmV4dCgpKTsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscygwLCBncmFwaC50cmF2ZXJzYWwoKS5WKCkudmFsdWVzKCJtb25leSIpLnN1bSgpLm5leHQoKSk7CisgICAgICAgICAgICBhc3NlcnRGYWxzZShncmFwaC50cmF2ZXJzYWwoKS5WKCkudmFsdWVzKCJtb25leSIpLnN1bSgpLmhhc05leHQoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTI1MDAsNyArMjUwMCw3IEBACiAKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIGcuVigpLnJlcGVhdChfXy5vdXQoKSkuZW1pdCgpLnByb2dyYW0odnApLmRlZHVwKCkKLSAgICAgICAgICAgICAgICAgICAgLnZhbHVlTWFwKCJuYW1lIiwgInBsIikuZm9yRWFjaFJlbWFpbmluZygoTWFwPFN0cmluZywgT2JqZWN0PiBtYXApIC0+IHsKKyAgICAgICAgICAgICAgICAgICAgLnZhbHVlTWFwKCJuYW1lIiwgInBsIikuZm9yRWFjaFJlbWFpbmluZygoTWFwPE9iamVjdCwgT2JqZWN0PiBtYXApIC0+IHsKIAogICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyBuYW1lID0gKFN0cmluZykgKChMaXN0KSBtYXAuZ2V0KCJuYW1lIikpLmdldCgwKTsKICAgICAgICAgICAgICAgICBmaW5hbCBMaXN0PEludGVnZXI+IHBhdGhMZW5ndGhzID0gKExpc3Q8SW50ZWdlcj4pIG1hcC5nZXQoInBsIik7CmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvc2VhcmNoL3BhdGgvU2hvcnRlc3RQYXRoVGVzdEhlbHBlci5qYXZhIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL3NlYXJjaC9wYXRoL1Nob3J0ZXN0UGF0aFRlc3RIZWxwZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZjNhYTYzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL3NlYXJjaC9wYXRoL1Nob3J0ZXN0UGF0aFRlc3RIZWxwZXIuamF2YQpAQCAtMCwwICsxLDEwMCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5zZWFyY2gucGF0aDsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5BYnN0cmFjdEdyZW1saW5Qcm9jZXNzVGVzdDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QYXRoOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkdyYXBoVHJhdmVyc2FsU291cmNlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLl9fOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLkltbXV0YWJsZVBhdGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuTWFwSGVscGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLk11dGFibGVQYXRoOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkVkZ2U7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4OworaW1wb3J0IG9yZy5oYW1jcmVzdC5NYXRjaGVyczsKKworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworCitpbXBvcnQgc3RhdGljIG9yZy5oYW1jcmVzdC5NYXRjaGVycy5lcXVhbFRvOworaW1wb3J0IHN0YXRpYyBvcmcuaGFtY3Jlc3QuTWF0Y2hlcnMuaXM7CitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydFRoYXQ7CisKKy8qKgorICogQGF1dGhvciBEYW5pZWwgS3VwcGl0eiAoaHR0cDovL2dyZW1saW4uZ3VydSkKKyAqLworcHVibGljIGNsYXNzIFNob3J0ZXN0UGF0aFRlc3RIZWxwZXIgeworCisgICAgcHJpdmF0ZSBmaW5hbCBBYnN0cmFjdEdyZW1saW5Qcm9jZXNzVGVzdCB0ZXN0OworICAgIHByaXZhdGUgZmluYWwgR3JhcGhUcmF2ZXJzYWxTb3VyY2UgZzsKKyAgICBwcml2YXRlIGZpbmFsIE1hcDxTdHJpbmcsIFZlcnRleD4gdmVydGV4Q2FjaGU7CisgICAgcHJpdmF0ZSBmaW5hbCBNYXA8T2JqZWN0LCBNYXA8T2JqZWN0LCBFZGdlPj4gZWRnZUNhY2hlOworCisgICAgcHVibGljIFNob3J0ZXN0UGF0aFRlc3RIZWxwZXIoZmluYWwgQWJzdHJhY3RHcmVtbGluUHJvY2Vzc1Rlc3QgdGVzdCwgZmluYWwgR3JhcGhUcmF2ZXJzYWxTb3VyY2UgZykgeworICAgICAgICB0aGlzLnRlc3QgPSB0ZXN0OworICAgICAgICB0aGlzLmcgPSBnOworICAgICAgICB0aGlzLnZlcnRleENhY2hlID0gbmV3IEhhc2hNYXA8PigpOworICAgICAgICB0aGlzLmVkZ2VDYWNoZSA9IG5ldyBIYXNoTWFwPD4oKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBjaGVja1Jlc3VsdHMoZmluYWwgTGlzdDxQYXRoPiBleHBlY3RlZCwgZmluYWwgTGlzdDxQYXRoPiBhY3R1YWwpIHsKKyAgICAgICAgQWJzdHJhY3RHcmVtbGluUHJvY2Vzc1Rlc3QuY2hlY2tSZXN1bHRzKGV4cGVjdGVkLCBfXy5pbmplY3QoYWN0dWFsLnRvQXJyYXkobmV3IFBhdGhbYWN0dWFsLnNpemUoKV0pKSk7CisgICAgfQorCisgICAgcHVibGljIFBhdGggbWFrZVBhdGgoZmluYWwgU3RyaW5nLi4uIG5hbWVzKSB7CisgICAgICAgIHJldHVybiBtYWtlUGF0aChmYWxzZSwgbmFtZXMpOworICAgIH0KKworICAgIHB1YmxpYyBQYXRoIG1ha2VQYXRoKGZpbmFsIGJvb2xlYW4gaW5jbHVkZUVkZ2VzLCBmaW5hbCBTdHJpbmcuLi4gbmFtZXMpIHsKKyAgICAgICAgUGF0aCBwYXRoID0gSW1tdXRhYmxlUGF0aC5tYWtlKCk7CisgICAgICAgIGJvb2xlYW4gZmlyc3QgPSB0cnVlOworICAgICAgICBmb3IgKGZpbmFsIFN0cmluZyBuYW1lIDogbmFtZXMpIHsKKyAgICAgICAgICAgIGZpbmFsIFZlcnRleCB2ZXJ0ZXggPSB2ZXJ0ZXhDYWNoZS5jb21wdXRlSWZBYnNlbnQobmFtZSwgdGVzdDo6Y29udmVydFRvVmVydGV4KTsKKyAgICAgICAgICAgIGlmICghZmlyc3QpIHsKKyAgICAgICAgICAgICAgICBpZiAoaW5jbHVkZUVkZ2VzKSB7CisgICAgICAgICAgICAgICAgICAgIGZpbmFsIE9iamVjdCBpZDEgPSAoKFZlcnRleCkgcGF0aC5nZXQocGF0aC5zaXplKCkgLSAxKSkuaWQoKTsKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgT2JqZWN0IGlkMiA9IHZlcnRleC5pZCgpOworICAgICAgICAgICAgICAgICAgICBmaW5hbCBFZGdlIGVkZ2U7CisgICAgICAgICAgICAgICAgICAgIGlmIChlZGdlQ2FjaGUuY29udGFpbnNLZXkoaWQxKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZWRnZSA9IGVkZ2VDYWNoZS5nZXQoaWQxKS5jb21wdXRlSWZBYnNlbnQoaWQyLCBpZCAtPiBnZXRFZGdlKGlkMSwgaWQpKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlZGdlQ2FjaGUuY29udGFpbnNLZXkoaWQyKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZWRnZSA9IGVkZ2VDYWNoZS5nZXQoaWQyKS5jb21wdXRlSWZBYnNlbnQoaWQxLCBpZCAtPiBnZXRFZGdlKGlkLCBpZDIpKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVkZ2VDYWNoZS5wdXQoaWQxLCBuZXcgSGFzaE1hcDw+KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgZWRnZUNhY2hlLmdldChpZDEpLnB1dChpZDIsIGVkZ2UgPSBnZXRFZGdlKGlkMSwgaWQyKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcGF0aCA9IHBhdGguZXh0ZW5kKGVkZ2UsIENvbGxlY3Rpb25zLmVtcHR5U2V0KCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHBhdGggPSBwYXRoLmV4dGVuZCh2ZXJ0ZXgsIENvbGxlY3Rpb25zLmVtcHR5U2V0KCkpOworICAgICAgICAgICAgZmlyc3QgPSBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcGF0aDsKKyAgICB9CisKKyAgICBwcml2YXRlIEVkZ2UgZ2V0RWRnZShmaW5hbCBPYmplY3QgaWQxLCBmaW5hbCBPYmplY3QgaWQyKSB7CisgICAgICAgIHJldHVybiBnLlYoaWQxKQorICAgICAgICAgICAgICAgIC5ib3RoRSgpLmZpbHRlcihfXy5vdGhlclYoKS5oYXNJZChpZDIpKQorICAgICAgICAgICAgICAgIC5uZXh0KCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL3NlYXJjaC9wYXRoL1Nob3J0ZXN0UGF0aFZlcnRleFByb2dyYW1UZXN0LmphdmEgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvY29tcHV0ZXIvc2VhcmNoL3BhdGgvU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbVRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDMyOTlkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL3NlYXJjaC9wYXRoL1Nob3J0ZXN0UGF0aFZlcnRleFByb2dyYW1UZXN0LmphdmEKQEAgLTAsMCArMSwyOTcgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuc2VhcmNoLnBhdGg7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkxvYWRHcmFwaFdpdGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLkFic3RyYWN0R3JlbWxpblByb2Nlc3NUZXN0OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5Db21wdXRlclJlc3VsdDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlBhdGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX187CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuRGlyZWN0aW9uOworaW1wb3J0IG9yZy5qdW5pdC5CZWZvcmU7CitpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CisKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2ltcG9ydCBqYXZhLnV0aWwuc3RyZWFtLkNvbGxlY3RvcnM7CitpbXBvcnQgamF2YS51dGlsLnN0cmVhbS5TdHJlYW07CisKK2ltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5Mb2FkR3JhcGhXaXRoLkdyYXBoRGF0YS5DUkVXOworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkxvYWRHcmFwaFdpdGguR3JhcGhEYXRhLkdSQVRFRlVMOworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkxvYWRHcmFwaFdpdGguR3JhcGhEYXRhLk1PREVSTjsKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRFcXVhbHM7CitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0VHJ1ZTsKKworLyoqCisgKiBAYXV0aG9yIERhbmllbCBLdXBwaXR6IChodHRwOi8vZ3JlbWxpbi5ndXJ1KQorICovCitwdWJsaWMgY2xhc3MgU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbVRlc3QgZXh0ZW5kcyBBYnN0cmFjdEdyZW1saW5Qcm9jZXNzVGVzdCB7CisKKyAgICBwcml2YXRlIFNob3J0ZXN0UGF0aFRlc3RIZWxwZXIgaGVscGVyOworCisgICAgQEJlZm9yZQorICAgIHB1YmxpYyB2b2lkIGluaXRpYWxpemVIZWxwZXIoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgdGhpcy5oZWxwZXIgID0gbmV3IFNob3J0ZXN0UGF0aFRlc3RIZWxwZXIodGhpcywgZyk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgc2hvdWxkRmluZEFsbFNob3J0ZXN0UGF0aHNXaXRoRGVmYXVsdFBhcmFtZXRlcnMoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgQ29tcHV0ZXJSZXN1bHQgcmVzdWx0ID0gZ3JhcGguY29tcHV0ZShncmFwaFByb3ZpZGVyLmdldEdyYXBoQ29tcHV0ZXIoZ3JhcGgpLmdldENsYXNzKCkpLgorICAgICAgICAgICAgICAgIHByb2dyYW0oU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5idWlsZCgpLmNyZWF0ZShncmFwaCkpLnN1Ym1pdCgpLmdldCgpOworICAgICAgICBhc3NlcnRUcnVlKHJlc3VsdC5tZW1vcnkoKS5leGlzdHMoU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5TSE9SVEVTVF9QQVRIUykpOworICAgICAgICBmaW5hbCBMaXN0PFBhdGg+IHNob3J0ZXN0UGF0aHMgPSByZXN1bHQubWVtb3J5KCkuZ2V0KFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uU0hPUlRFU1RfUEFUSFMpOworICAgICAgICBmaW5hbCBMaXN0PFBhdGg+IGV4cGVjdGVkID0gQXJyYXlzLnN0cmVhbShBTExfU0hPUlRFU1RfUEFUSFMpLm1hcChoZWxwZXI6Om1ha2VQYXRoKS5jb2xsZWN0KENvbGxlY3RvcnMudG9MaXN0KCkpOworICAgICAgICBoZWxwZXIuY2hlY2tSZXN1bHRzKGV4cGVjdGVkLCBzaG9ydGVzdFBhdGhzKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRGaW5kQWxsU2hvcnRlc3RQYXRoc1dpdGhFZGdlc0luY2x1ZGVkKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIENvbXB1dGVyUmVzdWx0IHJlc3VsdCA9IGdyYXBoLmNvbXB1dGUoZ3JhcGhQcm92aWRlci5nZXRHcmFwaENvbXB1dGVyKGdyYXBoKS5nZXRDbGFzcygpKS4KKyAgICAgICAgICAgICAgICBwcm9ncmFtKFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uYnVpbGQoKS5pbmNsdWRlRWRnZXModHJ1ZSkuY3JlYXRlKGdyYXBoKSkuc3VibWl0KCkuZ2V0KCk7CisgICAgICAgIGFzc2VydFRydWUocmVzdWx0Lm1lbW9yeSgpLmV4aXN0cyhTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtLlNIT1JURVNUX1BBVEhTKSk7CisgICAgICAgIGZpbmFsIExpc3Q8UGF0aD4gc2hvcnRlc3RQYXRocyA9IHJlc3VsdC5tZW1vcnkoKS5nZXQoU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5TSE9SVEVTVF9QQVRIUyk7CisgICAgICAgIGZpbmFsIExpc3Q8UGF0aD4gZXhwZWN0ZWQgPSBBcnJheXMuc3RyZWFtKEFMTF9TSE9SVEVTVF9QQVRIUykubWFwKHAgLT4gaGVscGVyLm1ha2VQYXRoKHRydWUsIHApKQorICAgICAgICAgICAgICAgIC5jb2xsZWN0KENvbGxlY3RvcnMudG9MaXN0KCkpOworICAgICAgICBoZWxwZXIuY2hlY2tSZXN1bHRzKGV4cGVjdGVkLCBzaG9ydGVzdFBhdGhzKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRGaW5kT3V0RGlyZWN0ZWRTaG9ydGVzdFBhdGhzKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIExpc3Q8U2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbT4gcHJvZ3JhbXMgPSBBcnJheXMuYXNMaXN0KAorICAgICAgICAgICAgICAgIFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uYnVpbGQoKS5lZGdlVHJhdmVyc2FsKF9fLm91dEUoKSkuY3JlYXRlKGdyYXBoKSwKKyAgICAgICAgICAgICAgICBTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtLmJ1aWxkKCkuZWRnZURpcmVjdGlvbihEaXJlY3Rpb24uT1VUKS5jcmVhdGUoZ3JhcGgpKTsKKyAgICAgICAgZm9yIChmaW5hbCBTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtIHByb2dyYW0gOiBwcm9ncmFtcykgeworICAgICAgICAgICAgZmluYWwgQ29tcHV0ZXJSZXN1bHQgcmVzdWx0ID0gZ3JhcGguY29tcHV0ZShncmFwaFByb3ZpZGVyLmdldEdyYXBoQ29tcHV0ZXIoZ3JhcGgpLmdldENsYXNzKCkpLgorICAgICAgICAgICAgICAgICAgICBwcm9ncmFtKHByb2dyYW0pLnN1Ym1pdCgpLmdldCgpOworICAgICAgICAgICAgYXNzZXJ0VHJ1ZShyZXN1bHQubWVtb3J5KCkuZXhpc3RzKFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uU0hPUlRFU1RfUEFUSFMpKTsKKyAgICAgICAgICAgIGZpbmFsIExpc3Q8UGF0aD4gc2hvcnRlc3RQYXRocyA9IHJlc3VsdC5tZW1vcnkoKS5nZXQoU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5TSE9SVEVTVF9QQVRIUyk7CisgICAgICAgICAgICBmaW5hbCBMaXN0PFBhdGg+IGV4cGVjdGVkID0gQXJyYXlzLnN0cmVhbShBTExfU0hPUlRFU1RfUEFUSFMpCisgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIocCAtPiAocFswXS5lcXVhbHMoIm1hcmtvIikgJiYgIXBbcC5sZW5ndGggLSAxXS5lcXVhbHMoInBldGVyIikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHBbMF0uZXF1YWxzKCJ2YWRhcyIpICYmIHAubGVuZ3RoID09IDEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHBbMF0uZXF1YWxzKCJsb3AiKSAmJiBwLmxlbmd0aCA9PSAxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IChwWzBdLmVxdWFscygiam9zaCIpICYmIEFycmF5cy5hc0xpc3QoImxvcCIsICJqb3NoIiwgInJpcHBsZSIpLmNvbnRhaW5zKHBbcC5sZW5ndGggLSAxXSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHBbMF0uZXF1YWxzKCJyaXBwbGUiKSAmJiBwLmxlbmd0aCA9PSAxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IChwWzBdLmVxdWFscygicGV0ZXIiKSAmJiBBcnJheXMuYXNMaXN0KCJsb3AiLCAicGV0ZXIiKS5jb250YWlucyhwW3AubGVuZ3RoIC0gMV0pKSkKKyAgICAgICAgICAgICAgICAgICAgLm1hcChoZWxwZXI6Om1ha2VQYXRoKS5jb2xsZWN0KENvbGxlY3RvcnMudG9MaXN0KCkpOworICAgICAgICAgICAgaGVscGVyLmNoZWNrUmVzdWx0cyhleHBlY3RlZCwgc2hvcnRlc3RQYXRocyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRGaW5kSW5EaXJlY3RlZFNob3J0ZXN0UGF0aHMoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgTGlzdDxTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtPiBwcm9ncmFtcyA9IEFycmF5cy5hc0xpc3QoCisgICAgICAgICAgICAgICAgU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5idWlsZCgpLmVkZ2VUcmF2ZXJzYWwoX18uaW5FKCkpLmNyZWF0ZShncmFwaCksCisgICAgICAgICAgICAgICAgU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5idWlsZCgpLmVkZ2VEaXJlY3Rpb24oRGlyZWN0aW9uLklOKS5jcmVhdGUoZ3JhcGgpKTsKKyAgICAgICAgZm9yIChmaW5hbCBTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtIHByb2dyYW0gOiBwcm9ncmFtcykgeworICAgICAgICAgICAgZmluYWwgQ29tcHV0ZXJSZXN1bHQgcmVzdWx0ID0gZ3JhcGguY29tcHV0ZShncmFwaFByb3ZpZGVyLmdldEdyYXBoQ29tcHV0ZXIoZ3JhcGgpLmdldENsYXNzKCkpLgorICAgICAgICAgICAgICAgICAgICBwcm9ncmFtKHByb2dyYW0pLnN1Ym1pdCgpLmdldCgpOworICAgICAgICAgICAgYXNzZXJ0VHJ1ZShyZXN1bHQubWVtb3J5KCkuZXhpc3RzKFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uU0hPUlRFU1RfUEFUSFMpKTsKKyAgICAgICAgICAgIGZpbmFsIExpc3Q8UGF0aD4gc2hvcnRlc3RQYXRocyA9IHJlc3VsdC5tZW1vcnkoKS5nZXQoU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5TSE9SVEVTVF9QQVRIUyk7CisgICAgICAgICAgICBmaW5hbCBMaXN0PFBhdGg+IGV4cGVjdGVkID0gQXJyYXlzLnN0cmVhbShBTExfU0hPUlRFU1RfUEFUSFMpCisgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIocCAtPiAocFswXS5lcXVhbHMoIm1hcmtvIikgJiYgcC5sZW5ndGggPT0gMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAocFswXS5lcXVhbHMoInZhZGFzIikgJiYgQXJyYXlzLmFzTGlzdCgibWFya28iLCAidmFkYXMiKS5jb250YWlucyhwW3AubGVuZ3RoIC0gMV0pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IChwWzBdLmVxdWFscygibG9wIikgJiYgQXJyYXlzLmFzTGlzdCgibWFya28iLCAibG9wIiwgImpvc2giLCAicGV0ZXIiKS5jb250YWlucyhwW3AubGVuZ3RoIC0gMV0pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IChwWzBdLmVxdWFscygiam9zaCIpICYmIEFycmF5cy5hc0xpc3QoIm1hcmtvIiwgImpvc2giKS5jb250YWlucyhwW3AubGVuZ3RoIC0gMV0pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IChwWzBdLmVxdWFscygicmlwcGxlIikgJiYgQXJyYXlzLmFzTGlzdCgibWFya28iLCAiam9zaCIsICJyaXBwbGUiKS5jb250YWlucyhwW3AubGVuZ3RoIC0gMV0pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IChwWzBdLmVxdWFscygicGV0ZXIiKSAmJiBwLmxlbmd0aCA9PSAxKSkKKyAgICAgICAgICAgICAgICAgICAgLm1hcChoZWxwZXI6Om1ha2VQYXRoKS5jb2xsZWN0KENvbGxlY3RvcnMudG9MaXN0KCkpOworICAgICAgICAgICAgaGVscGVyLmNoZWNrUmVzdWx0cyhleHBlY3RlZCwgc2hvcnRlc3RQYXRocyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRGaW5kRGlyZWN0ZWRTaG9ydGVzdFBhdGhzV2l0aEVkZ2VzSW5jbHVkZWQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgQ29tcHV0ZXJSZXN1bHQgcmVzdWx0ID0gZ3JhcGguY29tcHV0ZShncmFwaFByb3ZpZGVyLmdldEdyYXBoQ29tcHV0ZXIoZ3JhcGgpLmdldENsYXNzKCkpLgorICAgICAgICAgICAgICAgIHByb2dyYW0oU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5idWlsZCgpLmVkZ2VUcmF2ZXJzYWwoX18ub3V0RSgpKS5pbmNsdWRlRWRnZXModHJ1ZSkuY3JlYXRlKGdyYXBoKSkuc3VibWl0KCkuZ2V0KCk7CisgICAgICAgIGFzc2VydFRydWUocmVzdWx0Lm1lbW9yeSgpLmV4aXN0cyhTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtLlNIT1JURVNUX1BBVEhTKSk7CisgICAgICAgIGZpbmFsIExpc3Q8UGF0aD4gc2hvcnRlc3RQYXRocyA9IHJlc3VsdC5tZW1vcnkoKS5nZXQoU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5TSE9SVEVTVF9QQVRIUyk7CisgICAgICAgIGZpbmFsIExpc3Q8UGF0aD4gZXhwZWN0ZWQgPSBBcnJheXMuc3RyZWFtKEFMTF9TSE9SVEVTVF9QQVRIUykKKyAgICAgICAgICAgICAgICAuZmlsdGVyKHAgLT4gKHBbMF0uZXF1YWxzKCJtYXJrbyIpICYmICFwW3AubGVuZ3RoIC0gMV0uZXF1YWxzKCJwZXRlciIpKQorICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHBbMF0uZXF1YWxzKCJ2YWRhcyIpICYmIHAubGVuZ3RoID09IDEpCisgICAgICAgICAgICAgICAgICAgICAgICB8fCAocFswXS5lcXVhbHMoImxvcCIpICYmIHAubGVuZ3RoID09IDEpCisgICAgICAgICAgICAgICAgICAgICAgICB8fCAocFswXS5lcXVhbHMoImpvc2giKSAmJiBBcnJheXMuYXNMaXN0KCJsb3AiLCAiam9zaCIsICJyaXBwbGUiKS5jb250YWlucyhwW3AubGVuZ3RoIC0gMV0pKQorICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHBbMF0uZXF1YWxzKCJyaXBwbGUiKSAmJiBwLmxlbmd0aCA9PSAxKQorICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHBbMF0uZXF1YWxzKCJwZXRlciIpICYmIEFycmF5cy5hc0xpc3QoImxvcCIsICJwZXRlciIpLmNvbnRhaW5zKHBbcC5sZW5ndGggLSAxXSkpKQorICAgICAgICAgICAgICAgIC5tYXAocCAtPiBoZWxwZXIubWFrZVBhdGgodHJ1ZSwgcCkpLmNvbGxlY3QoQ29sbGVjdG9ycy50b0xpc3QoKSk7CisgICAgICAgIGhlbHBlci5jaGVja1Jlc3VsdHMoZXhwZWN0ZWQsIHNob3J0ZXN0UGF0aHMpOworICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIHNob3VsZEZpbmRTaG9ydGVzdFBhdGhzV2l0aFN0YXJ0VmVydGV4RmlsdGVyKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIENvbXB1dGVyUmVzdWx0IHJlc3VsdCA9IGdyYXBoLmNvbXB1dGUoZ3JhcGhQcm92aWRlci5nZXRHcmFwaENvbXB1dGVyKGdyYXBoKS5nZXRDbGFzcygpKS4KKyAgICAgICAgICAgICAgICBwcm9ncmFtKFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uYnVpbGQoKS5zb3VyY2UoX18uaGFzKCJuYW1lIiwgIm1hcmtvIikpLmNyZWF0ZShncmFwaCkpLnN1Ym1pdCgpLmdldCgpOworICAgICAgICBhc3NlcnRUcnVlKHJlc3VsdC5tZW1vcnkoKS5leGlzdHMoU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5TSE9SVEVTVF9QQVRIUykpOworICAgICAgICBmaW5hbCBMaXN0PFBhdGg+IHNob3J0ZXN0UGF0aHMgPSByZXN1bHQubWVtb3J5KCkuZ2V0KFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uU0hPUlRFU1RfUEFUSFMpOworICAgICAgICBmaW5hbCBMaXN0PFBhdGg+IGV4cGVjdGVkID0gQXJyYXlzLnN0cmVhbShBTExfU0hPUlRFU1RfUEFUSFMpCisgICAgICAgICAgICAgICAgLmZpbHRlcihwIC0+IHBbMF0uZXF1YWxzKCJtYXJrbyIpKS5tYXAoaGVscGVyOjptYWtlUGF0aCkuY29sbGVjdChDb2xsZWN0b3JzLnRvTGlzdCgpKTsKKyAgICAgICAgaGVscGVyLmNoZWNrUmVzdWx0cyhleHBlY3RlZCwgc2hvcnRlc3RQYXRocyk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgc2hvdWxkRmluZFNob3J0ZXN0UGF0aHNXaXRoRW5kVmVydGV4RmlsdGVyKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIENvbXB1dGVyUmVzdWx0IHJlc3VsdCA9IGdyYXBoLmNvbXB1dGUoZ3JhcGhQcm92aWRlci5nZXRHcmFwaENvbXB1dGVyKGdyYXBoKS5nZXRDbGFzcygpKS4KKyAgICAgICAgICAgICAgICBwcm9ncmFtKFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uYnVpbGQoKS50YXJnZXQoX18uaGFzKCJuYW1lIiwgIm1hcmtvIikpLmNyZWF0ZShncmFwaCkpLnN1Ym1pdCgpLmdldCgpOworICAgICAgICBhc3NlcnRUcnVlKHJlc3VsdC5tZW1vcnkoKS5leGlzdHMoU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5TSE9SVEVTVF9QQVRIUykpOworICAgICAgICBmaW5hbCBMaXN0PFBhdGg+IHNob3J0ZXN0UGF0aHMgPSByZXN1bHQubWVtb3J5KCkuZ2V0KFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uU0hPUlRFU1RfUEFUSFMpOworICAgICAgICBmaW5hbCBMaXN0PFBhdGg+IGV4cGVjdGVkID0gQXJyYXlzLnN0cmVhbShBTExfU0hPUlRFU1RfUEFUSFMpCisgICAgICAgICAgICAgICAgLmZpbHRlcihwIC0+IHBbcC5sZW5ndGggLSAxXS5lcXVhbHMoIm1hcmtvIikpLm1hcChoZWxwZXI6Om1ha2VQYXRoKS5jb2xsZWN0KENvbGxlY3RvcnMudG9MaXN0KCkpOworICAgICAgICBoZWxwZXIuY2hlY2tSZXN1bHRzKGV4cGVjdGVkLCBzaG9ydGVzdFBhdGhzKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRGaW5kU2hvcnRlc3RQYXRoc1dpdGhTdGFydEVuZFZlcnRleEZpbHRlcigpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBmaW5hbCBDb21wdXRlclJlc3VsdCByZXN1bHQgPSBncmFwaC5jb21wdXRlKGdyYXBoUHJvdmlkZXIuZ2V0R3JhcGhDb21wdXRlcihncmFwaCkuZ2V0Q2xhc3MoKSkuCisgICAgICAgICAgICAgICAgcHJvZ3JhbShTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtLmJ1aWxkKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIC5zb3VyY2UoX18uaGFzKCJuYW1lIiwgIm1hcmtvIikpCisgICAgICAgICAgICAgICAgICAgICAgICAudGFyZ2V0KF9fLmhhc0xhYmVsKCJzb2Z0d2FyZSIpKS5jcmVhdGUoZ3JhcGgpKS5zdWJtaXQoKS5nZXQoKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShyZXN1bHQubWVtb3J5KCkuZXhpc3RzKFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uU0hPUlRFU1RfUEFUSFMpKTsKKyAgICAgICAgZmluYWwgTGlzdDxQYXRoPiBzaG9ydGVzdFBhdGhzID0gcmVzdWx0Lm1lbW9yeSgpLmdldChTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtLlNIT1JURVNUX1BBVEhTKTsKKyAgICAgICAgZmluYWwgTGlzdDxQYXRoPiBleHBlY3RlZCA9IEFycmF5cy5zdHJlYW0oQUxMX1NIT1JURVNUX1BBVEhTKQorICAgICAgICAgICAgICAgIC5maWx0ZXIocCAtPgorICAgICAgICAgICAgICAgICAgICAgICAgcFswXS5lcXVhbHMoIm1hcmtvIikgJiYgQXJyYXlzLmFzTGlzdCgibG9wIiwgInJpcHBsZSIpLmNvbnRhaW5zKHBbcC5sZW5ndGggLSAxXSkpCisgICAgICAgICAgICAgICAgLm1hcChoZWxwZXI6Om1ha2VQYXRoKS5jb2xsZWN0KENvbGxlY3RvcnMudG9MaXN0KCkpOworICAgICAgICBoZWxwZXIuY2hlY2tSZXN1bHRzKGV4cGVjdGVkLCBzaG9ydGVzdFBhdGhzKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRVc2VDdXN0b21EaXN0YW5jZVByb3BlcnR5KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIENvbXB1dGVyUmVzdWx0IHJlc3VsdCA9IGdyYXBoLmNvbXB1dGUoZ3JhcGhQcm92aWRlci5nZXRHcmFwaENvbXB1dGVyKGdyYXBoKS5nZXRDbGFzcygpKS4KKyAgICAgICAgICAgICAgICBwcm9ncmFtKFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uYnVpbGQoKQorICAgICAgICAgICAgICAgICAgICAgICAgLnNvdXJjZShfXy5oYXMoIm5hbWUiLCAibWFya28iKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIC50YXJnZXQoX18uaGFzKCJuYW1lIiwgImpvc2giKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIC5kaXN0YW5jZVByb3BlcnR5KCJ3ZWlnaHQiKS5jcmVhdGUoZ3JhcGgpKS5zdWJtaXQoKS5nZXQoKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShyZXN1bHQubWVtb3J5KCkuZXhpc3RzKFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uU0hPUlRFU1RfUEFUSFMpKTsKKyAgICAgICAgZmluYWwgTGlzdDxQYXRoPiBzaG9ydGVzdFBhdGhzID0gcmVzdWx0Lm1lbW9yeSgpLmdldChTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtLlNIT1JURVNUX1BBVEhTKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIHNob3J0ZXN0UGF0aHMuc2l6ZSgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKGhlbHBlci5tYWtlUGF0aCgibWFya28iLCAibG9wIiwgImpvc2giKSwgc2hvcnRlc3RQYXRocy5nZXQoMCkpOworICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoQ1JFVykKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRGaW5kRXF1YWxMZW5ndGhQYXRocygpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBmaW5hbCBDb21wdXRlclJlc3VsdCByZXN1bHQgPSBncmFwaC5jb21wdXRlKGdyYXBoUHJvdmlkZXIuZ2V0R3JhcGhDb21wdXRlcihncmFwaCkuZ2V0Q2xhc3MoKSkuCisgICAgICAgICAgICAgICAgcHJvZ3JhbShTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtLmJ1aWxkKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIC5lZGdlVHJhdmVyc2FsKF9fLmJvdGhFKCJ1c2VzIikpCisgICAgICAgICAgICAgICAgICAgICAgICAuc291cmNlKF9fLmhhcygibmFtZSIsICJkYW5pZWwiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIC50YXJnZXQoX18uaGFzKCJuYW1lIiwgInN0ZXBoZW4iKSkuY3JlYXRlKGdyYXBoKSkuc3VibWl0KCkuZ2V0KCk7CisgICAgICAgIGFzc2VydFRydWUocmVzdWx0Lm1lbW9yeSgpLmV4aXN0cyhTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtLlNIT1JURVNUX1BBVEhTKSk7CisgICAgICAgIGZpbmFsIExpc3Q8UGF0aD4gc2hvcnRlc3RQYXRocyA9IHJlc3VsdC5tZW1vcnkoKS5nZXQoU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5TSE9SVEVTVF9QQVRIUyk7CisgICAgICAgIGZpbmFsIExpc3Q8UGF0aD4gZXhwZWN0ZWQgPSBBcnJheXMuYXNMaXN0KAorICAgICAgICAgICAgICAgIGhlbHBlci5tYWtlUGF0aCgiZGFuaWVsIiwgImdyZW1saW4iLCAic3RlcGhlbiIpLAorICAgICAgICAgICAgICAgIGhlbHBlci5tYWtlUGF0aCgiZGFuaWVsIiwgInRpbmtlcmdyYXBoIiwgInN0ZXBoZW4iKSk7CisgICAgICAgIGhlbHBlci5jaGVja1Jlc3VsdHMoZXhwZWN0ZWQsIHNob3J0ZXN0UGF0aHMpOworICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoR1JBVEVGVUwpCisgICAgcHVibGljIHZvaWQgc2hvdWxkRmluZEVxdWFsTGVuZ3RoUGF0aHNVc2luZ0Rpc3RhbmNlUHJvcGVydHkoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgQ29tcHV0ZXJSZXN1bHQgcmVzdWx0ID0gZ3JhcGguY29tcHV0ZShncmFwaFByb3ZpZGVyLmdldEdyYXBoQ29tcHV0ZXIoZ3JhcGgpLmdldENsYXNzKCkpLgorICAgICAgICAgICAgICAgIHByb2dyYW0oU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5idWlsZCgpCisgICAgICAgICAgICAgICAgICAgICAgICAuZWRnZVRyYXZlcnNhbChfXy5vdXRFKCJmb2xsb3dlZEJ5IikpCisgICAgICAgICAgICAgICAgICAgICAgICAuc291cmNlKF9fLmhhcygic29uZyIsICJuYW1lIiwgIk1JR0hUIEFTIFdFTEwiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIC50YXJnZXQoX18uaGFzKCJzb25nIiwgIm5hbWUiLCAiTUFZQkUgWU9VIEtOT1cgSE9XIEkgRkVFTCIpKQorICAgICAgICAgICAgICAgICAgICAgICAgLmRpc3RhbmNlUHJvcGVydHkoIndlaWdodCIpCisgICAgICAgICAgICAgICAgICAgICAgICAuY3JlYXRlKGdyYXBoKSkuc3VibWl0KCkuZ2V0KCk7CisgICAgICAgIGFzc2VydFRydWUocmVzdWx0Lm1lbW9yeSgpLmV4aXN0cyhTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtLlNIT1JURVNUX1BBVEhTKSk7CisgICAgICAgIGZpbmFsIExpc3Q8UGF0aD4gc2hvcnRlc3RQYXRocyA9IHJlc3VsdC5tZW1vcnkoKS5nZXQoU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5TSE9SVEVTVF9QQVRIUyk7CisgICAgICAgIGZpbmFsIExpc3Q8UGF0aD4gZXhwZWN0ZWQgPSBBcnJheXMuYXNMaXN0KAorICAgICAgICAgICAgICAgIGhlbHBlci5tYWtlUGF0aCgiTUlHSFQgQVMgV0VMTCIsICJEUlVNUyIsICJNQVlCRSBZT1UgS05PVyBIT1cgSSBGRUVMIiksCisgICAgICAgICAgICAgICAgaGVscGVyLm1ha2VQYXRoKCJNSUdIVCBBUyBXRUxMIiwgIlNISVAgT0YgRk9PTFMiLCAiTUFZQkUgWU9VIEtOT1cgSE9XIEkgRkVFTCIpKTsKKyAgICAgICAgaGVscGVyLmNoZWNrUmVzdWx0cyhleHBlY3RlZCwgc2hvcnRlc3RQYXRocyk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgc2hvdWxkUmVzcGVjdE1heERpc3RhbmNlKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIENvbXB1dGVyUmVzdWx0IHJlc3VsdCA9IGdyYXBoLmNvbXB1dGUoZ3JhcGhQcm92aWRlci5nZXRHcmFwaENvbXB1dGVyKGdyYXBoKS5nZXRDbGFzcygpKS4KKyAgICAgICAgICAgICAgICBwcm9ncmFtKFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uYnVpbGQoKQorICAgICAgICAgICAgICAgICAgICAgICAgLnNvdXJjZShfXy5oYXMoIm5hbWUiLCAibWFya28iKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIC5tYXhEaXN0YW5jZSgxKS5jcmVhdGUoZ3JhcGgpKS5zdWJtaXQoKS5nZXQoKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShyZXN1bHQubWVtb3J5KCkuZXhpc3RzKFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uU0hPUlRFU1RfUEFUSFMpKTsKKyAgICAgICAgZmluYWwgTGlzdDxQYXRoPiBzaG9ydGVzdFBhdGhzID0gcmVzdWx0Lm1lbW9yeSgpLmdldChTaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtLlNIT1JURVNUX1BBVEhTKTsKKyAgICAgICAgZmluYWwgTGlzdDxQYXRoPiBleHBlY3RlZCA9IEFycmF5cy5zdHJlYW0oQUxMX1NIT1JURVNUX1BBVEhTKQorICAgICAgICAgICAgICAgIC5maWx0ZXIocCAtPiBwWzBdLmVxdWFscygibWFya28iKSAmJiBwLmxlbmd0aCA8PSAyKS5tYXAoaGVscGVyOjptYWtlUGF0aCkuY29sbGVjdChDb2xsZWN0b3JzLnRvTGlzdCgpKTsKKyAgICAgICAgaGVscGVyLmNoZWNrUmVzdWx0cyhleHBlY3RlZCwgc2hvcnRlc3RQYXRocyk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgc2hvdWxkUmVzcGVjdE1heEN1c3RvbURpc3RhbmNlKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIENvbXB1dGVyUmVzdWx0IHJlc3VsdCA9IGdyYXBoLmNvbXB1dGUoZ3JhcGhQcm92aWRlci5nZXRHcmFwaENvbXB1dGVyKGdyYXBoKS5nZXRDbGFzcygpKS4KKyAgICAgICAgICAgICAgICBwcm9ncmFtKFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uYnVpbGQoKQorICAgICAgICAgICAgICAgICAgICAgICAgLnNvdXJjZShfXy5oYXMoIm5hbWUiLCAidmFkYXMiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIC5kaXN0YW5jZVByb3BlcnR5KCJ3ZWlnaHQiKS5tYXhEaXN0YW5jZSgxLjMpLmNyZWF0ZShncmFwaCkpLnN1Ym1pdCgpLmdldCgpOworICAgICAgICBhc3NlcnRUcnVlKHJlc3VsdC5tZW1vcnkoKS5leGlzdHMoU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbS5TSE9SVEVTVF9QQVRIUykpOworICAgICAgICBmaW5hbCBMaXN0PFBhdGg+IHNob3J0ZXN0UGF0aHMgPSByZXN1bHQubWVtb3J5KCkuZ2V0KFNob3J0ZXN0UGF0aFZlcnRleFByb2dyYW0uU0hPUlRFU1RfUEFUSFMpOworICAgICAgICBmaW5hbCBMaXN0PFBhdGg+IGV4cGVjdGVkID0gU3RyZWFtLmNvbmNhdChBcnJheXMuc3RyZWFtKEFMTF9TSE9SVEVTVF9QQVRIUykKKyAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIocCAtPiBwWzBdLmVxdWFscygidmFkYXMiKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheXMuYXNMaXN0KCJ2YWRhcyIsICJtYXJrbyIsICJsb3AiLCAicGV0ZXIiKS5jb250YWlucyhwW3AubGVuZ3RoIC0gMV0pKQorICAgICAgICAgICAgICAgICAgICAgICAgLm1hcChoZWxwZXI6Om1ha2VQYXRoKSwKKyAgICAgICAgICAgICAgICBTdHJlYW0ub2YoaGVscGVyLm1ha2VQYXRoKCJ2YWRhcyIsICJtYXJrbyIsICJsb3AiLCAiam9zaCIpKSkKKyAgICAgICAgICAgICAgICAuY29sbGVjdChDb2xsZWN0b3JzLnRvTGlzdCgpKTsKKyAgICAgICAgaGVscGVyLmNoZWNrUmVzdWx0cyhleHBlY3RlZCwgc2hvcnRlc3RQYXRocyk7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmdbXVtdIEFMTF9TSE9SVEVTVF9QQVRIUyA9IG5ldyBTdHJpbmdbXVtdeworICAgICAgICAgICAgbmV3IFN0cmluZ1tdeyJtYXJrbyJ9LAorICAgICAgICAgICAgbmV3IFN0cmluZ1tdeyJtYXJrbyIsICJ2YWRhcyJ9LAorICAgICAgICAgICAgbmV3IFN0cmluZ1tdeyJtYXJrbyIsICJsb3AifSwKKyAgICAgICAgICAgIG5ldyBTdHJpbmdbXXsibWFya28iLCAibG9wIiwgInBldGVyIn0sCisgICAgICAgICAgICBuZXcgU3RyaW5nW117Im1hcmtvIiwgImpvc2gifSwKKyAgICAgICAgICAgIG5ldyBTdHJpbmdbXXsibWFya28iLCAiam9zaCIsICJyaXBwbGUifSwKKyAgICAgICAgICAgIG5ldyBTdHJpbmdbXXsidmFkYXMifSwKKyAgICAgICAgICAgIG5ldyBTdHJpbmdbXXsidmFkYXMiLCAibWFya28ifSwKKyAgICAgICAgICAgIG5ldyBTdHJpbmdbXXsidmFkYXMiLCAibWFya28iLCAibG9wIn0sCisgICAgICAgICAgICBuZXcgU3RyaW5nW117InZhZGFzIiwgIm1hcmtvIiwgImxvcCIsICJwZXRlciJ9LAorICAgICAgICAgICAgbmV3IFN0cmluZ1tdeyJ2YWRhcyIsICJtYXJrbyIsICJqb3NoIiwgInJpcHBsZSJ9LAorICAgICAgICAgICAgbmV3IFN0cmluZ1tdeyJ2YWRhcyIsICJtYXJrbyIsICJqb3NoIn0sCisgICAgICAgICAgICBuZXcgU3RyaW5nW117ImxvcCJ9LAorICAgICAgICAgICAgbmV3IFN0cmluZ1tdeyJsb3AiLCAibWFya28ifSwKKyAgICAgICAgICAgIG5ldyBTdHJpbmdbXXsibG9wIiwgIm1hcmtvIiwgInZhZGFzIn0sCisgICAgICAgICAgICBuZXcgU3RyaW5nW117ImxvcCIsICJqb3NoIn0sCisgICAgICAgICAgICBuZXcgU3RyaW5nW117ImxvcCIsICJqb3NoIiwgInJpcHBsZSJ9LAorICAgICAgICAgICAgbmV3IFN0cmluZ1tdeyJsb3AiLCAicGV0ZXIifSwKKyAgICAgICAgICAgIG5ldyBTdHJpbmdbXXsiam9zaCJ9LAorICAgICAgICAgICAgbmV3IFN0cmluZ1tdeyJqb3NoIiwgIm1hcmtvIn0sCisgICAgICAgICAgICBuZXcgU3RyaW5nW117Impvc2giLCAibWFya28iLCAidmFkYXMifSwKKyAgICAgICAgICAgIG5ldyBTdHJpbmdbXXsiam9zaCIsICJsb3AifSwKKyAgICAgICAgICAgIG5ldyBTdHJpbmdbXXsiam9zaCIsICJsb3AiLCAicGV0ZXIifSwKKyAgICAgICAgICAgIG5ldyBTdHJpbmdbXXsiam9zaCIsICJyaXBwbGUifSwKKyAgICAgICAgICAgIG5ldyBTdHJpbmdbXXsicmlwcGxlIn0sCisgICAgICAgICAgICBuZXcgU3RyaW5nW117InJpcHBsZSIsICJqb3NoIn0sCisgICAgICAgICAgICBuZXcgU3RyaW5nW117InJpcHBsZSIsICJqb3NoIiwgIm1hcmtvIn0sCisgICAgICAgICAgICBuZXcgU3RyaW5nW117InJpcHBsZSIsICJqb3NoIiwgIm1hcmtvIiwgInZhZGFzIn0sCisgICAgICAgICAgICBuZXcgU3RyaW5nW117InJpcHBsZSIsICJqb3NoIiwgImxvcCJ9LAorICAgICAgICAgICAgbmV3IFN0cmluZ1tdeyJyaXBwbGUiLCAiam9zaCIsICJsb3AiLCAicGV0ZXIifSwKKyAgICAgICAgICAgIG5ldyBTdHJpbmdbXXsicGV0ZXIifSwKKyAgICAgICAgICAgIG5ldyBTdHJpbmdbXXsicGV0ZXIiLCAibG9wIn0sCisgICAgICAgICAgICBuZXcgU3RyaW5nW117InBldGVyIiwgImxvcCIsICJtYXJrbyJ9LAorICAgICAgICAgICAgbmV3IFN0cmluZ1tdeyJwZXRlciIsICJsb3AiLCAibWFya28iLCAidmFkYXMifSwKKyAgICAgICAgICAgIG5ldyBTdHJpbmdbXXsicGV0ZXIiLCAibG9wIiwgImpvc2gifSwKKyAgICAgICAgICAgIG5ldyBTdHJpbmdbXXsicGV0ZXIiLCAibG9wIiwgImpvc2giLCAicmlwcGxlIn0KKyAgICB9OworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvQ29yZVRyYXZlcnNhbFRlc3QuamF2YSBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvQ29yZVRyYXZlcnNhbFRlc3QuamF2YQppbmRleCAwNDQxN2EwLi5jZjM0ZWUyIDEwMDY0NAotLS0gYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL0NvcmVUcmF2ZXJzYWxUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9Db3JlVHJhdmVyc2FsVGVzdC5qYXZhCkBAIC00OCw4ICs0OCwxMCBAQAogaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLkFub255bW91c1RyYXZlcnNhbFNvdXJjZS50cmF2ZXJzYWw7CiBpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLl9fLmluamVjdDsKIGltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGguRmVhdHVyZXMuR3JhcGhGZWF0dXJlcy5GRUFUVVJFX1RSQU5TQUNUSU9OUzsKK2ltcG9ydCBzdGF0aWMgb3JnLmhhbWNyZXN0LmNvcmUuU3RyaW5nU3RhcnRzV2l0aC5zdGFydHNXaXRoOwogaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydEVxdWFsczsKIGltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRGYWxzZTsKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRUaGF0OwogaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydFRydWU7CiBpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuZmFpbDsKIApAQCAtMjY3LDYgKzI2OSw3IEBACiAgICAgICAgIC8vVGhleSBzaG91bGQgYmUgY29udmVydGVkIHRvIHJlZ3VsYXIgZXhjZXB0aW9ucyBiZWZvcmUgcmV0dXJuaW5nIHRvIHRoZSB0aGUgdXNlci4KICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIGcuVigpLmhhcygiZm9vIikubmV4dCgpOworICAgICAgICAgICAgZmFpbCgiRXhwZWN0ZWQgYSB1c2VyIGZhY2luZyBOb1N1Y2hFbGVtZW50RXhjZXB0aW9uIik7CiAgICAgICAgIH0gY2F0Y2ggKE5vU3VjaEVsZW1lbnRFeGNlcHRpb24gZSkgewogICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKE5vU3VjaEVsZW1lbnRFeGNlcHRpb24uY2xhc3MsIGUuZ2V0Q2xhc3MoKSk7CiAgICAgICAgIH0KQEAgLTI4OSw3ICsyOTIsNiBAQAogICAgICAgICB9IGNhdGNoIChOb1N1Y2hFbGVtZW50RXhjZXB0aW9uIGUpIHsKICAgICAgICAgICAgIGFzc2VydEVxdWFscyhGYXN0Tm9TdWNoRWxlbWVudEV4Y2VwdGlvbi5jbGFzcywgZS5nZXRDbGFzcygpKTsKICAgICAgICAgfQotCiAgICAgfQogCiAgICAgQFRlc3QKQEAgLTI5OSw0ICszMDEsMjYgQEAKICAgICAgICAgYXNzZXJ0RXF1YWxzKDYsIHNpbXVsYXRlZFJlbW90ZUcuVigpLmNvdW50KCkubmV4dCgpLmludFZhbHVlKCkpOwogICAgICAgICBhc3NlcnRFcXVhbHMoIm1hcmtvIiwgc2ltdWxhdGVkUmVtb3RlRy5WKCkuaGFzKCJuYW1lIiwgIm1hcmtvIikudmFsdWVzKCJuYW1lIikubmV4dCgpKTsKICAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRUaHJvd05pY2VFeGNlcHRpb25XaGVuTWFwS2V5Tm90Rm91bmRJbk1hdGhTdGVwKCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgZy5WKCkuaGFzTGFiZWwoInBlcnNvbiIpLnByb2plY3QoImFnZSIpLmJ5KCJhZ2UiKS5hcygieCIpLm1hdGgoIngiKS5ieSgiYWdlZCIpLml0ZXJhdGUoKTsKKyAgICAgICAgICAgIGZhaWwoIlRyYXZlcnNhbCBzaG91bGQgbm8gaGF2ZSBzdWNjZWVkZWQgc2luY2UgdGhlICdhZ2VkJyBrZXkgZG9lcyBub3QgZXhpc3QiKTsKKyAgICAgICAgfSBjYXRjaCAoSWxsZWdhbFN0YXRlRXhjZXB0aW9uIGlzZSkgeworICAgICAgICAgICAgYXNzZXJ0VGhhdChpc2UuZ2V0TWVzc2FnZSgpLCBzdGFydHNXaXRoKCJUaGUgdmFyaWFibGUgeCBmb3IgbWF0aCgpIHN0ZXAgbXVzdCByZXNvbHZlIHRvIGEgTnVtYmVyIikpOworICAgICAgICB9CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgc2hvdWxkVGhyb3dOaWNlRXhjZXB0aW9uV2hlbk1hcEtleUlzTm90UmVzb2x2aW5nVG9OdW1iZXJJbk1hdGhTdGVwKCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgZy5WKCkuaGFzTGFiZWwoInBlcnNvbiIpLnByb2plY3QoImFnZSIpLmJ5KCJhZ2UiKS5hcygieCIpLm1hdGgoIngiKS5ieSgibmFtZSIpLml0ZXJhdGUoKTsKKyAgICAgICAgICAgIGZhaWwoIlRyYXZlcnNhbCBzaG91bGQgbm8gaGF2ZSBzdWNjZWVkZWQgc2luY2UgdGhlICduYW1lJyBrZXkgZG9lcyBub3QgcmVzb2x2ZSB0byBOdW1iZXIiKTsKKyAgICAgICAgfSBjYXRjaCAoSWxsZWdhbFN0YXRlRXhjZXB0aW9uIGlzZSkgeworICAgICAgICAgICAgYXNzZXJ0VGhhdChpc2UuZ2V0TWVzc2FnZSgpLCBzdGFydHNXaXRoKCJUaGUgdmFyaWFibGUgeCBmb3IgbWF0aCgpIHN0ZXAgbXVzdCByZXNvbHZlIHRvIGEgTnVtYmVyIikpOworICAgICAgICB9CisgICAgfQogfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9UcmF2ZXJzYWxFbmdpbmUuamF2YSBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvVHJhdmVyc2FsRW5naW5lLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTk3MmNkZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvVHJhdmVyc2FsRW5naW5lLmphdmEKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWw7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuQ29tcHV0ZXI7CisKKy8qKgorICogQSBUcmF2ZXJzYWxFbmdpbmUgaXMgYSB0ZXN0IGNvbXBvbmVudCB0aGF0IGhlbHBzIGRldGVybWluZSB0aGUgZW5naW5lIG9uIHdoaWNoIGEgdHJhdmVyc2FsIHRlc3Qgd2lsbCBleGVjdXRlLiBUaGlzCisgKiBpbnRlcmZhY2Ugd2FzIG9yaWdpbmFsbHkgaW4ge0Bjb2RlIGdyZW1saW4tY29yZX0gYnV0IGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2Yge0BsaW5rIENvbXB1dGVyfS4gU2luY2UgdGhpcyBpbnRlcmZhY2UKKyAqIHdhcyBoZWF2aWx5IGJvdW5kIHRvIHRoZSB0ZXN0IHN1aXRlIGl0IHdhcyBtYWludGFpbmVkIHVudGlsIDMuNC4wIHdoZW4gaXQgd2FzIGZpbmFsbHkgbW92ZWQgaGVyZSB0bworICoge0Bjb2RlIGdyZW1saW4tdGVzdH0gd2hlcmUgaXQgc2ltcGx5IHNlcnZlcyBhcyB0ZXN0aW5nIGluZnJhc3RydWN0dXJlIHRvIHByb3ZpZGUgaGludHMgb24gd2hldGhlciBhIHRlc3Qgd2lsbCBiZQorICogZXhlY3V0ZWQgd2l0aCBhIHtAbGluayBDb21wdXRlcn0gb3Igbm90LgorICoKKyAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQorICovCitwdWJsaWMgaW50ZXJmYWNlIFRyYXZlcnNhbEVuZ2luZSB7CisgICAgcHVibGljIGVudW0gVHlwZSB7U1RBTkRBUkQsIENPTVBVVEVSfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL2JyYW5jaC9SZXBlYXRUZXN0LmphdmEgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvYnJhbmNoL1JlcGVhdFRlc3QuamF2YQppbmRleCA2ZDkwNjg3Li4zNjgxYWVmIDEwMDY0NAotLS0gYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvYnJhbmNoL1JlcGVhdFRlc3QuamF2YQorKysgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvYnJhbmNoL1JlcGVhdFRlc3QuamF2YQpAQCAtMjUsNiArMjUsNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLl9fOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLk1hcEhlbHBlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5Lm9wdGltaXphdGlvbi5SZXBlYXRVbnJvbGxTdHJhdGVneTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5UOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleDsKIGltcG9ydCBvcmcuanVuaXQuVGVzdDsKQEAgLTM2LDYgKzM3LDcgQEAKIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsKIGltcG9ydCBqYXZhLnV0aWwuTWFwOwogCitpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uTG9hZEdyYXBoV2l0aC5HcmFwaERhdGEuQ1JFVzsKIGltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5Mb2FkR3JhcGhXaXRoLkdyYXBoRGF0YS5NT0RFUk47CiBpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uTG9hZEdyYXBoV2l0aC5HcmFwaERhdGEuU0lOSzsKIGltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX18uYm90aDsKQEAgLTQ4LDEwICs1MCwxMiBAQAogaW1wb3J0IHN0YXRpYyBvcmcuaGFtY3Jlc3QuTWF0Y2hlckFzc2VydC5hc3NlcnRUaGF0OwogaW1wb3J0IHN0YXRpYyBvcmcuaGFtY3Jlc3QuY29yZS5Jcy5pczsKIGltcG9ydCBzdGF0aWMgb3JnLmhhbWNyZXN0LmNvbGxlY3Rpb24uSXNJdGVyYWJsZUNvbnRhaW5pbmdJbk9yZGVyLmNvbnRhaW5zOworaW1wb3J0IHN0YXRpYyBvcmcuaGFtY3Jlc3QuY29yZS5Jc0VxdWFsLmVxdWFsVG87CiBpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOwogaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydEZhbHNlOwogaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydFRydWU7CiBpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuZmFpbDsKK2ltcG9ydCBzdGF0aWMgb3JnLmhhbWNyZXN0LmNvcmUuQW55T2YuYW55T2Y7CiAKIC8qKgogICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCkBAIC05OCw2ICsxMDIsMjggQEAKIAogICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBQYXRoPiBnZXRfZ19WX2hhc1huYW1lX21hcmtvWF9yZXBlYXRYb3V0RV9pblZfc2ltcGxlUGF0aFhfdW50aWxYaGFzWG5hbWVfcmlwcGxlWFhfcGF0aF9ieVhuYW1lWF9ieVhsYWJlbFgoKTsKIAorICAgIC8vIE5FU1RFRCBMT09QCisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgUGF0aD4gZ2V0X2dfVl9yZXBlYXRYb3V0X3JlcGVhdFhvdXRYX3RpbWVzWDFYWF90aW1lc1gxWF9saW1pdFgxWF9wYXRoX2J5X25hbWUoKTsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBQYXRoPiBnZXRfZ19WX3JlcGVhdFhvdXRYa25vd3NYWF91bnRpbFhyZXBlYXRYb3V0WGNyZWF0ZWRYWF9lbWl0WGhhc1huYW1lX2xvcFhYWF9wYXRoX2J5WG5hbWVYKCk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgU3RyaW5nPiBnZXRfZ19WX3JlcGVhdFhyZXBlYXRYb3V0X2NyZWF0ZWRYWF91bnRpbFhoYXNYbmFtZV9yaXBwbGVYWFhlbWl0X2xhbmcoKTsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBTdHJpbmc+IGdldF9nX1ZfdW50aWxYY29uc3RhbnRYdHJ1ZVhYX3JlcGVhdFhyZXBlYXRYb3V0X2NyZWF0ZWRYWF91bnRpbFhoYXNYbmFtZV9yaXBwbGVYWFhlbWl0X2xhbmcoKTsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBTdHJpbmc+IGdldF9nX1ZYM1hfcmVwZWF0WGJvdGhYX2NyZWF0ZWRYWF91bnRpbFhsb29wc19pc180MFhYZW1pdF9yZXBlYXRYaW5fa25vd3NYWF9lbWl0X2xvb3BzWGlzWDFYZGVkdXBfdmFsdWVzKGZpbmFsIE9iamVjdCB2M0lkKTsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBTdHJpbmc+IGdldF9nX1ZYMVhfcmVwZWF0WHJlcGVhdFh1bmlvblhvdXRfdXNlc19vdXRfdHJhdmVyc2VzWFhfd2hlcmVYbG9vcHNfaXNYMFhfdGltZXNYMVhfdGltZVgyWF9uYW1lKGZpbmFsIE9iamVjdCB2MUlkKTsKKworICAgIC8vIE5BTUVEIExPT1AKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBTdHJpbmc+IGdldF9nX1ZfcmVwZWF0WGFfb3V0WGtub3dzX3JlcGVhdFhiX291dFhjcmVhdGVkWF9maWx0ZXJYbG9vcHNfaXNYMFhYX2VtaXRfbGFuZygpOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIFN0cmluZz4gZ2V0X2dfVl9lbWl0X3JlcGVhdFhhX291dFhrbm93c19maWx0ZXJYbG9vcHNfaXNYMFhYX2xhbmcoKTsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBTdHJpbmc+IGdldF9nX1ZYNlhfcmVwZWF0WGFfYm90aFhjcmVhdGVkWF9zaW1wbGVQYXRoWF9lbWl0WHJlcGVhdFhiX2JvdGhYa25vd3NYWF91bnRpbFhsb29wc1hiWF9hc1hiX3doZXJlWGxvb3BzWGFYX2FzWGJYX2hhc1huYW1lX3ZhZGFzWFhfZGVkdXBfbmFtZShmaW5hbCBPYmplY3QgdjZJZCk7CisKICAgICBAVGVzdAogICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKICAgICBwdWJsaWMgdm9pZCBnX1ZfcmVwZWF0WG91dFhfdGltZXNYMlhfZW1pdF9wYXRoKCkgewpAQCAtMzEwLDYgKzMzNiwxMjkgQEAKICAgICAgICAgYXNzZXJ0RXF1YWxzKCJyaXBwbGUiLCBwYXRoLmdldCg0KSk7CiAgICAgfQogCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WX3JlcGVhdFhvdXRfcmVwZWF0WG91dFhfdGltZXNYMVhYX3RpbWVzWDFYX2xpbWl0WDFYX3BhdGhfYnlfbmFtZSgpIHsKKyAgICAgICAgLy8gVGhpcyB0cmF2ZXJzYWwgZ2V0cyBvcHRpbWlzZWQgYnkgdGhlIFJlcGVhdFVucm9sbFN0cmF0ZWd5CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIFBhdGg+IHRyYXZlcnNhbF91bnJvbGxlZCA9IGdldF9nX1ZfcmVwZWF0WG91dF9yZXBlYXRYb3V0WF90aW1lc1gxWFhfdGltZXNYMVhfbGltaXRYMVhfcGF0aF9ieV9uYW1lKCk7CisgICAgICAgIGZpbmFsIFBhdGggcGF0aE9yaWdpbmFsID0gdHJhdmVyc2FsX3Vucm9sbGVkLm5leHQoKTsKKyAgICAgICAgYXNzZXJ0RmFsc2UodHJhdmVyc2FsX3Vucm9sbGVkLmhhc05leHQoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygzLCBwYXRoT3JpZ2luYWwuc2l6ZSgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKCJtYXJrbyIsIHBhdGhPcmlnaW5hbC5nZXQoMCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoImpvc2giLCBwYXRoT3JpZ2luYWwuZ2V0KDEpKTsKKworICAgICAgICAvLyBjb3VsZCBiZSBsb3Agb3IgcmlwcGxlIGRlcGVuZGluZyBvbiB3aGF0IHRoZSBncmFwaCBjaG9vc2VzIHRvIHRyYXZlcnNlIGZpcnN0CisgICAgICAgIGFzc2VydFRoYXQocGF0aE9yaWdpbmFsLmdldCgyKSwgYW55T2YoZXF1YWxUbygicmlwcGxlIiksIGVxdWFsVG8oImxvcCIpKSk7CisKKyAgICAgICAgZyA9IGcud2l0aG91dFN0cmF0ZWdpZXMoUmVwZWF0VW5yb2xsU3RyYXRlZ3kuY2xhc3MpOworCisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIFBhdGg+IHRyYXZlcnNhbCA9IGdldF9nX1ZfcmVwZWF0WG91dF9yZXBlYXRYb3V0WF90aW1lc1gxWFhfdGltZXNYMVhfbGltaXRYMVhfcGF0aF9ieV9uYW1lKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBmaW5hbCBQYXRoIHBhdGggPSB0cmF2ZXJzYWwubmV4dCgpOworICAgICAgICBhc3NlcnRGYWxzZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDMsIHBhdGguc2l6ZSgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKCJtYXJrbyIsIHBhdGguZ2V0KDApKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKCJqb3NoIiwgcGF0aC5nZXQoMSkpOworCisgICAgICAgIC8vIGNvdWxkIGJlIGxvcCBvciByaXBwbGUgZGVwZW5kaW5nIG9uIHdoYXQgdGhlIGdyYXBoIGNob29zZXMgdG8gdHJhdmVyc2UgZmlyc3QKKyAgICAgICAgYXNzZXJ0VGhhdChwYXRoLmdldCgyKSwgYW55T2YoZXF1YWxUbygicmlwcGxlIiksIGVxdWFsVG8oImxvcCIpKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WX3JlcGVhdFhvdXRYa25vd3NYWF91bnRpbFhyZXBlYXRYb3V0WGNyZWF0ZWRYWF9lbWl0WGhhc1huYW1lX2xvcFhYWF9wYXRoX2J5WG5hbWVYKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBQYXRoPiB0cmF2ZXJzYWwgPSBnZXRfZ19WX3JlcGVhdFhvdXRYa25vd3NYWF91bnRpbFhyZXBlYXRYb3V0WGNyZWF0ZWRYWF9lbWl0WGhhc1huYW1lX2xvcFhYWF9wYXRoX2J5WG5hbWVYKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBmaW5hbCBQYXRoIHBhdGggPSB0cmF2ZXJzYWwubmV4dCgpOworICAgICAgICBhc3NlcnRGYWxzZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDIsIHBhdGguc2l6ZSgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKCJtYXJrbyIsIHBhdGguZ2V0KDApKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKCJqb3NoIiwgcGF0aC5nZXQoMSkpOworICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIGdfVl9yZXBlYXRYcmVwZWF0WG91dF9jcmVhdGVkWFhfdW50aWxYaGFzWG5hbWVfcmlwcGxlWFhYZW1pdF9sYW5nKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBTdHJpbmc+IHRyYXZlcnNhbCA9IGdldF9nX1ZfcmVwZWF0WHJlcGVhdFhvdXRfY3JlYXRlZFhYX3VudGlsWGhhc1huYW1lX3JpcHBsZVhYWGVtaXRfbGFuZygpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKKyAgICAgICAgU3RyaW5nIGxhbmcgPSB0cmF2ZXJzYWwubmV4dCgpOworICAgICAgICBhc3NlcnRFcXVhbHMobGFuZywgImphdmEiKTsKKyAgICAgICAgYXNzZXJ0RmFsc2UodHJhdmVyc2FsLmhhc05leHQoKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WX3VudGlsWGNvbnN0YW50WHRydWVYWF9yZXBlYXRYcmVwZWF0WG91dF9jcmVhdGVkWFhfdW50aWxYaGFzWG5hbWVfcmlwcGxlWFhYZW1pdF9sYW5nKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBTdHJpbmc+IHRyYXZlcnNhbCA9IGdldF9nX1ZfdW50aWxYY29uc3RhbnRYdHJ1ZVhYX3JlcGVhdFhyZXBlYXRYb3V0X2NyZWF0ZWRYWF91bnRpbFhoYXNYbmFtZV9yaXBwbGVYWFhlbWl0X2xhbmcoKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGFzc2VydFRydWUodHJhdmVyc2FsLmhhc05leHQoKSk7CisgICAgICAgIFN0cmluZyBsYW5nID0gdHJhdmVyc2FsLm5leHQoKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKGxhbmcsICJqYXZhIik7CisgICAgICAgIGFzc2VydFRydWUodHJhdmVyc2FsLmhhc05leHQoKSk7CisgICAgICAgIGxhbmcgPSB0cmF2ZXJzYWwubmV4dCgpOworICAgICAgICBhc3NlcnRFcXVhbHMobGFuZywgImphdmEiKTsKKyAgICAgICAgYXNzZXJ0RmFsc2UodHJhdmVyc2FsLmhhc05leHQoKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WWDNYX3JlcGVhdFhib3RoWF9jcmVhdGVkWFhfdW50aWxYbG9vcHNfaXNfNDBYWGVtaXRfcmVwZWF0WGluX2tub3dzWFhfZW1pdF9sb29wc1hpc1gxWGRlZHVwX3ZhbHVlcygpIHsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgU3RyaW5nPiB0cmF2ZXJzYWwgPSBnZXRfZ19WWDNYX3JlcGVhdFhib3RoWF9jcmVhdGVkWFhfdW50aWxYbG9vcHNfaXNfNDBYWGVtaXRfcmVwZWF0WGluX2tub3dzWFhfZW1pdF9sb29wc1hpc1gxWGRlZHVwX3ZhbHVlcyhjb252ZXJ0VG9WZXJ0ZXhJZCgibG9wIikpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgY2hlY2tSZXN1bHRzKEFycmF5cy5hc0xpc3QoImpvc2giLCAicmlwcGxlIiwgImxvcCIpLCB0cmF2ZXJzYWwpOworICAgICAgICBhc3NlcnRGYWxzZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKENSRVcpCisgICAgcHVibGljIHZvaWQgZ19WWDFYX3JlcGVhdFhyZXBlYXRYdW5pb25Yb3V0X3VzZXNfb3V0X3RyYXZlcnNlc1hYX3doZXJlWGxvb3BzX2lzWDBYX3RpbWVzWDFYX3RpbWVYMlhfbmFtZSgpIHsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgU3RyaW5nPiB0cmF2ZXJzYWwgPSBnZXRfZ19WWDFYX3JlcGVhdFhyZXBlYXRYdW5pb25Yb3V0X3VzZXNfb3V0X3RyYXZlcnNlc1hYX3doZXJlWGxvb3BzX2lzWDBYX3RpbWVzWDFYX3RpbWVYMlhfbmFtZShjb252ZXJ0VG9WZXJ0ZXhJZCgibWFya28iKSk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBhc3NlcnRUcnVlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOworICAgICAgICBTdHJpbmcgbmFtZSA9IHRyYXZlcnNhbC5uZXh0KCk7CisgICAgICAgIGFzc2VydEVxdWFscyhuYW1lLCAidGlua2VyZ3JhcGgiKTsKKyAgICAgICAgYXNzZXJ0RmFsc2UodHJhdmVyc2FsLmhhc05leHQoKSk7CisgICAgfQorCisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIGdfVl9yZXBlYXRYYV9vdXRYa25vd3NfcmVwZWF0WGJfb3V0WGNyZWF0ZWRYX2ZpbHRlclhsb29wc19pc1gwWFhfZW1pdF9sYW5nKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBTdHJpbmc+IHRyYXZlcnNhbCA9IGdldF9nX1ZfcmVwZWF0WGFfb3V0WGtub3dzX3JlcGVhdFhiX291dFhjcmVhdGVkWF9maWx0ZXJYbG9vcHNfaXNYMFhYX2VtaXRfbGFuZygpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKKyAgICAgICAgU3RyaW5nIGxhbmcgPSB0cmF2ZXJzYWwubmV4dCgpOworICAgICAgICBhc3NlcnRFcXVhbHMobGFuZywgImphdmEiKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKKyAgICAgICAgbGFuZyA9IHRyYXZlcnNhbC5uZXh0KCk7CisgICAgICAgIGFzc2VydEVxdWFscyhsYW5nLCAiamF2YSIpOworICAgICAgICBhc3NlcnRGYWxzZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1ZfZW1pdF9yZXBlYXRYYV9vdXRYa25vd3NfZmlsdGVyWGxvb3BzX2lzWDBYWF9sYW5nKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBTdHJpbmc+IHRyYXZlcnNhbCA9IGdldF9nX1ZfZW1pdF9yZXBlYXRYYV9vdXRYa25vd3NfZmlsdGVyWGxvb3BzX2lzWDBYWF9sYW5nKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBhc3NlcnRUcnVlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOworICAgICAgICBTdHJpbmcgbGFuZyA9IHRyYXZlcnNhbC5uZXh0KCk7CisgICAgICAgIGFzc2VydEVxdWFscyhsYW5nLCAiamF2YSIpOworICAgICAgICBhc3NlcnRUcnVlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOworICAgICAgICBsYW5nID0gdHJhdmVyc2FsLm5leHQoKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKGxhbmcsICJqYXZhIik7CisgICAgICAgIGFzc2VydEZhbHNlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOworICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIGdfVlg2WF9yZXBlYXRYYV9ib3RoWGNyZWF0ZWRYX3NpbXBsZVBhdGhYX2VtaXRYcmVwZWF0WGJfYm90aFhrbm93c1hYX3VudGlsWGxvb3BzWGJYX2FzWGJfd2hlcmVYbG9vcHNYYVhfYXNYYlhfaGFzWG5hbWVfdmFkYXNYWF9kZWR1cF9uYW1lKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBTdHJpbmc+IHRyYXZlcnNhbCA9IGdldF9nX1ZYNlhfcmVwZWF0WGFfYm90aFhjcmVhdGVkWF9zaW1wbGVQYXRoWF9lbWl0WHJlcGVhdFhiX2JvdGhYa25vd3NYWF91bnRpbFhsb29wc1hiWF9hc1hiX3doZXJlWGxvb3BzWGFYX2FzWGJYX2hhc1huYW1lX3ZhZGFzWFhfZGVkdXBfbmFtZShjb252ZXJ0VG9WZXJ0ZXhJZCgicGV0ZXIiKSk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBhc3NlcnRUcnVlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOworICAgICAgICBTdHJpbmcgbmFtZSA9IHRyYXZlcnNhbC5uZXh0KCk7CisgICAgICAgIGFzc2VydEVxdWFscyhuYW1lLCAiam9zaCIpOworICAgICAgICBhc3NlcnRGYWxzZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKKyAgICB9CisKICAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFRyYXZlcnNhbHMgZXh0ZW5kcyBSZXBlYXRUZXN0IHsKIAogICAgICAgICBAT3ZlcnJpZGUKQEAgLTM4Niw1ICs1MzUsNTEgQEAKICAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIFBhdGg+IGdldF9nX1ZfaGFzWGxvb3BfbmFtZV9sb29wWF9yZXBlYXRYaW5YX3RpbWVzWDVYX3BhdGhfYnlfbmFtZSgpIHsKICAgICAgICAgICAgIHJldHVybiBnLlYoKS5oYXMoImxvb3BzIiwibmFtZSIsImxvb3AiKS5yZXBlYXQoX18uaW4oKSkudGltZXMoNSkucGF0aCgpLmJ5KCJuYW1lIik7CiAgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIFBhdGg+IGdldF9nX1ZfcmVwZWF0WG91dF9yZXBlYXRYb3V0WF90aW1lc1gxWFhfdGltZXNYMVhfbGltaXRYMVhfcGF0aF9ieV9uYW1lKCkgeworICAgICAgICAgICAgLy8gTkIgV2UgbmVlZCB0byBwcmV2ZW50IHRoZSBSZXBlYXRVbnJvbGxTdHJhdGVneSBmcm9tIGFwcGx5aW5nIHRvIHByb3Blcmx5IGV4ZXJjaXNlIHRoaXMgdGVzdCBhcyB0aGlzIHRyYXZlcnNhbCBjYW4gYmUgc2ltcGxpZmllZAorICAgICAgICAgICAgcmV0dXJuIGcuVigpLnJlcGVhdChvdXQoKS5yZXBlYXQob3V0KCkpLnRpbWVzKDEpKS50aW1lcygxKS5saW1pdCgxKS5wYXRoKCkuYnkoIm5hbWUiKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgUGF0aD4gZ2V0X2dfVl9yZXBlYXRYb3V0WGtub3dzWFhfdW50aWxYcmVwZWF0WG91dFhjcmVhdGVkWFhfZW1pdFhoYXNYbmFtZV9sb3BYWFhfcGF0aF9ieVhuYW1lWCgpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS5yZXBlYXQob3V0KCJrbm93cyIpKS51bnRpbChfXy5yZXBlYXQob3V0KCJjcmVhdGVkIikpLmVtaXQoX18uaGFzKCJuYW1lIiwgImxvcCIpKSkucGF0aCgpLmJ5KCJuYW1lIik7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIFN0cmluZz4gZ2V0X2dfVl9yZXBlYXRYcmVwZWF0WG91dF9jcmVhdGVkWFhfdW50aWxYaGFzWG5hbWVfcmlwcGxlWFhYZW1pdF9sYW5nKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLnJlcGVhdChfXy5yZXBlYXQob3V0KCJjcmVhdGVkIikpLnVudGlsKF9fLmhhcygibmFtZSIsICJyaXBwbGUiKSkpLmVtaXQoKS52YWx1ZXMoImxhbmciKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgU3RyaW5nPiBnZXRfZ19WX3VudGlsWGNvbnN0YW50WHRydWVYWF9yZXBlYXRYcmVwZWF0WG91dF9jcmVhdGVkWFhfdW50aWxYaGFzWG5hbWVfcmlwcGxlWFhYZW1pdF9sYW5nKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLnVudGlsKF9fLmNvbnN0YW50KHRydWUpKS5yZXBlYXQoX18ucmVwZWF0KG91dCgiY3JlYXRlZCIpKS51bnRpbChfXy5oYXMoIm5hbWUiLCAicmlwcGxlIikpKS5lbWl0KCkudmFsdWVzKCJsYW5nIik7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIFN0cmluZz4gZ2V0X2dfVlgzWF9yZXBlYXRYYm90aFhfY3JlYXRlZFhYX3VudGlsWGxvb3BzX2lzXzQwWFhlbWl0X3JlcGVhdFhpbl9rbm93c1hYX2VtaXRfbG9vcHNYaXNYMVhkZWR1cF92YWx1ZXMoZmluYWwgT2JqZWN0IHYzSWQpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYodjNJZCkucmVwZWF0KF9fLmJvdGgoImNyZWF0ZWQiKSkudW50aWwobG9vcHMoKS5pcyg0MCkpLmVtaXQoX18ucmVwZWF0KF9fLmluKCJrbm93cyIpKS5lbWl0KGxvb3BzKCkuaXMoMSkpKS5kZWR1cCgpLnZhbHVlcygibmFtZSIpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBTdHJpbmc+IGdldF9nX1ZfcmVwZWF0WGFfb3V0WGtub3dzX3JlcGVhdFhiX291dFhjcmVhdGVkWF9maWx0ZXJYbG9vcHNfaXNYMFhYX2VtaXRfbGFuZygpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS5yZXBlYXQoImEiLCBvdXQoImtub3dzIikucmVwZWF0KCJiIiwgb3V0KCJjcmVhdGVkIikuZmlsdGVyKGxvb3BzKCJhIikuaXMoMCkpKS5lbWl0KCkpLmVtaXQoKS52YWx1ZXMoImxhbmciKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgU3RyaW5nPiBnZXRfZ19WX2VtaXRfcmVwZWF0WGFfb3V0WGtub3dzX2ZpbHRlclhsb29wc19pc1gwWFhfbGFuZygpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS5lbWl0KCkucmVwZWF0KCJhIiwgb3V0KCJrbm93cyIpLmZpbHRlcihsb29wcygiYSIpLmlzKDApKSkudmFsdWVzKCJsYW5nIik7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIFN0cmluZz4gZ2V0X2dfVlg2WF9yZXBlYXRYYV9ib3RoWGNyZWF0ZWRYX3NpbXBsZVBhdGhYX2VtaXRYcmVwZWF0WGJfYm90aFhrbm93c1hYX3VudGlsWGxvb3BzWGJYX2FzWGJfd2hlcmVYbG9vcHNYYVhfYXNYYlhfaGFzWG5hbWVfdmFkYXNYWF9kZWR1cF9uYW1lKGZpbmFsIE9iamVjdCB2NklkKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKHY2SWQpLnJlcGVhdCgiYSIsIGJvdGgoImNyZWF0ZWQiKS5zaW1wbGVQYXRoKCkpLmVtaXQoX18ucmVwZWF0KCJiIiwgX18uYm90aCgia25vd3MiKSkudW50aWwobG9vcHMoImIiKS5hcygiYiIpLndoZXJlKGxvb3BzKCJhIikuYXMoImIiKSkpLmhhcygibmFtZSIsICJ2YWRhcyIpKS5kZWR1cCgpLnZhbHVlcygibmFtZSIpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBTdHJpbmc+IGdldF9nX1ZYMVhfcmVwZWF0WHJlcGVhdFh1bmlvblhvdXRfdXNlc19vdXRfdHJhdmVyc2VzWFhfd2hlcmVYbG9vcHNfaXNYMFhfdGltZXNYMVhfdGltZVgyWF9uYW1lKGZpbmFsIE9iamVjdCB2MUlkKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKHYxSWQpLnJlcGVhdChfXy5yZXBlYXQoX18udW5pb24ob3V0KCJ1c2VzIiksIG91dCgidHJhdmVyc2VzIikpLndoZXJlKF9fLmxvb3BzKCkuaXMoMCkpKS50aW1lcygxKSkudGltZXMoMikudmFsdWVzKCJuYW1lIik7CisgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvYnJhbmNoL1VuaW9uVGVzdC5qYXZhIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL2JyYW5jaC9VbmlvblRlc3QuamF2YQppbmRleCBkZWY5ZWI4Li5kZGY4YTYyIDEwMDY0NAotLS0gYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvYnJhbmNoL1VuaW9uVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9icmFuY2gvVW5pb25UZXN0LmphdmEKQEAgLTE0Miw3ICsxNDIsNyBAQAogICAgIHB1YmxpYyB2b2lkIGdfVlgxXzJYX2xvY2FsWHVuaW9uWG91dEVfY291bnRfX2luRV9jb3VudF9fb3V0RV93ZWlnaHRfc3VtWFgoKSB7CiAgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIE51bWJlcj4gdHJhdmVyc2FsID0gZ2V0X2dfVlgxXzJYX2xvY2FsWHVuaW9uWG91dEVfY291bnRfX2luRV9jb3VudF9fb3V0RV93ZWlnaHRfc3VtWFgoY29udmVydFRvVmVydGV4SWQoIm1hcmtvIiksIGNvbnZlcnRUb1ZlcnRleElkKCJ2YWRhcyIpKTsKICAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7Ci0gICAgICAgIGNoZWNrUmVzdWx0cyhBcnJheXMuYXNMaXN0KDBsLCAwbCwgMCwgM2wsIDFsLCAxLjlkKSwgdHJhdmVyc2FsKTsKKyAgICAgICAgY2hlY2tSZXN1bHRzKEFycmF5cy5hc0xpc3QoM0wsIDBMLCAxLjksIDBMLCAxTCksIHRyYXZlcnNhbCk7CiAgICAgfQogCiAgICAgQFRlc3QKZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9maWx0ZXIvQW5kVGVzdC5qYXZhIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL2ZpbHRlci9BbmRUZXN0LmphdmEKaW5kZXggNTlhOGVjOC4uNzExOWUyYSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL2ZpbHRlci9BbmRUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL2ZpbHRlci9BbmRUZXN0LmphdmEKQEAgLTI5LDYgKzI5LDcgQEAKIGltcG9ydCBvcmcuanVuaXQucnVubmVyLlJ1bldpdGg7CiAKIGltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsKIAogaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkxvYWRHcmFwaFdpdGguR3JhcGhEYXRhLk1PREVSTjsKQEAgLTUyLDYgKzUzLDggQEAKIAogICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBWZXJ0ZXg+IGdldF9nX1ZfYXNYYVhfYW5kWHNlbGVjdFhhWF9zZWxlY3RYYVhYKCk7CiAKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgVmVydGV4PiBnZXRfZ19WX2hhc1huYW1lX21hcmtvWF9hbmRfaGFzWG5hbWVfbWFya29YX2FuZF9oYXNYbmFtZV9tYXJrb1goKTsKKwogICAgIEBUZXN0CiAgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQogICAgIHB1YmxpYyB2b2lkIGdfVl9hbmRYaGFzWGFnZV9ndF8yN1hfX291dEVfY291bnRfZ3RlXzJYX25hbWUoKSB7CkBAIC03Myw3ICs3Niw3IEBACiAgICAgcHVibGljIHZvaWQgZ19WX2FzWGFYX291dFhrbm93c1hfYW5kX291dFhjcmVhdGVkWF9pblhjcmVhdGVkWF9hc1hhWF9uYW1lKCkgewogICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBWZXJ0ZXg+IHRyYXZlcnNhbCA9IGdldF9nX1ZfYXNYYVhfb3V0WGtub3dzWF9hbmRfb3V0WGNyZWF0ZWRYX2luWGNyZWF0ZWRYX2FzWGFYX25hbWUoKTsKICAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7Ci0gICAgICAgIGNoZWNrUmVzdWx0cyhBcnJheXMuYXNMaXN0KGNvbnZlcnRUb1ZlcnRleChncmFwaCwgIm1hcmtvIikpLCB0cmF2ZXJzYWwpOworICAgICAgICBjaGVja1Jlc3VsdHMoQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdChjb252ZXJ0VG9WZXJ0ZXgoZ3JhcGgsICJtYXJrbyIpKSwgdHJhdmVyc2FsKTsKICAgICB9CiAKICAgICBAVGVzdApAQCAtODUsNiArODgsMTQgQEAKICAgICAgICAgYXNzZXJ0RXF1YWxzKDYsIGFjdHVhbC5zaXplKCkpOwogICAgIH0KIAorICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIGdfVl9oYXNYbmFtZV9tYXJrb1hfYW5kX2hhc1huYW1lX21hcmtvWF9hbmRfaGFzWG5hbWVfbWFya29YKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBWZXJ0ZXg+IHRyYXZlcnNhbCA9IGdldF9nX1ZfaGFzWG5hbWVfbWFya29YX2FuZF9oYXNYbmFtZV9tYXJrb1hfYW5kX2hhc1huYW1lX21hcmtvWCgpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgY2hlY2tSZXN1bHRzKENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QoY29udmVydFRvVmVydGV4KGdyYXBoLCAibWFya28iKSksIHRyYXZlcnNhbCk7CisgICAgfQorCiAgICAgcHVibGljIHN0YXRpYyBjbGFzcyBUcmF2ZXJzYWxzIGV4dGVuZHMgQW5kVGVzdCB7CiAKICAgICAgICAgQE92ZXJyaWRlCkBAIC0xMDYsNSArMTE3LDEwIEBACiAgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBWZXJ0ZXg+IGdldF9nX1ZfYXNYYVhfYW5kWHNlbGVjdFhhWF9zZWxlY3RYYVhYKCkgewogICAgICAgICAgICAgcmV0dXJuIGcuVigpLmFzKCJhIikuYW5kKHNlbGVjdCgiYSIpLCBzZWxlY3QoImEiKSk7CiAgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIFZlcnRleD4gZ2V0X2dfVl9oYXNYbmFtZV9tYXJrb1hfYW5kX2hhc1huYW1lX21hcmtvWF9hbmRfaGFzWG5hbWVfbWFya29YKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLmhhcygibmFtZSIsICJtYXJrbyIpLmFuZCgpLmhhcygibmFtZSIsICJtYXJrbyIpLmFuZCgpLmhhcygibmFtZSIsICJtYXJrbyIpOworICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL2ZpbHRlci9Ecm9wVGVzdC5qYXZhIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL2ZpbHRlci9Ecm9wVGVzdC5qYXZhCmluZGV4IGYzMzk5N2UuLjJiNmE5YWQgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9maWx0ZXIvRHJvcFRlc3QuamF2YQorKysgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvZmlsdGVyL0Ryb3BUZXN0LmphdmEKQEAgLTI2LDEyICsyNiwxNCBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsRW5naW5lOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkVkZ2U7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuUHJvcGVydHk7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleFByb3BlcnR5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udXRpbC5pdGVyYXRvci5JdGVyYXRvclV0aWxzOwogaW1wb3J0IG9yZy5qdW5pdC5UZXN0OwogaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXIuUnVuV2l0aDsKIAoraW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkxvYWRHcmFwaFdpdGguR3JhcGhEYXRhLkNSRVc7CiBpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uTG9hZEdyYXBoV2l0aC5HcmFwaERhdGEuTU9ERVJOOwogaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydEVxdWFsczsKIGltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRGYWxzZTsKQEAgLTQ4LDYgKzUwLDEwIEBACiAKICAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgVmVydGV4UHJvcGVydHk+IGdldF9nX1ZfcHJvcGVydGllc19kcm9wKCk7CiAKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgPyBleHRlbmRzIFByb3BlcnR5PE9iamVjdD4+IGdldF9nX1ZfcHJvcGVydGllc19wcm9wZXJ0aWVzWHN0YXJ0VGltZVhfZHJvcCgpOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxFZGdlLCA/IGV4dGVuZHMgUHJvcGVydHk8T2JqZWN0Pj4gZ2V0X2dfRV9wcm9wZXJ0aWVzWHdlaWdodFhfZHJvcCgpOworCiAgICAgQFRlc3QKICAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCiAgICAgQEZlYXR1cmVSZXF1aXJlbWVudChmZWF0dXJlQ2xhc3MgPSBHcmFwaC5GZWF0dXJlcy5WZXJ0ZXhGZWF0dXJlcy5jbGFzcywgZmVhdHVyZSA9IEdyYXBoLkZlYXR1cmVzLlZlcnRleEZlYXR1cmVzLkZFQVRVUkVfUkVNT1ZFX1ZFUlRJQ0VTKQpAQCAtODIsNiArODgsMjcgQEAKICAgICAgICAgZy5WKCkuZm9yRWFjaFJlbWFpbmluZyh2ZXJ0ZXggLT4gYXNzZXJ0RXF1YWxzKDAsIEl0ZXJhdG9yVXRpbHMuY291bnQodmVydGV4LnByb3BlcnRpZXMoKSkpKTsKICAgICB9CiAKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBARmVhdHVyZVJlcXVpcmVtZW50KGZlYXR1cmVDbGFzcyA9IEdyYXBoLkZlYXR1cmVzLkVkZ2VGZWF0dXJlcy5jbGFzcywgZmVhdHVyZSA9IEdyYXBoLkZlYXR1cmVzLkVkZ2VGZWF0dXJlcy5GRUFUVVJFX1JFTU9WRV9QUk9QRVJUWSkKKyAgICBwdWJsaWMgdm9pZCBnX0VfcHJvcGVydGllc1h3ZWlnaHRYX2Ryb3AoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxFZGdlLCA/IGV4dGVuZHMgUHJvcGVydHk8T2JqZWN0Pj4gdHJhdmVyc2FsID0gZ2V0X2dfRV9wcm9wZXJ0aWVzWHdlaWdodFhfZHJvcCgpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgYXNzZXJ0RmFsc2UodHJhdmVyc2FsLmhhc05leHQoKSk7CisgICAgICAgIGcuRSgpLmZvckVhY2hSZW1haW5pbmcoZWRnZSAtPiBhc3NlcnRFcXVhbHMoMCwgSXRlcmF0b3JVdGlscy5jb3VudChlZGdlLnByb3BlcnRpZXMoKSkpKTsKKyAgICB9CisKKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoQ1JFVykKKyAgICBARmVhdHVyZVJlcXVpcmVtZW50KGZlYXR1cmVDbGFzcyA9IEdyYXBoLkZlYXR1cmVzLkVkZ2VGZWF0dXJlcy5jbGFzcywgZmVhdHVyZSA9IEdyYXBoLkZlYXR1cmVzLkVkZ2VGZWF0dXJlcy5GRUFUVVJFX1JFTU9WRV9QUk9QRVJUWSkKKyAgICBwdWJsaWMgdm9pZCBnX1ZfcHJvcGVydGllc19wcm9wZXJ0aWVzWHN0YXJ0VGltZVhfZHJvcCgpIHsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgPyBleHRlbmRzIFByb3BlcnR5PE9iamVjdD4+IHRyYXZlcnNhbCA9IGdldF9nX1ZfcHJvcGVydGllc19wcm9wZXJ0aWVzWHN0YXJ0VGltZVhfZHJvcCgpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgYXNzZXJ0RmFsc2UodHJhdmVyc2FsLmhhc05leHQoKSk7CisgICAgICAgIGcuVigpLmZvckVhY2hSZW1haW5pbmcodmVydGV4IC0+IGFzc2VydEVxdWFscygwLCBJdGVyYXRvclV0aWxzLmNvdW50KEl0ZXJhdG9yVXRpbHMuZmxhdE1hcCh2ZXJ0ZXgucHJvcGVydGllcygibG9jYXRpb24iKSwgdnAgLT4gdnAucHJvcGVydGllcygic3RhcnRUaW1lIikpKSkpOworICAgIH0KKwogCiAgICAgcHVibGljIHN0YXRpYyBjbGFzcyBUcmF2ZXJzYWxzIGV4dGVuZHMgRHJvcFRlc3QgewogCkBAIC05OSw1ICsxMjYsMTUgQEAKICAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIFZlcnRleFByb3BlcnR5PiBnZXRfZ19WX3Byb3BlcnRpZXNfZHJvcCgpIHsKICAgICAgICAgICAgIHJldHVybiAoVHJhdmVyc2FsKSBnLlYoKS5wcm9wZXJ0aWVzKCkuZHJvcCgpOwogICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8RWRnZSwgPyBleHRlbmRzIFByb3BlcnR5PE9iamVjdD4+IGdldF9nX0VfcHJvcGVydGllc1h3ZWlnaHRYX2Ryb3AoKSB7CisgICAgICAgICAgICByZXR1cm4gZy5FKCkucHJvcGVydGllcygid2VpZ2h0IikuZHJvcCgpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCA/IGV4dGVuZHMgUHJvcGVydHk8T2JqZWN0Pj4gZ2V0X2dfVl9wcm9wZXJ0aWVzX3Byb3BlcnRpZXNYc3RhcnRUaW1lWF9kcm9wKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLnByb3BlcnRpZXMoKS5wcm9wZXJ0aWVzKCJzdGFydFRpbWUiKS5kcm9wKCk7CisgICAgICAgIH0KICAgICB9CiB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL2ZpbHRlci9IYXNUZXN0LmphdmEgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvZmlsdGVyL0hhc1Rlc3QuamF2YQppbmRleCA4NGQ0N2I5Li4zMmNjYjc1IDEwMDY0NAotLS0gYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvZmlsdGVyL0hhc1Rlc3QuamF2YQorKysgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvZmlsdGVyL0hhc1Rlc3QuamF2YQpAQCAtMjMsNiArMjMsNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5BYnN0cmFjdEdyZW1saW5Qcm9jZXNzVGVzdDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuR3JlbWxpblByb2Nlc3NSdW5uZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVGV4dFA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX187CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuRWRnZTsKQEAgLTQzLDYgKzQ0LDcgQEAKIGltcG9ydCBzdGF0aWMgb3JnLmhhbWNyZXN0LkNvcmVNYXRjaGVycy5pczsKIGltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRFcXVhbHM7CiBpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RmFsc2U7CitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0Tm90RXF1YWxzOwogaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydFRoYXQ7CiBpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0VHJ1ZTsKIApAQCAtMTAzLDYgKzEwNSwxMCBAQAogCiAgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIEludGVnZXI+IGdldF9nX1ZfYm90aF9wcm9wZXJ0aWVzX2RlZHVwX2hhc0tleVhhZ2VYX2hhc1ZhbHVlWGd0WDMwWFhfdmFsdWUoKTsKIAorICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBEb3VibGU+IGdldF9nX1ZfYm90aEVfcHJvcGVydGllc19kZWR1cF9oYXNLZXlYd2VpZ2h0WF92YWx1ZSgpOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIERvdWJsZT4gZ2V0X2dfVl9ib3RoRV9wcm9wZXJ0aWVzX2RlZHVwX2hhc0tleVh3ZWlnaHRYX2hhc1ZhbHVlWGx0WDBkM1hYX3ZhbHVlKCk7CisKICAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgU3RyaW5nPiBnZXRfZ19WX2hhc05vdFhhZ2VYX25hbWUoKTsKIAogICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBWZXJ0ZXg+IGdldF9nX1ZfaGFzSWRYMVhfaGFzSWRYMlgoZmluYWwgT2JqZWN0IHYxSWQsIGZpbmFsIE9iamVjdCB2MklkKTsKQEAgLTEyNSw2ICsxMzEsMjQgQEAKIAogICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBMb25nPiBnZXRfZ19WX2hhc1hhZ2Vfd2l0aG91dFgyN18yOVhfY291bnQoKTsKIAorICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBWZXJ0ZXg+IGdldF9nX1ZfaGFzWG5hbWVfY29udGFpbmluZ1hhcmtYWCgpOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIFZlcnRleD4gZ2V0X2dfVl9oYXNYbmFtZV9zdGFydGluZ1dpdGhYbWFyWFgoKTsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBWZXJ0ZXg+IGdldF9nX1ZfaGFzWG5hbWVfZW5kaW5nV2l0aFhhc1hYKCk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgVmVydGV4PiBnZXRfZ19WX2hhc1huYW1lX25vdF9jb250YWluaW5nWGFya1hYKCk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgVmVydGV4PiBnZXRfZ19WX2hhc1huYW1lX25vdF9zdGFydGluZ1dpdGhYbWFyWFgoKTsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBWZXJ0ZXg+IGdldF9nX1ZfaGFzWG5hbWVfbm90X2VuZGluZ1dpdGhYYXNYWCgpOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIFZlcnRleD4gZ2V0X2dfVl9oYXNYcGVyc29uX25hbWVfY29udGFpbmluZ1hvWF9hbmRYbHRYbVhYWCgpOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIFZlcnRleD4gZ2V0X2dfVl9oYXNYbmFtZV9ndFhtWF9hbmRYY29udGFpbmluZ1hvWFhYKCk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgVmVydGV4PiBnZXRfZ19WX2hhc1hwX25lcVh2WFgoKTsKKwogICAgIEBUZXN0CiAgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQogICAgIHB1YmxpYyB2b2lkIGdfVl9vdXRYY3JlYXRlZFhfaGFzWG5hbWVfX21hcFhsZW5ndGhYX2lzWGd0WDNYWFhfbmFtZSgpIHsKQEAgLTQ2MCw2ICs0ODQsMjIgQEAKICAgICB9CiAKICAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1ZfYm90aEVfcHJvcGVydGllc19kZWR1cF9oYXNLZXlYd2VpZ2h0WF92YWx1ZSgpIHsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgRG91YmxlPiB0cmF2ZXJzYWwgPSBnZXRfZ19WX2JvdGhFX3Byb3BlcnRpZXNfZGVkdXBfaGFzS2V5WHdlaWdodFhfdmFsdWUoKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGNoZWNrUmVzdWx0cyhBcnJheXMuYXNMaXN0KDAuNSwgMS4wLCAwLjQsIDAuMiksIHRyYXZlcnNhbCk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WX2JvdGhFX3Byb3BlcnRpZXNfZGVkdXBfaGFzS2V5WHdlaWdodFhfaGFzVmFsdWVYbHRYMGQzWFhfdmFsdWUoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIERvdWJsZT4gdHJhdmVyc2FsID0gZ2V0X2dfVl9ib3RoRV9wcm9wZXJ0aWVzX2RlZHVwX2hhc0tleVh3ZWlnaHRYX2hhc1ZhbHVlWGx0WDBkM1hYX3ZhbHVlKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBjaGVja1Jlc3VsdHMoQXJyYXlzLmFzTGlzdCgwLjIpLCB0cmF2ZXJzYWwpOworICAgIH0KKworICAgIEBUZXN0CiAgICAgQExvYWRHcmFwaFdpdGgKICAgICBwdWJsaWMgdm9pZCBnX1ZfaGFzTm90WGFnZVhfbmFtZSgpIHsKICAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgU3RyaW5nPiB0cmF2ZXJzYWwgPSBnZXRfZ19WX2hhc05vdFhhZ2VYX25hbWUoKTsKQEAgLTU0OSw2ICs1ODksMTA0IEBACiAgICAgICAgIGFzc2VydEVxdWFscygyTCwgdHJhdmVyc2FsLm5leHQoKS5sb25nVmFsdWUoKSk7CiAgICAgfQogCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WX2hhc1huYW1lX2NvbnRhaW5pbmdYYXJrWFgoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIFZlcnRleD4gdHJhdmVyc2FsID0gZ2V0X2dfVl9oYXNYbmFtZV9jb250YWluaW5nWGFya1hYKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBhc3NlcnRUcnVlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOworICAgICAgICBhc3NlcnRUcnVlKHRyYXZlcnNhbC5uZXh0KCkudmFsdWUoIm5hbWUiKS5lcXVhbHMoIm1hcmtvIikpOworICAgICAgICBhc3NlcnRGYWxzZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1ZfaGFzWG5hbWVfc3RhcnRpbmdXaXRoWG1hclhYKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBWZXJ0ZXg+IHRyYXZlcnNhbCA9IGdldF9nX1ZfaGFzWG5hbWVfc3RhcnRpbmdXaXRoWG1hclhYKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBhc3NlcnRUcnVlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOworICAgICAgICBhc3NlcnRUcnVlKHRyYXZlcnNhbC5uZXh0KCkudmFsdWUoIm5hbWUiKS5lcXVhbHMoIm1hcmtvIikpOworICAgICAgICBhc3NlcnRGYWxzZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1ZfaGFzWG5hbWVfZW5kaW5nV2l0aFhhc1hYKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBWZXJ0ZXg+IHRyYXZlcnNhbCA9IGdldF9nX1ZfaGFzWG5hbWVfZW5kaW5nV2l0aFhhc1hYKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBhc3NlcnRUcnVlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOworICAgICAgICBhc3NlcnRUcnVlKHRyYXZlcnNhbC5uZXh0KCkudmFsdWUoIm5hbWUiKS5lcXVhbHMoInZhZGFzIikpOworICAgICAgICBhc3NlcnRGYWxzZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1ZfaGFzWG5hbWVfbm90X2NvbnRhaW5pbmdYYXJrWFgoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIFZlcnRleD4gdHJhdmVyc2FsID0gZ2V0X2dfVl9oYXNYbmFtZV9ub3RfY29udGFpbmluZ1hhcmtYWCgpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKworICAgICAgICBpbnQgY291bnRlciA9IDA7CisgICAgICAgIHdoaWxlICh0cmF2ZXJzYWwuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICBjb3VudGVyKys7CisgICAgICAgICAgICBhc3NlcnROb3RFcXVhbHMoIm1hcmtvIiwgdHJhdmVyc2FsLm5leHQoKS52YWx1ZSgibmFtZSIpKTsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnRFcXVhbHMoNSwgY291bnRlcik7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WX2hhc1huYW1lX25vdF9zdGFydGluZ1dpdGhYbWFyWFgoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIFZlcnRleD4gdHJhdmVyc2FsID0gZ2V0X2dfVl9oYXNYbmFtZV9ub3Rfc3RhcnRpbmdXaXRoWG1hclhYKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBpbnQgY291bnRlciA9IDA7CisgICAgICAgIHdoaWxlICh0cmF2ZXJzYWwuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICBjb3VudGVyKys7CisgICAgICAgICAgICBhc3NlcnROb3RFcXVhbHMoIm1hcmtvIiwgdHJhdmVyc2FsLm5leHQoKS52YWx1ZSgibmFtZSIpKTsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnRFcXVhbHMoNSwgY291bnRlcik7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WX2hhc1huYW1lX25vdF9lbmRpbmdXaXRoWGFzWFgoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIFZlcnRleD4gdHJhdmVyc2FsID0gZ2V0X2dfVl9oYXNYbmFtZV9ub3RfZW5kaW5nV2l0aFhhc1hYKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBpbnQgY291bnRlciA9IDA7CisgICAgICAgIHdoaWxlICh0cmF2ZXJzYWwuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICBjb3VudGVyKys7CisgICAgICAgICAgICBhc3NlcnROb3RFcXVhbHMoInZhZGFzIiwgdHJhdmVyc2FsLm5leHQoKS52YWx1ZSgibmFtZSIpKTsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnRFcXVhbHMoNSwgY291bnRlcik7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WX2hhc1hwZXJzb25fbmFtZV9jb250YWluaW5nWG9YX2FuZFhsdFhtWFhYKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBWZXJ0ZXg+IHRyYXZlcnNhbCA9IGdldF9nX1ZfaGFzWHBlcnNvbl9uYW1lX2NvbnRhaW5pbmdYb1hfYW5kWGx0WG1YWFgoKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGFzc2VydFRydWUodHJhdmVyc2FsLmhhc05leHQoKSk7CisgICAgICAgIGFzc2VydFRydWUodHJhdmVyc2FsLm5leHQoKS52YWx1ZSgibmFtZSIpLmVxdWFscygiam9zaCIpKTsKKyAgICAgICAgYXNzZXJ0RmFsc2UodHJhdmVyc2FsLmhhc05leHQoKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WX2hhc1huYW1lX2d0WG1YX2FuZFhjb250YWluaW5nWG9YWFgoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIFZlcnRleD4gdHJhdmVyc2FsID0gZ2V0X2dfVl9oYXNYbmFtZV9ndFhtWF9hbmRYY29udGFpbmluZ1hvWFhYKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBhc3NlcnRUcnVlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOworICAgICAgICBhc3NlcnRUcnVlKHRyYXZlcnNhbC5uZXh0KCkudmFsdWUoIm5hbWUiKS5lcXVhbHMoIm1hcmtvIikpOworICAgICAgICBhc3NlcnRGYWxzZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1ZfaGFzWHBfbmVxWHZYWCgpIHsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgVmVydGV4PiB0cmF2ZXJzYWwgPSBnZXRfZ19WX2hhc1hwX25lcVh2WFgoKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGFzc2VydFRoYXQodHJhdmVyc2FsLmhhc05leHQoKSwgaXMoZmFsc2UpKTsKKyAgICB9CisKICAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFRyYXZlcnNhbHMgZXh0ZW5kcyBIYXNUZXN0IHsKICAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8RWRnZSwgRWRnZT4gZ2V0X2dfRVgxMVhfb3V0Vl9vdXRFX2hhc1hpZF8xMFgoZmluYWwgT2JqZWN0IGUxMUlkLCBmaW5hbCBPYmplY3QgZTEwSWQpIHsKQEAgLTY3Niw2ICs4MTQsMTYgQEAKICAgICAgICAgfQogCiAgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgRG91YmxlPiBnZXRfZ19WX2JvdGhFX3Byb3BlcnRpZXNfZGVkdXBfaGFzS2V5WHdlaWdodFhfdmFsdWUoKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkuYm90aEUoKS5wcm9wZXJ0aWVzKCkuZGVkdXAoKS5oYXNLZXkoIndlaWdodCIpLnZhbHVlKCk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIERvdWJsZT4gZ2V0X2dfVl9ib3RoRV9wcm9wZXJ0aWVzX2RlZHVwX2hhc0tleVh3ZWlnaHRYX2hhc1ZhbHVlWGx0WDBkM1hYX3ZhbHVlKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLmJvdGhFKCkucHJvcGVydGllcygpLmRlZHVwKCkuaGFzS2V5KCJ3ZWlnaHQiKS5oYXNWYWx1ZShQLmx0KDAuMykpLnZhbHVlKCk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKICAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIFN0cmluZz4gZ2V0X2dfVl9oYXNOb3RYYWdlWF9uYW1lKCkgewogICAgICAgICAgICAgcmV0dXJuIGcuVigpLmhhc05vdCgiYWdlIikudmFsdWVzKCJuYW1lIik7CiAgICAgICAgIH0KQEAgLTcyOSw1ICs4NzcsNTAgQEAKICAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIExvbmc+IGdldF9nX1ZfaGFzWGFnZV93aXRob3V0WDI3XzI5WF9jb3VudCgpIHsKICAgICAgICAgICAgIHJldHVybiBnLlYoKS5oYXMoImFnZSIsIFAud2l0aG91dCgyNywgMjkpKS5jb3VudCgpOwogICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBWZXJ0ZXg+IGdldF9nX1ZfaGFzWG5hbWVfY29udGFpbmluZ1hhcmtYWCgpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS5oYXMoIm5hbWUiLCBUZXh0UC5jb250YWluaW5nKCJhcmsiKSk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIFZlcnRleD4gZ2V0X2dfVl9oYXNYbmFtZV9zdGFydGluZ1dpdGhYbWFyWFgoKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkuaGFzKCJuYW1lIiwgVGV4dFAuc3RhcnRpbmdXaXRoKCJtYXIiKSk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIFZlcnRleD4gZ2V0X2dfVl9oYXNYbmFtZV9lbmRpbmdXaXRoWGFzWFgoKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkuaGFzKCJuYW1lIiwgVGV4dFAuZW5kaW5nV2l0aCgiYXMiKSk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIFZlcnRleD4gZ2V0X2dfVl9oYXNYbmFtZV9ub3RfY29udGFpbmluZ1hhcmtYWCgpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS5oYXMoIm5hbWUiLCBUZXh0UC5ub3RDb250YWluaW5nKCJhcmsiKSk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIFZlcnRleD4gZ2V0X2dfVl9oYXNYbmFtZV9ub3Rfc3RhcnRpbmdXaXRoWG1hclhYKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLmhhcygibmFtZSIsIFRleHRQLm5vdFN0YXJ0aW5nV2l0aCgibWFyIikpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBWZXJ0ZXg+IGdldF9nX1ZfaGFzWG5hbWVfbm90X2VuZGluZ1dpdGhYYXNYWCgpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS5oYXMoIm5hbWUiLCBUZXh0UC5ub3RFbmRpbmdXaXRoKCJhcyIpKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgVmVydGV4PiBnZXRfZ19WX2hhc1hwZXJzb25fbmFtZV9jb250YWluaW5nWG9YX2FuZFhsdFhtWFhYKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLmhhcygicGVyc29uIiwibmFtZSIsIFRleHRQLmNvbnRhaW5pbmcoIm8iKS5hbmQoUC5sdCgibSIpKSk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIFZlcnRleD4gZ2V0X2dfVl9oYXNYbmFtZV9ndFhtWF9hbmRYY29udGFpbmluZ1hvWFhYKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLmhhcygibmFtZSIsIFAuZ3QoIm0iKS5hbmQoVGV4dFAuY29udGFpbmluZygibyIpKSk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIFZlcnRleD4gZ2V0X2dfVl9oYXNYcF9uZXFYdlhYKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLmhhcygicCIsIFAubmVxKCJ2IikpOworICAgICAgICB9CiAgICAgfQogfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvQWRkVmVydGV4VGVzdC5qYXZhIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9BZGRWZXJ0ZXhUZXN0LmphdmEKaW5kZXggZjczMmE0NC4uMjFmYmI4YyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9BZGRWZXJ0ZXhUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9BZGRWZXJ0ZXhUZXN0LmphdmEKQEAgLTI0LDYgKzI0LDcgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuR3JlbWxpblByb2Nlc3NSdW5uZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX187CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuV2l0aE9wdGlvbnM7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGg7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXg7CkBAIC02NSw3ICs2Niw3IEBACiAKICAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgVmVydGV4PiBnZXRfZ19WX2FkZFZYYW5pbWFsWF9wcm9wZXJ0eVhuYW1lX3ZhbHVlc1huYW1lWFhfcHJvcGVydHlYbmFtZV9hbl9hbmltYWxYX3Byb3BlcnR5WHZhbHVlc1huYW1lWF9sYWJlbFgoKTsKIAotICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8U3RyaW5nLCBMaXN0PFN0cmluZz4+PiBnZXRfZ193aXRoU2lkZUVmZmVjdFhhX3Rlc3RYX1ZfaGFzTGFiZWxYc29mdHdhcmVYX3Byb3BlcnR5WHRlbXBfc2VsZWN0WGFYWF92YWx1ZU1hcFhuYW1lX3RlbXBYKCk7CisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxPYmplY3QsIExpc3Q8U3RyaW5nPj4+IGdldF9nX3dpdGhTaWRlRWZmZWN0WGFfdGVzdFhfVl9oYXNMYWJlbFhzb2Z0d2FyZVhfcHJvcGVydHlYdGVtcF9zZWxlY3RYYVhYX3ZhbHVlTWFwWG5hbWVfdGVtcFgoKTsKIAogICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBTdHJpbmc+IGdldF9nX3dpdGhTaWRlRWZmZWN0WGFfbWFya29YX2FkZFZfcHJvcGVydHlYbmFtZV9zZWxlY3RYYVhYX25hbWUoKTsKIApAQCAtNzMsNyArNzQsNyBAQAogCiAgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIFN0cmluZz4gZ2V0X2dfd2l0aFNpZGVFZmZlY3RYYV9uYW1lWF9hZGRWX3Byb3BlcnR5WHNlbGVjdFhhWF9tYXJrb1hfbmFtZSgpOwogCi0gICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxPYmplY3QsIE9iamVjdD4+IGdldF9nX1ZfYXNYYVhfaGFzWG5hbWVfbWFya29YX291dFhjcmVhdGVkWF9hc1hiWF9hZGRWWHNlbGVjdFhhWF9sYWJlbFhfcHJvcGVydHlYdGVzdF9zZWxlY3RYYlhfbGFiZWxYX3ZhbHVlTWFwWHRydWVYKCk7CisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxPYmplY3QsIE9iamVjdD4+IGdldF9nX1ZfYXNYYVhfaGFzWG5hbWVfbWFya29YX291dFhjcmVhdGVkWF9hc1hiWF9hZGRWWHNlbGVjdFhhWF9sYWJlbFhfcHJvcGVydHlYdGVzdF9zZWxlY3RYYlhfbGFiZWxYX3ZhbHVlTWFwX3dpdGhYdG9rZW5zWCgpOwogCiAgICAgQFRlc3QKICAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCkBAIC0yMzUsMTIgKzIzNiwxMiBAQAogICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKICAgICBARmVhdHVyZVJlcXVpcmVtZW50KGZlYXR1cmVDbGFzcyA9IEdyYXBoLkZlYXR1cmVzLlZlcnRleEZlYXR1cmVzLmNsYXNzLCBmZWF0dXJlID0gR3JhcGguRmVhdHVyZXMuVmVydGV4RmVhdHVyZXMuRkVBVFVSRV9BRERfUFJPUEVSVFkpCiAgICAgcHVibGljIHZvaWQgZ193aXRoU2lkZUVmZmVjdFhhX3Rlc3RYX1ZfaGFzTGFiZWxYc29mdHdhcmVYX3Byb3BlcnR5WHRlbXBfc2VsZWN0WGFYWF92YWx1ZU1hcFhuYW1lX3RlbXBYKCkgewotICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8U3RyaW5nLCBMaXN0PFN0cmluZz4+PiB0cmF2ZXJzYWwgPSBnZXRfZ193aXRoU2lkZUVmZmVjdFhhX3Rlc3RYX1ZfaGFzTGFiZWxYc29mdHdhcmVYX3Byb3BlcnR5WHRlbXBfc2VsZWN0WGFYWF92YWx1ZU1hcFhuYW1lX3RlbXBYKCk7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxPYmplY3QsIExpc3Q8U3RyaW5nPj4+IHRyYXZlcnNhbCA9IGdldF9nX3dpdGhTaWRlRWZmZWN0WGFfdGVzdFhfVl9oYXNMYWJlbFhzb2Z0d2FyZVhfcHJvcGVydHlYdGVtcF9zZWxlY3RYYVhYX3ZhbHVlTWFwWG5hbWVfdGVtcFgoKTsKICAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CiAgICAgICAgIGludCBjb3VudGVyID0gMDsKICAgICAgICAgd2hpbGUgKHRyYXZlcnNhbC5oYXNOZXh0KCkpIHsKICAgICAgICAgICAgIGNvdW50ZXIrKzsKLSAgICAgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsIExpc3Q8U3RyaW5nPj4gdmFsdWVNYXAgPSB0cmF2ZXJzYWwubmV4dCgpOworICAgICAgICAgICAgZmluYWwgTWFwPE9iamVjdCwgTGlzdDxTdHJpbmc+PiB2YWx1ZU1hcCA9IHRyYXZlcnNhbC5uZXh0KCk7CiAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMiwgdmFsdWVNYXAuc2l6ZSgpKTsKICAgICAgICAgICAgIGFzc2VydEVxdWFscyhDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KCJ0ZXN0IiksIHZhbHVlTWFwLmdldCgidGVtcCIpKTsKICAgICAgICAgICAgIGFzc2VydFRydWUodmFsdWVNYXAuZ2V0KCJuYW1lIikuZXF1YWxzKENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QoInJpcHBsZSIpKSB8fCB2YWx1ZU1hcC5nZXQoIm5hbWUiKS5lcXVhbHMoQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdCgibG9wIikpKTsKQEAgLTI4NSw4ICsyODYsOCBAQAogICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKICAgICBARmVhdHVyZVJlcXVpcmVtZW50KGZlYXR1cmVDbGFzcyA9IEdyYXBoLkZlYXR1cmVzLlZlcnRleEZlYXR1cmVzLmNsYXNzLCBmZWF0dXJlID0gR3JhcGguRmVhdHVyZXMuVmVydGV4RmVhdHVyZXMuRkVBVFVSRV9BRERfVkVSVElDRVMpCiAgICAgQEZlYXR1cmVSZXF1aXJlbWVudChmZWF0dXJlQ2xhc3MgPSBHcmFwaC5GZWF0dXJlcy5WZXJ0ZXhGZWF0dXJlcy5jbGFzcywgZmVhdHVyZSA9IEdyYXBoLkZlYXR1cmVzLlZlcnRleEZlYXR1cmVzLkZFQVRVUkVfQUREX1BST1BFUlRZKQotICAgIHB1YmxpYyB2b2lkIGdfVl9hc1hhWF9oYXNYbmFtZV9tYXJrb1hfb3V0WGNyZWF0ZWRYX2FzWGJYX2FkZFZYc2VsZWN0WGFYX2xhYmVsWF9wcm9wZXJ0eVh0ZXN0X3NlbGVjdFhiWF9sYWJlbFhfdmFsdWVNYXBYdHJ1ZVgoKSB7Ci0gICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxPYmplY3QsT2JqZWN0Pj4gdHJhdmVyc2FsID0gZ2V0X2dfVl9hc1hhWF9oYXNYbmFtZV9tYXJrb1hfb3V0WGNyZWF0ZWRYX2FzWGJYX2FkZFZYc2VsZWN0WGFYX2xhYmVsWF9wcm9wZXJ0eVh0ZXN0X3NlbGVjdFhiWF9sYWJlbFhfdmFsdWVNYXBYdHJ1ZVgoKTsKKyAgICBwdWJsaWMgdm9pZCBnX1ZfYXNYYVhfaGFzWG5hbWVfbWFya29YX291dFhjcmVhdGVkWF9hc1hiWF9hZGRWWHNlbGVjdFhhWF9sYWJlbFhfcHJvcGVydHlYdGVzdF9zZWxlY3RYYlhfbGFiZWxYX3ZhbHVlTWFwX3dpdGhYdG9rZW5zWCgpIHsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgTWFwPE9iamVjdCxPYmplY3Q+PiB0cmF2ZXJzYWwgPSBnZXRfZ19WX2FzWGFYX2hhc1huYW1lX21hcmtvWF9vdXRYY3JlYXRlZFhfYXNYYlhfYWRkVlhzZWxlY3RYYVhfbGFiZWxYX3Byb3BlcnR5WHRlc3Rfc2VsZWN0WGJYX2xhYmVsWF92YWx1ZU1hcF93aXRoWHRva2Vuc1goKTsKICAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CiAgICAgICAgIGZpbmFsIE1hcDxPYmplY3QsT2JqZWN0PiBtYXAgPSB0cmF2ZXJzYWwubmV4dCgpOwogICAgICAgICBhc3NlcnRGYWxzZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKQEAgLTMzOSw3ICszNDAsNyBAQAogICAgICAgICB9CiAKICAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8U3RyaW5nLCBMaXN0PFN0cmluZz4+PiBnZXRfZ193aXRoU2lkZUVmZmVjdFhhX3Rlc3RYX1ZfaGFzTGFiZWxYc29mdHdhcmVYX3Byb3BlcnR5WHRlbXBfc2VsZWN0WGFYWF92YWx1ZU1hcFhuYW1lX3RlbXBYKCkgeworICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgTWFwPE9iamVjdCwgTGlzdDxTdHJpbmc+Pj4gZ2V0X2dfd2l0aFNpZGVFZmZlY3RYYV90ZXN0WF9WX2hhc0xhYmVsWHNvZnR3YXJlWF9wcm9wZXJ0eVh0ZW1wX3NlbGVjdFhhWFhfdmFsdWVNYXBYbmFtZV90ZW1wWCgpIHsKICAgICAgICAgICAgIHJldHVybiBnLndpdGhTaWRlRWZmZWN0KCJhIiwgInRlc3QiKS5WKCkuaGFzTGFiZWwoInNvZnR3YXJlIikucHJvcGVydHkoInRlbXAiLCBzZWxlY3QoImEiKSkudmFsdWVNYXAoIm5hbWUiLCAidGVtcCIpOwogICAgICAgICB9CiAKQEAgLTM1OSw4ICszNjAsOCBAQAogICAgICAgICB9CiAKICAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBPYmplY3Q+PiBnZXRfZ19WX2FzWGFYX2hhc1huYW1lX21hcmtvWF9vdXRYY3JlYXRlZFhfYXNYYlhfYWRkVlhzZWxlY3RYYVhfbGFiZWxYX3Byb3BlcnR5WHRlc3Rfc2VsZWN0WGJYX2xhYmVsWF92YWx1ZU1hcFh0cnVlWCgpIHsKLSAgICAgICAgICAgIHJldHVybiBnLlYoKS5hcygiYSIpLmhhcygibmFtZSIsICJtYXJrbyIpLm91dCgiY3JlYXRlZCIpLmFzKCJiIikuYWRkVihzZWxlY3QoImEiKS5sYWJlbCgpKS5wcm9wZXJ0eSgidGVzdCIsIHNlbGVjdCgiYiIpLmxhYmVsKCkpLnZhbHVlTWFwKHRydWUpOworICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgTWFwPE9iamVjdCwgT2JqZWN0Pj4gZ2V0X2dfVl9hc1hhWF9oYXNYbmFtZV9tYXJrb1hfb3V0WGNyZWF0ZWRYX2FzWGJYX2FkZFZYc2VsZWN0WGFYX2xhYmVsWF9wcm9wZXJ0eVh0ZXN0X3NlbGVjdFhiWF9sYWJlbFhfdmFsdWVNYXBfd2l0aFh0b2tlbnNYKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLmFzKCJhIikuaGFzKCJuYW1lIiwgIm1hcmtvIikub3V0KCJjcmVhdGVkIikuYXMoImIiKS5hZGRWKHNlbGVjdCgiYSIpLmxhYmVsKCkpLnByb3BlcnR5KCJ0ZXN0Iiwgc2VsZWN0KCJiIikubGFiZWwoKSkudmFsdWVNYXAoKS53aXRoKFdpdGhPcHRpb25zLnRva2Vucyk7CiAgICAgICAgIH0KICAgICB9CiB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9Db25uZWN0ZWRDb21wb25lbnRUZXN0LmphdmEgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL0Nvbm5lY3RlZENvbXBvbmVudFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDBhYWJmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9Db25uZWN0ZWRDb21wb25lbnRUZXN0LmphdmEKQEAgLTAsMCArMSwxNjAgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5Mb2FkR3JhcGhXaXRoOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5BYnN0cmFjdEdyZW1saW5Qcm9jZXNzVGVzdDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIudHJhdmVyc2FsLnN0ZXAubWFwLkNvbm5lY3RlZENvbXBvbmVudDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi51dGlsLml0ZXJhdG9yLkl0ZXJhdG9yVXRpbHM7CitpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CisKK2ltcG9ydCBqYXZhLnV0aWwuQ29tcGFyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgamF2YS51dGlsLk1hcDsKKworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkxvYWRHcmFwaFdpdGguR3JhcGhEYXRhLk1PREVSTjsKK2ltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX18uYm90aEU7CitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydE5vdEVxdWFsczsKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnROb3ROdWxsOworCisvKioKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqLworcHVibGljIGFic3RyYWN0IGNsYXNzIENvbm5lY3RlZENvbXBvbmVudFRlc3QgZXh0ZW5kcyBBYnN0cmFjdEdyZW1saW5Qcm9jZXNzVGVzdCB7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgVmVydGV4PiBnZXRfZ19WX2Nvbm5lY3RlZENvbXBvbmVudF9oYXNYY29tcG9uZW50WCgpOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxTdHJpbmcsT2JqZWN0Pj4gZ2V0X2dfVl9oYXNMYWJlbFhzb2Z0d2FyZVhfY29ubmVjdGVkQ29tcG9uZW50X3Byb2plY3RfYnlYbmFtZVhfYnlYY29tcG9uZW50WCgpOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIFZlcnRleD4gZ2V0X2dfVl9kZWR1cF9jb25uZWN0ZWRDb21wb25lbnRfaGFzWGNvbXBvbmVudFgoKTsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8U3RyaW5nLE9iamVjdD4+IGdldF9nX1ZfY29ubmVjdGVkQ29tcG9uZW50X3dpdGhYZWRnZXNfYm90aEVYa25vd3NYWF93aXRoWHByb3BlcnR5TmFtZV9jbHVzdGVyWF9wcm9qZWN0X2J5WG5hbWVYX2J5WGNsdXN0ZXJYKCk7CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1ZfY29ubmVjdGVkQ29tcG9uZW50X2hhc1hjb21wb25lbnRYKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBWZXJ0ZXg+IHRyYXZlcnNhbCA9IGdldF9nX1ZfY29ubmVjdGVkQ29tcG9uZW50X2hhc1hjb21wb25lbnRYKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBhc3NlcnRFcXVhbHMoNiwgSXRlcmF0b3JVdGlscy5jb3VudCh0cmF2ZXJzYWwpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1ZfZGVkdXBfY29ubmVjdGVkQ29tcG9uZW50X2hhc1hjb21wb25lbnRYKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBWZXJ0ZXg+IHRyYXZlcnNhbCA9IGdldF9nX1ZfZGVkdXBfY29ubmVjdGVkQ29tcG9uZW50X2hhc1hjb21wb25lbnRYKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBhc3NlcnRFcXVhbHMoNiwgSXRlcmF0b3JVdGlscy5jb3VudCh0cmF2ZXJzYWwpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1ZfaGFzTGFiZWxYc29mdHdhcmVYX2Nvbm5lY3RlZENvbXBvbmVudF9wcm9qZWN0X2J5WG5hbWVYX2J5WGNvbXBvbmVudFgoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxTdHJpbmcsT2JqZWN0Pj4gdHJhdmVyc2FsID0gZ2V0X2dfVl9oYXNMYWJlbFhzb2Z0d2FyZVhfY29ubmVjdGVkQ29tcG9uZW50X3Byb2plY3RfYnlYbmFtZVhfYnlYY29tcG9uZW50WCgpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgaW50IGNvdW50ZXIgPSAwOworCisgICAgICAgIFN0cmluZyBzb2Z0d2FyZUNvbXBvbmVudCA9IG51bGw7CisKKyAgICAgICAgd2hpbGUgKHRyYXZlcnNhbC5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsT2JqZWN0PiBtID0gdHJhdmVyc2FsLm5leHQoKTsKKyAgICAgICAgICAgIGZpbmFsIFN0cmluZyBuYW1lID0gbS5nZXQoIm5hbWUiKS50b1N0cmluZygpOworCisgICAgICAgICAgICAvLyBzaW5jZSB0aGUgdHdvIHJldHVybmVkIHZhbHVlcyBhcmUgaW4gdGhlIHNhbWUgY29tcG9uZW50IGp1c3QgbmVlZCB0byBncmFiIHRoZSBmaXJzdCBvbmUgYW5kIHVzZSB0aGF0CisgICAgICAgICAgICAvLyBhcyBhIGNvbXBhcmlzb24gdG8gdGhlIG90aGVyCisgICAgICAgICAgICBpZiAobnVsbCA9PSBzb2Z0d2FyZUNvbXBvbmVudCkKKyAgICAgICAgICAgICAgICBzb2Z0d2FyZUNvbXBvbmVudCA9IG0uZ2V0KCJjb21wb25lbnQiKS50b1N0cmluZygpOworCisgICAgICAgICAgICBhc3NlcnROb3ROdWxsKHNvZnR3YXJlQ29tcG9uZW50KTsKKworICAgICAgICAgICAgc3dpdGNoIChuYW1lKSB7CisgICAgICAgICAgICAgICAgY2FzZSAibG9wIjoKKyAgICAgICAgICAgICAgICBjYXNlICJyaXBwbGUiOgorICAgICAgICAgICAgICAgICAgICBjb3VudGVyKys7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhzb2Z0d2FyZUNvbXBvbmVudCwgbS5nZXQoImNvbXBvbmVudCIpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0RXF1YWxzKDIsIGNvdW50ZXIpOworICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIGdfVl9jb25uZWN0ZWRDb21wb25lbnRfd2l0aFhFREdFU19ib3RoRVhrbm93c1hYX3dpdGhYUFJPUEVSVFlfTkFNRV9jbHVzdGVyWF9wcm9qZWN0X2J5WG5hbWVYX2J5WGNsdXN0ZXJYKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8U3RyaW5nLE9iamVjdD4+IHRyYXZlcnNhbCA9IGdldF9nX1ZfY29ubmVjdGVkQ29tcG9uZW50X3dpdGhYZWRnZXNfYm90aEVYa25vd3NYWF93aXRoWHByb3BlcnR5TmFtZV9jbHVzdGVyWF9wcm9qZWN0X2J5WG5hbWVYX2J5WGNsdXN0ZXJYKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBpbnQgY291bnRlciA9IDA7CisKKyAgICAgICAgU3RyaW5nIHNvZnR3YXJlQ29tcG9uZW50ID0gbnVsbDsKKworICAgICAgICAvLyBzb3J0IHRvIG1ha2Ugc3VyZSB0aGF0ICJwZXRlciIgaXMgYWx3YXlzIGxhc3QKKyAgICAgICAgZmluYWwgSXRlcmF0b3I8TWFwPFN0cmluZyxPYmplY3Q+PiBpdHR5ID0gdHJhdmVyc2FsLnRvTGlzdCgpLnN0cmVhbSgpLnNvcnRlZCgobzEsIG8yKSAtPiBvMS5nZXQoIm5hbWUiKS50b1N0cmluZygpLmVxdWFscygicGV0ZXIiKSA/IDEgOiAtMSkuaXRlcmF0b3IoKTsKKworICAgICAgICB3aGlsZSAoaXR0eS5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsT2JqZWN0PiBtID0gaXR0eS5uZXh0KCk7CisgICAgICAgICAgICBmaW5hbCBTdHJpbmcgbmFtZSA9IG0uZ2V0KCJuYW1lIikudG9TdHJpbmcoKTsKKworICAgICAgICAgICAgLy8gc2luY2UgdGhlIHRocmVlIG9mIHRoZSByZXR1cm5lZCB2YWx1ZXMgYXJlIGluIHRoZSBzYW1lIGNvbXBvbmVudCBqdXN0IG5lZWQgdG8gZ3JhYiB0aGUgZmlyc3Qgb25lIGFuZAorICAgICAgICAgICAgLy8gdXNlIHRoYXQgYXMgYSBjb21wYXJpc29uIHRvIHRoZSBvdGhlcnMgYW5kIHRoZW4gZm9yIHRoZSBmb3VydGggcmV0dXJuZWQgaXRlbSAicGV0ZXIiIGp1c3QgbmVlZHMgdG8gbm90CisgICAgICAgICAgICAvLyBiZSBpbiB0aGUgc2FtZSBjb21wb25lbnQKKyAgICAgICAgICAgIGlmIChudWxsID09IHNvZnR3YXJlQ29tcG9uZW50KQorICAgICAgICAgICAgICAgIHNvZnR3YXJlQ29tcG9uZW50ID0gbS5nZXQoImNsdXN0ZXIiKS50b1N0cmluZygpOworCisgICAgICAgICAgICBhc3NlcnROb3ROdWxsKHNvZnR3YXJlQ29tcG9uZW50KTsKKworICAgICAgICAgICAgc3dpdGNoIChuYW1lKSB7CisgICAgICAgICAgICAgICAgY2FzZSAibWFya28iOgorICAgICAgICAgICAgICAgIGNhc2UgInZhZGFzIjoKKyAgICAgICAgICAgICAgICBjYXNlICJqb3NoIjoKKyAgICAgICAgICAgICAgICAgICAgY291bnRlcisrOworICAgICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoc29mdHdhcmVDb21wb25lbnQsIG0uZ2V0KCJjbHVzdGVyIikpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlICJwZXRlciI6CisgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIrKzsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0Tm90RXF1YWxzKHNvZnR3YXJlQ29tcG9uZW50LCBtLmdldCgiY2x1c3RlciIpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0RXF1YWxzKDQsIGNvdW50ZXIpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgVHJhdmVyc2FscyBleHRlbmRzIENvbm5lY3RlZENvbXBvbmVudFRlc3QgeworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIFZlcnRleD4gZ2V0X2dfVl9jb25uZWN0ZWRDb21wb25lbnRfaGFzWGNvbXBvbmVudFgoKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkuY29ubmVjdGVkQ29tcG9uZW50KCkuaGFzKENvbm5lY3RlZENvbXBvbmVudC5jb21wb25lbnQpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBWZXJ0ZXg+IGdldF9nX1ZfZGVkdXBfY29ubmVjdGVkQ29tcG9uZW50X2hhc1hjb21wb25lbnRYKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLmRlZHVwKCkuY29ubmVjdGVkQ29tcG9uZW50KCkuaGFzKENvbm5lY3RlZENvbXBvbmVudC5jb21wb25lbnQpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8U3RyaW5nLE9iamVjdD4+IGdldF9nX1ZfaGFzTGFiZWxYc29mdHdhcmVYX2Nvbm5lY3RlZENvbXBvbmVudF9wcm9qZWN0X2J5WG5hbWVYX2J5WGNvbXBvbmVudFgoKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkuaGFzTGFiZWwoInNvZnR3YXJlIikuY29ubmVjdGVkQ29tcG9uZW50KCkucHJvamVjdCgibmFtZSIsImNvbXBvbmVudCIpLmJ5KCJuYW1lIikuYnkoQ29ubmVjdGVkQ29tcG9uZW50LmNvbXBvbmVudCk7CisgICAgICAgIH0KKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8U3RyaW5nLE9iamVjdD4+IGdldF9nX1ZfY29ubmVjdGVkQ29tcG9uZW50X3dpdGhYZWRnZXNfYm90aEVYa25vd3NYWF93aXRoWHByb3BlcnR5TmFtZV9jbHVzdGVyWF9wcm9qZWN0X2J5WG5hbWVYX2J5WGNsdXN0ZXJYKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLmhhc0xhYmVsKCJwZXJzb24iKS5jb25uZWN0ZWRDb21wb25lbnQoKS53aXRoKENvbm5lY3RlZENvbXBvbmVudC5lZGdlcywgYm90aEUoImtub3dzIikpLndpdGgoQ29ubmVjdGVkQ29tcG9uZW50LnByb3BlcnR5TmFtZSwgImNsdXN0ZXIiKS5wcm9qZWN0KCJuYW1lIiwiY2x1c3RlciIpLmJ5KCJuYW1lIikuYnkoImNsdXN0ZXIiKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvRWxlbWVudE1hcFRlc3QuamF2YSBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvRWxlbWVudE1hcFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDVkZTc2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9FbGVtZW50TWFwVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTg3IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcDsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uTG9hZEdyYXBoV2l0aDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuQWJzdHJhY3RHcmVtbGluUHJvY2Vzc1Rlc3Q7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLkdyZW1saW5Qcm9jZXNzUnVubmVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLl9fOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLldpdGhPcHRpb25zOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkRpcmVjdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5FZGdlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4OworaW1wb3J0IG9yZy5qdW5pdC5UZXN0OworaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXIuUnVuV2l0aDsKKworaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgamF2YS51dGlsLk1hcDsKKworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkxvYWRHcmFwaFdpdGguR3JhcGhEYXRhLkNSRVc7CitpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uTG9hZEdyYXBoV2l0aC5HcmFwaERhdGEuTU9ERVJOOworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5ULmlkOworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5ULmxhYmVsOworaW1wb3J0IHN0YXRpYyBvcmcuaGFtY3Jlc3QuTWF0Y2hlckFzc2VydC5hc3NlcnRUaGF0OworaW1wb3J0IHN0YXRpYyBvcmcuaGFtY3Jlc3QuY29yZS5Jcy5pczsKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRFcXVhbHM7CitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RmFsc2U7CitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0Tm90TnVsbDsKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnROdWxsOworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydFRydWU7CisKKy8qKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitAUnVuV2l0aChHcmVtbGluUHJvY2Vzc1J1bm5lci5jbGFzcykKK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBFbGVtZW50TWFwVGVzdCBleHRlbmRzIEFic3RyYWN0R3JlbWxpblByb2Nlc3NUZXN0IHsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBPYmplY3Q+PiBnZXRfZ19WX2VsZW1lbnRNYXAoKTsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBPYmplY3Q+PiBnZXRfZ19WX2VsZW1lbnRNYXBYbmFtZV9hZ2VYKCk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPEVkZ2UsIE1hcDxPYmplY3QsIE9iamVjdD4+IGdldF9nX0VYMTFYX2VsZW1lbnRNYXAoZmluYWwgT2JqZWN0IGUxMUlkKTsKKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIGdfVl9lbGVtZW50TWFwKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBPYmplY3Q+PiB0cmF2ZXJzYWwgPSBnZXRfZ19WX2VsZW1lbnRNYXAoKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGludCBjb3VudGVyID0gMDsKKyAgICAgICAgd2hpbGUgKHRyYXZlcnNhbC5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgIGNvdW50ZXIrKzsKKyAgICAgICAgICAgIGZpbmFsIE1hcDxPYmplY3QsIE9iamVjdD4gdmFsdWVzID0gdHJhdmVyc2FsLm5leHQoKTsKKyAgICAgICAgICAgIGZpbmFsIFN0cmluZyBuYW1lID0gKFN0cmluZykgdmFsdWVzLmdldCgibmFtZSIpOworICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDQsIHZhbHVlcy5zaXplKCkpOworICAgICAgICAgICAgaWYgKG5hbWUuZXF1YWxzKCJtYXJrbyIpKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDI5LCB2YWx1ZXMuZ2V0KCJhZ2UiKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJwZXJzb24iLCB2YWx1ZXMuZ2V0KGxhYmVsKSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKG5hbWUuZXF1YWxzKCJqb3NoIikpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMzIsIHZhbHVlcy5nZXQoImFnZSIpKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoInBlcnNvbiIsIHZhbHVlcy5nZXQobGFiZWwpKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobmFtZS5lcXVhbHMoInBldGVyIikpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMzUsIHZhbHVlcy5nZXQoImFnZSIpKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoInBlcnNvbiIsIHZhbHVlcy5nZXQobGFiZWwpKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobmFtZS5lcXVhbHMoInZhZGFzIikpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMjcsIHZhbHVlcy5nZXQoImFnZSIpKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoInBlcnNvbiIsIHZhbHVlcy5nZXQobGFiZWwpKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobmFtZS5lcXVhbHMoImxvcCIpKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJqYXZhIiwgdmFsdWVzLmdldCgibGFuZyIpKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoInNvZnR3YXJlIiwgdmFsdWVzLmdldChsYWJlbCkpOworICAgICAgICAgICAgfSBlbHNlIGlmIChuYW1lLmVxdWFscygicmlwcGxlIikpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoImphdmEiLCB2YWx1ZXMuZ2V0KCJsYW5nIikpOworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygic29mdHdhcmUiLCB2YWx1ZXMuZ2V0KGxhYmVsKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIkl0IGlzIG5vdCBwb3NzaWJsZSB0byByZWFjaCBoZXJlOiAiICsgdmFsdWVzKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYXNzZXJ0VGhhdCh2YWx1ZXMuY29udGFpbnNLZXkoVC5pZCksIGlzKHRydWUpKTsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnRFcXVhbHMoNiwgY291bnRlcik7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WX2VsZW1lbnRNYXBYbmFtZV9hZ2VYKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBPYmplY3Q+PiB0cmF2ZXJzYWwgPSBnZXRfZ19WX2VsZW1lbnRNYXBYbmFtZV9hZ2VYKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBpbnQgY291bnRlciA9IDA7CisgICAgICAgIHdoaWxlICh0cmF2ZXJzYWwuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICBjb3VudGVyKys7CisgICAgICAgICAgICBmaW5hbCBNYXA8T2JqZWN0LCBPYmplY3Q+IHZhbHVlcyA9IHRyYXZlcnNhbC5uZXh0KCk7CisgICAgICAgICAgICBmaW5hbCBTdHJpbmcgbmFtZSA9IChTdHJpbmcpIHZhbHVlcy5nZXQoIm5hbWUiKTsKKyAgICAgICAgICAgIGlmIChuYW1lLmVxdWFscygibWFya28iKSkgeworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygyOSwgdmFsdWVzLmdldCgiYWdlIikpOworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygicGVyc29uIiwgdmFsdWVzLmdldChsYWJlbCkpOworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyg0LCB2YWx1ZXMuc2l6ZSgpKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobmFtZS5lcXVhbHMoImpvc2giKSkgeworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygzMiwgdmFsdWVzLmdldCgiYWdlIikpOworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygicGVyc29uIiwgdmFsdWVzLmdldChsYWJlbCkpOworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyg0LCB2YWx1ZXMuc2l6ZSgpKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobmFtZS5lcXVhbHMoInBldGVyIikpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMzUsIHZhbHVlcy5nZXQoImFnZSIpKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoInBlcnNvbiIsIHZhbHVlcy5nZXQobGFiZWwpKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoNCwgdmFsdWVzLnNpemUoKSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKG5hbWUuZXF1YWxzKCJ2YWRhcyIpKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDI3LCB2YWx1ZXMuZ2V0KCJhZ2UiKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJwZXJzb24iLCB2YWx1ZXMuZ2V0KGxhYmVsKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDQsIHZhbHVlcy5zaXplKCkpOworICAgICAgICAgICAgfSBlbHNlIGlmIChuYW1lLmVxdWFscygibG9wIikpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnROdWxsKHZhbHVlcy5nZXQoImxhbmciKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJzb2Z0d2FyZSIsIHZhbHVlcy5nZXQobGFiZWwpKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMywgdmFsdWVzLnNpemUoKSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKG5hbWUuZXF1YWxzKCJyaXBwbGUiKSkgeworICAgICAgICAgICAgICAgIGFzc2VydE51bGwodmFsdWVzLmdldCgibGFuZyIpKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoInNvZnR3YXJlIiwgdmFsdWVzLmdldChsYWJlbCkpOworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygzLCB2YWx1ZXMuc2l6ZSgpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiSXQgaXMgbm90IHBvc3NpYmxlIHRvIHJlYWNoIGhlcmU6ICIgKyB2YWx1ZXMpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBhc3NlcnRUaGF0KHZhbHVlcy5jb250YWluc0tleShULmlkKSwgaXModHJ1ZSkpOworICAgICAgICB9CisgICAgICAgIGFzc2VydEVxdWFscyg2LCBjb3VudGVyKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX0VYMTFYX2VsZW1lbnRNYXAoKSB7CisgICAgICAgIGZpbmFsIE9iamVjdCBlZGdlSWQgPSBjb252ZXJ0VG9FZGdlSWQoImpvc2giLCAiY3JlYXRlZCIsICJsb3AiKTsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPEVkZ2UsIE1hcDxPYmplY3QsT2JqZWN0Pj4gdHJhdmVyc2FsID0gZ2V0X2dfRVgxMVhfZWxlbWVudE1hcChlZGdlSWQpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKworICAgICAgICBmaW5hbCBNYXA8T2JqZWN0LE9iamVjdD4gbSA9IHRyYXZlcnNhbC5uZXh0KCk7CisgICAgICAgIGFzc2VydEVxdWFscyg1LCBtLnNpemUoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygwLjRkLCBtLmdldCgid2VpZ2h0IikpOworICAgICAgICBhc3NlcnRFcXVhbHMoImNyZWF0ZWQiLCBtLmdldChsYWJlbCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoZWRnZUlkLCBtLmdldChULmlkKSk7CisKKyAgICAgICAgZmluYWwgVmVydGV4IHZKb3NoID0gY29udmVydFRvVmVydGV4KCJqb3NoIik7CisgICAgICAgIGFzc2VydEVxdWFscyh2Sm9zaC5pZCgpLCAoKE1hcDxPYmplY3QsT2JqZWN0PikgbS5nZXQoRGlyZWN0aW9uLk9VVCkpLmdldChULmlkKSk7CisKKyAgICAgICAgaWYgKCFoYXNHcmFwaENvbXB1dGVyUmVxdWlyZW1lbnQoKSkKKyAgICAgICAgICAgIGFzc2VydEVxdWFscyh2Sm9zaC5sYWJlbCgpLCAoKE1hcDxPYmplY3QsT2JqZWN0PikgbS5nZXQoRGlyZWN0aW9uLk9VVCkpLmdldChULmxhYmVsKSk7CisKKyAgICAgICAgZmluYWwgVmVydGV4IHZMb3AgPSBjb252ZXJ0VG9WZXJ0ZXgoImxvcCIpOworICAgICAgICBhc3NlcnRFcXVhbHModkxvcC5pZCgpLCAoKE1hcDxPYmplY3QsT2JqZWN0PikgbS5nZXQoRGlyZWN0aW9uLklOKSkuZ2V0KFQuaWQpKTsKKworICAgICAgICBpZiAoIWhhc0dyYXBoQ29tcHV0ZXJSZXF1aXJlbWVudCgpKQorICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKHZMb3AubGFiZWwoKSwgKChNYXA8T2JqZWN0LE9iamVjdD4pIG0uZ2V0KERpcmVjdGlvbi5JTikpLmdldChULmxhYmVsKSk7CisKKyAgICAgICAgYXNzZXJ0VGhhdCh0cmF2ZXJzYWwuaGFzTmV4dCgpLCBpcyhmYWxzZSkpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgVHJhdmVyc2FscyBleHRlbmRzIEVsZW1lbnRNYXBUZXN0IHsKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBPYmplY3Q+PiBnZXRfZ19WX2VsZW1lbnRNYXAoKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkuZWxlbWVudE1hcCgpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBPYmplY3Q+PiBnZXRfZ19WX2VsZW1lbnRNYXBYbmFtZV9hZ2VYKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLmVsZW1lbnRNYXAoIm5hbWUiLCAiYWdlIik7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxFZGdlLCBNYXA8T2JqZWN0LCBPYmplY3Q+PiBnZXRfZ19FWDExWF9lbGVtZW50TWFwKGZpbmFsIE9iamVjdCBlMTFJZCkgeworICAgICAgICAgICAgcmV0dXJuIGcuRShlMTFJZCkuZWxlbWVudE1hcCgpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9JbmRleFRlc3QuamF2YSBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvSW5kZXhUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzZlZjA3NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvSW5kZXhUZXN0LmphdmEKQEAgLTAsMCArMSwxMjkgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5Mb2FkR3JhcGhXaXRoOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5BYnN0cmFjdEdyZW1saW5Qcm9jZXNzVGVzdDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuR3JlbWxpblByb2Nlc3NSdW5uZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5TY29wZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5XaXRoT3B0aW9uczsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXg7CitpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CitpbXBvcnQgb3JnLmp1bml0LnJ1bm5lci5SdW5XaXRoOworCitpbXBvcnQgamF2YS51dGlsLkFycmF5czsKK2ltcG9ydCBqYXZhLnV0aWwuTGlua2VkSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworCitpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uTG9hZEdyYXBoV2l0aC5HcmFwaERhdGEuTU9ERVJOOworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5fXy50YWlsOworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydEVxdWFsczsKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRGYWxzZTsKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRUcnVlOworCisvKioKKyAqIEBhdXRob3IgRGFuaWVsIEt1cHBpdHogKGh0dHA6Ly9ncmVtbGluLmd1cnUpCisgKi8KK0BSdW5XaXRoKEdyZW1saW5Qcm9jZXNzUnVubmVyLmNsYXNzKQorcHVibGljIGFic3RyYWN0IGNsYXNzIEluZGV4VGVzdCBleHRlbmRzIEFic3RyYWN0R3JlbWxpblByb2Nlc3NUZXN0IHsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBMaXN0PE9iamVjdD4+IGdldF9nX1ZfaGFzTGFiZWxYc29mdHdhcmVYX2luZGV4X3VuZm9sZCgpOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxJbnRlZ2VyLCBWZXJ0ZXg+PiBnZXRfZ19WX2hhc0xhYmVsWHNvZnR3YXJlWF9vcmRlcl9ieVhuYW1lWF9pbmRleF93aXRoWG1hcFgoKTsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBMaXN0PE9iamVjdD4+IGdldF9nX1ZfaGFzTGFiZWxYc29mdHdhcmVYX25hbWVfZm9sZF9vcmRlclhsb2NhbFhfaW5kZXhfdW5mb2xkX29yZGVyX2J5WHRhaWxYbG9jYWxfMVhYKCk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgTWFwPEludGVnZXIsIFN0cmluZz4+IGdldF9nX1ZfaGFzTGFiZWxYcGVyc29uWF9uYW1lX2ZvbGRfb3JkZXJYbG9jYWxYX2luZGV4X3dpdGhYbWFwWCgpOworCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WX2hhc0xhYmVsWHNvZnR3YXJlWF9pbmRleCgpIHsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgTGlzdDxPYmplY3Q+PiB0cmF2ZXJzYWwgPSBnZXRfZ19WX2hhc0xhYmVsWHNvZnR3YXJlWF9pbmRleF91bmZvbGQoKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGNoZWNrUmVzdWx0cyhBcnJheXMuYXNMaXN0KAorICAgICAgICAgICAgICAgIEFycmF5cy5hc0xpc3QoY29udmVydFRvVmVydGV4KCJsb3AiKSwgMCksCisgICAgICAgICAgICAgICAgQXJyYXlzLmFzTGlzdChjb252ZXJ0VG9WZXJ0ZXgoInJpcHBsZSIpLCAwKQorICAgICAgICApLCB0cmF2ZXJzYWwpOworICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIGdfVl9oYXNMYWJlbFhzb2Z0d2FyZVhfb3JkZXJfYnlYbmFtZVhfaW5kZXhfd2l0aFhtYXBYKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8SW50ZWdlciwgVmVydGV4Pj4gdHJhdmVyc2FsID0gZ2V0X2dfVl9oYXNMYWJlbFhzb2Z0d2FyZVhfb3JkZXJfYnlYbmFtZVhfaW5kZXhfd2l0aFhtYXBYKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBmaW5hbCBNYXA8SW50ZWdlciwgVmVydGV4PiBtYXAxID0gbmV3IExpbmtlZEhhc2hNYXA8PigpOworICAgICAgICBmaW5hbCBNYXA8SW50ZWdlciwgVmVydGV4PiBtYXAyID0gbmV3IExpbmtlZEhhc2hNYXA8PigpOworICAgICAgICBtYXAxLnB1dCgwLCBjb252ZXJ0VG9WZXJ0ZXgoImxvcCIpKTsKKyAgICAgICAgbWFwMi5wdXQoMCwgY29udmVydFRvVmVydGV4KCJyaXBwbGUiKSk7CisgICAgICAgIGNoZWNrT3JkZXJlZFJlc3VsdHMoQXJyYXlzLmFzTGlzdChtYXAxLCBtYXAyKSwgdHJhdmVyc2FsKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1ZfaGFzTGFiZWxYc29mdHdhcmVYX25hbWVfZm9sZF9vcmRlclhsb2NhbFhfaW5kZXhfdW5mb2xkX29yZGVyX2J5WHRhaWxYbG9jYWxfMVhYKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBMaXN0PE9iamVjdD4+IHRyYXZlcnNhbCA9IGdldF9nX1ZfaGFzTGFiZWxYc29mdHdhcmVYX25hbWVfZm9sZF9vcmRlclhsb2NhbFhfaW5kZXhfdW5mb2xkX29yZGVyX2J5WHRhaWxYbG9jYWxfMVhYKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBjaGVja09yZGVyZWRSZXN1bHRzKEFycmF5cy5hc0xpc3QoCisgICAgICAgICAgICAgICAgQXJyYXlzLmFzTGlzdCgibG9wIiwgMCksCisgICAgICAgICAgICAgICAgQXJyYXlzLmFzTGlzdCgicmlwcGxlIiwgMSkpLCB0cmF2ZXJzYWwpOworICAgICAgICBhc3NlcnRGYWxzZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1ZfaGFzTGFiZWxYcGVyc29uWF9uYW1lX2ZvbGRfb3JkZXJYbG9jYWxYX2luZGV4X3dpdGhYbWFwWCgpIHsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgTWFwPEludGVnZXIsIFN0cmluZz4+IHRyYXZlcnNhbCA9IGdldF9nX1ZfaGFzTGFiZWxYcGVyc29uWF9uYW1lX2ZvbGRfb3JkZXJYbG9jYWxYX2luZGV4X3dpdGhYbWFwWCgpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgZmluYWwgTWFwPEludGVnZXIsIFN0cmluZz4gZXhwZWN0ZWQgPSBuZXcgTGlua2VkSGFzaE1hcDw+KCk7CisgICAgICAgIGV4cGVjdGVkLnB1dCgwLCAiam9zaCIpOworICAgICAgICBleHBlY3RlZC5wdXQoMSwgIm1hcmtvIik7CisgICAgICAgIGV4cGVjdGVkLnB1dCgyLCAicGV0ZXIiKTsKKyAgICAgICAgZXhwZWN0ZWQucHV0KDMsICJ2YWRhcyIpOworICAgICAgICBhc3NlcnRFcXVhbHMoZXhwZWN0ZWQsIHRyYXZlcnNhbC5uZXh0KCkpOworICAgICAgICBhc3NlcnRGYWxzZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFRyYXZlcnNhbHMgZXh0ZW5kcyBJbmRleFRlc3QgeworCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgTGlzdDxPYmplY3Q+PiBnZXRfZ19WX2hhc0xhYmVsWHNvZnR3YXJlWF9pbmRleF91bmZvbGQoKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkuaGFzTGFiZWwoInNvZnR3YXJlIikuaW5kZXgoKS51bmZvbGQoKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgTWFwPEludGVnZXIsIFZlcnRleD4+IGdldF9nX1ZfaGFzTGFiZWxYc29mdHdhcmVYX29yZGVyX2J5WG5hbWVYX2luZGV4X3dpdGhYbWFwWCgpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS5oYXNMYWJlbCgic29mdHdhcmUiKS5vcmRlcigpLmJ5KCJuYW1lIikKKyAgICAgICAgICAgICAgICAgICAgLjxNYXA8SW50ZWdlciwgVmVydGV4Pj4gaW5kZXgoKS53aXRoKFdpdGhPcHRpb25zLmluZGV4ZXIsIFdpdGhPcHRpb25zLm1hcCk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIExpc3Q8T2JqZWN0Pj4gZ2V0X2dfVl9oYXNMYWJlbFhzb2Z0d2FyZVhfbmFtZV9mb2xkX29yZGVyWGxvY2FsWF9pbmRleF91bmZvbGRfb3JkZXJfYnlYdGFpbFhsb2NhbF8xWFgoKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkuaGFzTGFiZWwoInNvZnR3YXJlIikudmFsdWVzKCJuYW1lIikuZm9sZCgpLm9yZGVyKFNjb3BlLmxvY2FsKS5pbmRleCgpCisgICAgICAgICAgICAgICAgICAgIC48TGlzdDxPYmplY3Q+PiB1bmZvbGQoKS5vcmRlcigpLmJ5KHRhaWwoU2NvcGUubG9jYWwsIDEpKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgTWFwPEludGVnZXIsIFN0cmluZz4+IGdldF9nX1ZfaGFzTGFiZWxYcGVyc29uWF9uYW1lX2ZvbGRfb3JkZXJYbG9jYWxYX2luZGV4X3dpdGhYbWFwWCgpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS5oYXNMYWJlbCgicGVyc29uIikudmFsdWVzKCJuYW1lIikuZm9sZCgpLm9yZGVyKFNjb3BlLmxvY2FsKQorICAgICAgICAgICAgICAgICAgICAuPE1hcDxJbnRlZ2VyLCBTdHJpbmc+PiBpbmRleCgpLndpdGgoV2l0aE9wdGlvbnMuaW5kZXhlciwgV2l0aE9wdGlvbnMubWFwKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvTWF4VGVzdC5qYXZhIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9NYXhUZXN0LmphdmEKaW5kZXggMjRhMTliNS4uMWRkZDg1OSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9NYXhUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9NYXhUZXN0LmphdmEKQEAgLTIxLDYgKzIxLDcgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkxvYWRHcmFwaFdpdGg7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLkFic3RyYWN0R3JlbWxpblByb2Nlc3NUZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5HcmVtbGluUHJvY2Vzc1J1bm5lcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlNjb3BlOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleDsKIGltcG9ydCBvcmcuanVuaXQuVGVzdDsKQEAgLTQ0LDYgKzQ1LDE2IEBACiAKICAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgSW50ZWdlcj4gZ2V0X2dfVl9hZ2VfbWF4KCk7CiAKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgSW50ZWdlcj4gZ2V0X2dfVl9hZ2VfZm9sZF9tYXhYbG9jYWxYKCk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgQ29tcGFyYWJsZT4gZ2V0X2dfVl9mb29fbWF4KCk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgQ29tcGFyYWJsZT4gZ2V0X2dfVl9mb29fZm9sZF9tYXhYbG9jYWxYKCk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgU3RyaW5nPiBnZXRfZ19WX25hbWVfbWF4KCk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgU3RyaW5nPiBnZXRfZ19WX25hbWVfZm9sZF9tYXhYbG9jYWxYKCk7CisKICAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgSW50ZWdlcj4gZ2V0X2dfVl9yZXBlYXRYYm90aFhfdGltZXNYNVhfYWdlX21heCgpOwogCiAgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxTdHJpbmcsIE51bWJlcj4+IGdldF9nX1ZfaGFzTGFiZWxYc29mdHdhcmVYX2dyb3VwX2J5WG5hbWVYX2J5WGJvdGhFX3dlaWdodF9tYXhYKCk7CkBAIC01OCw2ICs2OSw0NiBAQAogCiAgICAgQFRlc3QKICAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WX2FnZV9mb2xkX21heFhsb2NhbFgoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIEludGVnZXI+IHRyYXZlcnNhbCA9IGdldF9nX1ZfYWdlX2ZvbGRfbWF4WGxvY2FsWCgpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgY2hlY2tSZXN1bHRzKEFycmF5cy5hc0xpc3QoMzUpLCB0cmF2ZXJzYWwpOworICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIGdfVl9mb29fbWF4KCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBDb21wYXJhYmxlPiB0cmF2ZXJzYWwgPSBnZXRfZ19WX2Zvb19tYXgoKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGFzc2VydEZhbHNlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOworICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIGdfVl9mb29fZm9sZF9tYXhYbG9jYWxYKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBDb21wYXJhYmxlPiB0cmF2ZXJzYWwgPSBnZXRfZ19WX2Zvb19mb2xkX21heFhsb2NhbFgoKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGFzc2VydEZhbHNlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOworICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIGdfVl9uYW1lX21heCgpIHsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgU3RyaW5nPiB0cmF2ZXJzYWwgPSBnZXRfZ19WX25hbWVfbWF4KCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBjaGVja1Jlc3VsdHMoQXJyYXlzLmFzTGlzdCgidmFkYXMiKSwgdHJhdmVyc2FsKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1ZfbmFtZV9mb2xkX21heFhsb2NhbFgoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIFN0cmluZz4gdHJhdmVyc2FsID0gZ2V0X2dfVl9uYW1lX2ZvbGRfbWF4WGxvY2FsWCgpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgY2hlY2tSZXN1bHRzKEFycmF5cy5hc0xpc3QoInZhZGFzIiksIHRyYXZlcnNhbCk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCiAgICAgcHVibGljIHZvaWQgZ19WX3JlcGVhdFhib3RoWF90aW1lc1g1WF9hZ2VfbWF4KCkgewogICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBJbnRlZ2VyPiB0cmF2ZXJzYWwgPSBnZXRfZ19WX3JlcGVhdFhib3RoWF90aW1lc1g1WF9hZ2VfbWF4KCk7CiAgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOwpAQCAtODUsNiArMTM2LDMxIEBACiAgICAgICAgIH0KIAogICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIEludGVnZXI+IGdldF9nX1ZfYWdlX2ZvbGRfbWF4WGxvY2FsWCgpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS52YWx1ZXMoImFnZSIpLmZvbGQoKS5tYXgoU2NvcGUubG9jYWwpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBDb21wYXJhYmxlPiBnZXRfZ19WX2Zvb19tYXgoKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkudmFsdWVzKCJmb28iKS5tYXgoKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgQ29tcGFyYWJsZT4gZ2V0X2dfVl9mb29fZm9sZF9tYXhYbG9jYWxYKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLnZhbHVlcygiZm9vIikuZm9sZCgpLm1heChTY29wZS5sb2NhbCk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIFN0cmluZz4gZ2V0X2dfVl9uYW1lX21heCgpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS52YWx1ZXMoIm5hbWUiKS5tYXgoKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgU3RyaW5nPiBnZXRfZ19WX25hbWVfZm9sZF9tYXhYbG9jYWxYKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLnZhbHVlcygibmFtZSIpLmZvbGQoKS5tYXgoU2NvcGUubG9jYWwpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBJbnRlZ2VyPiBnZXRfZ19WX3JlcGVhdFhib3RoWF90aW1lc1g1WF9hZ2VfbWF4KCkgewogICAgICAgICAgICAgcmV0dXJuIGcuVigpLnJlcGVhdChib3RoKCkpLnRpbWVzKDUpLnZhbHVlcygiYWdlIikubWF4KCk7CiAgICAgICAgIH0KQEAgLTk0LDQgKzE3MCw0IEBACiAgICAgICAgICAgICByZXR1cm4gZy5WKCkuaGFzTGFiZWwoInNvZnR3YXJlIikuPFN0cmluZywgTnVtYmVyPmdyb3VwKCkuYnkoIm5hbWUiKS5ieShib3RoRSgpLnZhbHVlcygid2VpZ2h0IikubWF4KCkpOwogICAgICAgICB9CiAgICAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvTWVhblRlc3QuamF2YSBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvTWVhblRlc3QuamF2YQppbmRleCA4MWJlNDRmLi5jYjJhYWM0IDEwMDY0NAotLS0gYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL01lYW5UZXN0LmphdmEKKysrIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9NZWFuVGVzdC5qYXZhCkBAIC0yMSwxMSArMjEsMTMgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkxvYWRHcmFwaFdpdGg7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLkFic3RyYWN0R3JlbWxpblByb2Nlc3NUZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5HcmVtbGluUHJvY2Vzc1J1bm5lcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlNjb3BlOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleDsKIGltcG9ydCBvcmcuanVuaXQuVGVzdDsKIGltcG9ydCBvcmcuanVuaXQucnVubmVyLlJ1bldpdGg7CiAKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOwogaW1wb3J0IGphdmEudXRpbC5NYXA7CiAKIGltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5Mb2FkR3JhcGhXaXRoLkdyYXBoRGF0YS5NT0RFUk47CkBAIC00MiwxNiArNDQsMzIgQEAKIAogICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBEb3VibGU+IGdldF9nX1ZfYWdlX21lYW4oKTsKIAorICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBEb3VibGU+IGdldF9nX1ZfYWdlX2ZvbGRfbWVhblhsb2NhbFgoKTsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBOdW1iZXI+IGdldF9nX1ZfZm9vX21lYW4oKTsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBOdW1iZXI+IGdldF9nX1ZfZm9vX2ZvbGRfbWVhblhsb2NhbFgoKTsKKwogICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8U3RyaW5nLCBOdW1iZXI+PiBnZXRfZ19WX2hhc0xhYmVsWHNvZnR3YXJlWF9ncm91cF9ieVhuYW1lWF9ieVhib3RoRV93ZWlnaHRfbWVhblgoKTsKIAogICAgIEBUZXN0CiAgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQogICAgIHB1YmxpYyB2b2lkIGdfVl9hZ2VfbWVhbigpIHsKLSAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgRG91YmxlPiB0cmF2ZXJzYWwgPSBnZXRfZ19WX2FnZV9tZWFuKCk7Ci0gICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOwotICAgICAgICBmaW5hbCBEb3VibGUgbWVhbiA9IHRyYXZlcnNhbC5uZXh0KCk7Ci0gICAgICAgIGFzc2VydEVxdWFscygzMC43NSwgbWVhbiwgMC4wNSk7Ci0gICAgICAgIGFzc2VydEZhbHNlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOworICAgICAgICBmb3IgKGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIERvdWJsZT4gdHJhdmVyc2FsIDogQXJyYXlzLmFzTGlzdChnZXRfZ19WX2FnZV9tZWFuKCksIGdldF9nX1ZfYWdlX2ZvbGRfbWVhblhsb2NhbFgoKSkpIHsKKyAgICAgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICAgICAgZmluYWwgRG91YmxlIG1lYW4gPSB0cmF2ZXJzYWwubmV4dCgpOworICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDMwLjc1LCBtZWFuLCAwLjA1KTsKKyAgICAgICAgICAgIGFzc2VydEZhbHNlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOworICAgICAgICB9CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WX2Zvb19tZWFuKCkgeworICAgICAgICBmb3IgKGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIE51bWJlcj4gdHJhdmVyc2FsIDogQXJyYXlzLmFzTGlzdChnZXRfZ19WX2Zvb19tZWFuKCksIGdldF9nX1ZfZm9vX2ZvbGRfbWVhblhsb2NhbFgoKSkpIHsKKyAgICAgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICAgICAgYXNzZXJ0RmFsc2UodHJhdmVyc2FsLmhhc05leHQoKSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBAVGVzdApAQCAtNzUsNiArOTMsMjEgQEAKICAgICAgICAgfQogCiAgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgRG91YmxlPiBnZXRfZ19WX2FnZV9mb2xkX21lYW5YbG9jYWxYKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLnZhbHVlcygiYWdlIikuZm9sZCgpLm1lYW4oU2NvcGUubG9jYWwpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBOdW1iZXI+IGdldF9nX1ZfZm9vX21lYW4oKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkudmFsdWVzKCJmb28iKS5tZWFuKCk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIE51bWJlcj4gZ2V0X2dfVl9mb29fZm9sZF9tZWFuWGxvY2FsWCgpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS52YWx1ZXMoImZvbyIpLmZvbGQoKS5tZWFuKFNjb3BlLmxvY2FsKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQogICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgTWFwPFN0cmluZywgTnVtYmVyPj4gZ2V0X2dfVl9oYXNMYWJlbFhzb2Z0d2FyZVhfZ3JvdXBfYnlYbmFtZVhfYnlYYm90aEVfd2VpZ2h0X21lYW5YKCkgewogICAgICAgICAgICAgcmV0dXJuIGcuVigpLmhhc0xhYmVsKCJzb2Z0d2FyZSIpLjxTdHJpbmcsIE51bWJlcj5ncm91cCgpLmJ5KCJuYW1lIikuYnkoYm90aEUoKS52YWx1ZXMoIndlaWdodCIpLm1lYW4oKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvTWluVGVzdC5qYXZhIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9NaW5UZXN0LmphdmEKaW5kZXggM2Y3ODM5NS4uZDRhMTNiOCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9NaW5UZXN0LmphdmEKKysrIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9NaW5UZXN0LmphdmEKQEAgLTIxLDYgKzIxLDcgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkxvYWRHcmFwaFdpdGg7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLkFic3RyYWN0R3JlbWxpblByb2Nlc3NUZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5HcmVtbGluUHJvY2Vzc1J1bm5lcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlNjb3BlOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleDsKIGltcG9ydCBvcmcuanVuaXQuVGVzdDsKQEAgLTQ0LDExICs0NSwyMSBAQAogCiAgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIEludGVnZXI+IGdldF9nX1ZfYWdlX21pbigpOwogCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIEludGVnZXI+IGdldF9nX1ZfYWdlX2ZvbGRfbWluWGxvY2FsWCgpOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIENvbXBhcmFibGU+IGdldF9nX1ZfZm9vX21pbigpOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIENvbXBhcmFibGU+IGdldF9nX1ZfZm9vX2ZvbGRfbWluWGxvY2FsWCgpOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIFN0cmluZz4gZ2V0X2dfVl9uYW1lX21pbigpOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIFN0cmluZz4gZ2V0X2dfVl9uYW1lX2ZvbGRfbWluWGxvY2FsWCgpOworCiAgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIEludGVnZXI+IGdldF9nX1ZfcmVwZWF0WGJvdGhYX3RpbWVzWDVYX2FnZV9taW4oKTsKIAogICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8U3RyaW5nLCBOdW1iZXI+PiBnZXRfZ19WX2hhc0xhYmVsWHNvZnR3YXJlWF9ncm91cF9ieVhuYW1lWF9ieVhib3RoRV93ZWlnaHRfbWluWCgpOwogCi0gICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE51bWJlcj4gZ2V0X2dfVl9mb29faW5qZWN0WDk5OTk5OTk5OTlYX21pbigpOworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBDb21wYXJhYmxlPiBnZXRfZ19WX2Zvb19pbmplY3RYOTk5OTk5OTk5OVhfbWluKCk7CiAKICAgICBAVGVzdAogICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKQEAgLTYwLDYgKzcxLDQ2IEBACiAKICAgICBAVGVzdAogICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1ZfYWdlX2ZvbGRfbWluWGxvY2FsWCgpIHsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgSW50ZWdlcj4gdHJhdmVyc2FsID0gZ2V0X2dfVl9hZ2VfZm9sZF9taW5YbG9jYWxYKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBjaGVja1Jlc3VsdHMoQXJyYXlzLmFzTGlzdCgyNyksIHRyYXZlcnNhbCk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WX2Zvb19taW4oKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIENvbXBhcmFibGU+IHRyYXZlcnNhbCA9IGdldF9nX1ZfZm9vX21pbigpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgYXNzZXJ0RmFsc2UodHJhdmVyc2FsLmhhc05leHQoKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WX2Zvb19mb2xkX21pblhsb2NhbFgoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIENvbXBhcmFibGU+IHRyYXZlcnNhbCA9IGdldF9nX1ZfZm9vX2ZvbGRfbWluWGxvY2FsWCgpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgYXNzZXJ0RmFsc2UodHJhdmVyc2FsLmhhc05leHQoKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WX25hbWVfbWluKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBTdHJpbmc+IHRyYXZlcnNhbCA9IGdldF9nX1ZfbmFtZV9taW4oKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGNoZWNrUmVzdWx0cyhBcnJheXMuYXNMaXN0KCJqb3NoIiksIHRyYXZlcnNhbCk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WX25hbWVfZm9sZF9taW5YbG9jYWxYKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBTdHJpbmc+IHRyYXZlcnNhbCA9IGdldF9nX1ZfbmFtZV9mb2xkX21pblhsb2NhbFgoKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGNoZWNrUmVzdWx0cyhBcnJheXMuYXNMaXN0KCJqb3NoIiksIHRyYXZlcnNhbCk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCiAgICAgcHVibGljIHZvaWQgZ19WX3JlcGVhdFhib3RoWF90aW1lc1g1WF9hZ2VfbWluKCkgewogICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBJbnRlZ2VyPiB0cmF2ZXJzYWwgPSBnZXRfZ19WX3JlcGVhdFhib3RoWF90aW1lc1g1WF9hZ2VfbWluKCk7CiAgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOwpAQCAtODIsMTAgKzEzMywxMCBAQAogICAgIEBUZXN0CiAgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQogICAgIHB1YmxpYyB2b2lkIGdfVl9mb29faW5qZWN0WDk5OTk5OTk5OTlYX21pbigpIHsKLSAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgTnVtYmVyPiB0cmF2ZXJzYWwgPSBnZXRfZ19WX2Zvb19pbmplY3RYOTk5OTk5OTk5OVhfbWluKCk7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIENvbXBhcmFibGU+IHRyYXZlcnNhbCA9IGdldF9nX1ZfZm9vX2luamVjdFg5OTk5OTk5OTk5WF9taW4oKTsKICAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CiAgICAgICAgIGFzc2VydFRydWUodHJhdmVyc2FsLmhhc05leHQoKSk7Ci0gICAgICAgIGFzc2VydEVxdWFscyg5OTk5OTk5OTk5TCwgdHJhdmVyc2FsLm5leHQoKS5sb25nVmFsdWUoKSk7CisgICAgICAgIGFzc2VydEVxdWFscyg5OTk5OTk5OTk5TCwgdHJhdmVyc2FsLm5leHQoKSk7CiAgICAgICAgIGFzc2VydEZhbHNlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOwogICAgIH0KIApAQCAtOTcsNiArMTQ4LDMxIEBACiAgICAgICAgIH0KIAogICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIEludGVnZXI+IGdldF9nX1ZfYWdlX2ZvbGRfbWluWGxvY2FsWCgpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS52YWx1ZXMoImFnZSIpLmZvbGQoKS5taW4oU2NvcGUubG9jYWwpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBDb21wYXJhYmxlPiBnZXRfZ19WX2Zvb19taW4oKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkudmFsdWVzKCJmb28iKS5taW4oKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgQ29tcGFyYWJsZT4gZ2V0X2dfVl9mb29fZm9sZF9taW5YbG9jYWxYKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLnZhbHVlcygiZm9vIikuZm9sZCgpLm1pbihTY29wZS5sb2NhbCk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIFN0cmluZz4gZ2V0X2dfVl9uYW1lX21pbigpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS52YWx1ZXMoIm5hbWUiKS5taW4oKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgU3RyaW5nPiBnZXRfZ19WX25hbWVfZm9sZF9taW5YbG9jYWxYKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLnZhbHVlcygibmFtZSIpLmZvbGQoKS5taW4oU2NvcGUubG9jYWwpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBJbnRlZ2VyPiBnZXRfZ19WX3JlcGVhdFhib3RoWF90aW1lc1g1WF9hZ2VfbWluKCkgewogICAgICAgICAgICAgcmV0dXJuIGcuVigpLnJlcGVhdChib3RoKCkpLnRpbWVzKDUpLnZhbHVlcygiYWdlIikubWluKCk7CiAgICAgICAgIH0KQEAgLTEwNyw3ICsxODMsNyBAQAogICAgICAgICB9CiAKICAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBOdW1iZXI+IGdldF9nX1ZfZm9vX2luamVjdFg5OTk5OTk5OTk5WF9taW4oKSB7CisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBDb21wYXJhYmxlPiBnZXRfZ19WX2Zvb19pbmplY3RYOTk5OTk5OTk5OVhfbWluKCkgewogICAgICAgICAgICAgcmV0dXJuIGcuVigpLnZhbHVlcygiZm9vIikuaW5qZWN0KDk5OTk5OTk5OTlMKS5taW4oKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvT3JkZXJUZXN0LmphdmEgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL09yZGVyVGVzdC5qYXZhCmluZGV4IGFhZjg3YTkuLmVkY2EzMWQgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvT3JkZXJUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9PcmRlclRlc3QuamF2YQpAQCAtODQsNyArODQsNyBAQAogCiAgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxTdHJpbmcsIExpc3Q8VmVydGV4Pj4+IGdldF9nX1ZfZ3JvdXBfYnlYbGFiZWxYX2J5WG5hbWVfb3JkZXJfYnlYZGVzY1hfZm9sZFgoKTsKIAotICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBMaXN0PERvdWJsZT4+IGdldF9nX1ZfbG9jYWxYYm90aEVfd2VpZ2h0X2ZvbGRYX29yZGVyX2J5WHN1bVhsb2NhbFhfZGVzY1goKTsKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgTGlzdDxEb3VibGU+PiBnZXRfZ19WX21hcFhib3RoRV93ZWlnaHRfZm9sZFhfb3JkZXJfYnlYc3VtWGxvY2FsWF9kZXNjWCgpOwogCiAgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxTdHJpbmcsIE9iamVjdD4+IGdldF9nX1ZfYXNYdlhfbWFwWGJvdGhFX3dlaWdodF9mb2xkWF9zdW1YbG9jYWxYX2FzWHNYX3NlbGVjdFh2X3NYX29yZGVyX2J5WHNlbGVjdFhzWF9kZXNjWCgpOwogCkBAIC0xMDgsNyArMTA4LDcgQEAKIAogICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBNYXAuRW50cnk8U3RyaW5nLCBOdW1iZXI+PiBnZXRfZ19WX2hhc0xhYmVsWHBlcnNvblhfZ3JvdXBfYnlYbmFtZVhfYnlYb3V0RV93ZWlnaHRfc3VtWF91bmZvbGRfb3JkZXJfYnlYdmFsdWVzX2Rlc2NYKCk7CiAKLSAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgTWFwLkVudHJ5PE9iamVjdCwgT2JqZWN0Pj4gZ2V0X2dfVlgxWF92YWx1ZU1hcFh0cnVlWF9vcmRlclhsb2NhbFhfYnlYa2V5c19kZXNjWHVuZm9sZChmaW5hbCBPYmplY3QgdjFJZCk7CisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcC5FbnRyeTxPYmplY3QsIE9iamVjdD4+IGdldF9nX1ZYMVhfZWxlbWVudE1hcF9vcmRlclhsb2NhbFhfYnlYa2V5c19kZXNjWHVuZm9sZChmaW5hbCBPYmplY3QgdjFJZCk7CiAKICAgICBAVGVzdAogICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKQEAgLTI3MCw4ICsyNzAsOCBAQAogCiAgICAgQFRlc3QKICAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCi0gICAgcHVibGljIHZvaWQgZ19WX2xvY2FsWGJvdGhFX3dlaWdodF9mb2xkWF9vcmRlcl9ieVhzdW1YbG9jYWxYX2Rlc2NYKCkgewotICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBMaXN0PERvdWJsZT4+IHRyYXZlcnNhbCA9IGdldF9nX1ZfbG9jYWxYYm90aEVfd2VpZ2h0X2ZvbGRYX29yZGVyX2J5WHN1bVhsb2NhbFhfZGVzY1goKTsKKyAgICBwdWJsaWMgdm9pZCBnX1ZfbWFwWGJvdGhFX3dlaWdodF9mb2xkWF9vcmRlcl9ieVhzdW1YbG9jYWxYX2Rlc2NYKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBMaXN0PERvdWJsZT4+IHRyYXZlcnNhbCA9IGdldF9nX1ZfbWFwWGJvdGhFX3dlaWdodF9mb2xkWF9vcmRlcl9ieVhzdW1YbG9jYWxYX2Rlc2NYKCk7CiAgICAgICAgIGZpbmFsIExpc3Q8TGlzdDxEb3VibGU+PiBsaXN0ID0gdHJhdmVyc2FsLnRvTGlzdCgpOwogICAgICAgICBhc3NlcnRFcXVhbHMobGlzdC5nZXQoMCkuc2l6ZSgpLCAzKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKGxpc3QuZ2V0KDEpLnNpemUoKSwgMyk7CkBAIC00MTIsMTIgKzQxMiw5IEBACiAgICAgICAgIGFzc2VydFRydWUodHJhdmVyc2FsLmhhc05leHQoKSk7CiAgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsIE51bWJlcj4gbSA9IHRyYXZlcnNhbC5uZXh0KCk7CiAgICAgICAgIGFzc2VydEZhbHNlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOwotICAgICAgICBhc3NlcnRFcXVhbHMoNCwgbS5zaXplKCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoMywgbS5zaXplKCkpOwogICAgICAgICBmaW5hbCBJdGVyYXRvcjxNYXAuRW50cnk8U3RyaW5nLCBOdW1iZXI+PiBpdGVyYXRvciA9IG0uZW50cnlTZXQoKS5pdGVyYXRvcigpOwogICAgICAgICBNYXAuRW50cnk8U3RyaW5nLCBOdW1iZXI+IGVudHJ5ID0gaXRlcmF0b3IubmV4dCgpOwotICAgICAgICBhc3NlcnRFcXVhbHMoInZhZGFzIiwgZW50cnkuZ2V0S2V5KCkpOwotICAgICAgICBhc3NlcnRFcXVhbHMoMC4wLCBlbnRyeS5nZXRWYWx1ZSgpLmRvdWJsZVZhbHVlKCksIDAuMDAwMSk7Ci0gICAgICAgIGVudHJ5ID0gaXRlcmF0b3IubmV4dCgpOwogICAgICAgICBhc3NlcnRFcXVhbHMoInBldGVyIiwgZW50cnkuZ2V0S2V5KCkpOwogICAgICAgICBhc3NlcnRFcXVhbHMoMC4yLCBlbnRyeS5nZXRWYWx1ZSgpLmRvdWJsZVZhbHVlKCksIDAuMDAwMSk7CiAgICAgICAgIGVudHJ5ID0gaXRlcmF0b3IubmV4dCgpOwpAQCAtNDMxLDcgKzQyOCw3IEBACiAgICAgQFRlc3QKICAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCiAgICAgcHVibGljIHZvaWQgZ19WX2hhc0xhYmVsWHBlcnNvblhfZ3JvdXBfYnlYbmFtZVhfYnlYb3V0RV93ZWlnaHRfc3VtWF91bmZvbGRfb3JkZXJfYnlYdmFsdWVzX2Rlc2NYKCkgewotICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCA/PiB0cmF2ZXJzYWwgPSBnZXRfZ19WX2hhc0xhYmVsWHBlcnNvblhfZ3JvdXBfYnlYbmFtZVhfYnlYb3V0RV93ZWlnaHRfc3VtWF91bmZvbGRfb3JkZXJfYnlYdmFsdWVzX2Rlc2NYKCk7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcC5FbnRyeTxTdHJpbmcsIE51bWJlcj4+IHRyYXZlcnNhbCA9IGdldF9nX1ZfaGFzTGFiZWxYcGVyc29uWF9ncm91cF9ieVhuYW1lWF9ieVhvdXRFX3dlaWdodF9zdW1YX3VuZm9sZF9vcmRlcl9ieVh2YWx1ZXNfZGVzY1goKTsKICAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CiAgICAgICAgIGFzc2VydFRydWUodHJhdmVyc2FsLmhhc05leHQoKSk7CiAKQEAgLTQ0OCwxNyArNDQ1LDEzIEBACiAgICAgICAgIGVudHJ5ID0gbyBpbnN0YW5jZW9mIE1hcC5FbnRyeSA/IChNYXAuRW50cnkpIG8gOiAoKE1hcDxTdHJpbmcsTnVtYmVyPikgbykuZW50cnlTZXQoKS5pdGVyYXRvcigpLm5leHQoKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKCJwZXRlciIsIGVudHJ5LmdldEtleSgpKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKDAuMiwgZW50cnkuZ2V0VmFsdWUoKS5kb3VibGVWYWx1ZSgpLCAwLjAwMDEpOwotICAgICAgICBvID0gdHJhdmVyc2FsLm5leHQoKTsKLSAgICAgICAgZW50cnkgPSBvIGluc3RhbmNlb2YgTWFwLkVudHJ5ID8gKE1hcC5FbnRyeSkgbyA6ICgoTWFwPFN0cmluZyxOdW1iZXI+KSBvKS5lbnRyeVNldCgpLml0ZXJhdG9yKCkubmV4dCgpOwotICAgICAgICBhc3NlcnRFcXVhbHMoInZhZGFzIiwgZW50cnkuZ2V0S2V5KCkpOwotICAgICAgICBhc3NlcnRFcXVhbHMoMC4wLCBlbnRyeS5nZXRWYWx1ZSgpLmRvdWJsZVZhbHVlKCksIDAuMDAwMSk7CiAgICAgICAgIGFzc2VydEZhbHNlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOwogICAgIH0KIAogICAgIEBUZXN0CiAgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQotICAgIHB1YmxpYyB2b2lkIGdfVlgxWF92YWx1ZU1hcFh0cnVlWF9vcmRlclhsb2NhbFhfYnlYa2V5c19kZXNjWHVuZm9sZCgpIHsKLSAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgPz4gdHJhdmVyc2FsID0gZ2V0X2dfVlgxWF92YWx1ZU1hcFh0cnVlWF9vcmRlclhsb2NhbFhfYnlYa2V5c19kZXNjWHVuZm9sZChjb252ZXJ0VG9WZXJ0ZXhJZChncmFwaCwgIm1hcmtvIikpOworICAgIHB1YmxpYyB2b2lkIGdfVlgxWF9lbGVtZW50TWFwX29yZGVyWGxvY2FsWF9ieVhrZXlzX2Rlc2NYdW5mb2xkKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCA/PiB0cmF2ZXJzYWwgPSBnZXRfZ19WWDFYX2VsZW1lbnRNYXBfb3JkZXJYbG9jYWxYX2J5WGtleXNfZGVzY1h1bmZvbGQoY29udmVydFRvVmVydGV4SWQoZ3JhcGgsICJtYXJrbyIpKTsKICAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CiAKICAgICAgICAgZmluYWwgT2JqZWN0IG5hbWUgPSB0cmF2ZXJzYWwubmV4dCgpOwpAQCAtNTU1LDggKzU0OCw4IEBACiAgICAgICAgIH0KIAogICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIExpc3Q8RG91YmxlPj4gZ2V0X2dfVl9sb2NhbFhib3RoRV93ZWlnaHRfZm9sZFhfb3JkZXJfYnlYc3VtWGxvY2FsWF9kZXNjWCgpIHsKLSAgICAgICAgICAgIHJldHVybiBnLlYoKS5sb2NhbChfXy5ib3RoRSgpLjxEb3VibGU+dmFsdWVzKCJ3ZWlnaHQiKS5mb2xkKCkpLm9yZGVyKCkuYnkoX18uc3VtKFNjb3BlLmxvY2FsKSwgZGVzYyk7CisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBMaXN0PERvdWJsZT4+IGdldF9nX1ZfbWFwWGJvdGhFX3dlaWdodF9mb2xkWF9vcmRlcl9ieVhzdW1YbG9jYWxYX2Rlc2NYKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLm1hcChfXy5ib3RoRSgpLjxEb3VibGU+dmFsdWVzKCJ3ZWlnaHQiKS5mb2xkKCkpLm9yZGVyKCkuYnkoX18uc3VtKFNjb3BlLmxvY2FsKSwgT3JkZXIuZGVzYyk7CiAgICAgICAgIH0KIAogICAgICAgICBAT3ZlcnJpZGUKQEAgLTYxNSw4ICs2MDgsOCBAQAogICAgICAgICB9CiAKICAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBNYXAuRW50cnk8T2JqZWN0LCBPYmplY3Q+PiBnZXRfZ19WWDFYX3ZhbHVlTWFwWHRydWVYX29yZGVyWGxvY2FsWF9ieVhrZXlzX2Rlc2NYdW5mb2xkKGZpbmFsIE9iamVjdCB2MUlkKSB7Ci0gICAgICAgICAgICByZXR1cm4gZy5WKHYxSWQpLnZhbHVlTWFwKHRydWUpLm9yZGVyKFNjb3BlLmxvY2FsKS5ieShrZXlzLCBkZXNjKS51bmZvbGQoKTsKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcC5FbnRyeTxPYmplY3QsIE9iamVjdD4+IGdldF9nX1ZYMVhfZWxlbWVudE1hcF9vcmRlclhsb2NhbFhfYnlYa2V5c19kZXNjWHVuZm9sZChmaW5hbCBPYmplY3QgdjFJZCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVih2MUlkKS5lbGVtZW50TWFwKCkub3JkZXIoU2NvcGUubG9jYWwpLmJ5KGtleXMsIGRlc2MpLnVuZm9sZCgpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9QYWdlUmFua1Rlc3QuamF2YSBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvUGFnZVJhbmtUZXN0LmphdmEKaW5kZXggM2ViMDZjNC4uODY0ZWJiMCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9QYWdlUmFua1Rlc3QuamF2YQorKysgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1BhZ2VSYW5rVGVzdC5qYXZhCkBAIC0yMyw2ICsyMyw3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLkFic3RyYWN0R3JlbWxpblByb2Nlc3NUZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5HcmVtbGluUHJvY2Vzc1J1bm5lcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIucmFua2luZy5wYWdlcmFuay5QYWdlUmFua1ZlcnRleFByb2dyYW07CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnRyYXZlcnNhbC5zdGVwLm1hcC5QYWdlUmFuazsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLk9yZGVyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLl9fOwpAQCAtNTAsNyArNTEsNyBAQAogCiAgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIFZlcnRleD4gZ2V0X2dfVl9wYWdlUmFua19oYXNYcGFnZVJhbmtYKCk7CiAKLSAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgTWFwPFN0cmluZywgTGlzdDxPYmplY3Q+Pj4gZ2V0X2dfVl9vdXRYY3JlYXRlZFhfcGFnZVJhbmtfYnlYYm90aEVYX2J5WHByb2plY3RSYW5rWF90aW1lc1gwWF92YWx1ZU1hcFhuYW1lX3Byb2plY3RSYW5rWCgpOworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBMaXN0PE9iamVjdD4+PiBnZXRfZ19WX291dFhjcmVhdGVkWF9wYWdlUmFua19ieVhib3RoRVhfYnlYcHJvamVjdFJhbmtYX3RpbWVzWDBYX3ZhbHVlTWFwWG5hbWVfcHJvamVjdFJhbmtYKCk7CiAKICAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgU3RyaW5nPiBnZXRfZ19WX3BhZ2VSYW5rX29yZGVyX2J5WHBhZ2VSYW5rX2Rlc2NYX2J5WG5hbWVYX25hbWUoKTsKIApAQCAtNjIsNyArNjMsOSBAQAogCiAgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxTdHJpbmcsIE9iamVjdD4+IGdldF9nX1ZfcGFnZVJhbmtfYnlYcGFnZVJhbmtYX2FzWGFYX291dFhrbm93c1hfcGFnZVJhbmtfYXNYYlhfc2VsZWN0WGFfYlhfYnlfYnlYbWF0aFgoKTsKIAotICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8U3RyaW5nLCBMaXN0PE9iamVjdD4+PiBnZXRfZ19WX2hhc0xhYmVsWHNvZnR3YXJlWF9oYXNYbmFtZV9yaXBwbGVYX3BhZ2VSYW5rWDFYX2J5WGluRVhjcmVhdGVkWFhfdGltZXNYMVhfYnlYcHJpb3JzWF9pblhjcmVhdGVkWF91bmlvblhib3RoX19pZGVudGl0eVhfdmFsdWVNYXBYbmFtZV9wcmlvcnNYKCk7CisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxPYmplY3QsIExpc3Q8T2JqZWN0Pj4+IGdldF9nX1ZfaGFzTGFiZWxYc29mdHdhcmVYX2hhc1huYW1lX3JpcHBsZVhfcGFnZVJhbmtYMVhfYnlYaW5FWGNyZWF0ZWRYWF90aW1lc1gxWF9ieVhwcmlvcnNYX2luWGNyZWF0ZWRYX3VuaW9uWGJvdGhfX2lkZW50aXR5WF92YWx1ZU1hcFhuYW1lX3ByaW9yc1goKTsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBMaXN0PFZlcnRleD4+PiBnZXRfZ19WX291dFhjcmVhdGVkWF9ncm91cFhtWF9ieVhsYWJlbFhfcGFnZVJhbmtYMVhfd2l0aFhwcm9wZXJ0eU5hbWVfcGFnZVJhbmtYWF93aXRoWGVkZ2VzX2luRVhYX3dpdGhYdGltZXNfMVhfaW5YY3JlYXRlZFhfZ3JvdXBYbVhfYnlYcGFnZVJhbmtYX2NhcFhtWCgpOwogCiAgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxPYmplY3QsIExpc3Q8VmVydGV4Pj4+IGdldF9nX1Zfb3V0WGNyZWF0ZWRYX2dyb3VwWG1YX2J5WGxhYmVsWF9wYWdlUmFua1gxWF9ieVhwYWdlUmFua1hfYnlYaW5FWF90aW1lc1gxWF9pblhjcmVhdGVkWF9ncm91cFhtWF9ieVhwYWdlUmFua1hfY2FwWG1YKCk7CiAKQEAgLTc3LDkgKzgwLDkgQEAKICAgICBAVGVzdAogICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKICAgICBwdWJsaWMgdm9pZCBnX1Zfb3V0WGNyZWF0ZWRYX3BhZ2VSYW5rX2J5WGJvdGhFWF9ieVhwcm9qZWN0UmFua1hfdmFsdWVNYXBYbmFtZV9wcm9qZWN0UmFua1goKSB7Ci0gICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxTdHJpbmcsIExpc3Q8T2JqZWN0Pj4+IHRyYXZlcnNhbCA9IGdldF9nX1Zfb3V0WGNyZWF0ZWRYX3BhZ2VSYW5rX2J5WGJvdGhFWF9ieVhwcm9qZWN0UmFua1hfdGltZXNYMFhfdmFsdWVNYXBYbmFtZV9wcm9qZWN0UmFua1goKTsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgTWFwPE9iamVjdCwgTGlzdDxPYmplY3Q+Pj4gdHJhdmVyc2FsID0gZ2V0X2dfVl9vdXRYY3JlYXRlZFhfcGFnZVJhbmtfYnlYYm90aEVYX2J5WHByb2plY3RSYW5rWF90aW1lc1gwWF92YWx1ZU1hcFhuYW1lX3Byb2plY3RSYW5rWCgpOwogICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKLSAgICAgICAgZmluYWwgTGlzdDxNYXA8U3RyaW5nLCBMaXN0PE9iamVjdD4+PiByZXN1bHQgPSB0cmF2ZXJzYWwudG9MaXN0KCk7CisgICAgICAgIGZpbmFsIExpc3Q8TWFwPE9iamVjdCwgTGlzdDxPYmplY3Q+Pj4gcmVzdWx0ID0gdHJhdmVyc2FsLnRvTGlzdCgpOwogICAgICAgICBhc3NlcnRFcXVhbHMoNCwgcmVzdWx0LnNpemUoKSk7CiAgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsIERvdWJsZT4gbWFwID0gbmV3IEhhc2hNYXA8PigpOwogICAgICAgICByZXN1bHQuZm9yRWFjaChtIC0+IG1hcC5wdXQoKFN0cmluZykgbS5nZXQoIm5hbWUiKS5nZXQoMCksIChEb3VibGUpIG0uZ2V0KCJwcm9qZWN0UmFuayIpLmdldCgwKSkpOwpAQCAtMTgxLDExICsxODQsMTEgQEAKICAgICBAVGVzdAogICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKICAgICBwdWJsaWMgdm9pZCBnX1ZfaGFzTGFiZWxYc29mdHdhcmVYX2hhc1huYW1lX3JpcHBsZVhfcGFnZVJhbmtYMVhfYnlYaW5FWGNyZWF0ZWRYWF90aW1lc1gxWF9ieVhwcmlvcnNYX2luWGNyZWF0ZWRYX3VuaW9uWGJvdGhfX2lkZW50aXR5WF92YWx1ZU1hcFhuYW1lX3ByaW9yc1goKSB7Ci0gICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxTdHJpbmcsIExpc3Q8T2JqZWN0Pj4+IHRyYXZlcnNhbCA9IGdldF9nX1ZfaGFzTGFiZWxYc29mdHdhcmVYX2hhc1huYW1lX3JpcHBsZVhfcGFnZVJhbmtYMVhfYnlYaW5FWGNyZWF0ZWRYWF90aW1lc1gxWF9ieVhwcmlvcnNYX2luWGNyZWF0ZWRYX3VuaW9uWGJvdGhfX2lkZW50aXR5WF92YWx1ZU1hcFhuYW1lX3ByaW9yc1goKTsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgTWFwPE9iamVjdCwgTGlzdDxPYmplY3Q+Pj4gdHJhdmVyc2FsID0gZ2V0X2dfVl9oYXNMYWJlbFhzb2Z0d2FyZVhfaGFzWG5hbWVfcmlwcGxlWF9wYWdlUmFua1gxWF9ieVhpbkVYY3JlYXRlZFhYX3RpbWVzWDFYX2J5WHByaW9yc1hfaW5YY3JlYXRlZFhfdW5pb25YYm90aF9faWRlbnRpdHlYX3ZhbHVlTWFwWG5hbWVfcHJpb3JzWCgpOwogICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKICAgICAgICAgaW50IGNvdW50ZXIgPSAwOwogICAgICAgICB3aGlsZSAodHJhdmVyc2FsLmhhc05leHQoKSkgewotICAgICAgICAgICAgZmluYWwgTWFwPFN0cmluZywgTGlzdDxPYmplY3Q+PiBtYXAgPSB0cmF2ZXJzYWwubmV4dCgpOworICAgICAgICAgICAgZmluYWwgTWFwPE9iamVjdCwgTGlzdDxPYmplY3Q+PiBtYXAgPSB0cmF2ZXJzYWwubmV4dCgpOwogICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDIsIG1hcC5zaXplKCkpOwogICAgICAgICAgICAgU3RyaW5nIG5hbWUgPSAoU3RyaW5nKSBtYXAuZ2V0KCJuYW1lIikuZ2V0KDApOwogICAgICAgICAgICAgZG91YmxlIHBhZ2VSYW5rID0gKERvdWJsZSkgbWFwLmdldCgicHJpb3JzIikuZ2V0KDApOwpAQCAtMjMwLDYgKzIzMywzOSBAQAogICAgICAgICB9KTsKICAgICB9CiAKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1Zfb3V0WGNyZWF0ZWRYX2dyb3VwWG1YX2J5WGxhYmVsWF9wYWdlUmFua1gxWF93aXRoWFBST1BFUlRZX05BTUVfcGFnZVJhbmtYWF93aXRoWEVER0VTX2luRVhYX3dpdGhYVElNRVNfMVhfaW5YY3JlYXRlZFhfZ3JvdXBYbVhfYnlYcGFnZVJhbmtYX2NhcFhtWCgpIHsKKyAgICAgICAgLy8gW3syLjA9W3ZbNF0sIHZbNF0sIHZbNF0sIHZbNF1dLCAxLjA9W3ZbNl0sIHZbNl0sIHZbNl0sIHZbMV0sIHZbMV0sIHZbMV1dLCBzb2Z0d2FyZT1bdls1XSwgdlszXSwgdlszXSwgdlszXV19XQorICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBMaXN0PFZlcnRleD4+PiB0cmF2ZXJzYWwgPSBnZXRfZ19WX291dFhjcmVhdGVkWF9ncm91cFhtWF9ieVhsYWJlbFhfcGFnZVJhbmtYMVhfd2l0aFhwcm9wZXJ0eU5hbWVfcGFnZVJhbmtYWF93aXRoWGVkZ2VzX2luRVhYX3dpdGhYdGltZXNfMVhfaW5YY3JlYXRlZFhfZ3JvdXBYbVhfYnlYcGFnZVJhbmtYX2NhcFhtWCgpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgZmluYWwgTWFwPE9iamVjdCwgTGlzdDxWZXJ0ZXg+PiBtYXAgPSB0cmF2ZXJzYWwubmV4dCgpOworICAgICAgICBhc3NlcnRGYWxzZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDMsIG1hcC5zaXplKCkpOworICAgICAgICBhc3NlcnRUcnVlKG1hcC5jb250YWluc0tleSgic29mdHdhcmUiKSk7CisgICAgICAgIG1hcC5mb3JFYWNoKChrLCB2KSAtPiB7CisgICAgICAgICAgICBib29sZWFuIGZvdW5kID0gZmFsc2U7CisgICAgICAgICAgICBpZiAoIWsuZXF1YWxzKCJzb2Z0d2FyZSIpICYmIHYuc2l6ZSgpID09IDQpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMi4wZCwgKChOdW1iZXIpIGspLmRvdWJsZVZhbHVlKCksIDAuMDFkKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoNCwgdi5zdHJlYW0oKS5maWx0ZXIodmVydGV4IC0+IHZlcnRleC5pZCgpLmVxdWFscyhjb252ZXJ0VG9WZXJ0ZXhJZChncmFwaCwgImpvc2giKSkpLmNvdW50KCkpOworICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAodi5zaXplKCkgPT0gNikgeworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygxLjBkLCAoKE51bWJlcikgaykuZG91YmxlVmFsdWUoKSwgMC4wMWQpOworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygzLCB2LnN0cmVhbSgpLmZpbHRlcih2ZXJ0ZXggLT4gdmVydGV4LmlkKCkuZXF1YWxzKGNvbnZlcnRUb1ZlcnRleElkKGdyYXBoLCAicGV0ZXIiKSkpLmNvdW50KCkpOworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygzLCB2LnN0cmVhbSgpLmZpbHRlcih2ZXJ0ZXggLT4gdmVydGV4LmlkKCkuZXF1YWxzKGNvbnZlcnRUb1ZlcnRleElkKGdyYXBoLCAibWFya28iKSkpLmNvdW50KCkpOworICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAodi5zaXplKCkgPT0gNCkgeworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygic29mdHdhcmUiLCBrKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMywgdi5zdHJlYW0oKS5maWx0ZXIodmVydGV4IC0+IHZlcnRleC5pZCgpLmVxdWFscyhjb252ZXJ0VG9WZXJ0ZXhJZChncmFwaCwgImxvcCIpKSkuY291bnQoKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIHYuc3RyZWFtKCkuZmlsdGVyKHZlcnRleCAtPiB2ZXJ0ZXguaWQoKS5lcXVhbHMoY29udmVydFRvVmVydGV4SWQoZ3JhcGgsICJyaXBwbGUiKSkpLmNvdW50KCkpOworICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFmb3VuZCkKKyAgICAgICAgICAgICAgICBmYWlsKCJUaGVyZSBhcmUgdG9vIG1hbnkga2V5L3ZhbHVlczogIiArIGsgKyAiLS0iICsgdik7CisgICAgICAgIH0pOworICAgIH0KKwogICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgVHJhdmVyc2FscyBleHRlbmRzIFBhZ2VSYW5rVGVzdCB7CiAKICAgICAgICAgQE92ZXJyaWRlCkBAIC0yMzgsNyArMjc0LDcgQEAKICAgICAgICAgfQogCiAgICAgICAgIEBPdmVycmlkZQotICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgTWFwPFN0cmluZywgTGlzdDxPYmplY3Q+Pj4gZ2V0X2dfVl9vdXRYY3JlYXRlZFhfcGFnZVJhbmtfYnlYYm90aEVYX2J5WHByb2plY3RSYW5rWF90aW1lc1gwWF92YWx1ZU1hcFhuYW1lX3Byb2plY3RSYW5rWCgpIHsKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxPYmplY3QsIExpc3Q8T2JqZWN0Pj4+IGdldF9nX1Zfb3V0WGNyZWF0ZWRYX3BhZ2VSYW5rX2J5WGJvdGhFWF9ieVhwcm9qZWN0UmFua1hfdGltZXNYMFhfdmFsdWVNYXBYbmFtZV9wcm9qZWN0UmFua1goKSB7CiAgICAgICAgICAgICByZXR1cm4gZy5WKCkub3V0KCJjcmVhdGVkIikucGFnZVJhbmsoKS5ieShfXy5ib3RoRSgpKS5ieSgicHJvamVjdFJhbmsiKS50aW1lcygwKS52YWx1ZU1hcCgibmFtZSIsICJwcm9qZWN0UmFuayIpOwogICAgICAgICB9CiAKQEAgLTI2OCw3ICszMDQsNyBAQAogICAgICAgICB9CiAKICAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8U3RyaW5nLCBMaXN0PE9iamVjdD4+PiBnZXRfZ19WX2hhc0xhYmVsWHNvZnR3YXJlWF9oYXNYbmFtZV9yaXBwbGVYX3BhZ2VSYW5rWDFYX2J5WGluRVhjcmVhdGVkWFhfdGltZXNYMVhfYnlYcHJpb3JzWF9pblhjcmVhdGVkWF91bmlvblhib3RoX19pZGVudGl0eVhfdmFsdWVNYXBYbmFtZV9wcmlvcnNYKCkgeworICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgTWFwPE9iamVjdCwgTGlzdDxPYmplY3Q+Pj4gZ2V0X2dfVl9oYXNMYWJlbFhzb2Z0d2FyZVhfaGFzWG5hbWVfcmlwcGxlWF9wYWdlUmFua1gxWF9ieVhpbkVYY3JlYXRlZFhYX3RpbWVzWDFYX2J5WHByaW9yc1hfaW5YY3JlYXRlZFhfdW5pb25YYm90aF9faWRlbnRpdHlYX3ZhbHVlTWFwWG5hbWVfcHJpb3JzWCgpIHsKICAgICAgICAgICAgIHJldHVybiBnLlYoKS5oYXNMYWJlbCgic29mdHdhcmUiKS5oYXMoIm5hbWUiLCAicmlwcGxlIikucGFnZVJhbmsoMS4wKS5ieShfXy5pbkUoImNyZWF0ZWQiKSkudGltZXMoMSkuYnkoInByaW9ycyIpLmluKCJjcmVhdGVkIikudW5pb24oX18uYm90aCgpLCBfXy5pZGVudGl0eSgpKS52YWx1ZU1hcCgibmFtZSIsICJwcmlvcnMiKTsKICAgICAgICAgfQogCkBAIC0yNzYsNSArMzEyLDEwIEBACiAgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBMaXN0PFZlcnRleD4+PiBnZXRfZ19WX291dFhjcmVhdGVkWF9ncm91cFhtWF9ieVhsYWJlbFhfcGFnZVJhbmtYMVhfYnlYcGFnZVJhbmtYX2J5WGluRVhfdGltZXNYMVhfaW5YY3JlYXRlZFhfZ3JvdXBYbVhfYnlYcGFnZVJhbmtYX2NhcFhtWCgpIHsKICAgICAgICAgICAgIHJldHVybiBnLlYoKS5vdXQoImNyZWF0ZWQiKS5ncm91cCgibSIpLmJ5KFQubGFiZWwpLnBhZ2VSYW5rKDEuMCkuYnkoInBhZ2VSYW5rIikuYnkoX18uaW5FKCkpLnRpbWVzKDEpLmluKCJjcmVhdGVkIikuZ3JvdXAoIm0iKS5ieSgicGFnZVJhbmsiKS5jYXAoIm0iKTsKICAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgTWFwPE9iamVjdCwgTGlzdDxWZXJ0ZXg+Pj4gZ2V0X2dfVl9vdXRYY3JlYXRlZFhfZ3JvdXBYbVhfYnlYbGFiZWxYX3BhZ2VSYW5rWDFYX3dpdGhYcHJvcGVydHlOYW1lX3BhZ2VSYW5rWFhfd2l0aFhlZGdlc19pbkVYWF93aXRoWHRpbWVzXzFYX2luWGNyZWF0ZWRYX2dyb3VwWG1YX2J5WHBhZ2VSYW5rWF9jYXBYbVgoKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkub3V0KCJjcmVhdGVkIikuZ3JvdXAoIm0iKS5ieShULmxhYmVsKS5wYWdlUmFuaygxLjApLndpdGgoUGFnZVJhbmsucHJvcGVydHlOYW1lLCAicGFnZVJhbmsiKS53aXRoKFBhZ2VSYW5rLmVkZ2VzLCBfXy5pbkUoKSkud2l0aChQYWdlUmFuay50aW1lcywgMSkuaW4oImNyZWF0ZWQiKS5ncm91cCgibSIpLmJ5KCJwYWdlUmFuayIpLmNhcCgibSIpOworICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9QYXRoVGVzdC5qYXZhIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9QYXRoVGVzdC5qYXZhCmluZGV4IDMwMTQ5OTguLjdmMmQ4MDAgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvUGF0aFRlc3QuamF2YQorKysgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1BhdGhUZXN0LmphdmEKQEAgLTEwMyw3ICsxMDMsNyBAQAogICAgICAgICAgICAgY291bnRlcisrOwogICAgICAgICAgICAgZmluYWwgUGF0aCBwYXRoID0gdHJhdmVyc2FsLm5leHQoKTsKICAgICAgICAgICAgIGFzc2VydEVxdWFscygzLCBwYXRoLnNpemUoKSk7Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoIm1hcmtvIiwgKChWZXJ0ZXgpIHBhdGguZ2V0KDApKS48U3RyaW5nPnZhbHVlKCJuYW1lIikpOworICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKGNvbnZlcnRUb1ZlcnRleCAoIm1hcmtvIiksIHBhdGguPFZlcnRleD5nZXQoMCkpOwogICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJqb3NoIiwgcGF0aC48U3RyaW5nPmdldCgxKSk7CiAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoImphdmEiLCBwYXRoLjxTdHJpbmc+Z2V0KDIpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9QZWVyUHJlc3N1cmVUZXN0LmphdmEgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1BlZXJQcmVzc3VyZVRlc3QuamF2YQppbmRleCBiZTRjZTlhLi41MDg3NTIyIDEwMDY0NAotLS0gYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1BlZXJQcmVzc3VyZVRlc3QuamF2YQorKysgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1BlZXJQcmVzc3VyZVRlc3QuamF2YQpAQCAtMjQsNiArMjQsNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5BYnN0cmFjdEdyZW1saW5Qcm9jZXNzVGVzdDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuR3JlbWxpblByb2Nlc3NSdW5uZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLmNsdXN0ZXJpbmcucGVlcnByZXNzdXJlLlBlZXJQcmVzc3VyZVZlcnRleFByb2dyYW07CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnRyYXZlcnNhbC5zdGVwLm1hcC5QZWVyUHJlc3N1cmU7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX187CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4OwpAQCAtNTIsNyArNTMsOSBAQAogCiAgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxPYmplY3QsIE51bWJlcj4+IGdldF9nX1ZfcGVlclByZXNzdXJlX2J5WGNsdXN0ZXJYX2J5WG91dEVYa25vd3NYWF9wYWdlUmFua1gxWF9ieVhyYW5rWF9ieVhvdXRFWGtub3dzWFhfdGltZXNYMlhfZ3JvdXBfYnlYY2x1c3RlclhfYnlYcmFua19zdW1YX2xpbWl0WDEwMFgoKTsKIAotICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8U3RyaW5nLCBMaXN0PE9iamVjdD4+PiBnZXRfZ19WX2hhc1huYW1lX3JpcHBsZVhfaW5YY3JlYXRlZFhfcGVlclByZXNzdXJlX2J5WG91dEVYX2J5WGNsdXN0ZXJYX3JlcGVhdFh1bmlvblhpZGVudGl0eV9fYm90aFhfdGltZXNYMlhfZGVkdXBfdmFsdWVNYXBYbmFtZV9jbHVzdGVyWCgpOworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBMaXN0PE9iamVjdD4+PiBnZXRfZ19WX2hhc1huYW1lX3JpcHBsZVhfaW5YY3JlYXRlZFhfcGVlclByZXNzdXJlX2J5WG91dEVYX2J5WGNsdXN0ZXJYX3JlcGVhdFh1bmlvblhpZGVudGl0eV9fYm90aFhfdGltZXNYMlhfZGVkdXBfdmFsdWVNYXBYbmFtZV9jbHVzdGVyWCgpOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxPYmplY3QsIExpc3Q8T2JqZWN0Pj4+IGdldF9nX1ZfaGFzWG5hbWVfcmlwcGxlWF9pblhjcmVhdGVkWF9wZWVyUHJlc3N1cmVfd2l0aFhlZGdlc19vdXRFWF93aXRoWHByb3BlcnR5TmFtZV9jbHVzdGVyWF9yZXBlYXRYdW5pb25YaWRlbnRpdHlfX2JvdGhYX3RpbWVzWDJYX2RlZHVwX3ZhbHVlTWFwWG5hbWVfY2x1c3RlclgoKTsKIAogICAgIEBUZXN0CiAgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQpAQCAtODAsOSArODMsOSBAQAogICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKICAgICBwdWJsaWMgdm9pZCBnX1ZfaGFzWG5hbWVfcmlwcGxlWF9pblhjcmVhdGVkWF9wZWVyUHJlc3N1cmVfYnlYb3V0RVhfYnlYY2x1c3RlclhfcmVwZWF0WHVuaW9uWGlkZW50aXR5X19ib3RoWF90aW1lc1gyWF9kZWR1cF92YWx1ZU1hcFhuYW1lX2NsdXN0ZXJYKCkgewogICAgICAgICBUZXN0SGVscGVyLmFzc3VtZU5vbkRldGVybWluaXN0aWMoKTsKLSAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgTWFwPFN0cmluZywgTGlzdDxPYmplY3Q+Pj4gdHJhdmVyc2FsID0gZ2V0X2dfVl9oYXNYbmFtZV9yaXBwbGVYX2luWGNyZWF0ZWRYX3BlZXJQcmVzc3VyZV9ieVhvdXRFWF9ieVhjbHVzdGVyWF9yZXBlYXRYdW5pb25YaWRlbnRpdHlfX2JvdGhYX3RpbWVzWDJYX2RlZHVwX3ZhbHVlTWFwWG5hbWVfY2x1c3RlclgoKTsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgTWFwPE9iamVjdCwgTGlzdDxPYmplY3Q+Pj4gdHJhdmVyc2FsID0gZ2V0X2dfVl9oYXNYbmFtZV9yaXBwbGVYX2luWGNyZWF0ZWRYX3BlZXJQcmVzc3VyZV9ieVhvdXRFWF9ieVhjbHVzdGVyWF9yZXBlYXRYdW5pb25YaWRlbnRpdHlfX2JvdGhYX3RpbWVzWDJYX2RlZHVwX3ZhbHVlTWFwWG5hbWVfY2x1c3RlclgoKTsKICAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7Ci0gICAgICAgIGZpbmFsIExpc3Q8TWFwPFN0cmluZywgTGlzdDxPYmplY3Q+Pj4gcmVzdWx0cyA9IHRyYXZlcnNhbC50b0xpc3QoKTsKKyAgICAgICAgZmluYWwgTGlzdDxNYXA8T2JqZWN0LCBMaXN0PE9iamVjdD4+PiByZXN1bHRzID0gdHJhdmVyc2FsLnRvTGlzdCgpOwogICAgICAgICBhc3NlcnRFcXVhbHMoNiwgcmVzdWx0cy5zaXplKCkpOwogICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLCBPYmplY3Q+IGNsdXN0ZXJzID0gbmV3IEhhc2hNYXA8PigpOwogICAgICAgICByZXN1bHRzLmZvckVhY2gobSAtPiBjbHVzdGVycy5wdXQoKFN0cmluZykgbS5nZXQoIm5hbWUiKS5nZXQoMCksIG0uZ2V0KCJjbHVzdGVyIikuZ2V0KDApKSk7CkBAIC05Nyw3ICsxMDAsMjkgQEAKICAgICAgICAgYXNzZXJ0VHJ1ZShpZHMuY29udGFpbnMoY29udmVydFRvVmVydGV4SWQoImpvc2giKSkpOwogICAgICAgICBhc3NlcnRUcnVlKGlkcy5jb250YWlucyhjb252ZXJ0VG9WZXJ0ZXhJZCgicGV0ZXIiKSkpOwogICAgIH0KLSAgICAKKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIGdfVl9oYXNYbmFtZV9yaXBwbGVYX2luWGNyZWF0ZWRYX3BlZXJQcmVzc3VyZV93aXRoWEVER0VTX291dEVYX3dpdGhYUFJPUEVSVFlfTkFNRV9jbHVzdGVyWF9yZXBlYXRYdW5pb25YaWRlbnRpdHlfX2JvdGhYX3RpbWVzWDJYX2RlZHVwX3ZhbHVlTWFwWG5hbWVfY2x1c3RlclgoKSB7CisgICAgICAgIFRlc3RIZWxwZXIuYXNzdW1lTm9uRGV0ZXJtaW5pc3RpYygpOworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBMaXN0PE9iamVjdD4+PiB0cmF2ZXJzYWwgPSBnZXRfZ19WX2hhc1huYW1lX3JpcHBsZVhfaW5YY3JlYXRlZFhfcGVlclByZXNzdXJlX3dpdGhYZWRnZXNfb3V0RVhfd2l0aFhwcm9wZXJ0eU5hbWVfY2x1c3RlclhfcmVwZWF0WHVuaW9uWGlkZW50aXR5X19ib3RoWF90aW1lc1gyWF9kZWR1cF92YWx1ZU1hcFhuYW1lX2NsdXN0ZXJYKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBmaW5hbCBMaXN0PE1hcDxPYmplY3QsIExpc3Q8T2JqZWN0Pj4+IHJlc3VsdHMgPSB0cmF2ZXJzYWwudG9MaXN0KCk7CisgICAgICAgIGFzc2VydEVxdWFscyg2LCByZXN1bHRzLnNpemUoKSk7CisgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsIE9iamVjdD4gY2x1c3RlcnMgPSBuZXcgSGFzaE1hcDw+KCk7CisgICAgICAgIHJlc3VsdHMuZm9yRWFjaChtIC0+IGNsdXN0ZXJzLnB1dCgoU3RyaW5nKSBtLmdldCgibmFtZSIpLmdldCgwKSwgbS5nZXQoImNsdXN0ZXIiKS5nZXQoMCkpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDIsIHJlc3VsdHMuZ2V0KDApLnNpemUoKSk7CisgICAgICAgIGFzc2VydEVxdWFscyg2LCBjbHVzdGVycy5zaXplKCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoY2x1c3RlcnMuZ2V0KCJqb3NoIiksIGNsdXN0ZXJzLmdldCgicmlwcGxlIikpOworICAgICAgICBhc3NlcnRFcXVhbHMoY2x1c3RlcnMuZ2V0KCJqb3NoIiksIGNsdXN0ZXJzLmdldCgibG9wIikpOworICAgICAgICBmaW5hbCBTZXQ8T2JqZWN0PiBpZHMgPSBuZXcgSGFzaFNldDw+KGNsdXN0ZXJzLnZhbHVlcygpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDQsIGlkcy5zaXplKCkpOworICAgICAgICBhc3NlcnRUcnVlKGlkcy5jb250YWlucyhjb252ZXJ0VG9WZXJ0ZXhJZCgibWFya28iKSkpOworICAgICAgICBhc3NlcnRUcnVlKGlkcy5jb250YWlucyhjb252ZXJ0VG9WZXJ0ZXhJZCgidmFkYXMiKSkpOworICAgICAgICBhc3NlcnRUcnVlKGlkcy5jb250YWlucyhjb252ZXJ0VG9WZXJ0ZXhJZCgiam9zaCIpKSk7CisgICAgICAgIGFzc2VydFRydWUoaWRzLmNvbnRhaW5zKGNvbnZlcnRUb1ZlcnRleElkKCJwZXRlciIpKSk7CisgICAgfQorCiAgICAgcHVibGljIHN0YXRpYyBjbGFzcyBUcmF2ZXJzYWxzIGV4dGVuZHMgUGVlclByZXNzdXJlVGVzdCB7CiAKICAgICAgICAgQE92ZXJyaWRlCkBAIC0xMTEsOCArMTM2LDEzIEBACiAgICAgICAgIH0KIAogICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxTdHJpbmcsIExpc3Q8T2JqZWN0Pj4+IGdldF9nX1ZfaGFzWG5hbWVfcmlwcGxlWF9pblhjcmVhdGVkWF9wZWVyUHJlc3N1cmVfYnlYb3V0RVhfYnlYY2x1c3RlclhfcmVwZWF0WHVuaW9uWGlkZW50aXR5X19ib3RoWF90aW1lc1gyWF9kZWR1cF92YWx1ZU1hcFhuYW1lX2NsdXN0ZXJYKCkgeworICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgTWFwPE9iamVjdCwgTGlzdDxPYmplY3Q+Pj4gZ2V0X2dfVl9oYXNYbmFtZV9yaXBwbGVYX2luWGNyZWF0ZWRYX3BlZXJQcmVzc3VyZV9ieVhvdXRFWF9ieVhjbHVzdGVyWF9yZXBlYXRYdW5pb25YaWRlbnRpdHlfX2JvdGhYX3RpbWVzWDJYX2RlZHVwX3ZhbHVlTWFwWG5hbWVfY2x1c3RlclgoKSB7CiAgICAgICAgICAgICByZXR1cm4gZy5WKCkuaGFzKCJuYW1lIiwgInJpcHBsZSIpLmluKCJjcmVhdGVkIikucGVlclByZXNzdXJlKCkuYnkoX18ub3V0RSgpKS5ieSgiY2x1c3RlciIpLnJlcGVhdChfXy51bmlvbihfXy5pZGVudGl0eSgpLCBfXy5ib3RoKCkpKS50aW1lcygyKS5kZWR1cCgpLnZhbHVlTWFwKCJuYW1lIiwgImNsdXN0ZXIiKTsKICAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgTWFwPE9iamVjdCwgTGlzdDxPYmplY3Q+Pj4gZ2V0X2dfVl9oYXNYbmFtZV9yaXBwbGVYX2luWGNyZWF0ZWRYX3BlZXJQcmVzc3VyZV93aXRoWGVkZ2VzX291dEVYX3dpdGhYcHJvcGVydHlOYW1lX2NsdXN0ZXJYX3JlcGVhdFh1bmlvblhpZGVudGl0eV9fYm90aFhfdGltZXNYMlhfZGVkdXBfdmFsdWVNYXBYbmFtZV9jbHVzdGVyWCgpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS5oYXMoIm5hbWUiLCAicmlwcGxlIikuaW4oImNyZWF0ZWQiKS5wZWVyUHJlc3N1cmUoKS53aXRoKFBlZXJQcmVzc3VyZS5lZGdlcyxfXy5vdXRFKCkpLndpdGgoUGVlclByZXNzdXJlLnByb3BlcnR5TmFtZSwgImNsdXN0ZXIiKS5yZXBlYXQoX18udW5pb24oX18uaWRlbnRpdHkoKSwgX18uYm90aCgpKSkudGltZXMoMikuZGVkdXAoKS52YWx1ZU1hcCgibmFtZSIsICJjbHVzdGVyIik7CisgICAgICAgIH0KICAgICB9CiB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9Qcm9ncmFtVGVzdC5qYXZhIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9Qcm9ncmFtVGVzdC5qYXZhCmluZGV4IDE5MjMzNTIuLmEwYzViMjMgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvUHJvZ3JhbVRlc3QuamF2YQorKysgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1Byb2dyYW1UZXN0LmphdmEKQEAgLTcxLDcgKzcxLDcgQEAKIAogICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBWZXJ0ZXg+IGdldF9nX1ZfcHJvZ3JhbVhwYWdlUmFua1goKTsKIAotICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8U3RyaW5nLCBMaXN0PE9iamVjdD4+PiBnZXRfZ19WX2hhc0xhYmVsWHBlcnNvblhfcHJvZ3JhbVhwYWdlUmFua19yYW5rWF9vcmRlcl9ieVhyYW5rX2FzY1hfdmFsdWVNYXBYbmFtZV9yYW5rWCgpOworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBMaXN0PE9iamVjdD4+PiBnZXRfZ19WX2hhc0xhYmVsWHBlcnNvblhfcHJvZ3JhbVhwYWdlUmFua19yYW5rWF9vcmRlcl9ieVhyYW5rX2FzY1hfdmFsdWVNYXBYbmFtZV9yYW5rWCgpOwogCiAgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxTdHJpbmcsIE9iamVjdD4+IGdldF9nX1Zfb3V0WGNyZWF0ZWRYX2FnZ3JlZ2F0ZVh4WF9ieVhsYW5nWF9ncm91cENvdW50X3Byb2dyYW1YVGVzdFByb2dyYW1YX2FzWGFYX3NlbGVjdFhhX3hYKCk7CiAKQEAgLTkyLDEyICs5MiwxMiBAQAogICAgIEBUZXN0CiAgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQogICAgIHB1YmxpYyB2b2lkIGdfVl9oYXNMYWJlbFhwZXJzb25YX3Byb2dyYW1YcGFnZVJhbmtfcmFua1hfb3JkZXJfYnlYcmFua19hc2NYX3ZhbHVlTWFwWG5hbWVfcmFua1goKSB7Ci0gICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxTdHJpbmcsIExpc3Q8T2JqZWN0Pj4+IHRyYXZlcnNhbCA9IGdldF9nX1ZfaGFzTGFiZWxYcGVyc29uWF9wcm9ncmFtWHBhZ2VSYW5rX3JhbmtYX29yZGVyX2J5WHJhbmtfYXNjWF92YWx1ZU1hcFhuYW1lX3JhbmtYKCk7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxPYmplY3QsIExpc3Q8T2JqZWN0Pj4+IHRyYXZlcnNhbCA9IGdldF9nX1ZfaGFzTGFiZWxYcGVyc29uWF9wcm9ncmFtWHBhZ2VSYW5rX3JhbmtYX29yZGVyX2J5WHJhbmtfYXNjWF92YWx1ZU1hcFhuYW1lX3JhbmtYKCk7CiAgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOwogICAgICAgICBpbnQgY291bnRlciA9IDA7CiAgICAgICAgIGRvdWJsZSBsYXN0UmFuayA9IERvdWJsZS5NSU5fVkFMVUU7CiAgICAgICAgIHdoaWxlICh0cmF2ZXJzYWwuaGFzTmV4dCgpKSB7Ci0gICAgICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLCBMaXN0PE9iamVjdD4+IG1hcCA9IHRyYXZlcnNhbC5uZXh0KCk7CisgICAgICAgICAgICBmaW5hbCBNYXA8T2JqZWN0LCBMaXN0PE9iamVjdD4+IG1hcCA9IHRyYXZlcnNhbC5uZXh0KCk7CiAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMiwgbWFwLnNpemUoKSk7CiAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMSwgbWFwLmdldCgibmFtZSIpLnNpemUoKSk7CiAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMSwgbWFwLmdldCgicmFuayIpLnNpemUoKSk7CkBAIC0xNDgsNyArMTQ4LDcgQEAKICAgICAgICAgfQogCiAgICAgICAgIEBPdmVycmlkZQotICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgTWFwPFN0cmluZywgTGlzdDxPYmplY3Q+Pj4gZ2V0X2dfVl9oYXNMYWJlbFhwZXJzb25YX3Byb2dyYW1YcGFnZVJhbmtfcmFua1hfb3JkZXJfYnlYcmFua19hc2NYX3ZhbHVlTWFwWG5hbWVfcmFua1goKSB7CisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBMaXN0PE9iamVjdD4+PiBnZXRfZ19WX2hhc0xhYmVsWHBlcnNvblhfcHJvZ3JhbVhwYWdlUmFua19yYW5rWF9vcmRlcl9ieVhyYW5rX2FzY1hfdmFsdWVNYXBYbmFtZV9yYW5rWCgpIHsKICAgICAgICAgICAgIHJldHVybiBnLlYoKS5oYXNMYWJlbCgicGVyc29uIikucHJvZ3JhbShQYWdlUmFua1ZlcnRleFByb2dyYW0uYnVpbGQoKS5wcm9wZXJ0eSgicmFuayIpLmNyZWF0ZShncmFwaCkpLm9yZGVyKCkuYnkoInJhbmsiLCBPcmRlci5hc2MpLnZhbHVlTWFwKCJuYW1lIiwgInJhbmsiKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1Byb2plY3RUZXN0LmphdmEgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1Byb2plY3RUZXN0LmphdmEKaW5kZXggNmJmYWU5MC4uYWY3MTUwMCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9Qcm9qZWN0VGVzdC5qYXZhCisrKyBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvUHJvamVjdFRlc3QuamF2YQpAQCAtMjcsNiArMjcsNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleDsKIGltcG9ydCBvcmcuanVuaXQuVGVzdDsKIAoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsKIGltcG9ydCBqYXZhLnV0aWwuTWFwOwogCkBAIC00Miw2ICs0Myw4IEBACiAKICAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgU3RyaW5nPiBnZXRfZ19WX291dFhjcmVhdGVkWF9wcm9qZWN0WGFfYlhfYnlYbmFtZVhfYnlYaW5YY3JlYXRlZFhfY291bnRYX29yZGVyX2J5WHNlbGVjdFhiWF9fZGVzY1hfc2VsZWN0WGFYKCk7CiAKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgTWFwPFN0cmluZywgT2JqZWN0Pj4gZ2V0X2dfVl92YWx1ZU1hcF9wcm9qZWN0WHhYX2J5WHNlbGVjdFhuYW1lWFgoKTsKKwogICAgIEBUZXN0CiAgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQogICAgIHB1YmxpYyB2b2lkIGdfVl9oYXNMYWJlbFhwZXJzb25YX3Byb2plY3RYYV9iWF9ieVhvdXRFX2NvdW50WF9ieVhhZ2VYKCkgewpAQCAtNjcsNiArNzAsMjAgQEAKICAgICAgICAgYXNzZXJ0RXF1YWxzKCJyaXBwbGUiLCBuYW1lcy5nZXQoMykpOwogICAgIH0KIAorICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIGdfVl92YWx1ZU1hcF9wcm9qZWN0WHhYX2J5WHNlbGVjdFhuYW1lWFgoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxTdHJpbmcsIE9iamVjdD4+IHRyYXZlcnNhbCA9IGdldF9nX1ZfdmFsdWVNYXBfcHJvamVjdFh4WF9ieVhzZWxlY3RYbmFtZVhYKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBjaGVja1Jlc3VsdHMobWFrZU1hcExpc3QoMSwKKyAgICAgICAgICAgICAgICAieCIsIENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QoIm1hcmtvIiksCisgICAgICAgICAgICAgICAgIngiLCBDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KCJ2YWRhcyIpLAorICAgICAgICAgICAgICAgICJ4IiwgQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdCgibG9wIiksCisgICAgICAgICAgICAgICAgIngiLCBDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KCJqb3NoIiksCisgICAgICAgICAgICAgICAgIngiLCBDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KCJyaXBwbGUiKSwKKyAgICAgICAgICAgICAgICAieCIsIENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QoInBldGVyIikpLCB0cmF2ZXJzYWwpOworICAgIH0KKwogICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgVHJhdmVyc2FscyBleHRlbmRzIFByb2plY3RUZXN0IHsKIAogICAgICAgICBAT3ZlcnJpZGUKQEAgLTc4LDUgKzk1LDEwIEBACiAgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBTdHJpbmc+IGdldF9nX1Zfb3V0WGNyZWF0ZWRYX3Byb2plY3RYYV9iWF9ieVhuYW1lWF9ieVhpblhjcmVhdGVkWF9jb3VudFhfb3JkZXJfYnlYc2VsZWN0WGJYX19kZXNjWF9zZWxlY3RYYVgoKSB7CiAgICAgICAgICAgICByZXR1cm4gZy5WKCkub3V0KCJjcmVhdGVkIikucHJvamVjdCgiYSIsICJiIikuYnkoIm5hbWUiKS5ieShfXy5pbigiY3JlYXRlZCIpLmNvdW50KCkpLm9yZGVyKCkuYnkoX18uc2VsZWN0KCJiIiksIE9yZGVyLmRlc2MpLnNlbGVjdCgiYSIpOwogICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8U3RyaW5nLCBPYmplY3Q+PiBnZXRfZ19WX3ZhbHVlTWFwX3Byb2plY3RYeFhfYnlYc2VsZWN0WG5hbWVYWCgpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS52YWx1ZU1hcCgpLnByb2plY3QoIngiKS5ieShfXy5zZWxlY3QoIm5hbWUiKSk7CisgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1JlYWRUZXN0LmphdmEgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1JlYWRUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzNiNTNjNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvUmVhZFRlc3QuamF2YQpAQCAtMCwwICsxLDE4NSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXA7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkZlYXR1cmVSZXF1aXJlbWVudDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLlRlc3RIZWxwZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLkFic3RyYWN0R3JlbWxpblByb2Nlc3NUZXN0OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5HcmVtbGluUHJvY2Vzc1J1bm5lcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5SZW1vdGVHcmFwaDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLklPOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkdyYXBoOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLklvVGVzdDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncmFwaG1sLkdyYXBoTUxSZXNvdXJjZUFjY2VzczsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncmFwaHNvbi5HcmFwaFNPTlJlc291cmNlQWNjZXNzOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyeW8uR3J5b1Jlc291cmNlQWNjZXNzOworaW1wb3J0IG9yZy5qdW5pdC5UZXN0OworaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXIuUnVuV2l0aDsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CisKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRFcXVhbHM7CitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RmFsc2U7CisKKy8qKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitAUnVuV2l0aChHcmVtbGluUHJvY2Vzc1J1bm5lci5jbGFzcykKK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBSZWFkVGVzdCBleHRlbmRzIEFic3RyYWN0R3JlbWxpblByb2Nlc3NUZXN0IHsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8T2JqZWN0LE9iamVjdD4gZ2V0X2dfaW9fcmVhZFhrcnlvWChmaW5hbCBTdHJpbmcgZmlsZVRvUmVhZCkgIHRocm93cyBJT0V4Y2VwdGlvbjsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8T2JqZWN0LE9iamVjdD4gZ2V0X2dfaW9fcmVhZF93aXRoWHJlYWRlcl9ncnlvWChmaW5hbCBTdHJpbmcgZmlsZVRvUmVhZCkgIHRocm93cyBJT0V4Y2VwdGlvbjsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8T2JqZWN0LE9iamVjdD4gZ2V0X2dfaW9fcmVhZFhqc29uWChmaW5hbCBTdHJpbmcgZmlsZVRvUmVhZCkgIHRocm93cyBJT0V4Y2VwdGlvbjsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8T2JqZWN0LE9iamVjdD4gZ2V0X2dfaW9fcmVhZF93aXRoWHJlYWRlcl9ncmFwaHNvblgoZmluYWwgU3RyaW5nIGZpbGVUb1JlYWQpICB0aHJvd3MgSU9FeGNlcHRpb247CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPE9iamVjdCxPYmplY3Q+IGdldF9nX2lvX3JlYWRYeG1sWChmaW5hbCBTdHJpbmcgZmlsZVRvUmVhZCkgIHRocm93cyBJT0V4Y2VwdGlvbjsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8T2JqZWN0LE9iamVjdD4gZ2V0X2dfaW9fcmVhZF93aXRoWHJlYWRlcl9ncmFwaG1sWChmaW5hbCBTdHJpbmcgZmlsZVRvUmVhZCkgIHRocm93cyBJT0V4Y2VwdGlvbjsKKworICAgIEBUZXN0CisgICAgQEZlYXR1cmVSZXF1aXJlbWVudChmZWF0dXJlQ2xhc3MgPSBHcmFwaC5GZWF0dXJlcy5HcmFwaEZlYXR1cmVzLmNsYXNzLCBmZWF0dXJlID0gR3JhcGguRmVhdHVyZXMuR3JhcGhGZWF0dXJlcy5GRUFUVVJFX0lPX1JFQUQpCisgICAgcHVibGljIHZvaWQgZ19pb19yZWFkWGtyeW9YKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgU3RyaW5nIGZpbGVUb1JlYWQgPSBUZXN0SGVscGVyLmdlbmVyYXRlVGVtcEZpbGVGcm9tUmVzb3VyY2UoUmVhZFRlc3QuY2xhc3MsIEdyeW9SZXNvdXJjZUFjY2Vzcy5jbGFzcywgInRpbmtlcnBvcC1tb2Rlcm4tdjNkMC5rcnlvIiwgIiIpLmdldEFic29sdXRlUGF0aCgpLnJlcGxhY2UoJ1xcJywgJy8nKTsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPE9iamVjdCxPYmplY3Q+IHRyYXZlcnNhbCA9IGdldF9nX2lvX3JlYWRYa3J5b1goZmlsZVRvUmVhZCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICB0cmF2ZXJzYWwuaXRlcmF0ZSgpOworCisgICAgICAgIGlmIChncmFwaCBpbnN0YW5jZW9mIFJlbW90ZUdyYXBoKSB7CisgICAgICAgICAgICBhc3NlcnRFcXVhbHMoNkwsIGcuVigpLmNvdW50KCkubmV4dCgpLmxvbmdWYWx1ZSgpKTsKKyAgICAgICAgICAgIGFzc2VydEVxdWFscyg2TCwgZy5FKCkuY291bnQoKS5uZXh0KCkubG9uZ1ZhbHVlKCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgSW9UZXN0LmFzc2VydE1vZGVybkdyYXBoKGdyYXBoLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBGZWF0dXJlUmVxdWlyZW1lbnQoZmVhdHVyZUNsYXNzID0gR3JhcGguRmVhdHVyZXMuR3JhcGhGZWF0dXJlcy5jbGFzcywgZmVhdHVyZSA9IEdyYXBoLkZlYXR1cmVzLkdyYXBoRmVhdHVyZXMuRkVBVFVSRV9JT19SRUFEKQorICAgIHB1YmxpYyB2b2lkIGdfaW9fcmVhZF93aXRoWHJlYWRlcl9ncnlvWCgpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIFN0cmluZyBmaWxlVG9SZWFkID0gVGVzdEhlbHBlci5nZW5lcmF0ZVRlbXBGaWxlRnJvbVJlc291cmNlKFJlYWRUZXN0LmNsYXNzLCBHcnlvUmVzb3VyY2VBY2Nlc3MuY2xhc3MsICJ0aW5rZXJwb3AtbW9kZXJuLXYzZDAua3J5byIsICIiKS5nZXRBYnNvbHV0ZVBhdGgoKS5yZXBsYWNlKCdcXCcsICcvJyk7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxPYmplY3QsT2JqZWN0PiB0cmF2ZXJzYWwgPSBnZXRfZ19pb19yZWFkX3dpdGhYcmVhZGVyX2dyeW9YKGZpbGVUb1JlYWQpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgdHJhdmVyc2FsLml0ZXJhdGUoKTsKKworICAgICAgICBpZiAoZ3JhcGggaW5zdGFuY2VvZiBSZW1vdGVHcmFwaCkgeworICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDZMLCBnLlYoKS5jb3VudCgpLm5leHQoKS5sb25nVmFsdWUoKSk7CisgICAgICAgICAgICBhc3NlcnRFcXVhbHMoNkwsIGcuRSgpLmNvdW50KCkubmV4dCgpLmxvbmdWYWx1ZSgpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIElvVGVzdC5hc3NlcnRNb2Rlcm5HcmFwaChncmFwaCwgZmFsc2UsIHRydWUpOworICAgICAgICB9CisgICAgfQorCisgICAgQFRlc3QKKyAgICBARmVhdHVyZVJlcXVpcmVtZW50KGZlYXR1cmVDbGFzcyA9IEdyYXBoLkZlYXR1cmVzLkdyYXBoRmVhdHVyZXMuY2xhc3MsIGZlYXR1cmUgPSBHcmFwaC5GZWF0dXJlcy5HcmFwaEZlYXR1cmVzLkZFQVRVUkVfSU9fUkVBRCkKKyAgICBwdWJsaWMgdm9pZCBnX2lvX3JlYWRYanNvblgoKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBmaW5hbCBTdHJpbmcgZmlsZVRvUmVhZCA9IFRlc3RIZWxwZXIuZ2VuZXJhdGVUZW1wRmlsZUZyb21SZXNvdXJjZShSZWFkVGVzdC5jbGFzcywgR3JhcGhTT05SZXNvdXJjZUFjY2Vzcy5jbGFzcywgInRpbmtlcnBvcC1tb2Rlcm4tdjNkMC5qc29uIiwgIiIpLmdldEFic29sdXRlUGF0aCgpLnJlcGxhY2UoJ1xcJywgJy8nKTsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPE9iamVjdCxPYmplY3Q+IHRyYXZlcnNhbCA9IGdldF9nX2lvX3JlYWRYanNvblgoZmlsZVRvUmVhZCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICB0cmF2ZXJzYWwuaXRlcmF0ZSgpOworCisgICAgICAgIGlmIChncmFwaCBpbnN0YW5jZW9mIFJlbW90ZUdyYXBoKSB7CisgICAgICAgICAgICBhc3NlcnRFcXVhbHMoNkwsIGcuVigpLmNvdW50KCkubmV4dCgpLmxvbmdWYWx1ZSgpKTsKKyAgICAgICAgICAgIGFzc2VydEVxdWFscyg2TCwgZy5FKCkuY291bnQoKS5uZXh0KCkubG9uZ1ZhbHVlKCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgSW9UZXN0LmFzc2VydE1vZGVybkdyYXBoKGdyYXBoLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBGZWF0dXJlUmVxdWlyZW1lbnQoZmVhdHVyZUNsYXNzID0gR3JhcGguRmVhdHVyZXMuR3JhcGhGZWF0dXJlcy5jbGFzcywgZmVhdHVyZSA9IEdyYXBoLkZlYXR1cmVzLkdyYXBoRmVhdHVyZXMuRkVBVFVSRV9JT19SRUFEKQorICAgIHB1YmxpYyB2b2lkIGdfaW9fcmVhZF93aXRoWHJlYWRlcl9ncmFwaHNvblgoKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBmaW5hbCBTdHJpbmcgZmlsZVRvUmVhZCA9IFRlc3RIZWxwZXIuZ2VuZXJhdGVUZW1wRmlsZUZyb21SZXNvdXJjZShSZWFkVGVzdC5jbGFzcywgR3JhcGhTT05SZXNvdXJjZUFjY2Vzcy5jbGFzcywgInRpbmtlcnBvcC1tb2Rlcm4tdjNkMC5qc29uIiwgIiIpLmdldEFic29sdXRlUGF0aCgpLnJlcGxhY2UoJ1xcJywgJy8nKTsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPE9iamVjdCxPYmplY3Q+IHRyYXZlcnNhbCA9IGdldF9nX2lvX3JlYWRfd2l0aFhyZWFkZXJfZ3JhcGhzb25YKGZpbGVUb1JlYWQpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgdHJhdmVyc2FsLml0ZXJhdGUoKTsKKworICAgICAgICBpZiAoZ3JhcGggaW5zdGFuY2VvZiBSZW1vdGVHcmFwaCkgeworICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDZMLCBnLlYoKS5jb3VudCgpLm5leHQoKS5sb25nVmFsdWUoKSk7CisgICAgICAgICAgICBhc3NlcnRFcXVhbHMoNkwsIGcuRSgpLmNvdW50KCkubmV4dCgpLmxvbmdWYWx1ZSgpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIElvVGVzdC5hc3NlcnRNb2Rlcm5HcmFwaChncmFwaCwgZmFsc2UsIHRydWUpOworICAgICAgICB9CisgICAgfQorCisgICAgQFRlc3QKKyAgICBARmVhdHVyZVJlcXVpcmVtZW50KGZlYXR1cmVDbGFzcyA9IEdyYXBoLkZlYXR1cmVzLkdyYXBoRmVhdHVyZXMuY2xhc3MsIGZlYXR1cmUgPSBHcmFwaC5GZWF0dXJlcy5HcmFwaEZlYXR1cmVzLkZFQVRVUkVfSU9fUkVBRCkKKyAgICBwdWJsaWMgdm9pZCBnX2lvX3JlYWRYeG1sWCgpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIFN0cmluZyBmaWxlVG9SZWFkID0gVGVzdEhlbHBlci5nZW5lcmF0ZVRlbXBGaWxlRnJvbVJlc291cmNlKFJlYWRUZXN0LmNsYXNzLCBHcmFwaE1MUmVzb3VyY2VBY2Nlc3MuY2xhc3MsICJ0aW5rZXJwb3AtbW9kZXJuLnhtbCIsICIiKS5nZXRBYnNvbHV0ZVBhdGgoKS5yZXBsYWNlKCdcXCcsICcvJyk7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxPYmplY3QsT2JqZWN0PiB0cmF2ZXJzYWwgPSBnZXRfZ19pb19yZWFkWHhtbFgoZmlsZVRvUmVhZCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICB0cmF2ZXJzYWwuaXRlcmF0ZSgpOworCisgICAgICAgIGlmIChncmFwaCBpbnN0YW5jZW9mIFJlbW90ZUdyYXBoKSB7CisgICAgICAgICAgICBhc3NlcnRFcXVhbHMoNkwsIGcuVigpLmNvdW50KCkubmV4dCgpLmxvbmdWYWx1ZSgpKTsKKyAgICAgICAgICAgIGFzc2VydEVxdWFscyg2TCwgZy5FKCkuY291bnQoKS5uZXh0KCkubG9uZ1ZhbHVlKCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgSW9UZXN0LmFzc2VydE1vZGVybkdyYXBoKGdyYXBoLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBGZWF0dXJlUmVxdWlyZW1lbnQoZmVhdHVyZUNsYXNzID0gR3JhcGguRmVhdHVyZXMuR3JhcGhGZWF0dXJlcy5jbGFzcywgZmVhdHVyZSA9IEdyYXBoLkZlYXR1cmVzLkdyYXBoRmVhdHVyZXMuRkVBVFVSRV9JT19SRUFEKQorICAgIHB1YmxpYyB2b2lkIGdfaW9fcmVhZF93aXRoWHJlYWRlcl9ncmFwaG1sWCgpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIFN0cmluZyBmaWxlVG9SZWFkID0gVGVzdEhlbHBlci5nZW5lcmF0ZVRlbXBGaWxlRnJvbVJlc291cmNlKFJlYWRUZXN0LmNsYXNzLCBHcmFwaE1MUmVzb3VyY2VBY2Nlc3MuY2xhc3MsICJ0aW5rZXJwb3AtbW9kZXJuLnhtbCIsICIiKS5nZXRBYnNvbHV0ZVBhdGgoKS5yZXBsYWNlKCdcXCcsICcvJyk7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxPYmplY3QsT2JqZWN0PiB0cmF2ZXJzYWwgPSBnZXRfZ19pb19yZWFkX3dpdGhYcmVhZGVyX2dyYXBobWxYKGZpbGVUb1JlYWQpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgdHJhdmVyc2FsLml0ZXJhdGUoKTsKKworICAgICAgICBpZiAoZ3JhcGggaW5zdGFuY2VvZiBSZW1vdGVHcmFwaCkgeworICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDZMLCBnLlYoKS5jb3VudCgpLm5leHQoKS5sb25nVmFsdWUoKSk7CisgICAgICAgICAgICBhc3NlcnRFcXVhbHMoNkwsIGcuRSgpLmNvdW50KCkubmV4dCgpLmxvbmdWYWx1ZSgpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIElvVGVzdC5hc3NlcnRNb2Rlcm5HcmFwaChncmFwaCwgZmFsc2UsIHRydWUpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBUcmF2ZXJzYWxzIGV4dGVuZHMgUmVhZFRlc3QgeworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxPYmplY3QsT2JqZWN0PiBnZXRfZ19pb19yZWFkWGtyeW9YKGZpbmFsIFN0cmluZyBmaWxlVG9SZWFkKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICAgICAgcmV0dXJuIGcuaW8oZmlsZVRvUmVhZCkucmVhZCgpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8T2JqZWN0LE9iamVjdD4gZ2V0X2dfaW9fcmVhZF93aXRoWHJlYWRlcl9ncnlvWChmaW5hbCBTdHJpbmcgZmlsZVRvUmVhZCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgICAgIHJldHVybiBnLmlvKGZpbGVUb1JlYWQpLndpdGgoSU8ucmVhZGVyLCBJTy5ncnlvKS5yZWFkKCk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxPYmplY3QsT2JqZWN0PiBnZXRfZ19pb19yZWFkWGpzb25YKGZpbmFsIFN0cmluZyBmaWxlVG9SZWFkKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICAgICAgcmV0dXJuIGcuaW8oZmlsZVRvUmVhZCkucmVhZCgpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8T2JqZWN0LE9iamVjdD4gZ2V0X2dfaW9fcmVhZF93aXRoWHJlYWRlcl9ncmFwaHNvblgoZmluYWwgU3RyaW5nIGZpbGVUb1JlYWQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgICAgICByZXR1cm4gZy5pbyhmaWxlVG9SZWFkKS53aXRoKElPLnJlYWRlciwgSU8uZ3JhcGhzb24pLnJlYWQoKTsKKyAgICAgICAgfQorICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxPYmplY3QsT2JqZWN0PiBnZXRfZ19pb19yZWFkWHhtbFgoZmluYWwgU3RyaW5nIGZpbGVUb1JlYWQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgICAgICByZXR1cm4gZy5pbyhmaWxlVG9SZWFkKS5yZWFkKCk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxPYmplY3QsT2JqZWN0PiBnZXRfZ19pb19yZWFkX3dpdGhYcmVhZGVyX2dyYXBobWxYKGZpbmFsIFN0cmluZyBmaWxlVG9SZWFkKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICAgICAgcmV0dXJuIGcuaW8oZmlsZVRvUmVhZCkud2l0aChJTy5yZWFkZXIsIElPLmdyYXBobWwpLnJlYWQoKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvU2VsZWN0VGVzdC5qYXZhIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9TZWxlY3RUZXN0LmphdmEKaW5kZXggY2I4N2JlOC4uMGY1YWZiZCAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9TZWxlY3RUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9TZWxlY3RUZXN0LmphdmEKQEAgLTgzLDYgKzgzLDggQEAKIAogICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBWZXJ0ZXg+IGdldF9nX1ZfY2hvb3NlWG91dEVfY291bnRfaXNYMFhfX2FzWGFYX19hc1hiWFhfY2hvb3NlWHNlbGVjdFhhWF9fc2VsZWN0WGFYX19zZWxlY3RYYlhYKCk7CiAKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgU3RyaW5nPiBnZXRfZ19WWDFYX2dyb3VwWGFYX2J5WGNvbnN0YW50WGFYWF9ieVhuYW1lWF9zZWxlY3RYYVhfc2VsZWN0WGFYKGZpbmFsIE9iamVjdCB2MUlkKTsKKwogICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBMb25nPiBnZXRfZ19WX2FzWGFYX2dyb3VwWG1YX2J5X2J5WGJvdGhFX2NvdW50WF9iYXJyaWVyX3NlbGVjdFhtWF9zZWxlY3RYc2VsZWN0WGFYWCgpOwogCiAgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIERvdWJsZT4gZ2V0X2dfVl9hc1hhWF9ncm91cFhtWF9ieV9ieVhib3RoRV9jb3VudFhfYmFycmllcl9zZWxlY3RYbVhfc2VsZWN0WHNlbGVjdFhhWFhfYnlYbWF0aFhfcGx1c19YWCgpOwpAQCAtMzc1LDYgKzM3NywxNiBAQAogCiAgICAgQFRlc3QKICAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WWDFYX2dyb3VwWGFYX2J5WGNvbnN0YW50WGFYWF9ieVhuYW1lWF9zZWxlY3RYYVhfc2VsZWN0WGFYKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBTdHJpbmc+IHRyYXZlcnNhbCA9IGdldF9nX1ZYMVhfZ3JvdXBYYVhfYnlYY29uc3RhbnRYYVhYX2J5WG5hbWVYX3NlbGVjdFhhWF9zZWxlY3RYYVgoY29udmVydFRvVmVydGV4SWQoIm1hcmtvIikpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKCJtYXJrbyIsIHRyYXZlcnNhbC5uZXh0KCkpOworICAgICAgICBhc3NlcnRGYWxzZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKICAgICBwdWJsaWMgdm9pZCBnX1ZfYXNYYVhfZ3JvdXBYbVhfYnlfYnlYYm90aEVfY291bnRYX2JhcnJpZXJfc2VsZWN0WG1YX3NlbGVjdFhzZWxlY3RYYVhYKCkgewogICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBMb25nPiB0cmF2ZXJzYWwgPSBnZXRfZ19WX2FzWGFYX2dyb3VwWG1YX2J5X2J5WGJvdGhFX2NvdW50WF9iYXJyaWVyX3NlbGVjdFhtWF9zZWxlY3RYc2VsZWN0WGFYWCgpOwogICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKQEAgLTgwMSw3ICs4MTMsNiBAQAogICAgICAgICB9CiAgICAgICAgIGFzc2VydEZhbHNlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOwogICAgIH0KLQogICAgIEBUZXN0CiAgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQogICAgIHB1YmxpYyB2b2lkIGdfVlgxWF9hc1hhWF9yZXBlYXRYb3V0X2FzWGFYWF90aW1lc1gyWF9zZWxlY3RYZmlyc3RfYVgoKSB7CkBAIC04NzgsNiArODg5LDEzIEBACiAgICAgICAgIH0KIAogICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIFN0cmluZz4gZ2V0X2dfVlgxWF9ncm91cFhhWF9ieVhjb25zdGFudFhhWFhfYnlYbmFtZVhfc2VsZWN0WGFYX3NlbGVjdFhhWChmaW5hbCBPYmplY3QgdjFJZCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVih2MUlkKS5ncm91cCgiYSIpLmJ5KF9fLmNvbnN0YW50KCJhIikpLmJ5KF9fLnZhbHVlcygibmFtZSIpKQorICAgICAgICAgICAgICAgICAgICAuYmFycmllcigpIC8vIFRPRE86IHRoaXMgYmFycmllcigpIHNob3VsZCBub3QgYmUgbmVjZXNzYXJ5CisgICAgICAgICAgICAgICAgICAgIC5zZWxlY3QoImEiKS5zZWxlY3QoImEiKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQogICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgTG9uZz4gZ2V0X2dfVl9hc1hhWF9ncm91cFhtWF9ieV9ieVhib3RoRV9jb3VudFhfYmFycmllcl9zZWxlY3RYbVhfc2VsZWN0WHNlbGVjdFhhWFgoKSB7CiAgICAgICAgICAgICByZXR1cm4gZy5WKCkuYXMoImEiKS5ncm91cCgibSIpLmJ5KCkuYnkoX18uYm90aEUoKS5jb3VudCgpKS5iYXJyaWVyKCkuc2VsZWN0KCJtIikuc2VsZWN0KF9fLnNlbGVjdCgiYSIpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9TaG9ydGVzdFBhdGhUZXN0LmphdmEgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1Nob3J0ZXN0UGF0aFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MjBmNTY2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9TaG9ydGVzdFBhdGhUZXN0LmphdmEKQEAgLTAsMCArMSwzNTMgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5Mb2FkR3JhcGhXaXRoOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5BYnN0cmFjdEdyZW1saW5Qcm9jZXNzVGVzdDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuR3JlbWxpblByb2Nlc3NSdW5uZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnNlYXJjaC5wYXRoLlNob3J0ZXN0UGF0aFRlc3RIZWxwZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QYXRoOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLl9fOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkRpcmVjdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXg7CitpbXBvcnQgb3JnLmp1bml0LkJlZm9yZTsKK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKK2ltcG9ydCBvcmcuanVuaXQucnVubmVyLlJ1bldpdGg7CisKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5zdHJlYW0uQ29sbGVjdG9yczsKK2ltcG9ydCBqYXZhLnV0aWwuc3RyZWFtLlN0cmVhbTsKKworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkxvYWRHcmFwaFdpdGguR3JhcGhEYXRhLkNSRVc7CitpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uTG9hZEdyYXBoV2l0aC5HcmFwaERhdGEuR1JBVEVGVUw7CitpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uTG9hZEdyYXBoV2l0aC5HcmFwaERhdGEuTU9ERVJOOworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuc2VhcmNoLnBhdGguU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbVRlc3QuQUxMX1NIT1JURVNUX1BBVEhTOworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIudHJhdmVyc2FsLnN0ZXAubWFwLlNob3J0ZXN0UGF0aC4qOworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydEVxdWFsczsKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRGYWxzZTsKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRUcnVlOworCisvKioKKyAqIEBhdXRob3IgRGFuaWVsIEt1cHBpdHogKGh0dHA6Ly9ncmVtbGluLmd1cnUpCisgKi8KK0BSdW5XaXRoKEdyZW1saW5Qcm9jZXNzUnVubmVyLmNsYXNzKQorcHVibGljIGFic3RyYWN0IGNsYXNzIFNob3J0ZXN0UGF0aFRlc3QgZXh0ZW5kcyBBYnN0cmFjdEdyZW1saW5Qcm9jZXNzVGVzdCB7CisKKyAgICBwcml2YXRlIFNob3J0ZXN0UGF0aFRlc3RIZWxwZXIgaGVscGVyOworCisgICAgQEJlZm9yZQorICAgIHB1YmxpYyB2b2lkIGluaXRpYWxpemVIZWxwZXIoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgdGhpcy5oZWxwZXIgPSBuZXcgU2hvcnRlc3RQYXRoVGVzdEhlbHBlcih0aGlzLCBnKTsKKyAgICB9CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgUGF0aD4gZ2V0X2dfVl9zaG9ydGVzdFBhdGgoKTsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBQYXRoPiBnZXRfZ19WX2JvdGhfZGVkdXBfc2hvcnRlc3RQYXRoKCk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgUGF0aD4gZ2V0X2dfVl9zaG9ydGVzdFBhdGhfZWRnZXNJbmNsdWRlZCgpOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIFBhdGg+IGdldF9nX1Zfc2hvcnRlc3RQYXRoX2RpcmVjdGlvblhJTlgoKTsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBQYXRoPiBnZXRfZ19WX3Nob3J0ZXN0UGF0aF9lZGdlc1hvdXRFWCgpOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIFBhdGg+IGdldF9nX1Zfc2hvcnRlc3RQYXRoX2VkZ2VzSW5jbHVkZWRfZWRnZXNYb3V0RVgoKTsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBQYXRoPiBnZXRfZ19WX2hhc1huYW1lX21hcmtvWF9zaG9ydGVzdFBhdGgoKTsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBQYXRoPiBnZXRfZ19WX3Nob3J0ZXN0UGF0aF90YXJnZXRYaGFzWG5hbWVfbWFya29YWCgpOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIFBhdGg+IGdldF9nX1Zfc2hvcnRlc3RQYXRoX3RhcmdldFh2YWx1ZXNYbmFtZVhfaXNYbWFya29YWCgpOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIFBhdGg+IGdldF9nX1ZfaGFzWG5hbWVfbWFya29YX3Nob3J0ZXN0UGF0aF90YXJnZXRYaGFzTGFiZWxYc29mdHdhcmVYWCgpOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIFBhdGg+IGdldF9nX1ZfaGFzWG5hbWVfbWFya29YX3Nob3J0ZXN0UGF0aF90YXJnZXRYaGFzWG5hbWVfam9zaFhYX2Rpc3RhbmNlWHdlaWdodFgoKTsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBQYXRoPiBnZXRfZ19WX2hhc1huYW1lX2RhbmllbFhfc2hvcnRlc3RQYXRoX3RhcmdldFhoYXNYbmFtZV9zdGVwaGVuWFhfZWRnZXNYYm90aEVYdXNlc1hYKCk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgUGF0aD4gZ2V0X2dfVl9oYXNYc29uZ19uYW1lX01JR0hUX0FTX1dFTExYX3Nob3J0ZXN0UGF0aF90YXJnZXRYaGFzWHNvbmdfbmFtZV9NQVlCRV9ZT1VfS05PV19IT1dfSV9GRUVMWFhfZWRnZXNYb3V0RVhmb2xsb3dlZEJ5WFhfZGlzdGFuY2VYd2VpZ2h0WCgpOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIFBhdGg+IGdldF9nX1ZfaGFzWG5hbWVfbWFya29YX3Nob3J0ZXN0UGF0aF9tYXhEaXN0YW5jZVgxWCgpOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIFBhdGg+IGdldF9nX1ZfaGFzWG5hbWVfdmFkYXNYX3Nob3J0ZXN0UGF0aF9kaXN0YW5jZVh3ZWlnaHRYX21heERpc3RhbmNlWDFfM1goKTsKKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIGdfVl9zaG9ydGVzdFBhdGgoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIFBhdGg+IHRyYXZlcnNhbCA9IGdldF9nX1Zfc2hvcnRlc3RQYXRoKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBmaW5hbCBMaXN0PFBhdGg+IGV4cGVjdGVkID0gQXJyYXlzLnN0cmVhbShBTExfU0hPUlRFU1RfUEFUSFMpLm1hcChoZWxwZXI6Om1ha2VQYXRoKQorICAgICAgICAgICAgICAgIC5jb2xsZWN0KENvbGxlY3RvcnMudG9MaXN0KCkpOworICAgICAgICBjaGVja1Jlc3VsdHMoZXhwZWN0ZWQsIHRyYXZlcnNhbCk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WX2JvdGhfZGVkdXBfc2hvcnRlc3RQYXRoKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBQYXRoPiB0cmF2ZXJzYWwgPSBnZXRfZ19WX2JvdGhfZGVkdXBfc2hvcnRlc3RQYXRoKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBmaW5hbCBMaXN0PFBhdGg+IGV4cGVjdGVkID0gQXJyYXlzLnN0cmVhbShBTExfU0hPUlRFU1RfUEFUSFMpLm1hcChoZWxwZXI6Om1ha2VQYXRoKQorICAgICAgICAgICAgICAgIC5jb2xsZWN0KENvbGxlY3RvcnMudG9MaXN0KCkpOworICAgICAgICBjaGVja1Jlc3VsdHMoZXhwZWN0ZWQsIHRyYXZlcnNhbCk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WX3Nob3J0ZXN0UGF0aF9lZGdlc0luY2x1ZGVkKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBQYXRoPiB0cmF2ZXJzYWwgPSBnZXRfZ19WX3Nob3J0ZXN0UGF0aF9lZGdlc0luY2x1ZGVkKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBmaW5hbCBMaXN0PFBhdGg+IGV4cGVjdGVkID0gQXJyYXlzLnN0cmVhbShBTExfU0hPUlRFU1RfUEFUSFMpLm1hcChwIC0+IGhlbHBlci5tYWtlUGF0aCh0cnVlLCBwKSkKKyAgICAgICAgICAgICAgICAuY29sbGVjdChDb2xsZWN0b3JzLnRvTGlzdCgpKTsKKyAgICAgICAgY2hlY2tSZXN1bHRzKGV4cGVjdGVkLCB0cmF2ZXJzYWwpOworICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIGdfVl9zaG9ydGVzdFBhdGhfZGlyZWN0aW9uWElOWCgpIHsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgUGF0aD4gdHJhdmVyc2FsID0gZ2V0X2dfVl9zaG9ydGVzdFBhdGhfZGlyZWN0aW9uWElOWCgpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgZmluYWwgTGlzdDxQYXRoPiBleHBlY3RlZCA9IEFycmF5cy5zdHJlYW0oQUxMX1NIT1JURVNUX1BBVEhTKQorICAgICAgICAgICAgICAgIC5maWx0ZXIocCAtPiAocFswXS5lcXVhbHMoIm1hcmtvIikgJiYgcC5sZW5ndGggPT0gMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IChwWzBdLmVxdWFscygidmFkYXMiKSAmJiBBcnJheXMuYXNMaXN0KCJtYXJrbyIsICJ2YWRhcyIpLmNvbnRhaW5zKHBbcC5sZW5ndGggLSAxXSkpCisgICAgICAgICAgICAgICAgICAgICAgICB8fCAocFswXS5lcXVhbHMoImxvcCIpICYmIEFycmF5cy5hc0xpc3QoIm1hcmtvIiwgImxvcCIsICJqb3NoIiwgInBldGVyIikuY29udGFpbnMocFtwLmxlbmd0aCAtIDFdKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IChwWzBdLmVxdWFscygiam9zaCIpICYmIEFycmF5cy5hc0xpc3QoIm1hcmtvIiwgImpvc2giKS5jb250YWlucyhwW3AubGVuZ3RoIC0gMV0pKQorICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHBbMF0uZXF1YWxzKCJyaXBwbGUiKSAmJiBBcnJheXMuYXNMaXN0KCJtYXJrbyIsICJqb3NoIiwgInJpcHBsZSIpLmNvbnRhaW5zKHBbcC5sZW5ndGggLSAxXSkpCisgICAgICAgICAgICAgICAgICAgICAgICB8fCAocFswXS5lcXVhbHMoInBldGVyIikgJiYgcC5sZW5ndGggPT0gMSkpCisgICAgICAgICAgICAgICAgLm1hcChoZWxwZXI6Om1ha2VQYXRoKS5jb2xsZWN0KENvbGxlY3RvcnMudG9MaXN0KCkpOworICAgICAgICBjaGVja1Jlc3VsdHMoZXhwZWN0ZWQsIHRyYXZlcnNhbCk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WX3Nob3J0ZXN0UGF0aF9lZGdlc1hvdXRFWCgpIHsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgUGF0aD4gdHJhdmVyc2FsID0gZ2V0X2dfVl9zaG9ydGVzdFBhdGhfZWRnZXNYb3V0RVgoKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGNoZWNrT3V0RGlyZWN0ZWRQYXRocyhmYWxzZSwgdHJhdmVyc2FsKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1Zfc2hvcnRlc3RQYXRoX2VkZ2VzSW5jbHVkZWRfZWRnZXNYb3V0RVgoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIFBhdGg+IHRyYXZlcnNhbCA9IGdldF9nX1Zfc2hvcnRlc3RQYXRoX2VkZ2VzSW5jbHVkZWRfZWRnZXNYb3V0RVgoKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGNoZWNrT3V0RGlyZWN0ZWRQYXRocyh0cnVlLCB0cmF2ZXJzYWwpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBjaGVja091dERpcmVjdGVkUGF0aHMoZmluYWwgYm9vbGVhbiBpbmNsdWRlRWRnZXMsIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIFBhdGg+IHRyYXZlcnNhbCkgeworICAgICAgICBmaW5hbCBMaXN0PFBhdGg+IGV4cGVjdGVkID0gQXJyYXlzLnN0cmVhbShBTExfU0hPUlRFU1RfUEFUSFMpCisgICAgICAgICAgICAgICAgLmZpbHRlcihwIC0+IChwWzBdLmVxdWFscygibWFya28iKSAmJiAhcFtwLmxlbmd0aCAtIDFdLmVxdWFscygicGV0ZXIiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IChwWzBdLmVxdWFscygidmFkYXMiKSAmJiBwLmxlbmd0aCA9PSAxKQorICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHBbMF0uZXF1YWxzKCJsb3AiKSAmJiBwLmxlbmd0aCA9PSAxKQorICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHBbMF0uZXF1YWxzKCJqb3NoIikgJiYgQXJyYXlzLmFzTGlzdCgibG9wIiwgImpvc2giLCAicmlwcGxlIikuY29udGFpbnMocFtwLmxlbmd0aCAtIDFdKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IChwWzBdLmVxdWFscygicmlwcGxlIikgJiYgcC5sZW5ndGggPT0gMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IChwWzBdLmVxdWFscygicGV0ZXIiKSAmJiBBcnJheXMuYXNMaXN0KCJsb3AiLCAicGV0ZXIiKS5jb250YWlucyhwW3AubGVuZ3RoIC0gMV0pKSkKKyAgICAgICAgICAgICAgICAubWFwKG5hbWVzIC0+IGhlbHBlci5tYWtlUGF0aChpbmNsdWRlRWRnZXMsIG5hbWVzKSkuY29sbGVjdChDb2xsZWN0b3JzLnRvTGlzdCgpKTsKKyAgICAgICAgY2hlY2tSZXN1bHRzKGV4cGVjdGVkLCB0cmF2ZXJzYWwpOworICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIGdfVl9oYXNYbmFtZV9tYXJrb1hfc2hvcnRlc3RQYXRoKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBQYXRoPiB0cmF2ZXJzYWwgPSBnZXRfZ19WX2hhc1huYW1lX21hcmtvWF9zaG9ydGVzdFBhdGgoKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGZpbmFsIExpc3Q8UGF0aD4gZXhwZWN0ZWQgPSBBcnJheXMuc3RyZWFtKEFMTF9TSE9SVEVTVF9QQVRIUykKKyAgICAgICAgICAgICAgICAuZmlsdGVyKHAgLT4gcFswXS5lcXVhbHMoIm1hcmtvIikpLm1hcChoZWxwZXI6Om1ha2VQYXRoKS5jb2xsZWN0KENvbGxlY3RvcnMudG9MaXN0KCkpOworICAgICAgICBjaGVja1Jlc3VsdHMoZXhwZWN0ZWQsIHRyYXZlcnNhbCk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WX3Nob3J0ZXN0UGF0aF90YXJnZXRYaGFzWG5hbWVfbWFya29YWCgpIHsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgUGF0aD4gdHJhdmVyc2FsID0gZ2V0X2dfVl9zaG9ydGVzdFBhdGhfdGFyZ2V0WGhhc1huYW1lX21hcmtvWFgoKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGNoZWNrUGF0aHNUb01hcmtvKHRyYXZlcnNhbCk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WX3Nob3J0ZXN0UGF0aF90YXJnZXRYdmFsdWVzWG5hbWVYX2lzWG1hcmtvWFgoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIFBhdGg+IHRyYXZlcnNhbCA9IGdldF9nX1Zfc2hvcnRlc3RQYXRoX3RhcmdldFh2YWx1ZXNYbmFtZVhfaXNYbWFya29YWCgpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgY2hlY2tQYXRoc1RvTWFya28odHJhdmVyc2FsKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgY2hlY2tQYXRoc1RvTWFya28oZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgUGF0aD4gdHJhdmVyc2FsKSB7CisgICAgICAgIGZpbmFsIExpc3Q8UGF0aD4gZXhwZWN0ZWQgPSBBcnJheXMuc3RyZWFtKEFMTF9TSE9SVEVTVF9QQVRIUykKKyAgICAgICAgICAgICAgICAuZmlsdGVyKHAgLT4gcFtwLmxlbmd0aCAtIDFdLmVxdWFscygibWFya28iKSkubWFwKGhlbHBlcjo6bWFrZVBhdGgpLmNvbGxlY3QoQ29sbGVjdG9ycy50b0xpc3QoKSk7CisgICAgICAgIGNoZWNrUmVzdWx0cyhleHBlY3RlZCwgdHJhdmVyc2FsKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1ZfaGFzWG5hbWVfbWFya29YX3Nob3J0ZXN0UGF0aF90YXJnZXRYaGFzTGFiZWxYc29mdHdhcmVYWCgpIHsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgUGF0aD4gdHJhdmVyc2FsID0gZ2V0X2dfVl9oYXNYbmFtZV9tYXJrb1hfc2hvcnRlc3RQYXRoX3RhcmdldFhoYXNMYWJlbFhzb2Z0d2FyZVhYKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBmaW5hbCBMaXN0PFBhdGg+IGV4cGVjdGVkID0gQXJyYXlzLnN0cmVhbShBTExfU0hPUlRFU1RfUEFUSFMpCisgICAgICAgICAgICAgICAgLmZpbHRlcihwIC0+CisgICAgICAgICAgICAgICAgICAgICAgICBwWzBdLmVxdWFscygibWFya28iKSAmJiBBcnJheXMuYXNMaXN0KCJsb3AiLCAicmlwcGxlIikuY29udGFpbnMocFtwLmxlbmd0aCAtIDFdKSkKKyAgICAgICAgICAgICAgICAubWFwKGhlbHBlcjo6bWFrZVBhdGgpLmNvbGxlY3QoQ29sbGVjdG9ycy50b0xpc3QoKSk7CisgICAgICAgIGNoZWNrUmVzdWx0cyhleHBlY3RlZCwgdHJhdmVyc2FsKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1ZfaGFzWG5hbWVfbWFya29YX3Nob3J0ZXN0UGF0aF90YXJnZXRYaGFzWG5hbWVfam9zaFhYX2Rpc3RhbmNlWHdlaWdodFgoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIFBhdGg+IHRyYXZlcnNhbCA9IGdldF9nX1ZfaGFzWG5hbWVfbWFya29YX3Nob3J0ZXN0UGF0aF90YXJnZXRYaGFzWG5hbWVfam9zaFhYX2Rpc3RhbmNlWHdlaWdodFgoKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGFzc2VydFRydWUodHJhdmVyc2FsLmhhc05leHQoKSk7CisgICAgICAgIGFzc2VydEVxdWFscyhoZWxwZXIubWFrZVBhdGgoIm1hcmtvIiwgImxvcCIsICJqb3NoIiksIHRyYXZlcnNhbC5uZXh0KCkpOworICAgICAgICBhc3NlcnRGYWxzZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKENSRVcpCisgICAgcHVibGljIHZvaWQgZ19WX2hhc1huYW1lX2RhbmllbFhfc2hvcnRlc3RQYXRoX3RhcmdldFhoYXNYbmFtZV9zdGVwaGVuWFhfZWRnZXNYYm90aEVYdXNlc1hYKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBQYXRoPiB0cmF2ZXJzYWwgPSBnZXRfZ19WX2hhc1huYW1lX2RhbmllbFhfc2hvcnRlc3RQYXRoX3RhcmdldFhoYXNYbmFtZV9zdGVwaGVuWFhfZWRnZXNYYm90aEVYdXNlc1hYKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBmaW5hbCBMaXN0PFBhdGg+IGV4cGVjdGVkID0gQXJyYXlzLmFzTGlzdCgKKyAgICAgICAgICAgICAgICBoZWxwZXIubWFrZVBhdGgoImRhbmllbCIsICJncmVtbGluIiwgInN0ZXBoZW4iKSwKKyAgICAgICAgICAgICAgICBoZWxwZXIubWFrZVBhdGgoImRhbmllbCIsICJ0aW5rZXJncmFwaCIsICJzdGVwaGVuIikpOworICAgICAgICBjaGVja1Jlc3VsdHMoZXhwZWN0ZWQsIHRyYXZlcnNhbCk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChHUkFURUZVTCkKKyAgICBwdWJsaWMgdm9pZCBnX1ZfaGFzWHNvbmdfbmFtZV9NSUdIVF9BU19XRUxMWF9zaG9ydGVzdFBhdGhfdGFyZ2V0WGhhc1hzb25nX25hbWVfTUFZQkVfWU9VX0tOT1dfSE9XX0lfRkVFTFhYX2VkZ2VzWG91dEVYZm9sbG93ZWRCeVhYX2Rpc3RhbmNlWHdlaWdodFgoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIFBhdGg+IHRyYXZlcnNhbCA9IGdldF9nX1ZfaGFzWHNvbmdfbmFtZV9NSUdIVF9BU19XRUxMWF9zaG9ydGVzdFBhdGhfdGFyZ2V0WGhhc1hzb25nX25hbWVfTUFZQkVfWU9VX0tOT1dfSE9XX0lfRkVFTFhYX2VkZ2VzWG91dEVYZm9sbG93ZWRCeVhYX2Rpc3RhbmNlWHdlaWdodFgoKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGZpbmFsIExpc3Q8UGF0aD4gZXhwZWN0ZWQgPSBBcnJheXMuYXNMaXN0KAorICAgICAgICAgICAgICAgIGhlbHBlci5tYWtlUGF0aCgiTUlHSFQgQVMgV0VMTCIsICJEUlVNUyIsICJNQVlCRSBZT1UgS05PVyBIT1cgSSBGRUVMIiksCisgICAgICAgICAgICAgICAgaGVscGVyLm1ha2VQYXRoKCJNSUdIVCBBUyBXRUxMIiwgIlNISVAgT0YgRk9PTFMiLCAiTUFZQkUgWU9VIEtOT1cgSE9XIEkgRkVFTCIpKTsKKyAgICAgICAgY2hlY2tSZXN1bHRzKGV4cGVjdGVkLCB0cmF2ZXJzYWwpOworICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIGdfVl9oYXNYbmFtZV9tYXJrb1hfc2hvcnRlc3RQYXRoX21heERpc3RhbmNlWDFYKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBQYXRoPiB0cmF2ZXJzYWwgPSBnZXRfZ19WX2hhc1huYW1lX21hcmtvWF9zaG9ydGVzdFBhdGhfbWF4RGlzdGFuY2VYMVgoKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGZpbmFsIExpc3Q8UGF0aD4gZXhwZWN0ZWQgPSBBcnJheXMuc3RyZWFtKEFMTF9TSE9SVEVTVF9QQVRIUykKKyAgICAgICAgICAgICAgICAuZmlsdGVyKHAgLT4gcFswXS5lcXVhbHMoIm1hcmtvIikgJiYgcC5sZW5ndGggPD0gMikubWFwKGhlbHBlcjo6bWFrZVBhdGgpLmNvbGxlY3QoQ29sbGVjdG9ycy50b0xpc3QoKSk7CisgICAgICAgIGNoZWNrUmVzdWx0cyhleHBlY3RlZCwgdHJhdmVyc2FsKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1ZfaGFzWG5hbWVfdmFkYXNYX3Nob3J0ZXN0UGF0aF9kaXN0YW5jZVh3ZWlnaHRYX21heERpc3RhbmNlWDFfM1goKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIFBhdGg+IHRyYXZlcnNhbCA9IGdldF9nX1ZfaGFzWG5hbWVfdmFkYXNYX3Nob3J0ZXN0UGF0aF9kaXN0YW5jZVh3ZWlnaHRYX21heERpc3RhbmNlWDFfM1goKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGZpbmFsIExpc3Q8UGF0aD4gZXhwZWN0ZWQgPSBTdHJlYW0uY29uY2F0KEFycmF5cy5zdHJlYW0oQUxMX1NIT1JURVNUX1BBVEhTKQorICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihwIC0+IHBbMF0uZXF1YWxzKCJ2YWRhcyIpICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5cy5hc0xpc3QoInZhZGFzIiwgIm1hcmtvIiwgImxvcCIsICJwZXRlciIpLmNvbnRhaW5zKHBbcC5sZW5ndGggLSAxXSkpCisgICAgICAgICAgICAgICAgICAgICAgICAubWFwKGhlbHBlcjo6bWFrZVBhdGgpLAorICAgICAgICAgICAgICAgIFN0cmVhbS5vZihoZWxwZXIubWFrZVBhdGgoInZhZGFzIiwgIm1hcmtvIiwgImxvcCIsICJqb3NoIikpKQorICAgICAgICAgICAgICAgIC5jb2xsZWN0KENvbGxlY3RvcnMudG9MaXN0KCkpOworICAgICAgICBjaGVja1Jlc3VsdHMoZXhwZWN0ZWQsIHRyYXZlcnNhbCk7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBUcmF2ZXJzYWxzIGV4dGVuZHMgU2hvcnRlc3RQYXRoVGVzdCB7CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBQYXRoPiBnZXRfZ19WX3Nob3J0ZXN0UGF0aCgpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS5zaG9ydGVzdFBhdGgoKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgUGF0aD4gZ2V0X2dfVl9ib3RoX2RlZHVwX3Nob3J0ZXN0UGF0aCgpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS5ib3RoKCkuZGVkdXAoKS5zaG9ydGVzdFBhdGgoKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgUGF0aD4gZ2V0X2dfVl9zaG9ydGVzdFBhdGhfZWRnZXNJbmNsdWRlZCgpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS5zaG9ydGVzdFBhdGgoKS53aXRoKGluY2x1ZGVFZGdlcyk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIFBhdGg+IGdldF9nX1Zfc2hvcnRlc3RQYXRoX2RpcmVjdGlvblhJTlgoKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkuc2hvcnRlc3RQYXRoKCkud2l0aChlZGdlcywgRGlyZWN0aW9uLklOKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgUGF0aD4gZ2V0X2dfVl9zaG9ydGVzdFBhdGhfZWRnZXNYb3V0RVgoKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkuc2hvcnRlc3RQYXRoKCkud2l0aChlZGdlcywgX18ub3V0RSgpKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgUGF0aD4gZ2V0X2dfVl9zaG9ydGVzdFBhdGhfZWRnZXNJbmNsdWRlZF9lZGdlc1hvdXRFWCgpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS5zaG9ydGVzdFBhdGgoKS53aXRoKGluY2x1ZGVFZGdlcykud2l0aChlZGdlcywgX18ub3V0RSgpKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgUGF0aD4gZ2V0X2dfVl9oYXNYbmFtZV9tYXJrb1hfc2hvcnRlc3RQYXRoKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLmhhcygibmFtZSIsICJtYXJrbyIpLnNob3J0ZXN0UGF0aCgpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBQYXRoPiBnZXRfZ19WX3Nob3J0ZXN0UGF0aF90YXJnZXRYaGFzWG5hbWVfbWFya29YWCgpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS5zaG9ydGVzdFBhdGgoKS53aXRoKHRhcmdldCwgX18uaGFzKCJuYW1lIiwgIm1hcmtvIikpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBQYXRoPiBnZXRfZ19WX3Nob3J0ZXN0UGF0aF90YXJnZXRYdmFsdWVzWG5hbWVYX2lzWG1hcmtvWFgoKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkuc2hvcnRlc3RQYXRoKCkud2l0aCh0YXJnZXQsIF9fLjxWZXJ0ZXgsIFN0cmluZz52YWx1ZXMoIm5hbWUiKS5pcygibWFya28iKSk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIFBhdGg+IGdldF9nX1ZfaGFzWG5hbWVfbWFya29YX3Nob3J0ZXN0UGF0aF90YXJnZXRYaGFzTGFiZWxYc29mdHdhcmVYWCgpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS5oYXMoIm5hbWUiLCAibWFya28iKS5zaG9ydGVzdFBhdGgoKS53aXRoKHRhcmdldCwgX18uaGFzTGFiZWwoInNvZnR3YXJlIikpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBQYXRoPiBnZXRfZ19WX2hhc1huYW1lX21hcmtvWF9zaG9ydGVzdFBhdGhfdGFyZ2V0WGhhc1huYW1lX2pvc2hYWF9kaXN0YW5jZVh3ZWlnaHRYKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLmhhcygibmFtZSIsICJtYXJrbyIpLnNob3J0ZXN0UGF0aCgpCisgICAgICAgICAgICAgICAgICAgIC53aXRoKHRhcmdldCwgX18uaGFzKCJuYW1lIiwiam9zaCIpKQorICAgICAgICAgICAgICAgICAgICAud2l0aChkaXN0YW5jZSwgIndlaWdodCIpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBQYXRoPiBnZXRfZ19WX2hhc1huYW1lX2RhbmllbFhfc2hvcnRlc3RQYXRoX3RhcmdldFhoYXNYbmFtZV9zdGVwaGVuWFhfZWRnZXNYYm90aEVYdXNlc1hYKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLmhhcygibmFtZSIsICJkYW5pZWwiKS5zaG9ydGVzdFBhdGgoKQorICAgICAgICAgICAgICAgICAgICAud2l0aCh0YXJnZXQsIF9fLmhhcygibmFtZSIsInN0ZXBoZW4iKSkKKyAgICAgICAgICAgICAgICAgICAgLndpdGgoZWRnZXMsIF9fLmJvdGhFKCJ1c2VzIikpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBQYXRoPiBnZXRfZ19WX2hhc1hzb25nX25hbWVfTUlHSFRfQVNfV0VMTFhfc2hvcnRlc3RQYXRoX3RhcmdldFhoYXNYc29uZ19uYW1lX01BWUJFX1lPVV9LTk9XX0hPV19JX0ZFRUxYWF9lZGdlc1hvdXRFWGZvbGxvd2VkQnlYWF9kaXN0YW5jZVh3ZWlnaHRYKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLmhhcygic29uZyIsICJuYW1lIiwgIk1JR0hUIEFTIFdFTEwiKQorICAgICAgICAgICAgICAgICAgICAuc2hvcnRlc3RQYXRoKCkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCh0YXJnZXQsIF9fLmhhcygic29uZyIsICJuYW1lIiwgIk1BWUJFIFlPVSBLTk9XIEhPVyBJIEZFRUwiKSkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aChlZGdlcywgX18ub3V0RSgiZm9sbG93ZWRCeSIpKS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoKGRpc3RhbmNlLCAid2VpZ2h0Iik7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIFBhdGg+IGdldF9nX1ZfaGFzWG5hbWVfbWFya29YX3Nob3J0ZXN0UGF0aF9tYXhEaXN0YW5jZVgxWCgpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS5oYXMoIm5hbWUiLCAibWFya28iKS5zaG9ydGVzdFBhdGgoKQorICAgICAgICAgICAgICAgICAgICAud2l0aChtYXhEaXN0YW5jZSwgMSk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIFBhdGg+IGdldF9nX1ZfaGFzWG5hbWVfdmFkYXNYX3Nob3J0ZXN0UGF0aF9kaXN0YW5jZVh3ZWlnaHRYX21heERpc3RhbmNlWDFfM1goKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkuaGFzKCJuYW1lIiwgInZhZGFzIikuc2hvcnRlc3RQYXRoKCkKKyAgICAgICAgICAgICAgICAgICAgLndpdGgoZGlzdGFuY2UsICJ3ZWlnaHQiKQorICAgICAgICAgICAgICAgICAgICAud2l0aChtYXhEaXN0YW5jZSwgMS4zKTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1N1bVRlc3QuamF2YSBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvU3VtVGVzdC5qYXZhCmluZGV4IDBlOTU2ZDkuLmJkOTgxYzEgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvU3VtVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvU3VtVGVzdC5qYXZhCkBAIC0yMSw2ICsyMSw3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5Mb2FkR3JhcGhXaXRoOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5BYnN0cmFjdEdyZW1saW5Qcm9jZXNzVGVzdDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuR3JlbWxpblByb2Nlc3NSdW5uZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5TY29wZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXg7CiBpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CkBAIC00MCwxNyArNDEsNDkgQEAKIEBSdW5XaXRoKEdyZW1saW5Qcm9jZXNzUnVubmVyLmNsYXNzKQogcHVibGljIGFic3RyYWN0IGNsYXNzIFN1bVRlc3QgZXh0ZW5kcyBBYnN0cmFjdEdyZW1saW5Qcm9jZXNzVGVzdCB7CiAKLSAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgRG91YmxlPiBnZXRfZ19WX3ZhbHVlc1hhZ2VYX3N1bSgpOworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBOdW1iZXI+IGdldF9nX1ZfYWdlX3N1bSgpOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE51bWJlcj4gZ2V0X2dfVl9hZ2VfZm9sZF9zdW1YbG9jYWxYKCk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgTnVtYmVyPiBnZXRfZ19WX2Zvb19zdW0oKTsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBOdW1iZXI+IGdldF9nX1ZfZm9vX2ZvbGRfc3VtWGxvY2FsWCgpOwogCiAgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxTdHJpbmcsIE51bWJlcj4+IGdldF9nX1ZfaGFzTGFiZWxYc29mdHdhcmVYX2dyb3VwX2J5WG5hbWVYX2J5WGJvdGhFX3dlaWdodF9zdW1YKCk7CiAKICAgICBAVGVzdAogICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKLSAgICBwdWJsaWMgdm9pZCBnX1ZfdmFsdWVzWGFnZVhfc3VtKCkgewotICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBEb3VibGU+IHRyYXZlcnNhbCA9IGdldF9nX1ZfdmFsdWVzWGFnZVhfc3VtKCk7CisgICAgcHVibGljIHZvaWQgZ19WX2FnZV9zdW0oKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIE51bWJlcj4gdHJhdmVyc2FsID0gZ2V0X2dfVl9hZ2Vfc3VtKCk7CiAgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOwogICAgICAgICBmaW5hbCBOdW1iZXIgc3VtID0gdHJhdmVyc2FsLm5leHQoKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKDEyM0wsIHN1bSk7CisgICAgICAgIGFzc2VydEVxdWFscygxMjMsIHN1bS5pbnRWYWx1ZSgpKTsKKyAgICAgICAgYXNzZXJ0RmFsc2UodHJhdmVyc2FsLmhhc05leHQoKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WX2FnZV9mb2xkX3N1bVhsb2NhbFgoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIE51bWJlcj4gdHJhdmVyc2FsID0gZ2V0X2dfVl9hZ2VfZm9sZF9zdW1YbG9jYWxYKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBmaW5hbCBOdW1iZXIgc3VtID0gdHJhdmVyc2FsLm5leHQoKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDEyMywgc3VtLmludFZhbHVlKCkpOworICAgICAgICBhc3NlcnRGYWxzZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1ZfZm9vX3N1bSgpIHsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgTnVtYmVyPiB0cmF2ZXJzYWwgPSBnZXRfZ19WX2Zvb19zdW0oKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGFzc2VydEZhbHNlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOworICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIGdfVl9mb29fZm9sZF9zdW1YbG9jYWxYKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBOdW1iZXI+IHRyYXZlcnNhbCA9IGdldF9nX1ZfZm9vX2ZvbGRfc3VtWGxvY2FsWCgpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKICAgICAgICAgYXNzZXJ0RmFsc2UodHJhdmVyc2FsLmhhc05leHQoKSk7CiAgICAgfQogCkBAIC03MCwxMyArMTAzLDI4IEBACiAgICAgcHVibGljIHN0YXRpYyBjbGFzcyBUcmF2ZXJzYWxzIGV4dGVuZHMgU3VtVGVzdCB7CiAKICAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBEb3VibGU+IGdldF9nX1ZfdmFsdWVzWGFnZVhfc3VtKCkgeworICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgTnVtYmVyPiBnZXRfZ19WX2FnZV9zdW0oKSB7CiAgICAgICAgICAgICByZXR1cm4gZy5WKCkudmFsdWVzKCJhZ2UiKS5zdW0oKTsKICAgICAgICAgfQogCiAgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgTnVtYmVyPiBnZXRfZ19WX2FnZV9mb2xkX3N1bVhsb2NhbFgoKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkudmFsdWVzKCJhZ2UiKS5mb2xkKCkuc3VtKFNjb3BlLmxvY2FsKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgTnVtYmVyPiBnZXRfZ19WX2Zvb19zdW0oKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkudmFsdWVzKCJmb28iKS5zdW0oKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgTnVtYmVyPiBnZXRfZ19WX2Zvb19mb2xkX3N1bVhsb2NhbFgoKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkudmFsdWVzKCJmb28iKS5mb2xkKCkuc3VtKFNjb3BlLmxvY2FsKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQogICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgTWFwPFN0cmluZywgTnVtYmVyPj4gZ2V0X2dfVl9oYXNMYWJlbFhzb2Z0d2FyZVhfZ3JvdXBfYnlYbmFtZVhfYnlYYm90aEVfd2VpZ2h0X3N1bVgoKSB7CiAgICAgICAgICAgICByZXR1cm4gZy5WKCkuaGFzTGFiZWwoInNvZnR3YXJlIikuPFN0cmluZywgTnVtYmVyPmdyb3VwKCkuYnkoIm5hbWUiKS5ieShib3RoRSgpLnZhbHVlcygid2VpZ2h0Iikuc3VtKCkpOwogICAgICAgICB9CiAgICAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvVmFsdWVNYXBUZXN0LmphdmEgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvbWFwL1ZhbHVlTWFwVGVzdC5qYXZhCmluZGV4IDY5NjJjYWYuLjIxOWE2YjAgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvVmFsdWVNYXBUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9WYWx1ZU1hcFRlc3QuamF2YQpAQCAtMjMsMTQgKzIzLDE3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLkdyZW1saW5Qcm9jZXNzUnVubmVyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLl9fOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLldpdGhPcHRpb25zOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlQ7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4OwogaW1wb3J0IG9yZy5qdW5pdC5UZXN0OwogaW1wb3J0IG9yZy5qdW5pdC5ydW5uZXIuUnVuV2l0aDsKIAoraW1wb3J0IGphdmEudXRpbC5BcnJheXM7CiBpbXBvcnQgamF2YS51dGlsLkxpc3Q7CiBpbXBvcnQgamF2YS51dGlsLk1hcDsKIAoraW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkxvYWRHcmFwaFdpdGguR3JhcGhEYXRhLkNSRVc7CiBpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uTG9hZEdyYXBoV2l0aC5HcmFwaERhdGEuTU9ERVJOOwogaW1wb3J0IHN0YXRpYyBvcmcuaGFtY3Jlc3QuY29yZS5Jcy5pczsKIGltcG9ydCBzdGF0aWMgb3JnLmhhbWNyZXN0Lk1hdGNoZXJBc3NlcnQuYXNzZXJ0VGhhdDsKQEAgLTQ5LDI3ICs1MiwzNSBAQAogQFJ1bldpdGgoR3JlbWxpblByb2Nlc3NSdW5uZXIuY2xhc3MpCiBwdWJsaWMgYWJzdHJhY3QgY2xhc3MgVmFsdWVNYXBUZXN0IGV4dGVuZHMgQWJzdHJhY3RHcmVtbGluUHJvY2Vzc1Rlc3QgewogCi0gICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxTdHJpbmcsIExpc3Q+PiBnZXRfZ19WX3ZhbHVlTWFwKCk7CisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxPYmplY3QsIExpc3Q+PiBnZXRfZ19WX3ZhbHVlTWFwKCk7CiAKICAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgTWFwPE9iamVjdCwgT2JqZWN0Pj4gZ2V0X2dfVl92YWx1ZU1hcFh0cnVlWCgpOwogCi0gICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxTdHJpbmcsIExpc3Q+PiBnZXRfZ19WX3ZhbHVlTWFwWG5hbWVfYWdlWCgpOworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBPYmplY3Q+PiBnZXRfZ19WX3ZhbHVlTWFwX3dpdGhYdG9rZW5zWCgpOwogCi0gICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxPYmplY3QsIE9iamVjdD4+IGdldF9nX1ZfaGFzTGFiZWxYcGVyc29uWF9maWx0ZXJYb3V0RVhjcmVhdGVkWFhfdmFsdWVNYXBYdHJ1ZVgoKTsKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgTWFwPE9iamVjdCwgTGlzdD4+IGdldF9nX1ZfdmFsdWVNYXBYbmFtZV9hZ2VYKCk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgTWFwPE9iamVjdCwgT2JqZWN0Pj4gZ2V0X2dfVl9oYXNMYWJlbFhwZXJzb25YX2ZpbHRlclhvdXRFWGNyZWF0ZWRYWF92YWx1ZU1hcF93aXRoWHRva2Vuc1goKTsKIAogICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBPYmplY3Q+PiBnZXRfZ19WX3ZhbHVlTWFwWHRydWVfbmFtZV9hZ2VYKCk7CiAKLSAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgTWFwPFN0cmluZywgTGlzdDxTdHJpbmc+Pj4gZ2V0X2dfVlgxWF9vdXRYY3JlYXRlZFhfdmFsdWVNYXAoZmluYWwgT2JqZWN0IHYxSWQpOworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBPYmplY3Q+PiBnZXRfZ19WX3ZhbHVlTWFwWG5hbWVfYWdlWF93aXRoWHRva2Vuc1goKTsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBPYmplY3Q+PiBnZXRfZ19WX3ZhbHVlTWFwWG5hbWVfYWdlWF93aXRoWHRva2Vuc19sYWJlbHNYX2J5WHVuZm9sZFgoKTsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBMaXN0PFN0cmluZz4+PiBnZXRfZ19WWDFYX291dFhjcmVhdGVkWF92YWx1ZU1hcChmaW5hbCBPYmplY3QgdjFJZCk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgTWFwPE9iamVjdCwgT2JqZWN0Pj4gZ2V0X2dfVlgxWF92YWx1ZU1hcFhuYW1lX2xvY2F0aW9uWF9ieVh1bmZvbGRYX2J5KGZpbmFsIE9iamVjdCB2MUlkKTsKIAogICAgIEBUZXN0CiAgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQogICAgIHB1YmxpYyB2b2lkIGdfVl92YWx1ZU1hcCgpIHsKLSAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgTWFwPFN0cmluZywgTGlzdD4+IHRyYXZlcnNhbCA9IGdldF9nX1ZfdmFsdWVNYXAoKTsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgTWFwPE9iamVjdCwgTGlzdD4+IHRyYXZlcnNhbCA9IGdldF9nX1ZfdmFsdWVNYXAoKTsKICAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CiAgICAgICAgIGludCBjb3VudGVyID0gMDsKICAgICAgICAgd2hpbGUgKHRyYXZlcnNhbC5oYXNOZXh0KCkpIHsKICAgICAgICAgICAgIGNvdW50ZXIrKzsKLSAgICAgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsIExpc3Q+IHZhbHVlcyA9IHRyYXZlcnNhbC5uZXh0KCk7CisgICAgICAgICAgICBmaW5hbCBNYXA8T2JqZWN0LCBMaXN0PiB2YWx1ZXMgPSB0cmF2ZXJzYWwubmV4dCgpOwogICAgICAgICAgICAgZmluYWwgU3RyaW5nIG5hbWUgPSAoU3RyaW5nKSB2YWx1ZXMuZ2V0KCJuYW1lIikuZ2V0KDApOwogICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDIsIHZhbHVlcy5zaXplKCkpOwogICAgICAgICAgICAgaWYgKG5hbWUuZXF1YWxzKCJtYXJrbyIpKSB7CkBAIC05Myw1MCArMTA0LDUyIEBACiAKICAgICBAVGVzdAogICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKLSAgICBwdWJsaWMgdm9pZCBnX1ZfdmFsdWVNYXBYdHJ1ZVgoKSB7Ci0gICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxPYmplY3QsIE9iamVjdD4+IHRyYXZlcnNhbCA9IGdldF9nX1ZfdmFsdWVNYXBYdHJ1ZVgoKTsKLSAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7Ci0gICAgICAgIGludCBjb3VudGVyID0gMDsKLSAgICAgICAgd2hpbGUgKHRyYXZlcnNhbC5oYXNOZXh0KCkpIHsKLSAgICAgICAgICAgIGNvdW50ZXIrKzsKLSAgICAgICAgICAgIGZpbmFsIE1hcDxPYmplY3QsIE9iamVjdD4gdmFsdWVzID0gdHJhdmVyc2FsLm5leHQoKTsKLSAgICAgICAgICAgIGZpbmFsIFN0cmluZyBuYW1lID0gKFN0cmluZykgKChMaXN0KSB2YWx1ZXMuZ2V0KCJuYW1lIikpLmdldCgwKTsKLSAgICAgICAgICAgIGFzc2VydEVxdWFscyg0LCB2YWx1ZXMuc2l6ZSgpKTsKLSAgICAgICAgICAgIGFzc2VydFRoYXQodmFsdWVzLmNvbnRhaW5zS2V5KFQuaWQpLCBpcyh0cnVlKSk7Ci0gICAgICAgICAgICBpZiAobmFtZS5lcXVhbHMoIm1hcmtvIikpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMjksICgoTGlzdCkgdmFsdWVzLmdldCgiYWdlIikpLmdldCgwKSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJwZXJzb24iLCB2YWx1ZXMuZ2V0KFQubGFiZWwpKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAobmFtZS5lcXVhbHMoImpvc2giKSkgewotICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygzMiwgKChMaXN0KSB2YWx1ZXMuZ2V0KCJhZ2UiKSkuZ2V0KDApKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoInBlcnNvbiIsIHZhbHVlcy5nZXQoVC5sYWJlbCkpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChuYW1lLmVxdWFscygicGV0ZXIiKSkgewotICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygzNSwgKChMaXN0KSB2YWx1ZXMuZ2V0KCJhZ2UiKSkuZ2V0KDApKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoInBlcnNvbiIsIHZhbHVlcy5nZXQoVC5sYWJlbCkpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChuYW1lLmVxdWFscygidmFkYXMiKSkgewotICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygyNywgKChMaXN0KSB2YWx1ZXMuZ2V0KCJhZ2UiKSkuZ2V0KDApKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoInBlcnNvbiIsIHZhbHVlcy5nZXQoVC5sYWJlbCkpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChuYW1lLmVxdWFscygibG9wIikpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoImphdmEiLCAoKExpc3QpIHZhbHVlcy5nZXQoImxhbmciKSkuZ2V0KDApKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoInNvZnR3YXJlIiwgdmFsdWVzLmdldChULmxhYmVsKSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKG5hbWUuZXF1YWxzKCJyaXBwbGUiKSkgewotICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygiamF2YSIsICgoTGlzdCkgdmFsdWVzLmdldCgibGFuZyIpKS5nZXQoMCkpOwotICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygic29mdHdhcmUiLCB2YWx1ZXMuZ2V0KFQubGFiZWwpKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiSXQgaXMgbm90IHBvc3NpYmxlIHRvIHJlYWNoIGhlcmU6ICIgKyB2YWx1ZXMpOworICAgIHB1YmxpYyB2b2lkIGdfVl92YWx1ZU1hcF93aXRoWHRva2Vuc1goKSB7CisgICAgICAgIGZvciAoZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgTWFwPE9iamVjdCwgT2JqZWN0Pj4gdHJhdmVyc2FsIDoKKyAgICAgICAgICAgICAgICBBcnJheXMuYXNMaXN0KGdldF9nX1ZfdmFsdWVNYXBYdHJ1ZVgoKSwgZ2V0X2dfVl92YWx1ZU1hcF93aXRoWHRva2Vuc1goKSkpIHsKKyAgICAgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICAgICAgaW50IGNvdW50ZXIgPSAwOworICAgICAgICAgICAgd2hpbGUgKHRyYXZlcnNhbC5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBjb3VudGVyKys7CisgICAgICAgICAgICAgICAgZmluYWwgTWFwPE9iamVjdCwgT2JqZWN0PiB2YWx1ZXMgPSB0cmF2ZXJzYWwubmV4dCgpOworICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyBuYW1lID0gKFN0cmluZykgKChMaXN0KSB2YWx1ZXMuZ2V0KCJuYW1lIikpLmdldCgwKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoNCwgdmFsdWVzLnNpemUoKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0VGhhdCh2YWx1ZXMuY29udGFpbnNLZXkoVC5pZCksIGlzKHRydWUpKTsKKyAgICAgICAgICAgICAgICBpZiAobmFtZS5lcXVhbHMoIm1hcmtvIikpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDI5LCAoKExpc3QpIHZhbHVlcy5nZXQoImFnZSIpKS5nZXQoMCkpOworICAgICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoInBlcnNvbiIsIHZhbHVlcy5nZXQoVC5sYWJlbCkpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobmFtZS5lcXVhbHMoImpvc2giKSkgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMzIsICgoTGlzdCkgdmFsdWVzLmdldCgiYWdlIikpLmdldCgwKSk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygicGVyc29uIiwgdmFsdWVzLmdldChULmxhYmVsKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChuYW1lLmVxdWFscygicGV0ZXIiKSkgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMzUsICgoTGlzdCkgdmFsdWVzLmdldCgiYWdlIikpLmdldCgwKSk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygicGVyc29uIiwgdmFsdWVzLmdldChULmxhYmVsKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChuYW1lLmVxdWFscygidmFkYXMiKSkgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMjcsICgoTGlzdCkgdmFsdWVzLmdldCgiYWdlIikpLmdldCgwKSk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygicGVyc29uIiwgdmFsdWVzLmdldChULmxhYmVsKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChuYW1lLmVxdWFscygibG9wIikpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJqYXZhIiwgKChMaXN0KSB2YWx1ZXMuZ2V0KCJsYW5nIikpLmdldCgwKSk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygic29mdHdhcmUiLCB2YWx1ZXMuZ2V0KFQubGFiZWwpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG5hbWUuZXF1YWxzKCJyaXBwbGUiKSkgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoImphdmEiLCAoKExpc3QpIHZhbHVlcy5nZXQoImxhbmciKSkuZ2V0KDApKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJzb2Z0d2FyZSIsIHZhbHVlcy5nZXQoVC5sYWJlbCkpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIkl0IGlzIG5vdCBwb3NzaWJsZSB0byByZWFjaCBoZXJlOiAiICsgdmFsdWVzKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBhc3NlcnRFcXVhbHMoNiwgY291bnRlcik7CiAgICAgICAgIH0KLSAgICAgICAgYXNzZXJ0RXF1YWxzKDYsIGNvdW50ZXIpOwogICAgIH0KIAogICAgIEBUZXN0CiAgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQogICAgIHB1YmxpYyB2b2lkIGdfVl92YWx1ZU1hcFhuYW1lX2FnZVgoKSB7Ci0gICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxTdHJpbmcsIExpc3Q+PiB0cmF2ZXJzYWwgPSBnZXRfZ19WX3ZhbHVlTWFwWG5hbWVfYWdlWCgpOworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBMaXN0Pj4gdHJhdmVyc2FsID0gZ2V0X2dfVl92YWx1ZU1hcFhuYW1lX2FnZVgoKTsKICAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CiAgICAgICAgIGludCBjb3VudGVyID0gMDsKICAgICAgICAgd2hpbGUgKHRyYXZlcnNhbC5oYXNOZXh0KCkpIHsKICAgICAgICAgICAgIGNvdW50ZXIrKzsKLSAgICAgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsIExpc3Q+IHZhbHVlcyA9IHRyYXZlcnNhbC5uZXh0KCk7CisgICAgICAgICAgICBmaW5hbCBNYXA8T2JqZWN0LCBMaXN0PiB2YWx1ZXMgPSB0cmF2ZXJzYWwubmV4dCgpOwogICAgICAgICAgICAgZmluYWwgU3RyaW5nIG5hbWUgPSAoU3RyaW5nKSB2YWx1ZXMuZ2V0KCJuYW1lIikuZ2V0KDApOwogICAgICAgICAgICAgaWYgKG5hbWUuZXF1YWxzKCJtYXJrbyIpKSB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDI5LCB2YWx1ZXMuZ2V0KCJhZ2UiKS5nZXQoMCkpOwpAQCAtMTY1LDM3ICsxNzgsODEgQEAKIAogICAgIEBUZXN0CiAgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQotICAgIHB1YmxpYyB2b2lkIGdfVl92YWx1ZU1hcFh0cnVlX25hbWVfYWdlWCgpIHsKLSAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgTWFwPE9iamVjdCwgT2JqZWN0Pj4gdHJhdmVyc2FsID0gZ2V0X2dfVl92YWx1ZU1hcFh0cnVlX25hbWVfYWdlWCgpOworICAgIHB1YmxpYyB2b2lkIGdfVl92YWx1ZU1hcFhuYW1lX2FnZVhfd2l0aFh0b2tlbnNYKCkgeworICAgICAgICBmb3IgKGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxPYmplY3QsIE9iamVjdD4+IHRyYXZlcnNhbCA6CisgICAgICAgICAgICAgICAgQXJyYXlzLmFzTGlzdChnZXRfZ19WX3ZhbHVlTWFwWHRydWVfbmFtZV9hZ2VYKCksIGdldF9nX1ZfdmFsdWVNYXBYbmFtZV9hZ2VYX3dpdGhYdG9rZW5zWCgpKSkgeworICAgICAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgICAgICBpbnQgY291bnRlciA9IDA7CisgICAgICAgICAgICB3aGlsZSAodHJhdmVyc2FsLmhhc05leHQoKSkgeworICAgICAgICAgICAgICAgIGNvdW50ZXIrKzsKKyAgICAgICAgICAgICAgICBmaW5hbCBNYXA8T2JqZWN0LCBPYmplY3Q+IHZhbHVlcyA9IHRyYXZlcnNhbC5uZXh0KCk7CisgICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nIG5hbWUgPSAoU3RyaW5nKSAoKExpc3QpIHZhbHVlcy5nZXQoIm5hbWUiKSkuZ2V0KDApOworICAgICAgICAgICAgICAgIGFzc2VydFRoYXQodmFsdWVzLmNvbnRhaW5zS2V5KFQuaWQpLCBpcyh0cnVlKSk7CisgICAgICAgICAgICAgICAgaWYgKG5hbWUuZXF1YWxzKCJtYXJrbyIpKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyg0LCB2YWx1ZXMuc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDI5LCAoKExpc3QpIHZhbHVlcy5nZXQoImFnZSIpKS5nZXQoMCkpOworICAgICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoInBlcnNvbiIsIHZhbHVlcy5nZXQoVC5sYWJlbCkpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobmFtZS5lcXVhbHMoImpvc2giKSkgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoNCwgdmFsdWVzLnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygzMiwgKChMaXN0KSB2YWx1ZXMuZ2V0KCJhZ2UiKSkuZ2V0KDApKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJwZXJzb24iLCB2YWx1ZXMuZ2V0KFQubGFiZWwpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG5hbWUuZXF1YWxzKCJwZXRlciIpKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyg0LCB2YWx1ZXMuc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDM1LCAoKExpc3QpIHZhbHVlcy5nZXQoImFnZSIpKS5nZXQoMCkpOworICAgICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoInBlcnNvbiIsIHZhbHVlcy5nZXQoVC5sYWJlbCkpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobmFtZS5lcXVhbHMoInZhZGFzIikpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDQsIHZhbHVlcy5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMjcsICgoTGlzdCkgdmFsdWVzLmdldCgiYWdlIikpLmdldCgwKSk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygicGVyc29uIiwgdmFsdWVzLmdldChULmxhYmVsKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChuYW1lLmVxdWFscygibG9wIikpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDMsIHZhbHVlcy5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICBhc3NlcnROdWxsKHZhbHVlcy5nZXQoImxhbmciKSk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygic29mdHdhcmUiLCB2YWx1ZXMuZ2V0KFQubGFiZWwpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG5hbWUuZXF1YWxzKCJyaXBwbGUiKSkgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMywgdmFsdWVzLnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydE51bGwodmFsdWVzLmdldCgibGFuZyIpKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJzb2Z0d2FyZSIsIHZhbHVlcy5nZXQoVC5sYWJlbCkpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIkl0IGlzIG5vdCBwb3NzaWJsZSB0byByZWFjaCBoZXJlOiAiICsgdmFsdWVzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhc3NlcnRFcXVhbHMoNiwgY291bnRlcik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1ZfdmFsdWVNYXBYbmFtZV9hZ2VYX3dpdGhYdG9rZW5zX2xhYmVsc1hfYnlYdW5mb2xkWCgpIHsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgTWFwPE9iamVjdCwgT2JqZWN0Pj4gdHJhdmVyc2FsID0gZ2V0X2dfVl92YWx1ZU1hcFhuYW1lX2FnZVhfd2l0aFh0b2tlbnNfbGFiZWxzWF9ieVh1bmZvbGRYKCk7CiAgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOwogICAgICAgICBpbnQgY291bnRlciA9IDA7CiAgICAgICAgIHdoaWxlICh0cmF2ZXJzYWwuaGFzTmV4dCgpKSB7CiAgICAgICAgICAgICBjb3VudGVyKys7CiAgICAgICAgICAgICBmaW5hbCBNYXA8T2JqZWN0LCBPYmplY3Q+IHZhbHVlcyA9IHRyYXZlcnNhbC5uZXh0KCk7Ci0gICAgICAgICAgICBmaW5hbCBTdHJpbmcgbmFtZSA9IChTdHJpbmcpICgoTGlzdCkgdmFsdWVzLmdldCgibmFtZSIpKS5nZXQoMCk7Ci0gICAgICAgICAgICBhc3NlcnRUaGF0KHZhbHVlcy5jb250YWluc0tleShULmlkKSwgaXModHJ1ZSkpOworICAgICAgICAgICAgZmluYWwgU3RyaW5nIG5hbWUgPSAoU3RyaW5nKSB2YWx1ZXMuZ2V0KCJuYW1lIik7CisgICAgICAgICAgICBhc3NlcnRUaGF0KHZhbHVlcy5jb250YWluc0tleShULmlkKSwgaXMoZmFsc2UpKTsKICAgICAgICAgICAgIGlmIChuYW1lLmVxdWFscygibWFya28iKSkgewotICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyg0LCB2YWx1ZXMuc2l6ZSgpKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMjksICgoTGlzdCkgdmFsdWVzLmdldCgiYWdlIikpLmdldCgwKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDMsIHZhbHVlcy5zaXplKCkpOworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygyOSwgdmFsdWVzLmdldCgiYWdlIikpOwogICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygicGVyc29uIiwgdmFsdWVzLmdldChULmxhYmVsKSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKG5hbWUuZXF1YWxzKCJqb3NoIikpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoNCwgdmFsdWVzLnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDMyLCAoKExpc3QpIHZhbHVlcy5nZXQoImFnZSIpKS5nZXQoMCkpOworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygzLCB2YWx1ZXMuc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMzIsIHZhbHVlcy5nZXQoImFnZSIpKTsKICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoInBlcnNvbiIsIHZhbHVlcy5nZXQoVC5sYWJlbCkpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChuYW1lLmVxdWFscygicGV0ZXIiKSkgewotICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyg0LCB2YWx1ZXMuc2l6ZSgpKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMzUsICgoTGlzdCkgdmFsdWVzLmdldCgiYWdlIikpLmdldCgwKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDMsIHZhbHVlcy5zaXplKCkpOworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygzNSwgdmFsdWVzLmdldCgiYWdlIikpOwogICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygicGVyc29uIiwgdmFsdWVzLmdldChULmxhYmVsKSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKG5hbWUuZXF1YWxzKCJ2YWRhcyIpKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDQsIHZhbHVlcy5zaXplKCkpOwotICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygyNywgKChMaXN0KSB2YWx1ZXMuZ2V0KCJhZ2UiKSkuZ2V0KDApKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMywgdmFsdWVzLnNpemUoKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDI3LCB2YWx1ZXMuZ2V0KCJhZ2UiKSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJwZXJzb24iLCB2YWx1ZXMuZ2V0KFQubGFiZWwpKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAobmFtZS5lcXVhbHMoImxvcCIpKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDMsIHZhbHVlcy5zaXplKCkpOworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygyLCB2YWx1ZXMuc2l6ZSgpKTsKICAgICAgICAgICAgICAgICBhc3NlcnROdWxsKHZhbHVlcy5nZXQoImxhbmciKSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJzb2Z0d2FyZSIsIHZhbHVlcy5nZXQoVC5sYWJlbCkpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChuYW1lLmVxdWFscygicmlwcGxlIikpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMywgdmFsdWVzLnNpemUoKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDIsIHZhbHVlcy5zaXplKCkpOwogICAgICAgICAgICAgICAgIGFzc2VydE51bGwodmFsdWVzLmdldCgibGFuZyIpKTsKICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoInNvZnR3YXJlIiwgdmFsdWVzLmdldChULmxhYmVsKSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMjA4LDE1ICsyNjUsMTQgQEAKICAgICBAVGVzdAogICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKICAgICBwdWJsaWMgdm9pZCBnX1ZYMVhfb3V0WGNyZWF0ZWRYX3ZhbHVlTWFwKCkgewotICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8U3RyaW5nLCBMaXN0PFN0cmluZz4+PiB0cmF2ZXJzYWwgPSBnZXRfZ19WWDFYX291dFhjcmVhdGVkWF92YWx1ZU1hcChjb252ZXJ0VG9WZXJ0ZXhJZCgibWFya28iKSk7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxPYmplY3QsIExpc3Q8U3RyaW5nPj4+IHRyYXZlcnNhbCA9IGdldF9nX1ZYMVhfb3V0WGNyZWF0ZWRYX3ZhbHVlTWFwKGNvbnZlcnRUb1ZlcnRleElkKCJtYXJrbyIpKTsKICAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CiAgICAgICAgIGFzc2VydFRydWUodHJhdmVyc2FsLmhhc05leHQoKSk7Ci0gICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsIExpc3Q8U3RyaW5nPj4gdmFsdWVzID0gdHJhdmVyc2FsLm5leHQoKTsKKyAgICAgICAgZmluYWwgTWFwPE9iamVjdCwgTGlzdDxTdHJpbmc+PiB2YWx1ZXMgPSB0cmF2ZXJzYWwubmV4dCgpOwogICAgICAgICBhc3NlcnRGYWxzZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKCJsb3AiLCB2YWx1ZXMuZ2V0KCJuYW1lIikuZ2V0KDApKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKCJqYXZhIiwgdmFsdWVzLmdldCgibGFuZyIpLmdldCgwKSk7CiAgICAgICAgIGFzc2VydEVxdWFscygyLCB2YWx1ZXMuc2l6ZSgpKTsKLQogICAgIH0KIAogICAgIC8qKgpAQCAtMjI0LDggKzI4MCw4IEBACiAgICAgICovCiAgICAgQFRlc3QKICAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCi0gICAgcHVibGljIHZvaWQgZ19WX2hhc0xhYmVsWHBlcnNvblhfZmlsdGVyWG91dEVYY3JlYXRlZFhYX3ZhbHVlTWFwWHRydWVYKCkgewotICAgIAlmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LE1hcDxPYmplY3QsT2JqZWN0Pj4gZ3Q9Z2V0X2dfVl9oYXNMYWJlbFhwZXJzb25YX2ZpbHRlclhvdXRFWGNyZWF0ZWRYWF92YWx1ZU1hcFh0cnVlWCgpOworICAgIHB1YmxpYyB2b2lkIGdfVl9oYXNMYWJlbFhwZXJzb25YX2ZpbHRlclhvdXRFWGNyZWF0ZWRYWF92YWx1ZU1hcF93aXRoWHRva2Vuc1goKSB7CisgICAgCWZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsTWFwPE9iamVjdCxPYmplY3Q+PiBndCA9IGdldF9nX1ZfaGFzTGFiZWxYcGVyc29uWF9maWx0ZXJYb3V0RVhjcmVhdGVkWFhfdmFsdWVNYXBfd2l0aFh0b2tlbnNYKCk7CiAgICAgCWludCBjbnQgPSAwOwogICAgIAl3aGlsZShndC5oYXNOZXh0KCkpewogICAgIAkJZmluYWwgTWFwPE9iamVjdCxPYmplY3Q+IG0gPSBndC5uZXh0KCk7CkBAIC0yNDIsOSArMjk4LDI3IEBACiAgICAgCWFzc2VydFRydWUoY250ID4gMCk7CiAgICAgfQogCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChDUkVXKQorICAgIHB1YmxpYyB2b2lkIGdfVlgxWF92YWx1ZU1hcFhuYW1lX2xvY2F0aW9uWF9ieVh1bmZvbGRYX2J5KCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LE1hcDxPYmplY3QsT2JqZWN0Pj4gdHJhdmVyc2FsID0gZ2V0X2dfVlgxWF92YWx1ZU1hcFhuYW1lX2xvY2F0aW9uWF9ieVh1bmZvbGRYX2J5KGNvbnZlcnRUb1ZlcnRleElkKCJtYXJrbyIpKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGFzc2VydFRydWUodHJhdmVyc2FsLmhhc05leHQoKSk7CisgICAgICAgIGZpbmFsIE1hcDxPYmplY3QsIE9iamVjdD4gdmFsdWVzID0gdHJhdmVyc2FsLm5leHQoKTsKKyAgICAgICAgYXNzZXJ0RmFsc2UodHJhdmVyc2FsLmhhc05leHQoKSk7CisgICAgICAgIGFzc2VydFRydWUoIm5hbWUgdmFsdWUgc2hvdWxkIGJlIGEgU3RyaW5nIiwgdmFsdWVzLmNvbnRhaW5zS2V5KCJuYW1lIikgJiYgU3RyaW5nLmNsYXNzLmVxdWFscyh2YWx1ZXMuZ2V0KCJuYW1lIikuZ2V0Q2xhc3MoKSkpOworICAgICAgICBhc3NlcnRUcnVlKCJsb2NhdGlvbiB2YWx1ZSBzaG91bGQgYmUgYSBMaXN0IiwgdmFsdWVzLmNvbnRhaW5zS2V5KCJsb2NhdGlvbiIpICYmIExpc3QuY2xhc3MuaXNBc3NpZ25hYmxlRnJvbSh2YWx1ZXMuZ2V0KCJsb2NhdGlvbiIpLmdldENsYXNzKCkpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKCJtYXJrbyIsIHZhbHVlcy5nZXQoIm5hbWUiKSk7CisgICAgICAgIGZpbmFsIExpc3QgbG9jYXRpb25zID0gKExpc3QpIHZhbHVlcy5nZXQoImxvY2F0aW9uIik7CisgICAgICAgIGZvciAoZmluYWwgU3RyaW5nIGxvY2F0aW9uIDogQXJyYXlzLmFzTGlzdCgic2FuIGRpZWdvIiwgInNhbnRhIGNydXoiLCAiYnJ1c3NlbHMiLCAic2FudGEgZmUiKSkgeworICAgICAgICAgICAgYXNzZXJ0VHJ1ZShsb2NhdGlvbnMuY29udGFpbnMobG9jYXRpb24pKTsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnRFcXVhbHMoMiwgdmFsdWVzLnNpemUoKSk7CisgICAgfQorCiAgICAgcHVibGljIHN0YXRpYyBjbGFzcyBUcmF2ZXJzYWxzIGV4dGVuZHMgVmFsdWVNYXBUZXN0IHsKICAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8U3RyaW5nLCBMaXN0Pj4gZ2V0X2dfVl92YWx1ZU1hcCgpIHsKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxPYmplY3QsIExpc3Q+PiBnZXRfZ19WX3ZhbHVlTWFwKCkgewogICAgICAgICAgICAgcmV0dXJuIGcuVigpLnZhbHVlTWFwKCk7CiAgICAgICAgIH0KIApAQCAtMjU0LDcgKzMyOCwxMiBAQAogICAgICAgICB9CiAKICAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8U3RyaW5nLCBMaXN0Pj4gZ2V0X2dfVl92YWx1ZU1hcFhuYW1lX2FnZVgoKSB7CisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBPYmplY3Q+PiBnZXRfZ19WX3ZhbHVlTWFwX3dpdGhYdG9rZW5zWCgpIHsKKyAgICAgICAgICAgIHJldHVybiBnLlYoKS52YWx1ZU1hcCgpLndpdGgoV2l0aE9wdGlvbnMudG9rZW5zKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgTWFwPE9iamVjdCwgTGlzdD4+IGdldF9nX1ZfdmFsdWVNYXBYbmFtZV9hZ2VYKCkgewogICAgICAgICAgICAgcmV0dXJuIGcuVigpLnZhbHVlTWFwKCJuYW1lIiwgImFnZSIpOwogICAgICAgICB9CiAKQEAgLTI2NCwxMyArMzQzLDI5IEBACiAgICAgICAgIH0KIAogICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxTdHJpbmcsIExpc3Q8U3RyaW5nPj4+IGdldF9nX1ZYMVhfb3V0WGNyZWF0ZWRYX3ZhbHVlTWFwKGZpbmFsIE9iamVjdCB2MUlkKSB7CisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBPYmplY3Q+PiBnZXRfZ19WX3ZhbHVlTWFwWG5hbWVfYWdlWF93aXRoWHRva2Vuc1goKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkudmFsdWVNYXAoIm5hbWUiLCAiYWdlIikud2l0aChXaXRoT3B0aW9ucy50b2tlbnMpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBPYmplY3Q+PiBnZXRfZ19WX3ZhbHVlTWFwWG5hbWVfYWdlWF93aXRoWHRva2Vuc19sYWJlbHNYX2J5WHVuZm9sZFgoKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkudmFsdWVNYXAoIm5hbWUiLCAiYWdlIikud2l0aChXaXRoT3B0aW9ucy50b2tlbnMsIFdpdGhPcHRpb25zLmxhYmVscykuYnkoX18udW5mb2xkKCkpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBMaXN0PFN0cmluZz4+PiBnZXRfZ19WWDFYX291dFhjcmVhdGVkWF92YWx1ZU1hcChmaW5hbCBPYmplY3QgdjFJZCkgewogICAgICAgICAgICAgcmV0dXJuIGcuVih2MUlkKS5vdXQoImNyZWF0ZWQiKS52YWx1ZU1hcCgpOwogICAgICAgICB9CiAKICAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBNYXA8T2JqZWN0LCBPYmplY3Q+PiBnZXRfZ19WX2hhc0xhYmVsWHBlcnNvblhfZmlsdGVyWG91dEVYY3JlYXRlZFhYX3ZhbHVlTWFwWHRydWVYKCkgewotICAgICAgICAJcmV0dXJuIGcuVigpLmhhc0xhYmVsKCJwZXJzb24iKS5maWx0ZXIoX18ub3V0RSgiY3JlYXRlZCIpKS52YWx1ZU1hcCh0cnVlKTsKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIE1hcDxPYmplY3QsIE9iamVjdD4+IGdldF9nX1ZfaGFzTGFiZWxYcGVyc29uWF9maWx0ZXJYb3V0RVhjcmVhdGVkWFhfdmFsdWVNYXBfd2l0aFh0b2tlbnNYKCkgeworICAgICAgICAJcmV0dXJuIGcuVigpLmhhc0xhYmVsKCJwZXJzb24iKS5maWx0ZXIoX18ub3V0RSgiY3JlYXRlZCIpKS52YWx1ZU1hcCgpLndpdGgoV2l0aE9wdGlvbnMudG9rZW5zKTsKICAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPFZlcnRleCwgTWFwPE9iamVjdCwgT2JqZWN0Pj4gZ2V0X2dfVlgxWF92YWx1ZU1hcFhuYW1lX2xvY2F0aW9uWF9ieVh1bmZvbGRYX2J5KGZpbmFsIE9iamVjdCB2MUlkKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKHYxSWQpLnZhbHVlTWFwKCJuYW1lIiwibG9jYXRpb24iKS5ieShfXy51bmZvbGQoKSkuYnkoKTsKKyAgICAgICAgfQorCiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL21hcC9Xcml0ZVRlc3QuamF2YSBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvV3JpdGVUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTc5ODA5NQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9tYXAvV3JpdGVUZXN0LmphdmEKQEAgLTAsMCArMSwxODMgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5GZWF0dXJlUmVxdWlyZW1lbnQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5Mb2FkR3JhcGhXaXRoOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uVGVzdEhlbHBlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuQWJzdHJhY3RHcmVtbGluUHJvY2Vzc1Rlc3Q7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLkdyZW1saW5Qcm9jZXNzUnVubmVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuSU87CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGg7CitpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CitpbXBvcnQgb3JnLmp1bml0LnJ1bm5lci5SdW5XaXRoOworCitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CisKK2ltcG9ydCBzdGF0aWMgb3JnLmhhbWNyZXN0LmNvcmUuSXMuaXM7CitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RmFsc2U7CitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0VGhhdDsKKworLyoqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK0BSdW5XaXRoKEdyZW1saW5Qcm9jZXNzUnVubmVyLmNsYXNzKQorcHVibGljIGFic3RyYWN0IGNsYXNzIFdyaXRlVGVzdCBleHRlbmRzIEFic3RyYWN0R3JlbWxpblByb2Nlc3NUZXN0IHsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8T2JqZWN0LE9iamVjdD4gZ2V0X2dfaW9fd3JpdGVYa3J5b1goZmluYWwgU3RyaW5nIGZpbGVUb1dyaXRlKSAgdGhyb3dzIElPRXhjZXB0aW9uOworCisgICAgcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxPYmplY3QsT2JqZWN0PiBnZXRfZ19pb193cml0ZV93aXRoWHdyaXRlcl9ncnlvWChmaW5hbCBTdHJpbmcgZmlsZVRvV3JpdGUpICB0aHJvd3MgSU9FeGNlcHRpb247CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPE9iamVjdCxPYmplY3Q+IGdldF9nX2lvX3dyaXRlWGpzb25YKGZpbmFsIFN0cmluZyBmaWxlVG9Xcml0ZSkgIHRocm93cyBJT0V4Y2VwdGlvbjsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8T2JqZWN0LE9iamVjdD4gZ2V0X2dfaW9fd3JpdGVfd2l0aFh3cml0ZXJfZ3JhcGhzb25YKGZpbmFsIFN0cmluZyBmaWxlVG9Xcml0ZSkgIHRocm93cyBJT0V4Y2VwdGlvbjsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8T2JqZWN0LE9iamVjdD4gZ2V0X2dfaW9fd3JpdGVYeG1sWChmaW5hbCBTdHJpbmcgZmlsZVRvV3JpdGUpICB0aHJvd3MgSU9FeGNlcHRpb247CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPE9iamVjdCxPYmplY3Q+IGdldF9nX2lvX3dyaXRlX3dpdGhYd3JpdGVyX2dyYXBobWxYKGZpbmFsIFN0cmluZyBmaWxlVG9Xcml0ZSkgIHRocm93cyBJT0V4Y2VwdGlvbjsKKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTG9hZEdyYXBoV2l0aC5HcmFwaERhdGEuTU9ERVJOKQorICAgIEBGZWF0dXJlUmVxdWlyZW1lbnQoZmVhdHVyZUNsYXNzID0gR3JhcGguRmVhdHVyZXMuR3JhcGhGZWF0dXJlcy5jbGFzcywgZmVhdHVyZSA9IEdyYXBoLkZlYXR1cmVzLkdyYXBoRmVhdHVyZXMuRkVBVFVSRV9JT19XUklURSkKKyAgICBwdWJsaWMgdm9pZCBnX2lvX3dyaXRlWGtyeW9YKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgU3RyaW5nIGZpbGVUb1dyaXRlID0gVGVzdEhlbHBlci5nZW5lcmF0ZVRlbXBGaWxlKFdyaXRlVGVzdC5jbGFzcywgInRpbmtlcnBvcC1tb2Rlcm4tdjNkMCIsICIua3J5byIpLmdldEFic29sdXRlUGF0aCgpLnJlcGxhY2UoJ1xcJywgJy8nKTsKKworICAgICAgICBmaW5hbCBGaWxlIGYgPSBuZXcgRmlsZShmaWxlVG9Xcml0ZSk7CisgICAgICAgIGFzc2VydFRoYXQoZi5sZW5ndGgoKSA9PSAwLCBpcyh0cnVlKSk7CisKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPE9iamVjdCxPYmplY3Q+IHRyYXZlcnNhbCA9IGdldF9nX2lvX3dyaXRlWGtyeW9YKGZpbGVUb1dyaXRlKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIHRyYXZlcnNhbC5pdGVyYXRlKCk7CisKKyAgICAgICAgYXNzZXJ0VGhhdChmLmxlbmd0aCgpID4gMCwgaXModHJ1ZSkpOworICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTG9hZEdyYXBoV2l0aC5HcmFwaERhdGEuTU9ERVJOKQorICAgIEBGZWF0dXJlUmVxdWlyZW1lbnQoZmVhdHVyZUNsYXNzID0gR3JhcGguRmVhdHVyZXMuR3JhcGhGZWF0dXJlcy5jbGFzcywgZmVhdHVyZSA9IEdyYXBoLkZlYXR1cmVzLkdyYXBoRmVhdHVyZXMuRkVBVFVSRV9JT19XUklURSkKKyAgICBwdWJsaWMgdm9pZCBnX2lvX3dyaXRlX3dpdGhYd3JpdGVfZ3J5b1goKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBmaW5hbCBTdHJpbmcgZmlsZVRvV3JpdGUgPSBUZXN0SGVscGVyLmdlbmVyYXRlVGVtcEZpbGUoV3JpdGVUZXN0LmNsYXNzLCAidGlua2VycG9wLW1vZGVybi12M2QwIiwgIi5rcnlvIikuZ2V0QWJzb2x1dGVQYXRoKCkucmVwbGFjZSgnXFwnLCAnLycpOworCisgICAgICAgIGZpbmFsIEZpbGUgZiA9IG5ldyBGaWxlKGZpbGVUb1dyaXRlKTsKKyAgICAgICAgYXNzZXJ0VGhhdChmLmxlbmd0aCgpID09IDAsIGlzKHRydWUpKTsKKworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8T2JqZWN0LE9iamVjdD4gdHJhdmVyc2FsID0gZ2V0X2dfaW9fd3JpdGVfd2l0aFh3cml0ZXJfZ3J5b1goZmlsZVRvV3JpdGUpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgdHJhdmVyc2FsLml0ZXJhdGUoKTsKKworICAgICAgICBhc3NlcnRUaGF0KGYubGVuZ3RoKCkgPiAwLCBpcyh0cnVlKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChMb2FkR3JhcGhXaXRoLkdyYXBoRGF0YS5NT0RFUk4pCisgICAgQEZlYXR1cmVSZXF1aXJlbWVudChmZWF0dXJlQ2xhc3MgPSBHcmFwaC5GZWF0dXJlcy5HcmFwaEZlYXR1cmVzLmNsYXNzLCBmZWF0dXJlID0gR3JhcGguRmVhdHVyZXMuR3JhcGhGZWF0dXJlcy5GRUFUVVJFX0lPX1dSSVRFKQorICAgIHB1YmxpYyB2b2lkIGdfaW9fd3JpdGVYanNvblgoKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBmaW5hbCBTdHJpbmcgZmlsZVRvV3JpdGUgPSBUZXN0SGVscGVyLmdlbmVyYXRlVGVtcEZpbGUoV3JpdGVUZXN0LmNsYXNzLCJ0aW5rZXJwb3AtbW9kZXJuLXYzZDAiLCAiLmpzb24iKS5nZXRBYnNvbHV0ZVBhdGgoKS5yZXBsYWNlKCdcXCcsICcvJyk7CisKKyAgICAgICAgZmluYWwgRmlsZSBmID0gbmV3IEZpbGUoZmlsZVRvV3JpdGUpOworICAgICAgICBhc3NlcnRUaGF0KGYubGVuZ3RoKCkgPT0gMCwgaXModHJ1ZSkpOworCisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxPYmplY3QsT2JqZWN0PiB0cmF2ZXJzYWwgPSBnZXRfZ19pb193cml0ZVhqc29uWChmaWxlVG9Xcml0ZSk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICB0cmF2ZXJzYWwuaXRlcmF0ZSgpOworCisgICAgICAgIGFzc2VydFRoYXQoZi5sZW5ndGgoKSA+IDAsIGlzKHRydWUpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKExvYWRHcmFwaFdpdGguR3JhcGhEYXRhLk1PREVSTikKKyAgICBARmVhdHVyZVJlcXVpcmVtZW50KGZlYXR1cmVDbGFzcyA9IEdyYXBoLkZlYXR1cmVzLkdyYXBoRmVhdHVyZXMuY2xhc3MsIGZlYXR1cmUgPSBHcmFwaC5GZWF0dXJlcy5HcmFwaEZlYXR1cmVzLkZFQVRVUkVfSU9fV1JJVEUpCisgICAgcHVibGljIHZvaWQgZ19pb193cml0ZV93aXRoWHdyaXRlcl9ncmFwaHNvblgoKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBmaW5hbCBTdHJpbmcgZmlsZVRvV3JpdGUgPSBUZXN0SGVscGVyLmdlbmVyYXRlVGVtcEZpbGUoV3JpdGVUZXN0LmNsYXNzLCJ0aW5rZXJwb3AtbW9kZXJuLXYzZDAiLCAiLmpzb24iKS5nZXRBYnNvbHV0ZVBhdGgoKS5yZXBsYWNlKCdcXCcsICcvJyk7CisKKyAgICAgICAgZmluYWwgRmlsZSBmID0gbmV3IEZpbGUoZmlsZVRvV3JpdGUpOworICAgICAgICBhc3NlcnRUaGF0KGYubGVuZ3RoKCkgPT0gMCwgaXModHJ1ZSkpOworCisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxPYmplY3QsT2JqZWN0PiB0cmF2ZXJzYWwgPSBnZXRfZ19pb193cml0ZV93aXRoWHdyaXRlcl9ncmFwaHNvblgoZmlsZVRvV3JpdGUpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgdHJhdmVyc2FsLml0ZXJhdGUoKTsKKworICAgICAgICBhc3NlcnRUaGF0KGYubGVuZ3RoKCkgPiAwLCBpcyh0cnVlKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChMb2FkR3JhcGhXaXRoLkdyYXBoRGF0YS5NT0RFUk4pCisgICAgQEZlYXR1cmVSZXF1aXJlbWVudChmZWF0dXJlQ2xhc3MgPSBHcmFwaC5GZWF0dXJlcy5HcmFwaEZlYXR1cmVzLmNsYXNzLCBmZWF0dXJlID0gR3JhcGguRmVhdHVyZXMuR3JhcGhGZWF0dXJlcy5GRUFUVVJFX0lPX1dSSVRFKQorICAgIHB1YmxpYyB2b2lkIGdfaW9fd3JpdGVYeG1sWCgpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIFN0cmluZyBmaWxlVG9Xcml0ZSA9IFRlc3RIZWxwZXIuZ2VuZXJhdGVUZW1wRmlsZShXcml0ZVRlc3QuY2xhc3MsInRpbmtlcnBvcC1tb2Rlcm4iLCAiLnhtbCIpLmdldEFic29sdXRlUGF0aCgpLnJlcGxhY2UoJ1xcJywgJy8nKTsKKworICAgICAgICBmaW5hbCBGaWxlIGYgPSBuZXcgRmlsZShmaWxlVG9Xcml0ZSk7CisgICAgICAgIGFzc2VydFRoYXQoZi5sZW5ndGgoKSA9PSAwLCBpcyh0cnVlKSk7CisKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPE9iamVjdCxPYmplY3Q+IHRyYXZlcnNhbCA9IGdldF9nX2lvX3dyaXRlWHhtbFgoZmlsZVRvV3JpdGUpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgdHJhdmVyc2FsLml0ZXJhdGUoKTsKKworICAgICAgICBhc3NlcnRUaGF0KGYubGVuZ3RoKCkgPiAwLCBpcyh0cnVlKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChMb2FkR3JhcGhXaXRoLkdyYXBoRGF0YS5NT0RFUk4pCisgICAgQEZlYXR1cmVSZXF1aXJlbWVudChmZWF0dXJlQ2xhc3MgPSBHcmFwaC5GZWF0dXJlcy5HcmFwaEZlYXR1cmVzLmNsYXNzLCBmZWF0dXJlID0gR3JhcGguRmVhdHVyZXMuR3JhcGhGZWF0dXJlcy5GRUFUVVJFX0lPX1dSSVRFKQorICAgIHB1YmxpYyB2b2lkIGdfaW9fd3JpdGVfd2l0aFh3cml0ZXJfZ3JhcGhtbFgoKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBmaW5hbCBTdHJpbmcgZmlsZVRvV3JpdGUgPSBUZXN0SGVscGVyLmdlbmVyYXRlVGVtcEZpbGUoV3JpdGVUZXN0LmNsYXNzLCJ0aW5rZXJwb3AtbW9kZXJuIiwgIi54bWwiKS5nZXRBYnNvbHV0ZVBhdGgoKS5yZXBsYWNlKCdcXCcsICcvJyk7CisKKyAgICAgICAgZmluYWwgRmlsZSBmID0gbmV3IEZpbGUoZmlsZVRvV3JpdGUpOworICAgICAgICBhc3NlcnRUaGF0KGYubGVuZ3RoKCkgPT0gMCwgaXModHJ1ZSkpOworCisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxPYmplY3QsT2JqZWN0PiB0cmF2ZXJzYWwgPSBnZXRfZ19pb193cml0ZV93aXRoWHdyaXRlcl9ncmFwaG1sWChmaWxlVG9Xcml0ZSk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBhc3NlcnRGYWxzZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKKworICAgICAgICBhc3NlcnRUaGF0KGYubGVuZ3RoKCkgPiAwLCBpcyh0cnVlKSk7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBUcmF2ZXJzYWxzIGV4dGVuZHMgV3JpdGVUZXN0IHsKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8T2JqZWN0LE9iamVjdD4gZ2V0X2dfaW9fd3JpdGVYa3J5b1goZmluYWwgU3RyaW5nIGZpbGVUb1dyaXRlKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICAgICAgcmV0dXJuIGcuaW8oZmlsZVRvV3JpdGUpLndyaXRlKCk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxPYmplY3QsT2JqZWN0PiBnZXRfZ19pb193cml0ZV93aXRoWHdyaXRlcl9ncnlvWChmaW5hbCBTdHJpbmcgZmlsZVRvV3JpdGUpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgICAgICByZXR1cm4gZy5pbyhmaWxlVG9Xcml0ZSkud2l0aChJTy53cml0ZXIsIElPLmdyeW8pLndyaXRlKCk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxPYmplY3QsT2JqZWN0PiBnZXRfZ19pb193cml0ZVhqc29uWChmaW5hbCBTdHJpbmcgZmlsZVRvV3JpdGUpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgICAgICByZXR1cm4gZy5pbyhmaWxlVG9Xcml0ZSkud3JpdGUoKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPE9iamVjdCxPYmplY3Q+IGdldF9nX2lvX3dyaXRlX3dpdGhYd3JpdGVyX2dyYXBoc29uWChmaW5hbCBTdHJpbmcgZmlsZVRvV3JpdGUpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgICAgICByZXR1cm4gZy5pbyhmaWxlVG9Xcml0ZSkud2l0aChJTy53cml0ZXIsIElPLmdyYXBoc29uKS53cml0ZSgpOworICAgICAgICB9CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVHJhdmVyc2FsPE9iamVjdCxPYmplY3Q+IGdldF9nX2lvX3dyaXRlWHhtbFgoZmluYWwgU3RyaW5nIGZpbGVUb1dyaXRlKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICAgICAgcmV0dXJuIGcuaW8oZmlsZVRvV3JpdGUpLndyaXRlKCk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxPYmplY3QsT2JqZWN0PiBnZXRfZ19pb193cml0ZV93aXRoWHdyaXRlcl9ncmFwaG1sWChmaW5hbCBTdHJpbmcgZmlsZVRvV3JpdGUpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgICAgICByZXR1cm4gZy5pbyhmaWxlVG9Xcml0ZSkud2l0aChJTy53cml0ZXIsIElPLmdyYXBobWwpLndyaXRlKCk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvc2lkZUVmZmVjdC9BZ2dyZWdhdGVUZXN0LmphdmEgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvc2lkZUVmZmVjdC9BZ2dyZWdhdGVUZXN0LmphdmEKaW5kZXggMjNkZmYyNi4uZjc4MDA0NiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL3NpZGVFZmZlY3QvQWdncmVnYXRlVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9zaWRlRWZmZWN0L0FnZ3JlZ2F0ZVRlc3QuamF2YQpAQCAtMjIsNiArMjIsNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5BYnN0cmFjdEdyZW1saW5Qcm9jZXNzVGVzdDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuR3JlbWxpblByb2Nlc3NSdW5uZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QYXRoOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuU2NvcGU7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuQnVsa1NldDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5NYXBIZWxwZXI7CkBAIC0zMSwxMCArMzIsMTQgQEAKIAogaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOwogaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5IYXNoU2V0OwogaW1wb3J0IGphdmEudXRpbC5MaXN0OwogaW1wb3J0IGphdmEudXRpbC5NYXA7CitpbXBvcnQgamF2YS51dGlsLlNldDsKIAogaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkxvYWRHcmFwaFdpdGguR3JhcGhEYXRhLk1PREVSTjsKK2ltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX18uaW5FOworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5fXy5vdXRFOwogaW1wb3J0IHN0YXRpYyBvcmcuaGFtY3Jlc3QuQ29yZU1hdGNoZXJzLm5vdDsKIGltcG9ydCBzdGF0aWMgb3JnLmhhbWNyZXN0LmNvcmUuSXMuaXM7CiBpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOwpAQCAtNTAsNiArNTUsMTAgQEAKIEBSdW5XaXRoKEdyZW1saW5Qcm9jZXNzUnVubmVyLmNsYXNzKQogcHVibGljIGFic3RyYWN0IGNsYXNzIEFnZ3JlZ2F0ZVRlc3QgZXh0ZW5kcyBBYnN0cmFjdEdyZW1saW5Qcm9jZXNzVGVzdCB7CiAKKyAgICAvLy8vLy8gZ2xvYmFsCisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgTGlzdDxTdHJpbmc+PiBnZXRfZ19WX25hbWVfYWdncmVnYXRlWGdsb2JhbF94WF9jYXBYeFgoKTsKKwogICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBMaXN0PFN0cmluZz4+IGdldF9nX1ZfbmFtZV9hZ2dyZWdhdGVYeFhfY2FwWHhYKCk7CiAKICAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgTGlzdDxTdHJpbmc+PiBnZXRfZ19WX2FnZ3JlZ2F0ZVh4WF9ieVhuYW1lWF9jYXBYeFgoKTsKQEAgLTU4LDcgKzY3LDI1IEBACiAKICAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgQ29sbGVjdGlvbjxJbnRlZ2VyPj4gZ2V0X2dfVl9oYXNMYWJlbFhwZXJzb25YX2FnZ3JlZ2F0ZVh4WF9ieVhhZ2VYX2NhcFh4WF9hc1h5WF9zZWxlY3RYeVgoKTsKIAotICAgIC8vcHVibGljIGFic3RyYWN0IFRyYXZlcnNhbDxWZXJ0ZXgsIFBhdGg+IGdldF9nX3YxX2FzWHhYX2JvdGhFX2FzWGVYX3ZhbHVlWHdlaWdodFhfZXhjZXB0WHdYX2FnZ3JlZ2F0ZVh3WF9iYWNrWGVYX290aGVyVl9qdW1wWHhfdHJ1ZV90cnVlWF9wYXRoKGZpbmFsIE9iamVjdCB2MUlkKTsKKyAgICAvLy8vLy8gbG9jYWwKKworICAgIHB1YmxpYyBhYnN0cmFjdCBUcmF2ZXJzYWw8VmVydGV4LCBDb2xsZWN0aW9uPiBnZXRfZ19WX2FnZ3JlZ2F0ZVhsb2NhbF9hWF9ieVhuYW1lWF9vdXRfY2FwWGFYKCk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgQ29sbGVjdGlvbj4gZ2V0X2dfVlgxWF9hZ2dyZWdhdGVYbG9jYWxfYVhfYnlYbmFtZVhfb3V0X2FnZ3JlZ2F0ZVhsb2NhbF9hWF9ieVhuYW1lWF9uYW1lX2NhcFhhWChmaW5hbCBPYmplY3QgdjFJZCk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgU2V0PFN0cmluZz4+IGdldF9nX3dpdGhTaWRlRWZmZWN0WGFfc2V0WF9WX2JvdGhfbmFtZV9hZ2dyZWdhdGVYbG9jYWxfYVhfY2FwWGFYKCk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgVHJhdmVyc2FsPFZlcnRleCwgQ29sbGVjdGlvbj4gZ2V0X2dfVl9hZ2dyZWdhdGVYbG9jYWxfYVhfYnlYb3V0RVhjcmVhdGVkWF9jb3VudFhfb3V0X291dF9hZ2dyZWdhdGVYbG9jYWxfYVhfYnlYaW5FWGNyZWF0ZWRYX3dlaWdodF9zdW1YX2NhcFhhWCgpOworCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WX3ZhbHVlWG5hbWVYX2FnZ3JlZ2F0ZVhnbG9iYWxfeFhfY2FwWHhYKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBMaXN0PFN0cmluZz4+IHRyYXZlcnNhbCA9IGdldF9nX1ZfbmFtZV9hZ2dyZWdhdGVYZ2xvYmFsX3hYX2NhcFh4WCgpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgZmluYWwgQ29sbGVjdGlvbjxTdHJpbmc+IG5hbWVzID0gdHJhdmVyc2FsLm5leHQoKTsKKyAgICAgICAgYXNzZXJ0RmFsc2UodHJhdmVyc2FsLmhhc05leHQoKSk7CisgICAgICAgIGNoZWNrTGlzdE9mTmFtZXMobmFtZXMpOworICAgIH0KIAogICAgIEBUZXN0CiAgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQpAQCAtMTM5LDkgKzE2Niw3NiBAQAogICAgICAgICBhc3NlcnRGYWxzZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKICAgICB9CiAKKyAgICBAVGVzdAorICAgIEBMb2FkR3JhcGhXaXRoKE1PREVSTikKKyAgICBwdWJsaWMgdm9pZCBnX1ZfYWdncmVnYXRlWGxvY2FsX2FfbmFtZVhfb3V0X2NhcFhhWCgpIHsKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsPFZlcnRleCwgQ29sbGVjdGlvbj4gdHJhdmVyc2FsID0gZ2V0X2dfVl9hZ2dyZWdhdGVYbG9jYWxfYVhfYnlYbmFtZVhfb3V0X2NhcFhhWCgpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgZmluYWwgQ29sbGVjdGlvbiBuYW1lcyA9IHRyYXZlcnNhbC5uZXh0KCk7CisgICAgICAgIGFzc2VydEVxdWFscyg2LCBuYW1lcy5zaXplKCkpOworICAgICAgICBhc3NlcnRUcnVlKG5hbWVzLmNvbnRhaW5zKCJtYXJrbyIpKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShuYW1lcy5jb250YWlucygiam9zaCIpKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShuYW1lcy5jb250YWlucygicGV0ZXIiKSk7CisgICAgICAgIGFzc2VydFRydWUobmFtZXMuY29udGFpbnMoImxvcCIpKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShuYW1lcy5jb250YWlucygicmlwcGxlIikpOworICAgICAgICBhc3NlcnRUcnVlKG5hbWVzLmNvbnRhaW5zKCJ2YWRhcyIpKTsKKyAgICAgICAgYXNzZXJ0RmFsc2UodHJhdmVyc2FsLmhhc05leHQoKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChNT0RFUk4pCisgICAgcHVibGljIHZvaWQgZ19WWDFYX2FnZ3JlZ2F0ZVhsb2NhbF9hWF9ieVhuYW1lWF9vdXRfYWdncmVnYXRlWGxvY2FsX2FYX2J5WG5hbWVYX25hbWVfY2FwWGFYKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBDb2xsZWN0aW9uPiB0cmF2ZXJzYWwgPSBnZXRfZ19WWDFYX2FnZ3JlZ2F0ZVhsb2NhbF9hWF9ieVhuYW1lWF9vdXRfYWdncmVnYXRlWGxvY2FsX2FYX2J5WG5hbWVYX25hbWVfY2FwWGFYKGNvbnZlcnRUb1ZlcnRleElkKCJtYXJrbyIpKTsKKyAgICAgICAgcHJpbnRUcmF2ZXJzYWxGb3JtKHRyYXZlcnNhbCk7CisgICAgICAgIGZpbmFsIENvbGxlY3Rpb24gbmFtZXMgPSB0cmF2ZXJzYWwubmV4dCgpOworICAgICAgICBhc3NlcnRFcXVhbHMoNCwgbmFtZXMuc2l6ZSgpKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShuYW1lcy5jb250YWlucygibWFya28iKSk7CisgICAgICAgIGFzc2VydFRydWUobmFtZXMuY29udGFpbnMoImpvc2giKSk7CisgICAgICAgIGFzc2VydFRydWUobmFtZXMuY29udGFpbnMoInZhZGFzIikpOworICAgICAgICBhc3NlcnRUcnVlKG5hbWVzLmNvbnRhaW5zKCJsb3AiKSk7CisgICAgICAgIGFzc2VydEZhbHNlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOworICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIGdfd2l0aFNpZGVFZmZlY3RYYV9zZXRYX1ZfYm90aF9uYW1lX2FnZ3JlZ2F0ZVhsb2NhbF9hWF9jYXBYYVgoKSB7CisgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsIFNldDxTdHJpbmc+PiB0cmF2ZXJzYWwgPSBnZXRfZ193aXRoU2lkZUVmZmVjdFhhX3NldFhfVl9ib3RoX25hbWVfYWdncmVnYXRlWGxvY2FsX2FYX2NhcFhhWCgpOworICAgICAgICBwcmludFRyYXZlcnNhbEZvcm0odHJhdmVyc2FsKTsKKyAgICAgICAgZmluYWwgU2V0PFN0cmluZz4gbmFtZXMgPSB0cmF2ZXJzYWwubmV4dCgpOworICAgICAgICBhc3NlcnRGYWxzZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDYsIG5hbWVzLnNpemUoKSk7CisgICAgICAgIGFzc2VydFRydWUobmFtZXMuY29udGFpbnMoIm1hcmtvIikpOworICAgICAgICBhc3NlcnRUcnVlKG5hbWVzLmNvbnRhaW5zKCJ2YWRhcyIpKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShuYW1lcy5jb250YWlucygiam9zaCIpKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShuYW1lcy5jb250YWlucygibG9wIikpOworICAgICAgICBhc3NlcnRUcnVlKG5hbWVzLmNvbnRhaW5zKCJyaXBwbGUiKSk7CisgICAgICAgIGFzc2VydFRydWUobmFtZXMuY29udGFpbnMoInBldGVyIikpOworICAgIH0KKworICAgIEBUZXN0CisgICAgQExvYWRHcmFwaFdpdGgoTU9ERVJOKQorICAgIHB1YmxpYyB2b2lkIGdfVl9hZ2dyZWdhdGVYbG9jYWxfYVhfYnlYb3V0RVhjcmVhdGVkWF9jb3VudFhfb3V0X291dF9hZ2dyZWdhdGVYbG9jYWxfYVhfYnlYaW5FWGNyZWF0ZWRYX3dlaWdodF9zdW1YKCkgeworICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCBDb2xsZWN0aW9uPiB0cmF2ZXJzYWwgPSBnZXRfZ19WX2FnZ3JlZ2F0ZVhsb2NhbF9hWF9ieVhvdXRFWGNyZWF0ZWRYX2NvdW50WF9vdXRfb3V0X2FnZ3JlZ2F0ZVhsb2NhbF9hWF9ieVhpbkVYY3JlYXRlZFhfd2VpZ2h0X3N1bVhfY2FwWGFYKCk7CisgICAgICAgIHByaW50VHJhdmVyc2FsRm9ybSh0cmF2ZXJzYWwpOworICAgICAgICBhc3NlcnRUcnVlKHRyYXZlcnNhbC5oYXNOZXh0KCkpOworICAgICAgICBmaW5hbCBDb2xsZWN0aW9uIHN0b3JlID0gdHJhdmVyc2FsLm5leHQoKTsKKyAgICAgICAgYXNzZXJ0RmFsc2UodHJhdmVyc2FsLmhhc05leHQoKSk7CisgICAgICAgIGFzc2VydEVxdWFscyg4LCBzdG9yZS5zaXplKCkpOworICAgICAgICBhc3NlcnRUcnVlKHN0b3JlLmNvbnRhaW5zKDBMKSk7CisgICAgICAgIGFzc2VydFRydWUoc3RvcmUuY29udGFpbnMoMUwpKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShzdG9yZS5jb250YWlucygyTCkpOworICAgICAgICBhc3NlcnRUcnVlKHN0b3JlLmNvbnRhaW5zKDEuMGQpKTsKKyAgICAgICAgYXNzZXJ0RmFsc2Uoc3RvcmUuaXNFbXB0eSgpKTsKKyAgICB9CisKICAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFRyYXZlcnNhbHMgZXh0ZW5kcyBBZ2dyZWdhdGVUZXN0IHsKIAogICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIExpc3Q8U3RyaW5nPj4gZ2V0X2dfVl9uYW1lX2FnZ3JlZ2F0ZVhnbG9iYWxfeFhfY2FwWHhYKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLnZhbHVlcygibmFtZSIpLmFnZ3JlZ2F0ZShTY29wZS5nbG9iYWwsICJ4IikuY2FwKCJ4Iik7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKICAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIExpc3Q8U3RyaW5nPj4gZ2V0X2dfVl9uYW1lX2FnZ3JlZ2F0ZVh4WF9jYXBYeFgoKSB7CiAgICAgICAgICAgICByZXR1cm4gZy5WKCkudmFsdWVzKCJuYW1lIikuYWdncmVnYXRlKCJ4IikuY2FwKCJ4Iik7CiAgICAgICAgIH0KQEAgLTE2MSw4ICsyNTUsMjQgQEAKICAgICAgICAgICAgIHJldHVybiBnLlYoKS5oYXNMYWJlbCgicGVyc29uIikuYWdncmVnYXRlKCJ4IikuYnkoImFnZSIpLmNhcCgieCIpLmFzKCJ5Iikuc2VsZWN0KCJ5Iik7CiAgICAgICAgIH0KIAotICAgICAgICAvKnB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBQYXRoPiBnZXRfZ192MV9hc1h4WF9ib3RoRV9hc1hlWF92YWx1ZVh3ZWlnaHRYX2V4Y2VwdFh3WF9hZ2dyZWdhdGVYd1hfYmFja1hlWF9vdGhlclZfanVtcFh4X3RydWVfdHJ1ZVhfcGF0aChmaW5hbCBPYmplY3QgdjFJZCkgewotICAgICAgICAgICAgcmV0dXJuIGcuVigxKS5hcygieCIpLmJvdGhFKCkuYXMoImUiKS52YWx1ZSgid2VpZ2h0IikuZXhjZXB0KCJ3IikuYWdncmVnYXRlKCJ3IikuYmFjaygiZSIpLm90aGVyVigpLmp1bXAoIngiLCB0IC0+IHRydWUsIHQgLT4gdHJ1ZSkucGF0aCgpOwotICAgICAgICB9Ki8KKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBDb2xsZWN0aW9uPiBnZXRfZ19WX2FnZ3JlZ2F0ZVhsb2NhbF9hWF9ieVhuYW1lWF9vdXRfY2FwWGFYKCkgeworICAgICAgICAgICAgcmV0dXJuIGcuVigpLmFnZ3JlZ2F0ZShTY29wZS5sb2NhbCwgImEiKS5ieSgibmFtZSIpLm91dCgpLmNhcCgiYSIpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBDb2xsZWN0aW9uPiBnZXRfZ19WWDFYX2FnZ3JlZ2F0ZVhsb2NhbF9hWF9ieVhuYW1lWF9vdXRfYWdncmVnYXRlWGxvY2FsX2FYX2J5WG5hbWVYX25hbWVfY2FwWGFYKGZpbmFsIE9iamVjdCB2MUlkKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKHYxSWQpLmFnZ3JlZ2F0ZShTY29wZS5sb2NhbCwgImEiKS5ieSgibmFtZSIpLm91dCgpLmFnZ3JlZ2F0ZShTY29wZS5sb2NhbCwgImEiKS5ieSgibmFtZSIpLnZhbHVlcygibmFtZSIpLmNhcCgiYSIpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBUcmF2ZXJzYWw8VmVydGV4LCBTZXQ8U3RyaW5nPj4gZ2V0X2dfd2l0aFNpZGVFZmZlY3RYYV9zZXRYX1ZfYm90aF9uYW1lX2FnZ3JlZ2F0ZVhsb2NhbF9hWF9jYXBYYVgoKSB7CisgICAgICAgICAgICByZXR1cm4gZy53aXRoU2lkZUVmZmVjdCgiYSIsIG5ldyBIYXNoU2V0KCkpLlYoKS5ib3RoKCkuPFN0cmluZz52YWx1ZXMoIm5hbWUiKS5hZ2dyZWdhdGUoU2NvcGUubG9jYWwsICJhIikuY2FwKCJhIik7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRyYXZlcnNhbDxWZXJ0ZXgsIENvbGxlY3Rpb24+IGdldF9nX1ZfYWdncmVnYXRlWGxvY2FsX2FYX2J5WG91dEVYY3JlYXRlZFhfY291bnRYX291dF9vdXRfYWdncmVnYXRlWGxvY2FsX2FYX2J5WGluRVhjcmVhdGVkWF93ZWlnaHRfc3VtWF9jYXBYYVgoKSB7CisgICAgICAgICAgICByZXR1cm4gZy5WKCkuYWdncmVnYXRlKFNjb3BlLmxvY2FsLCAiYSIpLmJ5KG91dEUoImNyZWF0ZWQiKS5jb3VudCgpKS5vdXQoKS5vdXQoKS5hZ2dyZWdhdGUoU2NvcGUubG9jYWwsICJhIikuYnkoaW5FKCJjcmVhdGVkIikudmFsdWVzKCJ3ZWlnaHQiKS5zdW0oKSkuY2FwKCJhIik7CisgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvc2lkZUVmZmVjdC9Hcm91cFRlc3QuamF2YSBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9zaWRlRWZmZWN0L0dyb3VwVGVzdC5qYXZhCmluZGV4IDM4YjljOWYuLjViMGNmMzIgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9zaWRlRWZmZWN0L0dyb3VwVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RlcC9zaWRlRWZmZWN0L0dyb3VwVGVzdC5qYXZhCkBAIC0yMjAsOCArMjIwLDcgQEAKICAgICAgICAgYXNzZXJ0VHJ1ZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKICAgICAgICAgZmluYWwgTWFwPFN0cmluZywgTnVtYmVyPiBtYXAgPSB0cmF2ZXJzYWwubmV4dCgpOwogICAgICAgICBhc3NlcnRGYWxzZSh0cmF2ZXJzYWwuaGFzTmV4dCgpKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKDIsIG1hcC5zaXplKCkpOwotICAgICAgICBhc3NlcnRFcXVhbHMoMCwgbWFwLmdldCgic29mdHdhcmUiKSk7CisgICAgICAgIGFzc2VydEVxdWFscygxLCBtYXAuc2l6ZSgpKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKDMuNWQsIChkb3VibGUpIG1hcC5nZXQoInBlcnNvbiIpLCAwLjAxZCk7CiAgICAgICAgIGNoZWNrU2lkZUVmZmVjdHModHJhdmVyc2FsLmFzQWRtaW4oKS5nZXRTaWRlRWZmZWN0cygpLCAiYSIsIEhhc2hNYXAuY2xhc3MpOwogICAgIH0KQEAgLTQyNiwxNiArNDI1LDEyIEBACiAgICAgICAgIGFzc2VydEVxdWFscygxNzkzNTAsIHN1Yk1hcC5nZXQoImZvbGxvd2VkQnkiKS5pbnRWYWx1ZSgpKTsKICAgICAgICAgLy8KICAgICAgICAgc3ViTWFwID0gbWFwLmdldCgib3JpZ2luYWwiKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKDMsIHN1Yk1hcC5zaXplKCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoMSwgc3ViTWFwLnNpemUoKSk7CiAgICAgICAgIGFzc2VydEVxdWFscygyMTg1NjEzLCBzdWJNYXAuZ2V0KCJmb2xsb3dlZEJ5IikuaW50VmFsdWUoKSk7Ci0gICAgICAgIGFzc2VydEVxdWFscygwLCBzdWJNYXAuZ2V0KCJ3cml0dGVuQnkiKS5pbnRWYWx1ZSgpKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIHN1Yk1hcC5nZXQoInN1bmdCeSIpLmludFZhbHVlKCkpOwogICAgICAgICAvLwogICAgICAgICBzdWJNYXAgPSBtYXAuZ2V0KCJjb3ZlciIpOwotICAgICAgICBhc3NlcnRFcXVhbHMoMywgc3ViTWFwLnNpemUoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygxLCBzdWJNYXAuc2l6ZSgpKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKDc3Nzk4Miwgc3ViTWFwLmdldCgiZm9sbG93ZWRCeSIpLmludFZhbHVlKCkpOwotICAgICAgICBhc3NlcnRFcXVhbHMoMCwgc3ViTWFwLmdldCgid3JpdHRlbkJ5IikuaW50VmFsdWUoKSk7Ci0gICAgICAgIGFzc2VydEVxdWFscygwLCBzdWJNYXAuZ2V0KCJzdW5nQnkiKS5pbnRWYWx1ZSgpKTsKICAgICB9CiAKICAgICBAVGVzdApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL0VsZW1lbnRJZFN0cmF0ZWd5UHJvY2Vzc1Rlc3QuamF2YSBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9FbGVtZW50SWRTdHJhdGVneVByb2Nlc3NUZXN0LmphdmEKaW5kZXggOWFjYWEzZi4uNjlmYTVjZiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL0VsZW1lbnRJZFN0cmF0ZWd5UHJvY2Vzc1Rlc3QuamF2YQorKysgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vRWxlbWVudElkU3RyYXRlZ3lQcm9jZXNzVGVzdC5qYXZhCkBAIC0yMiw3ICsyMiw2IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLkFic3RyYWN0R3JlbWxpblByb2Nlc3NUZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkdyYXBoVHJhdmVyc2FsU291cmNlOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkRpcmVjdGlvbjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5FZGdlOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlQ7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4OwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL0V2ZW50U3RyYXRlZ3lQcm9jZXNzVGVzdC5qYXZhIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL0V2ZW50U3RyYXRlZ3lQcm9jZXNzVGVzdC5qYXZhCmluZGV4IGU3YTM5MmMuLjA5OTJlYWUgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9FdmVudFN0cmF0ZWd5UHJvY2Vzc1Rlc3QuamF2YQorKysgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vRXZlbnRTdHJhdGVneVByb2Nlc3NUZXN0LmphdmEKQEAgLTMxLDggKzMxLDkgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLmRldGFjaGVkLkRldGFjaGVkRWRnZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLmRldGFjaGVkLkRldGFjaGVkVmVydGV4OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuZGV0YWNoZWQuRGV0YWNoZWRWZXJ0ZXhQcm9wZXJ0eTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLmtleWVkLktleWVkUHJvcGVydHk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5rZXllZC5LZXllZFZlcnRleFByb3BlcnR5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwucmVmZXJlbmNlLlJlZmVyZW5jZUVkZ2U7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5yZWZlcmVuY2UuUmVmZXJlbmNlRmFjdG9yeTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLnJlZmVyZW5jZS5SZWZlcmVuY2VWZXJ0ZXg7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5yZWZlcmVuY2UuUmVmZXJlbmNlVmVydGV4UHJvcGVydHk7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi51dGlsLml0ZXJhdG9yLkl0ZXJhdG9yVXRpbHM7CkBAIC02MzQsNyArNjM1LDcgQEAKICAgICAgICAgICAgICAgICBhc3NlcnRUaGF0KGVsZW1lbnQsIGluc3RhbmNlT2YoRGV0YWNoZWRWZXJ0ZXhQcm9wZXJ0eS5jbGFzcykpOwogICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhsYWJlbCwgZWxlbWVudC5sYWJlbCgpKTsKICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHModmFsdWUsIGVsZW1lbnQudmFsdWUoKSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKG51bGwsIG9sZFZhbHVlLnZhbHVlKCkpOworICAgICAgICAgICAgICAgIGFzc2VydFRoYXQob2xkVmFsdWUsIGluc3RhbmNlT2YoS2V5ZWRQcm9wZXJ0eS5jbGFzcykpOwogICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygibmV3Iiwgb2xkVmFsdWUua2V5KCkpOwogICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygieWF5ISIsIHNldFZhbHVlKTsKICAgICAgICAgICAgICAgICB0cmlnZ2VyZWQuc2V0KHRydWUpOwpAQCAtNzUyLDcgKzc1Myw3IEBACiAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKGxhYmVsLCBlbGVtZW50LmxhYmVsKCkpOwogICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhpbklkLCBlbGVtZW50LmluVmVydGV4KCkuaWQoKSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKG91dElkLCBlbGVtZW50Lm91dFZlcnRleCgpLmlkKCkpOwotICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhudWxsLCBvbGRWYWx1ZS52YWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRUaGF0KG9sZFZhbHVlLCBpbnN0YW5jZU9mKEtleWVkUHJvcGVydHkuY2xhc3MpKTsKICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoIm5ldyIsIG9sZFZhbHVlLmtleSgpKTsKICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoInlheSEiLCBzZXRWYWx1ZSk7CiAgICAgICAgICAgICAgICAgdHJpZ2dlcmVkLnNldCh0cnVlKTsKQEAgLTkyOCw0NCArOTI5LDggQEAKICAgICAgICAgICAgICAgICBhc3NlcnRUaGF0KGVsZW1lbnQsIGluc3RhbmNlT2YoRGV0YWNoZWRWZXJ0ZXguY2xhc3MpKTsKICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMobGFiZWwsIGVsZW1lbnQubGFiZWwoKSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKGlkLCBlbGVtZW50LmlkKCkpOworICAgICAgICAgICAgICAgIGFzc2VydFRoYXQob2xkVmFsdWUsIGluc3RhbmNlT2YoS2V5ZWRWZXJ0ZXhQcm9wZXJ0eS5jbGFzcykpOwogICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygibmV3Iiwgb2xkVmFsdWUua2V5KCkpOwotICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhudWxsLCBvbGRWYWx1ZS52YWx1ZSgpKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoImRhaCIsIHNldFZhbHVlKTsKLSAgICAgICAgICAgICAgICB0cmlnZ2VyZWQuc2V0KHRydWUpOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotICAgICAgICBmaW5hbCBFdmVudFN0cmF0ZWd5LkJ1aWxkZXIgYnVpbGRlciA9IEV2ZW50U3RyYXRlZ3kuYnVpbGQoKS5hZGRMaXN0ZW5lcihsaXN0ZW5lcik7Ci0KLSAgICAgICAgaWYgKGdyYXBoLmZlYXR1cmVzKCkuZ3JhcGgoKS5zdXBwb3J0c1RyYW5zYWN0aW9ucygpKQotICAgICAgICAgICAgYnVpbGRlci5ldmVudFF1ZXVlKG5ldyBFdmVudFN0cmF0ZWd5LlRyYW5zYWN0aW9uYWxFdmVudFF1ZXVlKGdyYXBoKSk7Ci0KLSAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneSBldmVudFN0cmF0ZWd5ID0gYnVpbGRlci5jcmVhdGUoKTsKLSAgICAgICAgZmluYWwgR3JhcGhUcmF2ZXJzYWxTb3VyY2UgZ3RzID0gY3JlYXRlKGV2ZW50U3RyYXRlZ3kpOwotCi0gICAgICAgIGd0cy5WKHYpLnByb3BlcnR5KFZlcnRleFByb3BlcnR5LkNhcmRpbmFsaXR5LnNpbmdsZSwgIm5ldyIsICJkYWgiKS5pdGVyYXRlKCk7Ci0gICAgICAgIHRyeUNvbW1pdChncmFwaCk7Ci0KLSAgICAgICAgYXNzZXJ0RXF1YWxzKDIsIEl0ZXJhdG9yVXRpbHMuY291bnQoZy5WKHYpLnByb3BlcnRpZXMoKSkpOwotICAgICAgICBhc3NlcnRUaGF0KHRyaWdnZXJlZC5nZXQoKSwgaXModHJ1ZSkpOwotICAgIH0KLQotICAgIEBUZXN0Ci0gICAgQEZlYXR1cmVSZXF1aXJlbWVudFNldChGZWF0dXJlUmVxdWlyZW1lbnRTZXQuUGFja2FnZS5WRVJUSUNFU19PTkxZKQotICAgIHB1YmxpYyB2b2lkIHNob3VsZERldGFjaFZlcnRleFByb3BlcnR5V2hlbk5ld0RlcHJlY2F0ZWQoKSB7Ci0gICAgICAgIGZpbmFsIEF0b21pY0Jvb2xlYW4gdHJpZ2dlcmVkID0gbmV3IEF0b21pY0Jvb2xlYW4oZmFsc2UpOwotICAgICAgICBmaW5hbCBWZXJ0ZXggdiA9IGdyYXBoLmFkZFZlcnRleCgpOwotICAgICAgICBmaW5hbCBTdHJpbmcgbGFiZWwgPSB2LmxhYmVsKCk7Ci0gICAgICAgIGZpbmFsIE9iamVjdCBpZCA9IHYuaWQoKTsKLSAgICAgICAgdi5wcm9wZXJ0eSgib2xkIiwiYmxhaCIpOwotCi0gICAgICAgIGZpbmFsIE11dGF0aW9uTGlzdGVuZXIgbGlzdGVuZXIgPSBuZXcgQWJzdHJhY3RNdXRhdGlvbkxpc3RlbmVyKCkgewotICAgICAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgICAgICBwdWJsaWMgdm9pZCB2ZXJ0ZXhQcm9wZXJ0eUNoYW5nZWQoZmluYWwgVmVydGV4IGVsZW1lbnQsIGZpbmFsIFByb3BlcnR5IG9sZFZhbHVlLCBmaW5hbCBPYmplY3Qgc2V0VmFsdWUsIGZpbmFsIE9iamVjdC4uLiB2ZXJ0ZXhQcm9wZXJ0eUtleVZhbHVlcykgewotICAgICAgICAgICAgICAgIGFzc2VydFRoYXQoZWxlbWVudCwgaW5zdGFuY2VPZihEZXRhY2hlZFZlcnRleC5jbGFzcykpOwotICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhsYWJlbCwgZWxlbWVudC5sYWJlbCgpKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoaWQsIGVsZW1lbnQuaWQoKSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJuZXciLCBvbGRWYWx1ZS5rZXkoKSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKG51bGwsIG9sZFZhbHVlLnZhbHVlKCkpOwogICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygiZGFoIiwgc2V0VmFsdWUpOwogICAgICAgICAgICAgICAgIHRyaWdnZXJlZC5zZXQodHJ1ZSk7CiAgICAgICAgICAgICB9CkBAIC0xMDY5LDcgKzEwMzQsNyBAQAogICAgICAgICAgICAgICAgIHRyaWdnZXJlZC5zZXQodHJ1ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH07Ci0gICAgICAgIGZpbmFsIEV2ZW50U3RyYXRlZ3kuQnVpbGRlciBidWlsZGVyID0gRXZlbnRTdHJhdGVneS5idWlsZCgpLmFkZExpc3RlbmVyKGxpc3RlbmVyKS5kZXRhY2goUmVmZXJlbmNlRmFjdG9yeS5jbGFzcyk7CisgICAgICAgIGZpbmFsIEV2ZW50U3RyYXRlZ3kuQnVpbGRlciBidWlsZGVyID0gRXZlbnRTdHJhdGVneS5idWlsZCgpLmFkZExpc3RlbmVyKGxpc3RlbmVyKS5kZXRhY2goRXZlbnRTdHJhdGVneS5EZXRhY2htZW50LlJFRkVSRU5DRSk7CiAKICAgICAgICAgaWYgKGdyYXBoLmZlYXR1cmVzKCkuZ3JhcGgoKS5zdXBwb3J0c1RyYW5zYWN0aW9ucygpKQogICAgICAgICAgICAgYnVpbGRlci5ldmVudFF1ZXVlKG5ldyBFdmVudFN0cmF0ZWd5LlRyYW5zYWN0aW9uYWxFdmVudFF1ZXVlKGdyYXBoKSk7CkBAIC0xMTA5LDcgKzEwNzQsNyBAQAogICAgICAgICAgICAgICAgIHRyaWdnZXJlZC5zZXQodHJ1ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH07Ci0gICAgICAgIGZpbmFsIEV2ZW50U3RyYXRlZ3kuQnVpbGRlciBidWlsZGVyID0gRXZlbnRTdHJhdGVneS5idWlsZCgpLmFkZExpc3RlbmVyKGxpc3RlbmVyKS5kZXRhY2goUmVmZXJlbmNlRmFjdG9yeS5jbGFzcyk7CisgICAgICAgIGZpbmFsIEV2ZW50U3RyYXRlZ3kuQnVpbGRlciBidWlsZGVyID0gRXZlbnRTdHJhdGVneS5idWlsZCgpLmFkZExpc3RlbmVyKGxpc3RlbmVyKS5kZXRhY2goRXZlbnRTdHJhdGVneS5EZXRhY2htZW50LlJFRkVSRU5DRSk7CiAKICAgICAgICAgaWYgKGdyYXBoLmZlYXR1cmVzKCkuZ3JhcGgoKS5zdXBwb3J0c1RyYW5zYWN0aW9ucygpKQogICAgICAgICAgICAgYnVpbGRlci5ldmVudFF1ZXVlKG5ldyBFdmVudFN0cmF0ZWd5LlRyYW5zYWN0aW9uYWxFdmVudFF1ZXVlKGdyYXBoKSk7CkBAIC0xMTQyLDEzICsxMTA3LDEzIEBACiAgICAgICAgICAgICAgICAgYXNzZXJ0VGhhdChlbGVtZW50LCBpbnN0YW5jZU9mKFJlZmVyZW5jZVZlcnRleFByb3BlcnR5LmNsYXNzKSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKGxhYmVsLCBlbGVtZW50LmxhYmVsKCkpOwogICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyh2YWx1ZSwgZWxlbWVudC52YWx1ZSgpKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMobnVsbCwgb2xkVmFsdWUudmFsdWUoKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0VGhhdChvbGRWYWx1ZSwgaW5zdGFuY2VPZihLZXllZFByb3BlcnR5LmNsYXNzKSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJuZXciLCBvbGRWYWx1ZS5rZXkoKSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJ5YXkhIiwgc2V0VmFsdWUpOwogICAgICAgICAgICAgICAgIHRyaWdnZXJlZC5zZXQodHJ1ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH07Ci0gICAgICAgIGZpbmFsIEV2ZW50U3RyYXRlZ3kuQnVpbGRlciBidWlsZGVyID0gRXZlbnRTdHJhdGVneS5idWlsZCgpLmFkZExpc3RlbmVyKGxpc3RlbmVyKS5kZXRhY2goUmVmZXJlbmNlRmFjdG9yeS5jbGFzcyk7CisgICAgICAgIGZpbmFsIEV2ZW50U3RyYXRlZ3kuQnVpbGRlciBidWlsZGVyID0gRXZlbnRTdHJhdGVneS5idWlsZCgpLmFkZExpc3RlbmVyKGxpc3RlbmVyKS5kZXRhY2goRXZlbnRTdHJhdGVneS5EZXRhY2htZW50LlJFRkVSRU5DRSk7CiAKICAgICAgICAgaWYgKGdyYXBoLmZlYXR1cmVzKCkuZ3JhcGgoKS5zdXBwb3J0c1RyYW5zYWN0aW9ucygpKQogICAgICAgICAgICAgYnVpbGRlci5ldmVudFF1ZXVlKG5ldyBFdmVudFN0cmF0ZWd5LlRyYW5zYWN0aW9uYWxFdmVudFF1ZXVlKGdyYXBoKSk7CkBAIC0xMTg3LDcgKzExNTIsNyBAQAogICAgICAgICAgICAgICAgIHRyaWdnZXJlZC5zZXQodHJ1ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH07Ci0gICAgICAgIGZpbmFsIEV2ZW50U3RyYXRlZ3kuQnVpbGRlciBidWlsZGVyID0gRXZlbnRTdHJhdGVneS5idWlsZCgpLmFkZExpc3RlbmVyKGxpc3RlbmVyKS5kZXRhY2goUmVmZXJlbmNlRmFjdG9yeS5jbGFzcyk7CisgICAgICAgIGZpbmFsIEV2ZW50U3RyYXRlZ3kuQnVpbGRlciBidWlsZGVyID0gRXZlbnRTdHJhdGVneS5idWlsZCgpLmFkZExpc3RlbmVyKGxpc3RlbmVyKS5kZXRhY2goRXZlbnRTdHJhdGVneS5EZXRhY2htZW50LlJFRkVSRU5DRSk7CiAKICAgICAgICAgaWYgKGdyYXBoLmZlYXR1cmVzKCkuZ3JhcGgoKS5zdXBwb3J0c1RyYW5zYWN0aW9ucygpKQogICAgICAgICAgICAgYnVpbGRlci5ldmVudFF1ZXVlKG5ldyBFdmVudFN0cmF0ZWd5LlRyYW5zYWN0aW9uYWxFdmVudFF1ZXVlKGdyYXBoKSk7CkBAIC0xMjI3LDcgKzExOTIsNyBAQAogICAgICAgICAgICAgICAgIHRyaWdnZXJlZC5zZXQodHJ1ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH07Ci0gICAgICAgIGZpbmFsIEV2ZW50U3RyYXRlZ3kuQnVpbGRlciBidWlsZGVyID0gRXZlbnRTdHJhdGVneS5idWlsZCgpLmFkZExpc3RlbmVyKGxpc3RlbmVyKS5kZXRhY2goUmVmZXJlbmNlRmFjdG9yeS5jbGFzcyk7CisgICAgICAgIGZpbmFsIEV2ZW50U3RyYXRlZ3kuQnVpbGRlciBidWlsZGVyID0gRXZlbnRTdHJhdGVneS5idWlsZCgpLmFkZExpc3RlbmVyKGxpc3RlbmVyKS5kZXRhY2goRXZlbnRTdHJhdGVneS5EZXRhY2htZW50LlJFRkVSRU5DRSk7CiAKICAgICAgICAgaWYgKGdyYXBoLmZlYXR1cmVzKCkuZ3JhcGgoKS5zdXBwb3J0c1RyYW5zYWN0aW9ucygpKQogICAgICAgICAgICAgYnVpbGRlci5ldmVudFF1ZXVlKG5ldyBFdmVudFN0cmF0ZWd5LlRyYW5zYWN0aW9uYWxFdmVudFF1ZXVlKGdyYXBoKSk7CkBAIC0xMjYwLDEzICsxMjI1LDEzIEBACiAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKGxhYmVsLCBlbGVtZW50LmxhYmVsKCkpOwogICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhpbklkLCBlbGVtZW50LmluVmVydGV4KCkuaWQoKSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKG91dElkLCBlbGVtZW50Lm91dFZlcnRleCgpLmlkKCkpOwotICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhudWxsLCBvbGRWYWx1ZS52YWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRUaGF0KG9sZFZhbHVlLCBpbnN0YW5jZU9mKEtleWVkUHJvcGVydHkuY2xhc3MpKTsKICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoIm5ldyIsIG9sZFZhbHVlLmtleSgpKTsKICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoInlheSEiLCBzZXRWYWx1ZSk7CiAgICAgICAgICAgICAgICAgdHJpZ2dlcmVkLnNldCh0cnVlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKLSAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobGlzdGVuZXIpLmRldGFjaChSZWZlcmVuY2VGYWN0b3J5LmNsYXNzKTsKKyAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobGlzdGVuZXIpLmRldGFjaChFdmVudFN0cmF0ZWd5LkRldGFjaG1lbnQuUkVGRVJFTkNFKTsKIAogICAgICAgICBpZiAoZ3JhcGguZmVhdHVyZXMoKS5ncmFwaCgpLnN1cHBvcnRzVHJhbnNhY3Rpb25zKCkpCiAgICAgICAgICAgICBidWlsZGVyLmV2ZW50UXVldWUobmV3IEV2ZW50U3RyYXRlZ3kuVHJhbnNhY3Rpb25hbEV2ZW50UXVldWUoZ3JhcGgpKTsKQEAgLTEzMDIsNyArMTI2Nyw3IEBACiAgICAgICAgICAgICAgICAgdHJpZ2dlcmVkLnNldCh0cnVlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKLSAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobGlzdGVuZXIpLmRldGFjaChSZWZlcmVuY2VGYWN0b3J5LmNsYXNzKTsKKyAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobGlzdGVuZXIpLmRldGFjaChFdmVudFN0cmF0ZWd5LkRldGFjaG1lbnQuUkVGRVJFTkNFKTsKIAogICAgICAgICBpZiAoZ3JhcGguZmVhdHVyZXMoKS5ncmFwaCgpLnN1cHBvcnRzVHJhbnNhY3Rpb25zKCkpCiAgICAgICAgICAgICBidWlsZGVyLmV2ZW50UXVldWUobmV3IEV2ZW50U3RyYXRlZ3kuVHJhbnNhY3Rpb25hbEV2ZW50UXVldWUoZ3JhcGgpKTsKQEAgLTEzMzUsNyArMTMwMCw3IEBACiAgICAgICAgICAgICAgICAgdHJpZ2dlcmVkLnNldCh0cnVlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKLSAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobGlzdGVuZXIpLmRldGFjaChSZWZlcmVuY2VGYWN0b3J5LmNsYXNzKTsKKyAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobGlzdGVuZXIpLmRldGFjaChFdmVudFN0cmF0ZWd5LkRldGFjaG1lbnQuUkVGRVJFTkNFKTsKIAogICAgICAgICBpZiAoZ3JhcGguZmVhdHVyZXMoKS5ncmFwaCgpLnN1cHBvcnRzVHJhbnNhY3Rpb25zKCkpCiAgICAgICAgICAgICBidWlsZGVyLmV2ZW50UXVldWUobmV3IEV2ZW50U3RyYXRlZ3kuVHJhbnNhY3Rpb25hbEV2ZW50UXVldWUoZ3JhcGgpKTsKQEAgLTEzNjksNyArMTMzNCw3IEBACiAgICAgICAgICAgICAgICAgdHJpZ2dlcmVkLnNldCh0cnVlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKLSAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobGlzdGVuZXIpLmRldGFjaChSZWZlcmVuY2VGYWN0b3J5LmNsYXNzKTsKKyAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobGlzdGVuZXIpLmRldGFjaChFdmVudFN0cmF0ZWd5LkRldGFjaG1lbnQuUkVGRVJFTkNFKTsKIAogICAgICAgICBpZiAoZ3JhcGguZmVhdHVyZXMoKS5ncmFwaCgpLnN1cHBvcnRzVHJhbnNhY3Rpb25zKCkpCiAgICAgICAgICAgICBidWlsZGVyLmV2ZW50UXVldWUobmV3IEV2ZW50U3RyYXRlZ3kuVHJhbnNhY3Rpb25hbEV2ZW50UXVldWUoZ3JhcGgpKTsKQEAgLTE0MDgsNyArMTM3Myw3IEBACiAgICAgICAgICAgICAgICAgdHJpZ2dlcmVkLnNldCh0cnVlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKLSAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobGlzdGVuZXIpLmRldGFjaChSZWZlcmVuY2VGYWN0b3J5LmNsYXNzKTsKKyAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobGlzdGVuZXIpLmRldGFjaChFdmVudFN0cmF0ZWd5LkRldGFjaG1lbnQuUkVGRVJFTkNFKTsKIAogICAgICAgICBpZiAoZ3JhcGguZmVhdHVyZXMoKS5ncmFwaCgpLnN1cHBvcnRzVHJhbnNhY3Rpb25zKCkpCiAgICAgICAgICAgICBidWlsZGVyLmV2ZW50UXVldWUobmV3IEV2ZW50U3RyYXRlZ3kuVHJhbnNhY3Rpb25hbEV2ZW50UXVldWUoZ3JhcGgpKTsKQEAgLTE0MjUsNyArMTM5MCw3IEBACiAKICAgICBAVGVzdAogICAgIEBGZWF0dXJlUmVxdWlyZW1lbnRTZXQoRmVhdHVyZVJlcXVpcmVtZW50U2V0LlBhY2thZ2UuVkVSVElDRVNfT05MWSkKLSAgICBwdWJsaWMgdm9pZCBzaG91bGRSZWZlcmVjZVZlcnRleFByb3BlcnR5V2hlbk5ldygpIHsKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRSZWZlcmVuY2VWZXJ0ZXhQcm9wZXJ0eVdoZW5OZXcoKSB7CiAgICAgICAgIGZpbmFsIEF0b21pY0Jvb2xlYW4gdHJpZ2dlcmVkID0gbmV3IEF0b21pY0Jvb2xlYW4oZmFsc2UpOwogICAgICAgICBmaW5hbCBWZXJ0ZXggdiA9IGdyYXBoLmFkZFZlcnRleCgpOwogICAgICAgICBmaW5hbCBTdHJpbmcgbGFiZWwgPSB2LmxhYmVsKCk7CkBAIC0xNDM4LDQ5ICsxNDAzLDEzIEBACiAgICAgICAgICAgICAgICAgYXNzZXJ0VGhhdChlbGVtZW50LCBpbnN0YW5jZU9mKFJlZmVyZW5jZVZlcnRleC5jbGFzcykpOwogICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhsYWJlbCwgZWxlbWVudC5sYWJlbCgpKTsKICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoaWQsIGVsZW1lbnQuaWQoKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0VGhhdChvbGRWYWx1ZSwgaW5zdGFuY2VPZihLZXllZFZlcnRleFByb3BlcnR5LmNsYXNzKSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJuZXciLCBvbGRWYWx1ZS5rZXkoKSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKG51bGwsIG9sZFZhbHVlLnZhbHVlKCkpOwogICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygiZGFoIiwgc2V0VmFsdWUpOwogICAgICAgICAgICAgICAgIHRyaWdnZXJlZC5zZXQodHJ1ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH07Ci0gICAgICAgIGZpbmFsIEV2ZW50U3RyYXRlZ3kuQnVpbGRlciBidWlsZGVyID0gRXZlbnRTdHJhdGVneS5idWlsZCgpLmFkZExpc3RlbmVyKGxpc3RlbmVyKS5kZXRhY2goUmVmZXJlbmNlRmFjdG9yeS5jbGFzcyk7Ci0KLSAgICAgICAgaWYgKGdyYXBoLmZlYXR1cmVzKCkuZ3JhcGgoKS5zdXBwb3J0c1RyYW5zYWN0aW9ucygpKQotICAgICAgICAgICAgYnVpbGRlci5ldmVudFF1ZXVlKG5ldyBFdmVudFN0cmF0ZWd5LlRyYW5zYWN0aW9uYWxFdmVudFF1ZXVlKGdyYXBoKSk7Ci0KLSAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneSBldmVudFN0cmF0ZWd5ID0gYnVpbGRlci5jcmVhdGUoKTsKLSAgICAgICAgZmluYWwgR3JhcGhUcmF2ZXJzYWxTb3VyY2UgZ3RzID0gY3JlYXRlKGV2ZW50U3RyYXRlZ3kpOwotCi0gICAgICAgIGd0cy5WKHYpLnByb3BlcnR5KFZlcnRleFByb3BlcnR5LkNhcmRpbmFsaXR5LnNpbmdsZSwgIm5ldyIsICJkYWgiKS5pdGVyYXRlKCk7Ci0gICAgICAgIHRyeUNvbW1pdChncmFwaCk7Ci0KLSAgICAgICAgYXNzZXJ0RXF1YWxzKDIsIEl0ZXJhdG9yVXRpbHMuY291bnQoZy5WKHYpLnByb3BlcnRpZXMoKSkpOwotICAgICAgICBhc3NlcnRUaGF0KHRyaWdnZXJlZC5nZXQoKSwgaXModHJ1ZSkpOwotICAgIH0KLQotICAgIEBUZXN0Ci0gICAgQEZlYXR1cmVSZXF1aXJlbWVudFNldChGZWF0dXJlUmVxdWlyZW1lbnRTZXQuUGFja2FnZS5WRVJUSUNFU19PTkxZKQotICAgIHB1YmxpYyB2b2lkIHNob3VsZFJlZmVyZW5jZVZlcnRleFByb3BlcnR5V2hlbk5ld0RlcHJlY2F0ZWQoKSB7Ci0gICAgICAgIGZpbmFsIEF0b21pY0Jvb2xlYW4gdHJpZ2dlcmVkID0gbmV3IEF0b21pY0Jvb2xlYW4oZmFsc2UpOwotICAgICAgICBmaW5hbCBWZXJ0ZXggdiA9IGdyYXBoLmFkZFZlcnRleCgpOwotICAgICAgICBmaW5hbCBTdHJpbmcgbGFiZWwgPSB2LmxhYmVsKCk7Ci0gICAgICAgIGZpbmFsIE9iamVjdCBpZCA9IHYuaWQoKTsKLSAgICAgICAgdi5wcm9wZXJ0eSgib2xkIiwiYmxhaCIpOwotCi0gICAgICAgIGZpbmFsIE11dGF0aW9uTGlzdGVuZXIgbGlzdGVuZXIgPSBuZXcgQWJzdHJhY3RNdXRhdGlvbkxpc3RlbmVyKCkgewotICAgICAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgICAgICBwdWJsaWMgdm9pZCB2ZXJ0ZXhQcm9wZXJ0eUNoYW5nZWQoZmluYWwgVmVydGV4IGVsZW1lbnQsIGZpbmFsIFByb3BlcnR5IG9sZFZhbHVlLCBmaW5hbCBPYmplY3Qgc2V0VmFsdWUsIGZpbmFsIE9iamVjdC4uLiB2ZXJ0ZXhQcm9wZXJ0eUtleVZhbHVlcykgewotICAgICAgICAgICAgICAgIGFzc2VydFRoYXQoZWxlbWVudCwgaW5zdGFuY2VPZihSZWZlcmVuY2VWZXJ0ZXguY2xhc3MpKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMobGFiZWwsIGVsZW1lbnQubGFiZWwoKSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKGlkLCBlbGVtZW50LmlkKCkpOwotICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygibmV3Iiwgb2xkVmFsdWUua2V5KCkpOwotICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhudWxsLCBvbGRWYWx1ZS52YWx1ZSgpKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoImRhaCIsIHNldFZhbHVlKTsKLSAgICAgICAgICAgICAgICB0cmlnZ2VyZWQuc2V0KHRydWUpOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotICAgICAgICBmaW5hbCBFdmVudFN0cmF0ZWd5LkJ1aWxkZXIgYnVpbGRlciA9IEV2ZW50U3RyYXRlZ3kuYnVpbGQoKS5hZGRMaXN0ZW5lcihsaXN0ZW5lcikuZGV0YWNoKFJlZmVyZW5jZUZhY3RvcnkuY2xhc3MpOworICAgICAgICBmaW5hbCBFdmVudFN0cmF0ZWd5LkJ1aWxkZXIgYnVpbGRlciA9IEV2ZW50U3RyYXRlZ3kuYnVpbGQoKS5hZGRMaXN0ZW5lcihsaXN0ZW5lcikuZGV0YWNoKEV2ZW50U3RyYXRlZ3kuRGV0YWNobWVudC5SRUZFUkVOQ0UpOwogCiAgICAgICAgIGlmIChncmFwaC5mZWF0dXJlcygpLmdyYXBoKCkuc3VwcG9ydHNUcmFuc2FjdGlvbnMoKSkKICAgICAgICAgICAgIGJ1aWxkZXIuZXZlbnRRdWV1ZShuZXcgRXZlbnRTdHJhdGVneS5UcmFuc2FjdGlvbmFsRXZlbnRRdWV1ZShncmFwaCkpOwpAQCAtMTUxMiw3ICsxNDQxLDcgQEAKICAgICAgICAgICAgICAgICB0cmlnZ2VyZWQuc2V0KHRydWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9OwotICAgICAgICBmaW5hbCBFdmVudFN0cmF0ZWd5LkJ1aWxkZXIgYnVpbGRlciA9IEV2ZW50U3RyYXRlZ3kuYnVpbGQoKS5hZGRMaXN0ZW5lcihsaXN0ZW5lcikuZGV0YWNoKFJlZmVyZW5jZUZhY3RvcnkuY2xhc3MpOworICAgICAgICBmaW5hbCBFdmVudFN0cmF0ZWd5LkJ1aWxkZXIgYnVpbGRlciA9IEV2ZW50U3RyYXRlZ3kuYnVpbGQoKS5hZGRMaXN0ZW5lcihsaXN0ZW5lcikuZGV0YWNoKEV2ZW50U3RyYXRlZ3kuRGV0YWNobWVudC5SRUZFUkVOQ0UpOwogCiAgICAgICAgIGlmIChncmFwaC5mZWF0dXJlcygpLmdyYXBoKCkuc3VwcG9ydHNUcmFuc2FjdGlvbnMoKSkKICAgICAgICAgICAgIGJ1aWxkZXIuZXZlbnRRdWV1ZShuZXcgRXZlbnRTdHJhdGVneS5UcmFuc2FjdGlvbmFsRXZlbnRRdWV1ZShncmFwaCkpOwpAQCAtMTU0MSw3ICsxNDcwLDcgQEAKICAgICAgICAgICAgICAgICB0cmlnZ2VyZWQuc2V0KHRydWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9OwotICAgICAgICBmaW5hbCBFdmVudFN0cmF0ZWd5LkJ1aWxkZXIgYnVpbGRlciA9IEV2ZW50U3RyYXRlZ3kuYnVpbGQoKS5hZGRMaXN0ZW5lcihsaXN0ZW5lcikuZGV0YWNoKFJlZmVyZW5jZUZhY3RvcnkuY2xhc3MpOworICAgICAgICBmaW5hbCBFdmVudFN0cmF0ZWd5LkJ1aWxkZXIgYnVpbGRlciA9IEV2ZW50U3RyYXRlZ3kuYnVpbGQoKS5hZGRMaXN0ZW5lcihsaXN0ZW5lcikuZGV0YWNoKEV2ZW50U3RyYXRlZ3kuRGV0YWNobWVudC5SRUZFUkVOQ0UpOwogCiAgICAgICAgIGlmIChncmFwaC5mZWF0dXJlcygpLmdyYXBoKCkuc3VwcG9ydHNUcmFuc2FjdGlvbnMoKSkKICAgICAgICAgICAgIGJ1aWxkZXIuZXZlbnRRdWV1ZShuZXcgRXZlbnRTdHJhdGVneS5UcmFuc2FjdGlvbmFsRXZlbnRRdWV1ZShncmFwaCkpOwpAQCAtMTU3OCw3ICsxNTA3LDcgQEAKICAgICAgICAgICAgICAgICB0cmlnZ2VyZWQuc2V0KHRydWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9OwotICAgICAgICBmaW5hbCBFdmVudFN0cmF0ZWd5LkJ1aWxkZXIgYnVpbGRlciA9IEV2ZW50U3RyYXRlZ3kuYnVpbGQoKS5hZGRMaXN0ZW5lcihsaXN0ZW5lcikuZGV0YWNoKFJlZmVyZW5jZUZhY3RvcnkuY2xhc3MpOworICAgICAgICBmaW5hbCBFdmVudFN0cmF0ZWd5LkJ1aWxkZXIgYnVpbGRlciA9IEV2ZW50U3RyYXRlZ3kuYnVpbGQoKS5hZGRMaXN0ZW5lcihsaXN0ZW5lcikuZGV0YWNoKEV2ZW50U3RyYXRlZ3kuRGV0YWNobWVudC5SRUZFUkVOQ0UpOwogCiAgICAgICAgIGlmIChncmFwaC5mZWF0dXJlcygpLmdyYXBoKCkuc3VwcG9ydHNUcmFuc2FjdGlvbnMoKSkKICAgICAgICAgICAgIGJ1aWxkZXIuZXZlbnRRdWV1ZShuZXcgRXZlbnRTdHJhdGVneS5UcmFuc2FjdGlvbmFsRXZlbnRRdWV1ZShncmFwaCkpOwpAQCAtMTYxOCw3ICsxNTQ3LDcgQEAKICAgICAgICAgICAgICAgICB0cmlnZ2VyZWQuc2V0KHRydWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9OwotICAgICAgICBmaW5hbCBFdmVudFN0cmF0ZWd5LkJ1aWxkZXIgYnVpbGRlciA9IEV2ZW50U3RyYXRlZ3kuYnVpbGQoKS5hZGRMaXN0ZW5lcihsaXN0ZW5lcikuZGV0YWNoKFJlZmVyZW5jZUZhY3RvcnkuY2xhc3MpOworICAgICAgICBmaW5hbCBFdmVudFN0cmF0ZWd5LkJ1aWxkZXIgYnVpbGRlciA9IEV2ZW50U3RyYXRlZ3kuYnVpbGQoKS5hZGRMaXN0ZW5lcihsaXN0ZW5lcikuZGV0YWNoKEV2ZW50U3RyYXRlZ3kuRGV0YWNobWVudC5SRUZFUkVOQ0UpOwogCiAgICAgICAgIGlmIChncmFwaC5mZWF0dXJlcygpLmdyYXBoKCkuc3VwcG9ydHNUcmFuc2FjdGlvbnMoKSkKICAgICAgICAgICAgIGJ1aWxkZXIuZXZlbnRRdWV1ZShuZXcgRXZlbnRTdHJhdGVneS5UcmFuc2FjdGlvbmFsRXZlbnRRdWV1ZShncmFwaCkpOwpAQCAtMTY1MSwxMyArMTU4MCwxMyBAQAogICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyh2cCwgZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKGxhYmVsLCBlbGVtZW50LmxhYmVsKCkpOwogICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyh2YWx1ZSwgZWxlbWVudC52YWx1ZSgpKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMobnVsbCwgb2xkVmFsdWUudmFsdWUoKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0VGhhdChvbGRWYWx1ZSwgaW5zdGFuY2VPZihLZXllZFByb3BlcnR5LmNsYXNzKSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJuZXciLCBvbGRWYWx1ZS5rZXkoKSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJ5YXkhIiwgc2V0VmFsdWUpOwogICAgICAgICAgICAgICAgIHRyaWdnZXJlZC5zZXQodHJ1ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH07Ci0gICAgICAgIGZpbmFsIEV2ZW50U3RyYXRlZ3kuQnVpbGRlciBidWlsZGVyID0gRXZlbnRTdHJhdGVneS5idWlsZCgpLmFkZExpc3RlbmVyKGxpc3RlbmVyKS5kZXRhY2goUmVmZXJlbmNlRmFjdG9yeS5jbGFzcyk7CisgICAgICAgIGZpbmFsIEV2ZW50U3RyYXRlZ3kuQnVpbGRlciBidWlsZGVyID0gRXZlbnRTdHJhdGVneS5idWlsZCgpLmFkZExpc3RlbmVyKGxpc3RlbmVyKS5kZXRhY2goRXZlbnRTdHJhdGVneS5EZXRhY2htZW50LlJFRkVSRU5DRSk7CiAKICAgICAgICAgaWYgKGdyYXBoLmZlYXR1cmVzKCkuZ3JhcGgoKS5zdXBwb3J0c1RyYW5zYWN0aW9ucygpKQogICAgICAgICAgICAgYnVpbGRlci5ldmVudFF1ZXVlKG5ldyBFdmVudFN0cmF0ZWd5LlRyYW5zYWN0aW9uYWxFdmVudFF1ZXVlKGdyYXBoKSk7CkBAIC0xNjk2LDcgKzE2MjUsNyBAQAogICAgICAgICAgICAgICAgIHRyaWdnZXJlZC5zZXQodHJ1ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH07Ci0gICAgICAgIGZpbmFsIEV2ZW50U3RyYXRlZ3kuQnVpbGRlciBidWlsZGVyID0gRXZlbnRTdHJhdGVneS5idWlsZCgpLmFkZExpc3RlbmVyKGxpc3RlbmVyKS5kZXRhY2goUmVmZXJlbmNlRmFjdG9yeS5jbGFzcyk7CisgICAgICAgIGZpbmFsIEV2ZW50U3RyYXRlZ3kuQnVpbGRlciBidWlsZGVyID0gRXZlbnRTdHJhdGVneS5idWlsZCgpLmFkZExpc3RlbmVyKGxpc3RlbmVyKS5kZXRhY2goRXZlbnRTdHJhdGVneS5EZXRhY2htZW50LlJFRkVSRU5DRSk7CiAKICAgICAgICAgaWYgKGdyYXBoLmZlYXR1cmVzKCkuZ3JhcGgoKS5zdXBwb3J0c1RyYW5zYWN0aW9ucygpKQogICAgICAgICAgICAgYnVpbGRlci5ldmVudFF1ZXVlKG5ldyBFdmVudFN0cmF0ZWd5LlRyYW5zYWN0aW9uYWxFdmVudFF1ZXVlKGdyYXBoKSk7CkBAIC0xNzM2LDcgKzE2NjUsNyBAQAogICAgICAgICAgICAgICAgIHRyaWdnZXJlZC5zZXQodHJ1ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH07Ci0gICAgICAgIGZpbmFsIEV2ZW50U3RyYXRlZ3kuQnVpbGRlciBidWlsZGVyID0gRXZlbnRTdHJhdGVneS5idWlsZCgpLmFkZExpc3RlbmVyKGxpc3RlbmVyKS5kZXRhY2goUmVmZXJlbmNlRmFjdG9yeS5jbGFzcyk7CisgICAgICAgIGZpbmFsIEV2ZW50U3RyYXRlZ3kuQnVpbGRlciBidWlsZGVyID0gRXZlbnRTdHJhdGVneS5idWlsZCgpLmFkZExpc3RlbmVyKGxpc3RlbmVyKS5kZXRhY2goRXZlbnRTdHJhdGVneS5EZXRhY2htZW50LlJFRkVSRU5DRSk7CiAKICAgICAgICAgaWYgKGdyYXBoLmZlYXR1cmVzKCkuZ3JhcGgoKS5zdXBwb3J0c1RyYW5zYWN0aW9ucygpKQogICAgICAgICAgICAgYnVpbGRlci5ldmVudFF1ZXVlKG5ldyBFdmVudFN0cmF0ZWd5LlRyYW5zYWN0aW9uYWxFdmVudFF1ZXVlKGdyYXBoKSk7CkBAIC0xNzY5LDEzICsxNjk4LDEzIEBACiAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKGxhYmVsLCBlbGVtZW50LmxhYmVsKCkpOwogICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhpbklkLCBlbGVtZW50LmluVmVydGV4KCkuaWQoKSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKG91dElkLCBlbGVtZW50Lm91dFZlcnRleCgpLmlkKCkpOwotICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhudWxsLCBvbGRWYWx1ZS52YWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRUaGF0KG9sZFZhbHVlLCBpbnN0YW5jZU9mKEtleWVkUHJvcGVydHkuY2xhc3MpKTsKICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoIm5ldyIsIG9sZFZhbHVlLmtleSgpKTsKICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoInlheSEiLCBzZXRWYWx1ZSk7CiAgICAgICAgICAgICAgICAgdHJpZ2dlcmVkLnNldCh0cnVlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKLSAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobGlzdGVuZXIpLmRldGFjaChSZWZlcmVuY2VGYWN0b3J5LmNsYXNzKTsKKyAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobGlzdGVuZXIpLmRldGFjaChFdmVudFN0cmF0ZWd5LkRldGFjaG1lbnQuUkVGRVJFTkNFKTsKIAogICAgICAgICBpZiAoZ3JhcGguZmVhdHVyZXMoKS5ncmFwaCgpLnN1cHBvcnRzVHJhbnNhY3Rpb25zKCkpCiAgICAgICAgICAgICBidWlsZGVyLmV2ZW50UXVldWUobmV3IEV2ZW50U3RyYXRlZ3kuVHJhbnNhY3Rpb25hbEV2ZW50UXVldWUoZ3JhcGgpKTsKQEAgLTE4MTEsNyArMTc0MCw3IEBACiAgICAgICAgICAgICAgICAgdHJpZ2dlcmVkLnNldCh0cnVlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKLSAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobGlzdGVuZXIpLmRldGFjaChSZWZlcmVuY2VGYWN0b3J5LmNsYXNzKTsKKyAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobGlzdGVuZXIpLmRldGFjaChFdmVudFN0cmF0ZWd5LkRldGFjaG1lbnQuUkVGRVJFTkNFKTsKIAogICAgICAgICBpZiAoZ3JhcGguZmVhdHVyZXMoKS5ncmFwaCgpLnN1cHBvcnRzVHJhbnNhY3Rpb25zKCkpCiAgICAgICAgICAgICBidWlsZGVyLmV2ZW50UXVldWUobmV3IEV2ZW50U3RyYXRlZ3kuVHJhbnNhY3Rpb25hbEV2ZW50UXVldWUoZ3JhcGgpKTsKQEAgLTE4NDUsNyArMTc3NCw3IEBACiAgICAgICAgICAgICAgICAgdHJpZ2dlcmVkLnNldCh0cnVlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKLSAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobGlzdGVuZXIpLmRldGFjaChSZWZlcmVuY2VGYWN0b3J5LmNsYXNzKTsKKyAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobGlzdGVuZXIpLmRldGFjaChFdmVudFN0cmF0ZWd5LkRldGFjaG1lbnQuUkVGRVJFTkNFKTsKIAogICAgICAgICBpZiAoZ3JhcGguZmVhdHVyZXMoKS5ncmFwaCgpLnN1cHBvcnRzVHJhbnNhY3Rpb25zKCkpCiAgICAgICAgICAgICBidWlsZGVyLmV2ZW50UXVldWUobmV3IEV2ZW50U3RyYXRlZ3kuVHJhbnNhY3Rpb25hbEV2ZW50UXVldWUoZ3JhcGgpKTsKQEAgLTE4ODAsNyArMTgwOSw3IEBACiAgICAgICAgICAgICAgICAgdHJpZ2dlcmVkLnNldCh0cnVlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKLSAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobGlzdGVuZXIpLmRldGFjaChSZWZlcmVuY2VGYWN0b3J5LmNsYXNzKTsKKyAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobGlzdGVuZXIpLmRldGFjaChFdmVudFN0cmF0ZWd5LkRldGFjaG1lbnQuUkVGRVJFTkNFKTsKIAogICAgICAgICBpZiAoZ3JhcGguZmVhdHVyZXMoKS5ncmFwaCgpLnN1cHBvcnRzVHJhbnNhY3Rpb25zKCkpCiAgICAgICAgICAgICBidWlsZGVyLmV2ZW50UXVldWUobmV3IEV2ZW50U3RyYXRlZ3kuVHJhbnNhY3Rpb25hbEV2ZW50UXVldWUoZ3JhcGgpKTsKQEAgLTE5MTcsNyArMTg0Niw3IEBACiAgICAgICAgICAgICAgICAgdHJpZ2dlcmVkLnNldCh0cnVlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKLSAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobGlzdGVuZXIpLmRldGFjaChSZWZlcmVuY2VGYWN0b3J5LmNsYXNzKTsKKyAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobGlzdGVuZXIpLmRldGFjaChFdmVudFN0cmF0ZWd5LkRldGFjaG1lbnQuUkVGRVJFTkNFKTsKIAogICAgICAgICBpZiAoZ3JhcGguZmVhdHVyZXMoKS5ncmFwaCgpLnN1cHBvcnRzVHJhbnNhY3Rpb25zKCkpCiAgICAgICAgICAgICBidWlsZGVyLmV2ZW50UXVldWUobmV3IEV2ZW50U3RyYXRlZ3kuVHJhbnNhY3Rpb25hbEV2ZW50UXVldWUoZ3JhcGgpKTsKQEAgLTE5NDcsNDkgKzE4NzYsMTMgQEAKICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHModiwgZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKGxhYmVsLCBlbGVtZW50LmxhYmVsKCkpOwogICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhpZCwgZWxlbWVudC5pZCgpKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRUaGF0KG9sZFZhbHVlLCBpbnN0YW5jZU9mKEtleWVkVmVydGV4UHJvcGVydHkuY2xhc3MpKTsKICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoIm5ldyIsIG9sZFZhbHVlLmtleSgpKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMobnVsbCwgb2xkVmFsdWUudmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJkYWgiLCBzZXRWYWx1ZSk7CiAgICAgICAgICAgICAgICAgdHJpZ2dlcmVkLnNldCh0cnVlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKLSAgICAgICAgZmluYWwgRXZlbnRTdHJhdGVneS5CdWlsZGVyIGJ1aWxkZXIgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobGlzdGVuZXIpLmRldGFjaChSZWZlcmVuY2VGYWN0b3J5LmNsYXNzKTsKLQotICAgICAgICBpZiAoZ3JhcGguZmVhdHVyZXMoKS5ncmFwaCgpLnN1cHBvcnRzVHJhbnNhY3Rpb25zKCkpCi0gICAgICAgICAgICBidWlsZGVyLmV2ZW50UXVldWUobmV3IEV2ZW50U3RyYXRlZ3kuVHJhbnNhY3Rpb25hbEV2ZW50UXVldWUoZ3JhcGgpKTsKLQotICAgICAgICBmaW5hbCBFdmVudFN0cmF0ZWd5IGV2ZW50U3RyYXRlZ3kgPSBidWlsZGVyLmNyZWF0ZSgpOwotICAgICAgICBmaW5hbCBHcmFwaFRyYXZlcnNhbFNvdXJjZSBndHMgPSBjcmVhdGUoZXZlbnRTdHJhdGVneSk7Ci0KLSAgICAgICAgZ3RzLlYodikucHJvcGVydHkoVmVydGV4UHJvcGVydHkuQ2FyZGluYWxpdHkuc2luZ2xlLCAibmV3IiwgImRhaCIpLml0ZXJhdGUoKTsKLSAgICAgICAgdHJ5Q29tbWl0KGdyYXBoKTsKLQotICAgICAgICBhc3NlcnRFcXVhbHMoMiwgSXRlcmF0b3JVdGlscy5jb3VudChnLlYodikucHJvcGVydGllcygpKSk7Ci0gICAgICAgIGFzc2VydFRoYXQodHJpZ2dlcmVkLmdldCgpLCBpcyh0cnVlKSk7Ci0gICAgfQotCi0gICAgQFRlc3QKLSAgICBARmVhdHVyZVJlcXVpcmVtZW50U2V0KEZlYXR1cmVSZXF1aXJlbWVudFNldC5QYWNrYWdlLlZFUlRJQ0VTX09OTFkpCi0gICAgcHVibGljIHZvaWQgc2hvdWxkVXNlQWN0dWFsVmVydGV4UHJvcGVydHlXaGVuTmV3RGVwcmVjYXRlZCgpIHsKLSAgICAgICAgZmluYWwgQXRvbWljQm9vbGVhbiB0cmlnZ2VyZWQgPSBuZXcgQXRvbWljQm9vbGVhbihmYWxzZSk7Ci0gICAgICAgIGZpbmFsIFZlcnRleCB2ID0gZ3JhcGguYWRkVmVydGV4KCk7Ci0gICAgICAgIGZpbmFsIFN0cmluZyBsYWJlbCA9IHYubGFiZWwoKTsKLSAgICAgICAgZmluYWwgT2JqZWN0IGlkID0gdi5pZCgpOwotICAgICAgICB2LnByb3BlcnR5KCJvbGQiLCJibGFoIik7Ci0KLSAgICAgICAgZmluYWwgTXV0YXRpb25MaXN0ZW5lciBsaXN0ZW5lciA9IG5ldyBBYnN0cmFjdE11dGF0aW9uTGlzdGVuZXIoKSB7Ci0gICAgICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgICAgIHB1YmxpYyB2b2lkIHZlcnRleFByb3BlcnR5Q2hhbmdlZChmaW5hbCBWZXJ0ZXggZWxlbWVudCwgZmluYWwgUHJvcGVydHkgb2xkVmFsdWUsIGZpbmFsIE9iamVjdCBzZXRWYWx1ZSwgZmluYWwgT2JqZWN0Li4uIHZlcnRleFByb3BlcnR5S2V5VmFsdWVzKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKHYsIGVsZW1lbnQpOwotICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhsYWJlbCwgZWxlbWVudC5sYWJlbCgpKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoaWQsIGVsZW1lbnQuaWQoKSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJuZXciLCBvbGRWYWx1ZS5rZXkoKSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKG51bGwsIG9sZFZhbHVlLnZhbHVlKCkpOwotICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygiZGFoIiwgc2V0VmFsdWUpOwotICAgICAgICAgICAgICAgIHRyaWdnZXJlZC5zZXQodHJ1ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0gICAgICAgIGZpbmFsIEV2ZW50U3RyYXRlZ3kuQnVpbGRlciBidWlsZGVyID0gRXZlbnRTdHJhdGVneS5idWlsZCgpLmFkZExpc3RlbmVyKGxpc3RlbmVyKS5kZXRhY2goUmVmZXJlbmNlRmFjdG9yeS5jbGFzcyk7CisgICAgICAgIGZpbmFsIEV2ZW50U3RyYXRlZ3kuQnVpbGRlciBidWlsZGVyID0gRXZlbnRTdHJhdGVneS5idWlsZCgpLmFkZExpc3RlbmVyKGxpc3RlbmVyKS5kZXRhY2goRXZlbnRTdHJhdGVneS5EZXRhY2htZW50LlJFRkVSRU5DRSk7CiAKICAgICAgICAgaWYgKGdyYXBoLmZlYXR1cmVzKCkuZ3JhcGgoKS5zdXBwb3J0c1RyYW5zYWN0aW9ucygpKQogICAgICAgICAgICAgYnVpbGRlci5ldmVudFF1ZXVlKG5ldyBFdmVudFN0cmF0ZWd5LlRyYW5zYWN0aW9uYWxFdmVudFF1ZXVlKGdyYXBoKSk7CkBAIC0yMDIxLDcgKzE5MTQsNyBAQAogICAgICAgICAgICAgICAgIHRyaWdnZXJlZC5zZXQodHJ1ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH07Ci0gICAgICAgIGZpbmFsIEV2ZW50U3RyYXRlZ3kuQnVpbGRlciBidWlsZGVyID0gRXZlbnRTdHJhdGVneS5idWlsZCgpLmFkZExpc3RlbmVyKGxpc3RlbmVyKS5kZXRhY2goUmVmZXJlbmNlRmFjdG9yeS5jbGFzcyk7CisgICAgICAgIGZpbmFsIEV2ZW50U3RyYXRlZ3kuQnVpbGRlciBidWlsZGVyID0gRXZlbnRTdHJhdGVneS5idWlsZCgpLmFkZExpc3RlbmVyKGxpc3RlbmVyKS5kZXRhY2goRXZlbnRTdHJhdGVneS5EZXRhY2htZW50LlJFRkVSRU5DRSk7CiAKICAgICAgICAgaWYgKGdyYXBoLmZlYXR1cmVzKCkuZ3JhcGgoKS5zdXBwb3J0c1RyYW5zYWN0aW9ucygpKQogICAgICAgICAgICAgYnVpbGRlci5ldmVudFF1ZXVlKG5ldyBFdmVudFN0cmF0ZWd5LlRyYW5zYWN0aW9uYWxFdmVudFF1ZXVlKGdyYXBoKSk7CkBAIC0yMDUxLDcgKzE5NDQsNyBAQAogICAgICAgICAgICAgICAgIHRyaWdnZXJlZC5zZXQodHJ1ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH07Ci0gICAgICAgIGZpbmFsIEV2ZW50U3RyYXRlZ3kuQnVpbGRlciBidWlsZGVyID0gRXZlbnRTdHJhdGVneS5idWlsZCgpLmFkZExpc3RlbmVyKGxpc3RlbmVyKS5kZXRhY2goUmVmZXJlbmNlRmFjdG9yeS5jbGFzcyk7CisgICAgICAgIGZpbmFsIEV2ZW50U3RyYXRlZ3kuQnVpbGRlciBidWlsZGVyID0gRXZlbnRTdHJhdGVneS5idWlsZCgpLmFkZExpc3RlbmVyKGxpc3RlbmVyKS5kZXRhY2goRXZlbnRTdHJhdGVneS5EZXRhY2htZW50LlJFRkVSRU5DRSk7CiAKICAgICAgICAgaWYgKGdyYXBoLmZlYXR1cmVzKCkuZ3JhcGgoKS5zdXBwb3J0c1RyYW5zYWN0aW9ucygpKQogICAgICAgICAgICAgYnVpbGRlci5ldmVudFF1ZXVlKG5ldyBFdmVudFN0cmF0ZWd5LlRyYW5zYWN0aW9uYWxFdmVudFF1ZXVlKGdyYXBoKSk7CkBAIC0yMDgzLDcgKzE5NzYsNyBAQAogICAgICAgICB9CiAKICAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHB1YmxpYyB2b2lkIHZlcnRleFByb3BlcnR5Q2hhbmdlZChmaW5hbCBWZXJ0ZXggZWxlbWVudCwgZmluYWwgUHJvcGVydHkgb2xkVmFsdWUsIGZpbmFsIE9iamVjdCBzZXRWYWx1ZSwgZmluYWwgT2JqZWN0Li4uIHZlcnRleFByb3BlcnR5S2V5VmFsdWVzKSB7CisgICAgICAgIHB1YmxpYyB2b2lkIHZlcnRleFByb3BlcnR5Q2hhbmdlZChmaW5hbCBWZXJ0ZXggZWxlbWVudCwgZmluYWwgVmVydGV4UHJvcGVydHkgb2xkVmFsdWUsIGZpbmFsIE9iamVjdCBzZXRWYWx1ZSwgZmluYWwgT2JqZWN0Li4uIHZlcnRleFByb3BlcnR5S2V5VmFsdWVzKSB7CiAKICAgICAgICAgfQogCkBAIC0yMjExLDExICsyMTA0LDYgQEAKICAgICAgICAgfQogCiAgICAgICAgIEBPdmVycmlkZQotICAgICAgICBwdWJsaWMgdm9pZCB2ZXJ0ZXhQcm9wZXJ0eUNoYW5nZWQoZmluYWwgVmVydGV4IGVsZW1lbnQsIGZpbmFsIFByb3BlcnR5IG9sZFZhbHVlLCBmaW5hbCBPYmplY3Qgc2V0VmFsdWUsIGZpbmFsIE9iamVjdC4uLiB2ZXJ0ZXhQcm9wZXJ0eUtleVZhbHVlcykgewotICAgICAgICAgICAgLy8gZG8gbm90aGluZyAtIGRlcHJlY2F0ZWQKLSAgICAgICAgfQotCi0gICAgICAgIEBPdmVycmlkZQogICAgICAgICBwdWJsaWMgdm9pZCB2ZXJ0ZXhQcm9wZXJ0eUNoYW5nZWQoZmluYWwgVmVydGV4IGVsZW1lbnQsIGZpbmFsIFZlcnRleFByb3BlcnR5IG9sZFZhbHVlLCBmaW5hbCBPYmplY3Qgc2V0VmFsdWUsIGZpbmFsIE9iamVjdC4uLiB2ZXJ0ZXhQcm9wZXJ0eUtleVZhbHVlcykgewogICAgICAgICAgICAgdmVydGV4UHJvcGVydHlDaGFuZ2VkRXZlbnQuaW5jcmVtZW50QW5kR2V0KCk7CiAgICAgICAgICAgICBvcmRlci5hZGQoInYtcHJvcGVydHktY2hhbmdlZC0iICsgZWxlbWVudC5pZCgpKTsKZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9QYXJ0aXRpb25TdHJhdGVneVByb2Nlc3NUZXN0LmphdmEgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vUGFydGl0aW9uU3RyYXRlZ3lQcm9jZXNzVGVzdC5qYXZhCmluZGV4IGVhOTc2ZDQuLmY1NTIwMjIgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9QYXJ0aXRpb25TdHJhdGVneVByb2Nlc3NUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL1BhcnRpdGlvblN0cmF0ZWd5UHJvY2Vzc1Rlc3QuamF2YQpAQCAtMTE3LDE1ICsxMTcsMTUgQEAKICAgICBwdWJsaWMgdm9pZCBzaG91bGRBcHBlbmRQYXJ0aXRpb25Ub0FsbFZlcnRleFByb3BlcnRpZXMoKSB7CiAgICAgICAgIGZpbmFsIEdyYXBoVHJhdmVyc2FsU291cmNlIGdPdmVyQSA9IGcud2l0aFN0cmF0ZWdpZXMoUGFydGl0aW9uU3RyYXRlZ3kuYnVpbGQoKQogICAgICAgICAgICAgICAgIC5pbmNsdWRlTWV0YVByb3BlcnRpZXModHJ1ZSkKLSAgICAgICAgICAgICAgICAucGFydGl0aW9uS2V5KHBhcnRpdGlvbikud3JpdGVQYXJ0aXRpb24oIkEiKS5hZGRSZWFkUGFydGl0aW9uKCJBIikuY3JlYXRlKCkpOworICAgICAgICAgICAgICAgIC5wYXJ0aXRpb25LZXkocGFydGl0aW9uKS53cml0ZVBhcnRpdGlvbigiQSIpLnJlYWRQYXJ0aXRpb25zKCJBIikuY3JlYXRlKCkpOwogCiAgICAgICAgIGZpbmFsIEdyYXBoVHJhdmVyc2FsU291cmNlIGdPdmVyQiA9IGcud2l0aFN0cmF0ZWdpZXMoUGFydGl0aW9uU3RyYXRlZ3kuYnVpbGQoKQogICAgICAgICAgICAgICAgIC5pbmNsdWRlTWV0YVByb3BlcnRpZXModHJ1ZSkKLSAgICAgICAgICAgICAgICAucGFydGl0aW9uS2V5KHBhcnRpdGlvbikud3JpdGVQYXJ0aXRpb24oIkIiKS5hZGRSZWFkUGFydGl0aW9uKCJCIikuY3JlYXRlKCkpOworICAgICAgICAgICAgICAgIC5wYXJ0aXRpb25LZXkocGFydGl0aW9uKS53cml0ZVBhcnRpdGlvbigiQiIpLnJlYWRQYXJ0aXRpb25zKCJCIikuY3JlYXRlKCkpOwogCiAgICAgICAgIGZpbmFsIEdyYXBoVHJhdmVyc2FsU291cmNlIGdPdmVyQUIgPSBnLndpdGhTdHJhdGVnaWVzKFBhcnRpdGlvblN0cmF0ZWd5LmJ1aWxkKCkKICAgICAgICAgICAgICAgICAuaW5jbHVkZU1ldGFQcm9wZXJ0aWVzKHRydWUpCi0gICAgICAgICAgICAgICAgLnBhcnRpdGlvbktleShwYXJ0aXRpb24pLndyaXRlUGFydGl0aW9uKCJCIikuYWRkUmVhZFBhcnRpdGlvbigiQiIpLmFkZFJlYWRQYXJ0aXRpb24oIkEiKS5jcmVhdGUoKSk7CisgICAgICAgICAgICAgICAgLnBhcnRpdGlvbktleShwYXJ0aXRpb24pLndyaXRlUGFydGl0aW9uKCJCIikucmVhZFBhcnRpdGlvbnMoIkIiLCJBIikuY3JlYXRlKCkpOwogCiAgICAgICAgIGZpbmFsIFZlcnRleCB2ID0gZ092ZXJBLmFkZFYoKS5wcm9wZXJ0eSgiYW55IiwgInRoaW5nIikucHJvcGVydHkoInNvbWUiLCAidGhpbmciKS5uZXh0KCk7CiAgICAgICAgIGZpbmFsIFZlcnRleCBsYWJlbGxlZFYgPSBnT3ZlckEuYWRkVigicGVyc29uIikucHJvcGVydHkoIm5hbWUiLCAidGhpbmciKS5wcm9wZXJ0eSgidGhhdCIsICJ0aGluZyIpLm5leHQoKTsKQEAgLTE4OSw3ICsxODksNyBAQAogICAgIHB1YmxpYyB2b2lkIHNob3VsZEhpZGVQYXJ0aXRpb25LZXlGb3JWYWx1ZXMoKSB7CiAgICAgICAgIGZpbmFsIEdyYXBoVHJhdmVyc2FsU291cmNlIGdPdmVyQSA9IGcud2l0aFN0cmF0ZWdpZXMoUGFydGl0aW9uU3RyYXRlZ3kuYnVpbGQoKQogICAgICAgICAgICAgICAgIC5pbmNsdWRlTWV0YVByb3BlcnRpZXModHJ1ZSkKLSAgICAgICAgICAgICAgICAucGFydGl0aW9uS2V5KHBhcnRpdGlvbikud3JpdGVQYXJ0aXRpb24oIkEiKS5hZGRSZWFkUGFydGl0aW9uKCJBIikuY3JlYXRlKCkpOworICAgICAgICAgICAgICAgIC5wYXJ0aXRpb25LZXkocGFydGl0aW9uKS53cml0ZVBhcnRpdGlvbigiQSIpLnJlYWRQYXJ0aXRpb25zKCJBIikuY3JlYXRlKCkpOwogICAgICAgICBmaW5hbCBWZXJ0ZXggdiA9IGdPdmVyQS5hZGRWKCkucHJvcGVydHkoImFueSIsICJ0aGluZyIpLm5leHQoKTsKIAogICAgICAgICB0cnkgewpAQCAtMjIwLDcgKzIyMCw3IEBACiAgICAgcHVibGljIHZvaWQgc2hvdWxkSGlkZVBhcnRpdGlvbktleUZvclByb3BlcnRpZXMoKSB7CiAgICAgICAgIGZpbmFsIEdyYXBoVHJhdmVyc2FsU291cmNlIGdPdmVyQSA9IGcud2l0aFN0cmF0ZWdpZXMoUGFydGl0aW9uU3RyYXRlZ3kuYnVpbGQoKQogICAgICAgICAgICAgICAgIC5pbmNsdWRlTWV0YVByb3BlcnRpZXModHJ1ZSkKLSAgICAgICAgICAgICAgICAucGFydGl0aW9uS2V5KHBhcnRpdGlvbikud3JpdGVQYXJ0aXRpb24oIkEiKS5hZGRSZWFkUGFydGl0aW9uKCJBIikuY3JlYXRlKCkpOworICAgICAgICAgICAgICAgIC5wYXJ0aXRpb25LZXkocGFydGl0aW9uKS53cml0ZVBhcnRpdGlvbigiQSIpLnJlYWRQYXJ0aXRpb25zKCJBIikuY3JlYXRlKCkpOwogICAgICAgICBmaW5hbCBWZXJ0ZXggdiA9IGdPdmVyQS5hZGRWKCkucHJvcGVydHkoImFueSIsICJ0aGluZyIpLm5leHQoKTsKIAogICAgICAgICB0cnkgewpAQCAtMjYyLDcgKzI2Miw3IEBACiAgICAgcHVibGljIHZvaWQgc2hvdWxkSGlkZVBhcnRpdGlvbktleUZvclByb3BlcnR5TWFwV2l0aEVtcHR5S2V5cygpIHsKICAgICAgICAgZmluYWwgR3JhcGhUcmF2ZXJzYWxTb3VyY2UgZ092ZXJBID0gZy53aXRoU3RyYXRlZ2llcyhQYXJ0aXRpb25TdHJhdGVneS5idWlsZCgpCiAgICAgICAgICAgICAgICAgLmluY2x1ZGVNZXRhUHJvcGVydGllcyh0cnVlKQotICAgICAgICAgICAgICAgIC5wYXJ0aXRpb25LZXkocGFydGl0aW9uKS53cml0ZVBhcnRpdGlvbigiQSIpLmFkZFJlYWRQYXJ0aXRpb24oIkEiKS5jcmVhdGUoKSk7CisgICAgICAgICAgICAgICAgLnBhcnRpdGlvbktleShwYXJ0aXRpb24pLndyaXRlUGFydGl0aW9uKCJBIikucmVhZFBhcnRpdGlvbnMoIkEiKS5jcmVhdGUoKSk7CiAgICAgICAgIGZpbmFsIFZlcnRleCB2ID0gZ092ZXJBLmFkZFYoKS5wcm9wZXJ0eSgiYW55IiwgInRoaW5nIikubmV4dCgpOwogCiAgICAgICAgIGFzc2VydEVxdWFscygxTCwgKGxvbmcpIGdPdmVyQS5WKHYpLnByb3BlcnR5TWFwKCkuY291bnQoKS5uZXh0KCkpOwpAQCAtMjc1LDcgKzI3NSw3IEBACiAgICAgcHVibGljIHZvaWQgc2hvdWxkSGlkZVBhcnRpdGlvbktleUZvclZhbHVlTWFwKCkgewogICAgICAgICBmaW5hbCBHcmFwaFRyYXZlcnNhbFNvdXJjZSBnT3ZlckEgPSBnLndpdGhTdHJhdGVnaWVzKFBhcnRpdGlvblN0cmF0ZWd5LmJ1aWxkKCkKICAgICAgICAgICAgICAgICAuaW5jbHVkZU1ldGFQcm9wZXJ0aWVzKHRydWUpCi0gICAgICAgICAgICAgICAgLnBhcnRpdGlvbktleShwYXJ0aXRpb24pLndyaXRlUGFydGl0aW9uKCJBIikuYWRkUmVhZFBhcnRpdGlvbigiQSIpLmNyZWF0ZSgpKTsKKyAgICAgICAgICAgICAgICAucGFydGl0aW9uS2V5KHBhcnRpdGlvbikud3JpdGVQYXJ0aXRpb24oIkEiKS5yZWFkUGFydGl0aW9ucygiQSIpLmNyZWF0ZSgpKTsKICAgICAgICAgZmluYWwgVmVydGV4IHYgPSBnT3ZlckEuYWRkVigpLnByb3BlcnR5KCJhbnkiLCAidGhpbmciKS5uZXh0KCk7CiAKICAgICAgICAgdHJ5IHsKQEAgLTI5Miw3ICsyOTIsNyBAQAogICAgIHB1YmxpYyB2b2lkIHNob3VsZEhpZGVQYXJ0aXRpb25LZXlGb3JWYWx1ZU1hcFdpdGhFbXB0eUtleXMoKSB7CiAgICAgICAgIGZpbmFsIEdyYXBoVHJhdmVyc2FsU291cmNlIGdPdmVyQSA9IGcud2l0aFN0cmF0ZWdpZXMoUGFydGl0aW9uU3RyYXRlZ3kuYnVpbGQoKQogICAgICAgICAgICAgICAgIC5pbmNsdWRlTWV0YVByb3BlcnRpZXModHJ1ZSkKLSAgICAgICAgICAgICAgICAucGFydGl0aW9uS2V5KHBhcnRpdGlvbikud3JpdGVQYXJ0aXRpb24oIkEiKS5hZGRSZWFkUGFydGl0aW9uKCJBIikuY3JlYXRlKCkpOworICAgICAgICAgICAgICAgIC5wYXJ0aXRpb25LZXkocGFydGl0aW9uKS53cml0ZVBhcnRpdGlvbigiQSIpLnJlYWRQYXJ0aXRpb25zKCJBIikuY3JlYXRlKCkpOwogICAgICAgICBmaW5hbCBWZXJ0ZXggdiA9IGdPdmVyQS5hZGRWKCkucHJvcGVydHkoImFueSIsICJ0aGluZyIpLm5leHQoKTsKIAogICAgICAgICBhc3NlcnRFcXVhbHMoMUwsIChsb25nKSBnT3ZlckEuVih2KS52YWx1ZU1hcCgpLmNvdW50KCkubmV4dCgpKTsKQEAgLTMwMyw3ICszMDMsNyBAQAogICAgIEBGZWF0dXJlUmVxdWlyZW1lbnRTZXQoRmVhdHVyZVJlcXVpcmVtZW50U2V0LlBhY2thZ2UuU0lNUExFKQogICAgIHB1YmxpYyB2b2lkIHNob3VsZEFwcGVuZFBhcnRpdGlvblRvRWRnZSgpIHsKICAgICAgICAgZmluYWwgUGFydGl0aW9uU3RyYXRlZ3kgcGFydGl0aW9uU3RyYXRlZ3kgPSBQYXJ0aXRpb25TdHJhdGVneS5idWlsZCgpCi0gICAgICAgICAgICAgICAgLnBhcnRpdGlvbktleShwYXJ0aXRpb24pLndyaXRlUGFydGl0aW9uKCJBIikuYWRkUmVhZFBhcnRpdGlvbigiQSIpLmNyZWF0ZSgpOworICAgICAgICAgICAgICAgIC5wYXJ0aXRpb25LZXkocGFydGl0aW9uKS53cml0ZVBhcnRpdGlvbigiQSIpLnJlYWRQYXJ0aXRpb25zKCJBIikuY3JlYXRlKCk7CiAgICAgICAgIGZpbmFsIEdyYXBoVHJhdmVyc2FsU291cmNlIHNvdXJjZSA9IGcud2l0aFN0cmF0ZWdpZXMocGFydGl0aW9uU3RyYXRlZ3kpOwogICAgICAgICBmaW5hbCBWZXJ0ZXggdjEgPSBzb3VyY2UuYWRkVigpLnByb3BlcnR5KCJhbnkiLCAidGhpbmciKS5uZXh0KCk7CiAgICAgICAgIGZpbmFsIFZlcnRleCB2MiA9IHNvdXJjZS5hZGRWKCkucHJvcGVydHkoInNvbWUiLCAidGhpbmciKS5uZXh0KCk7CkBAIC0zMzMsMTUgKzMzMywxNSBAQAogICAgIEBGZWF0dXJlUmVxdWlyZW1lbnRTZXQoRmVhdHVyZVJlcXVpcmVtZW50U2V0LlBhY2thZ2UuVkVSVElDRVNfT05MWSkKICAgICBwdWJsaWMgdm9pZCBzaG91bGRXcml0ZVZlcnRpY2VzVG9NdWx0aXBsZVBhcnRpdGlvbnMoKSB7CiAgICAgICAgIGZpbmFsIFBhcnRpdGlvblN0cmF0ZWd5IHBhcnRpdGlvblN0cmF0ZWd5QUEgPSBQYXJ0aXRpb25TdHJhdGVneS5idWlsZCgpCi0gICAgICAgICAgICAgICAgLnBhcnRpdGlvbktleShwYXJ0aXRpb24pLndyaXRlUGFydGl0aW9uKCJBIikuYWRkUmVhZFBhcnRpdGlvbigiQSIpLmNyZWF0ZSgpOworICAgICAgICAgICAgICAgIC5wYXJ0aXRpb25LZXkocGFydGl0aW9uKS53cml0ZVBhcnRpdGlvbigiQSIpLnJlYWRQYXJ0aXRpb25zKCJBIikuY3JlYXRlKCk7CiAgICAgICAgIGZpbmFsIEdyYXBoVHJhdmVyc2FsU291cmNlIHNvdXJjZUFBID0gZy53aXRoU3RyYXRlZ2llcyhwYXJ0aXRpb25TdHJhdGVneUFBKTsKIAogICAgICAgICBmaW5hbCBQYXJ0aXRpb25TdHJhdGVneSBwYXJ0aXRpb25TdHJhdGVneUJBID0gUGFydGl0aW9uU3RyYXRlZ3kuYnVpbGQoKQotICAgICAgICAgICAgICAgIC5wYXJ0aXRpb25LZXkocGFydGl0aW9uKS53cml0ZVBhcnRpdGlvbigiQiIpLmFkZFJlYWRQYXJ0aXRpb24oIkEiKS5jcmVhdGUoKTsKKyAgICAgICAgICAgICAgICAucGFydGl0aW9uS2V5KHBhcnRpdGlvbikud3JpdGVQYXJ0aXRpb24oIkIiKS5yZWFkUGFydGl0aW9ucygiQSIpLmNyZWF0ZSgpOwogICAgICAgICBmaW5hbCBHcmFwaFRyYXZlcnNhbFNvdXJjZSBzb3VyY2VCQSA9IGcud2l0aFN0cmF0ZWdpZXMocGFydGl0aW9uU3RyYXRlZ3lCQSk7CiAKICAgICAgICAgZmluYWwgUGFydGl0aW9uU3RyYXRlZ3kgcGFydGl0aW9uU3RyYXRlZ3lCQiA9IFBhcnRpdGlvblN0cmF0ZWd5LmJ1aWxkKCkKLSAgICAgICAgICAgICAgICAucGFydGl0aW9uS2V5KHBhcnRpdGlvbikud3JpdGVQYXJ0aXRpb24oIkIiKS5hZGRSZWFkUGFydGl0aW9uKCJCIikuY3JlYXRlKCk7CisgICAgICAgICAgICAgICAgLnBhcnRpdGlvbktleShwYXJ0aXRpb24pLndyaXRlUGFydGl0aW9uKCJCIikucmVhZFBhcnRpdGlvbnMoIkIiKS5jcmVhdGUoKTsKICAgICAgICAgZmluYWwgR3JhcGhUcmF2ZXJzYWxTb3VyY2Ugc291cmNlQkIgPSBnLndpdGhTdHJhdGVnaWVzKHBhcnRpdGlvblN0cmF0ZWd5QkIpOwogCiAgICAgICAgIGZpbmFsIFBhcnRpdGlvblN0cmF0ZWd5IHBhcnRpdGlvblN0cmF0ZWd5QkFCID0gUGFydGl0aW9uU3RyYXRlZ3kuYnVpbGQoKQpAQCAtMzcwLDcgKzM3MCw3IEBACiAgICAgQEZlYXR1cmVSZXF1aXJlbWVudFNldChGZWF0dXJlUmVxdWlyZW1lbnRTZXQuUGFja2FnZS5WRVJUSUNFU19PTkxZKQogICAgIHB1YmxpYyB2b2lkIHNob3VsZFRocm93RXhjZXB0aW9uT25WSW5EaWZmZXJlbnRQYXJ0aXRpb24oKSB7CiAgICAgICAgIGZpbmFsIFBhcnRpdGlvblN0cmF0ZWd5IHBhcnRpdGlvblN0cmF0ZWd5QUEgPSBQYXJ0aXRpb25TdHJhdGVneS5idWlsZCgpCi0gICAgICAgICAgICAgICAgLnBhcnRpdGlvbktleShwYXJ0aXRpb24pLndyaXRlUGFydGl0aW9uKCJBIikuYWRkUmVhZFBhcnRpdGlvbigiQSIpLmNyZWF0ZSgpOworICAgICAgICAgICAgICAgIC5wYXJ0aXRpb25LZXkocGFydGl0aW9uKS53cml0ZVBhcnRpdGlvbigiQSIpLnJlYWRQYXJ0aXRpb25zKCJBIikuY3JlYXRlKCk7CiAgICAgICAgIGZpbmFsIEdyYXBoVHJhdmVyc2FsU291cmNlIHNvdXJjZUFBID0gZy53aXRoU3RyYXRlZ2llcyhwYXJ0aXRpb25TdHJhdGVneUFBKTsKIAogICAgICAgICBmaW5hbCBQYXJ0aXRpb25TdHJhdGVneSBwYXJ0aXRpb25TdHJhdGVneUEgPSBQYXJ0aXRpb25TdHJhdGVneS5idWlsZCgpCkBAIC0zOTIsNyArMzkyLDcgQEAKICAgICBARmVhdHVyZVJlcXVpcmVtZW50U2V0KEZlYXR1cmVSZXF1aXJlbWVudFNldC5QYWNrYWdlLlNJTVBMRSkKICAgICBwdWJsaWMgdm9pZCBzaG91bGRUaHJvd0V4Y2VwdGlvbk9uRUluRGlmZmVyZW50UGFydGl0aW9uKCkgewogICAgICAgICBmaW5hbCBQYXJ0aXRpb25TdHJhdGVneSBwYXJ0aXRpb25TdHJhdGVneUFBID0gUGFydGl0aW9uU3RyYXRlZ3kuYnVpbGQoKQotICAgICAgICAgICAgICAgIC5wYXJ0aXRpb25LZXkocGFydGl0aW9uKS53cml0ZVBhcnRpdGlvbigiQSIpLmFkZFJlYWRQYXJ0aXRpb24oIkEiKS5jcmVhdGUoKTsKKyAgICAgICAgICAgICAgICAucGFydGl0aW9uS2V5KHBhcnRpdGlvbikud3JpdGVQYXJ0aXRpb24oIkEiKS5yZWFkUGFydGl0aW9ucygiQSIpLmNyZWF0ZSgpOwogICAgICAgICBmaW5hbCBHcmFwaFRyYXZlcnNhbFNvdXJjZSBzb3VyY2VBQSA9IGcud2l0aFN0cmF0ZWdpZXMocGFydGl0aW9uU3RyYXRlZ3lBQSk7CiAKICAgICAgICAgZmluYWwgUGFydGl0aW9uU3RyYXRlZ3kgcGFydGl0aW9uU3RyYXRlZ3lBID0gUGFydGl0aW9uU3RyYXRlZ3kuYnVpbGQoKQpAQCAtNDIzLDcgKzQyMyw3IEBACiAgICAgICAgIGZpbmFsIEdyYXBoVHJhdmVyc2FsU291cmNlIHNvdXJjZUJBID0gZy53aXRoU3RyYXRlZ2llcyhwYXJ0aXRpb25TdHJhdGVneUJBKTsKIAogICAgICAgICBmaW5hbCBQYXJ0aXRpb25TdHJhdGVneSBwYXJ0aXRpb25TdHJhdGVneUNBQiA9IFBhcnRpdGlvblN0cmF0ZWd5LmJ1aWxkKCkKLSAgICAgICAgICAgICAgICAucGFydGl0aW9uS2V5KHBhcnRpdGlvbikud3JpdGVQYXJ0aXRpb24oIkMiKS5hZGRSZWFkUGFydGl0aW9uKCJBIikuYWRkUmVhZFBhcnRpdGlvbigiQiIpLmNyZWF0ZSgpOworICAgICAgICAgICAgICAgIC5wYXJ0aXRpb25LZXkocGFydGl0aW9uKS53cml0ZVBhcnRpdGlvbigiQyIpLnJlYWRQYXJ0aXRpb25zKCJBIiwiQiIpLmNyZWF0ZSgpOwogICAgICAgICBmaW5hbCBHcmFwaFRyYXZlcnNhbFNvdXJjZSBzb3VyY2VDQUIgPSBnLndpdGhTdHJhdGVnaWVzKHBhcnRpdGlvblN0cmF0ZWd5Q0FCKTsKIAogICAgICAgICBmaW5hbCBQYXJ0aXRpb25TdHJhdGVneSBwYXJ0aXRpb25TdHJhdGVneUMgPSBQYXJ0aXRpb25TdHJhdGVneS5idWlsZCgpCkBAIC00NDEsNyArNDQxLDcgQEAKICAgICAgICAgICAgIHB1dChQYXJ0aXRpb25TdHJhdGVneS5SRUFEX1BBUlRJVElPTlMsIEFycmF5cy5hc0xpc3QoIkEiLCAiQiIsICJDIikpOwogICAgICAgICB9fSkpKTsKICAgICAgICAgZmluYWwgUGFydGl0aW9uU3RyYXRlZ3kgcGFydGl0aW9uU3RyYXRlZ3lDQyA9IFBhcnRpdGlvblN0cmF0ZWd5LmJ1aWxkKCkKLSAgICAgICAgICAgICAgICAucGFydGl0aW9uS2V5KHBhcnRpdGlvbikud3JpdGVQYXJ0aXRpb24oIkMiKS5hZGRSZWFkUGFydGl0aW9uKCJDIikuY3JlYXRlKCk7CisgICAgICAgICAgICAgICAgLnBhcnRpdGlvbktleShwYXJ0aXRpb24pLndyaXRlUGFydGl0aW9uKCJDIikucmVhZFBhcnRpdGlvbnMoIkMiKS5jcmVhdGUoKTsKICAgICAgICAgZmluYWwgR3JhcGhUcmF2ZXJzYWxTb3VyY2Ugc291cmNlQ0MgPSBnLndpdGhTdHJhdGVnaWVzKHBhcnRpdGlvblN0cmF0ZWd5Q0MpOwogCiAgICAgICAgIGZpbmFsIFBhcnRpdGlvblN0cmF0ZWd5IHBhcnRpdGlvblN0cmF0ZWd5Q0JDID0gUGFydGl0aW9uU3RyYXRlZ3kuYnVpbGQoKQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL1N1YmdyYXBoU3RyYXRlZ3lQcm9jZXNzVGVzdC5qYXZhIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL1N1YmdyYXBoU3RyYXRlZ3lQcm9jZXNzVGVzdC5qYXZhCmluZGV4IDkxNTI2NTUuLmNmMWM3OTAgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9TdWJncmFwaFN0cmF0ZWd5UHJvY2Vzc1Rlc3QuamF2YQorKysgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vU3ViZ3JhcGhTdHJhdGVneVByb2Nlc3NUZXN0LmphdmEKQEAgLTIyLDcgKzIyLDcgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkxvYWRHcmFwaFdpdGg7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLkFic3RyYWN0R3JlbWxpblByb2Nlc3NUZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5HcmVtbGluUHJvY2Vzc1J1bm5lcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MucmVtb3RlLlJlbW90ZUdyYXBoOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlJlbW90ZUdyYXBoOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuT3JkZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOwpAQCAtNzQsNyArNzQsNyBAQAogICAgIHB1YmxpYyB2b2lkIHNob3VsZEZpbHRlclZlcnRleENyaXRlcmlvbigpIHRocm93cyBFeGNlcHRpb24gewogICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCA/PiB2ZXJ0ZXhDcml0ZXJpb24gPSBoYXMoIm5hbWUiLCBQLndpdGhpbigiam9zaCIsICJsb3AiLCAicmlwcGxlIikpOwogCi0gICAgICAgIGZpbmFsIEdyYXBoVHJhdmVyc2FsU291cmNlIHNnID0gZy53aXRoU3RyYXRlZ2llcyhTdWJncmFwaFN0cmF0ZWd5LmJ1aWxkKCkudmVydGV4Q3JpdGVyaW9uKHZlcnRleENyaXRlcmlvbikuY3JlYXRlKCkpOworICAgICAgICBmaW5hbCBHcmFwaFRyYXZlcnNhbFNvdXJjZSBzZyA9IGcud2l0aFN0cmF0ZWdpZXMoU3ViZ3JhcGhTdHJhdGVneS5idWlsZCgpLnZlcnRpY2VzKHZlcnRleENyaXRlcmlvbikuY3JlYXRlKCkpOwogCiAgICAgICAgIC8vIHRocmVlIHZlcnRpY2VzIGFyZSBpbmNsdWRlZCBpbiB0aGUgc3ViZ3JhcGgKICAgICAgICAgYXNzZXJ0RXF1YWxzKDYsIGcuVigpLmNvdW50KCkubmV4dCgpLmxvbmdWYWx1ZSgpKTsKQEAgLTE2MCw3ICsxNjAsNyBAQAogICAgICAgICAgICAgICAgIGhhcygid2VpZ2h0IiwgMS4wZCkuaGFzTGFiZWwoImNyZWF0ZWQiKSAvLyAxMAogICAgICAgICApOwogCi0gICAgICAgIGZpbmFsIFN1YmdyYXBoU3RyYXRlZ3kgc3RyYXRlZ3kgPSBTdWJncmFwaFN0cmF0ZWd5LmJ1aWxkKCkuZWRnZUNyaXRlcmlvbihlZGdlQ3JpdGVyaW9uKS5jcmVhdGUoKTsKKyAgICAgICAgZmluYWwgU3ViZ3JhcGhTdHJhdGVneSBzdHJhdGVneSA9IFN1YmdyYXBoU3RyYXRlZ3kuYnVpbGQoKS5lZGdlcyhlZGdlQ3JpdGVyaW9uKS5jcmVhdGUoKTsKICAgICAgICAgZmluYWwgR3JhcGhUcmF2ZXJzYWxTb3VyY2Ugc2cgPSBnLndpdGhTdHJhdGVnaWVzKHN0cmF0ZWd5KTsKIAogICAgICAgICAvLyBhbGwgdmVydGljZXMgYXJlIGhlcmUKQEAgLTQyOSw3ICs0MjksNyBAQAogICAgICAgICAvLyB0aGlzIHdpbGwgZXhjbHVkZSAicGV0ZXIiCiAgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsID8+IHZlcnRleENyaXRlcmlvbiA9IGhhcygibmFtZSIsIFAud2l0aGluKCJyaXBwbGUiLCAiam9zaCIsICJtYXJrbyIpKTsKIAotICAgICAgICBmaW5hbCBHcmFwaFRyYXZlcnNhbFNvdXJjZSBzZyA9IGcud2l0aFN0cmF0ZWdpZXMoU3ViZ3JhcGhTdHJhdGVneS5idWlsZCgpLnZlcnRleENyaXRlcmlvbih2ZXJ0ZXhDcml0ZXJpb24pLmNyZWF0ZSgpKTsKKyAgICAgICAgZmluYWwgR3JhcGhUcmF2ZXJzYWxTb3VyY2Ugc2cgPSBnLndpdGhTdHJhdGVnaWVzKFN1YmdyYXBoU3RyYXRlZ3kuYnVpbGQoKS52ZXJ0aWNlcyh2ZXJ0ZXhDcml0ZXJpb24pLmNyZWF0ZSgpKTsKIAogICAgICAgICBhc3NlcnRFcXVhbHMoOSwgZy5WKCkuYXMoImEiKS5vdXQoKS5pbigpLmFzKCJiIikuZGVkdXAoImEiLCAiYiIpLmNvdW50KCkubmV4dCgpLmludFZhbHVlKCkpOwogICAgICAgICBhc3NlcnRFcXVhbHMoMiwgc2cuVigpLmFzKCJhIikub3V0KCkuaW4oKS5hcygiYiIpLmRlZHVwKCJhIiwgImIiKS5jb3VudCgpLm5leHQoKS5pbnRWYWx1ZSgpKTsKQEAgLTQ0Myw3ICs0NDMsNyBAQAogICAgIHB1YmxpYyB2b2lkIHNob3VsZEdldEV4Y2x1ZGVkVmVydGV4KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CiAgICAgICAgIGZpbmFsIFRyYXZlcnNhbDxWZXJ0ZXgsID8+IHZlcnRleENyaXRlcmlvbiA9IGhhcygibmFtZSIsIFAud2l0aGluKCJqb3NoIiwgImxvcCIsICJyaXBwbGUiKSk7CiAKLSAgICAgICAgZmluYWwgR3JhcGhUcmF2ZXJzYWxTb3VyY2Ugc2cgPSBnLndpdGhTdHJhdGVnaWVzKFN1YmdyYXBoU3RyYXRlZ3kuYnVpbGQoKS52ZXJ0ZXhDcml0ZXJpb24odmVydGV4Q3JpdGVyaW9uKS5jcmVhdGUoKSk7CisgICAgICAgIGZpbmFsIEdyYXBoVHJhdmVyc2FsU291cmNlIHNnID0gZy53aXRoU3RyYXRlZ2llcyhTdWJncmFwaFN0cmF0ZWd5LmJ1aWxkKCkudmVydGljZXModmVydGV4Q3JpdGVyaW9uKS5jcmVhdGUoKSk7CiAKICAgICAgICAgc2cuVihjb252ZXJ0VG9WZXJ0ZXhJZCgibWFya28iKSkubmV4dCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9UcmFuc2xhdGlvblN0cmF0ZWd5LmphdmEgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vVHJhbnNsYXRpb25TdHJhdGVneS5qYXZhCmluZGV4IDc3YWU4NzguLmZjZWNmOWUgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9UcmFuc2xhdGlvblN0cmF0ZWd5LmphdmEKKysrIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9kZWNvcmF0aW9uL1RyYW5zbGF0aW9uU3RyYXRlZ3kuamF2YQpAQCAtOTAsNyArOTAsNyBAQAogICAgICAgICAgICAgICAgIGZpbmFsIEJpbmRpbmdzIGJpbmRpbmdzID0gc2NyaXB0RW5naW5lLmNyZWF0ZUJpbmRpbmdzKCk7CiAgICAgICAgICAgICAgICAgYmluZGluZ3MucHV0QWxsKHNjcmlwdEVuZ2luZS5nZXRDb250ZXh0KCkuZ2V0QmluZGluZ3MoU2NyaXB0Q29udGV4dC5FTkdJTkVfU0NPUEUpKTsKICAgICAgICAgICAgICAgICBiaW5kaW5ncy5wdXQodGhpcy50cmFuc2xhdG9yLmdldFRyYXZlcnNhbFNvdXJjZSgpLnRvU3RyaW5nKCksIHRoaXMudHJhdmVyc2FsU291cmNlKTsKLSAgICAgICAgICAgICAgICB0cmFuc2xhdGVkVHJhdmVyc2FsID0gKFRyYXZlcnNhbC5BZG1pbjw/LCA/Pikgc2NyaXB0RW5naW5lLmV2YWwoYnl0ZWNvZGUsIGJpbmRpbmdzKTsKKyAgICAgICAgICAgICAgICB0cmFuc2xhdGVkVHJhdmVyc2FsID0gKFRyYXZlcnNhbC5BZG1pbjw/LCA/Pikgc2NyaXB0RW5naW5lLmV2YWwoYnl0ZWNvZGUsIGJpbmRpbmdzLCB0aGlzLnRyYW5zbGF0b3IuZ2V0VHJhdmVyc2FsU291cmNlKCkudG9TdHJpbmcoKSk7CiAgICAgICAgICAgICB9IGNhdGNoIChmaW5hbCBFeGNlcHRpb24gZSkgewogICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oZS5nZXRNZXNzYWdlKCksIGUpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS92ZXJpZmljYXRpb24vUmVhZE9ubHlTdHJhdGVneVByb2Nlc3NUZXN0LmphdmEgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L3ZlcmlmaWNhdGlvbi9SZWFkT25seVN0cmF0ZWd5UHJvY2Vzc1Rlc3QuamF2YQppbmRleCA1ZDk3YjZjLi4wZmE0YjBjIDEwMDY0NAotLS0gYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L3ZlcmlmaWNhdGlvbi9SZWFkT25seVN0cmF0ZWd5UHJvY2Vzc1Rlc3QuamF2YQorKysgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L3ZlcmlmaWNhdGlvbi9SZWFkT25seVN0cmF0ZWd5UHJvY2Vzc1Rlc3QuamF2YQpAQCAtMjAsNyArMjAsNyBAQAogCiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5GZWF0dXJlUmVxdWlyZW1lbnQ7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLkFic3RyYWN0R3JlbWxpblByb2Nlc3NUZXN0OwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5yZW1vdGUuUmVtb3RlR3JhcGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuUmVtb3RlR3JhcGg7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguR3JhcGhUcmF2ZXJzYWxTb3VyY2U7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGg7CmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9HcmFwaFRlc3QuamF2YSBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL0dyYXBoVGVzdC5qYXZhCmluZGV4IGExNDkwY2MuLjk1ZDVhZGMgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL0dyYXBoVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL0dyYXBoVGVzdC5qYXZhCkBAIC00OSwxMCArNDksMTAgQEAKIGltcG9ydCBzdGF0aWMgb3JnLmhhbWNyZXN0LkNvcmVNYXRjaGVycy5pbnN0YW5jZU9mOwogaW1wb3J0IHN0YXRpYyBvcmcuaGFtY3Jlc3QuQ29yZU1hdGNoZXJzLmlzOwogaW1wb3J0IHN0YXRpYyBvcmcuaGFtY3Jlc3QuQ29yZU1hdGNoZXJzLm5vdDsKK2ltcG9ydCBzdGF0aWMgb3JnLmhhbWNyZXN0Lk1hdGNoZXJBc3NlcnQuYXNzZXJ0VGhhdDsKIGltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRFcXVhbHM7CiBpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RmFsc2U7CiBpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0Tm90TnVsbDsKLWltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRUaGF0OwogaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydFRydWU7CiBpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuZmFpbDsKIApAQCAtMTIzLDExICsxMjMsMTIgQEAKICAgICBAVGVzdAogICAgIEBGZWF0dXJlUmVxdWlyZW1lbnQoZmVhdHVyZUNsYXNzID0gR3JhcGguRmVhdHVyZXMuVmVydGV4RmVhdHVyZXMuY2xhc3MsIGZlYXR1cmUgPSBHcmFwaC5GZWF0dXJlcy5WZXJ0ZXhGZWF0dXJlcy5GRUFUVVJFX0FERF9WRVJUSUNFUykKICAgICBARmVhdHVyZVJlcXVpcmVtZW50KGZlYXR1cmVDbGFzcyA9IEdyYXBoLkZlYXR1cmVzLlZlcnRleEZlYXR1cmVzLmNsYXNzLCBmZWF0dXJlID0gR3JhcGguRmVhdHVyZXMuVmVydGV4RmVhdHVyZXMuRkVBVFVSRV9VU0VSX1NVUFBMSUVEX0lEUykKKyAgICBARmVhdHVyZVJlcXVpcmVtZW50KGZlYXR1cmVDbGFzcyA9IEdyYXBoLkZlYXR1cmVzLlZlcnRleEZlYXR1cmVzLmNsYXNzLCBmZWF0dXJlID0gR3JhcGguRmVhdHVyZXMuVmVydGV4RmVhdHVyZXMuRkVBVFVSRV9VUFNFUlQsIHN1cHBvcnRlZCA9IGZhbHNlKQogICAgIHB1YmxpYyB2b2lkIHNob3VsZEhhdmVFeGNlcHRpb25Db25zaXN0ZW5jeVdoZW5Bc3NpZ25pbmdTYW1lSWRPblZlcnRleCgpIHsKICAgICAgICAgZmluYWwgT2JqZWN0IG8gPSBncmFwaFByb3ZpZGVyLmNvbnZlcnRJZCgiMSIsIFZlcnRleC5jbGFzcyk7Ci0gICAgICAgIGdyYXBoLmFkZFZlcnRleChULmlkLCBvKTsKKyAgICAgICAgZ3JhcGguYWRkVmVydGV4KFQuaWQsIG8sICJuYW1lIiwgIm1hcmtvIik7CiAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBncmFwaC5hZGRWZXJ0ZXgoVC5pZCwgbyk7CisgICAgICAgICAgICBncmFwaC5hZGRWZXJ0ZXgoVC5pZCwgbywgIm5hbWUiLCAic3RlcGhlbiIpOwogICAgICAgICAgICAgZmFpbCgiQXNzaWduaW5nIHRoZSBzYW1lIElEIHRvIGFuIEVsZW1lbnQgc2hvdWxkIHRocm93IGFuIGV4Y2VwdGlvbiIpOwogICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKICAgICAgICAgICAgIGFzc2VydFRoYXQoZXgsIGluc3RhbmNlT2YoR3JhcGguRXhjZXB0aW9ucy52ZXJ0ZXhXaXRoSWRBbHJlYWR5RXhpc3RzKDApLmdldENsYXNzKCkpKTsKQEAgLTEzNyw2ICsxMzgsMjkgQEAKICAgICBAVGVzdAogICAgIEBGZWF0dXJlUmVxdWlyZW1lbnQoZmVhdHVyZUNsYXNzID0gR3JhcGguRmVhdHVyZXMuVmVydGV4RmVhdHVyZXMuY2xhc3MsIGZlYXR1cmUgPSBHcmFwaC5GZWF0dXJlcy5WZXJ0ZXhGZWF0dXJlcy5GRUFUVVJFX0FERF9WRVJUSUNFUykKICAgICBARmVhdHVyZVJlcXVpcmVtZW50KGZlYXR1cmVDbGFzcyA9IEdyYXBoLkZlYXR1cmVzLlZlcnRleEZlYXR1cmVzLmNsYXNzLCBmZWF0dXJlID0gR3JhcGguRmVhdHVyZXMuVmVydGV4RmVhdHVyZXMuRkVBVFVSRV9VU0VSX1NVUFBMSUVEX0lEUykKKyAgICBARmVhdHVyZVJlcXVpcmVtZW50KGZlYXR1cmVDbGFzcyA9IEdyYXBoLkZlYXR1cmVzLlZlcnRleEZlYXR1cmVzLmNsYXNzLCBmZWF0dXJlID0gR3JhcGguRmVhdHVyZXMuVmVydGV4RmVhdHVyZXMuRkVBVFVSRV9VUFNFUlQpCisgICAgcHVibGljIHZvaWQgc2hvdWxkVXBzZXJ0V2hlbkFzc2lnbmluZ1NhbWVJZE9uVmVydGV4KCkgeworICAgICAgICBmaW5hbCBPYmplY3QgbyA9IGdyYXBoUHJvdmlkZXIuY29udmVydElkKCIxIiwgVmVydGV4LmNsYXNzKTsKKyAgICAgICAgZ3JhcGguYWRkVmVydGV4KFQuaWQsIG8sICJuYW1lIiwgIm1hcmtvIik7CisgICAgICAgIHRyeUNvbW1pdChncmFwaCwgZ3JhcGggLT4geworICAgICAgICAgICAgZmluYWwgVmVydGV4IHYgPSBncmFwaC52ZXJ0aWNlcyhvKS5uZXh0KCk7CisgICAgICAgICAgICBhc3NlcnRFcXVhbHMobywgdi5pZCgpKTsKKyAgICAgICAgICAgIGFzc2VydEVxdWFscygibWFya28iLCB2LnZhbHVlKCJuYW1lIikpOworICAgICAgICAgICAgYXNzZXJ0VmVydGV4RWRnZUNvdW50cyhncmFwaCwgMSwgMCk7CisgICAgICAgIH0pOworCisgICAgICAgIGdyYXBoLmFkZFZlcnRleChULmlkLCBvLCAibmFtZSIsICJzdGVwaGVuIik7CisgICAgICAgIHRyeUNvbW1pdChncmFwaCwgZ3JhcGggLT4geworICAgICAgICAgICAgZmluYWwgVmVydGV4IHYgPSBncmFwaC52ZXJ0aWNlcyhvKS5uZXh0KCk7CisgICAgICAgICAgICBhc3NlcnRFcXVhbHMobywgdi5pZCgpKTsKKyAgICAgICAgICAgIGFzc2VydEVxdWFscygic3RlcGhlbiIsIHYudmFsdWUoIm5hbWUiKSk7CisgICAgICAgICAgICBhc3NlcnRWZXJ0ZXhFZGdlQ291bnRzKGdyYXBoLCAxLCAwKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBARmVhdHVyZVJlcXVpcmVtZW50KGZlYXR1cmVDbGFzcyA9IEdyYXBoLkZlYXR1cmVzLlZlcnRleEZlYXR1cmVzLmNsYXNzLCBmZWF0dXJlID0gR3JhcGguRmVhdHVyZXMuVmVydGV4RmVhdHVyZXMuRkVBVFVSRV9BRERfVkVSVElDRVMpCisgICAgQEZlYXR1cmVSZXF1aXJlbWVudChmZWF0dXJlQ2xhc3MgPSBHcmFwaC5GZWF0dXJlcy5WZXJ0ZXhGZWF0dXJlcy5jbGFzcywgZmVhdHVyZSA9IEdyYXBoLkZlYXR1cmVzLlZlcnRleEZlYXR1cmVzLkZFQVRVUkVfVVNFUl9TVVBQTElFRF9JRFMpCiAgICAgQEZlYXR1cmVSZXF1aXJlbWVudChmZWF0dXJlQ2xhc3MgPSBHcmFwaC5GZWF0dXJlcy5WZXJ0ZXhGZWF0dXJlcy5jbGFzcywgZmVhdHVyZSA9IEdyYXBoLkZlYXR1cmVzLlZlcnRleEZlYXR1cmVzLkZFQVRVUkVfTlVNRVJJQ19JRFMpCiAgICAgcHVibGljIHZvaWQgc2hvdWxkQWRkVmVydGV4V2l0aFVzZXJTdXBwbGllZE51bWVyaWNJZCgpIHsKICAgICAgICAgZ3JhcGguYWRkVmVydGV4KFQuaWQsIDEwMDBsKTsKZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL1JlbW90ZUdyYXBoLmphdmEgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9SZW1vdGVHcmFwaC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1NDExOGIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9SZW1vdGVHcmFwaC5qYXZhCkBAIC0wLDAgKzEsMjUwIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmU7CisKK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29uZmlndXJhdGlvbi5Db25maWd1cmF0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5jb25maWd1cmF0aW9uLlByb3BlcnRpZXNDb25maWd1cmF0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uR3JhcGhQcm92aWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuR3JhcGhDb21wdXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MucmVtb3RlLlJlbW90ZUNvbm5lY3Rpb247CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5Bbm9ueW1vdXNUcmF2ZXJzYWxTb3VyY2U7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWxTb3VyY2U7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5HcmFwaEZhY3Rvcnk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5TdHJpbmdGYWN0b3J5OworCitpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuQ29uc3RydWN0b3I7CitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKKworLyoqCisgKiB7QGNvZGUgUmVtb3RlR3JhcGh9IGlzIG9ubHkgcmVxdWlyZWQgZm9yIGludGVncmF0aW5nIHdpdGggdGhlIHRlc3Qgc3VpdGUgYXMgdGhlcmUgbXVzdCBiZSBhIHtAbGluayBHcmFwaH0gaW5zdGFuY2UKKyAqIGZvciB0aGUgdGVzdCBzdWl0ZSB0byBiaW5kIHRvLiBUZXN0IHN1aXRlcyB0aGF0IHVzZSB0aGlzIG11c3QgZW5zdXJlIHRoYXQgdGhlIHtAbGluayBUcmF2ZXJzYWxTb3VyY2V9IGJlCisgKiBnZW5lcmF0ZWQgZnJvbSB0aGVpciB7QGxpbmsgR3JhcGhQcm92aWRlcn0gaW4gdmlhIHtAbGluayBBbm9ueW1vdXNUcmF2ZXJzYWxTb3VyY2Ujd2l0aFJlbW90ZShSZW1vdGVDb25uZWN0aW9uKX0gb3IKKyAqIHNpbWlsYXIgb3ZlcmxvYWQuIFNlZSB7QGNvZGUgUmVtb3RlR3JhcGhQcm92aWRlcn0gaW4gdGhlIGdyZW1saW4tc2VydmVyIG1vZHVsZSBmb3IgYW4gZXhhbXBsZS4KKyAqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK0BHcmFwaC5PcHRJbihHcmFwaC5PcHRJbi5TVUlURV9QUk9DRVNTX1NUQU5EQVJEKQorQEdyYXBoLk9wdEluKEdyYXBoLk9wdEluLlNVSVRFX1BST0NFU1NfQ09NUFVURVIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuU2hvcnRlc3RQYXRoVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICIqIiwKKyAgICAgICAgcmVhc29uID0gImh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvVElOS0VSUE9QLTE5NzYiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLkNvbm5lY3RlZENvbXBvbmVudFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiKiIsCisgICAgICAgIHJlYXNvbiA9ICJodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL1RJTktFUlBPUC0xOTc2IikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5Db3JlVHJhdmVyc2FsVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICIqIiwKKyAgICAgICAgcmVhc29uID0gIlRoZSB0ZXN0IHN1aXRlIGRvZXMgbm90IHN1cHBvcnQgcHJvZmlsaW5nIG9yIGxhbWJkYXMgYW5kIGZvciBncm9vdnkgdGVzdHM6ICdDb3VsZCBub3QgbG9jYXRlIG1ldGhvZDogR3JhcGhUcmF2ZXJzYWxTb3VyY2Uud2l0aFN0cmF0ZWdpZXMoW3t0cmF2ZXJzYWxDYXRlZ29yeT1pbnRlcmZhY2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWxTdHJhdGVneSREZWNvcmF0aW9uU3RyYXRlZ3l9XSknIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5Qcm9ncmFtVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICIqIiwKKyAgICAgICAgcmVhc29uID0gIlJlbW90ZUdyYXBoIHJldHJpZXZlcyBkZXRhY2hlZCB2ZXJ0aWNlcyB0aGF0IGNhbid0IGJlIGF0dGFjaGVkIHRvIGEgcmVtb3RlIE9MQVAgZ3JhcGgiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uRWxlbWVudElkU3RyYXRlZ3lQcm9jZXNzVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICIqIiwKKyAgICAgICAgcmVhc29uID0gIlJlbW90ZUdyYXBoIGRvZXMgbm90IHN1cHBvcnQgRWxlbWVudElkU3RyYXRlZ3kgYXQgdGhpcyB0aW1lIC0gaXQgcmVxdWlyZXMgYSBsYW1iZGEgaW4gY29uc3RydWN0aW9uIHdoaWNoIGlzIG5vdCBzZXJpYWxpemFibGUiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uRXZlbnRTdHJhdGVneVByb2Nlc3NUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gIioiLAorICAgICAgICByZWFzb24gPSAiUmVtb3RlR3JhcGggZG9lcyBub3Qgc3VwcG9ydCBFdmVudFN0cmF0ZWd5IGF0IHRoaXMgdGltZSAtIHNvbWUgb2YgaXRzIG1lbWJlcnMgYXJlIG5vdCBzZXJpYWxpemFibGUiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb24uUGFydGl0aW9uU3RyYXRlZ3lQcm9jZXNzVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICIqIiwKKyAgICAgICAgcmVhc29uID0gIlJlbW90ZUdyYXBoIGRvZXMgbm90IHN1cHBvcnQgUGFydGl0aW9uU3RyYXRlZ3kgYXQgdGhpcyB0aW1lIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLnJhbmtpbmcucGFnZXJhbmsuUGFnZVJhbmtWZXJ0ZXhQcm9ncmFtVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICIqIiwKKyAgICAgICAgcmVhc29uID0gIlJlbW90ZUdyYXBoIGRvZXMgbm90IHN1cHBvcnQgZGlyZWN0IEdyYXBoLmNvbXB1dGUoKSBhY2Nlc3MiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuc2VhcmNoLnBhdGguU2hvcnRlc3RQYXRoVmVydGV4UHJvZ3JhbVRlc3QiLAorICAgICAgICBtZXRob2QgPSAiKiIsCisgICAgICAgIHJlYXNvbiA9ICJSZW1vdGVHcmFwaCBkb2VzIG5vdCBzdXBwb3J0IGRpcmVjdCBHcmFwaC5jb21wdXRlKCkgYWNjZXNzIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLmJ1bGtsb2FkaW5nLkJ1bGtMb2FkZXJWZXJ0ZXhQcm9ncmFtVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICIqIiwKKyAgICAgICAgcmVhc29uID0gIlJlbW90ZUdyYXBoIGRvZXMgbm90IHN1cHBvcnQgZGlyZWN0IEdyYXBoLmNvbXB1dGUoKSBhY2Nlc3MiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuYnVsa2R1bXBpbmcuQnVsa0R1bXBlclZlcnRleFByb2dyYW1UZXN0IiwKKyAgICAgICAgbWV0aG9kID0gIioiLAorICAgICAgICByZWFzb24gPSAiUmVtb3RlR3JhcGggZG9lcyBub3Qgc3VwcG9ydCBkaXJlY3QgR3JhcGguY29tcHV0ZSgpIGFjY2VzcyIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5jbG9uZS5DbG9uZVZlcnRleFByb2dyYW1UZXN0IiwKKyAgICAgICAgbWV0aG9kID0gIioiLAorICAgICAgICByZWFzb24gPSAiUmVtb3RlR3JhcGggZG9lcyBub3Qgc3VwcG9ydCBkaXJlY3QgR3JhcGguY29tcHV0ZSgpIGFjY2VzcyIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5HcmFwaENvbXB1dGVyVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICIqIiwKKyAgICAgICAgcmVhc29uID0gIlJlbW90ZUdyYXBoIGRvZXMgbm90IHN1cHBvcnQgZGlyZWN0IEdyYXBoLmNvbXB1dGUoKSBhY2Nlc3MiKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbEludGVycnVwdGlvblRlc3QiLAorICAgICAgICBtZXRob2QgPSAiKiIsCisgICAgICAgIHJlYXNvbiA9ICJUaGUgaW50ZXJydXB0aW9uIG1vZGVsIGluIHRoZSB0ZXN0IGNhbid0IGd1YXJhbnRlZSBpbnRlcnJ1cHRpb24gYXQgdGhlIHJpZ2h0IHRpbWUgd2l0aCBSZW1vdGVHcmFwaC4iKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbEludGVycnVwdGlvbkNvbXB1dGVyVGVzdCIsCisgICAgICAgIG1ldGhvZCA9ICIqIiwKKyAgICAgICAgcmVhc29uID0gIlRoZSBpbnRlcnJ1cHRpb24gbW9kZWwgaW4gdGhlIHRlc3QgY2FuJ3QgZ3VhcmFudGVlIGludGVycnVwdGlvbiBhdCB0aGUgcmlnaHQgdGltZSB3aXRoIFJlbW90ZUdyYXBoLiIpCitwdWJsaWMgY2xhc3MgUmVtb3RlR3JhcGggaW1wbGVtZW50cyBHcmFwaCB7CisKKyAgICBwcml2YXRlIGZpbmFsIFJlbW90ZUNvbm5lY3Rpb24gY29ubmVjdGlvbjsKKyAgICBwcml2YXRlIGZpbmFsIENvbmZpZ3VyYXRpb24gY29uZjsKKworICAgIHByaXZhdGUgUmVtb3RlR3JhcGgoZmluYWwgUmVtb3RlQ29ubmVjdGlvbiBjb25uZWN0aW9uLCBmaW5hbCBDb25maWd1cmF0aW9uIGNvbmYpIHsKKyAgICAgICAgdGhpcy5jb25uZWN0aW9uID0gY29ubmVjdGlvbjsKKyAgICAgICAgdGhpcy5jb25mID0gY29uZjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgbmV3IHtAbGluayBSZW1vdGVHcmFwaH0gaW5zdGFuY2UgdXNpbmcgdGhlIHNwZWNpZmllZCBjb25maWd1cmF0aW9uLCB3aGljaCBhbGxvd3Mge0BsaW5rIFJlbW90ZUdyYXBofQorICAgICAqIHRvIGJlIGNvbXBsaWFudCB3aXRoIHtAbGluayBHcmFwaEZhY3Rvcnl9LiBFeHBlY3RzIGtleSBmb3Ige0BsaW5rIFJlbW90ZUNvbm5lY3Rpb24jR1JFTUxJTl9SRU1PVEVfQ09OTkVDVElPTl9DTEFTU30KKyAgICAgKiBhcyB3ZWxsIGFzIGFueSBjb25maWd1cmF0aW9uIHJlcXVpcmVkIGJ5IHRoZSB1bmRlcmx5aW5nIHtAbGluayBSZW1vdGVDb25uZWN0aW9ufSB3aGljaCB3aWxsIGJlIGluc3RhbnRpYXRlZC4KKyAgICAgKiBOb3RlIHRoYXQgdGhlIHtAY29kZSBDb25maWd1cmF0aW9ufSBvYmplY3QgaXMgcGFzc2VkIGRvd24gd2l0aG91dCBjaGFuZ2UgdG8gdGhlIGNyZWF0aW9uIG9mIHRoZQorICAgICAqIHtAbGluayBSZW1vdGVDb25uZWN0aW9ufSBpbnN0YW5jZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFJlbW90ZUdyYXBoIG9wZW4oZmluYWwgQ29uZmlndXJhdGlvbiBjb25mKSB7CisgICAgICAgIGlmICghY29uZi5jb250YWluc0tleShSZW1vdGVDb25uZWN0aW9uLkdSRU1MSU5fUkVNT1RFX0NPTk5FQ1RJT05fQ0xBU1MpKQorICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiQ29uZmlndXJhdGlvbiBtdXN0IGNvbnRhaW4gdGhlICciICsgUmVtb3RlQ29ubmVjdGlvbi5HUkVNTElOX1JFTU9URV9DT05ORUNUSU9OX0NMQVNTICsgIicga2V5Iik7CisKKyAgICAgICAgZmluYWwgUmVtb3RlQ29ubmVjdGlvbiByZW1vdGVDb25uZWN0aW9uOworICAgICAgICB0cnkgeworICAgICAgICAgICAgZmluYWwgQ2xhc3M8PyBleHRlbmRzIFJlbW90ZUNvbm5lY3Rpb24+IGNsYXp6ID0gQ2xhc3MuZm9yTmFtZShjb25mLmdldFN0cmluZyhSZW1vdGVDb25uZWN0aW9uLkdSRU1MSU5fUkVNT1RFX0NPTk5FQ1RJT05fQ0xBU1MpKS5hc1N1YmNsYXNzKFJlbW90ZUNvbm5lY3Rpb24uY2xhc3MpOworICAgICAgICAgICAgZmluYWwgQ29uc3RydWN0b3I8PyBleHRlbmRzIFJlbW90ZUNvbm5lY3Rpb24+IGN0b3IgPSBjbGF6ei5nZXRDb25zdHJ1Y3RvcihDb25maWd1cmF0aW9uLmNsYXNzKTsKKyAgICAgICAgICAgIHJlbW90ZUNvbm5lY3Rpb24gPSBjdG9yLm5ld0luc3RhbmNlKGNvbmYpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oZXgpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG5ldyBSZW1vdGVHcmFwaChyZW1vdGVDb25uZWN0aW9uLCBjb25mKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIFJlbW90ZUdyYXBoIG9wZW4oZmluYWwgU3RyaW5nIGNvbmZpZ0ZpbGUpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICByZXR1cm4gb3BlbihuZXcgUHJvcGVydGllc0NvbmZpZ3VyYXRpb24oY29uZmlnRmlsZSkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSBuZXcge0BsaW5rIFJlbW90ZUdyYXBofSBpbnN0YW5jZS4ge0BsaW5rIFJlbW90ZUdyYXBofSB3aWxsIGF0dGVtcHQgdG8gY2FsbCB0aGUKKyAgICAgKiB7QGxpbmsgUmVtb3RlQ29ubmVjdGlvbiNjbG9zZSgpfSBtZXRob2Qgd2hlbiB0aGUge0BsaW5rICNjbG9zZSgpfSBtZXRob2QgaXMgY2FsbGVkIG9uIHRoaXMgY2xhc3MuCisgICAgICoKKyAgICAgKiBAcGFyYW0gY29ubmVjdGlvbiB0aGUge0BsaW5rIFJlbW90ZUNvbm5lY3Rpb259IGluc3RhbmNlIHRvIHVzZQorICAgICAqICAgICAgICAgICAgICAgICAgIHtAbGluayBSZW1vdGVDb25uZWN0aW9ufQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgUmVtb3RlR3JhcGggb3BlbihmaW5hbCBSZW1vdGVDb25uZWN0aW9uIGNvbm5lY3Rpb24sIGZpbmFsIENvbmZpZ3VyYXRpb24gY29uZikgeworICAgICAgICByZXR1cm4gbmV3IFJlbW90ZUdyYXBoKGNvbm5lY3Rpb24sIGNvbmYpOworICAgIH0KKworICAgIHB1YmxpYyBSZW1vdGVDb25uZWN0aW9uIGdldENvbm5lY3Rpb24oKSB7CisgICAgICAgIHJldHVybiBjb25uZWN0aW9uOworICAgIH0KKworICAgIC8qKgorICAgICAqIENsb3NlcyB0aGUgdW5kZXJseWluZyB7QGxpbmsgUmVtb3RlQ29ubmVjdGlvbn0uCisgICAgICovCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgY2xvc2UoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgY29ubmVjdGlvbi5jbG9zZSgpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBWZXJ0ZXggYWRkVmVydGV4KGZpbmFsIE9iamVjdC4uLiBrZXlWYWx1ZXMpIHsKKyAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKFN0cmluZy5mb3JtYXQoIlJlbW90ZUdyYXBoIGlzIGEgcHJveHkgdG8gJXMgLSB0aGlzIG1ldGhvZCBpcyBub3Qgc3VwcG9ydGVkIiwgY29ubmVjdGlvbikpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyA8QyBleHRlbmRzIEdyYXBoQ29tcHV0ZXI+IEMgY29tcHV0ZShmaW5hbCBDbGFzczxDPiBncmFwaENvbXB1dGVyQ2xhc3MpIHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24geworICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oU3RyaW5nLmZvcm1hdCgiUmVtb3RlR3JhcGggaXMgYSBwcm94eSB0byAlcyAtIHRoaXMgbWV0aG9kIGlzIG5vdCBzdXBwb3J0ZWQiLCBjb25uZWN0aW9uKSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIEdyYXBoQ29tcHV0ZXIgY29tcHV0ZSgpIHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24geworICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oU3RyaW5nLmZvcm1hdCgiUmVtb3RlR3JhcGggaXMgYSBwcm94eSB0byAlcyAtIHRoaXMgbWV0aG9kIGlzIG5vdCBzdXBwb3J0ZWQiLCBjb25uZWN0aW9uKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhpcyBtZXRob2QgcmV0dXJucyBhbiBlbXB0eSB7QGxpbmsgSXRlcmF0b3J9IC0gaXQgaXMgbm90IG1lYW50IHRvIGJlIGNhbGxlZCBkaXJlY3RseS4KKyAgICAgKi8KKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgSXRlcmF0b3I8VmVydGV4PiB2ZXJ0aWNlcyhmaW5hbCBPYmplY3QuLi4gdmVydGV4SWRzKSB7CisgICAgICAgIHJldHVybiBDb2xsZWN0aW9ucy5lbXB0eUl0ZXJhdG9yKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhpcyBtZXRob2QgcmV0dXJucyBhbiBlbXB0eSB7QGxpbmsgSXRlcmF0b3J9IC0gaXQgaXMgbm90IG1lYW50IHRvIGJlIGNhbGxlZCBkaXJlY3RseS4KKyAgICAgKi8KKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgSXRlcmF0b3I8RWRnZT4gZWRnZXMoZmluYWwgT2JqZWN0Li4uIGVkZ2VJZHMpIHsKKyAgICAgICAgcmV0dXJuIENvbGxlY3Rpb25zLmVtcHR5SXRlcmF0b3IoKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgVHJhbnNhY3Rpb24gdHgoKSB7CisgICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbihTdHJpbmcuZm9ybWF0KCJSZW1vdGVHcmFwaCBpcyBhIHByb3h5IHRvICVzIC0gdGhpcyBtZXRob2QgaXMgbm90IHN1cHBvcnRlZCIsIGNvbm5lY3Rpb24pKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgVmFyaWFibGVzIHZhcmlhYmxlcygpIHsKKyAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKFN0cmluZy5mb3JtYXQoIlJlbW90ZUdyYXBoIGlzIGEgcHJveHkgdG8gJXMgLSB0aGlzIG1ldGhvZCBpcyBub3Qgc3VwcG9ydGVkIiwgY29ubmVjdGlvbikpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24oKSB7CisgICAgICAgIHJldHVybiBjb25mOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBGZWF0dXJlcyBmZWF0dXJlcygpIHsKKyAgICAgICAgcmV0dXJuIFJlbW90ZUZlYXR1cmVzLklOU1RBTkNFOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgIHJldHVybiBTdHJpbmdGYWN0b3J5LmdyYXBoU3RyaW5nKHRoaXMsIGNvbm5lY3Rpb24udG9TdHJpbmcoKSk7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBSZW1vdGVGZWF0dXJlcyBpbXBsZW1lbnRzIEZlYXR1cmVzIHsKKyAgICAgICAgc3RhdGljIFJlbW90ZUZlYXR1cmVzIElOU1RBTkNFID0gbmV3IFJlbW90ZUZlYXR1cmVzKCk7CisKKyAgICAgICAgcHJpdmF0ZSBSZW1vdGVGZWF0dXJlcygpIHsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgR3JhcGhGZWF0dXJlcyBncmFwaCgpIHsKKyAgICAgICAgICAgIHJldHVybiBSZW1vdGVHcmFwaEZlYXR1cmVzLklOU1RBTkNFOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBSZW1vdGVHcmFwaEZlYXR1cmVzIGltcGxlbWVudHMgRmVhdHVyZXMuR3JhcGhGZWF0dXJlcyB7CisKKyAgICAgICAgc3RhdGljIFJlbW90ZUdyYXBoRmVhdHVyZXMgSU5TVEFOQ0UgPSBuZXcgUmVtb3RlR3JhcGhGZWF0dXJlcygpOworCisgICAgICAgIHByaXZhdGUgUmVtb3RlR3JhcGhGZWF0dXJlcygpIHsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgYm9vbGVhbiBzdXBwb3J0c1RyYW5zYWN0aW9ucygpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgYm9vbGVhbiBzdXBwb3J0c1RocmVhZGVkVHJhbnNhY3Rpb25zKCkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvVmVydGV4VGVzdC5qYXZhIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvVmVydGV4VGVzdC5qYXZhCmluZGV4IDBjNzYzY2IuLmEwZTNmN2EgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL1ZlcnRleFRlc3QuamF2YQorKysgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9WZXJ0ZXhUZXN0LmphdmEKQEAgLTY2LDEwICs2NiwxMCBAQAogICAgICAgICBARmVhdHVyZVJlcXVpcmVtZW50KGZlYXR1cmVDbGFzcyA9IEdyYXBoLkZlYXR1cmVzLkVkZ2VGZWF0dXJlcy5jbGFzcywgZmVhdHVyZSA9IEdyYXBoLkZlYXR1cmVzLkVkZ2VGZWF0dXJlcy5GRUFUVVJFX05VTUVSSUNfSURTKQogICAgICAgICBwdWJsaWMgdm9pZCBzaG91bGRBZGRFZGdlV2l0aFVzZXJTdXBwbGllZE51bWVyaWNJZCgpIHsKICAgICAgICAgICAgIGZpbmFsIFZlcnRleCB2ID0gZ3JhcGguYWRkVmVydGV4KCk7Ci0gICAgICAgICAgICB2LmFkZEVkZ2UoInNlbGYiLCB2LCBULmlkLCAxMDAwbCk7CisgICAgICAgICAgICB2LmFkZEVkZ2UoInNlbGYiLCB2LCBULmlkLCAxMDAwTCk7CiAgICAgICAgICAgICB0cnlDb21taXQoZ3JhcGgsIGdyYXBoIC0+IHsKLSAgICAgICAgICAgICAgICBmaW5hbCBFZGdlIGUgPSBncmFwaC5lZGdlcygxMDAwbCkubmV4dCgpOwotICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygxMDAwbCwgZS5pZCgpKTsKKyAgICAgICAgICAgICAgICBmaW5hbCBFZGdlIGUgPSBncmFwaC5lZGdlcygxMDAwTCkubmV4dCgpOworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygxMDAwTCwgZS5pZCgpKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAKQEAgLTI2MSwxOCArMjYxLDQzIEBACiAgICAgICAgIEBGZWF0dXJlUmVxdWlyZW1lbnQoZmVhdHVyZUNsYXNzID0gR3JhcGguRmVhdHVyZXMuRWRnZUZlYXR1cmVzLmNsYXNzLCBmZWF0dXJlID0gR3JhcGguRmVhdHVyZXMuRWRnZUZlYXR1cmVzLkZFQVRVUkVfQUREX0VER0VTKQogICAgICAgICBARmVhdHVyZVJlcXVpcmVtZW50KGZlYXR1cmVDbGFzcyA9IEdyYXBoLkZlYXR1cmVzLlZlcnRleEZlYXR1cmVzLmNsYXNzLCBmZWF0dXJlID0gR3JhcGguRmVhdHVyZXMuVmVydGV4RmVhdHVyZXMuRkVBVFVSRV9BRERfVkVSVElDRVMpCiAgICAgICAgIEBGZWF0dXJlUmVxdWlyZW1lbnQoZmVhdHVyZUNsYXNzID0gR3JhcGguRmVhdHVyZXMuRWRnZUZlYXR1cmVzLmNsYXNzLCBmZWF0dXJlID0gR3JhcGguRmVhdHVyZXMuRWRnZUZlYXR1cmVzLkZFQVRVUkVfVVNFUl9TVVBQTElFRF9JRFMpCisgICAgICAgIEBGZWF0dXJlUmVxdWlyZW1lbnQoZmVhdHVyZUNsYXNzID0gR3JhcGguRmVhdHVyZXMuRWRnZUZlYXR1cmVzLmNsYXNzLCBmZWF0dXJlID0gR3JhcGguRmVhdHVyZXMuRWRnZUZlYXR1cmVzLkZFQVRVUkVfVVBTRVJULCBzdXBwb3J0ZWQgPSBmYWxzZSkKICAgICAgICAgcHVibGljIHZvaWQgc2hvdWxkSGF2ZUV4Y2VwdGlvbkNvbnNpc3RlbmN5V2hlbkFzc2lnbmluZ1NhbWVJZE9uRWRnZSgpIHsKICAgICAgICAgICAgIGZpbmFsIFZlcnRleCB2ID0gZ3JhcGguYWRkVmVydGV4KCk7CiAgICAgICAgICAgICBmaW5hbCBPYmplY3QgbyA9IGdyYXBoUHJvdmlkZXIuY29udmVydElkKCIxIiwgRWRnZS5jbGFzcyk7Ci0gICAgICAgICAgICB2LmFkZEVkZ2UoInNlbGYiLCB2LCBULmlkLCBvKTsKKyAgICAgICAgICAgIHYuYWRkRWRnZSgic2VsZiIsIHYsIFQuaWQsIG8sICJ3ZWlnaHQiLCAxKTsKIAogICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICB2LmFkZEVkZ2UoInNlbGYiLCB2LCBULmlkLCBvKTsKKyAgICAgICAgICAgICAgICB2LmFkZEVkZ2UoInNlbGYiLCB2LCBULmlkLCBvLCAid2VpZ2h0IiwgMSk7CiAgICAgICAgICAgICAgICAgZmFpbCgiQXNzaWduaW5nIHRoZSBzYW1lIElEIHRvIGFuIEVsZW1lbnQgc2hvdWxkIHRocm93IGFuIGV4Y2VwdGlvbiIpOwogICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CiAgICAgICAgICAgICAgICAgdmFsaWRhdGVFeGNlcHRpb24oR3JhcGguRXhjZXB0aW9ucy5lZGdlV2l0aElkQWxyZWFkeUV4aXN0cyhvKSwgZXgpOwogICAgICAgICAgICAgfQorICAgICAgICB9CiAKKyAgICAgICAgQFRlc3QKKyAgICAgICAgQEZlYXR1cmVSZXF1aXJlbWVudChmZWF0dXJlQ2xhc3MgPSBHcmFwaC5GZWF0dXJlcy5FZGdlRmVhdHVyZXMuY2xhc3MsIGZlYXR1cmUgPSBHcmFwaC5GZWF0dXJlcy5FZGdlRmVhdHVyZXMuRkVBVFVSRV9BRERfRURHRVMpCisgICAgICAgIEBGZWF0dXJlUmVxdWlyZW1lbnQoZmVhdHVyZUNsYXNzID0gR3JhcGguRmVhdHVyZXMuVmVydGV4RmVhdHVyZXMuY2xhc3MsIGZlYXR1cmUgPSBHcmFwaC5GZWF0dXJlcy5WZXJ0ZXhGZWF0dXJlcy5GRUFUVVJFX0FERF9WRVJUSUNFUykKKyAgICAgICAgQEZlYXR1cmVSZXF1aXJlbWVudChmZWF0dXJlQ2xhc3MgPSBHcmFwaC5GZWF0dXJlcy5FZGdlRmVhdHVyZXMuY2xhc3MsIGZlYXR1cmUgPSBHcmFwaC5GZWF0dXJlcy5FZGdlRmVhdHVyZXMuRkVBVFVSRV9VU0VSX1NVUFBMSUVEX0lEUykKKyAgICAgICAgQEZlYXR1cmVSZXF1aXJlbWVudChmZWF0dXJlQ2xhc3MgPSBHcmFwaC5GZWF0dXJlcy5FZGdlRmVhdHVyZXMuY2xhc3MsIGZlYXR1cmUgPSBHcmFwaC5GZWF0dXJlcy5FZGdlRmVhdHVyZXMuRkVBVFVSRV9VUFNFUlQpCisgICAgICAgIHB1YmxpYyB2b2lkIHNob3VsZFVwc2VydFdoZW5Bc3NpZ25pbmdTYW1lSWRPbkVkZ2UoKSB7CisgICAgICAgICAgICBmaW5hbCBWZXJ0ZXggdiA9IGdyYXBoLmFkZFZlcnRleCgpOworICAgICAgICAgICAgZmluYWwgT2JqZWN0IG8gPSBncmFwaFByb3ZpZGVyLmNvbnZlcnRJZCgiMSIsIEVkZ2UuY2xhc3MpOworICAgICAgICAgICAgdi5hZGRFZGdlKCJzZWxmIiwgdiwgVC5pZCwgbywgIndlaWdodCIsIDEpOworICAgICAgICAgICAgdHJ5Q29tbWl0KGdyYXBoLCBncmFwaCAtPiB7CisgICAgICAgICAgICAgICAgZmluYWwgRWRnZSBlID0gZ3JhcGguZWRnZXMobykubmV4dCgpOworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhvLCBlLmlkKCkpOworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygxLCAoaW50KSBlLnZhbHVlKCJ3ZWlnaHQiKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0VmVydGV4RWRnZUNvdW50cyhncmFwaCwgMSwgMSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgdi5hZGRFZGdlKCJzZWxmIiwgdiwgVC5pZCwgbywgIndlaWdodCIsIDIpOworICAgICAgICAgICAgdHJ5Q29tbWl0KGdyYXBoLCBncmFwaCAtPiB7CisgICAgICAgICAgICAgICAgZmluYWwgRWRnZSBlID0gZ3JhcGguZWRnZXMobykubmV4dCgpOworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhvLCBlLmlkKCkpOworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygyLCAoaW50KSBlLnZhbHVlKCJ3ZWlnaHQiKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0VmVydGV4RWRnZUNvdW50cyhncmFwaCwgMSwgMSk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfQogCiAgICAgICAgIEBUZXN0CkBAIC00NzIsOSArNDk3LDkgQEAKICAgICAgICAgQEZlYXR1cmVSZXF1aXJlbWVudChmZWF0dXJlQ2xhc3MgPSBWZXJ0ZXhQcm9wZXJ0eUZlYXR1cmVzLmNsYXNzLCBmZWF0dXJlID0gRkVBVFVSRV9MT05HX1ZBTFVFUykKICAgICAgICAgcHVibGljIHZvaWQgc2hvdWxkQXV0b3R5cGVMb25nUHJvcGVydGllcygpIHsKICAgICAgICAgICAgIGZpbmFsIFZlcnRleCB2ID0gZ3JhcGguYWRkVmVydGV4KCk7Ci0gICAgICAgICAgICB2LnByb3BlcnR5KFZlcnRleFByb3BlcnR5LkNhcmRpbmFsaXR5LnNpbmdsZSwgImxvbmciLCAxbCk7CisgICAgICAgICAgICB2LnByb3BlcnR5KFZlcnRleFByb3BlcnR5LkNhcmRpbmFsaXR5LnNpbmdsZSwgImxvbmciLCAxTCk7CiAgICAgICAgICAgICBmaW5hbCBMb25nIGJlc3QgPSB2LnZhbHVlKCJsb25nIik7Ci0gICAgICAgICAgICBhc3NlcnRFcXVhbHMoYmVzdCwgTG9uZy52YWx1ZU9mKDFsKSk7CisgICAgICAgICAgICBhc3NlcnRFcXVhbHMoYmVzdCwgTG9uZy52YWx1ZU9mKDFMKSk7CiAgICAgICAgIH0KIAogICAgICAgICBAVGVzdApkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vSW9UZXN0LmphdmEgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9Jb1Rlc3QuamF2YQppbmRleCBiMGQxYzk2Li5mNGIyM2YyIDEwMDY0NAotLS0gYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9Jb1Rlc3QuamF2YQorKysgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9Jb1Rlc3QuamF2YQpAQCAtMTA5LDcgKzEwOSw4OCBAQAogcHVibGljIGNsYXNzIElvVGVzdCB7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKElvVGVzdC5jbGFzcyk7CiAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ0xBU1NJQ19HUkFQSF9XSVRIX0NPTE9SID0gIjw/eG1sIHZlcnNpb249XCIxLjBcIiA/PlxuIiArCisgICAgICAgICAgICAiPGdyYXBobWwgeG1sbnM9XCJodHRwOi8vZ3JhcGhtbC5ncmFwaGRyYXdpbmcub3JnL3htbG5zXCIgeG1sbnM6eHNpPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2VcIiB4c2k6c2NoZW1hTG9jYXRpb249XCJodHRwOi8vZ3JhcGhtbC5ncmFwaGRyYXdpbmcub3JnL3htbG5zIGh0dHA6Ly9ncmFwaG1sLmdyYXBoZHJhd2luZy5vcmcveG1sbnMvMS4xL2dyYXBobWwueHNkXCI+XG4iICsKKyAgICAgICAgICAgICIgICAgPGtleSBpZD1cImFnZVwiIGZvcj1cIm5vZGVcIiBhdHRyLm5hbWU9XCJhZ2VcIiBhdHRyLnR5cGU9XCJpbnRcIj48L2tleT5cbiIgKworICAgICAgICAgICAgIiAgICA8a2V5IGlkPVwiY29sb3JWXCIgZm9yPVwibm9kZVwiIGF0dHIubmFtZT1cImNvbG9yXCIgYXR0ci50eXBlPVwic3RyaW5nXCI+PC9rZXk+XG4iICsKKyAgICAgICAgICAgICIgICAgPGtleSBpZD1cImxhYmVsVlwiIGZvcj1cIm5vZGVcIiBhdHRyLm5hbWU9XCJsYWJlbFZcIiBhdHRyLnR5cGU9XCJzdHJpbmdcIj48L2tleT5cbiIgKworICAgICAgICAgICAgIiAgICA8a2V5IGlkPVwibGFuZ1wiIGZvcj1cIm5vZGVcIiBhdHRyLm5hbWU9XCJsYW5nXCIgYXR0ci50eXBlPVwic3RyaW5nXCI+PC9rZXk+XG4iICsKKyAgICAgICAgICAgICIgICAgPGtleSBpZD1cIm5hbWVcIiBmb3I9XCJub2RlXCIgYXR0ci5uYW1lPVwibmFtZVwiIGF0dHIudHlwZT1cInN0cmluZ1wiPjwva2V5PlxuIiArCisgICAgICAgICAgICAiICAgIDxrZXkgaWQ9XCJjb2xvckVcIiBmb3I9XCJlZGdlXCIgYXR0ci5uYW1lPVwiY29sb3JcIiBhdHRyLnR5cGU9XCJzdHJpbmdcIj48L2tleT5cbiIgKworICAgICAgICAgICAgIiAgICA8a2V5IGlkPVwibGFiZWxFXCIgZm9yPVwiZWRnZVwiIGF0dHIubmFtZT1cImxhYmVsRVwiIGF0dHIudHlwZT1cInN0cmluZ1wiPjwva2V5PlxuIiArCisgICAgICAgICAgICAiICAgIDxrZXkgaWQ9XCJ3ZWlnaHRcIiBmb3I9XCJlZGdlXCIgYXR0ci5uYW1lPVwid2VpZ2h0XCIgYXR0ci50eXBlPVwiZmxvYXRcIj48L2tleT5cbiIgKworICAgICAgICAgICAgIiAgICA8Z3JhcGggaWQ9XCJHXCIgZWRnZWRlZmF1bHQ9XCJkaXJlY3RlZFwiPlxuIiArCisgICAgICAgICAgICAiICAgICAgICA8bm9kZSBpZD1cIjFcIj5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgICAgIDxkYXRhIGtleT1cImxhYmVsVlwiPnZlcnRleDwvZGF0YT5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgICAgIDxkYXRhIGtleT1cImFnZVwiPjI5PC9kYXRhPlxuIiArCisgICAgICAgICAgICAiICAgICAgICAgICAgPGRhdGEga2V5PVwiY29sb3JWXCI+IzY0OTVlZDwvZGF0YT5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgICAgIDxkYXRhIGtleT1cIm5hbWVcIj5tYXJrbzwvZGF0YT5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgPC9ub2RlPlxuIiArCisgICAgICAgICAgICAiICAgICAgICA8bm9kZSBpZD1cIjJcIj5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgICAgIDxkYXRhIGtleT1cImxhYmVsVlwiPnZlcnRleDwvZGF0YT5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgICAgIDxkYXRhIGtleT1cImFnZVwiPjI3PC9kYXRhPlxuIiArCisgICAgICAgICAgICAiICAgICAgICAgICAgPGRhdGEga2V5PVwiY29sb3JWXCI+IzY0OTVlZDwvZGF0YT5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgICAgIDxkYXRhIGtleT1cIm5hbWVcIj52YWRhczwvZGF0YT5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgPC9ub2RlPlxuIiArCisgICAgICAgICAgICAiICAgICAgICA8bm9kZSBpZD1cIjNcIj5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgICAgIDxkYXRhIGtleT1cImxhYmVsVlwiPnZlcnRleDwvZGF0YT5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgICAgIDxkYXRhIGtleT1cImxhbmdcIj5qYXZhPC9kYXRhPlxuIiArCisgICAgICAgICAgICAiICAgICAgICAgICAgPGRhdGEga2V5PVwiY29sb3JWXCI+IzY0OTVlZDwvZGF0YT5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgICAgIDxkYXRhIGtleT1cIm5hbWVcIj5sb3A8L2RhdGE+XG4iICsKKyAgICAgICAgICAgICIgICAgICAgIDwvbm9kZT5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgPG5vZGUgaWQ9XCI0XCI+XG4iICsKKyAgICAgICAgICAgICIgICAgICAgICAgICA8ZGF0YSBrZXk9XCJsYWJlbFZcIj52ZXJ0ZXg8L2RhdGE+XG4iICsKKyAgICAgICAgICAgICIgICAgICAgICAgICA8ZGF0YSBrZXk9XCJhZ2VcIj4zMjwvZGF0YT5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgICAgIDxkYXRhIGtleT1cImNvbG9yVlwiPiM2NDk1ZWQ8L2RhdGE+XG4iICsKKyAgICAgICAgICAgICIgICAgICAgICAgICA8ZGF0YSBrZXk9XCJuYW1lXCI+am9zaDwvZGF0YT5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgPC9ub2RlPlxuIiArCisgICAgICAgICAgICAiICAgICAgICA8bm9kZSBpZD1cIjVcIj5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgICAgIDxkYXRhIGtleT1cImxhYmVsVlwiPnZlcnRleDwvZGF0YT5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgICAgIDxkYXRhIGtleT1cImxhbmdcIj5qYXZhPC9kYXRhPlxuIiArCisgICAgICAgICAgICAiICAgICAgICAgICAgPGRhdGEga2V5PVwiY29sb3JWXCI+IzY0OTVlZDwvZGF0YT5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgICAgIDxkYXRhIGtleT1cIm5hbWVcIj5yaXBwbGU8L2RhdGE+XG4iICsKKyAgICAgICAgICAgICIgICAgICAgIDwvbm9kZT5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgPG5vZGUgaWQ9XCI2XCI+XG4iICsKKyAgICAgICAgICAgICIgICAgICAgICAgICA8ZGF0YSBrZXk9XCJsYWJlbFZcIj52ZXJ0ZXg8L2RhdGE+XG4iICsKKyAgICAgICAgICAgICIgICAgICAgICAgICA8ZGF0YSBrZXk9XCJhZ2VcIj4zNTwvZGF0YT5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgICAgIDxkYXRhIGtleT1cImNvbG9yVlwiPiM2NDk1ZWQ8L2RhdGE+XG4iICsKKyAgICAgICAgICAgICIgICAgICAgICAgICA8ZGF0YSBrZXk9XCJuYW1lXCI+cGV0ZXI8L2RhdGE+XG4iICsKKyAgICAgICAgICAgICIgICAgICAgIDwvbm9kZT5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgPGVkZ2UgaWQ9XCIxMFwiIHNvdXJjZT1cIjRcIiB0YXJnZXQ9XCI1XCI+XG4iICsKKyAgICAgICAgICAgICIgICAgICAgICAgICA8ZGF0YSBrZXk9XCJsYWJlbEVcIj5jcmVhdGVkPC9kYXRhPlxuIiArCisgICAgICAgICAgICAiICAgICAgICAgICAgPGRhdGEga2V5PVwiY29sb3JFXCI+I2VlMDAwMDwvZGF0YT5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgICAgIDxkYXRhIGtleT1cIndlaWdodFwiPjEuMDwvZGF0YT5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgPC9lZGdlPlxuIiArCisgICAgICAgICAgICAiICAgICAgICA8ZWRnZSBpZD1cIjExXCIgc291cmNlPVwiNFwiIHRhcmdldD1cIjNcIj5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgICAgIDxkYXRhIGtleT1cImxhYmVsRVwiPmNyZWF0ZWQ8L2RhdGE+XG4iICsKKyAgICAgICAgICAgICIgICAgICAgICAgICA8ZGF0YSBrZXk9XCJjb2xvckVcIj4jZWUwMDAwPC9kYXRhPlxuIiArCisgICAgICAgICAgICAiICAgICAgICAgICAgPGRhdGEga2V5PVwid2VpZ2h0XCI+MC40PC9kYXRhPlxuIiArCisgICAgICAgICAgICAiICAgICAgICA8L2VkZ2U+XG4iICsKKyAgICAgICAgICAgICIgICAgICAgIDxlZGdlIGlkPVwiMTJcIiBzb3VyY2U9XCI2XCIgdGFyZ2V0PVwiM1wiPlxuIiArCisgICAgICAgICAgICAiICAgICAgICAgICAgPGRhdGEga2V5PVwibGFiZWxFXCI+Y3JlYXRlZDwvZGF0YT5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgICAgIDxkYXRhIGtleT1cImNvbG9yRVwiPiNlZTAwMDA8L2RhdGE+XG4iICsKKyAgICAgICAgICAgICIgICAgICAgICAgICA8ZGF0YSBrZXk9XCJ3ZWlnaHRcIj4wLjI8L2RhdGE+XG4iICsKKyAgICAgICAgICAgICIgICAgICAgIDwvZWRnZT5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgPGVkZ2UgaWQ9XCI3XCIgc291cmNlPVwiMVwiIHRhcmdldD1cIjJcIj5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgICAgIDxkYXRhIGtleT1cImxhYmVsRVwiPmtub3dzPC9kYXRhPlxuIiArCisgICAgICAgICAgICAiICAgICAgICAgICAgPGRhdGEga2V5PVwiY29sb3JFXCI+I2VlMDAwMDwvZGF0YT5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgICAgIDxkYXRhIGtleT1cIndlaWdodFwiPjAuNTwvZGF0YT5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgPC9lZGdlPlxuIiArCisgICAgICAgICAgICAiICAgICAgICA8ZWRnZSBpZD1cIjhcIiBzb3VyY2U9XCIxXCIgdGFyZ2V0PVwiNFwiPlxuIiArCisgICAgICAgICAgICAiICAgICAgICAgICAgPGRhdGEga2V5PVwibGFiZWxFXCI+a25vd3M8L2RhdGE+XG4iICsKKyAgICAgICAgICAgICIgICAgICAgICAgICA8ZGF0YSBrZXk9XCJjb2xvckVcIj4jZWUwMDAwPC9kYXRhPlxuIiArCisgICAgICAgICAgICAiICAgICAgICAgICAgPGRhdGEga2V5PVwid2VpZ2h0XCI+MS4wPC9kYXRhPlxuIiArCisgICAgICAgICAgICAiICAgICAgICA8L2VkZ2U+XG4iICsKKyAgICAgICAgICAgICIgICAgICAgIDxlZGdlIGlkPVwiOVwiIHNvdXJjZT1cIjFcIiB0YXJnZXQ9XCIzXCI+XG4iICsKKyAgICAgICAgICAgICIgICAgICAgICAgICA8ZGF0YSBrZXk9XCJsYWJlbEVcIj5jcmVhdGVkPC9kYXRhPlxuIiArCisgICAgICAgICAgICAiICAgICAgICAgICAgPGRhdGEga2V5PVwiY29sb3JFXCI+I2VlMDAwMDwvZGF0YT5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgICAgIDxkYXRhIGtleT1cIndlaWdodFwiPjAuNDwvZGF0YT5cbiIgKworICAgICAgICAgICAgIiAgICAgICAgPC9lZGdlPlxuIiArCisgICAgICAgICAgICAiICAgIDwvZ3JhcGg+XG4iICsKKyAgICAgICAgICAgICI8L2dyYXBobWw+IjsKKwogICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgR3JhcGhNTFRlc3QgZXh0ZW5kcyBBYnN0cmFjdEdyZW1saW5UZXN0IHsKKwogICAgICAgICBAVGVzdAogICAgICAgICBARmVhdHVyZVJlcXVpcmVtZW50KGZlYXR1cmVDbGFzcyA9IEdyYXBoLkZlYXR1cmVzLkVkZ2VGZWF0dXJlcy5jbGFzcywgZmVhdHVyZSA9IEdyYXBoLkZlYXR1cmVzLkVkZ2VGZWF0dXJlcy5GRUFUVVJFX0FERF9FREdFUykKICAgICAgICAgQEZlYXR1cmVSZXF1aXJlbWVudChmZWF0dXJlQ2xhc3MgPSBHcmFwaC5GZWF0dXJlcy5WZXJ0ZXhGZWF0dXJlcy5jbGFzcywgZmVhdHVyZSA9IEdyYXBoLkZlYXR1cmVzLlZlcnRleEZlYXR1cmVzLkZFQVRVUkVfQUREX1ZFUlRJQ0VTKQpAQCAtMjA3LDYgKzI4OCwzOSBAQAogICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDIsIEl0ZXJhdG9yVXRpbHMuY291bnQoZ3JhcGgudmVydGljZXMoKSkpOwogICAgICAgICB9CiAKKyAgICAgICAgQFRlc3QKKyAgICAgICAgQEZlYXR1cmVSZXF1aXJlbWVudChmZWF0dXJlQ2xhc3MgPSBHcmFwaC5GZWF0dXJlcy5FZGdlRmVhdHVyZXMuY2xhc3MsIGZlYXR1cmUgPSBHcmFwaC5GZWF0dXJlcy5FZGdlRmVhdHVyZXMuRkVBVFVSRV9BRERfRURHRVMpCisgICAgICAgIEBGZWF0dXJlUmVxdWlyZW1lbnQoZmVhdHVyZUNsYXNzID0gR3JhcGguRmVhdHVyZXMuRWRnZUZlYXR1cmVzLmNsYXNzLCBmZWF0dXJlID0gR3JhcGguRmVhdHVyZXMuRWRnZUZlYXR1cmVzLkZFQVRVUkVfUkVNT1ZFX0VER0VTKQorICAgICAgICBARmVhdHVyZVJlcXVpcmVtZW50KGZlYXR1cmVDbGFzcyA9IEdyYXBoLkZlYXR1cmVzLlZlcnRleEZlYXR1cmVzLmNsYXNzLCBmZWF0dXJlID0gR3JhcGguRmVhdHVyZXMuVmVydGV4RmVhdHVyZXMuRkVBVFVSRV9BRERfVkVSVElDRVMpCisgICAgICAgIEBGZWF0dXJlUmVxdWlyZW1lbnQoZmVhdHVyZUNsYXNzID0gR3JhcGguRmVhdHVyZXMuVmVydGV4RmVhdHVyZXMuY2xhc3MsIGZlYXR1cmUgPSBHcmFwaC5GZWF0dXJlcy5WZXJ0ZXhGZWF0dXJlcy5GRUFUVVJFX1JFTU9WRV9WRVJUSUNFUykKKyAgICAgICAgQEZlYXR1cmVSZXF1aXJlbWVudChmZWF0dXJlQ2xhc3MgPSBWZXJ0ZXhQcm9wZXJ0eUZlYXR1cmVzLmNsYXNzLCBmZWF0dXJlID0gRkVBVFVSRV9TVFJJTkdfVkFMVUVTKQorICAgICAgICBARmVhdHVyZVJlcXVpcmVtZW50KGZlYXR1cmVDbGFzcyA9IFZlcnRleFByb3BlcnR5RmVhdHVyZXMuY2xhc3MsIGZlYXR1cmUgPSBGRUFUVVJFX0lOVEVHRVJfVkFMVUVTKQorICAgICAgICBARmVhdHVyZVJlcXVpcmVtZW50KGZlYXR1cmVDbGFzcyA9IEVkZ2VQcm9wZXJ0eUZlYXR1cmVzLmNsYXNzLCBmZWF0dXJlID0gRWRnZVByb3BlcnR5RmVhdHVyZXMuRkVBVFVSRV9GTE9BVF9WQUxVRVMpCisgICAgICAgIEBGZWF0dXJlUmVxdWlyZW1lbnQoZmVhdHVyZUNsYXNzID0gRWRnZVByb3BlcnR5RmVhdHVyZXMuY2xhc3MsIGZlYXR1cmUgPSBFZGdlUHJvcGVydHlGZWF0dXJlcy5GRUFUVVJFX1NUUklOR19WQUxVRVMpCisgICAgICAgIHB1YmxpYyB2b2lkIHNob3VsZFJlYWRHcmFwaE1MV2l0aENvbW1vblZlcnRleEFuZEVkZ2VQcm9wZXJ0eU5hbWVzKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgICAgIGZpbmFsIEdyYXBoUmVhZGVyIHJlYWRlciA9IEdyYXBoTUxSZWFkZXIuYnVpbGQoKS5jcmVhdGUoKTsKKyAgICAgICAgICAgIHRyeSAoZmluYWwgSW5wdXRTdHJlYW0gc3RyZWFtID0gbmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKENMQVNTSUNfR1JBUEhfV0lUSF9DT0xPUi5nZXRCeXRlcygiVVRGLTgiKSkpIHsKKyAgICAgICAgICAgICAgICByZWFkZXIucmVhZEdyYXBoKHN0cmVhbSwgZ3JhcGgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyB0aGVyZSBpcyBhbHNvIGEgImNvbG9yIiBwcm9wZXJ0eSBvbiB0aGlzIGRhdGFzZXQgdGhhdCBpcyBvbiBib3RoIGVkZ2VzIGFuZCB2ZXJ0aWNlcworICAgICAgICAgICAgZ3JhcGgudmVydGljZXMoKS5mb3JFYWNoUmVtYWluaW5nKHYgLT4gYXNzZXJ0RXF1YWxzKCIjNjQ5NWVkIiwgdi52YWx1ZSgiY29sb3IiKSkpOworICAgICAgICAgICAgZ3JhcGguZWRnZXMoKS5mb3JFYWNoUmVtYWluaW5nKGUgLT4gYXNzZXJ0RXF1YWxzKCIjZWUwMDAwIiwgZS52YWx1ZSgiY29sb3IiKSkpOworCisgICAgICAgICAgICBmaW5hbCBHcmFwaFdyaXRlciB3cml0ZXIgPSBHcmFwaE1MV3JpdGVyLmJ1aWxkKCkuY3JlYXRlKCk7CisgICAgICAgICAgICB0cnkgKGZpbmFsIE91dHB1dFN0cmVhbSBvdXQgPSBuZXcgQnl0ZUFycmF5T3V0cHV0U3RyZWFtKCkpIHsKKyAgICAgICAgICAgICAgICB3cml0ZXIud3JpdGVHcmFwaChvdXQsIGdyYXBoKTsKKworICAgICAgICAgICAgICAgIGdyYXBoLnZlcnRpY2VzKCkuZm9yRWFjaFJlbWFpbmluZyhFbGVtZW50OjpyZW1vdmUpOworICAgICAgICAgICAgICAgIHRyeSAoZmluYWwgSW5wdXRTdHJlYW0gc3RyZWFtID0gbmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKCgoQnl0ZUFycmF5T3V0cHV0U3RyZWFtKSBvdXQpLnRvQnl0ZUFycmF5KCkpKSB7CisgICAgICAgICAgICAgICAgICAgIHJlYWRlci5yZWFkR3JhcGgoc3RyZWFtLCBncmFwaCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gdGhlcmUgaXMgYWxzbyBhICJjb2xvciIgcHJvcGVydHkgb24gdGhpcyBkYXRhc2V0IHRoYXQgaXMgb24gYm90aCBlZGdlcyBhbmQgdmVydGljZXMKKyAgICAgICAgICAgICAgICBncmFwaC52ZXJ0aWNlcygpLmZvckVhY2hSZW1haW5pbmcodiAtPiBhc3NlcnRFcXVhbHMoIiM2NDk1ZWQiLCB2LnZhbHVlKCJjb2xvciIpKSk7CisgICAgICAgICAgICAgICAgZ3JhcGguZWRnZXMoKS5mb3JFYWNoUmVtYWluaW5nKGUgLT4gYXNzZXJ0RXF1YWxzKCIjZWUwMDAwIiwgZS52YWx1ZSgiY29sb3IiKSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAKICAgICAgICAgQFRlc3QoZXhwZWN0ZWQgPSBOdW1iZXJGb3JtYXRFeGNlcHRpb24uY2xhc3MpCiAgICAgICAgIEBGZWF0dXJlUmVxdWlyZW1lbnQoZmVhdHVyZUNsYXNzID0gR3JhcGguRmVhdHVyZXMuRWRnZUZlYXR1cmVzLmNsYXNzLCBmZWF0dXJlID0gR3JhcGguRmVhdHVyZXMuRWRnZUZlYXR1cmVzLkZFQVRVUkVfQUREX0VER0VTKQpAQCAtMjQxLDcgKzM1NSw2IEBACiAgICAgICAgICAgICB0cnkgKEJ5dGVBcnJheU91dHB1dFN0cmVhbSBib3MgPSBuZXcgQnl0ZUFycmF5T3V0cHV0U3RyZWFtKCkpIHsKICAgICAgICAgICAgICAgICBmaW5hbCBHcmFwaE1MV3JpdGVyIHcgPSBHcmFwaE1MV3JpdGVyLmJ1aWxkKCkubm9ybWFsaXplKHRydWUpLmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIHcud3JpdGVHcmFwaChib3MsIGdyYXBoKTsKLQogICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyBleHBlY3RlZCA9IHN0cmVhbVRvU3RyaW5nKGdldFJlc291cmNlQXNTdHJlYW0oR3JhcGhNTFJlc291cmNlQWNjZXNzLmNsYXNzLCAidGlua2VycG9wLWNsYXNzaWMtbm9ybWFsaXplZC54bWwiKSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKGV4cGVjdGVkLnJlcGxhY2UoIlxuIiwgIiIpLnJlcGxhY2UoIlxyIiwgIiIpLCBib3MudG9TdHJpbmcoKS5yZXBsYWNlKCJcbiIsICIiKS5yZXBsYWNlKCJcciIsICIiKSk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL1RveUlvUmVnaXN0cnkuamF2YSBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vVG95SW9SZWdpc3RyeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzOWE4M2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL1RveUlvUmVnaXN0cnkuamF2YQpAQCAtMCwwICsxLDY5IEBACisvKgorICogIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqICB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyeW87CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5BYnN0cmFjdElvUmVnaXN0cnk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3JhcGhzb24uR3JhcGhTT05JbzsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncmFwaHNvbi5UaW5rZXJQb3BKYWNrc29uTW9kdWxlOworCitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CitpbXBvcnQgamF2YS51dGlsLk1hcDsKKworLyoqCisgKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKKyAqLworcHVibGljIGZpbmFsIGNsYXNzIFRveUlvUmVnaXN0cnkgZXh0ZW5kcyBBYnN0cmFjdElvUmVnaXN0cnkgeworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgVG95SW9SZWdpc3RyeSBJTlNUQU5DRSA9IG5ldyBUb3lJb1JlZ2lzdHJ5KCk7CisKKyAgICBwcml2YXRlIFRveUlvUmVnaXN0cnkoKSB7CisgICAgICAgIHN1cGVyLnJlZ2lzdGVyKEdyeW9Jby5jbGFzcywgVG95UG9pbnQuY2xhc3MsIG5ldyBUb3lQb2ludC5Ub3lQb2ludFNlcmlhbGl6ZXIoKSk7CisgICAgICAgIHN1cGVyLnJlZ2lzdGVyKEdyeW9Jby5jbGFzcywgVG95VHJpYW5nbGUuY2xhc3MsIG5ldyBUb3lUcmlhbmdsZS5Ub3lUcmlhbmdsZVNlcmlhbGl6ZXIoKSk7CisgICAgICAgIHN1cGVyLnJlZ2lzdGVyKEdyYXBoU09OSW8uY2xhc3MsIG51bGwsIG5ldyBUb3lNb2R1bGUoKSk7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBUb3lNb2R1bGUgZXh0ZW5kcyBUaW5rZXJQb3BKYWNrc29uTW9kdWxlIHsKKyAgICAgICAgcHVibGljIFRveU1vZHVsZSgpIHsKKyAgICAgICAgICAgIHN1cGVyKCJ0b3kiKTsKKyAgICAgICAgICAgIGFkZFNlcmlhbGl6ZXIoVG95UG9pbnQuY2xhc3MsIG5ldyBUb3lQb2ludC5Ub3lQb2ludEphY2tzb25TZXJpYWxpemVyKCkpOworICAgICAgICAgICAgYWRkRGVzZXJpYWxpemVyKFRveVBvaW50LmNsYXNzLCBuZXcgVG95UG9pbnQuVG95UG9pbnRKYWNrc29uRGVTZXJpYWxpemVyKCkpOworICAgICAgICAgICAgYWRkU2VyaWFsaXplcihUb3lUcmlhbmdsZS5jbGFzcywgbmV3IFRveVRyaWFuZ2xlLlRveVRyaWFuZ2xlSmFja3NvblNlcmlhbGl6ZXIoKSk7CisgICAgICAgICAgICBhZGREZXNlcmlhbGl6ZXIoVG95VHJpYW5nbGUuY2xhc3MsIG5ldyBUb3lUcmlhbmdsZS5Ub3lUcmlhbmdsZUphY2tzb25EZVNlcmlhbGl6ZXIoKSk7CisgICAgICAgIH0KKworCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgTWFwPENsYXNzLCBTdHJpbmc+IGdldFR5cGVEZWZpbml0aW9ucygpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgSGFzaE1hcDxDbGFzcywgU3RyaW5nPigpIHt7CisgICAgICAgICAgICAgICAgcHV0KFRveVBvaW50LmNsYXNzLCAiVG95UG9pbnQiKTsKKyAgICAgICAgICAgICAgICBwdXQoVG95VHJpYW5nbGUuY2xhc3MsICJUb3lUcmlhbmdsZSIpOworICAgICAgICAgICAgfX07CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFN0cmluZyBnZXRUeXBlTmFtZXNwYWNlKCkgeworICAgICAgICAgICAgcmV0dXJuICJ0b3kiOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBUb3lJb1JlZ2lzdHJ5IGluc3RhbmNlKCkgeworICAgICAgICByZXR1cm4gSU5TVEFOQ0U7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vVG95UG9pbnQuamF2YSBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vVG95UG9pbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYmFiMDczCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9Ub3lQb2ludC5qYXZhCkBAIC0wLDAgKzEsMTA5IEBACisvKgorICogIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqICB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyeW87CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncmFwaHNvbi5BYnN0cmFjdE9iamVjdERlc2VyaWFsaXplcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncnlvLmtyeW9zaGltLklucHV0U2hpbTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncnlvLmtyeW9zaGltLktyeW9TaGltOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyeW8ua3J5b3NoaW0uT3V0cHV0U2hpbTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncnlvLmtyeW9zaGltLlNlcmlhbGl6ZXJTaGltOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLnNoYWRlZC5qYWNrc29uLmNvcmUuSnNvbkdlbmVyYXRpb25FeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3Auc2hhZGVkLmphY2tzb24uY29yZS5Kc29uR2VuZXJhdG9yOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLnNoYWRlZC5qYWNrc29uLmRhdGFiaW5kLlNlcmlhbGl6ZXJQcm92aWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5zaGFkZWQuamFja3Nvbi5kYXRhYmluZC5zZXIuc3RkLlN0ZFNjYWxhclNlcmlhbGl6ZXI7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEudXRpbC5NYXA7CisKKy8qKgorICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBUb3lQb2ludCB7CisKKyAgICBwcml2YXRlIGZpbmFsIGludCB4OworICAgIHByaXZhdGUgZmluYWwgaW50IHk7CisKKyAgICBwdWJsaWMgVG95UG9pbnQoZmluYWwgaW50IHgsIGZpbmFsIGludCB5KSB7CisgICAgICAgIHRoaXMueCA9IHg7CisgICAgICAgIHRoaXMueSA9IHk7CisgICAgfQorCisgICAgcHVibGljIGludCBnZXRYKCkgeworICAgICAgICByZXR1cm4gdGhpcy54OworICAgIH0KKworICAgIHB1YmxpYyBpbnQgZ2V0WSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMueTsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgeworICAgICAgICByZXR1cm4gdGhpcy54ICsgdGhpcy55OworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhmaW5hbCBPYmplY3Qgb3RoZXIpIHsKKyAgICAgICAgcmV0dXJuIG90aGVyIGluc3RhbmNlb2YgVG95UG9pbnQgJiYgKChUb3lQb2ludCkgb3RoZXIpLnggPT0gdGhpcy54ICYmICgoVG95UG9pbnQpIG90aGVyKS55ID09IHRoaXMueTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICByZXR1cm4gIlsiICsgdGhpcy54ICsgIiwiICsgdGhpcy55ICsgIl0iOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgVG95UG9pbnRTZXJpYWxpemVyIGltcGxlbWVudHMgU2VyaWFsaXplclNoaW08VG95UG9pbnQ+IHsKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyA8TyBleHRlbmRzIE91dHB1dFNoaW0+IHZvaWQgd3JpdGUoZmluYWwgS3J5b1NoaW08PywgTz4ga3J5bywgZmluYWwgTyBvdXRwdXQsIGZpbmFsIFRveVBvaW50IHRveVBvaW50KSB7CisgICAgICAgICAgICBvdXRwdXQud3JpdGVJbnQodG95UG9pbnQueCk7CisgICAgICAgICAgICBvdXRwdXQud3JpdGVJbnQodG95UG9pbnQueSk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIDxJIGV4dGVuZHMgSW5wdXRTaGltPiBUb3lQb2ludCByZWFkKGZpbmFsIEtyeW9TaGltPEksID8+IGtyeW8sIGZpbmFsIEkgaW5wdXQsIGZpbmFsIENsYXNzPFRveVBvaW50PiB0b3lQb2ludENsYXNzKSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IFRveVBvaW50KGlucHV0LnJlYWRJbnQoKSwgaW5wdXQucmVhZEludCgpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgVG95UG9pbnRKYWNrc29uU2VyaWFsaXplciBleHRlbmRzIFN0ZFNjYWxhclNlcmlhbGl6ZXI8VG95UG9pbnQ+IHsKKworICAgICAgICBwdWJsaWMgVG95UG9pbnRKYWNrc29uU2VyaWFsaXplcigpIHsKKyAgICAgICAgICAgIHN1cGVyKFRveVBvaW50LmNsYXNzKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBzZXJpYWxpemUoZmluYWwgVG95UG9pbnQgdG95UG9pbnQsIGZpbmFsIEpzb25HZW5lcmF0b3IganNvbkdlbmVyYXRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIFNlcmlhbGl6ZXJQcm92aWRlciBzZXJpYWxpemVyUHJvdmlkZXIpIHRocm93cyBJT0V4Y2VwdGlvbiwgSnNvbkdlbmVyYXRpb25FeGNlcHRpb24geworICAgICAgICAgICAganNvbkdlbmVyYXRvci53cml0ZVN0YXJ0T2JqZWN0KCk7CisgICAgICAgICAgICBqc29uR2VuZXJhdG9yLndyaXRlT2JqZWN0RmllbGQoIngiLCB0b3lQb2ludC54KTsKKyAgICAgICAgICAgIGpzb25HZW5lcmF0b3Iud3JpdGVPYmplY3RGaWVsZCgieSIsIHRveVBvaW50LnkpOworICAgICAgICAgICAganNvbkdlbmVyYXRvci53cml0ZUVuZE9iamVjdCgpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBUb3lQb2ludEphY2tzb25EZVNlcmlhbGl6ZXIgZXh0ZW5kcyBBYnN0cmFjdE9iamVjdERlc2VyaWFsaXplcjxUb3lQb2ludD4geworCisgICAgICAgIHB1YmxpYyBUb3lQb2ludEphY2tzb25EZVNlcmlhbGl6ZXIoKSB7CisgICAgICAgICAgICBzdXBlcihUb3lQb2ludC5jbGFzcyk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRveVBvaW50IGNyZWF0ZU9iamVjdChmaW5hbCBNYXA8U3RyaW5nLCBPYmplY3Q+IG1hcCkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBUb3lQb2ludCgoaW50KSBtYXAuZ2V0KCJ4IiksIChpbnQpIG1hcC5nZXQoInkiKSk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL1RveVRyaWFuZ2xlLmphdmEgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL1RveVRyaWFuZ2xlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjE0YWU3MAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vVG95VHJpYW5nbGUuamF2YQpAQCAtMCwwICsxLDExOSBAQAorLyoKKyAqICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiAgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncnlvOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3JhcGhzb24uQWJzdHJhY3RPYmplY3REZXNlcmlhbGl6ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3J5by5rcnlvc2hpbS5JbnB1dFNoaW07CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3J5by5rcnlvc2hpbS5LcnlvU2hpbTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncnlvLmtyeW9zaGltLk91dHB1dFNoaW07CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3J5by5rcnlvc2hpbS5TZXJpYWxpemVyU2hpbTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5zaGFkZWQuamFja3Nvbi5jb3JlLkpzb25HZW5lcmF0aW9uRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLnNoYWRlZC5qYWNrc29uLmNvcmUuSnNvbkdlbmVyYXRvcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5zaGFkZWQuamFja3Nvbi5kYXRhYmluZC5TZXJpYWxpemVyUHJvdmlkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3Auc2hhZGVkLmphY2tzb24uZGF0YWJpbmQuc2VyLnN0ZC5TdGRTY2FsYXJTZXJpYWxpemVyOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworCisvKioKKyAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQorICovCitwdWJsaWMgZmluYWwgY2xhc3MgVG95VHJpYW5nbGUgeworCisgICAgcHJpdmF0ZSBmaW5hbCBpbnQgeDsKKyAgICBwcml2YXRlIGZpbmFsIGludCB5OworICAgIHByaXZhdGUgZmluYWwgaW50IHo7CisKKyAgICBwdWJsaWMgVG95VHJpYW5nbGUoZmluYWwgaW50IHgsIGZpbmFsIGludCB5LCBmaW5hbCBpbnQgeikgeworICAgICAgICB0aGlzLnggPSB4OworICAgICAgICB0aGlzLnkgPSB5OworICAgICAgICB0aGlzLnogPSB6OworICAgIH0KKworICAgIHB1YmxpYyBpbnQgZ2V0WCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMueDsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50IGdldFkoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnk7CisgICAgfQorCisgICAgcHVibGljIGludCBnZXRaKCkgeworICAgICAgICByZXR1cm4gdGhpcy56OworICAgIH0KKworICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnggKyB0aGlzLnkgKyB0aGlzLno7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKGZpbmFsIE9iamVjdCBvdGhlcikgeworICAgICAgICByZXR1cm4gb3RoZXIgaW5zdGFuY2VvZiBUb3lUcmlhbmdsZSAmJiAoKFRveVRyaWFuZ2xlKSBvdGhlcikueCA9PSB0aGlzLnggJiYgKChUb3lUcmlhbmdsZSkgb3RoZXIpLnkgPT0gdGhpcy55ICYmICgoVG95VHJpYW5nbGUpIG90aGVyKS56ID09IHRoaXMuejsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICByZXR1cm4gIlsiICsgdGhpcy54ICsgIiwiICsgdGhpcy55ICsgIiwiICsgdGhpcy56ICsgIl0iOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgVG95VHJpYW5nbGVTZXJpYWxpemVyIGltcGxlbWVudHMgU2VyaWFsaXplclNoaW08VG95VHJpYW5nbGU+IHsKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyA8TyBleHRlbmRzIE91dHB1dFNoaW0+IHZvaWQgd3JpdGUoZmluYWwgS3J5b1NoaW08PywgTz4ga3J5bywgZmluYWwgTyBvdXRwdXQsIGZpbmFsIFRveVRyaWFuZ2xlIHRveVRyaWFuZ2xlKSB7CisgICAgICAgICAgICBvdXRwdXQud3JpdGVJbnQodG95VHJpYW5nbGUueCk7CisgICAgICAgICAgICBvdXRwdXQud3JpdGVJbnQodG95VHJpYW5nbGUueSk7CisgICAgICAgICAgICBvdXRwdXQud3JpdGVJbnQodG95VHJpYW5nbGUueik7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIDxJIGV4dGVuZHMgSW5wdXRTaGltPiBUb3lUcmlhbmdsZSByZWFkKGZpbmFsIEtyeW9TaGltPEksID8+IGtyeW8sIGZpbmFsIEkgaW5wdXQsIGZpbmFsIENsYXNzPFRveVRyaWFuZ2xlPiB0b3lUcmlhbmdsZUNsYXNzKSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IFRveVRyaWFuZ2xlKGlucHV0LnJlYWRJbnQoKSwgaW5wdXQucmVhZEludCgpLCBpbnB1dC5yZWFkSW50KCkpOworICAgICAgICB9CisgICAgfQorCisKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFRveVRyaWFuZ2xlSmFja3NvblNlcmlhbGl6ZXIgZXh0ZW5kcyBTdGRTY2FsYXJTZXJpYWxpemVyPFRveVRyaWFuZ2xlPiB7CisKKyAgICAgICAgcHVibGljIFRveVRyaWFuZ2xlSmFja3NvblNlcmlhbGl6ZXIoKSB7CisgICAgICAgICAgICBzdXBlcihUb3lUcmlhbmdsZS5jbGFzcyk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgc2VyaWFsaXplKGZpbmFsIFRveVRyaWFuZ2xlIHRveVRyaWFuZ2xlLCBmaW5hbCBKc29uR2VuZXJhdG9yIGpzb25HZW5lcmF0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBTZXJpYWxpemVyUHJvdmlkZXIgc2VyaWFsaXplclByb3ZpZGVyKSB0aHJvd3MgSU9FeGNlcHRpb24sIEpzb25HZW5lcmF0aW9uRXhjZXB0aW9uIHsKKyAgICAgICAgICAgIGpzb25HZW5lcmF0b3Iud3JpdGVTdGFydE9iamVjdCgpOworICAgICAgICAgICAganNvbkdlbmVyYXRvci53cml0ZU9iamVjdEZpZWxkKCJ4IiwgdG95VHJpYW5nbGUueCk7CisgICAgICAgICAgICBqc29uR2VuZXJhdG9yLndyaXRlT2JqZWN0RmllbGQoInkiLCB0b3lUcmlhbmdsZS55KTsKKyAgICAgICAgICAgIGpzb25HZW5lcmF0b3Iud3JpdGVPYmplY3RGaWVsZCgieiIsIHRveVRyaWFuZ2xlLnopOworICAgICAgICAgICAganNvbkdlbmVyYXRvci53cml0ZUVuZE9iamVjdCgpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBUb3lUcmlhbmdsZUphY2tzb25EZVNlcmlhbGl6ZXIgZXh0ZW5kcyBBYnN0cmFjdE9iamVjdERlc2VyaWFsaXplcjxUb3lUcmlhbmdsZT4geworCisgICAgICAgIHB1YmxpYyBUb3lUcmlhbmdsZUphY2tzb25EZVNlcmlhbGl6ZXIoKSB7CisgICAgICAgICAgICBzdXBlcihUb3lUcmlhbmdsZS5jbGFzcyk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFRveVRyaWFuZ2xlIGNyZWF0ZU9iamVjdChmaW5hbCBNYXA8U3RyaW5nLCBPYmplY3Q+IG1hcCkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBUb3lUcmlhbmdsZSgoaW50KSBtYXAuZ2V0KCJ4IiksIChpbnQpIG1hcC5nZXQoInkiKSwgKGludCkgbWFwLmdldCgieiIpKTsKKyAgICAgICAgfQorICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vdXRpbC9DdXN0b21JZC5qYXZhIGIvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vdXRpbC9DdXN0b21JZC5qYXZhCmluZGV4IGQ1MDNhZTguLjBhYjNiOTAgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL3V0aWwvQ3VzdG9tSWQuamF2YQorKysgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby91dGlsL0N1c3RvbUlkLmphdmEKQEAgLTE4LDkgKzE4LDE0IEBACiAgKi8KIHBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8udXRpbDsKIAoraW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkFic3RyYWN0SW9SZWdpc3RyeTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5JbzsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5Jb1JlZ2lzdHJ5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyYXBoc29uLkFic3RyYWN0T2JqZWN0RGVzZXJpYWxpemVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyYXBoc29uLkdyYXBoU09OSW87CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3JhcGhzb24uR3JhcGhTT05Ub2tlbnM7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3JhcGhzb24uVGlua2VyUG9wSmFja3Nvbk1vZHVsZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncnlvLkdyeW9JbzsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5zaGFkZWQuamFja3Nvbi5jb3JlLkpzb25HZW5lcmF0aW9uRXhjZXB0aW9uOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLnNoYWRlZC5qYWNrc29uLmNvcmUuSnNvbkdlbmVyYXRvcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5zaGFkZWQuamFja3Nvbi5jb3JlLkpzb25QYXJzZXI7CkBAIC0zMSwxMSArMzYsMTMgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5zaGFkZWQuamFja3Nvbi5kYXRhYmluZC5qc29udHlwZS5UeXBlU2VyaWFsaXplcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5zaGFkZWQuamFja3Nvbi5kYXRhYmluZC5zZXIuc3RkLlN0ZFNjYWxhclNlcmlhbGl6ZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3Auc2hhZGVkLmphY2tzb24uZGF0YWJpbmQuc2VyLnN0ZC5TdGRTZXJpYWxpemVyOworaW1wb3J0IG9yZy5qYXZhdHVwbGVzLlBhaXI7CiAKIGltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwogaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKIGltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKIGltcG9ydCBqYXZhLnV0aWwuTGlua2VkSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKIGltcG9ydCBqYXZhLnV0aWwuTWFwOwogaW1wb3J0IGphdmEudXRpbC5VVUlEOwogCkBAIC02Niw2ICs3MywyNCBAQAogICAgIH0KIAogICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhmaW5hbCBPYmplY3QgbykgeworICAgICAgICBpZiAodGhpcyA9PSBvKSByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKG8gPT0gbnVsbCB8fCBnZXRDbGFzcygpICE9IG8uZ2V0Q2xhc3MoKSkgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGZpbmFsIEN1c3RvbUlkIGN1c3RvbUlkID0gKEN1c3RvbUlkKSBvOworCisgICAgICAgIGlmICghY2x1c3Rlci5lcXVhbHMoY3VzdG9tSWQuY2x1c3RlcikpIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIGVsZW1lbnRJZC5lcXVhbHMoY3VzdG9tSWQuZWxlbWVudElkKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgeworICAgICAgICBpbnQgcmVzdWx0ID0gY2x1c3Rlci5oYXNoQ29kZSgpOworICAgICAgICByZXN1bHQgPSAzMSAqIHJlc3VsdCArIGVsZW1lbnRJZC5oYXNoQ29kZSgpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CiAgICAgICAgIHJldHVybiBjbHVzdGVyICsgIjoiICsgZWxlbWVudElkOwogICAgIH0KQEAgLTIxOSw0ICsyNDQsMTggQEAKICAgICAgICAgICAgIHJldHVybiAic2ltcGxlIjsKICAgICAgICAgfQogICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgQ3VzdG9tSWRJb1JlZ2lzdHJ5IGV4dGVuZHMgQWJzdHJhY3RJb1JlZ2lzdHJ5IHsKKworICAgICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBDdXN0b21JZElvUmVnaXN0cnkgSU5TVEFOQ0UgPSBuZXcgQ3VzdG9tSWRJb1JlZ2lzdHJ5KCk7CisKKyAgICAgICAgcHJpdmF0ZSBDdXN0b21JZElvUmVnaXN0cnkoKSB7CisgICAgICAgICAgICByZWdpc3RlcihHcnlvSW8uY2xhc3MsIEN1c3RvbUlkLmNsYXNzLCBudWxsKTsKKyAgICAgICAgICAgIHJlZ2lzdGVyKEdyYXBoU09OSW8uY2xhc3MsIG51bGwsIG5ldyBDdXN0b21JZFRpbmtlclBvcEphY2tzb25Nb2R1bGVWM2QwKCkpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHN0YXRpYyBDdXN0b21JZElvUmVnaXN0cnkgaW5zdGFuY2UoKSB7CisgICAgICAgICAgICByZXR1cm4gSU5TVEFOQ0U7CisgICAgICAgIH0KKyAgICB9CiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL2RldGFjaGVkL0RldGFjaGVkUHJvcGVydHlUZXN0LmphdmEgYi9ncmVtbGluLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS91dGlsL2RldGFjaGVkL0RldGFjaGVkUHJvcGVydHlUZXN0LmphdmEKaW5kZXggNmIxOTAzNS4uYTVhMDExYSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvdXRpbC9kZXRhY2hlZC9EZXRhY2hlZFByb3BlcnR5VGVzdC5qYXZhCisrKyBiL2dyZW1saW4tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL3V0aWwvZGV0YWNoZWQvRGV0YWNoZWRQcm9wZXJ0eVRlc3QuamF2YQpAQCAtOTUsOCArOTUsMTQgQEAKIAogICAgIEBUZXN0CiAgICAgQExvYWRHcmFwaFdpdGgoTG9hZEdyYXBoV2l0aC5HcmFwaERhdGEuTU9ERVJOKQotICAgIHB1YmxpYyB2b2lkIHNob3VsZE5vdEJlRXF1YWxQcm9wZXJ0aWVzQXNUaGVyZUlzRGlmZmVyZW50SWQoKSB7Ci0gICAgICAgIGFzc2VydEZhbHNlKERldGFjaGVkRmFjdG9yeS5kZXRhY2goZy5FKGNvbnZlcnRUb0VkZ2VJZCgibWFya28iLCAiY3JlYXRlZCIsICJsb3AiKSkubmV4dCgpLnByb3BlcnR5KCJ3ZWlnaHQiKSkuZXF1YWxzKERldGFjaGVkRmFjdG9yeS5kZXRhY2goZy5FKGNvbnZlcnRUb0VkZ2VJZCgiam9zaCIsICJjcmVhdGVkIiwgImxvcCIpKS5uZXh0KCkucHJvcGVydHkoIndlaWdodCIpKSkpOworICAgIHB1YmxpYyB2b2lkIHNob3VsZEJlRXF1YWxQcm9wZXJ0aWVzV2l0aFNhbWVLZXlWYWx1ZUFuZERpZmZlcmVudEVsZW1lbnQoKSB7CisgICAgICAgIGFzc2VydFRydWUoRGV0YWNoZWRGYWN0b3J5LmRldGFjaChnLkUoY29udmVydFRvRWRnZUlkKCJtYXJrbyIsICJjcmVhdGVkIiwgImxvcCIpKS5uZXh0KCkucHJvcGVydHkoIndlaWdodCIpKS5lcXVhbHMoRGV0YWNoZWRGYWN0b3J5LmRldGFjaChnLkUoY29udmVydFRvRWRnZUlkKCJqb3NoIiwgImNyZWF0ZWQiLCAibG9wIikpLm5leHQoKS5wcm9wZXJ0eSgid2VpZ2h0IikpKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBATG9hZEdyYXBoV2l0aChMb2FkR3JhcGhXaXRoLkdyYXBoRGF0YS5NT0RFUk4pCisgICAgcHVibGljIHZvaWQgc2hvdWxkTm90QmVFcXVhbFByb3BlcnRpZXNBc1RoZXJlSXNEaWZmZXJlbnRWYWx1ZSgpIHsKKyAgICAgICAgYXNzZXJ0RmFsc2UoRGV0YWNoZWRGYWN0b3J5LmRldGFjaChnLkUoY29udmVydFRvRWRnZUlkKCJtYXJrbyIsICJjcmVhdGVkIiwgImxvcCIpKS5uZXh0KCkucHJvcGVydHkoIndlaWdodCIpKS5lcXVhbHMoRGV0YWNoZWRGYWN0b3J5LmRldGFjaChnLkUoY29udmVydFRvRWRnZUlkKCJwZXRlciIsICJjcmVhdGVkIiwgImxvcCIpKS5uZXh0KCkucHJvcGVydHkoIndlaWdodCIpKSkpOwogICAgIH0KIAogICAgIEBUZXN0CkBAIC0xMDUsNyArMTExLDcgQEAKICAgICBARmVhdHVyZVJlcXVpcmVtZW50KGZlYXR1cmVDbGFzcyA9IEdyYXBoLkZlYXR1cmVzLkVkZ2VQcm9wZXJ0eUZlYXR1cmVzLmNsYXNzLCBmZWF0dXJlID0gR3JhcGguRmVhdHVyZXMuRWRnZVByb3BlcnR5RmVhdHVyZXMuRkVBVFVSRV9ET1VCTEVfVkFMVUVTKQogICAgIHB1YmxpYyB2b2lkIHNob3VsZE5vdEJlRXF1YWxQcm9wZXJ0aWVzQXNUaGVyZUlzRGlmZmVyZW50S2V5KCkgewogICAgICAgICBmaW5hbCBPYmplY3Qgam9zaENyZWF0ZWRMb3BFZGdlSWQgPSBjb252ZXJ0VG9FZGdlSWQoImpvc2giLCAiY3JlYXRlZCIsICJsb3AiKTsKLSAgICAgICAgZmluYWwgRWRnZSBlID0gZy5WKGNvbnZlcnRUb1ZlcnRleElkKCJqb3NoIikpLm5leHQoKS5hZGRFZGdlKCJjcmVhdGVkIiwgZy5WKGNvbnZlcnRUb1ZlcnRleElkKCJsb3AiKSkubmV4dCgpLCAid2VpZ2h0IiwgMC40ZCk7Ci0gICAgICAgIGFzc2VydEZhbHNlKERldGFjaGVkRmFjdG9yeS5kZXRhY2goZS5wcm9wZXJ0eSgid2VpZ2h0IikpLmVxdWFscyhEZXRhY2hlZEZhY3RvcnkuZGV0YWNoKGcuRShqb3NoQ3JlYXRlZExvcEVkZ2VJZCkubmV4dCgpLnByb3BlcnR5KCJ3ZWlnaHQiKSkpKTsKKyAgICAgICAgZmluYWwgRWRnZSBlID0gZy5WKGNvbnZlcnRUb1ZlcnRleElkKCJqb3NoIikpLm5leHQoKS5hZGRFZGdlKCJjcmVhdGVkIiwgZy5WKGNvbnZlcnRUb1ZlcnRleElkKCJsb3AiKSkubmV4dCgpLCAiZG91YmxlIiwgMC40ZCk7CisgICAgICAgIGFzc2VydEZhbHNlKERldGFjaGVkRmFjdG9yeS5kZXRhY2goZS5wcm9wZXJ0eSgiZG91YmxlIikpLmVxdWFscyhEZXRhY2hlZEZhY3RvcnkuZGV0YWNoKGcuRShqb3NoQ3JlYXRlZExvcEVkZ2VJZCkubmV4dCgpLnByb3BlcnR5KCJ3ZWlnaHQiKSkpKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9ncmVtbGluLXRlc3Qvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvRmVhdHVyZUNvdmVyYWdlVGVzdC5qYXZhIGIvZ3JlbWxpbi10ZXN0L3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL0ZlYXR1cmVDb3ZlcmFnZVRlc3QuamF2YQppbmRleCAyY2NhNTBiLi5lMDkxNTZiIDEwMDY0NAotLS0gYS9ncmVtbGluLXRlc3Qvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3Byb2Nlc3MvRmVhdHVyZUNvdmVyYWdlVGVzdC5qYXZhCisrKyBiL2dyZW1saW4tdGVzdC9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9GZWF0dXJlQ292ZXJhZ2VUZXN0LmphdmEKQEAgLTU4LDExICs1OCwxMyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuUGVlclByZXNzdXJlVGVzdDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlByb2plY3RUZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuUHJvcGVydGllc1Rlc3Q7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5SZWFkVGVzdDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlNlbGVjdFRlc3Q7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5TdW1UZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuVW5mb2xkVGVzdDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlZhbHVlTWFwVGVzdDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlZlcnRleFRlc3Q7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5Xcml0ZVRlc3Q7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnNpZGVFZmZlY3QuQWdncmVnYXRlVGVzdDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuc2lkZUVmZmVjdC5Hcm91cENvdW50VGVzdDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuc2lkZUVmZmVjdC5Hcm91cFRlc3Q7CkBAIC0xNjAsMTAgKzE2MiwxMiBAQAogICAgICAgICAgICAgICAgIEdyb3VwQ291bnRUZXN0LmNsYXNzLAogICAgICAgICAgICAgICAgIEdyb3VwVGVzdC5jbGFzcywKICAgICAgICAgICAgICAgICBJbmplY3RUZXN0LmNsYXNzLAorICAgICAgICAgICAgICAgIFJlYWRUZXN0LmNsYXNzLAogICAgICAgICAgICAgICAgIFNhY2tUZXN0LmNsYXNzLAogICAgICAgICAgICAgICAgIFNpZGVFZmZlY3RDYXBUZXN0LmNsYXNzLAogICAgICAgICAgICAgICAgIC8vU2lkZUVmZmVjdFRlc3QuY2xhc3MsCi0gICAgICAgICAgICAgICAgU3RvcmVUZXN0LmNsYXNzKTsKKyAgICAgICAgICAgICAgICBTdG9yZVRlc3QuY2xhc3MsCisgICAgICAgICAgICAgICAgV3JpdGVUZXN0LmNsYXNzKTsKICAgICAgICAgICAgICAgICAvLyBTdWJncmFwaFRlc3QuY2xhc3MsCiAgICAgICAgICAgICAgICAgLy8gVHJlZVRlc3QuY2xhc3MpOwogCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4tYmVuY2htYXJrL3BvbS54bWwgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4tYmVuY2htYXJrL3BvbS54bWwKaW5kZXggMzZmMTIwZC4uMWNmZmNiYiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWJlbmNobWFyay9wb20ueG1sCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1iZW5jaG1hcmsvcG9tLnhtbApAQCAtMjEsNyArMjEsNyBAQAogICAgIDxwYXJlbnQ+CiAgICAgICAgIDxhcnRpZmFjdElkPmdyZW1saW4tdG9vbHM8L2FydGlmYWN0SWQ+CiAgICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUudGlua2VycG9wPC9ncm91cElkPgotICAgICAgICA8dmVyc2lvbj4zLjMuMTEtU05BUFNIT1Q8L3ZlcnNpb24+CisgICAgICAgIDx2ZXJzaW9uPjMuNC43LVNOQVBTSE9UPC92ZXJzaW9uPgogICAgIDwvcGFyZW50PgogCiAgICAgPGFydGlmYWN0SWQ+Z3JlbWxpbi1iZW5jaG1hcms8L2FydGlmYWN0SWQ+CkBAIC01NSw2ICs1NSwxMSBAQAogICAgICAgICAgICAgPHZlcnNpb24+JHtwcm9qZWN0LnZlcnNpb259PC92ZXJzaW9uPgogICAgICAgICA8L2RlcGVuZGVuY3k+CiAgICAgICAgIDxkZXBlbmRlbmN5PgorICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS50aW5rZXJwb3A8L2dyb3VwSWQ+CisgICAgICAgICAgICA8YXJ0aWZhY3RJZD5ncmVtbGluLWRyaXZlcjwvYXJ0aWZhY3RJZD4KKyAgICAgICAgICAgIDx2ZXJzaW9uPiR7cHJvamVjdC52ZXJzaW9ufTwvdmVyc2lvbj4KKyAgICAgICAgPC9kZXBlbmRlbmN5PgorICAgICAgICA8ZGVwZW5kZW5jeT4KICAgICAgICAgICAgIDxncm91cElkPm9yZy5vcGVuamRrLmptaDwvZ3JvdXBJZD4KICAgICAgICAgICAgIDxhcnRpZmFjdElkPmptaC1jb3JlPC9hcnRpZmFjdElkPgogICAgICAgICAgICAgPHZlcnNpb24+JHtqbWgudmVyc2lvbn08L3ZlcnNpb24+CmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4tYmVuY2htYXJrL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvR3JhcGhCaW5hcnlSZWFkZXJXcml0ZXJCZW5jaG1hcmsuamF2YSBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1iZW5jaG1hcmsvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9HcmFwaEJpbmFyeVJlYWRlcldyaXRlckJlbmNobWFyay5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyNDc0MzQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4tYmVuY2htYXJrL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvR3JhcGhCaW5hcnlSZWFkZXJXcml0ZXJCZW5jaG1hcmsuamF2YQpAQCAtMCwwICsxLDEyOSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyOworCitpbXBvcnQgaW8ubmV0dHkuYnVmZmVyLlVucG9vbGVkQnl0ZUJ1ZkFsbG9jYXRvcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5iZW5jaG1hcmsudXRpbC5BYnN0cmFjdEJlbmNobWFya0Jhc2U7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLk5ldHR5QnVmZmVyRmFjdG9yeTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLkJ5dGVjb2RlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5HcmFwaDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5CdWZmZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5UmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5HcmFwaEJpbmFyeVdyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnN0cnVjdHVyZS5UaW5rZXJHcmFwaDsKK2ltcG9ydCBvcmcub3Blbmpkay5qbWguYW5ub3RhdGlvbnMuQmVuY2htYXJrOworaW1wb3J0IG9yZy5vcGVuamRrLmptaC5hbm5vdGF0aW9ucy5MZXZlbDsKK2ltcG9ydCBvcmcub3Blbmpkay5qbWguYW5ub3RhdGlvbnMuU2NvcGU7CitpbXBvcnQgb3JnLm9wZW5qZGsuam1oLmFubm90YXRpb25zLlNldHVwOworaW1wb3J0IG9yZy5vcGVuamRrLmptaC5hbm5vdGF0aW9ucy5TdGF0ZTsKK2ltcG9ydCBvcmcub3Blbmpkay5qbWguYW5ub3RhdGlvbnMuVGVhckRvd247CitpbXBvcnQgb3JnLm9wZW5qZGsuam1oLmFubm90YXRpb25zLldhcm11cDsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5tYXRoLkJpZ0ludGVnZXI7CitpbXBvcnQgamF2YS5uZXQuSW5ldEFkZHJlc3M7CitpbXBvcnQgamF2YS50aW1lLkluc3RhbnQ7CitpbXBvcnQgamF2YS51dGlsLlVVSUQ7CisKK2ltcG9ydCBzdGF0aWMgamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQuTUlMTElTRUNPTkRTOworCitAV2FybXVwKHRpbWUgPSAyMDAsIHRpbWVVbml0ID0gTUlMTElTRUNPTkRTKQorcHVibGljIGNsYXNzIEdyYXBoQmluYXJ5UmVhZGVyV3JpdGVyQmVuY2htYXJrIGV4dGVuZHMgQWJzdHJhY3RCZW5jaG1hcmtCYXNlIHsKKyAgICBwcml2YXRlIHN0YXRpYyBHcmFwaEJpbmFyeVJlYWRlciByZWFkZXIgPSBuZXcgR3JhcGhCaW5hcnlSZWFkZXIoKTsKKyAgICBwcml2YXRlIHN0YXRpYyBHcmFwaEJpbmFyeVdyaXRlciB3cml0ZXIgPSBuZXcgR3JhcGhCaW5hcnlXcml0ZXIoKTsKKyAgICBwcml2YXRlIHN0YXRpYyBVbnBvb2xlZEJ5dGVCdWZBbGxvY2F0b3IgYWxsb2NhdG9yID0gbmV3IFVucG9vbGVkQnl0ZUJ1ZkFsbG9jYXRvcihmYWxzZSk7CisgICAgcHJpdmF0ZSBzdGF0aWMgTmV0dHlCdWZmZXJGYWN0b3J5IGJ1ZmZlckZhY3RvcnkgPSBuZXcgTmV0dHlCdWZmZXJGYWN0b3J5KCk7CisKKyAgICBAU3RhdGUoU2NvcGUuVGhyZWFkKQorICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgQmVuY2htYXJrU3RhdGUgeworICAgICAgICBwdWJsaWMgQnVmZmVyIGJ5dGVjb2RlQnVmZmVyMSA9IGJ1ZmZlckZhY3RvcnkuY3JlYXRlKGFsbG9jYXRvci5idWZmZXIoMjA0OCkpOworICAgICAgICBwdWJsaWMgQnVmZmVyIGJ5dGVjb2RlQnVmZmVyMiA9IGJ1ZmZlckZhY3RvcnkuY3JlYXRlKGFsbG9jYXRvci5idWZmZXIoMjA0OCkpOworICAgICAgICBwdWJsaWMgQnVmZmVyIHBCdWZmZXIxID0gYnVmZmVyRmFjdG9yeS5jcmVhdGUoYWxsb2NhdG9yLmJ1ZmZlcigyMDQ4KSk7CisgICAgICAgIHB1YmxpYyBmaW5hbCBCeXRlY29kZSBieXRlY29kZTEgPSBuZXcgQnl0ZWNvZGUoKTsKKworICAgICAgICBwdWJsaWMgQnVmZmVyIGJ1ZmZlcldyaXRlID0gYnVmZmVyRmFjdG9yeS5jcmVhdGUoYWxsb2NhdG9yLmJ1ZmZlcigyMDQ4KSk7CisKKyAgICAgICAgcHVibGljIEJ5dGVjb2RlIGJ5dGVjb2RlMjsKKworICAgICAgICBAU2V0dXAoTGV2ZWwuVHJpYWwpCisgICAgICAgIHB1YmxpYyB2b2lkIGRvU2V0dXAoKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICAgICAgYnl0ZWNvZGUxLmFkZFN0ZXAoIlYiKTsKKyAgICAgICAgICAgIGJ5dGVjb2RlMS5hZGRTdGVwKCJ2YWx1ZXMiLCAibmFtZSIpOworICAgICAgICAgICAgYnl0ZWNvZGUxLmFkZFN0ZXAoInRhaWwiLCA1KTsKKworICAgICAgICAgICAgR3JhcGggZyA9IFRpbmtlckdyYXBoLm9wZW4oKTsKKworICAgICAgICAgICAgYnl0ZWNvZGUyID0gZy50cmF2ZXJzYWwoKQorICAgICAgICAgICAgICAgICAgICAuYWRkVigicGVyc29uIikKKyAgICAgICAgICAgICAgICAgICAgLnByb3BlcnR5KCJuYW1lMSIsIDEpCisgICAgICAgICAgICAgICAgICAgIC5wcm9wZXJ0eSgibmFtZTIiLCBVVUlELnJhbmRvbVVVSUQoKSkKKyAgICAgICAgICAgICAgICAgICAgLnByb3BlcnR5KCJuYW1lMyIsIEluZXRBZGRyZXNzLmdldEJ5QWRkcmVzcyhuZXcgYnl0ZVtdIHsgMTI3LCAwLCAwLCAxfSkpCisgICAgICAgICAgICAgICAgICAgIC5wcm9wZXJ0eSgibmFtZTQiLCBCaWdJbnRlZ2VyLnZhbHVlT2YoMzMzNDM0NTUzNDIyNDVMKSkKKyAgICAgICAgICAgICAgICAgICAgLnByb3BlcnR5KCJuYW1lNSIsICJramxrZG52bGtkcm52bGRudm5kbHJrdm5saGtqZGtna3J0bmxrbmRibGtubGtub25ib2lybmxrYm5ydGJvbnJvYmlub2tibnJrbG5ia3JuYmxrdGVuZ290cm5nb3Rrcm5nbGt0IikKKyAgICAgICAgICAgICAgICAgICAgLnByb3BlcnR5KCJuYW1lNiIsIEluc3RhbnQubm93KCkpCisgICAgICAgICAgICAgICAgICAgIC5hc0FkbWluKCkuZ2V0Qnl0ZWNvZGUoKTsKKworICAgICAgICAgICAgd3JpdGVyLndyaXRlVmFsdWUoYnl0ZWNvZGUxLCBieXRlY29kZUJ1ZmZlcjEsIGZhbHNlKTsKKyAgICAgICAgICAgIHdyaXRlci53cml0ZVZhbHVlKGJ5dGVjb2RlMiwgYnl0ZWNvZGVCdWZmZXIyLCBmYWxzZSk7CisgICAgICAgICAgICB3cml0ZXIud3JpdGVWYWx1ZShQLmJldHdlZW4oMSwgMiksIHBCdWZmZXIxLCBmYWxzZSk7CisgICAgICAgIH0KKworICAgICAgICBAU2V0dXAoTGV2ZWwuSW52b2NhdGlvbikKKyAgICAgICAgcHVibGljIHZvaWQgc2V0dXBJbnZvY2F0aW9uKCkgeworICAgICAgICAgICAgYnl0ZWNvZGVCdWZmZXIxLnJlYWRlckluZGV4KDApOworICAgICAgICAgICAgYnl0ZWNvZGVCdWZmZXIyLnJlYWRlckluZGV4KDApOworICAgICAgICAgICAgcEJ1ZmZlcjEucmVhZGVySW5kZXgoMCk7CisgICAgICAgICAgICBidWZmZXJXcml0ZS5yZWFkZXJJbmRleCgwKTsKKyAgICAgICAgICAgIGJ1ZmZlcldyaXRlLndyaXRlckluZGV4KDApOworICAgICAgICB9CisKKyAgICAgICAgQFRlYXJEb3duKExldmVsLlRyaWFsKQorICAgICAgICBwdWJsaWMgdm9pZCBkb1RlYXJEb3duKCkgeworICAgICAgICAgICAgYnl0ZWNvZGVCdWZmZXIxLnJlbGVhc2UoKTsKKyAgICAgICAgICAgIGJ5dGVjb2RlQnVmZmVyMi5yZWxlYXNlKCk7CisgICAgICAgICAgICBidWZmZXJXcml0ZS5yZWxlYXNlKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAQmVuY2htYXJrCisgICAgcHVibGljIHZvaWQgd3JpdGVCeXRlY29kZTEoQmVuY2htYXJrU3RhdGUgc3RhdGUpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIHdyaXRlci53cml0ZVZhbHVlKHN0YXRlLmJ5dGVjb2RlMSwgc3RhdGUuYnVmZmVyV3JpdGUsIGZhbHNlKTsKKyAgICB9CisKKyAgICBAQmVuY2htYXJrCisgICAgcHVibGljIHZvaWQgd3JpdGVCeXRlY29kZTIoQmVuY2htYXJrU3RhdGUgc3RhdGUpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIHdyaXRlci53cml0ZVZhbHVlKHN0YXRlLmJ5dGVjb2RlMiwgc3RhdGUuYnVmZmVyV3JpdGUsIGZhbHNlKTsKKyAgICB9CisKKyAgICBAQmVuY2htYXJrCisgICAgcHVibGljIHZvaWQgcmVhZEJ5dGVjb2RlMShCZW5jaG1hcmtTdGF0ZSBzdGF0ZSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgcmVhZGVyLnJlYWRWYWx1ZShzdGF0ZS5ieXRlY29kZUJ1ZmZlcjEsIEJ5dGVjb2RlLmNsYXNzLCBmYWxzZSk7CisgICAgfQorCisgICAgQEJlbmNobWFyaworICAgIHB1YmxpYyB2b2lkIHJlYWRCeXRlY29kZTIoQmVuY2htYXJrU3RhdGUgc3RhdGUpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIHJlYWRlci5yZWFkVmFsdWUoc3RhdGUuYnl0ZWNvZGVCdWZmZXIyLCBCeXRlY29kZS5jbGFzcywgZmFsc2UpOworICAgIH0KKworICAgIEBCZW5jaG1hcmsKKyAgICBwdWJsaWMgdm9pZCByZWFkUDEoQmVuY2htYXJrU3RhdGUgc3RhdGUpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIHJlYWRlci5yZWFkVmFsdWUoc3RhdGUucEJ1ZmZlcjEsIFAuY2xhc3MsIGZhbHNlKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4tYmVuY2htYXJrL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvR3JhcGhTT05NYXBwZXJCZW5jaG1hcmsuamF2YSBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1iZW5jaG1hcmsvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9HcmFwaFNPTk1hcHBlckJlbmNobWFyay5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3ODdjYTcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4tYmVuY2htYXJrL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvR3JhcGhTT05NYXBwZXJCZW5jaG1hcmsuamF2YQpAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuYmVuY2htYXJrLnV0aWwuQWJzdHJhY3RCZW5jaG1hcmtCYXNlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuQnl0ZWNvZGU7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3JhcGhzb24uR3JhcGhTT05NYXBwZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3JhcGhzb24uR3JhcGhTT05WZXJzaW9uOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyYXBoc29uLkdyYXBoU09OWE1vZHVsZVYzZDA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi50aW5rZXJncmFwaC5zdHJ1Y3R1cmUuVGlua2VyR3JhcGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3Auc2hhZGVkLmphY2tzb24uZGF0YWJpbmQuT2JqZWN0TWFwcGVyOworaW1wb3J0IG9yZy5vcGVuamRrLmptaC5hbm5vdGF0aW9ucy5CZW5jaG1hcms7CitpbXBvcnQgb3JnLm9wZW5qZGsuam1oLmFubm90YXRpb25zLkxldmVsOworaW1wb3J0IG9yZy5vcGVuamRrLmptaC5hbm5vdGF0aW9ucy5TY29wZTsKK2ltcG9ydCBvcmcub3Blbmpkay5qbWguYW5ub3RhdGlvbnMuU2V0dXA7CitpbXBvcnQgb3JnLm9wZW5qZGsuam1oLmFubm90YXRpb25zLlN0YXRlOworaW1wb3J0IG9yZy5vcGVuamRrLmptaC5hbm5vdGF0aW9ucy5UZWFyRG93bjsKK2ltcG9ydCBvcmcub3Blbmpkay5qbWguYW5ub3RhdGlvbnMuV2FybXVwOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLm1hdGguQmlnSW50ZWdlcjsKK2ltcG9ydCBqYXZhLm5ldC5JbmV0QWRkcmVzczsKK2ltcG9ydCBqYXZhLnRpbWUuSW5zdGFudDsKK2ltcG9ydCBqYXZhLnV0aWwuVVVJRDsKKworaW1wb3J0IHN0YXRpYyBqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdC5NSUxMSVNFQ09ORFM7CisKK0BXYXJtdXAodGltZSA9IDIwMCwgdGltZVVuaXQgPSBNSUxMSVNFQ09ORFMpCitwdWJsaWMgY2xhc3MgR3JhcGhTT05NYXBwZXJCZW5jaG1hcmsgZXh0ZW5kcyBBYnN0cmFjdEJlbmNobWFya0Jhc2UgeworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIE9iamVjdE1hcHBlciBtYXBwZXIgPSBHcmFwaFNPTk1hcHBlci5idWlsZCgpCisgICAgICAgICAgICAudmVyc2lvbihHcmFwaFNPTlZlcnNpb24uVjNfMCkKKyAgICAgICAgICAgIC5hZGRDdXN0b21Nb2R1bGUoR3JhcGhTT05YTW9kdWxlVjNkMC5idWlsZCgpLmNyZWF0ZShmYWxzZSkpCisgICAgICAgICAgICAuY3JlYXRlKCkuY3JlYXRlTWFwcGVyKCk7CisKKyAgICBAU3RhdGUoU2NvcGUuVGhyZWFkKQorICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgQmVuY2htYXJrU3RhdGUgeworCisgICAgICAgIHB1YmxpYyBieXRlW10gYnl0ZWNvZGVCeXRlczE7CisgICAgICAgIHByaXZhdGUgYnl0ZVtdIGJ5dGVjb2RlQnl0ZXMyOworICAgICAgICBwcml2YXRlIGZpbmFsIEJ5dGVjb2RlIGJ5dGVjb2RlMSA9IG5ldyBCeXRlY29kZSgpOworICAgICAgICBwcml2YXRlIEJ5dGVjb2RlIGJ5dGVjb2RlMjsKKworICAgICAgICBAU2V0dXAoTGV2ZWwuVHJpYWwpCisgICAgICAgIHB1YmxpYyB2b2lkIGRvU2V0dXAoKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICAgICAgYnl0ZWNvZGUxLmFkZFN0ZXAoIlYiKTsKKyAgICAgICAgICAgIGJ5dGVjb2RlMS5hZGRTdGVwKCJ2YWx1ZXMiLCAibmFtZSIpOworICAgICAgICAgICAgYnl0ZWNvZGUxLmFkZFN0ZXAoInRhaWwiLCA1KTsKKworICAgICAgICAgICAgR3JhcGggZyA9IFRpbmtlckdyYXBoLm9wZW4oKTsKKworICAgICAgICAgICAgYnl0ZWNvZGUyID0gZy50cmF2ZXJzYWwoKQorICAgICAgICAgICAgICAgICAgICAuYWRkVigicGVyc29uIikKKyAgICAgICAgICAgICAgICAgICAgLnByb3BlcnR5KCJuYW1lMSIsIDEpCisgICAgICAgICAgICAgICAgICAgIC5wcm9wZXJ0eSgibmFtZTIiLCBVVUlELnJhbmRvbVVVSUQoKSkKKyAgICAgICAgICAgICAgICAgICAgLnByb3BlcnR5KCJuYW1lMyIsIEluZXRBZGRyZXNzLmdldEJ5QWRkcmVzcyhuZXcgYnl0ZVtdIHsgMTI3LCAwLCAwLCAxfSkpCisgICAgICAgICAgICAgICAgICAgIC5wcm9wZXJ0eSgibmFtZTQiLCBCaWdJbnRlZ2VyLnZhbHVlT2YoMzMzNDM0NTUzNDIyNDVMKSkKKyAgICAgICAgICAgICAgICAgICAgLnByb3BlcnR5KCJuYW1lNSIsICJramxrZG52bGtkcm52bGRudm5kbHJrdm5saGtqZGtna3J0bmxrbmRibGtubGtub25ib2lybmxrYm5ydGJvbnJvYmlub2tibnJrbG5ia3JuYmxrdGVuZ290cm5nb3Rrcm5nbGt0IikKKyAgICAgICAgICAgICAgICAgICAgLnByb3BlcnR5KCJuYW1lNiIsIEluc3RhbnQubm93KCkpCisgICAgICAgICAgICAgICAgICAgIC5hc0FkbWluKCkuZ2V0Qnl0ZWNvZGUoKTsKKworCisgICAgICAgICAgICBieXRlY29kZUJ5dGVzMSA9IG1hcHBlci53cml0ZVZhbHVlQXNCeXRlcyhieXRlY29kZTEpOworICAgICAgICAgICAgYnl0ZWNvZGVCeXRlczIgPSBtYXBwZXIud3JpdGVWYWx1ZUFzQnl0ZXMoYnl0ZWNvZGUyKTsKKyAgICAgICAgfQorCisgICAgICAgIEBUZWFyRG93bihMZXZlbC5UcmlhbCkKKyAgICAgICAgcHVibGljIHZvaWQgZG9UZWFyRG93bigpIHsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBCZW5jaG1hcmsKKyAgICBwdWJsaWMgdm9pZCByZWFkQnl0ZWNvZGUxKEJlbmNobWFya1N0YXRlIHN0YXRlKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBtYXBwZXIucmVhZFZhbHVlKHN0YXRlLmJ5dGVjb2RlQnl0ZXMxLCBCeXRlY29kZS5jbGFzcyk7CisgICAgfQorCisgICAgQEJlbmNobWFyaworICAgIHB1YmxpYyB2b2lkIHJlYWRCeXRlY29kZTIoQmVuY2htYXJrU3RhdGUgc3RhdGUpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIG1hcHBlci5yZWFkVmFsdWUoc3RhdGUuYnl0ZWNvZGVCeXRlczIsIEJ5dGVjb2RlLmNsYXNzKTsKKyAgICB9CisKKyAgICBAQmVuY2htYXJrCisgICAgcHVibGljIHZvaWQgd3JpdGVCeXRlY29kZTEoQmVuY2htYXJrU3RhdGUgc3RhdGUpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIG1hcHBlci53cml0ZVZhbHVlQXNTdHJpbmcoc3RhdGUuYnl0ZWNvZGUxKTsKKyAgICB9CisKKyAgICBAQmVuY2htYXJrCisgICAgcHVibGljIHZvaWQgd3JpdGVCeXRlY29kZTIoQmVuY2htYXJrU3RhdGUgc3RhdGUpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIG1hcHBlci53cml0ZVZhbHVlQXNCeXRlcyhzdGF0ZS5ieXRlY29kZTIpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1iZW5jaG1hcmsvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2RyaXZlci9TZXJpYWxpemF0aW9uQmVuY2htYXJrLmphdmEgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4tYmVuY2htYXJrL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvU2VyaWFsaXphdGlvbkJlbmNobWFyay5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkNGNlODQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4tYmVuY2htYXJrL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9kcml2ZXIvU2VyaWFsaXphdGlvbkJlbmNobWFyay5qYXZhCkBAIC0wLDAgKzEsMTc3IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXI7CisKK2ltcG9ydCBpby5uZXR0eS5idWZmZXIuQnl0ZUJ1ZjsKK2ltcG9ydCBpby5uZXR0eS5idWZmZXIuVW5wb29sZWQ7CitpbXBvcnQgaW8ubmV0dHkuYnVmZmVyLlVucG9vbGVkQnl0ZUJ1ZkFsbG9jYXRvcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5iZW5jaG1hcmsudXRpbC5BYnN0cmFjdEJlbmNobWFya0Jhc2U7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIubWVzc2FnZS5SZXF1ZXN0TWVzc2FnZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5tZXNzYWdlLlJlc3BvbnNlTWVzc2FnZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5tZXNzYWdlLlJlc3BvbnNlU3RhdHVzQ29kZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuR3JhcGhCaW5hcnlNZXNzYWdlU2VyaWFsaXplclYxOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZHJpdmVyLnNlci5HcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjNkMDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuU2VyaWFsaXphdGlvbkV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLkJ5dGVjb2RlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmJpbmFyeS5EYXRhVHlwZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLnJlZmVyZW5jZS5SZWZlcmVuY2VWZXJ0ZXg7CitpbXBvcnQgb3JnLm9wZW5qZGsuam1oLmFubm90YXRpb25zLkJlbmNobWFyazsKK2ltcG9ydCBvcmcub3Blbmpkay5qbWguYW5ub3RhdGlvbnMuV2FybXVwOworCitpbXBvcnQgamF2YS5uaW8uY2hhcnNldC5TdGFuZGFyZENoYXJzZXRzOworaW1wb3J0IGphdmEudXRpbC5VVUlEOworCitpbXBvcnQgc3RhdGljIGphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0Lk1JTExJU0VDT05EUzsKKworQFdhcm11cCh0aW1lID0gMjAwLCB0aW1lVW5pdCA9IE1JTExJU0VDT05EUykKK3B1YmxpYyBjbGFzcyBTZXJpYWxpemF0aW9uQmVuY2htYXJrIGV4dGVuZHMgQWJzdHJhY3RCZW5jaG1hcmtCYXNlIHsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFVucG9vbGVkQnl0ZUJ1ZkFsbG9jYXRvciBhbGxvY2F0b3IgPSBuZXcgVW5wb29sZWRCeXRlQnVmQWxsb2NhdG9yKGZhbHNlKTsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIEJ5dGVCdWYgUmVxdWVzdE1lc3NhZ2VHcmFwaFNPTkJ1ZmZlcjEgPSBVbnBvb2xlZC53cmFwcGVkQnVmZmVyKAorICAgICAgICAgICAgKCJ7XCJyZXF1ZXN0SWRcIjp7XCJAdHlwZVwiOlwiZzpVVUlEXCIsXCJAdmFsdWVcIjpcIjliNmQxN2MwLWM1YTktNDE4ZS1iZmY2LWEyNWZiYjFiMTc1ZVwifSwiICsKKyAgICAgICAgICAgICAgICAgICAgIlwib3BcIjpcImFcIixcInByb2Nlc3NvclwiOlwiYlwiLFwiYXJnc1wiOnt9fSIpCisgICAgICAgICAgICAgICAgICAgIC5nZXRCeXRlcyhTdGFuZGFyZENoYXJzZXRzLlVURl84KSk7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBCeXRlQnVmIFJlcXVlc3RNZXNzYWdlR3JhcGhTT05CdWZmZXIyID0gVW5wb29sZWQud3JhcHBlZEJ1ZmZlcigKKyAgICAgICAgICAgICgie1wicmVxdWVzdElkXCI6e1wiQHR5cGVcIjpcImc6VVVJRFwiLFwiQHZhbHVlXCI6XCIwNDJiODQwMC1kNTg2LTRmY2ItYjA4NS0yY2YyYWIyYmQ1Y2JcIn0sIiArCisgICAgICAgICAgICAgICAgICAgICJcIm9wXCI6XCJieXRlY29kZVwiLFwicHJvY2Vzc29yXCI6XCJ0cmF2ZXJzYWxcIixcImFyZ3NcIjp7XCJncmVtbGluXCI6IiArCisgICAgICAgICAgICAgICAgICAgICJ7XCJAdHlwZVwiOlwiZzpCeXRlY29kZVwiLFwiQHZhbHVlXCI6e1wic3RlcFwiOltbXCJWXCJdLFtcInRhaWxcIl1dfX0sXCJhbGlhc2VzXCI6e1wiZ1wiOlwiZ1wifX19IikKKyAgICAgICAgICAgICAgICAgICAgLmdldEJ5dGVzKFN0YW5kYXJkQ2hhcnNldHMuVVRGXzgpKTsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIEJ5dGVCdWYgUmVxdWVzdE1lc3NhZ2VCaW5hcnlCdWZmZXIxID0gVW5wb29sZWQud3JhcHBlZEJ1ZmZlcihuZXcgYnl0ZVtdeworICAgICAgICAgICAgLy8gZmxhZworICAgICAgICAgICAgKGJ5dGUpMHg4MSwKKyAgICAgICAgICAgIC8vIHV1aWQKKyAgICAgICAgICAgIChieXRlKSAweGQzLCAoYnl0ZSkgMHhmZCwgMHgzNSwgMHg0MCwgMHg2NywgMHgxOCwgMHg0NiwgKGJ5dGUpIDB4ODcsKGJ5dGUpIDB4OTUsIDB4NmIsIChieXRlKSAweGM4LCAweDYxLAorICAgICAgICAgICAgKGJ5dGUpIDB4OGEsIDB4MjYsIChieXRlKSAweGUzLCAweDM1LAorICAgICAgICAgICAgLy8gc3RyaW5nIGxlbmd0aCBhbmQgc3RyaW5nIHZhbHVlIChhKQorICAgICAgICAgICAgMCwgMCwgMCwgMHgwMSwgMHg2MSwKKyAgICAgICAgICAgIC8vIHN0cmluZyBsZW5ndGggYW5kIHN0cmluZyB2YWx1ZSAoYikKKyAgICAgICAgICAgIDAsIDAsIDAsIDB4MDEsIDB4NjIsCisgICAgICAgICAgICAvLyBNYXAgKG5vIGl0ZW1zKQorICAgICAgICAgICAgMCwgMCwgMCwgMAorICAgIH0pOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgQnl0ZUJ1ZiBSZXF1ZXN0TWVzc2FnZUJpbmFyeUJ1ZmZlcjIgPSBVbnBvb2xlZC53cmFwcGVkQnVmZmVyKG5ldyBieXRlW117CisgICAgICAgICAgICAvLyBmbGFnCisgICAgICAgICAgICAoYnl0ZSkweDgxLAorICAgICAgICAgICAgLy8gdXVpZAorICAgICAgICAgICAgKGJ5dGUpIDB4ZDMsIChieXRlKSAweGZkLCAweDM1LCAweDQwLCAweDY3LCAweDE4LCAweDQ2LCAoYnl0ZSkgMHg4NywoYnl0ZSkgMHg5NSwgMHg2YiwgKGJ5dGUpIDB4YzgsIDB4NjEsCisgICAgICAgICAgICAoYnl0ZSkgMHg4YSwgMHgyNiwgKGJ5dGUpIDB4ZTMsIDB4MzUsCisgICAgICAgICAgICAvLyBzdHJpbmcgbGVuZ3RoIGFuZCBzdHJpbmcgdmFsdWUgKGEpCisgICAgICAgICAgICAwLCAwLCAwLCAweDAxLCAweDYxLAorICAgICAgICAgICAgLy8gc3RyaW5nIGxlbmd0aCBhbmQgc3RyaW5nIHZhbHVlIChiKQorICAgICAgICAgICAgMCwgMCwgMCwgMHgwMSwgMHg2MiwKKyAgICAgICAgICAgIC8vIE1hcCAoMiBpdGVtcykKKyAgICAgICAgICAgIDAsIDAsIDAsIDB4MiwKKyAgICAgICAgICAgIC8vICJhbGlhc2VzIgorICAgICAgICAgICAgRGF0YVR5cGUuU1RSSU5HLmdldENvZGVCeXRlKCksIDAsIDAsIDAsIDAsIDB4MDcsIDB4NjEsIDB4NmMsIDB4NjksIDB4NjEsIDB4NzMsIDB4NjUsIDB4NzMsCisgICAgICAgICAgICAvLyBtYXAgeyBnOiBnIH0KKyAgICAgICAgICAgIERhdGFUeXBlLk1BUC5nZXRDb2RlQnl0ZSgpLCAwLCAwLCAwLCAwLCAweDEsCisgICAgICAgICAgICBEYXRhVHlwZS5TVFJJTkcuZ2V0Q29kZUJ5dGUoKSwgMCwgMCwgMCwgMCwgMHgwMSwgMHg2NywKKyAgICAgICAgICAgIERhdGFUeXBlLlNUUklORy5nZXRDb2RlQnl0ZSgpLCAwLCAwLCAwLCAwLCAweDAxLCAweDY3LAorICAgICAgICAgICAgLy8gImdyZW1saW4iCisgICAgICAgICAgICBEYXRhVHlwZS5TVFJJTkcuZ2V0Q29kZUJ5dGUoKSwgMCwgMCwgMCwgMCwgMHgwNywgMHg2NywgMHg3MiwgMHg2NSwgMHg2ZCwgMHg2YywgMHg2OSwgMHg2ZSwKKyAgICAgICAgICAgIC8vIEJ5dGVjb2RlIGZvciBbJ1YnLCAndGFpbCddCisgICAgICAgICAgICBEYXRhVHlwZS5CWVRFQ09ERS5nZXRDb2RlQnl0ZSgpLCAwLCAwLCAwLCAwLCAweDAyLAorICAgICAgICAgICAgLy8gIlYiIChubyB2YWx1ZXMpCisgICAgICAgICAgICAwLCAwLCAwLCAweDEsIDB4NTYsIDAsIDAsIDAsIDAsCisgICAgICAgICAgICAvLyB0YWlsIChubyB2YWx1ZXMpCisgICAgICAgICAgICAwLCAwLCAwLCAweDQsIDB4NzQsIDB4NjEsIDB4NjksIDB4NmMsIDAsIDAsIDAsIDAsCisgICAgICAgICAgICAvLyBubyBzb3VyY2VzCisgICAgICAgICAgICAwLCAwLCAwLCAwCisgICAgfSk7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBVVUlEIGlkID0gVVVJRC5yYW5kb21VVUlEKCk7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBSZXNwb25zZU1lc3NhZ2UgcmVzcG9uc2UgPSBSZXNwb25zZU1lc3NhZ2UKKyAgICAgICAgICAgIC5idWlsZChVVUlELnJhbmRvbVVVSUQoKSkuY29kZShSZXNwb25zZVN0YXR1c0NvZGUuU1VDQ0VTUykucmVzdWx0KG5ldyBSZWZlcmVuY2VWZXJ0ZXgoMSwgInBlcnNvbiIpKQorICAgICAgICAgICAgLmNyZWF0ZSgpOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgQnl0ZWNvZGUgYnl0ZWNvZGUgPSBuZXcgQnl0ZWNvZGUoKTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBSZXF1ZXN0TWVzc2FnZSByZXF1ZXN0ID0gUmVxdWVzdE1lc3NhZ2UKKyAgICAgICAgICAgIC5idWlsZChUb2tlbnMuT1BTX0JZVEVDT0RFKS5wcm9jZXNzb3IoInRyYXZlcnNhbCIpLm92ZXJyaWRlUmVxdWVzdElkKFVVSUQucmFuZG9tVVVJRCgpKQorICAgICAgICAgICAgLmFkZChUb2tlbnMuQVJHU19HUkVNTElOLCBieXRlY29kZSkKKyAgICAgICAgICAgIC5jcmVhdGUoKTsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIEdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMSBiaW5hcnlTZXJpYWxpemVyID0gbmV3IEdyYXBoQmluYXJ5TWVzc2FnZVNlcmlhbGl6ZXJWMSgpOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIEdyYXBoU09OTWVzc2FnZVNlcmlhbGl6ZXJWM2QwIGdyYXBoc29uU2VyaWFsaXplciA9IG5ldyBHcmFwaFNPTk1lc3NhZ2VTZXJpYWxpemVyVjNkMCgpOworCisgICAgc3RhdGljIHsKKyAgICAgICAgYnl0ZWNvZGUuYWRkU3RlcCgiViIpOworICAgICAgICBieXRlY29kZS5hZGRTdGVwKCJ2YWx1ZXMiLCAibmFtZSIpOworICAgICAgICBieXRlY29kZS5hZGRTdGVwKCJvcmRlciIpOworICAgICAgICBieXRlY29kZS5hZGRTdGVwKCJ0YWlsIiwgNSk7CisgICAgfQorCisgICAgQEJlbmNobWFyaworICAgIHB1YmxpYyBSZXF1ZXN0TWVzc2FnZSB0ZXN0UmVhZE1lc3NhZ2UxQmluYXJ5KCkgdGhyb3dzIFNlcmlhbGl6YXRpb25FeGNlcHRpb24geworICAgICAgICBSZXF1ZXN0TWVzc2FnZUJpbmFyeUJ1ZmZlcjEucmVhZGVySW5kZXgoMCk7CisKKyAgICAgICAgcmV0dXJuIGJpbmFyeVNlcmlhbGl6ZXIuZGVzZXJpYWxpemVSZXF1ZXN0KFJlcXVlc3RNZXNzYWdlQmluYXJ5QnVmZmVyMSk7CisgICAgfQorCisgICAgQEJlbmNobWFyaworICAgIHB1YmxpYyBSZXF1ZXN0TWVzc2FnZSB0ZXN0UmVhZE1lc3NhZ2UyQmluYXJ5KCkgdGhyb3dzIFNlcmlhbGl6YXRpb25FeGNlcHRpb24geworICAgICAgICBSZXF1ZXN0TWVzc2FnZUJpbmFyeUJ1ZmZlcjIucmVhZGVySW5kZXgoMCk7CisgICAgICAgIHJldHVybiBiaW5hcnlTZXJpYWxpemVyLmRlc2VyaWFsaXplUmVxdWVzdChSZXF1ZXN0TWVzc2FnZUJpbmFyeUJ1ZmZlcjIpOworICAgIH0KKworICAgIEBCZW5jaG1hcmsKKyAgICBwdWJsaWMgUmVxdWVzdE1lc3NhZ2UgdGVzdFJlYWRNZXNzYWdlMUdyYXBoU09OKCkgdGhyb3dzIFNlcmlhbGl6YXRpb25FeGNlcHRpb24geworICAgICAgICBSZXF1ZXN0TWVzc2FnZUdyYXBoU09OQnVmZmVyMS5yZWFkZXJJbmRleCgwKTsKKyAgICAgICAgcmV0dXJuIGdyYXBoc29uU2VyaWFsaXplci5kZXNlcmlhbGl6ZVJlcXVlc3QoUmVxdWVzdE1lc3NhZ2VHcmFwaFNPTkJ1ZmZlcjEpOworICAgIH0KKworICAgIEBCZW5jaG1hcmsKKyAgICBwdWJsaWMgUmVxdWVzdE1lc3NhZ2UgdGVzdFJlYWRNZXNzYWdlMkdyYXBoU09OKCkgdGhyb3dzIFNlcmlhbGl6YXRpb25FeGNlcHRpb24geworICAgICAgICBSZXF1ZXN0TWVzc2FnZUdyYXBoU09OQnVmZmVyMi5yZWFkZXJJbmRleCgwKTsKKyAgICAgICAgcmV0dXJuIGdyYXBoc29uU2VyaWFsaXplci5kZXNlcmlhbGl6ZVJlcXVlc3QoUmVxdWVzdE1lc3NhZ2VHcmFwaFNPTkJ1ZmZlcjIpOworICAgIH0KKworICAgIEBCZW5jaG1hcmsKKyAgICBwdWJsaWMgdm9pZCB0ZXN0V3JpdGVSZXNwb25zZUJpbmFyeSgpIHRocm93cyBTZXJpYWxpemF0aW9uRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgQnl0ZUJ1ZiBidWZmZXIgPSBiaW5hcnlTZXJpYWxpemVyLnNlcmlhbGl6ZVJlc3BvbnNlQXNCaW5hcnkocmVzcG9uc2UsIGFsbG9jYXRvcik7CisgICAgICAgIGJ1ZmZlci5yZWxlYXNlKCk7CisgICAgfQorCisgICAgQEJlbmNobWFyaworICAgIHB1YmxpYyB2b2lkIHRlc3RXcml0ZVJlc3BvbnNlR3JhcGhTT04oKSB0aHJvd3MgU2VyaWFsaXphdGlvbkV4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIEJ5dGVCdWYgYnVmZmVyID0gZ3JhcGhzb25TZXJpYWxpemVyLnNlcmlhbGl6ZVJlc3BvbnNlQXNCaW5hcnkocmVzcG9uc2UsIGFsbG9jYXRvcik7CisgICAgICAgIGJ1ZmZlci5yZWxlYXNlKCk7CisgICAgfQorCisgICAgQEJlbmNobWFyaworICAgIHB1YmxpYyB2b2lkIHRlc3RXcml0ZUJ5dGVjb2RlQmluYXJ5KCkgdGhyb3dzIFNlcmlhbGl6YXRpb25FeGNlcHRpb24geworICAgICAgICBmaW5hbCBCeXRlQnVmIGJ1ZmZlciA9IGJpbmFyeVNlcmlhbGl6ZXIuc2VyaWFsaXplUmVxdWVzdEFzQmluYXJ5KHJlcXVlc3QsIGFsbG9jYXRvcik7CisgICAgICAgIGJ1ZmZlci5yZWxlYXNlKCk7CisgICAgfQorCisgICAgQEJlbmNobWFyaworICAgIHB1YmxpYyB2b2lkIHRlc3RXcml0ZUJ5dGVjb2RlR3JhcGhTT04oKSB0aHJvd3MgU2VyaWFsaXphdGlvbkV4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIEJ5dGVCdWYgYnVmZmVyID0gZ3JhcGhzb25TZXJpYWxpemVyLnNlcmlhbGl6ZVJlcXVlc3RBc0JpbmFyeShyZXF1ZXN0LCBhbGxvY2F0b3IpOworICAgICAgICBidWZmZXIucmVsZWFzZSgpOworICAgIH0KKworICAgIEBCZW5jaG1hcmsKKyAgICBwdWJsaWMgUmVxdWVzdE1lc3NhZ2UgdGVzdEluc3RhbmNlQ3JlYXRpb24oKSB7CisgICAgICAgIHJldHVybiBSZXF1ZXN0TWVzc2FnZS5idWlsZCgiYSIpLm92ZXJyaWRlUmVxdWVzdElkKGlkKS5wcm9jZXNzb3IoImIiKS5jcmVhdGUoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4tY292ZXJhZ2UvcG9tLnhtbCBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1jb3ZlcmFnZS9wb20ueG1sCmluZGV4IGNmNzZjNGMuLmZiZmExMDcgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1jb3ZlcmFnZS9wb20ueG1sCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1jb3ZlcmFnZS9wb20ueG1sCkBAIC02LDcgKzYsNyBAQAogICAgIDxwYXJlbnQ+CiAgICAgICAgIDxhcnRpZmFjdElkPmdyZW1saW4tdG9vbHM8L2FydGlmYWN0SWQ+CiAgICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUudGlua2VycG9wPC9ncm91cElkPgotICAgICAgICA8dmVyc2lvbj4zLjMuMTEtU05BUFNIT1Q8L3ZlcnNpb24+CisgICAgICAgIDx2ZXJzaW9uPjMuNC43LVNOQVBTSE9UPC92ZXJzaW9uPgogICAgIDwvcGFyZW50PgogICAgIDxhcnRpZmFjdElkPmdyZW1saW4tY292ZXJhZ2U8L2FydGlmYWN0SWQ+CiAgICAgPG5hbWU+QXBhY2hlIFRpbmtlclBvcCA6OiBHcmVtbGluIENvdmVyYWdlPC9uYW1lPgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3QvcG9tLnhtbCBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3BvbS54bWwKaW5kZXggNjgyNWVlNC4uMDFiZDIzNyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3QvcG9tLnhtbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9wb20ueG1sCkBAIC02LDcgKzYsNyBAQAogICAgIDxwYXJlbnQ+CiAgICAgICAgIDxhcnRpZmFjdElkPmdyZW1saW4tdG9vbHM8L2FydGlmYWN0SWQ+CiAgICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUudGlua2VycG9wPC9ncm91cElkPgotICAgICAgICA8dmVyc2lvbj4zLjMuMTEtU05BUFNIT1Q8L3ZlcnNpb24+CisgICAgICAgIDx2ZXJzaW9uPjMuNC43LVNOQVBTSE9UPC92ZXJzaW9uPgogICAgIDwvcGFyZW50PgogICAgIDxhcnRpZmFjdElkPmdyZW1saW4taW8tdGVzdDwvYXJ0aWZhY3RJZD4KICAgICA8bmFtZT5BcGFjaGUgVGlua2VyUG9wIDo6IEdyZW1saW4gSU8gVGVzdDwvbmFtZT4KQEAgLTgzLDYgKzgzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLmNvZGVoYXVzLmdyb292eTwvZ3JvdXBJZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+Z3Jvb3Z5LWFsbDwvYXJ0aWZhY3RJZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+JHtncm9vdnkudmVyc2lvbn08L3ZlcnNpb24+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlPnBvbTwvdHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPnJ1bnRpbWU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVwZW5kZW5jeT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVwZW5kZW5jeT4KQEAgLTE0Niw2ICsxNDcsMzIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jb25maWd1cmF0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXhlY3V0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxleGVjdXRpb24+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpZD5nZW5lcmF0ZS1pby1maWxlcy1ncmFwaGJpbmFyeTwvaWQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwaGFzZT5nZW5lcmF0ZS10ZXN0LXJlc291cmNlczwvcGhhc2U+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnb2Fscz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnb2FsPmV4ZWN1dGU8L2dvYWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ29hbHM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjb25maWd1cmF0aW9uPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnRpZXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT5wcm9qZWN0QnVpbGREaXI8L25hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4ke3Byb2plY3QuYnVpbGQuZGlyZWN0b3J5fTwvdmFsdWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnByb2plY3RCYXNlRGlyPC9uYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+JHtwcm9qZWN0LmJ1aWxkLmRpcmVjdG9yeX08L3ZhbHVlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT5wcm9qZWN0VmVyc2lvbjwvbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPiR7cHJvamVjdC52ZXJzaW9ufTwvdmFsdWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcHJvcGVydGllcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY3JpcHRzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY3JpcHQ+JHtwcm9qZWN0LmJhc2VkaXJ9L3NjcmlwdHMvZ2VuZXJhdGUtZ3JhcGhiaW5hcnktcmVzb3VyY2VzLmdyb292eTwvc2NyaXB0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zY3JpcHRzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NvbmZpZ3VyYXRpb24+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9leGVjdXRpb24+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGV4ZWN1dGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlkPmdlbmVyYXRlLWlvLW1vZGVsLWNzdjwvaWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwaGFzZT5nZW5lcmF0ZS10ZXN0LXJlc291cmNlczwvcGhhc2U+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnb2Fscz4KZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NjcmlwdHMvZ2VuZXJhdGUtZ3JhcGhiaW5hcnktcmVzb3VyY2VzLmdyb292eSBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NjcmlwdHMvZ2VuZXJhdGUtZ3JhcGhiaW5hcnktcmVzb3VyY2VzLmdyb292eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZGU1NjYwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc2NyaXB0cy9nZW5lcmF0ZS1ncmFwaGJpbmFyeS1yZXNvdXJjZXMuZ3Jvb3Z5CkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitpbXBvcnQgaW8ubmV0dHkuYnVmZmVyLkJ5dGVCdWZBbGxvY2F0b3IKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlXcml0ZXIKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5zZXIuTmV0dHlCdWZmZXJGYWN0b3J5CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi50aW5rZXJncmFwaC5zdHJ1Y3R1cmUuKgoraW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLioKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby4qCitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmNvbmZpZ3VyYXRpb24uQmFzZUNvbmZpZ3VyYXRpb24KKworbmV3IEZpbGUoIiR7cHJvamVjdEJ1aWxkRGlyfS90ZXN0LWNhc2UtZGF0YS9pby9ncmFwaGJpbmFyeSIpLm1rZGlycygpCisKK2NvbmYgPSBuZXcgQmFzZUNvbmZpZ3VyYXRpb24oKQorY29uZi5zZXRQcm9wZXJ0eShUaW5rZXJHcmFwaC5HUkVNTElOX1RJTktFUkdSQVBIX0RFRkFVTFRfVkVSVEVYX1BST1BFUlRZX0NBUkRJTkFMSVRZLCBWZXJ0ZXhQcm9wZXJ0eS5DYXJkaW5hbGl0eS5saXN0Lm5hbWUoKSkKK2dyYXBoID0gVGlua2VyR3JhcGgub3Blbihjb25mKQorVGlua2VyRmFjdG9yeS5nZW5lcmF0ZVRoZUNyZXcoZ3JhcGgpCitnID0gZ3JhcGgudHJhdmVyc2FsKCkKKworbW9kZWwgPSBNb2RlbC5pbnN0YW5jZSgpCisKK2FsbG9jYXRvciA9IEJ5dGVCdWZBbGxvY2F0b3IuREVGQVVMVAorZmFjdG9yeSA9IG5ldyBOZXR0eUJ1ZmZlckZhY3RvcnkoKQorCit0b0dyYXBoQmluYXJ5ID0geyBvLCB0eXBlLCBtYXBwZXIsIHN1ZmZpeCA9ICIiIC0+CisgICAgZGVmIGZpbGVUb1dyaXRlVG8gPSBuZXcgRmlsZSgiJHtwcm9qZWN0QnVpbGREaXJ9L3Rlc3QtY2FzZS1kYXRhL2lvL2dyYXBoYmluYXJ5LyIgKyB0eXBlLnRpdGxlLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgiICIsIiIpICsgIi0iICsgc3VmZml4ICsgIi5nYmluIikKKyAgICBpZiAoZmlsZVRvV3JpdGVUby5leGlzdHMoKSkgZmlsZVRvV3JpdGVUby5kZWxldGUoKQorICAgIGZpbGVzdHJlYW0gPSBuZXcgRmlsZU91dHB1dFN0cmVhbShmaWxlVG9Xcml0ZVRvKQorICAgIHRyeSB7CisgICAgICAgIGJ1ZmZlciA9IGZhY3RvcnkuY3JlYXRlKGFsbG9jYXRvci5idWZmZXIoKSkKKyAgICAgICAgd3JpdGVyLndyaXRlKG8sIGJ1ZmZlcikKKyAgICAgICAgYnVmZmVyLnJlYWRlckluZGV4KDApCisgICAgICAgIGJ1ZmZlci5yZWFkQnl0ZXMoZmlsZXN0cmVhbSwgYnVmZmVyLnJlYWRhYmxlQnl0ZXMoKSkKKyAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgaWYgKGV4Lm1lc3NhZ2UgPT0gIlNlcmlhbGl6ZXIgZm9yIHR5cGUgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIubWVzc2FnZS5SZXF1ZXN0TWVzc2FnZSBub3QgZm91bmQiIHx8CisgICAgICAgICAgICAgICAgZXgubWVzc2FnZSA9PSAiU2VyaWFsaXplciBmb3IgdHlwZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmRyaXZlci5tZXNzYWdlLlJlc3BvbnNlTWVzc2FnZSBub3QgZm91bmQiICkKKyAgICAgICAgICAgIGZpbGVUb1dyaXRlVG8uZGVsZXRlKCkKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhyb3cgZXgKKyAgICB9IGZpbmFsbHkgeworICAgICAgICBmaWxlc3RyZWFtLmNsb3NlKCkKKyAgICAgICAgYnVmZmVyLnJlbGVhc2UoKQorICAgIH0KK30KKwordG9HcmFwaEJpbmFyeVYxZDAgPSB7IG8sIHR5cGUsIG1hcHBlciAtPgorICAgIHRvR3JhcGhCaW5hcnkobywgdHlwZSwgbWFwcGVyLCAidjEiKQorfQorCit3cml0ZVN1cHBvcnRlZE9iamVjdHMgPSB7IG1hcHBlciwgdG9HcmFwaEJpbmFyeUZ1bmN0aW9uIC0+CisgICAgbW9kZWwuZW50cmllcygpLmZpbmRBbGx7aXQuaGFzR3JhcGhCaW5hcnlDb21wYXRpYmlsaXR5KCl9LmVhY2ggeworICAgICAgICB0b0dyYXBoQmluYXJ5RnVuY3Rpb24oaXQuZ2V0T2JqZWN0KCksIGl0LCBtYXBwZXIpCisgICAgfQorfQorCit3cml0ZXIgPSBuZXcgR3JhcGhCaW5hcnlXcml0ZXIoKQorCit3cml0ZVN1cHBvcnRlZE9iamVjdHMod3JpdGVyLCB0b0dyYXBoQmluYXJ5VjFkMCkKKworZGVmIHZlciA9ICJfIiArICIke3Byb2plY3RWZXJzaW9ufSIucmVwbGFjZSgiLiIsIl8iKS5yZXBsYWNlKCItU05BUFNIT1QiLCIiKQorZGVmIHRhcmdldCA9ICIke3Byb2plY3RCYXNlRGlyfS9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvIiArIHZlcgorZGVmIHRhcmdldERpciA9IG5ldyBGaWxlKHRhcmdldCkKK2lmICghdGFyZ2V0RGlyLmV4aXN0cygpKSB0YXJnZXREaXIubWtkaXJzKCkKK25ldyBGaWxlKCIke3Byb2plY3RCdWlsZERpcn0vdGVzdC1jYXNlLWRhdGEvaW8vZ3JhcGhiaW5hcnkvIikubGlzdEZpbGVzKCkuZWFjaCB7CisgICAgZGVmIGNvcHlUbyA9IG5ldyBGaWxlKHRhcmdldCArICIvIiArIGl0Lm5hbWUpCisgICAgaWYgKGNvcHlUby5leGlzdHMoKSkgY29weVRvLmRlbGV0ZSgpCisgICAgamF2YS5uaW8uZmlsZS5GaWxlcy5jb3B5KGl0LnRvUGF0aCgpLCBuZXcgRmlsZSh0YXJnZXQgKyAiLyIgKyBpdC5uYW1lKS50b1BhdGgoKSkKK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NjcmlwdHMvZ2VuZXJhdGUtZ3JhcGhzb24tcmVzb3VyY2VzLmdyb292eSBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NjcmlwdHMvZ2VuZXJhdGUtZ3JhcGhzb24tcmVzb3VyY2VzLmdyb292eQppbmRleCA1NWI0ZmE2Li4wMzExMmVkIDEwMDY0NAotLS0gYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zY3JpcHRzL2dlbmVyYXRlLWdyYXBoc29uLXJlc291cmNlcy5ncm9vdnkKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc2NyaXB0cy9nZW5lcmF0ZS1ncmFwaHNvbi1yZXNvdXJjZXMuZ3Jvb3Z5CkBAIC01OSwxOSArNTksMTkgQEAKIAogd3JpdGVTdXBwb3J0ZWRWMU9iamVjdHMgPSB7IHdyaXRlciwgbWFwcGVyIC0+CiAgICAgd3JpdGVyLndyaXRlKCI9PT0gR3JhcGggU3RydWN0dXJlXG5cbiIpCi0gICAgbW9kZWwuZW50cmllcygiR3JhcGggU3RydWN0dXJlIikuZmluZEFsbHtpdC5pc0NvbXBhdGlibGVXaXRoKEdyYXBoU09OQ29tcGF0aWJpbGl0eS5WMUQwXzNfM18wKX0uZWFjaCB7CisgICAgbW9kZWwuZW50cmllcygiR3JhcGggU3RydWN0dXJlIikuZmluZEFsbHtpdC5pc0NvbXBhdGlibGVXaXRoKEdyYXBoU09OQ29tcGF0aWJpbGl0eS5WMUQwXzNfNF8wKX0uZWFjaCB7CiAgICAgICAgIHdyaXRlci53cml0ZSh0b0pzb25WMWQwTm9UeXBlcyhpdC5nZXRPYmplY3QoKSwgaXQuZ2V0VGl0bGUoKSwgbWFwcGVyLCBpdC5nZXREZXNjcmlwdGlvbigpKSkKICAgICB9CiAKICAgICB3cml0ZXIud3JpdGUoIlxuIikKICAgICB3cml0ZXIud3JpdGUoIj09PSBSZXF1ZXN0TWVzc2FnZVxuXG4iKQotICAgIG1vZGVsLmVudHJpZXMoIlJlcXVlc3RNZXNzYWdlIikuZmluZEFsbHtpdC5pc0NvbXBhdGlibGVXaXRoKEdyYXBoU09OQ29tcGF0aWJpbGl0eS5WMUQwXzNfM18wKX0uZWFjaCB7CisgICAgbW9kZWwuZW50cmllcygiUmVxdWVzdE1lc3NhZ2UiKS5maW5kQWxse2l0LmlzQ29tcGF0aWJsZVdpdGgoR3JhcGhTT05Db21wYXRpYmlsaXR5LlYxRDBfM180XzApfS5lYWNoIHsKICAgICAgICAgd3JpdGVyLndyaXRlKHRvSnNvblYxZDBOb1R5cGVzKGl0LmdldE9iamVjdCgpLCBpdC5nZXRUaXRsZSgpLCBtYXBwZXIsIGl0LmdldERlc2NyaXB0aW9uKCkpKQogICAgIH0KIAogICAgIHdyaXRlci53cml0ZSgiXG4iKQogICAgIHdyaXRlci53cml0ZSgiPT09IFJlc3BvbnNlTWVzc2FnZVxuXG4iKQotICAgIG1vZGVsLmVudHJpZXMoIlJlc3BvbnNlTWVzc2FnZSIpLmZpbmRBbGx7aXQuaXNDb21wYXRpYmxlV2l0aChHcmFwaFNPTkNvbXBhdGliaWxpdHkuVjFEMF8zXzNfMCl9LmVhY2ggeworICAgIG1vZGVsLmVudHJpZXMoIlJlc3BvbnNlTWVzc2FnZSIpLmZpbmRBbGx7aXQuaXNDb21wYXRpYmxlV2l0aChHcmFwaFNPTkNvbXBhdGliaWxpdHkuVjFEMF8zXzRfMCl9LmVhY2ggewogICAgICAgICB3cml0ZXIud3JpdGUodG9Kc29uVjFkME5vVHlwZXMoaXQuZ2V0T2JqZWN0KCksIGl0LmdldFRpdGxlKCksIG1hcHBlciwgaXQuZ2V0RGVzY3JpcHRpb24oKSkpCiAgICAgfQogfQpAQCAtMTU2LDcgKzE1Niw3IEBACiAKIGZpbGUgPSBuZXcgRmlsZSgiJHtwcm9qZWN0QnVpbGREaXJ9L2Rldi1kb2NzL291dC1ncmFwaHNvbi0yZDAtcGFydGlhbC50eHQiKQogaWYgKGZpbGUuZXhpc3RzKCkpIGZpbGUuZGVsZXRlKCkKLWZpbGUud2l0aFdyaXRlciB7IHdyaXRlU3VwcG9ydGVkVjJWM09iamVjdHMoaXQsIG1hcHBlciwgdG9Kc29uVjJkMFBhcnRpYWxUeXBlcywge2l0LmlzQ29tcGF0aWJsZVdpdGgoR3JhcGhTT05Db21wYXRpYmlsaXR5LlYyRDBfUEFSVElBTF8zXzNfMSl9LCB2MkV4dGVuZGVkRGVzY3JpcHRpb24pIH0KK2ZpbGUud2l0aFdyaXRlciB7IHdyaXRlU3VwcG9ydGVkVjJWM09iamVjdHMoaXQsIG1hcHBlciwgdG9Kc29uVjJkMFBhcnRpYWxUeXBlcywge2l0LmlzQ29tcGF0aWJsZVdpdGgoR3JhcGhTT05Db21wYXRpYmlsaXR5LlYyRDBfUEFSVElBTF8zXzRfMCl9LCB2MkV4dGVuZGVkRGVzY3JpcHRpb24pIH0KIAogbWFwcGVyID0gR3JhcGhTT05NYXBwZXIuYnVpbGQoKS4KICAgICAgICAgYWRkUmVnaXN0cnkoVGlua2VySW9SZWdpc3RyeVYyZDAuaW5zdGFuY2UoKSkuCkBAIC0xNjcsNyArMTY3LDcgQEAKIAogZmlsZSA9IG5ldyBGaWxlKCIke3Byb2plY3RCdWlsZERpcn0vZGV2LWRvY3Mvb3V0LWdyYXBoc29uLTJkMC1uby10eXBlLnR4dCIpCiBpZiAoZmlsZS5leGlzdHMoKSkgZmlsZS5kZWxldGUoKQotZmlsZS53aXRoV3JpdGVyIHsgd3JpdGVTdXBwb3J0ZWRWMlYzT2JqZWN0cyhpdCwgbWFwcGVyLCB0b0pzb25WMmQwTm9UeXBlcywge2l0LmlzQ29tcGF0aWJsZVdpdGgoR3JhcGhTT05Db21wYXRpYmlsaXR5LlYyRDBfTk9fVFlQRV8zXzNfMSl9LCB2MkV4dGVuZGVkRGVzY3JpcHRpb24pIH0KK2ZpbGUud2l0aFdyaXRlciB7IHdyaXRlU3VwcG9ydGVkVjJWM09iamVjdHMoaXQsIG1hcHBlciwgdG9Kc29uVjJkME5vVHlwZXMsIHtpdC5pc0NvbXBhdGlibGVXaXRoKEdyYXBoU09OQ29tcGF0aWJpbGl0eS5WMkQwX05PX1RZUEVfM180XzApfSwgdjJFeHRlbmRlZERlc2NyaXB0aW9uKSB9CiAKIG1hcHBlciA9IEdyYXBoU09OTWFwcGVyLmJ1aWxkKCkuCiAgICAgICAgIGFkZFJlZ2lzdHJ5KFRpbmtlcklvUmVnaXN0cnlWMmQwLmluc3RhbmNlKCkpLgpAQCAtMTg5LDcgKzE4OSw3IEBACiAKIGZpbGUgPSBuZXcgRmlsZSgiJHtwcm9qZWN0QnVpbGREaXJ9L2Rldi1kb2NzL291dC1ncmFwaHNvbi0zZDAudHh0IikKIGlmIChmaWxlLmV4aXN0cygpKSBmaWxlLmRlbGV0ZSgpCi1maWxlLndpdGhXcml0ZXIgeyB3cml0ZVN1cHBvcnRlZFYyVjNPYmplY3RzKGl0LCBtYXBwZXIsIHRvSnNvblYzZDAsIHtpdC5pc0NvbXBhdGlibGVXaXRoKEdyYXBoU09OQ29tcGF0aWJpbGl0eS5WM0QwX1BBUlRJQUxfM18zXzEpfSwgdjNFeHRlbmRlZERlc2NyaXB0aW9uKSB9CitmaWxlLndpdGhXcml0ZXIgeyB3cml0ZVN1cHBvcnRlZFYyVjNPYmplY3RzKGl0LCBtYXBwZXIsIHRvSnNvblYzZDAsIHtpdC5pc0NvbXBhdGlibGVXaXRoKEdyYXBoU09OQ29tcGF0aWJpbGl0eS5WM0QwX1BBUlRJQUxfM180XzApfSwgdjNFeHRlbmRlZERlc2NyaXB0aW9uKSB9CiAKIGRlZiB2ZXIgPSAiXyIgKyAiJHtwcm9qZWN0VmVyc2lvbn0iLnJlcGxhY2UoIi4iLCJfIikucmVwbGFjZSgiLVNOQVBTSE9UIiwiIikKIGRlZiB0YXJnZXQgPSAiJHtwcm9qZWN0QmFzZURpcn0vc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uLyIgKyB2ZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vTW9kZWwuamF2YSBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vTW9kZWwuamF2YQppbmRleCA1N2E5ZjYwLi5hZmYwZjFhIDEwMDY0NAotLS0gYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL01vZGVsLmphdmEKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9Nb2RlbC5qYXZhCkBAIC0yOSw4ICsyOSwxMCBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUG9wOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuU2Fja0Z1bmN0aW9uczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlNjb3BlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVGV4dFA7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguR3JhcGhUcmF2ZXJzYWxTb3VyY2U7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLlRyYXZlcnNhbE9wdGlvblBhcmVudDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAudXRpbC5CdWxrU2V0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5EZWZhdWx0VHJhdmVyc2FsTWV0cmljczsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuTXV0YWJsZU1ldHJpY3M7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLlRyYXZlcnNhbE1ldHJpY3M7CkBAIC0zOCw2ICs0MCw3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuRGlyZWN0aW9uOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlQ7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4UHJvcGVydHk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3JhcGhiaW5hcnkuR3JhcGhCaW5hcnlDb21wYXRpYmlsaXR5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyYXBoc29uLkdyYXBoU09OQ29tcGF0aWJpbGl0eTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncnlvLkdyeW9Db21wYXRpYmlsaXR5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuc3Rhci5TdGFyR3JhcGg7CkBAIC05MCw2ICs5Myw3IEBACiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTGlzdDxDb21wYXRpYmlsaXR5PiBBTEwgPSBDb2xsZWN0aW9ucy51bm1vZGlmaWFibGVMaXN0KG5ldyBBcnJheUxpc3Q8Q29tcGF0aWJpbGl0eT4oKSB7ewogICAgICAgICBhZGRBbGwoQXJyYXlzLmFzTGlzdChHcmFwaFNPTkNvbXBhdGliaWxpdHkudmFsdWVzKCkpKTsKICAgICAgICAgYWRkQWxsKEFycmF5cy5hc0xpc3QoR3J5b0NvbXBhdGliaWxpdHkudmFsdWVzKCkpKTsKKyAgICAgICAgYWRkQWxsKEFycmF5cy5hc0xpc3QoR3JhcGhCaW5hcnlDb21wYXRpYmlsaXR5LnZhbHVlcygpKSk7CiAgICAgfX0pOwogCiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTW9kZWwgbW9kZWwgPSBuZXcgTW9kZWwoKTsKQEAgLTEwMyw5ICsxMDcsMjEgQEAKICAgICAgICAgVGlua2VyRmFjdG9yeS5nZW5lcmF0ZVRoZUNyZXcoZ3JhcGgpOwogICAgICAgICBmaW5hbCBHcmFwaFRyYXZlcnNhbFNvdXJjZSBnID0gZ3JhcGgudHJhdmVyc2FsKCk7CiAKKyAgICAgICAgLy8gVE9ETzogZ290dGEgZml4IGdyYXBoYmluYXJ5CisgICAgICAgIGZpbmFsIENvbXBhdGliaWxpdHlbXSBub1R5cGVHcmFwaFNPTlBsdXNCcm9rZW5HcmFwaEJpbmFyeSA9IENvbXBhdGliaWxpdGllcy53aXRoKEdyYXBoU09OQ29tcGF0aWJpbGl0eS5jbGFzcykKKyAgICAgICAgICAgICAgICAuY29uZmlndXJlZEFzKCIuKm5vLXR5cGVzfHYxZDAiKS5qb2luKENvbXBhdGliaWxpdGllcy53aXRoKEdyYXBoQmluYXJ5Q29tcGF0aWJpbGl0eS5jbGFzcykpLm1hdGNoVG9BcnJheSgpOworCiAgICAgICAgIGZpbmFsIENvbXBhdGliaWxpdHlbXSBub1R5cGVHcmFwaFNPTlBsdXNHcnlvM18yXzMgPSBDb21wYXRpYmlsaXRpZXMud2l0aChHcnlvQ29tcGF0aWJpbGl0eS5jbGFzcykuYmVmb3JlUmVsZWFzZSgiMy4yLjQiKS5qb2luKENvbXBhdGliaWxpdGllcy5VTlRZUEVEX0dSQVBIU09OKS5tYXRjaFRvQXJyYXkoKTsKICAgICAgICAgZmluYWwgQ29tcGF0aWJpbGl0eVtdIG5vVHlwZUdyYXBoU09OUGx1c0dyeW8zXzNfMCA9IENvbXBhdGliaWxpdGllcy53aXRoKEdyeW9Db21wYXRpYmlsaXR5LmNsYXNzKS5iZWZvcmVSZWxlYXNlKCIzLjMuMCIpLmpvaW4oQ29tcGF0aWJpbGl0aWVzLlVOVFlQRURfR1JBUEhTT04pLm1hdGNoVG9BcnJheSgpOwotICAgICAgICBmaW5hbCBDb21wYXRpYmlsaXR5W10gbm9HcmFwaFNPTkJlZm9yZVYzID0gQ29tcGF0aWJpbGl0aWVzLndpdGgoR3JhcGhTT05Db21wYXRpYmlsaXR5LmNsYXNzKS5jb25maWd1cmVkQXMoIi4qdjJkMC1wYXJ0aWFsfHYxZDB8djJkMC1uby10eXBlcyIpLmpvaW4oQ29tcGF0aWJpbGl0aWVzLkdSWU9fT05MWSkubWF0Y2hUb0FycmF5KCk7CisKKyAgICAgICAgLy8gdGhlIGludmVyc2Ugb2YgdGhpcyBkZWZpbml0aW9uIGlzIGJhc2ljYWxseSAzLjQuMCBvciBiZXR0ZXIgZm9yIGJvdGggR3JhcGhTT04gYW5kIEdyeW8gd2l0aCBubyBzdXBwb3J0IGZvcgorICAgICAgICAvLyB1bnR5cGVkIEdyYXBoU09OIGFueXdoZXJlIGFsb25nIHRoZSB3YXkKKyAgICAgICAgZmluYWwgQ29tcGF0aWJpbGl0eVtdIGJlZm9yZTNfNF8wID0gQ29tcGF0aWJpbGl0aWVzLndpdGgoR3J5b0NvbXBhdGliaWxpdHkuY2xhc3MpLmJlZm9yZVJlbGVhc2UoIjMuNC4wIikKKyAgICAgICAgICAgICAgICAuam9pbihDb21wYXRpYmlsaXRpZXMud2l0aChHcmFwaFNPTkNvbXBhdGliaWxpdHkuY2xhc3MpLmNvbmZpZ3VyZWRBcygiLipuby10eXBlc3x2MWQwIikKKyAgICAgICAgICAgICAgICAuam9pbihDb21wYXRpYmlsaXRpZXMud2l0aChHcmFwaFNPTkNvbXBhdGliaWxpdHkuY2xhc3MpLmJlZm9yZVJlbGVhc2UoIjMuNC4wIikpKS5tYXRjaFRvQXJyYXkoKTsKKworICAgICAgICAvLyB0aGVyZSBpcyBubyBwb2ludCB0byB0ZXN0aW5nIGdyeW8gZm9yIGxpc3QvbWFwL3NldCBhcyB0aGV5IGFyZSBrcnlvIHByaW1pdGl2ZXMgZXNzZW50aWFsbHkKKyAgICAgICAgZmluYWwgQ29tcGF0aWJpbGl0eVtdIG5vR3JhcGhTT05CZWZvcmVWM0FuZE5vR3J5byA9IENvbXBhdGliaWxpdGllcy53aXRoKEdyYXBoU09OQ29tcGF0aWJpbGl0eS5jbGFzcykuY29uZmlndXJlZEFzKCIuKnYyZDAtcGFydGlhbHx2MWQwfHYyZDAtbm8tdHlwZXMiKS5qb2luKENvbXBhdGliaWxpdGllcy5HUllPX09OTFkpLm1hdGNoVG9BcnJheSgpOwogCiAgICAgICAgIC8vIElNUE9SVEFOVCAtIHRoZSAidGl0bGUiIG9yIG5hbWUgb2YgdGhlIEVudHJ5IG5lZWRzIHRvIGJlIHVuaXF1ZQogCkBAIC0xMTUsMTQgKzEzMSwxNiBAQAogICAgICAgICBhZGRDb3JlRW50cnkoMTAwLjAwZCwgIkRvdWJsZSIpOwogICAgICAgICBhZGRDb3JlRW50cnkoMTAwLjAwZiwgIkZsb2F0IiwgIiIsIENvbXBhdGliaWxpdGllcy5VTlRZUEVEX0dSQVBIU09OLm1hdGNoVG9BcnJheSgpKTsKICAgICAgICAgYWRkQ29yZUVudHJ5KDEwMCwgIkludGVnZXIiKTsKLSAgICAgICAgYWRkQ29yZUVudHJ5KEFycmF5cy5hc0xpc3QoMSwicGVyc29uIiwgdHJ1ZSksICJMaXN0IiwgIkxpc3QgaXMgdXNlZCB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIGRpZmZlcmVudCBjb2xsZWN0aW9uIHR5cGVzIGFzIEpTT04gaXMgbm90IGV4cGxpY2l0IGVub3VnaCBmb3IgYWxsIG9mIEdyZW1saW4ncyByZXF1aXJlbWVudHMuIiwgbm9HcmFwaFNPTkJlZm9yZVYzKTsKKyAgICAgICAgYWRkQ29yZUVudHJ5KEFycmF5cy5hc0xpc3QoMSwicGVyc29uIiwgdHJ1ZSksICJMaXN0IiwgIkxpc3QgaXMgdXNlZCB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIGRpZmZlcmVudCBjb2xsZWN0aW9uIHR5cGVzIGFzIEpTT04gaXMgbm90IGV4cGxpY2l0IGVub3VnaCBmb3IgYWxsIG9mIEdyZW1saW4ncyByZXF1aXJlbWVudHMuIiwgbm9HcmFwaFNPTkJlZm9yZVYzQW5kTm9HcnlvKTsKICAgICAgICAgYWRkQ29yZUVudHJ5KDEwMEwsICJMb25nIiwgIiIsIENvbXBhdGliaWxpdGllcy5VTlRZUEVEX0dSQVBIU09OLm1hdGNoVG9BcnJheSgpKTsKKwogICAgICAgICBmaW5hbCBNYXA8T2JqZWN0LE9iamVjdD4gbWFwID0gbmV3IEhhc2hNYXA8PigpOwogICAgICAgICBtYXAucHV0KCJ0ZXN0IiwgMTIzKTsKICAgICAgICAgbWFwLnB1dChuZXcgRGF0ZSgxNDgxNzUwMDc2Mjk1TCksICJyZWQiKTsKICAgICAgICAgbWFwLnB1dChBcnJheXMuYXNMaXN0KDEsMiwzKSwgbmV3IERhdGUoMTQ4MTc1MDA3NjI5NUwpKTsKLSAgICAgICAgYWRkQ29yZUVudHJ5KG1hcCwgIk1hcCIsICJNYXAgaXMgcmVkZWZpbmVkIHNvIHRoYXQgdG8gcHJvdmlkZSB0aGUgYWJpbGl0eSB0byBhbGxvdyBmb3Igbm9uLVN0cmluZyBrZXlzLCB3aGljaCBpcyBub3QgcG9zc2libGUgaW4gSlNPTi4iLCBub0dyYXBoU09OQmVmb3JlVjMpOwotICAgICAgICBhZGRDb3JlRW50cnkobmV3IEhhc2hTZXQ8PihBcnJheXMuYXNMaXN0KDEsInBlcnNvbiIsIHRydWUpKSwgIlNldCIsICJBbGxvd3MgYSBKU09OIGNvbGxlY3Rpb24gdG8gYmVoYXZlIGFzIGEgU2V0LiIsIG5vR3JhcGhTT05CZWZvcmVWMyk7CisgICAgICAgIGFkZENvcmVFbnRyeShtYXAsICJNYXAiLCAiTWFwIGlzIHJlZGVmaW5lZCBzbyB0aGF0IHRvIHByb3ZpZGUgdGhlIGFiaWxpdHkgdG8gYWxsb3cgZm9yIG5vbi1TdHJpbmcga2V5cywgd2hpY2ggaXMgbm90IHBvc3NpYmxlIGluIEpTT04uIiwgbm9HcmFwaFNPTkJlZm9yZVYzQW5kTm9HcnlvKTsKKworICAgICAgICBhZGRDb3JlRW50cnkobmV3IEhhc2hTZXQ8PihBcnJheXMuYXNMaXN0KDEsInBlcnNvbiIsIHRydWUpKSwgIlNldCIsICJBbGxvd3MgYSBKU09OIGNvbGxlY3Rpb24gdG8gYmVoYXZlIGFzIGEgU2V0LiIsIG5vR3JhcGhTT05CZWZvcmVWM0FuZE5vR3J5byk7CiAgICAgICAgIC8vIFRpbWVzdGFtcCB3YXMgYWRkZWQgdG8gR3J5byAxLjAgYXMgb2YgMy4yLjQuIEl0IHdhcyBub3Qgc3VwcG9ydGVkIGluIDMuMi4zLgogICAgICAgICBhZGRDb3JlRW50cnkobmV3IGphdmEuc3FsLlRpbWVzdGFtcCgxNDgxNzUwMDc2Mjk1TCksICJUaW1lc3RhbXAiLCAiIiwgbm9UeXBlR3JhcGhTT05QbHVzR3J5bzNfMl8zKTsKICAgICAgICAgYWRkQ29yZUVudHJ5KFVVSUQuZnJvbVN0cmluZygiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IiksICJVVUlEIik7CkBAIC0xNDAsNiArMTU4LDEyIEBACiAKICAgICAgICAgYWRkR3JhcGhQcm9jZXNzRW50cnkoU2Fja0Z1bmN0aW9ucy5CYXJyaWVyLm5vcm1TYWNrLCAiQmFycmllciIsICIiLCBDb21wYXRpYmlsaXRpZXMuVU5UWVBFRF9HUkFQSFNPTi5tYXRjaFRvQXJyYXkoKSk7CiAgICAgICAgIGFkZEdyYXBoUHJvY2Vzc0VudHJ5KG5ldyBCeXRlY29kZS5CaW5kaW5nKCJ4IiwgMSksICJCaW5kaW5nIiwgIkEgXCJCaW5kaW5nXCIgcmVmZXJzIHRvIGEgYEJ5dGVjb2RlLkJpbmRpbmdgLiIsIENvbXBhdGliaWxpdGllcy5VTlRZUEVEX0dSQVBIU09OLm1hdGNoVG9BcnJheSgpKTsKKworICAgICAgICBmaW5hbCBCdWxrU2V0PFN0cmluZz4gYnVsa1NldCA9IG5ldyBCdWxrU2V0PD4oKTsKKyAgICAgICAgYnVsa1NldC5hZGQoIm1hcmtvIiwgMSk7CisgICAgICAgIGJ1bGtTZXQuYWRkKCJqb3NoIiwgMik7CisgICAgICAgIGFkZEdyYXBoUHJvY2Vzc0VudHJ5KGJ1bGtTZXQsICJCdWxrU2V0IiwgIiIsIGJlZm9yZTNfNF8wKTsKKwogICAgICAgICBhZGRHcmFwaFByb2Nlc3NFbnRyeShnLlYoKS5oYXNMYWJlbCgicGVyc29uIikub3V0KCkuaW4oKS50cmVlKCkuYXNBZG1pbigpLmdldEJ5dGVjb2RlKCksICJCeXRlY29kZSIsICJUaGUgZm9sbG93aW5nIGBCeXRlY29kZWAgZXhhbXBsZSByZXByZXNlbnRzIHRoZSB0cmF2ZXJzYWwgb2YgYGcuVigpLmhhc0xhYmVsKCdwZXJzb24nKS5vdXQoKS5pbigpLnRyZWUoKWAuIE9idmlvdXNseSB0aGUgc2VyaWFsaXplZCBgQnl0ZWNvZGVgIHdvdWRsIGJlIHF1aXRlIGRpZmZlcmVudCBmb3IgdGhlIGVuZGxlc3MgdmFyaWF0aW9ucyBvZiBjb21tYW5kcyB0aGF0IGNvdWxkIGJlIHVzZWQgdG9nZXRoZXIgaW4gdGhlIEdyZW1saW4gbGFuZ3VhZ2UuIiwgQ29tcGF0aWJpbGl0aWVzLlVOVFlQRURfR1JBUEhTT04ubWF0Y2hUb0FycmF5KCkpOwogICAgICAgICBhZGRHcmFwaFByb2Nlc3NFbnRyeShWZXJ0ZXhQcm9wZXJ0eS5DYXJkaW5hbGl0eS5saXN0LCAiQ2FyZGluYWxpdHkiLCAiIiwgQ29tcGF0aWJpbGl0aWVzLlVOVFlQRURfR1JBUEhTT04ubWF0Y2hUb0FycmF5KCkpOwogICAgICAgICBhZGRHcmFwaFByb2Nlc3NFbnRyeShDb2x1bW4ua2V5cywgIkNvbHVtbiIsICIiLCBDb21wYXRpYmlsaXRpZXMuVU5UWVBFRF9HUkFQSFNPTi5tYXRjaFRvQXJyYXkoKSk7CkBAIC0xNjIsNiArMTg2LDggQEAKICAgICAgICAgYWRkR3JhcGhQcm9jZXNzRW50cnkoUC5ndCgwKS5vcihQLndpdGhpbigtMSwgLTEwLCAtMTAwKSksICJQIG9yIiwgIiIsIG5vVHlwZUdyYXBoU09OUGx1c0dyeW8zXzJfMyk7CiAgICAgICAgIGFkZEdyYXBoUHJvY2Vzc0VudHJ5KFNjb3BlLmxvY2FsLCAiU2NvcGUiLCAiIiwgQ29tcGF0aWJpbGl0aWVzLlVOVFlQRURfR1JBUEhTT04ubWF0Y2hUb0FycmF5KCkpOwogICAgICAgICBhZGRHcmFwaFByb2Nlc3NFbnRyeShULmxhYmVsLCAiVCIsICIiLCBDb21wYXRpYmlsaXRpZXMuVU5UWVBFRF9HUkFQSFNPTi5tYXRjaFRvQXJyYXkoKSk7CisgICAgICAgIC8vIFRleHRQIHdhcyBvbmx5IGFkZGVkIGF0IDMuNC4wIGFuZCBpcyBub3Qgc3VwcG9ydGVkIHdpdGggdW50eXBlZCBHcmFwaFNPTiBvZiBhbnkgc29ydAorICAgICAgICBhZGRHcmFwaFByb2Nlc3NFbnRyeShUZXh0UC5jb250YWluaW5nKCJhcmsiKSwgIlRleHRQIiwgIiIsIGJlZm9yZTNfNF8wKTsKICAgICAgICAgYWRkR3JhcGhQcm9jZXNzRW50cnkoY3JlYXRlU3RhdGljVHJhdmVyc2FsTWV0cmljcygpLCAiVHJhdmVyc2FsTWV0cmljcyIsICIiLCBub1R5cGVHcmFwaFNPTlBsdXNHcnlvM18zXzApOwogICAgICAgICBhZGRHcmFwaFByb2Nlc3NFbnRyeShnLlYoKS5oYXNMYWJlbCgicGVyc29uIikuYXNBZG1pbigpLm5leHRUcmF2ZXJzZXIoKSwgIlRyYXZlcnNlciIsICIiLCBDb21wYXRpYmlsaXRpZXMuVU5UWVBFRF9HUkFQSFNPTi5tYXRjaFRvQXJyYXkoKSk7CiAKQEAgLTIzMyw3ICsyNTksNyBAQAogICAgICAgICBhZGRFeHRlbmRlZEVudHJ5KG5ldyBTaG9ydCgiMTAwIiksICJTaG9ydCIsICIiLCBDb21wYXRpYmlsaXRpZXMuVU5UWVBFRF9HUkFQSFNPTi5tYXRjaFRvQXJyYXkoKSk7CiAgICAgICAgIGFkZEV4dGVuZGVkRW50cnkoWWVhci5vZigyMDE2KSwgIlllYXIiLCAiVGhlIGZvbGxvd2luZyBleGFtcGxlIGlzIG9mIHRoZSBgWWVhcmAgXCIyMDE2XCIuIiwgQ29tcGF0aWJpbGl0aWVzLlVOVFlQRURfR1JBUEhTT04ubWF0Y2hUb0FycmF5KCkpOwogICAgICAgICBhZGRFeHRlbmRlZEVudHJ5KFllYXJNb250aC5vZigyMDE2LCA2KSwgIlllYXJNb250aCIsICJUaGUgZm9sbG93aW5nIGV4YW1wbGUgaXMgYSBgWWVhck1vbnRoYCBvZiBcIkp1bmUgMjAxNlwiIiwgQ29tcGF0aWJpbGl0aWVzLlVOVFlQRURfR1JBUEhTT04ubWF0Y2hUb0FycmF5KCkpOwotICAgICAgICBhZGRFeHRlbmRlZEVudHJ5KFpvbmVkRGF0ZVRpbWUub2YoMjAxNiwgMTIsIDIzLCAxMiwgMTIsIDI0LCAzNiwgWm9uZUlkLm9mKCJHTVQrMiIpKSwgIlpvbmVkRGF0ZVRpbWUiLCAiIiwgQ29tcGF0aWJpbGl0aWVzLlVOVFlQRURfR1JBUEhTT04ubWF0Y2hUb0FycmF5KCkpOworICAgICAgICBhZGRFeHRlbmRlZEVudHJ5KFpvbmVkRGF0ZVRpbWUub2YoMjAxNiwgMTIsIDIzLCAxMiwgMTIsIDI0LCAzNiwgWm9uZUlkLm9mKCJHTVQrMiIpKSwgIlpvbmVkRGF0ZVRpbWUiLCAiIiwgbm9UeXBlR3JhcGhTT05QbHVzQnJva2VuR3JhcGhCaW5hcnkpOwogICAgICAgICBhZGRFeHRlbmRlZEVudHJ5KFpvbmVPZmZzZXQub2ZIb3Vyc01pbnV0ZXNTZWNvbmRzKDMsIDYsIDkpLCAiWm9uZU9mZnNldCIsICJUaGUgZm9sbG93aW5nIGV4YW1wbGUgaXMgYSBgWm9uZU9mZnNldGAgb2YgdGhyZWUgaG91cnMsIHNpeCBtaW51dGVzLCBhbmQgbmluZSBzZWNvbmRzLiIsIENvbXBhdGliaWxpdGllcy5VTlRZUEVEX0dSQVBIU09OLm1hdGNoVG9BcnJheSgpKTsKICAgICB9CiAKQEAgLTMxOCw2ICszNDQsNyBAQAogICAgIHByaXZhdGUgdm9pZCBhZGRSZXF1ZXN0TWVzc2FnZUVudHJ5KGZpbmFsIE9iamVjdCBvYmosIGZpbmFsIFN0cmluZyB0aXRsZSwgZmluYWwgU3RyaW5nIGRlc2NyaXB0aW9uKSB7CiAgICAgICAgIGZpbmFsIExpc3Q8Q29tcGF0aWJpbGl0eT4gaW5jb21wYXRpYmlsaXR5TGlzdCA9IENvbXBhdGliaWxpdGllcy53aXRoKEdyeW9Db21wYXRpYmlsaXR5LmNsYXNzKQogICAgICAgICAgICAgICAgIC5iZWZvcmUoIjMuMCIpCisgICAgICAgICAgICAgICAgLmpvaW4oQ29tcGF0aWJpbGl0aWVzLndpdGgoR3JhcGhCaW5hcnlDb21wYXRpYmlsaXR5LmNsYXNzKSkKICAgICAgICAgICAgICAgICAubWF0Y2goKTsKIAogICAgICAgICBmaW5hbCBDb21wYXRpYmlsaXR5W10gaW5jb21wYXRpYmlsaXRpZXMgPSBuZXcgQ29tcGF0aWJpbGl0eVtpbmNvbXBhdGliaWxpdHlMaXN0LnNpemUoKV07CkBAIC0zMjgsNiArMzU1LDcgQEAKICAgICBwcml2YXRlIHZvaWQgYWRkUmVzcG9uc2VNZXNzYWdlRW50cnkoZmluYWwgT2JqZWN0IG9iaiwgZmluYWwgU3RyaW5nIHRpdGxlLCBmaW5hbCBTdHJpbmcgZGVzY3JpcHRpb24pIHsKICAgICAgICAgZmluYWwgTGlzdDxDb21wYXRpYmlsaXR5PiBpbmNvbXBhdGliaWxpdHlMaXN0ID0gQ29tcGF0aWJpbGl0aWVzLndpdGgoR3J5b0NvbXBhdGliaWxpdHkuY2xhc3MpCiAgICAgICAgICAgICAgICAgLmJlZm9yZSgiMy4wIikKKyAgICAgICAgICAgICAgICAuam9pbihDb21wYXRpYmlsaXRpZXMud2l0aChHcmFwaEJpbmFyeUNvbXBhdGliaWxpdHkuY2xhc3MpKQogICAgICAgICAgICAgICAgIC5tYXRjaCgpOwogCiAgICAgICAgIC8vIFRPRE86IHRlbXBvcmFyeSBwcm9ibGVtPyBzZWVtcyB0byBiZSBzb21ldGhpbmcgYnJlYWtpbmcgaW4gdmVydGV4IHNlcmlhbGl6YXRpb24KQEAgLTQwMSw2ICs0MjksOCBAQAogICAgICAgICAgICAgICAgIHJldHVybiAiZ3J5by0iICsgKChHcnlvQ29tcGF0aWJpbGl0eSkgYykubmFtZSgpOwogICAgICAgICAgICAgZWxzZSBpZiAoYyBpbnN0YW5jZW9mIEdyYXBoU09OQ29tcGF0aWJpbGl0eSkKICAgICAgICAgICAgICAgICByZXR1cm4gImdyYXBoc29uLSIgKyAoKEdyYXBoU09OQ29tcGF0aWJpbGl0eSkgYykubmFtZSgpOworICAgICAgICAgICAgZWxzZSBpZiAoYyBpbnN0YW5jZW9mIEdyYXBoQmluYXJ5Q29tcGF0aWJpbGl0eSkKKyAgICAgICAgICAgICAgICByZXR1cm4gImdyYXBoYmluYXJ5LSIgKyAoKEdyYXBoQmluYXJ5Q29tcGF0aWJpbGl0eSkgYykubmFtZSgpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIk5vIHN1cHBvcnQgZm9yIHRoZSBwcm92aWRlZCBDb21wYXRpYmlsaXR5IHR5cGUiKTsKICAgICAgICAgfSkuY29sbGVjdChDb2xsZWN0b3JzLnRvTGlzdCgpKSk7CkBAIC00NjUsNSArNDk1LDkgQEAKICAgICAgICAgcHVibGljIGJvb2xlYW4gaGFzR3JhcGhTT05Db21wYXRpYmlsaXR5KCkgewogICAgICAgICAgICAgcmV0dXJuIGNvbXBhdGlibGVXaXRoLnN0cmVhbSgpLmFueU1hdGNoKGMgLT4gYyBpbnN0YW5jZW9mIEdyeW9Db21wYXRpYmlsaXR5KTsKICAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBib29sZWFuIGhhc0dyYXBoQmluYXJ5Q29tcGF0aWJpbGl0eSgpIHsKKyAgICAgICAgICAgIHJldHVybiBjb21wYXRpYmxlV2l0aC5zdHJlYW0oKS5hbnlNYXRjaChjIC0+IGMgaW5zdGFuY2VvZiBHcmFwaEJpbmFyeUNvbXBhdGliaWxpdHkpOworICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9HcmFwaEJpbmFyeUNvbXBhdGliaWxpdHkuamF2YSBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvR3JhcGhCaW5hcnlDb21wYXRpYmlsaXR5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQ4NDUyZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvR3JhcGhCaW5hcnlDb21wYXRpYmlsaXR5LmphdmEKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyYXBoYmluYXJ5OworCitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmlvLklPVXRpbHM7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QYXRoOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2VyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudHJhdmVyc2VyLkJfT19UcmF2ZXJzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLkRlZmF1bHRUcmF2ZXJzYWxNZXRyaWNzOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5NZXRyaWNzOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5NdXRhYmxlTWV0cmljczsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuVHJhdmVyc2FsTWV0cmljczsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5FZGdlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlByb3BlcnR5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXhQcm9wZXJ0eTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5Db21wYXRpYmlsaXR5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuZGV0YWNoZWQuRGV0YWNoZWRFZGdlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuZGV0YWNoZWQuRGV0YWNoZWRQYXRoOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuZGV0YWNoZWQuRGV0YWNoZWRQcm9wZXJ0eTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLmRldGFjaGVkLkRldGFjaGVkVmVydGV4OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuZGV0YWNoZWQuRGV0YWNoZWRWZXJ0ZXhQcm9wZXJ0eTsKKworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworCisvKioKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqLworcHVibGljIGVudW0gR3JhcGhCaW5hcnlDb21wYXRpYmlsaXR5IGltcGxlbWVudHMgQ29tcGF0aWJpbGl0eSB7CisgICAgVjFfM180XzMoIjMuNC4zIiwgIjEuMCIsICJ2MSIpLAorICAgIFYxXzNfNF80KCIzLjQuNCIsICIxLjAiLCAidjEiKSwKKyAgICBWMV8zXzRfNSgiMy40LjUiLCAiMS4wIiwgInYxIiksCisgICAgVjFfM180XzYoIjMuNC42IiwgIjEuMCIsICJ2MSIpOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFNFUCA9IEZpbGUuc2VwYXJhdG9yOworCisgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgZ3JhcGhCaW5hcnlWZXJzaW9uOworICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIHRpbmtlcnBvcFZlcnNpb247CisgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgY29uZmlndXJhdGlvbjsKKworICAgIEdyYXBoQmluYXJ5Q29tcGF0aWJpbGl0eShmaW5hbCBTdHJpbmcgdGlua2VycG9wVmVyc2lvbiwgZmluYWwgU3RyaW5nIGdyYXBoQmluYXJ5VmVyc2lvbiwgZmluYWwgU3RyaW5nIGNvbmZpZ3VyYXRpb24pIHsKKyAgICAgICAgdGhpcy50aW5rZXJwb3BWZXJzaW9uID0gdGlua2VycG9wVmVyc2lvbjsKKyAgICAgICAgdGhpcy5ncmFwaEJpbmFyeVZlcnNpb24gPSBncmFwaEJpbmFyeVZlcnNpb247CisgICAgICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb247CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGJ5dGVbXSByZWFkRnJvbVJlc291cmNlKGZpbmFsIFN0cmluZyByZXNvdXJjZSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgU3RyaW5nIHRlc3RSZXNvdXJjZSA9ICJfIiArIHRpbmtlcnBvcFZlcnNpb24ucmVwbGFjZSgiLiIsICJfIikgKyBTRVAgKyByZXNvdXJjZSArICItIiArIGNvbmZpZ3VyYXRpb24gKyAiLmdiaW4iOworICAgICAgICByZXR1cm4gSU9VdGlscy50b0J5dGVBcnJheShnZXRDbGFzcygpLmdldFJlc291cmNlQXNTdHJlYW0odGVzdFJlc291cmNlKSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFN0cmluZyBnZXRSZWxlYXNlVmVyc2lvbigpIHsKKyAgICAgICAgcmV0dXJuIHRpbmtlcnBvcFZlcnNpb247CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFN0cmluZyBnZXRWZXJzaW9uKCkgeworICAgICAgICByZXR1cm4gZ3JhcGhCaW5hcnlWZXJzaW9uOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0Q29uZmlndXJhdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgcmV0dXJuIHRpbmtlcnBvcFZlcnNpb24gKyAiLSIgKyBjb25maWd1cmF0aW9uOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vR3JhcGhTT05Db21wYXRpYmlsaXR5LmphdmEgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL0dyYXBoU09OQ29tcGF0aWJpbGl0eS5qYXZhCmluZGV4IDA5ZWI5NjkuLjUzMmRhZjUgMTAwNjQ0Ci0tLSBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vR3JhcGhTT05Db21wYXRpYmlsaXR5LmphdmEKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9HcmFwaFNPTkNvbXBhdGliaWxpdHkuamF2YQpAQCAtOTksNyArOTksMzUgQEAKICAgICBWMUQwXzNfM18xMSgiMy4zLjExIiwgIjEuMCIsICJ2MWQwIiksCiAgICAgVjJEMF9QQVJUSUFMXzNfM18xMSgiMy4zLjExIiwgIjIuMCIsICJ2MmQwLXBhcnRpYWwiKSwKICAgICBWMkQwX05PX1RZUEVfM18zXzExKCIzLjMuMTEiLCAiMi4wIiwgInYyZDAtbm8tdHlwZXMiKSwKLSAgICBWM0QwX1BBUlRJQUxfM18zXzExKCIzLjMuMTEiLCAiMy4wIiwgInYzZDAiKTsKKyAgICBWM0QwX1BBUlRJQUxfM18zXzExKCIzLjMuMTEiLCAiMy4wIiwgInYzZDAiKSwKKyAgICBWMUQwXzNfNF8wKCIzLjQuMCIsICIxLjAiLCAidjFkMCIpLAorICAgIFYyRDBfUEFSVElBTF8zXzRfMCgiMy40LjAiLCAiMi4wIiwgInYyZDAtcGFydGlhbCIpLAorICAgIFYyRDBfTk9fVFlQRV8zXzRfMCgiMy40LjAiLCAiMi4wIiwgInYyZDAtbm8tdHlwZXMiKSwKKyAgICBWM0QwX1BBUlRJQUxfM180XzAoIjMuNC4wIiwgIjMuMCIsICJ2M2QwIiksCisgICAgVjFEMF8zXzRfMSgiMy40LjEiLCAiMS4wIiwgInYxZDAiKSwKKyAgICBWMkQwX1BBUlRJQUxfM180XzEoIjMuNC4xIiwgIjIuMCIsICJ2MmQwLXBhcnRpYWwiKSwKKyAgICBWMkQwX05PX1RZUEVfM180XzEoIjMuNC4xIiwgIjIuMCIsICJ2MmQwLW5vLXR5cGVzIiksCisgICAgVjNEMF9QQVJUSUFMXzNfNF8xKCIzLjQuMSIsICIzLjAiLCAidjNkMCIpLAorICAgIFYxRDBfM180XzIoIjMuNC4yIiwgIjEuMCIsICJ2MWQwIiksCisgICAgVjJEMF9QQVJUSUFMXzNfNF8yKCIzLjQuMiIsICIyLjAiLCAidjJkMC1wYXJ0aWFsIiksCisgICAgVjJEMF9OT19UWVBFXzNfNF8yKCIzLjQuMiIsICIyLjAiLCAidjJkMC1uby10eXBlcyIpLAorICAgIFYzRDBfUEFSVElBTF8zXzRfMigiMy40LjIiLCAiMy4wIiwgInYzZDAiKSwKKyAgICBWMUQwXzNfNF8zKCIzLjQuMyIsICIxLjAiLCAidjFkMCIpLAorICAgIFYyRDBfUEFSVElBTF8zXzRfMygiMy40LjMiLCAiMi4wIiwgInYyZDAtcGFydGlhbCIpLAorICAgIFYyRDBfTk9fVFlQRV8zXzRfMygiMy40LjMiLCAiMi4wIiwgInYyZDAtbm8tdHlwZXMiKSwKKyAgICBWM0QwX1BBUlRJQUxfM180XzMoIjMuNC4zIiwgIjMuMCIsICJ2M2QwIiksCisgICAgVjFEMF8zXzRfNCgiMy40LjQiLCAiMS4wIiwgInYxZDAiKSwKKyAgICBWMkQwX1BBUlRJQUxfM180XzQoIjMuNC40IiwgIjIuMCIsICJ2MmQwLXBhcnRpYWwiKSwKKyAgICBWMkQwX05PX1RZUEVfM180XzQoIjMuNC40IiwgIjIuMCIsICJ2MmQwLW5vLXR5cGVzIiksCisgICAgVjNEMF9QQVJUSUFMXzNfNF80KCIzLjQuNCIsICIzLjAiLCAidjNkMCIpLAorICAgIFYxRDBfM180XzUoIjMuNC41IiwgIjEuMCIsICJ2MWQwIiksCisgICAgVjJEMF9QQVJUSUFMXzNfNF81KCIzLjQuNSIsICIyLjAiLCAidjJkMC1wYXJ0aWFsIiksCisgICAgVjJEMF9OT19UWVBFXzNfNF81KCIzLjQuNSIsICIyLjAiLCAidjJkMC1uby10eXBlcyIpLAorICAgIFYzRDBfUEFSVElBTF8zXzRfNSgiMy40LjUiLCAiMy4wIiwgInYzZDAiKSwKKyAgICBWMUQwXzNfNF82KCIzLjQuNiIsICIxLjAiLCAidjFkMCIpLAorICAgIFYyRDBfUEFSVElBTF8zXzRfNigiMy40LjYiLCAiMi4wIiwgInYyZDAtcGFydGlhbCIpLAorICAgIFYyRDBfTk9fVFlQRV8zXzRfNigiMy40LjYiLCAiMi4wIiwgInYyZDAtbm8tdHlwZXMiKSwKKyAgICBWM0QwX1BBUlRJQUxfM180XzYoIjMuNC42IiwgIjMuMCIsICJ2M2QwIik7CiAKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0VQID0gRmlsZS5zZXBhcmF0b3I7CiAKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9HcnlvQ29tcGF0aWJpbGl0eS5qYXZhIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL0dyeW9Db21wYXRpYmlsaXR5LmphdmEKaW5kZXggZWFjY2YwYy4uYTRjMzI2YSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL0dyeW9Db21wYXRpYmlsaXR5LmphdmEKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL0dyeW9Db21wYXRpYmlsaXR5LmphdmEKQEAgLTc1LDcgKzc1LDIxIEBACiAgICAgVjFEMF8zXzNfMTAoIjMuMy4xMCIsICIxLjAiLCAidjFkMCIpLAogICAgIFYzRDBfM18zXzEwKCIzLjMuMTAiLCAiMy4wIiwgInYzZDAiKSwKICAgICBWMUQwXzNfM18xMSgiMy4zLjExIiwgIjEuMCIsICJ2MWQwIiksCi0gICAgVjNEMF8zXzNfMTEoIjMuMy4xMSIsICIzLjAiLCAidjNkMCIpOworICAgIFYzRDBfM18zXzExKCIzLjMuMTEiLCAiMy4wIiwgInYzZDAiKSwKKyAgICBWMUQwXzNfNF8wKCIzLjQuMCIsICIxLjAiLCAidjFkMCIpLAorICAgIFYzRDBfM180XzAoIjMuNC4wIiwgIjMuMCIsICJ2M2QwIiksCisgICAgVjFEMF8zXzRfMSgiMy40LjEiLCAiMS4wIiwgInYxZDAiKSwKKyAgICBWM0QwXzNfNF8xKCIzLjQuMSIsICIzLjAiLCAidjNkMCIpLAorICAgIFYxRDBfM180XzIoIjMuNC4yIiwgIjEuMCIsICJ2MWQwIiksCisgICAgVjNEMF8zXzRfMigiMy40LjIiLCAiMy4wIiwgInYzZDAiKSwKKyAgICBWMUQwXzNfNF8zKCIzLjQuMyIsICIxLjAiLCAidjFkMCIpLAorICAgIFYzRDBfM180XzMoIjMuNC4zIiwgIjMuMCIsICJ2M2QwIiksCisgICAgVjFEMF8zXzRfNCgiMy40LjQiLCAiMS4wIiwgInYxZDAiKSwKKyAgICBWM0QwXzNfNF80KCIzLjQuNCIsICIzLjAiLCAidjNkMCIpLAorICAgIFYxRDBfM180XzUoIjMuNC41IiwgIjEuMCIsICJ2MWQwIiksCisgICAgVjNEMF8zXzRfNSgiMy40LjUiLCAiMy4wIiwgInYzZDAiKSwKKyAgICBWMUQwXzNfNF82KCIzLjQuNiIsICIxLjAiLCAidjFkMCIpLAorICAgIFYzRDBfM180XzYoIjMuNC42IiwgIjMuMCIsICJ2M2QwIik7CiAKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0VQID0gRmlsZS5zZXBhcmF0b3I7CiAKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vQWJzdHJhY3RDb21wYXRpYmlsaXR5VGVzdC5qYXZhIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9BYnN0cmFjdENvbXBhdGliaWxpdHlUZXN0LmphdmEKaW5kZXggOTlmMmRlMC4uYjNjMjI2NiAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9BYnN0cmFjdENvbXBhdGliaWxpdHlUZXN0LmphdmEKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9BYnN0cmFjdENvbXBhdGliaWxpdHlUZXN0LmphdmEKQEAgLTIyLDYgKzIyLDcgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5Qcm9wZXJ0eTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXg7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4UHJvcGVydHk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3JhcGhiaW5hcnkuR3JhcGhCaW5hcnlDb21wYXRpYmlsaXR5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udXRpbC5pdGVyYXRvci5JdGVyYXRvclV0aWxzOwogCiBpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwpAQCAtNTEsMTcgKzUyLDIwIEBACiAgICAgcHJvdGVjdGVkIHZvaWQgYXNzZXJ0VmVydGV4KGZpbmFsIFZlcnRleCBleHBlY3RlZCwgZmluYWwgVmVydGV4IGFjdHVhbCkgewogICAgICAgICBhc3NlcnRFcXVhbHMoZXhwZWN0ZWQuaWQoKSwgYWN0dWFsLmlkKCkpOwogICAgICAgICBhc3NlcnRFcXVhbHMoZXhwZWN0ZWQubGFiZWwoKSwgYWN0dWFsLmxhYmVsKCkpOwotICAgICAgICBhc3NlcnRFcXVhbHMoSXRlcmF0b3JVdGlscy5jb3VudChleHBlY3RlZC5wcm9wZXJ0aWVzKCkpLCBJdGVyYXRvclV0aWxzLmNvdW50KGFjdHVhbC5wcm9wZXJ0aWVzKCkpKTsKLSAgICAgICAgZm9yIChTdHJpbmcgayA6IGV4cGVjdGVkLmtleXMoKSkgewotICAgICAgICAgICAgZmluYWwgSXRlcmF0b3I8VmVydGV4UHJvcGVydHk8T2JqZWN0Pj4gZXhwZWN0ZWRWcHMgPSBleHBlY3RlZC5wcm9wZXJ0aWVzKGspOwotICAgICAgICAgICAgZmluYWwgTGlzdDxWZXJ0ZXhQcm9wZXJ0eTxPYmplY3Q+PiBhY3R1YWxWcHMgPSBJdGVyYXRvclV0aWxzLmxpc3QoYWN0dWFsLnByb3BlcnRpZXMoaykpOwotICAgICAgICAgICAgd2hpbGUgKGV4cGVjdGVkVnBzLmhhc05leHQoKSkgewotICAgICAgICAgICAgICAgIGZpbmFsIFZlcnRleFByb3BlcnR5IGV4cGVjdGVkVnAgPSBleHBlY3RlZFZwcy5uZXh0KCk7Ci0gICAgICAgICAgICAgICAgZmluYWwgVmVydGV4UHJvcGVydHk8T2JqZWN0PiBmb3VuZCA9IGFjdHVhbFZwcy5zdHJlYW0oKQotICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcih2cCAtPiB2cC5pZCgpLmVxdWFscyhleHBlY3RlZFZwLmlkKCkpKQotICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmRGaXJzdCgpCi0gICAgICAgICAgICAgICAgICAgICAgICAub3JFbHNlVGhyb3coKCkgLT4gbmV3IFJ1bnRpbWVFeGNlcHRpb24oIkNvdWxkIG5vdCBmaW5kIFZlcnRleFByb3BlcnR5IGZvciAiICsgZXhwZWN0ZWRWcC5pZCgpKSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0VmVydGV4UHJvcGVydHkoZXhwZWN0ZWRWcCwgZm91bmQpOworCisgICAgICAgIGlmICghKGdldENvbXBhdGliaWxpdHkoKSBpbnN0YW5jZW9mIEdyYXBoQmluYXJ5Q29tcGF0aWJpbGl0eSkpIHsKKyAgICAgICAgICAgIGFzc2VydEVxdWFscyhJdGVyYXRvclV0aWxzLmNvdW50KGV4cGVjdGVkLnByb3BlcnRpZXMoKSksIEl0ZXJhdG9yVXRpbHMuY291bnQoYWN0dWFsLnByb3BlcnRpZXMoKSkpOworICAgICAgICAgICAgZm9yIChTdHJpbmcgayA6IGV4cGVjdGVkLmtleXMoKSkgeworICAgICAgICAgICAgICAgIGZpbmFsIEl0ZXJhdG9yPFZlcnRleFByb3BlcnR5PE9iamVjdD4+IGV4cGVjdGVkVnBzID0gZXhwZWN0ZWQucHJvcGVydGllcyhrKTsKKyAgICAgICAgICAgICAgICBmaW5hbCBMaXN0PFZlcnRleFByb3BlcnR5PE9iamVjdD4+IGFjdHVhbFZwcyA9IEl0ZXJhdG9yVXRpbHMubGlzdChhY3R1YWwucHJvcGVydGllcyhrKSk7CisgICAgICAgICAgICAgICAgd2hpbGUgKGV4cGVjdGVkVnBzLmhhc05leHQoKSkgeworICAgICAgICAgICAgICAgICAgICBmaW5hbCBWZXJ0ZXhQcm9wZXJ0eSBleHBlY3RlZFZwID0gZXhwZWN0ZWRWcHMubmV4dCgpOworICAgICAgICAgICAgICAgICAgICBmaW5hbCBWZXJ0ZXhQcm9wZXJ0eTxPYmplY3Q+IGZvdW5kID0gYWN0dWFsVnBzLnN0cmVhbSgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcih2cCAtPiB2cC5pZCgpLmVxdWFscyhleHBlY3RlZFZwLmlkKCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kRmlyc3QoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5vckVsc2VUaHJvdygoKSAtPiBuZXcgUnVudGltZUV4Y2VwdGlvbigiQ291bGQgbm90IGZpbmQgVmVydGV4UHJvcGVydHkgZm9yICIgKyBleHBlY3RlZFZwLmlkKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0VmVydGV4UHJvcGVydHkoZXhwZWN0ZWRWcCwgZm91bmQpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTY5LDI2ICs3MywzMSBAQAogICAgIHByb3RlY3RlZCB2b2lkIGFzc2VydEVkZ2UoZmluYWwgRWRnZSBleHBlY3RlZCwgZmluYWwgRWRnZSBhY3R1YWwpIHsKICAgICAgICAgYXNzZXJ0RXF1YWxzKGV4cGVjdGVkLmlkKCksIGFjdHVhbC5pZCgpKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKGV4cGVjdGVkLmxhYmVsKCksIGFjdHVhbC5sYWJlbCgpKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKEl0ZXJhdG9yVXRpbHMuY291bnQoZXhwZWN0ZWQucHJvcGVydGllcygpKSwgSXRlcmF0b3JVdGlscy5jb3VudChhY3R1YWwucHJvcGVydGllcygpKSk7CiAgICAgICAgIGFzc2VydEVxdWFscyhleHBlY3RlZC5pblZlcnRleCgpLmlkKCksIGFjdHVhbC5pblZlcnRleCgpLmlkKCkpOwogICAgICAgICBhc3NlcnRFcXVhbHMoZXhwZWN0ZWQub3V0VmVydGV4KCkuaWQoKSwgYWN0dWFsLm91dFZlcnRleCgpLmlkKCkpOwogICAgICAgICBhc3NlcnRFcXVhbHMoZXhwZWN0ZWQuaW5WZXJ0ZXgoKS5sYWJlbCgpLCBhY3R1YWwuaW5WZXJ0ZXgoKS5sYWJlbCgpKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKGV4cGVjdGVkLm91dFZlcnRleCgpLmxhYmVsKCksIGFjdHVhbC5vdXRWZXJ0ZXgoKS5sYWJlbCgpKTsKLSAgICAgICAgZmluYWwgSXRlcmF0b3I8UHJvcGVydHk8T2JqZWN0Pj4gaXR0eSA9IGV4cGVjdGVkLnByb3BlcnRpZXMoKTsKLSAgICAgICAgd2hpbGUoaXR0eS5oYXNOZXh0KCkpIHsKLSAgICAgICAgICAgIGZpbmFsIFByb3BlcnR5IHAgPSBpdHR5Lm5leHQoKTsKLSAgICAgICAgICAgIGFzc2VydFByb3BlcnR5KHAsIGFjdHVhbC5wcm9wZXJ0eShwLmtleSgpKSk7CisgICAgICAgIGlmICghKGdldENvbXBhdGliaWxpdHkoKSBpbnN0YW5jZW9mIEdyYXBoQmluYXJ5Q29tcGF0aWJpbGl0eSkpIHsKKyAgICAgICAgICAgIGFzc2VydEVxdWFscyhJdGVyYXRvclV0aWxzLmNvdW50KGV4cGVjdGVkLnByb3BlcnRpZXMoKSksIEl0ZXJhdG9yVXRpbHMuY291bnQoYWN0dWFsLnByb3BlcnRpZXMoKSkpOworICAgICAgICAgICAgZmluYWwgSXRlcmF0b3I8UHJvcGVydHk8T2JqZWN0Pj4gaXR0eSA9IGV4cGVjdGVkLnByb3BlcnRpZXMoKTsKKyAgICAgICAgICAgIHdoaWxlKGl0dHkuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICAgICAgZmluYWwgUHJvcGVydHkgcCA9IGl0dHkubmV4dCgpOworICAgICAgICAgICAgICAgIGFzc2VydFByb3BlcnR5KHAsIGFjdHVhbC5wcm9wZXJ0eShwLmtleSgpKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKICAgICBwcm90ZWN0ZWQgdm9pZCBhc3NlcnRWZXJ0ZXhQcm9wZXJ0eShmaW5hbCBWZXJ0ZXhQcm9wZXJ0eSBleHBlY3RlZCwgZmluYWwgVmVydGV4UHJvcGVydHkgYWN0dWFsKSB7CiAgICAgICAgIGFzc2VydEVxdWFscyhleHBlY3RlZC5pZCgpLCBhY3R1YWwuaWQoKSk7CiAgICAgICAgIGFzc2VydEVxdWFscyhleHBlY3RlZC5sYWJlbCgpLCBhY3R1YWwubGFiZWwoKSk7Ci0gICAgICAgIGFzc2VydEVxdWFscyhJdGVyYXRvclV0aWxzLmNvdW50KGV4cGVjdGVkLnByb3BlcnRpZXMoKSksIEl0ZXJhdG9yVXRpbHMuY291bnQoYWN0dWFsLnByb3BlcnRpZXMoKSkpOwotICAgICAgICBmaW5hbCBJdGVyYXRvcjxQcm9wZXJ0eT4gaXR0eSA9IGV4cGVjdGVkLnByb3BlcnRpZXMoKTsKLSAgICAgICAgd2hpbGUoaXR0eS5oYXNOZXh0KCkpIHsKLSAgICAgICAgICAgIGZpbmFsIFByb3BlcnR5IHAgPSBpdHR5Lm5leHQoKTsKLSAgICAgICAgICAgIGFzc2VydFByb3BlcnR5KHAsIGFjdHVhbC5wcm9wZXJ0eShwLmtleSgpKSk7CisKKyAgICAgICAgaWYgKCEoZ2V0Q29tcGF0aWJpbGl0eSgpIGluc3RhbmNlb2YgR3JhcGhCaW5hcnlDb21wYXRpYmlsaXR5KSkgeworICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKEl0ZXJhdG9yVXRpbHMuY291bnQoZXhwZWN0ZWQucHJvcGVydGllcygpKSwgSXRlcmF0b3JVdGlscy5jb3VudChhY3R1YWwucHJvcGVydGllcygpKSk7CisgICAgICAgICAgICBmaW5hbCBJdGVyYXRvcjxQcm9wZXJ0eT4gaXR0eSA9IGV4cGVjdGVkLnByb3BlcnRpZXMoKTsKKyAgICAgICAgICAgIHdoaWxlIChpdHR5Lmhhc05leHQoKSkgeworICAgICAgICAgICAgICAgIGZpbmFsIFByb3BlcnR5IHAgPSBpdHR5Lm5leHQoKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRQcm9wZXJ0eShwLCBhY3R1YWwucHJvcGVydHkocC5rZXkoKSkpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL0Fic3RyYWN0VHlwZWRDb21wYXRpYmlsaXR5VGVzdC5qYXZhIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9BYnN0cmFjdFR5cGVkQ29tcGF0aWJpbGl0eVRlc3QuamF2YQppbmRleCA2N2U1OTAxLi5mMzRhNmM0IDEwMDY0NAotLS0gYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL0Fic3RyYWN0VHlwZWRDb21wYXRpYmlsaXR5VGVzdC5qYXZhCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vQWJzdHJhY3RUeXBlZENvbXBhdGliaWxpdHlUZXN0LmphdmEKQEAgLTI4LDYgKzI4LDcgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlBvcDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlNhY2tGdW5jdGlvbnM7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5TY29wZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRleHRQOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2VyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLlRyZWU7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLk1ldHJpY3M7CkBAIC04NDAsNiArODQxLDE5IEBACiAgICAgfQogCiAgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRSZWFkV3JpdGVUZXh0UCgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBmaW5hbCBTdHJpbmcgcmVzb3VyY2VOYW1lID0gInRleHRwIjsKKyAgICAgICAgYXNzdW1lQ29tcGF0aWJpbGl0eShyZXNvdXJjZU5hbWUpOworCisgICAgICAgIGZpbmFsIFRleHRQIHJlc291cmNlID0gZmluZE1vZGVsRW50cnlPYmplY3QocmVzb3VyY2VOYW1lKTsKKyAgICAgICAgZmluYWwgVGV4dFAgZnJvbVN0YXRpYyA9IHJlYWQoZ2V0Q29tcGF0aWJpbGl0eSgpLnJlYWRGcm9tUmVzb3VyY2UocmVzb3VyY2VOYW1lKSwgVGV4dFAuY2xhc3MpOworICAgICAgICBmaW5hbCBUZXh0UCByZWN5Y2xlZCA9IHJlYWQod3JpdGUoZnJvbVN0YXRpYywgVGV4dFAuY2xhc3MpLCBUZXh0UC5jbGFzcyk7CisgICAgICAgIGFzc2VydEVxdWFscyhmcm9tU3RhdGljLCByZWN5Y2xlZCk7CisgICAgICAgIGFzc2VydEVxdWFscyhyZXNvdXJjZSwgZnJvbVN0YXRpYyk7CisgICAgICAgIGFzc2VydEVxdWFscyhyZXNvdXJjZSwgcmVjeWNsZWQpOworICAgIH0KKworICAgIEBUZXN0CiAgICAgcHVibGljIHZvaWQgc2hvdWxkUmVhZFdyaXRlVGltZXN0YW1wKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CiAgICAgICAgIGZpbmFsIFN0cmluZyByZXNvdXJjZU5hbWUgPSAidGltZXN0YW1wIjsKICAgICAgICAgYXNzdW1lQ29tcGF0aWJpbGl0eShyZXNvdXJjZU5hbWUpOwpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9HcmFwaEJpbmFyeUNvbXBhdGliaWxpdHlUZXN0LmphdmEgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L0dyYXBoQmluYXJ5Q29tcGF0aWJpbGl0eVRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjI5MTZhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9HcmFwaEJpbmFyeUNvbXBhdGliaWxpdHlUZXN0LmphdmEKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyYXBoYmluYXJ5OworCitpbXBvcnQgaW8ubmV0dHkuYnVmZmVyLkJ5dGVCdWZBbGxvY2F0b3I7CitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmlvLm91dHB1dC5CeXRlQXJyYXlPdXRwdXRTdHJlYW07CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5kcml2ZXIuc2VyLk5ldHR5QnVmZmVyRmFjdG9yeTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5iaW5hcnkuR3JhcGhCaW5hcnlSZWFkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uYmluYXJ5LkdyYXBoQmluYXJ5V3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLkFic3RyYWN0VHlwZWRDb21wYXRpYmlsaXR5VGVzdDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5CdWZmZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uQ29tcGF0aWJpbGl0eTsKK2ltcG9ydCBvcmcuanVuaXQucnVubmVyLlJ1bldpdGg7CitpbXBvcnQgb3JnLmp1bml0LnJ1bm5lcnMuUGFyYW1ldGVyaXplZDsKKworaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CisKKy8qKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitAUnVuV2l0aChQYXJhbWV0ZXJpemVkLmNsYXNzKQorcHVibGljIGNsYXNzIEdyYXBoQmluYXJ5Q29tcGF0aWJpbGl0eVRlc3QgZXh0ZW5kcyBBYnN0cmFjdFR5cGVkQ29tcGF0aWJpbGl0eVRlc3QgeworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgQnl0ZUJ1ZkFsbG9jYXRvciBhbGxvY2F0b3IgPSBCeXRlQnVmQWxsb2NhdG9yLkRFRkFVTFQ7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgR3JhcGhCaW5hcnlXcml0ZXIgd3JpdGVyVjEgPSBuZXcgR3JhcGhCaW5hcnlXcml0ZXIoKTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBHcmFwaEJpbmFyeVJlYWRlciByZWFkZXJWMSA9IG5ldyBHcmFwaEJpbmFyeVJlYWRlcigpOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIE5ldHR5QnVmZmVyRmFjdG9yeSBidWZmZXJGYWN0b3J5ID0gbmV3IE5ldHR5QnVmZmVyRmFjdG9yeSgpOworCisgICAgQFBhcmFtZXRlcml6ZWQuUGFyYW1ldGVycyhuYW1lID0gImV4cGVjdCh7MH0pIikKKyAgICBwdWJsaWMgc3RhdGljIEl0ZXJhYmxlPE9iamVjdFtdPiBkYXRhKCkgeworICAgICAgICByZXR1cm4gQXJyYXlzLmFzTGlzdChuZXcgT2JqZWN0W11bXXsKKyAgICAgICAgICAgICAgICB7R3JhcGhCaW5hcnlDb21wYXRpYmlsaXR5LlYxXzNfNF80LCByZWFkZXJWMSwgd3JpdGVyVjEgfSwKKyAgICAgICAgICAgICAgICB7R3JhcGhCaW5hcnlDb21wYXRpYmlsaXR5LlYxXzNfNF80LCByZWFkZXJWMSwgd3JpdGVyVjEgfSwKKyAgICAgICAgICAgICAgICB7R3JhcGhCaW5hcnlDb21wYXRpYmlsaXR5LlYxXzNfNF81LCByZWFkZXJWMSwgd3JpdGVyVjEgfSwKKyAgICAgICAgICAgICAgICB7R3JhcGhCaW5hcnlDb21wYXRpYmlsaXR5LlYxXzNfNF82LCByZWFkZXJWMSwgd3JpdGVyVjEgfQorICAgICAgICB9KTsKKyAgICB9CisKKyAgICBAUGFyYW1ldGVyaXplZC5QYXJhbWV0ZXIodmFsdWUgPSAwKQorICAgIHB1YmxpYyBDb21wYXRpYmlsaXR5IGNvbXBhdGliaWxpdHk7CisKKyAgICBAUGFyYW1ldGVyaXplZC5QYXJhbWV0ZXIodmFsdWUgPSAxKQorICAgIHB1YmxpYyBHcmFwaEJpbmFyeVJlYWRlciByZWFkZXI7CisKKyAgICBAUGFyYW1ldGVyaXplZC5QYXJhbWV0ZXIodmFsdWUgPSAyKQorICAgIHB1YmxpYyBHcmFwaEJpbmFyeVdyaXRlciB3cml0ZXI7CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgPFQ+IFQgcmVhZChmaW5hbCBieXRlW10gYnl0ZXMsIGZpbmFsIENsYXNzPFQ+IGNsYXp6KSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgQnVmZmVyIGJ1ZmZlciA9IGJ1ZmZlckZhY3RvcnkuY3JlYXRlKGFsbG9jYXRvci5idWZmZXIoKSk7CisgICAgICAgIGJ1ZmZlci53cml0ZUJ5dGVzKGJ5dGVzKTsKKyAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKGJ1ZmZlcik7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGJ5dGVbXSB3cml0ZShmaW5hbCBPYmplY3QgbywgZmluYWwgQ2xhc3M8Pz4gY2xhenopIHRocm93cyBFeGNlcHRpb24gIHsKKyAgICAgICAgZmluYWwgQnVmZmVyIGJ1ZmZlciA9IGJ1ZmZlckZhY3RvcnkuY3JlYXRlKGFsbG9jYXRvci5idWZmZXIoKSk7CisgICAgICAgIHRyeSAoQnl0ZUFycmF5T3V0cHV0U3RyZWFtIHN0cmVhbSA9IG5ldyBCeXRlQXJyYXlPdXRwdXRTdHJlYW0oKSkgeworICAgICAgICAgICAgd3JpdGVyLndyaXRlKG8sIGJ1ZmZlcik7CisgICAgICAgICAgICBidWZmZXIucmVhZGVySW5kZXgoMCk7CisgICAgICAgICAgICBidWZmZXIucmVhZEJ5dGVzKHN0cmVhbSwgYnVmZmVyLnJlYWRhYmxlQnl0ZXMoKSk7CisgICAgICAgICAgICByZXR1cm4gc3RyZWFtLnRvQnl0ZUFycmF5KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgQ29tcGF0aWJpbGl0eSBnZXRDb21wYXRpYmlsaXR5KCkgeworICAgICAgICByZXR1cm4gY29tcGF0aWJpbGl0eTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL0dyYXBoU09OVHlwZWRDb21wYXRpYmlsaXR5VGVzdC5qYXZhIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9HcmFwaFNPTlR5cGVkQ29tcGF0aWJpbGl0eVRlc3QuamF2YQppbmRleCA0MmZiYjJjLi44NmQ3ZTRmIDEwMDY0NAotLS0gYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL0dyYXBoU09OVHlwZWRDb21wYXRpYmlsaXR5VGVzdC5qYXZhCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vR3JhcGhTT05UeXBlZENvbXBhdGliaWxpdHlUZXN0LmphdmEKQEAgLTgxLDcgKzgxLDIyIEBACiAgICAgICAgICAgICAgICAge0dyYXBoU09OQ29tcGF0aWJpbGl0eS5WMkQwX1BBUlRJQUxfM18zXzEwLCBtYXBwZXJWMiB9LAogICAgICAgICAgICAgICAgIHtHcmFwaFNPTkNvbXBhdGliaWxpdHkuVjNEMF9QQVJUSUFMXzNfM18xMCwgbWFwcGVyVjMgfSwKICAgICAgICAgICAgICAgICB7R3JhcGhTT05Db21wYXRpYmlsaXR5LlYyRDBfUEFSVElBTF8zXzNfMTEsIG1hcHBlclYyIH0sCi0gICAgICAgICAgICAgICAge0dyYXBoU09OQ29tcGF0aWJpbGl0eS5WM0QwX1BBUlRJQUxfM18zXzExLCBtYXBwZXJWMyB9fSk7CisgICAgICAgICAgICAgICAge0dyYXBoU09OQ29tcGF0aWJpbGl0eS5WM0QwX1BBUlRJQUxfM18zXzExLCBtYXBwZXJWMyB9LAorICAgICAgICAgICAgICAgIHtHcmFwaFNPTkNvbXBhdGliaWxpdHkuVjJEMF9QQVJUSUFMXzNfNF8wLCBtYXBwZXJWMiB9LAorICAgICAgICAgICAgICAgIHtHcmFwaFNPTkNvbXBhdGliaWxpdHkuVjNEMF9QQVJUSUFMXzNfNF8wLCBtYXBwZXJWMyB9LAorICAgICAgICAgICAgICAgIHtHcmFwaFNPTkNvbXBhdGliaWxpdHkuVjJEMF9QQVJUSUFMXzNfNF8xLCBtYXBwZXJWMiB9LAorICAgICAgICAgICAgICAgIHtHcmFwaFNPTkNvbXBhdGliaWxpdHkuVjNEMF9QQVJUSUFMXzNfNF8xLCBtYXBwZXJWMyB9LAorICAgICAgICAgICAgICAgIHtHcmFwaFNPTkNvbXBhdGliaWxpdHkuVjJEMF9QQVJUSUFMXzNfNF8yLCBtYXBwZXJWMiB9LAorICAgICAgICAgICAgICAgIHtHcmFwaFNPTkNvbXBhdGliaWxpdHkuVjNEMF9QQVJUSUFMXzNfNF8yLCBtYXBwZXJWMyB9LAorICAgICAgICAgICAgICAgIHtHcmFwaFNPTkNvbXBhdGliaWxpdHkuVjJEMF9QQVJUSUFMXzNfNF8zLCBtYXBwZXJWMiB9LAorICAgICAgICAgICAgICAgIHtHcmFwaFNPTkNvbXBhdGliaWxpdHkuVjNEMF9QQVJUSUFMXzNfNF8zLCBtYXBwZXJWMyB9LAorICAgICAgICAgICAgICAgIHtHcmFwaFNPTkNvbXBhdGliaWxpdHkuVjJEMF9QQVJUSUFMXzNfNF80LCBtYXBwZXJWMiB9LAorICAgICAgICAgICAgICAgIHtHcmFwaFNPTkNvbXBhdGliaWxpdHkuVjNEMF9QQVJUSUFMXzNfNF80LCBtYXBwZXJWMyB9LAorICAgICAgICAgICAgICAgIHtHcmFwaFNPTkNvbXBhdGliaWxpdHkuVjJEMF9QQVJUSUFMXzNfNF81LCBtYXBwZXJWMiB9LAorICAgICAgICAgICAgICAgIHtHcmFwaFNPTkNvbXBhdGliaWxpdHkuVjNEMF9QQVJUSUFMXzNfNF81LCBtYXBwZXJWMyB9LAorICAgICAgICAgICAgICAgIHtHcmFwaFNPTkNvbXBhdGliaWxpdHkuVjJEMF9QQVJUSUFMXzNfNF82LCBtYXBwZXJWMiB9LAorICAgICAgICAgICAgICAgIHtHcmFwaFNPTkNvbXBhdGliaWxpdHkuVjNEMF9QQVJUSUFMXzNfNF82LCBtYXBwZXJWMyB9CisgICAgICAgIH0pOwogICAgIH0KIAogICAgIEBQYXJhbWV0ZXJpemVkLlBhcmFtZXRlcih2YWx1ZSA9IDApCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL0dyYXBoU09OVW50eXBlZENvbXBhdGliaWxpdHlUZXN0LmphdmEgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL0dyYXBoU09OVW50eXBlZENvbXBhdGliaWxpdHlUZXN0LmphdmEKaW5kZXggZTYxYzM1ZS4uOTdkNDM1OSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9HcmFwaFNPTlVudHlwZWRDb21wYXRpYmlsaXR5VGVzdC5qYXZhCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vR3JhcGhTT05VbnR5cGVkQ29tcGF0aWJpbGl0eVRlc3QuamF2YQpAQCAtODksNyArODksMjEgQEAKICAgICAgICAgICAgICAgICB7R3JhcGhTT05Db21wYXRpYmlsaXR5LlYxRDBfM18zXzEwLCBtYXBwZXJWMSB9LAogICAgICAgICAgICAgICAgIHtHcmFwaFNPTkNvbXBhdGliaWxpdHkuVjJEMF9OT19UWVBFXzNfM18xMCwgbWFwcGVyVjIgfSwKICAgICAgICAgICAgICAgICB7R3JhcGhTT05Db21wYXRpYmlsaXR5LlYxRDBfM18zXzExLCBtYXBwZXJWMSB9LAotICAgICAgICAgICAgICAgIHtHcmFwaFNPTkNvbXBhdGliaWxpdHkuVjJEMF9OT19UWVBFXzNfM18xMSwgbWFwcGVyVjIgfQorICAgICAgICAgICAgICAgIHtHcmFwaFNPTkNvbXBhdGliaWxpdHkuVjJEMF9OT19UWVBFXzNfM18xMSwgbWFwcGVyVjIgfSwKKyAgICAgICAgICAgICAgICB7R3JhcGhTT05Db21wYXRpYmlsaXR5LlYxRDBfM180XzAsIG1hcHBlclYxIH0sCisgICAgICAgICAgICAgICAge0dyYXBoU09OQ29tcGF0aWJpbGl0eS5WMkQwX05PX1RZUEVfM180XzAsIG1hcHBlclYyIH0sCisgICAgICAgICAgICAgICAge0dyYXBoU09OQ29tcGF0aWJpbGl0eS5WMUQwXzNfNF8xLCBtYXBwZXJWMSB9LAorICAgICAgICAgICAgICAgIHtHcmFwaFNPTkNvbXBhdGliaWxpdHkuVjJEMF9OT19UWVBFXzNfNF8xLCBtYXBwZXJWMiB9LAorICAgICAgICAgICAgICAgIHtHcmFwaFNPTkNvbXBhdGliaWxpdHkuVjFEMF8zXzRfMiwgbWFwcGVyVjEgfSwKKyAgICAgICAgICAgICAgICB7R3JhcGhTT05Db21wYXRpYmlsaXR5LlYyRDBfTk9fVFlQRV8zXzRfMiwgbWFwcGVyVjIgfSwKKyAgICAgICAgICAgICAgICB7R3JhcGhTT05Db21wYXRpYmlsaXR5LlYxRDBfM180XzMsIG1hcHBlclYxIH0sCisgICAgICAgICAgICAgICAge0dyYXBoU09OQ29tcGF0aWJpbGl0eS5WMkQwX05PX1RZUEVfM180XzMsIG1hcHBlclYyIH0sCisgICAgICAgICAgICAgICAge0dyYXBoU09OQ29tcGF0aWJpbGl0eS5WMUQwXzNfNF80LCBtYXBwZXJWMSB9LAorICAgICAgICAgICAgICAgIHtHcmFwaFNPTkNvbXBhdGliaWxpdHkuVjJEMF9OT19UWVBFXzNfNF80LCBtYXBwZXJWMiB9LAorICAgICAgICAgICAgICAgIHtHcmFwaFNPTkNvbXBhdGliaWxpdHkuVjFEMF8zXzRfNSwgbWFwcGVyVjEgfSwKKyAgICAgICAgICAgICAgICB7R3JhcGhTT05Db21wYXRpYmlsaXR5LlYyRDBfTk9fVFlQRV8zXzRfNSwgbWFwcGVyVjIgfSwKKyAgICAgICAgICAgICAgICB7R3JhcGhTT05Db21wYXRpYmlsaXR5LlYxRDBfM180XzYsIG1hcHBlclYxIH0sCisgICAgICAgICAgICAgICAge0dyYXBoU09OQ29tcGF0aWJpbGl0eS5WMkQwX05PX1RZUEVfM180XzYsIG1hcHBlclYyIH0KICAgICAgICAgfSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vR3J5b0NvbXBhdGliaWxpdHlUZXN0LmphdmEgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vR3J5b0NvbXBhdGliaWxpdHlUZXN0LmphdmEKaW5kZXggY2IwOGQ4Mi4uNzZiNDk4MSAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL0dyeW9Db21wYXRpYmlsaXR5VGVzdC5qYXZhCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9HcnlvQ29tcGF0aWJpbGl0eVRlc3QuamF2YQpAQCAtNzgsNyArNzgsMjIgQEAKICAgICAgICAgICAgICAgICB7R3J5b0NvbXBhdGliaWxpdHkuVjFEMF8zXzNfMTAsIG1hcHBlclYxIH0sCiAgICAgICAgICAgICAgICAge0dyeW9Db21wYXRpYmlsaXR5LlYzRDBfM18zXzEwLCBtYXBwZXJWMyB9LAogICAgICAgICAgICAgICAgIHtHcnlvQ29tcGF0aWJpbGl0eS5WMUQwXzNfM18xMSwgbWFwcGVyVjEgfSwKLSAgICAgICAgICAgICAgICB7R3J5b0NvbXBhdGliaWxpdHkuVjNEMF8zXzNfMTEsIG1hcHBlclYzIH19KTsKKyAgICAgICAgICAgICAgICB7R3J5b0NvbXBhdGliaWxpdHkuVjNEMF8zXzNfMTEsIG1hcHBlclYzIH0sCisgICAgICAgICAgICAgICAge0dyeW9Db21wYXRpYmlsaXR5LlYxRDBfM180XzAsIG1hcHBlclYxIH0sCisgICAgICAgICAgICAgICAge0dyeW9Db21wYXRpYmlsaXR5LlYzRDBfM180XzAsIG1hcHBlclYzIH0sCisgICAgICAgICAgICAgICAge0dyeW9Db21wYXRpYmlsaXR5LlYxRDBfM180XzEsIG1hcHBlclYxIH0sCisgICAgICAgICAgICAgICAge0dyeW9Db21wYXRpYmlsaXR5LlYzRDBfM180XzEsIG1hcHBlclYzIH0sCisgICAgICAgICAgICAgICAge0dyeW9Db21wYXRpYmlsaXR5LlYxRDBfM180XzIsIG1hcHBlclYxIH0sCisgICAgICAgICAgICAgICAge0dyeW9Db21wYXRpYmlsaXR5LlYzRDBfM180XzIsIG1hcHBlclYzIH0sCisgICAgICAgICAgICAgICAge0dyeW9Db21wYXRpYmlsaXR5LlYxRDBfM180XzMsIG1hcHBlclYxIH0sCisgICAgICAgICAgICAgICAge0dyeW9Db21wYXRpYmlsaXR5LlYzRDBfM180XzMsIG1hcHBlclYzIH0sCisgICAgICAgICAgICAgICAge0dyeW9Db21wYXRpYmlsaXR5LlYxRDBfM180XzQsIG1hcHBlclYxIH0sCisgICAgICAgICAgICAgICAge0dyeW9Db21wYXRpYmlsaXR5LlYzRDBfM180XzQsIG1hcHBlclYzIH0sCisgICAgICAgICAgICAgICAge0dyeW9Db21wYXRpYmlsaXR5LlYxRDBfM180XzUsIG1hcHBlclYxIH0sCisgICAgICAgICAgICAgICAge0dyeW9Db21wYXRpYmlsaXR5LlYzRDBfM180XzUsIG1hcHBlclYzIH0sCisgICAgICAgICAgICAgICAge0dyeW9Db21wYXRpYmlsaXR5LlYxRDBfM180XzYsIG1hcHBlclYxIH0sCisgICAgICAgICAgICAgICAge0dyeW9Db21wYXRpYmlsaXR5LlYzRDBfM180XzYsIG1hcHBlclYzIH0KKyAgICAgICAgfSk7CiAgICAgfQogCiAgICAgQFBhcmFtZXRlcml6ZWQuUGFyYW1ldGVyKHZhbHVlID0gMCkKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvYmFycmllci12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9iYXJyaWVyLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjkwNTg2MQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvYmFycmllci12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvYmlnZGVjaW1hbC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9iaWdkZWNpbWFsLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTIxZDk1NwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvYmlnZGVjaW1hbC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvYmlnaW50ZWdlci12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9iaWdpbnRlZ2VyLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDg0MWZiZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvYmlnaW50ZWdlci12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvYmluZGluZy12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9iaW5kaW5nLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzk2MjBlYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvYmluZGluZy12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvYnVsa3NldC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9idWxrc2V0LXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDU0MjkwNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvYnVsa3NldC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvYnl0ZS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9ieXRlLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWY5NTQ0ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvYnl0ZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvYnl0ZWJ1ZmZlci12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9ieXRlYnVmZmVyLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk3OTNkMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvYnl0ZWJ1ZmZlci12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvYnl0ZWNvZGUtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvYnl0ZWNvZGUtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzc2YzJlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9ieXRlY29kZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvY2FyZGluYWxpdHktdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvY2FyZGluYWxpdHktdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzg3NWE1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9jYXJkaW5hbGl0eS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvY2hhci12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9jaGFyLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjlkOTdlNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvY2hhci12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvY2xhc3MtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvY2xhc3MtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmUyNzJkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9jbGFzcy12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvY29sdW1uLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL2NvbHVtbi12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2ODA1YzgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL2NvbHVtbi12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvZGF0ZS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9kYXRlLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY4ZTE3YQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvZGF0ZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvZGlyZWN0aW9uLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL2RpcmVjdGlvbi12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjYWFiYTMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL2RpcmVjdGlvbi12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvZG91YmxlLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL2RvdWJsZS12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1MzhhNjIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL2RvdWJsZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvZHVyYXRpb24tdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvZHVyYXRpb24tdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZmZhM2FkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9kdXJhdGlvbi12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvZWRnZS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9lZGdlLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDg2ZTg1ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvZWRnZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvZmxvYXQtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvZmxvYXQtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMjI3NzJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9mbG9hdC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvaW5ldGFkZHJlc3MtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvaW5ldGFkZHJlc3MtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjEzZGRiCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9pbmV0YWRkcmVzcy12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvaW5zdGFudC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9pbnN0YW50LXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzMzNTUzMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvaW5zdGFudC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvaW50ZWdlci12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9pbnRlZ2VyLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2RjMjQ2YQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvaW50ZWdlci12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvbGFtYmRhLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL2xhbWJkYS12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwZTk4ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL2xhbWJkYS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvbGlzdC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9saXN0LXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWFhNDA1ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvbGlzdC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvbG9jYWxkYXRlLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL2xvY2FsZGF0ZS12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjOWUyMTEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL2xvY2FsZGF0ZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvbG9jYWxkYXRldGltZS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9sb2NhbGRhdGV0aW1lLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmUwYzgzYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvbG9jYWxkYXRldGltZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvbG9jYWx0aW1lLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL2xvY2FsdGltZS12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1Nzg1YzYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL2xvY2FsdGltZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvbG9uZy12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9sb25nLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2VlMDA4MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvbG9uZy12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvbWFwLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL21hcC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2Y2Q5ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL21hcC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvbWV0cmljcy12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9tZXRyaWNzLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVhNzdhNQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvbWV0cmljcy12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvbW9udGhkYXktdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvbW9udGhkYXktdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTI4MjYzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9tb250aGRheS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvb2Zmc2V0ZGF0ZXRpbWUtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvb2Zmc2V0ZGF0ZXRpbWUtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YjJhYWJiCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9vZmZzZXRkYXRldGltZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvb2Zmc2V0dGltZS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9vZmZzZXR0aW1lLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTRjOGM1YgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvb2Zmc2V0dGltZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvb3BlcmF0b3ItdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvb3BlcmF0b3ItdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDcxN2NjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9vcGVyYXRvci12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvb3JkZXItdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvb3JkZXItdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTFiNmFkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9vcmRlci12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvcC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9wLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWM2MDc5OQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvcC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvcGFuZC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9wYW5kLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzIzN2M5NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvcGFuZC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvcGF0aC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9wYXRoLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmEwNzVhYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvcGF0aC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvcGVyaW9kLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL3BlcmlvZC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3ZGFiMzUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL3BlcmlvZC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvcGljay12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9waWNrLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzdhY2EyZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvcGljay12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvcG9wLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL3BvcC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2OThjOTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL3BvcC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvcG9yLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL3Bvci12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjMGIzYWIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL3Bvci12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvcHJvcGVydHktdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvcHJvcGVydHktdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZGMzNGU1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9wcm9wZXJ0eS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvcHdpdGhpbi12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9wd2l0aGluLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWFkMzBhOQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvcHdpdGhpbi12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvcHdpdGhvdXQtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvcHdpdGhvdXQtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjE5NWRiCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9wd2l0aG91dC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvc2NvcGUtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvc2NvcGUtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MzRiOTU2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9zY29wZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvc2V0LXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL3NldC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyZGYwNTkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL3NldC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvc2hvcnQtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvc2hvcnQtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMWQyZDdkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy9zaG9ydC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvdC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy90LXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTYzNzZkYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvdC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvdGV4dHAtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvdGV4dHAtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzk2NDY4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy90ZXh0cC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvdGltZXN0YW1wLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL3RpbWVzdGFtcC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmYzRlNWUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL3RpbWVzdGFtcC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvdGlua2VyZ3JhcGgtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvdGlua2VyZ3JhcGgtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMGE3NmQxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy90aW5rZXJncmFwaC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvdHJhdmVyc2FsbWV0cmljcy12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy90cmF2ZXJzYWxtZXRyaWNzLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzk0N2U2MgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvdHJhdmVyc2FsbWV0cmljcy12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvdHJhdmVyc2VyLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL3RyYXZlcnNlci12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlNDdjYzAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL3RyYXZlcnNlci12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvdXVpZC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy91dWlkLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2YxNzc1ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvdXVpZC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvdmVydGV4LXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL3ZlcnRleC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmYjlkNjUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL3ZlcnRleC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvdmVydGV4cHJvcGVydHktdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvdmVydGV4cHJvcGVydHktdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OWYwMzI5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy92ZXJ0ZXhwcm9wZXJ0eS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMveWVhci12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy95ZWFyLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWZlMGM3NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMveWVhci12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMveWVhcm1vbnRoLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL3llYXJtb250aC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4MWExMjEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF8zL3llYXJtb250aC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvem9uZWRkYXRldGltZS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy96b25lZGRhdGV0aW1lLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzJlMmU4YgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvem9uZWRkYXRldGltZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvem9uZW9mZnNldC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfMy96b25lb2Zmc2V0LXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjg2N2M5NwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzMvem9uZW9mZnNldC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvYmFycmllci12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9iYXJyaWVyLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjkwNTg2MQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvYmFycmllci12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvYmlnZGVjaW1hbC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9iaWdkZWNpbWFsLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTIxZDk1NwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvYmlnZGVjaW1hbC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvYmlnaW50ZWdlci12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9iaWdpbnRlZ2VyLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDg0MWZiZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvYmlnaW50ZWdlci12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvYmluZGluZy12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9iaW5kaW5nLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzk2MjBlYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvYmluZGluZy12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvYnVsa3NldC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9idWxrc2V0LXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDU0MjkwNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvYnVsa3NldC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvYnl0ZS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9ieXRlLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWY5NTQ0ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvYnl0ZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvYnl0ZWJ1ZmZlci12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9ieXRlYnVmZmVyLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk3OTNkMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvYnl0ZWJ1ZmZlci12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvYnl0ZWNvZGUtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvYnl0ZWNvZGUtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzc2YzJlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9ieXRlY29kZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvY2FyZGluYWxpdHktdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvY2FyZGluYWxpdHktdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzg3NWE1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9jYXJkaW5hbGl0eS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvY2hhci12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9jaGFyLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjlkOTdlNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvY2hhci12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvY2xhc3MtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvY2xhc3MtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmUyNzJkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9jbGFzcy12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvY29sdW1uLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L2NvbHVtbi12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2ODA1YzgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L2NvbHVtbi12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvZGF0ZS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9kYXRlLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY4ZTE3YQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvZGF0ZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvZGlyZWN0aW9uLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L2RpcmVjdGlvbi12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjYWFiYTMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L2RpcmVjdGlvbi12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvZG91YmxlLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L2RvdWJsZS12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1MzhhNjIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L2RvdWJsZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvZHVyYXRpb24tdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvZHVyYXRpb24tdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZmZhM2FkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9kdXJhdGlvbi12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvZWRnZS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9lZGdlLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDg2ZTg1ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvZWRnZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvZmxvYXQtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvZmxvYXQtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMjI3NzJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9mbG9hdC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvaW5ldGFkZHJlc3MtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvaW5ldGFkZHJlc3MtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjEzZGRiCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9pbmV0YWRkcmVzcy12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvaW5zdGFudC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9pbnN0YW50LXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzMzNTUzMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvaW5zdGFudC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvaW50ZWdlci12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9pbnRlZ2VyLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2RjMjQ2YQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvaW50ZWdlci12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvbGFtYmRhLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L2xhbWJkYS12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwZTk4ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L2xhbWJkYS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvbGlzdC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9saXN0LXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWFhNDA1ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvbGlzdC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvbG9jYWxkYXRlLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L2xvY2FsZGF0ZS12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjOWUyMTEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L2xvY2FsZGF0ZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvbG9jYWxkYXRldGltZS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9sb2NhbGRhdGV0aW1lLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmUwYzgzYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvbG9jYWxkYXRldGltZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvbG9jYWx0aW1lLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L2xvY2FsdGltZS12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1Nzg1YzYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L2xvY2FsdGltZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvbG9uZy12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9sb25nLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2VlMDA4MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvbG9uZy12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvbWFwLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L21hcC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2Y2Q5ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L21hcC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvbWV0cmljcy12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9tZXRyaWNzLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVhNzdhNQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvbWV0cmljcy12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvbW9udGhkYXktdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvbW9udGhkYXktdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTI4MjYzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9tb250aGRheS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvb2Zmc2V0ZGF0ZXRpbWUtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvb2Zmc2V0ZGF0ZXRpbWUtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YjJhYWJiCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9vZmZzZXRkYXRldGltZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvb2Zmc2V0dGltZS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9vZmZzZXR0aW1lLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTRjOGM1YgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvb2Zmc2V0dGltZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvb3BlcmF0b3ItdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvb3BlcmF0b3ItdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDcxN2NjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9vcGVyYXRvci12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvb3JkZXItdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvb3JkZXItdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTFiNmFkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9vcmRlci12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvcC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9wLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWM2MDc5OQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvcC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvcGFuZC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9wYW5kLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzIzN2M5NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvcGFuZC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvcGF0aC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9wYXRoLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmEwNzVhYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvcGF0aC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvcGVyaW9kLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L3BlcmlvZC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3ZGFiMzUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L3BlcmlvZC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvcGljay12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9waWNrLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzdhY2EyZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvcGljay12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvcG9wLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L3BvcC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2OThjOTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L3BvcC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvcG9yLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L3Bvci12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjMGIzYWIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L3Bvci12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvcHJvcGVydHktdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvcHJvcGVydHktdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZGMzNGU1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9wcm9wZXJ0eS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvcHdpdGhpbi12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9wd2l0aGluLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWFkMzBhOQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvcHdpdGhpbi12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvcHdpdGhvdXQtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvcHdpdGhvdXQtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjE5NWRiCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9wd2l0aG91dC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvc2NvcGUtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvc2NvcGUtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MzRiOTU2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9zY29wZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvc2V0LXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L3NldC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyZGYwNTkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L3NldC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvc2hvcnQtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvc2hvcnQtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMWQyZDdkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC9zaG9ydC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvdC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC90LXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTYzNzZkYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvdC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvdGV4dHAtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvdGV4dHAtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzk2NDY4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC90ZXh0cC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvdGltZXN0YW1wLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L3RpbWVzdGFtcC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmYzRlNWUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L3RpbWVzdGFtcC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvdGlua2VyZ3JhcGgtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvdGlua2VyZ3JhcGgtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMGE3NmQxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC90aW5rZXJncmFwaC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvdHJhdmVyc2FsbWV0cmljcy12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC90cmF2ZXJzYWxtZXRyaWNzLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzk0N2U2MgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvdHJhdmVyc2FsbWV0cmljcy12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvdHJhdmVyc2VyLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L3RyYXZlcnNlci12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlNDdjYzAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L3RyYXZlcnNlci12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvdXVpZC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC91dWlkLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2YxNzc1ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvdXVpZC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvdmVydGV4LXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L3ZlcnRleC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmYjlkNjUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L3ZlcnRleC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvdmVydGV4cHJvcGVydHktdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvdmVydGV4cHJvcGVydHktdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OWYwMzI5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC92ZXJ0ZXhwcm9wZXJ0eS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQveWVhci12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC95ZWFyLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWZlMGM3NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQveWVhci12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQveWVhcm1vbnRoLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L3llYXJtb250aC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4MWExMjEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF80L3llYXJtb250aC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvem9uZW9mZnNldC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNC96b25lb2Zmc2V0LXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjg2N2M5NwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzQvem9uZW9mZnNldC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvYmFycmllci12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9iYXJyaWVyLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjkwNTg2MQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvYmFycmllci12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvYmlnZGVjaW1hbC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9iaWdkZWNpbWFsLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTIxZDk1NwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvYmlnZGVjaW1hbC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvYmlnaW50ZWdlci12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9iaWdpbnRlZ2VyLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDg0MWZiZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvYmlnaW50ZWdlci12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvYmluZGluZy12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9iaW5kaW5nLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzk2MjBlYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvYmluZGluZy12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvYnVsa3NldC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9idWxrc2V0LXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDU0MjkwNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvYnVsa3NldC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvYnl0ZS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9ieXRlLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWY5NTQ0ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvYnl0ZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvYnl0ZWJ1ZmZlci12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9ieXRlYnVmZmVyLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk3OTNkMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvYnl0ZWJ1ZmZlci12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvYnl0ZWNvZGUtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvYnl0ZWNvZGUtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzc2YzJlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9ieXRlY29kZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvY2FyZGluYWxpdHktdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvY2FyZGluYWxpdHktdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzg3NWE1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9jYXJkaW5hbGl0eS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvY2hhci12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9jaGFyLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjlkOTdlNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvY2hhci12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvY2xhc3MtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvY2xhc3MtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmUyNzJkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9jbGFzcy12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvY29sdW1uLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L2NvbHVtbi12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2ODA1YzgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L2NvbHVtbi12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvZGF0ZS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9kYXRlLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY4ZTE3YQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvZGF0ZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvZGlyZWN0aW9uLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L2RpcmVjdGlvbi12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjYWFiYTMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L2RpcmVjdGlvbi12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvZG91YmxlLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L2RvdWJsZS12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1MzhhNjIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L2RvdWJsZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvZHVyYXRpb24tdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvZHVyYXRpb24tdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZmZhM2FkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9kdXJhdGlvbi12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvZWRnZS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9lZGdlLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDg2ZTg1ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvZWRnZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvZmxvYXQtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvZmxvYXQtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMjI3NzJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9mbG9hdC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvaW5ldGFkZHJlc3MtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvaW5ldGFkZHJlc3MtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjEzZGRiCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9pbmV0YWRkcmVzcy12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvaW5zdGFudC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9pbnN0YW50LXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzMzNTUzMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvaW5zdGFudC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvaW50ZWdlci12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9pbnRlZ2VyLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2RjMjQ2YQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvaW50ZWdlci12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvbGFtYmRhLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L2xhbWJkYS12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwZTk4ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L2xhbWJkYS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvbGlzdC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9saXN0LXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWFhNDA1ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvbGlzdC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvbG9jYWxkYXRlLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L2xvY2FsZGF0ZS12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjOWUyMTEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L2xvY2FsZGF0ZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvbG9jYWxkYXRldGltZS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9sb2NhbGRhdGV0aW1lLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmUwYzgzYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvbG9jYWxkYXRldGltZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvbG9jYWx0aW1lLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L2xvY2FsdGltZS12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1Nzg1YzYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L2xvY2FsdGltZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvbG9uZy12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9sb25nLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2VlMDA4MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvbG9uZy12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvbWFwLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L21hcC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2Y2Q5ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L21hcC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvbWV0cmljcy12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9tZXRyaWNzLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVhNzdhNQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvbWV0cmljcy12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvbW9udGhkYXktdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvbW9udGhkYXktdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTI4MjYzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9tb250aGRheS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvb2Zmc2V0ZGF0ZXRpbWUtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvb2Zmc2V0ZGF0ZXRpbWUtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YjJhYWJiCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9vZmZzZXRkYXRldGltZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvb2Zmc2V0dGltZS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9vZmZzZXR0aW1lLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTRjOGM1YgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvb2Zmc2V0dGltZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvb3BlcmF0b3ItdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvb3BlcmF0b3ItdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDcxN2NjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9vcGVyYXRvci12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvb3JkZXItdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvb3JkZXItdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTFiNmFkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9vcmRlci12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvcC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9wLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWM2MDc5OQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvcC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvcGFuZC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9wYW5kLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzIzN2M5NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvcGFuZC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvcGF0aC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9wYXRoLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmEwNzVhYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvcGF0aC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvcGVyaW9kLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L3BlcmlvZC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3ZGFiMzUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L3BlcmlvZC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvcGljay12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9waWNrLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzdhY2EyZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvcGljay12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvcG9wLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L3BvcC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2OThjOTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L3BvcC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvcG9yLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L3Bvci12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjMGIzYWIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L3Bvci12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvcHJvcGVydHktdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvcHJvcGVydHktdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZGMzNGU1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9wcm9wZXJ0eS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvcHdpdGhpbi12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9wd2l0aGluLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWFkMzBhOQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvcHdpdGhpbi12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvcHdpdGhvdXQtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvcHdpdGhvdXQtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjE5NWRiCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9wd2l0aG91dC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvc2NvcGUtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvc2NvcGUtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MzRiOTU2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9zY29wZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvc2V0LXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L3NldC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyZGYwNTkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L3NldC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvc2hvcnQtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvc2hvcnQtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMWQyZDdkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS9zaG9ydC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvdC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS90LXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTYzNzZkYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvdC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvdGV4dHAtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvdGV4dHAtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzk2NDY4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS90ZXh0cC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvdGltZXN0YW1wLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L3RpbWVzdGFtcC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmYzRlNWUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L3RpbWVzdGFtcC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvdGlua2VyZ3JhcGgtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvdGlua2VyZ3JhcGgtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMGE3NmQxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS90aW5rZXJncmFwaC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvdHJhdmVyc2FsbWV0cmljcy12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS90cmF2ZXJzYWxtZXRyaWNzLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzk0N2U2MgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvdHJhdmVyc2FsbWV0cmljcy12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvdHJhdmVyc2VyLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L3RyYXZlcnNlci12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlNDdjYzAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L3RyYXZlcnNlci12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvdXVpZC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS91dWlkLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2YxNzc1ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvdXVpZC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvdmVydGV4LXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L3ZlcnRleC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmYjlkNjUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L3ZlcnRleC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvdmVydGV4cHJvcGVydHktdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvdmVydGV4cHJvcGVydHktdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OWYwMzI5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS92ZXJ0ZXhwcm9wZXJ0eS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUveWVhci12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS95ZWFyLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWZlMGM3NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUveWVhci12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUveWVhcm1vbnRoLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L3llYXJtb250aC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4MWExMjEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF81L3llYXJtb250aC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvem9uZW9mZnNldC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNS96b25lb2Zmc2V0LXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjg2N2M5NwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzUvem9uZW9mZnNldC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvYmFycmllci12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9iYXJyaWVyLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjkwNTg2MQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvYmFycmllci12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvYmlnZGVjaW1hbC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9iaWdkZWNpbWFsLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTIxZDk1NwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvYmlnZGVjaW1hbC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvYmlnaW50ZWdlci12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9iaWdpbnRlZ2VyLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDg0MWZiZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvYmlnaW50ZWdlci12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvYmluZGluZy12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9iaW5kaW5nLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzk2MjBlYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvYmluZGluZy12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvYnVsa3NldC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9idWxrc2V0LXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDU0MjkwNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvYnVsa3NldC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvYnl0ZS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9ieXRlLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWY5NTQ0ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvYnl0ZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvYnl0ZWJ1ZmZlci12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9ieXRlYnVmZmVyLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk3OTNkMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvYnl0ZWJ1ZmZlci12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvYnl0ZWNvZGUtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvYnl0ZWNvZGUtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzc2YzJlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9ieXRlY29kZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvY2FyZGluYWxpdHktdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvY2FyZGluYWxpdHktdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzg3NWE1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9jYXJkaW5hbGl0eS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvY2hhci12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9jaGFyLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjlkOTdlNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvY2hhci12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvY2xhc3MtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvY2xhc3MtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmUyNzJkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9jbGFzcy12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvY29sdW1uLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L2NvbHVtbi12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2ODA1YzgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L2NvbHVtbi12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvZGF0ZS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9kYXRlLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY4ZTE3YQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvZGF0ZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvZGlyZWN0aW9uLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L2RpcmVjdGlvbi12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjYWFiYTMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L2RpcmVjdGlvbi12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvZG91YmxlLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L2RvdWJsZS12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1MzhhNjIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L2RvdWJsZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvZHVyYXRpb24tdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvZHVyYXRpb24tdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZmZhM2FkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9kdXJhdGlvbi12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvZWRnZS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9lZGdlLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDg2ZTg1ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvZWRnZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvZmxvYXQtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvZmxvYXQtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMjI3NzJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9mbG9hdC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvaW5ldGFkZHJlc3MtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvaW5ldGFkZHJlc3MtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjEzZGRiCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9pbmV0YWRkcmVzcy12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvaW5zdGFudC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9pbnN0YW50LXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzMzNTUzMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvaW5zdGFudC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvaW50ZWdlci12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9pbnRlZ2VyLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2RjMjQ2YQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvaW50ZWdlci12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvbGFtYmRhLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L2xhbWJkYS12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwZTk4ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L2xhbWJkYS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvbGlzdC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9saXN0LXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWFhNDA1ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvbGlzdC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvbG9jYWxkYXRlLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L2xvY2FsZGF0ZS12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjOWUyMTEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L2xvY2FsZGF0ZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvbG9jYWxkYXRldGltZS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9sb2NhbGRhdGV0aW1lLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmUwYzgzYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvbG9jYWxkYXRldGltZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvbG9jYWx0aW1lLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L2xvY2FsdGltZS12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1Nzg1YzYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L2xvY2FsdGltZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvbG9uZy12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9sb25nLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2VlMDA4MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvbG9uZy12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvbWFwLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L21hcC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2Y2Q5ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L21hcC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvbWV0cmljcy12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9tZXRyaWNzLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVhNzdhNQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvbWV0cmljcy12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvbW9udGhkYXktdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvbW9udGhkYXktdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTI4MjYzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9tb250aGRheS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvb2Zmc2V0ZGF0ZXRpbWUtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvb2Zmc2V0ZGF0ZXRpbWUtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YjJhYWJiCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9vZmZzZXRkYXRldGltZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvb2Zmc2V0dGltZS12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9vZmZzZXR0aW1lLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTRjOGM1YgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvb2Zmc2V0dGltZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvb3BlcmF0b3ItdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvb3BlcmF0b3ItdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDcxN2NjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9vcGVyYXRvci12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvb3JkZXItdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvb3JkZXItdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTFiNmFkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9vcmRlci12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvcC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9wLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWM2MDc5OQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvcC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvcGFuZC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9wYW5kLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzIzN2M5NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvcGFuZC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvcGF0aC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9wYXRoLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmEwNzVhYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvcGF0aC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvcGVyaW9kLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L3BlcmlvZC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3ZGFiMzUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L3BlcmlvZC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvcGljay12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9waWNrLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzdhY2EyZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvcGljay12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvcG9wLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L3BvcC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2OThjOTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L3BvcC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvcG9yLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L3Bvci12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjMGIzYWIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L3Bvci12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvcHJvcGVydHktdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvcHJvcGVydHktdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZGMzNGU1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9wcm9wZXJ0eS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvcHdpdGhpbi12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9wd2l0aGluLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWFkMzBhOQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvcHdpdGhpbi12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvcHdpdGhvdXQtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvcHdpdGhvdXQtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjE5NWRiCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9wd2l0aG91dC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvc2NvcGUtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvc2NvcGUtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MzRiOTU2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9zY29wZS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvc2V0LXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L3NldC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyZGYwNTkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L3NldC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvc2hvcnQtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvc2hvcnQtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMWQyZDdkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi9zaG9ydC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvdC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi90LXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTYzNzZkYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvdC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvdGV4dHAtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvdGV4dHAtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzk2NDY4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi90ZXh0cC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvdGltZXN0YW1wLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L3RpbWVzdGFtcC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmYzRlNWUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L3RpbWVzdGFtcC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvdGlua2VyZ3JhcGgtdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvdGlua2VyZ3JhcGgtdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMGE3NmQxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi90aW5rZXJncmFwaC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvdHJhdmVyc2FsbWV0cmljcy12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi90cmF2ZXJzYWxtZXRyaWNzLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzk0N2U2MgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvdHJhdmVyc2FsbWV0cmljcy12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvdHJhdmVyc2VyLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L3RyYXZlcnNlci12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlNDdjYzAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L3RyYXZlcnNlci12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvdXVpZC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi91dWlkLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2YxNzc1ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvdXVpZC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvdmVydGV4LXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L3ZlcnRleC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmYjlkNjUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L3ZlcnRleC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvdmVydGV4cHJvcGVydHktdjEuZ2JpbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvdmVydGV4cHJvcGVydHktdjEuZ2JpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OWYwMzI5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi92ZXJ0ZXhwcm9wZXJ0eS12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYveWVhci12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi95ZWFyLXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWZlMGM3NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYveWVhci12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYveWVhcm1vbnRoLXYxLmdiaW4gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L3llYXJtb250aC12MS5nYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4MWExMjEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhiaW5hcnkvXzNfNF82L3llYXJtb250aC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvem9uZW9mZnNldC12MS5nYmluIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoYmluYXJ5L18zXzRfNi96b25lb2Zmc2V0LXYxLmdiaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjg2N2M5NwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaGJpbmFyeS9fM180XzYvem9uZW9mZnNldC12MS5nYmluCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGM1YjgyYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjFkMC5qc29uCkBAIC0wLDAgKzEsMTIgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IiwKKyAgInN0YXR1cyIgOiB7CisgICAgIm1lc3NhZ2UiIDogIiIsCisgICAgImNvZGUiIDogNDA3LAorICAgICJhdHRyaWJ1dGVzIiA6IHsgfQorICB9LAorICAicmVzdWx0IiA6IHsKKyAgICAiZGF0YSIgOiBudWxsLAorICAgICJtZXRhIiA6IHsgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzViODJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSwxMiBAQAoreworICAicmVxdWVzdElkIiA6ICI0MWQyZTI4YS0yMGE0LTRhYjAtYjM3OS1kODEwZGVkZTM3ODYiLAorICAic3RhdHVzIiA6IHsKKyAgICAibWVzc2FnZSIgOiAiIiwKKyAgICAiY29kZSIgOiA0MDcsCisgICAgImF0dHJpYnV0ZXMiIDogeyB9CisgIH0sCisgICJyZXN1bHQiIDogeworICAgICJkYXRhIiA6IG51bGwsCisgICAgIm1ldGEiIDogeyB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzViODJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDEyIEBACit7CisgICJyZXF1ZXN0SWQiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIsCisgICJzdGF0dXMiIDogeworICAgICJtZXNzYWdlIiA6ICIiLAorICAgICJjb2RlIiA6IDQwNywKKyAgICAiYXR0cmlidXRlcyIgOiB7IH0KKyAgfSwKKyAgInJlc3VsdCIgOiB7CisgICAgImRhdGEiIDogbnVsbCwKKyAgICAibWV0YSIgOiB7IH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDE3MzRjNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTggQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IiwKKyAgInN0YXR1cyIgOiB7CisgICAgIm1lc3NhZ2UiIDogIiIsCisgICAgImNvZGUiIDogNDA3LAorICAgICJhdHRyaWJ1dGVzIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbIF0KKyAgICB9CisgIH0sCisgICJyZXN1bHQiIDogeworICAgICJkYXRhIiA6IG51bGwsCisgICAgIm1ldGEiIDogeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgXQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYXV0aGVudGljYXRpb25yZXNwb25zZS12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzOGUxZmQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjFkMC5qc29uCkBAIC0wLDAgKzEsOSBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImF1dGhlbnRpY2F0aW9uIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJzYXNsTWVjaGFuaXNtIiA6ICJQTEFJTiIsCisgICAgInNhc2wiIDogIkFITjBaWEJvY0dobGJnQndZWE56ZDI5eVpBPT0iCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzhlMWZkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxLDkgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJhdXRoZW50aWNhdGlvbiIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAic2FzbE1lY2hhbmlzbSIgOiAiUExBSU4iLAorICAgICJzYXNsIiA6ICJBSE4wWlhCb2NHaGxiZ0J3WVhOemQyOXlaQT09IgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzOGUxZmQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw5IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiYXV0aGVudGljYXRpb24iLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgInNhc2xNZWNoYW5pc20iIDogIlBMQUlOIiwKKyAgICAic2FzbCIgOiAiQUhOMFpYQm9jR2hsYmdCd1lYTnpkMjl5WkE9PSIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYXV0aGVudGljYXRpb25yZXNwb25zZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhY2VjYTIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjNkMC5qc29uCkBAIC0wLDAgKzEsOSBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImF1dGhlbnRpY2F0aW9uIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAic2FzbE1lY2hhbmlzbSIsICJQTEFJTiIsICJzYXNsIiwgIkFITjBaWEJvY0dobGJnQndZWE56ZDI5eVpBPT0iIF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYmFycmllci12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYmFycmllci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZGRjY2RkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9iYXJyaWVyLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6QmFycmllciIsCisgICJAdmFsdWUiIDogIm5vcm1TYWNrIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYmFycmllci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2JhcnJpZXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkZGNjZGQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2JhcnJpZXItdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6QmFycmllciIsCisgICJAdmFsdWUiIDogIm5vcm1TYWNrIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYmlnZGVjaW1hbC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYmlnZGVjaW1hbC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzUzMzdjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9iaWdkZWNpbWFsLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJpZ0RlY2ltYWwiLAorICAiQHZhbHVlIiA6IDEyMzQ1Njc4OTk4NzY1NDMyMTEyMzQ1Njc4OTk4NzY1NDMyMQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYmlnZGVjaW1hbC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2JpZ2RlY2ltYWwtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3NTMzN2MKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2JpZ2RlY2ltYWwtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJpZ0RlY2ltYWwiLAorICAiQHZhbHVlIiA6IDEyMzQ1Njc4OTk4NzY1NDMyMTEyMzQ1Njc4OTk4NzY1NDMyMQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYmlnaW50ZWdlci12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYmlnaW50ZWdlci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OGU2MTE0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9iaWdpbnRlZ2VyLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJpZ0ludGVnZXIiLAorICAiQHZhbHVlIiA6IDEyMzQ1Njc4OTk4NzY1NDMyMTEyMzQ1Njc4OTk4NzY1NDMyMQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYmlnaW50ZWdlci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2JpZ2ludGVnZXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4ZTYxMTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2JpZ2ludGVnZXItdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJpZ0ludGVnZXIiLAorICAiQHZhbHVlIiA6IDEyMzQ1Njc4OTk4NzY1NDMyMTEyMzQ1Njc4OTk4NzY1NDMyMQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYmluZGluZy12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYmluZGluZy12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzliOGM3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9iaW5kaW5nLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkJpbmRpbmciLAorICAiQHZhbHVlIiA6IHsKKyAgICAia2V5IiA6ICJ4IiwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYmluZGluZy12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2JpbmRpbmctdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3OWI4YzcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2JpbmRpbmctdjNkMC5qc29uCkBAIC0wLDAgKzEsMTAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkJpbmRpbmciLAorICAiQHZhbHVlIiA6IHsKKyAgICAia2V5IiA6ICJ4IiwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYnVsa3NldC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2J1bGtzZXQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyMTZhMzYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2J1bGtzZXQtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkJ1bGtTZXQiLAorICAiQHZhbHVlIiA6IFsgIm1hcmtvIiwgeworICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgIkB2YWx1ZSIgOiAxCisgIH0sICJqb3NoIiwgeworICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgIkB2YWx1ZSIgOiAyCisgIH0gXQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYnl0ZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYnl0ZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Nzk2MjViCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9ieXRlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJ5dGUiLAorICAiQHZhbHVlIiA6IDEKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2J5dGUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9ieXRlLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Nzk2MjViCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9ieXRlLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpCeXRlIiwKKyAgIkB2YWx1ZSIgOiAxCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9ieXRlYnVmZmVyLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9ieXRlYnVmZmVyLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3MjQxMTUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2J5dGVidWZmZXItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Qnl0ZUJ1ZmZlciIsCisgICJAdmFsdWUiIDogImMyOXRaU0JpZVhSbGN5Qm1iM0lnZVc5MSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2J5dGVidWZmZXItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9ieXRlYnVmZmVyLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzI0MTE1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9ieXRlYnVmZmVyLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpCeXRlQnVmZmVyIiwKKyAgIkB2YWx1ZSIgOiAiYzI5dFpTQmllWFJsY3lCbWIzSWdlVzkxIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYnl0ZWNvZGUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2J5dGVjb2RlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2OWQyNzcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2J5dGVjb2RlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNiBAQAoreworICAiQHR5cGUiIDogImc6Qnl0ZWNvZGUiLAorICAiQHZhbHVlIiA6IHsKKyAgICAic3RlcCIgOiBbIFsgIlYiIF0sIFsgImhhc0xhYmVsIiwgInBlcnNvbiIgXSwgWyAib3V0IiBdLCBbICJpbiIgXSwgWyAidHJlZSIgXSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2J5dGVjb2RlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvYnl0ZWNvZGUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2OWQyNzcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2J5dGVjb2RlLXYzZDAuanNvbgpAQCAtMCwwICsxLDYgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkJ5dGVjb2RlIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInN0ZXAiIDogWyBbICJWIiBdLCBbICJoYXNMYWJlbCIsICJwZXJzb24iIF0sIFsgIm91dCIgXSwgWyAiaW4iIF0sIFsgInRyZWUiIF0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9jYXJkaW5hbGl0eS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvY2FyZGluYWxpdHktdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM0ZTY0ZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvY2FyZGluYWxpdHktdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpDYXJkaW5hbGl0eSIsCisgICJAdmFsdWUiIDogImxpc3QiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9jYXJkaW5hbGl0eS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2NhcmRpbmFsaXR5LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzRlNjRlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9jYXJkaW5hbGl0eS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpDYXJkaW5hbGl0eSIsCisgICJAdmFsdWUiIDogImxpc3QiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9jaGFyLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9jaGFyLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmMjdlOWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2NoYXItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Q2hhciIsCisgICJAdmFsdWUiIDogIngiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9jaGFyLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvY2hhci12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGYyN2U5ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvY2hhci12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Q2hhciIsCisgICJAdmFsdWUiIDogIngiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9jbGFzcy12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvY2xhc3MtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBmMTVhMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvY2xhc3MtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpDbGFzcyIsCisgICJAdmFsdWUiIDogImphdmEuaW8uRmlsZSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2NsYXNzLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvY2xhc3MtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwZjE1YTIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2NsYXNzLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkNsYXNzIiwKKyAgIkB2YWx1ZSIgOiAiamF2YS5pby5GaWxlIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvY29sdW1uLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9jb2x1bW4tdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIzYTU2ZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvY29sdW1uLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6Q29sdW1uIiwKKyAgIkB2YWx1ZSIgOiAia2V5cyIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2NvbHVtbi12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2NvbHVtbi12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIzYTU2ZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvY29sdW1uLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkNvbHVtbiIsCisgICJAdmFsdWUiIDogImtleXMiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9kYXRlLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvZGF0ZS12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNiNzFhMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvZGF0ZS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSBAQAorMTQ4MTc1MDA3NjI5NQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvZGF0ZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvZGF0ZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjQwMDdhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9kYXRlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6RGF0ZSIsCisgICJAdmFsdWUiIDogMTQ4MTc1MDA3NjI5NQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvZGF0ZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2RhdGUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmNDAwN2EKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2RhdGUtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6RGF0ZSIsCisgICJAdmFsdWUiIDogMTQ4MTc1MDA3NjI5NQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvZGlyZWN0aW9uLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9kaXJlY3Rpb24tdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzhjYjdlNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvZGlyZWN0aW9uLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6RGlyZWN0aW9uIiwKKyAgIkB2YWx1ZSIgOiAiT1VUIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvZGlyZWN0aW9uLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvZGlyZWN0aW9uLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGNiN2U0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9kaXJlY3Rpb24tdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6RGlyZWN0aW9uIiwKKyAgIkB2YWx1ZSIgOiAiT1VUIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvZG91YmxlLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvZG91YmxlLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzcyZTYyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9kb3VibGUtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEgQEAKKzEwMC4wClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9kb3VibGUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2RvdWJsZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YWU0OTY0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9kb3VibGUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAiQHZhbHVlIiA6IDEwMC4wCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9kb3VibGUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9kb3VibGUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhZTQ5NjQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2RvdWJsZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAiQHZhbHVlIiA6IDEwMC4wCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9kdXJhdGlvbi12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvZHVyYXRpb24tdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVjMGNlOQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvZHVyYXRpb24tdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6RHVyYXRpb24iLAorICAiQHZhbHVlIiA6ICJQVDEyMEgiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9kdXJhdGlvbi12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2R1cmF0aW9uLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWMwY2U5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9kdXJhdGlvbi12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6RHVyYXRpb24iLAorICAiQHZhbHVlIiA6ICJQVDEyMEgiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9lZGdlLXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvZWRnZS12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGY3ZjE2OAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvZWRnZS12MWQwLmpzb24KQEAgLTAsMCArMSwxMiBAQAoreworICAiaWQiIDogMTMsCisgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAidHlwZSIgOiAiZWRnZSIsCisgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAiaW5WIiA6IDEwLAorICAib3V0ViIgOiAxLAorICAicHJvcGVydGllcyIgOiB7CisgICAgInNpbmNlIiA6IDIwMDkKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvZWRnZS12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2VkZ2UtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4ZTczZGIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2VkZ2UtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsMTQgQEAKK3sKKyAgImlkIiA6IDEzLAorICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICJpblYiIDogMTAsCisgICJvdXRWIiA6IDEsCisgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAic2luY2UiIDogeworICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgInZhbHVlIiA6IDIwMDkKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2VkZ2UtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2VkZ2UtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmExYzUyZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvZWRnZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDMyIEBACit7CisgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImlkIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEzCisgICAgfSwKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMTAKKyAgICB9LAorICAgICJvdXRWIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMjAwOQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvZWRnZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2VkZ2UtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhMWM1MmUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2VkZ2UtdjNkMC5qc29uCkBAIC0wLDAgKzEsMzIgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiaWQiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMTMKKyAgICB9LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxMAorICAgIH0sCisgICAgIm91dFYiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0sCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA5CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9mbG9hdC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvZmxvYXQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE3OWFhZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvZmxvYXQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpGbG9hdCIsCisgICJAdmFsdWUiIDogMTAwLjAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2Zsb2F0LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvZmxvYXQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxNzlhYWYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2Zsb2F0LXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkZsb2F0IiwKKyAgIkB2YWx1ZSIgOiAxMDAuMAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvaW5ldGFkZHJlc3MtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2luZXRhZGRyZXNzLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiYTk4YzAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2luZXRhZGRyZXNzLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkluZXRBZGRyZXNzIiwKKyAgIkB2YWx1ZSIgOiAibG9jYWxob3N0IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvaW5ldGFkZHJlc3MtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9pbmV0YWRkcmVzcy12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmJhOThjMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvaW5ldGFkZHJlc3MtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkluZXRBZGRyZXNzIiwKKyAgIkB2YWx1ZSIgOiAibG9jYWxob3N0IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvaW5zdGFudC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvaW5zdGFudC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzQ5NzQxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9pbnN0YW50LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4Okluc3RhbnQiLAorICAiQHZhbHVlIiA6ICIyMDE2LTEyLTE0VDE2OjM5OjE5LjM0OVoiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9pbnN0YW50LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvaW5zdGFudC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzc0OTc0MQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvaW5zdGFudC12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6SW5zdGFudCIsCisgICJAdmFsdWUiIDogIjIwMTYtMTItMTRUMTY6Mzk6MTkuMzQ5WiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2ludGVnZXItdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9pbnRlZ2VyLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDVkN2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9pbnRlZ2VyLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxIEBACisxMDAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2ludGVnZXItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2ludGVnZXItdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzUwY2U3YQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvaW50ZWdlci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgIkB2YWx1ZSIgOiAxMDAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2ludGVnZXItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9pbnRlZ2VyLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTBjZTdhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9pbnRlZ2VyLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgIkB2YWx1ZSIgOiAxMDAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2xhbWJkYS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvbGFtYmRhLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViZTE3OWIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2xhbWJkYS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDggQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkxhbWJkYSIsCisgICJAdmFsdWUiIDogeworICAgICJzY3JpcHQiIDogInsgaXQuZ2V0KCkgfSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImFyZ3VtZW50cyIgOiAxCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2xhbWJkYS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2xhbWJkYS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJlMTc5YgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvbGFtYmRhLXYzZDAuanNvbgpAQCAtMCwwICsxLDggQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkxhbWJkYSIsCisgICJAdmFsdWUiIDogeworICAgICJzY3JpcHQiIDogInsgaXQuZ2V0KCkgfSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImFyZ3VtZW50cyIgOiAxCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2xpc3QtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9saXN0LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzE0ZTJkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9saXN0LXYzZDAuanNvbgpAQCAtMCwwICsxLDcgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkxpc3QiLAorICAiQHZhbHVlIiA6IFsgeworICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgIkB2YWx1ZSIgOiAxCisgIH0sICJwZXJzb24iLCB0cnVlIF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2xvY2FsZGF0ZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvbG9jYWxkYXRlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2ZmI4MWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2xvY2FsZGF0ZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpMb2NhbERhdGUiLAorICAiQHZhbHVlIiA6ICIyMDE2LTAxLTAxIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvbG9jYWxkYXRlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvbG9jYWxkYXRlLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNmZiODFkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9sb2NhbGRhdGUtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkxvY2FsRGF0ZSIsCisgICJAdmFsdWUiIDogIjIwMTYtMDEtMDEiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9sb2NhbGRhdGV0aW1lLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9sb2NhbGRhdGV0aW1lLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkODM2NjgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2xvY2FsZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6TG9jYWxEYXRlVGltZSIsCisgICJAdmFsdWUiIDogIjIwMTYtMDEtMDFUMTI6MzAiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9sb2NhbGRhdGV0aW1lLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvbG9jYWxkYXRldGltZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQ4MzY2OAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvbG9jYWxkYXRldGltZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6TG9jYWxEYXRlVGltZSIsCisgICJAdmFsdWUiIDogIjIwMTYtMDEtMDFUMTI6MzAiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9sb2NhbHRpbWUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2xvY2FsdGltZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZmY2NWE3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9sb2NhbHRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6TG9jYWxUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMTI6MzA6NDUiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9sb2NhbHRpbWUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9sb2NhbHRpbWUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmZjY1YTcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2xvY2FsdGltZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6TG9jYWxUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMTI6MzA6NDUiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9sb25nLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9sb25nLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0YjlhMjMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL2xvbmctdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICJAdmFsdWUiIDogMTAwCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9sb25nLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvbG9uZy12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRiOWEyMwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvbG9uZy12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICJAdmFsdWUiIDogMTAwCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9tYXAtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9tYXAtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhZDU5YzkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL21hcC12M2QwLmpzb24KQEAgLTAsMCArMSwyNSBAQAoreworICAiQHR5cGUiIDogImc6TWFwIiwKKyAgIkB2YWx1ZSIgOiBbIHsKKyAgICAiQHR5cGUiIDogImc6RGF0ZSIsCisgICAgIkB2YWx1ZSIgOiAxNDgxNzUwMDc2Mjk1CisgIH0sICJyZWQiLCB7CisgICAgIkB0eXBlIiA6ICJnOkxpc3QiLAorICAgICJAdmFsdWUiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMgorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDMKKyAgICB9IF0KKyAgfSwgeworICAgICJAdHlwZSIgOiAiZzpEYXRlIiwKKyAgICAiQHZhbHVlIiA6IDE0ODE3NTAwNzYyOTUKKyAgfSwgInRlc3QiLCB7CisgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAiQHZhbHVlIiA6IDEyMworICB9IF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL21ldHJpY3MtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL21ldHJpY3MtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2IxZTk2NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvbWV0cmljcy12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDU0IEBACit7CisgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImR1ciIgOiB7CisgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICB9LAorICAgICJjb3VudHMiIDogeworICAgICAgInRyYXZlcnNlckNvdW50IiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICB9LAorICAgICAgImVsZW1lbnRDb3VudCIgOiB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgfQorICAgIH0sCisgICAgIm5hbWUiIDogIlRpbmtlckdyYXBoU3RlcCh2ZXJ0ZXgsW35sYWJlbC5lcShwZXJzb24pXSkiLAorICAgICJhbm5vdGF0aW9ucyIgOiB7CisgICAgICAicGVyY2VudER1ciIgOiB7CisgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgIH0KKyAgICB9LAorICAgICJpZCIgOiAiNy4wLjAoKSIsCisgICAgIm1ldHJpY3MiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImR1ciIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgICAgICB9LAorICAgICAgICAiY291bnRzIiA6IHsKKyAgICAgICAgICAidHJhdmVyc2VyQ291bnQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgIH0sCisgICAgICAgICAgImVsZW1lbnRDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibmFtZSIgOiAiVmVydGV4U3RlcChPVVQsdmVydGV4KSIsCisgICAgICAgICJhbm5vdGF0aW9ucyIgOiB7CisgICAgICAgICAgInBlcmNlbnREdXIiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJpZCIgOiAiMy4wLjAoKSIKKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvbWV0cmljcy12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL21ldHJpY3MtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2ZTY3OGIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL21ldHJpY3MtdjNkMC5qc29uCkBAIC0wLDAgKzEsNTIgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgImR1ciIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgIH0sICJjb3VudHMiLCB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyAidHJhdmVyc2VyQ291bnQiLCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgfSwgImVsZW1lbnRDb3VudCIsIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICB9IF0KKyAgICB9LCAibmFtZSIsICJUaW5rZXJHcmFwaFN0ZXAodmVydGV4LFt+bGFiZWwuZXEocGVyc29uKV0pIiwgImFubm90YXRpb25zIiwgeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgInBlcmNlbnREdXIiLCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgIH0gXQorICAgIH0sICJpZCIsICI3LjAuMCgpIiwgIm1ldHJpY3MiLCB7CisgICAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgICAiQHZhbHVlIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgICAgfSwgImNvdW50cyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJ0cmF2ZXJzZXJDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICB9LCAiZWxlbWVudENvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJuYW1lIiwgIlZlcnRleFN0ZXAoT1VULHZlcnRleCkiLCAiYW5ub3RhdGlvbnMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAicGVyY2VudER1ciIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgImlkIiwgIjMuMC4wKCkiIF0KKyAgICAgICAgfQorICAgICAgfSBdCisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL21vbnRoZGF5LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9tb250aGRheS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGE1OTE0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9tb250aGRheS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpNb250aERheSIsCisgICJAdmFsdWUiIDogIi0tMDEtMDEiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9tb250aGRheS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL21vbnRoZGF5LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGE1OTE0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9tb250aGRheS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6TW9udGhEYXkiLAorICAiQHZhbHVlIiA6ICItLTAxLTAxIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvb2Zmc2V0ZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL29mZnNldGRhdGV0aW1lLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzZjQ1Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL29mZnNldGRhdGV0aW1lLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4Ok9mZnNldERhdGVUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMjAwNy0xMi0wM1QxMDoxNTozMCswMTowMCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL29mZnNldGRhdGV0aW1lLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvb2Zmc2V0ZGF0ZXRpbWUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzZjQ1Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL29mZnNldGRhdGV0aW1lLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpPZmZzZXREYXRlVGltZSIsCisgICJAdmFsdWUiIDogIjIwMDctMTItMDNUMTA6MTU6MzArMDE6MDAiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9vZmZzZXR0aW1lLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9vZmZzZXR0aW1lLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxMjQ5NTMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL29mZnNldHRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6T2Zmc2V0VGltZSIsCisgICJAdmFsdWUiIDogIjEwOjE1OjMwKzAxOjAwIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvb2Zmc2V0dGltZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL29mZnNldHRpbWUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxMjQ5NTMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL29mZnNldHRpbWUtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4Ok9mZnNldFRpbWUiLAorICAiQHZhbHVlIiA6ICIxMDoxNTozMCswMTowMCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL29wZXJhdG9yLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9vcGVyYXRvci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNGMxNDAwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9vcGVyYXRvci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOk9wZXJhdG9yIiwKKyAgIkB2YWx1ZSIgOiAic3VtIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvb3BlcmF0b3ItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9vcGVyYXRvci12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTRjMTQwMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvb3BlcmF0b3ItdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6T3BlcmF0b3IiLAorICAiQHZhbHVlIiA6ICJzdW0iCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9vcmRlci12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvb3JkZXItdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGJlMDQzMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvb3JkZXItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpPcmRlciIsCisgICJAdmFsdWUiIDogInNodWZmbGUiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9vcmRlci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL29yZGVyLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmUwNDMyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9vcmRlci12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpPcmRlciIsCisgICJAdmFsdWUiIDogInNodWZmbGUiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9wLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9wLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViZGZiM2IKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3AtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogImd0IiwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMAorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3AtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViZGZiM2IKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3AtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJndCIsCisgICAgInZhbHVlIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDAKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3BhbmQtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3BhbmQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzI3MTk1OAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcGFuZC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDI1IEBACit7CisgICJAdHlwZSIgOiAiZzpQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAiYW5kIiwKKyAgICAidmFsdWUiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAiZ3QiLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAibHQiLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9CisgICAgICB9CisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3BhbmQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9wYW5kLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjcxOTU4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9wYW5kLXYzZDAuanNvbgpAQCAtMCwwICsxLDI1IEBACit7CisgICJAdHlwZSIgOiAiZzpQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAiYW5kIiwKKyAgICAidmFsdWUiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAiZ3QiLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAibHQiLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9CisgICAgICB9CisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3BhdGgtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9wYXRoLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZWVlODgzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9wYXRoLXYxZDAuanNvbgpAQCAtMCwwICsxLDYyIEBACit7CisgICJsYWJlbHMiIDogWyBbIF0sIFsgXSwgWyBdIF0sCisgICJvYmplY3RzIiA6IFsgeworICAgICJpZCIgOiAxLAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDAsCisgICAgICAgICJ2YWx1ZSIgOiAibWFya28iCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiA2LAorICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTcsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwMQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA3LAorICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDAxLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDQKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogOCwKKyAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDQsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA5LAorICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTAsCisgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiA0LAorICAgICAgICAidmFsdWUiIDogImdyZW1saW4iCisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTEsCisgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiA1LAorICAgICAgICAidmFsdWUiIDogInRpbmtlcmdyYXBoIgorICAgICAgfSBdCisgICAgfQorICB9IF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3BhdGgtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9wYXRoLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTkyZDJmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9wYXRoLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxLDEzIEBACit7CisgICJsYWJlbHMiIDogWyBbIF0sIFsgXSwgWyBdIF0sCisgICJvYmplY3RzIiA6IFsgeworICAgICJpZCIgOiAxLAorICAgICJsYWJlbCIgOiAicGVyc29uIgorICB9LCB7CisgICAgImlkIiA6IDEwLAorICAgICJsYWJlbCIgOiAic29mdHdhcmUiCisgIH0sIHsKKyAgICAiaWQiIDogMTEsCisgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIKKyAgfSBdCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9wYXRoLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9wYXRoLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljY2FhMDAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3BhdGgtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwzNCBAQAoreworICAiQHR5cGUiIDogImc6UGF0aCIsCisgICJAdmFsdWUiIDogeworICAgICJsYWJlbHMiIDogWyBbIF0sIFsgXSwgWyBdIF0sCisgICAgIm9iamVjdHMiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIgorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAic29mdHdhcmUiCisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIKKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcGF0aC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3BhdGgtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxNmIzOTMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3BhdGgtdjNkMC5qc29uCkBAIC0wLDAgKzEsNDkgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlBhdGgiLAorICAiQHZhbHVlIiA6IHsKKyAgICAibGFiZWxzIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICJAdmFsdWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpTZXQiLAorICAgICAgICAiQHZhbHVlIiA6IFsgXQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6U2V0IiwKKyAgICAgICAgIkB2YWx1ZSIgOiBbIF0KKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlNldCIsCisgICAgICAgICJAdmFsdWUiIDogWyBdCisgICAgICB9IF0KKyAgICB9LAorICAgICJvYmplY3RzIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICJAdmFsdWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICAgIH0sCisgICAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICAgIH0sCisgICAgICAgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgICAgfSwKKyAgICAgICAgICAibGFiZWwiIDogInNvZnR3YXJlIgorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3BlcmlvZC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcGVyaW9kLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwNDM4YTEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3BlcmlvZC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpQZXJpb2QiLAorICAiQHZhbHVlIiA6ICJQMVk2TTE1RCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3BlcmlvZC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3BlcmlvZC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjA0MzhhMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcGVyaW9kLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpQZXJpb2QiLAorICAiQHZhbHVlIiA6ICJQMVk2TTE1RCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3BpY2stdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3BpY2stdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NhMmYyZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcGljay12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlBpY2siLAorICAiQHZhbHVlIiA6ICJhbnkiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9waWNrLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcGljay12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NhMmYyZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcGljay12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpQaWNrIiwKKyAgIkB2YWx1ZSIgOiAiYW55IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcG9wLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9wb3AtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjcxNTE1ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcG9wLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6UG9wIiwKKyAgIkB2YWx1ZSIgOiAiYWxsIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcG9wLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcG9wLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzE1MTVmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9wb3AtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6UG9wIiwKKyAgIkB2YWx1ZSIgOiAiYWxsIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcG9yLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9wb3ItdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFmY2I3ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcG9yLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMzEgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJvciIsCisgICAgInZhbHVlIiA6IFsgeworICAgICAgIkB0eXBlIiA6ICJnOlAiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJwcmVkaWNhdGUiIDogImd0IiwKKyAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMAorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlAiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJwcmVkaWNhdGUiIDogIndpdGhpbiIsCisgICAgICAgICJ2YWx1ZSIgOiBbIHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogLTEKKyAgICAgICAgfSwgeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAtMTAKKyAgICAgICAgfSwgeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAtMTAwCisgICAgICAgIH0gXQorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9wb3ItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9wb3ItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3MWIxY2YKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Bvci12M2QwLmpzb24KQEAgLTAsMCArMSwzNCBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogIm9yIiwKKyAgICAidmFsdWUiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAiZ3QiLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAid2l0aGluIiwKKyAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgICAgICAgIkB2YWx1ZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IC0xCisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogLTEwCisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogLTEwMAorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Byb3BlcnR5LXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcHJvcGVydHktdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwNTFjMGEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Byb3BlcnR5LXYxZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgImtleSIgOiAic2luY2UiLAorICAidmFsdWUiIDogMjAwOQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcHJvcGVydHktdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9wcm9wZXJ0eS12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzA1MWMwYQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcHJvcGVydHktdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAia2V5IiA6ICJzaW5jZSIsCisgICJ2YWx1ZSIgOiAyMDA5Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9wcm9wZXJ0eS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcHJvcGVydHktdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjk2ZmUzMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcHJvcGVydHktdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAiQHZhbHVlIiA6IHsKKyAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgInZhbHVlIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Byb3BlcnR5LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcHJvcGVydHktdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5NmZlMzIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Byb3BlcnR5LXYzZDAuanNvbgpAQCAtMCwwICsxLDEwIEBACit7CisgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICJAdmFsdWUiIDogeworICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMjAwOQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcHdpdGhpbi12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcHdpdGhpbi12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZmEzODI2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9wd2l0aGluLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJ3aXRoaW4iLAorICAgICJ2YWx1ZSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcHdpdGhpbi12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3B3aXRoaW4tdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzZjk5Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3B3aXRoaW4tdjNkMC5qc29uCkBAIC0wLDAgKzEsMTMgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJ3aXRoaW4iLAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgICAiQHZhbHVlIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0gXQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvcHdpdGhvdXQtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3B3aXRob3V0LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjMjI5MWIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3B3aXRob3V0LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTMgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJ3aXRob3V0IiwKKyAgICAidmFsdWUiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMgorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9wd2l0aG91dC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3B3aXRob3V0LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTE2ODkwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9wd2l0aG91dC12M2QwLmpzb24KQEAgLTAsMCArMSwxNiBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogIndpdGhvdXQiLAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgICAiQHZhbHVlIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAyCisgICAgICB9IF0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Njb3BlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zY29wZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTc0YWYwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zY29wZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlNjb3BlIiwKKyAgIkB2YWx1ZSIgOiAibG9jYWwiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zY29wZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Njb3BlLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTc0YWYwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zY29wZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpTY29wZSIsCisgICJAdmFsdWUiIDogImxvY2FsIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2Vzc2lvbmNsb3NlLXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2Vzc2lvbmNsb3NlLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzgyNWU4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9uY2xvc2UtdjFkMC5qc29uCkBAIC0wLDAgKzEsOCBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImNsb3NlIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2Vzc2lvbmNsb3NlLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2Vzc2lvbmNsb3NlLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzgyNWU4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9uY2xvc2UtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsOCBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImNsb3NlIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2Vzc2lvbmNsb3NlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9uY2xvc2UtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWM4MjVlOAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2Vzc2lvbmNsb3NlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsOCBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImNsb3NlIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2Vzc2lvbmNsb3NlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2Vzc2lvbmNsb3NlLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmUxY2NkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9uY2xvc2UtdjNkMC5qc29uCkBAIC0wLDAgKzEsOSBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImNsb3NlIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgInNlc3Npb24iLCAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIgXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9uZXZhbC12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Nlc3Npb25ldmFsLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmNlODJmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9uZXZhbC12MWQwLmpzb24KQEAgLTAsMCArMSwxMyBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJnLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIiwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2Vzc2lvbmV2YWwtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9uZXZhbC12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGJjZTgyZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2Vzc2lvbmV2YWwtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsMTMgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAiZy5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIsCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IDEKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Nlc3Npb25ldmFsLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9uZXZhbC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZmY4Yjk2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9uZXZhbC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDE2IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogInNlc3Npb24iLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogImcuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgInNlc3Npb24iIDogInVuaXF1ZS1zZXNzaW9uLWlkZW50aWZpZXIiLAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2Vzc2lvbmV2YWwtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9uZXZhbC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzAxYzM5MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2Vzc2lvbmV2YWwtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTUgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgImdyZW1saW4iLCAiZy5WKHgpIiwgImxhbmd1YWdlIiwgImdyZW1saW4tZ3Jvb3Z5IiwgInNlc3Npb24iLCAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIsICJiaW5kaW5ncyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbICJ4IiwgeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0gXQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9uZXZhbGFsaWFzZWQtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9uZXZhbGFsaWFzZWQtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmNGVmNDYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Nlc3Npb25ldmFsYWxpYXNlZC12MWQwLmpzb24KQEAgLTAsMCArMSwxNiBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJzb2NpYWwuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImFsaWFzZXMiIDogeworICAgICAgImciIDogInNvY2lhbCIKKyAgICB9LAorICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIiwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2Vzc2lvbmV2YWxhbGlhc2VkLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2Vzc2lvbmV2YWxhbGlhc2VkLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjRlZjQ2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9uZXZhbGFsaWFzZWQtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsMTYgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAic29jaWFsLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJhbGlhc2VzIiA6IHsKKyAgICAgICJnIiA6ICJzb2NpYWwiCisgICAgfSwKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIsCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IDEKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Nlc3Npb25ldmFsYWxpYXNlZC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2Vzc2lvbmV2YWxhbGlhc2VkLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5NGU1ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Nlc3Npb25ldmFsYWxpYXNlZC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDE5IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogInNlc3Npb24iLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogInNvY2lhbC5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYWxpYXNlcyIgOiB7CisgICAgICAiZyIgOiAic29jaWFsIgorICAgIH0sCisgICAgInNlc3Npb24iIDogInVuaXF1ZS1zZXNzaW9uLWlkZW50aWZpZXIiLAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2Vzc2lvbmV2YWxhbGlhc2VkLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2Vzc2lvbmV2YWxhbGlhc2VkLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDQ4MTYwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9uZXZhbGFsaWFzZWQtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTggQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgImdyZW1saW4iLCAic29jaWFsLlYoeCkiLCAibGFuZ3VhZ2UiLCAiZ3JlbWxpbi1ncm9vdnkiLCAiYWxpYXNlcyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbICJnIiwgInNvY2lhbCIgXQorICAgIH0sICJzZXNzaW9uIiwgInVuaXF1ZS1zZXNzaW9uLWlkZW50aWZpZXIiLCAiYmluZGluZ3MiLCB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyAieCIsIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICB9IF0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2Vzc2lvbmxlc3NldmFsLXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2Vzc2lvbmxlc3NldmFsLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzlhODA3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9ubGVzc2V2YWwtdjFkMC5qc29uCkBAIC0wLDAgKzEsMTIgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJnLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9ubGVzc2V2YWwtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9ubGVzc2V2YWwtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjOWE4MDcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Nlc3Npb25sZXNzZXZhbC12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSwxMiBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogImcuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IDEKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Nlc3Npb25sZXNzZXZhbC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2Vzc2lvbmxlc3NldmFsLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxZTJmNmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Nlc3Npb25sZXNzZXZhbC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDE1IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAiZy5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Nlc3Npb25sZXNzZXZhbC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Nlc3Npb25sZXNzZXZhbC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGM4YzhlNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2Vzc2lvbmxlc3NldmFsLXYzZDAuanNvbgpAQCAtMCwwICsxLDE1IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgImdyZW1saW4iLCAiZy5WKHgpIiwgImxhbmd1YWdlIiwgImdyZW1saW4tZ3Jvb3Z5IiwgImJpbmRpbmdzIiwgeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgIngiLCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfSBdCisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OWYwYzZjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYxZDAuanNvbgpAQCAtMCwwICsxLDE1IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAic29jaWFsLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJhbGlhc2VzIiA6IHsKKyAgICAgICJnIiA6ICJzb2NpYWwiCisgICAgfSwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5ZjBjNmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsMTUgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJzb2NpYWwuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImFsaWFzZXMiIDogeworICAgICAgImciIDogInNvY2lhbCIKKyAgICB9LAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmNmE1NGUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxOCBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogInNvY2lhbC5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYWxpYXNlcyIgOiB7CisgICAgICAiZyIgOiAic29jaWFsIgorICAgIH0sCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmMwM2EzNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12M2QwLmpzb24KQEAgLTAsMCArMSwxOCBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgIkB2YWx1ZSIgOiBbICJncmVtbGluIiwgInNvY2lhbC5WKHgpIiwgImxhbmd1YWdlIiwgImdyZW1saW4tZ3Jvb3Z5IiwgImFsaWFzZXMiLCB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyAiZyIsICJzb2NpYWwiIF0KKyAgICB9LCAiYmluZGluZ3MiLCB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyAieCIsIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICB9IF0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2V0LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2V0LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMmRlZWEyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zZXQtdjNkMC5qc29uCkBAIC0wLDAgKzEsNyBAQAoreworICAiQHR5cGUiIDogImc6U2V0IiwKKyAgIkB2YWx1ZSIgOiBbIHsKKyAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICJAdmFsdWUiIDogMQorICB9LCAicGVyc29uIiwgdHJ1ZSBdCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zaG9ydC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2hvcnQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY4ZjVjZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2hvcnQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6SW50MTYiLAorICAiQHZhbHVlIiA6IDEwMAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2hvcnQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zaG9ydC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY4ZjVjZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc2hvcnQtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkludDE2IiwKKyAgIkB2YWx1ZSIgOiAxMDAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3N0YW5kYXJkcmVzdWx0LXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc3RhbmRhcmRyZXN1bHQtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliOTM3MjcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3N0YW5kYXJkcmVzdWx0LXYxZDAuanNvbgpAQCAtMCwwICsxLDUwIEBACit7CisgICJyZXF1ZXN0SWQiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIsCisgICJzdGF0dXMiIDogeworICAgICJtZXNzYWdlIiA6ICIiLAorICAgICJjb2RlIiA6IDIwMCwKKyAgICAiYXR0cmlidXRlcyIgOiB7IH0KKyAgfSwKKyAgInJlc3VsdCIgOiB7CisgICAgImRhdGEiIDogWyB7CisgICAgICAiaWQiIDogMSwKKyAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAiaWQiIDogMCwKKyAgICAgICAgICAidmFsdWUiIDogIm1hcmtvIgorICAgICAgICB9IF0sCisgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAiaWQiIDogNiwKKyAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiAxOTk3LAorICAgICAgICAgICAgImVuZFRpbWUiIDogMjAwMQorICAgICAgICAgIH0KKyAgICAgICAgfSwgeworICAgICAgICAgICJpZCIgOiA3LAorICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDAxLAorICAgICAgICAgICAgImVuZFRpbWUiIDogMjAwNAorICAgICAgICAgIH0KKyAgICAgICAgfSwgeworICAgICAgICAgICJpZCIgOiA4LAorICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDUKKyAgICAgICAgICB9CisgICAgICAgIH0sIHsKKyAgICAgICAgICAiaWQiIDogOSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDUKKyAgICAgICAgICB9CisgICAgICAgIH0gXQorICAgICAgfQorICAgIH0gXSwKKyAgICAibWV0YSIgOiB7IH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc3RhbmRhcmRyZXN1bHQtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3N0YW5kYXJkcmVzdWx0LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1N2M2ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3N0YW5kYXJkcmVzdWx0LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTExIEBACit7CisgICJyZXF1ZXN0SWQiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIsCisgICJzdGF0dXMiIDogeworICAgICJtZXNzYWdlIiA6ICIiLAorICAgICJjb2RlIiA6IDIwMCwKKyAgICAiYXR0cmlidXRlcyIgOiB7IH0KKyAgfSwKKyAgInJlc3VsdCIgOiB7CisgICAgImRhdGEiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTk3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0gXSwKKyAgICAibWV0YSIgOiB7IH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc3RhbmRhcmRyZXN1bHQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC9zdGFuZGFyZHJlc3VsdC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGZjYTQwMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvc3RhbmRhcmRyZXN1bHQtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTIwIEBACit7CisgICJyZXF1ZXN0SWQiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIsCisgICJzdGF0dXMiIDogeworICAgICJtZXNzYWdlIiA6ICIiLAorICAgICJjb2RlIiA6IDIwMCwKKyAgICAiYXR0cmlidXRlcyIgOiB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyBdCisgICAgfQorICB9LAorICAicmVzdWx0IiA6IHsKKyAgICAiZGF0YSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgICAiQHZhbHVlIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgICB9LAorICAgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBdLAorICAgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW4gZGllZ28iLAorICAgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5OTcKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBjcnV6IiwKKyAgICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBmZSIsCisgICAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9LAorICAgICJtZXRhIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbIF0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3QtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3QtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTY5Mzk4MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlQiLAorICAiQHZhbHVlIiA6ICJsYWJlbCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3QtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC90LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjkzOTgzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC90LXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlQiLAorICAiQHZhbHVlIiA6ICJsYWJlbCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3RleHRwLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC90ZXh0cC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODIwOTg5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC90ZXh0cC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDcgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlRleHRQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAiY29udGFpbmluZyIsCisgICAgInZhbHVlIiA6ICJhcmsiCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3RleHRwLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdGV4dHAtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4MjA5ODkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3RleHRwLXYzZDAuanNvbgpAQCAtMCwwICsxLDcgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlRleHRQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAiY29udGFpbmluZyIsCisgICAgInZhbHVlIiA6ICJhcmsiCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3RpbWVzdGFtcC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdGltZXN0YW1wLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjYTBlMTcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3RpbWVzdGFtcC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlRpbWVzdGFtcCIsCisgICJAdmFsdWUiIDogMTQ4MTc1MDA3NjI5NQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdGltZXN0YW1wLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdGltZXN0YW1wLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2EwZTE3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC90aW1lc3RhbXAtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6VGltZXN0YW1wIiwKKyAgIkB2YWx1ZSIgOiAxNDgxNzUwMDc2Mjk1Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC90aW5rZXJncmFwaC12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3RpbmtlcmdyYXBoLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzcxOWY2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC90aW5rZXJncmFwaC12MWQwLmpzb24KQEAgLTAsMCArMSwzMTMgQEAKK3sKKyAgInZlcnRpY2VzIiA6IFsgeworICAgICJpZCIgOiAxLAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDAsCisgICAgICAgICJ2YWx1ZSIgOiAibWFya28iCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiA2LAorICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTcsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwMQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA3LAorICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDAxLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDQKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogOCwKKyAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDQsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA5LAorICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogNywKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiAxLAorICAgICAgICAidmFsdWUiIDogInN0ZXBoZW4iCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiAxMCwKKyAgICAgICAgInZhbHVlIiA6ICJjZW50cmV2aWxsZSIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTAsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwMAorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxMSwKKyAgICAgICAgInZhbHVlIiA6ICJkdWxsZXMiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDAwLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDYKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTIsCisgICAgICAgICJ2YWx1ZSIgOiAicHVyY2VsbHZpbGxlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNgorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogOCwKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiAyLAorICAgICAgICAidmFsdWUiIDogIm1hdHRoaWFzIgorICAgICAgfSBdLAorICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAiaWQiIDogMTMsCisgICAgICAgICJ2YWx1ZSIgOiAiYnJlbWVuIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA3CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE0LAorICAgICAgICAidmFsdWUiIDogImJhbHRpbW9yZSIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDcsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAxMQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxNSwKKyAgICAgICAgInZhbHVlIiA6ICJvYWtsYW5kIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAxMSwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDE0CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE2LAorICAgICAgICAidmFsdWUiIDogInNlYXR0bGUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDE0CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiA5LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDMsCisgICAgICAgICJ2YWx1ZSIgOiAiZGFuaWVsIgorICAgICAgfSBdLAorICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAiaWQiIDogMTcsCisgICAgICAgICJ2YWx1ZSIgOiAic3ByZW1iZXJnIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMTk4MiwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE4LAorICAgICAgICAidmFsdWUiIDogImthaXNlcnNsYXV0ZXJuIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNSwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA5CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE5LAorICAgICAgICAidmFsdWUiIDogImFhY2hlbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDkKKyAgICAgICAgfQorICAgICAgfSBdCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDEwLAorICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogNCwKKyAgICAgICAgInZhbHVlIiA6ICJncmVtbGluIgorICAgICAgfSBdCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDExLAorICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogNSwKKyAgICAgICAgInZhbHVlIiA6ICJ0aW5rZXJncmFwaCIKKyAgICAgIH0gXQorICAgIH0KKyAgfSBdLAorICAiZWRnZXMiIDogWyB7CisgICAgImlkIiA6IDEzLAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogMjAwOQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxNCwKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDEsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IDIwMTAKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTUsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDEwLAorICAgICJvdXRWIiA6IDEsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IDQKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTYsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDEsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IDUKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTcsCisgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgInR5cGUiIDogImVkZ2UiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiAyMDEwCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE4LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogNywKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogMjAxMQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxOSwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogNywKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogNQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyMCwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogNywKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogNAorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyMSwKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDEwLAorICAgICJvdXRWIiA6IDgsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IDIwMTIKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjIsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDEwLAorICAgICJvdXRWIiA6IDgsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IDMKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjMsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDgsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IDMKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjQsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDEwLAorICAgICJvdXRWIiA6IDksCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IDUKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjUsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDksCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IDMKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjYsCisgICAgImxhYmVsIiA6ICJ0cmF2ZXJzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiAxMAorICB9IF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3RpbmtlcmdyYXBoLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdGlua2VyZ3JhcGgtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0YWQwNjEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3RpbmtlcmdyYXBoLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxLDM1MiBAQAoreworICAidmVydGljZXMiIDogWyB7CisgICAgImlkIiA6IDEsCisgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogMCwKKyAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgImlkIiA6IDYsCisgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTcsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwMQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA3LAorICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwMSwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA0CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDgsCisgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDksCisgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogNywKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiAxLAorICAgICAgICAidmFsdWUiIDogInN0ZXBoZW4iLAorICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiAxMCwKKyAgICAgICAgInZhbHVlIiA6ICJjZW50cmV2aWxsZSIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAxOTkwLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDAKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTEsCisgICAgICAgICJ2YWx1ZSIgOiAiZHVsbGVzIiwKKyAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDAsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNgorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxMiwKKyAgICAgICAgInZhbHVlIiA6ICJwdXJjZWxsdmlsbGUiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNgorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogOCwKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiAyLAorICAgICAgICAidmFsdWUiIDogIm1hdHRoaWFzIiwKKyAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgfSBdLAorICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAiaWQiIDogMTMsCisgICAgICAgICJ2YWx1ZSIgOiAiYnJlbWVuIiwKKyAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDQsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNworICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxNCwKKyAgICAgICAgInZhbHVlIiA6ICJiYWx0aW1vcmUiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNywKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDExCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE1LAorICAgICAgICAidmFsdWUiIDogIm9ha2xhbmQiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAxMSwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDE0CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE2LAorICAgICAgICAidmFsdWUiIDogInNlYXR0bGUiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAxNAorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogOSwKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiAzLAorICAgICAgICAidmFsdWUiIDogImRhbmllbCIsCisgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgImlkIiA6IDE3LAorICAgICAgICAidmFsdWUiIDogInNwcmVtYmVyZyIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAxOTgyLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDUKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTgsCisgICAgICAgICJ2YWx1ZSIgOiAia2Fpc2Vyc2xhdXRlcm4iLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNSwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA5CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE5LAorICAgICAgICAidmFsdWUiIDogImFhY2hlbiIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA5CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxMCwKKyAgICAibGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDQsCisgICAgICAgICJ2YWx1ZSIgOiAiZ3JlbWxpbiIsCisgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxMSwKKyAgICAibGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDUsCisgICAgICAgICJ2YWx1ZSIgOiAidGlua2VyZ3JhcGgiLAorICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICB9IF0KKyAgICB9CisgIH0gXSwKKyAgImVkZ2VzIiA6IFsgeworICAgICJpZCIgOiAxMywKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogeworICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICJ2YWx1ZSIgOiAyMDA5CisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE0LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiAxLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgInZhbHVlIiA6IDIwMTAKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTUsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiA0CisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE2LAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDEsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAidmFsdWUiIDogNQorICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxNywKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogNywKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogeworICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICJ2YWx1ZSIgOiAyMDEwCisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE4LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgInZhbHVlIiA6IDIwMTEKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTksCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogNywKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiA1CisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDIwLAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDcsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAidmFsdWUiIDogNAorICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyMSwKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogOCwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogeworICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICJ2YWx1ZSIgOiAyMDEyCisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDIyLAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDEwLAorICAgICJvdXRWIiA6IDgsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAidmFsdWUiIDogMworICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyMywKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiA4LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJza2lsbCIgOiB7CisgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgInZhbHVlIiA6IDMKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjQsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogOSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiA1CisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDI1LAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDksCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAidmFsdWUiIDogMworICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyNiwKKyAgICAibGFiZWwiIDogInRyYXZlcnNlcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogMTAKKyAgfSBdCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC90aW5rZXJncmFwaC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdGlua2VyZ3JhcGgtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjRlOTVlZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdGlua2VyZ3JhcGgtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw4MjkgQEAKK3sKKyAgIkB0eXBlIiA6ICJ0aW5rZXI6Z3JhcGgiLAorICAiQHZhbHVlIiA6IHsKKyAgICAidmVydGljZXMiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTk3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzdGVwaGVuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiY2VudHJldmlsbGUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5MAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJkdWxsZXMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTIKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJwdXJjZWxsdmlsbGUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogIm1hdHRoaWFzIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEzCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJlbWVuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDcKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE0CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYmFsdGltb3JlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDcKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTEKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE1CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAib2FrbGFuZCIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDExCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDE0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNlYXR0bGUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxNAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImRhbmllbCIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxNworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNwcmVtYmVyZyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTgyCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImthaXNlcnNsYXV0ZXJuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYWFjaGVuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJncmVtbGluIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInRpbmtlcmdyYXBoIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSBdLAorICAgICJlZGdlcyIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwOQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE0CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDEwCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTUKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE2CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDUKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxNworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE4CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDExCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTkKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDIwCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyMQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMgorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDIyCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDMKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyMworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAzCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjQKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDI1CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDMKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyNgorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInRyYXZlcnNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdGlua2VyZ3JhcGgtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC90aW5rZXJncmFwaC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjRlOTVlZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdGlua2VyZ3JhcGgtdjNkMC5qc29uCkBAIC0wLDAgKzEsODI5IEBACit7CisgICJAdHlwZSIgOiAidGlua2VyOmdyYXBoIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInZlcnRpY2VzIiA6IFsgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDYKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW4gZGllZ28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5NworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImJydXNzZWxzIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBmZSIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic3RlcGhlbiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImNlbnRyZXZpbGxlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5OTAKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDAKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiZHVsbGVzIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDAKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDYKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEyCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAicHVyY2VsbHZpbGxlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDYKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJtYXR0aGlhcyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImJyZW1lbiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA3CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxNAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImJhbHRpbW9yZSIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDExCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxNQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogIm9ha2xhbmQiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxNAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTYKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzZWF0dGxlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDMKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJkYW5pZWwiLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTcKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzcHJlbWJlcmciLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk4MgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTgKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJrYWlzZXJzbGF1dGVybiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA5CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImFhY2hlbiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA5CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiZ3JlbWxpbiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDUKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJ0aW5rZXJncmFwaCIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0gXSwKKyAgICAiZWRnZXMiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTMKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2luY2UiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxNAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE1CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxNgorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA1CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTcKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2luY2UiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTAKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxOAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE5CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDUKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyMAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2luY2UiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTIKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyMgorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAzCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjMKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDI0CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDUKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyNQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAzCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjYKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ0cmF2ZXJzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9CisgICAgICB9CisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3RyYXZlcnNhbG1ldHJpY3MtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3RyYXZlcnNhbG1ldHJpY3MtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmRkMThhNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdHJhdmVyc2FsbWV0cmljcy12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDExNCBAQAoreworICAiQHR5cGUiIDogImc6VHJhdmVyc2FsTWV0cmljcyIsCisgICJAdmFsdWUiIDogeworICAgICJkdXIiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAiQHZhbHVlIiA6IDAuMDA0CisgICAgfSwKKyAgICAibWV0cmljcyIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiZHVyIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgIH0sCisgICAgICAgICJjb3VudHMiIDogeworICAgICAgICAgICJ0cmF2ZXJzZXJDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICAgICAgfSwKKyAgICAgICAgICAiZWxlbWVudENvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJuYW1lIiA6ICJUaW5rZXJHcmFwaFN0ZXAodmVydGV4LFt+bGFiZWwuZXEocGVyc29uKV0pIiwKKyAgICAgICAgImFubm90YXRpb25zIiA6IHsKKyAgICAgICAgICAicGVyY2VudER1ciIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImlkIiA6ICI3LjAuMCgpIgorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiZHVyIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgIH0sCisgICAgICAgICJjb3VudHMiIDogeworICAgICAgICAgICJ0cmF2ZXJzZXJDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICAgIH0sCisgICAgICAgICAgImVsZW1lbnRDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIm5hbWUiIDogIlZlcnRleFN0ZXAoT1VULHZlcnRleCkiLAorICAgICAgICAiYW5ub3RhdGlvbnMiIDogeworICAgICAgICAgICJwZXJjZW50RHVyIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaWQiIDogIjIuMC4wKCkiCisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJkdXIiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgfSwKKyAgICAgICAgImNvdW50cyIgOiB7CisgICAgICAgICAgInRyYXZlcnNlckNvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICB9LAorICAgICAgICAgICJlbGVtZW50Q291bnQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIm5hbWUiIDogIlZlcnRleFN0ZXAoT1VULHZlcnRleCkiLAorICAgICAgICAiYW5ub3RhdGlvbnMiIDogeworICAgICAgICAgICJwZXJjZW50RHVyIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaWQiIDogIjMuMC4wKCkiCisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJkdXIiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgfSwKKyAgICAgICAgImNvdW50cyIgOiB7CisgICAgICAgICAgInRyYXZlcnNlckNvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgICB9LAorICAgICAgICAgICJlbGVtZW50Q291bnQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIm5hbWUiIDogIlRyZWVTdGVwIiwKKyAgICAgICAgImFubm90YXRpb25zIiA6IHsKKyAgICAgICAgICAicGVyY2VudER1ciIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImlkIiA6ICI0LjAuMCgpIgorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC90cmF2ZXJzYWxtZXRyaWNzLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdHJhdmVyc2FsbWV0cmljcy12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDZmNzYzNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdHJhdmVyc2FsbWV0cmljcy12M2QwLmpzb24KQEAgLTAsMCArMSwxMDkgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlRyYXZlcnNhbE1ldHJpY3MiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgImR1ciIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgIkB2YWx1ZSIgOiAwLjAwNAorICAgIH0sICJtZXRyaWNzIiwgeworICAgICAgIkB0eXBlIiA6ICJnOkxpc3QiLAorICAgICAgIkB2YWx1ZSIgOiBbIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IFsgImR1ciIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgICAgICAgIH0sICJjb3VudHMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAidHJhdmVyc2VyQ291bnQiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgICAgICAgfSwgImVsZW1lbnRDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICAgICAgICB9IF0KKyAgICAgICAgICB9LCAibmFtZSIsICJUaW5rZXJHcmFwaFN0ZXAodmVydGV4LFt+bGFiZWwuZXEocGVyc29uKV0pIiwgImFubm90YXRpb25zIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IFsgInBlcmNlbnREdXIiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJpZCIsICI3LjAuMCgpIiBdCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IFsgImR1ciIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgICAgICAgIH0sICJjb3VudHMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAidHJhdmVyc2VyQ291bnQiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMTMKKyAgICAgICAgICAgIH0sICJlbGVtZW50Q291bnQiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMTMKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJuYW1lIiwgIlZlcnRleFN0ZXAoT1VULHZlcnRleCkiLCAiYW5ub3RhdGlvbnMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAicGVyY2VudER1ciIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgImlkIiwgIjIuMC4wKCkiIF0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgICAgfSwgImNvdW50cyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJ0cmF2ZXJzZXJDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICB9LCAiZWxlbWVudENvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJuYW1lIiwgIlZlcnRleFN0ZXAoT1VULHZlcnRleCkiLCAiYW5ub3RhdGlvbnMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAicGVyY2VudER1ciIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgImlkIiwgIjMuMC4wKCkiIF0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgICAgfSwgImNvdW50cyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJ0cmF2ZXJzZXJDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgICAgICB9LCAiZWxlbWVudENvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJuYW1lIiwgIlRyZWVTdGVwIiwgImFubm90YXRpb25zIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IFsgInBlcmNlbnREdXIiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJpZCIsICI0LjAuMCgpIiBdCisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC90cmF2ZXJzZXItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3RyYXZlcnNlci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTlhMjllCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC90cmF2ZXJzZXItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMDkgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlRyYXZlcnNlciIsCisgICJAdmFsdWUiIDogeworICAgICJidWxrIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9LAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTk3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdHJhdmVyc2VyLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdHJhdmVyc2VyLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTlhMjllCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC90cmF2ZXJzZXItdjNkMC5qc29uCkBAIC0wLDAgKzEsMTA5IEBACit7CisgICJAdHlwZSIgOiAiZzpUcmF2ZXJzZXIiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiYnVsayIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfSwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDYKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW4gZGllZ28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5NworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImJydXNzZWxzIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBmZSIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3V1aWQtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC91dWlkLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzZmZjk2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC91dWlkLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxIEBACisiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdXVpZC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdXVpZC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2YwOWYwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC91dWlkLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6VVVJRCIsCisgICJAdmFsdWUiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3V1aWQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC91dWlkLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2YwOWYwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC91dWlkLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlVVSUQiLAorICAiQHZhbHVlIiA6ICI0MWQyZTI4YS0yMGE0LTRhYjAtYjM3OS1kODEwZGVkZTM3ODYiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC92ZXJ0ZXgtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC92ZXJ0ZXgtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4ODVmNTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3ZlcnRleC12MWQwLmpzb24KQEAgLTAsMCArMSwzOSBAQAoreworICAiaWQiIDogMSwKKyAgImxhYmVsIiA6ICJwZXJzb24iLAorICAidHlwZSIgOiAidmVydGV4IiwKKyAgInByb3BlcnRpZXMiIDogeworICAgICJuYW1lIiA6IFsgeworICAgICAgImlkIiA6IDAsCisgICAgICAidmFsdWUiIDogIm1hcmtvIgorICAgIH0gXSwKKyAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAiaWQiIDogNiwKKyAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgInN0YXJ0VGltZSIgOiAxOTk3LAorICAgICAgICAiZW5kVGltZSIgOiAyMDAxCisgICAgICB9CisgICAgfSwgeworICAgICAgImlkIiA6IDcsCisgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDEsCisgICAgICAgICJlbmRUaW1lIiA6IDIwMDQKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiaWQiIDogOCwKKyAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDQsCisgICAgICAgICJlbmRUaW1lIiA6IDIwMDUKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiaWQiIDogOSwKKyAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDUKKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdmVydGV4LXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdmVydGV4LXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTYxNTVmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC92ZXJ0ZXgtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsNDMgQEAKK3sKKyAgImlkIiA6IDEsCisgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgInByb3BlcnRpZXMiIDogeworICAgICJuYW1lIiA6IFsgeworICAgICAgImlkIiA6IDAsCisgICAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICB9IF0sCisgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgImlkIiA6IDYsCisgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgInN0YXJ0VGltZSIgOiAxOTk3LAorICAgICAgICAiZW5kVGltZSIgOiAyMDAxCisgICAgICB9CisgICAgfSwgeworICAgICAgImlkIiA6IDcsCisgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICJzdGFydFRpbWUiIDogMjAwMSwKKyAgICAgICAgImVuZFRpbWUiIDogMjAwNAorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJpZCIgOiA4LAorICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA0LAorICAgICAgICAiZW5kVGltZSIgOiAyMDA1CisgICAgICB9CisgICAgfSwgeworICAgICAgImlkIiA6IDksCisgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDUKKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdmVydGV4LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC92ZXJ0ZXgtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjEwMjIzMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdmVydGV4LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTAwIEBACit7CisgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiaWQiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0sCisgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMAorICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICB9CisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA2CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5NworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3ZlcnRleC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3ZlcnRleC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjEwMjIzMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdmVydGV4LXYzZDAuanNvbgpAQCAtMCwwICsxLDEwMCBAQAoreworICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImlkIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgICB9LAorICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgfQorICAgICAgfSBdLAorICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJzYW4gZGllZ28iLAorICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5OTcKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBjcnV6IiwKKyAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgICB9LAorICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBmZSIsCisgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSBdCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC92ZXJ0ZXhwcm9wZXJ0eS12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3ZlcnRleHByb3BlcnR5LXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDAyNWE4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC92ZXJ0ZXhwcm9wZXJ0eS12MWQwLmpzb24KQEAgLTAsMCArMSw1IEBACit7CisgICJpZCIgOiAwLAorICAidmFsdWUiIDogIm1hcmtvIiwKKyAgImxhYmVsIiA6ICJuYW1lIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdmVydGV4cHJvcGVydHktdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC92ZXJ0ZXhwcm9wZXJ0eS12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQwMjVhOAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdmVydGV4cHJvcGVydHktdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsNSBAQAoreworICAiaWQiIDogMCwKKyAgInZhbHVlIiA6ICJtYXJrbyIsCisgICJsYWJlbCIgOiAibmFtZSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3ZlcnRleHByb3BlcnR5LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC92ZXJ0ZXhwcm9wZXJ0eS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjE4NGIxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC92ZXJ0ZXhwcm9wZXJ0eS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDExIEBACit7CisgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICJAdmFsdWUiIDogeworICAgICJpZCIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgIkB2YWx1ZSIgOiAwCisgICAgfSwKKyAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAibGFiZWwiIDogIm5hbWUiCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3ZlcnRleHByb3BlcnR5LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvdmVydGV4cHJvcGVydHktdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmMTg0YjEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3ZlcnRleHByb3BlcnR5LXYzZDAuanNvbgpAQCAtMCwwICsxLDExIEBACit7CisgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICJAdmFsdWUiIDogeworICAgICJpZCIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgIkB2YWx1ZSIgOiAwCisgICAgfSwKKyAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAibGFiZWwiIDogIm5hbWUiCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3llYXItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3llYXItdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY0MjBiYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAveWVhci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpZZWFyIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3llYXItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC95ZWFyLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjQyMGJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC95ZWFyLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpZZWFyIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3llYXJtb250aC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAveWVhcm1vbnRoLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4YTVlMjcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3llYXJtb250aC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpZZWFyTW9udGgiLAorICAiQHZhbHVlIiA6ICIyMDE2LTA2IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAveWVhcm1vbnRoLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAveWVhcm1vbnRoLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OGE1ZTI3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC95ZWFybW9udGgtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlllYXJNb250aCIsCisgICJAdmFsdWUiIDogIjIwMTYtMDYiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC96b25lZGRhdGV0aW1lLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC96b25lZGRhdGV0aW1lLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2N2ZjNDcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3pvbmVkZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Wm9uZWREYXRlVGltZSIsCisgICJAdmFsdWUiIDogIjIwMTYtMTItMjNUMTI6MTI6MjQuMDAwMDAwMDM2KzAyOjAwW0dNVCswMjowMF0iCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC96b25lZGRhdGV0aW1lLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvem9uZWRkYXRldGltZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY3ZmM0NwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzAvem9uZWRkYXRldGltZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Wm9uZWREYXRlVGltZSIsCisgICJAdmFsdWUiIDogIjIwMTYtMTItMjNUMTI6MTI6MjQuMDAwMDAwMDM2KzAyOjAwW0dNVCswMjowMF0iCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC96b25lb2Zmc2V0LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC96b25lb2Zmc2V0LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1OTE3OTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3pvbmVvZmZzZXQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Wm9uZU9mZnNldCIsCisgICJAdmFsdWUiIDogIiswMzowNjowOSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8wL3pvbmVvZmZzZXQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC96b25lb2Zmc2V0LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTkxNzk0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMC96b25lb2Zmc2V0LXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpab25lT2Zmc2V0IiwKKyAgIkB2YWx1ZSIgOiAiKzAzOjA2OjA5IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGM1YjgyYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjFkMC5qc29uCkBAIC0wLDAgKzEsMTIgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IiwKKyAgInN0YXR1cyIgOiB7CisgICAgIm1lc3NhZ2UiIDogIiIsCisgICAgImNvZGUiIDogNDA3LAorICAgICJhdHRyaWJ1dGVzIiA6IHsgfQorICB9LAorICAicmVzdWx0IiA6IHsKKyAgICAiZGF0YSIgOiBudWxsLAorICAgICJtZXRhIiA6IHsgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzViODJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSwxMiBAQAoreworICAicmVxdWVzdElkIiA6ICI0MWQyZTI4YS0yMGE0LTRhYjAtYjM3OS1kODEwZGVkZTM3ODYiLAorICAic3RhdHVzIiA6IHsKKyAgICAibWVzc2FnZSIgOiAiIiwKKyAgICAiY29kZSIgOiA0MDcsCisgICAgImF0dHJpYnV0ZXMiIDogeyB9CisgIH0sCisgICJyZXN1bHQiIDogeworICAgICJkYXRhIiA6IG51bGwsCisgICAgIm1ldGEiIDogeyB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzViODJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDEyIEBACit7CisgICJyZXF1ZXN0SWQiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIsCisgICJzdGF0dXMiIDogeworICAgICJtZXNzYWdlIiA6ICIiLAorICAgICJjb2RlIiA6IDQwNywKKyAgICAiYXR0cmlidXRlcyIgOiB7IH0KKyAgfSwKKyAgInJlc3VsdCIgOiB7CisgICAgImRhdGEiIDogbnVsbCwKKyAgICAibWV0YSIgOiB7IH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDE3MzRjNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTggQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IiwKKyAgInN0YXR1cyIgOiB7CisgICAgIm1lc3NhZ2UiIDogIiIsCisgICAgImNvZGUiIDogNDA3LAorICAgICJhdHRyaWJ1dGVzIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbIF0KKyAgICB9CisgIH0sCisgICJyZXN1bHQiIDogeworICAgICJkYXRhIiA6IG51bGwsCisgICAgIm1ldGEiIDogeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgXQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYXV0aGVudGljYXRpb25yZXNwb25zZS12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzOGUxZmQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjFkMC5qc29uCkBAIC0wLDAgKzEsOSBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImF1dGhlbnRpY2F0aW9uIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJzYXNsTWVjaGFuaXNtIiA6ICJQTEFJTiIsCisgICAgInNhc2wiIDogIkFITjBaWEJvY0dobGJnQndZWE56ZDI5eVpBPT0iCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzhlMWZkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxLDkgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJhdXRoZW50aWNhdGlvbiIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAic2FzbE1lY2hhbmlzbSIgOiAiUExBSU4iLAorICAgICJzYXNsIiA6ICJBSE4wWlhCb2NHaGxiZ0J3WVhOemQyOXlaQT09IgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzOGUxZmQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw5IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiYXV0aGVudGljYXRpb24iLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgInNhc2xNZWNoYW5pc20iIDogIlBMQUlOIiwKKyAgICAic2FzbCIgOiAiQUhOMFpYQm9jR2hsYmdCd1lYTnpkMjl5WkE9PSIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYXV0aGVudGljYXRpb25yZXNwb25zZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhY2VjYTIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjNkMC5qc29uCkBAIC0wLDAgKzEsOSBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImF1dGhlbnRpY2F0aW9uIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAic2FzbE1lY2hhbmlzbSIsICJQTEFJTiIsICJzYXNsIiwgIkFITjBaWEJvY0dobGJnQndZWE56ZDI5eVpBPT0iIF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYmFycmllci12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYmFycmllci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZGRjY2RkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9iYXJyaWVyLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6QmFycmllciIsCisgICJAdmFsdWUiIDogIm5vcm1TYWNrIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYmFycmllci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2JhcnJpZXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkZGNjZGQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2JhcnJpZXItdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6QmFycmllciIsCisgICJAdmFsdWUiIDogIm5vcm1TYWNrIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYmlnZGVjaW1hbC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYmlnZGVjaW1hbC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzUzMzdjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9iaWdkZWNpbWFsLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJpZ0RlY2ltYWwiLAorICAiQHZhbHVlIiA6IDEyMzQ1Njc4OTk4NzY1NDMyMTEyMzQ1Njc4OTk4NzY1NDMyMQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYmlnZGVjaW1hbC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2JpZ2RlY2ltYWwtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3NTMzN2MKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2JpZ2RlY2ltYWwtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJpZ0RlY2ltYWwiLAorICAiQHZhbHVlIiA6IDEyMzQ1Njc4OTk4NzY1NDMyMTEyMzQ1Njc4OTk4NzY1NDMyMQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYmlnaW50ZWdlci12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYmlnaW50ZWdlci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OGU2MTE0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9iaWdpbnRlZ2VyLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJpZ0ludGVnZXIiLAorICAiQHZhbHVlIiA6IDEyMzQ1Njc4OTk4NzY1NDMyMTEyMzQ1Njc4OTk4NzY1NDMyMQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYmlnaW50ZWdlci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2JpZ2ludGVnZXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4ZTYxMTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2JpZ2ludGVnZXItdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJpZ0ludGVnZXIiLAorICAiQHZhbHVlIiA6IDEyMzQ1Njc4OTk4NzY1NDMyMTEyMzQ1Njc4OTk4NzY1NDMyMQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYmluZGluZy12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYmluZGluZy12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzliOGM3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9iaW5kaW5nLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkJpbmRpbmciLAorICAiQHZhbHVlIiA6IHsKKyAgICAia2V5IiA6ICJ4IiwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYmluZGluZy12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2JpbmRpbmctdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3OWI4YzcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2JpbmRpbmctdjNkMC5qc29uCkBAIC0wLDAgKzEsMTAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkJpbmRpbmciLAorICAiQHZhbHVlIiA6IHsKKyAgICAia2V5IiA6ICJ4IiwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYnVsa3NldC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYnVsa3NldC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODQ0OTc1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9idWxrc2V0LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEgQEAKK1sgIm1hcmtvIiwgImpvc2giLCAiam9zaCIgXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYnVsa3NldC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2J1bGtzZXQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyMTZhMzYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2J1bGtzZXQtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkJ1bGtTZXQiLAorICAiQHZhbHVlIiA6IFsgIm1hcmtvIiwgeworICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgIkB2YWx1ZSIgOiAxCisgIH0sICJqb3NoIiwgeworICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgIkB2YWx1ZSIgOiAyCisgIH0gXQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYnl0ZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYnl0ZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Nzk2MjViCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9ieXRlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJ5dGUiLAorICAiQHZhbHVlIiA6IDEKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2J5dGUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9ieXRlLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Nzk2MjViCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9ieXRlLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpCeXRlIiwKKyAgIkB2YWx1ZSIgOiAxCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9ieXRlYnVmZmVyLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9ieXRlYnVmZmVyLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3MjQxMTUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2J5dGVidWZmZXItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Qnl0ZUJ1ZmZlciIsCisgICJAdmFsdWUiIDogImMyOXRaU0JpZVhSbGN5Qm1iM0lnZVc5MSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2J5dGVidWZmZXItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9ieXRlYnVmZmVyLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzI0MTE1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9ieXRlYnVmZmVyLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpCeXRlQnVmZmVyIiwKKyAgIkB2YWx1ZSIgOiAiYzI5dFpTQmllWFJsY3lCbWIzSWdlVzkxIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYnl0ZWNvZGUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2J5dGVjb2RlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2OWQyNzcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2J5dGVjb2RlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNiBAQAoreworICAiQHR5cGUiIDogImc6Qnl0ZWNvZGUiLAorICAiQHZhbHVlIiA6IHsKKyAgICAic3RlcCIgOiBbIFsgIlYiIF0sIFsgImhhc0xhYmVsIiwgInBlcnNvbiIgXSwgWyAib3V0IiBdLCBbICJpbiIgXSwgWyAidHJlZSIgXSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2J5dGVjb2RlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvYnl0ZWNvZGUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2OWQyNzcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2J5dGVjb2RlLXYzZDAuanNvbgpAQCAtMCwwICsxLDYgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkJ5dGVjb2RlIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInN0ZXAiIDogWyBbICJWIiBdLCBbICJoYXNMYWJlbCIsICJwZXJzb24iIF0sIFsgIm91dCIgXSwgWyAiaW4iIF0sIFsgInRyZWUiIF0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9jYXJkaW5hbGl0eS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvY2FyZGluYWxpdHktdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM0ZTY0ZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvY2FyZGluYWxpdHktdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpDYXJkaW5hbGl0eSIsCisgICJAdmFsdWUiIDogImxpc3QiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9jYXJkaW5hbGl0eS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2NhcmRpbmFsaXR5LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzRlNjRlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9jYXJkaW5hbGl0eS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpDYXJkaW5hbGl0eSIsCisgICJAdmFsdWUiIDogImxpc3QiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9jaGFyLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9jaGFyLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmMjdlOWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2NoYXItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Q2hhciIsCisgICJAdmFsdWUiIDogIngiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9jaGFyLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvY2hhci12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGYyN2U5ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvY2hhci12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Q2hhciIsCisgICJAdmFsdWUiIDogIngiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9jbGFzcy12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvY2xhc3MtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBmMTVhMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvY2xhc3MtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpDbGFzcyIsCisgICJAdmFsdWUiIDogImphdmEuaW8uRmlsZSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2NsYXNzLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvY2xhc3MtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwZjE1YTIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2NsYXNzLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkNsYXNzIiwKKyAgIkB2YWx1ZSIgOiAiamF2YS5pby5GaWxlIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvY29sdW1uLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9jb2x1bW4tdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIzYTU2ZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvY29sdW1uLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6Q29sdW1uIiwKKyAgIkB2YWx1ZSIgOiAia2V5cyIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2NvbHVtbi12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2NvbHVtbi12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIzYTU2ZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvY29sdW1uLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkNvbHVtbiIsCisgICJAdmFsdWUiIDogImtleXMiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9kYXRlLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvZGF0ZS12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNiNzFhMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvZGF0ZS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSBAQAorMTQ4MTc1MDA3NjI5NQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvZGF0ZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvZGF0ZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjQwMDdhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9kYXRlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6RGF0ZSIsCisgICJAdmFsdWUiIDogMTQ4MTc1MDA3NjI5NQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvZGF0ZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2RhdGUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmNDAwN2EKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2RhdGUtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6RGF0ZSIsCisgICJAdmFsdWUiIDogMTQ4MTc1MDA3NjI5NQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvZGlyZWN0aW9uLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9kaXJlY3Rpb24tdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzhjYjdlNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvZGlyZWN0aW9uLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6RGlyZWN0aW9uIiwKKyAgIkB2YWx1ZSIgOiAiT1VUIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvZGlyZWN0aW9uLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvZGlyZWN0aW9uLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGNiN2U0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9kaXJlY3Rpb24tdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6RGlyZWN0aW9uIiwKKyAgIkB2YWx1ZSIgOiAiT1VUIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvZG91YmxlLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvZG91YmxlLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzcyZTYyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9kb3VibGUtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEgQEAKKzEwMC4wClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9kb3VibGUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2RvdWJsZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YWU0OTY0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9kb3VibGUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAiQHZhbHVlIiA6IDEwMC4wCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9kb3VibGUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9kb3VibGUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhZTQ5NjQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2RvdWJsZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAiQHZhbHVlIiA6IDEwMC4wCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9kdXJhdGlvbi12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvZHVyYXRpb24tdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVjMGNlOQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvZHVyYXRpb24tdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6RHVyYXRpb24iLAorICAiQHZhbHVlIiA6ICJQVDEyMEgiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9kdXJhdGlvbi12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2R1cmF0aW9uLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWMwY2U5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9kdXJhdGlvbi12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6RHVyYXRpb24iLAorICAiQHZhbHVlIiA6ICJQVDEyMEgiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9lZGdlLXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvZWRnZS12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGY3ZjE2OAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvZWRnZS12MWQwLmpzb24KQEAgLTAsMCArMSwxMiBAQAoreworICAiaWQiIDogMTMsCisgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAidHlwZSIgOiAiZWRnZSIsCisgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAiaW5WIiA6IDEwLAorICAib3V0ViIgOiAxLAorICAicHJvcGVydGllcyIgOiB7CisgICAgInNpbmNlIiA6IDIwMDkKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvZWRnZS12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2VkZ2UtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4ZTczZGIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2VkZ2UtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsMTQgQEAKK3sKKyAgImlkIiA6IDEzLAorICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICJpblYiIDogMTAsCisgICJvdXRWIiA6IDEsCisgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAic2luY2UiIDogeworICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgInZhbHVlIiA6IDIwMDkKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2VkZ2UtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2VkZ2UtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmExYzUyZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvZWRnZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDMyIEBACit7CisgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImlkIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEzCisgICAgfSwKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMTAKKyAgICB9LAorICAgICJvdXRWIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMjAwOQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvZWRnZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2VkZ2UtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhMWM1MmUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2VkZ2UtdjNkMC5qc29uCkBAIC0wLDAgKzEsMzIgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiaWQiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMTMKKyAgICB9LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxMAorICAgIH0sCisgICAgIm91dFYiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0sCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA5CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9mbG9hdC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvZmxvYXQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE3OWFhZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvZmxvYXQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpGbG9hdCIsCisgICJAdmFsdWUiIDogMTAwLjAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2Zsb2F0LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvZmxvYXQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxNzlhYWYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2Zsb2F0LXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkZsb2F0IiwKKyAgIkB2YWx1ZSIgOiAxMDAuMAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvaW5ldGFkZHJlc3MtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2luZXRhZGRyZXNzLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiYTk4YzAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2luZXRhZGRyZXNzLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkluZXRBZGRyZXNzIiwKKyAgIkB2YWx1ZSIgOiAibG9jYWxob3N0IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvaW5ldGFkZHJlc3MtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9pbmV0YWRkcmVzcy12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmJhOThjMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvaW5ldGFkZHJlc3MtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkluZXRBZGRyZXNzIiwKKyAgIkB2YWx1ZSIgOiAibG9jYWxob3N0IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvaW5zdGFudC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvaW5zdGFudC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzQ5NzQxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9pbnN0YW50LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4Okluc3RhbnQiLAorICAiQHZhbHVlIiA6ICIyMDE2LTEyLTE0VDE2OjM5OjE5LjM0OVoiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9pbnN0YW50LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvaW5zdGFudC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzc0OTc0MQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvaW5zdGFudC12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6SW5zdGFudCIsCisgICJAdmFsdWUiIDogIjIwMTYtMTItMTRUMTY6Mzk6MTkuMzQ5WiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2ludGVnZXItdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9pbnRlZ2VyLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDVkN2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9pbnRlZ2VyLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxIEBACisxMDAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2ludGVnZXItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2ludGVnZXItdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzUwY2U3YQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvaW50ZWdlci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgIkB2YWx1ZSIgOiAxMDAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2ludGVnZXItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9pbnRlZ2VyLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTBjZTdhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9pbnRlZ2VyLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgIkB2YWx1ZSIgOiAxMDAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2xhbWJkYS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvbGFtYmRhLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViZTE3OWIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2xhbWJkYS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDggQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkxhbWJkYSIsCisgICJAdmFsdWUiIDogeworICAgICJzY3JpcHQiIDogInsgaXQuZ2V0KCkgfSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImFyZ3VtZW50cyIgOiAxCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2xhbWJkYS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2xhbWJkYS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJlMTc5YgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvbGFtYmRhLXYzZDAuanNvbgpAQCAtMCwwICsxLDggQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkxhbWJkYSIsCisgICJAdmFsdWUiIDogeworICAgICJzY3JpcHQiIDogInsgaXQuZ2V0KCkgfSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImFyZ3VtZW50cyIgOiAxCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2xpc3QtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9saXN0LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzE0ZTJkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9saXN0LXYzZDAuanNvbgpAQCAtMCwwICsxLDcgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkxpc3QiLAorICAiQHZhbHVlIiA6IFsgeworICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgIkB2YWx1ZSIgOiAxCisgIH0sICJwZXJzb24iLCB0cnVlIF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2xvY2FsZGF0ZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvbG9jYWxkYXRlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2ZmI4MWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2xvY2FsZGF0ZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpMb2NhbERhdGUiLAorICAiQHZhbHVlIiA6ICIyMDE2LTAxLTAxIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvbG9jYWxkYXRlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvbG9jYWxkYXRlLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNmZiODFkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9sb2NhbGRhdGUtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkxvY2FsRGF0ZSIsCisgICJAdmFsdWUiIDogIjIwMTYtMDEtMDEiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9sb2NhbGRhdGV0aW1lLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9sb2NhbGRhdGV0aW1lLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkODM2NjgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2xvY2FsZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6TG9jYWxEYXRlVGltZSIsCisgICJAdmFsdWUiIDogIjIwMTYtMDEtMDFUMTI6MzAiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9sb2NhbGRhdGV0aW1lLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvbG9jYWxkYXRldGltZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQ4MzY2OAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvbG9jYWxkYXRldGltZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6TG9jYWxEYXRlVGltZSIsCisgICJAdmFsdWUiIDogIjIwMTYtMDEtMDFUMTI6MzAiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9sb2NhbHRpbWUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2xvY2FsdGltZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZmY2NWE3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9sb2NhbHRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6TG9jYWxUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMTI6MzA6NDUiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9sb2NhbHRpbWUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9sb2NhbHRpbWUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmZjY1YTcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2xvY2FsdGltZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6TG9jYWxUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMTI6MzA6NDUiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9sb25nLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9sb25nLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0YjlhMjMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL2xvbmctdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICJAdmFsdWUiIDogMTAwCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9sb25nLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvbG9uZy12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRiOWEyMwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvbG9uZy12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICJAdmFsdWUiIDogMTAwCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9tYXAtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9tYXAtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhZDU5YzkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL21hcC12M2QwLmpzb24KQEAgLTAsMCArMSwyNSBAQAoreworICAiQHR5cGUiIDogImc6TWFwIiwKKyAgIkB2YWx1ZSIgOiBbIHsKKyAgICAiQHR5cGUiIDogImc6RGF0ZSIsCisgICAgIkB2YWx1ZSIgOiAxNDgxNzUwMDc2Mjk1CisgIH0sICJyZWQiLCB7CisgICAgIkB0eXBlIiA6ICJnOkxpc3QiLAorICAgICJAdmFsdWUiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMgorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDMKKyAgICB9IF0KKyAgfSwgeworICAgICJAdHlwZSIgOiAiZzpEYXRlIiwKKyAgICAiQHZhbHVlIiA6IDE0ODE3NTAwNzYyOTUKKyAgfSwgInRlc3QiLCB7CisgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAiQHZhbHVlIiA6IDEyMworICB9IF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL21ldHJpY3MtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL21ldHJpY3MtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2IxZTk2NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvbWV0cmljcy12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDU0IEBACit7CisgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImR1ciIgOiB7CisgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICB9LAorICAgICJjb3VudHMiIDogeworICAgICAgInRyYXZlcnNlckNvdW50IiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICB9LAorICAgICAgImVsZW1lbnRDb3VudCIgOiB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgfQorICAgIH0sCisgICAgIm5hbWUiIDogIlRpbmtlckdyYXBoU3RlcCh2ZXJ0ZXgsW35sYWJlbC5lcShwZXJzb24pXSkiLAorICAgICJhbm5vdGF0aW9ucyIgOiB7CisgICAgICAicGVyY2VudER1ciIgOiB7CisgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgIH0KKyAgICB9LAorICAgICJpZCIgOiAiNy4wLjAoKSIsCisgICAgIm1ldHJpY3MiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImR1ciIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgICAgICB9LAorICAgICAgICAiY291bnRzIiA6IHsKKyAgICAgICAgICAidHJhdmVyc2VyQ291bnQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgIH0sCisgICAgICAgICAgImVsZW1lbnRDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibmFtZSIgOiAiVmVydGV4U3RlcChPVVQsdmVydGV4KSIsCisgICAgICAgICJhbm5vdGF0aW9ucyIgOiB7CisgICAgICAgICAgInBlcmNlbnREdXIiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJpZCIgOiAiMy4wLjAoKSIKKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvbWV0cmljcy12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL21ldHJpY3MtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2ZTY3OGIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL21ldHJpY3MtdjNkMC5qc29uCkBAIC0wLDAgKzEsNTIgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgImR1ciIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgIH0sICJjb3VudHMiLCB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyAidHJhdmVyc2VyQ291bnQiLCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgfSwgImVsZW1lbnRDb3VudCIsIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICB9IF0KKyAgICB9LCAibmFtZSIsICJUaW5rZXJHcmFwaFN0ZXAodmVydGV4LFt+bGFiZWwuZXEocGVyc29uKV0pIiwgImFubm90YXRpb25zIiwgeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgInBlcmNlbnREdXIiLCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgIH0gXQorICAgIH0sICJpZCIsICI3LjAuMCgpIiwgIm1ldHJpY3MiLCB7CisgICAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgICAiQHZhbHVlIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgICAgfSwgImNvdW50cyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJ0cmF2ZXJzZXJDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICB9LCAiZWxlbWVudENvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJuYW1lIiwgIlZlcnRleFN0ZXAoT1VULHZlcnRleCkiLCAiYW5ub3RhdGlvbnMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAicGVyY2VudER1ciIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgImlkIiwgIjMuMC4wKCkiIF0KKyAgICAgICAgfQorICAgICAgfSBdCisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL21vbnRoZGF5LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9tb250aGRheS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGE1OTE0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9tb250aGRheS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpNb250aERheSIsCisgICJAdmFsdWUiIDogIi0tMDEtMDEiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9tb250aGRheS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL21vbnRoZGF5LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGE1OTE0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9tb250aGRheS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6TW9udGhEYXkiLAorICAiQHZhbHVlIiA6ICItLTAxLTAxIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvb2Zmc2V0ZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL29mZnNldGRhdGV0aW1lLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzZjQ1Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL29mZnNldGRhdGV0aW1lLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4Ok9mZnNldERhdGVUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMjAwNy0xMi0wM1QxMDoxNTozMCswMTowMCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL29mZnNldGRhdGV0aW1lLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvb2Zmc2V0ZGF0ZXRpbWUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzZjQ1Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL29mZnNldGRhdGV0aW1lLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpPZmZzZXREYXRlVGltZSIsCisgICJAdmFsdWUiIDogIjIwMDctMTItMDNUMTA6MTU6MzArMDE6MDAiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9vZmZzZXR0aW1lLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9vZmZzZXR0aW1lLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxMjQ5NTMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL29mZnNldHRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6T2Zmc2V0VGltZSIsCisgICJAdmFsdWUiIDogIjEwOjE1OjMwKzAxOjAwIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvb2Zmc2V0dGltZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL29mZnNldHRpbWUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxMjQ5NTMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL29mZnNldHRpbWUtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4Ok9mZnNldFRpbWUiLAorICAiQHZhbHVlIiA6ICIxMDoxNTozMCswMTowMCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL29wZXJhdG9yLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9vcGVyYXRvci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNGMxNDAwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9vcGVyYXRvci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOk9wZXJhdG9yIiwKKyAgIkB2YWx1ZSIgOiAic3VtIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvb3BlcmF0b3ItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9vcGVyYXRvci12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTRjMTQwMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvb3BlcmF0b3ItdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6T3BlcmF0b3IiLAorICAiQHZhbHVlIiA6ICJzdW0iCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9vcmRlci12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvb3JkZXItdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGJlMDQzMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvb3JkZXItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpPcmRlciIsCisgICJAdmFsdWUiIDogInNodWZmbGUiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9vcmRlci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL29yZGVyLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmUwNDMyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9vcmRlci12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpPcmRlciIsCisgICJAdmFsdWUiIDogInNodWZmbGUiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9wLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9wLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViZGZiM2IKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3AtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogImd0IiwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMAorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3AtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViZGZiM2IKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3AtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJndCIsCisgICAgInZhbHVlIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDAKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3BhbmQtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3BhbmQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzI3MTk1OAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcGFuZC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDI1IEBACit7CisgICJAdHlwZSIgOiAiZzpQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAiYW5kIiwKKyAgICAidmFsdWUiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAiZ3QiLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAibHQiLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9CisgICAgICB9CisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3BhbmQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9wYW5kLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjcxOTU4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9wYW5kLXYzZDAuanNvbgpAQCAtMCwwICsxLDI1IEBACit7CisgICJAdHlwZSIgOiAiZzpQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAiYW5kIiwKKyAgICAidmFsdWUiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAiZ3QiLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAibHQiLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9CisgICAgICB9CisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3BhdGgtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9wYXRoLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZWVlODgzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9wYXRoLXYxZDAuanNvbgpAQCAtMCwwICsxLDYyIEBACit7CisgICJsYWJlbHMiIDogWyBbIF0sIFsgXSwgWyBdIF0sCisgICJvYmplY3RzIiA6IFsgeworICAgICJpZCIgOiAxLAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDAsCisgICAgICAgICJ2YWx1ZSIgOiAibWFya28iCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiA2LAorICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTcsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwMQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA3LAorICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDAxLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDQKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogOCwKKyAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDQsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA5LAorICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTAsCisgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiA0LAorICAgICAgICAidmFsdWUiIDogImdyZW1saW4iCisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTEsCisgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiA1LAorICAgICAgICAidmFsdWUiIDogInRpbmtlcmdyYXBoIgorICAgICAgfSBdCisgICAgfQorICB9IF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3BhdGgtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9wYXRoLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTkyZDJmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9wYXRoLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxLDEzIEBACit7CisgICJsYWJlbHMiIDogWyBbIF0sIFsgXSwgWyBdIF0sCisgICJvYmplY3RzIiA6IFsgeworICAgICJpZCIgOiAxLAorICAgICJsYWJlbCIgOiAicGVyc29uIgorICB9LCB7CisgICAgImlkIiA6IDEwLAorICAgICJsYWJlbCIgOiAic29mdHdhcmUiCisgIH0sIHsKKyAgICAiaWQiIDogMTEsCisgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIKKyAgfSBdCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9wYXRoLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9wYXRoLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljY2FhMDAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3BhdGgtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwzNCBAQAoreworICAiQHR5cGUiIDogImc6UGF0aCIsCisgICJAdmFsdWUiIDogeworICAgICJsYWJlbHMiIDogWyBbIF0sIFsgXSwgWyBdIF0sCisgICAgIm9iamVjdHMiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIgorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAic29mdHdhcmUiCisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIKKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcGF0aC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3BhdGgtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxNmIzOTMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3BhdGgtdjNkMC5qc29uCkBAIC0wLDAgKzEsNDkgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlBhdGgiLAorICAiQHZhbHVlIiA6IHsKKyAgICAibGFiZWxzIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICJAdmFsdWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpTZXQiLAorICAgICAgICAiQHZhbHVlIiA6IFsgXQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6U2V0IiwKKyAgICAgICAgIkB2YWx1ZSIgOiBbIF0KKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlNldCIsCisgICAgICAgICJAdmFsdWUiIDogWyBdCisgICAgICB9IF0KKyAgICB9LAorICAgICJvYmplY3RzIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICJAdmFsdWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICAgIH0sCisgICAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICAgIH0sCisgICAgICAgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgICAgfSwKKyAgICAgICAgICAibGFiZWwiIDogInNvZnR3YXJlIgorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3BlcmlvZC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcGVyaW9kLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwNDM4YTEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3BlcmlvZC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpQZXJpb2QiLAorICAiQHZhbHVlIiA6ICJQMVk2TTE1RCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3BlcmlvZC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3BlcmlvZC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjA0MzhhMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcGVyaW9kLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpQZXJpb2QiLAorICAiQHZhbHVlIiA6ICJQMVk2TTE1RCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3BpY2stdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3BpY2stdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NhMmYyZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcGljay12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlBpY2siLAorICAiQHZhbHVlIiA6ICJhbnkiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9waWNrLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcGljay12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NhMmYyZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcGljay12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpQaWNrIiwKKyAgIkB2YWx1ZSIgOiAiYW55IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcG9wLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9wb3AtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjcxNTE1ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcG9wLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6UG9wIiwKKyAgIkB2YWx1ZSIgOiAiYWxsIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcG9wLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcG9wLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzE1MTVmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9wb3AtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6UG9wIiwKKyAgIkB2YWx1ZSIgOiAiYWxsIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcG9yLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9wb3ItdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFmY2I3ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcG9yLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMzEgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJvciIsCisgICAgInZhbHVlIiA6IFsgeworICAgICAgIkB0eXBlIiA6ICJnOlAiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJwcmVkaWNhdGUiIDogImd0IiwKKyAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMAorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlAiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJwcmVkaWNhdGUiIDogIndpdGhpbiIsCisgICAgICAgICJ2YWx1ZSIgOiBbIHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogLTEKKyAgICAgICAgfSwgeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAtMTAKKyAgICAgICAgfSwgeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAtMTAwCisgICAgICAgIH0gXQorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9wb3ItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9wb3ItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3MWIxY2YKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Bvci12M2QwLmpzb24KQEAgLTAsMCArMSwzNCBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogIm9yIiwKKyAgICAidmFsdWUiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAiZ3QiLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAid2l0aGluIiwKKyAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgICAgICAgIkB2YWx1ZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IC0xCisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogLTEwCisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogLTEwMAorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Byb3BlcnR5LXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcHJvcGVydHktdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwNTFjMGEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Byb3BlcnR5LXYxZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgImtleSIgOiAic2luY2UiLAorICAidmFsdWUiIDogMjAwOQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcHJvcGVydHktdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9wcm9wZXJ0eS12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzA1MWMwYQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcHJvcGVydHktdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAia2V5IiA6ICJzaW5jZSIsCisgICJ2YWx1ZSIgOiAyMDA5Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9wcm9wZXJ0eS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcHJvcGVydHktdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjk2ZmUzMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcHJvcGVydHktdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAiQHZhbHVlIiA6IHsKKyAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgInZhbHVlIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Byb3BlcnR5LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcHJvcGVydHktdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5NmZlMzIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Byb3BlcnR5LXYzZDAuanNvbgpAQCAtMCwwICsxLDEwIEBACit7CisgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICJAdmFsdWUiIDogeworICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMjAwOQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcHdpdGhpbi12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcHdpdGhpbi12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZmEzODI2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9wd2l0aGluLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJ3aXRoaW4iLAorICAgICJ2YWx1ZSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcHdpdGhpbi12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3B3aXRoaW4tdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzZjk5Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3B3aXRoaW4tdjNkMC5qc29uCkBAIC0wLDAgKzEsMTMgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJ3aXRoaW4iLAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgICAiQHZhbHVlIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0gXQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvcHdpdGhvdXQtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3B3aXRob3V0LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjMjI5MWIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3B3aXRob3V0LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTMgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJ3aXRob3V0IiwKKyAgICAidmFsdWUiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMgorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9wd2l0aG91dC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3B3aXRob3V0LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTE2ODkwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9wd2l0aG91dC12M2QwLmpzb24KQEAgLTAsMCArMSwxNiBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogIndpdGhvdXQiLAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgICAiQHZhbHVlIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAyCisgICAgICB9IF0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Njb3BlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zY29wZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTc0YWYwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zY29wZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlNjb3BlIiwKKyAgIkB2YWx1ZSIgOiAibG9jYWwiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zY29wZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Njb3BlLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTc0YWYwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zY29wZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpTY29wZSIsCisgICJAdmFsdWUiIDogImxvY2FsIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2Vzc2lvbmNsb3NlLXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2Vzc2lvbmNsb3NlLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzgyNWU4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9uY2xvc2UtdjFkMC5qc29uCkBAIC0wLDAgKzEsOCBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImNsb3NlIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2Vzc2lvbmNsb3NlLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2Vzc2lvbmNsb3NlLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzgyNWU4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9uY2xvc2UtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsOCBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImNsb3NlIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2Vzc2lvbmNsb3NlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9uY2xvc2UtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWM4MjVlOAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2Vzc2lvbmNsb3NlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsOCBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImNsb3NlIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2Vzc2lvbmNsb3NlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2Vzc2lvbmNsb3NlLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmUxY2NkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9uY2xvc2UtdjNkMC5qc29uCkBAIC0wLDAgKzEsOSBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImNsb3NlIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgInNlc3Npb24iLCAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIgXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9uZXZhbC12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Nlc3Npb25ldmFsLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmNlODJmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9uZXZhbC12MWQwLmpzb24KQEAgLTAsMCArMSwxMyBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJnLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIiwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2Vzc2lvbmV2YWwtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9uZXZhbC12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGJjZTgyZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2Vzc2lvbmV2YWwtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsMTMgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAiZy5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIsCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IDEKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Nlc3Npb25ldmFsLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9uZXZhbC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZmY4Yjk2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9uZXZhbC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDE2IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogInNlc3Npb24iLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogImcuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgInNlc3Npb24iIDogInVuaXF1ZS1zZXNzaW9uLWlkZW50aWZpZXIiLAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2Vzc2lvbmV2YWwtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9uZXZhbC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzAxYzM5MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2Vzc2lvbmV2YWwtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTUgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgImdyZW1saW4iLCAiZy5WKHgpIiwgImxhbmd1YWdlIiwgImdyZW1saW4tZ3Jvb3Z5IiwgInNlc3Npb24iLCAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIsICJiaW5kaW5ncyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbICJ4IiwgeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0gXQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9uZXZhbGFsaWFzZWQtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9uZXZhbGFsaWFzZWQtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmNGVmNDYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Nlc3Npb25ldmFsYWxpYXNlZC12MWQwLmpzb24KQEAgLTAsMCArMSwxNiBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJzb2NpYWwuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImFsaWFzZXMiIDogeworICAgICAgImciIDogInNvY2lhbCIKKyAgICB9LAorICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIiwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2Vzc2lvbmV2YWxhbGlhc2VkLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2Vzc2lvbmV2YWxhbGlhc2VkLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjRlZjQ2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9uZXZhbGFsaWFzZWQtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsMTYgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAic29jaWFsLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJhbGlhc2VzIiA6IHsKKyAgICAgICJnIiA6ICJzb2NpYWwiCisgICAgfSwKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIsCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IDEKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Nlc3Npb25ldmFsYWxpYXNlZC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2Vzc2lvbmV2YWxhbGlhc2VkLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5NGU1ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Nlc3Npb25ldmFsYWxpYXNlZC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDE5IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogInNlc3Npb24iLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogInNvY2lhbC5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYWxpYXNlcyIgOiB7CisgICAgICAiZyIgOiAic29jaWFsIgorICAgIH0sCisgICAgInNlc3Npb24iIDogInVuaXF1ZS1zZXNzaW9uLWlkZW50aWZpZXIiLAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2Vzc2lvbmV2YWxhbGlhc2VkLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2Vzc2lvbmV2YWxhbGlhc2VkLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDQ4MTYwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9uZXZhbGFsaWFzZWQtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTggQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgImdyZW1saW4iLCAic29jaWFsLlYoeCkiLCAibGFuZ3VhZ2UiLCAiZ3JlbWxpbi1ncm9vdnkiLCAiYWxpYXNlcyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbICJnIiwgInNvY2lhbCIgXQorICAgIH0sICJzZXNzaW9uIiwgInVuaXF1ZS1zZXNzaW9uLWlkZW50aWZpZXIiLCAiYmluZGluZ3MiLCB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyAieCIsIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICB9IF0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2Vzc2lvbmxlc3NldmFsLXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2Vzc2lvbmxlc3NldmFsLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzlhODA3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9ubGVzc2V2YWwtdjFkMC5qc29uCkBAIC0wLDAgKzEsMTIgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJnLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9ubGVzc2V2YWwtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9ubGVzc2V2YWwtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjOWE4MDcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Nlc3Npb25sZXNzZXZhbC12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSwxMiBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogImcuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IDEKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Nlc3Npb25sZXNzZXZhbC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2Vzc2lvbmxlc3NldmFsLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxZTJmNmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Nlc3Npb25sZXNzZXZhbC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDE1IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAiZy5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Nlc3Npb25sZXNzZXZhbC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Nlc3Npb25sZXNzZXZhbC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGM4YzhlNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2Vzc2lvbmxlc3NldmFsLXYzZDAuanNvbgpAQCAtMCwwICsxLDE1IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgImdyZW1saW4iLCAiZy5WKHgpIiwgImxhbmd1YWdlIiwgImdyZW1saW4tZ3Jvb3Z5IiwgImJpbmRpbmdzIiwgeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgIngiLCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfSBdCisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OWYwYzZjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYxZDAuanNvbgpAQCAtMCwwICsxLDE1IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAic29jaWFsLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJhbGlhc2VzIiA6IHsKKyAgICAgICJnIiA6ICJzb2NpYWwiCisgICAgfSwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5ZjBjNmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsMTUgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJzb2NpYWwuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImFsaWFzZXMiIDogeworICAgICAgImciIDogInNvY2lhbCIKKyAgICB9LAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmNmE1NGUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxOCBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogInNvY2lhbC5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYWxpYXNlcyIgOiB7CisgICAgICAiZyIgOiAic29jaWFsIgorICAgIH0sCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmMwM2EzNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12M2QwLmpzb24KQEAgLTAsMCArMSwxOCBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgIkB2YWx1ZSIgOiBbICJncmVtbGluIiwgInNvY2lhbC5WKHgpIiwgImxhbmd1YWdlIiwgImdyZW1saW4tZ3Jvb3Z5IiwgImFsaWFzZXMiLCB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyAiZyIsICJzb2NpYWwiIF0KKyAgICB9LCAiYmluZGluZ3MiLCB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyAieCIsIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICB9IF0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2V0LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2V0LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMmRlZWEyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zZXQtdjNkMC5qc29uCkBAIC0wLDAgKzEsNyBAQAoreworICAiQHR5cGUiIDogImc6U2V0IiwKKyAgIkB2YWx1ZSIgOiBbIHsKKyAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICJAdmFsdWUiIDogMQorICB9LCAicGVyc29uIiwgdHJ1ZSBdCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zaG9ydC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2hvcnQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY4ZjVjZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2hvcnQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6SW50MTYiLAorICAiQHZhbHVlIiA6IDEwMAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2hvcnQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zaG9ydC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY4ZjVjZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc2hvcnQtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkludDE2IiwKKyAgIkB2YWx1ZSIgOiAxMDAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3N0YW5kYXJkcmVzdWx0LXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc3RhbmRhcmRyZXN1bHQtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliOTM3MjcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3N0YW5kYXJkcmVzdWx0LXYxZDAuanNvbgpAQCAtMCwwICsxLDUwIEBACit7CisgICJyZXF1ZXN0SWQiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIsCisgICJzdGF0dXMiIDogeworICAgICJtZXNzYWdlIiA6ICIiLAorICAgICJjb2RlIiA6IDIwMCwKKyAgICAiYXR0cmlidXRlcyIgOiB7IH0KKyAgfSwKKyAgInJlc3VsdCIgOiB7CisgICAgImRhdGEiIDogWyB7CisgICAgICAiaWQiIDogMSwKKyAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAiaWQiIDogMCwKKyAgICAgICAgICAidmFsdWUiIDogIm1hcmtvIgorICAgICAgICB9IF0sCisgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAiaWQiIDogNiwKKyAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiAxOTk3LAorICAgICAgICAgICAgImVuZFRpbWUiIDogMjAwMQorICAgICAgICAgIH0KKyAgICAgICAgfSwgeworICAgICAgICAgICJpZCIgOiA3LAorICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDAxLAorICAgICAgICAgICAgImVuZFRpbWUiIDogMjAwNAorICAgICAgICAgIH0KKyAgICAgICAgfSwgeworICAgICAgICAgICJpZCIgOiA4LAorICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDUKKyAgICAgICAgICB9CisgICAgICAgIH0sIHsKKyAgICAgICAgICAiaWQiIDogOSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDUKKyAgICAgICAgICB9CisgICAgICAgIH0gXQorICAgICAgfQorICAgIH0gXSwKKyAgICAibWV0YSIgOiB7IH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc3RhbmRhcmRyZXN1bHQtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3N0YW5kYXJkcmVzdWx0LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1N2M2ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3N0YW5kYXJkcmVzdWx0LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTExIEBACit7CisgICJyZXF1ZXN0SWQiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIsCisgICJzdGF0dXMiIDogeworICAgICJtZXNzYWdlIiA6ICIiLAorICAgICJjb2RlIiA6IDIwMCwKKyAgICAiYXR0cmlidXRlcyIgOiB7IH0KKyAgfSwKKyAgInJlc3VsdCIgOiB7CisgICAgImRhdGEiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTk3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0gXSwKKyAgICAibWV0YSIgOiB7IH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc3RhbmRhcmRyZXN1bHQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS9zdGFuZGFyZHJlc3VsdC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGZjYTQwMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvc3RhbmRhcmRyZXN1bHQtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTIwIEBACit7CisgICJyZXF1ZXN0SWQiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIsCisgICJzdGF0dXMiIDogeworICAgICJtZXNzYWdlIiA6ICIiLAorICAgICJjb2RlIiA6IDIwMCwKKyAgICAiYXR0cmlidXRlcyIgOiB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyBdCisgICAgfQorICB9LAorICAicmVzdWx0IiA6IHsKKyAgICAiZGF0YSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgICAiQHZhbHVlIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgICB9LAorICAgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBdLAorICAgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW4gZGllZ28iLAorICAgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5OTcKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBjcnV6IiwKKyAgICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBmZSIsCisgICAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9LAorICAgICJtZXRhIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbIF0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3QtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3QtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTY5Mzk4MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlQiLAorICAiQHZhbHVlIiA6ICJsYWJlbCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3QtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS90LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjkzOTgzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS90LXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlQiLAorICAiQHZhbHVlIiA6ICJsYWJlbCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3RleHRwLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS90ZXh0cC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODIwOTg5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS90ZXh0cC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDcgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlRleHRQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAiY29udGFpbmluZyIsCisgICAgInZhbHVlIiA6ICJhcmsiCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3RleHRwLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdGV4dHAtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4MjA5ODkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3RleHRwLXYzZDAuanNvbgpAQCAtMCwwICsxLDcgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlRleHRQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAiY29udGFpbmluZyIsCisgICAgInZhbHVlIiA6ICJhcmsiCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3RpbWVzdGFtcC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdGltZXN0YW1wLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjYTBlMTcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3RpbWVzdGFtcC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlRpbWVzdGFtcCIsCisgICJAdmFsdWUiIDogMTQ4MTc1MDA3NjI5NQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdGltZXN0YW1wLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdGltZXN0YW1wLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2EwZTE3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS90aW1lc3RhbXAtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6VGltZXN0YW1wIiwKKyAgIkB2YWx1ZSIgOiAxNDgxNzUwMDc2Mjk1Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS90aW5rZXJncmFwaC12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3RpbmtlcmdyYXBoLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzcxOWY2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS90aW5rZXJncmFwaC12MWQwLmpzb24KQEAgLTAsMCArMSwzMTMgQEAKK3sKKyAgInZlcnRpY2VzIiA6IFsgeworICAgICJpZCIgOiAxLAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDAsCisgICAgICAgICJ2YWx1ZSIgOiAibWFya28iCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiA2LAorICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTcsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwMQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA3LAorICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDAxLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDQKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogOCwKKyAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDQsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA5LAorICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogNywKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiAxLAorICAgICAgICAidmFsdWUiIDogInN0ZXBoZW4iCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiAxMCwKKyAgICAgICAgInZhbHVlIiA6ICJjZW50cmV2aWxsZSIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTAsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwMAorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxMSwKKyAgICAgICAgInZhbHVlIiA6ICJkdWxsZXMiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDAwLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDYKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTIsCisgICAgICAgICJ2YWx1ZSIgOiAicHVyY2VsbHZpbGxlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNgorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogOCwKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiAyLAorICAgICAgICAidmFsdWUiIDogIm1hdHRoaWFzIgorICAgICAgfSBdLAorICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAiaWQiIDogMTMsCisgICAgICAgICJ2YWx1ZSIgOiAiYnJlbWVuIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA3CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE0LAorICAgICAgICAidmFsdWUiIDogImJhbHRpbW9yZSIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDcsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAxMQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxNSwKKyAgICAgICAgInZhbHVlIiA6ICJvYWtsYW5kIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAxMSwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDE0CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE2LAorICAgICAgICAidmFsdWUiIDogInNlYXR0bGUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDE0CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiA5LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDMsCisgICAgICAgICJ2YWx1ZSIgOiAiZGFuaWVsIgorICAgICAgfSBdLAorICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAiaWQiIDogMTcsCisgICAgICAgICJ2YWx1ZSIgOiAic3ByZW1iZXJnIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMTk4MiwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE4LAorICAgICAgICAidmFsdWUiIDogImthaXNlcnNsYXV0ZXJuIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNSwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA5CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE5LAorICAgICAgICAidmFsdWUiIDogImFhY2hlbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDkKKyAgICAgICAgfQorICAgICAgfSBdCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDEwLAorICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogNCwKKyAgICAgICAgInZhbHVlIiA6ICJncmVtbGluIgorICAgICAgfSBdCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDExLAorICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogNSwKKyAgICAgICAgInZhbHVlIiA6ICJ0aW5rZXJncmFwaCIKKyAgICAgIH0gXQorICAgIH0KKyAgfSBdLAorICAiZWRnZXMiIDogWyB7CisgICAgImlkIiA6IDEzLAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogMjAwOQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxNCwKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDEsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IDIwMTAKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTUsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDEwLAorICAgICJvdXRWIiA6IDEsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IDQKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTYsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDEsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IDUKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTcsCisgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgInR5cGUiIDogImVkZ2UiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiAyMDEwCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE4LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogNywKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogMjAxMQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxOSwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogNywKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogNQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyMCwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogNywKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogNAorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyMSwKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDEwLAorICAgICJvdXRWIiA6IDgsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IDIwMTIKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjIsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDEwLAorICAgICJvdXRWIiA6IDgsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IDMKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjMsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDgsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IDMKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjQsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDEwLAorICAgICJvdXRWIiA6IDksCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IDUKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjUsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDksCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IDMKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjYsCisgICAgImxhYmVsIiA6ICJ0cmF2ZXJzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiAxMAorICB9IF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3RpbmtlcmdyYXBoLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdGlua2VyZ3JhcGgtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0YWQwNjEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3RpbmtlcmdyYXBoLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxLDM1MiBAQAoreworICAidmVydGljZXMiIDogWyB7CisgICAgImlkIiA6IDEsCisgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogMCwKKyAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgImlkIiA6IDYsCisgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTcsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwMQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA3LAorICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwMSwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA0CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDgsCisgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDksCisgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogNywKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiAxLAorICAgICAgICAidmFsdWUiIDogInN0ZXBoZW4iLAorICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiAxMCwKKyAgICAgICAgInZhbHVlIiA6ICJjZW50cmV2aWxsZSIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAxOTkwLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDAKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTEsCisgICAgICAgICJ2YWx1ZSIgOiAiZHVsbGVzIiwKKyAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDAsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNgorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxMiwKKyAgICAgICAgInZhbHVlIiA6ICJwdXJjZWxsdmlsbGUiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNgorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogOCwKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiAyLAorICAgICAgICAidmFsdWUiIDogIm1hdHRoaWFzIiwKKyAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgfSBdLAorICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAiaWQiIDogMTMsCisgICAgICAgICJ2YWx1ZSIgOiAiYnJlbWVuIiwKKyAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDQsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNworICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxNCwKKyAgICAgICAgInZhbHVlIiA6ICJiYWx0aW1vcmUiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNywKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDExCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE1LAorICAgICAgICAidmFsdWUiIDogIm9ha2xhbmQiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAxMSwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDE0CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE2LAorICAgICAgICAidmFsdWUiIDogInNlYXR0bGUiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAxNAorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogOSwKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiAzLAorICAgICAgICAidmFsdWUiIDogImRhbmllbCIsCisgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgImlkIiA6IDE3LAorICAgICAgICAidmFsdWUiIDogInNwcmVtYmVyZyIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAxOTgyLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDUKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTgsCisgICAgICAgICJ2YWx1ZSIgOiAia2Fpc2Vyc2xhdXRlcm4iLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNSwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA5CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE5LAorICAgICAgICAidmFsdWUiIDogImFhY2hlbiIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA5CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxMCwKKyAgICAibGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDQsCisgICAgICAgICJ2YWx1ZSIgOiAiZ3JlbWxpbiIsCisgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxMSwKKyAgICAibGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDUsCisgICAgICAgICJ2YWx1ZSIgOiAidGlua2VyZ3JhcGgiLAorICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICB9IF0KKyAgICB9CisgIH0gXSwKKyAgImVkZ2VzIiA6IFsgeworICAgICJpZCIgOiAxMywKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogeworICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICJ2YWx1ZSIgOiAyMDA5CisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE0LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiAxLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgInZhbHVlIiA6IDIwMTAKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTUsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiA0CisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE2LAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDEsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAidmFsdWUiIDogNQorICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxNywKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogNywKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogeworICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICJ2YWx1ZSIgOiAyMDEwCisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE4LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgInZhbHVlIiA6IDIwMTEKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTksCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogNywKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiA1CisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDIwLAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDcsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAidmFsdWUiIDogNAorICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyMSwKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogOCwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogeworICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICJ2YWx1ZSIgOiAyMDEyCisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDIyLAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDEwLAorICAgICJvdXRWIiA6IDgsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAidmFsdWUiIDogMworICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyMywKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiA4LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJza2lsbCIgOiB7CisgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgInZhbHVlIiA6IDMKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjQsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogOSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiA1CisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDI1LAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDksCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAidmFsdWUiIDogMworICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyNiwKKyAgICAibGFiZWwiIDogInRyYXZlcnNlcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogMTAKKyAgfSBdCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS90aW5rZXJncmFwaC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdGlua2VyZ3JhcGgtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjRlOTVlZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdGlua2VyZ3JhcGgtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw4MjkgQEAKK3sKKyAgIkB0eXBlIiA6ICJ0aW5rZXI6Z3JhcGgiLAorICAiQHZhbHVlIiA6IHsKKyAgICAidmVydGljZXMiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTk3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzdGVwaGVuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiY2VudHJldmlsbGUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5MAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJkdWxsZXMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTIKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJwdXJjZWxsdmlsbGUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogIm1hdHRoaWFzIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEzCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJlbWVuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDcKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE0CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYmFsdGltb3JlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDcKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTEKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE1CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAib2FrbGFuZCIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDExCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDE0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNlYXR0bGUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxNAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImRhbmllbCIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxNworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNwcmVtYmVyZyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTgyCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImthaXNlcnNsYXV0ZXJuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYWFjaGVuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJncmVtbGluIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInRpbmtlcmdyYXBoIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSBdLAorICAgICJlZGdlcyIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwOQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE0CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDEwCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTUKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE2CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDUKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxNworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE4CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDExCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTkKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDIwCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyMQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMgorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDIyCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDMKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyMworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAzCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjQKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDI1CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDMKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyNgorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInRyYXZlcnNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdGlua2VyZ3JhcGgtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS90aW5rZXJncmFwaC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjRlOTVlZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdGlua2VyZ3JhcGgtdjNkMC5qc29uCkBAIC0wLDAgKzEsODI5IEBACit7CisgICJAdHlwZSIgOiAidGlua2VyOmdyYXBoIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInZlcnRpY2VzIiA6IFsgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDYKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW4gZGllZ28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5NworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImJydXNzZWxzIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBmZSIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic3RlcGhlbiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImNlbnRyZXZpbGxlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5OTAKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDAKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiZHVsbGVzIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDAKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDYKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEyCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAicHVyY2VsbHZpbGxlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDYKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJtYXR0aGlhcyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImJyZW1lbiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA3CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxNAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImJhbHRpbW9yZSIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDExCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxNQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogIm9ha2xhbmQiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxNAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTYKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzZWF0dGxlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDMKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJkYW5pZWwiLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTcKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzcHJlbWJlcmciLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk4MgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTgKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJrYWlzZXJzbGF1dGVybiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA5CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImFhY2hlbiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA5CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiZ3JlbWxpbiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDUKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJ0aW5rZXJncmFwaCIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0gXSwKKyAgICAiZWRnZXMiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTMKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2luY2UiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxNAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE1CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxNgorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA1CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTcKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2luY2UiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTAKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxOAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE5CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDUKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyMAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2luY2UiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTIKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyMgorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAzCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjMKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDI0CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDUKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyNQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAzCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjYKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ0cmF2ZXJzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9CisgICAgICB9CisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3RyYXZlcnNhbG1ldHJpY3MtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3RyYXZlcnNhbG1ldHJpY3MtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmRkMThhNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdHJhdmVyc2FsbWV0cmljcy12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDExNCBAQAoreworICAiQHR5cGUiIDogImc6VHJhdmVyc2FsTWV0cmljcyIsCisgICJAdmFsdWUiIDogeworICAgICJkdXIiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAiQHZhbHVlIiA6IDAuMDA0CisgICAgfSwKKyAgICAibWV0cmljcyIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiZHVyIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgIH0sCisgICAgICAgICJjb3VudHMiIDogeworICAgICAgICAgICJ0cmF2ZXJzZXJDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICAgICAgfSwKKyAgICAgICAgICAiZWxlbWVudENvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJuYW1lIiA6ICJUaW5rZXJHcmFwaFN0ZXAodmVydGV4LFt+bGFiZWwuZXEocGVyc29uKV0pIiwKKyAgICAgICAgImFubm90YXRpb25zIiA6IHsKKyAgICAgICAgICAicGVyY2VudER1ciIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImlkIiA6ICI3LjAuMCgpIgorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiZHVyIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgIH0sCisgICAgICAgICJjb3VudHMiIDogeworICAgICAgICAgICJ0cmF2ZXJzZXJDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICAgIH0sCisgICAgICAgICAgImVsZW1lbnRDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIm5hbWUiIDogIlZlcnRleFN0ZXAoT1VULHZlcnRleCkiLAorICAgICAgICAiYW5ub3RhdGlvbnMiIDogeworICAgICAgICAgICJwZXJjZW50RHVyIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaWQiIDogIjIuMC4wKCkiCisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJkdXIiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgfSwKKyAgICAgICAgImNvdW50cyIgOiB7CisgICAgICAgICAgInRyYXZlcnNlckNvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICB9LAorICAgICAgICAgICJlbGVtZW50Q291bnQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIm5hbWUiIDogIlZlcnRleFN0ZXAoT1VULHZlcnRleCkiLAorICAgICAgICAiYW5ub3RhdGlvbnMiIDogeworICAgICAgICAgICJwZXJjZW50RHVyIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaWQiIDogIjMuMC4wKCkiCisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJkdXIiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgfSwKKyAgICAgICAgImNvdW50cyIgOiB7CisgICAgICAgICAgInRyYXZlcnNlckNvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgICB9LAorICAgICAgICAgICJlbGVtZW50Q291bnQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIm5hbWUiIDogIlRyZWVTdGVwIiwKKyAgICAgICAgImFubm90YXRpb25zIiA6IHsKKyAgICAgICAgICAicGVyY2VudER1ciIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImlkIiA6ICI0LjAuMCgpIgorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS90cmF2ZXJzYWxtZXRyaWNzLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdHJhdmVyc2FsbWV0cmljcy12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDZmNzYzNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdHJhdmVyc2FsbWV0cmljcy12M2QwLmpzb24KQEAgLTAsMCArMSwxMDkgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlRyYXZlcnNhbE1ldHJpY3MiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgImR1ciIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgIkB2YWx1ZSIgOiAwLjAwNAorICAgIH0sICJtZXRyaWNzIiwgeworICAgICAgIkB0eXBlIiA6ICJnOkxpc3QiLAorICAgICAgIkB2YWx1ZSIgOiBbIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IFsgImR1ciIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgICAgICAgIH0sICJjb3VudHMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAidHJhdmVyc2VyQ291bnQiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgICAgICAgfSwgImVsZW1lbnRDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICAgICAgICB9IF0KKyAgICAgICAgICB9LCAibmFtZSIsICJUaW5rZXJHcmFwaFN0ZXAodmVydGV4LFt+bGFiZWwuZXEocGVyc29uKV0pIiwgImFubm90YXRpb25zIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IFsgInBlcmNlbnREdXIiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJpZCIsICI3LjAuMCgpIiBdCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IFsgImR1ciIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgICAgICAgIH0sICJjb3VudHMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAidHJhdmVyc2VyQ291bnQiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMTMKKyAgICAgICAgICAgIH0sICJlbGVtZW50Q291bnQiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMTMKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJuYW1lIiwgIlZlcnRleFN0ZXAoT1VULHZlcnRleCkiLCAiYW5ub3RhdGlvbnMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAicGVyY2VudER1ciIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgImlkIiwgIjIuMC4wKCkiIF0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgICAgfSwgImNvdW50cyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJ0cmF2ZXJzZXJDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICB9LCAiZWxlbWVudENvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJuYW1lIiwgIlZlcnRleFN0ZXAoT1VULHZlcnRleCkiLCAiYW5ub3RhdGlvbnMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAicGVyY2VudER1ciIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgImlkIiwgIjMuMC4wKCkiIF0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgICAgfSwgImNvdW50cyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJ0cmF2ZXJzZXJDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgICAgICB9LCAiZWxlbWVudENvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJuYW1lIiwgIlRyZWVTdGVwIiwgImFubm90YXRpb25zIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IFsgInBlcmNlbnREdXIiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJpZCIsICI0LjAuMCgpIiBdCisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS90cmF2ZXJzZXItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3RyYXZlcnNlci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTlhMjllCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS90cmF2ZXJzZXItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMDkgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlRyYXZlcnNlciIsCisgICJAdmFsdWUiIDogeworICAgICJidWxrIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9LAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTk3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdHJhdmVyc2VyLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdHJhdmVyc2VyLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTlhMjllCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS90cmF2ZXJzZXItdjNkMC5qc29uCkBAIC0wLDAgKzEsMTA5IEBACit7CisgICJAdHlwZSIgOiAiZzpUcmF2ZXJzZXIiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiYnVsayIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfSwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDYKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW4gZGllZ28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5NworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImJydXNzZWxzIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBmZSIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3V1aWQtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS91dWlkLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzZmZjk2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS91dWlkLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxIEBACisiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdXVpZC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdXVpZC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2YwOWYwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS91dWlkLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6VVVJRCIsCisgICJAdmFsdWUiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3V1aWQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS91dWlkLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2YwOWYwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS91dWlkLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlVVSUQiLAorICAiQHZhbHVlIiA6ICI0MWQyZTI4YS0yMGE0LTRhYjAtYjM3OS1kODEwZGVkZTM3ODYiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS92ZXJ0ZXgtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS92ZXJ0ZXgtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4ODVmNTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3ZlcnRleC12MWQwLmpzb24KQEAgLTAsMCArMSwzOSBAQAoreworICAiaWQiIDogMSwKKyAgImxhYmVsIiA6ICJwZXJzb24iLAorICAidHlwZSIgOiAidmVydGV4IiwKKyAgInByb3BlcnRpZXMiIDogeworICAgICJuYW1lIiA6IFsgeworICAgICAgImlkIiA6IDAsCisgICAgICAidmFsdWUiIDogIm1hcmtvIgorICAgIH0gXSwKKyAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAiaWQiIDogNiwKKyAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgInN0YXJ0VGltZSIgOiAxOTk3LAorICAgICAgICAiZW5kVGltZSIgOiAyMDAxCisgICAgICB9CisgICAgfSwgeworICAgICAgImlkIiA6IDcsCisgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDEsCisgICAgICAgICJlbmRUaW1lIiA6IDIwMDQKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiaWQiIDogOCwKKyAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDQsCisgICAgICAgICJlbmRUaW1lIiA6IDIwMDUKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiaWQiIDogOSwKKyAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDUKKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdmVydGV4LXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdmVydGV4LXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTYxNTVmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS92ZXJ0ZXgtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsNDMgQEAKK3sKKyAgImlkIiA6IDEsCisgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgInByb3BlcnRpZXMiIDogeworICAgICJuYW1lIiA6IFsgeworICAgICAgImlkIiA6IDAsCisgICAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICB9IF0sCisgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgImlkIiA6IDYsCisgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgInN0YXJ0VGltZSIgOiAxOTk3LAorICAgICAgICAiZW5kVGltZSIgOiAyMDAxCisgICAgICB9CisgICAgfSwgeworICAgICAgImlkIiA6IDcsCisgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICJzdGFydFRpbWUiIDogMjAwMSwKKyAgICAgICAgImVuZFRpbWUiIDogMjAwNAorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJpZCIgOiA4LAorICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA0LAorICAgICAgICAiZW5kVGltZSIgOiAyMDA1CisgICAgICB9CisgICAgfSwgeworICAgICAgImlkIiA6IDksCisgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDUKKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdmVydGV4LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS92ZXJ0ZXgtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjEwMjIzMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdmVydGV4LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTAwIEBACit7CisgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiaWQiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0sCisgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMAorICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICB9CisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA2CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5NworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3ZlcnRleC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3ZlcnRleC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjEwMjIzMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdmVydGV4LXYzZDAuanNvbgpAQCAtMCwwICsxLDEwMCBAQAoreworICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImlkIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgICB9LAorICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgfQorICAgICAgfSBdLAorICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJzYW4gZGllZ28iLAorICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5OTcKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBjcnV6IiwKKyAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgICB9LAorICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBmZSIsCisgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSBdCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS92ZXJ0ZXhwcm9wZXJ0eS12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3ZlcnRleHByb3BlcnR5LXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDAyNWE4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS92ZXJ0ZXhwcm9wZXJ0eS12MWQwLmpzb24KQEAgLTAsMCArMSw1IEBACit7CisgICJpZCIgOiAwLAorICAidmFsdWUiIDogIm1hcmtvIiwKKyAgImxhYmVsIiA6ICJuYW1lIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdmVydGV4cHJvcGVydHktdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS92ZXJ0ZXhwcm9wZXJ0eS12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQwMjVhOAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdmVydGV4cHJvcGVydHktdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsNSBAQAoreworICAiaWQiIDogMCwKKyAgInZhbHVlIiA6ICJtYXJrbyIsCisgICJsYWJlbCIgOiAibmFtZSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3ZlcnRleHByb3BlcnR5LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS92ZXJ0ZXhwcm9wZXJ0eS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjE4NGIxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS92ZXJ0ZXhwcm9wZXJ0eS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDExIEBACit7CisgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICJAdmFsdWUiIDogeworICAgICJpZCIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgIkB2YWx1ZSIgOiAwCisgICAgfSwKKyAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAibGFiZWwiIDogIm5hbWUiCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3ZlcnRleHByb3BlcnR5LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvdmVydGV4cHJvcGVydHktdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmMTg0YjEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3ZlcnRleHByb3BlcnR5LXYzZDAuanNvbgpAQCAtMCwwICsxLDExIEBACit7CisgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICJAdmFsdWUiIDogeworICAgICJpZCIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgIkB2YWx1ZSIgOiAwCisgICAgfSwKKyAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAibGFiZWwiIDogIm5hbWUiCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3llYXItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3llYXItdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY0MjBiYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEveWVhci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpZZWFyIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3llYXItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS95ZWFyLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjQyMGJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS95ZWFyLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpZZWFyIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3llYXJtb250aC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEveWVhcm1vbnRoLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4YTVlMjcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3llYXJtb250aC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpZZWFyTW9udGgiLAorICAiQHZhbHVlIiA6ICIyMDE2LTA2IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEveWVhcm1vbnRoLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEveWVhcm1vbnRoLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OGE1ZTI3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS95ZWFybW9udGgtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlllYXJNb250aCIsCisgICJAdmFsdWUiIDogIjIwMTYtMDYiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS96b25lZGRhdGV0aW1lLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS96b25lZGRhdGV0aW1lLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2N2ZjNDcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3pvbmVkZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Wm9uZWREYXRlVGltZSIsCisgICJAdmFsdWUiIDogIjIwMTYtMTItMjNUMTI6MTI6MjQuMDAwMDAwMDM2KzAyOjAwW0dNVCswMjowMF0iCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS96b25lZGRhdGV0aW1lLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvem9uZWRkYXRldGltZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY3ZmM0NwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzEvem9uZWRkYXRldGltZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Wm9uZWREYXRlVGltZSIsCisgICJAdmFsdWUiIDogIjIwMTYtMTItMjNUMTI6MTI6MjQuMDAwMDAwMDM2KzAyOjAwW0dNVCswMjowMF0iCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS96b25lb2Zmc2V0LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS96b25lb2Zmc2V0LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1OTE3OTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3pvbmVvZmZzZXQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Wm9uZU9mZnNldCIsCisgICJAdmFsdWUiIDogIiswMzowNjowOSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8xL3pvbmVvZmZzZXQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS96b25lb2Zmc2V0LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTkxNzk0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMS96b25lb2Zmc2V0LXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpab25lT2Zmc2V0IiwKKyAgIkB2YWx1ZSIgOiAiKzAzOjA2OjA5IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGM1YjgyYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjFkMC5qc29uCkBAIC0wLDAgKzEsMTIgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IiwKKyAgInN0YXR1cyIgOiB7CisgICAgIm1lc3NhZ2UiIDogIiIsCisgICAgImNvZGUiIDogNDA3LAorICAgICJhdHRyaWJ1dGVzIiA6IHsgfQorICB9LAorICAicmVzdWx0IiA6IHsKKyAgICAiZGF0YSIgOiBudWxsLAorICAgICJtZXRhIiA6IHsgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzViODJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSwxMiBAQAoreworICAicmVxdWVzdElkIiA6ICI0MWQyZTI4YS0yMGE0LTRhYjAtYjM3OS1kODEwZGVkZTM3ODYiLAorICAic3RhdHVzIiA6IHsKKyAgICAibWVzc2FnZSIgOiAiIiwKKyAgICAiY29kZSIgOiA0MDcsCisgICAgImF0dHJpYnV0ZXMiIDogeyB9CisgIH0sCisgICJyZXN1bHQiIDogeworICAgICJkYXRhIiA6IG51bGwsCisgICAgIm1ldGEiIDogeyB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzViODJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDEyIEBACit7CisgICJyZXF1ZXN0SWQiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIsCisgICJzdGF0dXMiIDogeworICAgICJtZXNzYWdlIiA6ICIiLAorICAgICJjb2RlIiA6IDQwNywKKyAgICAiYXR0cmlidXRlcyIgOiB7IH0KKyAgfSwKKyAgInJlc3VsdCIgOiB7CisgICAgImRhdGEiIDogbnVsbCwKKyAgICAibWV0YSIgOiB7IH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDE3MzRjNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTggQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IiwKKyAgInN0YXR1cyIgOiB7CisgICAgIm1lc3NhZ2UiIDogIiIsCisgICAgImNvZGUiIDogNDA3LAorICAgICJhdHRyaWJ1dGVzIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbIF0KKyAgICB9CisgIH0sCisgICJyZXN1bHQiIDogeworICAgICJkYXRhIiA6IG51bGwsCisgICAgIm1ldGEiIDogeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgXQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYXV0aGVudGljYXRpb25yZXNwb25zZS12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzOGUxZmQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjFkMC5qc29uCkBAIC0wLDAgKzEsOSBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImF1dGhlbnRpY2F0aW9uIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJzYXNsTWVjaGFuaXNtIiA6ICJQTEFJTiIsCisgICAgInNhc2wiIDogIkFITjBaWEJvY0dobGJnQndZWE56ZDI5eVpBPT0iCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzhlMWZkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxLDkgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJhdXRoZW50aWNhdGlvbiIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAic2FzbE1lY2hhbmlzbSIgOiAiUExBSU4iLAorICAgICJzYXNsIiA6ICJBSE4wWlhCb2NHaGxiZ0J3WVhOemQyOXlaQT09IgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzOGUxZmQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw5IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiYXV0aGVudGljYXRpb24iLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgInNhc2xNZWNoYW5pc20iIDogIlBMQUlOIiwKKyAgICAic2FzbCIgOiAiQUhOMFpYQm9jR2hsYmdCd1lYTnpkMjl5WkE9PSIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYXV0aGVudGljYXRpb25yZXNwb25zZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhY2VjYTIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjNkMC5qc29uCkBAIC0wLDAgKzEsOSBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImF1dGhlbnRpY2F0aW9uIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAic2FzbE1lY2hhbmlzbSIsICJQTEFJTiIsICJzYXNsIiwgIkFITjBaWEJvY0dobGJnQndZWE56ZDI5eVpBPT0iIF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYmFycmllci12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYmFycmllci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZGRjY2RkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9iYXJyaWVyLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6QmFycmllciIsCisgICJAdmFsdWUiIDogIm5vcm1TYWNrIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYmFycmllci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2JhcnJpZXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkZGNjZGQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2JhcnJpZXItdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6QmFycmllciIsCisgICJAdmFsdWUiIDogIm5vcm1TYWNrIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYmlnZGVjaW1hbC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYmlnZGVjaW1hbC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzUzMzdjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9iaWdkZWNpbWFsLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJpZ0RlY2ltYWwiLAorICAiQHZhbHVlIiA6IDEyMzQ1Njc4OTk4NzY1NDMyMTEyMzQ1Njc4OTk4NzY1NDMyMQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYmlnZGVjaW1hbC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2JpZ2RlY2ltYWwtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3NTMzN2MKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2JpZ2RlY2ltYWwtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJpZ0RlY2ltYWwiLAorICAiQHZhbHVlIiA6IDEyMzQ1Njc4OTk4NzY1NDMyMTEyMzQ1Njc4OTk4NzY1NDMyMQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYmlnaW50ZWdlci12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYmlnaW50ZWdlci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OGU2MTE0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9iaWdpbnRlZ2VyLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJpZ0ludGVnZXIiLAorICAiQHZhbHVlIiA6IDEyMzQ1Njc4OTk4NzY1NDMyMTEyMzQ1Njc4OTk4NzY1NDMyMQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYmlnaW50ZWdlci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2JpZ2ludGVnZXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4ZTYxMTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2JpZ2ludGVnZXItdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJpZ0ludGVnZXIiLAorICAiQHZhbHVlIiA6IDEyMzQ1Njc4OTk4NzY1NDMyMTEyMzQ1Njc4OTk4NzY1NDMyMQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYmluZGluZy12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYmluZGluZy12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzliOGM3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9iaW5kaW5nLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkJpbmRpbmciLAorICAiQHZhbHVlIiA6IHsKKyAgICAia2V5IiA6ICJ4IiwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYmluZGluZy12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2JpbmRpbmctdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3OWI4YzcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2JpbmRpbmctdjNkMC5qc29uCkBAIC0wLDAgKzEsMTAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkJpbmRpbmciLAorICAiQHZhbHVlIiA6IHsKKyAgICAia2V5IiA6ICJ4IiwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYnVsa3NldC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYnVsa3NldC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODQ0OTc1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9idWxrc2V0LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEgQEAKK1sgIm1hcmtvIiwgImpvc2giLCAiam9zaCIgXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYnVsa3NldC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2J1bGtzZXQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyMTZhMzYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2J1bGtzZXQtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkJ1bGtTZXQiLAorICAiQHZhbHVlIiA6IFsgIm1hcmtvIiwgeworICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgIkB2YWx1ZSIgOiAxCisgIH0sICJqb3NoIiwgeworICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgIkB2YWx1ZSIgOiAyCisgIH0gXQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYnl0ZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYnl0ZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Nzk2MjViCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9ieXRlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJ5dGUiLAorICAiQHZhbHVlIiA6IDEKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2J5dGUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9ieXRlLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Nzk2MjViCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9ieXRlLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpCeXRlIiwKKyAgIkB2YWx1ZSIgOiAxCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9ieXRlYnVmZmVyLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9ieXRlYnVmZmVyLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3MjQxMTUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2J5dGVidWZmZXItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Qnl0ZUJ1ZmZlciIsCisgICJAdmFsdWUiIDogImMyOXRaU0JpZVhSbGN5Qm1iM0lnZVc5MSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2J5dGVidWZmZXItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9ieXRlYnVmZmVyLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzI0MTE1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9ieXRlYnVmZmVyLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpCeXRlQnVmZmVyIiwKKyAgIkB2YWx1ZSIgOiAiYzI5dFpTQmllWFJsY3lCbWIzSWdlVzkxIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYnl0ZWNvZGUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2J5dGVjb2RlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2OWQyNzcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2J5dGVjb2RlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNiBAQAoreworICAiQHR5cGUiIDogImc6Qnl0ZWNvZGUiLAorICAiQHZhbHVlIiA6IHsKKyAgICAic3RlcCIgOiBbIFsgIlYiIF0sIFsgImhhc0xhYmVsIiwgInBlcnNvbiIgXSwgWyAib3V0IiBdLCBbICJpbiIgXSwgWyAidHJlZSIgXSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2J5dGVjb2RlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvYnl0ZWNvZGUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2OWQyNzcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2J5dGVjb2RlLXYzZDAuanNvbgpAQCAtMCwwICsxLDYgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkJ5dGVjb2RlIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInN0ZXAiIDogWyBbICJWIiBdLCBbICJoYXNMYWJlbCIsICJwZXJzb24iIF0sIFsgIm91dCIgXSwgWyAiaW4iIF0sIFsgInRyZWUiIF0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9jYXJkaW5hbGl0eS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvY2FyZGluYWxpdHktdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM0ZTY0ZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvY2FyZGluYWxpdHktdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpDYXJkaW5hbGl0eSIsCisgICJAdmFsdWUiIDogImxpc3QiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9jYXJkaW5hbGl0eS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2NhcmRpbmFsaXR5LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzRlNjRlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9jYXJkaW5hbGl0eS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpDYXJkaW5hbGl0eSIsCisgICJAdmFsdWUiIDogImxpc3QiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9jaGFyLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9jaGFyLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmMjdlOWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2NoYXItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Q2hhciIsCisgICJAdmFsdWUiIDogIngiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9jaGFyLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvY2hhci12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGYyN2U5ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvY2hhci12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Q2hhciIsCisgICJAdmFsdWUiIDogIngiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9jbGFzcy12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvY2xhc3MtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBmMTVhMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvY2xhc3MtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpDbGFzcyIsCisgICJAdmFsdWUiIDogImphdmEuaW8uRmlsZSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2NsYXNzLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvY2xhc3MtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwZjE1YTIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2NsYXNzLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkNsYXNzIiwKKyAgIkB2YWx1ZSIgOiAiamF2YS5pby5GaWxlIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvY29sdW1uLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9jb2x1bW4tdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIzYTU2ZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvY29sdW1uLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6Q29sdW1uIiwKKyAgIkB2YWx1ZSIgOiAia2V5cyIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2NvbHVtbi12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2NvbHVtbi12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIzYTU2ZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvY29sdW1uLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkNvbHVtbiIsCisgICJAdmFsdWUiIDogImtleXMiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9kYXRlLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvZGF0ZS12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNiNzFhMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvZGF0ZS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSBAQAorMTQ4MTc1MDA3NjI5NQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvZGF0ZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvZGF0ZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjQwMDdhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9kYXRlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6RGF0ZSIsCisgICJAdmFsdWUiIDogMTQ4MTc1MDA3NjI5NQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvZGF0ZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2RhdGUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmNDAwN2EKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2RhdGUtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6RGF0ZSIsCisgICJAdmFsdWUiIDogMTQ4MTc1MDA3NjI5NQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvZGlyZWN0aW9uLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9kaXJlY3Rpb24tdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzhjYjdlNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvZGlyZWN0aW9uLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6RGlyZWN0aW9uIiwKKyAgIkB2YWx1ZSIgOiAiT1VUIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvZGlyZWN0aW9uLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvZGlyZWN0aW9uLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGNiN2U0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9kaXJlY3Rpb24tdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6RGlyZWN0aW9uIiwKKyAgIkB2YWx1ZSIgOiAiT1VUIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvZG91YmxlLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvZG91YmxlLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzcyZTYyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9kb3VibGUtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEgQEAKKzEwMC4wClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9kb3VibGUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2RvdWJsZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YWU0OTY0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9kb3VibGUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAiQHZhbHVlIiA6IDEwMC4wCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9kb3VibGUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9kb3VibGUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhZTQ5NjQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2RvdWJsZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAiQHZhbHVlIiA6IDEwMC4wCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9kdXJhdGlvbi12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvZHVyYXRpb24tdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVjMGNlOQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvZHVyYXRpb24tdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6RHVyYXRpb24iLAorICAiQHZhbHVlIiA6ICJQVDEyMEgiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9kdXJhdGlvbi12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2R1cmF0aW9uLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWMwY2U5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9kdXJhdGlvbi12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6RHVyYXRpb24iLAorICAiQHZhbHVlIiA6ICJQVDEyMEgiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9lZGdlLXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvZWRnZS12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGY3ZjE2OAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvZWRnZS12MWQwLmpzb24KQEAgLTAsMCArMSwxMiBAQAoreworICAiaWQiIDogMTMsCisgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAidHlwZSIgOiAiZWRnZSIsCisgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAiaW5WIiA6IDEwLAorICAib3V0ViIgOiAxLAorICAicHJvcGVydGllcyIgOiB7CisgICAgInNpbmNlIiA6IDIwMDkKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvZWRnZS12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2VkZ2UtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4ZTczZGIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2VkZ2UtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsMTQgQEAKK3sKKyAgImlkIiA6IDEzLAorICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICJpblYiIDogMTAsCisgICJvdXRWIiA6IDEsCisgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAic2luY2UiIDogeworICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgInZhbHVlIiA6IDIwMDkKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2VkZ2UtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2VkZ2UtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmExYzUyZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvZWRnZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDMyIEBACit7CisgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImlkIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEzCisgICAgfSwKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMTAKKyAgICB9LAorICAgICJvdXRWIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMjAwOQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvZWRnZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2VkZ2UtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhMWM1MmUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2VkZ2UtdjNkMC5qc29uCkBAIC0wLDAgKzEsMzIgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiaWQiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMTMKKyAgICB9LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxMAorICAgIH0sCisgICAgIm91dFYiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0sCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA5CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9mbG9hdC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvZmxvYXQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE3OWFhZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvZmxvYXQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpGbG9hdCIsCisgICJAdmFsdWUiIDogMTAwLjAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2Zsb2F0LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvZmxvYXQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxNzlhYWYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2Zsb2F0LXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkZsb2F0IiwKKyAgIkB2YWx1ZSIgOiAxMDAuMAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvaW5ldGFkZHJlc3MtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2luZXRhZGRyZXNzLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiYTk4YzAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2luZXRhZGRyZXNzLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkluZXRBZGRyZXNzIiwKKyAgIkB2YWx1ZSIgOiAibG9jYWxob3N0IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvaW5ldGFkZHJlc3MtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9pbmV0YWRkcmVzcy12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmJhOThjMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvaW5ldGFkZHJlc3MtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkluZXRBZGRyZXNzIiwKKyAgIkB2YWx1ZSIgOiAibG9jYWxob3N0IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvaW5zdGFudC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvaW5zdGFudC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzQ5NzQxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9pbnN0YW50LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4Okluc3RhbnQiLAorICAiQHZhbHVlIiA6ICIyMDE2LTEyLTE0VDE2OjM5OjE5LjM0OVoiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9pbnN0YW50LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvaW5zdGFudC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzc0OTc0MQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvaW5zdGFudC12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6SW5zdGFudCIsCisgICJAdmFsdWUiIDogIjIwMTYtMTItMTRUMTY6Mzk6MTkuMzQ5WiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2ludGVnZXItdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9pbnRlZ2VyLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDVkN2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9pbnRlZ2VyLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxIEBACisxMDAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2ludGVnZXItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2ludGVnZXItdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzUwY2U3YQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvaW50ZWdlci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgIkB2YWx1ZSIgOiAxMDAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2ludGVnZXItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9pbnRlZ2VyLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTBjZTdhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9pbnRlZ2VyLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgIkB2YWx1ZSIgOiAxMDAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2xhbWJkYS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvbGFtYmRhLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViZTE3OWIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2xhbWJkYS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDggQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkxhbWJkYSIsCisgICJAdmFsdWUiIDogeworICAgICJzY3JpcHQiIDogInsgaXQuZ2V0KCkgfSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImFyZ3VtZW50cyIgOiAxCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2xhbWJkYS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2xhbWJkYS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJlMTc5YgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvbGFtYmRhLXYzZDAuanNvbgpAQCAtMCwwICsxLDggQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkxhbWJkYSIsCisgICJAdmFsdWUiIDogeworICAgICJzY3JpcHQiIDogInsgaXQuZ2V0KCkgfSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImFyZ3VtZW50cyIgOiAxCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2xpc3QtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9saXN0LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzE0ZTJkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9saXN0LXYzZDAuanNvbgpAQCAtMCwwICsxLDcgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkxpc3QiLAorICAiQHZhbHVlIiA6IFsgeworICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgIkB2YWx1ZSIgOiAxCisgIH0sICJwZXJzb24iLCB0cnVlIF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2xvY2FsZGF0ZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvbG9jYWxkYXRlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2ZmI4MWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2xvY2FsZGF0ZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpMb2NhbERhdGUiLAorICAiQHZhbHVlIiA6ICIyMDE2LTAxLTAxIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvbG9jYWxkYXRlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvbG9jYWxkYXRlLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNmZiODFkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9sb2NhbGRhdGUtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkxvY2FsRGF0ZSIsCisgICJAdmFsdWUiIDogIjIwMTYtMDEtMDEiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9sb2NhbGRhdGV0aW1lLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9sb2NhbGRhdGV0aW1lLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkODM2NjgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2xvY2FsZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6TG9jYWxEYXRlVGltZSIsCisgICJAdmFsdWUiIDogIjIwMTYtMDEtMDFUMTI6MzAiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9sb2NhbGRhdGV0aW1lLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvbG9jYWxkYXRldGltZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQ4MzY2OAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvbG9jYWxkYXRldGltZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6TG9jYWxEYXRlVGltZSIsCisgICJAdmFsdWUiIDogIjIwMTYtMDEtMDFUMTI6MzAiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9sb2NhbHRpbWUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2xvY2FsdGltZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZmY2NWE3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9sb2NhbHRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6TG9jYWxUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMTI6MzA6NDUiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9sb2NhbHRpbWUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9sb2NhbHRpbWUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmZjY1YTcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2xvY2FsdGltZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6TG9jYWxUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMTI6MzA6NDUiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9sb25nLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9sb25nLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0YjlhMjMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL2xvbmctdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICJAdmFsdWUiIDogMTAwCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9sb25nLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvbG9uZy12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRiOWEyMwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvbG9uZy12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICJAdmFsdWUiIDogMTAwCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9tYXAtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9tYXAtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhZDU5YzkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL21hcC12M2QwLmpzb24KQEAgLTAsMCArMSwyNSBAQAoreworICAiQHR5cGUiIDogImc6TWFwIiwKKyAgIkB2YWx1ZSIgOiBbIHsKKyAgICAiQHR5cGUiIDogImc6RGF0ZSIsCisgICAgIkB2YWx1ZSIgOiAxNDgxNzUwMDc2Mjk1CisgIH0sICJyZWQiLCB7CisgICAgIkB0eXBlIiA6ICJnOkxpc3QiLAorICAgICJAdmFsdWUiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMgorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDMKKyAgICB9IF0KKyAgfSwgeworICAgICJAdHlwZSIgOiAiZzpEYXRlIiwKKyAgICAiQHZhbHVlIiA6IDE0ODE3NTAwNzYyOTUKKyAgfSwgInRlc3QiLCB7CisgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAiQHZhbHVlIiA6IDEyMworICB9IF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL21ldHJpY3MtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL21ldHJpY3MtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2IxZTk2NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvbWV0cmljcy12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDU0IEBACit7CisgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImR1ciIgOiB7CisgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICB9LAorICAgICJjb3VudHMiIDogeworICAgICAgInRyYXZlcnNlckNvdW50IiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICB9LAorICAgICAgImVsZW1lbnRDb3VudCIgOiB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgfQorICAgIH0sCisgICAgIm5hbWUiIDogIlRpbmtlckdyYXBoU3RlcCh2ZXJ0ZXgsW35sYWJlbC5lcShwZXJzb24pXSkiLAorICAgICJhbm5vdGF0aW9ucyIgOiB7CisgICAgICAicGVyY2VudER1ciIgOiB7CisgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgIH0KKyAgICB9LAorICAgICJpZCIgOiAiNy4wLjAoKSIsCisgICAgIm1ldHJpY3MiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImR1ciIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgICAgICB9LAorICAgICAgICAiY291bnRzIiA6IHsKKyAgICAgICAgICAidHJhdmVyc2VyQ291bnQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgIH0sCisgICAgICAgICAgImVsZW1lbnRDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibmFtZSIgOiAiVmVydGV4U3RlcChPVVQsdmVydGV4KSIsCisgICAgICAgICJhbm5vdGF0aW9ucyIgOiB7CisgICAgICAgICAgInBlcmNlbnREdXIiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJpZCIgOiAiMy4wLjAoKSIKKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvbWV0cmljcy12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL21ldHJpY3MtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2ZTY3OGIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL21ldHJpY3MtdjNkMC5qc29uCkBAIC0wLDAgKzEsNTIgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgImR1ciIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgIH0sICJjb3VudHMiLCB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyAidHJhdmVyc2VyQ291bnQiLCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgfSwgImVsZW1lbnRDb3VudCIsIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICB9IF0KKyAgICB9LCAibmFtZSIsICJUaW5rZXJHcmFwaFN0ZXAodmVydGV4LFt+bGFiZWwuZXEocGVyc29uKV0pIiwgImFubm90YXRpb25zIiwgeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgInBlcmNlbnREdXIiLCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgIH0gXQorICAgIH0sICJpZCIsICI3LjAuMCgpIiwgIm1ldHJpY3MiLCB7CisgICAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgICAiQHZhbHVlIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgICAgfSwgImNvdW50cyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJ0cmF2ZXJzZXJDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICB9LCAiZWxlbWVudENvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJuYW1lIiwgIlZlcnRleFN0ZXAoT1VULHZlcnRleCkiLCAiYW5ub3RhdGlvbnMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAicGVyY2VudER1ciIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgImlkIiwgIjMuMC4wKCkiIF0KKyAgICAgICAgfQorICAgICAgfSBdCisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL21vbnRoZGF5LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9tb250aGRheS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGE1OTE0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9tb250aGRheS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpNb250aERheSIsCisgICJAdmFsdWUiIDogIi0tMDEtMDEiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9tb250aGRheS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL21vbnRoZGF5LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGE1OTE0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9tb250aGRheS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6TW9udGhEYXkiLAorICAiQHZhbHVlIiA6ICItLTAxLTAxIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvb2Zmc2V0ZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL29mZnNldGRhdGV0aW1lLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzZjQ1Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL29mZnNldGRhdGV0aW1lLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4Ok9mZnNldERhdGVUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMjAwNy0xMi0wM1QxMDoxNTozMCswMTowMCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL29mZnNldGRhdGV0aW1lLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvb2Zmc2V0ZGF0ZXRpbWUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzZjQ1Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL29mZnNldGRhdGV0aW1lLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpPZmZzZXREYXRlVGltZSIsCisgICJAdmFsdWUiIDogIjIwMDctMTItMDNUMTA6MTU6MzArMDE6MDAiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9vZmZzZXR0aW1lLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9vZmZzZXR0aW1lLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxMjQ5NTMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL29mZnNldHRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6T2Zmc2V0VGltZSIsCisgICJAdmFsdWUiIDogIjEwOjE1OjMwKzAxOjAwIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvb2Zmc2V0dGltZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL29mZnNldHRpbWUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxMjQ5NTMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL29mZnNldHRpbWUtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4Ok9mZnNldFRpbWUiLAorICAiQHZhbHVlIiA6ICIxMDoxNTozMCswMTowMCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL29wZXJhdG9yLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9vcGVyYXRvci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNGMxNDAwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9vcGVyYXRvci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOk9wZXJhdG9yIiwKKyAgIkB2YWx1ZSIgOiAic3VtIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvb3BlcmF0b3ItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9vcGVyYXRvci12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTRjMTQwMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvb3BlcmF0b3ItdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6T3BlcmF0b3IiLAorICAiQHZhbHVlIiA6ICJzdW0iCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9vcmRlci12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvb3JkZXItdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGJlMDQzMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvb3JkZXItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpPcmRlciIsCisgICJAdmFsdWUiIDogInNodWZmbGUiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9vcmRlci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL29yZGVyLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmUwNDMyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9vcmRlci12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpPcmRlciIsCisgICJAdmFsdWUiIDogInNodWZmbGUiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9wLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9wLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViZGZiM2IKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3AtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogImd0IiwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMAorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3AtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViZGZiM2IKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3AtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJndCIsCisgICAgInZhbHVlIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDAKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3BhbmQtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3BhbmQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzI3MTk1OAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcGFuZC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDI1IEBACit7CisgICJAdHlwZSIgOiAiZzpQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAiYW5kIiwKKyAgICAidmFsdWUiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAiZ3QiLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAibHQiLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9CisgICAgICB9CisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3BhbmQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9wYW5kLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjcxOTU4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9wYW5kLXYzZDAuanNvbgpAQCAtMCwwICsxLDI1IEBACit7CisgICJAdHlwZSIgOiAiZzpQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAiYW5kIiwKKyAgICAidmFsdWUiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAiZ3QiLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAibHQiLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9CisgICAgICB9CisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3BhdGgtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9wYXRoLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZWVlODgzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9wYXRoLXYxZDAuanNvbgpAQCAtMCwwICsxLDYyIEBACit7CisgICJsYWJlbHMiIDogWyBbIF0sIFsgXSwgWyBdIF0sCisgICJvYmplY3RzIiA6IFsgeworICAgICJpZCIgOiAxLAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDAsCisgICAgICAgICJ2YWx1ZSIgOiAibWFya28iCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiA2LAorICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTcsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwMQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA3LAorICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDAxLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDQKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogOCwKKyAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDQsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA5LAorICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTAsCisgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiA0LAorICAgICAgICAidmFsdWUiIDogImdyZW1saW4iCisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTEsCisgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiA1LAorICAgICAgICAidmFsdWUiIDogInRpbmtlcmdyYXBoIgorICAgICAgfSBdCisgICAgfQorICB9IF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3BhdGgtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9wYXRoLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTkyZDJmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9wYXRoLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxLDEzIEBACit7CisgICJsYWJlbHMiIDogWyBbIF0sIFsgXSwgWyBdIF0sCisgICJvYmplY3RzIiA6IFsgeworICAgICJpZCIgOiAxLAorICAgICJsYWJlbCIgOiAicGVyc29uIgorICB9LCB7CisgICAgImlkIiA6IDEwLAorICAgICJsYWJlbCIgOiAic29mdHdhcmUiCisgIH0sIHsKKyAgICAiaWQiIDogMTEsCisgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIKKyAgfSBdCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9wYXRoLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9wYXRoLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljY2FhMDAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3BhdGgtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwzNCBAQAoreworICAiQHR5cGUiIDogImc6UGF0aCIsCisgICJAdmFsdWUiIDogeworICAgICJsYWJlbHMiIDogWyBbIF0sIFsgXSwgWyBdIF0sCisgICAgIm9iamVjdHMiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIgorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAic29mdHdhcmUiCisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIKKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcGF0aC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3BhdGgtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxNmIzOTMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3BhdGgtdjNkMC5qc29uCkBAIC0wLDAgKzEsNDkgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlBhdGgiLAorICAiQHZhbHVlIiA6IHsKKyAgICAibGFiZWxzIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICJAdmFsdWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpTZXQiLAorICAgICAgICAiQHZhbHVlIiA6IFsgXQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6U2V0IiwKKyAgICAgICAgIkB2YWx1ZSIgOiBbIF0KKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlNldCIsCisgICAgICAgICJAdmFsdWUiIDogWyBdCisgICAgICB9IF0KKyAgICB9LAorICAgICJvYmplY3RzIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICJAdmFsdWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICAgIH0sCisgICAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICAgIH0sCisgICAgICAgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgICAgfSwKKyAgICAgICAgICAibGFiZWwiIDogInNvZnR3YXJlIgorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3BlcmlvZC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcGVyaW9kLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwNDM4YTEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3BlcmlvZC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpQZXJpb2QiLAorICAiQHZhbHVlIiA6ICJQMVk2TTE1RCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3BlcmlvZC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3BlcmlvZC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjA0MzhhMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcGVyaW9kLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpQZXJpb2QiLAorICAiQHZhbHVlIiA6ICJQMVk2TTE1RCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3BpY2stdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3BpY2stdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NhMmYyZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcGljay12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlBpY2siLAorICAiQHZhbHVlIiA6ICJhbnkiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9waWNrLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcGljay12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NhMmYyZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcGljay12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpQaWNrIiwKKyAgIkB2YWx1ZSIgOiAiYW55IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcG9wLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9wb3AtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjcxNTE1ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcG9wLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6UG9wIiwKKyAgIkB2YWx1ZSIgOiAiYWxsIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcG9wLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcG9wLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzE1MTVmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9wb3AtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6UG9wIiwKKyAgIkB2YWx1ZSIgOiAiYWxsIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcG9yLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9wb3ItdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFmY2I3ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcG9yLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMzEgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJvciIsCisgICAgInZhbHVlIiA6IFsgeworICAgICAgIkB0eXBlIiA6ICJnOlAiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJwcmVkaWNhdGUiIDogImd0IiwKKyAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMAorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlAiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJwcmVkaWNhdGUiIDogIndpdGhpbiIsCisgICAgICAgICJ2YWx1ZSIgOiBbIHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogLTEKKyAgICAgICAgfSwgeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAtMTAKKyAgICAgICAgfSwgeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAtMTAwCisgICAgICAgIH0gXQorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9wb3ItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9wb3ItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3MWIxY2YKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Bvci12M2QwLmpzb24KQEAgLTAsMCArMSwzNCBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogIm9yIiwKKyAgICAidmFsdWUiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAiZ3QiLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAid2l0aGluIiwKKyAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgICAgICAgIkB2YWx1ZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IC0xCisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogLTEwCisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogLTEwMAorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Byb3BlcnR5LXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcHJvcGVydHktdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwNTFjMGEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Byb3BlcnR5LXYxZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgImtleSIgOiAic2luY2UiLAorICAidmFsdWUiIDogMjAwOQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcHJvcGVydHktdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9wcm9wZXJ0eS12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzA1MWMwYQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcHJvcGVydHktdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAia2V5IiA6ICJzaW5jZSIsCisgICJ2YWx1ZSIgOiAyMDA5Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9wcm9wZXJ0eS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcHJvcGVydHktdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjk2ZmUzMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcHJvcGVydHktdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAiQHZhbHVlIiA6IHsKKyAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgInZhbHVlIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Byb3BlcnR5LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcHJvcGVydHktdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5NmZlMzIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Byb3BlcnR5LXYzZDAuanNvbgpAQCAtMCwwICsxLDEwIEBACit7CisgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICJAdmFsdWUiIDogeworICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMjAwOQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcHdpdGhpbi12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcHdpdGhpbi12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZmEzODI2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9wd2l0aGluLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJ3aXRoaW4iLAorICAgICJ2YWx1ZSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcHdpdGhpbi12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3B3aXRoaW4tdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzZjk5Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3B3aXRoaW4tdjNkMC5qc29uCkBAIC0wLDAgKzEsMTMgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJ3aXRoaW4iLAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgICAiQHZhbHVlIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0gXQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvcHdpdGhvdXQtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3B3aXRob3V0LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjMjI5MWIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3B3aXRob3V0LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTMgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJ3aXRob3V0IiwKKyAgICAidmFsdWUiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMgorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9wd2l0aG91dC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3B3aXRob3V0LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTE2ODkwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9wd2l0aG91dC12M2QwLmpzb24KQEAgLTAsMCArMSwxNiBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogIndpdGhvdXQiLAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgICAiQHZhbHVlIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAyCisgICAgICB9IF0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Njb3BlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zY29wZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTc0YWYwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zY29wZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlNjb3BlIiwKKyAgIkB2YWx1ZSIgOiAibG9jYWwiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zY29wZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Njb3BlLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTc0YWYwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zY29wZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpTY29wZSIsCisgICJAdmFsdWUiIDogImxvY2FsIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2Vzc2lvbmNsb3NlLXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2Vzc2lvbmNsb3NlLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzgyNWU4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9uY2xvc2UtdjFkMC5qc29uCkBAIC0wLDAgKzEsOCBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImNsb3NlIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2Vzc2lvbmNsb3NlLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2Vzc2lvbmNsb3NlLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzgyNWU4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9uY2xvc2UtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsOCBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImNsb3NlIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2Vzc2lvbmNsb3NlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9uY2xvc2UtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWM4MjVlOAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2Vzc2lvbmNsb3NlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsOCBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImNsb3NlIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2Vzc2lvbmNsb3NlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2Vzc2lvbmNsb3NlLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmUxY2NkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9uY2xvc2UtdjNkMC5qc29uCkBAIC0wLDAgKzEsOSBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImNsb3NlIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgInNlc3Npb24iLCAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIgXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9uZXZhbC12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Nlc3Npb25ldmFsLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmNlODJmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9uZXZhbC12MWQwLmpzb24KQEAgLTAsMCArMSwxMyBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJnLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIiwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2Vzc2lvbmV2YWwtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9uZXZhbC12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGJjZTgyZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2Vzc2lvbmV2YWwtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsMTMgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAiZy5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIsCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IDEKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Nlc3Npb25ldmFsLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9uZXZhbC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZmY4Yjk2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9uZXZhbC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDE2IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogInNlc3Npb24iLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogImcuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgInNlc3Npb24iIDogInVuaXF1ZS1zZXNzaW9uLWlkZW50aWZpZXIiLAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2Vzc2lvbmV2YWwtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9uZXZhbC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzAxYzM5MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2Vzc2lvbmV2YWwtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTUgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgImdyZW1saW4iLCAiZy5WKHgpIiwgImxhbmd1YWdlIiwgImdyZW1saW4tZ3Jvb3Z5IiwgInNlc3Npb24iLCAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIsICJiaW5kaW5ncyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbICJ4IiwgeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0gXQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9uZXZhbGFsaWFzZWQtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9uZXZhbGFsaWFzZWQtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmNGVmNDYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Nlc3Npb25ldmFsYWxpYXNlZC12MWQwLmpzb24KQEAgLTAsMCArMSwxNiBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJzb2NpYWwuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImFsaWFzZXMiIDogeworICAgICAgImciIDogInNvY2lhbCIKKyAgICB9LAorICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIiwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2Vzc2lvbmV2YWxhbGlhc2VkLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2Vzc2lvbmV2YWxhbGlhc2VkLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjRlZjQ2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9uZXZhbGFsaWFzZWQtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsMTYgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAic29jaWFsLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJhbGlhc2VzIiA6IHsKKyAgICAgICJnIiA6ICJzb2NpYWwiCisgICAgfSwKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIsCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IDEKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Nlc3Npb25ldmFsYWxpYXNlZC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2Vzc2lvbmV2YWxhbGlhc2VkLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5NGU1ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Nlc3Npb25ldmFsYWxpYXNlZC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDE5IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogInNlc3Npb24iLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogInNvY2lhbC5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYWxpYXNlcyIgOiB7CisgICAgICAiZyIgOiAic29jaWFsIgorICAgIH0sCisgICAgInNlc3Npb24iIDogInVuaXF1ZS1zZXNzaW9uLWlkZW50aWZpZXIiLAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2Vzc2lvbmV2YWxhbGlhc2VkLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2Vzc2lvbmV2YWxhbGlhc2VkLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDQ4MTYwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9uZXZhbGFsaWFzZWQtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTggQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgImdyZW1saW4iLCAic29jaWFsLlYoeCkiLCAibGFuZ3VhZ2UiLCAiZ3JlbWxpbi1ncm9vdnkiLCAiYWxpYXNlcyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbICJnIiwgInNvY2lhbCIgXQorICAgIH0sICJzZXNzaW9uIiwgInVuaXF1ZS1zZXNzaW9uLWlkZW50aWZpZXIiLCAiYmluZGluZ3MiLCB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyAieCIsIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICB9IF0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2Vzc2lvbmxlc3NldmFsLXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2Vzc2lvbmxlc3NldmFsLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzlhODA3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9ubGVzc2V2YWwtdjFkMC5qc29uCkBAIC0wLDAgKzEsMTIgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJnLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9ubGVzc2V2YWwtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9ubGVzc2V2YWwtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjOWE4MDcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Nlc3Npb25sZXNzZXZhbC12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSwxMiBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogImcuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IDEKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Nlc3Npb25sZXNzZXZhbC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2Vzc2lvbmxlc3NldmFsLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxZTJmNmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Nlc3Npb25sZXNzZXZhbC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDE1IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAiZy5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Nlc3Npb25sZXNzZXZhbC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Nlc3Npb25sZXNzZXZhbC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGM4YzhlNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2Vzc2lvbmxlc3NldmFsLXYzZDAuanNvbgpAQCAtMCwwICsxLDE1IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgImdyZW1saW4iLCAiZy5WKHgpIiwgImxhbmd1YWdlIiwgImdyZW1saW4tZ3Jvb3Z5IiwgImJpbmRpbmdzIiwgeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgIngiLCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfSBdCisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OWYwYzZjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYxZDAuanNvbgpAQCAtMCwwICsxLDE1IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAic29jaWFsLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJhbGlhc2VzIiA6IHsKKyAgICAgICJnIiA6ICJzb2NpYWwiCisgICAgfSwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5ZjBjNmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsMTUgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJzb2NpYWwuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImFsaWFzZXMiIDogeworICAgICAgImciIDogInNvY2lhbCIKKyAgICB9LAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmNmE1NGUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxOCBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogInNvY2lhbC5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYWxpYXNlcyIgOiB7CisgICAgICAiZyIgOiAic29jaWFsIgorICAgIH0sCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmMwM2EzNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12M2QwLmpzb24KQEAgLTAsMCArMSwxOCBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgIkB2YWx1ZSIgOiBbICJncmVtbGluIiwgInNvY2lhbC5WKHgpIiwgImxhbmd1YWdlIiwgImdyZW1saW4tZ3Jvb3Z5IiwgImFsaWFzZXMiLCB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyAiZyIsICJzb2NpYWwiIF0KKyAgICB9LCAiYmluZGluZ3MiLCB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyAieCIsIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICB9IF0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2V0LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2V0LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMmRlZWEyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zZXQtdjNkMC5qc29uCkBAIC0wLDAgKzEsNyBAQAoreworICAiQHR5cGUiIDogImc6U2V0IiwKKyAgIkB2YWx1ZSIgOiBbIHsKKyAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICJAdmFsdWUiIDogMQorICB9LCAicGVyc29uIiwgdHJ1ZSBdCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zaG9ydC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2hvcnQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY4ZjVjZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2hvcnQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6SW50MTYiLAorICAiQHZhbHVlIiA6IDEwMAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2hvcnQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zaG9ydC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY4ZjVjZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc2hvcnQtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkludDE2IiwKKyAgIkB2YWx1ZSIgOiAxMDAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3N0YW5kYXJkcmVzdWx0LXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc3RhbmRhcmRyZXN1bHQtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliOTM3MjcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3N0YW5kYXJkcmVzdWx0LXYxZDAuanNvbgpAQCAtMCwwICsxLDUwIEBACit7CisgICJyZXF1ZXN0SWQiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIsCisgICJzdGF0dXMiIDogeworICAgICJtZXNzYWdlIiA6ICIiLAorICAgICJjb2RlIiA6IDIwMCwKKyAgICAiYXR0cmlidXRlcyIgOiB7IH0KKyAgfSwKKyAgInJlc3VsdCIgOiB7CisgICAgImRhdGEiIDogWyB7CisgICAgICAiaWQiIDogMSwKKyAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAiaWQiIDogMCwKKyAgICAgICAgICAidmFsdWUiIDogIm1hcmtvIgorICAgICAgICB9IF0sCisgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAiaWQiIDogNiwKKyAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiAxOTk3LAorICAgICAgICAgICAgImVuZFRpbWUiIDogMjAwMQorICAgICAgICAgIH0KKyAgICAgICAgfSwgeworICAgICAgICAgICJpZCIgOiA3LAorICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDAxLAorICAgICAgICAgICAgImVuZFRpbWUiIDogMjAwNAorICAgICAgICAgIH0KKyAgICAgICAgfSwgeworICAgICAgICAgICJpZCIgOiA4LAorICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDUKKyAgICAgICAgICB9CisgICAgICAgIH0sIHsKKyAgICAgICAgICAiaWQiIDogOSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDUKKyAgICAgICAgICB9CisgICAgICAgIH0gXQorICAgICAgfQorICAgIH0gXSwKKyAgICAibWV0YSIgOiB7IH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc3RhbmRhcmRyZXN1bHQtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3N0YW5kYXJkcmVzdWx0LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1N2M2ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3N0YW5kYXJkcmVzdWx0LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTExIEBACit7CisgICJyZXF1ZXN0SWQiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIsCisgICJzdGF0dXMiIDogeworICAgICJtZXNzYWdlIiA6ICIiLAorICAgICJjb2RlIiA6IDIwMCwKKyAgICAiYXR0cmlidXRlcyIgOiB7IH0KKyAgfSwKKyAgInJlc3VsdCIgOiB7CisgICAgImRhdGEiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTk3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0gXSwKKyAgICAibWV0YSIgOiB7IH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc3RhbmRhcmRyZXN1bHQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi9zdGFuZGFyZHJlc3VsdC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGZjYTQwMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvc3RhbmRhcmRyZXN1bHQtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTIwIEBACit7CisgICJyZXF1ZXN0SWQiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIsCisgICJzdGF0dXMiIDogeworICAgICJtZXNzYWdlIiA6ICIiLAorICAgICJjb2RlIiA6IDIwMCwKKyAgICAiYXR0cmlidXRlcyIgOiB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyBdCisgICAgfQorICB9LAorICAicmVzdWx0IiA6IHsKKyAgICAiZGF0YSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgICAiQHZhbHVlIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgICB9LAorICAgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBdLAorICAgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW4gZGllZ28iLAorICAgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5OTcKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBjcnV6IiwKKyAgICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBmZSIsCisgICAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9LAorICAgICJtZXRhIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbIF0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3QtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3QtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTY5Mzk4MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlQiLAorICAiQHZhbHVlIiA6ICJsYWJlbCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3QtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi90LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjkzOTgzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi90LXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlQiLAorICAiQHZhbHVlIiA6ICJsYWJlbCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3RleHRwLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi90ZXh0cC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODIwOTg5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi90ZXh0cC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDcgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlRleHRQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAiY29udGFpbmluZyIsCisgICAgInZhbHVlIiA6ICJhcmsiCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3RleHRwLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdGV4dHAtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4MjA5ODkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3RleHRwLXYzZDAuanNvbgpAQCAtMCwwICsxLDcgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlRleHRQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAiY29udGFpbmluZyIsCisgICAgInZhbHVlIiA6ICJhcmsiCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3RpbWVzdGFtcC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdGltZXN0YW1wLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjYTBlMTcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3RpbWVzdGFtcC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlRpbWVzdGFtcCIsCisgICJAdmFsdWUiIDogMTQ4MTc1MDA3NjI5NQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdGltZXN0YW1wLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdGltZXN0YW1wLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2EwZTE3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi90aW1lc3RhbXAtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6VGltZXN0YW1wIiwKKyAgIkB2YWx1ZSIgOiAxNDgxNzUwMDc2Mjk1Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi90aW5rZXJncmFwaC12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3RpbmtlcmdyYXBoLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzcxOWY2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi90aW5rZXJncmFwaC12MWQwLmpzb24KQEAgLTAsMCArMSwzMTMgQEAKK3sKKyAgInZlcnRpY2VzIiA6IFsgeworICAgICJpZCIgOiAxLAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDAsCisgICAgICAgICJ2YWx1ZSIgOiAibWFya28iCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiA2LAorICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTcsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwMQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA3LAorICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDAxLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDQKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogOCwKKyAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDQsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA5LAorICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogNywKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiAxLAorICAgICAgICAidmFsdWUiIDogInN0ZXBoZW4iCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiAxMCwKKyAgICAgICAgInZhbHVlIiA6ICJjZW50cmV2aWxsZSIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTAsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwMAorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxMSwKKyAgICAgICAgInZhbHVlIiA6ICJkdWxsZXMiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDAwLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDYKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTIsCisgICAgICAgICJ2YWx1ZSIgOiAicHVyY2VsbHZpbGxlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNgorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogOCwKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiAyLAorICAgICAgICAidmFsdWUiIDogIm1hdHRoaWFzIgorICAgICAgfSBdLAorICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAiaWQiIDogMTMsCisgICAgICAgICJ2YWx1ZSIgOiAiYnJlbWVuIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA3CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE0LAorICAgICAgICAidmFsdWUiIDogImJhbHRpbW9yZSIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDcsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAxMQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxNSwKKyAgICAgICAgInZhbHVlIiA6ICJvYWtsYW5kIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAxMSwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDE0CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE2LAorICAgICAgICAidmFsdWUiIDogInNlYXR0bGUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDE0CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiA5LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDMsCisgICAgICAgICJ2YWx1ZSIgOiAiZGFuaWVsIgorICAgICAgfSBdLAorICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAiaWQiIDogMTcsCisgICAgICAgICJ2YWx1ZSIgOiAic3ByZW1iZXJnIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMTk4MiwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE4LAorICAgICAgICAidmFsdWUiIDogImthaXNlcnNsYXV0ZXJuIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNSwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA5CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE5LAorICAgICAgICAidmFsdWUiIDogImFhY2hlbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDkKKyAgICAgICAgfQorICAgICAgfSBdCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDEwLAorICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogNCwKKyAgICAgICAgInZhbHVlIiA6ICJncmVtbGluIgorICAgICAgfSBdCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDExLAorICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogNSwKKyAgICAgICAgInZhbHVlIiA6ICJ0aW5rZXJncmFwaCIKKyAgICAgIH0gXQorICAgIH0KKyAgfSBdLAorICAiZWRnZXMiIDogWyB7CisgICAgImlkIiA6IDEzLAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogMjAwOQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxNCwKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDEsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IDIwMTAKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTUsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDEwLAorICAgICJvdXRWIiA6IDEsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IDQKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTYsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDEsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IDUKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTcsCisgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgInR5cGUiIDogImVkZ2UiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiAyMDEwCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE4LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogNywKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogMjAxMQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxOSwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogNywKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogNQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyMCwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogNywKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogNAorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyMSwKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDEwLAorICAgICJvdXRWIiA6IDgsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IDIwMTIKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjIsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDEwLAorICAgICJvdXRWIiA6IDgsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IDMKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjMsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDgsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IDMKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjQsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDEwLAorICAgICJvdXRWIiA6IDksCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IDUKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjUsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDksCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IDMKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjYsCisgICAgImxhYmVsIiA6ICJ0cmF2ZXJzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiAxMAorICB9IF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3RpbmtlcmdyYXBoLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdGlua2VyZ3JhcGgtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0YWQwNjEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3RpbmtlcmdyYXBoLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxLDM1MiBAQAoreworICAidmVydGljZXMiIDogWyB7CisgICAgImlkIiA6IDEsCisgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogMCwKKyAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgImlkIiA6IDYsCisgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTcsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwMQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA3LAorICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwMSwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA0CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDgsCisgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDksCisgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogNywKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiAxLAorICAgICAgICAidmFsdWUiIDogInN0ZXBoZW4iLAorICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiAxMCwKKyAgICAgICAgInZhbHVlIiA6ICJjZW50cmV2aWxsZSIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAxOTkwLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDAKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTEsCisgICAgICAgICJ2YWx1ZSIgOiAiZHVsbGVzIiwKKyAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDAsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNgorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxMiwKKyAgICAgICAgInZhbHVlIiA6ICJwdXJjZWxsdmlsbGUiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNgorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogOCwKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiAyLAorICAgICAgICAidmFsdWUiIDogIm1hdHRoaWFzIiwKKyAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgfSBdLAorICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAiaWQiIDogMTMsCisgICAgICAgICJ2YWx1ZSIgOiAiYnJlbWVuIiwKKyAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDQsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNworICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxNCwKKyAgICAgICAgInZhbHVlIiA6ICJiYWx0aW1vcmUiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNywKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDExCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE1LAorICAgICAgICAidmFsdWUiIDogIm9ha2xhbmQiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAxMSwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDE0CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE2LAorICAgICAgICAidmFsdWUiIDogInNlYXR0bGUiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAxNAorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogOSwKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiAzLAorICAgICAgICAidmFsdWUiIDogImRhbmllbCIsCisgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgImlkIiA6IDE3LAorICAgICAgICAidmFsdWUiIDogInNwcmVtYmVyZyIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAxOTgyLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDUKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTgsCisgICAgICAgICJ2YWx1ZSIgOiAia2Fpc2Vyc2xhdXRlcm4iLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNSwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA5CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE5LAorICAgICAgICAidmFsdWUiIDogImFhY2hlbiIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA5CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxMCwKKyAgICAibGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDQsCisgICAgICAgICJ2YWx1ZSIgOiAiZ3JlbWxpbiIsCisgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxMSwKKyAgICAibGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDUsCisgICAgICAgICJ2YWx1ZSIgOiAidGlua2VyZ3JhcGgiLAorICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICB9IF0KKyAgICB9CisgIH0gXSwKKyAgImVkZ2VzIiA6IFsgeworICAgICJpZCIgOiAxMywKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogeworICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICJ2YWx1ZSIgOiAyMDA5CisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE0LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiAxLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgInZhbHVlIiA6IDIwMTAKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTUsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiA0CisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE2LAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDEsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAidmFsdWUiIDogNQorICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxNywKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogNywKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogeworICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICJ2YWx1ZSIgOiAyMDEwCisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE4LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgInZhbHVlIiA6IDIwMTEKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTksCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogNywKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiA1CisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDIwLAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDcsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAidmFsdWUiIDogNAorICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyMSwKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogOCwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogeworICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICJ2YWx1ZSIgOiAyMDEyCisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDIyLAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDEwLAorICAgICJvdXRWIiA6IDgsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAidmFsdWUiIDogMworICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyMywKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiA4LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJza2lsbCIgOiB7CisgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgInZhbHVlIiA6IDMKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjQsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogOSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiA1CisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDI1LAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDksCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAidmFsdWUiIDogMworICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyNiwKKyAgICAibGFiZWwiIDogInRyYXZlcnNlcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogMTAKKyAgfSBdCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi90aW5rZXJncmFwaC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdGlua2VyZ3JhcGgtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjRlOTVlZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdGlua2VyZ3JhcGgtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw4MjkgQEAKK3sKKyAgIkB0eXBlIiA6ICJ0aW5rZXI6Z3JhcGgiLAorICAiQHZhbHVlIiA6IHsKKyAgICAidmVydGljZXMiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTk3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzdGVwaGVuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiY2VudHJldmlsbGUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5MAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJkdWxsZXMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTIKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJwdXJjZWxsdmlsbGUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogIm1hdHRoaWFzIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEzCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJlbWVuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDcKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE0CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYmFsdGltb3JlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDcKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTEKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE1CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAib2FrbGFuZCIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDExCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDE0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNlYXR0bGUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxNAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImRhbmllbCIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxNworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNwcmVtYmVyZyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTgyCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImthaXNlcnNsYXV0ZXJuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYWFjaGVuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJncmVtbGluIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInRpbmtlcmdyYXBoIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSBdLAorICAgICJlZGdlcyIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwOQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE0CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDEwCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTUKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE2CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDUKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxNworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE4CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDExCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTkKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDIwCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyMQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMgorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDIyCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDMKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyMworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAzCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjQKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDI1CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDMKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyNgorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInRyYXZlcnNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdGlua2VyZ3JhcGgtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi90aW5rZXJncmFwaC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjRlOTVlZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdGlua2VyZ3JhcGgtdjNkMC5qc29uCkBAIC0wLDAgKzEsODI5IEBACit7CisgICJAdHlwZSIgOiAidGlua2VyOmdyYXBoIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInZlcnRpY2VzIiA6IFsgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDYKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW4gZGllZ28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5NworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImJydXNzZWxzIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBmZSIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic3RlcGhlbiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImNlbnRyZXZpbGxlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5OTAKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDAKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiZHVsbGVzIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDAKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDYKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEyCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAicHVyY2VsbHZpbGxlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDYKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJtYXR0aGlhcyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImJyZW1lbiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA3CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxNAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImJhbHRpbW9yZSIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDExCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxNQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogIm9ha2xhbmQiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxNAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTYKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzZWF0dGxlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDMKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJkYW5pZWwiLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTcKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzcHJlbWJlcmciLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk4MgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTgKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJrYWlzZXJzbGF1dGVybiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA5CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImFhY2hlbiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA5CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiZ3JlbWxpbiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDUKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJ0aW5rZXJncmFwaCIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0gXSwKKyAgICAiZWRnZXMiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTMKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2luY2UiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxNAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE1CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxNgorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA1CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTcKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2luY2UiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTAKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxOAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE5CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDUKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyMAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2luY2UiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTIKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyMgorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAzCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjMKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDI0CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDUKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyNQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAzCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjYKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ0cmF2ZXJzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9CisgICAgICB9CisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3RyYXZlcnNhbG1ldHJpY3MtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3RyYXZlcnNhbG1ldHJpY3MtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmRkMThhNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdHJhdmVyc2FsbWV0cmljcy12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDExNCBAQAoreworICAiQHR5cGUiIDogImc6VHJhdmVyc2FsTWV0cmljcyIsCisgICJAdmFsdWUiIDogeworICAgICJkdXIiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAiQHZhbHVlIiA6IDAuMDA0CisgICAgfSwKKyAgICAibWV0cmljcyIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiZHVyIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgIH0sCisgICAgICAgICJjb3VudHMiIDogeworICAgICAgICAgICJ0cmF2ZXJzZXJDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICAgICAgfSwKKyAgICAgICAgICAiZWxlbWVudENvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJuYW1lIiA6ICJUaW5rZXJHcmFwaFN0ZXAodmVydGV4LFt+bGFiZWwuZXEocGVyc29uKV0pIiwKKyAgICAgICAgImFubm90YXRpb25zIiA6IHsKKyAgICAgICAgICAicGVyY2VudER1ciIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImlkIiA6ICI3LjAuMCgpIgorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiZHVyIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgIH0sCisgICAgICAgICJjb3VudHMiIDogeworICAgICAgICAgICJ0cmF2ZXJzZXJDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICAgIH0sCisgICAgICAgICAgImVsZW1lbnRDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIm5hbWUiIDogIlZlcnRleFN0ZXAoT1VULHZlcnRleCkiLAorICAgICAgICAiYW5ub3RhdGlvbnMiIDogeworICAgICAgICAgICJwZXJjZW50RHVyIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaWQiIDogIjIuMC4wKCkiCisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJkdXIiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgfSwKKyAgICAgICAgImNvdW50cyIgOiB7CisgICAgICAgICAgInRyYXZlcnNlckNvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICB9LAorICAgICAgICAgICJlbGVtZW50Q291bnQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIm5hbWUiIDogIlZlcnRleFN0ZXAoT1VULHZlcnRleCkiLAorICAgICAgICAiYW5ub3RhdGlvbnMiIDogeworICAgICAgICAgICJwZXJjZW50RHVyIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaWQiIDogIjMuMC4wKCkiCisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJkdXIiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgfSwKKyAgICAgICAgImNvdW50cyIgOiB7CisgICAgICAgICAgInRyYXZlcnNlckNvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgICB9LAorICAgICAgICAgICJlbGVtZW50Q291bnQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIm5hbWUiIDogIlRyZWVTdGVwIiwKKyAgICAgICAgImFubm90YXRpb25zIiA6IHsKKyAgICAgICAgICAicGVyY2VudER1ciIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImlkIiA6ICI0LjAuMCgpIgorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi90cmF2ZXJzYWxtZXRyaWNzLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdHJhdmVyc2FsbWV0cmljcy12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDZmNzYzNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdHJhdmVyc2FsbWV0cmljcy12M2QwLmpzb24KQEAgLTAsMCArMSwxMDkgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlRyYXZlcnNhbE1ldHJpY3MiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgImR1ciIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgIkB2YWx1ZSIgOiAwLjAwNAorICAgIH0sICJtZXRyaWNzIiwgeworICAgICAgIkB0eXBlIiA6ICJnOkxpc3QiLAorICAgICAgIkB2YWx1ZSIgOiBbIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IFsgImR1ciIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgICAgICAgIH0sICJjb3VudHMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAidHJhdmVyc2VyQ291bnQiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgICAgICAgfSwgImVsZW1lbnRDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICAgICAgICB9IF0KKyAgICAgICAgICB9LCAibmFtZSIsICJUaW5rZXJHcmFwaFN0ZXAodmVydGV4LFt+bGFiZWwuZXEocGVyc29uKV0pIiwgImFubm90YXRpb25zIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IFsgInBlcmNlbnREdXIiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJpZCIsICI3LjAuMCgpIiBdCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IFsgImR1ciIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgICAgICAgIH0sICJjb3VudHMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAidHJhdmVyc2VyQ291bnQiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMTMKKyAgICAgICAgICAgIH0sICJlbGVtZW50Q291bnQiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMTMKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJuYW1lIiwgIlZlcnRleFN0ZXAoT1VULHZlcnRleCkiLCAiYW5ub3RhdGlvbnMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAicGVyY2VudER1ciIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgImlkIiwgIjIuMC4wKCkiIF0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgICAgfSwgImNvdW50cyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJ0cmF2ZXJzZXJDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICB9LCAiZWxlbWVudENvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJuYW1lIiwgIlZlcnRleFN0ZXAoT1VULHZlcnRleCkiLCAiYW5ub3RhdGlvbnMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAicGVyY2VudER1ciIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgImlkIiwgIjMuMC4wKCkiIF0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgICAgfSwgImNvdW50cyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJ0cmF2ZXJzZXJDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgICAgICB9LCAiZWxlbWVudENvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJuYW1lIiwgIlRyZWVTdGVwIiwgImFubm90YXRpb25zIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IFsgInBlcmNlbnREdXIiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJpZCIsICI0LjAuMCgpIiBdCisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi90cmF2ZXJzZXItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3RyYXZlcnNlci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTlhMjllCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi90cmF2ZXJzZXItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMDkgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlRyYXZlcnNlciIsCisgICJAdmFsdWUiIDogeworICAgICJidWxrIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9LAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTk3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdHJhdmVyc2VyLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdHJhdmVyc2VyLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTlhMjllCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi90cmF2ZXJzZXItdjNkMC5qc29uCkBAIC0wLDAgKzEsMTA5IEBACit7CisgICJAdHlwZSIgOiAiZzpUcmF2ZXJzZXIiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiYnVsayIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfSwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDYKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW4gZGllZ28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5NworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImJydXNzZWxzIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBmZSIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3V1aWQtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi91dWlkLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzZmZjk2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi91dWlkLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxIEBACisiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdXVpZC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdXVpZC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2YwOWYwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi91dWlkLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6VVVJRCIsCisgICJAdmFsdWUiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3V1aWQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi91dWlkLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2YwOWYwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi91dWlkLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlVVSUQiLAorICAiQHZhbHVlIiA6ICI0MWQyZTI4YS0yMGE0LTRhYjAtYjM3OS1kODEwZGVkZTM3ODYiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi92ZXJ0ZXgtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi92ZXJ0ZXgtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4ODVmNTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3ZlcnRleC12MWQwLmpzb24KQEAgLTAsMCArMSwzOSBAQAoreworICAiaWQiIDogMSwKKyAgImxhYmVsIiA6ICJwZXJzb24iLAorICAidHlwZSIgOiAidmVydGV4IiwKKyAgInByb3BlcnRpZXMiIDogeworICAgICJuYW1lIiA6IFsgeworICAgICAgImlkIiA6IDAsCisgICAgICAidmFsdWUiIDogIm1hcmtvIgorICAgIH0gXSwKKyAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAiaWQiIDogNiwKKyAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgInN0YXJ0VGltZSIgOiAxOTk3LAorICAgICAgICAiZW5kVGltZSIgOiAyMDAxCisgICAgICB9CisgICAgfSwgeworICAgICAgImlkIiA6IDcsCisgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDEsCisgICAgICAgICJlbmRUaW1lIiA6IDIwMDQKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiaWQiIDogOCwKKyAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDQsCisgICAgICAgICJlbmRUaW1lIiA6IDIwMDUKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiaWQiIDogOSwKKyAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDUKKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdmVydGV4LXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdmVydGV4LXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTYxNTVmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi92ZXJ0ZXgtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsNDMgQEAKK3sKKyAgImlkIiA6IDEsCisgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgInByb3BlcnRpZXMiIDogeworICAgICJuYW1lIiA6IFsgeworICAgICAgImlkIiA6IDAsCisgICAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICB9IF0sCisgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgImlkIiA6IDYsCisgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgInN0YXJ0VGltZSIgOiAxOTk3LAorICAgICAgICAiZW5kVGltZSIgOiAyMDAxCisgICAgICB9CisgICAgfSwgeworICAgICAgImlkIiA6IDcsCisgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICJzdGFydFRpbWUiIDogMjAwMSwKKyAgICAgICAgImVuZFRpbWUiIDogMjAwNAorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJpZCIgOiA4LAorICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA0LAorICAgICAgICAiZW5kVGltZSIgOiAyMDA1CisgICAgICB9CisgICAgfSwgeworICAgICAgImlkIiA6IDksCisgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDUKKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdmVydGV4LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi92ZXJ0ZXgtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjEwMjIzMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdmVydGV4LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTAwIEBACit7CisgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiaWQiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0sCisgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMAorICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICB9CisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA2CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5NworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3ZlcnRleC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3ZlcnRleC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjEwMjIzMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdmVydGV4LXYzZDAuanNvbgpAQCAtMCwwICsxLDEwMCBAQAoreworICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImlkIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgICB9LAorICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgfQorICAgICAgfSBdLAorICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJzYW4gZGllZ28iLAorICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5OTcKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBjcnV6IiwKKyAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgICB9LAorICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBmZSIsCisgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSBdCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi92ZXJ0ZXhwcm9wZXJ0eS12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3ZlcnRleHByb3BlcnR5LXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDAyNWE4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi92ZXJ0ZXhwcm9wZXJ0eS12MWQwLmpzb24KQEAgLTAsMCArMSw1IEBACit7CisgICJpZCIgOiAwLAorICAidmFsdWUiIDogIm1hcmtvIiwKKyAgImxhYmVsIiA6ICJuYW1lIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdmVydGV4cHJvcGVydHktdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi92ZXJ0ZXhwcm9wZXJ0eS12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQwMjVhOAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdmVydGV4cHJvcGVydHktdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsNSBAQAoreworICAiaWQiIDogMCwKKyAgInZhbHVlIiA6ICJtYXJrbyIsCisgICJsYWJlbCIgOiAibmFtZSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3ZlcnRleHByb3BlcnR5LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi92ZXJ0ZXhwcm9wZXJ0eS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjE4NGIxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi92ZXJ0ZXhwcm9wZXJ0eS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDExIEBACit7CisgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICJAdmFsdWUiIDogeworICAgICJpZCIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgIkB2YWx1ZSIgOiAwCisgICAgfSwKKyAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAibGFiZWwiIDogIm5hbWUiCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3ZlcnRleHByb3BlcnR5LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvdmVydGV4cHJvcGVydHktdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmMTg0YjEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3ZlcnRleHByb3BlcnR5LXYzZDAuanNvbgpAQCAtMCwwICsxLDExIEBACit7CisgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICJAdmFsdWUiIDogeworICAgICJpZCIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgIkB2YWx1ZSIgOiAwCisgICAgfSwKKyAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAibGFiZWwiIDogIm5hbWUiCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3llYXItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3llYXItdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY0MjBiYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIveWVhci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpZZWFyIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3llYXItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi95ZWFyLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjQyMGJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi95ZWFyLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpZZWFyIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3llYXJtb250aC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIveWVhcm1vbnRoLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4YTVlMjcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3llYXJtb250aC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpZZWFyTW9udGgiLAorICAiQHZhbHVlIiA6ICIyMDE2LTA2IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIveWVhcm1vbnRoLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIveWVhcm1vbnRoLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OGE1ZTI3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi95ZWFybW9udGgtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlllYXJNb250aCIsCisgICJAdmFsdWUiIDogIjIwMTYtMDYiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi96b25lZGRhdGV0aW1lLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi96b25lZGRhdGV0aW1lLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2N2ZjNDcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3pvbmVkZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Wm9uZWREYXRlVGltZSIsCisgICJAdmFsdWUiIDogIjIwMTYtMTItMjNUMTI6MTI6MjQuMDAwMDAwMDM2KzAyOjAwW0dNVCswMjowMF0iCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi96b25lZGRhdGV0aW1lLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvem9uZWRkYXRldGltZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY3ZmM0NwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzIvem9uZWRkYXRldGltZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Wm9uZWREYXRlVGltZSIsCisgICJAdmFsdWUiIDogIjIwMTYtMTItMjNUMTI6MTI6MjQuMDAwMDAwMDM2KzAyOjAwW0dNVCswMjowMF0iCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi96b25lb2Zmc2V0LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi96b25lb2Zmc2V0LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1OTE3OTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3pvbmVvZmZzZXQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Wm9uZU9mZnNldCIsCisgICJAdmFsdWUiIDogIiswMzowNjowOSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8yL3pvbmVvZmZzZXQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi96b25lb2Zmc2V0LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTkxNzk0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMi96b25lb2Zmc2V0LXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpab25lT2Zmc2V0IiwKKyAgIkB2YWx1ZSIgOiAiKzAzOjA2OjA5IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGM1YjgyYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjFkMC5qc29uCkBAIC0wLDAgKzEsMTIgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IiwKKyAgInN0YXR1cyIgOiB7CisgICAgIm1lc3NhZ2UiIDogIiIsCisgICAgImNvZGUiIDogNDA3LAorICAgICJhdHRyaWJ1dGVzIiA6IHsgfQorICB9LAorICAicmVzdWx0IiA6IHsKKyAgICAiZGF0YSIgOiBudWxsLAorICAgICJtZXRhIiA6IHsgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzViODJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSwxMiBAQAoreworICAicmVxdWVzdElkIiA6ICI0MWQyZTI4YS0yMGE0LTRhYjAtYjM3OS1kODEwZGVkZTM3ODYiLAorICAic3RhdHVzIiA6IHsKKyAgICAibWVzc2FnZSIgOiAiIiwKKyAgICAiY29kZSIgOiA0MDcsCisgICAgImF0dHJpYnV0ZXMiIDogeyB9CisgIH0sCisgICJyZXN1bHQiIDogeworICAgICJkYXRhIiA6IG51bGwsCisgICAgIm1ldGEiIDogeyB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzViODJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDEyIEBACit7CisgICJyZXF1ZXN0SWQiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIsCisgICJzdGF0dXMiIDogeworICAgICJtZXNzYWdlIiA6ICIiLAorICAgICJjb2RlIiA6IDQwNywKKyAgICAiYXR0cmlidXRlcyIgOiB7IH0KKyAgfSwKKyAgInJlc3VsdCIgOiB7CisgICAgImRhdGEiIDogbnVsbCwKKyAgICAibWV0YSIgOiB7IH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDE3MzRjNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTggQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IiwKKyAgInN0YXR1cyIgOiB7CisgICAgIm1lc3NhZ2UiIDogIiIsCisgICAgImNvZGUiIDogNDA3LAorICAgICJhdHRyaWJ1dGVzIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbIF0KKyAgICB9CisgIH0sCisgICJyZXN1bHQiIDogeworICAgICJkYXRhIiA6IG51bGwsCisgICAgIm1ldGEiIDogeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgXQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYXV0aGVudGljYXRpb25yZXNwb25zZS12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzOGUxZmQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjFkMC5qc29uCkBAIC0wLDAgKzEsOSBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImF1dGhlbnRpY2F0aW9uIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJzYXNsTWVjaGFuaXNtIiA6ICJQTEFJTiIsCisgICAgInNhc2wiIDogIkFITjBaWEJvY0dobGJnQndZWE56ZDI5eVpBPT0iCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzhlMWZkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxLDkgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJhdXRoZW50aWNhdGlvbiIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAic2FzbE1lY2hhbmlzbSIgOiAiUExBSU4iLAorICAgICJzYXNsIiA6ICJBSE4wWlhCb2NHaGxiZ0J3WVhOemQyOXlaQT09IgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzOGUxZmQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw5IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiYXV0aGVudGljYXRpb24iLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgInNhc2xNZWNoYW5pc20iIDogIlBMQUlOIiwKKyAgICAic2FzbCIgOiAiQUhOMFpYQm9jR2hsYmdCd1lYTnpkMjl5WkE9PSIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYXV0aGVudGljYXRpb25yZXNwb25zZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhY2VjYTIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjNkMC5qc29uCkBAIC0wLDAgKzEsOSBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImF1dGhlbnRpY2F0aW9uIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAic2FzbE1lY2hhbmlzbSIsICJQTEFJTiIsICJzYXNsIiwgIkFITjBaWEJvY0dobGJnQndZWE56ZDI5eVpBPT0iIF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYmFycmllci12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYmFycmllci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZGRjY2RkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9iYXJyaWVyLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6QmFycmllciIsCisgICJAdmFsdWUiIDogIm5vcm1TYWNrIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYmFycmllci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2JhcnJpZXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkZGNjZGQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2JhcnJpZXItdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6QmFycmllciIsCisgICJAdmFsdWUiIDogIm5vcm1TYWNrIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYmlnZGVjaW1hbC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYmlnZGVjaW1hbC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzUzMzdjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9iaWdkZWNpbWFsLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJpZ0RlY2ltYWwiLAorICAiQHZhbHVlIiA6IDEyMzQ1Njc4OTk4NzY1NDMyMTEyMzQ1Njc4OTk4NzY1NDMyMQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYmlnZGVjaW1hbC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2JpZ2RlY2ltYWwtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3NTMzN2MKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2JpZ2RlY2ltYWwtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJpZ0RlY2ltYWwiLAorICAiQHZhbHVlIiA6IDEyMzQ1Njc4OTk4NzY1NDMyMTEyMzQ1Njc4OTk4NzY1NDMyMQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYmlnaW50ZWdlci12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYmlnaW50ZWdlci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OGU2MTE0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9iaWdpbnRlZ2VyLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJpZ0ludGVnZXIiLAorICAiQHZhbHVlIiA6IDEyMzQ1Njc4OTk4NzY1NDMyMTEyMzQ1Njc4OTk4NzY1NDMyMQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYmlnaW50ZWdlci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2JpZ2ludGVnZXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4ZTYxMTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2JpZ2ludGVnZXItdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJpZ0ludGVnZXIiLAorICAiQHZhbHVlIiA6IDEyMzQ1Njc4OTk4NzY1NDMyMTEyMzQ1Njc4OTk4NzY1NDMyMQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYmluZGluZy12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYmluZGluZy12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzliOGM3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9iaW5kaW5nLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkJpbmRpbmciLAorICAiQHZhbHVlIiA6IHsKKyAgICAia2V5IiA6ICJ4IiwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYmluZGluZy12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2JpbmRpbmctdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3OWI4YzcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2JpbmRpbmctdjNkMC5qc29uCkBAIC0wLDAgKzEsMTAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkJpbmRpbmciLAorICAiQHZhbHVlIiA6IHsKKyAgICAia2V5IiA6ICJ4IiwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYnVsa3NldC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYnVsa3NldC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODQ0OTc1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9idWxrc2V0LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEgQEAKK1sgIm1hcmtvIiwgImpvc2giLCAiam9zaCIgXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYnVsa3NldC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2J1bGtzZXQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyMTZhMzYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2J1bGtzZXQtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkJ1bGtTZXQiLAorICAiQHZhbHVlIiA6IFsgIm1hcmtvIiwgeworICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgIkB2YWx1ZSIgOiAxCisgIH0sICJqb3NoIiwgeworICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgIkB2YWx1ZSIgOiAyCisgIH0gXQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYnl0ZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYnl0ZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Nzk2MjViCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9ieXRlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJ5dGUiLAorICAiQHZhbHVlIiA6IDEKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2J5dGUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9ieXRlLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Nzk2MjViCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9ieXRlLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpCeXRlIiwKKyAgIkB2YWx1ZSIgOiAxCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9ieXRlYnVmZmVyLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9ieXRlYnVmZmVyLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3MjQxMTUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2J5dGVidWZmZXItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Qnl0ZUJ1ZmZlciIsCisgICJAdmFsdWUiIDogImMyOXRaU0JpZVhSbGN5Qm1iM0lnZVc5MSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2J5dGVidWZmZXItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9ieXRlYnVmZmVyLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzI0MTE1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9ieXRlYnVmZmVyLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpCeXRlQnVmZmVyIiwKKyAgIkB2YWx1ZSIgOiAiYzI5dFpTQmllWFJsY3lCbWIzSWdlVzkxIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYnl0ZWNvZGUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2J5dGVjb2RlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2OWQyNzcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2J5dGVjb2RlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNiBAQAoreworICAiQHR5cGUiIDogImc6Qnl0ZWNvZGUiLAorICAiQHZhbHVlIiA6IHsKKyAgICAic3RlcCIgOiBbIFsgIlYiIF0sIFsgImhhc0xhYmVsIiwgInBlcnNvbiIgXSwgWyAib3V0IiBdLCBbICJpbiIgXSwgWyAidHJlZSIgXSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2J5dGVjb2RlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvYnl0ZWNvZGUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2OWQyNzcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2J5dGVjb2RlLXYzZDAuanNvbgpAQCAtMCwwICsxLDYgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkJ5dGVjb2RlIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInN0ZXAiIDogWyBbICJWIiBdLCBbICJoYXNMYWJlbCIsICJwZXJzb24iIF0sIFsgIm91dCIgXSwgWyAiaW4iIF0sIFsgInRyZWUiIF0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9jYXJkaW5hbGl0eS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvY2FyZGluYWxpdHktdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM0ZTY0ZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvY2FyZGluYWxpdHktdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpDYXJkaW5hbGl0eSIsCisgICJAdmFsdWUiIDogImxpc3QiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9jYXJkaW5hbGl0eS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2NhcmRpbmFsaXR5LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzRlNjRlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9jYXJkaW5hbGl0eS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpDYXJkaW5hbGl0eSIsCisgICJAdmFsdWUiIDogImxpc3QiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9jaGFyLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9jaGFyLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmMjdlOWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2NoYXItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Q2hhciIsCisgICJAdmFsdWUiIDogIngiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9jaGFyLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvY2hhci12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGYyN2U5ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvY2hhci12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Q2hhciIsCisgICJAdmFsdWUiIDogIngiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9jbGFzcy12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvY2xhc3MtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBmMTVhMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvY2xhc3MtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpDbGFzcyIsCisgICJAdmFsdWUiIDogImphdmEuaW8uRmlsZSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2NsYXNzLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvY2xhc3MtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwZjE1YTIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2NsYXNzLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkNsYXNzIiwKKyAgIkB2YWx1ZSIgOiAiamF2YS5pby5GaWxlIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvY29sdW1uLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9jb2x1bW4tdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIzYTU2ZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvY29sdW1uLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6Q29sdW1uIiwKKyAgIkB2YWx1ZSIgOiAia2V5cyIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2NvbHVtbi12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2NvbHVtbi12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIzYTU2ZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvY29sdW1uLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkNvbHVtbiIsCisgICJAdmFsdWUiIDogImtleXMiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9kYXRlLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvZGF0ZS12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNiNzFhMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvZGF0ZS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSBAQAorMTQ4MTc1MDA3NjI5NQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvZGF0ZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvZGF0ZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjQwMDdhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9kYXRlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6RGF0ZSIsCisgICJAdmFsdWUiIDogMTQ4MTc1MDA3NjI5NQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvZGF0ZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2RhdGUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmNDAwN2EKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2RhdGUtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6RGF0ZSIsCisgICJAdmFsdWUiIDogMTQ4MTc1MDA3NjI5NQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvZGlyZWN0aW9uLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9kaXJlY3Rpb24tdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzhjYjdlNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvZGlyZWN0aW9uLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6RGlyZWN0aW9uIiwKKyAgIkB2YWx1ZSIgOiAiT1VUIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvZGlyZWN0aW9uLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvZGlyZWN0aW9uLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGNiN2U0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9kaXJlY3Rpb24tdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6RGlyZWN0aW9uIiwKKyAgIkB2YWx1ZSIgOiAiT1VUIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvZG91YmxlLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvZG91YmxlLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzcyZTYyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9kb3VibGUtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEgQEAKKzEwMC4wClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9kb3VibGUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2RvdWJsZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YWU0OTY0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9kb3VibGUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAiQHZhbHVlIiA6IDEwMC4wCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9kb3VibGUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9kb3VibGUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhZTQ5NjQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2RvdWJsZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAiQHZhbHVlIiA6IDEwMC4wCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9kdXJhdGlvbi12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvZHVyYXRpb24tdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVjMGNlOQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvZHVyYXRpb24tdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6RHVyYXRpb24iLAorICAiQHZhbHVlIiA6ICJQVDEyMEgiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9kdXJhdGlvbi12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2R1cmF0aW9uLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWMwY2U5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9kdXJhdGlvbi12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6RHVyYXRpb24iLAorICAiQHZhbHVlIiA6ICJQVDEyMEgiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9lZGdlLXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvZWRnZS12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGY3ZjE2OAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvZWRnZS12MWQwLmpzb24KQEAgLTAsMCArMSwxMiBAQAoreworICAiaWQiIDogMTMsCisgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAidHlwZSIgOiAiZWRnZSIsCisgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAiaW5WIiA6IDEwLAorICAib3V0ViIgOiAxLAorICAicHJvcGVydGllcyIgOiB7CisgICAgInNpbmNlIiA6IDIwMDkKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvZWRnZS12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2VkZ2UtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4ZTczZGIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2VkZ2UtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsMTQgQEAKK3sKKyAgImlkIiA6IDEzLAorICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICJpblYiIDogMTAsCisgICJvdXRWIiA6IDEsCisgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAic2luY2UiIDogeworICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgInZhbHVlIiA6IDIwMDkKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2VkZ2UtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2VkZ2UtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmExYzUyZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvZWRnZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDMyIEBACit7CisgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImlkIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEzCisgICAgfSwKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMTAKKyAgICB9LAorICAgICJvdXRWIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMjAwOQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvZWRnZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2VkZ2UtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhMWM1MmUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2VkZ2UtdjNkMC5qc29uCkBAIC0wLDAgKzEsMzIgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiaWQiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMTMKKyAgICB9LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxMAorICAgIH0sCisgICAgIm91dFYiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0sCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA5CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9mbG9hdC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvZmxvYXQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE3OWFhZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvZmxvYXQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpGbG9hdCIsCisgICJAdmFsdWUiIDogMTAwLjAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2Zsb2F0LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvZmxvYXQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxNzlhYWYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2Zsb2F0LXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkZsb2F0IiwKKyAgIkB2YWx1ZSIgOiAxMDAuMAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvaW5ldGFkZHJlc3MtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2luZXRhZGRyZXNzLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiYTk4YzAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2luZXRhZGRyZXNzLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkluZXRBZGRyZXNzIiwKKyAgIkB2YWx1ZSIgOiAibG9jYWxob3N0IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvaW5ldGFkZHJlc3MtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9pbmV0YWRkcmVzcy12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmJhOThjMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvaW5ldGFkZHJlc3MtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkluZXRBZGRyZXNzIiwKKyAgIkB2YWx1ZSIgOiAibG9jYWxob3N0IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvaW5zdGFudC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvaW5zdGFudC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzQ5NzQxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9pbnN0YW50LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4Okluc3RhbnQiLAorICAiQHZhbHVlIiA6ICIyMDE2LTEyLTE0VDE2OjM5OjE5LjM0OVoiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9pbnN0YW50LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvaW5zdGFudC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzc0OTc0MQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvaW5zdGFudC12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6SW5zdGFudCIsCisgICJAdmFsdWUiIDogIjIwMTYtMTItMTRUMTY6Mzk6MTkuMzQ5WiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2ludGVnZXItdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9pbnRlZ2VyLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDVkN2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9pbnRlZ2VyLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxIEBACisxMDAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2ludGVnZXItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2ludGVnZXItdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzUwY2U3YQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvaW50ZWdlci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgIkB2YWx1ZSIgOiAxMDAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2ludGVnZXItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9pbnRlZ2VyLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTBjZTdhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9pbnRlZ2VyLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgIkB2YWx1ZSIgOiAxMDAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2xhbWJkYS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvbGFtYmRhLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViZTE3OWIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2xhbWJkYS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDggQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkxhbWJkYSIsCisgICJAdmFsdWUiIDogeworICAgICJzY3JpcHQiIDogInsgaXQuZ2V0KCkgfSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImFyZ3VtZW50cyIgOiAxCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2xhbWJkYS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2xhbWJkYS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJlMTc5YgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvbGFtYmRhLXYzZDAuanNvbgpAQCAtMCwwICsxLDggQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkxhbWJkYSIsCisgICJAdmFsdWUiIDogeworICAgICJzY3JpcHQiIDogInsgaXQuZ2V0KCkgfSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImFyZ3VtZW50cyIgOiAxCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2xpc3QtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9saXN0LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzE0ZTJkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9saXN0LXYzZDAuanNvbgpAQCAtMCwwICsxLDcgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkxpc3QiLAorICAiQHZhbHVlIiA6IFsgeworICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgIkB2YWx1ZSIgOiAxCisgIH0sICJwZXJzb24iLCB0cnVlIF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2xvY2FsZGF0ZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvbG9jYWxkYXRlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2ZmI4MWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2xvY2FsZGF0ZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpMb2NhbERhdGUiLAorICAiQHZhbHVlIiA6ICIyMDE2LTAxLTAxIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvbG9jYWxkYXRlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvbG9jYWxkYXRlLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNmZiODFkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9sb2NhbGRhdGUtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkxvY2FsRGF0ZSIsCisgICJAdmFsdWUiIDogIjIwMTYtMDEtMDEiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9sb2NhbGRhdGV0aW1lLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9sb2NhbGRhdGV0aW1lLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkODM2NjgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2xvY2FsZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6TG9jYWxEYXRlVGltZSIsCisgICJAdmFsdWUiIDogIjIwMTYtMDEtMDFUMTI6MzAiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9sb2NhbGRhdGV0aW1lLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvbG9jYWxkYXRldGltZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQ4MzY2OAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvbG9jYWxkYXRldGltZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6TG9jYWxEYXRlVGltZSIsCisgICJAdmFsdWUiIDogIjIwMTYtMDEtMDFUMTI6MzAiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9sb2NhbHRpbWUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2xvY2FsdGltZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZmY2NWE3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9sb2NhbHRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6TG9jYWxUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMTI6MzA6NDUiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9sb2NhbHRpbWUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9sb2NhbHRpbWUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmZjY1YTcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2xvY2FsdGltZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6TG9jYWxUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMTI6MzA6NDUiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9sb25nLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9sb25nLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0YjlhMjMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL2xvbmctdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICJAdmFsdWUiIDogMTAwCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9sb25nLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvbG9uZy12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRiOWEyMwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvbG9uZy12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICJAdmFsdWUiIDogMTAwCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9tYXAtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9tYXAtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhZDU5YzkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL21hcC12M2QwLmpzb24KQEAgLTAsMCArMSwyNSBAQAoreworICAiQHR5cGUiIDogImc6TWFwIiwKKyAgIkB2YWx1ZSIgOiBbIHsKKyAgICAiQHR5cGUiIDogImc6RGF0ZSIsCisgICAgIkB2YWx1ZSIgOiAxNDgxNzUwMDc2Mjk1CisgIH0sICJyZWQiLCB7CisgICAgIkB0eXBlIiA6ICJnOkxpc3QiLAorICAgICJAdmFsdWUiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMgorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDMKKyAgICB9IF0KKyAgfSwgeworICAgICJAdHlwZSIgOiAiZzpEYXRlIiwKKyAgICAiQHZhbHVlIiA6IDE0ODE3NTAwNzYyOTUKKyAgfSwgInRlc3QiLCB7CisgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAiQHZhbHVlIiA6IDEyMworICB9IF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL21ldHJpY3MtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL21ldHJpY3MtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2IxZTk2NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvbWV0cmljcy12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDU0IEBACit7CisgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImR1ciIgOiB7CisgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICB9LAorICAgICJjb3VudHMiIDogeworICAgICAgInRyYXZlcnNlckNvdW50IiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICB9LAorICAgICAgImVsZW1lbnRDb3VudCIgOiB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgfQorICAgIH0sCisgICAgIm5hbWUiIDogIlRpbmtlckdyYXBoU3RlcCh2ZXJ0ZXgsW35sYWJlbC5lcShwZXJzb24pXSkiLAorICAgICJhbm5vdGF0aW9ucyIgOiB7CisgICAgICAicGVyY2VudER1ciIgOiB7CisgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgIH0KKyAgICB9LAorICAgICJpZCIgOiAiNy4wLjAoKSIsCisgICAgIm1ldHJpY3MiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImR1ciIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgICAgICB9LAorICAgICAgICAiY291bnRzIiA6IHsKKyAgICAgICAgICAidHJhdmVyc2VyQ291bnQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgIH0sCisgICAgICAgICAgImVsZW1lbnRDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibmFtZSIgOiAiVmVydGV4U3RlcChPVVQsdmVydGV4KSIsCisgICAgICAgICJhbm5vdGF0aW9ucyIgOiB7CisgICAgICAgICAgInBlcmNlbnREdXIiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJpZCIgOiAiMy4wLjAoKSIKKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvbWV0cmljcy12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL21ldHJpY3MtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2ZTY3OGIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL21ldHJpY3MtdjNkMC5qc29uCkBAIC0wLDAgKzEsNTIgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgImR1ciIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgIH0sICJjb3VudHMiLCB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyAidHJhdmVyc2VyQ291bnQiLCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgfSwgImVsZW1lbnRDb3VudCIsIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICB9IF0KKyAgICB9LCAibmFtZSIsICJUaW5rZXJHcmFwaFN0ZXAodmVydGV4LFt+bGFiZWwuZXEocGVyc29uKV0pIiwgImFubm90YXRpb25zIiwgeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgInBlcmNlbnREdXIiLCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgIH0gXQorICAgIH0sICJpZCIsICI3LjAuMCgpIiwgIm1ldHJpY3MiLCB7CisgICAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgICAiQHZhbHVlIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgICAgfSwgImNvdW50cyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJ0cmF2ZXJzZXJDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICB9LCAiZWxlbWVudENvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJuYW1lIiwgIlZlcnRleFN0ZXAoT1VULHZlcnRleCkiLCAiYW5ub3RhdGlvbnMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAicGVyY2VudER1ciIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgImlkIiwgIjMuMC4wKCkiIF0KKyAgICAgICAgfQorICAgICAgfSBdCisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL21vbnRoZGF5LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9tb250aGRheS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGE1OTE0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9tb250aGRheS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpNb250aERheSIsCisgICJAdmFsdWUiIDogIi0tMDEtMDEiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9tb250aGRheS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL21vbnRoZGF5LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGE1OTE0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9tb250aGRheS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6TW9udGhEYXkiLAorICAiQHZhbHVlIiA6ICItLTAxLTAxIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvb2Zmc2V0ZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL29mZnNldGRhdGV0aW1lLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzZjQ1Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL29mZnNldGRhdGV0aW1lLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4Ok9mZnNldERhdGVUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMjAwNy0xMi0wM1QxMDoxNTozMCswMTowMCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL29mZnNldGRhdGV0aW1lLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvb2Zmc2V0ZGF0ZXRpbWUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzZjQ1Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL29mZnNldGRhdGV0aW1lLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpPZmZzZXREYXRlVGltZSIsCisgICJAdmFsdWUiIDogIjIwMDctMTItMDNUMTA6MTU6MzArMDE6MDAiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9vZmZzZXR0aW1lLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9vZmZzZXR0aW1lLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxMjQ5NTMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL29mZnNldHRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6T2Zmc2V0VGltZSIsCisgICJAdmFsdWUiIDogIjEwOjE1OjMwKzAxOjAwIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvb2Zmc2V0dGltZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL29mZnNldHRpbWUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxMjQ5NTMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL29mZnNldHRpbWUtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4Ok9mZnNldFRpbWUiLAorICAiQHZhbHVlIiA6ICIxMDoxNTozMCswMTowMCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL29wZXJhdG9yLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9vcGVyYXRvci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNGMxNDAwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9vcGVyYXRvci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOk9wZXJhdG9yIiwKKyAgIkB2YWx1ZSIgOiAic3VtIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvb3BlcmF0b3ItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9vcGVyYXRvci12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTRjMTQwMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvb3BlcmF0b3ItdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6T3BlcmF0b3IiLAorICAiQHZhbHVlIiA6ICJzdW0iCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9vcmRlci12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvb3JkZXItdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGJlMDQzMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvb3JkZXItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpPcmRlciIsCisgICJAdmFsdWUiIDogInNodWZmbGUiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9vcmRlci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL29yZGVyLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmUwNDMyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9vcmRlci12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpPcmRlciIsCisgICJAdmFsdWUiIDogInNodWZmbGUiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9wLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9wLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViZGZiM2IKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3AtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogImd0IiwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMAorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3AtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViZGZiM2IKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3AtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJndCIsCisgICAgInZhbHVlIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDAKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3BhbmQtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3BhbmQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzI3MTk1OAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcGFuZC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDI1IEBACit7CisgICJAdHlwZSIgOiAiZzpQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAiYW5kIiwKKyAgICAidmFsdWUiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAiZ3QiLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAibHQiLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9CisgICAgICB9CisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3BhbmQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9wYW5kLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjcxOTU4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9wYW5kLXYzZDAuanNvbgpAQCAtMCwwICsxLDI1IEBACit7CisgICJAdHlwZSIgOiAiZzpQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAiYW5kIiwKKyAgICAidmFsdWUiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAiZ3QiLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAibHQiLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9CisgICAgICB9CisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3BhdGgtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9wYXRoLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZWVlODgzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9wYXRoLXYxZDAuanNvbgpAQCAtMCwwICsxLDYyIEBACit7CisgICJsYWJlbHMiIDogWyBbIF0sIFsgXSwgWyBdIF0sCisgICJvYmplY3RzIiA6IFsgeworICAgICJpZCIgOiAxLAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDAsCisgICAgICAgICJ2YWx1ZSIgOiAibWFya28iCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiA2LAorICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTcsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwMQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA3LAorICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDAxLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDQKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogOCwKKyAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDQsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA5LAorICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTAsCisgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiA0LAorICAgICAgICAidmFsdWUiIDogImdyZW1saW4iCisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTEsCisgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiA1LAorICAgICAgICAidmFsdWUiIDogInRpbmtlcmdyYXBoIgorICAgICAgfSBdCisgICAgfQorICB9IF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3BhdGgtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9wYXRoLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTkyZDJmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9wYXRoLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxLDEzIEBACit7CisgICJsYWJlbHMiIDogWyBbIF0sIFsgXSwgWyBdIF0sCisgICJvYmplY3RzIiA6IFsgeworICAgICJpZCIgOiAxLAorICAgICJsYWJlbCIgOiAicGVyc29uIgorICB9LCB7CisgICAgImlkIiA6IDEwLAorICAgICJsYWJlbCIgOiAic29mdHdhcmUiCisgIH0sIHsKKyAgICAiaWQiIDogMTEsCisgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIKKyAgfSBdCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9wYXRoLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9wYXRoLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljY2FhMDAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3BhdGgtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwzNCBAQAoreworICAiQHR5cGUiIDogImc6UGF0aCIsCisgICJAdmFsdWUiIDogeworICAgICJsYWJlbHMiIDogWyBbIF0sIFsgXSwgWyBdIF0sCisgICAgIm9iamVjdHMiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIgorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAic29mdHdhcmUiCisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIKKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcGF0aC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3BhdGgtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxNmIzOTMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3BhdGgtdjNkMC5qc29uCkBAIC0wLDAgKzEsNDkgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlBhdGgiLAorICAiQHZhbHVlIiA6IHsKKyAgICAibGFiZWxzIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICJAdmFsdWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpTZXQiLAorICAgICAgICAiQHZhbHVlIiA6IFsgXQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6U2V0IiwKKyAgICAgICAgIkB2YWx1ZSIgOiBbIF0KKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlNldCIsCisgICAgICAgICJAdmFsdWUiIDogWyBdCisgICAgICB9IF0KKyAgICB9LAorICAgICJvYmplY3RzIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICJAdmFsdWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICAgIH0sCisgICAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICAgIH0sCisgICAgICAgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgICAgfSwKKyAgICAgICAgICAibGFiZWwiIDogInNvZnR3YXJlIgorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3BlcmlvZC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcGVyaW9kLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwNDM4YTEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3BlcmlvZC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpQZXJpb2QiLAorICAiQHZhbHVlIiA6ICJQMVk2TTE1RCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3BlcmlvZC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3BlcmlvZC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjA0MzhhMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcGVyaW9kLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpQZXJpb2QiLAorICAiQHZhbHVlIiA6ICJQMVk2TTE1RCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3BpY2stdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3BpY2stdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NhMmYyZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcGljay12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlBpY2siLAorICAiQHZhbHVlIiA6ICJhbnkiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9waWNrLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcGljay12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NhMmYyZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcGljay12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpQaWNrIiwKKyAgIkB2YWx1ZSIgOiAiYW55IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcG9wLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9wb3AtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjcxNTE1ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcG9wLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6UG9wIiwKKyAgIkB2YWx1ZSIgOiAiYWxsIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcG9wLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcG9wLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzE1MTVmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9wb3AtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6UG9wIiwKKyAgIkB2YWx1ZSIgOiAiYWxsIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcG9yLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9wb3ItdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFmY2I3ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcG9yLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMzEgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJvciIsCisgICAgInZhbHVlIiA6IFsgeworICAgICAgIkB0eXBlIiA6ICJnOlAiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJwcmVkaWNhdGUiIDogImd0IiwKKyAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMAorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlAiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJwcmVkaWNhdGUiIDogIndpdGhpbiIsCisgICAgICAgICJ2YWx1ZSIgOiBbIHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogLTEKKyAgICAgICAgfSwgeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAtMTAKKyAgICAgICAgfSwgeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAtMTAwCisgICAgICAgIH0gXQorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9wb3ItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9wb3ItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3MWIxY2YKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Bvci12M2QwLmpzb24KQEAgLTAsMCArMSwzNCBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogIm9yIiwKKyAgICAidmFsdWUiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAiZ3QiLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAid2l0aGluIiwKKyAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgICAgICAgIkB2YWx1ZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IC0xCisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogLTEwCisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogLTEwMAorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Byb3BlcnR5LXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcHJvcGVydHktdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwNTFjMGEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Byb3BlcnR5LXYxZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgImtleSIgOiAic2luY2UiLAorICAidmFsdWUiIDogMjAwOQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcHJvcGVydHktdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9wcm9wZXJ0eS12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzA1MWMwYQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcHJvcGVydHktdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAia2V5IiA6ICJzaW5jZSIsCisgICJ2YWx1ZSIgOiAyMDA5Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9wcm9wZXJ0eS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcHJvcGVydHktdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjk2ZmUzMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcHJvcGVydHktdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAiQHZhbHVlIiA6IHsKKyAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgInZhbHVlIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Byb3BlcnR5LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcHJvcGVydHktdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5NmZlMzIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Byb3BlcnR5LXYzZDAuanNvbgpAQCAtMCwwICsxLDEwIEBACit7CisgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICJAdmFsdWUiIDogeworICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMjAwOQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcHdpdGhpbi12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcHdpdGhpbi12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZmEzODI2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9wd2l0aGluLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJ3aXRoaW4iLAorICAgICJ2YWx1ZSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcHdpdGhpbi12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3B3aXRoaW4tdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzZjk5Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3B3aXRoaW4tdjNkMC5qc29uCkBAIC0wLDAgKzEsMTMgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJ3aXRoaW4iLAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgICAiQHZhbHVlIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0gXQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvcHdpdGhvdXQtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3B3aXRob3V0LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjMjI5MWIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3B3aXRob3V0LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTMgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJ3aXRob3V0IiwKKyAgICAidmFsdWUiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMgorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9wd2l0aG91dC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3B3aXRob3V0LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTE2ODkwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9wd2l0aG91dC12M2QwLmpzb24KQEAgLTAsMCArMSwxNiBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogIndpdGhvdXQiLAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgICAiQHZhbHVlIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAyCisgICAgICB9IF0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Njb3BlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zY29wZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTc0YWYwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zY29wZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlNjb3BlIiwKKyAgIkB2YWx1ZSIgOiAibG9jYWwiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zY29wZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Njb3BlLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTc0YWYwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zY29wZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpTY29wZSIsCisgICJAdmFsdWUiIDogImxvY2FsIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2Vzc2lvbmNsb3NlLXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2Vzc2lvbmNsb3NlLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzgyNWU4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9uY2xvc2UtdjFkMC5qc29uCkBAIC0wLDAgKzEsOCBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImNsb3NlIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2Vzc2lvbmNsb3NlLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2Vzc2lvbmNsb3NlLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzgyNWU4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9uY2xvc2UtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsOCBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImNsb3NlIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2Vzc2lvbmNsb3NlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9uY2xvc2UtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWM4MjVlOAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2Vzc2lvbmNsb3NlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsOCBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImNsb3NlIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2Vzc2lvbmNsb3NlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2Vzc2lvbmNsb3NlLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmUxY2NkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9uY2xvc2UtdjNkMC5qc29uCkBAIC0wLDAgKzEsOSBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImNsb3NlIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgInNlc3Npb24iLCAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIgXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9uZXZhbC12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Nlc3Npb25ldmFsLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmNlODJmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9uZXZhbC12MWQwLmpzb24KQEAgLTAsMCArMSwxMyBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJnLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIiwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2Vzc2lvbmV2YWwtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9uZXZhbC12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGJjZTgyZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2Vzc2lvbmV2YWwtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsMTMgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAiZy5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIsCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IDEKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Nlc3Npb25ldmFsLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9uZXZhbC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZmY4Yjk2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9uZXZhbC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDE2IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogInNlc3Npb24iLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogImcuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgInNlc3Npb24iIDogInVuaXF1ZS1zZXNzaW9uLWlkZW50aWZpZXIiLAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2Vzc2lvbmV2YWwtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9uZXZhbC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzAxYzM5MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2Vzc2lvbmV2YWwtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTUgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgImdyZW1saW4iLCAiZy5WKHgpIiwgImxhbmd1YWdlIiwgImdyZW1saW4tZ3Jvb3Z5IiwgInNlc3Npb24iLCAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIsICJiaW5kaW5ncyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbICJ4IiwgeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0gXQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9uZXZhbGFsaWFzZWQtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9uZXZhbGFsaWFzZWQtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmNGVmNDYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Nlc3Npb25ldmFsYWxpYXNlZC12MWQwLmpzb24KQEAgLTAsMCArMSwxNiBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJzb2NpYWwuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImFsaWFzZXMiIDogeworICAgICAgImciIDogInNvY2lhbCIKKyAgICB9LAorICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIiwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2Vzc2lvbmV2YWxhbGlhc2VkLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2Vzc2lvbmV2YWxhbGlhc2VkLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjRlZjQ2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9uZXZhbGFsaWFzZWQtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsMTYgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAic29jaWFsLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJhbGlhc2VzIiA6IHsKKyAgICAgICJnIiA6ICJzb2NpYWwiCisgICAgfSwKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIsCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IDEKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Nlc3Npb25ldmFsYWxpYXNlZC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2Vzc2lvbmV2YWxhbGlhc2VkLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5NGU1ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Nlc3Npb25ldmFsYWxpYXNlZC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDE5IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogInNlc3Npb24iLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogInNvY2lhbC5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYWxpYXNlcyIgOiB7CisgICAgICAiZyIgOiAic29jaWFsIgorICAgIH0sCisgICAgInNlc3Npb24iIDogInVuaXF1ZS1zZXNzaW9uLWlkZW50aWZpZXIiLAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2Vzc2lvbmV2YWxhbGlhc2VkLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2Vzc2lvbmV2YWxhbGlhc2VkLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDQ4MTYwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9uZXZhbGFsaWFzZWQtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTggQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgImdyZW1saW4iLCAic29jaWFsLlYoeCkiLCAibGFuZ3VhZ2UiLCAiZ3JlbWxpbi1ncm9vdnkiLCAiYWxpYXNlcyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbICJnIiwgInNvY2lhbCIgXQorICAgIH0sICJzZXNzaW9uIiwgInVuaXF1ZS1zZXNzaW9uLWlkZW50aWZpZXIiLCAiYmluZGluZ3MiLCB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyAieCIsIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICB9IF0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2Vzc2lvbmxlc3NldmFsLXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2Vzc2lvbmxlc3NldmFsLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzlhODA3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9ubGVzc2V2YWwtdjFkMC5qc29uCkBAIC0wLDAgKzEsMTIgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJnLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9ubGVzc2V2YWwtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9ubGVzc2V2YWwtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjOWE4MDcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Nlc3Npb25sZXNzZXZhbC12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSwxMiBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogImcuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IDEKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Nlc3Npb25sZXNzZXZhbC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2Vzc2lvbmxlc3NldmFsLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxZTJmNmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Nlc3Npb25sZXNzZXZhbC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDE1IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAiZy5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Nlc3Npb25sZXNzZXZhbC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Nlc3Npb25sZXNzZXZhbC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGM4YzhlNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2Vzc2lvbmxlc3NldmFsLXYzZDAuanNvbgpAQCAtMCwwICsxLDE1IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgImdyZW1saW4iLCAiZy5WKHgpIiwgImxhbmd1YWdlIiwgImdyZW1saW4tZ3Jvb3Z5IiwgImJpbmRpbmdzIiwgeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgIngiLCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfSBdCisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OWYwYzZjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYxZDAuanNvbgpAQCAtMCwwICsxLDE1IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAic29jaWFsLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJhbGlhc2VzIiA6IHsKKyAgICAgICJnIiA6ICJzb2NpYWwiCisgICAgfSwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5ZjBjNmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsMTUgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJzb2NpYWwuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImFsaWFzZXMiIDogeworICAgICAgImciIDogInNvY2lhbCIKKyAgICB9LAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmNmE1NGUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxOCBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogInNvY2lhbC5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYWxpYXNlcyIgOiB7CisgICAgICAiZyIgOiAic29jaWFsIgorICAgIH0sCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmMwM2EzNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12M2QwLmpzb24KQEAgLTAsMCArMSwxOCBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgIkB2YWx1ZSIgOiBbICJncmVtbGluIiwgInNvY2lhbC5WKHgpIiwgImxhbmd1YWdlIiwgImdyZW1saW4tZ3Jvb3Z5IiwgImFsaWFzZXMiLCB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyAiZyIsICJzb2NpYWwiIF0KKyAgICB9LCAiYmluZGluZ3MiLCB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyAieCIsIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICB9IF0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2V0LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2V0LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMmRlZWEyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zZXQtdjNkMC5qc29uCkBAIC0wLDAgKzEsNyBAQAoreworICAiQHR5cGUiIDogImc6U2V0IiwKKyAgIkB2YWx1ZSIgOiBbIHsKKyAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICJAdmFsdWUiIDogMQorICB9LCAicGVyc29uIiwgdHJ1ZSBdCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zaG9ydC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2hvcnQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY4ZjVjZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2hvcnQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6SW50MTYiLAorICAiQHZhbHVlIiA6IDEwMAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2hvcnQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zaG9ydC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY4ZjVjZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc2hvcnQtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkludDE2IiwKKyAgIkB2YWx1ZSIgOiAxMDAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3N0YW5kYXJkcmVzdWx0LXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc3RhbmRhcmRyZXN1bHQtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliOTM3MjcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3N0YW5kYXJkcmVzdWx0LXYxZDAuanNvbgpAQCAtMCwwICsxLDUwIEBACit7CisgICJyZXF1ZXN0SWQiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIsCisgICJzdGF0dXMiIDogeworICAgICJtZXNzYWdlIiA6ICIiLAorICAgICJjb2RlIiA6IDIwMCwKKyAgICAiYXR0cmlidXRlcyIgOiB7IH0KKyAgfSwKKyAgInJlc3VsdCIgOiB7CisgICAgImRhdGEiIDogWyB7CisgICAgICAiaWQiIDogMSwKKyAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAiaWQiIDogMCwKKyAgICAgICAgICAidmFsdWUiIDogIm1hcmtvIgorICAgICAgICB9IF0sCisgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAiaWQiIDogNiwKKyAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiAxOTk3LAorICAgICAgICAgICAgImVuZFRpbWUiIDogMjAwMQorICAgICAgICAgIH0KKyAgICAgICAgfSwgeworICAgICAgICAgICJpZCIgOiA3LAorICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDAxLAorICAgICAgICAgICAgImVuZFRpbWUiIDogMjAwNAorICAgICAgICAgIH0KKyAgICAgICAgfSwgeworICAgICAgICAgICJpZCIgOiA4LAorICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDUKKyAgICAgICAgICB9CisgICAgICAgIH0sIHsKKyAgICAgICAgICAiaWQiIDogOSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDUKKyAgICAgICAgICB9CisgICAgICAgIH0gXQorICAgICAgfQorICAgIH0gXSwKKyAgICAibWV0YSIgOiB7IH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc3RhbmRhcmRyZXN1bHQtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3N0YW5kYXJkcmVzdWx0LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1N2M2ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3N0YW5kYXJkcmVzdWx0LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTExIEBACit7CisgICJyZXF1ZXN0SWQiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIsCisgICJzdGF0dXMiIDogeworICAgICJtZXNzYWdlIiA6ICIiLAorICAgICJjb2RlIiA6IDIwMCwKKyAgICAiYXR0cmlidXRlcyIgOiB7IH0KKyAgfSwKKyAgInJlc3VsdCIgOiB7CisgICAgImRhdGEiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTk3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0gXSwKKyAgICAibWV0YSIgOiB7IH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc3RhbmRhcmRyZXN1bHQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy9zdGFuZGFyZHJlc3VsdC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGZjYTQwMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvc3RhbmRhcmRyZXN1bHQtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTIwIEBACit7CisgICJyZXF1ZXN0SWQiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIsCisgICJzdGF0dXMiIDogeworICAgICJtZXNzYWdlIiA6ICIiLAorICAgICJjb2RlIiA6IDIwMCwKKyAgICAiYXR0cmlidXRlcyIgOiB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyBdCisgICAgfQorICB9LAorICAicmVzdWx0IiA6IHsKKyAgICAiZGF0YSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgICAiQHZhbHVlIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgICB9LAorICAgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBdLAorICAgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW4gZGllZ28iLAorICAgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5OTcKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBjcnV6IiwKKyAgICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBmZSIsCisgICAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9LAorICAgICJtZXRhIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbIF0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3QtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3QtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTY5Mzk4MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlQiLAorICAiQHZhbHVlIiA6ICJsYWJlbCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3QtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy90LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjkzOTgzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy90LXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlQiLAorICAiQHZhbHVlIiA6ICJsYWJlbCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3RleHRwLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy90ZXh0cC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODIwOTg5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy90ZXh0cC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDcgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlRleHRQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAiY29udGFpbmluZyIsCisgICAgInZhbHVlIiA6ICJhcmsiCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3RleHRwLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdGV4dHAtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4MjA5ODkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3RleHRwLXYzZDAuanNvbgpAQCAtMCwwICsxLDcgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlRleHRQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAiY29udGFpbmluZyIsCisgICAgInZhbHVlIiA6ICJhcmsiCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3RpbWVzdGFtcC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdGltZXN0YW1wLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjYTBlMTcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3RpbWVzdGFtcC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlRpbWVzdGFtcCIsCisgICJAdmFsdWUiIDogMTQ4MTc1MDA3NjI5NQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdGltZXN0YW1wLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdGltZXN0YW1wLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2EwZTE3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy90aW1lc3RhbXAtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6VGltZXN0YW1wIiwKKyAgIkB2YWx1ZSIgOiAxNDgxNzUwMDc2Mjk1Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy90aW5rZXJncmFwaC12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3RpbmtlcmdyYXBoLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzcxOWY2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy90aW5rZXJncmFwaC12MWQwLmpzb24KQEAgLTAsMCArMSwzMTMgQEAKK3sKKyAgInZlcnRpY2VzIiA6IFsgeworICAgICJpZCIgOiAxLAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDAsCisgICAgICAgICJ2YWx1ZSIgOiAibWFya28iCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiA2LAorICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTcsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwMQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA3LAorICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDAxLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDQKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogOCwKKyAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDQsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA5LAorICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogNywKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiAxLAorICAgICAgICAidmFsdWUiIDogInN0ZXBoZW4iCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiAxMCwKKyAgICAgICAgInZhbHVlIiA6ICJjZW50cmV2aWxsZSIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTAsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwMAorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxMSwKKyAgICAgICAgInZhbHVlIiA6ICJkdWxsZXMiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDAwLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDYKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTIsCisgICAgICAgICJ2YWx1ZSIgOiAicHVyY2VsbHZpbGxlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNgorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogOCwKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiAyLAorICAgICAgICAidmFsdWUiIDogIm1hdHRoaWFzIgorICAgICAgfSBdLAorICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAiaWQiIDogMTMsCisgICAgICAgICJ2YWx1ZSIgOiAiYnJlbWVuIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA3CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE0LAorICAgICAgICAidmFsdWUiIDogImJhbHRpbW9yZSIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDcsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAxMQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxNSwKKyAgICAgICAgInZhbHVlIiA6ICJvYWtsYW5kIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAxMSwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDE0CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE2LAorICAgICAgICAidmFsdWUiIDogInNlYXR0bGUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDE0CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiA5LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDMsCisgICAgICAgICJ2YWx1ZSIgOiAiZGFuaWVsIgorICAgICAgfSBdLAorICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAiaWQiIDogMTcsCisgICAgICAgICJ2YWx1ZSIgOiAic3ByZW1iZXJnIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMTk4MiwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE4LAorICAgICAgICAidmFsdWUiIDogImthaXNlcnNsYXV0ZXJuIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNSwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA5CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE5LAorICAgICAgICAidmFsdWUiIDogImFhY2hlbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDkKKyAgICAgICAgfQorICAgICAgfSBdCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDEwLAorICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogNCwKKyAgICAgICAgInZhbHVlIiA6ICJncmVtbGluIgorICAgICAgfSBdCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDExLAorICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogNSwKKyAgICAgICAgInZhbHVlIiA6ICJ0aW5rZXJncmFwaCIKKyAgICAgIH0gXQorICAgIH0KKyAgfSBdLAorICAiZWRnZXMiIDogWyB7CisgICAgImlkIiA6IDEzLAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogMjAwOQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxNCwKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDEsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IDIwMTAKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTUsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDEwLAorICAgICJvdXRWIiA6IDEsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IDQKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTYsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDEsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IDUKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTcsCisgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgInR5cGUiIDogImVkZ2UiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiAyMDEwCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE4LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogNywKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogMjAxMQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxOSwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogNywKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogNQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyMCwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogNywKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogNAorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyMSwKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDEwLAorICAgICJvdXRWIiA6IDgsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IDIwMTIKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjIsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDEwLAorICAgICJvdXRWIiA6IDgsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IDMKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjMsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDgsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IDMKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjQsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDEwLAorICAgICJvdXRWIiA6IDksCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IDUKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjUsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDksCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IDMKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjYsCisgICAgImxhYmVsIiA6ICJ0cmF2ZXJzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiAxMAorICB9IF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3RpbmtlcmdyYXBoLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdGlua2VyZ3JhcGgtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0YWQwNjEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3RpbmtlcmdyYXBoLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxLDM1MiBAQAoreworICAidmVydGljZXMiIDogWyB7CisgICAgImlkIiA6IDEsCisgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogMCwKKyAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgImlkIiA6IDYsCisgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTcsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwMQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA3LAorICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwMSwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA0CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDgsCisgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDksCisgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogNywKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiAxLAorICAgICAgICAidmFsdWUiIDogInN0ZXBoZW4iLAorICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiAxMCwKKyAgICAgICAgInZhbHVlIiA6ICJjZW50cmV2aWxsZSIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAxOTkwLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDAKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTEsCisgICAgICAgICJ2YWx1ZSIgOiAiZHVsbGVzIiwKKyAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDAsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNgorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxMiwKKyAgICAgICAgInZhbHVlIiA6ICJwdXJjZWxsdmlsbGUiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNgorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogOCwKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiAyLAorICAgICAgICAidmFsdWUiIDogIm1hdHRoaWFzIiwKKyAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgfSBdLAorICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAiaWQiIDogMTMsCisgICAgICAgICJ2YWx1ZSIgOiAiYnJlbWVuIiwKKyAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDQsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNworICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxNCwKKyAgICAgICAgInZhbHVlIiA6ICJiYWx0aW1vcmUiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNywKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDExCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE1LAorICAgICAgICAidmFsdWUiIDogIm9ha2xhbmQiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAxMSwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDE0CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE2LAorICAgICAgICAidmFsdWUiIDogInNlYXR0bGUiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAxNAorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogOSwKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiAzLAorICAgICAgICAidmFsdWUiIDogImRhbmllbCIsCisgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgImlkIiA6IDE3LAorICAgICAgICAidmFsdWUiIDogInNwcmVtYmVyZyIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAxOTgyLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDUKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTgsCisgICAgICAgICJ2YWx1ZSIgOiAia2Fpc2Vyc2xhdXRlcm4iLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNSwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA5CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE5LAorICAgICAgICAidmFsdWUiIDogImFhY2hlbiIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA5CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxMCwKKyAgICAibGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDQsCisgICAgICAgICJ2YWx1ZSIgOiAiZ3JlbWxpbiIsCisgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxMSwKKyAgICAibGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDUsCisgICAgICAgICJ2YWx1ZSIgOiAidGlua2VyZ3JhcGgiLAorICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICB9IF0KKyAgICB9CisgIH0gXSwKKyAgImVkZ2VzIiA6IFsgeworICAgICJpZCIgOiAxMywKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogeworICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICJ2YWx1ZSIgOiAyMDA5CisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE0LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiAxLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgInZhbHVlIiA6IDIwMTAKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTUsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiA0CisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE2LAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDEsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAidmFsdWUiIDogNQorICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxNywKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogNywKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogeworICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICJ2YWx1ZSIgOiAyMDEwCisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE4LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgInZhbHVlIiA6IDIwMTEKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTksCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogNywKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiA1CisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDIwLAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDcsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAidmFsdWUiIDogNAorICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyMSwKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogOCwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogeworICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICJ2YWx1ZSIgOiAyMDEyCisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDIyLAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDEwLAorICAgICJvdXRWIiA6IDgsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAidmFsdWUiIDogMworICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyMywKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiA4LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJza2lsbCIgOiB7CisgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgInZhbHVlIiA6IDMKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjQsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogOSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiA1CisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDI1LAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDksCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAidmFsdWUiIDogMworICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyNiwKKyAgICAibGFiZWwiIDogInRyYXZlcnNlcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogMTAKKyAgfSBdCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy90aW5rZXJncmFwaC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdGlua2VyZ3JhcGgtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjRlOTVlZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdGlua2VyZ3JhcGgtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw4MjkgQEAKK3sKKyAgIkB0eXBlIiA6ICJ0aW5rZXI6Z3JhcGgiLAorICAiQHZhbHVlIiA6IHsKKyAgICAidmVydGljZXMiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTk3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzdGVwaGVuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiY2VudHJldmlsbGUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5MAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJkdWxsZXMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTIKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJwdXJjZWxsdmlsbGUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogIm1hdHRoaWFzIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEzCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJlbWVuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDcKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE0CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYmFsdGltb3JlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDcKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTEKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE1CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAib2FrbGFuZCIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDExCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDE0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNlYXR0bGUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxNAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImRhbmllbCIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxNworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNwcmVtYmVyZyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTgyCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImthaXNlcnNsYXV0ZXJuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYWFjaGVuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJncmVtbGluIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInRpbmtlcmdyYXBoIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSBdLAorICAgICJlZGdlcyIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwOQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE0CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDEwCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTUKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE2CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDUKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxNworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE4CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDExCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTkKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDIwCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyMQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMgorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDIyCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDMKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyMworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAzCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjQKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDI1CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDMKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyNgorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInRyYXZlcnNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdGlua2VyZ3JhcGgtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy90aW5rZXJncmFwaC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjRlOTVlZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdGlua2VyZ3JhcGgtdjNkMC5qc29uCkBAIC0wLDAgKzEsODI5IEBACit7CisgICJAdHlwZSIgOiAidGlua2VyOmdyYXBoIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInZlcnRpY2VzIiA6IFsgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDYKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW4gZGllZ28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5NworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImJydXNzZWxzIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBmZSIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic3RlcGhlbiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImNlbnRyZXZpbGxlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5OTAKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDAKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiZHVsbGVzIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDAKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDYKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEyCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAicHVyY2VsbHZpbGxlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDYKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJtYXR0aGlhcyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImJyZW1lbiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA3CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxNAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImJhbHRpbW9yZSIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDExCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxNQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogIm9ha2xhbmQiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxNAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTYKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzZWF0dGxlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDMKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJkYW5pZWwiLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTcKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzcHJlbWJlcmciLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk4MgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTgKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJrYWlzZXJzbGF1dGVybiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA5CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImFhY2hlbiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA5CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiZ3JlbWxpbiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDUKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJ0aW5rZXJncmFwaCIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0gXSwKKyAgICAiZWRnZXMiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTMKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2luY2UiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxNAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE1CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxNgorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA1CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTcKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2luY2UiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTAKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxOAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE5CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDUKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyMAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2luY2UiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTIKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyMgorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAzCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjMKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDI0CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDUKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyNQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAzCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjYKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ0cmF2ZXJzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9CisgICAgICB9CisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3RyYXZlcnNhbG1ldHJpY3MtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3RyYXZlcnNhbG1ldHJpY3MtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmRkMThhNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdHJhdmVyc2FsbWV0cmljcy12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDExNCBAQAoreworICAiQHR5cGUiIDogImc6VHJhdmVyc2FsTWV0cmljcyIsCisgICJAdmFsdWUiIDogeworICAgICJkdXIiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAiQHZhbHVlIiA6IDAuMDA0CisgICAgfSwKKyAgICAibWV0cmljcyIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiZHVyIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgIH0sCisgICAgICAgICJjb3VudHMiIDogeworICAgICAgICAgICJ0cmF2ZXJzZXJDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICAgICAgfSwKKyAgICAgICAgICAiZWxlbWVudENvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJuYW1lIiA6ICJUaW5rZXJHcmFwaFN0ZXAodmVydGV4LFt+bGFiZWwuZXEocGVyc29uKV0pIiwKKyAgICAgICAgImFubm90YXRpb25zIiA6IHsKKyAgICAgICAgICAicGVyY2VudER1ciIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImlkIiA6ICI3LjAuMCgpIgorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiZHVyIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgIH0sCisgICAgICAgICJjb3VudHMiIDogeworICAgICAgICAgICJ0cmF2ZXJzZXJDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICAgIH0sCisgICAgICAgICAgImVsZW1lbnRDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIm5hbWUiIDogIlZlcnRleFN0ZXAoT1VULHZlcnRleCkiLAorICAgICAgICAiYW5ub3RhdGlvbnMiIDogeworICAgICAgICAgICJwZXJjZW50RHVyIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaWQiIDogIjIuMC4wKCkiCisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJkdXIiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgfSwKKyAgICAgICAgImNvdW50cyIgOiB7CisgICAgICAgICAgInRyYXZlcnNlckNvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICB9LAorICAgICAgICAgICJlbGVtZW50Q291bnQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIm5hbWUiIDogIlZlcnRleFN0ZXAoT1VULHZlcnRleCkiLAorICAgICAgICAiYW5ub3RhdGlvbnMiIDogeworICAgICAgICAgICJwZXJjZW50RHVyIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaWQiIDogIjMuMC4wKCkiCisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJkdXIiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgfSwKKyAgICAgICAgImNvdW50cyIgOiB7CisgICAgICAgICAgInRyYXZlcnNlckNvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgICB9LAorICAgICAgICAgICJlbGVtZW50Q291bnQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIm5hbWUiIDogIlRyZWVTdGVwIiwKKyAgICAgICAgImFubm90YXRpb25zIiA6IHsKKyAgICAgICAgICAicGVyY2VudER1ciIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImlkIiA6ICI0LjAuMCgpIgorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy90cmF2ZXJzYWxtZXRyaWNzLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdHJhdmVyc2FsbWV0cmljcy12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDZmNzYzNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdHJhdmVyc2FsbWV0cmljcy12M2QwLmpzb24KQEAgLTAsMCArMSwxMDkgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlRyYXZlcnNhbE1ldHJpY3MiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgImR1ciIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgIkB2YWx1ZSIgOiAwLjAwNAorICAgIH0sICJtZXRyaWNzIiwgeworICAgICAgIkB0eXBlIiA6ICJnOkxpc3QiLAorICAgICAgIkB2YWx1ZSIgOiBbIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IFsgImR1ciIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgICAgICAgIH0sICJjb3VudHMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAidHJhdmVyc2VyQ291bnQiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgICAgICAgfSwgImVsZW1lbnRDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICAgICAgICB9IF0KKyAgICAgICAgICB9LCAibmFtZSIsICJUaW5rZXJHcmFwaFN0ZXAodmVydGV4LFt+bGFiZWwuZXEocGVyc29uKV0pIiwgImFubm90YXRpb25zIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IFsgInBlcmNlbnREdXIiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJpZCIsICI3LjAuMCgpIiBdCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IFsgImR1ciIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgICAgICAgIH0sICJjb3VudHMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAidHJhdmVyc2VyQ291bnQiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMTMKKyAgICAgICAgICAgIH0sICJlbGVtZW50Q291bnQiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMTMKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJuYW1lIiwgIlZlcnRleFN0ZXAoT1VULHZlcnRleCkiLCAiYW5ub3RhdGlvbnMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAicGVyY2VudER1ciIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgImlkIiwgIjIuMC4wKCkiIF0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgICAgfSwgImNvdW50cyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJ0cmF2ZXJzZXJDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICB9LCAiZWxlbWVudENvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJuYW1lIiwgIlZlcnRleFN0ZXAoT1VULHZlcnRleCkiLCAiYW5ub3RhdGlvbnMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAicGVyY2VudER1ciIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgImlkIiwgIjMuMC4wKCkiIF0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgICAgfSwgImNvdW50cyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJ0cmF2ZXJzZXJDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgICAgICB9LCAiZWxlbWVudENvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJuYW1lIiwgIlRyZWVTdGVwIiwgImFubm90YXRpb25zIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IFsgInBlcmNlbnREdXIiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJpZCIsICI0LjAuMCgpIiBdCisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy90cmF2ZXJzZXItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3RyYXZlcnNlci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTlhMjllCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy90cmF2ZXJzZXItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMDkgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlRyYXZlcnNlciIsCisgICJAdmFsdWUiIDogeworICAgICJidWxrIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9LAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTk3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdHJhdmVyc2VyLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdHJhdmVyc2VyLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTlhMjllCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy90cmF2ZXJzZXItdjNkMC5qc29uCkBAIC0wLDAgKzEsMTA5IEBACit7CisgICJAdHlwZSIgOiAiZzpUcmF2ZXJzZXIiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiYnVsayIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfSwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDYKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW4gZGllZ28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5NworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImJydXNzZWxzIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBmZSIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3V1aWQtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy91dWlkLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzZmZjk2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy91dWlkLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxIEBACisiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdXVpZC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdXVpZC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2YwOWYwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy91dWlkLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6VVVJRCIsCisgICJAdmFsdWUiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3V1aWQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy91dWlkLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2YwOWYwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy91dWlkLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlVVSUQiLAorICAiQHZhbHVlIiA6ICI0MWQyZTI4YS0yMGE0LTRhYjAtYjM3OS1kODEwZGVkZTM3ODYiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy92ZXJ0ZXgtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy92ZXJ0ZXgtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4ODVmNTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3ZlcnRleC12MWQwLmpzb24KQEAgLTAsMCArMSwzOSBAQAoreworICAiaWQiIDogMSwKKyAgImxhYmVsIiA6ICJwZXJzb24iLAorICAidHlwZSIgOiAidmVydGV4IiwKKyAgInByb3BlcnRpZXMiIDogeworICAgICJuYW1lIiA6IFsgeworICAgICAgImlkIiA6IDAsCisgICAgICAidmFsdWUiIDogIm1hcmtvIgorICAgIH0gXSwKKyAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAiaWQiIDogNiwKKyAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgInN0YXJ0VGltZSIgOiAxOTk3LAorICAgICAgICAiZW5kVGltZSIgOiAyMDAxCisgICAgICB9CisgICAgfSwgeworICAgICAgImlkIiA6IDcsCisgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDEsCisgICAgICAgICJlbmRUaW1lIiA6IDIwMDQKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiaWQiIDogOCwKKyAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDQsCisgICAgICAgICJlbmRUaW1lIiA6IDIwMDUKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiaWQiIDogOSwKKyAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDUKKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdmVydGV4LXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdmVydGV4LXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTYxNTVmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy92ZXJ0ZXgtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsNDMgQEAKK3sKKyAgImlkIiA6IDEsCisgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgInByb3BlcnRpZXMiIDogeworICAgICJuYW1lIiA6IFsgeworICAgICAgImlkIiA6IDAsCisgICAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICB9IF0sCisgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgImlkIiA6IDYsCisgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgInN0YXJ0VGltZSIgOiAxOTk3LAorICAgICAgICAiZW5kVGltZSIgOiAyMDAxCisgICAgICB9CisgICAgfSwgeworICAgICAgImlkIiA6IDcsCisgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICJzdGFydFRpbWUiIDogMjAwMSwKKyAgICAgICAgImVuZFRpbWUiIDogMjAwNAorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJpZCIgOiA4LAorICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA0LAorICAgICAgICAiZW5kVGltZSIgOiAyMDA1CisgICAgICB9CisgICAgfSwgeworICAgICAgImlkIiA6IDksCisgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDUKKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdmVydGV4LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy92ZXJ0ZXgtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjEwMjIzMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdmVydGV4LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTAwIEBACit7CisgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiaWQiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0sCisgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMAorICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICB9CisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA2CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5NworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3ZlcnRleC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3ZlcnRleC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjEwMjIzMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdmVydGV4LXYzZDAuanNvbgpAQCAtMCwwICsxLDEwMCBAQAoreworICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImlkIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgICB9LAorICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgfQorICAgICAgfSBdLAorICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJzYW4gZGllZ28iLAorICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5OTcKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBjcnV6IiwKKyAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgICB9LAorICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBmZSIsCisgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSBdCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy92ZXJ0ZXhwcm9wZXJ0eS12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3ZlcnRleHByb3BlcnR5LXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDAyNWE4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy92ZXJ0ZXhwcm9wZXJ0eS12MWQwLmpzb24KQEAgLTAsMCArMSw1IEBACit7CisgICJpZCIgOiAwLAorICAidmFsdWUiIDogIm1hcmtvIiwKKyAgImxhYmVsIiA6ICJuYW1lIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdmVydGV4cHJvcGVydHktdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy92ZXJ0ZXhwcm9wZXJ0eS12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQwMjVhOAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdmVydGV4cHJvcGVydHktdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsNSBAQAoreworICAiaWQiIDogMCwKKyAgInZhbHVlIiA6ICJtYXJrbyIsCisgICJsYWJlbCIgOiAibmFtZSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3ZlcnRleHByb3BlcnR5LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy92ZXJ0ZXhwcm9wZXJ0eS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjE4NGIxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy92ZXJ0ZXhwcm9wZXJ0eS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDExIEBACit7CisgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICJAdmFsdWUiIDogeworICAgICJpZCIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgIkB2YWx1ZSIgOiAwCisgICAgfSwKKyAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAibGFiZWwiIDogIm5hbWUiCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3ZlcnRleHByb3BlcnR5LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvdmVydGV4cHJvcGVydHktdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmMTg0YjEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3ZlcnRleHByb3BlcnR5LXYzZDAuanNvbgpAQCAtMCwwICsxLDExIEBACit7CisgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICJAdmFsdWUiIDogeworICAgICJpZCIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgIkB2YWx1ZSIgOiAwCisgICAgfSwKKyAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAibGFiZWwiIDogIm5hbWUiCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3llYXItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3llYXItdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY0MjBiYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMveWVhci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpZZWFyIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3llYXItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy95ZWFyLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjQyMGJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy95ZWFyLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpZZWFyIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3llYXJtb250aC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMveWVhcm1vbnRoLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4YTVlMjcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3llYXJtb250aC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpZZWFyTW9udGgiLAorICAiQHZhbHVlIiA6ICIyMDE2LTA2IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMveWVhcm1vbnRoLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMveWVhcm1vbnRoLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OGE1ZTI3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy95ZWFybW9udGgtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlllYXJNb250aCIsCisgICJAdmFsdWUiIDogIjIwMTYtMDYiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy96b25lZGRhdGV0aW1lLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy96b25lZGRhdGV0aW1lLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2N2ZjNDcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3pvbmVkZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Wm9uZWREYXRlVGltZSIsCisgICJAdmFsdWUiIDogIjIwMTYtMTItMjNUMTI6MTI6MjQuMDAwMDAwMDM2KzAyOjAwW0dNVCswMjowMF0iCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy96b25lZGRhdGV0aW1lLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvem9uZWRkYXRldGltZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY3ZmM0NwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzMvem9uZWRkYXRldGltZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Wm9uZWREYXRlVGltZSIsCisgICJAdmFsdWUiIDogIjIwMTYtMTItMjNUMTI6MTI6MjQuMDAwMDAwMDM2KzAyOjAwW0dNVCswMjowMF0iCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy96b25lb2Zmc2V0LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy96b25lb2Zmc2V0LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1OTE3OTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3pvbmVvZmZzZXQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Wm9uZU9mZnNldCIsCisgICJAdmFsdWUiIDogIiswMzowNjowOSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF8zL3pvbmVvZmZzZXQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy96b25lb2Zmc2V0LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTkxNzk0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfMy96b25lb2Zmc2V0LXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpab25lT2Zmc2V0IiwKKyAgIkB2YWx1ZSIgOiAiKzAzOjA2OjA5IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGM1YjgyYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjFkMC5qc29uCkBAIC0wLDAgKzEsMTIgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IiwKKyAgInN0YXR1cyIgOiB7CisgICAgIm1lc3NhZ2UiIDogIiIsCisgICAgImNvZGUiIDogNDA3LAorICAgICJhdHRyaWJ1dGVzIiA6IHsgfQorICB9LAorICAicmVzdWx0IiA6IHsKKyAgICAiZGF0YSIgOiBudWxsLAorICAgICJtZXRhIiA6IHsgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzViODJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSwxMiBAQAoreworICAicmVxdWVzdElkIiA6ICI0MWQyZTI4YS0yMGE0LTRhYjAtYjM3OS1kODEwZGVkZTM3ODYiLAorICAic3RhdHVzIiA6IHsKKyAgICAibWVzc2FnZSIgOiAiIiwKKyAgICAiY29kZSIgOiA0MDcsCisgICAgImF0dHJpYnV0ZXMiIDogeyB9CisgIH0sCisgICJyZXN1bHQiIDogeworICAgICJkYXRhIiA6IG51bGwsCisgICAgIm1ldGEiIDogeyB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzViODJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDEyIEBACit7CisgICJyZXF1ZXN0SWQiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIsCisgICJzdGF0dXMiIDogeworICAgICJtZXNzYWdlIiA6ICIiLAorICAgICJjb2RlIiA6IDQwNywKKyAgICAiYXR0cmlidXRlcyIgOiB7IH0KKyAgfSwKKyAgInJlc3VsdCIgOiB7CisgICAgImRhdGEiIDogbnVsbCwKKyAgICAibWV0YSIgOiB7IH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDE3MzRjNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTggQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IiwKKyAgInN0YXR1cyIgOiB7CisgICAgIm1lc3NhZ2UiIDogIiIsCisgICAgImNvZGUiIDogNDA3LAorICAgICJhdHRyaWJ1dGVzIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbIF0KKyAgICB9CisgIH0sCisgICJyZXN1bHQiIDogeworICAgICJkYXRhIiA6IG51bGwsCisgICAgIm1ldGEiIDogeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgXQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYXV0aGVudGljYXRpb25yZXNwb25zZS12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzOGUxZmQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjFkMC5qc29uCkBAIC0wLDAgKzEsOSBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImF1dGhlbnRpY2F0aW9uIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJzYXNsTWVjaGFuaXNtIiA6ICJQTEFJTiIsCisgICAgInNhc2wiIDogIkFITjBaWEJvY0dobGJnQndZWE56ZDI5eVpBPT0iCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzhlMWZkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxLDkgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJhdXRoZW50aWNhdGlvbiIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAic2FzbE1lY2hhbmlzbSIgOiAiUExBSU4iLAorICAgICJzYXNsIiA6ICJBSE4wWlhCb2NHaGxiZ0J3WVhOemQyOXlaQT09IgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzOGUxZmQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw5IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiYXV0aGVudGljYXRpb24iLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgInNhc2xNZWNoYW5pc20iIDogIlBMQUlOIiwKKyAgICAic2FzbCIgOiAiQUhOMFpYQm9jR2hsYmdCd1lYTnpkMjl5WkE9PSIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYXV0aGVudGljYXRpb25yZXNwb25zZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhY2VjYTIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjNkMC5qc29uCkBAIC0wLDAgKzEsOSBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImF1dGhlbnRpY2F0aW9uIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAic2FzbE1lY2hhbmlzbSIsICJQTEFJTiIsICJzYXNsIiwgIkFITjBaWEJvY0dobGJnQndZWE56ZDI5eVpBPT0iIF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYmFycmllci12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYmFycmllci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZGRjY2RkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9iYXJyaWVyLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6QmFycmllciIsCisgICJAdmFsdWUiIDogIm5vcm1TYWNrIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYmFycmllci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2JhcnJpZXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkZGNjZGQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2JhcnJpZXItdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6QmFycmllciIsCisgICJAdmFsdWUiIDogIm5vcm1TYWNrIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYmlnZGVjaW1hbC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYmlnZGVjaW1hbC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzUzMzdjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9iaWdkZWNpbWFsLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJpZ0RlY2ltYWwiLAorICAiQHZhbHVlIiA6IDEyMzQ1Njc4OTk4NzY1NDMyMTEyMzQ1Njc4OTk4NzY1NDMyMQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYmlnZGVjaW1hbC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2JpZ2RlY2ltYWwtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3NTMzN2MKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2JpZ2RlY2ltYWwtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJpZ0RlY2ltYWwiLAorICAiQHZhbHVlIiA6IDEyMzQ1Njc4OTk4NzY1NDMyMTEyMzQ1Njc4OTk4NzY1NDMyMQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYmlnaW50ZWdlci12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYmlnaW50ZWdlci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OGU2MTE0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9iaWdpbnRlZ2VyLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJpZ0ludGVnZXIiLAorICAiQHZhbHVlIiA6IDEyMzQ1Njc4OTk4NzY1NDMyMTEyMzQ1Njc4OTk4NzY1NDMyMQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYmlnaW50ZWdlci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2JpZ2ludGVnZXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4ZTYxMTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2JpZ2ludGVnZXItdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJpZ0ludGVnZXIiLAorICAiQHZhbHVlIiA6IDEyMzQ1Njc4OTk4NzY1NDMyMTEyMzQ1Njc4OTk4NzY1NDMyMQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYmluZGluZy12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYmluZGluZy12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzliOGM3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9iaW5kaW5nLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkJpbmRpbmciLAorICAiQHZhbHVlIiA6IHsKKyAgICAia2V5IiA6ICJ4IiwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYmluZGluZy12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2JpbmRpbmctdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3OWI4YzcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2JpbmRpbmctdjNkMC5qc29uCkBAIC0wLDAgKzEsMTAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkJpbmRpbmciLAorICAiQHZhbHVlIiA6IHsKKyAgICAia2V5IiA6ICJ4IiwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYnVsa3NldC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYnVsa3NldC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODQ0OTc1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9idWxrc2V0LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEgQEAKK1sgIm1hcmtvIiwgImpvc2giLCAiam9zaCIgXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYnVsa3NldC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2J1bGtzZXQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyMTZhMzYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2J1bGtzZXQtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkJ1bGtTZXQiLAorICAiQHZhbHVlIiA6IFsgIm1hcmtvIiwgeworICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgIkB2YWx1ZSIgOiAxCisgIH0sICJqb3NoIiwgeworICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgIkB2YWx1ZSIgOiAyCisgIH0gXQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYnl0ZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYnl0ZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Nzk2MjViCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9ieXRlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJ5dGUiLAorICAiQHZhbHVlIiA6IDEKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2J5dGUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9ieXRlLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Nzk2MjViCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9ieXRlLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpCeXRlIiwKKyAgIkB2YWx1ZSIgOiAxCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9ieXRlYnVmZmVyLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9ieXRlYnVmZmVyLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3MjQxMTUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2J5dGVidWZmZXItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Qnl0ZUJ1ZmZlciIsCisgICJAdmFsdWUiIDogImMyOXRaU0JpZVhSbGN5Qm1iM0lnZVc5MSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2J5dGVidWZmZXItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9ieXRlYnVmZmVyLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzI0MTE1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9ieXRlYnVmZmVyLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpCeXRlQnVmZmVyIiwKKyAgIkB2YWx1ZSIgOiAiYzI5dFpTQmllWFJsY3lCbWIzSWdlVzkxIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYnl0ZWNvZGUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2J5dGVjb2RlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2OWQyNzcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2J5dGVjb2RlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNiBAQAoreworICAiQHR5cGUiIDogImc6Qnl0ZWNvZGUiLAorICAiQHZhbHVlIiA6IHsKKyAgICAic3RlcCIgOiBbIFsgIlYiIF0sIFsgImhhc0xhYmVsIiwgInBlcnNvbiIgXSwgWyAib3V0IiBdLCBbICJpbiIgXSwgWyAidHJlZSIgXSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2J5dGVjb2RlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvYnl0ZWNvZGUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2OWQyNzcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2J5dGVjb2RlLXYzZDAuanNvbgpAQCAtMCwwICsxLDYgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkJ5dGVjb2RlIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInN0ZXAiIDogWyBbICJWIiBdLCBbICJoYXNMYWJlbCIsICJwZXJzb24iIF0sIFsgIm91dCIgXSwgWyAiaW4iIF0sIFsgInRyZWUiIF0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9jYXJkaW5hbGl0eS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvY2FyZGluYWxpdHktdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM0ZTY0ZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvY2FyZGluYWxpdHktdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpDYXJkaW5hbGl0eSIsCisgICJAdmFsdWUiIDogImxpc3QiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9jYXJkaW5hbGl0eS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2NhcmRpbmFsaXR5LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzRlNjRlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9jYXJkaW5hbGl0eS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpDYXJkaW5hbGl0eSIsCisgICJAdmFsdWUiIDogImxpc3QiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9jaGFyLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9jaGFyLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmMjdlOWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2NoYXItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Q2hhciIsCisgICJAdmFsdWUiIDogIngiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9jaGFyLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvY2hhci12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGYyN2U5ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvY2hhci12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Q2hhciIsCisgICJAdmFsdWUiIDogIngiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9jbGFzcy12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvY2xhc3MtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBmMTVhMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvY2xhc3MtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpDbGFzcyIsCisgICJAdmFsdWUiIDogImphdmEuaW8uRmlsZSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2NsYXNzLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvY2xhc3MtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwZjE1YTIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2NsYXNzLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkNsYXNzIiwKKyAgIkB2YWx1ZSIgOiAiamF2YS5pby5GaWxlIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvY29sdW1uLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9jb2x1bW4tdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIzYTU2ZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvY29sdW1uLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6Q29sdW1uIiwKKyAgIkB2YWx1ZSIgOiAia2V5cyIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2NvbHVtbi12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2NvbHVtbi12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIzYTU2ZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvY29sdW1uLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkNvbHVtbiIsCisgICJAdmFsdWUiIDogImtleXMiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9kYXRlLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvZGF0ZS12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNiNzFhMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvZGF0ZS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSBAQAorMTQ4MTc1MDA3NjI5NQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvZGF0ZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvZGF0ZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjQwMDdhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9kYXRlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6RGF0ZSIsCisgICJAdmFsdWUiIDogMTQ4MTc1MDA3NjI5NQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvZGF0ZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2RhdGUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmNDAwN2EKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2RhdGUtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6RGF0ZSIsCisgICJAdmFsdWUiIDogMTQ4MTc1MDA3NjI5NQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvZGlyZWN0aW9uLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9kaXJlY3Rpb24tdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzhjYjdlNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvZGlyZWN0aW9uLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6RGlyZWN0aW9uIiwKKyAgIkB2YWx1ZSIgOiAiT1VUIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvZGlyZWN0aW9uLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvZGlyZWN0aW9uLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGNiN2U0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9kaXJlY3Rpb24tdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6RGlyZWN0aW9uIiwKKyAgIkB2YWx1ZSIgOiAiT1VUIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvZG91YmxlLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvZG91YmxlLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzcyZTYyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9kb3VibGUtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEgQEAKKzEwMC4wClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9kb3VibGUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2RvdWJsZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YWU0OTY0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9kb3VibGUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAiQHZhbHVlIiA6IDEwMC4wCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9kb3VibGUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9kb3VibGUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhZTQ5NjQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2RvdWJsZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAiQHZhbHVlIiA6IDEwMC4wCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9kdXJhdGlvbi12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvZHVyYXRpb24tdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVjMGNlOQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvZHVyYXRpb24tdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6RHVyYXRpb24iLAorICAiQHZhbHVlIiA6ICJQVDEyMEgiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9kdXJhdGlvbi12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2R1cmF0aW9uLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWMwY2U5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9kdXJhdGlvbi12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6RHVyYXRpb24iLAorICAiQHZhbHVlIiA6ICJQVDEyMEgiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9lZGdlLXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvZWRnZS12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGY3ZjE2OAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvZWRnZS12MWQwLmpzb24KQEAgLTAsMCArMSwxMiBAQAoreworICAiaWQiIDogMTMsCisgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAidHlwZSIgOiAiZWRnZSIsCisgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAiaW5WIiA6IDEwLAorICAib3V0ViIgOiAxLAorICAicHJvcGVydGllcyIgOiB7CisgICAgInNpbmNlIiA6IDIwMDkKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvZWRnZS12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2VkZ2UtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4ZTczZGIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2VkZ2UtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsMTQgQEAKK3sKKyAgImlkIiA6IDEzLAorICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICJpblYiIDogMTAsCisgICJvdXRWIiA6IDEsCisgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAic2luY2UiIDogeworICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgInZhbHVlIiA6IDIwMDkKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2VkZ2UtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2VkZ2UtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmExYzUyZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvZWRnZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDMyIEBACit7CisgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImlkIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEzCisgICAgfSwKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMTAKKyAgICB9LAorICAgICJvdXRWIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMjAwOQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvZWRnZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2VkZ2UtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhMWM1MmUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2VkZ2UtdjNkMC5qc29uCkBAIC0wLDAgKzEsMzIgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiaWQiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMTMKKyAgICB9LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxMAorICAgIH0sCisgICAgIm91dFYiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0sCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA5CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9mbG9hdC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvZmxvYXQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE3OWFhZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvZmxvYXQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpGbG9hdCIsCisgICJAdmFsdWUiIDogMTAwLjAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2Zsb2F0LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvZmxvYXQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxNzlhYWYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2Zsb2F0LXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkZsb2F0IiwKKyAgIkB2YWx1ZSIgOiAxMDAuMAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvaW5ldGFkZHJlc3MtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2luZXRhZGRyZXNzLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiYTk4YzAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2luZXRhZGRyZXNzLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkluZXRBZGRyZXNzIiwKKyAgIkB2YWx1ZSIgOiAibG9jYWxob3N0IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvaW5ldGFkZHJlc3MtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9pbmV0YWRkcmVzcy12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmJhOThjMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvaW5ldGFkZHJlc3MtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkluZXRBZGRyZXNzIiwKKyAgIkB2YWx1ZSIgOiAibG9jYWxob3N0IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvaW5zdGFudC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvaW5zdGFudC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzQ5NzQxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9pbnN0YW50LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4Okluc3RhbnQiLAorICAiQHZhbHVlIiA6ICIyMDE2LTEyLTE0VDE2OjM5OjE5LjM0OVoiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9pbnN0YW50LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvaW5zdGFudC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzc0OTc0MQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvaW5zdGFudC12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6SW5zdGFudCIsCisgICJAdmFsdWUiIDogIjIwMTYtMTItMTRUMTY6Mzk6MTkuMzQ5WiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2ludGVnZXItdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9pbnRlZ2VyLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDVkN2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9pbnRlZ2VyLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxIEBACisxMDAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2ludGVnZXItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2ludGVnZXItdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzUwY2U3YQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvaW50ZWdlci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgIkB2YWx1ZSIgOiAxMDAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2ludGVnZXItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9pbnRlZ2VyLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTBjZTdhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9pbnRlZ2VyLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgIkB2YWx1ZSIgOiAxMDAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2xhbWJkYS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvbGFtYmRhLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViZTE3OWIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2xhbWJkYS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDggQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkxhbWJkYSIsCisgICJAdmFsdWUiIDogeworICAgICJzY3JpcHQiIDogInsgaXQuZ2V0KCkgfSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImFyZ3VtZW50cyIgOiAxCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2xhbWJkYS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2xhbWJkYS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJlMTc5YgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvbGFtYmRhLXYzZDAuanNvbgpAQCAtMCwwICsxLDggQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkxhbWJkYSIsCisgICJAdmFsdWUiIDogeworICAgICJzY3JpcHQiIDogInsgaXQuZ2V0KCkgfSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImFyZ3VtZW50cyIgOiAxCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2xpc3QtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9saXN0LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzE0ZTJkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9saXN0LXYzZDAuanNvbgpAQCAtMCwwICsxLDcgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkxpc3QiLAorICAiQHZhbHVlIiA6IFsgeworICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgIkB2YWx1ZSIgOiAxCisgIH0sICJwZXJzb24iLCB0cnVlIF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2xvY2FsZGF0ZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvbG9jYWxkYXRlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2ZmI4MWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2xvY2FsZGF0ZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpMb2NhbERhdGUiLAorICAiQHZhbHVlIiA6ICIyMDE2LTAxLTAxIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvbG9jYWxkYXRlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvbG9jYWxkYXRlLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNmZiODFkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9sb2NhbGRhdGUtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkxvY2FsRGF0ZSIsCisgICJAdmFsdWUiIDogIjIwMTYtMDEtMDEiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9sb2NhbGRhdGV0aW1lLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9sb2NhbGRhdGV0aW1lLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkODM2NjgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2xvY2FsZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6TG9jYWxEYXRlVGltZSIsCisgICJAdmFsdWUiIDogIjIwMTYtMDEtMDFUMTI6MzAiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9sb2NhbGRhdGV0aW1lLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvbG9jYWxkYXRldGltZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQ4MzY2OAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvbG9jYWxkYXRldGltZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6TG9jYWxEYXRlVGltZSIsCisgICJAdmFsdWUiIDogIjIwMTYtMDEtMDFUMTI6MzAiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9sb2NhbHRpbWUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2xvY2FsdGltZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZmY2NWE3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9sb2NhbHRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6TG9jYWxUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMTI6MzA6NDUiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9sb2NhbHRpbWUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9sb2NhbHRpbWUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmZjY1YTcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2xvY2FsdGltZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6TG9jYWxUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMTI6MzA6NDUiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9sb25nLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9sb25nLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0YjlhMjMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L2xvbmctdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICJAdmFsdWUiIDogMTAwCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9sb25nLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvbG9uZy12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRiOWEyMwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvbG9uZy12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICJAdmFsdWUiIDogMTAwCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9tYXAtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9tYXAtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhZDU5YzkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L21hcC12M2QwLmpzb24KQEAgLTAsMCArMSwyNSBAQAoreworICAiQHR5cGUiIDogImc6TWFwIiwKKyAgIkB2YWx1ZSIgOiBbIHsKKyAgICAiQHR5cGUiIDogImc6RGF0ZSIsCisgICAgIkB2YWx1ZSIgOiAxNDgxNzUwMDc2Mjk1CisgIH0sICJyZWQiLCB7CisgICAgIkB0eXBlIiA6ICJnOkxpc3QiLAorICAgICJAdmFsdWUiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMgorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDMKKyAgICB9IF0KKyAgfSwgeworICAgICJAdHlwZSIgOiAiZzpEYXRlIiwKKyAgICAiQHZhbHVlIiA6IDE0ODE3NTAwNzYyOTUKKyAgfSwgInRlc3QiLCB7CisgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAiQHZhbHVlIiA6IDEyMworICB9IF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L21ldHJpY3MtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L21ldHJpY3MtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2IxZTk2NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvbWV0cmljcy12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDU0IEBACit7CisgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImR1ciIgOiB7CisgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICB9LAorICAgICJjb3VudHMiIDogeworICAgICAgInRyYXZlcnNlckNvdW50IiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICB9LAorICAgICAgImVsZW1lbnRDb3VudCIgOiB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgfQorICAgIH0sCisgICAgIm5hbWUiIDogIlRpbmtlckdyYXBoU3RlcCh2ZXJ0ZXgsW35sYWJlbC5lcShwZXJzb24pXSkiLAorICAgICJhbm5vdGF0aW9ucyIgOiB7CisgICAgICAicGVyY2VudER1ciIgOiB7CisgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgIH0KKyAgICB9LAorICAgICJpZCIgOiAiNy4wLjAoKSIsCisgICAgIm1ldHJpY3MiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImR1ciIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgICAgICB9LAorICAgICAgICAiY291bnRzIiA6IHsKKyAgICAgICAgICAidHJhdmVyc2VyQ291bnQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgIH0sCisgICAgICAgICAgImVsZW1lbnRDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibmFtZSIgOiAiVmVydGV4U3RlcChPVVQsdmVydGV4KSIsCisgICAgICAgICJhbm5vdGF0aW9ucyIgOiB7CisgICAgICAgICAgInBlcmNlbnREdXIiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJpZCIgOiAiMy4wLjAoKSIKKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvbWV0cmljcy12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L21ldHJpY3MtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2ZTY3OGIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L21ldHJpY3MtdjNkMC5qc29uCkBAIC0wLDAgKzEsNTIgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgImR1ciIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgIH0sICJjb3VudHMiLCB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyAidHJhdmVyc2VyQ291bnQiLCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgfSwgImVsZW1lbnRDb3VudCIsIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICB9IF0KKyAgICB9LCAibmFtZSIsICJUaW5rZXJHcmFwaFN0ZXAodmVydGV4LFt+bGFiZWwuZXEocGVyc29uKV0pIiwgImFubm90YXRpb25zIiwgeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgInBlcmNlbnREdXIiLCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgIH0gXQorICAgIH0sICJpZCIsICI3LjAuMCgpIiwgIm1ldHJpY3MiLCB7CisgICAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgICAiQHZhbHVlIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgICAgfSwgImNvdW50cyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJ0cmF2ZXJzZXJDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICB9LCAiZWxlbWVudENvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJuYW1lIiwgIlZlcnRleFN0ZXAoT1VULHZlcnRleCkiLCAiYW5ub3RhdGlvbnMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAicGVyY2VudER1ciIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgImlkIiwgIjMuMC4wKCkiIF0KKyAgICAgICAgfQorICAgICAgfSBdCisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L21vbnRoZGF5LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9tb250aGRheS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGE1OTE0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9tb250aGRheS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpNb250aERheSIsCisgICJAdmFsdWUiIDogIi0tMDEtMDEiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9tb250aGRheS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L21vbnRoZGF5LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGE1OTE0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9tb250aGRheS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6TW9udGhEYXkiLAorICAiQHZhbHVlIiA6ICItLTAxLTAxIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvb2Zmc2V0ZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L29mZnNldGRhdGV0aW1lLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzZjQ1Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L29mZnNldGRhdGV0aW1lLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4Ok9mZnNldERhdGVUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMjAwNy0xMi0wM1QxMDoxNTozMCswMTowMCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L29mZnNldGRhdGV0aW1lLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvb2Zmc2V0ZGF0ZXRpbWUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzZjQ1Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L29mZnNldGRhdGV0aW1lLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpPZmZzZXREYXRlVGltZSIsCisgICJAdmFsdWUiIDogIjIwMDctMTItMDNUMTA6MTU6MzArMDE6MDAiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9vZmZzZXR0aW1lLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9vZmZzZXR0aW1lLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxMjQ5NTMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L29mZnNldHRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6T2Zmc2V0VGltZSIsCisgICJAdmFsdWUiIDogIjEwOjE1OjMwKzAxOjAwIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvb2Zmc2V0dGltZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L29mZnNldHRpbWUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxMjQ5NTMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L29mZnNldHRpbWUtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4Ok9mZnNldFRpbWUiLAorICAiQHZhbHVlIiA6ICIxMDoxNTozMCswMTowMCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L29wZXJhdG9yLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9vcGVyYXRvci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNGMxNDAwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9vcGVyYXRvci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOk9wZXJhdG9yIiwKKyAgIkB2YWx1ZSIgOiAic3VtIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvb3BlcmF0b3ItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9vcGVyYXRvci12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTRjMTQwMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvb3BlcmF0b3ItdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6T3BlcmF0b3IiLAorICAiQHZhbHVlIiA6ICJzdW0iCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9vcmRlci12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvb3JkZXItdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGJlMDQzMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvb3JkZXItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpPcmRlciIsCisgICJAdmFsdWUiIDogInNodWZmbGUiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9vcmRlci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L29yZGVyLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmUwNDMyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9vcmRlci12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpPcmRlciIsCisgICJAdmFsdWUiIDogInNodWZmbGUiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9wLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9wLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViZGZiM2IKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3AtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogImd0IiwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMAorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3AtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViZGZiM2IKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3AtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJndCIsCisgICAgInZhbHVlIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDAKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3BhbmQtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3BhbmQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzI3MTk1OAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcGFuZC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDI1IEBACit7CisgICJAdHlwZSIgOiAiZzpQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAiYW5kIiwKKyAgICAidmFsdWUiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAiZ3QiLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAibHQiLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9CisgICAgICB9CisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3BhbmQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9wYW5kLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjcxOTU4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9wYW5kLXYzZDAuanNvbgpAQCAtMCwwICsxLDI1IEBACit7CisgICJAdHlwZSIgOiAiZzpQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAiYW5kIiwKKyAgICAidmFsdWUiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAiZ3QiLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAibHQiLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9CisgICAgICB9CisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3BhdGgtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9wYXRoLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZWVlODgzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9wYXRoLXYxZDAuanNvbgpAQCAtMCwwICsxLDYyIEBACit7CisgICJsYWJlbHMiIDogWyBbIF0sIFsgXSwgWyBdIF0sCisgICJvYmplY3RzIiA6IFsgeworICAgICJpZCIgOiAxLAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDAsCisgICAgICAgICJ2YWx1ZSIgOiAibWFya28iCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiA2LAorICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTcsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwMQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA3LAorICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDAxLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDQKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogOCwKKyAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDQsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA5LAorICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTAsCisgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiA0LAorICAgICAgICAidmFsdWUiIDogImdyZW1saW4iCisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTEsCisgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiA1LAorICAgICAgICAidmFsdWUiIDogInRpbmtlcmdyYXBoIgorICAgICAgfSBdCisgICAgfQorICB9IF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3BhdGgtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9wYXRoLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTkyZDJmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9wYXRoLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxLDEzIEBACit7CisgICJsYWJlbHMiIDogWyBbIF0sIFsgXSwgWyBdIF0sCisgICJvYmplY3RzIiA6IFsgeworICAgICJpZCIgOiAxLAorICAgICJsYWJlbCIgOiAicGVyc29uIgorICB9LCB7CisgICAgImlkIiA6IDEwLAorICAgICJsYWJlbCIgOiAic29mdHdhcmUiCisgIH0sIHsKKyAgICAiaWQiIDogMTEsCisgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIKKyAgfSBdCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9wYXRoLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9wYXRoLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljY2FhMDAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3BhdGgtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwzNCBAQAoreworICAiQHR5cGUiIDogImc6UGF0aCIsCisgICJAdmFsdWUiIDogeworICAgICJsYWJlbHMiIDogWyBbIF0sIFsgXSwgWyBdIF0sCisgICAgIm9iamVjdHMiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIgorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAic29mdHdhcmUiCisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIKKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcGF0aC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3BhdGgtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxNmIzOTMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3BhdGgtdjNkMC5qc29uCkBAIC0wLDAgKzEsNDkgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlBhdGgiLAorICAiQHZhbHVlIiA6IHsKKyAgICAibGFiZWxzIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICJAdmFsdWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpTZXQiLAorICAgICAgICAiQHZhbHVlIiA6IFsgXQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6U2V0IiwKKyAgICAgICAgIkB2YWx1ZSIgOiBbIF0KKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlNldCIsCisgICAgICAgICJAdmFsdWUiIDogWyBdCisgICAgICB9IF0KKyAgICB9LAorICAgICJvYmplY3RzIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICJAdmFsdWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICAgIH0sCisgICAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICAgIH0sCisgICAgICAgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgICAgfSwKKyAgICAgICAgICAibGFiZWwiIDogInNvZnR3YXJlIgorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3BlcmlvZC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcGVyaW9kLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwNDM4YTEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3BlcmlvZC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpQZXJpb2QiLAorICAiQHZhbHVlIiA6ICJQMVk2TTE1RCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3BlcmlvZC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3BlcmlvZC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjA0MzhhMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcGVyaW9kLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpQZXJpb2QiLAorICAiQHZhbHVlIiA6ICJQMVk2TTE1RCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3BpY2stdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3BpY2stdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NhMmYyZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcGljay12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlBpY2siLAorICAiQHZhbHVlIiA6ICJhbnkiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9waWNrLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcGljay12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NhMmYyZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcGljay12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpQaWNrIiwKKyAgIkB2YWx1ZSIgOiAiYW55IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcG9wLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9wb3AtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjcxNTE1ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcG9wLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6UG9wIiwKKyAgIkB2YWx1ZSIgOiAiYWxsIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcG9wLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcG9wLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzE1MTVmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9wb3AtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6UG9wIiwKKyAgIkB2YWx1ZSIgOiAiYWxsIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcG9yLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9wb3ItdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFmY2I3ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcG9yLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMzEgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJvciIsCisgICAgInZhbHVlIiA6IFsgeworICAgICAgIkB0eXBlIiA6ICJnOlAiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJwcmVkaWNhdGUiIDogImd0IiwKKyAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMAorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlAiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJwcmVkaWNhdGUiIDogIndpdGhpbiIsCisgICAgICAgICJ2YWx1ZSIgOiBbIHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogLTEKKyAgICAgICAgfSwgeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAtMTAKKyAgICAgICAgfSwgeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAtMTAwCisgICAgICAgIH0gXQorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9wb3ItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9wb3ItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3MWIxY2YKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Bvci12M2QwLmpzb24KQEAgLTAsMCArMSwzNCBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogIm9yIiwKKyAgICAidmFsdWUiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAiZ3QiLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAid2l0aGluIiwKKyAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgICAgICAgIkB2YWx1ZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IC0xCisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogLTEwCisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogLTEwMAorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Byb3BlcnR5LXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcHJvcGVydHktdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwNTFjMGEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Byb3BlcnR5LXYxZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgImtleSIgOiAic2luY2UiLAorICAidmFsdWUiIDogMjAwOQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcHJvcGVydHktdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9wcm9wZXJ0eS12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzA1MWMwYQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcHJvcGVydHktdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAia2V5IiA6ICJzaW5jZSIsCisgICJ2YWx1ZSIgOiAyMDA5Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9wcm9wZXJ0eS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcHJvcGVydHktdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjk2ZmUzMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcHJvcGVydHktdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAiQHZhbHVlIiA6IHsKKyAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgInZhbHVlIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Byb3BlcnR5LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcHJvcGVydHktdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5NmZlMzIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Byb3BlcnR5LXYzZDAuanNvbgpAQCAtMCwwICsxLDEwIEBACit7CisgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICJAdmFsdWUiIDogeworICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMjAwOQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcHdpdGhpbi12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcHdpdGhpbi12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZmEzODI2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9wd2l0aGluLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJ3aXRoaW4iLAorICAgICJ2YWx1ZSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcHdpdGhpbi12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3B3aXRoaW4tdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzZjk5Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3B3aXRoaW4tdjNkMC5qc29uCkBAIC0wLDAgKzEsMTMgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJ3aXRoaW4iLAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgICAiQHZhbHVlIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0gXQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvcHdpdGhvdXQtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3B3aXRob3V0LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjMjI5MWIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3B3aXRob3V0LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTMgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJ3aXRob3V0IiwKKyAgICAidmFsdWUiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMgorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9wd2l0aG91dC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3B3aXRob3V0LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTE2ODkwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9wd2l0aG91dC12M2QwLmpzb24KQEAgLTAsMCArMSwxNiBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogIndpdGhvdXQiLAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgICAiQHZhbHVlIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAyCisgICAgICB9IF0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Njb3BlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zY29wZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTc0YWYwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zY29wZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlNjb3BlIiwKKyAgIkB2YWx1ZSIgOiAibG9jYWwiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zY29wZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Njb3BlLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTc0YWYwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zY29wZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpTY29wZSIsCisgICJAdmFsdWUiIDogImxvY2FsIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2Vzc2lvbmNsb3NlLXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2Vzc2lvbmNsb3NlLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzgyNWU4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9uY2xvc2UtdjFkMC5qc29uCkBAIC0wLDAgKzEsOCBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImNsb3NlIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2Vzc2lvbmNsb3NlLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2Vzc2lvbmNsb3NlLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzgyNWU4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9uY2xvc2UtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsOCBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImNsb3NlIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2Vzc2lvbmNsb3NlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9uY2xvc2UtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWM4MjVlOAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2Vzc2lvbmNsb3NlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsOCBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImNsb3NlIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2Vzc2lvbmNsb3NlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2Vzc2lvbmNsb3NlLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmUxY2NkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9uY2xvc2UtdjNkMC5qc29uCkBAIC0wLDAgKzEsOSBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImNsb3NlIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgInNlc3Npb24iLCAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIgXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9uZXZhbC12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Nlc3Npb25ldmFsLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmNlODJmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9uZXZhbC12MWQwLmpzb24KQEAgLTAsMCArMSwxMyBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJnLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIiwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2Vzc2lvbmV2YWwtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9uZXZhbC12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGJjZTgyZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2Vzc2lvbmV2YWwtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsMTMgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAiZy5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIsCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IDEKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Nlc3Npb25ldmFsLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9uZXZhbC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZmY4Yjk2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9uZXZhbC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDE2IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogInNlc3Npb24iLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogImcuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgInNlc3Npb24iIDogInVuaXF1ZS1zZXNzaW9uLWlkZW50aWZpZXIiLAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2Vzc2lvbmV2YWwtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9uZXZhbC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzAxYzM5MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2Vzc2lvbmV2YWwtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTUgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgImdyZW1saW4iLCAiZy5WKHgpIiwgImxhbmd1YWdlIiwgImdyZW1saW4tZ3Jvb3Z5IiwgInNlc3Npb24iLCAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIsICJiaW5kaW5ncyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbICJ4IiwgeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0gXQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9uZXZhbGFsaWFzZWQtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9uZXZhbGFsaWFzZWQtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmNGVmNDYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Nlc3Npb25ldmFsYWxpYXNlZC12MWQwLmpzb24KQEAgLTAsMCArMSwxNiBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJzb2NpYWwuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImFsaWFzZXMiIDogeworICAgICAgImciIDogInNvY2lhbCIKKyAgICB9LAorICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIiwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2Vzc2lvbmV2YWxhbGlhc2VkLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2Vzc2lvbmV2YWxhbGlhc2VkLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjRlZjQ2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9uZXZhbGFsaWFzZWQtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsMTYgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAic29jaWFsLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJhbGlhc2VzIiA6IHsKKyAgICAgICJnIiA6ICJzb2NpYWwiCisgICAgfSwKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIsCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IDEKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Nlc3Npb25ldmFsYWxpYXNlZC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2Vzc2lvbmV2YWxhbGlhc2VkLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5NGU1ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Nlc3Npb25ldmFsYWxpYXNlZC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDE5IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogInNlc3Npb24iLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogInNvY2lhbC5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYWxpYXNlcyIgOiB7CisgICAgICAiZyIgOiAic29jaWFsIgorICAgIH0sCisgICAgInNlc3Npb24iIDogInVuaXF1ZS1zZXNzaW9uLWlkZW50aWZpZXIiLAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2Vzc2lvbmV2YWxhbGlhc2VkLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2Vzc2lvbmV2YWxhbGlhc2VkLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDQ4MTYwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9uZXZhbGFsaWFzZWQtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTggQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgImdyZW1saW4iLCAic29jaWFsLlYoeCkiLCAibGFuZ3VhZ2UiLCAiZ3JlbWxpbi1ncm9vdnkiLCAiYWxpYXNlcyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbICJnIiwgInNvY2lhbCIgXQorICAgIH0sICJzZXNzaW9uIiwgInVuaXF1ZS1zZXNzaW9uLWlkZW50aWZpZXIiLCAiYmluZGluZ3MiLCB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyAieCIsIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICB9IF0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2Vzc2lvbmxlc3NldmFsLXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2Vzc2lvbmxlc3NldmFsLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzlhODA3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9ubGVzc2V2YWwtdjFkMC5qc29uCkBAIC0wLDAgKzEsMTIgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJnLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9ubGVzc2V2YWwtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9ubGVzc2V2YWwtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjOWE4MDcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Nlc3Npb25sZXNzZXZhbC12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSwxMiBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogImcuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IDEKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Nlc3Npb25sZXNzZXZhbC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2Vzc2lvbmxlc3NldmFsLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxZTJmNmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Nlc3Npb25sZXNzZXZhbC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDE1IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAiZy5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Nlc3Npb25sZXNzZXZhbC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Nlc3Npb25sZXNzZXZhbC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGM4YzhlNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2Vzc2lvbmxlc3NldmFsLXYzZDAuanNvbgpAQCAtMCwwICsxLDE1IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgImdyZW1saW4iLCAiZy5WKHgpIiwgImxhbmd1YWdlIiwgImdyZW1saW4tZ3Jvb3Z5IiwgImJpbmRpbmdzIiwgeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgIngiLCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfSBdCisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OWYwYzZjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYxZDAuanNvbgpAQCAtMCwwICsxLDE1IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAic29jaWFsLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJhbGlhc2VzIiA6IHsKKyAgICAgICJnIiA6ICJzb2NpYWwiCisgICAgfSwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5ZjBjNmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsMTUgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJzb2NpYWwuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImFsaWFzZXMiIDogeworICAgICAgImciIDogInNvY2lhbCIKKyAgICB9LAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmNmE1NGUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxOCBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogInNvY2lhbC5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYWxpYXNlcyIgOiB7CisgICAgICAiZyIgOiAic29jaWFsIgorICAgIH0sCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmMwM2EzNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12M2QwLmpzb24KQEAgLTAsMCArMSwxOCBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgIkB2YWx1ZSIgOiBbICJncmVtbGluIiwgInNvY2lhbC5WKHgpIiwgImxhbmd1YWdlIiwgImdyZW1saW4tZ3Jvb3Z5IiwgImFsaWFzZXMiLCB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyAiZyIsICJzb2NpYWwiIF0KKyAgICB9LCAiYmluZGluZ3MiLCB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyAieCIsIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICB9IF0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2V0LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2V0LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMmRlZWEyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zZXQtdjNkMC5qc29uCkBAIC0wLDAgKzEsNyBAQAoreworICAiQHR5cGUiIDogImc6U2V0IiwKKyAgIkB2YWx1ZSIgOiBbIHsKKyAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICJAdmFsdWUiIDogMQorICB9LCAicGVyc29uIiwgdHJ1ZSBdCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zaG9ydC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2hvcnQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY4ZjVjZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2hvcnQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6SW50MTYiLAorICAiQHZhbHVlIiA6IDEwMAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2hvcnQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zaG9ydC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY4ZjVjZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc2hvcnQtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkludDE2IiwKKyAgIkB2YWx1ZSIgOiAxMDAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3N0YW5kYXJkcmVzdWx0LXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc3RhbmRhcmRyZXN1bHQtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliOTM3MjcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3N0YW5kYXJkcmVzdWx0LXYxZDAuanNvbgpAQCAtMCwwICsxLDUwIEBACit7CisgICJyZXF1ZXN0SWQiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIsCisgICJzdGF0dXMiIDogeworICAgICJtZXNzYWdlIiA6ICIiLAorICAgICJjb2RlIiA6IDIwMCwKKyAgICAiYXR0cmlidXRlcyIgOiB7IH0KKyAgfSwKKyAgInJlc3VsdCIgOiB7CisgICAgImRhdGEiIDogWyB7CisgICAgICAiaWQiIDogMSwKKyAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAiaWQiIDogMCwKKyAgICAgICAgICAidmFsdWUiIDogIm1hcmtvIgorICAgICAgICB9IF0sCisgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAiaWQiIDogNiwKKyAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiAxOTk3LAorICAgICAgICAgICAgImVuZFRpbWUiIDogMjAwMQorICAgICAgICAgIH0KKyAgICAgICAgfSwgeworICAgICAgICAgICJpZCIgOiA3LAorICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDAxLAorICAgICAgICAgICAgImVuZFRpbWUiIDogMjAwNAorICAgICAgICAgIH0KKyAgICAgICAgfSwgeworICAgICAgICAgICJpZCIgOiA4LAorICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDUKKyAgICAgICAgICB9CisgICAgICAgIH0sIHsKKyAgICAgICAgICAiaWQiIDogOSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDUKKyAgICAgICAgICB9CisgICAgICAgIH0gXQorICAgICAgfQorICAgIH0gXSwKKyAgICAibWV0YSIgOiB7IH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc3RhbmRhcmRyZXN1bHQtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3N0YW5kYXJkcmVzdWx0LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1N2M2ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3N0YW5kYXJkcmVzdWx0LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTExIEBACit7CisgICJyZXF1ZXN0SWQiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIsCisgICJzdGF0dXMiIDogeworICAgICJtZXNzYWdlIiA6ICIiLAorICAgICJjb2RlIiA6IDIwMCwKKyAgICAiYXR0cmlidXRlcyIgOiB7IH0KKyAgfSwKKyAgInJlc3VsdCIgOiB7CisgICAgImRhdGEiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTk3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0gXSwKKyAgICAibWV0YSIgOiB7IH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc3RhbmRhcmRyZXN1bHQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC9zdGFuZGFyZHJlc3VsdC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGZjYTQwMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvc3RhbmRhcmRyZXN1bHQtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTIwIEBACit7CisgICJyZXF1ZXN0SWQiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIsCisgICJzdGF0dXMiIDogeworICAgICJtZXNzYWdlIiA6ICIiLAorICAgICJjb2RlIiA6IDIwMCwKKyAgICAiYXR0cmlidXRlcyIgOiB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyBdCisgICAgfQorICB9LAorICAicmVzdWx0IiA6IHsKKyAgICAiZGF0YSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgICAiQHZhbHVlIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgICB9LAorICAgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBdLAorICAgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW4gZGllZ28iLAorICAgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5OTcKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBjcnV6IiwKKyAgICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBmZSIsCisgICAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9LAorICAgICJtZXRhIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbIF0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3QtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3QtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTY5Mzk4MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlQiLAorICAiQHZhbHVlIiA6ICJsYWJlbCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3QtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC90LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjkzOTgzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC90LXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlQiLAorICAiQHZhbHVlIiA6ICJsYWJlbCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3RleHRwLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC90ZXh0cC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODIwOTg5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC90ZXh0cC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDcgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlRleHRQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAiY29udGFpbmluZyIsCisgICAgInZhbHVlIiA6ICJhcmsiCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3RleHRwLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdGV4dHAtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4MjA5ODkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3RleHRwLXYzZDAuanNvbgpAQCAtMCwwICsxLDcgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlRleHRQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAiY29udGFpbmluZyIsCisgICAgInZhbHVlIiA6ICJhcmsiCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3RpbWVzdGFtcC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdGltZXN0YW1wLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjYTBlMTcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3RpbWVzdGFtcC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlRpbWVzdGFtcCIsCisgICJAdmFsdWUiIDogMTQ4MTc1MDA3NjI5NQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdGltZXN0YW1wLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdGltZXN0YW1wLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2EwZTE3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC90aW1lc3RhbXAtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6VGltZXN0YW1wIiwKKyAgIkB2YWx1ZSIgOiAxNDgxNzUwMDc2Mjk1Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC90aW5rZXJncmFwaC12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3RpbmtlcmdyYXBoLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzcxOWY2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC90aW5rZXJncmFwaC12MWQwLmpzb24KQEAgLTAsMCArMSwzMTMgQEAKK3sKKyAgInZlcnRpY2VzIiA6IFsgeworICAgICJpZCIgOiAxLAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDAsCisgICAgICAgICJ2YWx1ZSIgOiAibWFya28iCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiA2LAorICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTcsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwMQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA3LAorICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDAxLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDQKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogOCwKKyAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDQsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA5LAorICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogNywKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiAxLAorICAgICAgICAidmFsdWUiIDogInN0ZXBoZW4iCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiAxMCwKKyAgICAgICAgInZhbHVlIiA6ICJjZW50cmV2aWxsZSIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTAsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwMAorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxMSwKKyAgICAgICAgInZhbHVlIiA6ICJkdWxsZXMiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDAwLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDYKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTIsCisgICAgICAgICJ2YWx1ZSIgOiAicHVyY2VsbHZpbGxlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNgorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogOCwKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiAyLAorICAgICAgICAidmFsdWUiIDogIm1hdHRoaWFzIgorICAgICAgfSBdLAorICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAiaWQiIDogMTMsCisgICAgICAgICJ2YWx1ZSIgOiAiYnJlbWVuIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA3CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE0LAorICAgICAgICAidmFsdWUiIDogImJhbHRpbW9yZSIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDcsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAxMQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxNSwKKyAgICAgICAgInZhbHVlIiA6ICJvYWtsYW5kIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAxMSwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDE0CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE2LAorICAgICAgICAidmFsdWUiIDogInNlYXR0bGUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDE0CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiA5LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDMsCisgICAgICAgICJ2YWx1ZSIgOiAiZGFuaWVsIgorICAgICAgfSBdLAorICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAiaWQiIDogMTcsCisgICAgICAgICJ2YWx1ZSIgOiAic3ByZW1iZXJnIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMTk4MiwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE4LAorICAgICAgICAidmFsdWUiIDogImthaXNlcnNsYXV0ZXJuIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNSwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA5CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE5LAorICAgICAgICAidmFsdWUiIDogImFhY2hlbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDkKKyAgICAgICAgfQorICAgICAgfSBdCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDEwLAorICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogNCwKKyAgICAgICAgInZhbHVlIiA6ICJncmVtbGluIgorICAgICAgfSBdCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDExLAorICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogNSwKKyAgICAgICAgInZhbHVlIiA6ICJ0aW5rZXJncmFwaCIKKyAgICAgIH0gXQorICAgIH0KKyAgfSBdLAorICAiZWRnZXMiIDogWyB7CisgICAgImlkIiA6IDEzLAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogMjAwOQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxNCwKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDEsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IDIwMTAKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTUsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDEwLAorICAgICJvdXRWIiA6IDEsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IDQKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTYsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDEsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IDUKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTcsCisgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgInR5cGUiIDogImVkZ2UiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiAyMDEwCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE4LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogNywKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogMjAxMQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxOSwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogNywKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogNQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyMCwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogNywKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogNAorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyMSwKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDEwLAorICAgICJvdXRWIiA6IDgsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IDIwMTIKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjIsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDEwLAorICAgICJvdXRWIiA6IDgsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IDMKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjMsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDgsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IDMKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjQsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDEwLAorICAgICJvdXRWIiA6IDksCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IDUKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjUsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDksCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IDMKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjYsCisgICAgImxhYmVsIiA6ICJ0cmF2ZXJzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiAxMAorICB9IF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3RpbmtlcmdyYXBoLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdGlua2VyZ3JhcGgtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0YWQwNjEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3RpbmtlcmdyYXBoLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxLDM1MiBAQAoreworICAidmVydGljZXMiIDogWyB7CisgICAgImlkIiA6IDEsCisgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogMCwKKyAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgImlkIiA6IDYsCisgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTcsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwMQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA3LAorICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwMSwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA0CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDgsCisgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDksCisgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogNywKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiAxLAorICAgICAgICAidmFsdWUiIDogInN0ZXBoZW4iLAorICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiAxMCwKKyAgICAgICAgInZhbHVlIiA6ICJjZW50cmV2aWxsZSIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAxOTkwLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDAKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTEsCisgICAgICAgICJ2YWx1ZSIgOiAiZHVsbGVzIiwKKyAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDAsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNgorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxMiwKKyAgICAgICAgInZhbHVlIiA6ICJwdXJjZWxsdmlsbGUiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNgorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogOCwKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiAyLAorICAgICAgICAidmFsdWUiIDogIm1hdHRoaWFzIiwKKyAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgfSBdLAorICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAiaWQiIDogMTMsCisgICAgICAgICJ2YWx1ZSIgOiAiYnJlbWVuIiwKKyAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDQsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNworICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxNCwKKyAgICAgICAgInZhbHVlIiA6ICJiYWx0aW1vcmUiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNywKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDExCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE1LAorICAgICAgICAidmFsdWUiIDogIm9ha2xhbmQiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAxMSwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDE0CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE2LAorICAgICAgICAidmFsdWUiIDogInNlYXR0bGUiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAxNAorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogOSwKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiAzLAorICAgICAgICAidmFsdWUiIDogImRhbmllbCIsCisgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgImlkIiA6IDE3LAorICAgICAgICAidmFsdWUiIDogInNwcmVtYmVyZyIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAxOTgyLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDUKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTgsCisgICAgICAgICJ2YWx1ZSIgOiAia2Fpc2Vyc2xhdXRlcm4iLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNSwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA5CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE5LAorICAgICAgICAidmFsdWUiIDogImFhY2hlbiIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA5CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxMCwKKyAgICAibGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDQsCisgICAgICAgICJ2YWx1ZSIgOiAiZ3JlbWxpbiIsCisgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxMSwKKyAgICAibGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDUsCisgICAgICAgICJ2YWx1ZSIgOiAidGlua2VyZ3JhcGgiLAorICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICB9IF0KKyAgICB9CisgIH0gXSwKKyAgImVkZ2VzIiA6IFsgeworICAgICJpZCIgOiAxMywKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogeworICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICJ2YWx1ZSIgOiAyMDA5CisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE0LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiAxLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgInZhbHVlIiA6IDIwMTAKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTUsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiA0CisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE2LAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDEsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAidmFsdWUiIDogNQorICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxNywKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogNywKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogeworICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICJ2YWx1ZSIgOiAyMDEwCisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE4LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgInZhbHVlIiA6IDIwMTEKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTksCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogNywKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiA1CisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDIwLAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDcsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAidmFsdWUiIDogNAorICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyMSwKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogOCwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogeworICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICJ2YWx1ZSIgOiAyMDEyCisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDIyLAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDEwLAorICAgICJvdXRWIiA6IDgsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAidmFsdWUiIDogMworICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyMywKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiA4LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJza2lsbCIgOiB7CisgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgInZhbHVlIiA6IDMKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjQsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogOSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiA1CisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDI1LAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDksCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAidmFsdWUiIDogMworICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyNiwKKyAgICAibGFiZWwiIDogInRyYXZlcnNlcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogMTAKKyAgfSBdCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC90aW5rZXJncmFwaC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdGlua2VyZ3JhcGgtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjRlOTVlZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdGlua2VyZ3JhcGgtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw4MjkgQEAKK3sKKyAgIkB0eXBlIiA6ICJ0aW5rZXI6Z3JhcGgiLAorICAiQHZhbHVlIiA6IHsKKyAgICAidmVydGljZXMiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTk3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzdGVwaGVuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiY2VudHJldmlsbGUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5MAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJkdWxsZXMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTIKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJwdXJjZWxsdmlsbGUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogIm1hdHRoaWFzIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEzCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJlbWVuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDcKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE0CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYmFsdGltb3JlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDcKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTEKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE1CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAib2FrbGFuZCIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDExCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDE0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNlYXR0bGUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxNAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImRhbmllbCIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxNworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNwcmVtYmVyZyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTgyCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImthaXNlcnNsYXV0ZXJuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYWFjaGVuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJncmVtbGluIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInRpbmtlcmdyYXBoIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSBdLAorICAgICJlZGdlcyIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwOQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE0CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDEwCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTUKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE2CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDUKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxNworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE4CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDExCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTkKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDIwCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyMQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMgorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDIyCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDMKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyMworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAzCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjQKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDI1CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDMKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyNgorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInRyYXZlcnNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdGlua2VyZ3JhcGgtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC90aW5rZXJncmFwaC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjRlOTVlZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdGlua2VyZ3JhcGgtdjNkMC5qc29uCkBAIC0wLDAgKzEsODI5IEBACit7CisgICJAdHlwZSIgOiAidGlua2VyOmdyYXBoIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInZlcnRpY2VzIiA6IFsgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDYKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW4gZGllZ28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5NworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImJydXNzZWxzIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBmZSIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic3RlcGhlbiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImNlbnRyZXZpbGxlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5OTAKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDAKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiZHVsbGVzIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDAKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDYKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEyCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAicHVyY2VsbHZpbGxlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDYKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJtYXR0aGlhcyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImJyZW1lbiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA3CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxNAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImJhbHRpbW9yZSIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDExCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxNQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogIm9ha2xhbmQiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxNAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTYKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzZWF0dGxlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDMKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJkYW5pZWwiLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTcKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzcHJlbWJlcmciLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk4MgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTgKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJrYWlzZXJzbGF1dGVybiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA5CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImFhY2hlbiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA5CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiZ3JlbWxpbiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDUKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJ0aW5rZXJncmFwaCIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0gXSwKKyAgICAiZWRnZXMiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTMKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2luY2UiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxNAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE1CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxNgorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA1CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTcKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2luY2UiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTAKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxOAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE5CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDUKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyMAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2luY2UiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTIKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyMgorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAzCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjMKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDI0CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDUKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyNQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAzCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjYKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ0cmF2ZXJzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9CisgICAgICB9CisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3RyYXZlcnNhbG1ldHJpY3MtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3RyYXZlcnNhbG1ldHJpY3MtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmRkMThhNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdHJhdmVyc2FsbWV0cmljcy12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDExNCBAQAoreworICAiQHR5cGUiIDogImc6VHJhdmVyc2FsTWV0cmljcyIsCisgICJAdmFsdWUiIDogeworICAgICJkdXIiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAiQHZhbHVlIiA6IDAuMDA0CisgICAgfSwKKyAgICAibWV0cmljcyIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiZHVyIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgIH0sCisgICAgICAgICJjb3VudHMiIDogeworICAgICAgICAgICJ0cmF2ZXJzZXJDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICAgICAgfSwKKyAgICAgICAgICAiZWxlbWVudENvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJuYW1lIiA6ICJUaW5rZXJHcmFwaFN0ZXAodmVydGV4LFt+bGFiZWwuZXEocGVyc29uKV0pIiwKKyAgICAgICAgImFubm90YXRpb25zIiA6IHsKKyAgICAgICAgICAicGVyY2VudER1ciIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImlkIiA6ICI3LjAuMCgpIgorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiZHVyIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgIH0sCisgICAgICAgICJjb3VudHMiIDogeworICAgICAgICAgICJ0cmF2ZXJzZXJDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICAgIH0sCisgICAgICAgICAgImVsZW1lbnRDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIm5hbWUiIDogIlZlcnRleFN0ZXAoT1VULHZlcnRleCkiLAorICAgICAgICAiYW5ub3RhdGlvbnMiIDogeworICAgICAgICAgICJwZXJjZW50RHVyIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaWQiIDogIjIuMC4wKCkiCisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJkdXIiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgfSwKKyAgICAgICAgImNvdW50cyIgOiB7CisgICAgICAgICAgInRyYXZlcnNlckNvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICB9LAorICAgICAgICAgICJlbGVtZW50Q291bnQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIm5hbWUiIDogIlZlcnRleFN0ZXAoT1VULHZlcnRleCkiLAorICAgICAgICAiYW5ub3RhdGlvbnMiIDogeworICAgICAgICAgICJwZXJjZW50RHVyIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaWQiIDogIjMuMC4wKCkiCisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJkdXIiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgfSwKKyAgICAgICAgImNvdW50cyIgOiB7CisgICAgICAgICAgInRyYXZlcnNlckNvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgICB9LAorICAgICAgICAgICJlbGVtZW50Q291bnQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIm5hbWUiIDogIlRyZWVTdGVwIiwKKyAgICAgICAgImFubm90YXRpb25zIiA6IHsKKyAgICAgICAgICAicGVyY2VudER1ciIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImlkIiA6ICI0LjAuMCgpIgorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC90cmF2ZXJzYWxtZXRyaWNzLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdHJhdmVyc2FsbWV0cmljcy12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDZmNzYzNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdHJhdmVyc2FsbWV0cmljcy12M2QwLmpzb24KQEAgLTAsMCArMSwxMDkgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlRyYXZlcnNhbE1ldHJpY3MiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgImR1ciIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgIkB2YWx1ZSIgOiAwLjAwNAorICAgIH0sICJtZXRyaWNzIiwgeworICAgICAgIkB0eXBlIiA6ICJnOkxpc3QiLAorICAgICAgIkB2YWx1ZSIgOiBbIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IFsgImR1ciIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgICAgICAgIH0sICJjb3VudHMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAidHJhdmVyc2VyQ291bnQiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgICAgICAgfSwgImVsZW1lbnRDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICAgICAgICB9IF0KKyAgICAgICAgICB9LCAibmFtZSIsICJUaW5rZXJHcmFwaFN0ZXAodmVydGV4LFt+bGFiZWwuZXEocGVyc29uKV0pIiwgImFubm90YXRpb25zIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IFsgInBlcmNlbnREdXIiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJpZCIsICI3LjAuMCgpIiBdCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IFsgImR1ciIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgICAgICAgIH0sICJjb3VudHMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAidHJhdmVyc2VyQ291bnQiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMTMKKyAgICAgICAgICAgIH0sICJlbGVtZW50Q291bnQiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMTMKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJuYW1lIiwgIlZlcnRleFN0ZXAoT1VULHZlcnRleCkiLCAiYW5ub3RhdGlvbnMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAicGVyY2VudER1ciIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgImlkIiwgIjIuMC4wKCkiIF0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgICAgfSwgImNvdW50cyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJ0cmF2ZXJzZXJDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICB9LCAiZWxlbWVudENvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJuYW1lIiwgIlZlcnRleFN0ZXAoT1VULHZlcnRleCkiLCAiYW5ub3RhdGlvbnMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAicGVyY2VudER1ciIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgImlkIiwgIjMuMC4wKCkiIF0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgICAgfSwgImNvdW50cyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJ0cmF2ZXJzZXJDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgICAgICB9LCAiZWxlbWVudENvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJuYW1lIiwgIlRyZWVTdGVwIiwgImFubm90YXRpb25zIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IFsgInBlcmNlbnREdXIiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJpZCIsICI0LjAuMCgpIiBdCisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC90cmF2ZXJzZXItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3RyYXZlcnNlci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTlhMjllCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC90cmF2ZXJzZXItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMDkgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlRyYXZlcnNlciIsCisgICJAdmFsdWUiIDogeworICAgICJidWxrIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9LAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTk3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdHJhdmVyc2VyLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdHJhdmVyc2VyLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTlhMjllCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC90cmF2ZXJzZXItdjNkMC5qc29uCkBAIC0wLDAgKzEsMTA5IEBACit7CisgICJAdHlwZSIgOiAiZzpUcmF2ZXJzZXIiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiYnVsayIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfSwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDYKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW4gZGllZ28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5NworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImJydXNzZWxzIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBmZSIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3V1aWQtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC91dWlkLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzZmZjk2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC91dWlkLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxIEBACisiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdXVpZC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdXVpZC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2YwOWYwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC91dWlkLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6VVVJRCIsCisgICJAdmFsdWUiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3V1aWQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC91dWlkLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2YwOWYwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC91dWlkLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlVVSUQiLAorICAiQHZhbHVlIiA6ICI0MWQyZTI4YS0yMGE0LTRhYjAtYjM3OS1kODEwZGVkZTM3ODYiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC92ZXJ0ZXgtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC92ZXJ0ZXgtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4ODVmNTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3ZlcnRleC12MWQwLmpzb24KQEAgLTAsMCArMSwzOSBAQAoreworICAiaWQiIDogMSwKKyAgImxhYmVsIiA6ICJwZXJzb24iLAorICAidHlwZSIgOiAidmVydGV4IiwKKyAgInByb3BlcnRpZXMiIDogeworICAgICJuYW1lIiA6IFsgeworICAgICAgImlkIiA6IDAsCisgICAgICAidmFsdWUiIDogIm1hcmtvIgorICAgIH0gXSwKKyAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAiaWQiIDogNiwKKyAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgInN0YXJ0VGltZSIgOiAxOTk3LAorICAgICAgICAiZW5kVGltZSIgOiAyMDAxCisgICAgICB9CisgICAgfSwgeworICAgICAgImlkIiA6IDcsCisgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDEsCisgICAgICAgICJlbmRUaW1lIiA6IDIwMDQKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiaWQiIDogOCwKKyAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDQsCisgICAgICAgICJlbmRUaW1lIiA6IDIwMDUKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiaWQiIDogOSwKKyAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDUKKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdmVydGV4LXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdmVydGV4LXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTYxNTVmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC92ZXJ0ZXgtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsNDMgQEAKK3sKKyAgImlkIiA6IDEsCisgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgInByb3BlcnRpZXMiIDogeworICAgICJuYW1lIiA6IFsgeworICAgICAgImlkIiA6IDAsCisgICAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICB9IF0sCisgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgImlkIiA6IDYsCisgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgInN0YXJ0VGltZSIgOiAxOTk3LAorICAgICAgICAiZW5kVGltZSIgOiAyMDAxCisgICAgICB9CisgICAgfSwgeworICAgICAgImlkIiA6IDcsCisgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICJzdGFydFRpbWUiIDogMjAwMSwKKyAgICAgICAgImVuZFRpbWUiIDogMjAwNAorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJpZCIgOiA4LAorICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA0LAorICAgICAgICAiZW5kVGltZSIgOiAyMDA1CisgICAgICB9CisgICAgfSwgeworICAgICAgImlkIiA6IDksCisgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDUKKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdmVydGV4LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC92ZXJ0ZXgtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjEwMjIzMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdmVydGV4LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTAwIEBACit7CisgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiaWQiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0sCisgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMAorICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICB9CisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA2CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5NworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3ZlcnRleC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3ZlcnRleC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjEwMjIzMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdmVydGV4LXYzZDAuanNvbgpAQCAtMCwwICsxLDEwMCBAQAoreworICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImlkIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgICB9LAorICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgfQorICAgICAgfSBdLAorICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJzYW4gZGllZ28iLAorICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5OTcKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBjcnV6IiwKKyAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgICB9LAorICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBmZSIsCisgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSBdCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC92ZXJ0ZXhwcm9wZXJ0eS12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3ZlcnRleHByb3BlcnR5LXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDAyNWE4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC92ZXJ0ZXhwcm9wZXJ0eS12MWQwLmpzb24KQEAgLTAsMCArMSw1IEBACit7CisgICJpZCIgOiAwLAorICAidmFsdWUiIDogIm1hcmtvIiwKKyAgImxhYmVsIiA6ICJuYW1lIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdmVydGV4cHJvcGVydHktdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC92ZXJ0ZXhwcm9wZXJ0eS12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQwMjVhOAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdmVydGV4cHJvcGVydHktdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsNSBAQAoreworICAiaWQiIDogMCwKKyAgInZhbHVlIiA6ICJtYXJrbyIsCisgICJsYWJlbCIgOiAibmFtZSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3ZlcnRleHByb3BlcnR5LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC92ZXJ0ZXhwcm9wZXJ0eS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjE4NGIxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC92ZXJ0ZXhwcm9wZXJ0eS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDExIEBACit7CisgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICJAdmFsdWUiIDogeworICAgICJpZCIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgIkB2YWx1ZSIgOiAwCisgICAgfSwKKyAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAibGFiZWwiIDogIm5hbWUiCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3ZlcnRleHByb3BlcnR5LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvdmVydGV4cHJvcGVydHktdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmMTg0YjEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3ZlcnRleHByb3BlcnR5LXYzZDAuanNvbgpAQCAtMCwwICsxLDExIEBACit7CisgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICJAdmFsdWUiIDogeworICAgICJpZCIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgIkB2YWx1ZSIgOiAwCisgICAgfSwKKyAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAibGFiZWwiIDogIm5hbWUiCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3llYXItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3llYXItdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY0MjBiYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQveWVhci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpZZWFyIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3llYXItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC95ZWFyLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjQyMGJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC95ZWFyLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpZZWFyIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3llYXJtb250aC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQveWVhcm1vbnRoLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4YTVlMjcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3llYXJtb250aC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpZZWFyTW9udGgiLAorICAiQHZhbHVlIiA6ICIyMDE2LTA2IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQveWVhcm1vbnRoLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQveWVhcm1vbnRoLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OGE1ZTI3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC95ZWFybW9udGgtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlllYXJNb250aCIsCisgICJAdmFsdWUiIDogIjIwMTYtMDYiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC96b25lZGRhdGV0aW1lLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC96b25lZGRhdGV0aW1lLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2N2ZjNDcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3pvbmVkZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Wm9uZWREYXRlVGltZSIsCisgICJAdmFsdWUiIDogIjIwMTYtMTItMjNUMTI6MTI6MjQuMDAwMDAwMDM2KzAyOjAwW0dNVCswMjowMF0iCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC96b25lZGRhdGV0aW1lLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvem9uZWRkYXRldGltZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY3ZmM0NwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzQvem9uZWRkYXRldGltZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Wm9uZWREYXRlVGltZSIsCisgICJAdmFsdWUiIDogIjIwMTYtMTItMjNUMTI6MTI6MjQuMDAwMDAwMDM2KzAyOjAwW0dNVCswMjowMF0iCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC96b25lb2Zmc2V0LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC96b25lb2Zmc2V0LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1OTE3OTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3pvbmVvZmZzZXQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Wm9uZU9mZnNldCIsCisgICJAdmFsdWUiIDogIiswMzowNjowOSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF80L3pvbmVvZmZzZXQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC96b25lb2Zmc2V0LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTkxNzk0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNC96b25lb2Zmc2V0LXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpab25lT2Zmc2V0IiwKKyAgIkB2YWx1ZSIgOiAiKzAzOjA2OjA5IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGM1YjgyYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjFkMC5qc29uCkBAIC0wLDAgKzEsMTIgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IiwKKyAgInN0YXR1cyIgOiB7CisgICAgIm1lc3NhZ2UiIDogIiIsCisgICAgImNvZGUiIDogNDA3LAorICAgICJhdHRyaWJ1dGVzIiA6IHsgfQorICB9LAorICAicmVzdWx0IiA6IHsKKyAgICAiZGF0YSIgOiBudWxsLAorICAgICJtZXRhIiA6IHsgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzViODJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSwxMiBAQAoreworICAicmVxdWVzdElkIiA6ICI0MWQyZTI4YS0yMGE0LTRhYjAtYjM3OS1kODEwZGVkZTM3ODYiLAorICAic3RhdHVzIiA6IHsKKyAgICAibWVzc2FnZSIgOiAiIiwKKyAgICAiY29kZSIgOiA0MDcsCisgICAgImF0dHJpYnV0ZXMiIDogeyB9CisgIH0sCisgICJyZXN1bHQiIDogeworICAgICJkYXRhIiA6IG51bGwsCisgICAgIm1ldGEiIDogeyB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzViODJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDEyIEBACit7CisgICJyZXF1ZXN0SWQiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIsCisgICJzdGF0dXMiIDogeworICAgICJtZXNzYWdlIiA6ICIiLAorICAgICJjb2RlIiA6IDQwNywKKyAgICAiYXR0cmlidXRlcyIgOiB7IH0KKyAgfSwKKyAgInJlc3VsdCIgOiB7CisgICAgImRhdGEiIDogbnVsbCwKKyAgICAibWV0YSIgOiB7IH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDE3MzRjNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTggQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IiwKKyAgInN0YXR1cyIgOiB7CisgICAgIm1lc3NhZ2UiIDogIiIsCisgICAgImNvZGUiIDogNDA3LAorICAgICJhdHRyaWJ1dGVzIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbIF0KKyAgICB9CisgIH0sCisgICJyZXN1bHQiIDogeworICAgICJkYXRhIiA6IG51bGwsCisgICAgIm1ldGEiIDogeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgXQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYXV0aGVudGljYXRpb25yZXNwb25zZS12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzOGUxZmQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjFkMC5qc29uCkBAIC0wLDAgKzEsOSBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImF1dGhlbnRpY2F0aW9uIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJzYXNsTWVjaGFuaXNtIiA6ICJQTEFJTiIsCisgICAgInNhc2wiIDogIkFITjBaWEJvY0dobGJnQndZWE56ZDI5eVpBPT0iCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzhlMWZkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxLDkgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJhdXRoZW50aWNhdGlvbiIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAic2FzbE1lY2hhbmlzbSIgOiAiUExBSU4iLAorICAgICJzYXNsIiA6ICJBSE4wWlhCb2NHaGxiZ0J3WVhOemQyOXlaQT09IgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzOGUxZmQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw5IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiYXV0aGVudGljYXRpb24iLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgInNhc2xNZWNoYW5pc20iIDogIlBMQUlOIiwKKyAgICAic2FzbCIgOiAiQUhOMFpYQm9jR2hsYmdCd1lYTnpkMjl5WkE9PSIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYXV0aGVudGljYXRpb25yZXNwb25zZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhY2VjYTIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjNkMC5qc29uCkBAIC0wLDAgKzEsOSBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImF1dGhlbnRpY2F0aW9uIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAic2FzbE1lY2hhbmlzbSIsICJQTEFJTiIsICJzYXNsIiwgIkFITjBaWEJvY0dobGJnQndZWE56ZDI5eVpBPT0iIF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYmFycmllci12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYmFycmllci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZGRjY2RkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9iYXJyaWVyLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6QmFycmllciIsCisgICJAdmFsdWUiIDogIm5vcm1TYWNrIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYmFycmllci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2JhcnJpZXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkZGNjZGQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2JhcnJpZXItdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6QmFycmllciIsCisgICJAdmFsdWUiIDogIm5vcm1TYWNrIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYmlnZGVjaW1hbC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYmlnZGVjaW1hbC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzUzMzdjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9iaWdkZWNpbWFsLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJpZ0RlY2ltYWwiLAorICAiQHZhbHVlIiA6IDEyMzQ1Njc4OTk4NzY1NDMyMTEyMzQ1Njc4OTk4NzY1NDMyMQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYmlnZGVjaW1hbC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2JpZ2RlY2ltYWwtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3NTMzN2MKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2JpZ2RlY2ltYWwtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJpZ0RlY2ltYWwiLAorICAiQHZhbHVlIiA6IDEyMzQ1Njc4OTk4NzY1NDMyMTEyMzQ1Njc4OTk4NzY1NDMyMQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYmlnaW50ZWdlci12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYmlnaW50ZWdlci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OGU2MTE0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9iaWdpbnRlZ2VyLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJpZ0ludGVnZXIiLAorICAiQHZhbHVlIiA6IDEyMzQ1Njc4OTk4NzY1NDMyMTEyMzQ1Njc4OTk4NzY1NDMyMQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYmlnaW50ZWdlci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2JpZ2ludGVnZXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4ZTYxMTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2JpZ2ludGVnZXItdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJpZ0ludGVnZXIiLAorICAiQHZhbHVlIiA6IDEyMzQ1Njc4OTk4NzY1NDMyMTEyMzQ1Njc4OTk4NzY1NDMyMQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYmluZGluZy12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYmluZGluZy12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzliOGM3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9iaW5kaW5nLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkJpbmRpbmciLAorICAiQHZhbHVlIiA6IHsKKyAgICAia2V5IiA6ICJ4IiwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYmluZGluZy12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2JpbmRpbmctdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3OWI4YzcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2JpbmRpbmctdjNkMC5qc29uCkBAIC0wLDAgKzEsMTAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkJpbmRpbmciLAorICAiQHZhbHVlIiA6IHsKKyAgICAia2V5IiA6ICJ4IiwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYnVsa3NldC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYnVsa3NldC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODQ0OTc1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9idWxrc2V0LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEgQEAKK1sgIm1hcmtvIiwgImpvc2giLCAiam9zaCIgXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYnVsa3NldC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2J1bGtzZXQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyMTZhMzYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2J1bGtzZXQtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkJ1bGtTZXQiLAorICAiQHZhbHVlIiA6IFsgIm1hcmtvIiwgeworICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgIkB2YWx1ZSIgOiAxCisgIH0sICJqb3NoIiwgeworICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgIkB2YWx1ZSIgOiAyCisgIH0gXQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYnl0ZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYnl0ZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Nzk2MjViCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9ieXRlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJ5dGUiLAorICAiQHZhbHVlIiA6IDEKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2J5dGUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9ieXRlLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Nzk2MjViCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9ieXRlLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpCeXRlIiwKKyAgIkB2YWx1ZSIgOiAxCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9ieXRlYnVmZmVyLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9ieXRlYnVmZmVyLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3MjQxMTUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2J5dGVidWZmZXItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Qnl0ZUJ1ZmZlciIsCisgICJAdmFsdWUiIDogImMyOXRaU0JpZVhSbGN5Qm1iM0lnZVc5MSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2J5dGVidWZmZXItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9ieXRlYnVmZmVyLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzI0MTE1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9ieXRlYnVmZmVyLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpCeXRlQnVmZmVyIiwKKyAgIkB2YWx1ZSIgOiAiYzI5dFpTQmllWFJsY3lCbWIzSWdlVzkxIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYnl0ZWNvZGUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2J5dGVjb2RlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2OWQyNzcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2J5dGVjb2RlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNiBAQAoreworICAiQHR5cGUiIDogImc6Qnl0ZWNvZGUiLAorICAiQHZhbHVlIiA6IHsKKyAgICAic3RlcCIgOiBbIFsgIlYiIF0sIFsgImhhc0xhYmVsIiwgInBlcnNvbiIgXSwgWyAib3V0IiBdLCBbICJpbiIgXSwgWyAidHJlZSIgXSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2J5dGVjb2RlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvYnl0ZWNvZGUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2OWQyNzcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2J5dGVjb2RlLXYzZDAuanNvbgpAQCAtMCwwICsxLDYgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkJ5dGVjb2RlIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInN0ZXAiIDogWyBbICJWIiBdLCBbICJoYXNMYWJlbCIsICJwZXJzb24iIF0sIFsgIm91dCIgXSwgWyAiaW4iIF0sIFsgInRyZWUiIF0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9jYXJkaW5hbGl0eS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvY2FyZGluYWxpdHktdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM0ZTY0ZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvY2FyZGluYWxpdHktdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpDYXJkaW5hbGl0eSIsCisgICJAdmFsdWUiIDogImxpc3QiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9jYXJkaW5hbGl0eS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2NhcmRpbmFsaXR5LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzRlNjRlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9jYXJkaW5hbGl0eS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpDYXJkaW5hbGl0eSIsCisgICJAdmFsdWUiIDogImxpc3QiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9jaGFyLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9jaGFyLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmMjdlOWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2NoYXItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Q2hhciIsCisgICJAdmFsdWUiIDogIngiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9jaGFyLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvY2hhci12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGYyN2U5ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvY2hhci12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Q2hhciIsCisgICJAdmFsdWUiIDogIngiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9jbGFzcy12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvY2xhc3MtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBmMTVhMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvY2xhc3MtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpDbGFzcyIsCisgICJAdmFsdWUiIDogImphdmEuaW8uRmlsZSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2NsYXNzLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvY2xhc3MtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwZjE1YTIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2NsYXNzLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkNsYXNzIiwKKyAgIkB2YWx1ZSIgOiAiamF2YS5pby5GaWxlIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvY29sdW1uLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9jb2x1bW4tdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIzYTU2ZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvY29sdW1uLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6Q29sdW1uIiwKKyAgIkB2YWx1ZSIgOiAia2V5cyIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2NvbHVtbi12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2NvbHVtbi12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIzYTU2ZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvY29sdW1uLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkNvbHVtbiIsCisgICJAdmFsdWUiIDogImtleXMiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9kYXRlLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvZGF0ZS12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNiNzFhMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvZGF0ZS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSBAQAorMTQ4MTc1MDA3NjI5NQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvZGF0ZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvZGF0ZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjQwMDdhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9kYXRlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6RGF0ZSIsCisgICJAdmFsdWUiIDogMTQ4MTc1MDA3NjI5NQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvZGF0ZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2RhdGUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmNDAwN2EKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2RhdGUtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6RGF0ZSIsCisgICJAdmFsdWUiIDogMTQ4MTc1MDA3NjI5NQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvZGlyZWN0aW9uLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9kaXJlY3Rpb24tdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzhjYjdlNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvZGlyZWN0aW9uLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6RGlyZWN0aW9uIiwKKyAgIkB2YWx1ZSIgOiAiT1VUIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvZGlyZWN0aW9uLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvZGlyZWN0aW9uLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGNiN2U0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9kaXJlY3Rpb24tdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6RGlyZWN0aW9uIiwKKyAgIkB2YWx1ZSIgOiAiT1VUIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvZG91YmxlLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvZG91YmxlLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzcyZTYyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9kb3VibGUtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEgQEAKKzEwMC4wClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9kb3VibGUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2RvdWJsZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YWU0OTY0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9kb3VibGUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAiQHZhbHVlIiA6IDEwMC4wCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9kb3VibGUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9kb3VibGUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhZTQ5NjQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2RvdWJsZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAiQHZhbHVlIiA6IDEwMC4wCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9kdXJhdGlvbi12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvZHVyYXRpb24tdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVjMGNlOQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvZHVyYXRpb24tdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6RHVyYXRpb24iLAorICAiQHZhbHVlIiA6ICJQVDEyMEgiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9kdXJhdGlvbi12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2R1cmF0aW9uLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWMwY2U5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9kdXJhdGlvbi12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6RHVyYXRpb24iLAorICAiQHZhbHVlIiA6ICJQVDEyMEgiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9lZGdlLXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvZWRnZS12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGY3ZjE2OAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvZWRnZS12MWQwLmpzb24KQEAgLTAsMCArMSwxMiBAQAoreworICAiaWQiIDogMTMsCisgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAidHlwZSIgOiAiZWRnZSIsCisgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAiaW5WIiA6IDEwLAorICAib3V0ViIgOiAxLAorICAicHJvcGVydGllcyIgOiB7CisgICAgInNpbmNlIiA6IDIwMDkKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvZWRnZS12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2VkZ2UtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4ZTczZGIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2VkZ2UtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsMTQgQEAKK3sKKyAgImlkIiA6IDEzLAorICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICJpblYiIDogMTAsCisgICJvdXRWIiA6IDEsCisgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAic2luY2UiIDogeworICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgInZhbHVlIiA6IDIwMDkKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2VkZ2UtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2VkZ2UtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmExYzUyZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvZWRnZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDMyIEBACit7CisgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImlkIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEzCisgICAgfSwKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMTAKKyAgICB9LAorICAgICJvdXRWIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMjAwOQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvZWRnZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2VkZ2UtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhMWM1MmUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2VkZ2UtdjNkMC5qc29uCkBAIC0wLDAgKzEsMzIgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiaWQiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMTMKKyAgICB9LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxMAorICAgIH0sCisgICAgIm91dFYiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0sCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA5CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9mbG9hdC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvZmxvYXQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE3OWFhZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvZmxvYXQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpGbG9hdCIsCisgICJAdmFsdWUiIDogMTAwLjAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2Zsb2F0LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvZmxvYXQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxNzlhYWYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2Zsb2F0LXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkZsb2F0IiwKKyAgIkB2YWx1ZSIgOiAxMDAuMAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvaW5ldGFkZHJlc3MtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2luZXRhZGRyZXNzLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiYTk4YzAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2luZXRhZGRyZXNzLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkluZXRBZGRyZXNzIiwKKyAgIkB2YWx1ZSIgOiAibG9jYWxob3N0IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvaW5ldGFkZHJlc3MtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9pbmV0YWRkcmVzcy12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmJhOThjMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvaW5ldGFkZHJlc3MtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkluZXRBZGRyZXNzIiwKKyAgIkB2YWx1ZSIgOiAibG9jYWxob3N0IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvaW5zdGFudC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvaW5zdGFudC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzQ5NzQxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9pbnN0YW50LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4Okluc3RhbnQiLAorICAiQHZhbHVlIiA6ICIyMDE2LTEyLTE0VDE2OjM5OjE5LjM0OVoiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9pbnN0YW50LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvaW5zdGFudC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzc0OTc0MQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvaW5zdGFudC12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6SW5zdGFudCIsCisgICJAdmFsdWUiIDogIjIwMTYtMTItMTRUMTY6Mzk6MTkuMzQ5WiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2ludGVnZXItdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9pbnRlZ2VyLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDVkN2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9pbnRlZ2VyLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxIEBACisxMDAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2ludGVnZXItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2ludGVnZXItdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzUwY2U3YQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvaW50ZWdlci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgIkB2YWx1ZSIgOiAxMDAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2ludGVnZXItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9pbnRlZ2VyLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTBjZTdhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9pbnRlZ2VyLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgIkB2YWx1ZSIgOiAxMDAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2xhbWJkYS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvbGFtYmRhLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViZTE3OWIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2xhbWJkYS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDggQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkxhbWJkYSIsCisgICJAdmFsdWUiIDogeworICAgICJzY3JpcHQiIDogInsgaXQuZ2V0KCkgfSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImFyZ3VtZW50cyIgOiAxCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2xhbWJkYS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2xhbWJkYS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJlMTc5YgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvbGFtYmRhLXYzZDAuanNvbgpAQCAtMCwwICsxLDggQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkxhbWJkYSIsCisgICJAdmFsdWUiIDogeworICAgICJzY3JpcHQiIDogInsgaXQuZ2V0KCkgfSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImFyZ3VtZW50cyIgOiAxCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2xpc3QtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9saXN0LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzE0ZTJkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9saXN0LXYzZDAuanNvbgpAQCAtMCwwICsxLDcgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkxpc3QiLAorICAiQHZhbHVlIiA6IFsgeworICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgIkB2YWx1ZSIgOiAxCisgIH0sICJwZXJzb24iLCB0cnVlIF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2xvY2FsZGF0ZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvbG9jYWxkYXRlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2ZmI4MWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2xvY2FsZGF0ZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpMb2NhbERhdGUiLAorICAiQHZhbHVlIiA6ICIyMDE2LTAxLTAxIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvbG9jYWxkYXRlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvbG9jYWxkYXRlLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNmZiODFkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9sb2NhbGRhdGUtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkxvY2FsRGF0ZSIsCisgICJAdmFsdWUiIDogIjIwMTYtMDEtMDEiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9sb2NhbGRhdGV0aW1lLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9sb2NhbGRhdGV0aW1lLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkODM2NjgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2xvY2FsZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6TG9jYWxEYXRlVGltZSIsCisgICJAdmFsdWUiIDogIjIwMTYtMDEtMDFUMTI6MzAiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9sb2NhbGRhdGV0aW1lLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvbG9jYWxkYXRldGltZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQ4MzY2OAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvbG9jYWxkYXRldGltZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6TG9jYWxEYXRlVGltZSIsCisgICJAdmFsdWUiIDogIjIwMTYtMDEtMDFUMTI6MzAiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9sb2NhbHRpbWUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2xvY2FsdGltZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZmY2NWE3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9sb2NhbHRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6TG9jYWxUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMTI6MzA6NDUiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9sb2NhbHRpbWUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9sb2NhbHRpbWUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmZjY1YTcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2xvY2FsdGltZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6TG9jYWxUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMTI6MzA6NDUiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9sb25nLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9sb25nLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0YjlhMjMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L2xvbmctdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICJAdmFsdWUiIDogMTAwCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9sb25nLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvbG9uZy12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRiOWEyMwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvbG9uZy12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICJAdmFsdWUiIDogMTAwCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9tYXAtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9tYXAtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhZDU5YzkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L21hcC12M2QwLmpzb24KQEAgLTAsMCArMSwyNSBAQAoreworICAiQHR5cGUiIDogImc6TWFwIiwKKyAgIkB2YWx1ZSIgOiBbIHsKKyAgICAiQHR5cGUiIDogImc6RGF0ZSIsCisgICAgIkB2YWx1ZSIgOiAxNDgxNzUwMDc2Mjk1CisgIH0sICJyZWQiLCB7CisgICAgIkB0eXBlIiA6ICJnOkxpc3QiLAorICAgICJAdmFsdWUiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMgorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDMKKyAgICB9IF0KKyAgfSwgeworICAgICJAdHlwZSIgOiAiZzpEYXRlIiwKKyAgICAiQHZhbHVlIiA6IDE0ODE3NTAwNzYyOTUKKyAgfSwgInRlc3QiLCB7CisgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAiQHZhbHVlIiA6IDEyMworICB9IF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L21ldHJpY3MtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L21ldHJpY3MtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2IxZTk2NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvbWV0cmljcy12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDU0IEBACit7CisgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImR1ciIgOiB7CisgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICB9LAorICAgICJjb3VudHMiIDogeworICAgICAgInRyYXZlcnNlckNvdW50IiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICB9LAorICAgICAgImVsZW1lbnRDb3VudCIgOiB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgfQorICAgIH0sCisgICAgIm5hbWUiIDogIlRpbmtlckdyYXBoU3RlcCh2ZXJ0ZXgsW35sYWJlbC5lcShwZXJzb24pXSkiLAorICAgICJhbm5vdGF0aW9ucyIgOiB7CisgICAgICAicGVyY2VudER1ciIgOiB7CisgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgIH0KKyAgICB9LAorICAgICJpZCIgOiAiNy4wLjAoKSIsCisgICAgIm1ldHJpY3MiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImR1ciIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgICAgICB9LAorICAgICAgICAiY291bnRzIiA6IHsKKyAgICAgICAgICAidHJhdmVyc2VyQ291bnQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgIH0sCisgICAgICAgICAgImVsZW1lbnRDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibmFtZSIgOiAiVmVydGV4U3RlcChPVVQsdmVydGV4KSIsCisgICAgICAgICJhbm5vdGF0aW9ucyIgOiB7CisgICAgICAgICAgInBlcmNlbnREdXIiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJpZCIgOiAiMy4wLjAoKSIKKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvbWV0cmljcy12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L21ldHJpY3MtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2ZTY3OGIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L21ldHJpY3MtdjNkMC5qc29uCkBAIC0wLDAgKzEsNTIgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgImR1ciIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgIH0sICJjb3VudHMiLCB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyAidHJhdmVyc2VyQ291bnQiLCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgfSwgImVsZW1lbnRDb3VudCIsIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICB9IF0KKyAgICB9LCAibmFtZSIsICJUaW5rZXJHcmFwaFN0ZXAodmVydGV4LFt+bGFiZWwuZXEocGVyc29uKV0pIiwgImFubm90YXRpb25zIiwgeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgInBlcmNlbnREdXIiLCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgIH0gXQorICAgIH0sICJpZCIsICI3LjAuMCgpIiwgIm1ldHJpY3MiLCB7CisgICAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgICAiQHZhbHVlIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgICAgfSwgImNvdW50cyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJ0cmF2ZXJzZXJDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICB9LCAiZWxlbWVudENvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJuYW1lIiwgIlZlcnRleFN0ZXAoT1VULHZlcnRleCkiLCAiYW5ub3RhdGlvbnMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAicGVyY2VudER1ciIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgImlkIiwgIjMuMC4wKCkiIF0KKyAgICAgICAgfQorICAgICAgfSBdCisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L21vbnRoZGF5LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9tb250aGRheS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGE1OTE0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9tb250aGRheS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpNb250aERheSIsCisgICJAdmFsdWUiIDogIi0tMDEtMDEiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9tb250aGRheS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L21vbnRoZGF5LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGE1OTE0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9tb250aGRheS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6TW9udGhEYXkiLAorICAiQHZhbHVlIiA6ICItLTAxLTAxIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvb2Zmc2V0ZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L29mZnNldGRhdGV0aW1lLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzZjQ1Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L29mZnNldGRhdGV0aW1lLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4Ok9mZnNldERhdGVUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMjAwNy0xMi0wM1QxMDoxNTozMCswMTowMCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L29mZnNldGRhdGV0aW1lLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvb2Zmc2V0ZGF0ZXRpbWUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzZjQ1Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L29mZnNldGRhdGV0aW1lLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpPZmZzZXREYXRlVGltZSIsCisgICJAdmFsdWUiIDogIjIwMDctMTItMDNUMTA6MTU6MzArMDE6MDAiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9vZmZzZXR0aW1lLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9vZmZzZXR0aW1lLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxMjQ5NTMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L29mZnNldHRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6T2Zmc2V0VGltZSIsCisgICJAdmFsdWUiIDogIjEwOjE1OjMwKzAxOjAwIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvb2Zmc2V0dGltZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L29mZnNldHRpbWUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxMjQ5NTMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L29mZnNldHRpbWUtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4Ok9mZnNldFRpbWUiLAorICAiQHZhbHVlIiA6ICIxMDoxNTozMCswMTowMCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L29wZXJhdG9yLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9vcGVyYXRvci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNGMxNDAwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9vcGVyYXRvci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOk9wZXJhdG9yIiwKKyAgIkB2YWx1ZSIgOiAic3VtIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvb3BlcmF0b3ItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9vcGVyYXRvci12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTRjMTQwMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvb3BlcmF0b3ItdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6T3BlcmF0b3IiLAorICAiQHZhbHVlIiA6ICJzdW0iCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9vcmRlci12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvb3JkZXItdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGJlMDQzMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvb3JkZXItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpPcmRlciIsCisgICJAdmFsdWUiIDogInNodWZmbGUiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9vcmRlci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L29yZGVyLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmUwNDMyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9vcmRlci12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpPcmRlciIsCisgICJAdmFsdWUiIDogInNodWZmbGUiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9wLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9wLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViZGZiM2IKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3AtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogImd0IiwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMAorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3AtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViZGZiM2IKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3AtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJndCIsCisgICAgInZhbHVlIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDAKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3BhbmQtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3BhbmQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzI3MTk1OAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcGFuZC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDI1IEBACit7CisgICJAdHlwZSIgOiAiZzpQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAiYW5kIiwKKyAgICAidmFsdWUiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAiZ3QiLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAibHQiLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9CisgICAgICB9CisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3BhbmQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9wYW5kLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjcxOTU4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9wYW5kLXYzZDAuanNvbgpAQCAtMCwwICsxLDI1IEBACit7CisgICJAdHlwZSIgOiAiZzpQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAiYW5kIiwKKyAgICAidmFsdWUiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAiZ3QiLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAibHQiLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9CisgICAgICB9CisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3BhdGgtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9wYXRoLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZWVlODgzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9wYXRoLXYxZDAuanNvbgpAQCAtMCwwICsxLDYyIEBACit7CisgICJsYWJlbHMiIDogWyBbIF0sIFsgXSwgWyBdIF0sCisgICJvYmplY3RzIiA6IFsgeworICAgICJpZCIgOiAxLAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDAsCisgICAgICAgICJ2YWx1ZSIgOiAibWFya28iCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiA2LAorICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTcsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwMQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA3LAorICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDAxLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDQKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogOCwKKyAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDQsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA5LAorICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTAsCisgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiA0LAorICAgICAgICAidmFsdWUiIDogImdyZW1saW4iCisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTEsCisgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiA1LAorICAgICAgICAidmFsdWUiIDogInRpbmtlcmdyYXBoIgorICAgICAgfSBdCisgICAgfQorICB9IF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3BhdGgtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9wYXRoLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTkyZDJmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9wYXRoLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxLDEzIEBACit7CisgICJsYWJlbHMiIDogWyBbIF0sIFsgXSwgWyBdIF0sCisgICJvYmplY3RzIiA6IFsgeworICAgICJpZCIgOiAxLAorICAgICJsYWJlbCIgOiAicGVyc29uIgorICB9LCB7CisgICAgImlkIiA6IDEwLAorICAgICJsYWJlbCIgOiAic29mdHdhcmUiCisgIH0sIHsKKyAgICAiaWQiIDogMTEsCisgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIKKyAgfSBdCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9wYXRoLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9wYXRoLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljY2FhMDAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3BhdGgtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwzNCBAQAoreworICAiQHR5cGUiIDogImc6UGF0aCIsCisgICJAdmFsdWUiIDogeworICAgICJsYWJlbHMiIDogWyBbIF0sIFsgXSwgWyBdIF0sCisgICAgIm9iamVjdHMiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIgorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAic29mdHdhcmUiCisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIKKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcGF0aC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3BhdGgtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxNmIzOTMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3BhdGgtdjNkMC5qc29uCkBAIC0wLDAgKzEsNDkgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlBhdGgiLAorICAiQHZhbHVlIiA6IHsKKyAgICAibGFiZWxzIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICJAdmFsdWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpTZXQiLAorICAgICAgICAiQHZhbHVlIiA6IFsgXQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6U2V0IiwKKyAgICAgICAgIkB2YWx1ZSIgOiBbIF0KKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlNldCIsCisgICAgICAgICJAdmFsdWUiIDogWyBdCisgICAgICB9IF0KKyAgICB9LAorICAgICJvYmplY3RzIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICJAdmFsdWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICAgIH0sCisgICAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICAgIH0sCisgICAgICAgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgICAgfSwKKyAgICAgICAgICAibGFiZWwiIDogInNvZnR3YXJlIgorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3BlcmlvZC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcGVyaW9kLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwNDM4YTEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3BlcmlvZC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpQZXJpb2QiLAorICAiQHZhbHVlIiA6ICJQMVk2TTE1RCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3BlcmlvZC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3BlcmlvZC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjA0MzhhMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcGVyaW9kLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpQZXJpb2QiLAorICAiQHZhbHVlIiA6ICJQMVk2TTE1RCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3BpY2stdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3BpY2stdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NhMmYyZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcGljay12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlBpY2siLAorICAiQHZhbHVlIiA6ICJhbnkiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9waWNrLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcGljay12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NhMmYyZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcGljay12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpQaWNrIiwKKyAgIkB2YWx1ZSIgOiAiYW55IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcG9wLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9wb3AtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjcxNTE1ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcG9wLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6UG9wIiwKKyAgIkB2YWx1ZSIgOiAiYWxsIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcG9wLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcG9wLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzE1MTVmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9wb3AtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6UG9wIiwKKyAgIkB2YWx1ZSIgOiAiYWxsIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcG9yLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9wb3ItdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFmY2I3ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcG9yLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMzEgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJvciIsCisgICAgInZhbHVlIiA6IFsgeworICAgICAgIkB0eXBlIiA6ICJnOlAiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJwcmVkaWNhdGUiIDogImd0IiwKKyAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMAorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlAiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJwcmVkaWNhdGUiIDogIndpdGhpbiIsCisgICAgICAgICJ2YWx1ZSIgOiBbIHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogLTEKKyAgICAgICAgfSwgeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAtMTAKKyAgICAgICAgfSwgeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAtMTAwCisgICAgICAgIH0gXQorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9wb3ItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9wb3ItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3MWIxY2YKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Bvci12M2QwLmpzb24KQEAgLTAsMCArMSwzNCBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogIm9yIiwKKyAgICAidmFsdWUiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAiZ3QiLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAid2l0aGluIiwKKyAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgICAgICAgIkB2YWx1ZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IC0xCisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogLTEwCisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogLTEwMAorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Byb3BlcnR5LXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcHJvcGVydHktdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwNTFjMGEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Byb3BlcnR5LXYxZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgImtleSIgOiAic2luY2UiLAorICAidmFsdWUiIDogMjAwOQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcHJvcGVydHktdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9wcm9wZXJ0eS12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzA1MWMwYQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcHJvcGVydHktdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAia2V5IiA6ICJzaW5jZSIsCisgICJ2YWx1ZSIgOiAyMDA5Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9wcm9wZXJ0eS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcHJvcGVydHktdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjk2ZmUzMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcHJvcGVydHktdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAiQHZhbHVlIiA6IHsKKyAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgInZhbHVlIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Byb3BlcnR5LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcHJvcGVydHktdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5NmZlMzIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Byb3BlcnR5LXYzZDAuanNvbgpAQCAtMCwwICsxLDEwIEBACit7CisgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICJAdmFsdWUiIDogeworICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMjAwOQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcHdpdGhpbi12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcHdpdGhpbi12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZmEzODI2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9wd2l0aGluLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJ3aXRoaW4iLAorICAgICJ2YWx1ZSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcHdpdGhpbi12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3B3aXRoaW4tdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzZjk5Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3B3aXRoaW4tdjNkMC5qc29uCkBAIC0wLDAgKzEsMTMgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJ3aXRoaW4iLAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgICAiQHZhbHVlIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0gXQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvcHdpdGhvdXQtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3B3aXRob3V0LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjMjI5MWIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3B3aXRob3V0LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTMgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJ3aXRob3V0IiwKKyAgICAidmFsdWUiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMgorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9wd2l0aG91dC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3B3aXRob3V0LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTE2ODkwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9wd2l0aG91dC12M2QwLmpzb24KQEAgLTAsMCArMSwxNiBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogIndpdGhvdXQiLAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgICAiQHZhbHVlIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAyCisgICAgICB9IF0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Njb3BlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zY29wZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTc0YWYwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zY29wZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlNjb3BlIiwKKyAgIkB2YWx1ZSIgOiAibG9jYWwiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zY29wZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Njb3BlLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTc0YWYwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zY29wZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpTY29wZSIsCisgICJAdmFsdWUiIDogImxvY2FsIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2Vzc2lvbmNsb3NlLXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2Vzc2lvbmNsb3NlLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzgyNWU4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9uY2xvc2UtdjFkMC5qc29uCkBAIC0wLDAgKzEsOCBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImNsb3NlIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2Vzc2lvbmNsb3NlLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2Vzc2lvbmNsb3NlLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzgyNWU4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9uY2xvc2UtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsOCBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImNsb3NlIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2Vzc2lvbmNsb3NlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9uY2xvc2UtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWM4MjVlOAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2Vzc2lvbmNsb3NlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsOCBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImNsb3NlIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2Vzc2lvbmNsb3NlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2Vzc2lvbmNsb3NlLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmUxY2NkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9uY2xvc2UtdjNkMC5qc29uCkBAIC0wLDAgKzEsOSBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImNsb3NlIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgInNlc3Npb24iLCAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIgXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9uZXZhbC12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Nlc3Npb25ldmFsLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmNlODJmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9uZXZhbC12MWQwLmpzb24KQEAgLTAsMCArMSwxMyBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJnLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIiwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2Vzc2lvbmV2YWwtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9uZXZhbC12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGJjZTgyZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2Vzc2lvbmV2YWwtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsMTMgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAiZy5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIsCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IDEKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Nlc3Npb25ldmFsLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9uZXZhbC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZmY4Yjk2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9uZXZhbC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDE2IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogInNlc3Npb24iLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogImcuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgInNlc3Npb24iIDogInVuaXF1ZS1zZXNzaW9uLWlkZW50aWZpZXIiLAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2Vzc2lvbmV2YWwtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9uZXZhbC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzAxYzM5MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2Vzc2lvbmV2YWwtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTUgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgImdyZW1saW4iLCAiZy5WKHgpIiwgImxhbmd1YWdlIiwgImdyZW1saW4tZ3Jvb3Z5IiwgInNlc3Npb24iLCAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIsICJiaW5kaW5ncyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbICJ4IiwgeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0gXQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9uZXZhbGFsaWFzZWQtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9uZXZhbGFsaWFzZWQtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmNGVmNDYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Nlc3Npb25ldmFsYWxpYXNlZC12MWQwLmpzb24KQEAgLTAsMCArMSwxNiBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJzb2NpYWwuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImFsaWFzZXMiIDogeworICAgICAgImciIDogInNvY2lhbCIKKyAgICB9LAorICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIiwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2Vzc2lvbmV2YWxhbGlhc2VkLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2Vzc2lvbmV2YWxhbGlhc2VkLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjRlZjQ2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9uZXZhbGFsaWFzZWQtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsMTYgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAic29jaWFsLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJhbGlhc2VzIiA6IHsKKyAgICAgICJnIiA6ICJzb2NpYWwiCisgICAgfSwKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIsCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IDEKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Nlc3Npb25ldmFsYWxpYXNlZC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2Vzc2lvbmV2YWxhbGlhc2VkLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5NGU1ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Nlc3Npb25ldmFsYWxpYXNlZC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDE5IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogInNlc3Npb24iLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogInNvY2lhbC5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYWxpYXNlcyIgOiB7CisgICAgICAiZyIgOiAic29jaWFsIgorICAgIH0sCisgICAgInNlc3Npb24iIDogInVuaXF1ZS1zZXNzaW9uLWlkZW50aWZpZXIiLAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2Vzc2lvbmV2YWxhbGlhc2VkLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2Vzc2lvbmV2YWxhbGlhc2VkLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDQ4MTYwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9uZXZhbGFsaWFzZWQtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTggQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgImdyZW1saW4iLCAic29jaWFsLlYoeCkiLCAibGFuZ3VhZ2UiLCAiZ3JlbWxpbi1ncm9vdnkiLCAiYWxpYXNlcyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbICJnIiwgInNvY2lhbCIgXQorICAgIH0sICJzZXNzaW9uIiwgInVuaXF1ZS1zZXNzaW9uLWlkZW50aWZpZXIiLCAiYmluZGluZ3MiLCB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyAieCIsIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICB9IF0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2Vzc2lvbmxlc3NldmFsLXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2Vzc2lvbmxlc3NldmFsLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzlhODA3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9ubGVzc2V2YWwtdjFkMC5qc29uCkBAIC0wLDAgKzEsMTIgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJnLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9ubGVzc2V2YWwtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9ubGVzc2V2YWwtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjOWE4MDcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Nlc3Npb25sZXNzZXZhbC12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSwxMiBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogImcuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IDEKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Nlc3Npb25sZXNzZXZhbC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2Vzc2lvbmxlc3NldmFsLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxZTJmNmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Nlc3Npb25sZXNzZXZhbC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDE1IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAiZy5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Nlc3Npb25sZXNzZXZhbC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Nlc3Npb25sZXNzZXZhbC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGM4YzhlNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2Vzc2lvbmxlc3NldmFsLXYzZDAuanNvbgpAQCAtMCwwICsxLDE1IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgImdyZW1saW4iLCAiZy5WKHgpIiwgImxhbmd1YWdlIiwgImdyZW1saW4tZ3Jvb3Z5IiwgImJpbmRpbmdzIiwgeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgIngiLCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfSBdCisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OWYwYzZjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYxZDAuanNvbgpAQCAtMCwwICsxLDE1IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAic29jaWFsLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJhbGlhc2VzIiA6IHsKKyAgICAgICJnIiA6ICJzb2NpYWwiCisgICAgfSwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5ZjBjNmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsMTUgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJzb2NpYWwuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImFsaWFzZXMiIDogeworICAgICAgImciIDogInNvY2lhbCIKKyAgICB9LAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmNmE1NGUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxOCBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogInNvY2lhbC5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYWxpYXNlcyIgOiB7CisgICAgICAiZyIgOiAic29jaWFsIgorICAgIH0sCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmMwM2EzNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12M2QwLmpzb24KQEAgLTAsMCArMSwxOCBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgIkB2YWx1ZSIgOiBbICJncmVtbGluIiwgInNvY2lhbC5WKHgpIiwgImxhbmd1YWdlIiwgImdyZW1saW4tZ3Jvb3Z5IiwgImFsaWFzZXMiLCB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyAiZyIsICJzb2NpYWwiIF0KKyAgICB9LCAiYmluZGluZ3MiLCB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyAieCIsIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICB9IF0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2V0LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2V0LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMmRlZWEyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zZXQtdjNkMC5qc29uCkBAIC0wLDAgKzEsNyBAQAoreworICAiQHR5cGUiIDogImc6U2V0IiwKKyAgIkB2YWx1ZSIgOiBbIHsKKyAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICJAdmFsdWUiIDogMQorICB9LCAicGVyc29uIiwgdHJ1ZSBdCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zaG9ydC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2hvcnQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY4ZjVjZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2hvcnQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6SW50MTYiLAorICAiQHZhbHVlIiA6IDEwMAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2hvcnQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zaG9ydC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY4ZjVjZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc2hvcnQtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkludDE2IiwKKyAgIkB2YWx1ZSIgOiAxMDAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3N0YW5kYXJkcmVzdWx0LXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc3RhbmRhcmRyZXN1bHQtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliOTM3MjcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3N0YW5kYXJkcmVzdWx0LXYxZDAuanNvbgpAQCAtMCwwICsxLDUwIEBACit7CisgICJyZXF1ZXN0SWQiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIsCisgICJzdGF0dXMiIDogeworICAgICJtZXNzYWdlIiA6ICIiLAorICAgICJjb2RlIiA6IDIwMCwKKyAgICAiYXR0cmlidXRlcyIgOiB7IH0KKyAgfSwKKyAgInJlc3VsdCIgOiB7CisgICAgImRhdGEiIDogWyB7CisgICAgICAiaWQiIDogMSwKKyAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAiaWQiIDogMCwKKyAgICAgICAgICAidmFsdWUiIDogIm1hcmtvIgorICAgICAgICB9IF0sCisgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAiaWQiIDogNiwKKyAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiAxOTk3LAorICAgICAgICAgICAgImVuZFRpbWUiIDogMjAwMQorICAgICAgICAgIH0KKyAgICAgICAgfSwgeworICAgICAgICAgICJpZCIgOiA3LAorICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDAxLAorICAgICAgICAgICAgImVuZFRpbWUiIDogMjAwNAorICAgICAgICAgIH0KKyAgICAgICAgfSwgeworICAgICAgICAgICJpZCIgOiA4LAorICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDUKKyAgICAgICAgICB9CisgICAgICAgIH0sIHsKKyAgICAgICAgICAiaWQiIDogOSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDUKKyAgICAgICAgICB9CisgICAgICAgIH0gXQorICAgICAgfQorICAgIH0gXSwKKyAgICAibWV0YSIgOiB7IH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc3RhbmRhcmRyZXN1bHQtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3N0YW5kYXJkcmVzdWx0LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1N2M2ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3N0YW5kYXJkcmVzdWx0LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTExIEBACit7CisgICJyZXF1ZXN0SWQiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIsCisgICJzdGF0dXMiIDogeworICAgICJtZXNzYWdlIiA6ICIiLAorICAgICJjb2RlIiA6IDIwMCwKKyAgICAiYXR0cmlidXRlcyIgOiB7IH0KKyAgfSwKKyAgInJlc3VsdCIgOiB7CisgICAgImRhdGEiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTk3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0gXSwKKyAgICAibWV0YSIgOiB7IH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc3RhbmRhcmRyZXN1bHQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS9zdGFuZGFyZHJlc3VsdC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGZjYTQwMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvc3RhbmRhcmRyZXN1bHQtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTIwIEBACit7CisgICJyZXF1ZXN0SWQiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIsCisgICJzdGF0dXMiIDogeworICAgICJtZXNzYWdlIiA6ICIiLAorICAgICJjb2RlIiA6IDIwMCwKKyAgICAiYXR0cmlidXRlcyIgOiB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyBdCisgICAgfQorICB9LAorICAicmVzdWx0IiA6IHsKKyAgICAiZGF0YSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgICAiQHZhbHVlIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgICB9LAorICAgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBdLAorICAgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW4gZGllZ28iLAorICAgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5OTcKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBjcnV6IiwKKyAgICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBmZSIsCisgICAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9LAorICAgICJtZXRhIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbIF0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3QtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3QtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTY5Mzk4MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlQiLAorICAiQHZhbHVlIiA6ICJsYWJlbCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3QtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS90LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjkzOTgzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS90LXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlQiLAorICAiQHZhbHVlIiA6ICJsYWJlbCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3RleHRwLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS90ZXh0cC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODIwOTg5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS90ZXh0cC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDcgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlRleHRQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAiY29udGFpbmluZyIsCisgICAgInZhbHVlIiA6ICJhcmsiCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3RleHRwLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdGV4dHAtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4MjA5ODkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3RleHRwLXYzZDAuanNvbgpAQCAtMCwwICsxLDcgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlRleHRQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAiY29udGFpbmluZyIsCisgICAgInZhbHVlIiA6ICJhcmsiCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3RpbWVzdGFtcC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdGltZXN0YW1wLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjYTBlMTcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3RpbWVzdGFtcC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlRpbWVzdGFtcCIsCisgICJAdmFsdWUiIDogMTQ4MTc1MDA3NjI5NQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdGltZXN0YW1wLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdGltZXN0YW1wLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2EwZTE3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS90aW1lc3RhbXAtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6VGltZXN0YW1wIiwKKyAgIkB2YWx1ZSIgOiAxNDgxNzUwMDc2Mjk1Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS90aW5rZXJncmFwaC12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3RpbmtlcmdyYXBoLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzcxOWY2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS90aW5rZXJncmFwaC12MWQwLmpzb24KQEAgLTAsMCArMSwzMTMgQEAKK3sKKyAgInZlcnRpY2VzIiA6IFsgeworICAgICJpZCIgOiAxLAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDAsCisgICAgICAgICJ2YWx1ZSIgOiAibWFya28iCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiA2LAorICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTcsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwMQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA3LAorICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDAxLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDQKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogOCwKKyAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDQsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA5LAorICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogNywKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiAxLAorICAgICAgICAidmFsdWUiIDogInN0ZXBoZW4iCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiAxMCwKKyAgICAgICAgInZhbHVlIiA6ICJjZW50cmV2aWxsZSIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTAsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwMAorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxMSwKKyAgICAgICAgInZhbHVlIiA6ICJkdWxsZXMiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDAwLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDYKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTIsCisgICAgICAgICJ2YWx1ZSIgOiAicHVyY2VsbHZpbGxlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNgorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogOCwKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiAyLAorICAgICAgICAidmFsdWUiIDogIm1hdHRoaWFzIgorICAgICAgfSBdLAorICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAiaWQiIDogMTMsCisgICAgICAgICJ2YWx1ZSIgOiAiYnJlbWVuIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA3CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE0LAorICAgICAgICAidmFsdWUiIDogImJhbHRpbW9yZSIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDcsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAxMQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxNSwKKyAgICAgICAgInZhbHVlIiA6ICJvYWtsYW5kIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAxMSwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDE0CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE2LAorICAgICAgICAidmFsdWUiIDogInNlYXR0bGUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDE0CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiA5LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDMsCisgICAgICAgICJ2YWx1ZSIgOiAiZGFuaWVsIgorICAgICAgfSBdLAorICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAiaWQiIDogMTcsCisgICAgICAgICJ2YWx1ZSIgOiAic3ByZW1iZXJnIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMTk4MiwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE4LAorICAgICAgICAidmFsdWUiIDogImthaXNlcnNsYXV0ZXJuIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNSwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA5CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE5LAorICAgICAgICAidmFsdWUiIDogImFhY2hlbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDkKKyAgICAgICAgfQorICAgICAgfSBdCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDEwLAorICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogNCwKKyAgICAgICAgInZhbHVlIiA6ICJncmVtbGluIgorICAgICAgfSBdCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDExLAorICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogNSwKKyAgICAgICAgInZhbHVlIiA6ICJ0aW5rZXJncmFwaCIKKyAgICAgIH0gXQorICAgIH0KKyAgfSBdLAorICAiZWRnZXMiIDogWyB7CisgICAgImlkIiA6IDEzLAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogMjAwOQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxNCwKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDEsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IDIwMTAKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTUsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDEwLAorICAgICJvdXRWIiA6IDEsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IDQKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTYsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDEsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IDUKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTcsCisgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgInR5cGUiIDogImVkZ2UiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiAyMDEwCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE4LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogNywKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogMjAxMQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxOSwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogNywKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogNQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyMCwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogNywKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogNAorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyMSwKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDEwLAorICAgICJvdXRWIiA6IDgsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IDIwMTIKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjIsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDEwLAorICAgICJvdXRWIiA6IDgsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IDMKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjMsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDgsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IDMKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjQsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDEwLAorICAgICJvdXRWIiA6IDksCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IDUKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjUsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDksCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IDMKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjYsCisgICAgImxhYmVsIiA6ICJ0cmF2ZXJzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiAxMAorICB9IF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3RpbmtlcmdyYXBoLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdGlua2VyZ3JhcGgtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0YWQwNjEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3RpbmtlcmdyYXBoLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxLDM1MiBAQAoreworICAidmVydGljZXMiIDogWyB7CisgICAgImlkIiA6IDEsCisgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogMCwKKyAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgImlkIiA6IDYsCisgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTcsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwMQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA3LAorICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwMSwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA0CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDgsCisgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDksCisgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogNywKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiAxLAorICAgICAgICAidmFsdWUiIDogInN0ZXBoZW4iLAorICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiAxMCwKKyAgICAgICAgInZhbHVlIiA6ICJjZW50cmV2aWxsZSIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAxOTkwLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDAKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTEsCisgICAgICAgICJ2YWx1ZSIgOiAiZHVsbGVzIiwKKyAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDAsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNgorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxMiwKKyAgICAgICAgInZhbHVlIiA6ICJwdXJjZWxsdmlsbGUiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNgorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogOCwKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiAyLAorICAgICAgICAidmFsdWUiIDogIm1hdHRoaWFzIiwKKyAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgfSBdLAorICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAiaWQiIDogMTMsCisgICAgICAgICJ2YWx1ZSIgOiAiYnJlbWVuIiwKKyAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDQsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNworICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxNCwKKyAgICAgICAgInZhbHVlIiA6ICJiYWx0aW1vcmUiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNywKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDExCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE1LAorICAgICAgICAidmFsdWUiIDogIm9ha2xhbmQiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAxMSwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDE0CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE2LAorICAgICAgICAidmFsdWUiIDogInNlYXR0bGUiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAxNAorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogOSwKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiAzLAorICAgICAgICAidmFsdWUiIDogImRhbmllbCIsCisgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgImlkIiA6IDE3LAorICAgICAgICAidmFsdWUiIDogInNwcmVtYmVyZyIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAxOTgyLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDUKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTgsCisgICAgICAgICJ2YWx1ZSIgOiAia2Fpc2Vyc2xhdXRlcm4iLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNSwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA5CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE5LAorICAgICAgICAidmFsdWUiIDogImFhY2hlbiIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA5CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxMCwKKyAgICAibGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDQsCisgICAgICAgICJ2YWx1ZSIgOiAiZ3JlbWxpbiIsCisgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxMSwKKyAgICAibGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDUsCisgICAgICAgICJ2YWx1ZSIgOiAidGlua2VyZ3JhcGgiLAorICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICB9IF0KKyAgICB9CisgIH0gXSwKKyAgImVkZ2VzIiA6IFsgeworICAgICJpZCIgOiAxMywKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogeworICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICJ2YWx1ZSIgOiAyMDA5CisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE0LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiAxLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgInZhbHVlIiA6IDIwMTAKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTUsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiA0CisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE2LAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDEsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAidmFsdWUiIDogNQorICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxNywKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogNywKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogeworICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICJ2YWx1ZSIgOiAyMDEwCisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE4LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgInZhbHVlIiA6IDIwMTEKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTksCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogNywKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiA1CisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDIwLAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDcsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAidmFsdWUiIDogNAorICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyMSwKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogOCwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogeworICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICJ2YWx1ZSIgOiAyMDEyCisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDIyLAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDEwLAorICAgICJvdXRWIiA6IDgsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAidmFsdWUiIDogMworICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyMywKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiA4LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJza2lsbCIgOiB7CisgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgInZhbHVlIiA6IDMKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjQsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogOSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiA1CisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDI1LAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDksCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAidmFsdWUiIDogMworICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyNiwKKyAgICAibGFiZWwiIDogInRyYXZlcnNlcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogMTAKKyAgfSBdCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS90aW5rZXJncmFwaC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdGlua2VyZ3JhcGgtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjRlOTVlZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdGlua2VyZ3JhcGgtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw4MjkgQEAKK3sKKyAgIkB0eXBlIiA6ICJ0aW5rZXI6Z3JhcGgiLAorICAiQHZhbHVlIiA6IHsKKyAgICAidmVydGljZXMiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTk3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzdGVwaGVuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiY2VudHJldmlsbGUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5MAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJkdWxsZXMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTIKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJwdXJjZWxsdmlsbGUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogIm1hdHRoaWFzIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEzCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJlbWVuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDcKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE0CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYmFsdGltb3JlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDcKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTEKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE1CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAib2FrbGFuZCIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDExCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDE0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNlYXR0bGUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxNAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImRhbmllbCIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxNworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNwcmVtYmVyZyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTgyCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImthaXNlcnNsYXV0ZXJuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYWFjaGVuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJncmVtbGluIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInRpbmtlcmdyYXBoIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSBdLAorICAgICJlZGdlcyIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwOQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE0CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDEwCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTUKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE2CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDUKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxNworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE4CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDExCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTkKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDIwCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyMQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMgorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDIyCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDMKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyMworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAzCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjQKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDI1CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDMKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyNgorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInRyYXZlcnNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdGlua2VyZ3JhcGgtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS90aW5rZXJncmFwaC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjRlOTVlZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdGlua2VyZ3JhcGgtdjNkMC5qc29uCkBAIC0wLDAgKzEsODI5IEBACit7CisgICJAdHlwZSIgOiAidGlua2VyOmdyYXBoIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInZlcnRpY2VzIiA6IFsgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDYKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW4gZGllZ28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5NworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImJydXNzZWxzIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBmZSIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic3RlcGhlbiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImNlbnRyZXZpbGxlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5OTAKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDAKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiZHVsbGVzIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDAKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDYKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEyCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAicHVyY2VsbHZpbGxlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDYKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJtYXR0aGlhcyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImJyZW1lbiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA3CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxNAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImJhbHRpbW9yZSIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDExCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxNQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogIm9ha2xhbmQiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxNAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTYKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzZWF0dGxlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDMKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJkYW5pZWwiLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTcKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzcHJlbWJlcmciLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk4MgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTgKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJrYWlzZXJzbGF1dGVybiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA5CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImFhY2hlbiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA5CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiZ3JlbWxpbiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDUKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJ0aW5rZXJncmFwaCIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0gXSwKKyAgICAiZWRnZXMiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTMKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2luY2UiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxNAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE1CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxNgorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA1CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTcKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2luY2UiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTAKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxOAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE5CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDUKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyMAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2luY2UiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTIKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyMgorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAzCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjMKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDI0CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDUKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyNQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAzCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjYKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ0cmF2ZXJzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9CisgICAgICB9CisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3RyYXZlcnNhbG1ldHJpY3MtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3RyYXZlcnNhbG1ldHJpY3MtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmRkMThhNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdHJhdmVyc2FsbWV0cmljcy12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDExNCBAQAoreworICAiQHR5cGUiIDogImc6VHJhdmVyc2FsTWV0cmljcyIsCisgICJAdmFsdWUiIDogeworICAgICJkdXIiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAiQHZhbHVlIiA6IDAuMDA0CisgICAgfSwKKyAgICAibWV0cmljcyIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiZHVyIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgIH0sCisgICAgICAgICJjb3VudHMiIDogeworICAgICAgICAgICJ0cmF2ZXJzZXJDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICAgICAgfSwKKyAgICAgICAgICAiZWxlbWVudENvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJuYW1lIiA6ICJUaW5rZXJHcmFwaFN0ZXAodmVydGV4LFt+bGFiZWwuZXEocGVyc29uKV0pIiwKKyAgICAgICAgImFubm90YXRpb25zIiA6IHsKKyAgICAgICAgICAicGVyY2VudER1ciIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImlkIiA6ICI3LjAuMCgpIgorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiZHVyIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgIH0sCisgICAgICAgICJjb3VudHMiIDogeworICAgICAgICAgICJ0cmF2ZXJzZXJDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICAgIH0sCisgICAgICAgICAgImVsZW1lbnRDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIm5hbWUiIDogIlZlcnRleFN0ZXAoT1VULHZlcnRleCkiLAorICAgICAgICAiYW5ub3RhdGlvbnMiIDogeworICAgICAgICAgICJwZXJjZW50RHVyIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaWQiIDogIjIuMC4wKCkiCisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJkdXIiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgfSwKKyAgICAgICAgImNvdW50cyIgOiB7CisgICAgICAgICAgInRyYXZlcnNlckNvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICB9LAorICAgICAgICAgICJlbGVtZW50Q291bnQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIm5hbWUiIDogIlZlcnRleFN0ZXAoT1VULHZlcnRleCkiLAorICAgICAgICAiYW5ub3RhdGlvbnMiIDogeworICAgICAgICAgICJwZXJjZW50RHVyIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaWQiIDogIjMuMC4wKCkiCisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJkdXIiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgfSwKKyAgICAgICAgImNvdW50cyIgOiB7CisgICAgICAgICAgInRyYXZlcnNlckNvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgICB9LAorICAgICAgICAgICJlbGVtZW50Q291bnQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIm5hbWUiIDogIlRyZWVTdGVwIiwKKyAgICAgICAgImFubm90YXRpb25zIiA6IHsKKyAgICAgICAgICAicGVyY2VudER1ciIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImlkIiA6ICI0LjAuMCgpIgorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS90cmF2ZXJzYWxtZXRyaWNzLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdHJhdmVyc2FsbWV0cmljcy12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDZmNzYzNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdHJhdmVyc2FsbWV0cmljcy12M2QwLmpzb24KQEAgLTAsMCArMSwxMDkgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlRyYXZlcnNhbE1ldHJpY3MiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgImR1ciIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgIkB2YWx1ZSIgOiAwLjAwNAorICAgIH0sICJtZXRyaWNzIiwgeworICAgICAgIkB0eXBlIiA6ICJnOkxpc3QiLAorICAgICAgIkB2YWx1ZSIgOiBbIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IFsgImR1ciIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgICAgICAgIH0sICJjb3VudHMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAidHJhdmVyc2VyQ291bnQiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgICAgICAgfSwgImVsZW1lbnRDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICAgICAgICB9IF0KKyAgICAgICAgICB9LCAibmFtZSIsICJUaW5rZXJHcmFwaFN0ZXAodmVydGV4LFt+bGFiZWwuZXEocGVyc29uKV0pIiwgImFubm90YXRpb25zIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IFsgInBlcmNlbnREdXIiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJpZCIsICI3LjAuMCgpIiBdCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IFsgImR1ciIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgICAgICAgIH0sICJjb3VudHMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAidHJhdmVyc2VyQ291bnQiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMTMKKyAgICAgICAgICAgIH0sICJlbGVtZW50Q291bnQiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMTMKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJuYW1lIiwgIlZlcnRleFN0ZXAoT1VULHZlcnRleCkiLCAiYW5ub3RhdGlvbnMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAicGVyY2VudER1ciIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgImlkIiwgIjIuMC4wKCkiIF0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgICAgfSwgImNvdW50cyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJ0cmF2ZXJzZXJDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICB9LCAiZWxlbWVudENvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJuYW1lIiwgIlZlcnRleFN0ZXAoT1VULHZlcnRleCkiLCAiYW5ub3RhdGlvbnMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAicGVyY2VudER1ciIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgImlkIiwgIjMuMC4wKCkiIF0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgICAgfSwgImNvdW50cyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJ0cmF2ZXJzZXJDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgICAgICB9LCAiZWxlbWVudENvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJuYW1lIiwgIlRyZWVTdGVwIiwgImFubm90YXRpb25zIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IFsgInBlcmNlbnREdXIiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJpZCIsICI0LjAuMCgpIiBdCisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS90cmF2ZXJzZXItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3RyYXZlcnNlci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTlhMjllCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS90cmF2ZXJzZXItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMDkgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlRyYXZlcnNlciIsCisgICJAdmFsdWUiIDogeworICAgICJidWxrIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9LAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTk3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdHJhdmVyc2VyLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdHJhdmVyc2VyLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTlhMjllCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS90cmF2ZXJzZXItdjNkMC5qc29uCkBAIC0wLDAgKzEsMTA5IEBACit7CisgICJAdHlwZSIgOiAiZzpUcmF2ZXJzZXIiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiYnVsayIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfSwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDYKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW4gZGllZ28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5NworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImJydXNzZWxzIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBmZSIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3V1aWQtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS91dWlkLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzZmZjk2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS91dWlkLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxIEBACisiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdXVpZC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdXVpZC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2YwOWYwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS91dWlkLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6VVVJRCIsCisgICJAdmFsdWUiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3V1aWQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS91dWlkLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2YwOWYwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS91dWlkLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlVVSUQiLAorICAiQHZhbHVlIiA6ICI0MWQyZTI4YS0yMGE0LTRhYjAtYjM3OS1kODEwZGVkZTM3ODYiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS92ZXJ0ZXgtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS92ZXJ0ZXgtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4ODVmNTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3ZlcnRleC12MWQwLmpzb24KQEAgLTAsMCArMSwzOSBAQAoreworICAiaWQiIDogMSwKKyAgImxhYmVsIiA6ICJwZXJzb24iLAorICAidHlwZSIgOiAidmVydGV4IiwKKyAgInByb3BlcnRpZXMiIDogeworICAgICJuYW1lIiA6IFsgeworICAgICAgImlkIiA6IDAsCisgICAgICAidmFsdWUiIDogIm1hcmtvIgorICAgIH0gXSwKKyAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAiaWQiIDogNiwKKyAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgInN0YXJ0VGltZSIgOiAxOTk3LAorICAgICAgICAiZW5kVGltZSIgOiAyMDAxCisgICAgICB9CisgICAgfSwgeworICAgICAgImlkIiA6IDcsCisgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDEsCisgICAgICAgICJlbmRUaW1lIiA6IDIwMDQKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiaWQiIDogOCwKKyAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDQsCisgICAgICAgICJlbmRUaW1lIiA6IDIwMDUKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiaWQiIDogOSwKKyAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDUKKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdmVydGV4LXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdmVydGV4LXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTYxNTVmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS92ZXJ0ZXgtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsNDMgQEAKK3sKKyAgImlkIiA6IDEsCisgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgInByb3BlcnRpZXMiIDogeworICAgICJuYW1lIiA6IFsgeworICAgICAgImlkIiA6IDAsCisgICAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICB9IF0sCisgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgImlkIiA6IDYsCisgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgInN0YXJ0VGltZSIgOiAxOTk3LAorICAgICAgICAiZW5kVGltZSIgOiAyMDAxCisgICAgICB9CisgICAgfSwgeworICAgICAgImlkIiA6IDcsCisgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICJzdGFydFRpbWUiIDogMjAwMSwKKyAgICAgICAgImVuZFRpbWUiIDogMjAwNAorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJpZCIgOiA4LAorICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA0LAorICAgICAgICAiZW5kVGltZSIgOiAyMDA1CisgICAgICB9CisgICAgfSwgeworICAgICAgImlkIiA6IDksCisgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDUKKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdmVydGV4LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS92ZXJ0ZXgtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjEwMjIzMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdmVydGV4LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTAwIEBACit7CisgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiaWQiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0sCisgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMAorICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICB9CisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA2CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5NworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3ZlcnRleC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3ZlcnRleC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjEwMjIzMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdmVydGV4LXYzZDAuanNvbgpAQCAtMCwwICsxLDEwMCBAQAoreworICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImlkIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgICB9LAorICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgfQorICAgICAgfSBdLAorICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJzYW4gZGllZ28iLAorICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5OTcKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBjcnV6IiwKKyAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgICB9LAorICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBmZSIsCisgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSBdCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS92ZXJ0ZXhwcm9wZXJ0eS12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3ZlcnRleHByb3BlcnR5LXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDAyNWE4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS92ZXJ0ZXhwcm9wZXJ0eS12MWQwLmpzb24KQEAgLTAsMCArMSw1IEBACit7CisgICJpZCIgOiAwLAorICAidmFsdWUiIDogIm1hcmtvIiwKKyAgImxhYmVsIiA6ICJuYW1lIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdmVydGV4cHJvcGVydHktdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS92ZXJ0ZXhwcm9wZXJ0eS12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQwMjVhOAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdmVydGV4cHJvcGVydHktdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsNSBAQAoreworICAiaWQiIDogMCwKKyAgInZhbHVlIiA6ICJtYXJrbyIsCisgICJsYWJlbCIgOiAibmFtZSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3ZlcnRleHByb3BlcnR5LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS92ZXJ0ZXhwcm9wZXJ0eS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjE4NGIxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS92ZXJ0ZXhwcm9wZXJ0eS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDExIEBACit7CisgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICJAdmFsdWUiIDogeworICAgICJpZCIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgIkB2YWx1ZSIgOiAwCisgICAgfSwKKyAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAibGFiZWwiIDogIm5hbWUiCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3ZlcnRleHByb3BlcnR5LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvdmVydGV4cHJvcGVydHktdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmMTg0YjEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3ZlcnRleHByb3BlcnR5LXYzZDAuanNvbgpAQCAtMCwwICsxLDExIEBACit7CisgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICJAdmFsdWUiIDogeworICAgICJpZCIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgIkB2YWx1ZSIgOiAwCisgICAgfSwKKyAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAibGFiZWwiIDogIm5hbWUiCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3llYXItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3llYXItdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY0MjBiYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUveWVhci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpZZWFyIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3llYXItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS95ZWFyLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjQyMGJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS95ZWFyLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpZZWFyIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3llYXJtb250aC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUveWVhcm1vbnRoLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4YTVlMjcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3llYXJtb250aC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpZZWFyTW9udGgiLAorICAiQHZhbHVlIiA6ICIyMDE2LTA2IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUveWVhcm1vbnRoLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUveWVhcm1vbnRoLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OGE1ZTI3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS95ZWFybW9udGgtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlllYXJNb250aCIsCisgICJAdmFsdWUiIDogIjIwMTYtMDYiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS96b25lZGRhdGV0aW1lLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS96b25lZGRhdGV0aW1lLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2N2ZjNDcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3pvbmVkZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Wm9uZWREYXRlVGltZSIsCisgICJAdmFsdWUiIDogIjIwMTYtMTItMjNUMTI6MTI6MjQuMDAwMDAwMDM2KzAyOjAwW0dNVCswMjowMF0iCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS96b25lZGRhdGV0aW1lLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvem9uZWRkYXRldGltZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY3ZmM0NwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzUvem9uZWRkYXRldGltZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Wm9uZWREYXRlVGltZSIsCisgICJAdmFsdWUiIDogIjIwMTYtMTItMjNUMTI6MTI6MjQuMDAwMDAwMDM2KzAyOjAwW0dNVCswMjowMF0iCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS96b25lb2Zmc2V0LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS96b25lb2Zmc2V0LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1OTE3OTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3pvbmVvZmZzZXQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Wm9uZU9mZnNldCIsCisgICJAdmFsdWUiIDogIiswMzowNjowOSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF81L3pvbmVvZmZzZXQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS96b25lb2Zmc2V0LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTkxNzk0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNS96b25lb2Zmc2V0LXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpab25lT2Zmc2V0IiwKKyAgIkB2YWx1ZSIgOiAiKzAzOjA2OjA5IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGM1YjgyYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjFkMC5qc29uCkBAIC0wLDAgKzEsMTIgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IiwKKyAgInN0YXR1cyIgOiB7CisgICAgIm1lc3NhZ2UiIDogIiIsCisgICAgImNvZGUiIDogNDA3LAorICAgICJhdHRyaWJ1dGVzIiA6IHsgfQorICB9LAorICAicmVzdWx0IiA6IHsKKyAgICAiZGF0YSIgOiBudWxsLAorICAgICJtZXRhIiA6IHsgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzViODJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSwxMiBAQAoreworICAicmVxdWVzdElkIiA6ICI0MWQyZTI4YS0yMGE0LTRhYjAtYjM3OS1kODEwZGVkZTM3ODYiLAorICAic3RhdHVzIiA6IHsKKyAgICAibWVzc2FnZSIgOiAiIiwKKyAgICAiY29kZSIgOiA0MDcsCisgICAgImF0dHJpYnV0ZXMiIDogeyB9CisgIH0sCisgICJyZXN1bHQiIDogeworICAgICJkYXRhIiA6IG51bGwsCisgICAgIm1ldGEiIDogeyB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzViODJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDEyIEBACit7CisgICJyZXF1ZXN0SWQiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIsCisgICJzdGF0dXMiIDogeworICAgICJtZXNzYWdlIiA6ICIiLAorICAgICJjb2RlIiA6IDQwNywKKyAgICAiYXR0cmlidXRlcyIgOiB7IH0KKyAgfSwKKyAgInJlc3VsdCIgOiB7CisgICAgImRhdGEiIDogbnVsbCwKKyAgICAibWV0YSIgOiB7IH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDE3MzRjNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTggQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IiwKKyAgInN0YXR1cyIgOiB7CisgICAgIm1lc3NhZ2UiIDogIiIsCisgICAgImNvZGUiIDogNDA3LAorICAgICJhdHRyaWJ1dGVzIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbIF0KKyAgICB9CisgIH0sCisgICJyZXN1bHQiIDogeworICAgICJkYXRhIiA6IG51bGwsCisgICAgIm1ldGEiIDogeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgXQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYXV0aGVudGljYXRpb25yZXNwb25zZS12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzOGUxZmQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjFkMC5qc29uCkBAIC0wLDAgKzEsOSBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImF1dGhlbnRpY2F0aW9uIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJzYXNsTWVjaGFuaXNtIiA6ICJQTEFJTiIsCisgICAgInNhc2wiIDogIkFITjBaWEJvY0dobGJnQndZWE56ZDI5eVpBPT0iCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzhlMWZkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxLDkgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJhdXRoZW50aWNhdGlvbiIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAic2FzbE1lY2hhbmlzbSIgOiAiUExBSU4iLAorICAgICJzYXNsIiA6ICJBSE4wWlhCb2NHaGxiZ0J3WVhOemQyOXlaQT09IgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzOGUxZmQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw5IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiYXV0aGVudGljYXRpb24iLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgInNhc2xNZWNoYW5pc20iIDogIlBMQUlOIiwKKyAgICAic2FzbCIgOiAiQUhOMFpYQm9jR2hsYmdCd1lYTnpkMjl5WkE9PSIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYXV0aGVudGljYXRpb25yZXNwb25zZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhY2VjYTIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjNkMC5qc29uCkBAIC0wLDAgKzEsOSBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImF1dGhlbnRpY2F0aW9uIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICJAdmFsdWUiIDogWyAic2FzbE1lY2hhbmlzbSIsICJQTEFJTiIsICJzYXNsIiwgIkFITjBaWEJvY0dobGJnQndZWE56ZDI5eVpBPT0iIF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYmFycmllci12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYmFycmllci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZGRjY2RkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9iYXJyaWVyLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6QmFycmllciIsCisgICJAdmFsdWUiIDogIm5vcm1TYWNrIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYmFycmllci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2JhcnJpZXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkZGNjZGQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2JhcnJpZXItdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6QmFycmllciIsCisgICJAdmFsdWUiIDogIm5vcm1TYWNrIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYmlnZGVjaW1hbC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYmlnZGVjaW1hbC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzUzMzdjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9iaWdkZWNpbWFsLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJpZ0RlY2ltYWwiLAorICAiQHZhbHVlIiA6IDEyMzQ1Njc4OTk4NzY1NDMyMTEyMzQ1Njc4OTk4NzY1NDMyMQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYmlnZGVjaW1hbC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2JpZ2RlY2ltYWwtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3NTMzN2MKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2JpZ2RlY2ltYWwtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJpZ0RlY2ltYWwiLAorICAiQHZhbHVlIiA6IDEyMzQ1Njc4OTk4NzY1NDMyMTEyMzQ1Njc4OTk4NzY1NDMyMQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYmlnaW50ZWdlci12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYmlnaW50ZWdlci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OGU2MTE0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9iaWdpbnRlZ2VyLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJpZ0ludGVnZXIiLAorICAiQHZhbHVlIiA6IDEyMzQ1Njc4OTk4NzY1NDMyMTEyMzQ1Njc4OTk4NzY1NDMyMQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYmlnaW50ZWdlci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2JpZ2ludGVnZXItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4ZTYxMTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2JpZ2ludGVnZXItdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJpZ0ludGVnZXIiLAorICAiQHZhbHVlIiA6IDEyMzQ1Njc4OTk4NzY1NDMyMTEyMzQ1Njc4OTk4NzY1NDMyMQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYmluZGluZy12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYmluZGluZy12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzliOGM3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9iaW5kaW5nLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkJpbmRpbmciLAorICAiQHZhbHVlIiA6IHsKKyAgICAia2V5IiA6ICJ4IiwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYmluZGluZy12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2JpbmRpbmctdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3OWI4YzcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2JpbmRpbmctdjNkMC5qc29uCkBAIC0wLDAgKzEsMTAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkJpbmRpbmciLAorICAiQHZhbHVlIiA6IHsKKyAgICAia2V5IiA6ICJ4IiwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYnVsa3NldC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYnVsa3NldC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODQ0OTc1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9idWxrc2V0LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEgQEAKK1sgIm1hcmtvIiwgImpvc2giLCAiam9zaCIgXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYnVsa3NldC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2J1bGtzZXQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyMTZhMzYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2J1bGtzZXQtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkJ1bGtTZXQiLAorICAiQHZhbHVlIiA6IFsgIm1hcmtvIiwgeworICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgIkB2YWx1ZSIgOiAxCisgIH0sICJqb3NoIiwgeworICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgIkB2YWx1ZSIgOiAyCisgIH0gXQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYnl0ZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYnl0ZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Nzk2MjViCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9ieXRlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkJ5dGUiLAorICAiQHZhbHVlIiA6IDEKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2J5dGUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9ieXRlLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Nzk2MjViCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9ieXRlLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpCeXRlIiwKKyAgIkB2YWx1ZSIgOiAxCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9ieXRlYnVmZmVyLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9ieXRlYnVmZmVyLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3MjQxMTUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2J5dGVidWZmZXItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Qnl0ZUJ1ZmZlciIsCisgICJAdmFsdWUiIDogImMyOXRaU0JpZVhSbGN5Qm1iM0lnZVc5MSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2J5dGVidWZmZXItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9ieXRlYnVmZmVyLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzI0MTE1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9ieXRlYnVmZmVyLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpCeXRlQnVmZmVyIiwKKyAgIkB2YWx1ZSIgOiAiYzI5dFpTQmllWFJsY3lCbWIzSWdlVzkxIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYnl0ZWNvZGUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2J5dGVjb2RlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2OWQyNzcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2J5dGVjb2RlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNiBAQAoreworICAiQHR5cGUiIDogImc6Qnl0ZWNvZGUiLAorICAiQHZhbHVlIiA6IHsKKyAgICAic3RlcCIgOiBbIFsgIlYiIF0sIFsgImhhc0xhYmVsIiwgInBlcnNvbiIgXSwgWyAib3V0IiBdLCBbICJpbiIgXSwgWyAidHJlZSIgXSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2J5dGVjb2RlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvYnl0ZWNvZGUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2OWQyNzcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2J5dGVjb2RlLXYzZDAuanNvbgpAQCAtMCwwICsxLDYgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkJ5dGVjb2RlIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInN0ZXAiIDogWyBbICJWIiBdLCBbICJoYXNMYWJlbCIsICJwZXJzb24iIF0sIFsgIm91dCIgXSwgWyAiaW4iIF0sIFsgInRyZWUiIF0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9jYXJkaW5hbGl0eS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvY2FyZGluYWxpdHktdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM0ZTY0ZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvY2FyZGluYWxpdHktdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpDYXJkaW5hbGl0eSIsCisgICJAdmFsdWUiIDogImxpc3QiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9jYXJkaW5hbGl0eS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2NhcmRpbmFsaXR5LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzRlNjRlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9jYXJkaW5hbGl0eS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpDYXJkaW5hbGl0eSIsCisgICJAdmFsdWUiIDogImxpc3QiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9jaGFyLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9jaGFyLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmMjdlOWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2NoYXItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Q2hhciIsCisgICJAdmFsdWUiIDogIngiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9jaGFyLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvY2hhci12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGYyN2U5ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvY2hhci12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Q2hhciIsCisgICJAdmFsdWUiIDogIngiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9jbGFzcy12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvY2xhc3MtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBmMTVhMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvY2xhc3MtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpDbGFzcyIsCisgICJAdmFsdWUiIDogImphdmEuaW8uRmlsZSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2NsYXNzLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvY2xhc3MtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwZjE1YTIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2NsYXNzLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkNsYXNzIiwKKyAgIkB2YWx1ZSIgOiAiamF2YS5pby5GaWxlIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvY29sdW1uLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9jb2x1bW4tdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIzYTU2ZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvY29sdW1uLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6Q29sdW1uIiwKKyAgIkB2YWx1ZSIgOiAia2V5cyIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2NvbHVtbi12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2NvbHVtbi12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIzYTU2ZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvY29sdW1uLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkNvbHVtbiIsCisgICJAdmFsdWUiIDogImtleXMiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9kYXRlLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvZGF0ZS12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNiNzFhMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvZGF0ZS12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSBAQAorMTQ4MTc1MDA3NjI5NQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvZGF0ZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvZGF0ZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjQwMDdhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9kYXRlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6RGF0ZSIsCisgICJAdmFsdWUiIDogMTQ4MTc1MDA3NjI5NQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvZGF0ZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2RhdGUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmNDAwN2EKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2RhdGUtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6RGF0ZSIsCisgICJAdmFsdWUiIDogMTQ4MTc1MDA3NjI5NQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvZGlyZWN0aW9uLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9kaXJlY3Rpb24tdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzhjYjdlNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvZGlyZWN0aW9uLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6RGlyZWN0aW9uIiwKKyAgIkB2YWx1ZSIgOiAiT1VUIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvZGlyZWN0aW9uLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvZGlyZWN0aW9uLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGNiN2U0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9kaXJlY3Rpb24tdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6RGlyZWN0aW9uIiwKKyAgIkB2YWx1ZSIgOiAiT1VUIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvZG91YmxlLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvZG91YmxlLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzcyZTYyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9kb3VibGUtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEgQEAKKzEwMC4wClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9kb3VibGUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2RvdWJsZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YWU0OTY0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9kb3VibGUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAiQHZhbHVlIiA6IDEwMC4wCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9kb3VibGUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9kb3VibGUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhZTQ5NjQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2RvdWJsZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAiQHZhbHVlIiA6IDEwMC4wCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9kdXJhdGlvbi12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvZHVyYXRpb24tdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVjMGNlOQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvZHVyYXRpb24tdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6RHVyYXRpb24iLAorICAiQHZhbHVlIiA6ICJQVDEyMEgiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9kdXJhdGlvbi12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2R1cmF0aW9uLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWMwY2U5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9kdXJhdGlvbi12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6RHVyYXRpb24iLAorICAiQHZhbHVlIiA6ICJQVDEyMEgiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9lZGdlLXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvZWRnZS12MWQwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGY3ZjE2OAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvZWRnZS12MWQwLmpzb24KQEAgLTAsMCArMSwxMiBAQAoreworICAiaWQiIDogMTMsCisgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAidHlwZSIgOiAiZWRnZSIsCisgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAiaW5WIiA6IDEwLAorICAib3V0ViIgOiAxLAorICAicHJvcGVydGllcyIgOiB7CisgICAgInNpbmNlIiA6IDIwMDkKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvZWRnZS12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2VkZ2UtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4ZTczZGIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2VkZ2UtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsMTQgQEAKK3sKKyAgImlkIiA6IDEzLAorICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICJpblYiIDogMTAsCisgICJvdXRWIiA6IDEsCisgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAic2luY2UiIDogeworICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgInZhbHVlIiA6IDIwMDkKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2VkZ2UtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2VkZ2UtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmExYzUyZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvZWRnZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDMyIEBACit7CisgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImlkIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEzCisgICAgfSwKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMTAKKyAgICB9LAorICAgICJvdXRWIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMjAwOQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvZWRnZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2VkZ2UtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhMWM1MmUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2VkZ2UtdjNkMC5qc29uCkBAIC0wLDAgKzEsMzIgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiaWQiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMTMKKyAgICB9LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxMAorICAgIH0sCisgICAgIm91dFYiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0sCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA5CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9mbG9hdC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvZmxvYXQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE3OWFhZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvZmxvYXQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpGbG9hdCIsCisgICJAdmFsdWUiIDogMTAwLjAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2Zsb2F0LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvZmxvYXQtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxNzlhYWYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2Zsb2F0LXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkZsb2F0IiwKKyAgIkB2YWx1ZSIgOiAxMDAuMAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvaW5ldGFkZHJlc3MtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2luZXRhZGRyZXNzLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiYTk4YzAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2luZXRhZGRyZXNzLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkluZXRBZGRyZXNzIiwKKyAgIkB2YWx1ZSIgOiAibG9jYWxob3N0IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvaW5ldGFkZHJlc3MtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9pbmV0YWRkcmVzcy12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmJhOThjMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvaW5ldGFkZHJlc3MtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkluZXRBZGRyZXNzIiwKKyAgIkB2YWx1ZSIgOiAibG9jYWxob3N0IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvaW5zdGFudC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvaW5zdGFudC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzQ5NzQxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9pbnN0YW50LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4Okluc3RhbnQiLAorICAiQHZhbHVlIiA6ICIyMDE2LTEyLTE0VDE2OjM5OjE5LjM0OVoiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9pbnN0YW50LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvaW5zdGFudC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzc0OTc0MQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvaW5zdGFudC12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6SW5zdGFudCIsCisgICJAdmFsdWUiIDogIjIwMTYtMTItMTRUMTY6Mzk6MTkuMzQ5WiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2ludGVnZXItdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9pbnRlZ2VyLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDVkN2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9pbnRlZ2VyLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxIEBACisxMDAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2ludGVnZXItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2ludGVnZXItdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzUwY2U3YQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvaW50ZWdlci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgIkB2YWx1ZSIgOiAxMDAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2ludGVnZXItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9pbnRlZ2VyLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTBjZTdhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9pbnRlZ2VyLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgIkB2YWx1ZSIgOiAxMDAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2xhbWJkYS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvbGFtYmRhLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViZTE3OWIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2xhbWJkYS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDggQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkxhbWJkYSIsCisgICJAdmFsdWUiIDogeworICAgICJzY3JpcHQiIDogInsgaXQuZ2V0KCkgfSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImFyZ3VtZW50cyIgOiAxCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2xhbWJkYS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2xhbWJkYS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJlMTc5YgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvbGFtYmRhLXYzZDAuanNvbgpAQCAtMCwwICsxLDggQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkxhbWJkYSIsCisgICJAdmFsdWUiIDogeworICAgICJzY3JpcHQiIDogInsgaXQuZ2V0KCkgfSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImFyZ3VtZW50cyIgOiAxCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2xpc3QtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9saXN0LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzE0ZTJkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9saXN0LXYzZDAuanNvbgpAQCAtMCwwICsxLDcgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOkxpc3QiLAorICAiQHZhbHVlIiA6IFsgeworICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgIkB2YWx1ZSIgOiAxCisgIH0sICJwZXJzb24iLCB0cnVlIF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2xvY2FsZGF0ZS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvbG9jYWxkYXRlLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2ZmI4MWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2xvY2FsZGF0ZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpMb2NhbERhdGUiLAorICAiQHZhbHVlIiA6ICIyMDE2LTAxLTAxIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvbG9jYWxkYXRlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvbG9jYWxkYXRlLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNmZiODFkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9sb2NhbGRhdGUtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkxvY2FsRGF0ZSIsCisgICJAdmFsdWUiIDogIjIwMTYtMDEtMDEiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9sb2NhbGRhdGV0aW1lLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9sb2NhbGRhdGV0aW1lLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkODM2NjgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2xvY2FsZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6TG9jYWxEYXRlVGltZSIsCisgICJAdmFsdWUiIDogIjIwMTYtMDEtMDFUMTI6MzAiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9sb2NhbGRhdGV0aW1lLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvbG9jYWxkYXRldGltZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQ4MzY2OAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvbG9jYWxkYXRldGltZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6TG9jYWxEYXRlVGltZSIsCisgICJAdmFsdWUiIDogIjIwMTYtMDEtMDFUMTI6MzAiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9sb2NhbHRpbWUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2xvY2FsdGltZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZmY2NWE3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9sb2NhbHRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6TG9jYWxUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMTI6MzA6NDUiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9sb2NhbHRpbWUtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9sb2NhbHRpbWUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmZjY1YTcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2xvY2FsdGltZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6TG9jYWxUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMTI6MzA6NDUiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9sb25nLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9sb25nLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0YjlhMjMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L2xvbmctdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICJAdmFsdWUiIDogMTAwCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9sb25nLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvbG9uZy12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRiOWEyMwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvbG9uZy12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICJAdmFsdWUiIDogMTAwCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9tYXAtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9tYXAtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhZDU5YzkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L21hcC12M2QwLmpzb24KQEAgLTAsMCArMSwyNSBAQAoreworICAiQHR5cGUiIDogImc6TWFwIiwKKyAgIkB2YWx1ZSIgOiBbIHsKKyAgICAiQHR5cGUiIDogImc6RGF0ZSIsCisgICAgIkB2YWx1ZSIgOiAxNDgxNzUwMDc2Mjk1CisgIH0sICJyZWQiLCB7CisgICAgIkB0eXBlIiA6ICJnOkxpc3QiLAorICAgICJAdmFsdWUiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMgorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDMKKyAgICB9IF0KKyAgfSwgeworICAgICJAdHlwZSIgOiAiZzpEYXRlIiwKKyAgICAiQHZhbHVlIiA6IDE0ODE3NTAwNzYyOTUKKyAgfSwgInRlc3QiLCB7CisgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAiQHZhbHVlIiA6IDEyMworICB9IF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L21ldHJpY3MtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L21ldHJpY3MtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2IxZTk2NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvbWV0cmljcy12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDU0IEBACit7CisgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImR1ciIgOiB7CisgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICB9LAorICAgICJjb3VudHMiIDogeworICAgICAgInRyYXZlcnNlckNvdW50IiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICB9LAorICAgICAgImVsZW1lbnRDb3VudCIgOiB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgfQorICAgIH0sCisgICAgIm5hbWUiIDogIlRpbmtlckdyYXBoU3RlcCh2ZXJ0ZXgsW35sYWJlbC5lcShwZXJzb24pXSkiLAorICAgICJhbm5vdGF0aW9ucyIgOiB7CisgICAgICAicGVyY2VudER1ciIgOiB7CisgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgIH0KKyAgICB9LAorICAgICJpZCIgOiAiNy4wLjAoKSIsCisgICAgIm1ldHJpY3MiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImR1ciIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgICAgICB9LAorICAgICAgICAiY291bnRzIiA6IHsKKyAgICAgICAgICAidHJhdmVyc2VyQ291bnQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgIH0sCisgICAgICAgICAgImVsZW1lbnRDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibmFtZSIgOiAiVmVydGV4U3RlcChPVVQsdmVydGV4KSIsCisgICAgICAgICJhbm5vdGF0aW9ucyIgOiB7CisgICAgICAgICAgInBlcmNlbnREdXIiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJpZCIgOiAiMy4wLjAoKSIKKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvbWV0cmljcy12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L21ldHJpY3MtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2ZTY3OGIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L21ldHJpY3MtdjNkMC5qc29uCkBAIC0wLDAgKzEsNTIgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgImR1ciIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgIH0sICJjb3VudHMiLCB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyAidHJhdmVyc2VyQ291bnQiLCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgfSwgImVsZW1lbnRDb3VudCIsIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICB9IF0KKyAgICB9LCAibmFtZSIsICJUaW5rZXJHcmFwaFN0ZXAodmVydGV4LFt+bGFiZWwuZXEocGVyc29uKV0pIiwgImFubm90YXRpb25zIiwgeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgInBlcmNlbnREdXIiLCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgIH0gXQorICAgIH0sICJpZCIsICI3LjAuMCgpIiwgIm1ldHJpY3MiLCB7CisgICAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgICAiQHZhbHVlIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgICAgfSwgImNvdW50cyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJ0cmF2ZXJzZXJDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICB9LCAiZWxlbWVudENvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJuYW1lIiwgIlZlcnRleFN0ZXAoT1VULHZlcnRleCkiLCAiYW5ub3RhdGlvbnMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAicGVyY2VudER1ciIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgImlkIiwgIjMuMC4wKCkiIF0KKyAgICAgICAgfQorICAgICAgfSBdCisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L21vbnRoZGF5LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9tb250aGRheS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGE1OTE0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9tb250aGRheS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpNb250aERheSIsCisgICJAdmFsdWUiIDogIi0tMDEtMDEiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9tb250aGRheS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L21vbnRoZGF5LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGE1OTE0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9tb250aGRheS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6TW9udGhEYXkiLAorICAiQHZhbHVlIiA6ICItLTAxLTAxIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvb2Zmc2V0ZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L29mZnNldGRhdGV0aW1lLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzZjQ1Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L29mZnNldGRhdGV0aW1lLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4Ok9mZnNldERhdGVUaW1lIiwKKyAgIkB2YWx1ZSIgOiAiMjAwNy0xMi0wM1QxMDoxNTozMCswMTowMCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L29mZnNldGRhdGV0aW1lLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvb2Zmc2V0ZGF0ZXRpbWUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzZjQ1Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L29mZnNldGRhdGV0aW1lLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpPZmZzZXREYXRlVGltZSIsCisgICJAdmFsdWUiIDogIjIwMDctMTItMDNUMTA6MTU6MzArMDE6MDAiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9vZmZzZXR0aW1lLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9vZmZzZXR0aW1lLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxMjQ5NTMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L29mZnNldHRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6T2Zmc2V0VGltZSIsCisgICJAdmFsdWUiIDogIjEwOjE1OjMwKzAxOjAwIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvb2Zmc2V0dGltZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L29mZnNldHRpbWUtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxMjQ5NTMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L29mZnNldHRpbWUtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4Ok9mZnNldFRpbWUiLAorICAiQHZhbHVlIiA6ICIxMDoxNTozMCswMTowMCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L29wZXJhdG9yLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9vcGVyYXRvci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNGMxNDAwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9vcGVyYXRvci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOk9wZXJhdG9yIiwKKyAgIkB2YWx1ZSIgOiAic3VtIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvb3BlcmF0b3ItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9vcGVyYXRvci12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTRjMTQwMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvb3BlcmF0b3ItdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6T3BlcmF0b3IiLAorICAiQHZhbHVlIiA6ICJzdW0iCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9vcmRlci12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvb3JkZXItdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGJlMDQzMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvb3JkZXItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpPcmRlciIsCisgICJAdmFsdWUiIDogInNodWZmbGUiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9vcmRlci12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L29yZGVyLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmUwNDMyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9vcmRlci12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpPcmRlciIsCisgICJAdmFsdWUiIDogInNodWZmbGUiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9wLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9wLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViZGZiM2IKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3AtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogImd0IiwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMAorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3AtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViZGZiM2IKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3AtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJndCIsCisgICAgInZhbHVlIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDAKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3BhbmQtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3BhbmQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzI3MTk1OAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcGFuZC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDI1IEBACit7CisgICJAdHlwZSIgOiAiZzpQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAiYW5kIiwKKyAgICAidmFsdWUiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAiZ3QiLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAibHQiLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9CisgICAgICB9CisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3BhbmQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9wYW5kLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjcxOTU4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9wYW5kLXYzZDAuanNvbgpAQCAtMCwwICsxLDI1IEBACit7CisgICJAdHlwZSIgOiAiZzpQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAiYW5kIiwKKyAgICAidmFsdWUiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAiZ3QiLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAibHQiLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9CisgICAgICB9CisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3BhdGgtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9wYXRoLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZWVlODgzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9wYXRoLXYxZDAuanNvbgpAQCAtMCwwICsxLDYyIEBACit7CisgICJsYWJlbHMiIDogWyBbIF0sIFsgXSwgWyBdIF0sCisgICJvYmplY3RzIiA6IFsgeworICAgICJpZCIgOiAxLAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDAsCisgICAgICAgICJ2YWx1ZSIgOiAibWFya28iCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiA2LAorICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTcsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwMQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA3LAorICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDAxLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDQKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogOCwKKyAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDQsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA5LAorICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTAsCisgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiA0LAorICAgICAgICAidmFsdWUiIDogImdyZW1saW4iCisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTEsCisgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiA1LAorICAgICAgICAidmFsdWUiIDogInRpbmtlcmdyYXBoIgorICAgICAgfSBdCisgICAgfQorICB9IF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3BhdGgtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9wYXRoLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTkyZDJmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9wYXRoLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxLDEzIEBACit7CisgICJsYWJlbHMiIDogWyBbIF0sIFsgXSwgWyBdIF0sCisgICJvYmplY3RzIiA6IFsgeworICAgICJpZCIgOiAxLAorICAgICJsYWJlbCIgOiAicGVyc29uIgorICB9LCB7CisgICAgImlkIiA6IDEwLAorICAgICJsYWJlbCIgOiAic29mdHdhcmUiCisgIH0sIHsKKyAgICAiaWQiIDogMTEsCisgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIKKyAgfSBdCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9wYXRoLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9wYXRoLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljY2FhMDAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3BhdGgtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwzNCBAQAoreworICAiQHR5cGUiIDogImc6UGF0aCIsCisgICJAdmFsdWUiIDogeworICAgICJsYWJlbHMiIDogWyBbIF0sIFsgXSwgWyBdIF0sCisgICAgIm9iamVjdHMiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIgorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAic29mdHdhcmUiCisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIKKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcGF0aC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3BhdGgtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxNmIzOTMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3BhdGgtdjNkMC5qc29uCkBAIC0wLDAgKzEsNDkgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlBhdGgiLAorICAiQHZhbHVlIiA6IHsKKyAgICAibGFiZWxzIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICJAdmFsdWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpTZXQiLAorICAgICAgICAiQHZhbHVlIiA6IFsgXQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6U2V0IiwKKyAgICAgICAgIkB2YWx1ZSIgOiBbIF0KKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlNldCIsCisgICAgICAgICJAdmFsdWUiIDogWyBdCisgICAgICB9IF0KKyAgICB9LAorICAgICJvYmplY3RzIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpMaXN0IiwKKyAgICAgICJAdmFsdWUiIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICAgIH0sCisgICAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICAgIH0sCisgICAgICAgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgICAgfSwKKyAgICAgICAgICAibGFiZWwiIDogInNvZnR3YXJlIgorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3BlcmlvZC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcGVyaW9kLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwNDM4YTEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3BlcmlvZC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpQZXJpb2QiLAorICAiQHZhbHVlIiA6ICJQMVk2TTE1RCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3BlcmlvZC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3BlcmlvZC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjA0MzhhMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcGVyaW9kLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpQZXJpb2QiLAorICAiQHZhbHVlIiA6ICJQMVk2TTE1RCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3BpY2stdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3BpY2stdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NhMmYyZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcGljay12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlBpY2siLAorICAiQHZhbHVlIiA6ICJhbnkiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9waWNrLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcGljay12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NhMmYyZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcGljay12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpQaWNrIiwKKyAgIkB2YWx1ZSIgOiAiYW55IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcG9wLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9wb3AtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjcxNTE1ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcG9wLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6UG9wIiwKKyAgIkB2YWx1ZSIgOiAiYWxsIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcG9wLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcG9wLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzE1MTVmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9wb3AtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6UG9wIiwKKyAgIkB2YWx1ZSIgOiAiYWxsIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcG9yLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9wb3ItdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFmY2I3ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcG9yLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMzEgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJvciIsCisgICAgInZhbHVlIiA6IFsgeworICAgICAgIkB0eXBlIiA6ICJnOlAiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJwcmVkaWNhdGUiIDogImd0IiwKKyAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMAorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlAiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJwcmVkaWNhdGUiIDogIndpdGhpbiIsCisgICAgICAgICJ2YWx1ZSIgOiBbIHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogLTEKKyAgICAgICAgfSwgeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAtMTAKKyAgICAgICAgfSwgeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAtMTAwCisgICAgICAgIH0gXQorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9wb3ItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9wb3ItdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3MWIxY2YKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Bvci12M2QwLmpzb24KQEAgLTAsMCArMSwzNCBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogIm9yIiwKKyAgICAidmFsdWUiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAiZ3QiLAorICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6UCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgInByZWRpY2F0ZSIgOiAid2l0aGluIiwKKyAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgICAgICAgIkB2YWx1ZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IC0xCisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogLTEwCisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogLTEwMAorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Byb3BlcnR5LXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcHJvcGVydHktdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwNTFjMGEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Byb3BlcnR5LXYxZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgImtleSIgOiAic2luY2UiLAorICAidmFsdWUiIDogMjAwOQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcHJvcGVydHktdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9wcm9wZXJ0eS12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzA1MWMwYQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcHJvcGVydHktdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAia2V5IiA6ICJzaW5jZSIsCisgICJ2YWx1ZSIgOiAyMDA5Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9wcm9wZXJ0eS12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcHJvcGVydHktdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjk2ZmUzMgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcHJvcGVydHktdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMCBAQAoreworICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAiQHZhbHVlIiA6IHsKKyAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgInZhbHVlIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Byb3BlcnR5LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcHJvcGVydHktdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5NmZlMzIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Byb3BlcnR5LXYzZDAuanNvbgpAQCAtMCwwICsxLDEwIEBACit7CisgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICJAdmFsdWUiIDogeworICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMjAwOQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcHdpdGhpbi12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcHdpdGhpbi12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZmEzODI2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9wd2l0aGluLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTAgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJ3aXRoaW4iLAorICAgICJ2YWx1ZSIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcHdpdGhpbi12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3B3aXRoaW4tdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzZjk5Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3B3aXRoaW4tdjNkMC5qc29uCkBAIC0wLDAgKzEsMTMgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJ3aXRoaW4iLAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgICAiQHZhbHVlIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0gXQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvcHdpdGhvdXQtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3B3aXRob3V0LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjMjI5MWIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3B3aXRob3V0LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTMgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlAiLAorICAiQHZhbHVlIiA6IHsKKyAgICAicHJlZGljYXRlIiA6ICJ3aXRob3V0IiwKKyAgICAidmFsdWUiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMgorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9wd2l0aG91dC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3B3aXRob3V0LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTE2ODkwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9wd2l0aG91dC12M2QwLmpzb24KQEAgLTAsMCArMSwxNiBAQAoreworICAiQHR5cGUiIDogImc6UCIsCisgICJAdmFsdWUiIDogeworICAgICJwcmVkaWNhdGUiIDogIndpdGhvdXQiLAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgICAiQHZhbHVlIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAyCisgICAgICB9IF0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Njb3BlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zY29wZS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTc0YWYwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zY29wZS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlNjb3BlIiwKKyAgIkB2YWx1ZSIgOiAibG9jYWwiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zY29wZS12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Njb3BlLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTc0YWYwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zY29wZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZzpTY29wZSIsCisgICJAdmFsdWUiIDogImxvY2FsIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2Vzc2lvbmNsb3NlLXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2Vzc2lvbmNsb3NlLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzgyNWU4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9uY2xvc2UtdjFkMC5qc29uCkBAIC0wLDAgKzEsOCBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImNsb3NlIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2Vzc2lvbmNsb3NlLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2Vzc2lvbmNsb3NlLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzgyNWU4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9uY2xvc2UtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsOCBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImNsb3NlIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2Vzc2lvbmNsb3NlLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9uY2xvc2UtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWM4MjVlOAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2Vzc2lvbmNsb3NlLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsOCBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImNsb3NlIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2Vzc2lvbmNsb3NlLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2Vzc2lvbmNsb3NlLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmUxY2NkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9uY2xvc2UtdjNkMC5qc29uCkBAIC0wLDAgKzEsOSBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImNsb3NlIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgInNlc3Npb24iLCAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIgXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9uZXZhbC12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Nlc3Npb25ldmFsLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmNlODJmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9uZXZhbC12MWQwLmpzb24KQEAgLTAsMCArMSwxMyBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJnLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIiwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2Vzc2lvbmV2YWwtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9uZXZhbC12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGJjZTgyZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2Vzc2lvbmV2YWwtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsMTMgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAiZy5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIsCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IDEKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Nlc3Npb25ldmFsLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9uZXZhbC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZmY4Yjk2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9uZXZhbC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDE2IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogInNlc3Npb24iLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogImcuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgInNlc3Npb24iIDogInVuaXF1ZS1zZXNzaW9uLWlkZW50aWZpZXIiLAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2Vzc2lvbmV2YWwtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9uZXZhbC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzAxYzM5MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2Vzc2lvbmV2YWwtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTUgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgImdyZW1saW4iLCAiZy5WKHgpIiwgImxhbmd1YWdlIiwgImdyZW1saW4tZ3Jvb3Z5IiwgInNlc3Npb24iLCAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIsICJiaW5kaW5ncyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbICJ4IiwgeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0gXQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9uZXZhbGFsaWFzZWQtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9uZXZhbGFsaWFzZWQtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmNGVmNDYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Nlc3Npb25ldmFsYWxpYXNlZC12MWQwLmpzb24KQEAgLTAsMCArMSwxNiBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICJzZXNzaW9uIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJzb2NpYWwuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImFsaWFzZXMiIDogeworICAgICAgImciIDogInNvY2lhbCIKKyAgICB9LAorICAgICJzZXNzaW9uIiA6ICJ1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWVyIiwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2Vzc2lvbmV2YWxhbGlhc2VkLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2Vzc2lvbmV2YWxhbGlhc2VkLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjRlZjQ2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9uZXZhbGFsaWFzZWQtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsMTYgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAic29jaWFsLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJhbGlhc2VzIiA6IHsKKyAgICAgICJnIiA6ICJzb2NpYWwiCisgICAgfSwKKyAgICAic2Vzc2lvbiIgOiAidW5pcXVlLXNlc3Npb24taWRlbnRpZmllciIsCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IDEKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Nlc3Npb25ldmFsYWxpYXNlZC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2Vzc2lvbmV2YWxhbGlhc2VkLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5NGU1ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Nlc3Npb25ldmFsYWxpYXNlZC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDE5IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogInNlc3Npb24iLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogInNvY2lhbC5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYWxpYXNlcyIgOiB7CisgICAgICAiZyIgOiAic29jaWFsIgorICAgIH0sCisgICAgInNlc3Npb24iIDogInVuaXF1ZS1zZXNzaW9uLWlkZW50aWZpZXIiLAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2Vzc2lvbmV2YWxhbGlhc2VkLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2Vzc2lvbmV2YWxhbGlhc2VkLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDQ4MTYwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9uZXZhbGFsaWFzZWQtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTggQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAic2Vzc2lvbiIsCisgICJhcmdzIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgImdyZW1saW4iLCAic29jaWFsLlYoeCkiLCAibGFuZ3VhZ2UiLCAiZ3JlbWxpbi1ncm9vdnkiLCAiYWxpYXNlcyIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbICJnIiwgInNvY2lhbCIgXQorICAgIH0sICJzZXNzaW9uIiwgInVuaXF1ZS1zZXNzaW9uLWlkZW50aWZpZXIiLCAiYmluZGluZ3MiLCB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyAieCIsIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICB9IF0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2Vzc2lvbmxlc3NldmFsLXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2Vzc2lvbmxlc3NldmFsLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzlhODA3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9ubGVzc2V2YWwtdjFkMC5qc29uCkBAIC0wLDAgKzEsMTIgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJnLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9ubGVzc2V2YWwtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9ubGVzc2V2YWwtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjOWE4MDcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Nlc3Npb25sZXNzZXZhbC12MmQwLW5vLXR5cGVzLmpzb24KQEAgLTAsMCArMSwxMiBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogImcuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IDEKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Nlc3Npb25sZXNzZXZhbC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2Vzc2lvbmxlc3NldmFsLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxZTJmNmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Nlc3Npb25sZXNzZXZhbC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDE1IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAiZy5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogeworICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgIH0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Nlc3Npb25sZXNzZXZhbC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Nlc3Npb25sZXNzZXZhbC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGM4YzhlNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2Vzc2lvbmxlc3NldmFsLXYzZDAuanNvbgpAQCAtMCwwICsxLDE1IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgImdyZW1saW4iLCAiZy5WKHgpIiwgImxhbmd1YWdlIiwgImdyZW1saW4tZ3Jvb3Z5IiwgImJpbmRpbmdzIiwgeworICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAiQHZhbHVlIiA6IFsgIngiLCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgfSBdCisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OWYwYzZjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYxZDAuanNvbgpAQCAtMCwwICsxLDE1IEBACit7CisgICJyZXF1ZXN0SWQiIDogImNiNjgyNTc4LTlkOTItNDQ5OS05ZWJjLTVjNmFhNzNjNTM5NyIsCisgICJvcCIgOiAiZXZhbCIsCisgICJwcm9jZXNzb3IiIDogIiIsCisgICJhcmdzIiA6IHsKKyAgICAiZ3JlbWxpbiIgOiAic29jaWFsLlYoeCkiLAorICAgICJsYW5ndWFnZSIgOiAiZ3JlbWxpbi1ncm9vdnkiLAorICAgICJhbGlhc2VzIiA6IHsKKyAgICAgICJnIiA6ICJzb2NpYWwiCisgICAgfSwKKyAgICAiYmluZGluZ3MiIDogeworICAgICAgIngiIDogMQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12MmQwLW5vLXR5cGVzLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5ZjBjNmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsMTUgQEAKK3sKKyAgInJlcXVlc3RJZCIgOiAiY2I2ODI1NzgtOWQ5Mi00NDk5LTllYmMtNWM2YWE3M2M1Mzk3IiwKKyAgIm9wIiA6ICJldmFsIiwKKyAgInByb2Nlc3NvciIgOiAiIiwKKyAgImFyZ3MiIDogeworICAgICJncmVtbGluIiA6ICJzb2NpYWwuVih4KSIsCisgICAgImxhbmd1YWdlIiA6ICJncmVtbGluLWdyb292eSIsCisgICAgImFsaWFzZXMiIDogeworICAgICAgImciIDogInNvY2lhbCIKKyAgICB9LAorICAgICJiaW5kaW5ncyIgOiB7CisgICAgICAieCIgOiAxCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmNmE1NGUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxOCBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgImdyZW1saW4iIDogInNvY2lhbC5WKHgpIiwKKyAgICAibGFuZ3VhZ2UiIDogImdyZW1saW4tZ3Jvb3Z5IiwKKyAgICAiYWxpYXNlcyIgOiB7CisgICAgICAiZyIgOiAic29jaWFsIgorICAgIH0sCisgICAgImJpbmRpbmdzIiA6IHsKKyAgICAgICJ4IiA6IHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmMwM2EzNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12M2QwLmpzb24KQEAgLTAsMCArMSwxOCBAQAoreworICAicmVxdWVzdElkIiA6ICJjYjY4MjU3OC05ZDkyLTQ0OTktOWViYy01YzZhYTczYzUzOTciLAorICAib3AiIDogImV2YWwiLAorICAicHJvY2Vzc29yIiA6ICIiLAorICAiYXJncyIgOiB7CisgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgIkB2YWx1ZSIgOiBbICJncmVtbGluIiwgInNvY2lhbC5WKHgpIiwgImxhbmd1YWdlIiwgImdyZW1saW4tZ3Jvb3Z5IiwgImFsaWFzZXMiLCB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyAiZyIsICJzb2NpYWwiIF0KKyAgICB9LCAiYmluZGluZ3MiLCB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyAieCIsIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICB9IF0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2V0LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2V0LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMmRlZWEyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zZXQtdjNkMC5qc29uCkBAIC0wLDAgKzEsNyBAQAoreworICAiQHR5cGUiIDogImc6U2V0IiwKKyAgIkB2YWx1ZSIgOiBbIHsKKyAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICJAdmFsdWUiIDogMQorICB9LCAicGVyc29uIiwgdHJ1ZSBdCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zaG9ydC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2hvcnQtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY4ZjVjZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2hvcnQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6SW50MTYiLAorICAiQHZhbHVlIiA6IDEwMAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2hvcnQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zaG9ydC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY4ZjVjZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc2hvcnQtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OkludDE2IiwKKyAgIkB2YWx1ZSIgOiAxMDAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3N0YW5kYXJkcmVzdWx0LXYxZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc3RhbmRhcmRyZXN1bHQtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliOTM3MjcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3N0YW5kYXJkcmVzdWx0LXYxZDAuanNvbgpAQCAtMCwwICsxLDUwIEBACit7CisgICJyZXF1ZXN0SWQiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIsCisgICJzdGF0dXMiIDogeworICAgICJtZXNzYWdlIiA6ICIiLAorICAgICJjb2RlIiA6IDIwMCwKKyAgICAiYXR0cmlidXRlcyIgOiB7IH0KKyAgfSwKKyAgInJlc3VsdCIgOiB7CisgICAgImRhdGEiIDogWyB7CisgICAgICAiaWQiIDogMSwKKyAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAiaWQiIDogMCwKKyAgICAgICAgICAidmFsdWUiIDogIm1hcmtvIgorICAgICAgICB9IF0sCisgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAiaWQiIDogNiwKKyAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiAxOTk3LAorICAgICAgICAgICAgImVuZFRpbWUiIDogMjAwMQorICAgICAgICAgIH0KKyAgICAgICAgfSwgeworICAgICAgICAgICJpZCIgOiA3LAorICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDAxLAorICAgICAgICAgICAgImVuZFRpbWUiIDogMjAwNAorICAgICAgICAgIH0KKyAgICAgICAgfSwgeworICAgICAgICAgICJpZCIgOiA4LAorICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDUKKyAgICAgICAgICB9CisgICAgICAgIH0sIHsKKyAgICAgICAgICAiaWQiIDogOSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDUKKyAgICAgICAgICB9CisgICAgICAgIH0gXQorICAgICAgfQorICAgIH0gXSwKKyAgICAibWV0YSIgOiB7IH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc3RhbmRhcmRyZXN1bHQtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3N0YW5kYXJkcmVzdWx0LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1N2M2ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3N0YW5kYXJkcmVzdWx0LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTExIEBACit7CisgICJyZXF1ZXN0SWQiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIsCisgICJzdGF0dXMiIDogeworICAgICJtZXNzYWdlIiA6ICIiLAorICAgICJjb2RlIiA6IDIwMCwKKyAgICAiYXR0cmlidXRlcyIgOiB7IH0KKyAgfSwKKyAgInJlc3VsdCIgOiB7CisgICAgImRhdGEiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTk3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0gXSwKKyAgICAibWV0YSIgOiB7IH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc3RhbmRhcmRyZXN1bHQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi9zdGFuZGFyZHJlc3VsdC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGZjYTQwMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvc3RhbmRhcmRyZXN1bHQtdjNkMC5qc29uCkBAIC0wLDAgKzEsMTIwIEBACit7CisgICJyZXF1ZXN0SWQiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIsCisgICJzdGF0dXMiIDogeworICAgICJtZXNzYWdlIiA6ICIiLAorICAgICJjb2RlIiA6IDIwMCwKKyAgICAiYXR0cmlidXRlcyIgOiB7CisgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICJAdmFsdWUiIDogWyBdCisgICAgfQorICB9LAorICAicmVzdWx0IiA6IHsKKyAgICAiZGF0YSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6TGlzdCIsCisgICAgICAiQHZhbHVlIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgICB9LAorICAgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBdLAorICAgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW4gZGllZ28iLAorICAgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5OTcKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBjcnV6IiwKKyAgICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBmZSIsCisgICAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9LAorICAgICJtZXRhIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgIkB2YWx1ZSIgOiBbIF0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3QtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3QtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTY5Mzk4MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlQiLAorICAiQHZhbHVlIiA6ICJsYWJlbCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3QtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi90LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjkzOTgzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi90LXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlQiLAorICAiQHZhbHVlIiA6ICJsYWJlbCIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3RleHRwLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi90ZXh0cC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODIwOTg5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi90ZXh0cC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDcgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlRleHRQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAiY29udGFpbmluZyIsCisgICAgInZhbHVlIiA6ICJhcmsiCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3RleHRwLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdGV4dHAtdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4MjA5ODkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3RleHRwLXYzZDAuanNvbgpAQCAtMCwwICsxLDcgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlRleHRQIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInByZWRpY2F0ZSIgOiAiY29udGFpbmluZyIsCisgICAgInZhbHVlIiA6ICJhcmsiCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3RpbWVzdGFtcC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdGltZXN0YW1wLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjYTBlMTcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3RpbWVzdGFtcC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlRpbWVzdGFtcCIsCisgICJAdmFsdWUiIDogMTQ4MTc1MDA3NjI5NQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdGltZXN0YW1wLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdGltZXN0YW1wLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2EwZTE3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi90aW1lc3RhbXAtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6VGltZXN0YW1wIiwKKyAgIkB2YWx1ZSIgOiAxNDgxNzUwMDc2Mjk1Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi90aW5rZXJncmFwaC12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3RpbmtlcmdyYXBoLXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzcxOWY2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi90aW5rZXJncmFwaC12MWQwLmpzb24KQEAgLTAsMCArMSwzMTMgQEAKK3sKKyAgInZlcnRpY2VzIiA6IFsgeworICAgICJpZCIgOiAxLAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDAsCisgICAgICAgICJ2YWx1ZSIgOiAibWFya28iCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiA2LAorICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTcsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwMQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA3LAorICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDAxLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDQKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogOCwKKyAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDQsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA5LAorICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogNywKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiAxLAorICAgICAgICAidmFsdWUiIDogInN0ZXBoZW4iCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiAxMCwKKyAgICAgICAgInZhbHVlIiA6ICJjZW50cmV2aWxsZSIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTAsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwMAorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxMSwKKyAgICAgICAgInZhbHVlIiA6ICJkdWxsZXMiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDAwLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDYKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTIsCisgICAgICAgICJ2YWx1ZSIgOiAicHVyY2VsbHZpbGxlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNgorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogOCwKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInR5cGUiIDogInZlcnRleCIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiAyLAorICAgICAgICAidmFsdWUiIDogIm1hdHRoaWFzIgorICAgICAgfSBdLAorICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAiaWQiIDogMTMsCisgICAgICAgICJ2YWx1ZSIgOiAiYnJlbWVuIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA3CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE0LAorICAgICAgICAidmFsdWUiIDogImJhbHRpbW9yZSIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDcsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAxMQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxNSwKKyAgICAgICAgInZhbHVlIiA6ICJvYWtsYW5kIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAxMSwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDE0CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE2LAorICAgICAgICAidmFsdWUiIDogInNlYXR0bGUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDE0CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiA5LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAidHlwZSIgOiAidmVydGV4IiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDMsCisgICAgICAgICJ2YWx1ZSIgOiAiZGFuaWVsIgorICAgICAgfSBdLAorICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAiaWQiIDogMTcsCisgICAgICAgICJ2YWx1ZSIgOiAic3ByZW1iZXJnIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMTk4MiwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE4LAorICAgICAgICAidmFsdWUiIDogImthaXNlcnNsYXV0ZXJuIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNSwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA5CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE5LAorICAgICAgICAidmFsdWUiIDogImFhY2hlbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDkKKyAgICAgICAgfQorICAgICAgfSBdCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDEwLAorICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogNCwKKyAgICAgICAgInZhbHVlIiA6ICJncmVtbGluIgorICAgICAgfSBdCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDExLAorICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJ0eXBlIiA6ICJ2ZXJ0ZXgiLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogNSwKKyAgICAgICAgInZhbHVlIiA6ICJ0aW5rZXJncmFwaCIKKyAgICAgIH0gXQorICAgIH0KKyAgfSBdLAorICAiZWRnZXMiIDogWyB7CisgICAgImlkIiA6IDEzLAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogMjAwOQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxNCwKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDEsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IDIwMTAKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTUsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDEwLAorICAgICJvdXRWIiA6IDEsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IDQKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTYsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDEsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IDUKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTcsCisgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgInR5cGUiIDogImVkZ2UiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMCwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiAyMDEwCisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE4LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogNywKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogMjAxMQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxOSwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogNywKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogNQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyMCwKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogNywKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogNAorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyMSwKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDEwLAorICAgICJvdXRWIiA6IDgsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNpbmNlIiA6IDIwMTIKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjIsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDEwLAorICAgICJvdXRWIiA6IDgsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IDMKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjMsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDgsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IDMKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjQsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDEwLAorICAgICJvdXRWIiA6IDksCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IDUKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjUsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAidHlwZSIgOiAiZWRnZSIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDksCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IDMKKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjYsCisgICAgImxhYmVsIiA6ICJ0cmF2ZXJzZXMiLAorICAgICJ0eXBlIiA6ICJlZGdlIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiAxMAorICB9IF0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3RpbmtlcmdyYXBoLXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdGlua2VyZ3JhcGgtdjJkMC1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0YWQwNjEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3RpbmtlcmdyYXBoLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxLDM1MiBAQAoreworICAidmVydGljZXMiIDogWyB7CisgICAgImlkIiA6IDEsCisgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiaWQiIDogMCwKKyAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgImlkIiA6IDYsCisgICAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDE5OTcsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwMQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiA3LAorICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwMSwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA0CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDgsCisgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNCwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA1CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDksCisgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogNywKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiAxLAorICAgICAgICAidmFsdWUiIDogInN0ZXBoZW4iLAorICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJpZCIgOiAxMCwKKyAgICAgICAgInZhbHVlIiA6ICJjZW50cmV2aWxsZSIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAxOTkwLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDAKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTEsCisgICAgICAgICJ2YWx1ZSIgOiAiZHVsbGVzIiwKKyAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDAsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNgorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxMiwKKyAgICAgICAgInZhbHVlIiA6ICJwdXJjZWxsdmlsbGUiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNgorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogOCwKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiAyLAorICAgICAgICAidmFsdWUiIDogIm1hdHRoaWFzIiwKKyAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgfSBdLAorICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAiaWQiIDogMTMsCisgICAgICAgICJ2YWx1ZSIgOiAiYnJlbWVuIiwKKyAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDQsCisgICAgICAgICAgImVuZFRpbWUiIDogMjAwNworICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJpZCIgOiAxNCwKKyAgICAgICAgInZhbHVlIiA6ICJiYWx0aW1vcmUiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNywKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDExCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE1LAorICAgICAgICAidmFsdWUiIDogIm9ha2xhbmQiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAxMSwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDE0CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE2LAorICAgICAgICAidmFsdWUiIDogInNlYXR0bGUiLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAxNAorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogOSwKKyAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICJpZCIgOiAzLAorICAgICAgICAidmFsdWUiIDogImRhbmllbCIsCisgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgIH0gXSwKKyAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgImlkIiA6IDE3LAorICAgICAgICAidmFsdWUiIDogInNwcmVtYmVyZyIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAxOTgyLAorICAgICAgICAgICJlbmRUaW1lIiA6IDIwMDUKKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiaWQiIDogMTgsCisgICAgICAgICJ2YWx1ZSIgOiAia2Fpc2Vyc2xhdXRlcm4iLAorICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzdGFydFRpbWUiIDogMjAwNSwKKyAgICAgICAgICAiZW5kVGltZSIgOiAyMDA5CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgImlkIiA6IDE5LAorICAgICAgICAidmFsdWUiIDogImFhY2hlbiIsCisgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA5CisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxMCwKKyAgICAibGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDQsCisgICAgICAgICJ2YWx1ZSIgOiAiZ3JlbWxpbiIsCisgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgIH0gXQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxMSwKKyAgICAibGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgImlkIiA6IDUsCisgICAgICAgICJ2YWx1ZSIgOiAidGlua2VyZ3JhcGgiLAorICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICB9IF0KKyAgICB9CisgIH0gXSwKKyAgImVkZ2VzIiA6IFsgeworICAgICJpZCIgOiAxMywKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogeworICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICJ2YWx1ZSIgOiAyMDA5CisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE0LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiAxLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgInZhbHVlIiA6IDIwMTAKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTUsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogMSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiA0CisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE2LAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDEsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAidmFsdWUiIDogNQorICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAxNywKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogNywKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogeworICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICJ2YWx1ZSIgOiAyMDEwCisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDE4LAorICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiA3LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgInZhbHVlIiA6IDIwMTEKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMTksCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogNywKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiA1CisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDIwLAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDcsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAidmFsdWUiIDogNAorICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyMSwKKyAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogOCwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2luY2UiIDogeworICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICJ2YWx1ZSIgOiAyMDEyCisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDIyLAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDEwLAorICAgICJvdXRWIiA6IDgsCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAidmFsdWUiIDogMworICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyMywKKyAgICAibGFiZWwiIDogInVzZXMiLAorICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgImluViIgOiAxMSwKKyAgICAib3V0ViIgOiA4LAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJza2lsbCIgOiB7CisgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgInZhbHVlIiA6IDMKKyAgICAgIH0KKyAgICB9CisgIH0sIHsKKyAgICAiaWQiIDogMjQsCisgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICJpblYiIDogMTAsCisgICAgIm91dFYiIDogOSwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAic2tpbGwiIDogeworICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICJ2YWx1ZSIgOiA1CisgICAgICB9CisgICAgfQorICB9LCB7CisgICAgImlkIiA6IDI1LAorICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAiaW5WIiA6IDExLAorICAgICJvdXRWIiA6IDksCisgICAgInByb3BlcnRpZXMiIDogeworICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAidmFsdWUiIDogMworICAgICAgfQorICAgIH0KKyAgfSwgeworICAgICJpZCIgOiAyNiwKKyAgICAibGFiZWwiIDogInRyYXZlcnNlcyIsCisgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgIm91dFZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICJpblYiIDogMTEsCisgICAgIm91dFYiIDogMTAKKyAgfSBdCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi90aW5rZXJncmFwaC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdGlua2VyZ3JhcGgtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjRlOTVlZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdGlua2VyZ3JhcGgtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw4MjkgQEAKK3sKKyAgIkB0eXBlIiA6ICJ0aW5rZXI6Z3JhcGgiLAorICAiQHZhbHVlIiA6IHsKKyAgICAidmVydGljZXMiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTk3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzdGVwaGVuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiY2VudHJldmlsbGUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5MAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJkdWxsZXMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTIKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJwdXJjZWxsdmlsbGUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogIm1hdHRoaWFzIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEzCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJlbWVuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDcKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE0CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYmFsdGltb3JlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDcKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTEKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE1CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAib2FrbGFuZCIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDExCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDE0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNlYXR0bGUiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxNAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImRhbmllbCIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxNworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNwcmVtYmVyZyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTgyCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImthaXNlcnNsYXV0ZXJuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYWFjaGVuIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJncmVtbGluIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInRpbmtlcmdyYXBoIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXQorICAgICAgICB9CisgICAgICB9CisgICAgfSBdLAorICAgICJlZGdlcyIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwOQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE0CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDEwCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTUKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE2CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDUKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxNworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE4CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAiZGV2ZWxvcHMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNpbmNlIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2luY2UiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDExCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTkKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDIwCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyMQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMgorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDIyCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDMKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyMworICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAzCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjQKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDI1CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDMKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyNgorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInRyYXZlcnNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdGlua2VyZ3JhcGgtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi90aW5rZXJncmFwaC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjRlOTVlZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdGlua2VyZ3JhcGgtdjNkMC5qc29uCkBAIC0wLDAgKzEsODI5IEBACit7CisgICJAdHlwZSIgOiAidGlua2VyOmdyYXBoIiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgInZlcnRpY2VzIiA6IFsgeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDYKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW4gZGllZ28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5NworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImJydXNzZWxzIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBmZSIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic3RlcGhlbiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImNlbnRyZXZpbGxlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5OTAKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDAKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiZHVsbGVzIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDAKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDYKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEyCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAicHVyY2VsbHZpbGxlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDYKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJtYXR0aGlhcyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0sCisgICAgICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImJyZW1lbiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA3CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxNAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImJhbHRpbW9yZSIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDExCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxNQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogIm9ha2xhbmQiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxNAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTYKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzZWF0dGxlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDMKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJkYW5pZWwiLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTcKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzcHJlbWJlcmciLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk4MgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTgKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJrYWlzZXJzbGF1dGVybiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA5CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImFhY2hlbiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA5CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiZ3JlbWxpbiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgIm5hbWUiIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDUKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJ0aW5rZXJncmFwaCIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0gXSwKKyAgICAiZWRnZXMiIDogWyB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTMKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2luY2UiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDkKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxNAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMAorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE1CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxNgorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA1CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTcKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2luY2UiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTAKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxOAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogImRldmVsb3BzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJzaW5jZSIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNpbmNlIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAxMQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDE5CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDUKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyMAorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjEKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJkZXZlbG9wcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2luY2UiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJzaW5jZSIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMTIKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyMgorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAzCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjMKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ1c2VzIiwKKyAgICAgICAgImluVkxhYmVsIiA6ICJzb2Z0d2FyZSIsCisgICAgICAgICJvdXRWTGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJpblYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMQorICAgICAgICB9LAorICAgICAgICAib3V0ViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgfSwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJza2lsbCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJrZXkiIDogInNraWxsIiwKKyAgICAgICAgICAgICAgInZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOkVkZ2UiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDI0CisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAidXNlcyIsCisgICAgICAgICJpblZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAib3V0VkxhYmVsIiA6ICJwZXJzb24iLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgIH0sCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAic2tpbGwiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAia2V5IiA6ICJza2lsbCIsCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDUKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpFZGdlIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAyNQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInVzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgImluViIgOiB7CisgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDExCisgICAgICAgIH0sCisgICAgICAgICJvdXRWIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICB9LAorICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgInNraWxsIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImtleSIgOiAic2tpbGwiLAorICAgICAgICAgICAgICAidmFsdWUiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAzCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiQHR5cGUiIDogImc6RWRnZSIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMjYKKyAgICAgICAgfSwKKyAgICAgICAgImxhYmVsIiA6ICJ0cmF2ZXJzZXMiLAorICAgICAgICAiaW5WTGFiZWwiIDogInNvZnR3YXJlIiwKKyAgICAgICAgIm91dFZMYWJlbCIgOiAic29mdHdhcmUiLAorICAgICAgICAiaW5WIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMTEKKyAgICAgICAgfSwKKyAgICAgICAgIm91dFYiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxMAorICAgICAgICB9CisgICAgICB9CisgICAgfSBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3RyYXZlcnNhbG1ldHJpY3MtdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3RyYXZlcnNhbG1ldHJpY3MtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmRkMThhNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdHJhdmVyc2FsbWV0cmljcy12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDExNCBAQAoreworICAiQHR5cGUiIDogImc6VHJhdmVyc2FsTWV0cmljcyIsCisgICJAdmFsdWUiIDogeworICAgICJkdXIiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAiQHZhbHVlIiA6IDAuMDA0CisgICAgfSwKKyAgICAibWV0cmljcyIgOiBbIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiZHVyIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgIH0sCisgICAgICAgICJjb3VudHMiIDogeworICAgICAgICAgICJ0cmF2ZXJzZXJDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICAgICAgfSwKKyAgICAgICAgICAiZWxlbWVudENvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDQKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJuYW1lIiA6ICJUaW5rZXJHcmFwaFN0ZXAodmVydGV4LFt+bGFiZWwuZXEocGVyc29uKV0pIiwKKyAgICAgICAgImFubm90YXRpb25zIiA6IHsKKyAgICAgICAgICAicGVyY2VudER1ciIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImlkIiA6ICI3LjAuMCgpIgorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJAdHlwZSIgOiAiZzpNZXRyaWNzIiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiZHVyIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgIH0sCisgICAgICAgICJjb3VudHMiIDogeworICAgICAgICAgICJ0cmF2ZXJzZXJDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICAgIH0sCisgICAgICAgICAgImVsZW1lbnRDb3VudCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMworICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIm5hbWUiIDogIlZlcnRleFN0ZXAoT1VULHZlcnRleCkiLAorICAgICAgICAiYW5ub3RhdGlvbnMiIDogeworICAgICAgICAgICJwZXJjZW50RHVyIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaWQiIDogIjIuMC4wKCkiCisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJkdXIiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgfSwKKyAgICAgICAgImNvdW50cyIgOiB7CisgICAgICAgICAgInRyYXZlcnNlckNvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICB9LAorICAgICAgICAgICJlbGVtZW50Q291bnQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIm5hbWUiIDogIlZlcnRleFN0ZXAoT1VULHZlcnRleCkiLAorICAgICAgICAiYW5ub3RhdGlvbnMiIDogeworICAgICAgICAgICJwZXJjZW50RHVyIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAyNS4wCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaWQiIDogIjMuMC4wKCkiCisgICAgICB9CisgICAgfSwgeworICAgICAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICJkdXIiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICJAdmFsdWUiIDogMTAwLjAKKyAgICAgICAgfSwKKyAgICAgICAgImNvdW50cyIgOiB7CisgICAgICAgICAgInRyYXZlcnNlckNvdW50IiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgICB9LAorICAgICAgICAgICJlbGVtZW50Q291bnQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIm5hbWUiIDogIlRyZWVTdGVwIiwKKyAgICAgICAgImFubm90YXRpb25zIiA6IHsKKyAgICAgICAgICAicGVyY2VudER1ciIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6RG91YmxlIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImlkIiA6ICI0LjAuMCgpIgorICAgICAgfQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi90cmF2ZXJzYWxtZXRyaWNzLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdHJhdmVyc2FsbWV0cmljcy12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDZmNzYzNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdHJhdmVyc2FsbWV0cmljcy12M2QwLmpzb24KQEAgLTAsMCArMSwxMDkgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlRyYXZlcnNhbE1ldHJpY3MiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAiQHZhbHVlIiA6IFsgImR1ciIsIHsKKyAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgIkB2YWx1ZSIgOiAwLjAwNAorICAgIH0sICJtZXRyaWNzIiwgeworICAgICAgIkB0eXBlIiA6ICJnOkxpc3QiLAorICAgICAgIkB2YWx1ZSIgOiBbIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IFsgImR1ciIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgICAgICAgIH0sICJjb3VudHMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAidHJhdmVyc2VyQ291bnQiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogNAorICAgICAgICAgICAgfSwgImVsZW1lbnRDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA0CisgICAgICAgICAgICB9IF0KKyAgICAgICAgICB9LCAibmFtZSIsICJUaW5rZXJHcmFwaFN0ZXAodmVydGV4LFt+bGFiZWwuZXEocGVyc29uKV0pIiwgImFubm90YXRpb25zIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IFsgInBlcmNlbnREdXIiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJpZCIsICI3LjAuMCgpIiBdCisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOk1ldHJpY3MiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAiQHZhbHVlIiA6IFsgImR1ciIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiAxMDAuMAorICAgICAgICAgIH0sICJjb3VudHMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAidHJhdmVyc2VyQ291bnQiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMTMKKyAgICAgICAgICAgIH0sICJlbGVtZW50Q291bnQiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMTMKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJuYW1lIiwgIlZlcnRleFN0ZXAoT1VULHZlcnRleCkiLCAiYW5ub3RhdGlvbnMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAicGVyY2VudER1ciIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgImlkIiwgIjIuMC4wKCkiIF0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgICAgfSwgImNvdW50cyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJ0cmF2ZXJzZXJDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICB9LCAiZWxlbWVudENvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDcKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJuYW1lIiwgIlZlcnRleFN0ZXAoT1VULHZlcnRleCkiLCAiYW5ub3RhdGlvbnMiLCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6TWFwIiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogWyAicGVyY2VudER1ciIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjUuMAorICAgICAgICAgICAgfSBdCisgICAgICAgICAgfSwgImlkIiwgIjMuMC4wKCkiIF0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6TWV0cmljcyIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICJAdmFsdWUiIDogWyAiZHVyIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkRvdWJsZSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDEwMC4wCisgICAgICAgICAgfSwgImNvdW50cyIsIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpNYXAiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiBbICJ0cmF2ZXJzZXJDb3VudCIsIHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgICAgICB9LCAiZWxlbWVudENvdW50IiwgeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDEKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJuYW1lIiwgIlRyZWVTdGVwIiwgImFubm90YXRpb25zIiwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOk1hcCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IFsgInBlcmNlbnREdXIiLCB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpEb3VibGUiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDI1LjAKKyAgICAgICAgICAgIH0gXQorICAgICAgICAgIH0sICJpZCIsICI0LjAuMCgpIiBdCisgICAgICAgIH0KKyAgICAgIH0gXQorICAgIH0gXQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi90cmF2ZXJzZXItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3RyYXZlcnNlci12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTlhMjllCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi90cmF2ZXJzZXItdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSwxMDkgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlRyYXZlcnNlciIsCisgICJAdmFsdWUiIDogeworICAgICJidWxrIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9LAorICAgICJ2YWx1ZSIgOiB7CisgICAgICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgICAgICJAdmFsdWUiIDogeworICAgICAgICAiaWQiIDogeworICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgIkB2YWx1ZSIgOiAxCisgICAgICAgIH0sCisgICAgICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogIm5hbWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdLAorICAgICAgICAgICJsb2NhdGlvbiIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAxOTk3CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAic2FudGEgY3J1eiIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiA4CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IF0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdHJhdmVyc2VyLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdHJhdmVyc2VyLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTlhMjllCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi90cmF2ZXJzZXItdjNkMC5qc29uCkBAIC0wLDAgKzEsMTA5IEBACit7CisgICJAdHlwZSIgOiAiZzpUcmF2ZXJzZXIiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiYnVsayIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgIkB2YWx1ZSIgOiAxCisgICAgfSwKKyAgICAidmFsdWUiIDogeworICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleCIsCisgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICJAdmFsdWUiIDogMQorICAgICAgICB9LAorICAgICAgICAibGFiZWwiIDogInBlcnNvbiIsCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICAgICAgfQorICAgICAgICAgIH0gXSwKKyAgICAgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDYKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW4gZGllZ28iLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5NworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAidmFsdWUiIDogImJydXNzZWxzIiwKKyAgICAgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICAgICAiQHZhbHVlIiA6IDkKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBmZSIsCisgICAgICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBdCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3V1aWQtdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi91dWlkLXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzZmZjk2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi91dWlkLXYyZDAtbm8tdHlwZXMuanNvbgpAQCAtMCwwICsxIEBACisiNDFkMmUyOGEtMjBhNC00YWIwLWIzNzktZDgxMGRlZGUzNzg2IgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdXVpZC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdXVpZC12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2YwOWYwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi91dWlkLXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImc6VVVJRCIsCisgICJAdmFsdWUiIDogIjQxZDJlMjhhLTIwYTQtNGFiMC1iMzc5LWQ4MTBkZWRlMzc4NiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3V1aWQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi91dWlkLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2YwOWYwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi91dWlkLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJnOlVVSUQiLAorICAiQHZhbHVlIiA6ICI0MWQyZTI4YS0yMGE0LTRhYjAtYjM3OS1kODEwZGVkZTM3ODYiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi92ZXJ0ZXgtdjFkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi92ZXJ0ZXgtdjFkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4ODVmNTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3ZlcnRleC12MWQwLmpzb24KQEAgLTAsMCArMSwzOSBAQAoreworICAiaWQiIDogMSwKKyAgImxhYmVsIiA6ICJwZXJzb24iLAorICAidHlwZSIgOiAidmVydGV4IiwKKyAgInByb3BlcnRpZXMiIDogeworICAgICJuYW1lIiA6IFsgeworICAgICAgImlkIiA6IDAsCisgICAgICAidmFsdWUiIDogIm1hcmtvIgorICAgIH0gXSwKKyAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAiaWQiIDogNiwKKyAgICAgICJ2YWx1ZSIgOiAic2FuIGRpZWdvIiwKKyAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgInN0YXJ0VGltZSIgOiAxOTk3LAorICAgICAgICAiZW5kVGltZSIgOiAyMDAxCisgICAgICB9CisgICAgfSwgeworICAgICAgImlkIiA6IDcsCisgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDEsCisgICAgICAgICJlbmRUaW1lIiA6IDIwMDQKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiaWQiIDogOCwKKyAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDQsCisgICAgICAgICJlbmRUaW1lIiA6IDIwMDUKKyAgICAgIH0KKyAgICB9LCB7CisgICAgICAiaWQiIDogOSwKKyAgICAgICJ2YWx1ZSIgOiAic2FudGEgZmUiLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDUKKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdmVydGV4LXYyZDAtbm8tdHlwZXMuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdmVydGV4LXYyZDAtbm8tdHlwZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTYxNTVmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi92ZXJ0ZXgtdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsNDMgQEAKK3sKKyAgImlkIiA6IDEsCisgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgInByb3BlcnRpZXMiIDogeworICAgICJuYW1lIiA6IFsgeworICAgICAgImlkIiA6IDAsCisgICAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICB9IF0sCisgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgImlkIiA6IDYsCisgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgInN0YXJ0VGltZSIgOiAxOTk3LAorICAgICAgICAiZW5kVGltZSIgOiAyMDAxCisgICAgICB9CisgICAgfSwgeworICAgICAgImlkIiA6IDcsCisgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICJzdGFydFRpbWUiIDogMjAwMSwKKyAgICAgICAgImVuZFRpbWUiIDogMjAwNAorICAgICAgfQorICAgIH0sIHsKKyAgICAgICJpZCIgOiA4LAorICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgInN0YXJ0VGltZSIgOiAyMDA0LAorICAgICAgICAiZW5kVGltZSIgOiAyMDA1CisgICAgICB9CisgICAgfSwgeworICAgICAgImlkIiA6IDksCisgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAic3RhcnRUaW1lIiA6IDIwMDUKKyAgICAgIH0KKyAgICB9IF0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdmVydGV4LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi92ZXJ0ZXgtdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjEwMjIzMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdmVydGV4LXYyZDAtcGFydGlhbC5qc29uCkBAIC0wLDAgKzEsMTAwIEBACit7CisgICJAdHlwZSIgOiAiZzpWZXJ0ZXgiLAorICAiQHZhbHVlIiA6IHsKKyAgICAiaWQiIDogeworICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICJAdmFsdWUiIDogMQorICAgIH0sCisgICAgImxhYmVsIiA6ICJwZXJzb24iLAorICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICJuYW1lIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogMAorICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJtYXJrbyIsCisgICAgICAgICAgImxhYmVsIiA6ICJuYW1lIgorICAgICAgICB9CisgICAgICB9IF0sCisgICAgICAibG9jYXRpb24iIDogWyB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA2CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbiBkaWVnbyIsCisgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMTk5NworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA3CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGNydXoiLAorICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDEKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogOAorICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJicnVzc2VscyIsCisgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJlbmRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9LCB7CisgICAgICAgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICAgICAgICJAdmFsdWUiIDogeworICAgICAgICAgICJpZCIgOiB7CisgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgICAgICAgIkB2YWx1ZSIgOiA5CisgICAgICAgICAgfSwKKyAgICAgICAgICAidmFsdWUiIDogInNhbnRhIGZlIiwKKyAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDA1CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9IF0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3ZlcnRleC12M2QwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3ZlcnRleC12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjEwMjIzMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdmVydGV4LXYzZDAuanNvbgpAQCAtMCwwICsxLDEwMCBAQAoreworICAiQHR5cGUiIDogImc6VmVydGV4IiwKKyAgIkB2YWx1ZSIgOiB7CisgICAgImlkIiA6IHsKKyAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAiQHZhbHVlIiA6IDEKKyAgICB9LAorICAgICJsYWJlbCIgOiAicGVyc29uIiwKKyAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAibmFtZSIgOiBbIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDAKKyAgICAgICAgICB9LAorICAgICAgICAgICJ2YWx1ZSIgOiAibWFya28iLAorICAgICAgICAgICJsYWJlbCIgOiAibmFtZSIKKyAgICAgICAgfQorICAgICAgfSBdLAorICAgICAgImxvY2F0aW9uIiA6IFsgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogNgorICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJzYW4gZGllZ28iLAorICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDE5OTcKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwMQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogNworICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBjcnV6IiwKKyAgICAgICAgICAibGFiZWwiIDogImxvY2F0aW9uIiwKKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7CisgICAgICAgICAgICAic3RhcnRUaW1lIiA6IHsKKyAgICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDMyIiwKKyAgICAgICAgICAgICAgIkB2YWx1ZSIgOiAyMDAxCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgImVuZFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0sIHsKKyAgICAgICAgIkB0eXBlIiA6ICJnOlZlcnRleFByb3BlcnR5IiwKKyAgICAgICAgIkB2YWx1ZSIgOiB7CisgICAgICAgICAgImlkIiA6IHsKKyAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQ2NCIsCisgICAgICAgICAgICAiQHZhbHVlIiA6IDgKKyAgICAgICAgICB9LAorICAgICAgICAgICJ2YWx1ZSIgOiAiYnJ1c3NlbHMiLAorICAgICAgICAgICJsYWJlbCIgOiAibG9jYXRpb24iLAorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKKyAgICAgICAgICAgICJzdGFydFRpbWUiIDogeworICAgICAgICAgICAgICAiQHR5cGUiIDogImc6SW50MzIiLAorICAgICAgICAgICAgICAiQHZhbHVlIiA6IDIwMDQKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiZW5kVGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSwgeworICAgICAgICAiQHR5cGUiIDogImc6VmVydGV4UHJvcGVydHkiLAorICAgICAgICAiQHZhbHVlIiA6IHsKKyAgICAgICAgICAiaWQiIDogeworICAgICAgICAgICAgIkB0eXBlIiA6ICJnOkludDY0IiwKKyAgICAgICAgICAgICJAdmFsdWUiIDogOQorICAgICAgICAgIH0sCisgICAgICAgICAgInZhbHVlIiA6ICJzYW50YSBmZSIsCisgICAgICAgICAgImxhYmVsIiA6ICJsb2NhdGlvbiIsCisgICAgICAgICAgInByb3BlcnRpZXMiIDogeworICAgICAgICAgICAgInN0YXJ0VGltZSIgOiB7CisgICAgICAgICAgICAgICJAdHlwZSIgOiAiZzpJbnQzMiIsCisgICAgICAgICAgICAgICJAdmFsdWUiIDogMjAwNQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSBdCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi92ZXJ0ZXhwcm9wZXJ0eS12MWQwLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3ZlcnRleHByb3BlcnR5LXYxZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDAyNWE4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi92ZXJ0ZXhwcm9wZXJ0eS12MWQwLmpzb24KQEAgLTAsMCArMSw1IEBACit7CisgICJpZCIgOiAwLAorICAidmFsdWUiIDogIm1hcmtvIiwKKyAgImxhYmVsIiA6ICJuYW1lIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdmVydGV4cHJvcGVydHktdjJkMC1uby10eXBlcy5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi92ZXJ0ZXhwcm9wZXJ0eS12MmQwLW5vLXR5cGVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQwMjVhOAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdmVydGV4cHJvcGVydHktdjJkMC1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsNSBAQAoreworICAiaWQiIDogMCwKKyAgInZhbHVlIiA6ICJtYXJrbyIsCisgICJsYWJlbCIgOiAibmFtZSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3ZlcnRleHByb3BlcnR5LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi92ZXJ0ZXhwcm9wZXJ0eS12MmQwLXBhcnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjE4NGIxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi92ZXJ0ZXhwcm9wZXJ0eS12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDExIEBACit7CisgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICJAdmFsdWUiIDogeworICAgICJpZCIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgIkB2YWx1ZSIgOiAwCisgICAgfSwKKyAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAibGFiZWwiIDogIm5hbWUiCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3ZlcnRleHByb3BlcnR5LXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvdmVydGV4cHJvcGVydHktdjNkMC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmMTg0YjEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3ZlcnRleHByb3BlcnR5LXYzZDAuanNvbgpAQCAtMCwwICsxLDExIEBACit7CisgICJAdHlwZSIgOiAiZzpWZXJ0ZXhQcm9wZXJ0eSIsCisgICJAdmFsdWUiIDogeworICAgICJpZCIgOiB7CisgICAgICAiQHR5cGUiIDogImc6SW50NjQiLAorICAgICAgIkB2YWx1ZSIgOiAwCisgICAgfSwKKyAgICAidmFsdWUiIDogIm1hcmtvIiwKKyAgICAibGFiZWwiIDogIm5hbWUiCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3llYXItdjJkMC1wYXJ0aWFsLmpzb24gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3llYXItdjJkMC1wYXJ0aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY0MjBiYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYveWVhci12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpZZWFyIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3llYXItdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi95ZWFyLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjQyMGJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi95ZWFyLXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpZZWFyIiwKKyAgIkB2YWx1ZSIgOiAiMjAxNiIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3llYXJtb250aC12MmQwLXBhcnRpYWwuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYveWVhcm1vbnRoLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4YTVlMjcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3llYXJtb250aC12MmQwLXBhcnRpYWwuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpZZWFyTW9udGgiLAorICAiQHZhbHVlIiA6ICIyMDE2LTA2IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYveWVhcm1vbnRoLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYveWVhcm1vbnRoLXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OGE1ZTI3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi95ZWFybW9udGgtdjNkMC5qc29uCkBAIC0wLDAgKzEsNCBAQAoreworICAiQHR5cGUiIDogImd4OlllYXJNb250aCIsCisgICJAdmFsdWUiIDogIjIwMTYtMDYiCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi96b25lZGRhdGV0aW1lLXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi96b25lZGRhdGV0aW1lLXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2N2ZjNDcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3pvbmVkZGF0ZXRpbWUtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Wm9uZWREYXRlVGltZSIsCisgICJAdmFsdWUiIDogIjIwMTYtMTItMjNUMTI6MTI6MjQuMDAwMDAwMDM2KzAyOjAwW0dNVCswMjowMF0iCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi96b25lZGRhdGV0aW1lLXYzZDAuanNvbiBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvem9uZWRkYXRldGltZS12M2QwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY3ZmM0NwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9fM180XzYvem9uZWRkYXRldGltZS12M2QwLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Wm9uZWREYXRlVGltZSIsCisgICJAdmFsdWUiIDogIjIwMTYtMTItMjNUMTI6MTI6MjQuMDAwMDAwMDM2KzAyOjAwW0dNVCswMjowMF0iCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi96b25lb2Zmc2V0LXYyZDAtcGFydGlhbC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi96b25lb2Zmc2V0LXYyZDAtcGFydGlhbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1OTE3OTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3pvbmVvZmZzZXQtdjJkMC1wYXJ0aWFsLmpzb24KQEAgLTAsMCArMSw0IEBACit7CisgICJAdHlwZSIgOiAiZ3g6Wm9uZU9mZnNldCIsCisgICJAdmFsdWUiIDogIiswMzowNjowOSIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vXzNfNF82L3pvbmVvZmZzZXQtdjNkMC5qc29uIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi96b25lb2Zmc2V0LXYzZDAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTkxNzk0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyYXBoc29uL18zXzRfNi96b25lb2Zmc2V0LXYzZDAuanNvbgpAQCAtMCwwICsxLDQgQEAKK3sKKyAgIkB0eXBlIiA6ICJneDpab25lT2Zmc2V0IiwKKyAgIkB2YWx1ZSIgOiAiKzAzOjA2OjA5IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhZjkxYWMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjk5ZjJhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBy2gleJ2SRJmevFxqpzxTl4FhdXRoZW50aWNhdGlv7gECAwFzYXNsTWVjaGFuaXPtAwFQTEFJzgMBc2Fz7AMBQUhOMFpYQm9jR2hsYmdCd1lYTnpkMjl5WkE9vQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9iYXJyaWVyLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9iYXJyaWVyLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2JhcnJpZXItdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2JhcnJpZXItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2JhcnJpZXItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvYmFycmllci12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvYmlnZGVjaW1hbC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvYmlnZGVjaW1hbC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDRmNDBlMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9iaWdkZWNpbWFsLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvYmlnZGVjaW1hbC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvYmlnZGVjaW1hbC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDRmNDBlMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9iaWdkZWNpbWFsLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvYmlnaW50ZWdlci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvYmlnaW50ZWdlci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQyNGFjNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9iaWdpbnRlZ2VyLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBEBfG48L90YJaz30CRHb6sQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9iaWdpbnRlZ2VyLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9iaWdpbnRlZ2VyLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDI0YWM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2JpZ2ludGVnZXItdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEQF8bjwv3RglrPfQJEdvqxClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2JpbmRpbmctdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2JpbmRpbmctdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwMzE0M2IKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvYmluZGluZy12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAYJ4AgIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvYmluZGluZy12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvYmluZGluZy12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTAzMTQzYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9iaW5kaW5nLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBgngCAgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9idWxrc2V0LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9idWxrc2V0LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZmRhMjdhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2J1bGtzZXQtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEDAwFtYXJr7wMBam9z6AMEClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2J1bGtzZXQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2J1bGtzZXQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmZGEyN2EKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvYnVsa3NldC12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQMDAW1hcmvvAwFqb3PoAwQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvYnl0ZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvYnl0ZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmIyYWFhNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9ieXRlLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2J5dGUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2J5dGUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiMmFhYTcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvYnl0ZS12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9ieXRlYnVmZmVyLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9ieXRlYnVmZmVyLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTk0YjVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2J5dGVidWZmZXItdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9ieXRlYnVmZmVyLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9ieXRlYnVmZmVyLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTk0YjVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2J5dGVidWZmZXItdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9ieXRlY29kZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvYnl0ZWNvZGUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkZjhkZDQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvYnl0ZWNvZGUtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9ieXRlY29kZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvYnl0ZWNvZGUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkZjhkZDQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvYnl0ZWNvZGUtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9jYXJkaW5hbGl0eS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvY2FyZGluYWxpdHktdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxYmQ2M2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvY2FyZGluYWxpdHktdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwECClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2NhcmRpbmFsaXR5LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9jYXJkaW5hbGl0eS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFiZDYzZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9jYXJkaW5hbGl0eS12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvY2hhci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvY2hhci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE4ODgyYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9jaGFyLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvY2hhci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvY2hhci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE4ODgyYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9jaGFyLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvY2xhc3MtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2NsYXNzLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOGI2NWFmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2NsYXNzLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBamF2YS5pby5GaWzlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2NsYXNzLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9jbGFzcy12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThiNjVhZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9jbGFzcy12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAWphdmEuaW8uRmls5QpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9jb2x1bW4tdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2NvbHVtbi12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9jb2x1bW4tdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2NvbHVtbi12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvY29sdW1uLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2NvbHVtbi12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvZGF0ZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvZGF0ZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg2Zjk4ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9kYXRlLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBh7e/+Y8rClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2RhdGUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2RhdGUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4NmY5OGYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvZGF0ZS12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAYe3v/mPKwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9kaXJlY3Rpb24tdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2RpcmVjdGlvbi12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9kaXJlY3Rpb24tdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2RpcmVjdGlvbi12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvZGlyZWN0aW9uLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2RpcmVjdGlvbi12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvZG91YmxlLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9kb3VibGUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2NTA2YWMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvZG91YmxlLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvZG91YmxlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9kb3VibGUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2NTA2YWMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvZG91YmxlLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvZHVyYXRpb24tdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2R1cmF0aW9uLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjQwYWUwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2R1cmF0aW9uLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvZHVyYXRpb24tdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2R1cmF0aW9uLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjQwYWUwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2R1cmF0aW9uLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvZWRnZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvZWRnZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDJhMjQ5MgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9lZGdlLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvZWRnZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvZWRnZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmRmYmVmYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9lZGdlLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvZmxvYXQtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2Zsb2F0LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOWE4ODY1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2Zsb2F0LXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvZmxvYXQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2Zsb2F0LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOWE4ODY1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2Zsb2F0LXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvaW5ldGFkZHJlc3MtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2luZXRhZGRyZXNzLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjc5N2E1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2luZXRhZGRyZXNzLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBbG9jYWxob3P0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2luZXRhZGRyZXNzLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9pbmV0YWRkcmVzcy12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWY3OTdhNQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9pbmV0YWRkcmVzcy12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAWxvY2FsaG9z9ApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9pbnN0YW50LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9pbnN0YW50LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTQ2NmNkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2luc3RhbnQtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9pbnN0YW50LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9pbnN0YW50LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTQ2NmNkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2luc3RhbnQtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9pbnRlZ2VyLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9pbnRlZ2VyLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjI4MzM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2ludGVnZXItdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKK8gBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2ludGVnZXItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2ludGVnZXItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmMjgzMzYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvaW50ZWdlci12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAoryAEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvbGFtYmRhLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9sYW1iZGEtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2MzY2MWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvbGFtYmRhLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvbGFtYmRhLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9sYW1iZGEtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2MzY2MWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvbGFtYmRhLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvbG9jYWxkYXRlLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9sb2NhbGRhdGUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4MmRkMTYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvbG9jYWxkYXRlLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvbG9jYWxkYXRlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9sb2NhbGRhdGUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4MmRkMTYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvbG9jYWxkYXRlLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvbG9jYWxkYXRldGltZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvbG9jYWxkYXRldGltZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTdlYWU2NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9sb2NhbGRhdGV0aW1lLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvbG9jYWxkYXRldGltZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvbG9jYWxkYXRldGltZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTdlYWU2NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9sb2NhbGRhdGV0aW1lLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvbG9jYWx0aW1lLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9sb2NhbHRpbWUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiNWJmYTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvbG9jYWx0aW1lLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvbG9jYWx0aW1lLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9sb2NhbHRpbWUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiNWJmYTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvbG9jYWx0aW1lLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvbG9uZy12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvbG9uZy12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmYyODMzNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9sb25nLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACivIAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9sb25nLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9sb25nLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjI4MzM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL2xvbmctdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKK8gBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL21ldHJpY3MtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL21ldHJpY3MtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5NGNkMjQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvbWV0cmljcy12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL21ldHJpY3MtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL21ldHJpY3MtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2NWRkNjMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvbWV0cmljcy12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL21vbnRoZGF5LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9tb250aGRheS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWFjYWI4ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9tb250aGRheS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL21vbnRoZGF5LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9tb250aGRheS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWFjYWI4ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9tb250aGRheS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL29mZnNldGRhdGV0aW1lLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9vZmZzZXRkYXRldGltZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmJiOTJkMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9vZmZzZXRkYXRldGltZS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL29mZnNldGRhdGV0aW1lLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9vZmZzZXRkYXRldGltZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmJiOTJkMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9vZmZzZXRkYXRldGltZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL29mZnNldHRpbWUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL29mZnNldHRpbWUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxNjIxYWEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvb2Zmc2V0dGltZS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL29mZnNldHRpbWUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL29mZnNldHRpbWUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxNjIxYWEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvb2Zmc2V0dGltZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL29wZXJhdG9yLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9vcGVyYXRvci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9vcGVyYXRvci12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvb3BlcmF0b3ItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL29wZXJhdG9yLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL29wZXJhdG9yLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9vcmRlci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvb3JkZXItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4Yzc4MTEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvb3JkZXItdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEDClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL29yZGVyLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9vcmRlci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzhjNzgxMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9vcmRlci12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvcC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvcC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2M2NzZhOAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvcC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvcC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2M2NzZhOAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvcGFuZC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvcGFuZC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQ3N2U0MAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wYW5kLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvcGFuZC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvcGFuZC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQ3N2U0MAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wYW5kLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvcGF0aC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvcGF0aC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmFjMjAzZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wYXRoLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvcGF0aC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvcGF0aC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmFjMjAzZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wYXRoLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvcGVyaW9kLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wZXJpb2QtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwNGU5YzgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvcGVyaW9kLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvcGVyaW9kLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wZXJpb2QtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwNGU5YzgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvcGVyaW9kLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvcGljay12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvcGljay12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9waWNrLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9waWNrLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9waWNrLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3BpY2stdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3BvcC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvcG9wLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGM3ODExCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3BvcC12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvcG9wLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wb3AtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4Yzc4MTEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvcG9wLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wb3ItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3Bvci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGI4ZWJiNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wb3ItdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wb3ItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3Bvci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGI4ZWJiNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wb3ItdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wcm9wZXJ0eS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvcHJvcGVydHktdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzM2FjNmYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvcHJvcGVydHktdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEUAQFzaW5j5QKyHwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wcm9wZXJ0eS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvcHJvcGVydHktdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3ZDljMjcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvcHJvcGVydHktdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwFzaW5j5QKyHwIaZGV2ZWxvcPMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvcHdpdGhpbi12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvcHdpdGhpbi12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzVkZmUyMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wd2l0aGluLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvcHdpdGhpbi12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvcHdpdGhpbi12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzVkZmUyMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9wd2l0aGluLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvcHdpdGhvdXQtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3B3aXRob3V0LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGYxNGNmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3B3aXRob3V0LXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvcHdpdGhvdXQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3B3aXRob3V0LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGYxNGNmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3B3aXRob3V0LXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvc2NvcGUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3Njb3BlLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWJkNjNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3Njb3BlLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9zY29wZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvc2NvcGUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxYmQ2M2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvc2NvcGUtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwECClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3Nlc3Npb25jbG9zZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvc2Vzc2lvbmNsb3NlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYmFkNmExCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3Nlc3Npb25jbG9zZS12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQHLaCV4nZJEmZ68XGqnPFOXc2Vzc2lv7mNsb3PlAQEDAXNlc3Npb+4DAXVuaXF1ZS1zZXNzaW9uLWlkZW50aWZpZfIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvc2Vzc2lvbmV2YWwtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3Nlc3Npb25ldmFsLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTUxYjk2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3Nlc3Npb25ldmFsLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvc2Vzc2lvbmV2YWxhbGlhc2VkLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9zZXNzaW9uZXZhbGFsaWFzZWQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiYjU4ODkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvc2Vzc2lvbmV2YWxhbGlhc2VkLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvc2Vzc2lvbmxlc3NldmFsLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9zZXNzaW9ubGVzc2V2YWwtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkODRlMjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvc2Vzc2lvbmxlc3NldmFsLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDM3NDViZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvc2hvcnQtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3Nob3J0LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDYwYjg5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3Nob3J0LXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvc2hvcnQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3Nob3J0LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDYwYjg5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3Nob3J0LXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvc3RhbmRhcmRyZXN1bHQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3N0YW5kYXJkcmVzdWx0LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNmM1ZDhhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3N0YW5kYXJkcmVzdWx0LXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvc3RhcmdyYXBoLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9zdGFyZ3JhcGgtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5NDc4NDIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvc3RhcmdyYXBoLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvc3RhcmdyYXBoLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC9zdGFyZ3JhcGgtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5NDc4NDIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvc3RhcmdyYXBoLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvdC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvdC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC90LXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC90LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC90LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3QtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3RleHRwLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC90ZXh0cC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDcxZWIwZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC90ZXh0cC12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAWNvbnRhaW5pbucBYXLrClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3RleHRwLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC90ZXh0cC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDcxZWIwZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC90ZXh0cC12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAWNvbnRhaW5pbucBYXLrClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3RpbWVzdGFtcC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvdGltZXN0YW1wLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODZmOThmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3RpbWVzdGFtcC12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAYe3v/mPKwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC90aW1lc3RhbXAtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3RpbWVzdGFtcC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg2Zjk4ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC90aW1lc3RhbXAtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwGHt7/5jysKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvdGlua2VyZ3JhcGgtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3RpbmtlcmdyYXBoLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Nzg5OTg2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3RpbmtlcmdyYXBoLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvdGlua2VyZ3JhcGgtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3RpbmtlcmdyYXBoLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Nzg5OTg2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3RpbmtlcmdyYXBoLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvdHJhdmVyc2FsbWV0cmljcy12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvdHJhdmVyc2FsbWV0cmljcy12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWVlYjA3ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC90cmF2ZXJzYWxtZXRyaWNzLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvdHJhdmVyc2FsbWV0cmljcy12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvdHJhdmVyc2FsbWV0cmljcy12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWVjNDRmZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC90cmF2ZXJzYWxtZXRyaWNzLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvdHJhdmVyc2VyLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC90cmF2ZXJzZXItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjMDE5ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvdHJhdmVyc2VyLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvdHJhdmVyc2VyLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC90cmF2ZXJzZXItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjMWZiMGQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvdHJhdmVyc2VyLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvdHJlZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvdHJlZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjgyNTI5ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC90cmVlLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvdHJlZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvdHJlZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDVhOWRkOQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC90cmVlLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvdXVpZC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvdXVpZC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRmYzM1ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC91dWlkLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBQdLiiiCkSrCzedgQ3t43hgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC91dWlkLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC91dWlkLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNGZjMzVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3V1aWQtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwFB0uKKIKRKsLN52BDe3jeGClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3ZlcnRleC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvdmVydGV4LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNThhYzQ2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3ZlcnRleC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3ZlcnRleC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvdmVydGV4LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDY0MDM5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3ZlcnRleC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3ZlcnRleHByb3BlcnR5LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC92ZXJ0ZXhwcm9wZXJ0eS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2I3NGRhYQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC92ZXJ0ZXhwcm9wZXJ0eS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3ZlcnRleHByb3BlcnR5LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC92ZXJ0ZXhwcm9wZXJ0eS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTVmOGJlMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC92ZXJ0ZXhwcm9wZXJ0eS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3llYXItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3llYXItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlYzJlZjkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAveWVhci12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3llYXItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3llYXItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlYzJlZjkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAveWVhci12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3llYXJtb250aC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAveWVhcm1vbnRoLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40N2UzYTNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3llYXJtb250aC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3llYXJtb250aC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAveWVhcm1vbnRoLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40N2UzYTNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3llYXJtb250aC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3pvbmVkZGF0ZXRpbWUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3pvbmVkZGF0ZXRpbWUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlYmJjZTUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvem9uZWRkYXRldGltZS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3pvbmVkZGF0ZXRpbWUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3pvbmVkZGF0ZXRpbWUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlYmJjZTUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvem9uZWRkYXRldGltZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3pvbmVvZmZzZXQtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3pvbmVvZmZzZXQtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkMzRmOWMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzAvem9uZW9mZnNldC12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorASswMzowNjowuQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC96b25lb2Zmc2V0LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMC96b25lb2Zmc2V0LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDM0ZjljCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8wL3pvbmVvZmZzZXQtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwErMDM6MDY6MLkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWY5MWFjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvYXV0aGVudGljYXRpb25yZXNwb25zZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvYXV0aGVudGljYXRpb25yZXNwb25zZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWY5OWYyYQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBActoJXidkkSZnrxcaqc8U5eBYXV0aGVudGljYXRpb+4BAgMBc2FzbE1lY2hhbmlz7QMBUExBSc4DAXNhc+wDAUFITjBaWEJvY0dobGJnQndZWE56ZDI5eVpBPb0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvYmFycmllci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvYmFycmllci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9iYXJyaWVyLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9iYXJyaWVyLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9iYXJyaWVyLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2JhcnJpZXItdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2JpZ2RlY2ltYWwtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2JpZ2RlY2ltYWwtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0ZjQwZTAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvYmlnZGVjaW1hbC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2JpZ2RlY2ltYWwtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2JpZ2RlY2ltYWwtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0ZjQwZTAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvYmlnZGVjaW1hbC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2JpZ2ludGVnZXItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2JpZ2ludGVnZXItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0MjRhYzYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvYmlnaW50ZWdlci12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorARAXxuPC/dGCWs99AkR2+rEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvYmlnaW50ZWdlci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvYmlnaW50ZWdlci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQyNGFjNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9iaWdpbnRlZ2VyLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBEBfG48L90YJaz30CRHb6sQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9iaW5kaW5nLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9iaW5kaW5nLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDMxNDNiCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2JpbmRpbmctdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwGCeAICClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2JpbmRpbmctdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2JpbmRpbmctdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwMzE0M2IKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvYmluZGluZy12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAYJ4AgIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvYnVsa3NldC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvYnVsa3NldC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWZkYTI3YQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9idWxrc2V0LXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAwMBbWFya+8DAWpvc+gDBApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9idWxrc2V0LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9idWxrc2V0LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZmRhMjdhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2J1bGtzZXQtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEDAwFtYXJr7wMBam9z6AMEClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2J5dGUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2J5dGUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiMmFhYTcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvYnl0ZS12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9ieXRlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9ieXRlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjJhYWE3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2J5dGUtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvYnl0ZWJ1ZmZlci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvYnl0ZWJ1ZmZlci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmE5NGI1ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9ieXRlYnVmZmVyLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvYnl0ZWJ1ZmZlci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvYnl0ZWJ1ZmZlci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmE5NGI1ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9ieXRlYnVmZmVyLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvYnl0ZWNvZGUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2J5dGVjb2RlLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZGY4ZGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2J5dGVjb2RlLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvYnl0ZWNvZGUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2J5dGVjb2RlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZGY4ZGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2J5dGVjb2RlLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvY2FyZGluYWxpdHktdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2NhcmRpbmFsaXR5LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWJkNjNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2NhcmRpbmFsaXR5LXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9jYXJkaW5hbGl0eS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvY2FyZGluYWxpdHktdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxYmQ2M2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvY2FyZGluYWxpdHktdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwECClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2NoYXItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2NoYXItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxODg4MmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvY2hhci12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2NoYXItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2NoYXItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxODg4MmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvY2hhci12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2NsYXNzLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9jbGFzcy12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThiNjVhZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9jbGFzcy12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAWphdmEuaW8uRmls5QpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9jbGFzcy12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvY2xhc3MtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4YjY1YWYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvY2xhc3MtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwFqYXZhLmlvLkZpbOUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvY29sdW1uLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9jb2x1bW4tdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvY29sdW1uLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9jb2x1bW4tdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2NvbHVtbi12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9jb2x1bW4tdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2RhdGUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2RhdGUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4NmY5OGYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvZGF0ZS12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAYe3v/mPKwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9kYXRlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9kYXRlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODZmOThmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2RhdGUtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwGHt7/5jysKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvZGlyZWN0aW9uLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9kaXJlY3Rpb24tdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvZGlyZWN0aW9uLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9kaXJlY3Rpb24tdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2RpcmVjdGlvbi12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9kaXJlY3Rpb24tdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2RvdWJsZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvZG91YmxlLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjUwNmFjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2RvdWJsZS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2RvdWJsZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvZG91YmxlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjUwNmFjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2RvdWJsZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2R1cmF0aW9uLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9kdXJhdGlvbi12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDY0MGFlMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9kdXJhdGlvbi12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2R1cmF0aW9uLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9kdXJhdGlvbi12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDY0MGFlMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9kdXJhdGlvbi12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2VkZ2UtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2VkZ2UtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyYTI0OTIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvZWRnZS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2VkZ2UtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2VkZ2UtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkZmJlZmIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvZWRnZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2Zsb2F0LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9mbG9hdC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTlhODg2NQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9mbG9hdC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2Zsb2F0LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9mbG9hdC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTlhODg2NQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9mbG9hdC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2luZXRhZGRyZXNzLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9pbmV0YWRkcmVzcy12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWY3OTdhNQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9pbmV0YWRkcmVzcy12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAWxvY2FsaG9z9ApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9pbmV0YWRkcmVzcy12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvaW5ldGFkZHJlc3MtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmNzk3YTUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvaW5ldGFkZHJlc3MtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwFsb2NhbGhvc/QKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvaW5zdGFudC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvaW5zdGFudC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDk0NjZjZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9pbnN0YW50LXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvaW5zdGFudC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvaW5zdGFudC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDk0NjZjZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9pbnN0YW50LXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvaW50ZWdlci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvaW50ZWdlci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmYyODMzNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9pbnRlZ2VyLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACivIAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9pbnRlZ2VyLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9pbnRlZ2VyLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjI4MzM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2ludGVnZXItdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKK8gBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2xhbWJkYS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvbGFtYmRhLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjM2NjFkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2xhbWJkYS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2xhbWJkYS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvbGFtYmRhLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjM2NjFkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2xhbWJkYS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2xvY2FsZGF0ZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvbG9jYWxkYXRlLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODJkZDE2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2xvY2FsZGF0ZS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2xvY2FsZGF0ZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvbG9jYWxkYXRlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODJkZDE2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2xvY2FsZGF0ZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2xvY2FsZGF0ZXRpbWUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2xvY2FsZGF0ZXRpbWUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3ZWFlNjQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvbG9jYWxkYXRldGltZS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2xvY2FsZGF0ZXRpbWUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2xvY2FsZGF0ZXRpbWUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3ZWFlNjQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvbG9jYWxkYXRldGltZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2xvY2FsdGltZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvbG9jYWx0aW1lLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjViZmE0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2xvY2FsdGltZS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2xvY2FsdGltZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvbG9jYWx0aW1lLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjViZmE0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2xvY2FsdGltZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2xvbmctdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL2xvbmctdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmMjgzMzYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvbG9uZy12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAoryAEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvbG9uZy12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvbG9uZy12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmYyODMzNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9sb25nLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACivIAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9tZXRyaWNzLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9tZXRyaWNzLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTRjZDI0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL21ldHJpY3MtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9tZXRyaWNzLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9tZXRyaWNzLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjVkZDYzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL21ldHJpY3MtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9tb250aGRheS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvbW9udGhkYXktdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhY2FiOGYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvbW9udGhkYXktdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9tb250aGRheS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvbW9udGhkYXktdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhY2FiOGYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvbW9udGhkYXktdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9vZmZzZXRkYXRldGltZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvb2Zmc2V0ZGF0ZXRpbWUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiYjkyZDAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvb2Zmc2V0ZGF0ZXRpbWUtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9vZmZzZXRkYXRldGltZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvb2Zmc2V0ZGF0ZXRpbWUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiYjkyZDAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvb2Zmc2V0ZGF0ZXRpbWUtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9vZmZzZXR0aW1lLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9vZmZzZXR0aW1lLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTYyMWFhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL29mZnNldHRpbWUtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9vZmZzZXR0aW1lLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9vZmZzZXR0aW1lLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTYyMWFhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL29mZnNldHRpbWUtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9vcGVyYXRvci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvb3BlcmF0b3ItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvb3BlcmF0b3ItdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL29wZXJhdG9yLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9vcGVyYXRvci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9vcGVyYXRvci12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvb3JkZXItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL29yZGVyLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGM3ODExCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL29yZGVyLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9vcmRlci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvb3JkZXItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4Yzc4MTEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvb3JkZXItdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEDClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3AtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3AtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjNjc2YTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3AtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3AtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjNjc2YTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3BhbmQtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3BhbmQtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0NzdlNDAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcGFuZC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3BhbmQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3BhbmQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0NzdlNDAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcGFuZC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3BhdGgtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3BhdGgtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhYzIwM2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcGF0aC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3BhdGgtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3BhdGgtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhYzIwM2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcGF0aC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3BlcmlvZC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcGVyaW9kLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDRlOWM4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3BlcmlvZC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3BlcmlvZC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcGVyaW9kLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDRlOWM4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3BlcmlvZC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3BpY2stdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3BpY2stdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcGljay12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcGljay12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcGljay12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9waWNrLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9wb3AtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3BvcC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzhjNzgxMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9wb3AtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEDClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3BvcC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcG9wLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGM3ODExCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3BvcC12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcG9yLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9wb3ItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiOGViYjQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcG9yLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcG9yLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9wb3ItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiOGViYjQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcG9yLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcHJvcGVydHktdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3Byb3BlcnR5LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzNhYzZmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3Byb3BlcnR5LXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBFAEBc2luY+UCsh8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcHJvcGVydHktdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3Byb3BlcnR5LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hN2Q5YzI3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3Byb3BlcnR5LXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBc2luY+UCsh8CGmRldmVsb3DzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3B3aXRoaW4tdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3B3aXRoaW4tdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1ZGZlMjEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcHdpdGhpbi12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3B3aXRoaW4tdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3B3aXRoaW4tdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1ZGZlMjEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvcHdpdGhpbi12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3B3aXRob3V0LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9wd2l0aG91dC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTBmMTRjZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9wd2l0aG91dC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3B3aXRob3V0LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9wd2l0aG91dC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTBmMTRjZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9wd2l0aG91dC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3Njb3BlLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9zY29wZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFiZDYzZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9zY29wZS12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvc2NvcGUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3Njb3BlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWJkNjNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3Njb3BlLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9zZXNzaW9uY2xvc2UtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3Nlc3Npb25jbG9zZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWJhZDZhMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9zZXNzaW9uY2xvc2UtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBy2gleJ2SRJmevFxqpzxTl3Nlc3Npb+5jbG9z5QEBAwFzZXNzaW/uAwF1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWXyClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3Nlc3Npb25ldmFsLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9zZXNzaW9uZXZhbC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjU1MWI5NgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9zZXNzaW9uZXZhbC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3Nlc3Npb25ldmFsYWxpYXNlZC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvc2Vzc2lvbmV2YWxhbGlhc2VkLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmI1ODg5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3Nlc3Npb25ldmFsYWxpYXNlZC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3Nlc3Npb25sZXNzZXZhbC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvc2Vzc2lvbmxlc3NldmFsLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDg0ZTIwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3Nlc3Npb25sZXNzZXZhbC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzNzQ1YmUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3Nob3J0LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9zaG9ydC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjA2MGI4OQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9zaG9ydC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3Nob3J0LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9zaG9ydC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjA2MGI4OQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9zaG9ydC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3N0YW5kYXJkcmVzdWx0LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9zdGFuZGFyZHJlc3VsdC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDZjNWQ4YQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS9zdGFuZGFyZHJlc3VsdC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3N0YXJncmFwaC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvc3RhcmdyYXBoLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTQ3ODQyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3N0YXJncmFwaC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3N0YXJncmFwaC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvc3RhcmdyYXBoLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTQ3ODQyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3N0YXJncmFwaC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3QtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3QtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvdC12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvdC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvdC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS90LXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS90ZXh0cC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvdGV4dHAtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3MWViMGYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvdGV4dHAtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwFjb250YWluaW7nAWFy6wpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS90ZXh0cC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvdGV4dHAtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3MWViMGYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvdGV4dHAtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwFjb250YWluaW7nAWFy6wpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS90aW1lc3RhbXAtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3RpbWVzdGFtcC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg2Zjk4ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS90aW1lc3RhbXAtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwGHt7/5jysKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvdGltZXN0YW1wLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS90aW1lc3RhbXAtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4NmY5OGYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvdGltZXN0YW1wLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBh7e/+Y8rClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3RpbmtlcmdyYXBoLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS90aW5rZXJncmFwaC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc4OTk4NgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS90aW5rZXJncmFwaC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3RpbmtlcmdyYXBoLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS90aW5rZXJncmFwaC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc4OTk4NgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS90aW5rZXJncmFwaC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3RyYXZlcnNhbG1ldHJpY3MtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3RyYXZlcnNhbG1ldHJpY3MtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlZjhiNWYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvdHJhdmVyc2FsbWV0cmljcy12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3RyYXZlcnNhbG1ldHJpY3MtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3RyYXZlcnNhbG1ldHJpY3MtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlYzQ0ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvdHJhdmVyc2FsbWV0cmljcy12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3RyYXZlcnNlci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvdHJhdmVyc2VyLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYzAxOWYwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3RyYXZlcnNlci12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3RyYXZlcnNlci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvdHJhdmVyc2VyLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzFmYjBkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3RyYXZlcnNlci12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3RyZWUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3RyZWUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4MjUyOWYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvdHJlZS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3RyZWUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3RyZWUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1YTlkZDkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvdHJlZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3V1aWQtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3V1aWQtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0ZmMzNWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvdXVpZC12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAUHS4oogpEqws3nYEN7eN4YKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvdXVpZC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvdXVpZC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRmYzM1ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS91dWlkLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBQdLiiiCkSrCzedgQ3t43hgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS92ZXJ0ZXgtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3ZlcnRleC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzU4YWM0NgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS92ZXJ0ZXgtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS92ZXJ0ZXgtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3ZlcnRleC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQ2NDAzOQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS92ZXJ0ZXgtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS92ZXJ0ZXhwcm9wZXJ0eS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvdmVydGV4cHJvcGVydHktdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiNzRkYWEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvdmVydGV4cHJvcGVydHktdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS92ZXJ0ZXhwcm9wZXJ0eS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvdmVydGV4cHJvcGVydHktdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1ZjhiZTAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvdmVydGV4cHJvcGVydHktdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS95ZWFyLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS95ZWFyLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZWMyZWY5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3llYXItdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS95ZWFyLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS95ZWFyLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZWMyZWY5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3llYXItdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS95ZWFybW9udGgtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3llYXJtb250aC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDdlM2EzZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS95ZWFybW9udGgtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS95ZWFybW9udGgtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3llYXJtb250aC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDdlM2EzZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS95ZWFybW9udGgtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS96b25lZGRhdGV0aW1lLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS96b25lZGRhdGV0aW1lLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZWJiY2U1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3pvbmVkZGF0ZXRpbWUtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS96b25lZGRhdGV0aW1lLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS96b25lZGRhdGV0aW1lLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZWJiY2U1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3pvbmVkZGF0ZXRpbWUtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS96b25lb2Zmc2V0LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS96b25lb2Zmc2V0LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDM0ZjljCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8xL3pvbmVvZmZzZXQtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwErMDM6MDY6MLkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvem9uZW9mZnNldC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzEvem9uZW9mZnNldC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQzNGY5YwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMS96b25lb2Zmc2V0LXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBKzAzOjA2OjC5ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmFmOTFhYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmOTlmMmEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvYXV0aGVudGljYXRpb25yZXNwb25zZS12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQHLaCV4nZJEmZ68XGqnPFOXgWF1dGhlbnRpY2F0aW/uAQIDAXNhc2xNZWNoYW5pc+0DAVBMQUnOAwFzYXPsAwFBSE4wWlhCb2NHaGxiZ0J3WVhOemQyOXlaQT29ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2JhcnJpZXItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2JhcnJpZXItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvYmFycmllci12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvYmFycmllci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvYmFycmllci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9iYXJyaWVyLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9iaWdkZWNpbWFsLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9iaWdkZWNpbWFsLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNGY0MGUwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2JpZ2RlY2ltYWwtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9iaWdkZWNpbWFsLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9iaWdkZWNpbWFsLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNGY0MGUwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2JpZ2RlY2ltYWwtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9iaWdpbnRlZ2VyLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9iaWdpbnRlZ2VyLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDI0YWM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2JpZ2ludGVnZXItdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEQF8bjwv3RglrPfQJEdvqxClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2JpZ2ludGVnZXItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2JpZ2ludGVnZXItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0MjRhYzYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvYmlnaW50ZWdlci12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorARAXxuPC/dGCWs99AkR2+rEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvYmluZGluZy12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvYmluZGluZy12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTAzMTQzYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9iaW5kaW5nLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBgngCAgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9iaW5kaW5nLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9iaW5kaW5nLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDMxNDNiCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2JpbmRpbmctdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwGCeAICClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2J1bGtzZXQtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2J1bGtzZXQtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmZGEyN2EKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvYnVsa3NldC12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQMDAW1hcmvvAwFqb3PoAwQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvYnVsa3NldC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvYnVsa3NldC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWZkYTI3YQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9idWxrc2V0LXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAwMBbWFya+8DAWpvc+gDBApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9ieXRlLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9ieXRlLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjJhYWE3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2J5dGUtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvYnl0ZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvYnl0ZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmIyYWFhNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9ieXRlLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2J5dGVidWZmZXItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2J5dGVidWZmZXItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhOTRiNWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvYnl0ZWJ1ZmZlci12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2J5dGVidWZmZXItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2J5dGVidWZmZXItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhOTRiNWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvYnl0ZWJ1ZmZlci12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2J5dGVjb2RlLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9ieXRlY29kZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWRmOGRkNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9ieXRlY29kZS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2J5dGVjb2RlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9ieXRlY29kZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWRmOGRkNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9ieXRlY29kZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2NhcmRpbmFsaXR5LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9jYXJkaW5hbGl0eS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFiZDYzZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9jYXJkaW5hbGl0eS12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvY2FyZGluYWxpdHktdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2NhcmRpbmFsaXR5LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWJkNjNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2NhcmRpbmFsaXR5LXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9jaGFyLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9jaGFyLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTg4ODJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2NoYXItdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9jaGFyLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9jaGFyLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTg4ODJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2NoYXItdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9jbGFzcy12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvY2xhc3MtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4YjY1YWYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvY2xhc3MtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwFqYXZhLmlvLkZpbOUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvY2xhc3MtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2NsYXNzLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOGI2NWFmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2NsYXNzLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBamF2YS5pby5GaWzlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2NvbHVtbi12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvY29sdW1uLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2NvbHVtbi12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvY29sdW1uLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9jb2x1bW4tdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvY29sdW1uLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9kYXRlLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9kYXRlLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODZmOThmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2RhdGUtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwGHt7/5jysKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvZGF0ZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvZGF0ZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg2Zjk4ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9kYXRlLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBh7e/+Y8rClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2RpcmVjdGlvbi12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvZGlyZWN0aW9uLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2RpcmVjdGlvbi12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvZGlyZWN0aW9uLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9kaXJlY3Rpb24tdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvZGlyZWN0aW9uLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9kb3VibGUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2RvdWJsZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY1MDZhYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9kb3VibGUtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9kb3VibGUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2RvdWJsZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY1MDZhYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9kb3VibGUtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9kdXJhdGlvbi12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvZHVyYXRpb24tdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2NDBhZTAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvZHVyYXRpb24tdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9kdXJhdGlvbi12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvZHVyYXRpb24tdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2NDBhZTAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvZHVyYXRpb24tdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9lZGdlLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9lZGdlLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMmEyNDkyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2VkZ2UtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9lZGdlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9lZGdlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZGZiZWZiCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2VkZ2UtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9mbG9hdC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvZmxvYXQtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5YTg4NjUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvZmxvYXQtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9mbG9hdC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvZmxvYXQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5YTg4NjUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvZmxvYXQtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9pbmV0YWRkcmVzcy12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvaW5ldGFkZHJlc3MtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmNzk3YTUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvaW5ldGFkZHJlc3MtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwFsb2NhbGhvc/QKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvaW5ldGFkZHJlc3MtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2luZXRhZGRyZXNzLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjc5N2E1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2luZXRhZGRyZXNzLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBbG9jYWxob3P0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2luc3RhbnQtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2luc3RhbnQtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5NDY2Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvaW5zdGFudC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2luc3RhbnQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2luc3RhbnQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5NDY2Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvaW5zdGFudC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2ludGVnZXItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2ludGVnZXItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmMjgzMzYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvaW50ZWdlci12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAoryAEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvaW50ZWdlci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvaW50ZWdlci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmYyODMzNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9pbnRlZ2VyLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACivIAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9sYW1iZGEtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2xhbWJkYS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDYzNjYxZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9sYW1iZGEtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9sYW1iZGEtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2xhbWJkYS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDYzNjYxZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9sYW1iZGEtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9sb2NhbGRhdGUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2xvY2FsZGF0ZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjgyZGQxNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9sb2NhbGRhdGUtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9sb2NhbGRhdGUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2xvY2FsZGF0ZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjgyZGQxNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9sb2NhbGRhdGUtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9sb2NhbGRhdGV0aW1lLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9sb2NhbGRhdGV0aW1lLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2VhZTY0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2xvY2FsZGF0ZXRpbWUtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9sb2NhbGRhdGV0aW1lLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9sb2NhbGRhdGV0aW1lLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2VhZTY0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2xvY2FsZGF0ZXRpbWUtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9sb2NhbHRpbWUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2xvY2FsdGltZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWI1YmZhNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9sb2NhbHRpbWUtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9sb2NhbHRpbWUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2xvY2FsdGltZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWI1YmZhNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9sb2NhbHRpbWUtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9sb25nLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9sb25nLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjI4MzM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2xvbmctdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKK8gBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2xvbmctdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL2xvbmctdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmMjgzMzYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvbG9uZy12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAoryAEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvbWV0cmljcy12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvbWV0cmljcy12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDk0Y2QyNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9tZXRyaWNzLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvbWV0cmljcy12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvbWV0cmljcy12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjY1ZGQ2MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9tZXRyaWNzLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvbW9udGhkYXktdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL21vbnRoZGF5LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YWNhYjhmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL21vbnRoZGF5LXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvbW9udGhkYXktdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL21vbnRoZGF5LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YWNhYjhmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL21vbnRoZGF5LXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvb2Zmc2V0ZGF0ZXRpbWUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL29mZnNldGRhdGV0aW1lLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmI5MmQwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL29mZnNldGRhdGV0aW1lLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvb2Zmc2V0ZGF0ZXRpbWUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL29mZnNldGRhdGV0aW1lLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmI5MmQwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL29mZnNldGRhdGV0aW1lLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvb2Zmc2V0dGltZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvb2Zmc2V0dGltZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDE2MjFhYQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9vZmZzZXR0aW1lLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvb2Zmc2V0dGltZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvb2Zmc2V0dGltZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDE2MjFhYQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9vZmZzZXR0aW1lLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvb3BlcmF0b3ItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL29wZXJhdG9yLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL29wZXJhdG9yLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9vcGVyYXRvci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvb3BlcmF0b3ItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvb3BlcmF0b3ItdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL29yZGVyLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9vcmRlci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzhjNzgxMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9vcmRlci12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvb3JkZXItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL29yZGVyLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGM3ODExCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL29yZGVyLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9wLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9wLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzY3NmE4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3AtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9wLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9wLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzY3NmE4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3AtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9wYW5kLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9wYW5kLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDc3ZTQwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3BhbmQtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9wYW5kLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9wYW5kLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDc3ZTQwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3BhbmQtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9wYXRoLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9wYXRoLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWMyMDNkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3BhdGgtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9wYXRoLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9wYXRoLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWMyMDNkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3BhdGgtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9wZXJpb2QtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3BlcmlvZC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjA0ZTljOAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9wZXJpb2QtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9wZXJpb2QtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3BlcmlvZC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjA0ZTljOAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9wZXJpb2QtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9waWNrLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9waWNrLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3BpY2stdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3BpY2stdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3BpY2stdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvcGljay12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvcG9wLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9wb3AtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4Yzc4MTEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvcG9wLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9wb3AtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3BvcC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzhjNzgxMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9wb3AtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEDClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3Bvci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvcG9yLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjhlYmI0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3Bvci12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3Bvci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvcG9yLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjhlYmI0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3Bvci12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3Byb3BlcnR5LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9wcm9wZXJ0eS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTMzYWM2ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9wcm9wZXJ0eS12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorARQBAXNpbmPlArIfClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3Byb3BlcnR5LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9wcm9wZXJ0eS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTdkOWMyNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9wcm9wZXJ0eS12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAXNpbmPlArIfAhpkZXZlbG9w8wpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9wd2l0aGluLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9wd2l0aGluLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNWRmZTIxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3B3aXRoaW4tdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9wd2l0aGluLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9wd2l0aGluLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNWRmZTIxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3B3aXRoaW4tdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9wd2l0aG91dC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvcHdpdGhvdXQtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwZjE0Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvcHdpdGhvdXQtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9wd2l0aG91dC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvcHdpdGhvdXQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwZjE0Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvcHdpdGhvdXQtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9zY29wZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvc2NvcGUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxYmQ2M2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvc2NvcGUtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwECClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3Njb3BlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9zY29wZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFiZDYzZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9zY29wZS12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvc2Vzc2lvbmNsb3NlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9zZXNzaW9uY2xvc2UtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiYWQ2YTEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvc2Vzc2lvbmNsb3NlLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBActoJXidkkSZnrxcaqc8U5dzZXNzaW/uY2xvc+UBAQMBc2Vzc2lv7gMBdW5pcXVlLXNlc3Npb24taWRlbnRpZmll8gpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9zZXNzaW9uZXZhbC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvc2Vzc2lvbmV2YWwtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1NTFiOTYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvc2Vzc2lvbmV2YWwtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9zZXNzaW9uZXZhbGFsaWFzZWQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3Nlc3Npb25ldmFsYWxpYXNlZC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGJiNTg4OQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9zZXNzaW9uZXZhbGFsaWFzZWQtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9zZXNzaW9ubGVzc2V2YWwtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3Nlc3Npb25sZXNzZXZhbC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQ4NGUyMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9zZXNzaW9ubGVzc2V2YWwtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzc0NWJlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9zaG9ydC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvc2hvcnQtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwNjBiODkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvc2hvcnQtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9zaG9ydC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvc2hvcnQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwNjBiODkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvc2hvcnQtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9zdGFuZGFyZHJlc3VsdC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvc3RhbmRhcmRyZXN1bHQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2YzVkOGEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvc3RhbmRhcmRyZXN1bHQtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9zdGFyZ3JhcGgtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3N0YXJncmFwaC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTk0Nzg0MgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9zdGFyZ3JhcGgtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9zdGFyZ3JhcGgtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3N0YXJncmFwaC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTk0Nzg0MgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi9zdGFyZ3JhcGgtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi90LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi90LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3QtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3QtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3QtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvdC12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvdGV4dHAtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3RleHRwLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzFlYjBmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3RleHRwLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBY29udGFpbmlu5wFhcusKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvdGV4dHAtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3RleHRwLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzFlYjBmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3RleHRwLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBY29udGFpbmlu5wFhcusKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvdGltZXN0YW1wLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi90aW1lc3RhbXAtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4NmY5OGYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvdGltZXN0YW1wLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBh7e/+Y8rClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3RpbWVzdGFtcC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvdGltZXN0YW1wLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODZmOThmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3RpbWVzdGFtcC12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAYe3v/mPKwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi90aW5rZXJncmFwaC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvdGlua2VyZ3JhcGgtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3ODk5ODYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvdGlua2VyZ3JhcGgtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi90aW5rZXJncmFwaC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvdGlua2VyZ3JhcGgtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3ODk5ODYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvdGlua2VyZ3JhcGgtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi90cmF2ZXJzYWxtZXRyaWNzLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi90cmF2ZXJzYWxtZXRyaWNzLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZWY4YjVmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3RyYXZlcnNhbG1ldHJpY3MtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi90cmF2ZXJzYWxtZXRyaWNzLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi90cmF2ZXJzYWxtZXRyaWNzLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZWM0NGZkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3RyYXZlcnNhbG1ldHJpY3MtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi90cmF2ZXJzZXItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3RyYXZlcnNlci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2MwMTlmMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi90cmF2ZXJzZXItdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi90cmF2ZXJzZXItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3RyYXZlcnNlci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2MxZmIwZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi90cmF2ZXJzZXItdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi90cmVlLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi90cmVlLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODI1MjlmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3RyZWUtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi90cmVlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi90cmVlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNWE5ZGQ5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3RyZWUtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi91dWlkLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi91dWlkLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNGZjMzVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3V1aWQtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwFB0uKKIKRKsLN52BDe3jeGClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3V1aWQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3V1aWQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0ZmMzNWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvdXVpZC12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAUHS4oogpEqws3nYEN7eN4YKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvdmVydGV4LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi92ZXJ0ZXgtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1OGFjNDYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvdmVydGV4LXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvdmVydGV4LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi92ZXJ0ZXgtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0NjQwMzkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvdmVydGV4LXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvdmVydGV4cHJvcGVydHktdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3ZlcnRleHByb3BlcnR5LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjc0ZGFhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3ZlcnRleHByb3BlcnR5LXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvdmVydGV4cHJvcGVydHktdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3ZlcnRleHByb3BlcnR5LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NWY4YmUwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3ZlcnRleHByb3BlcnR5LXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIveWVhci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIveWVhci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmVjMmVmOQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi95ZWFyLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIveWVhci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIveWVhci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmVjMmVmOQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi95ZWFyLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIveWVhcm1vbnRoLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi95ZWFybW9udGgtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3ZTNhM2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIveWVhcm1vbnRoLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIveWVhcm1vbnRoLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi95ZWFybW9udGgtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3ZTNhM2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIveWVhcm1vbnRoLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvem9uZWRkYXRldGltZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvem9uZWRkYXRldGltZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ViYmNlNQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi96b25lZGRhdGV0aW1lLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvem9uZWRkYXRldGltZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvem9uZWRkYXRldGltZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ViYmNlNQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi96b25lZGRhdGV0aW1lLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvem9uZW9mZnNldC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvem9uZW9mZnNldC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQzNGY5YwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMi96b25lb2Zmc2V0LXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBKzAzOjA2OjC5ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3pvbmVvZmZzZXQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8yL3pvbmVvZmZzZXQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkMzRmOWMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzIvem9uZW9mZnNldC12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorASswMzowNjowuQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhZjkxYWMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjk5ZjJhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBy2gleJ2SRJmevFxqpzxTl4FhdXRoZW50aWNhdGlv7gECAwFzYXNsTWVjaGFuaXPtAwFQTEFJzgMBc2Fz7AMBQUhOMFpYQm9jR2hsYmdCd1lYTnpkMjl5WkE9vQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9iYXJyaWVyLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9iYXJyaWVyLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2JhcnJpZXItdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2JhcnJpZXItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2JhcnJpZXItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvYmFycmllci12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvYmlnZGVjaW1hbC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvYmlnZGVjaW1hbC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDRmNDBlMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9iaWdkZWNpbWFsLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvYmlnZGVjaW1hbC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvYmlnZGVjaW1hbC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDRmNDBlMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9iaWdkZWNpbWFsLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvYmlnaW50ZWdlci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvYmlnaW50ZWdlci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQyNGFjNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9iaWdpbnRlZ2VyLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBEBfG48L90YJaz30CRHb6sQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9iaWdpbnRlZ2VyLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9iaWdpbnRlZ2VyLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDI0YWM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2JpZ2ludGVnZXItdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEQF8bjwv3RglrPfQJEdvqxClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2JpbmRpbmctdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2JpbmRpbmctdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwMzE0M2IKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvYmluZGluZy12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAYJ4AgIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvYmluZGluZy12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvYmluZGluZy12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTAzMTQzYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9iaW5kaW5nLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBgngCAgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9idWxrc2V0LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9idWxrc2V0LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZmRhMjdhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2J1bGtzZXQtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEDAwFtYXJr7wMBam9z6AMEClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2J1bGtzZXQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2J1bGtzZXQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmZGEyN2EKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvYnVsa3NldC12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQMDAW1hcmvvAwFqb3PoAwQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvYnl0ZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvYnl0ZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmIyYWFhNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9ieXRlLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2J5dGUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2J5dGUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiMmFhYTcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvYnl0ZS12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9ieXRlYnVmZmVyLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9ieXRlYnVmZmVyLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTk0YjVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2J5dGVidWZmZXItdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9ieXRlYnVmZmVyLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9ieXRlYnVmZmVyLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTk0YjVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2J5dGVidWZmZXItdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9ieXRlY29kZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvYnl0ZWNvZGUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkZjhkZDQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvYnl0ZWNvZGUtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9ieXRlY29kZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvYnl0ZWNvZGUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkZjhkZDQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvYnl0ZWNvZGUtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9jYXJkaW5hbGl0eS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvY2FyZGluYWxpdHktdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxYmQ2M2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvY2FyZGluYWxpdHktdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwECClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2NhcmRpbmFsaXR5LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9jYXJkaW5hbGl0eS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFiZDYzZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9jYXJkaW5hbGl0eS12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvY2hhci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvY2hhci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE4ODgyYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9jaGFyLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvY2hhci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvY2hhci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE4ODgyYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9jaGFyLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvY2xhc3MtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2NsYXNzLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOGI2NWFmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2NsYXNzLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBamF2YS5pby5GaWzlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2NsYXNzLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9jbGFzcy12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThiNjVhZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9jbGFzcy12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAWphdmEuaW8uRmls5QpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9jb2x1bW4tdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2NvbHVtbi12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9jb2x1bW4tdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2NvbHVtbi12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvY29sdW1uLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2NvbHVtbi12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvZGF0ZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvZGF0ZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg2Zjk4ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9kYXRlLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBh7e/+Y8rClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2RhdGUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2RhdGUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4NmY5OGYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvZGF0ZS12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAYe3v/mPKwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9kaXJlY3Rpb24tdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2RpcmVjdGlvbi12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9kaXJlY3Rpb24tdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2RpcmVjdGlvbi12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvZGlyZWN0aW9uLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2RpcmVjdGlvbi12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvZG91YmxlLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9kb3VibGUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2NTA2YWMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvZG91YmxlLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvZG91YmxlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9kb3VibGUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2NTA2YWMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvZG91YmxlLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvZHVyYXRpb24tdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2R1cmF0aW9uLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjQwYWUwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2R1cmF0aW9uLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvZHVyYXRpb24tdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2R1cmF0aW9uLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjQwYWUwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2R1cmF0aW9uLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvZWRnZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvZWRnZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDJhMjQ5MgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9lZGdlLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvZWRnZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvZWRnZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmRmYmVmYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9lZGdlLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvZmxvYXQtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2Zsb2F0LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOWE4ODY1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2Zsb2F0LXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvZmxvYXQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2Zsb2F0LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOWE4ODY1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2Zsb2F0LXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvaW5ldGFkZHJlc3MtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2luZXRhZGRyZXNzLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjc5N2E1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2luZXRhZGRyZXNzLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBbG9jYWxob3P0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2luZXRhZGRyZXNzLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9pbmV0YWRkcmVzcy12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWY3OTdhNQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9pbmV0YWRkcmVzcy12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAWxvY2FsaG9z9ApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9pbnN0YW50LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9pbnN0YW50LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTQ2NmNkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2luc3RhbnQtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9pbnN0YW50LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9pbnN0YW50LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTQ2NmNkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2luc3RhbnQtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9pbnRlZ2VyLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9pbnRlZ2VyLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjI4MzM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2ludGVnZXItdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKK8gBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2ludGVnZXItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2ludGVnZXItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmMjgzMzYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvaW50ZWdlci12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAoryAEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvbGFtYmRhLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9sYW1iZGEtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2MzY2MWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvbGFtYmRhLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvbGFtYmRhLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9sYW1iZGEtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2MzY2MWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvbGFtYmRhLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvbG9jYWxkYXRlLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9sb2NhbGRhdGUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4MmRkMTYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvbG9jYWxkYXRlLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvbG9jYWxkYXRlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9sb2NhbGRhdGUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4MmRkMTYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvbG9jYWxkYXRlLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvbG9jYWxkYXRldGltZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvbG9jYWxkYXRldGltZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTdlYWU2NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9sb2NhbGRhdGV0aW1lLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvbG9jYWxkYXRldGltZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvbG9jYWxkYXRldGltZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTdlYWU2NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9sb2NhbGRhdGV0aW1lLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvbG9jYWx0aW1lLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9sb2NhbHRpbWUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiNWJmYTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvbG9jYWx0aW1lLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvbG9jYWx0aW1lLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9sb2NhbHRpbWUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiNWJmYTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvbG9jYWx0aW1lLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvbG9uZy12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvbG9uZy12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmYyODMzNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9sb25nLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACivIAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9sb25nLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9sb25nLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjI4MzM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL2xvbmctdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKK8gBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL21ldHJpY3MtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL21ldHJpY3MtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5NGNkMjQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvbWV0cmljcy12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL21ldHJpY3MtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL21ldHJpY3MtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2NWRkNjMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvbWV0cmljcy12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL21vbnRoZGF5LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9tb250aGRheS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWFjYWI4ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9tb250aGRheS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL21vbnRoZGF5LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9tb250aGRheS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWFjYWI4ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9tb250aGRheS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL29mZnNldGRhdGV0aW1lLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9vZmZzZXRkYXRldGltZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmJiOTJkMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9vZmZzZXRkYXRldGltZS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL29mZnNldGRhdGV0aW1lLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9vZmZzZXRkYXRldGltZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmJiOTJkMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9vZmZzZXRkYXRldGltZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL29mZnNldHRpbWUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL29mZnNldHRpbWUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxNjIxYWEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvb2Zmc2V0dGltZS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL29mZnNldHRpbWUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL29mZnNldHRpbWUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxNjIxYWEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvb2Zmc2V0dGltZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL29wZXJhdG9yLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9vcGVyYXRvci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9vcGVyYXRvci12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvb3BlcmF0b3ItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL29wZXJhdG9yLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL29wZXJhdG9yLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9vcmRlci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvb3JkZXItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4Yzc4MTEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvb3JkZXItdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEDClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL29yZGVyLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9vcmRlci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzhjNzgxMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9vcmRlci12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvcC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvcC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2M2NzZhOAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvcC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvcC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2M2NzZhOAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvcGFuZC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvcGFuZC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQ3N2U0MAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wYW5kLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvcGFuZC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvcGFuZC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQ3N2U0MAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wYW5kLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvcGF0aC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvcGF0aC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmFjMjAzZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wYXRoLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvcGF0aC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvcGF0aC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmFjMjAzZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wYXRoLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvcGVyaW9kLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wZXJpb2QtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwNGU5YzgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvcGVyaW9kLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvcGVyaW9kLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wZXJpb2QtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwNGU5YzgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvcGVyaW9kLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvcGljay12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvcGljay12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9waWNrLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9waWNrLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9waWNrLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3BpY2stdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3BvcC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvcG9wLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGM3ODExCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3BvcC12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvcG9wLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wb3AtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4Yzc4MTEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvcG9wLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wb3ItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3Bvci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGI4ZWJiNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wb3ItdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wb3ItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3Bvci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGI4ZWJiNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wb3ItdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wcm9wZXJ0eS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvcHJvcGVydHktdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzM2FjNmYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvcHJvcGVydHktdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEUAQFzaW5j5QKyHwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wcm9wZXJ0eS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvcHJvcGVydHktdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3ZDljMjcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvcHJvcGVydHktdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwFzaW5j5QKyHwIaZGV2ZWxvcPMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvcHdpdGhpbi12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvcHdpdGhpbi12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzVkZmUyMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wd2l0aGluLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvcHdpdGhpbi12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvcHdpdGhpbi12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzVkZmUyMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9wd2l0aGluLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvcHdpdGhvdXQtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3B3aXRob3V0LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGYxNGNmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3B3aXRob3V0LXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvcHdpdGhvdXQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3B3aXRob3V0LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGYxNGNmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3B3aXRob3V0LXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvc2NvcGUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3Njb3BlLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWJkNjNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3Njb3BlLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9zY29wZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvc2NvcGUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxYmQ2M2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvc2NvcGUtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwECClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3Nlc3Npb25jbG9zZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvc2Vzc2lvbmNsb3NlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYmFkNmExCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3Nlc3Npb25jbG9zZS12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQHLaCV4nZJEmZ68XGqnPFOXc2Vzc2lv7mNsb3PlAQEDAXNlc3Npb+4DAXVuaXF1ZS1zZXNzaW9uLWlkZW50aWZpZfIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvc2Vzc2lvbmV2YWwtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3Nlc3Npb25ldmFsLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTUxYjk2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3Nlc3Npb25ldmFsLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvc2Vzc2lvbmV2YWxhbGlhc2VkLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9zZXNzaW9uZXZhbGFsaWFzZWQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiYjU4ODkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvc2Vzc2lvbmV2YWxhbGlhc2VkLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvc2Vzc2lvbmxlc3NldmFsLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9zZXNzaW9ubGVzc2V2YWwtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkODRlMjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvc2Vzc2lvbmxlc3NldmFsLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDM3NDViZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvc2hvcnQtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3Nob3J0LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDYwYjg5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3Nob3J0LXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvc2hvcnQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3Nob3J0LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDYwYjg5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3Nob3J0LXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvc3RhbmRhcmRyZXN1bHQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3N0YW5kYXJkcmVzdWx0LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNmM1ZDhhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3N0YW5kYXJkcmVzdWx0LXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvc3RhcmdyYXBoLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9zdGFyZ3JhcGgtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5NDc4NDIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvc3RhcmdyYXBoLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvc3RhcmdyYXBoLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy9zdGFyZ3JhcGgtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5NDc4NDIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvc3RhcmdyYXBoLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvdC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvdC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy90LXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy90LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy90LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3QtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3RleHRwLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy90ZXh0cC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDcxZWIwZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy90ZXh0cC12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAWNvbnRhaW5pbucBYXLrClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3RleHRwLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy90ZXh0cC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDcxZWIwZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy90ZXh0cC12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAWNvbnRhaW5pbucBYXLrClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3RpbWVzdGFtcC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvdGltZXN0YW1wLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODZmOThmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3RpbWVzdGFtcC12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAYe3v/mPKwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy90aW1lc3RhbXAtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3RpbWVzdGFtcC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg2Zjk4ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy90aW1lc3RhbXAtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwGHt7/5jysKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvdGlua2VyZ3JhcGgtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3RpbmtlcmdyYXBoLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Nzg5OTg2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3RpbmtlcmdyYXBoLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvdGlua2VyZ3JhcGgtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3RpbmtlcmdyYXBoLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Nzg5OTg2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3RpbmtlcmdyYXBoLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvdHJhdmVyc2FsbWV0cmljcy12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvdHJhdmVyc2FsbWV0cmljcy12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWVmOGI1ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy90cmF2ZXJzYWxtZXRyaWNzLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvdHJhdmVyc2FsbWV0cmljcy12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvdHJhdmVyc2FsbWV0cmljcy12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWVjNDRmZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy90cmF2ZXJzYWxtZXRyaWNzLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvdHJhdmVyc2VyLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy90cmF2ZXJzZXItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjMDE5ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvdHJhdmVyc2VyLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvdHJhdmVyc2VyLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy90cmF2ZXJzZXItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjMWZiMGQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvdHJhdmVyc2VyLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvdHJlZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvdHJlZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjgyNTI5ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy90cmVlLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvdHJlZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvdHJlZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDVhOWRkOQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy90cmVlLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvdXVpZC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvdXVpZC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRmYzM1ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy91dWlkLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBQdLiiiCkSrCzedgQ3t43hgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy91dWlkLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy91dWlkLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNGZjMzVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3V1aWQtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwFB0uKKIKRKsLN52BDe3jeGClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3ZlcnRleC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvdmVydGV4LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNThhYzQ2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3ZlcnRleC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3ZlcnRleC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvdmVydGV4LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDY0MDM5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3ZlcnRleC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3ZlcnRleHByb3BlcnR5LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy92ZXJ0ZXhwcm9wZXJ0eS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2I3NGRhYQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy92ZXJ0ZXhwcm9wZXJ0eS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3ZlcnRleHByb3BlcnR5LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy92ZXJ0ZXhwcm9wZXJ0eS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTVmOGJlMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy92ZXJ0ZXhwcm9wZXJ0eS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3llYXItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3llYXItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlYzJlZjkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMveWVhci12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3llYXItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3llYXItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlYzJlZjkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMveWVhci12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3llYXJtb250aC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMveWVhcm1vbnRoLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40N2UzYTNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3llYXJtb250aC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3llYXJtb250aC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMveWVhcm1vbnRoLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40N2UzYTNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3llYXJtb250aC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3pvbmVkZGF0ZXRpbWUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3pvbmVkZGF0ZXRpbWUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlYmJjZTUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvem9uZWRkYXRldGltZS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3pvbmVkZGF0ZXRpbWUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3pvbmVkZGF0ZXRpbWUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlYmJjZTUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvem9uZWRkYXRldGltZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3pvbmVvZmZzZXQtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3pvbmVvZmZzZXQtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkMzRmOWMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzMvem9uZW9mZnNldC12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorASswMzowNjowuQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy96b25lb2Zmc2V0LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfMy96b25lb2Zmc2V0LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDM0ZjljCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF8zL3pvbmVvZmZzZXQtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwErMDM6MDY6MLkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWY5MWFjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvYXV0aGVudGljYXRpb25yZXNwb25zZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvYXV0aGVudGljYXRpb25yZXNwb25zZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWY5OWYyYQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBActoJXidkkSZnrxcaqc8U5eBYXV0aGVudGljYXRpb+4BAgMBc2FzbE1lY2hhbmlz7QMBUExBSc4DAXNhc+wDAUFITjBaWEJvY0dobGJnQndZWE56ZDI5eVpBPb0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvYmFycmllci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvYmFycmllci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9iYXJyaWVyLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9iYXJyaWVyLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9iYXJyaWVyLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2JhcnJpZXItdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2JpZ2RlY2ltYWwtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2JpZ2RlY2ltYWwtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0ZjQwZTAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvYmlnZGVjaW1hbC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2JpZ2RlY2ltYWwtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2JpZ2RlY2ltYWwtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0ZjQwZTAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvYmlnZGVjaW1hbC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2JpZ2ludGVnZXItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2JpZ2ludGVnZXItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0MjRhYzYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvYmlnaW50ZWdlci12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorARAXxuPC/dGCWs99AkR2+rEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvYmlnaW50ZWdlci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvYmlnaW50ZWdlci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQyNGFjNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9iaWdpbnRlZ2VyLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBEBfG48L90YJaz30CRHb6sQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9iaW5kaW5nLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9iaW5kaW5nLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDMxNDNiCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2JpbmRpbmctdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwGCeAICClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2JpbmRpbmctdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2JpbmRpbmctdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwMzE0M2IKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvYmluZGluZy12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAYJ4AgIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvYnVsa3NldC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvYnVsa3NldC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWZkYTI3YQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9idWxrc2V0LXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAwMBbWFya+8DAWpvc+gDBApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9idWxrc2V0LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9idWxrc2V0LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZmRhMjdhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2J1bGtzZXQtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEDAwFtYXJr7wMBam9z6AMEClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2J5dGUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2J5dGUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiMmFhYTcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvYnl0ZS12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9ieXRlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9ieXRlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjJhYWE3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2J5dGUtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvYnl0ZWJ1ZmZlci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvYnl0ZWJ1ZmZlci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmE5NGI1ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9ieXRlYnVmZmVyLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvYnl0ZWJ1ZmZlci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvYnl0ZWJ1ZmZlci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmE5NGI1ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9ieXRlYnVmZmVyLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvYnl0ZWNvZGUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2J5dGVjb2RlLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZGY4ZGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2J5dGVjb2RlLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvYnl0ZWNvZGUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2J5dGVjb2RlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZGY4ZGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2J5dGVjb2RlLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvY2FyZGluYWxpdHktdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2NhcmRpbmFsaXR5LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWJkNjNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2NhcmRpbmFsaXR5LXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9jYXJkaW5hbGl0eS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvY2FyZGluYWxpdHktdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxYmQ2M2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvY2FyZGluYWxpdHktdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwECClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2NoYXItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2NoYXItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxODg4MmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvY2hhci12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2NoYXItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2NoYXItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxODg4MmMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvY2hhci12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2NsYXNzLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9jbGFzcy12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThiNjVhZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9jbGFzcy12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAWphdmEuaW8uRmls5QpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9jbGFzcy12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvY2xhc3MtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4YjY1YWYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvY2xhc3MtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwFqYXZhLmlvLkZpbOUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvY29sdW1uLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9jb2x1bW4tdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvY29sdW1uLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9jb2x1bW4tdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2NvbHVtbi12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9jb2x1bW4tdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2RhdGUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2RhdGUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4NmY5OGYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvZGF0ZS12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAYe3v/mPKwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9kYXRlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9kYXRlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODZmOThmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2RhdGUtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwGHt7/5jysKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvZGlyZWN0aW9uLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9kaXJlY3Rpb24tdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvZGlyZWN0aW9uLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9kaXJlY3Rpb24tdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2RpcmVjdGlvbi12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9kaXJlY3Rpb24tdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2RvdWJsZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvZG91YmxlLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjUwNmFjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2RvdWJsZS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2RvdWJsZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvZG91YmxlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjUwNmFjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2RvdWJsZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2R1cmF0aW9uLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9kdXJhdGlvbi12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDY0MGFlMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9kdXJhdGlvbi12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2R1cmF0aW9uLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9kdXJhdGlvbi12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDY0MGFlMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9kdXJhdGlvbi12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2VkZ2UtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2VkZ2UtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyYTI0OTIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvZWRnZS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2VkZ2UtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2VkZ2UtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkZmJlZmIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvZWRnZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2Zsb2F0LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9mbG9hdC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTlhODg2NQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9mbG9hdC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2Zsb2F0LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9mbG9hdC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTlhODg2NQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9mbG9hdC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2luZXRhZGRyZXNzLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9pbmV0YWRkcmVzcy12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWY3OTdhNQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9pbmV0YWRkcmVzcy12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAWxvY2FsaG9z9ApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9pbmV0YWRkcmVzcy12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvaW5ldGFkZHJlc3MtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmNzk3YTUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvaW5ldGFkZHJlc3MtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwFsb2NhbGhvc/QKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvaW5zdGFudC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvaW5zdGFudC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDk0NjZjZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9pbnN0YW50LXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvaW5zdGFudC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvaW5zdGFudC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDk0NjZjZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9pbnN0YW50LXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvaW50ZWdlci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvaW50ZWdlci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmYyODMzNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9pbnRlZ2VyLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACivIAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9pbnRlZ2VyLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9pbnRlZ2VyLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjI4MzM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2ludGVnZXItdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKK8gBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2xhbWJkYS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvbGFtYmRhLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjM2NjFkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2xhbWJkYS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2xhbWJkYS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvbGFtYmRhLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjM2NjFkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2xhbWJkYS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2xvY2FsZGF0ZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvbG9jYWxkYXRlLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODJkZDE2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2xvY2FsZGF0ZS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2xvY2FsZGF0ZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvbG9jYWxkYXRlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODJkZDE2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2xvY2FsZGF0ZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2xvY2FsZGF0ZXRpbWUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2xvY2FsZGF0ZXRpbWUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3ZWFlNjQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvbG9jYWxkYXRldGltZS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2xvY2FsZGF0ZXRpbWUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2xvY2FsZGF0ZXRpbWUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3ZWFlNjQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvbG9jYWxkYXRldGltZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2xvY2FsdGltZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvbG9jYWx0aW1lLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjViZmE0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2xvY2FsdGltZS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2xvY2FsdGltZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvbG9jYWx0aW1lLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjViZmE0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2xvY2FsdGltZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2xvbmctdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L2xvbmctdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmMjgzMzYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvbG9uZy12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAoryAEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvbG9uZy12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvbG9uZy12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmYyODMzNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9sb25nLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACivIAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9tZXRyaWNzLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9tZXRyaWNzLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTRjZDI0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L21ldHJpY3MtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9tZXRyaWNzLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9tZXRyaWNzLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjVkZDYzCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L21ldHJpY3MtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9tb250aGRheS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvbW9udGhkYXktdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhY2FiOGYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvbW9udGhkYXktdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9tb250aGRheS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvbW9udGhkYXktdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhY2FiOGYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvbW9udGhkYXktdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9vZmZzZXRkYXRldGltZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvb2Zmc2V0ZGF0ZXRpbWUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiYjkyZDAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvb2Zmc2V0ZGF0ZXRpbWUtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9vZmZzZXRkYXRldGltZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvb2Zmc2V0ZGF0ZXRpbWUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiYjkyZDAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvb2Zmc2V0ZGF0ZXRpbWUtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9vZmZzZXR0aW1lLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9vZmZzZXR0aW1lLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTYyMWFhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L29mZnNldHRpbWUtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9vZmZzZXR0aW1lLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9vZmZzZXR0aW1lLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTYyMWFhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L29mZnNldHRpbWUtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9vcGVyYXRvci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvb3BlcmF0b3ItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvb3BlcmF0b3ItdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L29wZXJhdG9yLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9vcGVyYXRvci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9vcGVyYXRvci12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvb3JkZXItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L29yZGVyLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGM3ODExCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L29yZGVyLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9vcmRlci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvb3JkZXItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4Yzc4MTEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvb3JkZXItdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEDClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3AtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3AtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjNjc2YTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3AtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3AtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjNjc2YTgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3BhbmQtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3BhbmQtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0NzdlNDAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcGFuZC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3BhbmQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3BhbmQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0NzdlNDAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcGFuZC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3BhdGgtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3BhdGgtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhYzIwM2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcGF0aC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3BhdGgtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3BhdGgtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhYzIwM2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcGF0aC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3BlcmlvZC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcGVyaW9kLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDRlOWM4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3BlcmlvZC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3BlcmlvZC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcGVyaW9kLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDRlOWM4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3BlcmlvZC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3BpY2stdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3BpY2stdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcGljay12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcGljay12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcGljay12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9waWNrLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9wb3AtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3BvcC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzhjNzgxMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9wb3AtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEDClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3BvcC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcG9wLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGM3ODExCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3BvcC12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcG9yLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9wb3ItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiOGViYjQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcG9yLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcG9yLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9wb3ItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiOGViYjQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcG9yLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcHJvcGVydHktdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3Byb3BlcnR5LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzNhYzZmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3Byb3BlcnR5LXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBFAEBc2luY+UCsh8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcHJvcGVydHktdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3Byb3BlcnR5LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hN2Q5YzI3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3Byb3BlcnR5LXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBc2luY+UCsh8CGmRldmVsb3DzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3B3aXRoaW4tdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3B3aXRoaW4tdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1ZGZlMjEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcHdpdGhpbi12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3B3aXRoaW4tdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3B3aXRoaW4tdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1ZGZlMjEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvcHdpdGhpbi12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3B3aXRob3V0LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9wd2l0aG91dC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTBmMTRjZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9wd2l0aG91dC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3B3aXRob3V0LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9wd2l0aG91dC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTBmMTRjZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9wd2l0aG91dC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3Njb3BlLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9zY29wZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFiZDYzZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9zY29wZS12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvc2NvcGUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3Njb3BlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWJkNjNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3Njb3BlLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9zZXNzaW9uY2xvc2UtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3Nlc3Npb25jbG9zZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWJhZDZhMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9zZXNzaW9uY2xvc2UtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBy2gleJ2SRJmevFxqpzxTl3Nlc3Npb+5jbG9z5QEBAwFzZXNzaW/uAwF1bmlxdWUtc2Vzc2lvbi1pZGVudGlmaWXyClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3Nlc3Npb25ldmFsLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9zZXNzaW9uZXZhbC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjU1MWI5NgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9zZXNzaW9uZXZhbC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3Nlc3Npb25ldmFsYWxpYXNlZC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvc2Vzc2lvbmV2YWxhbGlhc2VkLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmI1ODg5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3Nlc3Npb25ldmFsYWxpYXNlZC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3Nlc3Npb25sZXNzZXZhbC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvc2Vzc2lvbmxlc3NldmFsLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDg0ZTIwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3Nlc3Npb25sZXNzZXZhbC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzNzQ1YmUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3Nob3J0LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9zaG9ydC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjA2MGI4OQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9zaG9ydC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3Nob3J0LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9zaG9ydC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjA2MGI4OQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9zaG9ydC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3N0YW5kYXJkcmVzdWx0LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9zdGFuZGFyZHJlc3VsdC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDZjNWQ4YQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC9zdGFuZGFyZHJlc3VsdC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3N0YXJncmFwaC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvc3RhcmdyYXBoLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTQ3ODQyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3N0YXJncmFwaC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3N0YXJncmFwaC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvc3RhcmdyYXBoLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTQ3ODQyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3N0YXJncmFwaC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3QtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3QtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvdC12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvdC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvdC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC90LXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC90ZXh0cC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvdGV4dHAtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3MWViMGYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvdGV4dHAtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwFjb250YWluaW7nAWFy6wpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC90ZXh0cC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvdGV4dHAtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3MWViMGYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvdGV4dHAtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwFjb250YWluaW7nAWFy6wpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC90aW1lc3RhbXAtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3RpbWVzdGFtcC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg2Zjk4ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC90aW1lc3RhbXAtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwGHt7/5jysKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvdGltZXN0YW1wLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC90aW1lc3RhbXAtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4NmY5OGYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvdGltZXN0YW1wLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBh7e/+Y8rClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3RpbmtlcmdyYXBoLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC90aW5rZXJncmFwaC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc4OTk4NgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC90aW5rZXJncmFwaC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3RpbmtlcmdyYXBoLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC90aW5rZXJncmFwaC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc4OTk4NgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC90aW5rZXJncmFwaC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3RyYXZlcnNhbG1ldHJpY3MtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3RyYXZlcnNhbG1ldHJpY3MtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlZjhiNWYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvdHJhdmVyc2FsbWV0cmljcy12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3RyYXZlcnNhbG1ldHJpY3MtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3RyYXZlcnNhbG1ldHJpY3MtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlYzQ0ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvdHJhdmVyc2FsbWV0cmljcy12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3RyYXZlcnNlci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvdHJhdmVyc2VyLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYzAxOWYwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3RyYXZlcnNlci12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3RyYXZlcnNlci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvdHJhdmVyc2VyLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzFmYjBkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3RyYXZlcnNlci12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3RyZWUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3RyZWUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4MjUyOWYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvdHJlZS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3RyZWUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3RyZWUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1YTlkZDkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvdHJlZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3V1aWQtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3V1aWQtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0ZmMzNWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvdXVpZC12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAUHS4oogpEqws3nYEN7eN4YKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvdXVpZC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvdXVpZC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRmYzM1ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC91dWlkLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBQdLiiiCkSrCzedgQ3t43hgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC92ZXJ0ZXgtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3ZlcnRleC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzU4YWM0NgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC92ZXJ0ZXgtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC92ZXJ0ZXgtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3ZlcnRleC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQ2NDAzOQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC92ZXJ0ZXgtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC92ZXJ0ZXhwcm9wZXJ0eS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvdmVydGV4cHJvcGVydHktdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiNzRkYWEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvdmVydGV4cHJvcGVydHktdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC92ZXJ0ZXhwcm9wZXJ0eS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvdmVydGV4cHJvcGVydHktdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1ZjhiZTAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvdmVydGV4cHJvcGVydHktdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC95ZWFyLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC95ZWFyLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZWMyZWY5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3llYXItdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC95ZWFyLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC95ZWFyLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZWMyZWY5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3llYXItdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC95ZWFybW9udGgtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3llYXJtb250aC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDdlM2EzZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC95ZWFybW9udGgtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC95ZWFybW9udGgtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3llYXJtb250aC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDdlM2EzZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC95ZWFybW9udGgtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC96b25lZGRhdGV0aW1lLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC96b25lZGRhdGV0aW1lLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZWJiY2U1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3pvbmVkZGF0ZXRpbWUtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC96b25lZGRhdGV0aW1lLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC96b25lZGRhdGV0aW1lLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZWJiY2U1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3pvbmVkZGF0ZXRpbWUtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC96b25lb2Zmc2V0LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC96b25lb2Zmc2V0LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDM0ZjljCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF80L3pvbmVvZmZzZXQtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwErMDM6MDY6MLkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvem9uZW9mZnNldC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzQvem9uZW9mZnNldC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQzNGY5YwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNC96b25lb2Zmc2V0LXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBKzAzOjA2OjC5ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2F1dGhlbnRpY2F0aW9uY2hhbGxlbmdlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmFmOTFhYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmOTlmMmEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvYXV0aGVudGljYXRpb25yZXNwb25zZS12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQHLaCV4nZJEmZ68XGqnPFOXgWF1dGhlbnRpY2F0aW/uAQIDAXNhc2xNZWNoYW5pc+0DAVBMQUnOAwFzYXPsAwFBSE4wWlhCb2NHaGxiZ0J3WVhOemQyOXlaQT29ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2JhcnJpZXItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2JhcnJpZXItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvYmFycmllci12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvYmFycmllci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvYmFycmllci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9iYXJyaWVyLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9iaWdkZWNpbWFsLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9iaWdkZWNpbWFsLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNGY0MGUwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2JpZ2RlY2ltYWwtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9iaWdkZWNpbWFsLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9iaWdkZWNpbWFsLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNGY0MGUwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2JpZ2RlY2ltYWwtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9iaWdpbnRlZ2VyLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9iaWdpbnRlZ2VyLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDI0YWM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2JpZ2ludGVnZXItdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEQF8bjwv3RglrPfQJEdvqxClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2JpZ2ludGVnZXItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2JpZ2ludGVnZXItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0MjRhYzYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvYmlnaW50ZWdlci12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorARAXxuPC/dGCWs99AkR2+rEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvYmluZGluZy12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvYmluZGluZy12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTAzMTQzYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9iaW5kaW5nLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBgngCAgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9iaW5kaW5nLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9iaW5kaW5nLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDMxNDNiCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2JpbmRpbmctdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwGCeAICClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2J1bGtzZXQtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2J1bGtzZXQtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmZGEyN2EKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvYnVsa3NldC12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQMDAW1hcmvvAwFqb3PoAwQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvYnVsa3NldC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvYnVsa3NldC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWZkYTI3YQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9idWxrc2V0LXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAwMBbWFya+8DAWpvc+gDBApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9ieXRlLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9ieXRlLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjJhYWE3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2J5dGUtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvYnl0ZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvYnl0ZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmIyYWFhNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9ieXRlLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2J5dGVidWZmZXItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2J5dGVidWZmZXItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhOTRiNWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvYnl0ZWJ1ZmZlci12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2J5dGVidWZmZXItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2J5dGVidWZmZXItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhOTRiNWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvYnl0ZWJ1ZmZlci12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2J5dGVjb2RlLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9ieXRlY29kZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWRmOGRkNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9ieXRlY29kZS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2J5dGVjb2RlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9ieXRlY29kZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWRmOGRkNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9ieXRlY29kZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2NhcmRpbmFsaXR5LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9jYXJkaW5hbGl0eS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFiZDYzZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9jYXJkaW5hbGl0eS12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvY2FyZGluYWxpdHktdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2NhcmRpbmFsaXR5LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWJkNjNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2NhcmRpbmFsaXR5LXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9jaGFyLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9jaGFyLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTg4ODJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2NoYXItdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9jaGFyLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9jaGFyLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTg4ODJjCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2NoYXItdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9jbGFzcy12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvY2xhc3MtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4YjY1YWYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvY2xhc3MtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwFqYXZhLmlvLkZpbOUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvY2xhc3MtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2NsYXNzLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOGI2NWFmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2NsYXNzLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBamF2YS5pby5GaWzlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2NvbHVtbi12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvY29sdW1uLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2NvbHVtbi12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvY29sdW1uLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9jb2x1bW4tdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvY29sdW1uLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9kYXRlLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9kYXRlLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODZmOThmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2RhdGUtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwGHt7/5jysKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvZGF0ZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvZGF0ZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg2Zjk4ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9kYXRlLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBh7e/+Y8rClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2RpcmVjdGlvbi12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvZGlyZWN0aW9uLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2RpcmVjdGlvbi12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvZGlyZWN0aW9uLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9kaXJlY3Rpb24tdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvZGlyZWN0aW9uLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9kb3VibGUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2RvdWJsZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY1MDZhYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9kb3VibGUtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9kb3VibGUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2RvdWJsZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY1MDZhYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9kb3VibGUtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9kdXJhdGlvbi12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvZHVyYXRpb24tdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2NDBhZTAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvZHVyYXRpb24tdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9kdXJhdGlvbi12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvZHVyYXRpb24tdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2NDBhZTAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvZHVyYXRpb24tdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9lZGdlLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9lZGdlLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMmEyNDkyCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2VkZ2UtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9lZGdlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9lZGdlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZGZiZWZiCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2VkZ2UtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9mbG9hdC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvZmxvYXQtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5YTg4NjUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvZmxvYXQtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9mbG9hdC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvZmxvYXQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5YTg4NjUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvZmxvYXQtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9pbmV0YWRkcmVzcy12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvaW5ldGFkZHJlc3MtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmNzk3YTUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvaW5ldGFkZHJlc3MtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwFsb2NhbGhvc/QKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvaW5ldGFkZHJlc3MtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2luZXRhZGRyZXNzLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjc5N2E1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2luZXRhZGRyZXNzLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBbG9jYWxob3P0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2luc3RhbnQtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2luc3RhbnQtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5NDY2Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvaW5zdGFudC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2luc3RhbnQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2luc3RhbnQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5NDY2Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvaW5zdGFudC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2ludGVnZXItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2ludGVnZXItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmMjgzMzYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvaW50ZWdlci12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAoryAEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvaW50ZWdlci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvaW50ZWdlci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmYyODMzNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9pbnRlZ2VyLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACivIAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9sYW1iZGEtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2xhbWJkYS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDYzNjYxZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9sYW1iZGEtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9sYW1iZGEtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2xhbWJkYS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDYzNjYxZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9sYW1iZGEtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9sb2NhbGRhdGUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2xvY2FsZGF0ZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjgyZGQxNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9sb2NhbGRhdGUtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9sb2NhbGRhdGUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2xvY2FsZGF0ZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjgyZGQxNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9sb2NhbGRhdGUtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9sb2NhbGRhdGV0aW1lLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9sb2NhbGRhdGV0aW1lLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2VhZTY0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2xvY2FsZGF0ZXRpbWUtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9sb2NhbGRhdGV0aW1lLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9sb2NhbGRhdGV0aW1lLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2VhZTY0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2xvY2FsZGF0ZXRpbWUtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9sb2NhbHRpbWUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2xvY2FsdGltZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWI1YmZhNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9sb2NhbHRpbWUtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9sb2NhbHRpbWUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2xvY2FsdGltZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWI1YmZhNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9sb2NhbHRpbWUtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9sb25nLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9sb25nLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjI4MzM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2xvbmctdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKK8gBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2xvbmctdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L2xvbmctdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmMjgzMzYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvbG9uZy12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAoryAEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvbWV0cmljcy12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvbWV0cmljcy12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDk0Y2QyNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9tZXRyaWNzLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvbWV0cmljcy12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvbWV0cmljcy12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjY1ZGQ2MwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9tZXRyaWNzLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvbW9udGhkYXktdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L21vbnRoZGF5LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YWNhYjhmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L21vbnRoZGF5LXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvbW9udGhkYXktdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L21vbnRoZGF5LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YWNhYjhmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L21vbnRoZGF5LXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvb2Zmc2V0ZGF0ZXRpbWUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L29mZnNldGRhdGV0aW1lLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmI5MmQwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L29mZnNldGRhdGV0aW1lLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvb2Zmc2V0ZGF0ZXRpbWUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L29mZnNldGRhdGV0aW1lLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmI5MmQwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L29mZnNldGRhdGV0aW1lLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvb2Zmc2V0dGltZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvb2Zmc2V0dGltZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDE2MjFhYQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9vZmZzZXR0aW1lLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvb2Zmc2V0dGltZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvb2Zmc2V0dGltZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDE2MjFhYQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9vZmZzZXR0aW1lLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvb3BlcmF0b3ItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L29wZXJhdG9yLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L29wZXJhdG9yLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9vcGVyYXRvci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvb3BlcmF0b3ItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvb3BlcmF0b3ItdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L29yZGVyLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9vcmRlci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzhjNzgxMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9vcmRlci12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvb3JkZXItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L29yZGVyLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGM3ODExCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L29yZGVyLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9wLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9wLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzY3NmE4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3AtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9wLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9wLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzY3NmE4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3AtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9wYW5kLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9wYW5kLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDc3ZTQwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3BhbmQtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9wYW5kLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9wYW5kLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDc3ZTQwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3BhbmQtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9wYXRoLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9wYXRoLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWMyMDNkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3BhdGgtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9wYXRoLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9wYXRoLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWMyMDNkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3BhdGgtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9wZXJpb2QtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3BlcmlvZC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjA0ZTljOAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9wZXJpb2QtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9wZXJpb2QtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3BlcmlvZC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjA0ZTljOAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9wZXJpb2QtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9waWNrLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9waWNrLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3BpY2stdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3BpY2stdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3BpY2stdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvcGljay12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvcG9wLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9wb3AtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4Yzc4MTEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvcG9wLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9wb3AtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3BvcC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzhjNzgxMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9wb3AtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEDClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3Bvci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvcG9yLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjhlYmI0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3Bvci12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3Bvci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvcG9yLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjhlYmI0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3Bvci12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3Byb3BlcnR5LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9wcm9wZXJ0eS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTMzYWM2ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9wcm9wZXJ0eS12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorARQBAXNpbmPlArIfClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3Byb3BlcnR5LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9wcm9wZXJ0eS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTdkOWMyNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9wcm9wZXJ0eS12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAXNpbmPlArIfAhpkZXZlbG9w8wpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9wd2l0aGluLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9wd2l0aGluLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNWRmZTIxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3B3aXRoaW4tdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9wd2l0aGluLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9wd2l0aGluLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNWRmZTIxCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3B3aXRoaW4tdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9wd2l0aG91dC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvcHdpdGhvdXQtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwZjE0Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvcHdpdGhvdXQtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9wd2l0aG91dC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvcHdpdGhvdXQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwZjE0Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvcHdpdGhvdXQtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9zY29wZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvc2NvcGUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxYmQ2M2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvc2NvcGUtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwECClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3Njb3BlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9zY29wZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFiZDYzZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9zY29wZS12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvc2Vzc2lvbmNsb3NlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9zZXNzaW9uY2xvc2UtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiYWQ2YTEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvc2Vzc2lvbmNsb3NlLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBActoJXidkkSZnrxcaqc8U5dzZXNzaW/uY2xvc+UBAQMBc2Vzc2lv7gMBdW5pcXVlLXNlc3Npb24taWRlbnRpZmll8gpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9zZXNzaW9uZXZhbC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvc2Vzc2lvbmV2YWwtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1NTFiOTYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvc2Vzc2lvbmV2YWwtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9zZXNzaW9uZXZhbGFsaWFzZWQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3Nlc3Npb25ldmFsYWxpYXNlZC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGJiNTg4OQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9zZXNzaW9uZXZhbGFsaWFzZWQtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9zZXNzaW9ubGVzc2V2YWwtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3Nlc3Npb25sZXNzZXZhbC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQ4NGUyMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9zZXNzaW9ubGVzc2V2YWwtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzc0NWJlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3Nlc3Npb25sZXNzZXZhbGFsaWFzZWQtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9zaG9ydC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvc2hvcnQtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwNjBiODkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvc2hvcnQtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9zaG9ydC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvc2hvcnQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwNjBiODkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvc2hvcnQtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9zdGFuZGFyZHJlc3VsdC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvc3RhbmRhcmRyZXN1bHQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2YzVkOGEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvc3RhbmRhcmRyZXN1bHQtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9zdGFyZ3JhcGgtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3N0YXJncmFwaC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTk0Nzg0MgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9zdGFyZ3JhcGgtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9zdGFyZ3JhcGgtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3N0YXJncmFwaC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTk0Nzg0MgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS9zdGFyZ3JhcGgtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS90LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS90LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3QtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3QtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3QtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvdC12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvdGV4dHAtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3RleHRwLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzFlYjBmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3RleHRwLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBY29udGFpbmlu5wFhcusKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvdGV4dHAtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3RleHRwLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzFlYjBmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3RleHRwLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBY29udGFpbmlu5wFhcusKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvdGltZXN0YW1wLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS90aW1lc3RhbXAtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4NmY5OGYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvdGltZXN0YW1wLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBh7e/+Y8rClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3RpbWVzdGFtcC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvdGltZXN0YW1wLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODZmOThmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3RpbWVzdGFtcC12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAYe3v/mPKwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS90aW5rZXJncmFwaC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvdGlua2VyZ3JhcGgtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3ODk5ODYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvdGlua2VyZ3JhcGgtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS90aW5rZXJncmFwaC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvdGlua2VyZ3JhcGgtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3ODk5ODYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvdGlua2VyZ3JhcGgtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS90cmF2ZXJzYWxtZXRyaWNzLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS90cmF2ZXJzYWxtZXRyaWNzLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZWY4YjVmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3RyYXZlcnNhbG1ldHJpY3MtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS90cmF2ZXJzYWxtZXRyaWNzLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS90cmF2ZXJzYWxtZXRyaWNzLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZWM0NGZkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3RyYXZlcnNhbG1ldHJpY3MtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS90cmF2ZXJzZXItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3RyYXZlcnNlci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2MwMTlmMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS90cmF2ZXJzZXItdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS90cmF2ZXJzZXItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3RyYXZlcnNlci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2MxZmIwZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS90cmF2ZXJzZXItdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS90cmVlLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS90cmVlLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODI1MjlmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3RyZWUtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS90cmVlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS90cmVlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNWE5ZGQ5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3RyZWUtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS91dWlkLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS91dWlkLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNGZjMzVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3V1aWQtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwFB0uKKIKRKsLN52BDe3jeGClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3V1aWQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3V1aWQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0ZmMzNWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvdXVpZC12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAUHS4oogpEqws3nYEN7eN4YKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvdmVydGV4LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS92ZXJ0ZXgtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1OGFjNDYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvdmVydGV4LXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvdmVydGV4LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS92ZXJ0ZXgtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0NjQwMzkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvdmVydGV4LXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvdmVydGV4cHJvcGVydHktdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3ZlcnRleHByb3BlcnR5LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjc0ZGFhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3ZlcnRleHByb3BlcnR5LXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvdmVydGV4cHJvcGVydHktdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3ZlcnRleHByb3BlcnR5LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NWY4YmUwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3ZlcnRleHByb3BlcnR5LXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUveWVhci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUveWVhci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmVjMmVmOQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS95ZWFyLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUveWVhci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUveWVhci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmVjMmVmOQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS95ZWFyLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUveWVhcm1vbnRoLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS95ZWFybW9udGgtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3ZTNhM2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUveWVhcm1vbnRoLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUveWVhcm1vbnRoLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS95ZWFybW9udGgtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3ZTNhM2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUveWVhcm1vbnRoLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvem9uZWRkYXRldGltZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvem9uZWRkYXRldGltZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ViYmNlNQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS96b25lZGRhdGV0aW1lLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvem9uZWRkYXRldGltZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvem9uZWRkYXRldGltZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ViYmNlNQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS96b25lZGRhdGV0aW1lLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvem9uZW9mZnNldC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvem9uZW9mZnNldC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQzNGY5YwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNS96b25lb2Zmc2V0LXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBKzAzOjA2OjC5ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3pvbmVvZmZzZXQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF81L3pvbmVvZmZzZXQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkMzRmOWMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzUvem9uZW9mZnNldC12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorASswMzowNjowuQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9hdXRoZW50aWNhdGlvbmNoYWxsZW5nZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhZjkxYWMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvYXV0aGVudGljYXRpb25jaGFsbGVuZ2UtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9hdXRoZW50aWNhdGlvbnJlc3BvbnNlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjk5ZjJhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2F1dGhlbnRpY2F0aW9ucmVzcG9uc2UtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBy2gleJ2SRJmevFxqpzxTl4FhdXRoZW50aWNhdGlv7gECAwFzYXNsTWVjaGFuaXPtAwFQTEFJzgMBc2Fz7AMBQUhOMFpYQm9jR2hsYmdCd1lYTnpkMjl5WkE9vQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9iYXJyaWVyLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9iYXJyaWVyLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2JhcnJpZXItdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2JhcnJpZXItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2JhcnJpZXItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZmRlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvYmFycmllci12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvYmlnZGVjaW1hbC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvYmlnZGVjaW1hbC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDRmNDBlMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9iaWdkZWNpbWFsLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvYmlnZGVjaW1hbC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvYmlnZGVjaW1hbC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDRmNDBlMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9iaWdkZWNpbWFsLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvYmlnaW50ZWdlci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvYmlnaW50ZWdlci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQyNGFjNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9iaWdpbnRlZ2VyLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBEBfG48L90YJaz30CRHb6sQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9iaWdpbnRlZ2VyLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9iaWdpbnRlZ2VyLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDI0YWM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2JpZ2ludGVnZXItdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEQF8bjwv3RglrPfQJEdvqxClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2JpbmRpbmctdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2JpbmRpbmctdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwMzE0M2IKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvYmluZGluZy12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAYJ4AgIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvYmluZGluZy12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvYmluZGluZy12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTAzMTQzYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9iaW5kaW5nLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBgngCAgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9idWxrc2V0LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9idWxrc2V0LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZmRhMjdhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2J1bGtzZXQtdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEDAwFtYXJr7wMBam9z6AMEClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2J1bGtzZXQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2J1bGtzZXQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmZGEyN2EKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvYnVsa3NldC12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQMDAW1hcmvvAwFqb3PoAwQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvYnl0ZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvYnl0ZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmIyYWFhNwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9ieXRlLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2J5dGUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2J5dGUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiMmFhYTcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvYnl0ZS12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9ieXRlYnVmZmVyLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9ieXRlYnVmZmVyLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTk0YjVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2J5dGVidWZmZXItdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9ieXRlYnVmZmVyLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9ieXRlYnVmZmVyLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTk0YjVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2J5dGVidWZmZXItdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9ieXRlY29kZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvYnl0ZWNvZGUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkZjhkZDQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvYnl0ZWNvZGUtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9ieXRlY29kZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvYnl0ZWNvZGUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkZjhkZDQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvYnl0ZWNvZGUtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9jYXJkaW5hbGl0eS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvY2FyZGluYWxpdHktdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxYmQ2M2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvY2FyZGluYWxpdHktdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwECClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2NhcmRpbmFsaXR5LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9jYXJkaW5hbGl0eS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFiZDYzZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9jYXJkaW5hbGl0eS12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvY2hhci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvY2hhci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE4ODgyYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9jaGFyLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvY2hhci12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvY2hhci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE4ODgyYwotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9jaGFyLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvY2xhc3MtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2NsYXNzLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOGI2NWFmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2NsYXNzLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBamF2YS5pby5GaWzlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2NsYXNzLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9jbGFzcy12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThiNjVhZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9jbGFzcy12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAWphdmEuaW8uRmls5QpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9jb2x1bW4tdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2NvbHVtbi12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9jb2x1bW4tdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2NvbHVtbi12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvY29sdW1uLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2NvbHVtbi12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvZGF0ZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvZGF0ZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg2Zjk4ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9kYXRlLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBh7e/+Y8rClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2RhdGUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2RhdGUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4NmY5OGYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvZGF0ZS12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAYe3v/mPKwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9kaXJlY3Rpb24tdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2RpcmVjdGlvbi12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9kaXJlY3Rpb24tdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2RpcmVjdGlvbi12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvZGlyZWN0aW9uLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2RpcmVjdGlvbi12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvZG91YmxlLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9kb3VibGUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2NTA2YWMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvZG91YmxlLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvZG91YmxlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9kb3VibGUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2NTA2YWMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvZG91YmxlLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvZHVyYXRpb24tdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2R1cmF0aW9uLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjQwYWUwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2R1cmF0aW9uLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvZHVyYXRpb24tdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2R1cmF0aW9uLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjQwYWUwCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2R1cmF0aW9uLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvZWRnZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvZWRnZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDJhMjQ5MgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9lZGdlLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvZWRnZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvZWRnZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmRmYmVmYgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9lZGdlLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvZmxvYXQtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2Zsb2F0LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOWE4ODY1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2Zsb2F0LXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvZmxvYXQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2Zsb2F0LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOWE4ODY1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2Zsb2F0LXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvaW5ldGFkZHJlc3MtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2luZXRhZGRyZXNzLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjc5N2E1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2luZXRhZGRyZXNzLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBbG9jYWxob3P0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2luZXRhZGRyZXNzLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9pbmV0YWRkcmVzcy12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWY3OTdhNQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9pbmV0YWRkcmVzcy12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAWxvY2FsaG9z9ApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9pbnN0YW50LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9pbnN0YW50LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTQ2NmNkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2luc3RhbnQtdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9pbnN0YW50LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9pbnN0YW50LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTQ2NmNkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2luc3RhbnQtdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9pbnRlZ2VyLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9pbnRlZ2VyLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjI4MzM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2ludGVnZXItdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKK8gBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2ludGVnZXItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2ludGVnZXItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmMjgzMzYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvaW50ZWdlci12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAoryAEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvbGFtYmRhLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9sYW1iZGEtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2MzY2MWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvbGFtYmRhLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvbGFtYmRhLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9sYW1iZGEtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2MzY2MWQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvbGFtYmRhLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvbG9jYWxkYXRlLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9sb2NhbGRhdGUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4MmRkMTYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvbG9jYWxkYXRlLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvbG9jYWxkYXRlLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9sb2NhbGRhdGUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4MmRkMTYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvbG9jYWxkYXRlLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvbG9jYWxkYXRldGltZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvbG9jYWxkYXRldGltZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTdlYWU2NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9sb2NhbGRhdGV0aW1lLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvbG9jYWxkYXRldGltZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvbG9jYWxkYXRldGltZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTdlYWU2NAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9sb2NhbGRhdGV0aW1lLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvbG9jYWx0aW1lLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9sb2NhbHRpbWUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiNWJmYTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvbG9jYWx0aW1lLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvbG9jYWx0aW1lLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9sb2NhbHRpbWUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiNWJmYTQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvbG9jYWx0aW1lLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvbG9uZy12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvbG9uZy12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmYyODMzNgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9sb25nLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACivIAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9sb25nLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9sb25nLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjI4MzM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L2xvbmctdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKK8gBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L21ldHJpY3MtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L21ldHJpY3MtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5NGNkMjQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvbWV0cmljcy12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L21ldHJpY3MtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L21ldHJpY3MtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2NWRkNjMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvbWV0cmljcy12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L21vbnRoZGF5LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9tb250aGRheS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWFjYWI4ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9tb250aGRheS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L21vbnRoZGF5LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9tb250aGRheS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWFjYWI4ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9tb250aGRheS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L29mZnNldGRhdGV0aW1lLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9vZmZzZXRkYXRldGltZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmJiOTJkMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9vZmZzZXRkYXRldGltZS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L29mZnNldGRhdGV0aW1lLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9vZmZzZXRkYXRldGltZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmJiOTJkMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9vZmZzZXRkYXRldGltZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L29mZnNldHRpbWUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L29mZnNldHRpbWUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxNjIxYWEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvb2Zmc2V0dGltZS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L29mZnNldHRpbWUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L29mZnNldHRpbWUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxNjIxYWEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvb2Zmc2V0dGltZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L29wZXJhdG9yLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9vcGVyYXRvci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9vcGVyYXRvci12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvb3BlcmF0b3ItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L29wZXJhdG9yLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L29wZXJhdG9yLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9vcmRlci12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvb3JkZXItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4Yzc4MTEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvb3JkZXItdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEDClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L29yZGVyLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9vcmRlci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzhjNzgxMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9vcmRlci12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvcC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvcC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2M2NzZhOAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvcC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvcC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2M2NzZhOAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvcGFuZC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvcGFuZC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQ3N2U0MAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wYW5kLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvcGFuZC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvcGFuZC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQ3N2U0MAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wYW5kLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvcGF0aC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvcGF0aC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmFjMjAzZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wYXRoLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvcGF0aC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvcGF0aC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmFjMjAzZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wYXRoLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvcGVyaW9kLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wZXJpb2QtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwNGU5YzgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvcGVyaW9kLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvcGVyaW9kLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wZXJpb2QtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwNGU5YzgKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvcGVyaW9kLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvcGljay12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvcGljay12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9waWNrLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9waWNrLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9waWNrLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3BpY2stdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3BvcC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvcG9wLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGM3ODExCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3BvcC12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAQMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvcG9wLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wb3AtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4Yzc4MTEKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvcG9wLXYzZDAua3J5bwpAQCAtMCwwICsxIEBACisBAwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wb3ItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3Bvci12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGI4ZWJiNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wb3ItdjFkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wb3ItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3Bvci12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGI4ZWJiNAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wb3ItdjNkMC5rcnlvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wcm9wZXJ0eS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvcHJvcGVydHktdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzM2FjNmYKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvcHJvcGVydHktdjFkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEUAQFzaW5j5QKyHwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wcm9wZXJ0eS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvcHJvcGVydHktdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3ZDljMjcKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvcHJvcGVydHktdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwFzaW5j5QKyHwIaZGV2ZWxvcPMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvcHdpdGhpbi12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvcHdpdGhpbi12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzVkZmUyMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wd2l0aGluLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvcHdpdGhpbi12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvcHdpdGhpbi12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzVkZmUyMQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9wd2l0aGluLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvcHdpdGhvdXQtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3B3aXRob3V0LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGYxNGNmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3B3aXRob3V0LXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvcHdpdGhvdXQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3B3aXRob3V0LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGYxNGNmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3B3aXRob3V0LXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvc2NvcGUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3Njb3BlLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWJkNjNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3Njb3BlLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9zY29wZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvc2NvcGUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxYmQ2M2UKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvc2NvcGUtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwECClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3Nlc3Npb25jbG9zZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvc2Vzc2lvbmNsb3NlLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYmFkNmExCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3Nlc3Npb25jbG9zZS12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAQHLaCV4nZJEmZ68XGqnPFOXc2Vzc2lv7mNsb3PlAQEDAXNlc3Npb+4DAXVuaXF1ZS1zZXNzaW9uLWlkZW50aWZpZfIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvc2Vzc2lvbmV2YWwtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3Nlc3Npb25ldmFsLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTUxYjk2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3Nlc3Npb25ldmFsLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvc2Vzc2lvbmV2YWxhbGlhc2VkLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9zZXNzaW9uZXZhbGFsaWFzZWQtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiYjU4ODkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvc2Vzc2lvbmV2YWxhbGlhc2VkLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvc2Vzc2lvbmxlc3NldmFsLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9zZXNzaW9ubGVzc2V2YWwtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkODRlMjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvc2Vzc2lvbmxlc3NldmFsLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvc2Vzc2lvbmxlc3NldmFsYWxpYXNlZC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDM3NDViZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9zZXNzaW9ubGVzc2V2YWxhbGlhc2VkLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvc2hvcnQtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3Nob3J0LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDYwYjg5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3Nob3J0LXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvc2hvcnQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3Nob3J0LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDYwYjg5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3Nob3J0LXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvc3RhbmRhcmRyZXN1bHQtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3N0YW5kYXJkcmVzdWx0LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNmM1ZDhhCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3N0YW5kYXJkcmVzdWx0LXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvc3RhcmdyYXBoLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9zdGFyZ3JhcGgtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5NDc4NDIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvc3RhcmdyYXBoLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvc3RhcmdyYXBoLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi9zdGFyZ3JhcGgtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5NDc4NDIKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvc3RhcmdyYXBoLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvdC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvdC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmZGVjZQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi90LXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBAQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi90LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi90LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGZkZWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3QtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwEBClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3RleHRwLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi90ZXh0cC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDcxZWIwZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi90ZXh0cC12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAWNvbnRhaW5pbucBYXLrClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3RleHRwLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi90ZXh0cC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDcxZWIwZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi90ZXh0cC12M2QwLmtyeW8KQEAgLTAsMCArMSBAQAorAWNvbnRhaW5pbucBYXLrClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3RpbWVzdGFtcC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvdGltZXN0YW1wLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODZmOThmCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3RpbWVzdGFtcC12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorAYe3v/mPKwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi90aW1lc3RhbXAtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3RpbWVzdGFtcC12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg2Zjk4ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi90aW1lc3RhbXAtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwGHt7/5jysKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvdGlua2VyZ3JhcGgtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3RpbmtlcmdyYXBoLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Nzg5OTg2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3RpbmtlcmdyYXBoLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvdGlua2VyZ3JhcGgtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3RpbmtlcmdyYXBoLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Nzg5OTg2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3RpbmtlcmdyYXBoLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvdHJhdmVyc2FsbWV0cmljcy12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvdHJhdmVyc2FsbWV0cmljcy12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWVmOGI1ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi90cmF2ZXJzYWxtZXRyaWNzLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvdHJhdmVyc2FsbWV0cmljcy12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvdHJhdmVyc2FsbWV0cmljcy12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWVjNDRmZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi90cmF2ZXJzYWxtZXRyaWNzLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvdHJhdmVyc2VyLXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi90cmF2ZXJzZXItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjMDE5ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvdHJhdmVyc2VyLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvdHJhdmVyc2VyLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi90cmF2ZXJzZXItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjMWZiMGQKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvdHJhdmVyc2VyLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvdHJlZS12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvdHJlZS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjgyNTI5ZgotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi90cmVlLXYxZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvdHJlZS12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvdHJlZS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDVhOWRkOQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi90cmVlLXYzZDAua3J5bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvdXVpZC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvdXVpZC12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRmYzM1ZAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi91dWlkLXYxZDAua3J5bwpAQCAtMCwwICsxIEBACisBQdLiiiCkSrCzedgQ3t43hgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi91dWlkLXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi91dWlkLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNGZjMzVkCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3V1aWQtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwFB0uKKIKRKsLN52BDe3jeGClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3ZlcnRleC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvdmVydGV4LXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNThhYzQ2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3ZlcnRleC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3ZlcnRleC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvdmVydGV4LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDY0MDM5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3ZlcnRleC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3ZlcnRleHByb3BlcnR5LXYxZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi92ZXJ0ZXhwcm9wZXJ0eS12MWQwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2I3NGRhYQotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi92ZXJ0ZXhwcm9wZXJ0eS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3ZlcnRleHByb3BlcnR5LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi92ZXJ0ZXhwcm9wZXJ0eS12M2QwLmtyeW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTVmOGJlMAotLS0gL2Rldi9udWxsCisrKyBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi92ZXJ0ZXhwcm9wZXJ0eS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3llYXItdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3llYXItdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlYzJlZjkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYveWVhci12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3llYXItdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3llYXItdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlYzJlZjkKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYveWVhci12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3llYXJtb250aC12MWQwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYveWVhcm1vbnRoLXYxZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40N2UzYTNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3llYXJtb250aC12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3llYXJtb250aC12M2QwLmtyeW8gYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYveWVhcm1vbnRoLXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40N2UzYTNlCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3llYXJtb250aC12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3pvbmVkZGF0ZXRpbWUtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3pvbmVkZGF0ZXRpbWUtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlYmJjZTUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvem9uZWRkYXRldGltZS12MWQwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3pvbmVkZGF0ZXRpbWUtdjNkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3pvbmVkZGF0ZXRpbWUtdjNkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlYmJjZTUKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvem9uZWRkYXRldGltZS12M2QwLmtyeW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3pvbmVvZmZzZXQtdjFkMC5rcnlvIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3pvbmVvZmZzZXQtdjFkMC5rcnlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkMzRmOWMKLS0tIC9kZXYvbnVsbAorKysgYi9ncmVtbGluLXRvb2xzL2dyZW1saW4taW8tdGVzdC9zcmMvdGVzdC9yZXNvdXJjZXMvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zdHJ1Y3R1cmUvaW8vZ3J5by9fM180XzYvem9uZW9mZnNldC12MWQwLmtyeW8KQEAgLTAsMCArMSBAQAorASswMzowNjowuQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi96b25lb2Zmc2V0LXYzZDAua3J5byBiL2dyZW1saW4tdG9vbHMvZ3JlbWxpbi1pby10ZXN0L3NyYy90ZXN0L3Jlc291cmNlcy9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3N0cnVjdHVyZS9pby9ncnlvL18zXzRfNi96b25lb2Zmc2V0LXYzZDAua3J5bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDM0ZjljCi0tLSAvZGV2L251bGwKKysrIGIvZ3JlbWxpbi10b29scy9ncmVtbGluLWlvLXRlc3Qvc3JjL3Rlc3QvcmVzb3VyY2VzL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3RydWN0dXJlL2lvL2dyeW8vXzNfNF82L3pvbmVvZmZzZXQtdjNkMC5rcnlvCkBAIC0wLDAgKzEgQEAKKwErMDM6MDY6MLkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9ncmVtbGluLXRvb2xzL3BvbS54bWwgYi9ncmVtbGluLXRvb2xzL3BvbS54bWwKaW5kZXggMzNhN2VhZS4uMGFmODYwMyAxMDA2NDQKLS0tIGEvZ3JlbWxpbi10b29scy9wb20ueG1sCisrKyBiL2dyZW1saW4tdG9vbHMvcG9tLnhtbApAQCAtNiw3ICs2LDcgQEAKICAgICA8cGFyZW50PgogICAgICAgICA8YXJ0aWZhY3RJZD50aW5rZXJwb3A8L2FydGlmYWN0SWQ+CiAgICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUudGlua2VycG9wPC9ncm91cElkPgotICAgICAgICA8dmVyc2lvbj4zLjMuMTEtU05BUFNIT1Q8L3ZlcnNpb24+CisgICAgICAgIDx2ZXJzaW9uPjMuNC43LVNOQVBTSE9UPC92ZXJzaW9uPgogICAgIDwvcGFyZW50PgogCiAgICAgPGFydGlmYWN0SWQ+Z3JlbWxpbi10b29sczwvYXJ0aWZhY3RJZD4KZGlmZiAtLWdpdCBhL2hhZG9vcC1ncmVtbGluL2NvbmYvaGFkb29wLWdyYXBoc29uLnByb3BlcnRpZXMgYi9oYWRvb3AtZ3JlbWxpbi9jb25mL2hhZG9vcC1ncmFwaHNvbi5wcm9wZXJ0aWVzCmluZGV4IGMzN2NmMjguLmMyZjY2MGIgMTAwNjQ0Ci0tLSBhL2hhZG9vcC1ncmVtbGluL2NvbmYvaGFkb29wLWdyYXBoc29uLnByb3BlcnRpZXMKKysrIGIvaGFkb29wLWdyZW1saW4vY29uZi9oYWRvb3AtZ3JhcGhzb24ucHJvcGVydGllcwpAQCAtMzMsMTIgKzMzLDYgQEAKIHNwYXJrLnNlcmlhbGl6ZXI9b3JnLmFwYWNoZS5zcGFyay5zZXJpYWxpemVyLktyeW9TZXJpYWxpemVyCiBzcGFyay5rcnlvLnJlZ2lzdHJhdG9yPW9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3Bhcmsuc3RydWN0dXJlLmlvLmdyeW8uR3J5b1JlZ2lzdHJhdG9yCiAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgR2lyYXBoR3JhcGhDb21wdXRlciBDb25maWd1cmF0aW9uICMKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLWdpcmFwaC5taW5Xb3JrZXJzPTIKLWdpcmFwaC5tYXhXb3JrZXJzPTIKLQogCiAKIApkaWZmIC0tZ2l0IGEvaGFkb29wLWdyZW1saW4vY29uZi9oYWRvb3AtZ3JhdGVmdWwtZ3J5by5wcm9wZXJ0aWVzIGIvaGFkb29wLWdyZW1saW4vY29uZi9oYWRvb3AtZ3JhdGVmdWwtZ3J5by5wcm9wZXJ0aWVzCmluZGV4IDkyZWQ5NDIuLmYyOGNlOWQgMTAwNjQ0Ci0tLSBhL2hhZG9vcC1ncmVtbGluL2NvbmYvaGFkb29wLWdyYXRlZnVsLWdyeW8ucHJvcGVydGllcworKysgYi9oYWRvb3AtZ3JlbWxpbi9jb25mL2hhZG9vcC1ncmF0ZWZ1bC1ncnlvLnByb3BlcnRpZXMKQEAgLTMwLDE1ICszMCwzIEBACiBzcGFyay5zZXJpYWxpemVyPW9yZy5hcGFjaGUuc3Bhcmsuc2VyaWFsaXplci5LcnlvU2VyaWFsaXplcgogc3Bhcmsua3J5by5yZWdpc3RyYXRvcj1vcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNwYXJrLnN0cnVjdHVyZS5pby5ncnlvLkdyeW9SZWdpc3RyYXRvcgogCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIEdpcmFwaEdyYXBoQ29tcHV0ZXIgQ29uZmlndXJhdGlvbiAjCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi1naXJhcGgubWluV29ya2Vycz0xCi1naXJhcGgubWF4V29ya2Vycz0xCi1naXJhcGgudXNlT3V0T2ZDb3JlR3JhcGg9dHJ1ZQotZ2lyYXBoLnVzZU91dE9mQ29yZU1lc3NhZ2VzPXRydWUKLW1hcHJlZC5tYXAuY2hpbGQuamF2YS5vcHRzPS1YbXgxMDI0bQotbWFwcmVkLnJlZHVjZS5jaGlsZC5qYXZhLm9wdHM9LVhteDEwMjRtCi1naXJhcGgubnVtSW5wdXRUaHJlYWRzPTQKLWdpcmFwaC5udW1Db21wdXRlVGhyZWFkcz00Ci1naXJhcGgubWF4TWVzc2FnZXNJbk1lbW9yeT0xMDAwMDAKZGlmZiAtLWdpdCBhL2hhZG9vcC1ncmVtbGluL2NvbmYvaGFkb29wLWdyeW8ucHJvcGVydGllcyBiL2hhZG9vcC1ncmVtbGluL2NvbmYvaGFkb29wLWdyeW8ucHJvcGVydGllcwppbmRleCBjMTU2YTk4Li4zMTI4NmQ4IDEwMDY0NAotLS0gYS9oYWRvb3AtZ3JlbWxpbi9jb25mL2hhZG9vcC1ncnlvLnByb3BlcnRpZXMKKysrIGIvaGFkb29wLWdyZW1saW4vY29uZi9oYWRvb3AtZ3J5by5wcm9wZXJ0aWVzCkBAIC00MiwyMSArNDIsNSBAQAogIyBzcGFyay5ldmVudExvZy5kaXI9L3RtcC9zcGFyay1ldmVudC1sb2dzCiAjIHNwYXJrLnVpLmtpbGxFbmFibGVkPXRydWUKIAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBHaXJhcGhHcmFwaENvbXB1dGVyIENvbmZpZ3VyYXRpb24gIwotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotZ2lyYXBoLm1pbldvcmtlcnM9MgotZ2lyYXBoLm1heFdvcmtlcnM9MgotZ2lyYXBoLnVzZU91dE9mQ29yZUdyYXBoPXRydWUKLWdpcmFwaC51c2VPdXRPZkNvcmVNZXNzYWdlcz10cnVlCi1tYXByZWR1Y2UubWFwLmphdmEub3B0cz0tWG14MTAyNG0KLW1hcHJlZHVjZS5yZWR1Y2UuamF2YS5vcHRzPS1YbXgxMDI0bQotZ2lyYXBoLm51bUlucHV0VGhyZWFkcz0yCi1naXJhcGgubnVtQ29tcHV0ZVRocmVhZHM9MgotIyBnaXJhcGgubWF4UGFydGl0aW9uc0luTWVtb3J5PTEKLSMgZ2lyYXBoLnVzZXJQYXJ0aXRpb25Db3VudD0yCi0jIyBNYXBSZWR1Y2Ugb2YgR2lyYXBoR3JhcGhDb21wdXRlciAjIwotIyBtYXByZWR1Y2Uuam9iLm1hcHM9MgotIyBtYXByZWR1Y2Uuam9iLnJlZHVjZXM9MQogCiAKZGlmZiAtLWdpdCBhL2hhZG9vcC1ncmVtbGluL2NvbmYvaGFkb29wLXNjcmlwdC5wcm9wZXJ0aWVzIGIvaGFkb29wLWdyZW1saW4vY29uZi9oYWRvb3Atc2NyaXB0LnByb3BlcnRpZXMKaW5kZXggODhiZjZkOS4uMjRkODQ3YiAxMDA2NDQKLS0tIGEvaGFkb29wLWdyZW1saW4vY29uZi9oYWRvb3Atc2NyaXB0LnByb3BlcnRpZXMKKysrIGIvaGFkb29wLWdyZW1saW4vY29uZi9oYWRvb3Atc2NyaXB0LnByb3BlcnRpZXMKQEAgLTM4LDIxICszOCw1IEBACiAjIHNwYXJrLmV2ZW50TG9nLmRpcj0vdG1wL3NwYXJrLWV2ZW50LWxvZ3MKICMgc3BhcmsudWkua2lsbEVuYWJsZWQ9dHJ1ZQogCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIEdpcmFwaEdyYXBoQ29tcHV0ZXIgQ29uZmlndXJhdGlvbiAjCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi1naXJhcGgubWluV29ya2Vycz0yCi1naXJhcGgubWF4V29ya2Vycz0yCi1naXJhcGgudXNlT3V0T2ZDb3JlR3JhcGg9dHJ1ZQotZ2lyYXBoLnVzZU91dE9mQ29yZU1lc3NhZ2VzPXRydWUKLW1hcHJlZHVjZS5tYXAuamF2YS5vcHRzPS1YbXgxMDI0bQotbWFwcmVkdWNlLnJlZHVjZS5qYXZhLm9wdHM9LVhteDEwMjRtCi1naXJhcGgubnVtSW5wdXRUaHJlYWRzPTIKLWdpcmFwaC5udW1Db21wdXRlVGhyZWFkcz0yCi0jIGdpcmFwaC5tYXhQYXJ0aXRpb25zSW5NZW1vcnk9MQotIyBnaXJhcGgudXNlclBhcnRpdGlvbkNvdW50PTIKLSMjIE1hcFJlZHVjZSBvZiBHaXJhcGhHcmFwaENvbXB1dGVyICMjCi0jIG1hcHJlZHVjZS5qb2IubWFwcz0yCi0jIG1hcHJlZHVjZS5qb2IucmVkdWNlcz0xCiAKIApkaWZmIC0tZ2l0IGEvaGFkb29wLWdyZW1saW4vcG9tLnhtbCBiL2hhZG9vcC1ncmVtbGluL3BvbS54bWwKaW5kZXggNWIyZGE0Yi4uZTUxYjVmYyAxMDA2NDQKLS0tIGEvaGFkb29wLWdyZW1saW4vcG9tLnhtbAorKysgYi9oYWRvb3AtZ3JlbWxpbi9wb20ueG1sCkBAIC0yMSw3ICsyMSw3IEBACiAgICAgPHBhcmVudD4KICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS50aW5rZXJwb3A8L2dyb3VwSWQ+CiAgICAgICAgIDxhcnRpZmFjdElkPnRpbmtlcnBvcDwvYXJ0aWZhY3RJZD4KLSAgICAgICAgPHZlcnNpb24+My4zLjExLVNOQVBTSE9UPC92ZXJzaW9uPgorICAgICAgICA8dmVyc2lvbj4zLjQuNy1TTkFQU0hPVDwvdmVyc2lvbj4KICAgICA8L3BhcmVudD4KICAgICA8YXJ0aWZhY3RJZD5oYWRvb3AtZ3JlbWxpbjwvYXJ0aWZhY3RJZD4KICAgICA8bmFtZT5BcGFjaGUgVGlua2VyUG9wIDo6IEhhZG9vcCBHcmVtbGluPC9uYW1lPgpAQCAtNjgsNiArNjgsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+Y29tbW9ucy1jb2RlYzwvYXJ0aWZhY3RJZD4KICAgICAgICAgICAgICAgICA8L2V4Y2x1c2lvbj4KICAgICAgICAgICAgICAgICA8ZXhjbHVzaW9uPgorICAgICAgICAgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLmNvbW1vbnM8L2dyb3VwSWQ+CisgICAgICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPmNvbW1vbnMtY29tcHJlc3M8L2FydGlmYWN0SWQ+CisgICAgICAgICAgICAgICAgPC9leGNsdXNpb24+CisgICAgICAgICAgICAgICAgPGV4Y2x1c2lvbj4KICAgICAgICAgICAgICAgICAgICAgPGdyb3VwSWQ+Y29tLmdvb2dsZS5ndWF2YTwvZ3JvdXBJZD4KICAgICAgICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+Z3VhdmE8L2FydGlmYWN0SWQ+CiAgICAgICAgICAgICAgICAgPC9leGNsdXNpb24+CkBAIC0xMTcsNiArMTIxLDExIEBACiAgICAgICAgICAgICA8dmVyc2lvbj4xLjEuMzwvdmVyc2lvbj4KICAgICAgICAgPC9kZXBlbmRlbmN5PgogICAgICAgICA8ZGVwZW5kZW5jeT4KKyAgICAgICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUuY29tbW9uczwvZ3JvdXBJZD4KKyAgICAgICAgICAgIDxhcnRpZmFjdElkPmNvbW1vbnMtY29tcHJlc3M8L2FydGlmYWN0SWQ+CisgICAgICAgICAgICA8dmVyc2lvbj4xLjE5PC92ZXJzaW9uPgorICAgICAgICA8L2RlcGVuZGVuY3k+CisgICAgICAgIDxkZXBlbmRlbmN5PgogICAgICAgICAgICAgPGdyb3VwSWQ+Y29tLmdvb2dsZS5ndWF2YTwvZ3JvdXBJZD4KICAgICAgICAgICAgIDxhcnRpZmFjdElkPmd1YXZhPC9hcnRpZmFjdElkPgogICAgICAgICAgICAgPHZlcnNpb24+MTYuMC4xPC92ZXJzaW9uPgpAQCAtMTkwLDE0ICsxOTksNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgPC9tYW5pZmVzdEVudHJpZXM+CiAgICAgICAgICAgICAgICAgICAgIDwvYXJjaGl2ZT4KICAgICAgICAgICAgICAgICA8L2NvbmZpZ3VyYXRpb24+Ci0gICAgICAgICAgICAgICAgPGV4ZWN1dGlvbnM+Ci0gICAgICAgICAgICAgICAgICAgIDxleGVjdXRpb24+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8aWQ+dGVzdC1qYXItaXQtdXA8L2lkPgotICAgICAgICAgICAgICAgICAgICAgICAgPGdvYWxzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnb2FsPnRlc3QtamFyPC9nb2FsPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9nb2Fscz4KLSAgICAgICAgICAgICAgICAgICAgPC9leGVjdXRpb24+Ci0gICAgICAgICAgICAgICAgPC9leGVjdXRpb25zPgogICAgICAgICAgICAgPC9wbHVnaW4+CiAgICAgICAgICAgICA8cGx1Z2luPgogICAgICAgICAgICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUubWF2ZW4ucGx1Z2luczwvZ3JvdXBJZD4KQEAgLTI1OSw0ICsyNjAsNCBAQAogICAgICAgICAgICAgPC9wbHVnaW4+CiAgICAgICAgIDwvcGx1Z2lucz4KICAgICA8L2J1aWxkPgotPC9wcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvcHJvamVjdD4KZGlmZiAtLWdpdCBhL2hhZG9vcC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9oYWRvb3AvQ29uc3RhbnRzLmphdmEgYi9oYWRvb3AtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vaGFkb29wL0NvbnN0YW50cy5qYXZhCmluZGV4IDVhNjQzMzQuLjc1MTliOGYgMTAwNjQ0Ci0tLSBhL2hhZG9vcC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9oYWRvb3AvQ29uc3RhbnRzLmphdmEKKysrIGIvaGFkb29wLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2hhZG9vcC9Db25zdGFudHMuamF2YQpAQCAtNTgsNyArNTgsNiBAQAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEdSRU1MSU5fSEFET09QX0pBUlNfSU5fRElTVFJJQlVURURfQ0FDSEUgPSAiZ3JlbWxpbi5oYWRvb3AuamFyc0luRGlzdHJpYnV0ZWRDYWNoZSI7CiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSElEREVOX0cgPSBHcmFwaC5IaWRkZW4uaGlkZSgiZyIpOwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEdSRU1MSU5fSEFET09QX0pPQl9QUkVGSVggPSAiSGFkb29wR3JlbWxpbjogIjsKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBHUkVNTElOX0hBRE9PUF9HSVJBUEhfSk9CX1BSRUZJWCA9ICJIYWRvb3BHcmVtbGluKEdpcmFwaCk6ICI7CiAgICAgLy8gcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgR1JFTUxJTl9IQURPT1BfTUFQX1JFRFVDRV9KT0JfUFJFRklYID0gIkhhZG9vcEdyZW1saW4oTWFwUmVkdWNlKTogIjsKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBHUkVNTElOX0hBRE9PUF9TUEFSS19KT0JfUFJFRklYID0gIkhhZG9vcEdyZW1saW4oU3BhcmspOiAiOwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhBRE9PUF9HUkVNTElOX0xJQlMgPSAiSEFET09QX0dSRU1MSU5fTElCUyI7CmRpZmYgLS1naXQgYS9oYWRvb3AtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vaGFkb29wL3Byb2Nlc3MvY29tcHV0ZXIvdHJhdmVyc2FsL3N0ZXAvc2lkZUVmZmVjdC9IYWRvb3BJb1N0ZXAuamF2YSBiL2hhZG9vcC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9oYWRvb3AvcHJvY2Vzcy9jb21wdXRlci90cmF2ZXJzYWwvc3RlcC9zaWRlRWZmZWN0L0hhZG9vcElvU3RlcC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlOTYyNzYKLS0tIC9kZXYvbnVsbAorKysgYi9oYWRvb3AtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vaGFkb29wL3Byb2Nlc3MvY29tcHV0ZXIvdHJhdmVyc2FsL3N0ZXAvc2lkZUVmZmVjdC9IYWRvb3BJb1N0ZXAuamF2YQpAQCAtMCwwICsxLDE4OCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnByb2Nlc3MuY29tcHV0ZXIudHJhdmVyc2FsLnN0ZXAuc2lkZUVmZmVjdDsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLkNvbnN0YW50czsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuaW8uZ3JhcGhzb24uR3JhcGhTT05JbnB1dEZvcm1hdDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuaW8uZ3JhcGhzb24uR3JhcGhTT05PdXRwdXRGb3JtYXQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLmlvLmdyeW8uR3J5b0lucHV0Rm9ybWF0OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5pby5ncnlvLkdyeW9PdXRwdXRGb3JtYXQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLkdyYXBoRmlsdGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5NZW1vcnk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLmNsb25lLkNsb25lVmVydGV4UHJvZ3JhbTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIudHJhdmVyc2FsLnN0ZXAubWFwLlZlcnRleFByb2dyYW1TdGVwOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuSU87CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguR3JhcGhUcmF2ZXJzYWw7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguR3JhcGhUcmF2ZXJzYWxTb3VyY2U7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLlJlYWRXcml0aW5nOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC51dGlsLlBhcmFtZXRlcnM7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5TdHJpbmdGYWN0b3J5OworCisvKioKKyAqIEFuIE9MQVAgb3JpZW50ZWQgc3RlcCBmb3IgZG9pbmcgSU8gb3BlcmF0aW9ucyB3aXRoIHtAbGluayBHcmFwaFRyYXZlcnNhbFNvdXJjZSNpbyhTdHJpbmcpfSB3aGljaCB1c2VzIHRoZQorICoge0BsaW5rIENsb25lVmVydGV4UHJvZ3JhbX0gZm9yIGl0cyBpbXBsZW1lbnRhdGlvbi4gU3RhbmRhcmQgSGFkb29wIE9MQVAgY29uZmlndXJhdGlvbnMgY2FuIGJlIHBhc3NlZCB1c2luZyB0aGUKKyAqIHtAbGluayBHcmFwaFRyYXZlcnNhbCN3aXRoKFN0cmluZywgT2JqZWN0KX0gc3RlcCBtb2R1bGF0b3IgYXMgYWxsIG9wdGlvbnMgYXNpZGUgZnJvbSB0aG9zZSBpbiB7QGxpbmsgSU99IHdpbGwgYmUKKyAqIHRyYW5zZmVycmVkLgorICoKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqLworcHVibGljIGNsYXNzIEhhZG9vcElvU3RlcCBleHRlbmRzIFZlcnRleFByb2dyYW1TdGVwIGltcGxlbWVudHMgUmVhZFdyaXRpbmcgeworCisgICAgcHJpdmF0ZSBQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBuZXcgUGFyYW1ldGVycygpOworICAgIHByaXZhdGUgTW9kZSBtb2RlID0gTW9kZS5VTlNFVDsKKyAgICBwcml2YXRlIFN0cmluZyBmaWxlOworCisgICAgcHVibGljIEhhZG9vcElvU3RlcChmaW5hbCBUcmF2ZXJzYWwuQWRtaW4gdHJhdmVyc2FsLCBmaW5hbCBTdHJpbmcgZmlsZSkgeworICAgICAgICBzdXBlcih0cmF2ZXJzYWwpOworICAgICAgICB0aGlzLmZpbGUgPSBmaWxlOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIHNldE1vZGUoZmluYWwgTW9kZSBtb2RlKSB7CisgICAgICAgIHRoaXMubW9kZSA9IG1vZGU7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIE1vZGUgZ2V0TW9kZSgpIHsKKyAgICAgICAgcmV0dXJuIG1vZGU7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFN0cmluZyBnZXRGaWxlKCkgeworICAgICAgICByZXR1cm4gZmlsZTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBjb25maWd1cmUoZmluYWwgT2JqZWN0Li4uIGtleVZhbHVlcykgeworICAgICAgICB0aGlzLnBhcmFtZXRlcnMuc2V0KG51bGwsIGtleVZhbHVlcyk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVycygpIHsKKyAgICAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgcmV0dXJuIFN0cmluZ0ZhY3Rvcnkuc3RlcFN0cmluZyh0aGlzLCBuZXcgR3JhcGhGaWx0ZXIodGhpcy5jb21wdXRlcikpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBDbG9uZVZlcnRleFByb2dyYW0gZ2VuZXJhdGVQcm9ncmFtKGZpbmFsIEdyYXBoIGdyYXBoLCBmaW5hbCBNZW1vcnkgbWVtb3J5KSB7CisgICAgICAgIGlmIChtb2RlID09IE1vZGUuVU5TRVQpCisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJJTyBtb2RlIHdhcyBub3Qgc2V0IHRvIHJlYWQoKSBvciB3cml0ZSgpIik7CisgICAgICAgIGVsc2UgaWYgKG1vZGUgPT0gTW9kZS5SRUFESU5HKQorICAgICAgICAgICAgY29uZmlndXJlRm9yUmVhZChncmFwaCk7CisgICAgICAgIGVsc2UgaWYgKG1vZGUgPT0gTW9kZS5XUklUSU5HKQorICAgICAgICAgICAgY29uZmlndXJlRm9yV3JpdGUoZ3JhcGgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJJbnZhbGlkIFJlYWRXcml0aW5nLk1vZGUgY29uZmlndXJlZCBpbiBJb1N0ZXA6ICIgKyBtb2RlLm5hbWUoKSk7CisKKyAgICAgICAgcmV0dXJuIENsb25lVmVydGV4UHJvZ3JhbS5idWlsZCgpLmNyZWF0ZShncmFwaCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIEhhZG9vcElvU3RlcCBjbG9uZSgpIHsKKyAgICAgICAgcmV0dXJuIChIYWRvb3BJb1N0ZXApIHN1cGVyLmNsb25lKCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKKyAgICAgICAgcmV0dXJuIHN1cGVyLmhhc2hDb2RlKCk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGNvbmZpZ3VyZUZvclJlYWQoZmluYWwgR3JhcGggZ3JhcGgpIHsKKyAgICAgICAgZmluYWwgU3RyaW5nIGlucHV0Rm9ybWF0Q2xhc3NOYW1lT3JLZXl3b3JkID0gcGFyYW1ldGVycy5nZXQoSU8ucmVhZGVyLCB0aGlzOjpkZXRlY3RSZWFkZXIpLmdldCgwKTsKKyAgICAgICAgU3RyaW5nIGlucHV0Rm9ybWF0Q2xhc3NOYW1lOworICAgICAgICBpZiAoaW5wdXRGb3JtYXRDbGFzc05hbWVPcktleXdvcmQuZXF1YWxzKElPLmdyYXBoc29uKSkKKyAgICAgICAgICAgIGlucHV0Rm9ybWF0Q2xhc3NOYW1lID0gR3JhcGhTT05JbnB1dEZvcm1hdC5jbGFzcy5nZXROYW1lKCk7CisgICAgICAgIGVsc2UgaWYgKGlucHV0Rm9ybWF0Q2xhc3NOYW1lT3JLZXl3b3JkLmVxdWFscyhJTy5ncnlvKSkKKyAgICAgICAgICAgIGlucHV0Rm9ybWF0Q2xhc3NOYW1lID0gR3J5b0lucHV0Rm9ybWF0LmNsYXNzLmdldE5hbWUoKTsKKyAgICAgICAgZWxzZSBpZiAoaW5wdXRGb3JtYXRDbGFzc05hbWVPcktleXdvcmQuZXF1YWxzKElPLmdyYXBobWwpKQorICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiR3JhcGhNTCBpcyBub3QgYSBzdXBwb3J0ZWQgZmlsZSBmb3JtYXQgZm9yIE9MQVAiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaW5wdXRGb3JtYXRDbGFzc05hbWUgPSBpbnB1dEZvcm1hdENsYXNzTmFtZU9yS2V5d29yZDsKKworICAgICAgICBncmFwaC5jb25maWd1cmF0aW9uKCkuc2V0UHJvcGVydHkoQ29uc3RhbnRzLkdSRU1MSU5fSEFET09QX0dSQVBIX1JFQURFUiwgaW5wdXRGb3JtYXRDbGFzc05hbWUpOworICAgICAgICBncmFwaC5jb25maWd1cmF0aW9uKCkuc2V0UHJvcGVydHkoQ29uc3RhbnRzLkdSRU1MSU5fSEFET09QX0lOUFVUX0xPQ0FUSU9OLCBmaWxlKTsKKworICAgICAgICBhZGRQYXJhbWV0ZXJzVG9Db25maWd1cmF0aW9uKGdyYXBoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgY29uZmlndXJlRm9yV3JpdGUoZmluYWwgR3JhcGggZ3JhcGgpIHsKKyAgICAgICAgZmluYWwgU3RyaW5nIG91dHB1dEZvcm1hdENsYXNzTmFtZU9yS2V5d29yZCA9IHBhcmFtZXRlcnMuZ2V0KElPLndyaXRlciwgdGhpczo6ZGV0ZWN0V3JpdGVyKS5nZXQoMCk7CisgICAgICAgIFN0cmluZyBvdXRwdXRGb3JtYXRDbGFzc05hbWU7CisgICAgICAgIGlmIChvdXRwdXRGb3JtYXRDbGFzc05hbWVPcktleXdvcmQuZXF1YWxzKElPLmdyYXBoc29uKSkKKyAgICAgICAgICAgIG91dHB1dEZvcm1hdENsYXNzTmFtZSA9IEdyYXBoU09OT3V0cHV0Rm9ybWF0LmNsYXNzLmdldE5hbWUoKTsKKyAgICAgICAgZWxzZSBpZiAob3V0cHV0Rm9ybWF0Q2xhc3NOYW1lT3JLZXl3b3JkLmVxdWFscyhJTy5ncnlvKSkKKyAgICAgICAgICAgIG91dHB1dEZvcm1hdENsYXNzTmFtZSA9IEdyeW9PdXRwdXRGb3JtYXQuY2xhc3MuZ2V0TmFtZSgpOworICAgICAgICBlbHNlIGlmIChvdXRwdXRGb3JtYXRDbGFzc05hbWVPcktleXdvcmQuZXF1YWxzKElPLmdyYXBobWwpKQorICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiR3JhcGhNTCBpcyBub3QgYSBzdXBwb3J0ZWQgZmlsZSBmb3JtYXQgZm9yIE9MQVAiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgb3V0cHV0Rm9ybWF0Q2xhc3NOYW1lID0gb3V0cHV0Rm9ybWF0Q2xhc3NOYW1lT3JLZXl3b3JkOworICAgICAgICAKKyAgICAgICAgZ3JhcGguY29uZmlndXJhdGlvbigpLnNldFByb3BlcnR5KENvbnN0YW50cy5HUkVNTElOX0hBRE9PUF9HUkFQSF9XUklURVIsIG91dHB1dEZvcm1hdENsYXNzTmFtZSk7CisgICAgICAgIGdyYXBoLmNvbmZpZ3VyYXRpb24oKS5zZXRQcm9wZXJ0eShDb25zdGFudHMuR1JFTUxJTl9IQURPT1BfT1VUUFVUX0xPQ0FUSU9OLCBmaWxlKTsKKworICAgICAgICBhZGRQYXJhbWV0ZXJzVG9Db25maWd1cmF0aW9uKGdyYXBoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBPdmVyd3JpdGVzIGFsbCBjb25maWd1cmF0aW9ucyBmcm9tIHZhbHVlcyBwYXNzZWQgdXNpbmcge0BsaW5rIEdyYXBoVHJhdmVyc2FsI3dpdGgoU3RyaW5nLCBPYmplY3QpfS4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgYWRkUGFyYW1ldGVyc1RvQ29uZmlndXJhdGlvbihmaW5hbCBHcmFwaCBncmFwaCkgeworICAgICAgICBwYXJhbWV0ZXJzLmdldFJhdyhJTy53cml0ZXIsIElPLndyaXRlciwgSU8ucmVnaXN0cnkpLmVudHJ5U2V0KCkuZm9yRWFjaChrdiAtPiB7CisgICAgICAgICAgICBpZiAoa3YuZ2V0VmFsdWUoKS5zaXplKCkgPT0gMSkKKyAgICAgICAgICAgICAgICBncmFwaC5jb25maWd1cmF0aW9uKCkuc2V0UHJvcGVydHkoa3YuZ2V0S2V5KCkudG9TdHJpbmcoKSwga3YuZ2V0VmFsdWUoKS5nZXQoMCkpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gcmVzZXQgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiB3aXRoIHRoZSBmaXJzdCBvcHRpb24gdGhlbiBhZGQgdG8gdGhhdCBmb3IgTGlzdCBvcHRpb25zCisgICAgICAgICAgICAgICAgZm9yIChpbnQgaXggPSAwOyBpeCA8IGt2LmdldFZhbHVlKCkuc2l6ZSgpOyBpeCsrKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChpeCA9PSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgZ3JhcGguY29uZmlndXJhdGlvbigpLnNldFByb3BlcnR5KGt2LmdldEtleSgpLnRvU3RyaW5nKCksIGt2LmdldFZhbHVlKCkuZ2V0KGl4KSk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGdyYXBoLmNvbmZpZ3VyYXRpb24oKS5hZGRQcm9wZXJ0eShrdi5nZXRLZXkoKS50b1N0cmluZygpLCBrdi5nZXRWYWx1ZSgpLmdldChpeCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBTdHJpbmcgZGV0ZWN0UmVhZGVyKCkgeworICAgICAgICBpZiAoZmlsZS5lbmRzV2l0aCgiLmtyeW8iKSkKKyAgICAgICAgICAgIHJldHVybiBHcnlvSW5wdXRGb3JtYXQuY2xhc3MuZ2V0TmFtZSgpOworICAgICAgICBlbHNlIGlmIChmaWxlLmVuZHNXaXRoKCIuanNvbiIpKQorICAgICAgICAgICAgcmV0dXJuIEdyYXBoU09OSW5wdXRGb3JtYXQuY2xhc3MuZ2V0TmFtZSgpOworICAgICAgICBlbHNlIGlmIChmaWxlLmVuZHNXaXRoKCIueG1sIikpCisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJHcmFwaE1MIGlzIG5vdCBhIHN1cHBvcnRlZCBmaWxlIGZvcm1hdCBmb3IgT0xBUCIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJDb3VsZCBub3QgZGV0ZWN0IHRoZSBmaWxlIGZvcm1hdCAtIHNwZWNpZnkgdGhlIHJlYWRlciBleHBsaWNpdGx5IG9yIHJlbmFtZSBmaWxlIHdpdGggYSBzdGFuZGFyZCBleHRlbnNpb24iKTsKKyAgICB9CisKKyAgICBwcml2YXRlIFN0cmluZyBkZXRlY3RXcml0ZXIoKSB7CisgICAgICAgIGlmIChmaWxlLmVuZHNXaXRoKCIua3J5byIpKQorICAgICAgICAgICAgcmV0dXJuIEdyeW9PdXRwdXRGb3JtYXQuY2xhc3MuZ2V0TmFtZSgpOworICAgICAgICBlbHNlIGlmIChmaWxlLmVuZHNXaXRoKCIuanNvbiIpKQorICAgICAgICAgICAgcmV0dXJuIEdyYXBoU09OT3V0cHV0Rm9ybWF0LmNsYXNzLmdldE5hbWUoKTsKKyAgICAgICAgZWxzZSBpZiAoZmlsZS5lbmRzV2l0aCgiLnhtbCIpKQorICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiR3JhcGhNTCBpcyBub3QgYSBzdXBwb3J0ZWQgZmlsZSBmb3JtYXQgZm9yIE9MQVAiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiQ291bGQgbm90IGRldGVjdCB0aGUgZmlsZSBmb3JtYXQgLSBzcGVjaWZ5IHRoZSByZWFkZXIgZXhwbGljaXRseSBvciByZW5hbWUgZmlsZSB3aXRoIGEgc3RhbmRhcmQgZXh0ZW5zaW9uIik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvaGFkb29wLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2hhZG9vcC9wcm9jZXNzL2NvbXB1dGVyL3RyYXZlcnNhbC9zdHJhdGVneS9IYWRvb3BJb1N0cmF0ZWd5LmphdmEgYi9oYWRvb3AtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vaGFkb29wL3Byb2Nlc3MvY29tcHV0ZXIvdHJhdmVyc2FsL3N0cmF0ZWd5L0hhZG9vcElvU3RyYXRlZ3kuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjE0NzQ1Ci0tLSAvZGV2L251bGwKKysrIGIvaGFkb29wLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2hhZG9vcC9wcm9jZXNzL2NvbXB1dGVyL3RyYXZlcnNhbC9zdHJhdGVneS9IYWRvb3BJb1N0cmF0ZWd5LmphdmEKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiAgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5wcm9jZXNzLmNvbXB1dGVyLnRyYXZlcnNhbC5zdHJhdGVneTsKKworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnByb2Nlc3MuY29tcHV0ZXIudHJhdmVyc2FsLnN0ZXAuc2lkZUVmZmVjdC5IYWRvb3BJb1N0ZXA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLmNsb25lLkNsb25lVmVydGV4UHJvZ3JhbTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIudHJhdmVyc2FsLnN0ZXAubWFwLlRyYXZlcnNhbFZlcnRleFByb2dyYW1TdGVwOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwuc3RlcC5tYXAuVmVydGV4UHJvZ3JhbVN0ZXA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5TdGVwOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsU3RyYXRlZ3k7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLlJlYWRXcml0aW5nOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5zaWRlRWZmZWN0LklvU3RlcDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LkFic3RyYWN0VHJhdmVyc2FsU3RyYXRlZ3k7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS52ZXJpZmljYXRpb24uVmVyaWZpY2F0aW9uRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5UcmF2ZXJzYWxIZWxwZXI7CisKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKK2ltcG9ydCBqYXZhLnV0aWwuU2V0OworCisvKioKKyAqIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIHRoZSB7QGxpbmsgSW9TdGVwfSBpcyBhIHNpbmdsZSB0aHJlYWRlZCBvcGVyYXRpb24gYW5kIGRvZXNuJ3QgcHJvcGVybHkgdGFrZSBpbnRvCisgKiBhY2NvdW50IHRoZSBtZXRob2QgYnkgd2hpY2ggT0xBUCByZWFkL3dyaXRlcyB0YWtlIHBsYWNlIHdpdGggSGFkb29wLiBUaGlzIHN0cmF0ZWd5IHJlbW92ZXMgdGhhdCBzdGVwIGFuZCByZXBsYWNlcworICogaXQgd2l0aCB0aGUge0BsaW5rIEhhZG9vcElvU3RlcH0gd2hpY2ggaXMgYSB7QGxpbmsgVmVydGV4UHJvZ3JhbVN0ZXB9IHRoYXQgdXNlcyB0aGUge0BsaW5rIENsb25lVmVydGV4UHJvZ3JhbX0gdG8KKyAqIGV4ZWN1dGUgdGhlIElPIG9wZXJhdGlvbiBpbiBhbiBPTEFQIGZhc2hpb24uCisgKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgZmluYWwgY2xhc3MgSGFkb29wSW9TdHJhdGVneSBleHRlbmRzIEFic3RyYWN0VHJhdmVyc2FsU3RyYXRlZ3k8VHJhdmVyc2FsU3RyYXRlZ3kuUHJvdmlkZXJPcHRpbWl6YXRpb25TdHJhdGVneT4KKyAgICAgICAgaW1wbGVtZW50cyBUcmF2ZXJzYWxTdHJhdGVneS5Qcm92aWRlck9wdGltaXphdGlvblN0cmF0ZWd5IHsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIEhhZG9vcElvU3RyYXRlZ3kgSU5TVEFOQ0UgPSBuZXcgSGFkb29wSW9TdHJhdGVneSgpOworCisgICAgcHJpdmF0ZSBIYWRvb3BJb1N0cmF0ZWd5KCkgeworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIGFwcGx5KGZpbmFsIFRyYXZlcnNhbC5BZG1pbjw/LCA/PiB0cmF2ZXJzYWwpIHsKKyAgICAgICAgLy8gc2luY2UgaGFkb29wZ3JhcGggY2FuJ3QgYmUgbW9kaWZpZWQgd2UgY2FuJ3QgdHJ5IHRvIHVzZSB0aGUgZXhpc3RpbmcgSW9TdGVwIGZvciBzdGFuZGFyZCBwcm9jZXNzaW5nCisgICAgICAgIC8vIHdpdGhvdXQgZ3JhcGhjb21wdXRlcgorICAgICAgICBpZiAodHJhdmVyc2FsLmdldFN0YXJ0U3RlcCgpIGluc3RhbmNlb2YgSW9TdGVwKQorICAgICAgICAgICAgdGhyb3cgbmV3IFZlcmlmaWNhdGlvbkV4Y2VwdGlvbigiSGFkb29wR3JhcGggcmVxdWlyZXMgYSBHcmFwaENvbXB1dGVyIGZvciBpbygpIHN0ZXAiLCB0cmF2ZXJzYWwpOworCisgICAgICAgIC8vIFZlcnRleFByb2dyYW1TdHJhdGVneSBzaG91bGQgd3JhcCB1cCB0aGUgSW9TdGVwIGluIGEgVHJhdmVyc2FsVmVydGV4UHJvZ3JhbVN0ZXAuIHVzZSB0aGF0IHRvIGdyYWIgdGhlCisgICAgICAgIC8vIEdyYXBoQ29tcHV0ZXIgdGhhdCB3YXMgaW5qZWN0ZWQgaW4gdGhlcmUgYW5kIHB1c2ggdGhhdCBpbiB0byB0aGUgSGFkb29wSW9TdGVwLiB0aGlzIHN0ZXAgcGF0dGVybiBtYXRjaAorICAgICAgICAvLyBpcyBmYWlybHkgc3BlY2lmaWMgYW5kIHNpbmNlIHlvdSByZWFsbHkgY2FuJ3QgY2hhaW4gdG9nZXRoZXIgc3RlcHMgYWZ0ZXIgaW8oKSB0aGlzIGFwcHJvYWNoIHNob3VsZCB3b3JrCisgICAgICAgIGlmICh0cmF2ZXJzYWwuZ2V0U3RhcnRTdGVwKCkgaW5zdGFuY2VvZiBUcmF2ZXJzYWxWZXJ0ZXhQcm9ncmFtU3RlcCkgeworICAgICAgICAgICAgZmluYWwgVHJhdmVyc2FsVmVydGV4UHJvZ3JhbVN0ZXAgdHZwID0gKFRyYXZlcnNhbFZlcnRleFByb2dyYW1TdGVwKSB0cmF2ZXJzYWwuZ2V0U3RhcnRTdGVwKCk7CisgICAgICAgICAgICBpZiAodHZwLmNvbXB1dGVyVHJhdmVyc2FsLmdldCgpLmdldFN0YXJ0U3RlcCgpIGluc3RhbmNlb2YgUmVhZFdyaXRpbmcpIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBSZWFkV3JpdGluZyByZWFkV3JpdGluZyA9IChSZWFkV3JpdGluZykgdHZwLmNvbXB1dGVyVHJhdmVyc2FsLmdldCgpLmdldFN0YXJ0U3RlcCgpOworICAgICAgICAgICAgICAgIGZpbmFsIEhhZG9vcElvU3RlcCBoYWRvb3BJb1N0ZXAgPSBuZXcgSGFkb29wSW9TdGVwKHRyYXZlcnNhbCwgcmVhZFdyaXRpbmcuZ2V0RmlsZSgpKTsKKyAgICAgICAgICAgICAgICBoYWRvb3BJb1N0ZXAuc2V0TW9kZShyZWFkV3JpdGluZy5nZXRNb2RlKCkpOworICAgICAgICAgICAgICAgIGhhZG9vcElvU3RlcC5zZXRDb21wdXRlcih0dnAuZ2V0Q29tcHV0ZXIoKSk7CisgICAgICAgICAgICAgICAgcmVhZFdyaXRpbmcuZ2V0UGFyYW1ldGVycygpLmdldFJhdygpLmZvckVhY2goKGtleSwgdmFsdWUpIC0+IHZhbHVlLmZvckVhY2godiAtPiBoYWRvb3BJb1N0ZXAuY29uZmlndXJlKGtleSwgdikpKTsKKworICAgICAgICAgICAgICAgIFRyYXZlcnNhbEhlbHBlci5yZXBsYWNlU3RlcCh0dnAsIGhhZG9vcElvU3RlcCwgdHJhdmVyc2FsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgSGFkb29wSW9TdHJhdGVneSBpbnN0YW5jZSgpIHsKKyAgICAgICAgcmV0dXJuIElOU1RBTkNFOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2hhZG9vcC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9oYWRvb3Avc3RydWN0dXJlL0hhZG9vcENvbmZpZ3VyYXRpb24uamF2YSBiL2hhZG9vcC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9oYWRvb3Avc3RydWN0dXJlL0hhZG9vcENvbmZpZ3VyYXRpb24uamF2YQppbmRleCA5ZTMxMjI1Li5hODEyNWVhIDEwMDY0NAotLS0gYS9oYWRvb3AtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vaGFkb29wL3N0cnVjdHVyZS9IYWRvb3BDb25maWd1cmF0aW9uLmphdmEKKysrIGIvaGFkb29wLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2hhZG9vcC9zdHJ1Y3R1cmUvSGFkb29wQ29uZmlndXJhdGlvbi5qYXZhCkBAIC05OCwzMCArOTgsNiBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgLyoqCi0gICAgICogQGRlcHJlY2F0ZWQgQXMgb2YgcmVsZWFzZSAzLjIuMCwgcmVwbGFjZWQgYnkge0BsaW5rIEhhZG9vcENvbmZpZ3VyYXRpb24jZ2V0R3JhcGhSZWFkZXIoKX0uCi0gICAgICovCi0gICAgQERlcHJlY2F0ZWQKLSAgICBwdWJsaWMgQ2xhc3M8SW5wdXRGb3JtYXQ8TnVsbFdyaXRhYmxlLCBWZXJ0ZXhXcml0YWJsZT4+IGdldEdyYXBoSW5wdXRGb3JtYXQoKSB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICByZXR1cm4gKENsYXNzKSBDbGFzcy5mb3JOYW1lKHRoaXMuZ2V0U3RyaW5nKENvbnN0YW50cy5HUkVNTElOX0hBRE9PUF9HUkFQSF9SRUFERVIpKTsKLSAgICAgICAgfSBjYXRjaCAoZmluYWwgQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbihlLmdldE1lc3NhZ2UoKSwgZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBAZGVwcmVjYXRlZCBBcyBvZiByZWxlYXNlIDMuMi4wLCByZXBsYWNlZCBieSB7QGxpbmsgSGFkb29wQ29uZmlndXJhdGlvbiNnZXRHcmFwaFdyaXRlcigpfS4KLSAgICAgKi8KLSAgICBARGVwcmVjYXRlZAotICAgIHB1YmxpYyBDbGFzczxPdXRwdXRGb3JtYXQ8TnVsbFdyaXRhYmxlLCBWZXJ0ZXhXcml0YWJsZT4+IGdldEdyYXBoT3V0cHV0Rm9ybWF0KCkgewotICAgICAgICB0cnkgewotICAgICAgICAgICAgcmV0dXJuIChDbGFzcykgQ2xhc3MuZm9yTmFtZSh0aGlzLmdldFN0cmluZyhDb25zdGFudHMuR1JFTUxJTl9IQURPT1BfR1JBUEhfV1JJVEVSKSk7Ci0gICAgICAgIH0gY2F0Y2ggKGZpbmFsIENsYXNzTm90Rm91bmRFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oZS5nZXRNZXNzYWdlKCksIGUpOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgcHVibGljIFN0cmluZyBnZXRJbnB1dExvY2F0aW9uKCkgewogICAgICAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmcoQ29uc3RhbnRzLkdSRU1MSU5fSEFET09QX0lOUFVUX0xPQ0FUSU9OKTsKICAgICB9CmRpZmYgLS1naXQgYS9oYWRvb3AtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vaGFkb29wL3N0cnVjdHVyZS9IYWRvb3BHcmFwaC5qYXZhIGIvaGFkb29wLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2hhZG9vcC9zdHJ1Y3R1cmUvSGFkb29wR3JhcGguamF2YQppbmRleCA3MmVlZTczLi45ZWMwY2ZkIDEwMDY0NAotLS0gYS9oYWRvb3AtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vaGFkb29wL3N0cnVjdHVyZS9IYWRvb3BHcmFwaC5qYXZhCisrKyBiL2hhZG9vcC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9oYWRvb3Avc3RydWN0dXJlL0hhZG9vcEdyYXBoLmphdmEKQEAgLTI0LDkgKzI0LDExIEBACiBpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmNvbmZpZ3VyYXRpb24uUHJvcGVydGllc0NvbmZpZ3VyYXRpb247CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3AuQ29uc3RhbnRzOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnByb2Nlc3MuY29tcHV0ZXIuQWJzdHJhY3RIYWRvb3BHcmFwaENvbXB1dGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnByb2Nlc3MuY29tcHV0ZXIudHJhdmVyc2FsLnN0cmF0ZWd5LkhhZG9vcElvU3RyYXRlZ3k7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLmlvLkhhZG9vcEVkZ2VJdGVyYXRvcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuaW8uSGFkb29wVmVydGV4SXRlcmF0b3I7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLkdyYXBoQ29tcHV0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWxTdHJhdGVnaWVzOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkVkZ2U7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGg7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVHJhbnNhY3Rpb247CkBAIC02OSwyMSArNzEsNiBAQAogICAgICAgICByZWFzb24gPSAiSGFkb29wLUdyZW1saW4gaXMgT0xBUC1vcmllbnRlZCBhbmQgZm9yIE9MVFAgb3BlcmF0aW9ucywgbGluZWFyLXNjYW4gam9pbnMgYXJlIHJlcXVpcmVkLiBUaGlzIHBhcnRpY3VsYXIgdGVzdHMgdGFrZXMgbWFueSBtaW51dGVzIHRvIGV4ZWN1dGUuIiwKICAgICAgICAgY29tcHV0ZXJzID0geyJBTEwifSkKIEBHcmFwaC5PcHRPdXQoCi0gICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5NYXRjaFRlc3QkVHJhdmVyc2FscyIsCi0gICAgICAgIG1ldGhvZCA9ICJnX1ZfbWF0Y2hYYV9rbm93c19iX19jX2tub3dzX2JYIiwKLSAgICAgICAgcmVhc29uID0gIkdpcmFwaCBkb2VzIGEgaGFyZCBraWxsIG9uIGZhaWx1cmUgYW5kIHN0b3BzIHRocmVhZHMgd2hpY2ggc3RvcHMgdGVzdCBjYXNlcy4gRXhjZXB0aW9uIGhhbmRsaW5nIHNlbWFudGljcyBhcmUgY29ycmVjdCB0aG91Z2guIiwKLSAgICAgICAgY29tcHV0ZXJzID0geyJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmdpcmFwaC5wcm9jZXNzLmNvbXB1dGVyLkdpcmFwaEdyYXBoQ29tcHV0ZXIifSkKLUBHcmFwaC5PcHRPdXQoCi0gICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5NYXRjaFRlc3QkVHJhdmVyc2FscyIsCi0gICAgICAgIG1ldGhvZCA9ICJnX1ZfbWF0Y2hYYV9jcmVhdGVkX2JfX2NfY3JlYXRlZF9iWF9zZWxlY3RYYV9iX2NYX2J5WG5hbWVYIiwKLSAgICAgICAgcmVhc29uID0gIkdpcmFwaCBkb2VzIGEgaGFyZCBraWxsIG9uIGZhaWx1cmUgYW5kIHN0b3BzIHRocmVhZHMgd2hpY2ggc3RvcHMgdGVzdCBjYXNlcy4gRXhjZXB0aW9uIGhhbmRsaW5nIHNlbWFudGljcyBhcmUgY29ycmVjdCB0aG91Z2guIiwKLSAgICAgICAgY29tcHV0ZXJzID0geyJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmdpcmFwaC5wcm9jZXNzLmNvbXB1dGVyLkdpcmFwaEdyYXBoQ29tcHV0ZXIifSkKLUBHcmFwaC5PcHRPdXQoCi0gICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5NYXRjaFRlc3QkVHJhdmVyc2FscyIsCi0gICAgICAgIG1ldGhvZCA9ICJnX1Zfb3V0X2FzWGNYX21hdGNoWGJfa25vd3NfYV9fY19jcmVhdGVkX2VYX3NlbGVjdFhjWCIsCi0gICAgICAgIHJlYXNvbiA9ICJHaXJhcGggZG9lcyBhIGhhcmQga2lsbCBvbiBmYWlsdXJlIGFuZCBzdG9wcyB0aHJlYWRzIHdoaWNoIHN0b3BzIHRlc3QgY2FzZXMuIEV4Y2VwdGlvbiBoYW5kbGluZyBzZW1hbnRpY3MgYXJlIGNvcnJlY3QgdGhvdWdoLiIsCi0gICAgICAgIGNvbXB1dGVycyA9IHsib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5naXJhcGgucHJvY2Vzcy5jb21wdXRlci5HaXJhcGhHcmFwaENvbXB1dGVyIn0pCi1AR3JhcGguT3B0T3V0KAogICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuQ291bnRUZXN0JFRyYXZlcnNhbHMiLAogICAgICAgICBtZXRob2QgPSAiZ19WX2JvdGhfYm90aF9jb3VudCIsCiAgICAgICAgIHJlYXNvbiA9ICJIYWRvb3AtR3JlbWxpbiBpcyBPTEFQLW9yaWVudGVkIGFuZCBmb3IgT0xUUCBvcGVyYXRpb25zLCBsaW5lYXItc2NhbiBqb2lucyBhcmUgcmVxdWlyZWQuIFRoaXMgcGFydGljdWxhciB0ZXN0cyB0YWtlcyBtYW55IG1pbnV0ZXMgdG8gZXhlY3V0ZS4iLApAQCAtMTQ0LDcgKzEzMSw3IEBACiAgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWxJbnRlcnJ1cHRpb25Db21wdXRlclRlc3QiLAogICAgICAgICBtZXRob2QgPSAiKiIsCiAgICAgICAgIHJlYXNvbiA9ICJUaGlzIHRlc3QgbWFrZXMgdXNlIG9mIGEgc2lkZUVmZmVjdCB0byBlbmZvcmNlIHdoZW4gYSB0aHJlYWQgaW50ZXJydXB0aW9uIGlzIHRyaWdnZXJlZCBhbmQgdGh1cyBpc24ndCBhcHBsaWNhYmxlIHRvIEhhZG9vcEdyYXBoIiwKLSAgICAgICAgY29tcHV0ZXJzID0geyJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNwYXJrLnByb2Nlc3MuY29tcHV0ZXIuU3BhcmtHcmFwaENvbXB1dGVyIiwgIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ2lyYXBoLnByb2Nlc3MuY29tcHV0ZXIuR2lyYXBoR3JhcGhDb21wdXRlciJ9KQorICAgICAgICBjb21wdXRlcnMgPSB7Im9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3BhcmsucHJvY2Vzcy5jb21wdXRlci5TcGFya0dyYXBoQ29tcHV0ZXIifSkKIEBHcmFwaC5PcHRPdXQoCiAgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5NYXRjaFRlc3QkQ291bnRNYXRjaFRyYXZlcnNhbHMiLAogICAgICAgICBtZXRob2QgPSAiZ19WX21hdGNoWGFfZm9sbG93ZWRCeV9jb3VudF9pc1hndFgxMFhYX2JfX2FfMGZvbGxvd2VkQnlfY291bnRfaXNYZ3RYMTBYWF9iWF9jb3VudCIsCkBAIC0xNTUsNiArMTQyLDIyIEBACiAgICAgICAgIG1ldGhvZCA9ICJnX1ZfbWF0Y2hYYV9mb2xsb3dlZEJ5X2NvdW50X2lzWGd0WDEwWFhfYl9fYV8wZm9sbG93ZWRCeV9jb3VudF9pc1hndFgxMFhYX2JYX2NvdW50IiwKICAgICAgICAgcmVhc29uID0gIkhhZG9vcC1HcmVtbGluIGlzIE9MQVAtb3JpZW50ZWQgYW5kIGZvciBPTFRQIG9wZXJhdGlvbnMsIGxpbmVhci1zY2FuIGpvaW5zIGFyZSByZXF1aXJlZC4gVGhpcyBwYXJ0aWN1bGFyIHRlc3RzIHRha2VzIG1hbnkgbWludXRlcyB0byBleGVjdXRlLiIsCiAgICAgICAgIGNvbXB1dGVycyA9IHsiQUxMIn0pCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuUmVhZFRlc3QkVHJhdmVyc2FscyIsCisgICAgICAgIG1ldGhvZCA9ICJnX2lvX3JlYWRYeG1sWCIsCisgICAgICAgIHJlYXNvbiA9ICJIYWRvb3AtR3JlbWxpbiBkb2VzIG5vdCBzdXBwb3J0IHJlYWRzL3dyaXRlcyB3aXRoIEdyYXBoTUwuIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5SZWFkVGVzdCRUcmF2ZXJzYWxzIiwKKyAgICAgICAgbWV0aG9kID0gImdfaW9fcmVhZF93aXRoWHJlYWRlcl9ncmFwaG1sWCIsCisgICAgICAgIHJlYXNvbiA9ICJIYWRvb3AtR3JlbWxpbiBkb2VzIG5vdCBzdXBwb3J0IHJlYWRzL3dyaXRlcyB3aXRoIEdyYXBoTUwuIikKK0BHcmFwaC5PcHRPdXQoCisgICAgICAgIHRlc3QgPSAib3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5Xcml0ZVRlc3QkVHJhdmVyc2FscyIsCisgICAgICAgIG1ldGhvZCA9ICJnX2lvX3dyaXRlWHhtbFgiLAorICAgICAgICByZWFzb24gPSAiSGFkb29wLUdyZW1saW4gZG9lcyBub3Qgc3VwcG9ydCByZWFkcy93cml0ZXMgd2l0aCBHcmFwaE1MLiIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuV3JpdGVUZXN0JFRyYXZlcnNhbHMiLAorICAgICAgICBtZXRob2QgPSAiZ19pb193cml0ZV93aXRoWHdyaXRlcl9ncmFwaG1sWCIsCisgICAgICAgIHJlYXNvbiA9ICJIYWRvb3AtR3JlbWxpbiBkb2VzIG5vdCBzdXBwb3J0IHJlYWRzL3dyaXRlcyB3aXRoIEdyYXBoTUwuIikKIHB1YmxpYyBmaW5hbCBjbGFzcyBIYWRvb3BHcmFwaCBpbXBsZW1lbnRzIEdyYXBoIHsKIAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgTG9nZ2VyIExPR0dFUiA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKEhhZG9vcEdyYXBoLmNsYXNzKTsKQEAgLTE2Myw2ICsxNjYsMTIgQEAKICAgICAgICAgdGhpcy5zZXRQcm9wZXJ0eShHcmFwaC5HUkFQSCwgSGFkb29wR3JhcGguY2xhc3MuZ2V0TmFtZSgpKTsKICAgICB9fTsKIAorICAgIHN0YXRpYyB7CisgICAgICAgIFRyYXZlcnNhbFN0cmF0ZWdpZXMuR2xvYmFsQ2FjaGUucmVnaXN0ZXJTdHJhdGVnaWVzKEhhZG9vcEdyYXBoLmNsYXNzLAorICAgICAgICAgICAgICAgIFRyYXZlcnNhbFN0cmF0ZWdpZXMuR2xvYmFsQ2FjaGUuZ2V0U3RyYXRlZ2llcyhHcmFwaC5jbGFzcykuY2xvbmUoKS5hZGRTdHJhdGVnaWVzKAorICAgICAgICAgICAgICAgICAgICAgICAgSGFkb29wSW9TdHJhdGVneS5pbnN0YW5jZSgpKSk7CisgICAgfQorCiAgICAgcHJvdGVjdGVkIGZpbmFsIEhhZG9vcENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKIAogICAgIHByaXZhdGUgSGFkb29wR3JhcGgoZmluYWwgQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKSB7CmRpZmYgLS1naXQgYS9oYWRvb3AtZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vaGFkb29wL0hhZG9vcEdyYXBoUHJvdmlkZXIuamF2YSBiL2hhZG9vcC1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9oYWRvb3AvSGFkb29wR3JhcGhQcm92aWRlci5qYXZhCmluZGV4IDY3YTFjMjcuLjY0N2UwMDQgMTAwNjQ0Ci0tLSBhL2hhZG9vcC1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9oYWRvb3AvSGFkb29wR3JhcGhQcm92aWRlci5qYXZhCisrKyBiL2hhZG9vcC1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9oYWRvb3AvSGFkb29wR3JhcGhQcm92aWRlci5qYXZhCkBAIC0xOCwxMCArMTgsOCBAQAogICovCiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wOwogCi1pbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmNvbmZpZ3VyYXRpb24uQ29uZmlndXJhdGlvbjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkFic3RyYWN0R3JhcGhQcm92aWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkFic3RyYWN0RmlsZUdyYXBoUHJvdmlkZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5Mb2FkR3JhcGhXaXRoOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uVGVzdEhlbHBlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuSGFkb29wRWRnZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuSGFkb29wRWxlbWVudDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuSGFkb29wR3JhcGg7CkBAIC0zMywxOSArMzEsMTEgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuaW8uZ3J5by5HcnlvT3V0cHV0Rm9ybWF0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci51dGlsLkNvbXB1dGVyR3JhcGg7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGg7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uU3RvcmFnZTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncmFwaHNvbi5HcmFwaFNPTlJlc291cmNlQWNjZXNzOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyeW8uR3J5b1Jlc291cmNlQWNjZXNzOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLnNjcmlwdC5TY3JpcHRSZXNvdXJjZUFjY2VzczsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnV0aWwuVGVzdFN1cHBvcnQ7CiAKLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOwogaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKIGltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKIGltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKIGltcG9ydCBqYXZhLnV0aWwuTWFwOwotaW1wb3J0IGphdmEudXRpbC5SYW5kb207CiBpbXBvcnQgamF2YS51dGlsLlNldDsKIAogLyoqCkBAIC01MywxMyArNDMsOSBAQAogICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQogICogQGF1dGhvciBEYW5pZWwgS3VwcGl0eiAoaHR0cDovL2dyZW1saW4uZ3VydSkKICAqLwotcHVibGljIGNsYXNzIEhhZG9vcEdyYXBoUHJvdmlkZXIgZXh0ZW5kcyBBYnN0cmFjdEdyYXBoUHJvdmlkZXIgeworcHVibGljIGNsYXNzIEhhZG9vcEdyYXBoUHJvdmlkZXIgZXh0ZW5kcyBBYnN0cmFjdEZpbGVHcmFwaFByb3ZpZGVyIHsKIAotICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgUmFuZG9tIFJBTkRPTSA9IFRlc3RIZWxwZXIuUkFORE9NOwotICAgIHByaXZhdGUgYm9vbGVhbiBncmFwaFNPTklucHV0ID0gZmFsc2U7Ci0KLSAgICBwdWJsaWMgc3RhdGljIE1hcDxTdHJpbmcsIFN0cmluZz4gUEFUSFMgPSBuZXcgSGFzaE1hcDw+KCk7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBTZXQ8Q2xhc3M+IElNUExFTUVOVEFUSU9OID0gQ29sbGVjdGlvbnMudW5tb2RpZmlhYmxlU2V0KG5ldyBIYXNoU2V0PENsYXNzPigpIHt7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU2V0PENsYXNzPiBJTVBMRU1FTlRBVElPTiA9IENvbGxlY3Rpb25zLnVubW9kaWZpYWJsZVNldChuZXcgSGFzaFNldDxDbGFzcz4oKSB7ewogICAgICAgICBhZGQoSGFkb29wRWRnZS5jbGFzcyk7CiAgICAgICAgIGFkZChIYWRvb3BFbGVtZW50LmNsYXNzKTsKICAgICAgICAgYWRkKEhhZG9vcEdyYXBoLmNsYXNzKTsKQEAgLTc1LDUwICs2MSw2IEBACiAgICAgICAgIGFkZChDb21wdXRlckdyYXBoLkNvbXB1dGVyUHJvcGVydHkuY2xhc3MpOwogICAgIH19KTsKIAotICAgIHN0YXRpYyB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBmaW5hbCBMaXN0PFN0cmluZz4ga3J5b1Jlc291cmNlcyA9IEFycmF5cy5hc0xpc3QoCi0gICAgICAgICAgICAgICAgICAgICJ0aW5rZXJwb3AtbW9kZXJuLXYzZDAua3J5byIsCi0gICAgICAgICAgICAgICAgICAgICJncmF0ZWZ1bC1kZWFkLXYzZDAua3J5byIsCi0gICAgICAgICAgICAgICAgICAgICJ0aW5rZXJwb3AtY2xhc3NpYy12M2QwLmtyeW8iLAotICAgICAgICAgICAgICAgICAgICAidGlua2VycG9wLWNyZXctdjNkMC5rcnlvIiwKLSAgICAgICAgICAgICAgICAgICAgInRpbmtlcnBvcC1zaW5rLXYzZDAua3J5byIpOwotICAgICAgICAgICAgZm9yIChmaW5hbCBTdHJpbmcgZmlsZU5hbWUgOiBrcnlvUmVzb3VyY2VzKSB7Ci0gICAgICAgICAgICAgICAgUEFUSFMucHV0KGZpbGVOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICBTdG9yYWdlLnRvUGF0aChUZXN0SGVscGVyLmdlbmVyYXRlVGVtcEZpbGVGcm9tUmVzb3VyY2UoR3J5b1Jlc291cmNlQWNjZXNzLmNsYXNzLCBmaWxlTmFtZSwgIiIpKSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZpbmFsIExpc3Q8U3RyaW5nPiBncmFwaHNvblJlc291cmNlcyA9IEFycmF5cy5hc0xpc3QoCi0gICAgICAgICAgICAgICAgICAgICJ0aW5rZXJwb3AtbW9kZXJuLXR5cGVkLXYyZDAuanNvbiIsCi0gICAgICAgICAgICAgICAgICAgICJ0aW5rZXJwb3AtbW9kZXJuLXYzZDAuanNvbiIsCi0gICAgICAgICAgICAgICAgICAgICJncmF0ZWZ1bC1kZWFkLXR5cGVkLXYyZDAuanNvbiIsCi0gICAgICAgICAgICAgICAgICAgICJncmF0ZWZ1bC1kZWFkLXYzZDAuanNvbiIsCi0gICAgICAgICAgICAgICAgICAgICJ0aW5rZXJwb3AtY2xhc3NpYy10eXBlZC12MmQwLmpzb24iLAotICAgICAgICAgICAgICAgICAgICAidGlua2VycG9wLWNsYXNzaWMtdjNkMC5qc29uIiwKLSAgICAgICAgICAgICAgICAgICAgInRpbmtlcnBvcC1jcmV3LXR5cGVkLXYyZDAuanNvbiIsCi0gICAgICAgICAgICAgICAgICAgICJ0aW5rZXJwb3AtY3Jldy12M2QwLmpzb24iLAotICAgICAgICAgICAgICAgICAgICAidGlua2VycG9wLXNpbmstdjNkMC5qc29uIik7Ci0gICAgICAgICAgICBmb3IgKGZpbmFsIFN0cmluZyBmaWxlTmFtZSA6IGdyYXBoc29uUmVzb3VyY2VzKSB7Ci0gICAgICAgICAgICAgICAgUEFUSFMucHV0KGZpbGVOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICBTdG9yYWdlLnRvUGF0aChUZXN0SGVscGVyLmdlbmVyYXRlVGVtcEZpbGVGcm9tUmVzb3VyY2UoR3JhcGhTT05SZXNvdXJjZUFjY2Vzcy5jbGFzcywgZmlsZU5hbWUsICIiKSkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBmaW5hbCBMaXN0PFN0cmluZz4gc2NyaXB0UmVzb3VyY2VzID0gQXJyYXlzLmFzTGlzdCgKLSAgICAgICAgICAgICAgICAgICAgInRpbmtlcnBvcC1jbGFzc2ljLnR4dCIsCi0gICAgICAgICAgICAgICAgICAgICJzY3JpcHQtaW5wdXQuZ3Jvb3Z5IiwKLSAgICAgICAgICAgICAgICAgICAgInNjcmlwdC1vdXRwdXQuZ3Jvb3Z5IiwKLSAgICAgICAgICAgICAgICAgICAgImdyYXRlZnVsLWRlYWQudHh0IiwKLSAgICAgICAgICAgICAgICAgICAgInNjcmlwdC1pbnB1dC1ncmF0ZWZ1bC1kZWFkLmdyb292eSIsCi0gICAgICAgICAgICAgICAgICAgICJzY3JpcHQtb3V0cHV0LWdyYXRlZnVsLWRlYWQuZ3Jvb3Z5Iik7Ci0gICAgICAgICAgICBmb3IgKGZpbmFsIFN0cmluZyBmaWxlTmFtZSA6IHNjcmlwdFJlc291cmNlcykgewotICAgICAgICAgICAgICAgIFBBVEhTLnB1dChmaWxlTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmFnZS50b1BhdGgoVGVzdEhlbHBlci5nZW5lcmF0ZVRlbXBGaWxlRnJvbVJlc291cmNlKFNjcmlwdFJlc291cmNlQWNjZXNzLmNsYXNzLCBmaWxlTmFtZSwgIiIpKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIE1hcDxTdHJpbmcsIE9iamVjdD4gZ2V0QmFzZUNvbmZpZ3VyYXRpb24oZmluYWwgU3RyaW5nIGdyYXBoTmFtZSwgZmluYWwgQ2xhc3M8Pz4gdGVzdCwgZmluYWwgU3RyaW5nIHRlc3RNZXRob2ROYW1lLCBmaW5hbCBMb2FkR3JhcGhXaXRoLkdyYXBoRGF0YSBsb2FkR3JhcGhXaXRoKSB7CiAgICAgICAgIHRoaXMuZ3JhcGhTT05JbnB1dCA9IFJBTkRPTS5uZXh0Qm9vbGVhbigpOwpAQCAtMTMyLDM2ICs3NCwxMiBAQAogICAgIH0KIAogICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lkIGNsZWFyKGZpbmFsIEdyYXBoIGdyYXBoLCBmaW5hbCBDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pIHRocm93cyBFeGNlcHRpb24gewotICAgICAgICBpZiAoZ3JhcGggIT0gbnVsbCkKLSAgICAgICAgICAgIGdyYXBoLmNsb3NlKCk7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCiAgICAgcHVibGljIHZvaWQgbG9hZEdyYXBoRGF0YShmaW5hbCBHcmFwaCBncmFwaCwgZmluYWwgTG9hZEdyYXBoV2l0aCBsb2FkR3JhcGhXaXRoLCBmaW5hbCBDbGFzcyB0ZXN0Q2xhc3MsIGZpbmFsIFN0cmluZyB0ZXN0TmFtZSkgewotICAgICAgICBpZiAobG9hZEdyYXBoV2l0aCAhPSBudWxsKSB0aGlzLmxvYWRHcmFwaERhdGFWaWFIYWRvb3BDb25maWcoZ3JhcGgsIGxvYWRHcmFwaFdpdGgudmFsdWUoKSk7CisgICAgICAgIGlmIChsb2FkR3JhcGhXaXRoICE9IG51bGwpICgoSGFkb29wR3JhcGgpIGdyYXBoKS5jb25maWd1cmF0aW9uKCkuc2V0SW5wdXRMb2NhdGlvbihnZXRJbnB1dExvY2F0aW9uKGdyYXBoLCBsb2FkR3JhcGhXaXRoLnZhbHVlKCkpKTsKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgU2V0PENsYXNzPiBnZXRJbXBsZW1lbnRhdGlvbnMoKSB7CiAgICAgICAgIHJldHVybiBJTVBMRU1FTlRBVElPTjsKICAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBsb2FkR3JhcGhEYXRhVmlhSGFkb29wQ29uZmlnKGZpbmFsIEdyYXBoIGcsIGZpbmFsIExvYWRHcmFwaFdpdGguR3JhcGhEYXRhIGdyYXBoRGF0YSkgewotICAgICAgICBmaW5hbCBTdHJpbmcgdHlwZSA9IHRoaXMuZ3JhcGhTT05JbnB1dCA/ICItdjNkMC5qc29uIiA6ICItdjNkMC5rcnlvIjsKLQotICAgICAgICBpZiAoZ3JhcGhEYXRhLmVxdWFscyhMb2FkR3JhcGhXaXRoLkdyYXBoRGF0YS5HUkFURUZVTCkpIHsKLSAgICAgICAgICAgICgoSGFkb29wR3JhcGgpIGcpLmNvbmZpZ3VyYXRpb24oKS5zZXRJbnB1dExvY2F0aW9uKFBBVEhTLmdldCgiZ3JhdGVmdWwtZGVhZCIgKyB0eXBlKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoZ3JhcGhEYXRhLmVxdWFscyhMb2FkR3JhcGhXaXRoLkdyYXBoRGF0YS5NT0RFUk4pKSB7Ci0gICAgICAgICAgICAoKEhhZG9vcEdyYXBoKSBnKS5jb25maWd1cmF0aW9uKCkuc2V0SW5wdXRMb2NhdGlvbihQQVRIUy5nZXQoInRpbmtlcnBvcC1tb2Rlcm4iICsgdHlwZSkpOwotICAgICAgICB9IGVsc2UgaWYgKGdyYXBoRGF0YS5lcXVhbHMoTG9hZEdyYXBoV2l0aC5HcmFwaERhdGEuQ0xBU1NJQykpIHsKLSAgICAgICAgICAgICgoSGFkb29wR3JhcGgpIGcpLmNvbmZpZ3VyYXRpb24oKS5zZXRJbnB1dExvY2F0aW9uKFBBVEhTLmdldCgidGlua2VycG9wLWNsYXNzaWMiICsgdHlwZSkpOwotICAgICAgICB9IGVsc2UgaWYgKGdyYXBoRGF0YS5lcXVhbHMoTG9hZEdyYXBoV2l0aC5HcmFwaERhdGEuQ1JFVykpIHsKLSAgICAgICAgICAgICgoSGFkb29wR3JhcGgpIGcpLmNvbmZpZ3VyYXRpb24oKS5zZXRJbnB1dExvY2F0aW9uKFBBVEhTLmdldCgidGlua2VycG9wLWNyZXciICsgdHlwZSkpOwotICAgICAgICB9IGVsc2UgaWYgKGdyYXBoRGF0YS5lcXVhbHMoTG9hZEdyYXBoV2l0aC5HcmFwaERhdGEuU0lOSykpIHsKLSAgICAgICAgICAgICgoSGFkb29wR3JhcGgpIGcpLmNvbmZpZ3VyYXRpb24oKS5zZXRJbnB1dExvY2F0aW9uKFBBVEhTLmdldCgidGlua2VycG9wLXNpbmsiICsgdHlwZSkpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIkNvdWxkIG5vdCBsb2FkIGdyYXBoIHdpdGggIiArIGdyYXBoRGF0YSk7Ci0gICAgICAgIH0KLSAgICB9CiB9CmRpZmYgLS1naXQgYS9oYWRvb3AtZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vaGFkb29wL3N0cnVjdHVyZS9pby9BYnN0cmFjdElvUmVnaXN0cnlDaGVjay5qYXZhIGIvaGFkb29wLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2hhZG9vcC9zdHJ1Y3R1cmUvaW8vQWJzdHJhY3RJb1JlZ2lzdHJ5Q2hlY2suamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTA2YTcyYi4uMDAwMDAwMAotLS0gYS9oYWRvb3AtZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vaGFkb29wL3N0cnVjdHVyZS9pby9BYnN0cmFjdElvUmVnaXN0cnlDaGVjay5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTM4ICswLDAgQEAKLS8qCi0gKiAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQotICogIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQotICogIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCi0gKiAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQotICogIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKLSAqICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCi0gKiAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAotICogIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCi0gKiAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCi0gKiAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCi0gKiAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucwotICogIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLXBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLmlvOwotCi0KLWltcG9ydCBvcmcuYXBhY2hlLmhhZG9vcC5pby5OdWxsV3JpdGFibGU7Ci1pbXBvcnQgb3JnLmFwYWNoZS5oYWRvb3AubWFwcmVkdWNlLlJlY29yZFdyaXRlcjsKLWltcG9ydCBvcmcuYXBhY2hlLmhhZG9vcC5tYXByZWR1Y2UuVGFza0F0dGVtcHRJRDsKLWltcG9ydCBvcmcuYXBhY2hlLmhhZG9vcC5tYXByZWR1Y2UudGFzay5UYXNrQXR0ZW1wdENvbnRleHRJbXBsOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uQWJzdHJhY3RHcmVtbGluVGVzdDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLlRlc3RIZWxwZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3AuQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5IYWRvb3BHcmFwaDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuaW8uZ3JhcGhzb24uR3JhcGhTT05JbnB1dEZvcm1hdDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuaW8uZ3JhcGhzb24uR3JhcGhTT05PdXRwdXRGb3JtYXQ7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLmlvLmdyYXBoc29uLkdyYXBoU09OUmVjb3JkV3JpdGVyOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5pby5ncnlvLkdyeW9JbnB1dEZvcm1hdDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuaW8uZ3J5by5HcnlvT3V0cHV0Rm9ybWF0OwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5pby5ncnlvLkdyeW9SZWNvcmRXcml0ZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLmlvLmdyeW8uVG95SW9SZWdpc3RyeTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuaW8uZ3J5by5Ub3lQb2ludDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuaW8uZ3J5by5Ub3lUcmlhbmdsZTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUudXRpbC5Db25mVXRpbDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuR3JhcGhDb21wdXRlcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5UOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5Jb1JlZ2lzdHJ5OwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLlN0b3JhZ2U7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3J5by5HcnlvUG9vbDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncnlvLkdyeW9WZXJzaW9uOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuc3Rhci5TdGFyR3JhcGg7Ci0KLWltcG9ydCBqYXZhLmlvLkRhdGFPdXRwdXRTdHJlYW07Ci1pbXBvcnQgamF2YS5pby5GaWxlOwotaW1wb3J0IGphdmEuaW8uRmlsZU91dHB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuTWFwOwotaW1wb3J0IGphdmEudXRpbC5zdHJlYW0uQ29sbGVjdG9yczsKLQotaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydEVxdWFsczsKLWltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRUcnVlOwotCi0vKioKLSAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQotICovCi1wdWJsaWMgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RJb1JlZ2lzdHJ5Q2hlY2sgZXh0ZW5kcyBBYnN0cmFjdEdyZW1saW5UZXN0IHsKLQotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBOVU1CRVJfT0ZfVkVSVElDRVMgPSAxMDAwOwotCi0gICAgcHVibGljIHZvaWQgY2hlY2tHcnlvVjFkMElvUmVnaXN0cnlDb21wbGlhbmNlKGZpbmFsIEhhZG9vcEdyYXBoIGdyYXBoLCBmaW5hbCBDbGFzczw/IGV4dGVuZHMgR3JhcGhDb21wdXRlcj4gZ3JhcGhDb21wdXRlckNsYXNzKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICAgICAgZmluYWwgRmlsZSBpbnB1dCA9IFRlc3RIZWxwZXIuZ2VuZXJhdGVUZW1wRmlsZSh0aGlzLmdldENsYXNzKCksICJncnlvLWlvLXJlZ2lzdHJ5IiwgIi5rcnlvIik7Ci0gICAgICAgIGdyYXBoLmNvbmZpZ3VyYXRpb24oKS5zZXRQcm9wZXJ0eShDb25zdGFudHMuR1JFTUxJTl9IQURPT1BfR1JBUEhfUkVBREVSLCBHcnlvSW5wdXRGb3JtYXQuY2xhc3MuZ2V0Q2Fub25pY2FsTmFtZSgpKTsKLSAgICAgICAgZ3JhcGguY29uZmlndXJhdGlvbigpLnNldFByb3BlcnR5KENvbnN0YW50cy5HUkVNTElOX0hBRE9PUF9HUkFQSF9XUklURVIsIEdyeW9PdXRwdXRGb3JtYXQuY2xhc3MuZ2V0Q2Fub25pY2FsTmFtZSgpKTsKLSAgICAgICAgZ3JhcGguY29uZmlndXJhdGlvbigpLnNldFByb3BlcnR5KEdyeW9Qb29sLkNPTkZJR19JT19HUllPX1ZFUlNJT04sIEdyeW9WZXJzaW9uLlYxXzAubmFtZSgpKTsKLSAgICAgICAgZ3JhcGguY29uZmlndXJhdGlvbigpLnNldFByb3BlcnR5KENvbnN0YW50cy5HUkVNTElOX0hBRE9PUF9JTlBVVF9MT0NBVElPTiwgU3RvcmFnZS50b1BhdGgoaW5wdXQpKTsKLSAgICAgICAgZ3JhcGguY29uZmlndXJhdGlvbigpLnNldFByb3BlcnR5KElvUmVnaXN0cnkuSU9fUkVHSVNUUlksIFRveUlvUmVnaXN0cnkuY2xhc3MuZ2V0Q2Fub25pY2FsTmFtZSgpKTsKLSAgICAgICAgZmluYWwgR3J5b1JlY29yZFdyaXRlciB3cml0ZXIgPSBuZXcgR3J5b1JlY29yZFdyaXRlcihuZXcgRGF0YU91dHB1dFN0cmVhbShuZXcgRmlsZU91dHB1dFN0cmVhbShpbnB1dCkpLCBDb25mVXRpbC5tYWtlSGFkb29wQ29uZmlndXJhdGlvbihncmFwaC5jb25maWd1cmF0aW9uKCkpKTsKLSAgICAgICAgdmFsaWRhdGVJb1JlZ2lzdHJ5R3JhcGgoZ3JhcGgsIGdyYXBoQ29tcHV0ZXJDbGFzcywgd3JpdGVyKTsKLSAgICAgICAgYXNzZXJ0VHJ1ZShpbnB1dC5kZWxldGUoKSk7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgY2hlY2tHcnlvVjNkMElvUmVnaXN0cnlDb21wbGlhbmNlKGZpbmFsIEhhZG9vcEdyYXBoIGdyYXBoLCBmaW5hbCBDbGFzczw/IGV4dGVuZHMgR3JhcGhDb21wdXRlcj4gZ3JhcGhDb21wdXRlckNsYXNzKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICAgICAgZmluYWwgRmlsZSBpbnB1dCA9IFRlc3RIZWxwZXIuZ2VuZXJhdGVUZW1wRmlsZSh0aGlzLmdldENsYXNzKCksICJncnlvLWlvLXJlZ2lzdHJ5IiwgIi5rcnlvIik7Ci0gICAgICAgIGdyYXBoLmNvbmZpZ3VyYXRpb24oKS5zZXRQcm9wZXJ0eShDb25zdGFudHMuR1JFTUxJTl9IQURPT1BfR1JBUEhfUkVBREVSLCBHcnlvSW5wdXRGb3JtYXQuY2xhc3MuZ2V0Q2Fub25pY2FsTmFtZSgpKTsKLSAgICAgICAgZ3JhcGguY29uZmlndXJhdGlvbigpLnNldFByb3BlcnR5KENvbnN0YW50cy5HUkVNTElOX0hBRE9PUF9HUkFQSF9XUklURVIsIEdyeW9PdXRwdXRGb3JtYXQuY2xhc3MuZ2V0Q2Fub25pY2FsTmFtZSgpKTsKLSAgICAgICAgZ3JhcGguY29uZmlndXJhdGlvbigpLnNldFByb3BlcnR5KENvbnN0YW50cy5HUkVNTElOX0hBRE9PUF9JTlBVVF9MT0NBVElPTiwgU3RvcmFnZS50b1BhdGgoaW5wdXQpKTsKLSAgICAgICAgZ3JhcGguY29uZmlndXJhdGlvbigpLnNldFByb3BlcnR5KEdyeW9Qb29sLkNPTkZJR19JT19HUllPX1ZFUlNJT04sIEdyeW9WZXJzaW9uLlYzXzAubmFtZSgpKTsKLSAgICAgICAgZ3JhcGguY29uZmlndXJhdGlvbigpLnNldFByb3BlcnR5KElvUmVnaXN0cnkuSU9fUkVHSVNUUlksIFRveUlvUmVnaXN0cnkuY2xhc3MuZ2V0Q2Fub25pY2FsTmFtZSgpKTsKLSAgICAgICAgZmluYWwgR3J5b1JlY29yZFdyaXRlciB3cml0ZXIgPSBuZXcgR3J5b1JlY29yZFdyaXRlcihuZXcgRGF0YU91dHB1dFN0cmVhbShuZXcgRmlsZU91dHB1dFN0cmVhbShpbnB1dCkpLCBDb25mVXRpbC5tYWtlSGFkb29wQ29uZmlndXJhdGlvbihncmFwaC5jb25maWd1cmF0aW9uKCkpKTsKLSAgICAgICAgdmFsaWRhdGVJb1JlZ2lzdHJ5R3JhcGgoZ3JhcGgsIGdyYXBoQ29tcHV0ZXJDbGFzcywgd3JpdGVyKTsKLSAgICAgICAgYXNzZXJ0VHJ1ZShpbnB1dC5kZWxldGUoKSk7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgY2hlY2tHcmFwaFNPTklvUmVnaXN0cnlDb21wbGlhbmNlKGZpbmFsIEhhZG9vcEdyYXBoIGdyYXBoLCBmaW5hbCBDbGFzczw/IGV4dGVuZHMgR3JhcGhDb21wdXRlcj4gZ3JhcGhDb21wdXRlckNsYXNzKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICAgICAgZmluYWwgRmlsZSBpbnB1dCA9IFRlc3RIZWxwZXIuZ2VuZXJhdGVUZW1wRmlsZSh0aGlzLmdldENsYXNzKCksICJncmFwaHNvbi1pby1yZWdpc3RyeSIsICIuanNvbiIpOwotICAgICAgICBncmFwaC5jb25maWd1cmF0aW9uKCkuc2V0UHJvcGVydHkoQ29uc3RhbnRzLkdSRU1MSU5fSEFET09QX0dSQVBIX1JFQURFUiwgR3JhcGhTT05JbnB1dEZvcm1hdC5jbGFzcy5nZXRDYW5vbmljYWxOYW1lKCkpOwotICAgICAgICBncmFwaC5jb25maWd1cmF0aW9uKCkuc2V0UHJvcGVydHkoQ29uc3RhbnRzLkdSRU1MSU5fSEFET09QX0dSQVBIX1dSSVRFUiwgR3JhcGhTT05PdXRwdXRGb3JtYXQuY2xhc3MuZ2V0Q2Fub25pY2FsTmFtZSgpKTsKLSAgICAgICAgZ3JhcGguY29uZmlndXJhdGlvbigpLnNldFByb3BlcnR5KENvbnN0YW50cy5HUkVNTElOX0hBRE9PUF9JTlBVVF9MT0NBVElPTiwgU3RvcmFnZS50b1BhdGgoaW5wdXQpKTsKLSAgICAgICAgZ3JhcGguY29uZmlndXJhdGlvbigpLnNldFByb3BlcnR5KElvUmVnaXN0cnkuSU9fUkVHSVNUUlksIFRveUlvUmVnaXN0cnkuY2xhc3MuZ2V0Q2Fub25pY2FsTmFtZSgpKTsKLSAgICAgICAgZmluYWwgR3JhcGhTT05SZWNvcmRXcml0ZXIgd3JpdGVyID0gbmV3IEdyYXBoU09OUmVjb3JkV3JpdGVyKG5ldyBEYXRhT3V0cHV0U3RyZWFtKG5ldyBGaWxlT3V0cHV0U3RyZWFtKGlucHV0KSksIENvbmZVdGlsLm1ha2VIYWRvb3BDb25maWd1cmF0aW9uKGdyYXBoLmNvbmZpZ3VyYXRpb24oKSkpOwotICAgICAgICB2YWxpZGF0ZUlvUmVnaXN0cnlHcmFwaChncmFwaCwgZ3JhcGhDb21wdXRlckNsYXNzLCB3cml0ZXIpOwotICAgICAgICBhc3NlcnRUcnVlKGlucHV0LmRlbGV0ZSgpKTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIHZvaWQgdmFsaWRhdGVJb1JlZ2lzdHJ5R3JhcGgoZmluYWwgSGFkb29wR3JhcGggZ3JhcGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIENsYXNzPD8gZXh0ZW5kcyBHcmFwaENvbXB1dGVyPiBncmFwaENvbXB1dGVyQ2xhc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIFJlY29yZFdyaXRlcjxOdWxsV3JpdGFibGUsIFZlcnRleFdyaXRhYmxlPiB3cml0ZXIpIHRocm93cyBFeGNlcHRpb24gewotCi0KLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOVU1CRVJfT0ZfVkVSVElDRVM7IGkrKykgewotICAgICAgICAgICAgZmluYWwgU3RhckdyYXBoIHN0YXJHcmFwaCA9IFN0YXJHcmFwaC5vcGVuKCk7Ci0gICAgICAgICAgICBWZXJ0ZXggdmVydGV4ID0gc3RhckdyYXBoLmFkZFZlcnRleChULmxhYmVsLCAicGxhY2UiLCBULmlkLCBpLCAicG9pbnQiLCBuZXcgVG95UG9pbnQoaSwgaSAqIDEwKSwgIm1lc3NhZ2UiLCAiSSdtICIgKyBpLCAidHJpYW5nbGUiLCBuZXcgVG95VHJpYW5nbGUoaSwgaSAqIDEwLCBpICogMTAwKSk7Ci0gICAgICAgICAgICB2ZXJ0ZXguYWRkRWRnZSgiY29ubmVjdGlvbiIsIHN0YXJHcmFwaC5hZGRWZXJ0ZXgoVC5pZCwgaSA+IDAgPyBpIC0gMSA6IE5VTUJFUl9PRl9WRVJUSUNFUyAtIDEpKTsKLSAgICAgICAgICAgIHdyaXRlci53cml0ZShOdWxsV3JpdGFibGUuZ2V0KCksIG5ldyBWZXJ0ZXhXcml0YWJsZShzdGFyR3JhcGguZ2V0U3RhclZlcnRleCgpKSk7Ci0gICAgICAgIH0KLSAgICAgICAgd3JpdGVyLmNsb3NlKG5ldyBUYXNrQXR0ZW1wdENvbnRleHRJbXBsKENvbmZVdGlsLm1ha2VIYWRvb3BDb25maWd1cmF0aW9uKGdyYXBoLmNvbmZpZ3VyYXRpb24oKSksIG5ldyBUYXNrQXR0ZW1wdElEKCkpKTsKLQotICAgICAgICAvLyBPTEFQIFRFU1RJTkcgLy8KLSAgICAgICAgdmFsaWRhdGVQb2ludFRyaWFuZ2xlcyhncmFwaC50cmF2ZXJzYWwoKS53aXRoQ29tcHV0ZXIoZ3JhcGhDb21wdXRlckNsYXNzKS5WKCkucHJvamVjdCgicG9pbnQiLCAidHJpYW5nbGUiKS5ieSgicG9pbnQiKS5ieSgidHJpYW5nbGUiKS50b0xpc3QoKSk7Ci0gICAgICAgIHZhbGlkYXRlUG9pbnRUcmlhbmdsZXMoZ3JhcGgudHJhdmVyc2FsKCkud2l0aENvbXB1dGVyKGdyYXBoQ29tcHV0ZXJDbGFzcykuVigpLm91dCgpLnByb2plY3QoInBvaW50IiwgInRyaWFuZ2xlIikuYnkoInBvaW50IikuYnkoInRyaWFuZ2xlIikudG9MaXN0KCkpOwotICAgICAgICB2YWxpZGF0ZVBvaW50VHJpYW5nbGVzKGdyYXBoLnRyYXZlcnNhbCgpLndpdGhDb21wdXRlcihncmFwaENvbXB1dGVyQ2xhc3MpLlYoKS5vdXQoKS5vdXQoKS5wcm9qZWN0KCJwb2ludCIsICJ0cmlhbmdsZSIpLmJ5KCJwb2ludCIpLmJ5KCJ0cmlhbmdsZSIpLnRvTGlzdCgpKTsKLSAgICAgICAgLy8gT0xUUCBURVNUSU5HIC8vCi0gICAgICAgIHZhbGlkYXRlUG9pbnRUcmlhbmdsZXMoZ3JhcGgudHJhdmVyc2FsKCkuVigpLnByb2plY3QoInBvaW50IiwgInRyaWFuZ2xlIikuYnkoInBvaW50IikuYnkoInRyaWFuZ2xlIikudG9MaXN0KCkpOwotICAgICAgICAvLyBIREZTIFRFU1RJTkcgLy8KLSAgICAgICAgLyp2YWxpZGF0ZVBvaW50VHJpYW5nbGVzKEl0ZXJhdG9yVXRpbHMuPE1hcDxTdHJpbmcsIE9iamVjdD4+YXNMaXN0KEl0ZXJhdG9yVXRpbHMuPFZlcnRleCwgTWFwPFN0cmluZywgT2JqZWN0Pj5tYXAoRmlsZVN5c3RlbVN0b3JhZ2Uub3BlbihDb25mVXRpbC5tYWtlSGFkb29wQ29uZmlndXJhdGlvbihncmFwaC5jb25maWd1cmF0aW9uKCkpKS5oZWFkKGdyYXBoLmNvbmZpZ3VyYXRpb24oKS5nZXRJbnB1dExvY2F0aW9uKCksIGdyYXBoLmNvbmZpZ3VyYXRpb24oKS5nZXRHcmFwaFJlYWRlcigpKSwKLSAgICAgICAgICAgICAgICB2ZXJ0ZXggLT4gewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEhhc2hNYXA8U3RyaW5nLCBPYmplY3Q+KCkge3sKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1dCgicG9pbnQiLCB2ZXJ0ZXgudmFsdWUoInBvaW50IikpOwotICAgICAgICAgICAgICAgICAgICAgICAgcHV0KCJ0cmlhbmdsZSIsIHZlcnRleC52YWx1ZSgidHJpYW5nbGUiKSk7Ci0gICAgICAgICAgICAgICAgICAgIH19OwotICAgICAgICAgICAgICAgIH0pKSk7Ki8KLSAgICB9Ci0KLSAgICBwcml2YXRlIHZvaWQgdmFsaWRhdGVQb2ludFRyaWFuZ2xlcyhmaW5hbCBMaXN0PE1hcDxTdHJpbmcsIE9iamVjdD4+IHZhbHVlcykgewotICAgICAgICBhc3NlcnRFcXVhbHMoTlVNQkVSX09GX1ZFUlRJQ0VTLCB2YWx1ZXMuc2l6ZSgpKTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOVU1CRVJfT0ZfVkVSVElDRVM7IGkrKykgewotICAgICAgICAgICAgYXNzZXJ0VHJ1ZSh2YWx1ZXMuc3RyZWFtKCkubWFwKG0gLT4gbS48VG95UG9pbnQ+Z2V0KCJwb2ludCIpKS5jb2xsZWN0KENvbGxlY3RvcnMudG9MaXN0KCkpLmNvbnRhaW5zKG5ldyBUb3lQb2ludChpLCBpICogMTApKSk7Ci0gICAgICAgICAgICBhc3NlcnRUcnVlKHZhbHVlcy5zdHJlYW0oKS5tYXAobSAtPiBtLjxUb3lUcmlhbmdsZT5nZXQoInRyaWFuZ2xlIikpLmNvbGxlY3QoQ29sbGVjdG9ycy50b0xpc3QoKSkuY29udGFpbnMobmV3IFRveVRyaWFuZ2xlKGksIGkgKiAxMCwgaSAqIDEwMCkpKTsKLSAgICAgICAgfQotICAgIH0KLX0KZGlmZiAtLWdpdCBhL2hhZG9vcC1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9oYWRvb3Avc3RydWN0dXJlL2lvL2dyeW8vVG95SW9SZWdpc3RyeS5qYXZhIGIvaGFkb29wLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2hhZG9vcC9zdHJ1Y3R1cmUvaW8vZ3J5by9Ub3lJb1JlZ2lzdHJ5LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2ZDg3YTkuLjAwMDAwMDAKLS0tIGEvaGFkb29wLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2hhZG9vcC9zdHJ1Y3R1cmUvaW8vZ3J5by9Ub3lJb1JlZ2lzdHJ5LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi0vKgotICogIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLSAqICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKLSAqICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgotICogIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLSAqICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCi0gKiAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQotICogIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKLSAqICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgotICogICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQotICogIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQotICogIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKLSAqICB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi1wYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5pby5ncnlvOwotCi1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uQWJzdHJhY3RJb1JlZ2lzdHJ5OwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyYXBoc29uLkdyYXBoU09OSW87Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3JhcGhzb24uVGlua2VyUG9wSmFja3Nvbk1vZHVsZTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncnlvLkdyeW9JbzsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci0KLS8qKgotICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCi0gKi8KLXB1YmxpYyBmaW5hbCBjbGFzcyBUb3lJb1JlZ2lzdHJ5IGV4dGVuZHMgQWJzdHJhY3RJb1JlZ2lzdHJ5IHsKLQotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFRveUlvUmVnaXN0cnkgSU5TVEFOQ0UgPSBuZXcgVG95SW9SZWdpc3RyeSgpOwotCi0gICAgcHJpdmF0ZSBUb3lJb1JlZ2lzdHJ5KCkgewotICAgICAgICBzdXBlci5yZWdpc3RlcihHcnlvSW8uY2xhc3MsIFRveVBvaW50LmNsYXNzLCBuZXcgVG95UG9pbnQuVG95UG9pbnRTZXJpYWxpemVyKCkpOwotICAgICAgICBzdXBlci5yZWdpc3RlcihHcnlvSW8uY2xhc3MsIFRveVRyaWFuZ2xlLmNsYXNzLCBuZXcgVG95VHJpYW5nbGUuVG95VHJpYW5nbGVTZXJpYWxpemVyKCkpOwotICAgICAgICBzdXBlci5yZWdpc3RlcihHcmFwaFNPTklvLmNsYXNzLCBudWxsLCBuZXcgVG95TW9kdWxlKCkpOwotICAgIH0KLQotICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgVG95TW9kdWxlIGV4dGVuZHMgVGlua2VyUG9wSmFja3Nvbk1vZHVsZSB7Ci0gICAgICAgIHB1YmxpYyBUb3lNb2R1bGUoKSB7Ci0gICAgICAgICAgICBzdXBlcigidG95Iik7Ci0gICAgICAgICAgICBhZGRTZXJpYWxpemVyKFRveVBvaW50LmNsYXNzLCBuZXcgVG95UG9pbnQuVG95UG9pbnRKYWNrc29uU2VyaWFsaXplcigpKTsKLSAgICAgICAgICAgIGFkZERlc2VyaWFsaXplcihUb3lQb2ludC5jbGFzcywgbmV3IFRveVBvaW50LlRveVBvaW50SmFja3NvbkRlU2VyaWFsaXplcigpKTsKLSAgICAgICAgICAgIGFkZFNlcmlhbGl6ZXIoVG95VHJpYW5nbGUuY2xhc3MsIG5ldyBUb3lUcmlhbmdsZS5Ub3lUcmlhbmdsZUphY2tzb25TZXJpYWxpemVyKCkpOwotICAgICAgICAgICAgYWRkRGVzZXJpYWxpemVyKFRveVRyaWFuZ2xlLmNsYXNzLCBuZXcgVG95VHJpYW5nbGUuVG95VHJpYW5nbGVKYWNrc29uRGVTZXJpYWxpemVyKCkpOwotICAgICAgICB9Ci0KLQotICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIE1hcDxDbGFzcywgU3RyaW5nPiBnZXRUeXBlRGVmaW5pdGlvbnMoKSB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IEhhc2hNYXA8Q2xhc3MsIFN0cmluZz4oKSB7ewotICAgICAgICAgICAgICAgIHB1dChUb3lQb2ludC5jbGFzcywgIlRveVBvaW50Iik7Ci0gICAgICAgICAgICAgICAgcHV0KFRveVRyaWFuZ2xlLmNsYXNzLCAiVG95VHJpYW5nbGUiKTsKLSAgICAgICAgICAgIH19OwotICAgICAgICB9Ci0KLSAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0VHlwZU5hbWVzcGFjZSgpIHsKLSAgICAgICAgICAgIHJldHVybiAidG95IjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyBzdGF0aWMgVG95SW9SZWdpc3RyeSBpbnN0YW5jZSgpIHsKLSAgICAgICAgcmV0dXJuIElOU1RBTkNFOwotICAgIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9oYWRvb3AtZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vaGFkb29wL3N0cnVjdHVyZS9pby9ncnlvL1RveVBvaW50LmphdmEgYi9oYWRvb3AtZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vaGFkb29wL3N0cnVjdHVyZS9pby9ncnlvL1RveVBvaW50LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwYTVjYTMuLjAwMDAwMDAKLS0tIGEvaGFkb29wLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2hhZG9vcC9zdHJ1Y3R1cmUvaW8vZ3J5by9Ub3lQb2ludC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTEzICswLDAgQEAKLS8qCi0gKiAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQotICogIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQotICogIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCi0gKiAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQotICogIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKLSAqICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCi0gKiAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAotICogIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCi0gKiAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCi0gKiAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCi0gKiAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucwotICogIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLXBhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLmlvLmdyeW87Ci0KLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXg7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3JhcGhzb24uQWJzdHJhY3RPYmplY3REZXNlcmlhbGl6ZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3JhcGhzb24uR3JhcGhTT05Ub2tlbnM7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3J5by5rcnlvc2hpbS5JbnB1dFNoaW07Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3J5by5rcnlvc2hpbS5LcnlvU2hpbTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncnlvLmtyeW9zaGltLk91dHB1dFNoaW07Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3J5by5rcnlvc2hpbS5TZXJpYWxpemVyU2hpbTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLmRldGFjaGVkLkRldGFjaGVkVmVydGV4OwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLnNoYWRlZC5qYWNrc29uLmNvcmUuSnNvbkdlbmVyYXRpb25FeGNlcHRpb247Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3Auc2hhZGVkLmphY2tzb24uY29yZS5Kc29uR2VuZXJhdG9yOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLnNoYWRlZC5qYWNrc29uLmRhdGFiaW5kLlNlcmlhbGl6ZXJQcm92aWRlcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5zaGFkZWQuamFja3Nvbi5kYXRhYmluZC5zZXIuc3RkLlN0ZFNjYWxhclNlcmlhbGl6ZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3Auc2hhZGVkLmphY2tzb24uZGF0YWJpbmQuc2VyLnN0ZC5TdGRTZXJpYWxpemVyOwotCi1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLnV0aWwuTWFwOwotCi0vKioKLSAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQotICovCi1wdWJsaWMgZmluYWwgY2xhc3MgVG95UG9pbnQgewotCi0gICAgcHJpdmF0ZSBmaW5hbCBpbnQgeDsKLSAgICBwcml2YXRlIGZpbmFsIGludCB5OwotCi0gICAgcHVibGljIFRveVBvaW50KGZpbmFsIGludCB4LCBmaW5hbCBpbnQgeSkgewotICAgICAgICB0aGlzLnggPSB4OwotICAgICAgICB0aGlzLnkgPSB5OwotICAgIH0KLQotICAgIHB1YmxpYyBpbnQgZ2V0WCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMueDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgaW50IGdldFkoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLnk7Ci0gICAgfQotCi0gICAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMueCArIHRoaXMueTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoZmluYWwgT2JqZWN0IG90aGVyKSB7Ci0gICAgICAgIHJldHVybiBvdGhlciBpbnN0YW5jZW9mIFRveVBvaW50ICYmICgoVG95UG9pbnQpIG90aGVyKS54ID09IHRoaXMueCAmJiAoKFRveVBvaW50KSBvdGhlcikueSA9PSB0aGlzLnk7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKLSAgICAgICAgcmV0dXJuICJbIiArIHRoaXMueCArICIsIiArIHRoaXMueSArICJdIjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFRveVBvaW50U2VyaWFsaXplciBpbXBsZW1lbnRzIFNlcmlhbGl6ZXJTaGltPFRveVBvaW50PiB7Ci0gICAgICAgIEBPdmVycmlkZQotICAgICAgICBwdWJsaWMgPE8gZXh0ZW5kcyBPdXRwdXRTaGltPiB2b2lkIHdyaXRlKGZpbmFsIEtyeW9TaGltPD8sIE8+IGtyeW8sIGZpbmFsIE8gb3V0cHV0LCBmaW5hbCBUb3lQb2ludCB0b3lQb2ludCkgewotICAgICAgICAgICAgb3V0cHV0LndyaXRlSW50KHRveVBvaW50LngpOwotICAgICAgICAgICAgb3V0cHV0LndyaXRlSW50KHRveVBvaW50LnkpOwotICAgICAgICB9Ci0KLSAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHB1YmxpYyA8SSBleHRlbmRzIElucHV0U2hpbT4gVG95UG9pbnQgcmVhZChmaW5hbCBLcnlvU2hpbTxJLCA/PiBrcnlvLCBmaW5hbCBJIGlucHV0LCBmaW5hbCBDbGFzczxUb3lQb2ludD4gdG95UG9pbnRDbGFzcykgewotICAgICAgICAgICAgcmV0dXJuIG5ldyBUb3lQb2ludChpbnB1dC5yZWFkSW50KCksIGlucHV0LnJlYWRJbnQoKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFRveVBvaW50SmFja3NvblNlcmlhbGl6ZXIgZXh0ZW5kcyBTdGRTY2FsYXJTZXJpYWxpemVyPFRveVBvaW50PiB7Ci0KLSAgICAgICAgcHVibGljIFRveVBvaW50SmFja3NvblNlcmlhbGl6ZXIoKSB7Ci0gICAgICAgICAgICBzdXBlcihUb3lQb2ludC5jbGFzcyk7Ci0gICAgICAgIH0KLQotICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIHZvaWQgc2VyaWFsaXplKGZpbmFsIFRveVBvaW50IHRveVBvaW50LCBmaW5hbCBKc29uR2VuZXJhdG9yIGpzb25HZW5lcmF0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBTZXJpYWxpemVyUHJvdmlkZXIgc2VyaWFsaXplclByb3ZpZGVyKSB0aHJvd3MgSU9FeGNlcHRpb24sIEpzb25HZW5lcmF0aW9uRXhjZXB0aW9uIHsKLSAgICAgICAgICAgIGpzb25HZW5lcmF0b3Iud3JpdGVTdGFydE9iamVjdCgpOwotICAgICAgICAgICAganNvbkdlbmVyYXRvci53cml0ZU9iamVjdEZpZWxkKCJ4IiwgdG95UG9pbnQueCk7Ci0gICAgICAgICAgICBqc29uR2VuZXJhdG9yLndyaXRlT2JqZWN0RmllbGQoInkiLCB0b3lQb2ludC55KTsKLSAgICAgICAgICAgIGpzb25HZW5lcmF0b3Iud3JpdGVFbmRPYmplY3QoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgVG95UG9pbnRKYWNrc29uRGVTZXJpYWxpemVyIGV4dGVuZHMgQWJzdHJhY3RPYmplY3REZXNlcmlhbGl6ZXI8VG95UG9pbnQ+IHsKLQotICAgICAgICBwdWJsaWMgVG95UG9pbnRKYWNrc29uRGVTZXJpYWxpemVyKCkgewotICAgICAgICAgICAgc3VwZXIoVG95UG9pbnQuY2xhc3MpOwotICAgICAgICB9Ci0KLSAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHB1YmxpYyBUb3lQb2ludCBjcmVhdGVPYmplY3QoZmluYWwgTWFwPFN0cmluZywgT2JqZWN0PiBtYXApIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgVG95UG9pbnQoKGludCkgbWFwLmdldCgieCIpLCAoaW50KSBtYXAuZ2V0KCJ5IikpOwotICAgICAgICB9Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvaGFkb29wLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2hhZG9vcC9zdHJ1Y3R1cmUvaW8vZ3J5by9Ub3lUcmlhbmdsZS5qYXZhIGIvaGFkb29wLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2hhZG9vcC9zdHJ1Y3R1cmUvaW8vZ3J5by9Ub3lUcmlhbmdsZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyODBjZDAxLi4wMDAwMDAwCi0tLSBhL2hhZG9vcC1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9oYWRvb3Avc3RydWN0dXJlL2lvL2dyeW8vVG95VHJpYW5nbGUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEyMCArMCwwIEBACi0vKgotICogIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLSAqICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKLSAqICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgotICogIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLSAqICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCi0gKiAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQotICogIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKLSAqICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgotICogICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQotICogIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQotICogIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKLSAqICB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi1wYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5pby5ncnlvOwotCi1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3JhcGhzb24uQWJzdHJhY3RPYmplY3REZXNlcmlhbGl6ZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3J5by5rcnlvc2hpbS5JbnB1dFNoaW07Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3J5by5rcnlvc2hpbS5LcnlvU2hpbTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncnlvLmtyeW9zaGltLk91dHB1dFNoaW07Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3J5by5rcnlvc2hpbS5TZXJpYWxpemVyU2hpbTsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5zaGFkZWQuamFja3Nvbi5jb3JlLkpzb25HZW5lcmF0aW9uRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLnNoYWRlZC5qYWNrc29uLmNvcmUuSnNvbkdlbmVyYXRvcjsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5zaGFkZWQuamFja3Nvbi5kYXRhYmluZC5TZXJpYWxpemVyUHJvdmlkZXI7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3Auc2hhZGVkLmphY2tzb24uZGF0YWJpbmQuc2VyLnN0ZC5TdGRTY2FsYXJTZXJpYWxpemVyOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLnNoYWRlZC5qYWNrc29uLmRhdGFiaW5kLnNlci5zdGQuU3RkU2VyaWFsaXplcjsKLQotaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247Ci1pbXBvcnQgamF2YS51dGlsLk1hcDsKLQotLyoqCi0gKiBAYXV0aG9yIE1hcmtvIEEuIFJvZHJpZ3VleiAoaHR0cDovL21hcmtvcm9kcmlndWV6LmNvbSkKLSAqLwotcHVibGljIGZpbmFsIGNsYXNzIFRveVRyaWFuZ2xlIHsKLQotICAgIHByaXZhdGUgZmluYWwgaW50IHg7Ci0gICAgcHJpdmF0ZSBmaW5hbCBpbnQgeTsKLSAgICBwcml2YXRlIGZpbmFsIGludCB6OwotCi0gICAgcHVibGljIFRveVRyaWFuZ2xlKGZpbmFsIGludCB4LCBmaW5hbCBpbnQgeSwgZmluYWwgaW50IHopIHsKLSAgICAgICAgdGhpcy54ID0geDsKLSAgICAgICAgdGhpcy55ID0geTsKLSAgICAgICAgdGhpcy56ID0gejsKLSAgICB9Ci0KLSAgICBwdWJsaWMgaW50IGdldFgoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLng7Ci0gICAgfQotCi0gICAgcHVibGljIGludCBnZXRZKCkgewotICAgICAgICByZXR1cm4gdGhpcy55OwotICAgIH0KLQotICAgIHB1YmxpYyBpbnQgZ2V0WigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuejsKLSAgICB9Ci0KLSAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgewotICAgICAgICByZXR1cm4gdGhpcy54ICsgdGhpcy55ICsgdGhpcy56OwotICAgIH0KLQotICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhmaW5hbCBPYmplY3Qgb3RoZXIpIHsKLSAgICAgICAgcmV0dXJuIG90aGVyIGluc3RhbmNlb2YgVG95VHJpYW5nbGUgJiYgKChUb3lUcmlhbmdsZSkgb3RoZXIpLnggPT0gdGhpcy54ICYmICgoVG95VHJpYW5nbGUpIG90aGVyKS55ID09IHRoaXMueSAmJiAoKFRveVRyaWFuZ2xlKSBvdGhlcikueiA9PSB0aGlzLno7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKLSAgICAgICAgcmV0dXJuICJbIiArIHRoaXMueCArICIsIiArIHRoaXMueSArICIsIiArIHRoaXMueiArICJdIjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFRveVRyaWFuZ2xlU2VyaWFsaXplciBpbXBsZW1lbnRzIFNlcmlhbGl6ZXJTaGltPFRveVRyaWFuZ2xlPiB7Ci0gICAgICAgIEBPdmVycmlkZQotICAgICAgICBwdWJsaWMgPE8gZXh0ZW5kcyBPdXRwdXRTaGltPiB2b2lkIHdyaXRlKGZpbmFsIEtyeW9TaGltPD8sIE8+IGtyeW8sIGZpbmFsIE8gb3V0cHV0LCBmaW5hbCBUb3lUcmlhbmdsZSB0b3lUcmlhbmdsZSkgewotICAgICAgICAgICAgb3V0cHV0LndyaXRlSW50KHRveVRyaWFuZ2xlLngpOwotICAgICAgICAgICAgb3V0cHV0LndyaXRlSW50KHRveVRyaWFuZ2xlLnkpOwotICAgICAgICAgICAgb3V0cHV0LndyaXRlSW50KHRveVRyaWFuZ2xlLnopOwotICAgICAgICB9Ci0KLSAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHB1YmxpYyA8SSBleHRlbmRzIElucHV0U2hpbT4gVG95VHJpYW5nbGUgcmVhZChmaW5hbCBLcnlvU2hpbTxJLCA/PiBrcnlvLCBmaW5hbCBJIGlucHV0LCBmaW5hbCBDbGFzczxUb3lUcmlhbmdsZT4gdG95VHJpYW5nbGVDbGFzcykgewotICAgICAgICAgICAgcmV0dXJuIG5ldyBUb3lUcmlhbmdsZShpbnB1dC5yZWFkSW50KCksIGlucHV0LnJlYWRJbnQoKSwgaW5wdXQucmVhZEludCgpKTsKLSAgICAgICAgfQotICAgIH0KLQotCi0gICAgcHVibGljIHN0YXRpYyBjbGFzcyBUb3lUcmlhbmdsZUphY2tzb25TZXJpYWxpemVyIGV4dGVuZHMgU3RkU2NhbGFyU2VyaWFsaXplcjxUb3lUcmlhbmdsZT4gewotCi0gICAgICAgIHB1YmxpYyBUb3lUcmlhbmdsZUphY2tzb25TZXJpYWxpemVyKCkgewotICAgICAgICAgICAgc3VwZXIoVG95VHJpYW5nbGUuY2xhc3MpOwotICAgICAgICB9Ci0KLSAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHB1YmxpYyB2b2lkIHNlcmlhbGl6ZShmaW5hbCBUb3lUcmlhbmdsZSB0b3lUcmlhbmdsZSwgZmluYWwgSnNvbkdlbmVyYXRvciBqc29uR2VuZXJhdG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgU2VyaWFsaXplclByb3ZpZGVyIHNlcmlhbGl6ZXJQcm92aWRlcikgdGhyb3dzIElPRXhjZXB0aW9uLCBKc29uR2VuZXJhdGlvbkV4Y2VwdGlvbiB7Ci0gICAgICAgICAgICBqc29uR2VuZXJhdG9yLndyaXRlU3RhcnRPYmplY3QoKTsKLSAgICAgICAgICAgIGpzb25HZW5lcmF0b3Iud3JpdGVPYmplY3RGaWVsZCgieCIsIHRveVRyaWFuZ2xlLngpOwotICAgICAgICAgICAganNvbkdlbmVyYXRvci53cml0ZU9iamVjdEZpZWxkKCJ5IiwgdG95VHJpYW5nbGUueSk7Ci0gICAgICAgICAgICBqc29uR2VuZXJhdG9yLndyaXRlT2JqZWN0RmllbGQoInoiLCB0b3lUcmlhbmdsZS56KTsKLSAgICAgICAgICAgIGpzb25HZW5lcmF0b3Iud3JpdGVFbmRPYmplY3QoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgVG95VHJpYW5nbGVKYWNrc29uRGVTZXJpYWxpemVyIGV4dGVuZHMgQWJzdHJhY3RPYmplY3REZXNlcmlhbGl6ZXI8VG95VHJpYW5nbGU+IHsKLQotICAgICAgICBwdWJsaWMgVG95VHJpYW5nbGVKYWNrc29uRGVTZXJpYWxpemVyKCkgewotICAgICAgICAgICAgc3VwZXIoVG95VHJpYW5nbGUuY2xhc3MpOwotICAgICAgICB9Ci0KLSAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHB1YmxpYyBUb3lUcmlhbmdsZSBjcmVhdGVPYmplY3QoZmluYWwgTWFwPFN0cmluZywgT2JqZWN0PiBtYXApIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgVG95VHJpYW5nbGUoKGludCkgbWFwLmdldCgieCIpLCAoaW50KSBtYXAuZ2V0KCJ5IiksIChpbnQpIG1hcC5nZXQoInoiKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLX0KZGlmZiAtLWdpdCBhL25lbzRqLWdyZW1saW4vcG9tLnhtbCBiL25lbzRqLWdyZW1saW4vcG9tLnhtbAppbmRleCAyYzFkNmUwLi45ZTM2OTNjIDEwMDY0NAotLS0gYS9uZW80ai1ncmVtbGluL3BvbS54bWwKKysrIGIvbmVvNGotZ3JlbWxpbi9wb20ueG1sCkBAIC0yMSw3ICsyMSw3IEBACiAgICAgPHBhcmVudD4KICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS50aW5rZXJwb3A8L2dyb3VwSWQ+CiAgICAgICAgIDxhcnRpZmFjdElkPnRpbmtlcnBvcDwvYXJ0aWZhY3RJZD4KLSAgICAgICAgPHZlcnNpb24+My4zLjExLVNOQVBTSE9UPC92ZXJzaW9uPgorICAgICAgICA8dmVyc2lvbj4zLjQuNy1TTkFQU0hPVDwvdmVyc2lvbj4KICAgICA8L3BhcmVudD4KICAgICA8YXJ0aWZhY3RJZD5uZW80ai1ncmVtbGluPC9hcnRpZmFjdElkPgogICAgIDxuYW1lPkFwYWNoZSBUaW5rZXJQb3AgOjogTmVvNGogR3JlbWxpbjwvbmFtZT4KZGlmZiAtLWdpdCBhL25lbzRqLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL25lbzRqL0Fic3RyYWN0TmVvNGpHcmFwaFByb3ZpZGVyLmphdmEgYi9uZW80ai1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9uZW80ai9BYnN0cmFjdE5lbzRqR3JhcGhQcm92aWRlci5qYXZhCmluZGV4IGIwMTg5MzguLjk4ZTFmNWIgMTAwNjQ0Ci0tLSBhL25lbzRqLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL25lbzRqL0Fic3RyYWN0TmVvNGpHcmFwaFByb3ZpZGVyLmphdmEKKysrIGIvbmVvNGotZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vbmVvNGovQWJzdHJhY3ROZW80akdyYXBoUHJvdmlkZXIuamF2YQpAQCAtMzMsNiArMzMsNyBAQAogCiBpbXBvcnQgamF2YS5pby5GaWxlOwogaW1wb3J0IGphdmEudXRpbC5IYXNoU2V0OworaW1wb3J0IGphdmEudXRpbC5PcHRpb25hbDsKIGltcG9ydCBqYXZhLnV0aWwuUmFuZG9tOwogaW1wb3J0IGphdmEudXRpbC5TZXQ7CiAKQEAgLTUwLDYgKzUxLDI2IEBACiAgICAgICAgIGFkZChOZW80alZlcnRleFByb3BlcnR5LmNsYXNzKTsKICAgICB9fTsKIAorICAgIHByb3RlY3RlZCBHcmFwaC5GZWF0dXJlcyBmZWF0dXJlcyA9IG51bGw7CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgR3JhcGggb3BlblRlc3RHcmFwaChmaW5hbCBDb25maWd1cmF0aW9uIGNvbmZpZykgeworICAgICAgICBmaW5hbCBHcmFwaCBncmFwaCA9IHN1cGVyLm9wZW5UZXN0R3JhcGgoY29uZmlnKTsKKworICAgICAgICAvLyB3ZSBjYW4ganVzdCB1c2UgdGhlIGluaXRpYWwgc2V0IG9mIGZlYXR1cmVzIHRha2VuIGZyb20gdGhlIGZpcnN0IGdyYXBoIGdlbmVyYXRlZCBmcm9tIHRoZSBwcm92aWRlciBiZWNhdXNlCisgICAgICAgIC8vIG5lbzRqIGZlYXR1cmUgd29uJ3QgZXZlciBjaGFuZ2UuIGRvbid0IHRoaW5rIHRoZXJlIGlzIGFueSBkYW5nZXIgb2Yga2VlcGluZyB0aGlzIGluc3RhbmNlIGFib3V0IGV2ZW4gaWYKKyAgICAgICAgLy8gdGhlIG9yaWdpbmFsIGdyYXBoIGluc3RhbmNlIGdvZXMgb3V0IG9mIHNjb3BlLgorICAgICAgICBpZiAobnVsbCA9PSBmZWF0dXJlcykgeworICAgICAgICAgICAgdGhpcy5mZWF0dXJlcyA9IGdyYXBoLmZlYXR1cmVzKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGdyYXBoOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBPcHRpb25hbDxHcmFwaC5GZWF0dXJlcz4gZ2V0U3RhdGljRmVhdHVyZXMoKSB7CisgICAgICAgIHJldHVybiBPcHRpb25hbC5vZk51bGxhYmxlKGZlYXR1cmVzKTsKKyAgICB9CisKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgdm9pZCBjbGVhcihmaW5hbCBHcmFwaCBncmFwaCwgZmluYWwgQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKSB0aHJvd3MgRXhjZXB0aW9uIHsKICAgICAgICAgaWYgKG51bGwgIT0gZ3JhcGgpIHsKZGlmZiAtLWdpdCBhL3BvbS54bWwgYi9wb20ueG1sCmluZGV4IGIzNjQ1ZjcuLmI2YWU5ZWIgMTAwNjQ0Ci0tLSBhL3BvbS54bWwKKysrIGIvcG9tLnhtbApAQCAtMjUsNyArMjUsNyBAQAogICAgIDwvcGFyZW50PgogICAgIDxncm91cElkPm9yZy5hcGFjaGUudGlua2VycG9wPC9ncm91cElkPgogICAgIDxhcnRpZmFjdElkPnRpbmtlcnBvcDwvYXJ0aWZhY3RJZD4KLSAgICA8dmVyc2lvbj4zLjMuMTEtU05BUFNIT1Q8L3ZlcnNpb24+CisgICAgPHZlcnNpb24+My40LjctU05BUFNIT1Q8L3ZlcnNpb24+CiAgICAgPHBhY2thZ2luZz5wb208L3BhY2thZ2luZz4KICAgICA8bmFtZT5BcGFjaGUgVGlua2VyUG9wPC9uYW1lPgogICAgIDxkZXNjcmlwdGlvbj5BIEdyYXBoIENvbXB1dGluZyBGcmFtZXdvcms8L2Rlc2NyaXB0aW9uPgpAQCAtMTA4LDYgKzEwOCwxOCBAQAogICAgICAgICAgICAgPGVtYWlsPnR3aWxtZXNAZ21haWwuY29tPC9lbWFpbD4KICAgICAgICAgICAgIDx1cmw+aHR0cHM6Ly9naXRodWIuY29tL3R3aWxtZXM8L3VybD4KICAgICAgICAgPC9jb250cmlidXRvcj4KKyAgICAgICAgPGNvbnRyaWJ1dG9yPgorICAgICAgICAgICAgPG5hbWU+SGFyc2ggVGhha2thcjwvbmFtZT4KKyAgICAgICAgICAgIDxlbWFpbD5oYXJzaDl0QGdtYWlsLmNvbTwvZW1haWw+CisgICAgICAgICAgICA8b3JnYW5pemF0aW9uPlVuaXZlcnNpdHkgb2YgQm9ubjwvb3JnYW5pemF0aW9uPgorICAgICAgICAgICAgPG9yZ2FuaXphdGlvblVybD5odHRwOi8vaGFyc2h0aGFra2FyLmluPC9vcmdhbml6YXRpb25Vcmw+CisgICAgICAgIDwvY29udHJpYnV0b3I+CisgICAgICAgIDxjb250cmlidXRvcj4KKyAgICAgICAgICAgIDxuYW1lPkRoYXJtZW4gUHVuamFuaTwvbmFtZT4KKyAgICAgICAgICAgIDxlbWFpbD5kaGFybWVuLnB1bmphbmlAZ21haWwuY29tPC9lbWFpbD4KKyAgICAgICAgICAgIDxvcmdhbml6YXRpb24+TmF0aW9uYWwgYW5kIEthcG9kaXN0cmlhbiBVbml2ZXJzaXR5IG9mIEF0aGVuczwvb3JnYW5pemF0aW9uPgorICAgICAgICAgICAgPG9yZ2FuaXphdGlvblVybD5odHRwOi8vd2RhcXVhLmV1L3N0dWRlbnRzL2RoYXJtZW4tcHVuamFuaTwvb3JnYW5pemF0aW9uVXJsPgorICAgICAgICA8L2NvbnRyaWJ1dG9yPgogICAgIDwvY29udHJpYnV0b3JzPgogICAgIDxtb2R1bGVzPgogICAgICAgICA8bW9kdWxlPmdyZW1saW4tc2hhZGVkPC9tb2R1bGU+CkBAIC0xMjAsOCArMTMyLDggQEAKICAgICAgICAgPG1vZHVsZT5ncmVtbGluLWRvdG5ldDwvbW9kdWxlPgogICAgICAgICA8bW9kdWxlPmhhZG9vcC1ncmVtbGluPC9tb2R1bGU+CiAgICAgICAgIDxtb2R1bGU+c3BhcmstZ3JlbWxpbjwvbW9kdWxlPgotICAgICAgICA8bW9kdWxlPmdpcmFwaC1ncmVtbGluPC9tb2R1bGU+CiAgICAgICAgIDxtb2R1bGU+bmVvNGotZ3JlbWxpbjwvbW9kdWxlPgorICAgICAgICA8bW9kdWxlPnNwYXJxbC1ncmVtbGluPC9tb2R1bGU+CiAgICAgICAgIDxtb2R1bGU+Z3JlbWxpbi1kcml2ZXI8L21vZHVsZT4KICAgICAgICAgPG1vZHVsZT5ncmVtbGluLWNvbnNvbGU8L21vZHVsZT4KICAgICAgICAgPG1vZHVsZT5ncmVtbGluLXNlcnZlcjwvbW9kdWxlPgpAQCAtMTM3LDE3ICsxNDksMTcgQEAKICAgICAgICAgPGNvbW1vbnMuY29uZmlndXJhdGlvbi52ZXJzaW9uPjEuMTA8L2NvbW1vbnMuY29uZmlndXJhdGlvbi52ZXJzaW9uPgogICAgICAgICA8Y29tbW9ucy5sYW5nLnZlcnNpb24+Mi42PC9jb21tb25zLmxhbmcudmVyc2lvbj4KICAgICAgICAgPGNvbW1vbnMubGFuZzMudmVyc2lvbj4zLjguMTwvY29tbW9ucy5sYW5nMy52ZXJzaW9uPgotICAgICAgICA8Z3Jvb3Z5LnZlcnNpb24+Mi40LjE3PC9ncm9vdnkudmVyc2lvbj4KKyAgICAgICAgPGdyb292eS52ZXJzaW9uPjIuNS4xMTwvZ3Jvb3Z5LnZlcnNpb24+CiAgICAgICAgIDxoYWRvb3AudmVyc2lvbj4yLjcuMjwvaGFkb29wLnZlcnNpb24+CiAgICAgICAgIDxqYXZhLnR1cGxlcy52ZXJzaW9uPjEuMjwvamF2YS50dXBsZXMudmVyc2lvbj4KICAgICAgICAgPGphdmFkb2MtcGx1Z2luLnZlcnNpb24+Mi4xMC40PC9qYXZhZG9jLXBsdWdpbi52ZXJzaW9uPgogICAgICAgICA8amNhYmkudmVyc2lvbj4xLjE8L2pjYWJpLnZlcnNpb24+CiAgICAgICAgIDxsb2c0ai52ZXJzaW9uPjEuMi4xNzwvbG9nNGoudmVyc2lvbj4KICAgICAgICAgPG1ldHJpY3MudmVyc2lvbj4zLjAuMjwvbWV0cmljcy52ZXJzaW9uPgotICAgICAgICA8bmV0dHkudmVyc2lvbj40LjAuNTYuRmluYWw8L25ldHR5LnZlcnNpb24+CisgICAgICAgIDxuZXR0eS52ZXJzaW9uPjQuMS40Mi5GaW5hbDwvbmV0dHkudmVyc2lvbj4KICAgICAgICAgPHNsZjRqLnZlcnNpb24+MS43LjI1PC9zbGY0ai52ZXJzaW9uPgogICAgICAgICA8c25ha2V5YW1sLnZlcnNpb24+MS4xNTwvc25ha2V5YW1sLnZlcnNpb24+Ci0gICAgICAgIDxzcGFyay52ZXJzaW9uPjIuMi4wPC9zcGFyay52ZXJzaW9uPgorICAgICAgICA8c3BhcmsudmVyc2lvbj4yLjQuMDwvc3BhcmsudmVyc2lvbj4KIAogICAgICAgICA8cHJvamVjdC5idWlsZC5zb3VyY2VFbmNvZGluZz5VVEYtODwvcHJvamVjdC5idWlsZC5zb3VyY2VFbmNvZGluZz4KICAgICAgICAgPHByb2plY3QucmVwb3J0aW5nLm91dHB1dEVuY29kaW5nPlVURi04PC9wcm9qZWN0LnJlcG9ydGluZy5vdXRwdXRFbmNvZGluZz4KQEAgLTM0Niw2ICszNTgsNyBAQAogICAgICAgICAgICAgICAgIDxjb25maWd1cmF0aW9uPgogICAgICAgICAgICAgICAgICAgICA8ZXhjbHVkZVN1YlByb2plY3RzPmZhbHNlPC9leGNsdWRlU3ViUHJvamVjdHM+CiAgICAgICAgICAgICAgICAgICAgIDxleGNsdWRlcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxleGNsdWRlPi5tYWlsbWFwPC9leGNsdWRlPgogICAgICAgICAgICAgICAgICAgICAgICAgPGV4Y2x1ZGU+LnRyYXZpcy55bWw8L2V4Y2x1ZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICA8ZXhjbHVkZT4udHJhdmlzLiouc2g8L2V4Y2x1ZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICA8ZXhjbHVkZT4uZG9ja2VyaWdub3JlPC9leGNsdWRlPgpAQCAtMzU5LDYgKzM3Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICA8ZXhjbHVkZT4qKi90YXJnZXQvKio8L2V4Y2x1ZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICA8ZXhjbHVkZT5kYXRhLyoudHh0PC9leGNsdWRlPgogICAgICAgICAgICAgICAgICAgICAgICAgPGV4Y2x1ZGU+KiovKi5rcnlvPC9leGNsdWRlPgorICAgICAgICAgICAgICAgICAgICAgICAgPGV4Y2x1ZGU+KiovKi5nYmluPC9leGNsdWRlPgogICAgICAgICAgICAgICAgICAgICAgICAgPGV4Y2x1ZGU+KiovKi5pbWw8L2V4Y2x1ZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICA8ZXhjbHVkZT4qKi8qLmpzb248L2V4Y2x1ZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICA8ZXhjbHVkZT4qKi8qLnhtbDwvZXhjbHVkZT4KQEAgLTYwNSwxNSArNjE5LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cElkPmNvbW1vbnMtbG9nZ2luZzwvZ3JvdXBJZD4KICAgICAgICAgICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPmNvbW1vbnMtbG9nZ2luZzwvYXJ0aWZhY3RJZD4KICAgICAgICAgICAgICAgICAgICAgPC9leGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgICAgIDwhLS0gY29uZmxpY3RzIHdpdGggZ2lyYXBoLWNvcmUgKHdoaWNoIGFwcGVhcnMgdG8gaGF2ZSBtb3JlIGNvbnNpc3RlbnQgZGVwZW5kZW5jaWVzKSAtLT4KLSAgICAgICAgICAgICAgICAgICAgPGV4Y2x1c2lvbj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cElkPm9yZy5jb2RlaGF1cy5qYWNrc29uPC9ncm91cElkPgotICAgICAgICAgICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+amFja3Nvbi1jb3JlLWFzbDwvYXJ0aWZhY3RJZD4KLSAgICAgICAgICAgICAgICAgICAgPC9leGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxleGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuY29kZWhhdXMuamFja3NvbjwvZ3JvdXBJZD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPmphY2tzb24tbWFwcGVyLWFzbDwvYXJ0aWZhY3RJZD4KLSAgICAgICAgICAgICAgICAgICAgPC9leGNsdXNpb24+CiAgICAgICAgICAgICAgICAgICAgIDwhLS0gY29uZmxpY3Qgd2l0aCBUaW5rZXJQb3AgdGVzdHMgLS0+CiAgICAgICAgICAgICAgICAgICAgIDxleGNsdXNpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXBJZD5qdW5pdDwvZ3JvdXBJZD4KQEAgLTEyMDMsNyArMTIwOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3ZlcnZpZXc+JHtiYXNlZGlyfS9kb2NzL2phdmFkb2Mvb3ZlcnZpZXcuaHRtbDwvb3ZlcnZpZXc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cXVpZXQ+dHJ1ZTwvcXVpZXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c291cmNlcGF0aD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaXJhcGgtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhOmdyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhOmdyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmE6Z3JlbWxpbi1ncm9vdnkvc3JjL21haW4vamF2YTpncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qYXZhOmdyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmE6Z3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmE6aGFkb29wLWdyZW1saW4vc3JjL21haW4vamF2YTpuZW80ai1ncmVtbGluL3NyYy9tYWluL2phdmE6c3BhcmstZ3JlbWxpbi9zcmMvbWFpbi9qYXZhOnRpbmtlcmdyYXBoLWdyZW1saW4vc3JjL21haW4vamF2YQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyZW1saW4tY29yZS9zcmMvbWFpbi9qYXZhOmdyZW1saW4tZHJpdmVyL3NyYy9tYWluL2phdmE6Z3JlbWxpbi1ncm9vdnkvc3JjL21haW4vamF2YTpncmVtbGluLXB5dGhvbi9zcmMvbWFpbi9qYXZhOmdyZW1saW4tc2VydmVyL3NyYy9tYWluL2phdmE6Z3JlbWxpbi10ZXN0L3NyYy9tYWluL2phdmE6aGFkb29wLWdyZW1saW4vc3JjL21haW4vamF2YTpuZW80ai1ncmVtbGluL3NyYy9tYWluL2phdmE6c3BhcmstZ3JlbWxpbi9zcmMvbWFpbi9qYXZhOnRpbmtlcmdyYXBoLWdyZW1saW4vc3JjL21haW4vamF2YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zb3VyY2VwYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NvbmZpZ3VyYXRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9leGVjdXRpb24+CkBAIC0xMjY0LDEyICsxMjY5LDE4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGluY2x1ZGU+b3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyLyouamF2YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW5jbHVkZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5jbHVkZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL2NsdXN0ZXJpbmcvY29ubmVjdGVkL0Nvbm5lY3RlZENvbXBvbmVudFZlcnRleFByb2dyYW0uamF2YQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW5jbHVkZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5jbHVkZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL2NsdXN0ZXJpbmcvcGVlcnByZXNzdXJlL1BlZXJQcmVzc3VyZVZlcnRleFByb2dyYW0uamF2YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW5jbHVkZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5jbHVkZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9wcm9jZXNzL2NvbXB1dGVyL3JhbmtpbmcvcGFnZXJhbmsvUGFnZVJhbmtWZXJ0ZXhQcm9ncmFtLmphdmEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2luY2x1ZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGluY2x1ZGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci9zZWFyY2gvcGF0aC9TaG9ydGVzdFBhdGhWZXJ0ZXhQcm9ncmFtLmphdmEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2luY2x1ZGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGluY2x1ZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vcHJvY2Vzcy9jb21wdXRlci90cmF2ZXJzYWwvVHJhdmVyc2FsVmVydGV4UHJvZ3JhbS5qYXZhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pbmNsdWRlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gdHJhdmVyc2FsIC0tPgpkaWZmIC0tZ2l0IGEvc3BhcmstZ3JlbWxpbi9wb20ueG1sIGIvc3BhcmstZ3JlbWxpbi9wb20ueG1sCmluZGV4IGRmMzRjM2QuLjhlODZmNjYgMTAwNjQ0Ci0tLSBhL3NwYXJrLWdyZW1saW4vcG9tLnhtbAorKysgYi9zcGFyay1ncmVtbGluL3BvbS54bWwKQEAgLTI0LDcgKzI0LDcgQEAKICAgICA8cGFyZW50PgogICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLnRpbmtlcnBvcDwvZ3JvdXBJZD4KICAgICAgICAgPGFydGlmYWN0SWQ+dGlua2VycG9wPC9hcnRpZmFjdElkPgotICAgICAgICA8dmVyc2lvbj4zLjMuMTEtU05BUFNIT1Q8L3ZlcnNpb24+CisgICAgICAgIDx2ZXJzaW9uPjMuNC43LVNOQVBTSE9UPC92ZXJzaW9uPgogICAgIDwvcGFyZW50PgogICAgIDxhcnRpZmFjdElkPnNwYXJrLWdyZW1saW48L2FydGlmYWN0SWQ+CiAgICAgPG5hbWU+QXBhY2hlIFRpbmtlclBvcCA6OiBTcGFyayBHcmVtbGluPC9uYW1lPgpAQCAtMTM1LDYgKzEzNSwxMCBAQAogICAgICAgICAgICAgICAgIDwvZXhjbHVzaW9uPgogICAgICAgICAgICAgICAgIDxleGNsdXNpb24+CiAgICAgICAgICAgICAgICAgICAgIDxncm91cElkPmNvbS5mYXN0ZXJ4bWwuamFja3Nvbi5jb3JlPC9ncm91cElkPgorICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5qYWNrc29uLWNvcmU8L2FydGlmYWN0SWQ+CisgICAgICAgICAgICAgICAgPC9leGNsdXNpb24+CisgICAgICAgICAgICAgICAgPGV4Y2x1c2lvbj4KKyAgICAgICAgICAgICAgICAgICAgPGdyb3VwSWQ+Y29tLmZhc3RlcnhtbC5qYWNrc29uLmNvcmU8L2dyb3VwSWQ+CiAgICAgICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPmphY2tzb24tZGF0YWJpbmQ8L2FydGlmYWN0SWQ+CiAgICAgICAgICAgICAgICAgPC9leGNsdXNpb24+CiAgICAgICAgICAgICAgICAgPGV4Y2x1c2lvbj4KQEAgLTI2MCw3ICsyNjQsNyBAQAogICAgICAgICA8ZGVwZW5kZW5jeT4KICAgICAgICAgICAgIDxncm91cElkPmNvbS5mYXN0ZXJ4bWwuamFja3Nvbi5jb3JlPC9ncm91cElkPgogICAgICAgICAgICAgPGFydGlmYWN0SWQ+amFja3Nvbi1kYXRhYmluZDwvYXJ0aWZhY3RJZD4KLSAgICAgICAgICAgIDx2ZXJzaW9uPjIuNi41PC92ZXJzaW9uPgorICAgICAgICAgICAgPHZlcnNpb24+Mi42Ljc8L3ZlcnNpb24+CiAgICAgICAgIDwvZGVwZW5kZW5jeT4KICAgICAgICAgPGRlcGVuZGVuY3k+CiAgICAgICAgICAgICA8Z3JvdXBJZD5jb21tb25zLWxhbmc8L2dyb3VwSWQ+CkBAIC0yODAsNyArMjg0LDcgQEAKICAgICAgICAgPGRlcGVuZGVuY3k+CiAgICAgICAgICAgICA8Z3JvdXBJZD5pby5uZXR0eTwvZ3JvdXBJZD4KICAgICAgICAgICAgIDxhcnRpZmFjdElkPm5ldHR5LWFsbDwvYXJ0aWZhY3RJZD4KLSAgICAgICAgICAgIDx2ZXJzaW9uPjQuMC40My5GaW5hbDwvdmVyc2lvbj4KKyAgICAgICAgICAgIDx2ZXJzaW9uPjQuMS4zMi5GaW5hbDwvdmVyc2lvbj4KICAgICAgICAgPC9kZXBlbmRlbmN5PgogICAgICAgICA8ZGVwZW5kZW5jeT4KICAgICAgICAgICAgIDxncm91cElkPmlvLm5ldHR5PC9ncm91cElkPgpAQCAtMzExLDYzICszMTUsNiBAQAogICAgICAgICA8L2RlcGVuZGVuY3k+CiAgICAgICAgIDxkZXBlbmRlbmN5PgogICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS50aW5rZXJwb3A8L2dyb3VwSWQ+Ci0gICAgICAgICAgICA8YXJ0aWZhY3RJZD5oYWRvb3AtZ3JlbWxpbjwvYXJ0aWZhY3RJZD4KLSAgICAgICAgICAgIDx2ZXJzaW9uPiR7cHJvamVjdC52ZXJzaW9ufTwvdmVyc2lvbj4KLSAgICAgICAgICAgIDx0eXBlPnRlc3QtamFyPC90eXBlPgotICAgICAgICAgICAgPHNjb3BlPnRlc3Q8L3Njb3BlPgotICAgICAgICAgICAgPGV4Y2x1c2lvbnM+Ci0gICAgICAgICAgICAgICAgPGV4Y2x1c2lvbj4KLSAgICAgICAgICAgICAgICAgICAgPGdyb3VwSWQ+amF2YXguc2VydmxldDwvZ3JvdXBJZD4KLSAgICAgICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+c2VydmxldC1hcGk8L2FydGlmYWN0SWQ+Ci0gICAgICAgICAgICAgICAgPC9leGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgPGV4Y2x1c2lvbj4KLSAgICAgICAgICAgICAgICAgICAgPGdyb3VwSWQ+Y29tLnN1bi5qZXJzZXk8L2dyb3VwSWQ+Ci0gICAgICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPmplcnNleS1jb3JlPC9hcnRpZmFjdElkPgotICAgICAgICAgICAgICAgIDwvZXhjbHVzaW9uPgotICAgICAgICAgICAgICAgIDxleGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxncm91cElkPmNvbS5zdW4uamVyc2V5PC9ncm91cElkPgotICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5qZXJzZXktc2VydmVyPC9hcnRpZmFjdElkPgotICAgICAgICAgICAgICAgIDwvZXhjbHVzaW9uPgotICAgICAgICAgICAgICAgIDxleGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxncm91cElkPmNvbW1vbnMtbmV0PC9ncm91cElkPgotICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5jb21tb25zLW5ldDwvYXJ0aWZhY3RJZD4KLSAgICAgICAgICAgICAgICA8L2V4Y2x1c2lvbj4KLSAgICAgICAgICAgICAgICA8ZXhjbHVzaW9uPgotICAgICAgICAgICAgICAgICAgICA8Z3JvdXBJZD5jb21tb25zLWlvPC9ncm91cElkPgotICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5jb21tb25zLWlvPC9hcnRpZmFjdElkPgotICAgICAgICAgICAgICAgIDwvZXhjbHVzaW9uPgotICAgICAgICAgICAgICAgIDxleGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxncm91cElkPmNvbS5nb29nbGUuZ3VhdmE8L2dyb3VwSWQ+Ci0gICAgICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPmd1YXZhPC9hcnRpZmFjdElkPgotICAgICAgICAgICAgICAgIDwvZXhjbHVzaW9uPgotICAgICAgICAgICAgICAgIDxleGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxncm91cElkPm9yZy54ZXJpYWwuc25hcHB5PC9ncm91cElkPgotICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5zbmFwcHktamF2YTwvYXJ0aWZhY3RJZD4KLSAgICAgICAgICAgICAgICA8L2V4Y2x1c2lvbj4KLSAgICAgICAgICAgICAgICA8ZXhjbHVzaW9uPgotICAgICAgICAgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLmF2cm88L2dyb3VwSWQ+Ci0gICAgICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPmF2cm88L2FydGlmYWN0SWQ+Ci0gICAgICAgICAgICAgICAgPC9leGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgPGV4Y2x1c2lvbj4KLSAgICAgICAgICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS5jb21tb25zPC9ncm91cElkPgotICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5jb21tb25zLW1hdGgzPC9hcnRpZmFjdElkPgotICAgICAgICAgICAgICAgIDwvZXhjbHVzaW9uPgotICAgICAgICAgICAgICAgIDxleGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxncm91cElkPmlvLm5ldHR5PC9ncm91cElkPgotICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5uZXR0eTwvYXJ0aWZhY3RJZD4KLSAgICAgICAgICAgICAgICA8L2V4Y2x1c2lvbj4KLSAgICAgICAgICAgICAgICA8ZXhjbHVzaW9uPgotICAgICAgICAgICAgICAgICAgICA8Z3JvdXBJZD5pby5uZXR0eTwvZ3JvdXBJZD4KLSAgICAgICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+bmV0dHktYWxsPC9hcnRpZmFjdElkPgotICAgICAgICAgICAgICAgIDwvZXhjbHVzaW9uPgotICAgICAgICAgICAgICAgIDxleGNsdXNpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxncm91cElkPmNvbS50aG91Z2h0d29ya3MucGFyYW5hbWVyPC9ncm91cElkPgotICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5wYXJhbmFtZXI8L2FydGlmYWN0SWQ+Ci0gICAgICAgICAgICAgICAgPC9leGNsdXNpb24+Ci0gICAgICAgICAgICA8L2V4Y2x1c2lvbnM+Ci0gICAgICAgIDwvZGVwZW5kZW5jeT4KLSAgICAgICAgPGRlcGVuZGVuY3k+Ci0gICAgICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLnRpbmtlcnBvcDwvZ3JvdXBJZD4KICAgICAgICAgICAgIDxhcnRpZmFjdElkPnRpbmtlcmdyYXBoLWdyZW1saW48L2FydGlmYWN0SWQ+CiAgICAgICAgICAgICA8dmVyc2lvbj4ke3Byb2plY3QudmVyc2lvbn08L3ZlcnNpb24+CiAgICAgICAgICAgICA8c2NvcGU+dGVzdDwvc2NvcGU+CkBAIC00NTcsNCArNDA0LDQgQEAKICAgICAgICAgICAgIDwvcGx1Z2luPgogICAgICAgICA8L3BsdWdpbnM+CiAgICAgPC9idWlsZD4KLTwvcHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L3Byb2plY3Q+CmRpZmYgLS1naXQgYS9zcGFyay1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zcGFyay9wcm9jZXNzL2NvbXB1dGVyL3RyYXZlcnNhbC9zdHJhdGVneS9vcHRpbWl6YXRpb24vaW50ZXJjZXB0b3IvU3BhcmtTdGFyQmFycmllckludGVyY2VwdG9yLmphdmEgYi9zcGFyay1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zcGFyay9wcm9jZXNzL2NvbXB1dGVyL3RyYXZlcnNhbC9zdHJhdGVneS9vcHRpbWl6YXRpb24vaW50ZXJjZXB0b3IvU3BhcmtTdGFyQmFycmllckludGVyY2VwdG9yLmphdmEKaW5kZXggM2M3NGU1YS4uZGU0MjUyNSAxMDA2NDQKLS0tIGEvc3BhcmstZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3BhcmsvcHJvY2Vzcy9jb21wdXRlci90cmF2ZXJzYWwvc3RyYXRlZ3kvb3B0aW1pemF0aW9uL2ludGVyY2VwdG9yL1NwYXJrU3RhckJhcnJpZXJJbnRlcmNlcHRvci5qYXZhCisrKyBiL3NwYXJrLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NwYXJrL3Byb2Nlc3MvY29tcHV0ZXIvdHJhdmVyc2FsL3N0cmF0ZWd5L29wdGltaXphdGlvbi9pbnRlcmNlcHRvci9TcGFya1N0YXJCYXJyaWVySW50ZXJjZXB0b3IuamF2YQpAQCAtNDUsNiArNDUsNyBAQAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kudmVyaWZpY2F0aW9uLkNvbXB1dGVyVmVyaWZpY2F0aW9uU3RyYXRlZ3k7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuVHJhdmVyc2VyUmVxdWlyZW1lbnQ7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIudXRpbC5UcmF2ZXJzZXJTZXQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC51dGlsLkZhc3ROb1N1Y2hFbGVtZW50RXhjZXB0aW9uOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwudXRpbC5UcmF2ZXJzYWxIZWxwZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zcGFyay5wcm9jZXNzLmNvbXB1dGVyLlNwYXJrTWVtb3J5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3BhcmsucHJvY2Vzcy5jb21wdXRlci50cmF2ZXJzYWwuc3RyYXRlZ3kuU3BhcmtWZXJ0ZXhQcm9ncmFtSW50ZXJjZXB0b3I7CkBAIC01Miw2ICs1Myw3IEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5FbGVtZW50SGVscGVyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udXRpbC5OdW1iZXJIZWxwZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi51dGlsLmZ1bmN0aW9uLkFycmF5TGlzdFN1cHBsaWVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udXRpbC5mdW5jdGlvbi5NZWFuTnVtYmVyU3VwcGxpZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi51dGlsLml0ZXJhdG9yLkl0ZXJhdG9yVXRpbHM7CiAKIGltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwpAQCAtOTYsMjUgKzk4LDI1IEBACiAgICAgICAgIC8vIFVTRSBTUEFSSyBEU0wgRk9SIFRIRSBSRVNQRUNUSVZFIEVORCBSRURVQ0lORyBCQVJSSUVSIFNURVAgT0YgVEhFIFRSQVZFUlNBTAogICAgICAgICBmaW5hbCBPYmplY3QgcmVzdWx0OwogICAgICAgICBpZiAoZW5kU3RlcCBpbnN0YW5jZW9mIENvdW50R2xvYmFsU3RlcCkKLSAgICAgICAgICAgIHJlc3VsdCA9IG5leHRSREQubWFwKFRyYXZlcnNlcjo6YnVsaykuZm9sZCgwbCwgKGEsIGIpIC0+IGEgKyBiKTsKLSAgICAgICAgZWxzZSBpZiAoZW5kU3RlcCBpbnN0YW5jZW9mIFN1bUdsb2JhbFN0ZXApCi0gICAgICAgICAgICByZXN1bHQgPSBuZXh0UkRECisgICAgICAgICAgICByZXN1bHQgPSBuZXh0UkRELm1hcChUcmF2ZXJzZXI6OmJ1bGspLmZvbGQoMEwsIChhLCBiKSAtPiBhICsgYik7CisgICAgICAgIGVsc2UgaWYgKGVuZFN0ZXAgaW5zdGFuY2VvZiBTdW1HbG9iYWxTdGVwKSB7CisgICAgICAgICAgICByZXN1bHQgPSBuZXh0UkRELmlzRW1wdHkoKSA/IG51bGwgOiBuZXh0UkRECiAgICAgICAgICAgICAgICAgICAgIC5tYXAodHJhdmVyc2VyIC0+IE51bWJlckhlbHBlci5tdWwodHJhdmVyc2VyLmJ1bGsoKSwgKE51bWJlcikgdHJhdmVyc2VyLmdldCgpKSkKICAgICAgICAgICAgICAgICAgICAgLmZvbGQoMCwgTnVtYmVySGVscGVyOjphZGQpOwotICAgICAgICBlbHNlIGlmIChlbmRTdGVwIGluc3RhbmNlb2YgTWVhbkdsb2JhbFN0ZXApCi0gICAgICAgICAgICByZXN1bHQgPSBuZXh0UkRECisgICAgICAgIH0gZWxzZSBpZiAoZW5kU3RlcCBpbnN0YW5jZW9mIE1lYW5HbG9iYWxTdGVwKSB7CisgICAgICAgICAgICByZXN1bHQgPSBuZXh0UkRELmlzRW1wdHkoKSA/IG51bGwgOiBuZXh0UkRECiAgICAgICAgICAgICAgICAgICAgIC5tYXAodHJhdmVyc2VyIC0+IG5ldyBNZWFuR2xvYmFsU3RlcC5NZWFuTnVtYmVyKChOdW1iZXIpIHRyYXZlcnNlci5nZXQoKSwgdHJhdmVyc2VyLmJ1bGsoKSkpCi0gICAgICAgICAgICAgICAgICAgIC5mb2xkKG5ldyBNZWFuR2xvYmFsU3RlcC5NZWFuTnVtYmVyKCksIE1lYW5HbG9iYWxTdGVwLk1lYW5OdW1iZXI6OmFkZCkKKyAgICAgICAgICAgICAgICAgICAgLmZvbGQoTWVhbk51bWJlclN1cHBsaWVyLmluc3RhbmNlKCkuZ2V0KCksIE1lYW5HbG9iYWxTdGVwLk1lYW5OdW1iZXI6OmFkZCkKICAgICAgICAgICAgICAgICAgICAgLmdldEZpbmFsKCk7Ci0gICAgICAgIGVsc2UgaWYgKGVuZFN0ZXAgaW5zdGFuY2VvZiBNaW5HbG9iYWxTdGVwKQotICAgICAgICAgICAgcmVzdWx0ID0gbmV4dFJERAotICAgICAgICAgICAgICAgICAgICAubWFwKHRyYXZlcnNlciAtPiAoTnVtYmVyKSB0cmF2ZXJzZXIuZ2V0KCkpCi0gICAgICAgICAgICAgICAgICAgIC5mb2xkKEludGVnZXIuTUFYX1ZBTFVFLCBOdW1iZXJIZWxwZXI6Om1pbik7Ci0gICAgICAgIGVsc2UgaWYgKGVuZFN0ZXAgaW5zdGFuY2VvZiBNYXhHbG9iYWxTdGVwKQotICAgICAgICAgICAgcmVzdWx0ID0gbmV4dFJERAotICAgICAgICAgICAgICAgICAgICAubWFwKHRyYXZlcnNlciAtPiAoTnVtYmVyKSB0cmF2ZXJzZXIuZ2V0KCkpCi0gICAgICAgICAgICAgICAgICAgIC5mb2xkKEludGVnZXIuTUlOX1ZBTFVFLCBOdW1iZXJIZWxwZXI6Om1heCk7Ci0gICAgICAgIGVsc2UgaWYgKGVuZFN0ZXAgaW5zdGFuY2VvZiBGb2xkU3RlcCkgeworICAgICAgICB9IGVsc2UgaWYgKGVuZFN0ZXAgaW5zdGFuY2VvZiBNaW5HbG9iYWxTdGVwKSB7CisgICAgICAgICAgICByZXN1bHQgPSBuZXh0UkRELmlzRW1wdHkoKSA/IG51bGwgOiBuZXh0UkRECisgICAgICAgICAgICAgICAgICAgIC5tYXAodHJhdmVyc2VyIC0+IChDb21wYXJhYmxlKSB0cmF2ZXJzZXIuZ2V0KCkpCisgICAgICAgICAgICAgICAgICAgIC5mb2xkKERvdWJsZS5OYU4sIE51bWJlckhlbHBlcjo6bWluKTsKKyAgICAgICAgfSBlbHNlIGlmIChlbmRTdGVwIGluc3RhbmNlb2YgTWF4R2xvYmFsU3RlcCkgeworICAgICAgICAgICAgcmVzdWx0ID0gbmV4dFJERC5pc0VtcHR5KCkgPyBudWxsIDogbmV4dFJERAorICAgICAgICAgICAgICAgICAgICAubWFwKHRyYXZlcnNlciAtPiAoQ29tcGFyYWJsZSkgdHJhdmVyc2VyLmdldCgpKQorICAgICAgICAgICAgICAgICAgICAuZm9sZChEb3VibGUuTmFOLCBOdW1iZXJIZWxwZXI6Om1heCk7CisgICAgICAgIH0gZWxzZSBpZiAoZW5kU3RlcCBpbnN0YW5jZW9mIEZvbGRTdGVwKSB7CiAgICAgICAgICAgICBmaW5hbCBCaW5hcnlPcGVyYXRvciBiaU9wZXJhdG9yID0gZW5kU3RlcC5nZXRCaU9wZXJhdG9yKCk7CiAgICAgICAgICAgICByZXN1bHQgPSBuZXh0UkRELm1hcCh0cmF2ZXJzZXIgLT4gewogICAgICAgICAgICAgICAgIGlmIChlbmRTdGVwLmdldFNlZWRTdXBwbGllcigpIGluc3RhbmNlb2YgQXJyYXlMaXN0U3VwcGxpZXIpIHsKQEAgLTE0OCw5ICsxNTAsMTEgQEAKICAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCiAgICAgICAgIC8vIGdlbmVyYXRlIHRoZSBIQUxURURfVFJBVkVSU0VSUyBmb3IgdGhlIG1lbW9yeQotICAgICAgICBmaW5hbCBUcmF2ZXJzZXJTZXQ8TG9uZz4gaGFsdGVkVHJhdmVyc2VycyA9IG5ldyBUcmF2ZXJzZXJTZXQ8PigpOwotICAgICAgICBoYWx0ZWRUcmF2ZXJzZXJzLmFkZCh0cmF2ZXJzYWwuZ2V0VHJhdmVyc2VyR2VuZXJhdG9yKCkuZ2VuZXJhdGUocmVzdWx0LCBlbmRTdGVwLCAxbCkpOyAvLyBhbGwgcmVkdWNpbmcgYmFycmllciBzdGVwcyBwcm9kdWNlIGEgcmVzdWx0IG9mIGJ1bGsgMQotICAgICAgICBtZW1vcnkuc2V0KFRyYXZlcnNhbFZlcnRleFByb2dyYW0uSEFMVEVEX1RSQVZFUlNFUlMsIGhhbHRlZFRyYXZlcnNlcnMpOworICAgICAgICBpZiAocmVzdWx0ICE9IG51bGwpIHsKKyAgICAgICAgICAgIGZpbmFsIFRyYXZlcnNlclNldDxMb25nPiBoYWx0ZWRUcmF2ZXJzZXJzID0gbmV3IFRyYXZlcnNlclNldDw+KCk7CisgICAgICAgICAgICBoYWx0ZWRUcmF2ZXJzZXJzLmFkZCh0cmF2ZXJzYWwuZ2V0VHJhdmVyc2VyR2VuZXJhdG9yKCkuZ2VuZXJhdGUocmVzdWx0LCBlbmRTdGVwLCAxbCkpOyAvLyBhbGwgcmVkdWNpbmcgYmFycmllciBzdGVwcyBwcm9kdWNlIGEgcmVzdWx0IG9mIGJ1bGsgMQorICAgICAgICAgICAgbWVtb3J5LnNldChUcmF2ZXJzYWxWZXJ0ZXhQcm9ncmFtLkhBTFRFRF9UUkFWRVJTRVJTLCBoYWx0ZWRUcmF2ZXJzZXJzKTsKKyAgICAgICAgfQogICAgICAgICBtZW1vcnkuaW5jckl0ZXJhdGlvbigpOyAvLyBhbnkgbG9jYWwgc3RhciBncmFwaCByZWR1Y3Rpb24gdGFrZXMgYSBzaW5nbGUgaXRlcmF0aW9uCiAgICAgICAgIHJldHVybiBpbnB1dFJERDsKICAgICB9CmRpZmYgLS1naXQgYS9oYWRvb3AtZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vaGFkb29wL0hhZG9vcEdyZW1saW5TdWl0ZS5qYXZhIGIvc3BhcmstZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vaGFkb29wL0hhZG9vcEdyZW1saW5TdWl0ZS5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBoYWRvb3AtZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vaGFkb29wL0hhZG9vcEdyZW1saW5TdWl0ZS5qYXZhCnJlbmFtZSB0byBzcGFyay1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9oYWRvb3AvSGFkb29wR3JlbWxpblN1aXRlLmphdmEKZGlmZiAtLWdpdCBhL3NwYXJrLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2hhZG9vcC9zdHJ1Y3R1cmUvaW8vQWJzdHJhY3RJb1JlZ2lzdHJ5Q2hlY2suamF2YSBiL3NwYXJrLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2hhZG9vcC9zdHJ1Y3R1cmUvaW8vQWJzdHJhY3RJb1JlZ2lzdHJ5Q2hlY2suamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZDczMDQ4Ci0tLSAvZGV2L251bGwKKysrIGIvc3BhcmstZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vaGFkb29wL3N0cnVjdHVyZS9pby9BYnN0cmFjdElvUmVnaXN0cnlDaGVjay5qYXZhCkBAIC0wLDAgKzEsMTM3IEBACisvKgorICogIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqICB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5pbzsKKworaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLmlvLk51bGxXcml0YWJsZTsKK2ltcG9ydCBvcmcuYXBhY2hlLmhhZG9vcC5tYXByZWR1Y2UuUmVjb3JkV3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLm1hcHJlZHVjZS5UYXNrQXR0ZW1wdElEOworaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLm1hcHJlZHVjZS50YXNrLlRhc2tBdHRlbXB0Q29udGV4dEltcGw7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5BYnN0cmFjdEdyZW1saW5UZXN0OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uVGVzdEhlbHBlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5Db25zdGFudHM7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLkhhZG9vcEdyYXBoOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5pby5ncmFwaHNvbi5HcmFwaFNPTklucHV0Rm9ybWF0OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5pby5ncmFwaHNvbi5HcmFwaFNPTk91dHB1dEZvcm1hdDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuaW8uZ3JhcGhzb24uR3JhcGhTT05SZWNvcmRXcml0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLmlvLmdyeW8uR3J5b0lucHV0Rm9ybWF0OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5pby5ncnlvLkdyeW9PdXRwdXRGb3JtYXQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLmlvLmdyeW8uR3J5b1JlY29yZFdyaXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncnlvLlRveUlvUmVnaXN0cnk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3J5by5Ub3lQb2ludDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncnlvLlRveVRyaWFuZ2xlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS51dGlsLkNvbmZVdGlsOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5HcmFwaENvbXB1dGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVmVydGV4OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLklvUmVnaXN0cnk7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uU3RvcmFnZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby5ncnlvLkdyeW9Qb29sOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLmlvLmdyeW8uR3J5b1ZlcnNpb247CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUudXRpbC5zdGFyLlN0YXJHcmFwaDsKKworaW1wb3J0IGphdmEuaW8uRGF0YU91dHB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CitpbXBvcnQgamF2YS5pby5GaWxlT3V0cHV0U3RyZWFtOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5NYXA7CitpbXBvcnQgamF2YS51dGlsLnN0cmVhbS5Db2xsZWN0b3JzOworCitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydFRydWU7CisKKy8qKgorICogQGF1dGhvciBNYXJrbyBBLiBSb2RyaWd1ZXogKGh0dHA6Ly9tYXJrb3JvZHJpZ3Vlei5jb20pCisgKi8KK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdElvUmVnaXN0cnlDaGVjayBleHRlbmRzIEFic3RyYWN0R3JlbWxpblRlc3QgeworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE5VTUJFUl9PRl9WRVJUSUNFUyA9IDEwMDA7CisKKyAgICBwdWJsaWMgdm9pZCBjaGVja0dyeW9WMWQwSW9SZWdpc3RyeUNvbXBsaWFuY2UoZmluYWwgSGFkb29wR3JhcGggZ3JhcGgsIGZpbmFsIENsYXNzPD8gZXh0ZW5kcyBHcmFwaENvbXB1dGVyPiBncmFwaENvbXB1dGVyQ2xhc3MpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBmaW5hbCBGaWxlIGlucHV0ID0gVGVzdEhlbHBlci5nZW5lcmF0ZVRlbXBGaWxlKHRoaXMuZ2V0Q2xhc3MoKSwgImdyeW8taW8tcmVnaXN0cnkiLCAiLmtyeW8iKTsKKyAgICAgICAgZ3JhcGguY29uZmlndXJhdGlvbigpLnNldFByb3BlcnR5KENvbnN0YW50cy5HUkVNTElOX0hBRE9PUF9HUkFQSF9SRUFERVIsIEdyeW9JbnB1dEZvcm1hdC5jbGFzcy5nZXRDYW5vbmljYWxOYW1lKCkpOworICAgICAgICBncmFwaC5jb25maWd1cmF0aW9uKCkuc2V0UHJvcGVydHkoQ29uc3RhbnRzLkdSRU1MSU5fSEFET09QX0dSQVBIX1dSSVRFUiwgR3J5b091dHB1dEZvcm1hdC5jbGFzcy5nZXRDYW5vbmljYWxOYW1lKCkpOworICAgICAgICBncmFwaC5jb25maWd1cmF0aW9uKCkuc2V0UHJvcGVydHkoR3J5b1Bvb2wuQ09ORklHX0lPX0dSWU9fVkVSU0lPTiwgR3J5b1ZlcnNpb24uVjFfMC5uYW1lKCkpOworICAgICAgICBncmFwaC5jb25maWd1cmF0aW9uKCkuc2V0UHJvcGVydHkoQ29uc3RhbnRzLkdSRU1MSU5fSEFET09QX0lOUFVUX0xPQ0FUSU9OLCBTdG9yYWdlLnRvUGF0aChpbnB1dCkpOworICAgICAgICBncmFwaC5jb25maWd1cmF0aW9uKCkuc2V0UHJvcGVydHkoSW9SZWdpc3RyeS5JT19SRUdJU1RSWSwgVG95SW9SZWdpc3RyeS5jbGFzcy5nZXRDYW5vbmljYWxOYW1lKCkpOworICAgICAgICBmaW5hbCBHcnlvUmVjb3JkV3JpdGVyIHdyaXRlciA9IG5ldyBHcnlvUmVjb3JkV3JpdGVyKG5ldyBEYXRhT3V0cHV0U3RyZWFtKG5ldyBGaWxlT3V0cHV0U3RyZWFtKGlucHV0KSksIENvbmZVdGlsLm1ha2VIYWRvb3BDb25maWd1cmF0aW9uKGdyYXBoLmNvbmZpZ3VyYXRpb24oKSkpOworICAgICAgICB2YWxpZGF0ZUlvUmVnaXN0cnlHcmFwaChncmFwaCwgZ3JhcGhDb21wdXRlckNsYXNzLCB3cml0ZXIpOworICAgICAgICBhc3NlcnRUcnVlKGlucHV0LmRlbGV0ZSgpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBjaGVja0dyeW9WM2QwSW9SZWdpc3RyeUNvbXBsaWFuY2UoZmluYWwgSGFkb29wR3JhcGggZ3JhcGgsIGZpbmFsIENsYXNzPD8gZXh0ZW5kcyBHcmFwaENvbXB1dGVyPiBncmFwaENvbXB1dGVyQ2xhc3MpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBmaW5hbCBGaWxlIGlucHV0ID0gVGVzdEhlbHBlci5nZW5lcmF0ZVRlbXBGaWxlKHRoaXMuZ2V0Q2xhc3MoKSwgImdyeW8taW8tcmVnaXN0cnkiLCAiLmtyeW8iKTsKKyAgICAgICAgZ3JhcGguY29uZmlndXJhdGlvbigpLnNldFByb3BlcnR5KENvbnN0YW50cy5HUkVNTElOX0hBRE9PUF9HUkFQSF9SRUFERVIsIEdyeW9JbnB1dEZvcm1hdC5jbGFzcy5nZXRDYW5vbmljYWxOYW1lKCkpOworICAgICAgICBncmFwaC5jb25maWd1cmF0aW9uKCkuc2V0UHJvcGVydHkoQ29uc3RhbnRzLkdSRU1MSU5fSEFET09QX0dSQVBIX1dSSVRFUiwgR3J5b091dHB1dEZvcm1hdC5jbGFzcy5nZXRDYW5vbmljYWxOYW1lKCkpOworICAgICAgICBncmFwaC5jb25maWd1cmF0aW9uKCkuc2V0UHJvcGVydHkoQ29uc3RhbnRzLkdSRU1MSU5fSEFET09QX0lOUFVUX0xPQ0FUSU9OLCBTdG9yYWdlLnRvUGF0aChpbnB1dCkpOworICAgICAgICBncmFwaC5jb25maWd1cmF0aW9uKCkuc2V0UHJvcGVydHkoR3J5b1Bvb2wuQ09ORklHX0lPX0dSWU9fVkVSU0lPTiwgR3J5b1ZlcnNpb24uVjNfMC5uYW1lKCkpOworICAgICAgICBncmFwaC5jb25maWd1cmF0aW9uKCkuc2V0UHJvcGVydHkoSW9SZWdpc3RyeS5JT19SRUdJU1RSWSwgVG95SW9SZWdpc3RyeS5jbGFzcy5nZXRDYW5vbmljYWxOYW1lKCkpOworICAgICAgICBmaW5hbCBHcnlvUmVjb3JkV3JpdGVyIHdyaXRlciA9IG5ldyBHcnlvUmVjb3JkV3JpdGVyKG5ldyBEYXRhT3V0cHV0U3RyZWFtKG5ldyBGaWxlT3V0cHV0U3RyZWFtKGlucHV0KSksIENvbmZVdGlsLm1ha2VIYWRvb3BDb25maWd1cmF0aW9uKGdyYXBoLmNvbmZpZ3VyYXRpb24oKSkpOworICAgICAgICB2YWxpZGF0ZUlvUmVnaXN0cnlHcmFwaChncmFwaCwgZ3JhcGhDb21wdXRlckNsYXNzLCB3cml0ZXIpOworICAgICAgICBhc3NlcnRUcnVlKGlucHV0LmRlbGV0ZSgpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBjaGVja0dyYXBoU09OSW9SZWdpc3RyeUNvbXBsaWFuY2UoZmluYWwgSGFkb29wR3JhcGggZ3JhcGgsIGZpbmFsIENsYXNzPD8gZXh0ZW5kcyBHcmFwaENvbXB1dGVyPiBncmFwaENvbXB1dGVyQ2xhc3MpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBmaW5hbCBGaWxlIGlucHV0ID0gVGVzdEhlbHBlci5nZW5lcmF0ZVRlbXBGaWxlKHRoaXMuZ2V0Q2xhc3MoKSwgImdyYXBoc29uLWlvLXJlZ2lzdHJ5IiwgIi5qc29uIik7CisgICAgICAgIGdyYXBoLmNvbmZpZ3VyYXRpb24oKS5zZXRQcm9wZXJ0eShDb25zdGFudHMuR1JFTUxJTl9IQURPT1BfR1JBUEhfUkVBREVSLCBHcmFwaFNPTklucHV0Rm9ybWF0LmNsYXNzLmdldENhbm9uaWNhbE5hbWUoKSk7CisgICAgICAgIGdyYXBoLmNvbmZpZ3VyYXRpb24oKS5zZXRQcm9wZXJ0eShDb25zdGFudHMuR1JFTUxJTl9IQURPT1BfR1JBUEhfV1JJVEVSLCBHcmFwaFNPTk91dHB1dEZvcm1hdC5jbGFzcy5nZXRDYW5vbmljYWxOYW1lKCkpOworICAgICAgICBncmFwaC5jb25maWd1cmF0aW9uKCkuc2V0UHJvcGVydHkoQ29uc3RhbnRzLkdSRU1MSU5fSEFET09QX0lOUFVUX0xPQ0FUSU9OLCBTdG9yYWdlLnRvUGF0aChpbnB1dCkpOworICAgICAgICBncmFwaC5jb25maWd1cmF0aW9uKCkuc2V0UHJvcGVydHkoSW9SZWdpc3RyeS5JT19SRUdJU1RSWSwgVG95SW9SZWdpc3RyeS5jbGFzcy5nZXRDYW5vbmljYWxOYW1lKCkpOworICAgICAgICBmaW5hbCBHcmFwaFNPTlJlY29yZFdyaXRlciB3cml0ZXIgPSBuZXcgR3JhcGhTT05SZWNvcmRXcml0ZXIobmV3IERhdGFPdXRwdXRTdHJlYW0obmV3IEZpbGVPdXRwdXRTdHJlYW0oaW5wdXQpKSwgQ29uZlV0aWwubWFrZUhhZG9vcENvbmZpZ3VyYXRpb24oZ3JhcGguY29uZmlndXJhdGlvbigpKSk7CisgICAgICAgIHZhbGlkYXRlSW9SZWdpc3RyeUdyYXBoKGdyYXBoLCBncmFwaENvbXB1dGVyQ2xhc3MsIHdyaXRlcik7CisgICAgICAgIGFzc2VydFRydWUoaW5wdXQuZGVsZXRlKCkpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCB2YWxpZGF0ZUlvUmVnaXN0cnlHcmFwaChmaW5hbCBIYWRvb3BHcmFwaCBncmFwaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgQ2xhc3M8PyBleHRlbmRzIEdyYXBoQ29tcHV0ZXI+IGdyYXBoQ29tcHV0ZXJDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgUmVjb3JkV3JpdGVyPE51bGxXcml0YWJsZSwgVmVydGV4V3JpdGFibGU+IHdyaXRlcikgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE5VTUJFUl9PRl9WRVJUSUNFUzsgaSsrKSB7CisgICAgICAgICAgICBmaW5hbCBTdGFyR3JhcGggc3RhckdyYXBoID0gU3RhckdyYXBoLm9wZW4oKTsKKyAgICAgICAgICAgIFZlcnRleCB2ZXJ0ZXggPSBzdGFyR3JhcGguYWRkVmVydGV4KFQubGFiZWwsICJwbGFjZSIsIFQuaWQsIGksICJwb2ludCIsIG5ldyBUb3lQb2ludChpLCBpICogMTApLCAibWVzc2FnZSIsICJJJ20gIiArIGksICJ0cmlhbmdsZSIsIG5ldyBUb3lUcmlhbmdsZShpLCBpICogMTAsIGkgKiAxMDApKTsKKyAgICAgICAgICAgIHZlcnRleC5hZGRFZGdlKCJjb25uZWN0aW9uIiwgc3RhckdyYXBoLmFkZFZlcnRleChULmlkLCBpID4gMCA/IGkgLSAxIDogTlVNQkVSX09GX1ZFUlRJQ0VTIC0gMSkpOworICAgICAgICAgICAgd3JpdGVyLndyaXRlKE51bGxXcml0YWJsZS5nZXQoKSwgbmV3IFZlcnRleFdyaXRhYmxlKHN0YXJHcmFwaC5nZXRTdGFyVmVydGV4KCkpKTsKKyAgICAgICAgfQorICAgICAgICB3cml0ZXIuY2xvc2UobmV3IFRhc2tBdHRlbXB0Q29udGV4dEltcGwoQ29uZlV0aWwubWFrZUhhZG9vcENvbmZpZ3VyYXRpb24oZ3JhcGguY29uZmlndXJhdGlvbigpKSwgbmV3IFRhc2tBdHRlbXB0SUQoKSkpOworCisgICAgICAgIC8vIE9MQVAgVEVTVElORyAvLworICAgICAgICB2YWxpZGF0ZVBvaW50VHJpYW5nbGVzKGdyYXBoLnRyYXZlcnNhbCgpLndpdGhDb21wdXRlcihncmFwaENvbXB1dGVyQ2xhc3MpLlYoKS5wcm9qZWN0KCJwb2ludCIsICJ0cmlhbmdsZSIpLmJ5KCJwb2ludCIpLmJ5KCJ0cmlhbmdsZSIpLnRvTGlzdCgpKTsKKyAgICAgICAgdmFsaWRhdGVQb2ludFRyaWFuZ2xlcyhncmFwaC50cmF2ZXJzYWwoKS53aXRoQ29tcHV0ZXIoZ3JhcGhDb21wdXRlckNsYXNzKS5WKCkub3V0KCkucHJvamVjdCgicG9pbnQiLCAidHJpYW5nbGUiKS5ieSgicG9pbnQiKS5ieSgidHJpYW5nbGUiKS50b0xpc3QoKSk7CisgICAgICAgIHZhbGlkYXRlUG9pbnRUcmlhbmdsZXMoZ3JhcGgudHJhdmVyc2FsKCkud2l0aENvbXB1dGVyKGdyYXBoQ29tcHV0ZXJDbGFzcykuVigpLm91dCgpLm91dCgpLnByb2plY3QoInBvaW50IiwgInRyaWFuZ2xlIikuYnkoInBvaW50IikuYnkoInRyaWFuZ2xlIikudG9MaXN0KCkpOworICAgICAgICAvLyBPTFRQIFRFU1RJTkcgLy8KKyAgICAgICAgdmFsaWRhdGVQb2ludFRyaWFuZ2xlcyhncmFwaC50cmF2ZXJzYWwoKS5WKCkucHJvamVjdCgicG9pbnQiLCAidHJpYW5nbGUiKS5ieSgicG9pbnQiKS5ieSgidHJpYW5nbGUiKS50b0xpc3QoKSk7CisgICAgICAgIC8vIEhERlMgVEVTVElORyAvLworICAgICAgICAvKnZhbGlkYXRlUG9pbnRUcmlhbmdsZXMoSXRlcmF0b3JVdGlscy48TWFwPFN0cmluZywgT2JqZWN0Pj5hc0xpc3QoSXRlcmF0b3JVdGlscy48VmVydGV4LCBNYXA8U3RyaW5nLCBPYmplY3Q+Pm1hcChGaWxlU3lzdGVtU3RvcmFnZS5vcGVuKENvbmZVdGlsLm1ha2VIYWRvb3BDb25maWd1cmF0aW9uKGdyYXBoLmNvbmZpZ3VyYXRpb24oKSkpLmhlYWQoZ3JhcGguY29uZmlndXJhdGlvbigpLmdldElucHV0TG9jYXRpb24oKSwgZ3JhcGguY29uZmlndXJhdGlvbigpLmdldEdyYXBoUmVhZGVyKCkpLAorICAgICAgICAgICAgICAgIHZlcnRleCAtPiB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSGFzaE1hcDxTdHJpbmcsIE9iamVjdD4oKSB7eworICAgICAgICAgICAgICAgICAgICAgICAgcHV0KCJwb2ludCIsIHZlcnRleC52YWx1ZSgicG9pbnQiKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXQoInRyaWFuZ2xlIiwgdmVydGV4LnZhbHVlKCJ0cmlhbmdsZSIpKTsKKyAgICAgICAgICAgICAgICAgICAgfX07CisgICAgICAgICAgICAgICAgfSkpKTsqLworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCB2YWxpZGF0ZVBvaW50VHJpYW5nbGVzKGZpbmFsIExpc3Q8TWFwPFN0cmluZywgT2JqZWN0Pj4gdmFsdWVzKSB7CisgICAgICAgIGFzc2VydEVxdWFscyhOVU1CRVJfT0ZfVkVSVElDRVMsIHZhbHVlcy5zaXplKCkpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE5VTUJFUl9PRl9WRVJUSUNFUzsgaSsrKSB7CisgICAgICAgICAgICBhc3NlcnRUcnVlKHZhbHVlcy5zdHJlYW0oKS5tYXAobSAtPiBtLjxUb3lQb2ludD5nZXQoInBvaW50IikpLmNvbGxlY3QoQ29sbGVjdG9ycy50b0xpc3QoKSkuY29udGFpbnMobmV3IFRveVBvaW50KGksIGkgKiAxMCkpKTsKKyAgICAgICAgICAgIGFzc2VydFRydWUodmFsdWVzLnN0cmVhbSgpLm1hcChtIC0+IG0uPFRveVRyaWFuZ2xlPmdldCgidHJpYW5nbGUiKSkuY29sbGVjdChDb2xsZWN0b3JzLnRvTGlzdCgpKS5jb250YWlucyhuZXcgVG95VHJpYW5nbGUoaSwgaSAqIDEwLCBpICogMTAwKSkpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvaGFkb29wLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2hhZG9vcC9zdHJ1Y3R1cmUvaW8vQWJzdHJhY3RTdG9yYWdlQ2hlY2suamF2YSBiL3NwYXJrLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2hhZG9vcC9zdHJ1Y3R1cmUvaW8vQWJzdHJhY3RTdG9yYWdlQ2hlY2suamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaGFkb29wLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2hhZG9vcC9zdHJ1Y3R1cmUvaW8vQWJzdHJhY3RTdG9yYWdlQ2hlY2suamF2YQpyZW5hbWUgdG8gc3BhcmstZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vaGFkb29wL3N0cnVjdHVyZS9pby9BYnN0cmFjdFN0b3JhZ2VDaGVjay5qYXZhCmRpZmYgLS1naXQgYS9oYWRvb3AtZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vaGFkb29wL3N0cnVjdHVyZS9pby9GaWxlU3lzdGVtU3RvcmFnZUNoZWNrLmphdmEgYi9zcGFyay1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9oYWRvb3Avc3RydWN0dXJlL2lvL0ZpbGVTeXN0ZW1TdG9yYWdlQ2hlY2suamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaGFkb29wLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL2hhZG9vcC9zdHJ1Y3R1cmUvaW8vRmlsZVN5c3RlbVN0b3JhZ2VDaGVjay5qYXZhCnJlbmFtZSB0byBzcGFyay1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9oYWRvb3Avc3RydWN0dXJlL2lvL0ZpbGVTeXN0ZW1TdG9yYWdlQ2hlY2suamF2YQpkaWZmIC0tZ2l0IGEvc3BhcmstZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3BhcmsvcHJvY2Vzcy9jb21wdXRlci9Mb2NhbFByb3BlcnR5VGVzdC5qYXZhIGIvc3BhcmstZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3BhcmsvcHJvY2Vzcy9jb21wdXRlci9Mb2NhbFByb3BlcnR5VGVzdC5qYXZhCmluZGV4IGExNTBhYmIuLmM2YjZlOGEgMTAwNjQ0Ci0tLSBhL3NwYXJrLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NwYXJrL3Byb2Nlc3MvY29tcHV0ZXIvTG9jYWxQcm9wZXJ0eVRlc3QuamF2YQorKysgYi9zcGFyay1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zcGFyay9wcm9jZXNzL2NvbXB1dGVyL0xvY2FsUHJvcGVydHlUZXN0LmphdmEKQEAgLTg0LDcgKzg0LDEyIEBACiAgICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0UHJvcGVydHkoQ29uc3RhbnRzLkdSRU1MSU5fSEFET09QX0lOUFVUX0xPQ0FUSU9OLCByZGROYW1lKTsKICAgICAgICAgY29uZmlndXJhdGlvbi5zZXRQcm9wZXJ0eShDb25zdGFudHMuR1JFTUxJTl9IQURPT1BfR1JBUEhfV1JJVEVSLCBudWxsKTsKICAgICAgICAgY29uZmlndXJhdGlvbi5zZXRQcm9wZXJ0eShDb25zdGFudHMuR1JFTUxJTl9IQURPT1BfT1VUUFVUX0xPQ0FUSU9OLCBudWxsKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXRQcm9wZXJ0eShDb25zdGFudHMuR1JFTUxJTl9TUEFSS19QRVJTSVNUX0NPTlRFWFQsIGZhbHNlKTsKKworICAgICAgICAvLyBqdXN0IGEgbm90ZSB0aGF0IHRoaXMgdmFsdWUgc2hvdWxkIGhhdmUgYWx3YXlzIGJlZW4gc2V0IHRvIHRydWUsIGJ1dCBmcm9tIHRoZSBpbml0aWFsIGNvbW1pdCB3YXMgZmFsc2UuCisgICAgICAgIC8vIGludGVyZXN0aW5nbHkgdGhlIGxhc3QgYXNzZXJ0aW9uIGhhZCBhbHdheXMgcGFzc2VkIHVwIHRvIHNwYXJrIDIuMy54IHdoZW4gaXQgc3RhcnRlZCB0byBmYWlsLiBhcHBhcmVudGx5CisgICAgICAgIC8vIHRoYXQgYXNzZXJ0aW9uIHNob3VsZCBsaWtlbHkgaGF2ZSBuZXZlciBwYXNzZWQsIHNvIGl0IHN0YW5kcyB0byByZWFzb24gdGhhdCB0aGVyZSB3YXMgYSBidWcgaW4gc3BhcmsgaW4KKyAgICAgICAgLy8gMi4yLnggdGhhdCB3YXMgcmVzb2x2ZWQgZm9yIDIuMy54Li4uLnRoYXQncyBteSBzdG9yeSBhbmQgaSdtIHN0aWNraW5nIHRvIGl0LgorICAgICAgICBjb25maWd1cmF0aW9uLnNldFByb3BlcnR5KENvbnN0YW50cy5HUkVNTElOX1NQQVJLX1BFUlNJU1RfQ09OVEVYVCwgdHJ1ZSk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0UHJvcGVydHkoInNwYXJrLmpvYkdyb3VwLmlkIiwgIjQ0Iik7CiAgICAgICAgIGdyYXBoID0gR3JhcGhGYWN0b3J5Lm9wZW4oY29uZmlndXJhdGlvbik7CiAgICAgICAgIGdyYXBoLmNvbXB1dGUoU3BhcmtHcmFwaENvbXB1dGVyLmNsYXNzKQpkaWZmIC0tZ2l0IGEvc3BhcmstZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3BhcmsvcHJvY2Vzcy9jb21wdXRlci9TcGFya0hhZG9vcEdyYXBoUHJvdmlkZXIuamF2YSBiL3NwYXJrLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NwYXJrL3Byb2Nlc3MvY29tcHV0ZXIvU3BhcmtIYWRvb3BHcmFwaFByb3ZpZGVyLmphdmEKaW5kZXggNjQ0NDg0Zi4uNmMxZWZiMSAxMDA2NDQKLS0tIGEvc3BhcmstZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3BhcmsvcHJvY2Vzcy9jb21wdXRlci9TcGFya0hhZG9vcEdyYXBoUHJvdmlkZXIuamF2YQorKysgYi9zcGFyay1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zcGFyay9wcm9jZXNzL2NvbXB1dGVyL1NwYXJrSGFkb29wR3JhcGhQcm92aWRlci5qYXZhCkBAIC0yMCwxOCArMjAsMzAgQEAKIAogaW1wb3J0IG9yZy5hcGFjaGUuc3BhcmsubGF1bmNoZXIuU3BhcmtMYXVuY2hlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnNwYXJrLnNlcmlhbGl6ZXIuS3J5b1NlcmlhbGl6ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5BYnN0cmFjdEZpbGVHcmFwaFByb3ZpZGVyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uR3JhcGhQcm92aWRlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLkxvYWRHcmFwaFdpdGg7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3AuQ29uc3RhbnRzOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLkhhZG9vcEdyYXBoUHJvdmlkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLkhhZG9vcEVkZ2U7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLkhhZG9vcEVsZW1lbnQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLkhhZG9vcEdyYXBoOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5IYWRvb3BQcm9wZXJ0eTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuSGFkb29wVmVydGV4OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5IYWRvb3BWZXJ0ZXhQcm9wZXJ0eTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuaW8uRmlsZVN5c3RlbVN0b3JhZ2VDaGVjazsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5zdHJ1Y3R1cmUuaW8uSGFkb29wUG9vbHM7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLmlvLmdyYXBoc29uLkdyYXBoU09OSW5wdXRGb3JtYXQ7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5oYWRvb3Auc3RydWN0dXJlLmlvLmdyeW8uR3J5b0lucHV0Rm9ybWF0OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uaGFkb29wLnN0cnVjdHVyZS5pby5ncnlvLkdyeW9PdXRwdXRGb3JtYXQ7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLkNvbXB1dGVyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5HcmFwaENvbXB1dGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci51dGlsLkNvbXB1dGVyR3JhcGg7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguR3JhcGhUcmF2ZXJzYWxTb3VyY2U7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLm1hcC5Db25uZWN0ZWRDb21wb25lbnRUZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuUGFnZVJhbmtUZXN0OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuUGVlclByZXNzdXJlVGVzdDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLlByb2dyYW1UZXN0OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuU2hvcnRlc3RQYXRoVGVzdDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNwYXJrLnN0cnVjdHVyZS5TcGFyazsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNwYXJrLnN0cnVjdHVyZS5pby5QZXJzaXN0ZWRPdXRwdXRSREQ7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zcGFyay5zdHJ1Y3R1cmUuaW8uU3BhcmtDb250ZXh0U3RvcmFnZUNoZWNrOwpAQCAtNDAsMTkgKzUyLDUxIEBACiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGg7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuaW8uZ3J5by5rcnlvc2hpbS5LcnlvU2hpbVNlcnZpY2VMb2FkZXI7CiAKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7CitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CitpbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7CiBpbXBvcnQgamF2YS51dGlsLk1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuU2V0OwogCiAvKioKICAqIEBhdXRob3IgTWFya28gQS4gUm9kcmlndWV6IChodHRwOi8vbWFya29yb2RyaWd1ZXouY29tKQorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQogICovCiBAR3JhcGhQcm92aWRlci5EZXNjcmlwdG9yKGNvbXB1dGVyID0gU3BhcmtHcmFwaENvbXB1dGVyLmNsYXNzKQotcHVibGljIGNsYXNzIFNwYXJrSGFkb29wR3JhcGhQcm92aWRlciBleHRlbmRzIEhhZG9vcEdyYXBoUHJvdmlkZXIgeworcHVibGljIGNsYXNzIFNwYXJrSGFkb29wR3JhcGhQcm92aWRlciBleHRlbmRzIEFic3RyYWN0RmlsZUdyYXBoUHJvdmlkZXIgewogCi0gICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgUFJFVklPVVNfU1BBUktfUFJPVklERVIgPSAicHJldmlvdXMuc3BhcmsucHJvdmlkZXIiOworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgUFJFVklPVVNfU1BBUktfUFJPVklERVIgPSAicHJldmlvdXMuc3BhcmsucHJvdmlkZXIiOwogICAgIHByaXZhdGUgZmluYWwgaW50IEFWQUlMQUJMRV9QUk9DRVNTT1JTID0gUnVudGltZS5nZXRSdW50aW1lKCkuYXZhaWxhYmxlUHJvY2Vzc29ycygpOwogCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTZXQ8Q2xhc3M+IElNUExFTUVOVEFUSU9OID0gQ29sbGVjdGlvbnMudW5tb2RpZmlhYmxlU2V0KG5ldyBIYXNoU2V0PENsYXNzPigpIHt7CisgICAgICAgIGFkZChIYWRvb3BFZGdlLmNsYXNzKTsKKyAgICAgICAgYWRkKEhhZG9vcEVsZW1lbnQuY2xhc3MpOworICAgICAgICBhZGQoSGFkb29wR3JhcGguY2xhc3MpOworICAgICAgICBhZGQoSGFkb29wUHJvcGVydHkuY2xhc3MpOworICAgICAgICBhZGQoSGFkb29wVmVydGV4LmNsYXNzKTsKKyAgICAgICAgYWRkKEhhZG9vcFZlcnRleFByb3BlcnR5LmNsYXNzKTsKKyAgICAgICAgYWRkKENvbXB1dGVyR3JhcGguY2xhc3MpOworICAgICAgICBhZGQoQ29tcHV0ZXJHcmFwaC5Db21wdXRlckVsZW1lbnQuY2xhc3MpOworICAgICAgICBhZGQoQ29tcHV0ZXJHcmFwaC5Db21wdXRlclZlcnRleC5jbGFzcyk7CisgICAgICAgIGFkZChDb21wdXRlckdyYXBoLkNvbXB1dGVyRWRnZS5jbGFzcyk7CisgICAgICAgIGFkZChDb21wdXRlckdyYXBoLkNvbXB1dGVyVmVydGV4UHJvcGVydHkuY2xhc3MpOworICAgICAgICBhZGQoQ29tcHV0ZXJHcmFwaC5Db21wdXRlckFkamFjZW50VmVydGV4LmNsYXNzKTsKKyAgICAgICAgYWRkKENvbXB1dGVyR3JhcGguQ29tcHV0ZXJQcm9wZXJ0eS5jbGFzcyk7CisgICAgfX0pOworCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgbG9hZEdyYXBoRGF0YShmaW5hbCBHcmFwaCBncmFwaCwgZmluYWwgTG9hZEdyYXBoV2l0aCBsb2FkR3JhcGhXaXRoLCBmaW5hbCBDbGFzcyB0ZXN0Q2xhc3MsIGZpbmFsIFN0cmluZyB0ZXN0TmFtZSkgeworICAgICAgICBpZiAobG9hZEdyYXBoV2l0aCAhPSBudWxsKSAoKEhhZG9vcEdyYXBoKSBncmFwaCkuY29uZmlndXJhdGlvbigpLnNldElucHV0TG9jYXRpb24oZ2V0SW5wdXRMb2NhdGlvbihncmFwaCwgbG9hZEdyYXBoV2l0aC52YWx1ZSgpKSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFNldDxDbGFzcz4gZ2V0SW1wbGVtZW50YXRpb25zKCkgeworICAgICAgICByZXR1cm4gSU1QTEVNRU5UQVRJT047CisgICAgfQorCiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIE1hcDxTdHJpbmcsIE9iamVjdD4gZ2V0QmFzZUNvbmZpZ3VyYXRpb24oZmluYWwgU3RyaW5nIGdyYXBoTmFtZSwgZmluYWwgQ2xhc3M8Pz4gdGVzdCwgZmluYWwgU3RyaW5nIHRlc3RNZXRob2ROYW1lLCBmaW5hbCBMb2FkR3JhcGhXaXRoLkdyYXBoRGF0YSBsb2FkR3JhcGhXaXRoKSB7CisgICAgICAgIHRoaXMuZ3JhcGhTT05JbnB1dCA9IFJBTkRPTS5uZXh0Qm9vbGVhbigpOwogICAgICAgICBpZiAodGhpcy5nZXRDbGFzcygpLmVxdWFscyhTcGFya0hhZG9vcEdyYXBoUHJvdmlkZXIuY2xhc3MpICYmICFTcGFya0hhZG9vcEdyYXBoUHJvdmlkZXIuY2xhc3MuZ2V0Q2Fub25pY2FsTmFtZSgpLmVxdWFscyhTeXN0ZW0uZ2V0UHJvcGVydHkoUFJFVklPVVNfU1BBUktfUFJPVklERVIsIG51bGwpKSkgewogICAgICAgICAgICAgU3BhcmsuY2xvc2UoKTsKICAgICAgICAgICAgIEhhZG9vcFBvb2xzLmNsb3NlKCk7CkBAIC02MCwxMyArMTA0LDIyIEBACiAgICAgICAgICAgICBTeXN0ZW0uc2V0UHJvcGVydHkoUFJFVklPVVNfU1BBUktfUFJPVklERVIsIFNwYXJrSGFkb29wR3JhcGhQcm92aWRlci5jbGFzcy5nZXRDYW5vbmljYWxOYW1lKCkpOwogICAgICAgICB9CiAKLSAgICAgICAgZmluYWwgTWFwPFN0cmluZywgT2JqZWN0PiBjb25maWcgPSBzdXBlci5nZXRCYXNlQ29uZmlndXJhdGlvbihncmFwaE5hbWUsIHRlc3QsIHRlc3RNZXRob2ROYW1lLCBsb2FkR3JhcGhXaXRoKTsKLSAgICAgICAgY29uZmlnLnB1dChDb25zdGFudHMuR1JFTUxJTl9TUEFSS19QRVJTSVNUX0NPTlRFWFQsIHRydWUpOyAgLy8gdGhpcyBtYWtlcyB0aGUgdGVzdCBzdWl0ZSBnbyByZWFsbHkgZmFzdAorICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLE9iamVjdD4gY29uZmlnID0gbmV3IEhhc2hNYXA8U3RyaW5nLCBPYmplY3Q+KCkge3sKKyAgICAgICAgICAgIHB1dChHcmFwaC5HUkFQSCwgSGFkb29wR3JhcGguY2xhc3MuZ2V0TmFtZSgpKTsKKyAgICAgICAgICAgIHB1dChDb25zdGFudHMuR1JFTUxJTl9IQURPT1BfR1JBUEhfUkVBREVSLCBncmFwaFNPTklucHV0ID8gR3JhcGhTT05JbnB1dEZvcm1hdC5jbGFzcy5nZXRDYW5vbmljYWxOYW1lKCkgOiBHcnlvSW5wdXRGb3JtYXQuY2xhc3MuZ2V0Q2Fub25pY2FsTmFtZSgpKTsKKyAgICAgICAgICAgIHB1dChDb25zdGFudHMuR1JFTUxJTl9IQURPT1BfR1JBUEhfV1JJVEVSLCBHcnlvT3V0cHV0Rm9ybWF0LmNsYXNzLmdldENhbm9uaWNhbE5hbWUoKSk7CisgICAgICAgICAgICBwdXQoQ29uc3RhbnRzLkdSRU1MSU5fSEFET09QX09VVFBVVF9MT0NBVElPTiwgZ2V0V29ya2luZ0RpcmVjdG9yeSgpKTsKKyAgICAgICAgICAgIHB1dChDb25zdGFudHMuR1JFTUxJTl9IQURPT1BfSkFSU19JTl9ESVNUUklCVVRFRF9DQUNIRSwgZmFsc2UpOworCisgICAgICAgICAgICBwdXQoQ29uc3RhbnRzLkdSRU1MSU5fU1BBUktfUEVSU0lTVF9DT05URVhULCB0cnVlKTsgIC8vIHRoaXMgbWFrZXMgdGhlIHRlc3Qgc3VpdGUgZ28gcmVhbGx5IGZhc3QKKyAgICAgICAgfX07CiAKICAgICAgICAgLy8gdG95IGdyYXBoIGlucHV0UkREIGRvZXMgbm90IGhhdmUgY29ycmVzcG9uZGluZyBvdXRwdXRSREQgc28gd2hlcmUgam9icyBjaGFpbiwgaXQgZmFpbHMgKGZhaWxpbmcgbWFrZXMgc2Vuc2UpCiAgICAgICAgIGlmIChudWxsICE9IGxvYWRHcmFwaFdpdGggJiYKICAgICAgICAgICAgICAgICAhdGVzdC5lcXVhbHMoUHJvZ3JhbVRlc3QuVHJhdmVyc2Fscy5jbGFzcykgJiYKICAgICAgICAgICAgICAgICAhdGVzdC5lcXVhbHMoUGFnZVJhbmtUZXN0LlRyYXZlcnNhbHMuY2xhc3MpICYmCisgICAgICAgICAgICAgICAgIXRlc3QuZXF1YWxzKENvbm5lY3RlZENvbXBvbmVudFRlc3QuVHJhdmVyc2Fscy5jbGFzcykgJiYKKyAgICAgICAgICAgICAgICAhdGVzdC5lcXVhbHMoU2hvcnRlc3RQYXRoVGVzdC5UcmF2ZXJzYWxzLmNsYXNzKSAmJgogICAgICAgICAgICAgICAgICF0ZXN0LmVxdWFscyhQZWVyUHJlc3N1cmVUZXN0LlRyYXZlcnNhbHMuY2xhc3MpICYmCiAgICAgICAgICAgICAgICAgIXRlc3QuZXF1YWxzKEZpbGVTeXN0ZW1TdG9yYWdlQ2hlY2suY2xhc3MpICYmCiAgICAgICAgICAgICAgICAgIXRlc3RNZXRob2ROYW1lLmVxdWFscygic2hvdWxkU3VwcG9ydEpvYkNoYWluaW5nIikgJiYgIC8vIEdyYXBoQ29tcHV0ZXJUZXN0LnNob3VsZFN1cHBvcnRKb2JDaGFpbmluZwpkaWZmIC0tZ2l0IGEvc3BhcmstZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3BhcmsvdXRpbC9TdWdhclRlc3RIZWxwZXIuamF2YSBiL3NwYXJrLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NwYXJrL3V0aWwvU3VnYXJUZXN0SGVscGVyLmphdmEKaW5kZXggOGQ3YTk3NS4uYWMxNGZjMCAxMDA2NDQKLS0tIGEvc3BhcmstZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3BhcmsvdXRpbC9TdWdhclRlc3RIZWxwZXIuamF2YQorKysgYi9zcGFyay1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zcGFyay91dGlsL1N1Z2FyVGVzdEhlbHBlci5qYXZhCkBAIC0xOSw3ICsxOSw2IEBACiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3BhcmsudXRpbDsKIAogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uZ3Jvb3Z5LnV0aWwuTWV0YVJlZ2lzdHJ5VXRpbDsKLWltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmhhZG9vcC5IYWRvb3BHcmFwaFByb3ZpZGVyOwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkRlZmF1bHRHcmFwaFRyYXZlcnNhbDsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5HcmFwaFRyYXZlcnNhbFNvdXJjZTsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5fXzsKQEAgLTI4LDYgKzI3LDcgQEAKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci5CX09fU19TRV9TTF9UcmF2ZXJzZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC50cmF2ZXJzZXIuQl9PX1RyYXZlcnNlcjsKIGltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnRyYXZlcnNlci5PX1RyYXZlcnNlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNwYXJrLnByb2Nlc3MuY29tcHV0ZXIuU3BhcmtIYWRvb3BHcmFwaFByb3ZpZGVyOwogCiBpbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7CiBpbXBvcnQgamF2YS51dGlsLlNldDsKQEAgLTUzLDcgKzUzLDcgQEAKICAgICAgKi8KICAgICBwdWJsaWMgc3RhdGljIHZvaWQgY2xlYXJSZWdpc3RyeSgpIHsKICAgICAgICAgZmluYWwgU2V0PENsYXNzPiBpbXBsZW1lbnRhdGlvbnNUb0NsZWFyID0gbmV3IEhhc2hTZXQ8PihDT1JFX0lNUExFTUVOVEFUSU9OUyk7Ci0gICAgICAgIGltcGxlbWVudGF0aW9uc1RvQ2xlYXIuYWRkQWxsKEhhZG9vcEdyYXBoUHJvdmlkZXIuSU1QTEVNRU5UQVRJT04pOworICAgICAgICBpbXBsZW1lbnRhdGlvbnNUb0NsZWFyLmFkZEFsbChTcGFya0hhZG9vcEdyYXBoUHJvdmlkZXIuSU1QTEVNRU5UQVRJT04pOwogCiAgICAgICAgIE1ldGFSZWdpc3RyeVV0aWwuY2xlYXJSZWdpc3RyeShpbXBsZW1lbnRhdGlvbnNUb0NsZWFyKTsKICAgICB9CmRpZmYgLS1naXQgYS9zcGFycWwtZ3JlbWxpbi9wb20ueG1sIGIvc3BhcnFsLWdyZW1saW4vcG9tLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mN2ZlNDQ2Ci0tLSAvZGV2L251bGwKKysrIGIvc3BhcnFsLWdyZW1saW4vcG9tLnhtbApAQCAtMCwwICsxLDQ4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2plY3QgeG1sbnM9Imh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL1BPTS80LjAuMCIKKyAgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiCisgICAgICAgICB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL1BPTS80LjAuMCBodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy94c2QvbWF2ZW4tNC4wLjAueHNkIj4KKyAgICA8bW9kZWxWZXJzaW9uPjQuMC4wPC9tb2RlbFZlcnNpb24+CisgICAgPHBhcmVudD4KKyAgICAgICAgPGFydGlmYWN0SWQ+dGlua2VycG9wPC9hcnRpZmFjdElkPgorICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLnRpbmtlcnBvcDwvZ3JvdXBJZD4KKyAgICAgICAgPHZlcnNpb24+My40LjctU05BUFNIT1Q8L3ZlcnNpb24+CisgICAgPC9wYXJlbnQ+CisgICAgPGFydGlmYWN0SWQ+c3BhcnFsLWdyZW1saW48L2FydGlmYWN0SWQ+CisgICAgPG5hbWU+QXBhY2hlIFRpbmtlclBvcCA6OiBTUEFSUUwgR3JlbWxpbjwvbmFtZT4KKworICAgIDxkZXBlbmRlbmNpZXM+CisgICAgICAgIDxkZXBlbmRlbmN5PgorICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS5qZW5hPC9ncm91cElkPgorICAgICAgICAgICAgPGFydGlmYWN0SWQ+YXBhY2hlLWplbmEtbGliczwvYXJ0aWZhY3RJZD4KKyAgICAgICAgICAgIDx0eXBlPnBvbTwvdHlwZT4KKyAgICAgICAgICAgIDx2ZXJzaW9uPjMuMTIuMDwvdmVyc2lvbj4KKyAgICAgICAgPC9kZXBlbmRlbmN5PgorICAgICAgICA8ZGVwZW5kZW5jeT4KKyAgICAgICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUudGlua2VycG9wPC9ncm91cElkPgorICAgICAgICAgICAgPGFydGlmYWN0SWQ+Z3JlbWxpbi1jb3JlPC9hcnRpZmFjdElkPgorICAgICAgICAgICAgPHZlcnNpb24+JHtwcm9qZWN0LnZlcnNpb259PC92ZXJzaW9uPgorICAgICAgICA8L2RlcGVuZGVuY3k+CisgICAgICAgIDxkZXBlbmRlbmN5PgorICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLnNsZjRqPC9ncm91cElkPgorICAgICAgICAgICAgPGFydGlmYWN0SWQ+c2xmNGotbG9nNGoxMjwvYXJ0aWZhY3RJZD4KKyAgICAgICAgICAgIDxzY29wZT50ZXN0PC9zY29wZT4KKyAgICAgICAgPC9kZXBlbmRlbmN5PgorICAgICAgICA8ZGVwZW5kZW5jeT4KKyAgICAgICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUudGlua2VycG9wPC9ncm91cElkPgorICAgICAgICAgICAgPGFydGlmYWN0SWQ+dGlua2VyZ3JhcGgtZ3JlbWxpbjwvYXJ0aWZhY3RJZD4KKyAgICAgICAgICAgIDx2ZXJzaW9uPiR7cHJvamVjdC52ZXJzaW9ufTwvdmVyc2lvbj4KKyAgICAgICAgICAgIDxzY29wZT50ZXN0PC9zY29wZT4KKyAgICAgICAgPC9kZXBlbmRlbmN5PgorICAgICAgICA8ZGVwZW5kZW5jeT4KKyAgICAgICAgICAgIDxncm91cElkPmp1bml0PC9ncm91cElkPgorICAgICAgICAgICAgPGFydGlmYWN0SWQ+anVuaXQ8L2FydGlmYWN0SWQ+CisgICAgICAgICAgICA8c2NvcGU+dGVzdDwvc2NvcGU+CisgICAgICAgIDwvZGVwZW5kZW5jeT4KKyAgICAgICAgPGRlcGVuZGVuY3k+CisgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuaGFtY3Jlc3Q8L2dyb3VwSWQ+CisgICAgICAgICAgICA8YXJ0aWZhY3RJZD5oYW1jcmVzdC1hbGw8L2FydGlmYWN0SWQ+CisgICAgICAgICAgICA8c2NvcGU+dGVzdDwvc2NvcGU+CisgICAgICAgIDwvZGVwZW5kZW5jeT4KKyAgICA8L2RlcGVuZGVuY2llcz4KKzwvcHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcGFycWwtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3BhcnFsL1ByZWZpeGVzLmphdmEgYi9zcGFycWwtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3BhcnFsL1ByZWZpeGVzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzI1NDRlNwotLS0gL2Rldi9udWxsCisrKyBiL3NwYXJxbC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zcGFycWwvUHJlZml4ZXMuamF2YQpAQCAtMCwwICsxLDY1IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3BhcnFsOworCitpbXBvcnQgamF2YS51dGlsLkFycmF5czsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworLyoqCisgKiBIZWxwZXIgbWV0aG9kcyBmb3Igd29ya2luZyB3aXRoIHByZWZpeCBsaW5lcyBpbiBTUEFSUUwgcXVlcmllcy4KKyAqLworY2xhc3MgUHJlZml4ZXMgeworCisgICAgZmluYWwgc3RhdGljIFN0cmluZyBCQVNFX1VSSSA9ICJodHRwOi8vdGlua2VycG9wLmFwYWNoZS5vcmcvdHJhdmVyc2FsLyI7CisKKyAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBMaXN0PFN0cmluZz4gUFJFRklYRVMgPSBBcnJheXMuYXNMaXN0KCJlZGdlIiwgInByb3BlcnR5IiwgInZhbHVlIik7CisKKyAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBTdHJpbmcgUFJFRklYX0RFRklOSVRJT05TOworCisgICAgc3RhdGljIHsKKyAgICAgICAgZmluYWwgU3RyaW5nQnVpbGRlciBidWlsZGVyID0gbmV3IFN0cmluZ0J1aWxkZXIoKTsKKyAgICAgICAgZm9yIChmaW5hbCBTdHJpbmcgcHJlZml4IDogUFJFRklYRVMpIHsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJQUkVGSVggIikuYXBwZW5kKHByZWZpeCwgMCwgMSkuYXBwZW5kKCI6IDwiKS5hcHBlbmQoZ2V0VVJJKHByZWZpeCkpLgorICAgICAgICAgICAgICAgICAgICBhcHBlbmQoIj4iKS5hcHBlbmQoU3lzdGVtLmxpbmVTZXBhcmF0b3IoKSk7CisgICAgICAgIH0KKyAgICAgICAgUFJFRklYX0RFRklOSVRJT05TID0gYnVpbGRlci50b1N0cmluZygpOworICAgIH0KKworICAgIHN0YXRpYyBTdHJpbmcgZ2V0VVJJKGZpbmFsIFN0cmluZyBwcmVmaXgpIHsKKyAgICAgICAgcmV0dXJuIEJBU0VfVVJJICsgcHJlZml4ICsgIiMiOworICAgIH0KKworICAgIHN0YXRpYyBTdHJpbmcgZ2V0VVJJVmFsdWUoZmluYWwgU3RyaW5nIHVyaSkgeworICAgICAgICByZXR1cm4gdXJpLnN1YnN0cmluZyh1cmkuaW5kZXhPZigiIyIpICsgMSk7CisgICAgfQorCisgICAgc3RhdGljIFN0cmluZyBnZXRQcmVmaXgoZmluYWwgU3RyaW5nIHVyaSkgeworICAgICAgICBmaW5hbCBTdHJpbmcgdG1wID0gdXJpLnN1YnN0cmluZygwLCB1cmkuaW5kZXhPZigiIyIpKTsKKyAgICAgICAgcmV0dXJuIHRtcC5zdWJzdHJpbmcodG1wLmxhc3RJbmRleE9mKCIvIikgKyAxKTsKKyAgICB9CisKKyAgICBzdGF0aWMgU3RyaW5nIHByZXBlbmQoZmluYWwgU3RyaW5nIHNjcmlwdCkgeworICAgICAgICByZXR1cm4gUFJFRklYX0RFRklOSVRJT05TICsgc2NyaXB0OworICAgIH0KKworICAgIHN0YXRpYyBTdHJpbmdCdWlsZGVyIHByZXBlbmQoZmluYWwgU3RyaW5nQnVpbGRlciBzY3JpcHRCdWlsZGVyKSB7CisgICAgICAgIHJldHVybiBzY3JpcHRCdWlsZGVyLmluc2VydCgwLCBQUkVGSVhfREVGSU5JVElPTlMpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NwYXJxbC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zcGFycWwvU3BhcnFsVG9HcmVtbGluQ29tcGlsZXIuamF2YSBiL3NwYXJxbC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zcGFycWwvU3BhcnFsVG9HcmVtbGluQ29tcGlsZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZGJiMTczCi0tLSAvZGV2L251bGwKKysrIGIvc3BhcnFsLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NwYXJxbC9TcGFycWxUb0dyZW1saW5Db21waWxlci5qYXZhCkBAIC0wLDAgKzEsMzE4IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3BhcnFsOworCitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5NYXA7CisKK2ltcG9ydCBvcmcuYXBhY2hlLmplbmEucXVlcnkuUXVlcnk7CitpbXBvcnQgb3JnLmFwYWNoZS5qZW5hLnF1ZXJ5LlF1ZXJ5RmFjdG9yeTsKK2ltcG9ydCBvcmcuYXBhY2hlLmplbmEucXVlcnkuU29ydENvbmRpdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLmplbmEucXVlcnkuU3ludGF4OworaW1wb3J0IG9yZy5hcGFjaGUuamVuYS5zcGFycWwuYWxnZWJyYS5BbGdlYnJhOworaW1wb3J0IG9yZy5hcGFjaGUuamVuYS5zcGFycWwuYWxnZWJyYS5PcDsKK2ltcG9ydCBvcmcuYXBhY2hlLmplbmEuc3BhcnFsLmFsZ2VicmEuT3BWaXNpdG9yQmFzZTsKK2ltcG9ydCBvcmcuYXBhY2hlLmplbmEuc3BhcnFsLmFsZ2VicmEuT3BXYWxrZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5qZW5hLnNwYXJxbC5hbGdlYnJhLm9wLk9wQkdQOworaW1wb3J0IG9yZy5hcGFjaGUuamVuYS5zcGFycWwuYWxnZWJyYS5vcC5PcEZpbHRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLmplbmEuc3BhcnFsLmFsZ2VicmEub3AuT3BMZWZ0Sm9pbjsKK2ltcG9ydCBvcmcuYXBhY2hlLmplbmEuc3BhcnFsLmFsZ2VicmEub3AuT3BVbmlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLmplbmEuc3BhcnFsLmNvcmUuVmFyOworaW1wb3J0IG9yZy5hcGFjaGUuamVuYS5zcGFycWwuY29yZS5WYXJFeHByTGlzdDsKK2ltcG9ydCBvcmcuYXBhY2hlLmplbmEuc3BhcnFsLmV4cHIuRXhwcjsKK2ltcG9ydCBvcmcuYXBhY2hlLmplbmEuc3BhcnFsLmV4cHIuRXhwckFnZ3JlZ2F0b3I7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5PcmRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlNjb3BlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkdyYXBoVHJhdmVyc2FsOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkdyYXBoVHJhdmVyc2FsU291cmNlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLl9fOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkdyYXBoOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleDsKKworLyoqCisgKiBUaGUgZW5naW5lIHRoYXQgY29tcGlsZXMgU1BBUlFMIHRvIEdyZW1saW4gdHJhdmVyc2FscyB0aHVzIGVuYWJsaW5nIFNQQVJRTCB0byBiZSBleGVjdXRlZCBvbiBhbnkgVGlua2VyUG9wLWVuYWJsZWQKKyAqIGdyYXBoIHN5c3RlbS4KKyAqLworcHVibGljIGNsYXNzIFNwYXJxbFRvR3JlbWxpbkNvbXBpbGVyIHsKKworICAgIHByaXZhdGUgR3JhcGhUcmF2ZXJzYWw8VmVydGV4LCA/PiB0cmF2ZXJzYWw7CisKKyAgICBwcml2YXRlIExpc3Q8VHJhdmVyc2FsPiB0cmF2ZXJzYWxMaXN0ID0gbmV3IEFycmF5TGlzdDw+KCk7CisgICAgICAgICAgICBMaXN0PFRyYXZlcnNhbD4gb3B0aW9uYWxUcmF2ZXJzYWxzID0gbmV3IEFycmF5TGlzdDxUcmF2ZXJzYWw+KCk7CisgICAgICAgICAgICBMaXN0PFN0cmluZz4gb3B0aW9uYWxWYXJpYWJsZSA9IG5ldyBBcnJheUxpc3Q8U3RyaW5nPigpOworICAgICAgICAgICAgYm9vbGVhbiBvcHRpb25hbEZsYWcgPSBmYWxzZTsKKworICAgIHByaXZhdGUgU3BhcnFsVG9HcmVtbGluQ29tcGlsZXIoZmluYWwgR3JhcGhUcmF2ZXJzYWw8VmVydGV4LCA/PiB0cmF2ZXJzYWwpIHsKKyAgICAgICAgdGhpcy50cmF2ZXJzYWwgPSB0cmF2ZXJzYWw7CisgICAgfQorCisgICAgcHJpdmF0ZSBTcGFycWxUb0dyZW1saW5Db21waWxlcihmaW5hbCBHcmFwaFRyYXZlcnNhbFNvdXJjZSBnKSB7CisgICAgICAgIHRoaXMoZy5WKCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnZlcnRzIFNQQVJRTCB0byBhIEdyZW1saW4gdHJhdmVyc2FsLgorICAgICAqCisgICAgICogQHBhcmFtIGdyYXBoICAgICAgIHRoZSB7QGxpbmsgR3JhcGh9IGluc3RhbmNlIHRvIGV4ZWN1dGUgdGhlIHRyYXZlcnNhbCBmcm9tCisgICAgICogQHBhcmFtIHNwYXJxbFF1ZXJ5IHRoZSBxdWVyeSB0byBjb21waWxlIHRvIEdyZW1saW4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIEdyYXBoVHJhdmVyc2FsPFZlcnRleCwgPz4gY29tcGlsZShmaW5hbCBHcmFwaCBncmFwaCwgZmluYWwgU3RyaW5nIHNwYXJxbFF1ZXJ5KSB7CisgICAgICAgIHJldHVybiBjb21waWxlKGdyYXBoLnRyYXZlcnNhbCgpLCBzcGFycWxRdWVyeSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29udmVydHMgU1BBUlFMIHRvIGEgR3JlbWxpbiB0cmF2ZXJzYWwuCisgICAgICoKKyAgICAgKiBAcGFyYW0gZyAgICAgICAgICAgdGhlIHtAbGluayBHcmFwaFRyYXZlcnNhbFNvdXJjZX0gaW5zdGFuY2UgdG8gZXhlY3V0ZSB0aGUgdHJhdmVyc2FsIGZyb20KKyAgICAgKiBAcGFyYW0gc3BhcnFsUXVlcnkgdGhlIHF1ZXJ5IHRvIGNvbXBpbGUgdG8gR3JlbWxpbgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgR3JhcGhUcmF2ZXJzYWw8VmVydGV4LCA/PiBjb21waWxlKGZpbmFsIEdyYXBoVHJhdmVyc2FsU291cmNlIGcsIGZpbmFsIFN0cmluZyBzcGFycWxRdWVyeSkgeworICAgICAgICByZXR1cm4gY29tcGlsZShnLCBRdWVyeUZhY3RvcnkuY3JlYXRlKFByZWZpeGVzLnByZXBlbmQoc3BhcnFsUXVlcnkpLCBTeW50YXguc3ludGF4U1BBUlFMKSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBHcmFwaFRyYXZlcnNhbDxWZXJ0ZXgsID8+IGNvbXBpbGUoZmluYWwgUXVlcnkgcXVlcnkpIHsKKyAgICAgICAgZmluYWwgT3Agb3AgPSBBbGdlYnJhLmNvbXBpbGUocXVlcnkpOworICAgICAgICBPcFdhbGtlci53YWxrKG9wLCBuZXcgR3JlbWxpbk9wVmlzaXRvcigpKTsKKworICAgICAgICBpbnQgdHJhdmVyc2FsSW5kZXggPSAwOworICAgICAgICBmaW5hbCBpbnQgbnVtYmVyT2ZUcmF2ZXJzYWwgPSB0cmF2ZXJzYWxMaXN0LnNpemUoKTsKKyAgICAgICAgZmluYWwgaW50IG51bWJlck9mT3B0aW9uYWxUcmF2ZXJzYWwgPSBvcHRpb25hbFRyYXZlcnNhbHMuc2l6ZSgpOworICAgICAgICBmaW5hbCBUcmF2ZXJzYWxbXSBhcnJheU9mQWxsVHJhdmVyc2FscyA9IChudW1iZXJPZk9wdGlvbmFsVHJhdmVyc2FsID4gMCkgPworICAgICAgICAgICAgbmV3IFRyYXZlcnNhbFtudW1iZXJPZlRyYXZlcnNhbCAtIG51bWJlck9mT3B0aW9uYWxUcmF2ZXJzYWwgKyAxXSA6CisgICAgICAgICAgICBuZXcgVHJhdmVyc2FsW251bWJlck9mVHJhdmVyc2FsIC0gbnVtYmVyT2ZPcHRpb25hbFRyYXZlcnNhbF07CisKKyAgICAgICAgZmluYWwgVHJhdmVyc2FsW10gYXJyYXlPZk9wdGlvbmFsVHJhdmVyc2FscyA9IG5ldyBUcmF2ZXJzYWxbbnVtYmVyT2ZPcHRpb25hbFRyYXZlcnNhbF07CisKKyAgICAgICAgZm9yIChUcmF2ZXJzYWwgdGVtcFRyYXYgOiB0cmF2ZXJzYWxMaXN0KSB7CisgICAgICAgICAgICBhcnJheU9mQWxsVHJhdmVyc2Fsc1t0cmF2ZXJzYWxJbmRleCsrXSA9IHRlbXBUcmF2OworICAgICAgICB9CisKKyAgICAgICAgdHJhdmVyc2FsSW5kZXggPSAwOworICAgICAgICBmb3IgKFRyYXZlcnNhbCB0ZW1wVHJhdiA6IG9wdGlvbmFsVHJhdmVyc2FscykgCisgICAgICAgICAgICBhcnJheU9mT3B0aW9uYWxUcmF2ZXJzYWxzW3RyYXZlcnNhbEluZGV4KytdID0gdGVtcFRyYXY7CisgCisgICAgICAgICAvLyBjcmVhdGVzIGEgbWFwIG9mIG9yZGVyaW5nIGtleXMgYW5kIHRoZWlyIG9yZGVyaW5nIGRpcmVjdGlvbgorICAgICAgICBmaW5hbCBNYXA8U3RyaW5nLCBPcmRlcj4gb3JkZXJpbmdJbmRleCA9IGNyZWF0ZU9yZGVySW5kZXhGcm9tUXVlcnkocXVlcnkpOworCisgICAgICAgIGlmICh0cmF2ZXJzYWxMaXN0LnNpemUoKSA+IDApCisgICAgICAgICAgICB0cmF2ZXJzYWwgPSB0cmF2ZXJzYWwubWF0Y2goYXJyYXlPZkFsbFRyYXZlcnNhbHMpOworCisgICAgICAgIGlmIChvcHRpb25hbFRyYXZlcnNhbHMuc2l6ZSgpID4gMCkgeworICAgICAgICAgICAgdHJhdmVyc2FsID0gdHJhdmVyc2FsLmNvYWxlc2NlKF9fLm1hdGNoKGFycmF5T2ZPcHRpb25hbFRyYXZlcnNhbHMpLCAoVHJhdmVyc2FsKSBfXy5jb25zdGFudCgiTi9BIikpOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvcHRpb25hbFZhcmlhYmxlLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgdHJhdmVyc2FsID0gdHJhdmVyc2FsLmFzKG9wdGlvbmFsVmFyaWFibGUuZ2V0KGkpLnN1YnN0cmluZygxKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmaW5hbCBMaXN0PFN0cmluZz4gdmFycyA9IHF1ZXJ5LmdldFJlc3VsdFZhcnMoKTsKKyAgICAgICAgaWYgKCFxdWVyeS5pc1F1ZXJ5UmVzdWx0U3RhcigpICYmICFxdWVyeS5oYXNHcm91cEJ5KCkpIHsKKyAgICAgICAgICAgIGZpbmFsIFN0cmluZ1tdIGFsbCA9IG5ldyBTdHJpbmdbdmFycy5zaXplKCldOworICAgICAgICAgICAgdmFycy50b0FycmF5KGFsbCk7CisgICAgICAgICAgICBpZiAocXVlcnkuaXNEaXN0aW5jdCgpKSB7CisgICAgICAgICAgICAgICAgdHJhdmVyc2FsID0gdHJhdmVyc2FsLmRlZHVwKGFsbCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIGFwcGx5IG9yZGVyaW5nIGZyb20gT1JERVIgQlkKKyAgICAgICAgICAgIG9yZGVyaW5nSW5kZXguZm9yRWFjaCgoaywgdikgLT4gdHJhdmVyc2FsID0gdHJhdmVyc2FsLm9yZGVyKCkuYnkoX18uc2VsZWN0KGspLCB2KSk7CisKKyAgICAgICAgICAgIC8vIHRoZSByZXN1bHQgc2l6ZXMgaGF2ZSBzcGVjaWFsIGhhbmRsaW5nIHRvIGdldCB0aGUgcmlnaHQgc2lnbmF0dXJlcyBvZiBzZWxlY3QoKSBjYWxsZWQuCisgICAgICAgICAgICBzd2l0Y2ggKGFsbC5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oKTsKKyAgICAgICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgICAgIHRyYXZlcnNhbCA9IHRyYXZlcnNhbC5zZWxlY3QoYWxsWzBdKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgICAgICAgICB0cmF2ZXJzYWwgPSB0cmF2ZXJzYWwuc2VsZWN0KGFsbFswXSwgYWxsWzFdKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nW10gb3RoZXJzID0gQXJyYXlzLmNvcHlPZlJhbmdlKGFsbCwgMiwgdmFycy5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICB0cmF2ZXJzYWwgPSB0cmF2ZXJzYWwuc2VsZWN0KGFsbFswXSwgYWxsWzFdLCBvdGhlcnMpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChxdWVyeS5oYXNHcm91cEJ5KCkpIHsKKyAgICAgICAgICAgIGZpbmFsIFZhckV4cHJMaXN0IGxzdEV4cHIgPSBxdWVyeS5nZXRHcm91cEJ5KCk7CisgICAgICAgICAgICBTdHJpbmcgZ3JwVmFyID0gIiI7CisgICAgICAgICAgICBmb3IgKFZhciBleHByIDogbHN0RXhwci5nZXRWYXJzKCkpIHsKKyAgICAgICAgICAgICAgICBncnBWYXIgPSBleHByLmdldE5hbWUoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFncnBWYXIuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHRyYXZlcnNhbCA9IHRyYXZlcnNhbC5zZWxlY3QoZ3JwVmFyKTsKKyAgICAgICAgICAgIGlmIChxdWVyeS5oYXNBZ2dyZWdhdG9ycygpKSB7CisgICAgICAgICAgICAgICAgZmluYWwgTGlzdDxFeHByQWdncmVnYXRvcj4gZXhwckFnZyA9IHF1ZXJ5LmdldEFnZ3JlZ2F0b3JzKCk7CisgICAgICAgICAgICAgICAgZm9yIChFeHByQWdncmVnYXRvciBleHByIDogZXhwckFnZykgeworICAgICAgICAgICAgICAgICAgICBpZiAoZXhwci5nZXRBZ2dyZWdhdG9yKCkuZ2V0TmFtZSgpLmNvbnRhaW5zKCJDT1VOVCIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXF1ZXJ5LnRvU3RyaW5nKCkuY29udGFpbnMoIkdST1VQIikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhwci5nZXRBZ2dyZWdhdG9yKCkudG9TdHJpbmcoKS5jb250YWlucygiRElTVElOQ1QiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhdmVyc2FsID0gdHJhdmVyc2FsLmRlZHVwKGV4cHIuZ2V0QWdncmVnYXRvcigpLmdldEV4cHJMaXN0KCkuZ2V0KDApLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDEpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYXZlcnNhbCA9IHRyYXZlcnNhbC5zZWxlY3QoZXhwci5nZXRBZ2dyZWdhdG9yKCkuZ2V0RXhwckxpc3QoKS5nZXQoMCkudG9TdHJpbmcoKS5zdWJzdHJpbmcoMSkpOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhdmVyc2FsID0gdHJhdmVyc2FsLmNvdW50KCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYXZlcnNhbCA9IHRyYXZlcnNhbC5ncm91cENvdW50KCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGV4cHIuZ2V0QWdncmVnYXRvcigpLmdldE5hbWUoKS5jb250YWlucygiTUFYIikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyYXZlcnNhbCA9IHRyYXZlcnNhbC5tYXgoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdHJhdmVyc2FsID0gdHJhdmVyc2FsLmdyb3VwKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAocXVlcnkuaGFzT3JkZXJCeSgpICYmIHF1ZXJ5Lmhhc0dyb3VwQnkoKSkKKyAgICAgICAgICAgIG9yZGVyaW5nSW5kZXguZm9yRWFjaCgoaywgdikgLT4gdHJhdmVyc2FsID0gdHJhdmVyc2FsLm9yZGVyKCkuYnkoX18uc2VsZWN0KGspLCB2KSk7CisKKyAgICAgICAgaWYgKHF1ZXJ5Lmhhc0xpbWl0KCkpIHsKKyAgICAgICAgICAgIGxvbmcgbGltaXQgPSBxdWVyeS5nZXRMaW1pdCgpLCBvZmZzZXQgPSAwOworCisgICAgICAgICAgICBpZiAocXVlcnkuaGFzT2Zmc2V0KCkpCisgICAgICAgICAgICAgICAgb2Zmc2V0ID0gcXVlcnkuZ2V0T2Zmc2V0KCk7CisKKyAgICAgICAgICAgIGlmIChxdWVyeS5oYXNHcm91cEJ5KCkgJiYgcXVlcnkuaGFzT3JkZXJCeSgpKQorICAgICAgICAgICAgICAgIHRyYXZlcnNhbCA9IHRyYXZlcnNhbC5yYW5nZShTY29wZS5sb2NhbCwgb2Zmc2V0LCBvZmZzZXQgKyBsaW1pdCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdHJhdmVyc2FsID0gdHJhdmVyc2FsLnJhbmdlKG9mZnNldCwgb2Zmc2V0ICsgbGltaXQpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRyYXZlcnNhbDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBFeHRyYWN0cyBhbnkge0Bjb2RlIFNvcnRDb25kaXRpb259IGluc3RhbmNlcyBmcm9tIHRoZSBTUEFSUUwgcXVlcnkgYW5kIGhvbGRzIHRoZW0gaW4gYW4gaW5kZXggb2YgdGhlaXIga2V5cworICAgICAqIHdoZXJlIHRoZSB2YWx1ZSBpcyB0aGF0IGtleXMgc29ydGluZyBkaXJlY3Rpb24uCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgTWFwPFN0cmluZywgT3JkZXI+IGNyZWF0ZU9yZGVySW5kZXhGcm9tUXVlcnkoZmluYWwgUXVlcnkgcXVlcnkpIHsKKyAgICAgICAgZmluYWwgTWFwPFN0cmluZywgT3JkZXI+IG9yZGVyaW5nSW5kZXggPSBuZXcgSGFzaE1hcDw+KCk7CisgICAgICAgIGlmIChxdWVyeS5oYXNPcmRlckJ5KCkpIHsKKyAgICAgICAgICAgIGZpbmFsIExpc3Q8U29ydENvbmRpdGlvbj4gc29ydGluZ0NvbmRpdGlvbnMgPSBxdWVyeS5nZXRPcmRlckJ5KCk7CisKKyAgICAgICAgICAgIGZvciAoU29ydENvbmRpdGlvbiBzb3J0Q29uZGl0aW9uIDogc29ydGluZ0NvbmRpdGlvbnMpIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBFeHByIGV4cHIgPSBzb3J0Q29uZGl0aW9uLmdldEV4cHJlc3Npb24oKTsKKworICAgICAgICAgICAgICAgIC8vIGJ5IGRlZmF1bHQsIHRoZSBzb3J0IHdpbGwgYmUgYXNjZW5kaW5nLiBnZXREaXJlY3Rpb24oKSByZXR1cm5zIC0yIGlmIHRoZSBERVNDL0FTQyBpc24ndAorICAgICAgICAgICAgICAgIC8vIHN1cHBsaWVkIC0gd2VpcmQKKyAgICAgICAgICAgICAgICBvcmRlcmluZ0luZGV4LnB1dChleHByLmdldFZhck5hbWUoKSwgc29ydENvbmRpdGlvbi5nZXREaXJlY3Rpb24oKSA9PSAtMSA/IE9yZGVyLmRlY3IgOiBPcmRlci5pbmNyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBvcmRlcmluZ0luZGV4OworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIEdyYXBoVHJhdmVyc2FsPFZlcnRleCwgPz4gY29tcGlsZShmaW5hbCBHcmFwaFRyYXZlcnNhbFNvdXJjZSBnLCBmaW5hbCBRdWVyeSBxdWVyeSkgeworICAgICAgICByZXR1cm4gbmV3IFNwYXJxbFRvR3JlbWxpbkNvbXBpbGVyKGcpLmNvbXBpbGUocXVlcnkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEFuIHtAY29kZSBPcFZpc2l0b3J9IGltcGxlbWVudGF0aW9uIHRoYXQgcmVhZHMgU1BBUlFMIGFsZ2VicmEgb3BlcmF0aW9ucyBpbnRvIEdyZW1saW4gdHJhdmVyc2Fscy4KKyAgICAgKi8KKyAgICBwcml2YXRlIGNsYXNzIEdyZW1saW5PcFZpc2l0b3IgZXh0ZW5kcyBPcFZpc2l0b3JCYXNlIHsKKworICAgICAgICAvKioKKyAgICAgICAgICogVmlzaXRpbmcgdHJpcGxlIHBhdHRlcm5zIGluIFNQQVJRTCBhbGdlYnJhLgorICAgICAgICAgKi8KKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyB2b2lkIHZpc2l0KGZpbmFsIE9wQkdQIG9wQkdQKSB7CisgICAgICAgIGlmKG9wdGlvbmFsRmxhZykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvcEJHUC5nZXRQYXR0ZXJuKCkuZ2V0TGlzdCgpLmZvckVhY2godHJpcGxlIC0+IG9wdGlvbmFsVHJhdmVyc2Fscy5hZGQoVHJhdmVyc2FsQnVpbGRlci50cmFuc2Zvcm0odHJpcGxlKSkpOworICAgICAgICAgICAgICAgIG9wQkdQLmdldFBhdHRlcm4oKS5nZXRMaXN0KCkuZm9yRWFjaCh0cmlwbGUgLT4gb3B0aW9uYWxWYXJpYWJsZS5hZGQodHJpcGxlLmdldE9iamVjdCgpLnRvU3RyaW5nKCkpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgICAgICAgIAorICAgICAgICAgICAgICAgIG9wQkdQLmdldFBhdHRlcm4oKS5nZXRMaXN0KCkuZm9yRWFjaCh0cmlwbGUgLT4gdHJhdmVyc2FsTGlzdC5hZGQoVHJhdmVyc2FsQnVpbGRlci50cmFuc2Zvcm0odHJpcGxlKSkpOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFZpc2l0aW5nIGZpbHRlcnMgaW4gU1BBUlFMIGFsZ2VicmEuCisgICAgICAgICAqLworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgdmlzaXQoZmluYWwgT3BGaWx0ZXIgb3BGaWx0ZXIpIHsKKyAgICAgICAgICAgIFRyYXZlcnNhbCB0cmF2ZXJzYWw7CisgICAgICAgICAgICBmb3IgKEV4cHIgZXhwciA6IG9wRmlsdGVyLmdldEV4cHJzKCkuZ2V0TGlzdCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGV4cHIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICB0cmF2ZXJzYWwgPSBfXy53aGVyZShXaGVyZVRyYXZlcnNhbEJ1aWxkZXIudHJhbnNmb3JtKGV4cHIpKTsKKyAgICAgICAgICAgICAgICAgICAgdHJhdmVyc2FsTGlzdC5hZGQodHJhdmVyc2FsKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAKKyAgICAgICAgLyoqCisgICAgICAgICAqIFZpc2l0aW5nIExlZnRKb2luKE9wdGlvbmFsKSBpbiBTUEFSUUwgYWxnZWJyYS4KKyAgICAgICAgICovCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCB2aXNpdChmaW5hbCBPcExlZnRKb2luIG9wTGVmdEpvaW4pIHsKKyAgICAgICAgICAgIG9wdGlvbmFsRmxhZyA9IHRydWU7CisgICAgICAgICAgICBvcHRpb25hbFZpc2l0KG9wTGVmdEpvaW4uZ2V0UmlnaHQoKSk7CisgICAgICAgICAgICBpZiAob3BMZWZ0Sm9pbi5nZXRFeHBycygpICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBmb3IgKEV4cHIgZXhwciA6IG9wTGVmdEpvaW4uZ2V0RXhwcnMoKS5nZXRMaXN0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGV4cHIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbmFsRmxhZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbFRyYXZlcnNhbHMuYWRkKF9fLndoZXJlKFdoZXJlVHJhdmVyc2FsQnVpbGRlci50cmFuc2Zvcm0oZXhwcikpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLyoqCisgICAgICAgICAqIFdhbGtpbmcgT1AgZm9yIE9wdGlvbmFsIGluIFNQQVJRTCBhbGdlYnJhLgorICAgICAgICAgKi8KKyAgICAgICAgcHJpdmF0ZSB2b2lkIG9wdGlvbmFsVmlzaXQoZmluYWwgT3Agb3ApIHsKKworICAgICAgICAgICAgT3BXYWxrZXIud2FsayhvcCwgdGhpcyk7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogVmlzaXRpbmcgdW5pb25zIGluIFNQQVJRTCBhbGdlYnJhLgorICAgICAgICAgKi8KKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyB2b2lkIHZpc2l0KGZpbmFsIE9wVW5pb24gb3BVbmlvbikgeworICAgICAgICAgICAgZmluYWwgVHJhdmVyc2FsIHVuaW9uVGVtcFtdID0gbmV3IFRyYXZlcnNhbFsyXTsKKyAgICAgICAgICAgIGZpbmFsIFRyYXZlcnNhbCB1bmlvblRlbXAxW10gPSBuZXcgVHJhdmVyc2FsW3RyYXZlcnNhbExpc3Quc2l6ZSgpIC8gMl07CisgICAgICAgICAgICBmaW5hbCBUcmF2ZXJzYWwgdW5pb25UZW1wMltdID0gbmV3IFRyYXZlcnNhbFt0cmF2ZXJzYWxMaXN0LnNpemUoKSAvIDJdOworCisgICAgICAgICAgICBpbnQgY291bnQgPSAwOworCisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRyYXZlcnNhbExpc3Quc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAoaSA8IHRyYXZlcnNhbExpc3Quc2l6ZSgpIC8gMikKKyAgICAgICAgICAgICAgICAgICAgdW5pb25UZW1wMVtpXSA9IHRyYXZlcnNhbExpc3QuZ2V0KGkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgdW5pb25UZW1wMltjb3VudCsrXSA9IHRyYXZlcnNhbExpc3QuZ2V0KGkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB1bmlvblRlbXBbMV0gPSBfXy5tYXRjaCh1bmlvblRlbXAyKTsKKyAgICAgICAgICAgIHVuaW9uVGVtcFswXSA9IF9fLm1hdGNoKHVuaW9uVGVtcDEpOworCisgICAgICAgICAgICB0cmF2ZXJzYWxMaXN0LmNsZWFyKCk7CisgICAgICAgICAgICB0cmF2ZXJzYWwgPSAoR3JhcGhUcmF2ZXJzYWw8VmVydGV4LCA/PikgdHJhdmVyc2FsLnVuaW9uKHVuaW9uVGVtcCk7CisgICAgICAgIH0KKworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NwYXJxbC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zcGFycWwvVHJhdmVyc2FsQnVpbGRlci5qYXZhIGIvc3BhcnFsLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NwYXJxbC9UcmF2ZXJzYWxCdWlsZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQzMTVlYgotLS0gL2Rldi9udWxsCisrKyBiL3NwYXJxbC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zcGFycWwvVHJhdmVyc2FsQnVpbGRlci5qYXZhCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zcGFycWw7CisKK2ltcG9ydCBvcmcuYXBhY2hlLmplbmEuZ3JhcGguTm9kZTsKK2ltcG9ydCBvcmcuYXBhY2hlLmplbmEuZ3JhcGguVHJpcGxlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkdyYXBoVHJhdmVyc2FsOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLl9fOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlByb3BlcnR5VHlwZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXg7CisKKy8qKgorICogQ29udmVydHMgdHJpcGxlIHBhdHRlcm5zIGludG8ge0BsaW5rIEdyYXBoVHJhdmVyc2FsfSBpbnN0YW5jZXMuCisgKi8KK2NsYXNzIFRyYXZlcnNhbEJ1aWxkZXIgeworCisgICAgc3RhdGljIEdyYXBoVHJhdmVyc2FsPD8sID8+IHRyYW5zZm9ybShmaW5hbCBUcmlwbGUgdHJpcGxlKSB7CisgICAgICAgIGZpbmFsIEdyYXBoVHJhdmVyc2FsPFZlcnRleCwgPz4gbWF0Y2hUcmF2ZXJzYWwgPSBfXy5hcyh0cmlwbGUuZ2V0U3ViamVjdCgpLmdldE5hbWUoKSk7CisgICAgICAgIAorICAgICAgICBmaW5hbCBOb2RlIHByZWRpY2F0ZSA9IHRyaXBsZS5nZXRQcmVkaWNhdGUoKTsKKyAgICAgICAgZmluYWwgU3RyaW5nIHVyaSA9IHByZWRpY2F0ZS5nZXRVUkkoKTsKKyAgICAgICAgZmluYWwgU3RyaW5nIHVyaVZhbHVlID0gUHJlZml4ZXMuZ2V0VVJJVmFsdWUodXJpKTsKKyAgICAgICAgZmluYWwgU3RyaW5nIHByZWZpeCA9IFByZWZpeGVzLmdldFByZWZpeCh1cmkpOworCisgICAgICAgIHN3aXRjaCAocHJlZml4KSB7CisgICAgICAgICAgICBjYXNlICJlZGdlIjoKKyAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2hUcmF2ZXJzYWwub3V0KHVyaVZhbHVlKS5hcyh0cmlwbGUuZ2V0T2JqZWN0KCkuZ2V0TmFtZSgpKTsKKyAgICAgICAgICAgIGNhc2UgInByb3BlcnR5IjoKKyAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2hQcm9wZXJ0eShtYXRjaFRyYXZlcnNhbCwgdXJpVmFsdWUsIFByb3BlcnR5VHlwZS5QUk9QRVJUWSwgdHJpcGxlLmdldE9iamVjdCgpKTsKKyAgICAgICAgICAgIGNhc2UgInZhbHVlIjoKKyAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2hQcm9wZXJ0eShtYXRjaFRyYXZlcnNhbCwgdXJpVmFsdWUsIFByb3BlcnR5VHlwZS5WQUxVRSwgdHJpcGxlLmdldE9iamVjdCgpKTsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbihTdHJpbmcuZm9ybWF0KCJVbmV4cGVjdGVkIHByZWRpY2F0ZTogJXMiLCBwcmVkaWNhdGUpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIEdyYXBoVHJhdmVyc2FsPD8sID8+IG1hdGNoUHJvcGVydHkoZmluYWwgR3JhcGhUcmF2ZXJzYWw8PywgPz4gdHJhdmVyc2FsLCBmaW5hbCBTdHJpbmcgcHJvcGVydHlOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgUHJvcGVydHlUeXBlIHR5cGUsIGZpbmFsIE5vZGUgb2JqZWN0KSB7CisgICAgICAgIHN3aXRjaCAocHJvcGVydHlOYW1lKSB7CisgICAgICAgICAgICBjYXNlICJpZCI6CisgICAgICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5pc0NvbmNyZXRlKCkKKyAgICAgICAgICAgICAgICAgICAgICAgID8gdHJhdmVyc2FsLmhhc0lkKG9iamVjdC5nZXRMaXRlcmFsVmFsdWUoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIDogdHJhdmVyc2FsLmlkKCkuYXMob2JqZWN0LmdldE5hbWUoKSk7CisgICAgICAgICAgICBjYXNlICJsYWJlbCI6CisgICAgICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5pc0NvbmNyZXRlKCkKKyAgICAgICAgICAgICAgICAgICAgICAgID8gdHJhdmVyc2FsLmhhc0xhYmVsKG9iamVjdC5nZXRMaXRlcmFsVmFsdWUoKS50b1N0cmluZygpKQorICAgICAgICAgICAgICAgICAgICAgICAgOiB0cmF2ZXJzYWwubGFiZWwoKS5hcyhvYmplY3QuZ2V0TmFtZSgpKTsKKyAgICAgICAgICAgIGNhc2UgImtleSI6CisgICAgICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5pc0NvbmNyZXRlKCkKKyAgICAgICAgICAgICAgICAgICAgICAgID8gdHJhdmVyc2FsLmhhc0tleShvYmplY3QuZ2V0TGl0ZXJhbFZhbHVlKCkudG9TdHJpbmcoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIDogdHJhdmVyc2FsLmtleSgpLmFzKG9iamVjdC5nZXROYW1lKCkpOworICAgICAgICAgICAgY2FzZSAidmFsdWUiOgorICAgICAgICAgICAgICAgIHJldHVybiBvYmplY3QuaXNDb25jcmV0ZSgpCisgICAgICAgICAgICAgICAgICAgICAgICA/IHRyYXZlcnNhbC5oYXNWYWx1ZShvYmplY3QuZ2V0TGl0ZXJhbFZhbHVlKCkudG9TdHJpbmcoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIDogdHJhdmVyc2FsLnZhbHVlKCkuYXMob2JqZWN0LmdldE5hbWUoKSk7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGlmICh0eXBlLmVxdWFscyhQcm9wZXJ0eVR5cGUuUFJPUEVSVFkpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cmF2ZXJzYWwucHJvcGVydGllcyhwcm9wZXJ0eU5hbWUpLmFzKG9iamVjdC5nZXROYW1lKCkpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBvYmplY3QuaXNDb25jcmV0ZSgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0cmF2ZXJzYWwuaGFzKHByb3BlcnR5TmFtZSwgb2JqZWN0LmdldExpdGVyYWxWYWx1ZSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdHJhdmVyc2FsLnZhbHVlcyhwcm9wZXJ0eU5hbWUpLmFzKG9iamVjdC5nZXROYW1lKCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NwYXJxbC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zcGFycWwvV2hlcmVUcmF2ZXJzYWxCdWlsZGVyLmphdmEgYi9zcGFycWwtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3BhcnFsL1doZXJlVHJhdmVyc2FsQnVpbGRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2OTlhNmUKLS0tIC9kZXYvbnVsbAorKysgYi9zcGFycWwtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3BhcnFsL1doZXJlVHJhdmVyc2FsQnVpbGRlci5qYXZhCkBAIC0wLDAgKzEsMTI4IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3BhcnFsOworCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2ltcG9ydCBvcmcuYXBhY2hlLmplbmEuZ3JhcGguVHJpcGxlOworaW1wb3J0IG9yZy5hcGFjaGUuamVuYS5zcGFycWwuYWxnZWJyYS5vcC5PcEJHUDsKK2ltcG9ydCBvcmcuYXBhY2hlLmplbmEuc3BhcnFsLmV4cHIuRV9FcXVhbHM7CitpbXBvcnQgb3JnLmFwYWNoZS5qZW5hLnNwYXJxbC5leHByLkVfRXhpc3RzOworaW1wb3J0IG9yZy5hcGFjaGUuamVuYS5zcGFycWwuZXhwci5FX0dyZWF0ZXJUaGFuOworaW1wb3J0IG9yZy5hcGFjaGUuamVuYS5zcGFycWwuZXhwci5FX0dyZWF0ZXJUaGFuT3JFcXVhbDsKK2ltcG9ydCBvcmcuYXBhY2hlLmplbmEuc3BhcnFsLmV4cHIuRV9MZXNzVGhhbjsKK2ltcG9ydCBvcmcuYXBhY2hlLmplbmEuc3BhcnFsLmV4cHIuRV9MZXNzVGhhbk9yRXF1YWw7CitpbXBvcnQgb3JnLmFwYWNoZS5qZW5hLnNwYXJxbC5leHByLkVfTG9naWNhbEFuZDsKK2ltcG9ydCBvcmcuYXBhY2hlLmplbmEuc3BhcnFsLmV4cHIuRV9Mb2dpY2FsT3I7CitpbXBvcnQgb3JnLmFwYWNoZS5qZW5hLnNwYXJxbC5leHByLkVfTm90RXF1YWxzOworaW1wb3J0IG9yZy5hcGFjaGUuamVuYS5zcGFycWwuZXhwci5FX05vdEV4aXN0czsKK2ltcG9ydCBvcmcuYXBhY2hlLmplbmEuc3BhcnFsLmV4cHIuRXhwcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5TdGVwOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkdyYXBoVHJhdmVyc2FsOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLl9fOworCisvKioKKyAqIENvbnZlcnRzIFNQQVJRTCAid2hlcmUiIGV4cHJlc3Npb25zIHRvIEdyZW1saW4gcHJlZGljYXRlcy4KKyAqLworY2xhc3MgV2hlcmVUcmF2ZXJzYWxCdWlsZGVyIHsKKworICAgIC8qKgorICAgICAqIENvbnZlcnRzIGEgZ2VuZXJhbCB7QGNvZGUgRXhwcn0gdG8gYW4gYW5vbnltb3VzIHtAbGluayBHcmFwaFRyYXZlcnNhbH0uCisgICAgICovCisgICAgc3RhdGljIEdyYXBoVHJhdmVyc2FsPD8sID8+IHRyYW5zZm9ybShmaW5hbCBFeHByIGV4cHJlc3Npb24pIHsKKyAgICAgICAgaWYgKGV4cHJlc3Npb24gaW5zdGFuY2VvZiBFX0VxdWFscykgcmV0dXJuIHRyYW5zZm9ybSgoRV9FcXVhbHMpIGV4cHJlc3Npb24pOworICAgICAgICBpZiAoZXhwcmVzc2lvbiBpbnN0YW5jZW9mIEVfTm90RXF1YWxzKSByZXR1cm4gdHJhbnNmb3JtKChFX05vdEVxdWFscykgZXhwcmVzc2lvbik7CisgICAgICAgIGlmIChleHByZXNzaW9uIGluc3RhbmNlb2YgRV9MZXNzVGhhbikgcmV0dXJuIHRyYW5zZm9ybSgoRV9MZXNzVGhhbikgZXhwcmVzc2lvbik7CisgICAgICAgIGlmIChleHByZXNzaW9uIGluc3RhbmNlb2YgRV9MZXNzVGhhbk9yRXF1YWwpIHJldHVybiB0cmFuc2Zvcm0oKEVfTGVzc1RoYW5PckVxdWFsKSBleHByZXNzaW9uKTsKKyAgICAgICAgaWYgKGV4cHJlc3Npb24gaW5zdGFuY2VvZiBFX0dyZWF0ZXJUaGFuKSByZXR1cm4gdHJhbnNmb3JtKChFX0dyZWF0ZXJUaGFuKSBleHByZXNzaW9uKTsKKyAgICAgICAgaWYgKGV4cHJlc3Npb24gaW5zdGFuY2VvZiBFX0dyZWF0ZXJUaGFuT3JFcXVhbCkgcmV0dXJuIHRyYW5zZm9ybSgoRV9HcmVhdGVyVGhhbk9yRXF1YWwpIGV4cHJlc3Npb24pOworICAgICAgICBpZiAoZXhwcmVzc2lvbiBpbnN0YW5jZW9mIEVfTG9naWNhbEFuZCkgcmV0dXJuIHRyYW5zZm9ybSgoRV9Mb2dpY2FsQW5kKSBleHByZXNzaW9uKTsKKyAgICAgICAgaWYgKGV4cHJlc3Npb24gaW5zdGFuY2VvZiBFX0xvZ2ljYWxPcikgcmV0dXJuIHRyYW5zZm9ybSgoRV9Mb2dpY2FsT3IpIGV4cHJlc3Npb24pOworICAgICAgICBpZiAoZXhwcmVzc2lvbiBpbnN0YW5jZW9mIEVfRXhpc3RzKSByZXR1cm4gdHJhbnNmb3JtKChFX0V4aXN0cykgZXhwcmVzc2lvbik7CisgICAgICAgIGlmIChleHByZXNzaW9uIGluc3RhbmNlb2YgRV9Ob3RFeGlzdHMpIHJldHVybiB0cmFuc2Zvcm0oKEVfTm90RXhpc3RzKSBleHByZXNzaW9uKTsKKyAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbihTdHJpbmcuZm9ybWF0KCJVbmhhbmRsZWQgZXhwcmVzc2lvbjogJXMiLCBleHByZXNzaW9uKSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgR3JhcGhUcmF2ZXJzYWw8PywgPz4gdHJhbnNmb3JtKGZpbmFsIEVfRXF1YWxzIGV4cHJlc3Npb24pIHsKKyAgICAgICAgZmluYWwgT2JqZWN0IHZhbHVlID0gZXhwcmVzc2lvbi5nZXRBcmcyKCkuZ2V0Q29uc3RhbnQoKS5nZXROb2RlKCkuZ2V0TGl0ZXJhbFZhbHVlKCk7CisgICAgICAgIHJldHVybiBfXy5hcyhleHByZXNzaW9uLmdldEFyZzEoKS5nZXRWYXJOYW1lKCkpLmlzKFAuZXEodmFsdWUpKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBHcmFwaFRyYXZlcnNhbDw/LCA/PiB0cmFuc2Zvcm0oZmluYWwgRV9Ob3RFcXVhbHMgZXhwcmVzc2lvbikgeworICAgICAgICBmaW5hbCBPYmplY3QgdmFsdWUgPSBleHByZXNzaW9uLmdldEFyZzIoKS5nZXRDb25zdGFudCgpLmdldE5vZGUoKS5nZXRMaXRlcmFsVmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIF9fLmFzKGV4cHJlc3Npb24uZ2V0QXJnMSgpLmdldFZhck5hbWUoKSkuaXMoUC5uZXEodmFsdWUpKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBHcmFwaFRyYXZlcnNhbDw/LCA/PiB0cmFuc2Zvcm0oZmluYWwgRV9MZXNzVGhhbiBleHByZXNzaW9uKSB7CisgICAgICAgIGZpbmFsIE9iamVjdCB2YWx1ZSA9IGV4cHJlc3Npb24uZ2V0QXJnMigpLmdldENvbnN0YW50KCkuZ2V0Tm9kZSgpLmdldExpdGVyYWxWYWx1ZSgpOworICAgICAgICByZXR1cm4gX18uYXMoZXhwcmVzc2lvbi5nZXRBcmcxKCkuZ2V0VmFyTmFtZSgpKS5pcyhQLmx0KHZhbHVlKSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgR3JhcGhUcmF2ZXJzYWw8PywgPz4gdHJhbnNmb3JtKGZpbmFsIEVfTGVzc1RoYW5PckVxdWFsIGV4cHJlc3Npb24pIHsKKyAgICAgICAgZmluYWwgT2JqZWN0IHZhbHVlID0gZXhwcmVzc2lvbi5nZXRBcmcyKCkuZ2V0Q29uc3RhbnQoKS5nZXROb2RlKCkuZ2V0TGl0ZXJhbFZhbHVlKCk7CisgICAgICAgIHJldHVybiBfXy5hcyhleHByZXNzaW9uLmdldEFyZzEoKS5nZXRWYXJOYW1lKCkpLmlzKFAubHRlKHZhbHVlKSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgR3JhcGhUcmF2ZXJzYWw8PywgPz4gdHJhbnNmb3JtKGZpbmFsIEVfR3JlYXRlclRoYW4gZXhwcmVzc2lvbikgeworICAgICAgICBmaW5hbCBPYmplY3QgdmFsdWUgPSBleHByZXNzaW9uLmdldEFyZzIoKS5nZXRDb25zdGFudCgpLmdldE5vZGUoKS5nZXRMaXRlcmFsVmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIF9fLmFzKGV4cHJlc3Npb24uZ2V0QXJnMSgpLmdldFZhck5hbWUoKSkuaXMoUC5ndCh2YWx1ZSkpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIEdyYXBoVHJhdmVyc2FsPD8sID8+IHRyYW5zZm9ybShmaW5hbCBFX0dyZWF0ZXJUaGFuT3JFcXVhbCBleHByZXNzaW9uKSB7CisgICAgICAgIGZpbmFsIE9iamVjdCB2YWx1ZSA9IGV4cHJlc3Npb24uZ2V0QXJnMigpLmdldENvbnN0YW50KCkuZ2V0Tm9kZSgpLmdldExpdGVyYWxWYWx1ZSgpOworICAgICAgICByZXR1cm4gX18uYXMoZXhwcmVzc2lvbi5nZXRBcmcxKCkuZ2V0VmFyTmFtZSgpKS5pcyhQLmd0ZSh2YWx1ZSkpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIEdyYXBoVHJhdmVyc2FsPD8sID8+IHRyYW5zZm9ybShmaW5hbCBFX0xvZ2ljYWxBbmQgZXhwcmVzc2lvbikgeworICAgICAgICByZXR1cm4gX18uYW5kKAorICAgICAgICAgICAgICAgIHRyYW5zZm9ybShleHByZXNzaW9uLmdldEFyZzEoKSksCisgICAgICAgICAgICAgICAgdHJhbnNmb3JtKGV4cHJlc3Npb24uZ2V0QXJnMigpKSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgR3JhcGhUcmF2ZXJzYWw8PywgPz4gdHJhbnNmb3JtKGZpbmFsIEVfTG9naWNhbE9yIGV4cHJlc3Npb24pIHsKKyAgICAgICAgcmV0dXJuIF9fLm9yKAorICAgICAgICAgICAgICAgIHRyYW5zZm9ybShleHByZXNzaW9uLmdldEFyZzEoKSksCisgICAgICAgICAgICAgICAgdHJhbnNmb3JtKGV4cHJlc3Npb24uZ2V0QXJnMigpKSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgR3JhcGhUcmF2ZXJzYWw8PywgPz4gdHJhbnNmb3JtKGZpbmFsIEVfRXhpc3RzIGV4cHJlc3Npb24pIHsKKyAgICAgICAgZmluYWwgT3BCR1Agb3BCR1AgPSAoT3BCR1ApIGV4cHJlc3Npb24uZ2V0R3JhcGhQYXR0ZXJuKCk7CisgICAgICAgIGZpbmFsIExpc3Q8VHJpcGxlPiB0cmlwbGVzID0gb3BCR1AuZ2V0UGF0dGVybigpLmdldExpc3QoKTsKKyAgICAgICAgaWYgKHRyaXBsZXMuc2l6ZSgpICE9IDEpIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIlVuaGFuZGxlZCBFWElTVFMgcGF0dGVybiIpOworICAgICAgICBmaW5hbCBHcmFwaFRyYXZlcnNhbDw/LCA/PiB0cmF2ZXJzYWwgPSBUcmF2ZXJzYWxCdWlsZGVyLnRyYW5zZm9ybSh0cmlwbGVzLmdldCgwKSk7CisgICAgICAgIGZpbmFsIFN0ZXAgZW5kU3RlcCA9IHRyYXZlcnNhbC5hc0FkbWluKCkuZ2V0RW5kU3RlcCgpOworICAgICAgICBmaW5hbCBTdHJpbmcgbGFiZWwgPSAoU3RyaW5nKSBlbmRTdGVwLmdldExhYmVscygpLml0ZXJhdG9yKCkubmV4dCgpOworICAgICAgICBlbmRTdGVwLnJlbW92ZUxhYmVsKGxhYmVsKTsKKyAgICAgICAgcmV0dXJuIHRyYXZlcnNhbDsKKyAgICB9CisKKworICAgIHByaXZhdGUgc3RhdGljIEdyYXBoVHJhdmVyc2FsPD8sID8+IHRyYW5zZm9ybShmaW5hbCBFX05vdEV4aXN0cyBleHByZXNzaW9uKSB7CisgICAgICAgIGZpbmFsIE9wQkdQIG9wQkdQID0gKE9wQkdQKSBleHByZXNzaW9uLmdldEdyYXBoUGF0dGVybigpOworICAgICAgICBmaW5hbCBMaXN0PFRyaXBsZT4gdHJpcGxlcyA9IG9wQkdQLmdldFBhdHRlcm4oKS5nZXRMaXN0KCk7CisgICAgICAgIGlmICh0cmlwbGVzLnNpemUoKSAhPSAxKSB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJVbmhhbmRsZWQgTk9UIEVYSVNUUyBwYXR0ZXJuIik7CisgICAgICAgIGZpbmFsIEdyYXBoVHJhdmVyc2FsPD8sID8+IHRyYXZlcnNhbCA9IFRyYXZlcnNhbEJ1aWxkZXIudHJhbnNmb3JtKHRyaXBsZXMuZ2V0KDApKTsKKyAgICAgICAgZmluYWwgU3RlcCBlbmRTdGVwID0gdHJhdmVyc2FsLmFzQWRtaW4oKS5nZXRFbmRTdGVwKCk7CisgICAgICAgIGZpbmFsIFN0cmluZyBsYWJlbCA9IChTdHJpbmcpIGVuZFN0ZXAuZ2V0TGFiZWxzKCkuaXRlcmF0b3IoKS5uZXh0KCk7CisgICAgICAgIGVuZFN0ZXAucmVtb3ZlTGFiZWwobGFiZWwpOworICAgICAgICByZXR1cm4gX18ubm90KHRyYXZlcnNhbCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NwYXJxbC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zcGFycWwvanNyMjIzL1NwYXJxbEdyZW1saW5QbHVnaW4uamF2YSBiL3NwYXJxbC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zcGFycWwvanNyMjIzL1NwYXJxbEdyZW1saW5QbHVnaW4uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDAxMTViCi0tLSAvZGV2L251bGwKKysrIGIvc3BhcnFsLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NwYXJxbC9qc3IyMjMvU3BhcnFsR3JlbWxpblBsdWdpbi5qYXZhCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNwYXJxbC5qc3IyMjM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmpzcjIyMy5BYnN0cmFjdEdyZW1saW5QbHVnaW47CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5qc3IyMjMuRGVmYXVsdEltcG9ydEN1c3RvbWl6ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5qc3IyMjMuR3JlbWxpblBsdWdpbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmpzcjIyMy5JbXBvcnRDdXN0b21pemVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3BhcnFsLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5zcGFycWwuRGVmYXVsdFNwYXJxbFRyYXZlcnNhbDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNwYXJxbC5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuc3BhcnFsLlNwYXJxbFRyYXZlcnNhbDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNwYXJxbC5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuc3BhcnFsLlNwYXJxbFRyYXZlcnNhbFNvdXJjZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNwYXJxbC5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5TcGFycWxTdHJhdGVneTsKKworLyoqCisgKiB7QGxpbmsgR3JlbWxpblBsdWdpbn0gaW1wbGVtZW50YXRpb24gZm9yIHtAY29kZSBzcGFycWwtZ3JlbWxpbn0gdGhhdCBpbXBvcnRzIHRoZSBrZXkgY2xhc3NlcyBhbmQgaW50ZXJmYWNlcyByZXF1aXJlZAorICogdG8gdXNlIFNQQVJRTCBpbiBUaW5rZXJQb3AuCisgKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgZmluYWwgY2xhc3MgU3BhcnFsR3JlbWxpblBsdWdpbiBleHRlbmRzIEFic3RyYWN0R3JlbWxpblBsdWdpbiB7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgTkFNRSA9ICJ0aW5rZXJwb3Auc3BhcnFsIjsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIEltcG9ydEN1c3RvbWl6ZXIgaW1wb3J0czsKKworICAgIHN0YXRpYyB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBpbXBvcnRzID0gRGVmYXVsdEltcG9ydEN1c3RvbWl6ZXIuYnVpbGQoKS5hZGRDbGFzc0ltcG9ydHMoCisgICAgICAgICAgICAgICAgICAgIFNwYXJxbFRyYXZlcnNhbFNvdXJjZS5jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgU3BhcnFsVHJhdmVyc2FsLmNsYXNzLAorICAgICAgICAgICAgICAgICAgICBEZWZhdWx0U3BhcnFsVHJhdmVyc2FsLmNsYXNzLAorICAgICAgICAgICAgICAgICAgICBTcGFycWxTdHJhdGVneS5jbGFzcykuY3JlYXRlKCk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oZXgpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3BhcnFsR3JlbWxpblBsdWdpbiBpbnN0YW5jZSA9IG5ldyBTcGFycWxHcmVtbGluUGx1Z2luKCk7CisKKyAgICBwdWJsaWMgU3BhcnFsR3JlbWxpblBsdWdpbigpIHsKKyAgICAgICAgc3VwZXIoTkFNRSwgaW1wb3J0cyk7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBTcGFycWxHcmVtbGluUGx1Z2luIGluc3RhbmNlKCkgeworICAgICAgICByZXR1cm4gaW5zdGFuY2U7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3BhcnFsLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NwYXJxbC9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvc3BhcnFsL0RlZmF1bHRTcGFycWxUcmF2ZXJzYWwuamF2YSBiL3NwYXJxbC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zcGFycWwvcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL3NwYXJxbC9EZWZhdWx0U3BhcnFsVHJhdmVyc2FsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTMzZDRiZQotLS0gL2Rldi9udWxsCisrKyBiL3NwYXJxbC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zcGFycWwvcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL3NwYXJxbC9EZWZhdWx0U3BhcnFsVHJhdmVyc2FsLmphdmEKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3BhcnFsLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5zcGFycWw7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuRGVmYXVsdFRyYXZlcnNhbDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5HcmFwaDsKKworLyoqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK3B1YmxpYyBjbGFzcyBEZWZhdWx0U3BhcnFsVHJhdmVyc2FsPFMsIEU+IGV4dGVuZHMgRGVmYXVsdFRyYXZlcnNhbDxTLCBFPiBpbXBsZW1lbnRzIFNwYXJxbFRyYXZlcnNhbC5BZG1pbjxTLCBFPiB7CisKKyAgICBwdWJsaWMgRGVmYXVsdFNwYXJxbFRyYXZlcnNhbCgpIHsKKyAgICAgICAgc3VwZXIoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgRGVmYXVsdFNwYXJxbFRyYXZlcnNhbChmaW5hbCBTcGFycWxUcmF2ZXJzYWxTb3VyY2Ugc3BhcnFsVHJhdmVyc2FsU291cmNlKSB7CisgICAgICAgIHN1cGVyKHNwYXJxbFRyYXZlcnNhbFNvdXJjZSk7CisgICAgfQorCisgICAgcHVibGljIERlZmF1bHRTcGFycWxUcmF2ZXJzYWwoZmluYWwgR3JhcGggZ3JhcGgpIHsKKyAgICAgICAgc3VwZXIoZ3JhcGgpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBTcGFycWxUcmF2ZXJzYWwuQWRtaW48UywgRT4gYXNBZG1pbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFNwYXJxbFRyYXZlcnNhbDxTLCBFPiBpdGVyYXRlKCkgeworICAgICAgICByZXR1cm4gU3BhcnFsVHJhdmVyc2FsLkFkbWluLnN1cGVyLml0ZXJhdGUoKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgRGVmYXVsdFNwYXJxbFRyYXZlcnNhbDxTLCBFPiBjbG9uZSgpIHsKKyAgICAgICAgcmV0dXJuIChEZWZhdWx0U3BhcnFsVHJhdmVyc2FsPFMsIEU+KSBzdXBlci5jbG9uZSgpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NwYXJxbC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zcGFycWwvcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL3NwYXJxbC9TcGFycWxUcmF2ZXJzYWwuamF2YSBiL3NwYXJxbC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zcGFycWwvcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL3NwYXJxbC9TcGFycWxUcmF2ZXJzYWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDMyNjdkCi0tLSAvZGV2L251bGwKKysrIGIvc3BhcnFsLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NwYXJxbC9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvc3BhcnFsL1NwYXJxbFRyYXZlcnNhbC5qYXZhCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNwYXJxbC5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuc3BhcnFsOworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5TdGVwOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsOworCisvKioKKyAqIFRoZSB7QGNvZGUgU3BhcnFsVHJhdmVyc2FsfSBoYXMgbm8gYWRkaXRpb25hbCB0cmF2ZXJzYWwgc3RlcHMuIFRoZSBvbmx5IHN0ZXAgYXZhaWxhYmxlIGZvciAiU1BBUlFMIiBpcyB0aGUKKyAqIHtAbGluayBTcGFycWxUcmF2ZXJzYWxTb3VyY2Ujc3BhcnFsKFN0cmluZyl9IHN0YXJ0IHN0ZXAuCisgKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgaW50ZXJmYWNlIFNwYXJxbFRyYXZlcnNhbDxTLCBFPiBleHRlbmRzIFRyYXZlcnNhbDxTLCBFPiB7CisgICAgcHVibGljIGludGVyZmFjZSBBZG1pbjxTLCBFPiBleHRlbmRzIFRyYXZlcnNhbC5BZG1pbjxTLCBFPiwgU3BhcnFsVHJhdmVyc2FsPFMsIEU+IHsKKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIGRlZmF1bHQgPEUyPiBTcGFycWxUcmF2ZXJzYWwuQWRtaW48UywgRTI+IGFkZFN0ZXAoZmluYWwgU3RlcDw/LCBFMj4gc3RlcCkgeworICAgICAgICAgICAgcmV0dXJuIChTcGFycWxUcmF2ZXJzYWwuQWRtaW48UywgRTI+KSBUcmF2ZXJzYWwuQWRtaW4uc3VwZXIuYWRkU3RlcCgoU3RlcCkgc3RlcCk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIGRlZmF1bHQgU3BhcnFsVHJhdmVyc2FsPFMsIEU+IGl0ZXJhdGUoKSB7CisgICAgICAgICAgICByZXR1cm4gU3BhcnFsVHJhdmVyc2FsLnN1cGVyLml0ZXJhdGUoKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgU3BhcnFsVHJhdmVyc2FsLkFkbWluPFMsIEU+IGNsb25lKCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGRlZmF1bHQgU3BhcnFsVHJhdmVyc2FsLkFkbWluPFMsIEU+IGFzQWRtaW4oKSB7CisgICAgICAgIHJldHVybiAoU3BhcnFsVHJhdmVyc2FsLkFkbWluPFMsIEU+KSB0aGlzOworICAgIH0KKworICAgIC8vLy8KKworICAgIC8qKgorICAgICAqIEl0ZXJhdGVzIHRoZSB0cmF2ZXJzYWwgcHJlc3VtYWJseSBmb3IgdGhlIGdlbmVyYXRpb24gb2Ygc2lkZS1lZmZlY3RzLgorICAgICAqLworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBkZWZhdWx0IFNwYXJxbFRyYXZlcnNhbDxTLCBFPiBpdGVyYXRlKCkgeworICAgICAgICBUcmF2ZXJzYWwuc3VwZXIuaXRlcmF0ZSgpOworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcGFycWwtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3BhcnFsL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9zcGFycWwvU3BhcnFsVHJhdmVyc2FsU291cmNlLmphdmEgYi9zcGFycWwtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3BhcnFsL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9zcGFycWwvU3BhcnFsVHJhdmVyc2FsU291cmNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzk4MTJiYgotLS0gL2Rldi9udWxsCisrKyBiL3NwYXJxbC1ncmVtbGluL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zcGFycWwvcHJvY2Vzcy90cmF2ZXJzYWwvZHNsL3NwYXJxbC9TcGFycWxUcmF2ZXJzYWxTb3VyY2UuamF2YQpAQCAtMCwwICsxLDIwMyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3BhcnFsLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5zcGFycWw7CisKK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29uZmlndXJhdGlvbi5Db25maWd1cmF0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy5jb21wdXRlci5Db21wdXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MuY29tcHV0ZXIuR3JhcGhDb21wdXRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MucmVtb3RlLlJlbW90ZUNvbm5lY3Rpb247CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnJlbW90ZS50cmF2ZXJzYWwuc3RyYXRlZ3kuZGVjb3JhdGlvbi5SZW1vdGVTdHJhdGVneTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLkJ5dGVjb2RlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsU291cmNlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuVHJhdmVyc2FsU3RyYXRlZ2llczsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbFN0cmF0ZWd5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkRlZmF1bHRHcmFwaFRyYXZlcnNhbDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5HcmFwaFRyYXZlcnNhbDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5HcmFwaFRyYXZlcnNhbFNvdXJjZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuc2lkZUVmZmVjdC5JbmplY3RTdGVwOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3BhcnFsLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LlNwYXJxbFN0cmF0ZWd5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkdyYXBoOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlRyYW5zYWN0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLnV0aWwuU3RyaW5nRmFjdG9yeTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS51dGlsLmVtcHR5LkVtcHR5R3JhcGg7CisKK2ltcG9ydCBqYXZhLnV0aWwuZnVuY3Rpb24uQmluYXJ5T3BlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLmZ1bmN0aW9uLlN1cHBsaWVyOworaW1wb3J0IGphdmEudXRpbC5mdW5jdGlvbi5VbmFyeU9wZXJhdG9yOworCisvKioKKyAqIEEge0BsaW5rIFRyYXZlcnNhbFNvdXJjZX0gaW1wbGVtZW50YXRpb24gdGhhdCBzcGF3bnMge0BsaW5rIFNwYXJxbFRyYXZlcnNhbH0gaW5zdGFuY2VzLgorICoKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqLworcHVibGljIGNsYXNzIFNwYXJxbFRyYXZlcnNhbFNvdXJjZSBleHRlbmRzIEdyYXBoVHJhdmVyc2FsU291cmNlIHsKKworICAgIHB1YmxpYyBTcGFycWxUcmF2ZXJzYWxTb3VyY2UoZmluYWwgR3JhcGggZ3JhcGgsIGZpbmFsIFRyYXZlcnNhbFN0cmF0ZWdpZXMgdHJhdmVyc2FsU3RyYXRlZ2llcykgeworICAgICAgICBzdXBlcihncmFwaCwgdHJhdmVyc2FsU3RyYXRlZ2llcyk7CisgICAgfQorCisgICAgcHVibGljIFNwYXJxbFRyYXZlcnNhbFNvdXJjZShmaW5hbCBHcmFwaCBncmFwaCkgeworICAgICAgICBzdXBlcihncmFwaCk7CisgICAgfQorCisgICAgcHVibGljIFNwYXJxbFRyYXZlcnNhbFNvdXJjZShmaW5hbCBSZW1vdGVDb25uZWN0aW9uIGNvbm5lY3Rpb24pIHsKKyAgICAgICAgc3VwZXIoY29ubmVjdGlvbik7CisgICAgfQorCisgICAgQFN1cHByZXNzV2FybmluZ3MoIkNsb25lRG9lc250RGVjbGFyZUNsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIikKKyAgICBwdWJsaWMgU3BhcnFsVHJhdmVyc2FsU291cmNlIGNsb25lKCkgeworICAgICAgICByZXR1cm4gKFNwYXJxbFRyYXZlcnNhbFNvdXJjZSkgc3VwZXIuY2xvbmUoKTsKKyAgICB9CisKKyAgICAvLy8vIENPTkZJR1VSQVRJT05TCisKKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBTcGFycWxUcmF2ZXJzYWxTb3VyY2Ugd2l0aChmaW5hbCBTdHJpbmcga2V5KSB7CisgICAgICAgIHJldHVybiAoU3BhcnFsVHJhdmVyc2FsU291cmNlKSBzdXBlci53aXRoKGtleSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFNwYXJxbFRyYXZlcnNhbFNvdXJjZSB3aXRoKGZpbmFsIFN0cmluZyBrZXksIGZpbmFsIE9iamVjdCB2YWx1ZSkgeworICAgICAgICByZXR1cm4gKFNwYXJxbFRyYXZlcnNhbFNvdXJjZSkgc3VwZXIud2l0aChrZXksIHZhbHVlKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgU3BhcnFsVHJhdmVyc2FsU291cmNlIHdpdGhDb21wdXRlcihmaW5hbCBDb21wdXRlciBjb21wdXRlcikgeworICAgICAgICByZXR1cm4gKFNwYXJxbFRyYXZlcnNhbFNvdXJjZSkgc3VwZXIud2l0aENvbXB1dGVyKGNvbXB1dGVyKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgU3BhcnFsVHJhdmVyc2FsU291cmNlIHdpdGhDb21wdXRlcihmaW5hbCBDbGFzczw/IGV4dGVuZHMgR3JhcGhDb21wdXRlcj4gZ3JhcGhDb21wdXRlckNsYXNzKSB7CisgICAgICAgIHJldHVybiAoU3BhcnFsVHJhdmVyc2FsU291cmNlKSBzdXBlci53aXRoQ29tcHV0ZXIoZ3JhcGhDb21wdXRlckNsYXNzKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgU3BhcnFsVHJhdmVyc2FsU291cmNlIHdpdGhDb21wdXRlcigpIHsKKyAgICAgICAgcmV0dXJuIChTcGFycWxUcmF2ZXJzYWxTb3VyY2UpIHN1cGVyLndpdGhDb21wdXRlcigpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyA8QT4gU3BhcnFsVHJhdmVyc2FsU291cmNlIHdpdGhTaWRlRWZmZWN0KGZpbmFsIFN0cmluZyBrZXksIGZpbmFsIFN1cHBsaWVyPEE+IGluaXRpYWxWYWx1ZSwgZmluYWwgQmluYXJ5T3BlcmF0b3I8QT4gcmVkdWNlcikgeworICAgICAgICByZXR1cm4gKFNwYXJxbFRyYXZlcnNhbFNvdXJjZSkgc3VwZXIud2l0aFNpZGVFZmZlY3Qoa2V5LCBpbml0aWFsVmFsdWUsIHJlZHVjZXIpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyA8QT4gU3BhcnFsVHJhdmVyc2FsU291cmNlIHdpdGhTaWRlRWZmZWN0KGZpbmFsIFN0cmluZyBrZXksIGZpbmFsIEEgaW5pdGlhbFZhbHVlLCBmaW5hbCBCaW5hcnlPcGVyYXRvcjxBPiByZWR1Y2VyKSB7CisgICAgICAgIHJldHVybiAoU3BhcnFsVHJhdmVyc2FsU291cmNlKSBzdXBlci53aXRoU2lkZUVmZmVjdChrZXksIGluaXRpYWxWYWx1ZSwgcmVkdWNlcik7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIDxBPiBTcGFycWxUcmF2ZXJzYWxTb3VyY2Ugd2l0aFNpZGVFZmZlY3QoZmluYWwgU3RyaW5nIGtleSwgZmluYWwgQSBpbml0aWFsVmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIChTcGFycWxUcmF2ZXJzYWxTb3VyY2UpIHN1cGVyLndpdGhTaWRlRWZmZWN0KGtleSwgaW5pdGlhbFZhbHVlKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgPEE+IFNwYXJxbFRyYXZlcnNhbFNvdXJjZSB3aXRoU2lkZUVmZmVjdChmaW5hbCBTdHJpbmcga2V5LCBmaW5hbCBTdXBwbGllcjxBPiBpbml0aWFsVmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIChTcGFycWxUcmF2ZXJzYWxTb3VyY2UpIHN1cGVyLndpdGhTaWRlRWZmZWN0KGtleSwgaW5pdGlhbFZhbHVlKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgPEE+IFNwYXJxbFRyYXZlcnNhbFNvdXJjZSB3aXRoU2FjayhmaW5hbCBTdXBwbGllcjxBPiBpbml0aWFsVmFsdWUsIGZpbmFsIFVuYXJ5T3BlcmF0b3I8QT4gc3BsaXRPcGVyYXRvciwgZmluYWwgQmluYXJ5T3BlcmF0b3I8QT4gbWVyZ2VPcGVyYXRvcikgeworICAgICAgICByZXR1cm4gKFNwYXJxbFRyYXZlcnNhbFNvdXJjZSkgc3VwZXIud2l0aFNhY2soaW5pdGlhbFZhbHVlLCBzcGxpdE9wZXJhdG9yLCBtZXJnZU9wZXJhdG9yKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgPEE+IFNwYXJxbFRyYXZlcnNhbFNvdXJjZSB3aXRoU2FjayhmaW5hbCBBIGluaXRpYWxWYWx1ZSwgZmluYWwgVW5hcnlPcGVyYXRvcjxBPiBzcGxpdE9wZXJhdG9yLCBmaW5hbCBCaW5hcnlPcGVyYXRvcjxBPiBtZXJnZU9wZXJhdG9yKSB7CisgICAgICAgIHJldHVybiAoU3BhcnFsVHJhdmVyc2FsU291cmNlKSBzdXBlci53aXRoU2Fjayhpbml0aWFsVmFsdWUsIHNwbGl0T3BlcmF0b3IsIG1lcmdlT3BlcmF0b3IpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyA8QT4gU3BhcnFsVHJhdmVyc2FsU291cmNlIHdpdGhTYWNrKGZpbmFsIEEgaW5pdGlhbFZhbHVlKSB7CisgICAgICAgIHJldHVybiAoU3BhcnFsVHJhdmVyc2FsU291cmNlKSBzdXBlci53aXRoU2Fjayhpbml0aWFsVmFsdWUpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyA8QT4gU3BhcnFsVHJhdmVyc2FsU291cmNlIHdpdGhTYWNrKGZpbmFsIFN1cHBsaWVyPEE+IGluaXRpYWxWYWx1ZSkgeworICAgICAgICByZXR1cm4gKFNwYXJxbFRyYXZlcnNhbFNvdXJjZSkgc3VwZXIud2l0aFNhY2soaW5pdGlhbFZhbHVlKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgPEE+IFNwYXJxbFRyYXZlcnNhbFNvdXJjZSB3aXRoU2FjayhmaW5hbCBTdXBwbGllcjxBPiBpbml0aWFsVmFsdWUsIGZpbmFsIFVuYXJ5T3BlcmF0b3I8QT4gc3BsaXRPcGVyYXRvcikgeworICAgICAgICByZXR1cm4gKFNwYXJxbFRyYXZlcnNhbFNvdXJjZSkgc3VwZXIud2l0aFNhY2soaW5pdGlhbFZhbHVlLCBzcGxpdE9wZXJhdG9yKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgPEE+IFNwYXJxbFRyYXZlcnNhbFNvdXJjZSB3aXRoU2FjayhmaW5hbCBBIGluaXRpYWxWYWx1ZSwgZmluYWwgVW5hcnlPcGVyYXRvcjxBPiBzcGxpdE9wZXJhdG9yKSB7CisgICAgICAgIHJldHVybiAoU3BhcnFsVHJhdmVyc2FsU291cmNlKSBzdXBlci53aXRoU2Fjayhpbml0aWFsVmFsdWUsIHNwbGl0T3BlcmF0b3IpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyA8QT4gU3BhcnFsVHJhdmVyc2FsU291cmNlIHdpdGhTYWNrKGZpbmFsIFN1cHBsaWVyPEE+IGluaXRpYWxWYWx1ZSwgZmluYWwgQmluYXJ5T3BlcmF0b3I8QT4gbWVyZ2VPcGVyYXRvcikgeworICAgICAgICByZXR1cm4gKFNwYXJxbFRyYXZlcnNhbFNvdXJjZSkgc3VwZXIud2l0aFNhY2soaW5pdGlhbFZhbHVlLCBtZXJnZU9wZXJhdG9yKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgPEE+IFNwYXJxbFRyYXZlcnNhbFNvdXJjZSB3aXRoU2FjayhmaW5hbCBBIGluaXRpYWxWYWx1ZSwgZmluYWwgQmluYXJ5T3BlcmF0b3I8QT4gbWVyZ2VPcGVyYXRvcikgeworICAgICAgICByZXR1cm4gKFNwYXJxbFRyYXZlcnNhbFNvdXJjZSkgc3VwZXIud2l0aFNhY2soaW5pdGlhbFZhbHVlLCBtZXJnZU9wZXJhdG9yKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgU3BhcnFsVHJhdmVyc2FsU291cmNlIHdpdGhCdWxrKGZpbmFsIGJvb2xlYW4gdXNlQnVsaykgeworICAgICAgICByZXR1cm4gKFNwYXJxbFRyYXZlcnNhbFNvdXJjZSkgc3VwZXIud2l0aEJ1bGsodXNlQnVsayk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFNwYXJxbFRyYXZlcnNhbFNvdXJjZSB3aXRoUGF0aCgpIHsKKyAgICAgICAgcmV0dXJuIChTcGFycWxUcmF2ZXJzYWxTb3VyY2UpIHN1cGVyLndpdGhQYXRoKCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFNwYXJxbFRyYXZlcnNhbFNvdXJjZSB3aXRoU3RyYXRlZ2llcyhmaW5hbCBUcmF2ZXJzYWxTdHJhdGVneS4uLiB0cmF2ZXJzYWxTdHJhdGVnaWVzKSB7CisgICAgICAgIHJldHVybiAoU3BhcnFsVHJhdmVyc2FsU291cmNlKSBzdXBlci53aXRoU3RyYXRlZ2llcyh0cmF2ZXJzYWxTdHJhdGVnaWVzKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBAU3VwcHJlc3NXYXJuaW5ncyh7InVuY2hlY2tlZCJ9KQorICAgIHB1YmxpYyBTcGFycWxUcmF2ZXJzYWxTb3VyY2Ugd2l0aG91dFN0cmF0ZWdpZXMoZmluYWwgQ2xhc3M8PyBleHRlbmRzIFRyYXZlcnNhbFN0cmF0ZWd5Pi4uLiB0cmF2ZXJzYWxTdHJhdGVneUNsYXNzZXMpIHsKKyAgICAgICAgcmV0dXJuIChTcGFycWxUcmF2ZXJzYWxTb3VyY2UpIHN1cGVyLndpdGhvdXRTdHJhdGVnaWVzKHRyYXZlcnNhbFN0cmF0ZWd5Q2xhc3Nlcyk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFNwYXJxbFRyYXZlcnNhbFNvdXJjZSB3aXRoUmVtb3RlKGZpbmFsIENvbmZpZ3VyYXRpb24gY29uZikgeworICAgICAgICByZXR1cm4gKFNwYXJxbFRyYXZlcnNhbFNvdXJjZSkgc3VwZXIud2l0aFJlbW90ZShjb25mKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgU3BhcnFsVHJhdmVyc2FsU291cmNlIHdpdGhSZW1vdGUoZmluYWwgU3RyaW5nIGNvbmZpZ0ZpbGUpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICByZXR1cm4gKFNwYXJxbFRyYXZlcnNhbFNvdXJjZSkgc3VwZXIud2l0aFJlbW90ZShjb25maWdGaWxlKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgU3BhcnFsVHJhdmVyc2FsU291cmNlIHdpdGhSZW1vdGUoZmluYWwgUmVtb3RlQ29ubmVjdGlvbiBjb25uZWN0aW9uKSB7CisgICAgICAgIHJldHVybiAoU3BhcnFsVHJhdmVyc2FsU291cmNlKSBzdXBlci53aXRoUmVtb3RlKGNvbm5lY3Rpb24pOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRoZSBzdGFydCBzdGVwIGZvciBhIFNQQVJRTCBiYXNlZCB0cmF2ZXJzYWwgdGhhdCBhY2NlcHRzIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBxdWVyeSB0byBleGVjdXRlLgorICAgICAqLworICAgIHB1YmxpYyA8Uz4gR3JhcGhUcmF2ZXJzYWw8Uyw/PiBzcGFycWwoZmluYWwgU3RyaW5nIHF1ZXJ5KSB7CisgICAgICAgIGZpbmFsIFNwYXJxbFRyYXZlcnNhbFNvdXJjZSBjbG9uZSA9IHRoaXMud2l0aFN0cmF0ZWdpZXMoU3BhcnFsU3RyYXRlZ3kuaW5zdGFuY2UoKSkuY2xvbmUoKTsKKworICAgICAgICAvLyB0aGUgaW5qZWN0KCkgaG9sZHMgdGhlIHNwYXJxbCB3aGljaCB0aGUgU3BhcnFsU3RyYXRlZ3kgdGhlbiBkZXRlY3RzIGFuZCBjb252ZXJ0cyB0byBhIHRyYXZlcnNhbAorICAgICAgICBjbG9uZS5ieXRlY29kZS5hZGRTdGVwKEdyYXBoVHJhdmVyc2FsLlN5bWJvbHMuaW5qZWN0LCBxdWVyeSk7CisgICAgICAgIGZpbmFsIEdyYXBoVHJhdmVyc2FsLkFkbWluPFMsIFM+IHRyYXZlcnNhbCA9IG5ldyBEZWZhdWx0R3JhcGhUcmF2ZXJzYWwoY2xvbmUpOworICAgICAgICByZXR1cm4gdHJhdmVyc2FsLmFkZFN0ZXAobmV3IEluamVjdFN0ZXA8Pih0cmF2ZXJzYWwsIHF1ZXJ5KSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3BhcnFsLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NwYXJxbC9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9TcGFycWxTdHJhdGVneS5qYXZhIGIvc3BhcnFsLWdyZW1saW4vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NwYXJxbC9wcm9jZXNzL3RyYXZlcnNhbC9zdHJhdGVneS9TcGFycWxTdHJhdGVneS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhNjJlMzEKLS0tIC9kZXYvbnVsbAorKysgYi9zcGFycWwtZ3JlbWxpbi9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3BhcnFsL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L1NwYXJxbFN0cmF0ZWd5LmphdmEKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3BhcnFsLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5OworCitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnJlbW90ZS50cmF2ZXJzYWwuc3RyYXRlZ3kuZGVjb3JhdGlvbi5SZW1vdGVTdHJhdGVneTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbFN0cmF0ZWd5OworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLkdyYXBoVHJhdmVyc2FsU291cmNlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5zaWRlRWZmZWN0LkluamVjdFN0ZXA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuRW1wdHlTdGVwOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kuQWJzdHJhY3RUcmF2ZXJzYWxTdHJhdGVneTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnV0aWwuVHJhdmVyc2FsSGVscGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3BhcnFsLlNwYXJxbFRvR3JlbWxpbkNvbXBpbGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3BhcnFsLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5zcGFycWwuU3BhcnFsVHJhdmVyc2FsU291cmNlOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLkdyYXBoOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3RydWN0dXJlLlZlcnRleDsKKworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKK2ltcG9ydCBqYXZhLnV0aWwuU2V0OworCisvKioKKyAqIFRoaXMge0BsaW5rIFRyYXZlcnNhbFN0cmF0ZWd5fSBpcyB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIHtAbGluayBTcGFycWxUcmF2ZXJzYWxTb3VyY2V9IHdoaWNoIGhhcyBhIHNpbmdsZQorICoge0Bjb2RlIHNwYXJxbCgpfSBzdGFydCBzdGVwLiBUaGF0IHN0ZXAgYWRkcyBhIHtAbGluayBJbmplY3RTdGVwfSB0byB0aGUgdHJhdmVyc2FsIHdpdGggdGhlIFNQQVJRTCBxdWVyeSB3aXRoaW4KKyAqIGl0IGFzIGEgc3RyaW5nIHZhbHVlLiBUaGlzIHN0cmF0ZWd5IGZpbmRzIHRoYXQgc3RlcCBhbmQgY29tcGlsZXMgaXQgdG8gYSBHcmVtbGluIHRyYXZlcnNhbCB3aGljaCB0aGVuIHJlcGxhY2VzCisgKiB0aGUge0BsaW5rIEluamVjdFN0ZXB9LgorICoKKyAqIEZvciByZW1vdGUgYnl0ZWNvZGUgZXhlY3V0aW9uLCBub3RlIHRoYXQgdGhlIHtAY29kZSBzcGFycWwtZ3JlbWxpbn0gZGVwZW5kZW5jaWVzIG5lZWQgdG8gYmUgb24gdGhlIHNlcnZlci4gVGhlCisgKiB3YXkgcmVtb3Rpbmcgd29ya3MgLSBzZWUge0Bjb2RlIFJlbW90ZVN0ZXB9IC0gcHJldmVudHMgbW9kaWZpZWQgYnl0ZWNvZGUgZnJvbSBiZWluZyBzdWJtaXR0ZWQgdG8gdGhlIHNlcnZlciwgc28KKyAqIHRlY2huaWNhbGx5LCB0aGlzIHN0cmF0ZWd5IGNhbid0IGJlIGFwcGxpZWQgZmlyc3Qgb24gdGhlIGNsaWVudC4KKyAqCisgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCisgKi8KK3B1YmxpYyBjbGFzcyBTcGFycWxTdHJhdGVneSBleHRlbmRzIEFic3RyYWN0VHJhdmVyc2FsU3RyYXRlZ3k8VHJhdmVyc2FsU3RyYXRlZ3kuRGVjb3JhdGlvblN0cmF0ZWd5PgorICAgICAgICBpbXBsZW1lbnRzIFRyYXZlcnNhbFN0cmF0ZWd5LkRlY29yYXRpb25TdHJhdGVneSB7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3BhcnFsU3RyYXRlZ3kgSU5TVEFOQ0UgPSBuZXcgU3BhcnFsU3RyYXRlZ3koKTsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFNldDxDbGFzczw/IGV4dGVuZHMgRGVjb3JhdGlvblN0cmF0ZWd5Pj4gUFJJT1JTID0gQ29sbGVjdGlvbnMuc2luZ2xldG9uKFJlbW90ZVN0cmF0ZWd5LmNsYXNzKTsKKworICAgIHByaXZhdGUgU3BhcnFsU3RyYXRlZ3koKSB7fQorCisgICAgcHVibGljIHN0YXRpYyBTcGFycWxTdHJhdGVneSBpbnN0YW5jZSgpIHsKKyAgICAgICAgcmV0dXJuIElOU1RBTkNFOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBTZXQ8Q2xhc3M8PyBleHRlbmRzIERlY29yYXRpb25TdHJhdGVneT4+IGFwcGx5UHJpb3IoKSB7CisgICAgICAgIHJldHVybiBQUklPUlM7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgYXBwbHkoZmluYWwgVHJhdmVyc2FsLkFkbWluPD8sID8+IHRyYXZlcnNhbCkgeworICAgICAgICBpZiAoISh0cmF2ZXJzYWwuZ2V0UGFyZW50KCkgaW5zdGFuY2VvZiBFbXB0eVN0ZXApKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIGFzc3VtZXMgdGhhdCB0aGUgdHJhdmVyc2FsIHN0YXJ0cyB3aXRoIHRoZSBzaW5nbGUgaW5qZWN0IHN0ZXAgdGhhdCBob2xkcyB0aGUgc3BhcnFsIHF1ZXJ5CisgICAgICAgIGlmICh0cmF2ZXJzYWwuZ2V0U3RhcnRTdGVwKCkgaW5zdGFuY2VvZiBJbmplY3RTdGVwKSB7CisgICAgICAgICAgICBmaW5hbCBJbmplY3RTdGVwIHN0ZXBXaXRoU3BhcnFsID0gKEluamVjdFN0ZXApIHRyYXZlcnNhbC5nZXRTdGFydFN0ZXAoKTsKKyAgICAgICAgICAgIGZpbmFsIE9iamVjdFtdIGluamVjdGlvbnMgPSBzdGVwV2l0aFNwYXJxbC5nZXRJbmplY3Rpb25zKCk7CisKKyAgICAgICAgICAgIC8vIGZ1cnRoZXIgYXNzdW1lcyB0aGF0IHRoZXJlIGlzIGp1c3Qgb25lIGFyZ3VtZW50IHRvIHRoYXQgaW5qZWN0aW9uIHdoaWNoIGlzIGEgc3RyaW5nIChpLmUuIHNwYXJxbCBxdWVyeSkKKyAgICAgICAgICAgIGlmIChpbmplY3Rpb25zLmxlbmd0aCA9PSAxICYmIGluamVjdGlvbnNbMF0gaW5zdGFuY2VvZiBTdHJpbmcpIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgc3BhcnFsID0gKFN0cmluZykgaW5qZWN0aW9uc1swXTsKKworICAgICAgICAgICAgICAgIC8vIHRyeSB0byBncmFiIHRoZSBUcmF2ZXJzYWxTb3VyY2UgZnJvbSB0aGUgVHJhdmVyc2FsLCBidXQgaWYgaXQncyBub3QgdGhlcmUgdGhlbiB0cnkgdG8gdGhlIEdyYXBoCisgICAgICAgICAgICAgICAgLy8gaW5zdGFuY2UgYW5kIHNwYXduIG9uZSBvZmYgZnJvbSB0aGVyZS4KKyAgICAgICAgICAgICAgICBmaW5hbCBUcmF2ZXJzYWw8VmVydGV4LCA/PiBzcGFycWxUcmF2ZXJzYWwgPSBTcGFycWxUb0dyZW1saW5Db21waWxlci5jb21waWxlKAorICAgICAgICAgICAgICAgICAgICAgICAgKEdyYXBoVHJhdmVyc2FsU291cmNlKSB0cmF2ZXJzYWwuZ2V0VHJhdmVyc2FsU291cmNlKCkub3JFbHNlR2V0KCgpIC0+IHRyYXZlcnNhbC5nZXRHcmFwaCgpLm1hcChHcmFwaDo6dHJhdmVyc2FsKS5nZXQoKSksIHNwYXJxbCk7CisgICAgICAgICAgICAgICAgVHJhdmVyc2FsSGVscGVyLmluc2VydFRyYXZlcnNhbChzdGVwV2l0aFNwYXJxbCwgc3BhcnFsVHJhdmVyc2FsLmFzQWRtaW4oKSwgdHJhdmVyc2FsKTsKKyAgICAgICAgICAgICAgICB0cmF2ZXJzYWwucmVtb3ZlU3RlcChzdGVwV2l0aFNwYXJxbCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcGFycWwtZ3JlbWxpbi9zcmMvbWFpbi9yZXNvdXJjZXMvTUVUQS1JTkYvc2VydmljZXMvb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5qc3IyMjMuR3JlbWxpblBsdWdpbiBiL3NwYXJxbC1ncmVtbGluL3NyYy9tYWluL3Jlc291cmNlcy9NRVRBLUlORi9zZXJ2aWNlcy9vcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLmpzcjIyMy5HcmVtbGluUGx1Z2luCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4MjA1NGMKLS0tIC9kZXYvbnVsbAorKysgYi9zcGFycWwtZ3JlbWxpbi9zcmMvbWFpbi9yZXNvdXJjZXMvTUVUQS1JTkYvc2VydmljZXMvb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5qc3IyMjMuR3JlbWxpblBsdWdpbgpAQCAtMCwwICsxIEBACitvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnNwYXJxbC5qc3IyMjMuU3BhcnFsR3JlbWxpblBsdWdpbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NwYXJxbC1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi9zcGFycWwvUHJlZml4ZXNUZXN0LmphdmEgYi9zcGFycWwtZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3BhcnFsL1ByZWZpeGVzVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1NTY4MGIKLS0tIC9kZXYvbnVsbAorKysgYi9zcGFycWwtZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3BhcnFsL1ByZWZpeGVzVGVzdC5qYXZhCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zcGFycWw7CisKK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKKworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydEVxdWFsczsKKworcHVibGljIGNsYXNzIFByZWZpeGVzVGVzdCB7CisKKyAgICBmaW5hbCBzdGF0aWMgU3RyaW5nIFRFU1RfUVVFUlkgPSBTdHJpbmcuam9pbihTeXN0ZW0ubGluZVNlcGFyYXRvcigpLCAiU0VMRUNUICoiLCAiV0hFUkUge30iKTsKKyAgICBmaW5hbCBzdGF0aWMgU3RyaW5nIFBSRUZJWEVEX1FVRVJZID0gU3RyaW5nLmpvaW4oU3lzdGVtLmxpbmVTZXBhcmF0b3IoKSwKKyAgICAgICAgICAgICJQUkVGSVggZTogPCIgKyBQcmVmaXhlcy5CQVNFX1VSSSArICJlZGdlIz4iLAorICAgICAgICAgICAgIlBSRUZJWCBwOiA8IiArIFByZWZpeGVzLkJBU0VfVVJJICsgInByb3BlcnR5Iz4iLAorICAgICAgICAgICAgIlBSRUZJWCB2OiA8IiArIFByZWZpeGVzLkJBU0VfVVJJICsgInZhbHVlIz4iLAorICAgICAgICAgICAgVEVTVF9RVUVSWSk7CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHRlc3RHZXRVUkkoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgU3RyaW5nIHByZWZpeCA9ICJ0ZXN0IjsKKyAgICAgICAgZmluYWwgU3RyaW5nIHVyaSA9IFByZWZpeGVzLkJBU0VfVVJJICsgcHJlZml4ICsgIiMiOworICAgICAgICBhc3NlcnRFcXVhbHModXJpLCBQcmVmaXhlcy5nZXRVUkkocHJlZml4KSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCB0ZXN0R2V0VVJJVmFsdWUoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgZmluYWwgU3RyaW5nIHByZWZpeCA9ICJ0ZXN0IjsKKyAgICAgICAgZmluYWwgU3RyaW5nIHZhbHVlID0gInZhbHVlIjsKKyAgICAgICAgZmluYWwgU3RyaW5nIHVyaSA9IFByZWZpeGVzLmdldFVSSShwcmVmaXgpICsgdmFsdWU7CisgICAgICAgIGFzc2VydEVxdWFscyh2YWx1ZSwgUHJlZml4ZXMuZ2V0VVJJVmFsdWUodXJpKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCB0ZXN0R2V0UHJlZml4KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIFN0cmluZyBwcmVmaXggPSAidGVzdCI7CisgICAgICAgIGZpbmFsIFN0cmluZyB1cmkgPSBQcmVmaXhlcy5nZXRVUkkocHJlZml4KTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKHByZWZpeCwgUHJlZml4ZXMuZ2V0UHJlZml4KHVyaSkpOworICAgIH0KKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgdGVzdFByZXBlbmRTdHJpbmcoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKFBSRUZJWEVEX1FVRVJZLCBQcmVmaXhlcy5wcmVwZW5kKFRFU1RfUVVFUlkpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHRlc3RQcmVwZW5kU3RyaW5nQnVpbGRlcigpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBmaW5hbCBTdHJpbmdCdWlsZGVyIGJ1aWxkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcihURVNUX1FVRVJZKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKFBSRUZJWEVEX1FVRVJZLCBQcmVmaXhlcy5wcmVwZW5kKGJ1aWxkZXIpLnRvU3RyaW5nKCkpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcGFycWwtZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vc3BhcnFsL3Byb2Nlc3MvdHJhdmVyc2FsL2RzbC9zcGFycWwvU3BhcnFsVHJhdmVyc2FsU291cmNlVGVzdC5qYXZhIGIvc3BhcnFsLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NwYXJxbC9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvc3BhcnFsL1NwYXJxbFRyYXZlcnNhbFNvdXJjZVRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Y2IzMzRhCi0tLSAvZGV2L251bGwKKysrIGIvc3BhcnFsLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3NwYXJxbC9wcm9jZXNzL3RyYXZlcnNhbC9kc2wvc3BhcnFsL1NwYXJxbFRyYXZlcnNhbFNvdXJjZVRlc3QuamF2YQpAQCAtMCwwICsxLDE4OSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4uc3BhcnFsLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5zcGFycWw7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNhbDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5HcmFwaFRyYXZlcnNhbFNvdXJjZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5fXzsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5HcmFwaDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5WZXJ0ZXg7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi50aW5rZXJncmFwaC5zdHJ1Y3R1cmUuVGlua2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKKworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5NYXA7CisKK2ltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5PcGVyYXRvci5tdWx0OworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5fXy5vdXRFOworaW1wb3J0IHN0YXRpYyBvcmcuaGFtY3Jlc3QuTWF0Y2hlckFzc2VydC5hc3NlcnRUaGF0OworaW1wb3J0IHN0YXRpYyBvcmcuaGFtY3Jlc3QuY29sbGVjdGlvbi5Jc0l0ZXJhYmxlQ29udGFpbmluZ0luQW55T3JkZXIuY29udGFpbnNJbkFueU9yZGVyOworaW1wb3J0IHN0YXRpYyBvcmcuaGFtY3Jlc3QuY29sbGVjdGlvbi5Jc0l0ZXJhYmxlQ29udGFpbmluZ0luT3JkZXIuY29udGFpbnM7CitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOworCisvKioKKyAqIEBhdXRob3IgU3RlcGhlbiBNYWxsZXR0ZSAoaHR0cDovL3N0ZXBoZW4uZ2Vub3ByaW1lLmNvbSkKKyAqLworcHVibGljIGNsYXNzIFNwYXJxbFRyYXZlcnNhbFNvdXJjZVRlc3QgeworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgR3JhcGggZ3JhcGggPSBUaW5rZXJGYWN0b3J5LmNyZWF0ZU1vZGVybigpOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFNwYXJxbFRyYXZlcnNhbFNvdXJjZSBnID0gZ3JhcGgudHJhdmVyc2FsKFNwYXJxbFRyYXZlcnNhbFNvdXJjZS5jbGFzcyk7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgR3JhcGhUcmF2ZXJzYWxTb3VyY2UgX2cgPSBncmFwaC50cmF2ZXJzYWwoKTsKKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkU3RhcnRXaXRoU3BhcnFsUmV0dXJuaW5nTWFwQW5kRW5kV2l0aEdyZW1saW4oKSB7CisgICAgICAgIGZpbmFsIExpc3Q8Pz4geCA9IGcuc3BhcnFsKCJTRUxFQ1QgP25hbWUgP2FnZSBXSEVSRSB7ID9wZXJzb24gdjpuYW1lID9uYW1lIC4gP3BlcnNvbiB2OmFnZSA/YWdlIH0iKS5zZWxlY3QoIm5hbWUiKS50b0xpc3QoKTsKKyAgICAgICAgYXNzZXJ0VGhhdCh4LCBjb250YWluc0luQW55T3JkZXIoIm1hcmtvIiwgInZhZGFzIiwgImpvc2giLCAicGV0ZXIiKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRTdGFydFdpdGhTcGFycWxSZXR1cm5pbmdWZXJ0ZXhBbmRFbmRXaXRoR3JlbWxpbigpIHsKKyAgICAgICAgZmluYWwgTGlzdDw/PiB4ID0gZy5zcGFycWwoIlNFTEVDVCAqIFdIRVJFIHsgfSIpLm91dCgia25vd3MiKS52YWx1ZXMoIm5hbWUiKS50b0xpc3QoKTsKKyAgICAgICAgYXNzZXJ0VGhhdCh4LCBjb250YWluc0luQW55T3JkZXIoInZhZGFzIiwgImpvc2giKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRTdGFydFdpdGhTcGFycWxVc2luZ1NhY2tzQW5kRW5kV2l0aEdyZW1saW4oKSB7CisgICAgICAgIGZpbmFsIExpc3Q8Pz4geCA9IGcud2l0aFNhY2soMS4wZikuc3BhcnFsKCJTRUxFQ1QgKiBXSEVSRSB7IH0iKS5yZXBlYXQoCisgICAgICAgICAgICAgICAgKFRyYXZlcnNhbCkgb3V0RSgpLnNhY2sobXVsdCkuYnkoIndlaWdodCIpLmluVigpKS50aW1lcygyKS5zYWNrKCkudG9MaXN0KCk7CisgICAgICAgIGFzc2VydFRoYXQoeCwgY29udGFpbnNJbkFueU9yZGVyKDEuMCwgMC40KSk7CisgICAgfQorICAgIAorICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkRmluZEFsbFBlcnNvbnNOYW1lc0FuZEFnZXMoKSB7CisgICAgICAgIGZpbmFsIExpc3Q8Pz4geCA9IGcuc3BhcnFsKCJTRUxFQ1QgP25hbWUgP2FnZSBXSEVSRSB7ID9wZXJzb24gdjpuYW1lID9uYW1lIC4gP3BlcnNvbiB2OmFnZSA/YWdlIH0iKS50b0xpc3QoKTsKKyAgICAgICAgYXNzZXJ0VGhhdCh4LCBjb250YWluc0luQW55T3JkZXIoCisgICAgICAgICAgICAgICAgbmV3IEhhc2hNYXA8U3RyaW5nLE9iamVjdD4oKXt7CisgICAgICAgICAgICAgICAgICAgIHB1dCgibmFtZSIsICJtYXJrbyIpOworICAgICAgICAgICAgICAgICAgICBwdXQoImFnZSIsIDI5KTsKKyAgICAgICAgICAgICAgICB9fSwKKyAgICAgICAgICAgICAgICBuZXcgSGFzaE1hcDxTdHJpbmcsT2JqZWN0Pigpe3sKKyAgICAgICAgICAgICAgICAgICAgcHV0KCJuYW1lIiwgInZhZGFzIik7CisgICAgICAgICAgICAgICAgICAgIHB1dCgiYWdlIiwgMjcpOworICAgICAgICAgICAgICAgIH19LAorICAgICAgICAgICAgICAgIG5ldyBIYXNoTWFwPFN0cmluZyxPYmplY3Q+KCl7eworICAgICAgICAgICAgICAgICAgICBwdXQoIm5hbWUiLCAiam9zaCIpOworICAgICAgICAgICAgICAgICAgICBwdXQoImFnZSIsIDMyKTsKKyAgICAgICAgICAgICAgICB9fSwKKyAgICAgICAgICAgICAgICBuZXcgSGFzaE1hcDxTdHJpbmcsT2JqZWN0Pigpe3sKKyAgICAgICAgICAgICAgICAgICAgcHV0KCJuYW1lIiwgInBldGVyIik7CisgICAgICAgICAgICAgICAgICAgIHB1dCgiYWdlIiwgMzUpOworICAgICAgICAgICAgICAgIH19CisgICAgICAgICkpOworICAgIH0KKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkRmluZEFsbFBlcnNvbnNOYW1lc0FuZEFnZXNPcmRlcmVkKCkgeworICAgICAgICBmaW5hbCBMaXN0PD8+IHggPSBnLnNwYXJxbCgiU0VMRUNUID9uYW1lID9hZ2UgV0hFUkUgeyA/cGVyc29uIHY6bmFtZSA/bmFtZSAuID9wZXJzb24gdjphZ2UgP2FnZSB9IE9SREVSIEJZIEFTQyg/YWdlKSIpLnRvTGlzdCgpOworICAgICAgICBhc3NlcnRUaGF0KHgsIGNvbnRhaW5zKAorICAgICAgICAgICAgICAgIG5ldyBIYXNoTWFwPFN0cmluZyxPYmplY3Q+KCl7eworICAgICAgICAgICAgICAgICAgICBwdXQoIm5hbWUiLCAidmFkYXMiKTsKKyAgICAgICAgICAgICAgICAgICAgcHV0KCJhZ2UiLCAyNyk7CisgICAgICAgICAgICAgICAgfX0sCisgICAgICAgICAgICAgICAgbmV3IEhhc2hNYXA8U3RyaW5nLE9iamVjdD4oKXt7CisgICAgICAgICAgICAgICAgICAgIHB1dCgibmFtZSIsICJtYXJrbyIpOworICAgICAgICAgICAgICAgICAgICBwdXQoImFnZSIsIDI5KTsKKyAgICAgICAgICAgICAgICB9fSwKKyAgICAgICAgICAgICAgICBuZXcgSGFzaE1hcDxTdHJpbmcsT2JqZWN0Pigpe3sKKyAgICAgICAgICAgICAgICAgICAgcHV0KCJuYW1lIiwgImpvc2giKTsKKyAgICAgICAgICAgICAgICAgICAgcHV0KCJhZ2UiLCAzMik7CisgICAgICAgICAgICAgICAgfX0sCisgICAgICAgICAgICAgICAgbmV3IEhhc2hNYXA8U3RyaW5nLE9iamVjdD4oKXt7CisgICAgICAgICAgICAgICAgICAgIHB1dCgibmFtZSIsICJwZXRlciIpOworICAgICAgICAgICAgICAgICAgICBwdXQoImFnZSIsIDM1KTsKKyAgICAgICAgICAgICAgICB9fQorICAgICAgICApKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZEZpbmRBbGxOYW1lc09yZGVyZWQoKSB7CisgICAgICAgIGZpbmFsIExpc3Q8Pz4geCA9IGcuc3BhcnFsKCJTRUxFQ1QgP25hbWUgV0hFUkUgeyA/cGVyc29uIHY6bmFtZSA/bmFtZSB9IE9SREVSIEJZIERFU0MoP25hbWUpIikudG9MaXN0KCk7CisgICAgICAgIGFzc2VydFRoYXQoeCwgY29udGFpbnMoInZhZGFzIiwgInJpcHBsZSIsICJwZXRlciIsICJtYXJrbyIsICJsb3AiLCAiam9zaCIpKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZEZpbHRlcigpIHsKKyAgICAgICAgZmluYWwgTWFwPFN0cmluZyxWZXJ0ZXg+IHggPSAoTWFwKSBnLnNwYXJxbCggICJTRUxFQ1QgP2EgP2IgP2NcbiIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldIRVJFIHtcbiIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgP2EgdjpsYWJlbCBcInBlcnNvblwiIC5cbiIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgP2EgZTprbm93cyA/YiAuXG4iICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgID9hIGU6Y3JlYXRlZCA/YyAuXG4iICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgID9iIGU6Y3JlYXRlZCA/YyAuXG4iICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgID9hIHY6YWdlID9kIC5cbiIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBGSUxURVIgKD9kIDwgMzApXG4iICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ9IikubmV4dCgpOworCisgICAgICAgIGFzc2VydEVxdWFscyh4LmdldCgiYSIpLCBfZy5WKDEpLm5leHQoKSk7CisgICAgICAgIGFzc2VydEVxdWFscyh4LmdldCgiYiIpLCBfZy5WKDQpLm5leHQoKSk7CisgICAgICAgIGFzc2VydEVxdWFscyh4LmdldCgiYyIpLCBfZy5WKDMpLm5leHQoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygzLCB4LnNpemUoKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRGaWx0ZXJNdWx0aSgpIHsKKyAgICAgICAgZmluYWwgTGlzdDxTdHJpbmc+IG5hbWVzID0gKExpc3Q8U3RyaW5nPikgZy5zcGFycWwoICAiU0VMRUNUIERJU1RJTkNUID9uYW1lXG4iICsKKyAgICAgICAgICAgICAgICAiV0hFUkUge1xuIiArCisgICAgICAgICAgICAgICAgIj9wZXJzb24gdjpsYWJlbCBcInBlcnNvblwiIC5cbiIgKworICAgICAgICAgICAgICAgICI/cGVyc29uIHY6YWdlID9hZ2UgLlxuIiArCisgICAgICAgICAgICAgICAgIj9wZXJzb24gZTpjcmVhdGVkID9wcm9qZWN0IC5cbiIgKworICAgICAgICAgICAgICAgICI/cHJvamVjdCB2Om5hbWUgP25hbWUgLlxuIiArCisgICAgICAgICAgICAgICAgIj9wcm9qZWN0IHY6bGFuZyA/bGFuZyAuXG4iICsKKyAgICAgICAgICAgICAgICAiRklMVEVSICg/YWdlID4gMzAgICYmID9sYW5nID0gXCJqYXZhXCIpIH0iKS50b0xpc3QoKTsKKworICAgICAgICBhc3NlcnRUaGF0KG5hbWVzLCBjb250YWluc0luQW55T3JkZXIoInJpcHBsZSIsICJsb3AiKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGREaXN0aW5jdCgpIHsKKyAgICAgICAgZmluYWwgTGlzdDw/PiB4ID0gZy5zcGFycWwoCisgICAgICAgICAgICAgICAgIlNFTEVDVCBESVNUSU5DVCA/bmFtZVxuIiArCisgICAgICAgICAgICAgICAgIldIRVJFIHtcbiIgKworICAgICAgICAgICAgICAgICIgICAgP2EgZTpjcmVhdGVkID9iIC5cbiIgKworICAgICAgICAgICAgICAgICIgICAgP2EgdjpuYW1lID9uYW1lIC5cbiIgKworICAgICAgICAgICAgICAgICJ9IikudG9MaXN0KCk7CisgICAgICAgIGFzc2VydFRoYXQoeCwgY29udGFpbnNJbkFueU9yZGVyKCJtYXJrbyIsICJqb3NoIiwgInBldGVyIikpOworICAgIH0KKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkRGlzdGluY3RBbmRPcmRlcigpIHsKKyAgICAgICAgZmluYWwgTGlzdDw/PiB4ID0gZy5zcGFycWwoCisgICAgICAgICAgICAgICAgIlNFTEVDVCBESVNUSU5DVCA/bmFtZVxuIiArCisgICAgICAgICAgICAgICAgICAgICAgICAiV0hFUkUge1xuIiArCisgICAgICAgICAgICAgICAgICAgICAgICAiICAgID9hIGU6Y3JlYXRlZCA/YiAuXG4iICsKKyAgICAgICAgICAgICAgICAgICAgICAgICIgICAgP2EgdjpuYW1lID9uYW1lIC5cbiIgKworICAgICAgICAgICAgICAgICAgICAgICAgIn0iICsKKyAgICAgICAgICAgICAgICAgICAgICAgICJPUkRFUiBCWSA/bmFtZSIpLnRvTGlzdCgpOworICAgICAgICBhc3NlcnRUaGF0KHgsIGNvbnRhaW5zKCJqb3NoIiwgIm1hcmtvIiwgInBldGVyIikpOworICAgIH0KKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkR3JvdXAoKSB7CisgICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsTG9uZz4geCA9IChNYXApIGcuc3BhcnFsKAorICAgICAgICAgICAgICAgICJTRUxFQ1QgP25hbWUgKENPVU5UKD9uYW1lKSBBUyA/bmFtZV9jb3VudClcbiIgKworICAgICAgICAgICAgICAgICAgICAgICAgIldIRVJFIHtcbiIgKworICAgICAgICAgICAgICAgICAgICAgICAgIiAgICA/YSBlOmNyZWF0ZWQgP2IgLlxuIiArCisgICAgICAgICAgICAgICAgICAgICAgICAiICAgID9hIHY6bmFtZSA/bmFtZSAuXG4iICsKKyAgICAgICAgICAgICAgICAgICAgICAgICJ9IiArCisgICAgICAgICAgICAgICAgICAgICAgICAiR1JPVVAgQlkgP25hbWUiKS5uZXh0KCk7CisgICAgICAgIGFzc2VydEVxdWFscyhuZXcgTG9uZygyKSwgeC5nZXQoImpvc2giKSk7CisgICAgICAgIGFzc2VydEVxdWFscyhuZXcgTG9uZygxKSwgeC5nZXQoInBldGVyIikpOworICAgICAgICBhc3NlcnRFcXVhbHMobmV3IExvbmcoMSksIHguZ2V0KCJtYXJrbyIpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDMsIHguc2l6ZSgpKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcGFycWwtZ3JlbWxpbi9zcmMvdGVzdC9yZXNvdXJjZXMvbG9nNGotc2lsZW50LnByb3BlcnRpZXMgYi9zcGFycWwtZ3JlbWxpbi9zcmMvdGVzdC9yZXNvdXJjZXMvbG9nNGotc2lsZW50LnByb3BlcnRpZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTgyNWJiMAotLS0gL2Rldi9udWxsCisrKyBiL3NwYXJxbC1ncmVtbGluL3NyYy90ZXN0L3Jlc291cmNlcy9sb2c0ai1zaWxlbnQucHJvcGVydGllcwpAQCAtMCwwICsxLDIzIEBACisjIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyMgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisjIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisjIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyMgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisjIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyMKKyMgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorIworIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisjIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisjICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorIyBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyMgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworIyB1bmRlciB0aGUgTGljZW5zZS4KKworIyB0aGlzIGZpbGUgc2hvdWxkIGFsd2F5cyBoYXZlIGxvZ2dpbmcgc2V0IHRvIE9GRi4gIGl0IHNlZW1zLCBob3dldmVyLCB0aGF0IGFuIGFwcGVuZGVyIG9mIHNvbWUgc29ydCBpcworIyByZXF1aXJlZCBvciBlbHNlIHNvbWUgbG9ncyB0aHJvdyBlcnJvciBhbmQgdXNlIG90aGVyIGxvZzRqLnByb3BlcnRpZXMgZmlsZXMgb24gdGhlIHBhdGguCitsb2c0ai5yb290TG9nZ2VyPU9GRiwgc3Rkb3V0Citsb2c0ai5hcHBlbmRlci5zdGRvdXQ9b3JnLmFwYWNoZS5sb2c0ai5Db25zb2xlQXBwZW5kZXIKK2xvZzRqLmFwcGVuZGVyLnN0ZG91dC5sYXlvdXQ9b3JnLmFwYWNoZS5sb2c0ai5QYXR0ZXJuTGF5b3V0Citsb2c0ai5hcHBlbmRlci5zdGRvdXQubGF5b3V0LkNvbnZlcnNpb25QYXR0ZXJuPVslcF0gJUMgLSAlbSVuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3BhcnFsLWdyZW1saW4vc3JjL3Rlc3QvcmVzb3VyY2VzL2xvZzRqLXRlc3QucHJvcGVydGllcyBiL3NwYXJxbC1ncmVtbGluL3NyYy90ZXN0L3Jlc291cmNlcy9sb2c0ai10ZXN0LnByb3BlcnRpZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzkwMzhiMQotLS0gL2Rldi9udWxsCisrKyBiL3NwYXJxbC1ncmVtbGluL3NyYy90ZXN0L3Jlc291cmNlcy9sb2c0ai10ZXN0LnByb3BlcnRpZXMKQEAgLTAsMCArMSwyMyBAQAorIworIyBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisjIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorIyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorIyByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisjIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorIyB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisjCisjIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorIworIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisjIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisjICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorIyBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyMgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworIyB1bmRlciB0aGUgTGljZW5zZS4KKyMKKworbG9nNGoucm9vdExvZ2dlcj1XQVJOLCBzdGRvdXQKK2xvZzRqLmFwcGVuZGVyLnN0ZG91dD1vcmcuYXBhY2hlLmxvZzRqLkNvbnNvbGVBcHBlbmRlcgorbG9nNGouYXBwZW5kZXIuc3Rkb3V0LmxheW91dD1vcmcuYXBhY2hlLmxvZzRqLlBhdHRlcm5MYXlvdXQKK2xvZzRqLmFwcGVuZGVyLnN0ZG91dC5sYXlvdXQuQ29udmVyc2lvblBhdHRlcm49WyVwXSAlQyAtICVtJW4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90aW5rZXJncmFwaC1ncmVtbGluL3BvbS54bWwgYi90aW5rZXJncmFwaC1ncmVtbGluL3BvbS54bWwKaW5kZXggYTIzNDk2YS4uMDllMWE2OSAxMDA2NDQKLS0tIGEvdGlua2VyZ3JhcGgtZ3JlbWxpbi9wb20ueG1sCisrKyBiL3RpbmtlcmdyYXBoLWdyZW1saW4vcG9tLnhtbApAQCAtMjEsNyArMjEsNyBAQAogICAgIDxwYXJlbnQ+CiAgICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUudGlua2VycG9wPC9ncm91cElkPgogICAgICAgICA8YXJ0aWZhY3RJZD50aW5rZXJwb3A8L2FydGlmYWN0SWQ+Ci0gICAgICAgIDx2ZXJzaW9uPjMuMy4xMS1TTkFQU0hPVDwvdmVyc2lvbj4KKyAgICAgICAgPHZlcnNpb24+My40LjctU05BUFNIT1Q8L3ZlcnNpb24+CiAgICAgPC9wYXJlbnQ+CiAgICAgPGFydGlmYWN0SWQ+dGlua2VyZ3JhcGgtZ3JlbWxpbjwvYXJ0aWZhY3RJZD4KICAgICA8bmFtZT5BcGFjaGUgVGlua2VyUG9wIDo6IFRpbmtlckdyYXBoIEdyZW1saW48L25hbWU+CmRpZmYgLS1naXQgYS90aW5rZXJncmFwaC1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi90aW5rZXJncmFwaC9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL3NpZGVFZmZlY3QvVGlua2VyR3JhcGhJb1N0ZXBUZXN0LmphdmEgYi90aW5rZXJncmFwaC1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi90aW5rZXJncmFwaC9wcm9jZXNzL3RyYXZlcnNhbC9zdGVwL3NpZGVFZmZlY3QvVGlua2VyR3JhcGhJb1N0ZXBUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGJhYjdkYQotLS0gL2Rldi9udWxsCisrKyBiL3RpbmtlcmdyYXBoLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3RpbmtlcmdyYXBoL3Byb2Nlc3MvdHJhdmVyc2FsL3N0ZXAvc2lkZUVmZmVjdC9UaW5rZXJHcmFwaElvU3RlcFRlc3QuamF2YQpAQCAtMCwwICsxLDk4IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi50aW5rZXJncmFwaC5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnNpZGVFZmZlY3Q7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLlRlc3RIZWxwZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5JTzsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5HcmFwaFRyYXZlcnNhbFNvdXJjZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5HcmFwaDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5pby51dGlsLkN1c3RvbUlkOworaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguc3RydWN0dXJlLlRpbmtlckdyYXBoOworaW1wb3J0IG9yZy5qdW5pdC5CZWZvcmU7CitpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CisKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CitpbXBvcnQgamF2YS51dGlsLlVVSUQ7CisKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRFcXVhbHM7CitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuZmFpbDsKKworLyoqCisgKiBJdCB3YXMgaGFyZCB0byB0ZXN0IHRoZSB7QGxpbmsgSU8jcmVnaXN0cnl9IGNvbmZpZ3VyYXRpb24gYXMgYSBnZW5lcmljIHRlc3QuIE9wdGVkIHRvIHRlc3QgaXQgYXMgYSBiaXQgb2YgYQorICogc3RhbmRhbG9uZSB0ZXN0IHdpdGggVGlua2VyR3JhcGguCisgKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgY2xhc3MgVGlua2VyR3JhcGhJb1N0ZXBUZXN0IHsKKworICAgIHByaXZhdGUgR3JhcGggZ3JhcGg7CisgICAgcHJpdmF0ZSBHcmFwaFRyYXZlcnNhbFNvdXJjZSBnOworCisgICAgQEJlZm9yZQorICAgIHB1YmxpYyB2b2lkIHNldHVwKCkgeworICAgICAgICBncmFwaCA9IFRpbmtlckdyYXBoLm9wZW4oKTsKKyAgICAgICAgZyA9IGdyYXBoLnRyYXZlcnNhbCgpOworICAgIH0KKworICAgIEBUZXN0CisgICAgcHVibGljIHZvaWQgc2hvdWxkV3JpdGVSZWFkV2l0aEN1c3RvbUlvUmVnaXN0cnlHcnlvKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIFVVSUQgdXVpZCA9IFVVSUQucmFuZG9tVVVJRCgpOworICAgICAgICBnLmFkZFYoInBlcnNvbiIpLnByb3BlcnR5KCJuYW1lIiwic3RlcGhlbiIpLnByb3BlcnR5KCJjdXN0b20iLCBuZXcgQ3VzdG9tSWQoImEiLCB1dWlkKSkuaXRlcmF0ZSgpOworCisgICAgICAgIGZpbmFsIEZpbGUgZmlsZSA9IFRlc3RIZWxwZXIuZ2VuZXJhdGVUZW1wRmlsZShUaW5rZXJHcmFwaElvU3RlcFRlc3QuY2xhc3MsICJzaG91bGRXcml0ZVJlYWRXaXRoQ3VzdG9tSW9SZWdpc3RyeUdyeW8iLCAiLmtyeW8iKTsKKyAgICAgICAgZy5pbyhmaWxlLmdldEFic29sdXRlUGF0aCgpKS53aXRoKElPLnJlZ2lzdHJ5LCBDdXN0b21JZC5DdXN0b21JZElvUmVnaXN0cnkuY2xhc3MuZ2V0TmFtZSgpKS53cml0ZSgpLml0ZXJhdGUoKTsKKworICAgICAgICBmaW5hbCBHcmFwaCBlbXB0eUdyYXBoID0gVGlua2VyR3JhcGgub3BlbigpOworICAgICAgICBmaW5hbCBHcmFwaFRyYXZlcnNhbFNvdXJjZSBlbXB0eUcgPSBlbXB0eUdyYXBoLnRyYXZlcnNhbCgpOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBlbXB0eUcuaW8oZmlsZS5nZXRBYnNvbHV0ZVBhdGgoKSkucmVhZCgpLml0ZXJhdGUoKTsKKyAgICAgICAgICAgIGZhaWwoIkNhbid0IHJlYWQgd2l0aG91dCBhIHJlZ2lzdHJ5Iik7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBpZ25vcmVkKSB7CisgICAgICAgICAgICAvLyBkbyBub3RoaW5nCisgICAgICAgIH0KKworICAgICAgICBlbXB0eUcuaW8oZmlsZS5nZXRBYnNvbHV0ZVBhdGgoKSkud2l0aChJTy5yZWdpc3RyeSwgQ3VzdG9tSWQuQ3VzdG9tSWRJb1JlZ2lzdHJ5Lmluc3RhbmNlKCkpLnJlYWQoKS5pdGVyYXRlKCk7CisKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIGVtcHR5Ry5WKCkuaGFzKCJjdXN0b20iLCBuZXcgQ3VzdG9tSWQoImEiLCB1dWlkKSkuY291bnQoKS5uZXh0KCkuaW50VmFsdWUoKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCBzaG91bGRXcml0ZVJlYWRXaXRoQ3VzdG9tSW9SZWdpc3RyeUdyYXBoU09OKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIFVVSUQgdXVpZCA9IFVVSUQucmFuZG9tVVVJRCgpOworICAgICAgICBnLmFkZFYoInBlcnNvbiIpLnByb3BlcnR5KCJuYW1lIiwic3RlcGhlbiIpLnByb3BlcnR5KCJjdXN0b20iLCBuZXcgQ3VzdG9tSWQoImEiLCB1dWlkKSkuaXRlcmF0ZSgpOworCisgICAgICAgIGZpbmFsIEZpbGUgZmlsZSA9IFRlc3RIZWxwZXIuZ2VuZXJhdGVUZW1wRmlsZShUaW5rZXJHcmFwaElvU3RlcFRlc3QuY2xhc3MsICJzaG91bGRXcml0ZVJlYWRXaXRoQ3VzdG9tSW9SZWdpc3RyeUdyYXBoU09OIiwgIi5qc29uIik7CisgICAgICAgIGcuaW8oZmlsZS5nZXRBYnNvbHV0ZVBhdGgoKSkud2l0aChJTy5yZWdpc3RyeSwgQ3VzdG9tSWQuQ3VzdG9tSWRJb1JlZ2lzdHJ5LmNsYXNzLmdldE5hbWUoKSkud3JpdGUoKS5pdGVyYXRlKCk7CisKKyAgICAgICAgZmluYWwgR3JhcGggZW1wdHlHcmFwaCA9IFRpbmtlckdyYXBoLm9wZW4oKTsKKyAgICAgICAgZmluYWwgR3JhcGhUcmF2ZXJzYWxTb3VyY2UgZW1wdHlHID0gZW1wdHlHcmFwaC50cmF2ZXJzYWwoKTsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgZW1wdHlHLmlvKGZpbGUuZ2V0QWJzb2x1dGVQYXRoKCkpLnJlYWQoKS5pdGVyYXRlKCk7CisgICAgICAgICAgICBmYWlsKCJDYW4ndCByZWFkIHdpdGhvdXQgYSByZWdpc3RyeSIpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gaWdub3JlZCkgeworICAgICAgICAgICAgLy8gZG8gbm90aGluZworICAgICAgICB9CisKKyAgICAgICAgZW1wdHlHLmlvKGZpbGUuZ2V0QWJzb2x1dGVQYXRoKCkpLndpdGgoSU8ucmVnaXN0cnksIEN1c3RvbUlkLkN1c3RvbUlkSW9SZWdpc3RyeS5pbnN0YW5jZSgpKS5yZWFkKCkuaXRlcmF0ZSgpOworCisgICAgICAgIGFzc2VydEVxdWFscygxLCBlbXB0eUcuVigpLmhhcygiY3VzdG9tIiwgbmV3IEN1c3RvbUlkKCJhIiwgdXVpZCkpLmNvdW50KCkubmV4dCgpLmludFZhbHVlKCkpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3RpbmtlcmdyYXBoLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3RpbmtlcmdyYXBoL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vT3B0aW9uc1N0cmF0ZWd5VGVzdC5qYXZhIGIvdGlua2VyZ3JhcGgtZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vdGlua2VyZ3JhcGgvcHJvY2Vzcy90cmF2ZXJzYWwvc3RyYXRlZ3kvZGVjb3JhdGlvbi9PcHRpb25zU3RyYXRlZ3lUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2UzOTk1MwotLS0gL2Rldi9udWxsCisrKyBiL3RpbmtlcmdyYXBoLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3RpbmtlcmdyYXBoL3Byb2Nlc3MvdHJhdmVyc2FsL3N0cmF0ZWd5L2RlY29yYXRpb24vT3B0aW9uc1N0cmF0ZWd5VGVzdC5qYXZhCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnByb2Nlc3MudHJhdmVyc2FsLnN0cmF0ZWd5LmRlY29yYXRpb247CisKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlRyYXZlcnNlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5HcmFwaFRyYXZlcnNhbDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5HcmFwaFRyYXZlcnNhbFNvdXJjZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAubWFwLk1hcFN0ZXA7CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLk9wdGlvbnNTdHJhdGVneTsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnN0cnVjdHVyZS5HcmFwaDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnRpbmtlcmdyYXBoLnN0cnVjdHVyZS5UaW5rZXJHcmFwaDsKK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKKworaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247CisKK2ltcG9ydCBzdGF0aWMgb3JnLmhhbWNyZXN0Lk1hdGNoZXJzLmNvbnRhaW5zOworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydFRoYXQ7CisKKy8qKgorICogQGF1dGhvciBTdGVwaGVuIE1hbGxldHRlIChodHRwOi8vc3RlcGhlbi5nZW5vcHJpbWUuY29tKQorICovCitwdWJsaWMgY2xhc3MgT3B0aW9uc1N0cmF0ZWd5VGVzdCB7CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZEFkZE9wdGlvbnNUb1RyYXZlcnNhbCgpIHsKKyAgICAgICAgZmluYWwgR3JhcGggZ3JhcGggPSBUaW5rZXJHcmFwaC5vcGVuKCk7CisgICAgICAgIGZpbmFsIEdyYXBoVHJhdmVyc2FsU291cmNlIG9wdGlvbmVkRyA9IGdyYXBoLnRyYXZlcnNhbCgpLndpdGhTdHJhdGVnaWVzKE9wdGlvbnNTdHJhdGVneS5idWlsZCgpLndpdGgoImEiLCAidGVzdCIpLndpdGgoImIiKS5jcmVhdGUoKSk7CisgICAgICAgIGFzc2VydE9wdGlvbnMob3B0aW9uZWRHKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHNob3VsZEFkZE9wdGlvbnNUb1RyYXZlcnNhbFVzaW5nV2l0aCgpIHsKKyAgICAgICAgZmluYWwgR3JhcGggZ3JhcGggPSBUaW5rZXJHcmFwaC5vcGVuKCk7CisgICAgICAgIGZpbmFsIEdyYXBoVHJhdmVyc2FsU291cmNlIG9wdGlvbmVkRyA9IGdyYXBoLnRyYXZlcnNhbCgpLndpdGgoImEiLCAidGVzdCIpLndpdGgoImIiKTsKKyAgICAgICAgYXNzZXJ0T3B0aW9ucyhvcHRpb25lZEcpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIHZvaWQgYXNzZXJ0T3B0aW9ucyhmaW5hbCBHcmFwaFRyYXZlcnNhbFNvdXJjZSBvcHRpb25lZEcpIHsKKyAgICAgICAgR3JhcGhUcmF2ZXJzYWwgdCA9IG9wdGlvbmVkRy5pbmplY3QoMSk7CisgICAgICAgIHQgPSB0LmFzQWRtaW4oKS5hZGRTdGVwKG5ldyBNYXBTdGVwPE9iamVjdCwgT2JqZWN0Pih0LmFzQWRtaW4oKSkgeworICAgICAgICAgICAgQE92ZXJyaWRlCisgICAgICAgICAgICBwcm90ZWN0ZWQgT2JqZWN0IG1hcChmaW5hbCBUcmF2ZXJzZXIuQWRtaW48T2JqZWN0PiB0cmF2ZXJzZXIpIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBPcHRpb25zU3RyYXRlZ3kgc3RyYXRlZ3kgPSB0cmF2ZXJzYWwuYXNBZG1pbigpLmdldFN0cmF0ZWdpZXMoKS5nZXRTdHJhdGVneShPcHRpb25zU3RyYXRlZ3kuY2xhc3MpLmdldCgpOworICAgICAgICAgICAgICAgIHJldHVybiBBcnJheXMuYXNMaXN0KHN0cmF0ZWd5LmdldE9wdGlvbnMoKS5nZXQoImEiKSwgc3RyYXRlZ3kuZ2V0T3B0aW9ucygpLmdldCgiYiIpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgICAgIGFzc2VydFRoYXQoKENvbGxlY3Rpb248T2JqZWN0PikgdC5uZXh0KCksIGNvbnRhaW5zKCJ0ZXN0IiwgdHJ1ZSkpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3RpbmtlcmdyYXBoLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3RpbmtlcmdyYXBoL3N0cnVjdHVyZS9UaW5rZXJHcmFwaFBsYXlUZXN0LmphdmEgYi90aW5rZXJncmFwaC1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi90aW5rZXJncmFwaC9zdHJ1Y3R1cmUvVGlua2VyR3JhcGhQbGF5VGVzdC5qYXZhCmluZGV4IDdmNjc2YWMuLmY0YTBhMGEgMTAwNjQ0Ci0tLSBhL3RpbmtlcmdyYXBoLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3RpbmtlcmdyYXBoL3N0cnVjdHVyZS9UaW5rZXJHcmFwaFBsYXlUZXN0LmphdmEKKysrIGIvdGlua2VyZ3JhcGgtZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vdGlua2VyZ3JhcGgvc3RydWN0dXJlL1RpbmtlckdyYXBoUGxheVRlc3QuamF2YQpAQCAtMTksMTQgKzE5LDEyIEBACiBwYWNrYWdlIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4udGlua2VyZ3JhcGguc3RydWN0dXJlOwogCiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLmNvbXB1dGVyLkNvbXB1dGVyOwotaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuT3JkZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5UcmF2ZXJzYWw7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguR3JhcGhUcmF2ZXJzYWw7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguR3JhcGhUcmF2ZXJzYWxTb3VyY2U7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX187CitpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuV2l0aE9wdGlvbnM7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdGVwLnV0aWwuZXZlbnQuQ29uc29sZU11dGF0aW9uTGlzdGVuZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5kZWNvcmF0aW9uLkV2ZW50U3RyYXRlZ3k7Ci1pbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5zdHJhdGVneS5vcHRpbWl6YXRpb24uRWFybHlMaW1pdFN0cmF0ZWd5OwogaW1wb3J0IG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RyYXRlZ3kub3B0aW1pemF0aW9uLlBhdGhSZXRyYWN0aW9uU3RyYXRlZ3k7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuR3JhcGg7CiBpbXBvcnQgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5zdHJ1Y3R1cmUuVDsKQEAgLTQ1LDE0ICs0Myw5IEBACiBpbXBvcnQgamF2YS51dGlsLmZ1bmN0aW9uLlN1cHBsaWVyOwogCiBpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuT3BlcmF0b3Iuc3VtOwotaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlAuYmV0d2VlbjsKLWltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5QLmd0OwotaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlAuZ3RlOwotaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLlAubHQ7CiBpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuUC5uZXE7CiBpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLl9fLmFzOwogaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5fXy5ib3RoOwotaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5fXy5icmFuY2g7CiBpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLl9fLmNob29zZTsKIGltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX18uY29uc3RhbnQ7CiBpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLl9fLmhhczsKQEAgLTYyLDcgKzU1LDYgQEAKIGltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX18uc2VsZWN0OwogaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLmRzbC5ncmFwaC5fXy51bmlvbjsKIGltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS50aW5rZXJwb3AuZ3JlbWxpbi5wcm9jZXNzLnRyYXZlcnNhbC5kc2wuZ3JhcGguX18udmFsdWVNYXA7Ci1pbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuZHNsLmdyYXBoLl9fLnZhbHVlczsKIAogLyoqCiAgKiBAYXV0aG9yIFN0ZXBoZW4gTWFsbGV0dGUgKGh0dHA6Ly9zdGVwaGVuLmdlbm9wcmltZS5jb20pCkBAIC0xMzksNyArMTMxLDYgQEAKICAgICBAVGVzdAogICAgIEBJZ25vcmUKICAgICBwdWJsaWMgdm9pZCB0ZXN0UGxheURLKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0KICAgICAgICAgZmluYWwgR3JhcGggZ3JhcGggPSBUaW5rZXJHcmFwaC5vcGVuKCk7CiAgICAgICAgIGZpbmFsIEV2ZW50U3RyYXRlZ3kgc3RyYXRlZ3kgPSBFdmVudFN0cmF0ZWd5LmJ1aWxkKCkuYWRkTGlzdGVuZXIobmV3IENvbnNvbGVNdXRhdGlvbkxpc3RlbmVyKGdyYXBoKSkuY3JlYXRlKCk7CiAgICAgICAgIGZpbmFsIEdyYXBoVHJhdmVyc2FsU291cmNlIGcgPSBncmFwaC50cmF2ZXJzYWwoKS53aXRoU3RyYXRlZ2llcyhzdHJhdGVneSk7CmRpZmYgLS1naXQgYS90aW5rZXJncmFwaC1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi90aW5rZXJncmFwaC9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vQWJzdHJhY3RUaW5rZXJHcmFwaEdyYXBoU09OVHJhbnNsYXRvclByb3ZpZGVyLmphdmEgYi90aW5rZXJncmFwaC1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi90aW5rZXJncmFwaC9zdHJ1Y3R1cmUvaW8vZ3JhcGhzb24vQWJzdHJhY3RUaW5rZXJHcmFwaEdyYXBoU09OVHJhbnNsYXRvclByb3ZpZGVyLmphdmEKaW5kZXggMzBiOTA2Mi4uNGQ0ZWUwMCAxMDA2NDQKLS0tIGEvdGlua2VyZ3JhcGgtZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vdGlua2VyZ3JhcGgvc3RydWN0dXJlL2lvL2dyYXBoc29uL0Fic3RyYWN0VGlua2VyR3JhcGhHcmFwaFNPTlRyYW5zbGF0b3JQcm92aWRlci5qYXZhCisrKyBiL3RpbmtlcmdyYXBoLWdyZW1saW4vc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RpbmtlcnBvcC9ncmVtbGluL3RpbmtlcmdyYXBoL3N0cnVjdHVyZS9pby9ncmFwaHNvbi9BYnN0cmFjdFRpbmtlckdyYXBoR3JhcGhTT05UcmFuc2xhdG9yUHJvdmlkZXIuamF2YQpAQCAtMjE3LDkgKzIxNywyMSBAQAogICAgICAgICBtZXRob2QgPSAic2hvdWxkTmV2ZXJQcm9wYWdhdGVBTnVsbFZhbHVlZFRyYXZlcnNlciIsCiAgICAgICAgIHJlYXNvbiA9ICJSZWFzb24gcmVxdWlyZXMgaW52ZXN0aWdhdGlvbiIpCiBAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuUmVhZFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiKiIsCisgICAgICAgIHJlYXNvbiA9ICJyZWFkIGFuZCB3cml0ZSB0ZXN0cyBkb24ndCB0cmFuc2xhdGUgbG9jYWxseSB3ZWxsIGJlY2F1c2Ugb2YgY2FsbGluZyBpdGVyYXRlKCkgaW5zaWRlIHJlYWQoKS93cml0ZSgpIGFkZCBhIG5vbmUoKSIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuV3JpdGVUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gIioiLAorICAgICAgICByZWFzb24gPSAicmVhZCBhbmQgd3JpdGUgdGVzdHMgZG9uJ3QgdHJhbnNsYXRlIGxvY2FsbHkgd2VsbCBiZWNhdXNlIG9mIGNhbGxpbmcgaXRlcmF0ZSgpIGluc2lkZSByZWFkKCkvd3JpdGUoKSBhZGQgYSBub25lKCkiKQorQEdyYXBoLk9wdE91dCgKICAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuc2lkZUVmZmVjdC5TdG9yZVRlc3QiLAogICAgICAgICBtZXRob2QgPSAiZ193aXRoU2lkZUVmZmVjdFhhX3NldFhfVl9ib3RoX25hbWVfc3RvcmVYYVhfY2FwWGFYIiwKICAgICAgICAgcmVhc29uID0gIlRoaXMgdGVzdCByZXR1cm5zIEJ1bGtTZXQgd2hpY2ggaXNuJ3Qgc3VwcG9ydGVkIGluIEdyYXBoU09OIDMuMCB1bnRpbCAzLjQuMC4iKQorQEdyYXBoLk9wdE91dCgKKyAgICAgICAgdGVzdCA9ICJvcmcuYXBhY2hlLnRpbmtlcnBvcC5ncmVtbGluLnByb2Nlc3MudHJhdmVyc2FsLnN0ZXAuc2lkZUVmZmVjdC5BZ2dyZWdhdGVUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gImdfd2l0aFNpZGVFZmZlY3RYYV9zZXRYX1ZfYm90aF9uYW1lX2FnZ3JlZ2F0ZVhsb2NhbF9hWF9jYXBYYVgiLAorICAgICAgICByZWFzb24gPSAiVGhpcyB0ZXN0IHJldHVybnMgQnVsa1NldCB3aGljaCBpc24ndCBzdXBwb3J0ZWQgaW4gR3JhcGhTT04gMy4wIHVudGlsIDMuNC4wLiIpCiBwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RUaW5rZXJHcmFwaEdyYXBoU09OVHJhbnNsYXRvclByb3ZpZGVyIGV4dGVuZHMgVGlua2VyR3JhcGhQcm92aWRlciB7CiAKICAgICBwcml2YXRlIGZpbmFsIEdyYXBoU09OVmVyc2lvbiB2ZXJzaW9uOwpkaWZmIC0tZ2l0IGEvdGlua2VyZ3JhcGgtZ3JlbWxpbi9zcmMvdGVzdC9qYXZhL29yZy9hcGFjaGUvdGlua2VycG9wL2dyZW1saW4vdGlua2VyZ3JhcGgvc3RydWN0dXJlL2lvL2dyeW8vVGlua2VyR3JhcGhHcnlvVHJhbnNsYXRvclByb3ZpZGVyLmphdmEgYi90aW5rZXJncmFwaC1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi90aW5rZXJncmFwaC9zdHJ1Y3R1cmUvaW8vZ3J5by9UaW5rZXJHcmFwaEdyeW9UcmFuc2xhdG9yUHJvdmlkZXIuamF2YQppbmRleCA3YTdkNmVjLi5kNmQ5M2EwIDEwMDY0NAotLS0gYS90aW5rZXJncmFwaC1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi90aW5rZXJncmFwaC9zdHJ1Y3R1cmUvaW8vZ3J5by9UaW5rZXJHcmFwaEdyeW9UcmFuc2xhdG9yUHJvdmlkZXIuamF2YQorKysgYi90aW5rZXJncmFwaC1ncmVtbGluL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90aW5rZXJwb3AvZ3JlbWxpbi90aW5rZXJncmFwaC9zdHJ1Y3R1cmUvaW8vZ3J5by9UaW5rZXJHcmFwaEdyeW9UcmFuc2xhdG9yUHJvdmlkZXIuamF2YQpAQCAtMjEyLDYgKzIxMiwxNCBAQAogICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuQ29yZVRyYXZlcnNhbFRlc3QiLAogICAgICAgICBtZXRob2QgPSAic2hvdWxkTmV2ZXJQcm9wYWdhdGVBTnVsbFZhbHVlZFRyYXZlcnNlciIsCiAgICAgICAgIHJlYXNvbiA9ICJSZWFzb24gcmVxdWlyZXMgaW52ZXN0aWdhdGlvbiIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuUmVhZFRlc3QiLAorICAgICAgICBtZXRob2QgPSAiKiIsCisgICAgICAgIHJlYXNvbiA9ICJyZWFkIGFuZCB3cml0ZSB0ZXN0cyBkb24ndCB0cmFuc2xhdGUgbG9jYWxseSB3ZWxsIGJlY2F1c2Ugb2YgY2FsbGluZyBpdGVyYXRlKCkgaW5zaWRlIHJlYWQoKS93cml0ZSgpIGFkZCBhIG5vbmUoKSIpCitAR3JhcGguT3B0T3V0KAorICAgICAgICB0ZXN0ID0gIm9yZy5hcGFjaGUudGlua2VycG9wLmdyZW1saW4ucHJvY2Vzcy50cmF2ZXJzYWwuc3RlcC5tYXAuV3JpdGVUZXN0IiwKKyAgICAgICAgbWV0aG9kID0gIioiLAorICAgICAgICByZWFzb24gPSAicmVhZCBhbmQgd3JpdGUgdGVzdHMgZG9uJ3QgdHJhbnNsYXRlIGxvY2FsbHkgd2VsbCBiZWNhdXNlIG9mIGNhbGxpbmcgaXRlcmF0ZSgpIGluc2lkZSByZWFkKCkvd3JpdGUoKSBhZGQgYSBub25lKCkiKQogcHVibGljIGNsYXNzIFRpbmtlckdyYXBoR3J5b1RyYW5zbGF0b3JQcm92aWRlciBleHRlbmRzIFRpbmtlckdyYXBoUHJvdmlkZXIgewogCiAgICAgQE92ZXJyaWRlCg==