ZGlmZiAtLWdpdCBhLzMtMC9pbmNsdWRlL0NML2ludGVybmFsL2NsX2FnZW50X2FtZC5oIGIvMy0wL2luY2x1ZGUvQ0wvaW50ZXJuYWwvY2xfYWdlbnRfYW1kLmgKaW5kZXggNzk2Nzc1MC4uNWQwNzc0MSAxMDA3NTUKLS0tIGEvMy0wL2luY2x1ZGUvQ0wvaW50ZXJuYWwvY2xfYWdlbnRfYW1kLmgKKysrIGIvMy0wL2luY2x1ZGUvQ0wvaW50ZXJuYWwvY2xfYWdlbnRfYW1kLmgKQEAgLTEsOTEgKzEsMTcgQEAKIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi1Db3B5cmlnaHQgKGMpIDIwMTAgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBvZiB0aGlzIG1hdGVyaWFsIGlzIHBlcm1pdHRlZCB1bmRlciB0aGUgZm9sbG93aW5nCi1jb25kaXRpb25zOgotCi1SZWRpc3RyaWJ1dGlvbnMgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIGFsbCB0ZXJtcyBvZiB0aGlzCi1saWNlbnNlLgotCi1JbiBubyBldmVudCBzaGFsbCBhbnlvbmUgcmVkaXN0cmlidXRpbmcgb3IgYWNjZXNzaW5nIG9yIHVzaW5nIHRoaXMgbWF0ZXJpYWwKLWNvbW1lbmNlIG9yIHBhcnRpY2lwYXRlIGluIGFueSBhcmJpdHJhdGlvbiBvciBsZWdhbCBhY3Rpb24gcmVsYXRpbmcgdG8gdGhpcwotbWF0ZXJpYWwgYWdhaW5zdCBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuIG9yIGFueSBjb3B5cmlnaHQgaG9sZGVycyBvcgotY29udHJpYnV0b3JzLiBUaGUgZm9yZWdvaW5nIHNoYWxsIHN1cnZpdmUgYW55IGV4cGlyYXRpb24gb3IgdGVybWluYXRpb24gb2YKLXRoaXMgbGljZW5zZSBvciBhbnkgYWdyZWVtZW50IG9yIGFjY2VzcyBvciB1c2UgcmVsYXRlZCB0byB0aGlzIG1hdGVyaWFsLgotCi1BTlkgQlJFQUNIIE9GIEFOWSBURVJNIE9GIFRISVMgTElDRU5TRSBTSEFMTCBSRVNVTFQgSU4gVEhFIElNTUVESUFURSBSRVZPQ0FUSU9OCi1PRiBBTEwgUklHSFRTIFRPIFJFRElTVFJJQlVURSwgQUNDRVNTIE9SIFVTRSBUSElTIE1BVEVSSUFMLgotCi1USElTIE1BVEVSSUFMIElTIFBST1ZJREVEIEJZIEFEVkFOQ0VEIE1JQ1JPIERFVklDRVMsIElOQy4gQU5EIEFOWSBDT1BZUklHSFQKLUhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIElOIElUUyBDVVJSRU5UIENPTkRJVElPTiBBTkQgV0lUSE9VVCBBTlkKLVJFUFJFU0VOVEFUSU9OUywgR1VBUkFOVEVFLCBPUiBXQVJSQU5UWSBPRiBBTlkgS0lORCBPUiBJTiBBTlkgV0FZIFJFTEFURUQgVE8KLVNVUFBPUlQsIElOREVNTklUWSwgRVJST1IgRlJFRSBPUiBVTklOVEVSUlVQVEVEIE9QRVJBVElPTiwgT1IgVEhBVCBJVCBJUyBGUkVFCi1GUk9NIERFRkVDVFMgT1IgVklSVVNFUy4gIEFMTCBPQkxJR0FUSU9OUyBBUkUgSEVSRUJZIERJU0NMQUlNRUQgLSBXSEVUSEVSCi1FWFBSRVNTLCBJTVBMSUVELCBPUiBTVEFUVVRPUlkgLSBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgQU5ZIElNUExJRUQKLVdBUlJBTlRJRVMgT0YgVElUTEUsIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsCi1BQ0NVUkFDWSwgQ09NUExFVEVORVNTLCBPUEVSQUJJTElUWSwgUVVBTElUWSBPRiBTRVJWSUNFLCBPUiBOT04tSU5GUklOR0VNRU5ULgotSU4gTk8gRVZFTlQgU0hBTEwgQURWQU5DRUQgTUlDUk8gREVWSUNFUywgSU5DLiBPUiBBTlkgQ09QWVJJR0hUIEhPTERFUlMgT1IKLUNPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBQVU5JVElWRSwKLUVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQKLU9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBSRVZFTlVFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUgotQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBPUiBCQVNFRCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWQotQVJJU0lORyBJTiBBTlkgV0FZIFJFTEFURUQgVE8gVEhJUyBNQVRFUklBTCwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWQotT0YgU1VDSCBEQU1BR0UuIFRIRSBFTlRJUkUgQU5EIEFHR1JFR0FURSBMSUFCSUxJVFkgT0YgQURWQU5DRUQgTUlDUk8gREVWSUNFUywKLUlOQy4gQU5EIEFOWSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIFNIQUxMIE5PVCBFWENFRUQgVEVOIERPTExBUlMKLShVUyAkMTAuMDApLiBBTllPTkUgUkVESVNUUklCVVRJTkcgT1IgQUNDRVNTSU5HIE9SIFVTSU5HIFRISVMgTUFURVJJQUwgQUNDRVBUUwotVEhJUyBBTExPQ0FUSU9OIE9GIFJJU0sgQU5EIEFHUkVFUyBUTyBSRUxFQVNFIEFEVkFOQ0VEIE1JQ1JPIERFVklDRVMsIElOQy4gQU5ECi1BTlkgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBGUk9NIEFOWSBBTkQgQUxMIExJQUJJTElUSUVTLAotT0JMSUdBVElPTlMsIENMQUlNUywgT1IgREVNQU5EUyBJTiBFWENFU1MgT0YgVEVOIERPTExBUlMgKFVTICQxMC4wMCkuIFRIRQotRk9SRUdPSU5HIEFSRSBFU1NFTlRJQUwgVEVSTVMgT0YgVEhJUyBMSUNFTlNFIEFORCwgSUYgQU5ZIE9GIFRIRVNFIFRFUk1TIEFSRQotQ09OU1RSVUVEIEFTIFVORU5GT1JDRUFCTEUsIEZBSUwgSU4gRVNTRU5USUFMIFBVUlBPU0UsIE9SIEJFQ09NRSBWT0lEIE9SCi1ERVRSSU1FTlRBTCBUTyBBRFZBTkNFRCBNSUNSTyBERVZJQ0VTLCBJTkMuIE9SIEFOWSBDT1BZUklHSFQgSE9MREVSUyBPUgotQ09OVFJJQlVUT1JTIEZPUiBBTlkgUkVBU09OLCBUSEVOIEFMTCBSSUdIVFMgVE8gUkVESVNUUklCVVRFLCBBQ0NFU1MgT1IgVVNFCi1USElTIE1BVEVSSUFMIFNIQUxMIFRFUk1JTkFURSBJTU1FRElBVEVMWS4gTU9SRU9WRVIsIFRIRSBGT1JFR09JTkcgU0hBTEwKLVNVUlZJVkUgQU5ZIEVYUElSQVRJT04gT1IgVEVSTUlOQVRJT04gT0YgVEhJUyBMSUNFTlNFIE9SIEFOWSBBR1JFRU1FTlQgT1IKLUFDQ0VTUyBPUiBVU0UgUkVMQVRFRCBUTyBUSElTIE1BVEVSSUFMLgotCi1OT1RJQ0UgSVMgSEVSRUJZIFBST1ZJREVELCBBTkQgQlkgUkVESVNUUklCVVRJTkcgT1IgQUNDRVNTSU5HIE9SIFVTSU5HIFRISVMKLU1BVEVSSUFMIFNVQ0ggTk9USUNFIElTIEFDS05PV0xFREdFRCwgVEhBVCBUSElTIE1BVEVSSUFMIE1BWSBCRSBTVUJKRUNUIFRPCi1SRVNUUklDVElPTlMgVU5ERVIgVEhFIExBV1MgQU5EIFJFR1VMQVRJT05TIE9GIFRIRSBVTklURUQgU1RBVEVTIE9SIE9USEVSCi1DT1VOVFJJRVMsIFdISUNIIElOQ0xVREUgQlVUIEFSRSBOT1QgTElNSVRFRCBUTywgVS5TLiBFWFBPUlQgQ09OVFJPTCBMQVdTIFNVQ0gKLUFTIFRIRSBFWFBPUlQgQURNSU5JU1RSQVRJT04gUkVHVUxBVElPTlMgQU5EIE5BVElPTkFMIFNFQ1VSSVRZIENPTlRST0xTIEFTCi1ERUZJTkVEIFRIRVJFVU5ERVIsIEFTIFdFTEwgQVMgU1RBVEUgREVQQVJUTUVOVCBDT05UUk9MUyBVTkRFUiBUSEUgVS5TLgotTVVOSVRJT05TIExJU1QuIFRISVMgTUFURVJJQUwgTUFZIE5PVCBCRSBVU0VELCBSRUxFQVNFRCwgVFJBTlNGRVJSRUQsIElNUE9SVEVELAotRVhQT1JURUQgQU5EL09SIFJFLUVYUE9SVEVEIElOIEFOWSBNQU5ORVIgUFJPSElCSVRFRCBVTkRFUiBBTlkgQVBQTElDQUJMRSBMQVdTLAotSU5DTFVESU5HIFUuUy4gRVhQT1JUIENPTlRST0wgTEFXUyBSRUdBUkRJTkcgU1BFQ0lGSUNBTExZIERFU0lHTkFURUQgUEVSU09OUywKLUNPVU5UUklFUyBBTkQgTkFUSU9OQUxTIE9GIENPVU5UUklFUyBTVUJKRUNUIFRPIE5BVElPTkFMIFNFQ1VSSVRZIENPTlRST0xTLgotTU9SRU9WRVIsIFRIRSBGT1JFR09JTkcgU0hBTEwgU1VSVklWRSBBTlkgRVhQSVJBVElPTiBPUiBURVJNSU5BVElPTiBPRiBBTlkKLUxJQ0VOU0UgT1IgQUdSRUVNRU5UIE9SIEFDQ0VTUyBPUiBVU0UgUkVMQVRFRCBUTyBUSElTIE1BVEVSSUFMLgotCi1OT1RJQ0UgUkVHQVJESU5HIFRIRSBVLlMuIEdPVkVSTk1FTlQgQU5EIERPRCBBR0VOQ0lFUzogVGhpcyBtYXRlcmlhbCBpcwotcHJvdmlkZWQgd2l0aCAiUkVTVFJJQ1RFRCBSSUdIVFMiIGFuZC9vciAiTElNSVRFRCBSSUdIVFMiIGFzIGFwcGxpY2FibGUgdG8KLWNvbXB1dGVyIHNvZnR3YXJlIGFuZCB0ZWNobmljYWwgZGF0YSwgcmVzcGVjdGl2ZWx5LiBVc2UsIGR1cGxpY2F0aW9uLAotZGlzdHJpYnV0aW9uIG9yIGRpc2Nsb3N1cmUgYnkgdGhlIFUuUy4gR292ZXJubWVudCBhbmQvb3IgRE9EIGFnZW5jaWVzIGlzCi1zdWJqZWN0IHRvIHRoZSBmdWxsIGV4dGVudCBvZiByZXN0cmljdGlvbnMgaW4gYWxsIGFwcGxpY2FibGUgcmVndWxhdGlvbnMsCi1pbmNsdWRpbmcgdGhvc2UgZm91bmQgYXQgRkFSNTIuMjI3IGFuZCBERkFSUzI1Mi4yMjcgZXQgc2VxLiBhbmQgYW55IHN1Y2Nlc3NvcgotcmVndWxhdGlvbnMgdGhlcmVvZi4gVXNlIG9mIHRoaXMgbWF0ZXJpYWwgYnkgdGhlIFUuUy4gR292ZXJubWVudCBhbmQvb3IgRE9ECi1hZ2VuY2llcyBpcyBhY2tub3dsZWRnbWVudCBvZiB0aGUgcHJvcHJpZXRhcnkgcmlnaHRzIG9mIGFueSBjb3B5cmlnaHQgaG9sZGVycwotYW5kIGNvbnRyaWJ1dG9ycywgaW5jbHVkaW5nIHRob3NlIG9mIEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4sIGFzIHdlbGwgYXMKLXRoZSBwcm92aXNpb25zIG9mIEZBUjUyLjIyNy0xNCB0aHJvdWdoIDIzIHJlZ2FyZGluZyBwcml2YXRlbHkgZGV2ZWxvcGVkIGFuZC9vcgotY29tbWVyY2lhbCBjb21wdXRlciBzb2Z0d2FyZS4KLQotVGhpcyBsaWNlbnNlIGZvcm1zIHRoZSBlbnRpcmUgYWdyZWVtZW50IHJlZ2FyZGluZyB0aGUgc3ViamVjdCBtYXR0ZXIgaGVyZW9mIGFuZAotc3VwZXJzZWRlcyBhbGwgcHJvcG9zYWxzIGFuZCBwcmlvciBkaXNjdXNzaW9ucyBhbmQgd3JpdGluZ3MgYmV0d2VlbiB0aGUgcGFydGllcwotd2l0aCByZXNwZWN0IHRoZXJldG8uIFRoaXMgbGljZW5zZSBkb2VzIG5vdCBhZmZlY3QgYW55IG93bmVyc2hpcCwgcmlnaHRzLCB0aXRsZSwKLW9yIGludGVyZXN0IGluLCBvciByZWxhdGluZyB0bywgdGhpcyBtYXRlcmlhbC4gTm8gdGVybXMgb2YgdGhpcyBsaWNlbnNlIGNhbiBiZQotbW9kaWZpZWQgb3Igd2FpdmVkLCBhbmQgbm8gYnJlYWNoIG9mIHRoaXMgbGljZW5zZSBjYW4gYmUgZXhjdXNlZCwgdW5sZXNzIGRvbmUKLXNvIGluIGEgd3JpdGluZyBzaWduZWQgYnkgYWxsIGFmZmVjdGVkIHBhcnRpZXMuIEVhY2ggdGVybSBvZiB0aGlzIGxpY2Vuc2UgaXMKLXNlcGFyYXRlbHkgZW5mb3JjZWFibGUuIElmIGFueSB0ZXJtIG9mIHRoaXMgbGljZW5zZSBpcyBkZXRlcm1pbmVkIHRvIGJlIG9yCi1iZWNvbWVzIHVuZW5mb3JjZWFibGUgb3IgaWxsZWdhbCwgc3VjaCB0ZXJtIHNoYWxsIGJlIHJlZm9ybWVkIHRvIHRoZSBtaW5pbXVtCi1leHRlbnQgbmVjZXNzYXJ5IGluIG9yZGVyIGZvciB0aGlzIGxpY2Vuc2UgdG8gcmVtYWluIGluIGVmZmVjdCBpbiBhY2NvcmRhbmNlCi13aXRoIGl0cyB0ZXJtcyBhcyBtb2RpZmllZCBieSBzdWNoIHJlZm9ybWF0aW9uLiBUaGlzIGxpY2Vuc2Ugc2hhbGwgYmUgZ292ZXJuZWQKLWJ5IGFuZCBjb25zdHJ1ZWQgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBsYXdzIG9mIHRoZSBTdGF0ZSBvZiBUZXhhcyB3aXRob3V0Ci1yZWdhcmQgdG8gcnVsZXMgb24gY29uZmxpY3RzIG9mIGxhdyBvZiBhbnkgc3RhdGUgb3IganVyaXNkaWN0aW9uIG9yIHRoZSBVbml0ZWQKLU5hdGlvbnMgQ29udmVudGlvbiBvbiB0aGUgSW50ZXJuYXRpb25hbCBTYWxlIG9mIEdvb2RzLiBBbGwgZGlzcHV0ZXMgYXJpc2luZyBvdXQKLW9mIHRoaXMgbGljZW5zZSBzaGFsbCBiZSBzdWJqZWN0IHRvIHRoZSBqdXJpc2RpY3Rpb24gb2YgdGhlIGZlZGVyYWwgYW5kIHN0YXRlCi1jb3VydHMgaW4gQXVzdGluLCBUZXhhcywgYW5kIGFsbCBkZWZlbnNlcyBhcmUgaGVyZWJ5IHdhaXZlZCBjb25jZXJuaW5nIHBlcnNvbmFsCi1qdXJpc2RpY3Rpb24gYW5kIHZlbnVlIG9mIHRoZXNlIGNvdXJ0cy4KK0NvcHlyaWdodCCpMjAxMiBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorDQorUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0Og0KKw0KKyogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKyogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLg0KKw0KK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRg0KK01FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLA0KK1NQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikNCitIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsDQorRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAKZGlmZiAtLWdpdCBhLzMtMC9pbmNsdWRlL0NML2ludGVybmFsL2NsX2tlcm5lbF9pbmZvX2FtZC5oIGIvMy0wL2luY2x1ZGUvQ0wvaW50ZXJuYWwvY2xfa2VybmVsX2luZm9fYW1kLmgKaW5kZXggZjI0MjIyMC4uZmQyMjQ1ZCAxMDA3NTUKLS0tIGEvMy0wL2luY2x1ZGUvQ0wvaW50ZXJuYWwvY2xfa2VybmVsX2luZm9fYW1kLmgKKysrIGIvMy0wL2luY2x1ZGUvQ0wvaW50ZXJuYWwvY2xfa2VybmVsX2luZm9fYW1kLmgKQEAgLTEsOTIgKzEsMTcgQEAKIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi1Db3B5cmlnaHQgKGMpIDIwMDkgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBvZiB0aGlzIG1hdGVyaWFsIGlzIHBlcm1pdHRlZCB1bmRlciB0aGUgZm9sbG93aW5nCi1jb25kaXRpb25zOgotCi1SZWRpc3RyaWJ1dGlvbnMgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIGFsbCB0ZXJtcyBvZiB0aGlzCi1saWNlbnNlLgotCi1JbiBubyBldmVudCBzaGFsbCBhbnlvbmUgcmVkaXN0cmlidXRpbmcgb3IgYWNjZXNzaW5nIG9yIHVzaW5nIHRoaXMgbWF0ZXJpYWwKLWNvbW1lbmNlIG9yIHBhcnRpY2lwYXRlIGluIGFueSBhcmJpdHJhdGlvbiBvciBsZWdhbCBhY3Rpb24gcmVsYXRpbmcgdG8gdGhpcwotbWF0ZXJpYWwgYWdhaW5zdCBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuIG9yIGFueSBjb3B5cmlnaHQgaG9sZGVycyBvcgotY29udHJpYnV0b3JzLiBUaGUgZm9yZWdvaW5nIHNoYWxsIHN1cnZpdmUgYW55IGV4cGlyYXRpb24gb3IgdGVybWluYXRpb24gb2YKLXRoaXMgbGljZW5zZSBvciBhbnkgYWdyZWVtZW50IG9yIGFjY2VzcyBvciB1c2UgcmVsYXRlZCB0byB0aGlzIG1hdGVyaWFsLgotCi1BTlkgQlJFQUNIIE9GIEFOWSBURVJNIE9GIFRISVMgTElDRU5TRSBTSEFMTCBSRVNVTFQgSU4gVEhFIElNTUVESUFURSBSRVZPQ0FUSU9OCi1PRiBBTEwgUklHSFRTIFRPIFJFRElTVFJJQlVURSwgQUNDRVNTIE9SIFVTRSBUSElTIE1BVEVSSUFMLgotCi1USElTIE1BVEVSSUFMIElTIFBST1ZJREVEIEJZIEFEVkFOQ0VEIE1JQ1JPIERFVklDRVMsIElOQy4gQU5EIEFOWSBDT1BZUklHSFQKLUhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIElOIElUUyBDVVJSRU5UIENPTkRJVElPTiBBTkQgV0lUSE9VVCBBTlkKLVJFUFJFU0VOVEFUSU9OUywgR1VBUkFOVEVFLCBPUiBXQVJSQU5UWSBPRiBBTlkgS0lORCBPUiBJTiBBTlkgV0FZIFJFTEFURUQgVE8KLVNVUFBPUlQsIElOREVNTklUWSwgRVJST1IgRlJFRSBPUiBVTklOVEVSUlVQVEVEIE9QRVJBVElPTiwgT1IgVEhBVCBJVCBJUyBGUkVFCi1GUk9NIERFRkVDVFMgT1IgVklSVVNFUy4gIEFMTCBPQkxJR0FUSU9OUyBBUkUgSEVSRUJZIERJU0NMQUlNRUQgLSBXSEVUSEVSCi1FWFBSRVNTLCBJTVBMSUVELCBPUiBTVEFUVVRPUlkgLSBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgQU5ZIElNUExJRUQKLVdBUlJBTlRJRVMgT0YgVElUTEUsIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsCi1BQ0NVUkFDWSwgQ09NUExFVEVORVNTLCBPUEVSQUJJTElUWSwgUVVBTElUWSBPRiBTRVJWSUNFLCBPUiBOT04tSU5GUklOR0VNRU5ULgotSU4gTk8gRVZFTlQgU0hBTEwgQURWQU5DRUQgTUlDUk8gREVWSUNFUywgSU5DLiBPUiBBTlkgQ09QWVJJR0hUIEhPTERFUlMgT1IKLUNPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBQVU5JVElWRSwKLUVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQKLU9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBSRVZFTlVFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUgotQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBPUiBCQVNFRCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWQotQVJJU0lORyBJTiBBTlkgV0FZIFJFTEFURUQgVE8gVEhJUyBNQVRFUklBTCwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWQotT0YgU1VDSCBEQU1BR0UuIFRIRSBFTlRJUkUgQU5EIEFHR1JFR0FURSBMSUFCSUxJVFkgT0YgQURWQU5DRUQgTUlDUk8gREVWSUNFUywKLUlOQy4gQU5EIEFOWSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIFNIQUxMIE5PVCBFWENFRUQgVEVOIERPTExBUlMKLShVUyAkMTAuMDApLiBBTllPTkUgUkVESVNUUklCVVRJTkcgT1IgQUNDRVNTSU5HIE9SIFVTSU5HIFRISVMgTUFURVJJQUwgQUNDRVBUUwotVEhJUyBBTExPQ0FUSU9OIE9GIFJJU0sgQU5EIEFHUkVFUyBUTyBSRUxFQVNFIEFEVkFOQ0VEIE1JQ1JPIERFVklDRVMsIElOQy4gQU5ECi1BTlkgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBGUk9NIEFOWSBBTkQgQUxMIExJQUJJTElUSUVTLAotT0JMSUdBVElPTlMsIENMQUlNUywgT1IgREVNQU5EUyBJTiBFWENFU1MgT0YgVEVOIERPTExBUlMgKFVTICQxMC4wMCkuIFRIRQotRk9SRUdPSU5HIEFSRSBFU1NFTlRJQUwgVEVSTVMgT0YgVEhJUyBMSUNFTlNFIEFORCwgSUYgQU5ZIE9GIFRIRVNFIFRFUk1TIEFSRQotQ09OU1RSVUVEIEFTIFVORU5GT1JDRUFCTEUsIEZBSUwgSU4gRVNTRU5USUFMIFBVUlBPU0UsIE9SIEJFQ09NRSBWT0lEIE9SCi1ERVRSSU1FTlRBTCBUTyBBRFZBTkNFRCBNSUNSTyBERVZJQ0VTLCBJTkMuIE9SIEFOWSBDT1BZUklHSFQgSE9MREVSUyBPUgotQ09OVFJJQlVUT1JTIEZPUiBBTlkgUkVBU09OLCBUSEVOIEFMTCBSSUdIVFMgVE8gUkVESVNUUklCVVRFLCBBQ0NFU1MgT1IgVVNFCi1USElTIE1BVEVSSUFMIFNIQUxMIFRFUk1JTkFURSBJTU1FRElBVEVMWS4gTU9SRU9WRVIsIFRIRSBGT1JFR09JTkcgU0hBTEwKLVNVUlZJVkUgQU5ZIEVYUElSQVRJT04gT1IgVEVSTUlOQVRJT04gT0YgVEhJUyBMSUNFTlNFIE9SIEFOWSBBR1JFRU1FTlQgT1IKLUFDQ0VTUyBPUiBVU0UgUkVMQVRFRCBUTyBUSElTIE1BVEVSSUFMLgotCi1OT1RJQ0UgSVMgSEVSRUJZIFBST1ZJREVELCBBTkQgQlkgUkVESVNUUklCVVRJTkcgT1IgQUNDRVNTSU5HIE9SIFVTSU5HIFRISVMKLU1BVEVSSUFMIFNVQ0ggTk9USUNFIElTIEFDS05PV0xFREdFRCwgVEhBVCBUSElTIE1BVEVSSUFMIE1BWSBCRSBTVUJKRUNUIFRPCi1SRVNUUklDVElPTlMgVU5ERVIgVEhFIExBV1MgQU5EIFJFR1VMQVRJT05TIE9GIFRIRSBVTklURUQgU1RBVEVTIE9SIE9USEVSCi1DT1VOVFJJRVMsIFdISUNIIElOQ0xVREUgQlVUIEFSRSBOT1QgTElNSVRFRCBUTywgVS5TLiBFWFBPUlQgQ09OVFJPTCBMQVdTIFNVQ0gKLUFTIFRIRSBFWFBPUlQgQURNSU5JU1RSQVRJT04gUkVHVUxBVElPTlMgQU5EIE5BVElPTkFMIFNFQ1VSSVRZIENPTlRST0xTIEFTCi1ERUZJTkVEIFRIRVJFVU5ERVIsIEFTIFdFTEwgQVMgU1RBVEUgREVQQVJUTUVOVCBDT05UUk9MUyBVTkRFUiBUSEUgVS5TLgotTVVOSVRJT05TIExJU1QuIFRISVMgTUFURVJJQUwgTUFZIE5PVCBCRSBVU0VELCBSRUxFQVNFRCwgVFJBTlNGRVJSRUQsIElNUE9SVEVELAotRVhQT1JURUQgQU5EL09SIFJFLUVYUE9SVEVEIElOIEFOWSBNQU5ORVIgUFJPSElCSVRFRCBVTkRFUiBBTlkgQVBQTElDQUJMRSBMQVdTLAotSU5DTFVESU5HIFUuUy4gRVhQT1JUIENPTlRST0wgTEFXUyBSRUdBUkRJTkcgU1BFQ0lGSUNBTExZIERFU0lHTkFURUQgUEVSU09OUywKLUNPVU5UUklFUyBBTkQgTkFUSU9OQUxTIE9GIENPVU5UUklFUyBTVUJKRUNUIFRPIE5BVElPTkFMIFNFQ1VSSVRZIENPTlRST0xTLgotTU9SRU9WRVIsIFRIRSBGT1JFR09JTkcgU0hBTEwgU1VSVklWRSBBTlkgRVhQSVJBVElPTiBPUiBURVJNSU5BVElPTiBPRiBBTlkKLUxJQ0VOU0UgT1IgQUdSRUVNRU5UIE9SIEFDQ0VTUyBPUiBVU0UgUkVMQVRFRCBUTyBUSElTIE1BVEVSSUFMLgotCi1OT1RJQ0UgUkVHQVJESU5HIFRIRSBVLlMuIEdPVkVSTk1FTlQgQU5EIERPRCBBR0VOQ0lFUzogVGhpcyBtYXRlcmlhbCBpcwotcHJvdmlkZWQgd2l0aCAiUkVTVFJJQ1RFRCBSSUdIVFMiIGFuZC9vciAiTElNSVRFRCBSSUdIVFMiIGFzIGFwcGxpY2FibGUgdG8KLWNvbXB1dGVyIHNvZnR3YXJlIGFuZCB0ZWNobmljYWwgZGF0YSwgcmVzcGVjdGl2ZWx5LiBVc2UsIGR1cGxpY2F0aW9uLAotZGlzdHJpYnV0aW9uIG9yIGRpc2Nsb3N1cmUgYnkgdGhlIFUuUy4gR292ZXJubWVudCBhbmQvb3IgRE9EIGFnZW5jaWVzIGlzCi1zdWJqZWN0IHRvIHRoZSBmdWxsIGV4dGVudCBvZiByZXN0cmljdGlvbnMgaW4gYWxsIGFwcGxpY2FibGUgcmVndWxhdGlvbnMsCi1pbmNsdWRpbmcgdGhvc2UgZm91bmQgYXQgRkFSNTIuMjI3IGFuZCBERkFSUzI1Mi4yMjcgZXQgc2VxLiBhbmQgYW55IHN1Y2Nlc3NvcgotcmVndWxhdGlvbnMgdGhlcmVvZi4gVXNlIG9mIHRoaXMgbWF0ZXJpYWwgYnkgdGhlIFUuUy4gR292ZXJubWVudCBhbmQvb3IgRE9ECi1hZ2VuY2llcyBpcyBhY2tub3dsZWRnbWVudCBvZiB0aGUgcHJvcHJpZXRhcnkgcmlnaHRzIG9mIGFueSBjb3B5cmlnaHQgaG9sZGVycwotYW5kIGNvbnRyaWJ1dG9ycywgaW5jbHVkaW5nIHRob3NlIG9mIEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4sIGFzIHdlbGwgYXMKLXRoZSBwcm92aXNpb25zIG9mIEZBUjUyLjIyNy0xNCB0aHJvdWdoIDIzIHJlZ2FyZGluZyBwcml2YXRlbHkgZGV2ZWxvcGVkIGFuZC9vcgotY29tbWVyY2lhbCBjb21wdXRlciBzb2Z0d2FyZS4KLQotVGhpcyBsaWNlbnNlIGZvcm1zIHRoZSBlbnRpcmUgYWdyZWVtZW50IHJlZ2FyZGluZyB0aGUgc3ViamVjdCBtYXR0ZXIgaGVyZW9mIGFuZAotc3VwZXJzZWRlcyBhbGwgcHJvcG9zYWxzIGFuZCBwcmlvciBkaXNjdXNzaW9ucyBhbmQgd3JpdGluZ3MgYmV0d2VlbiB0aGUgcGFydGllcwotd2l0aCByZXNwZWN0IHRoZXJldG8uIFRoaXMgbGljZW5zZSBkb2VzIG5vdCBhZmZlY3QgYW55IG93bmVyc2hpcCwgcmlnaHRzLCB0aXRsZSwKLW9yIGludGVyZXN0IGluLCBvciByZWxhdGluZyB0bywgdGhpcyBtYXRlcmlhbC4gTm8gdGVybXMgb2YgdGhpcyBsaWNlbnNlIGNhbiBiZQotbW9kaWZpZWQgb3Igd2FpdmVkLCBhbmQgbm8gYnJlYWNoIG9mIHRoaXMgbGljZW5zZSBjYW4gYmUgZXhjdXNlZCwgdW5sZXNzIGRvbmUKLXNvIGluIGEgd3JpdGluZyBzaWduZWQgYnkgYWxsIGFmZmVjdGVkIHBhcnRpZXMuIEVhY2ggdGVybSBvZiB0aGlzIGxpY2Vuc2UgaXMKLXNlcGFyYXRlbHkgZW5mb3JjZWFibGUuIElmIGFueSB0ZXJtIG9mIHRoaXMgbGljZW5zZSBpcyBkZXRlcm1pbmVkIHRvIGJlIG9yCi1iZWNvbWVzIHVuZW5mb3JjZWFibGUgb3IgaWxsZWdhbCwgc3VjaCB0ZXJtIHNoYWxsIGJlIHJlZm9ybWVkIHRvIHRoZSBtaW5pbXVtCi1leHRlbnQgbmVjZXNzYXJ5IGluIG9yZGVyIGZvciB0aGlzIGxpY2Vuc2UgdG8gcmVtYWluIGluIGVmZmVjdCBpbiBhY2NvcmRhbmNlCi0KLXdpdGggaXRzIHRlcm1zIGFzIG1vZGlmaWVkIGJ5IHN1Y2ggcmVmb3JtYXRpb24uIFRoaXMgbGljZW5zZSBzaGFsbCBiZSBnb3Zlcm5lZAotYnkgYW5kIGNvbnN0cnVlZCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIGxhd3Mgb2YgdGhlIFN0YXRlIG9mIFRleGFzIHdpdGhvdXQKLXJlZ2FyZCB0byBydWxlcyBvbiBjb25mbGljdHMgb2YgbGF3IG9mIGFueSBzdGF0ZSBvciBqdXJpc2RpY3Rpb24gb3IgdGhlIFVuaXRlZAotTmF0aW9ucyBDb252ZW50aW9uIG9uIHRoZSBJbnRlcm5hdGlvbmFsIFNhbGUgb2YgR29vZHMuIEFsbCBkaXNwdXRlcyBhcmlzaW5nIG91dAotb2YgdGhpcyBsaWNlbnNlIHNoYWxsIGJlIHN1YmplY3QgdG8gdGhlIGp1cmlzZGljdGlvbiBvZiB0aGUgZmVkZXJhbCBhbmQgc3RhdGUKLWNvdXJ0cyBpbiBBdXN0aW4sIFRleGFzLCBhbmQgYWxsIGRlZmVuc2VzIGFyZSBoZXJlYnkgd2FpdmVkIGNvbmNlcm5pbmcgcGVyc29uYWwKLWp1cmlzZGljdGlvbiBhbmQgdmVudWUgb2YgdGhlc2UgY291cnRzLgorQ29weXJpZ2h0IKkyMDEyIEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisNCitSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6DQorDQorKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQorKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQorDQorVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GDQorTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsDQorU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQ0KK0hPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwNCitFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KIApkaWZmIC0tZ2l0IGEvMy0wL2luY2x1ZGUvQ0wvaW50ZXJuYWwvY2xfcHJvZmlsZV9hbWQuaCBiLzMtMC9pbmNsdWRlL0NML2ludGVybmFsL2NsX3Byb2ZpbGVfYW1kLmgKaW5kZXggMjRkNTQyYy4uOGRjZDIyOSAxMDA3NTUKLS0tIGEvMy0wL2luY2x1ZGUvQ0wvaW50ZXJuYWwvY2xfcHJvZmlsZV9hbWQuaAorKysgYi8zLTAvaW5jbHVkZS9DTC9pbnRlcm5hbC9jbF9wcm9maWxlX2FtZC5oCkBAIC0xLDkyICsxLDE3IEBACiAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotQ29weXJpZ2h0IChjKSAyMDA5IEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0KLVJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ugb2YgdGhpcyBtYXRlcmlhbCBpcyBwZXJtaXR0ZWQgdW5kZXIgdGhlIGZvbGxvd2luZwotY29uZGl0aW9uczoKLQotUmVkaXN0cmlidXRpb25zIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCBhbGwgdGVybXMgb2YgdGhpcwotbGljZW5zZS4KLQotSW4gbm8gZXZlbnQgc2hhbGwgYW55b25lIHJlZGlzdHJpYnV0aW5nIG9yIGFjY2Vzc2luZyBvciB1c2luZyB0aGlzIG1hdGVyaWFsCi1jb21tZW5jZSBvciBwYXJ0aWNpcGF0ZSBpbiBhbnkgYXJiaXRyYXRpb24gb3IgbGVnYWwgYWN0aW9uIHJlbGF0aW5nIHRvIHRoaXMKLW1hdGVyaWFsIGFnYWluc3QgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLiBvciBhbnkgY29weXJpZ2h0IGhvbGRlcnMgb3IKLWNvbnRyaWJ1dG9ycy4gVGhlIGZvcmVnb2luZyBzaGFsbCBzdXJ2aXZlIGFueSBleHBpcmF0aW9uIG9yIHRlcm1pbmF0aW9uIG9mCi10aGlzIGxpY2Vuc2Ugb3IgYW55IGFncmVlbWVudCBvciBhY2Nlc3Mgb3IgdXNlIHJlbGF0ZWQgdG8gdGhpcyBtYXRlcmlhbC4KLQotQU5ZIEJSRUFDSCBPRiBBTlkgVEVSTSBPRiBUSElTIExJQ0VOU0UgU0hBTEwgUkVTVUxUIElOIFRIRSBJTU1FRElBVEUgUkVWT0NBVElPTgotT0YgQUxMIFJJR0hUUyBUTyBSRURJU1RSSUJVVEUsIEFDQ0VTUyBPUiBVU0UgVEhJUyBNQVRFUklBTC4KLQotVEhJUyBNQVRFUklBTCBJUyBQUk9WSURFRCBCWSBBRFZBTkNFRCBNSUNSTyBERVZJQ0VTLCBJTkMuIEFORCBBTlkgQ09QWVJJR0hUCi1IT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBJTiBJVFMgQ1VSUkVOVCBDT05ESVRJT04gQU5EIFdJVEhPVVQgQU5ZCi1SRVBSRVNFTlRBVElPTlMsIEdVQVJBTlRFRSwgT1IgV0FSUkFOVFkgT0YgQU5ZIEtJTkQgT1IgSU4gQU5ZIFdBWSBSRUxBVEVEIFRPCi1TVVBQT1JULCBJTkRFTU5JVFksIEVSUk9SIEZSRUUgT1IgVU5JTlRFUlJVUFRFRCBPUEVSQVRJT04sIE9SIFRIQVQgSVQgSVMgRlJFRQotRlJPTSBERUZFQ1RTIE9SIFZJUlVTRVMuICBBTEwgT0JMSUdBVElPTlMgQVJFIEhFUkVCWSBESVNDTEFJTUVEIC0gV0hFVEhFUgotRVhQUkVTUywgSU1QTElFRCwgT1IgU1RBVFVUT1JZIC0gSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIEFOWSBJTVBMSUVECi1XQVJSQU5USUVTIE9GIFRJVExFLCBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLAotQUNDVVJBQ1ksIENPTVBMRVRFTkVTUywgT1BFUkFCSUxJVFksIFFVQUxJVFkgT0YgU0VSVklDRSwgT1IgTk9OLUlORlJJTkdFTUVOVC4KLUlOIE5PIEVWRU5UIFNIQUxMIEFEVkFOQ0VEIE1JQ1JPIERFVklDRVMsIElOQy4gT1IgQU5ZIENPUFlSSUdIVCBIT0xERVJTIE9SCi1DT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgUFVOSVRJVkUsCi1FWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UCi1PRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgUkVWRU5VRSwgREFUQSwgT1IgUFJPRklUUzsgT1IKLUJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgT1IgQkFTRUQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFkKLUFSSVNJTkcgSU4gQU5ZIFdBWSBSRUxBVEVEIFRPIFRISVMgTUFURVJJQUwsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkKLU9GIFNVQ0ggREFNQUdFLiBUSEUgRU5USVJFIEFORCBBR0dSRUdBVEUgTElBQklMSVRZIE9GIEFEVkFOQ0VEIE1JQ1JPIERFVklDRVMsCi1JTkMuIEFORCBBTlkgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBTSEFMTCBOT1QgRVhDRUVEIFRFTiBET0xMQVJTCi0oVVMgJDEwLjAwKS4gQU5ZT05FIFJFRElTVFJJQlVUSU5HIE9SIEFDQ0VTU0lORyBPUiBVU0lORyBUSElTIE1BVEVSSUFMIEFDQ0VQVFMKLVRISVMgQUxMT0NBVElPTiBPRiBSSVNLIEFORCBBR1JFRVMgVE8gUkVMRUFTRSBBRFZBTkNFRCBNSUNSTyBERVZJQ0VTLCBJTkMuIEFORAotQU5ZIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgRlJPTSBBTlkgQU5EIEFMTCBMSUFCSUxJVElFUywKLU9CTElHQVRJT05TLCBDTEFJTVMsIE9SIERFTUFORFMgSU4gRVhDRVNTIE9GIFRFTiBET0xMQVJTIChVUyAkMTAuMDApLiBUSEUKLUZPUkVHT0lORyBBUkUgRVNTRU5USUFMIFRFUk1TIE9GIFRISVMgTElDRU5TRSBBTkQsIElGIEFOWSBPRiBUSEVTRSBURVJNUyBBUkUKLUNPTlNUUlVFRCBBUyBVTkVORk9SQ0VBQkxFLCBGQUlMIElOIEVTU0VOVElBTCBQVVJQT1NFLCBPUiBCRUNPTUUgVk9JRCBPUgotREVUUklNRU5UQUwgVE8gQURWQU5DRUQgTUlDUk8gREVWSUNFUywgSU5DLiBPUiBBTlkgQ09QWVJJR0hUIEhPTERFUlMgT1IKLUNPTlRSSUJVVE9SUyBGT1IgQU5ZIFJFQVNPTiwgVEhFTiBBTEwgUklHSFRTIFRPIFJFRElTVFJJQlVURSwgQUNDRVNTIE9SIFVTRQotVEhJUyBNQVRFUklBTCBTSEFMTCBURVJNSU5BVEUgSU1NRURJQVRFTFkuIE1PUkVPVkVSLCBUSEUgRk9SRUdPSU5HIFNIQUxMCi1TVVJWSVZFIEFOWSBFWFBJUkFUSU9OIE9SIFRFUk1JTkFUSU9OIE9GIFRISVMgTElDRU5TRSBPUiBBTlkgQUdSRUVNRU5UIE9SCi1BQ0NFU1MgT1IgVVNFIFJFTEFURUQgVE8gVEhJUyBNQVRFUklBTC4KLQotTk9USUNFIElTIEhFUkVCWSBQUk9WSURFRCwgQU5EIEJZIFJFRElTVFJJQlVUSU5HIE9SIEFDQ0VTU0lORyBPUiBVU0lORyBUSElTCi1NQVRFUklBTCBTVUNIIE5PVElDRSBJUyBBQ0tOT1dMRURHRUQsIFRIQVQgVEhJUyBNQVRFUklBTCBNQVkgQkUgU1VCSkVDVCBUTwotUkVTVFJJQ1RJT05TIFVOREVSIFRIRSBMQVdTIEFORCBSRUdVTEFUSU9OUyBPRiBUSEUgVU5JVEVEIFNUQVRFUyBPUiBPVEhFUgotQ09VTlRSSUVTLCBXSElDSCBJTkNMVURFIEJVVCBBUkUgTk9UIExJTUlURUQgVE8sIFUuUy4gRVhQT1JUIENPTlRST0wgTEFXUyBTVUNICi1BUyBUSEUgRVhQT1JUIEFETUlOSVNUUkFUSU9OIFJFR1VMQVRJT05TIEFORCBOQVRJT05BTCBTRUNVUklUWSBDT05UUk9MUyBBUwotREVGSU5FRCBUSEVSRVVOREVSLCBBUyBXRUxMIEFTIFNUQVRFIERFUEFSVE1FTlQgQ09OVFJPTFMgVU5ERVIgVEhFIFUuUy4KLU1VTklUSU9OUyBMSVNULiBUSElTIE1BVEVSSUFMIE1BWSBOT1QgQkUgVVNFRCwgUkVMRUFTRUQsIFRSQU5TRkVSUkVELCBJTVBPUlRFRCwKLUVYUE9SVEVEIEFORC9PUiBSRS1FWFBPUlRFRCBJTiBBTlkgTUFOTkVSIFBST0hJQklURUQgVU5ERVIgQU5ZIEFQUExJQ0FCTEUgTEFXUywKLUlOQ0xVRElORyBVLlMuIEVYUE9SVCBDT05UUk9MIExBV1MgUkVHQVJESU5HIFNQRUNJRklDQUxMWSBERVNJR05BVEVEIFBFUlNPTlMsCi1DT1VOVFJJRVMgQU5EIE5BVElPTkFMUyBPRiBDT1VOVFJJRVMgU1VCSkVDVCBUTyBOQVRJT05BTCBTRUNVUklUWSBDT05UUk9MUy4KLU1PUkVPVkVSLCBUSEUgRk9SRUdPSU5HIFNIQUxMIFNVUlZJVkUgQU5ZIEVYUElSQVRJT04gT1IgVEVSTUlOQVRJT04gT0YgQU5ZCi1MSUNFTlNFIE9SIEFHUkVFTUVOVCBPUiBBQ0NFU1MgT1IgVVNFIFJFTEFURUQgVE8gVEhJUyBNQVRFUklBTC4KLQotTk9USUNFIFJFR0FSRElORyBUSEUgVS5TLiBHT1ZFUk5NRU5UIEFORCBET0QgQUdFTkNJRVM6IFRoaXMgbWF0ZXJpYWwgaXMKLXByb3ZpZGVkIHdpdGggIlJFU1RSSUNURUQgUklHSFRTIiBhbmQvb3IgIkxJTUlURUQgUklHSFRTIiBhcyBhcHBsaWNhYmxlIHRvCi1jb21wdXRlciBzb2Z0d2FyZSBhbmQgdGVjaG5pY2FsIGRhdGEsIHJlc3BlY3RpdmVseS4gVXNlLCBkdXBsaWNhdGlvbiwKLWRpc3RyaWJ1dGlvbiBvciBkaXNjbG9zdXJlIGJ5IHRoZSBVLlMuIEdvdmVybm1lbnQgYW5kL29yIERPRCBhZ2VuY2llcyBpcwotc3ViamVjdCB0byB0aGUgZnVsbCBleHRlbnQgb2YgcmVzdHJpY3Rpb25zIGluIGFsbCBhcHBsaWNhYmxlIHJlZ3VsYXRpb25zLAotaW5jbHVkaW5nIHRob3NlIGZvdW5kIGF0IEZBUjUyLjIyNyBhbmQgREZBUlMyNTIuMjI3IGV0IHNlcS4gYW5kIGFueSBzdWNjZXNzb3IKLXJlZ3VsYXRpb25zIHRoZXJlb2YuIFVzZSBvZiB0aGlzIG1hdGVyaWFsIGJ5IHRoZSBVLlMuIEdvdmVybm1lbnQgYW5kL29yIERPRAotYWdlbmNpZXMgaXMgYWNrbm93bGVkZ21lbnQgb2YgdGhlIHByb3ByaWV0YXJ5IHJpZ2h0cyBvZiBhbnkgY29weXJpZ2h0IGhvbGRlcnMKLWFuZCBjb250cmlidXRvcnMsIGluY2x1ZGluZyB0aG9zZSBvZiBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuLCBhcyB3ZWxsIGFzCi10aGUgcHJvdmlzaW9ucyBvZiBGQVI1Mi4yMjctMTQgdGhyb3VnaCAyMyByZWdhcmRpbmcgcHJpdmF0ZWx5IGRldmVsb3BlZCBhbmQvb3IKLWNvbW1lcmNpYWwgY29tcHV0ZXIgc29mdHdhcmUuCi0KLVRoaXMgbGljZW5zZSBmb3JtcyB0aGUgZW50aXJlIGFncmVlbWVudCByZWdhcmRpbmcgdGhlIHN1YmplY3QgbWF0dGVyIGhlcmVvZiBhbmQKLXN1cGVyc2VkZXMgYWxsIHByb3Bvc2FscyBhbmQgcHJpb3IgZGlzY3Vzc2lvbnMgYW5kIHdyaXRpbmdzIGJldHdlZW4gdGhlIHBhcnRpZXMKLXdpdGggcmVzcGVjdCB0aGVyZXRvLiBUaGlzIGxpY2Vuc2UgZG9lcyBub3QgYWZmZWN0IGFueSBvd25lcnNoaXAsIHJpZ2h0cywgdGl0bGUsCi1vciBpbnRlcmVzdCBpbiwgb3IgcmVsYXRpbmcgdG8sIHRoaXMgbWF0ZXJpYWwuIE5vIHRlcm1zIG9mIHRoaXMgbGljZW5zZSBjYW4gYmUKLW1vZGlmaWVkIG9yIHdhaXZlZCwgYW5kIG5vIGJyZWFjaCBvZiB0aGlzIGxpY2Vuc2UgY2FuIGJlIGV4Y3VzZWQsIHVubGVzcyBkb25lCi1zbyBpbiBhIHdyaXRpbmcgc2lnbmVkIGJ5IGFsbCBhZmZlY3RlZCBwYXJ0aWVzLiBFYWNoIHRlcm0gb2YgdGhpcyBsaWNlbnNlIGlzCi1zZXBhcmF0ZWx5IGVuZm9yY2VhYmxlLiBJZiBhbnkgdGVybSBvZiB0aGlzIGxpY2Vuc2UgaXMgZGV0ZXJtaW5lZCB0byBiZSBvcgotYmVjb21lcyB1bmVuZm9yY2VhYmxlIG9yIGlsbGVnYWwsIHN1Y2ggdGVybSBzaGFsbCBiZSByZWZvcm1lZCB0byB0aGUgbWluaW11bQotZXh0ZW50IG5lY2Vzc2FyeSBpbiBvcmRlciBmb3IgdGhpcyBsaWNlbnNlIHRvIHJlbWFpbiBpbiBlZmZlY3QgaW4gYWNjb3JkYW5jZQotCi13aXRoIGl0cyB0ZXJtcyBhcyBtb2RpZmllZCBieSBzdWNoIHJlZm9ybWF0aW9uLiBUaGlzIGxpY2Vuc2Ugc2hhbGwgYmUgZ292ZXJuZWQKLWJ5IGFuZCBjb25zdHJ1ZWQgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBsYXdzIG9mIHRoZSBTdGF0ZSBvZiBUZXhhcyB3aXRob3V0Ci1yZWdhcmQgdG8gcnVsZXMgb24gY29uZmxpY3RzIG9mIGxhdyBvZiBhbnkgc3RhdGUgb3IganVyaXNkaWN0aW9uIG9yIHRoZSBVbml0ZWQKLU5hdGlvbnMgQ29udmVudGlvbiBvbiB0aGUgSW50ZXJuYXRpb25hbCBTYWxlIG9mIEdvb2RzLiBBbGwgZGlzcHV0ZXMgYXJpc2luZyBvdXQKLW9mIHRoaXMgbGljZW5zZSBzaGFsbCBiZSBzdWJqZWN0IHRvIHRoZSBqdXJpc2RpY3Rpb24gb2YgdGhlIGZlZGVyYWwgYW5kIHN0YXRlCi1jb3VydHMgaW4gQXVzdGluLCBUZXhhcywgYW5kIGFsbCBkZWZlbnNlcyBhcmUgaGVyZWJ5IHdhaXZlZCBjb25jZXJuaW5nIHBlcnNvbmFsCi1qdXJpc2RpY3Rpb24gYW5kIHZlbnVlIG9mIHRoZXNlIGNvdXJ0cy4KK0NvcHlyaWdodCCpMjAxMiBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorDQorUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0Og0KKw0KKyogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKyogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLg0KKw0KK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRg0KK01FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLA0KK1NQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikNCitIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsDQorRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAKZGlmZiAtLWdpdCBhLzMtMC9pbmNsdWRlL0NML2ludGVybmFsL2NsX3RocmVhZF90cmFjZV9hbWQuaCBiLzMtMC9pbmNsdWRlL0NML2ludGVybmFsL2NsX3RocmVhZF90cmFjZV9hbWQuaAppbmRleCA1YTQzMDA4Li5kMTEzYWFkIDEwMDc1NQotLS0gYS8zLTAvaW5jbHVkZS9DTC9pbnRlcm5hbC9jbF90aHJlYWRfdHJhY2VfYW1kLmgKKysrIGIvMy0wL2luY2x1ZGUvQ0wvaW50ZXJuYWwvY2xfdGhyZWFkX3RyYWNlX2FtZC5oCkBAIC0xLDkyICsxLDE3IEBACiAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotQ29weXJpZ2h0IChjKSAyMDEyIEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0KLVJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ugb2YgdGhpcyBtYXRlcmlhbCBpcyBwZXJtaXR0ZWQgdW5kZXIgdGhlIGZvbGxvd2luZwotY29uZGl0aW9uczoKLQotUmVkaXN0cmlidXRpb25zIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCBhbGwgdGVybXMgb2YgdGhpcwotbGljZW5zZS4KLQotSW4gbm8gZXZlbnQgc2hhbGwgYW55b25lIHJlZGlzdHJpYnV0aW5nIG9yIGFjY2Vzc2luZyBvciB1c2luZyB0aGlzIG1hdGVyaWFsCi1jb21tZW5jZSBvciBwYXJ0aWNpcGF0ZSBpbiBhbnkgYXJiaXRyYXRpb24gb3IgbGVnYWwgYWN0aW9uIHJlbGF0aW5nIHRvIHRoaXMKLW1hdGVyaWFsIGFnYWluc3QgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLiBvciBhbnkgY29weXJpZ2h0IGhvbGRlcnMgb3IKLWNvbnRyaWJ1dG9ycy4gVGhlIGZvcmVnb2luZyBzaGFsbCBzdXJ2aXZlIGFueSBleHBpcmF0aW9uIG9yIHRlcm1pbmF0aW9uIG9mCi10aGlzIGxpY2Vuc2Ugb3IgYW55IGFncmVlbWVudCBvciBhY2Nlc3Mgb3IgdXNlIHJlbGF0ZWQgdG8gdGhpcyBtYXRlcmlhbC4KLQotQU5ZIEJSRUFDSCBPRiBBTlkgVEVSTSBPRiBUSElTIExJQ0VOU0UgU0hBTEwgUkVTVUxUIElOIFRIRSBJTU1FRElBVEUgUkVWT0NBVElPTgotT0YgQUxMIFJJR0hUUyBUTyBSRURJU1RSSUJVVEUsIEFDQ0VTUyBPUiBVU0UgVEhJUyBNQVRFUklBTC4KLQotVEhJUyBNQVRFUklBTCBJUyBQUk9WSURFRCBCWSBBRFZBTkNFRCBNSUNSTyBERVZJQ0VTLCBJTkMuIEFORCBBTlkgQ09QWVJJR0hUCi1IT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBJTiBJVFMgQ1VSUkVOVCBDT05ESVRJT04gQU5EIFdJVEhPVVQgQU5ZCi1SRVBSRVNFTlRBVElPTlMsIEdVQVJBTlRFRSwgT1IgV0FSUkFOVFkgT0YgQU5ZIEtJTkQgT1IgSU4gQU5ZIFdBWSBSRUxBVEVEIFRPCi1TVVBQT1JULCBJTkRFTU5JVFksIEVSUk9SIEZSRUUgT1IgVU5JTlRFUlJVUFRFRCBPUEVSQVRJT04sIE9SIFRIQVQgSVQgSVMgRlJFRQotRlJPTSBERUZFQ1RTIE9SIFZJUlVTRVMuICBBTEwgT0JMSUdBVElPTlMgQVJFIEhFUkVCWSBESVNDTEFJTUVEIC0gV0hFVEhFUgotRVhQUkVTUywgSU1QTElFRCwgT1IgU1RBVFVUT1JZIC0gSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIEFOWSBJTVBMSUVECi1XQVJSQU5USUVTIE9GIFRJVExFLCBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLAotQUNDVVJBQ1ksIENPTVBMRVRFTkVTUywgT1BFUkFCSUxJVFksIFFVQUxJVFkgT0YgU0VSVklDRSwgT1IgTk9OLUlORlJJTkdFTUVOVC4KLUlOIE5PIEVWRU5UIFNIQUxMIEFEVkFOQ0VEIE1JQ1JPIERFVklDRVMsIElOQy4gT1IgQU5ZIENPUFlSSUdIVCBIT0xERVJTIE9SCi1DT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgUFVOSVRJVkUsCi1FWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UCi1PRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgUkVWRU5VRSwgREFUQSwgT1IgUFJPRklUUzsgT1IKLUJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgT1IgQkFTRUQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFkKLUFSSVNJTkcgSU4gQU5ZIFdBWSBSRUxBVEVEIFRPIFRISVMgTUFURVJJQUwsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkKLU9GIFNVQ0ggREFNQUdFLiBUSEUgRU5USVJFIEFORCBBR0dSRUdBVEUgTElBQklMSVRZIE9GIEFEVkFOQ0VEIE1JQ1JPIERFVklDRVMsCi1JTkMuIEFORCBBTlkgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBTSEFMTCBOT1QgRVhDRUVEIFRFTiBET0xMQVJTCi0oVVMgJDEwLjAwKS4gQU5ZT05FIFJFRElTVFJJQlVUSU5HIE9SIEFDQ0VTU0lORyBPUiBVU0lORyBUSElTIE1BVEVSSUFMIEFDQ0VQVFMKLVRISVMgQUxMT0NBVElPTiBPRiBSSVNLIEFORCBBR1JFRVMgVE8gUkVMRUFTRSBBRFZBTkNFRCBNSUNSTyBERVZJQ0VTLCBJTkMuIEFORAotQU5ZIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgRlJPTSBBTlkgQU5EIEFMTCBMSUFCSUxJVElFUywKLU9CTElHQVRJT05TLCBDTEFJTVMsIE9SIERFTUFORFMgSU4gRVhDRVNTIE9GIFRFTiBET0xMQVJTIChVUyAkMTAuMDApLiBUSEUKLUZPUkVHT0lORyBBUkUgRVNTRU5USUFMIFRFUk1TIE9GIFRISVMgTElDRU5TRSBBTkQsIElGIEFOWSBPRiBUSEVTRSBURVJNUyBBUkUKLUNPTlNUUlVFRCBBUyBVTkVORk9SQ0VBQkxFLCBGQUlMIElOIEVTU0VOVElBTCBQVVJQT1NFLCBPUiBCRUNPTUUgVk9JRCBPUgotREVUUklNRU5UQUwgVE8gQURWQU5DRUQgTUlDUk8gREVWSUNFUywgSU5DLiBPUiBBTlkgQ09QWVJJR0hUIEhPTERFUlMgT1IKLUNPTlRSSUJVVE9SUyBGT1IgQU5ZIFJFQVNPTiwgVEhFTiBBTEwgUklHSFRTIFRPIFJFRElTVFJJQlVURSwgQUNDRVNTIE9SIFVTRQotVEhJUyBNQVRFUklBTCBTSEFMTCBURVJNSU5BVEUgSU1NRURJQVRFTFkuIE1PUkVPVkVSLCBUSEUgRk9SRUdPSU5HIFNIQUxMCi1TVVJWSVZFIEFOWSBFWFBJUkFUSU9OIE9SIFRFUk1JTkFUSU9OIE9GIFRISVMgTElDRU5TRSBPUiBBTlkgQUdSRUVNRU5UIE9SCi1BQ0NFU1MgT1IgVVNFIFJFTEFURUQgVE8gVEhJUyBNQVRFUklBTC4KLQotTk9USUNFIElTIEhFUkVCWSBQUk9WSURFRCwgQU5EIEJZIFJFRElTVFJJQlVUSU5HIE9SIEFDQ0VTU0lORyBPUiBVU0lORyBUSElTCi1NQVRFUklBTCBTVUNIIE5PVElDRSBJUyBBQ0tOT1dMRURHRUQsIFRIQVQgVEhJUyBNQVRFUklBTCBNQVkgQkUgU1VCSkVDVCBUTwotUkVTVFJJQ1RJT05TIFVOREVSIFRIRSBMQVdTIEFORCBSRUdVTEFUSU9OUyBPRiBUSEUgVU5JVEVEIFNUQVRFUyBPUiBPVEhFUgotQ09VTlRSSUVTLCBXSElDSCBJTkNMVURFIEJVVCBBUkUgTk9UIExJTUlURUQgVE8sIFUuUy4gRVhQT1JUIENPTlRST0wgTEFXUyBTVUNICi1BUyBUSEUgRVhQT1JUIEFETUlOSVNUUkFUSU9OIFJFR1VMQVRJT05TIEFORCBOQVRJT05BTCBTRUNVUklUWSBDT05UUk9MUyBBUwotREVGSU5FRCBUSEVSRVVOREVSLCBBUyBXRUxMIEFTIFNUQVRFIERFUEFSVE1FTlQgQ09OVFJPTFMgVU5ERVIgVEhFIFUuUy4KLU1VTklUSU9OUyBMSVNULiBUSElTIE1BVEVSSUFMIE1BWSBOT1QgQkUgVVNFRCwgUkVMRUFTRUQsIFRSQU5TRkVSUkVELCBJTVBPUlRFRCwKLUVYUE9SVEVEIEFORC9PUiBSRS1FWFBPUlRFRCBJTiBBTlkgTUFOTkVSIFBST0hJQklURUQgVU5ERVIgQU5ZIEFQUExJQ0FCTEUgTEFXUywKLUlOQ0xVRElORyBVLlMuIEVYUE9SVCBDT05UUk9MIExBV1MgUkVHQVJESU5HIFNQRUNJRklDQUxMWSBERVNJR05BVEVEIFBFUlNPTlMsCi1DT1VOVFJJRVMgQU5EIE5BVElPTkFMUyBPRiBDT1VOVFJJRVMgU1VCSkVDVCBUTyBOQVRJT05BTCBTRUNVUklUWSBDT05UUk9MUy4KLU1PUkVPVkVSLCBUSEUgRk9SRUdPSU5HIFNIQUxMIFNVUlZJVkUgQU5ZIEVYUElSQVRJT04gT1IgVEVSTUlOQVRJT04gT0YgQU5ZCi1MSUNFTlNFIE9SIEFHUkVFTUVOVCBPUiBBQ0NFU1MgT1IgVVNFIFJFTEFURUQgVE8gVEhJUyBNQVRFUklBTC4KLQotTk9USUNFIFJFR0FSRElORyBUSEUgVS5TLiBHT1ZFUk5NRU5UIEFORCBET0QgQUdFTkNJRVM6IFRoaXMgbWF0ZXJpYWwgaXMKLXByb3ZpZGVkIHdpdGggIlJFU1RSSUNURUQgUklHSFRTIiBhbmQvb3IgIkxJTUlURUQgUklHSFRTIiBhcyBhcHBsaWNhYmxlIHRvCi1jb21wdXRlciBzb2Z0d2FyZSBhbmQgdGVjaG5pY2FsIGRhdGEsIHJlc3BlY3RpdmVseS4gVXNlLCBkdXBsaWNhdGlvbiwKLWRpc3RyaWJ1dGlvbiBvciBkaXNjbG9zdXJlIGJ5IHRoZSBVLlMuIEdvdmVybm1lbnQgYW5kL29yIERPRCBhZ2VuY2llcyBpcwotc3ViamVjdCB0byB0aGUgZnVsbCBleHRlbnQgb2YgcmVzdHJpY3Rpb25zIGluIGFsbCBhcHBsaWNhYmxlIHJlZ3VsYXRpb25zLAotaW5jbHVkaW5nIHRob3NlIGZvdW5kIGF0IEZBUjUyLjIyNyBhbmQgREZBUlMyNTIuMjI3IGV0IHNlcS4gYW5kIGFueSBzdWNjZXNzb3IKLXJlZ3VsYXRpb25zIHRoZXJlb2YuIFVzZSBvZiB0aGlzIG1hdGVyaWFsIGJ5IHRoZSBVLlMuIEdvdmVybm1lbnQgYW5kL29yIERPRAotYWdlbmNpZXMgaXMgYWNrbm93bGVkZ21lbnQgb2YgdGhlIHByb3ByaWV0YXJ5IHJpZ2h0cyBvZiBhbnkgY29weXJpZ2h0IGhvbGRlcnMKLWFuZCBjb250cmlidXRvcnMsIGluY2x1ZGluZyB0aG9zZSBvZiBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuLCBhcyB3ZWxsIGFzCi10aGUgcHJvdmlzaW9ucyBvZiBGQVI1Mi4yMjctMTQgdGhyb3VnaCAyMyByZWdhcmRpbmcgcHJpdmF0ZWx5IGRldmVsb3BlZCBhbmQvb3IKLWNvbW1lcmNpYWwgY29tcHV0ZXIgc29mdHdhcmUuCi0KLVRoaXMgbGljZW5zZSBmb3JtcyB0aGUgZW50aXJlIGFncmVlbWVudCByZWdhcmRpbmcgdGhlIHN1YmplY3QgbWF0dGVyIGhlcmVvZiBhbmQKLXN1cGVyc2VkZXMgYWxsIHByb3Bvc2FscyBhbmQgcHJpb3IgZGlzY3Vzc2lvbnMgYW5kIHdyaXRpbmdzIGJldHdlZW4gdGhlIHBhcnRpZXMKLXdpdGggcmVzcGVjdCB0aGVyZXRvLiBUaGlzIGxpY2Vuc2UgZG9lcyBub3QgYWZmZWN0IGFueSBvd25lcnNoaXAsIHJpZ2h0cywgdGl0bGUsCi1vciBpbnRlcmVzdCBpbiwgb3IgcmVsYXRpbmcgdG8sIHRoaXMgbWF0ZXJpYWwuIE5vIHRlcm1zIG9mIHRoaXMgbGljZW5zZSBjYW4gYmUKLW1vZGlmaWVkIG9yIHdhaXZlZCwgYW5kIG5vIGJyZWFjaCBvZiB0aGlzIGxpY2Vuc2UgY2FuIGJlIGV4Y3VzZWQsIHVubGVzcyBkb25lCi1zbyBpbiBhIHdyaXRpbmcgc2lnbmVkIGJ5IGFsbCBhZmZlY3RlZCBwYXJ0aWVzLiBFYWNoIHRlcm0gb2YgdGhpcyBsaWNlbnNlIGlzCi1zZXBhcmF0ZWx5IGVuZm9yY2VhYmxlLiBJZiBhbnkgdGVybSBvZiB0aGlzIGxpY2Vuc2UgaXMgZGV0ZXJtaW5lZCB0byBiZSBvcgotYmVjb21lcyB1bmVuZm9yY2VhYmxlIG9yIGlsbGVnYWwsIHN1Y2ggdGVybSBzaGFsbCBiZSByZWZvcm1lZCB0byB0aGUgbWluaW11bQotZXh0ZW50IG5lY2Vzc2FyeSBpbiBvcmRlciBmb3IgdGhpcyBsaWNlbnNlIHRvIHJlbWFpbiBpbiBlZmZlY3QgaW4gYWNjb3JkYW5jZQotCi13aXRoIGl0cyB0ZXJtcyBhcyBtb2RpZmllZCBieSBzdWNoIHJlZm9ybWF0aW9uLiBUaGlzIGxpY2Vuc2Ugc2hhbGwgYmUgZ292ZXJuZWQKLWJ5IGFuZCBjb25zdHJ1ZWQgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBsYXdzIG9mIHRoZSBTdGF0ZSBvZiBUZXhhcyB3aXRob3V0Ci1yZWdhcmQgdG8gcnVsZXMgb24gY29uZmxpY3RzIG9mIGxhdyBvZiBhbnkgc3RhdGUgb3IganVyaXNkaWN0aW9uIG9yIHRoZSBVbml0ZWQKLU5hdGlvbnMgQ29udmVudGlvbiBvbiB0aGUgSW50ZXJuYXRpb25hbCBTYWxlIG9mIEdvb2RzLiBBbGwgZGlzcHV0ZXMgYXJpc2luZyBvdXQKLW9mIHRoaXMgbGljZW5zZSBzaGFsbCBiZSBzdWJqZWN0IHRvIHRoZSBqdXJpc2RpY3Rpb24gb2YgdGhlIGZlZGVyYWwgYW5kIHN0YXRlCi1jb3VydHMgaW4gQXVzdGluLCBUZXhhcywgYW5kIGFsbCBkZWZlbnNlcyBhcmUgaGVyZWJ5IHdhaXZlZCBjb25jZXJuaW5nIHBlcnNvbmFsCi1qdXJpc2RpY3Rpb24gYW5kIHZlbnVlIG9mIHRoZXNlIGNvdXJ0cy4KK0NvcHlyaWdodCCpMjAxMiBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorDQorUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0Og0KKw0KKyogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKyogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLg0KKw0KK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRg0KK01FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLA0KK1NQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikNCitIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsDQorRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAKQEAgLTI5MSw5ICsyMTYsOSBAQAogCiAvKiEgXGJyaWVmIFNldHMgdGhlIGNsX3RocmVhZHRyYWNlX2FtZCBvYmplY3QgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIuCiAgKgotICogIFxwYXJhbSB0aHJlYWRfdHJhY2UgdGhlIGNsX3RocmVhZHRyYWNlX2FtZCBvYmplY3QgdG8gc2V0IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIAorICogIFxwYXJhbSB0aHJlYWRfdHJhY2UgdGhlIGNsX3RocmVhZHRyYWNlX2FtZCBvYmplY3QgdG8gc2V0IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyCiAgKgotICogIFxwYXJhbSBjb25maWdfcGFyYW0gdGhlIGNsX3RocmVhZF90cmFjZV9wYXJhbSAKKyAqICBccGFyYW0gY29uZmlnX3BhcmFtIHRoZSBjbF90aHJlYWRfdHJhY2VfcGFyYW0KICAqCiAgKiAgXHBhcmFtIHBhcmFtX3ZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gY29uZmlnUGFyYW0KICAqCkBAIC0zMTAsNyArMjM1LDcgQEAKIGV4dGVybiBDTF9BUElfRU5UUlkgY2xfaW50IENMX0FQSV9DQUxMCiBjbFNldFRocmVhZFRyYWNlUGFyYW1BTUQoY2xfdGhyZWFkdHJhY2VfYW1kICAgIC8qdGhyZWFkX3RyYWNlKi8gLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNsX3RocmVhZF90cmFjZV9wYXJhbSAvKmNvbmZpZ19wYXJhbSovICwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjbF91aW50ICAgICAgICAgICAgICAgIC8qcGFyYW1fdmFsdWUqLyAKKyAgICAgICAgICAgICAgICAgICAgICAgICBjbF91aW50ICAgICAgICAgICAgICAgIC8qcGFyYW1fdmFsdWUqLwogKUNMX0FQSV9TVUZGSVhfX1ZFUlNJT05fMV8wOwogCiAvKiBcYnJpZWYgRW5xdWV1ZXMgdGhlIGJpbmRpbmcgY29tbWFuZCB0byBiaW5kIGNsX3RocmVhZHRyYWNlX2FtZCB0byBjbF9tZW0gb2JqZWN0IGZvciB0cmFjZSByZWNvcmRpbmcuLgo=