Last Updated: June 15, 2026
MS4gSW50cm9kdWN0aW9uCldlbGNvbWUgdG8gV2Vkcm96LgpUaGVzZSBDdXN0b21lciBUZXJtcyBvZiBVc2UgKCJUZXJtcyIpIGdvdmVybiB5b3VyIGFjY2VzcyB0byBhbmQgdXNlIG9mIHRoZSBXZWRyb3ogd2Vic2l0ZSwgbW9iaWxlIGFwcGxpY2F0aW9ucywgYW5kIHJlbGF0ZWQgc2VydmljZXMgKGNvbGxlY3RpdmVseSwgdGhlICJQbGF0Zm9ybSIpIGFzIGEgY3VzdG9tZXIsIHZpc2l0b3IsIGV2ZW50IG9yZ2FuaXplciwgd2VkZGluZyBwbGFubmVyLCBmYW1pbHkgbWVtYmVyLCBvciBvdGhlciB1c2VyIHNlZWtpbmcgd2VkZGluZyBvciBldmVudC1yZWxhdGVkIHZlbmRvcnMuCkJ5IGNyZWF0aW5nIGFuIGFjY291bnQsIGFjY2Vzc2luZyB0aGUgUGxhdGZvcm0sIG9yIHVzaW5nIGFueSBXZWRyb3ogc2VydmljZXMsIHlvdSBhZ3JlZSB0byBiZSBib3VuZCBieSB0aGVzZSBUZXJtcy4KSWYgeW91IGRvIG5vdCBhZ3JlZSB0byB0aGVzZSBUZXJtcywgeW91IHNob3VsZCBub3QgYWNjZXNzIG9yIHVzZSB0aGUgUGxhdGZvcm0uCgoyLiBBYm91dCBXZWRyb3oKV2Vkcm96IGlzIGEgdGVjaG5vbG9neS1iYXNlZCB2ZW5kb3IgZGlzY292ZXJ5IGFuZCB3ZWRkaW5nIHBsYW5uaW5nIG1hcmtldHBsYWNlIHRoYXQgZW5hYmxlcyB1c2VycyB0bzoK4oCiIFNlYXJjaCB2ZW5kb3JzIGJ5IGNpdHkgYW5kIGV2ZW50IGRhdGU7CuKAoiBWaWV3IHZlbmRvciBwcm9maWxlcywgcG9ydGZvbGlvcywgcGFja2FnZXMsIHJldmlld3MsIGFuZCBhdmFpbGFiaWxpdHk7CuKAoiBDb250YWN0IHZlbmRvcnMgZGlyZWN0bHk7CuKAoiBTYXZlIHZlbmRvcnMgdG8gYSBzaG9ydGxpc3Q7CuKAoiBNYW5hZ2Ugd2VkZGluZyBwbGFubmluZyBhY3Rpdml0aWVzOwrigKIgQ3JlYXRlIGd1ZXN0IGxpc3RzIGFuZCBSU1ZQIGNhbXBhaWduczsK4oCiIFB1Ymxpc2ggd2VkZGluZyBzdG9yaWVzIGFuZCByZWxhdGVkIGNvbnRlbnQ7IGFuZArigKIgQWNjZXNzIG90aGVyIHBsYW5uaW5nIHRvb2xzIG1hZGUgYXZhaWxhYmxlIGJ5IFdlZHJvei4KV2Vkcm96IGlzIG5vdCBhIHdlZGRpbmcgcGxhbm5lciwgZXZlbnQgb3JnYW5pemVyLCB2ZW51ZSBvcGVyYXRvciwgY2F0ZXJlciwgcGhvdG9ncmFwaGVyLCBkZWNvcmF0b3IsIG1ha2V1cCBhcnRpc3QsIGVudGVydGFpbmVyLCB0cmFuc3BvcnRhdGlvbiBwcm92aWRlciwgb3Igc2VydmljZSBwcm92aWRlciBvZiBhbnkga2luZC4KV2Vkcm96IG1lcmVseSBmYWNpbGl0YXRlcyBjb25uZWN0aW9ucyBiZXR3ZWVuIHVzZXJzIGFuZCBpbmRlcGVuZGVudCB2ZW5kb3JzLgoKMy4gRWxpZ2liaWxpdHkKWW91IG1heSB1c2UgdGhlIFBsYXRmb3JtIG9ubHkgaWY6CuKAoiBZb3UgYXJlIGF0IGxlYXN0IDE4IHllYXJzIG9mIGFnZTsK4oCiIFlvdSBoYXZlIHRoZSBsZWdhbCBjYXBhY2l0eSB0byBlbnRlciBpbnRvIGJpbmRpbmcgYWdyZWVtZW50czsK4oCiIFlvdSBwcm92aWRlIGFjY3VyYXRlIGFuZCBjb21wbGV0ZSBpbmZvcm1hdGlvbjsK4oCiIFlvdXIgdXNlIG9mIHRoZSBQbGF0Zm9ybSBjb21wbGllcyB3aXRoIGFwcGxpY2FibGUgbGF3cy4KV2Vkcm96IHJlc2VydmVzIHRoZSByaWdodCB0byBzdXNwZW5kIG9yIHRlcm1pbmF0ZSBhY2Nlc3MgaWYgZWxpZ2liaWxpdHkgcmVxdWlyZW1lbnRzIGFyZSBub3QgbWV0LgoKNC4gQWNjb3VudCBSZWdpc3RyYXRpb24KQ2VydGFpbiBmZWF0dXJlcyByZXF1aXJlIGFjY291bnQgY3JlYXRpb24uCllvdSBhZ3JlZSB0bzoK4oCiIFByb3ZpZGUgYWNjdXJhdGUgaW5mb3JtYXRpb247CuKAoiBLZWVwIGFjY291bnQgaW5mb3JtYXRpb24gdXBkYXRlZDsK4oCiIE1haW50YWluIHRoZSBjb25maWRlbnRpYWxpdHkgb2YgbG9naW4gY3JlZGVudGlhbHM7CuKAoiBCZSByZXNwb25zaWJsZSBmb3IgYWN0aXZpdGllcyBvY2N1cnJpbmcgdGhyb3VnaCB5b3VyIGFjY291bnQ7CuKAoiBOb3RpZnkgV2Vkcm96IGltbWVkaWF0ZWx5IG9mIHVuYXV0aG9yaXplZCBhY2Nlc3MuCldlZHJveiBtYXkgcmVmdXNlIHJlZ2lzdHJhdGlvbiByZXF1ZXN0cyBvciBzdXNwZW5kIGFjY291bnRzIGF0IGl0cyBkaXNjcmV0aW9uLgoKNS4gQ3VzdG9tZXIgUmVzcG9uc2liaWxpdGllcwpZb3UgYWdyZWUgdG8gdXNlIHRoZSBQbGF0Zm9ybSByZXNwb25zaWJseSBhbmQgbGF3ZnVsbHkuCllvdSBhcmUgc29sZWx5IHJlc3BvbnNpYmxlIGZvcjoK4oCiIEV2YWx1YXRpbmcgdmVuZG9yczsK4oCiIENvbXBhcmluZyBzZXJ2aWNlcyBhbmQgcHJpY2luZzsK4oCiIE5lZ290aWF0aW5nIHNlcnZpY2UgdGVybXM7CuKAoiBWZXJpZnlpbmcgdmVuZG9yIGNyZWRlbnRpYWxzOwrigKIgUmV2aWV3aW5nIHZlbmRvciBjb250cmFjdHM7CuKAoiBNYWtpbmcgYm9va2luZyBkZWNpc2lvbnM7CuKAoiBNYW5hZ2luZyBldmVudCBhcnJhbmdlbWVudHMuCllvdSBhY2tub3dsZWRnZSB0aGF0IHZlbmRvciBzZWxlY3Rpb24gaXMgeW91ciBpbmRlcGVuZGVudCBkZWNpc2lvbi4KCjYuIFZlbmRvciBTZWFyY2ggYW5kIERpc2NvdmVyeSBTZXJ2aWNlcwpXZWRyb3ogcHJvdmlkZXMgdG9vbHMgdGhhdCBhbGxvdyBjdXN0b21lcnMgdG8gc2VhcmNoIGFuZCBkaXNjb3ZlciB2ZW5kb3JzLgpTZWFyY2ggcmVzdWx0cyBtYXkgYmUgYmFzZWQgb24gZmFjdG9ycyBpbmNsdWRpbmc6CuKAoiBBdmFpbGFiaWxpdHkgZGF0ZXM7CuKAoiBDaXR5IHNlbGVjdGlvbjsK4oCiIENhdGVnb3J5IHNlbGVjdGlvbjsK4oCiIFVzZXIgcHJlZmVyZW5jZXM7CuKAoiBSZXZpZXdzIGFuZCByYXRpbmdzOwrigKIgVmVuZG9yIHN1YnNjcmlwdGlvbnM7CuKAoiBGZWF0dXJlZCBwbGFjZW1lbnRzOwrigKIgUHJvbW90aW9uYWwgdmlzaWJpbGl0eS4KV2Vkcm96IGRvZXMgbm90IGd1YXJhbnRlZSB0aGF0IHNlYXJjaCByZXN1bHRzIGFyZSBjb21wbGV0ZSwgZXhoYXVzdGl2ZSwgb3IgcmFua2VkIGFjY29yZGluZyB0byBxdWFsaXR5LgoKNy4gVmVuZG9yIEluZm9ybWF0aW9uIERpc2NsYWltZXIKVmVuZG9yIHByb2ZpbGVzIG1heSBpbmNsdWRlOgrigKIgQnVzaW5lc3MgZGVzY3JpcHRpb25zOwrigKIgUGhvdG9ncmFwaHM7CuKAoiBWaWRlb3M7CuKAoiBTZXJ2aWNlIG9mZmVyaW5nczsK4oCiIFN0YXJ0aW5nIHByaWNlczsK4oCiIFBhY2thZ2VzOwrigKIgQXZhaWxhYmlsaXR5IGluZm9ybWF0aW9uOwrigKIgUmV2aWV3cyBhbmQgcmF0aW5ncy4KU3VjaCBpbmZvcm1hdGlvbiBpcyBzdXBwbGllZCBieSB2ZW5kb3JzLgpXZWRyb3ogZG9lcyBub3QgaW5kZXBlbmRlbnRseSB2ZXJpZnkgYWxsIHZlbmRvci1wcm92aWRlZCBpbmZvcm1hdGlvbiBhbmQgZG9lcyBub3QgZ3VhcmFudGVlIGl0cyBhY2N1cmFjeSwgY29tcGxldGVuZXNzLCByZWxpYWJpbGl0eSwgbGVnYWxpdHksIG9yIHN1aXRhYmlsaXR5LgpDdXN0b21lcnMgc2hvdWxkIGNvbmR1Y3QgdGhlaXIgb3duIGR1ZSBkaWxpZ2VuY2UgYmVmb3JlIGVudGVyaW5nIGludG8gYW55IGFncmVlbWVudC4KCjguIFZlbmRvciBBdmFpbGFiaWxpdHkgSW5mb3JtYXRpb24KVGhlIFBsYXRmb3JtIG1heSBkaXNwbGF5IHZlbmRvciBhdmFpbGFiaWxpdHkgYmFzZWQgb24gaW5mb3JtYXRpb24gcHJvdmlkZWQgYnkgdmVuZG9ycy4KV2hpbGUgV2Vkcm96IHN0cml2ZXMgdG8gcHJvdmlkZSBhY2N1cmF0ZSBhdmFpbGFiaWxpdHkgaW5mb3JtYXRpb24sIGl0IGNhbm5vdCBndWFyYW50ZWUgdGhhdDoK4oCiIEF2YWlsYWJpbGl0eSBjYWxlbmRhcnMgYXJlIHVwZGF0ZWQ7CuKAoiBEYXRlcyByZW1haW4gYXZhaWxhYmxlOwrigKIgVmVuZG9ycyB3aWxsIGFjY2VwdCBib29raW5nczsK4oCiIEF2YWlsYWJpbGl0eSBpbmZvcm1hdGlvbiBpcyBlcnJvci1mcmVlLgpGaW5hbCBib29raW5nIGNvbmZpcm1hdGlvbiBtdXN0IGFsd2F5cyBiZSBvYnRhaW5lZCBkaXJlY3RseSBmcm9tIHRoZSB2ZW5kb3IuCgo5LiBWZW5kb3IgQ29tbXVuaWNhdGlvbnMKV2Vkcm96IG1heSBwcm92aWRlIG1lc3NhZ2luZywgZW5xdWlyeSBmb3JtcywgY29udGFjdCBzaGFyaW5nLCBjaGF0IGZ1bmN0aW9uYWxpdHksIG9yIHNpbWlsYXIgY29tbXVuaWNhdGlvbiB0b29scy4KWW91IGFncmVlIHRoYXQgY29tbXVuaWNhdGlvbnMgd2l0aCB2ZW5kb3JzIHdpbGw6CuKAoiBCZSByZXNwZWN0ZnVsOwrigKIgQmUgbGF3ZnVsOwrigKIgTm90IGNvbnRhaW4gYWJ1c2l2ZSBsYW5ndWFnZTsK4oCiIE5vdCBjb250YWluIHRocmVhdHMgb3IgaGFyYXNzbWVudDsK4oCiIE5vdCBjb250YWluIGZyYXVkdWxlbnQgaW5mb3JtYXRpb247CuKAoiBOb3QgY29udGFpbiBzcGFtIG9yIHVuc29saWNpdGVkIHByb21vdGlvbnMuCldlZHJveiBtYXkgbW9uaXRvciwgcmV2aWV3LCByZXRhaW4sIG9yIHJlbW92ZSBjb21tdW5pY2F0aW9ucyB3aGVyZSBwZXJtaXR0ZWQgYnkgbGF3LgoKMTAuIEJvb2tpbmcgUmVsYXRpb25zaGlwcwpBbnkgYm9va2luZywgZW5nYWdlbWVudCwgcmVzZXJ2YXRpb24sIHF1b3RhdGlvbiwgcHJvcG9zYWwsIG9yIGFncmVlbWVudCBlbnRlcmVkIGludG8gYmV0d2VlbiBhIGN1c3RvbWVyIGFuZCB2ZW5kb3IgaXMgc29sZWx5IGJldHdlZW4gdGhvc2UgcGFydGllcy4KV2Vkcm96IGlzIG5vdCBhIHBhcnR5IHRvIHN1Y2ggYWdyZWVtZW50cy4KV2Vkcm96IGRvZXMgbm90OgrigKIgR3VhcmFudGVlIHBlcmZvcm1hbmNlOwrigKIgR3VhcmFudGVlIHNlcnZpY2UgcXVhbGl0eTsK4oCiIEd1YXJhbnRlZSBwcmljaW5nOwrigKIgR3VhcmFudGVlIHZlbmRvciBhdmFpbGFiaWxpdHk7CuKAoiBHdWFyYW50ZWUgZXZlbnQgb3V0Y29tZXMuCkFsbCBjb250cmFjdHVhbCBvYmxpZ2F0aW9ucyBleGlzdCBzb2xlbHkgYmV0d2VlbiBjdXN0b21lciBhbmQgdmVuZG9yLgoKMTEuIFBheW1lbnRzIHRvIFZlbmRvcnMKUGF5bWVudHMgbWFkZSB0byB2ZW5kb3JzIGFyZSBzZXBhcmF0ZSBmcm9tIFdlZHJveiB1bmxlc3MgZXhwbGljaXRseSBzdGF0ZWQgb3RoZXJ3aXNlLgpDdXN0b21lcnMgYXJlIHJlc3BvbnNpYmxlIGZvcjoK4oCiIFJldmlld2luZyBwYXltZW50IHRlcm1zOwrigKIgVmVyaWZ5aW5nIGludm9pY2VzOwrigKIgVW5kZXJzdGFuZGluZyBjYW5jZWxsYXRpb24gcG9saWNpZXM7CuKAoiBNYWludGFpbmluZyByZWNvcmRzIG9mIHRyYW5zYWN0aW9ucy4KV2Vkcm96IGlzIG5vdCByZXNwb25zaWJsZSBmb3IgZGlzcHV0ZXMgcmVsYXRpbmcgdG8gdmVuZG9yIHByaWNpbmcsIGRlcG9zaXRzLCBiYWxhbmNlcywgcmVmdW5kcywgb3IgY2FuY2VsbGF0aW9ucy4KCjEyLiBHdWVzdCBMaXN0IE1hbmFnZW1lbnQgVG9vbHMKV2Vkcm96IG1heSBwcm92aWRlIGd1ZXN0IGxpc3QgbWFuYWdlbWVudCBmZWF0dXJlcy4KVXNlcnMgbWF5IHVwbG9hZCBndWVzdCBpbmZvcm1hdGlvbiBpbmNsdWRpbmc6CuKAoiBOYW1lczsK4oCiIE1vYmlsZSBudW1iZXJzOwrigKIgQXR0ZW5kYW5jZSBkZXRhaWxzOwrigKIgUlNWUCByZXNwb25zZXM7CuKAoiBSZWxhdGVkIGV2ZW50IGluZm9ybWF0aW9uLgpZb3UgcmVwcmVzZW50IGFuZCB3YXJyYW50IHRoYXQgeW91IGhhdmUgdGhlIG5lY2Vzc2FyeSBhdXRob3JpdHkgYW5kIHBlcm1pc3Npb25zIHRvIHByb3ZpZGUgc3VjaCBpbmZvcm1hdGlvbi4KWW91IGFyZSByZXNwb25zaWJsZSBmb3IgZW5zdXJpbmcgdGhhdCB1cGxvYWRlZCBpbmZvcm1hdGlvbiBpcyBsYXdmdWwgYW5kIGFjY3VyYXRlLgoKMTMuIFJTVlAgYW5kIENvbW11bmljYXRpb24gRmVhdHVyZXMKV2Vkcm96IG1heSBnZW5lcmF0ZSBSU1ZQIGxpbmtzLCBtZXNzYWdlcywgcmVtaW5kZXJzLCBvciBjb21tdW5pY2F0aW9uIHRvb2xzLgpXZWRyb3ogZG9lcyBub3QgZ3VhcmFudGVlOgrigKIgTWVzc2FnZSBkZWxpdmVyeTsK4oCiIFdoYXRzQXBwIGRlbGl2ZXJ5OwrigKIgU01TIGRlbGl2ZXJ5OwrigKIgRW1haWwgZGVsaXZlcnk7CuKAoiBHdWVzdCByZXNwb25zZXM7CuKAoiBSU1ZQIGFjY3VyYWN5LgpVc2VycyByZW1haW4gcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIGd1ZXN0IGNvbW11bmljYXRpb25zLgoKMTQuIFdlZGRpbmcgU3RvcmllcyBhbmQgVXNlciBDb250ZW50ClRoZSBQbGF0Zm9ybSBtYXkgYWxsb3cgdXNlcnMgdG8gdXBsb2FkOgrigKIgV2VkZGluZyBzdG9yaWVzOwrigKIgUmV2aWV3czsK4oCiIFBob3RvZ3JhcGhzOwrigKIgVmlkZW9zOwrigKIgVGVzdGltb25pYWxzOwrigKIgQ29tbWVudHM7CuKAoiBPdGhlciBjb250ZW50LgpZb3UgcmV0YWluIG93bmVyc2hpcCBvZiB5b3VyIGNvbnRlbnQuCkhvd2V2ZXIsIGJ5IHVwbG9hZGluZyBjb250ZW50LCB5b3UgZ3JhbnQgV2Vkcm96IGEgd29ybGR3aWRlLCBub24tZXhjbHVzaXZlLCByb3lhbHR5LWZyZWUgbGljZW5zZSB0bzoK4oCiIEhvc3Q7CuKAoiBTdG9yZTsK4oCiIFJlcHJvZHVjZTsK4oCiIERpc3BsYXk7CuKAoiBQdWJsaXNoOwrigKIgUHJvbW90ZTsK4oCiIERpc3RyaWJ1dGU7CuKAoiBNYXJrZXQgc3VjaCBjb250ZW50IGluIGNvbm5lY3Rpb24gd2l0aCB0aGUgUGxhdGZvcm0uCgoxNS4gQ29udGVudCBTdGFuZGFyZHMKVXNlcnMgbWF5IG5vdCB1cGxvYWQgY29udGVudCB0aGF0OgrigKIgSXMgZmFsc2Ugb3IgbWlzbGVhZGluZzsK4oCiIElzIGRlZmFtYXRvcnk7CuKAoiBJcyBvYnNjZW5lOwrigKIgSXMgYWJ1c2l2ZTsK4oCiIElzIHRocmVhdGVuaW5nOwrigKIgVmlvbGF0ZXMgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0czsK4oCiIFZpb2xhdGVzIHByaXZhY3kgcmlnaHRzOwrigKIgQ29udGFpbnMgdW5sYXdmdWwgbWF0ZXJpYWw7CuKAoiBQcm9tb3RlcyBpbGxlZ2FsIGFjdGl2aXRpZXMuCldlZHJveiBtYXkgcmVtb3ZlIGNvbnRlbnQgd2l0aG91dCBub3RpY2UuCgoxNi4gUmV2aWV3cyBhbmQgUmF0aW5ncwpDdXN0b21lcnMgbWF5IHN1Ym1pdCByZXZpZXdzIGFuZCByYXRpbmdzIHJlZ2FyZGluZyB2ZW5kb3JzLgpSZXZpZXdzIG11c3Q6CuKAoiBSZWZsZWN0IGdlbnVpbmUgZXhwZXJpZW5jZXM7CuKAoiBCZSB0cnV0aGZ1bDsK4oCiIEJlIHJlbGV2YW50OwrigKIgQmUgYmFzZWQgb24gYWN0dWFsIGludGVyYWN0aW9ucy4KQ3VzdG9tZXJzIG1heSBub3Q6CuKAoiBQb3N0IGZha2UgcmV2aWV3czsK4oCiIFBvc3QgcmV2aWV3cyBvbiBiZWhhbGYgb2Ygb3RoZXJzOwrigKIgQWNjZXB0IGNvbXBlbnNhdGlvbiBmb3IgcmV2aWV3czsK4oCiIE1hbmlwdWxhdGUgcmF0aW5nczsK4oCiIEhhcmFzcyB2ZW5kb3JzIHRocm91Z2ggcmV2aWV3cy4KUmV2aWV3IG1vZGVyYXRpb24gaXMgZ292ZXJuZWQgYnkgdGhlIFdlZHJveiBSZXZpZXcgJiBSYXRpbmcgUG9saWN5LgoKMTcuIFByb2hpYml0ZWQgQWN0aXZpdGllcwpVc2VycyBtYXkgbm90OgrigKIgQ3JlYXRlIGZha2UgYWNjb3VudHM7CuKAoiBJbXBlcnNvbmF0ZSBhbm90aGVyIHBlcnNvbjsK4oCiIFN1Ym1pdCBmcmF1ZHVsZW50IGVucXVpcmllczsK4oCiIEF0dGVtcHQgdW5hdXRob3JpemVkIGFjY2VzczsK4oCiIEludGVyZmVyZSB3aXRoIFBsYXRmb3JtIG9wZXJhdGlvbnM7CuKAoiBVc2UgYXV0b21hdGVkIGJvdHM7CuKAoiBTY3JhcGUgUGxhdGZvcm0gZGF0YTsK4oCiIEhhcnZlc3QgdXNlciBpbmZvcm1hdGlvbjsK4oCiIENpcmN1bXZlbnQgc2VjdXJpdHkgbWVhc3VyZXM7CuKAoiBNYW5pcHVsYXRlIHJldmlld3Mgb3IgcmF0aW5nczsK4oCiIEVuZ2FnZSBpbiBmcmF1ZCBvciBkZWNlcHRpdmUgY29uZHVjdC4KVmlvbGF0aW9uIG1heSByZXN1bHQgaW4gaW1tZWRpYXRlIHN1c3BlbnNpb24uCgoxOC4gSW50ZWxsZWN0dWFsIFByb3BlcnR5CkFsbCBQbGF0Zm9ybSBjb250ZW50IGV4Y2x1ZGluZyB1c2VyLWdlbmVyYXRlZCBjb250ZW50IGlzIG93bmVkIGJ5IG9yIGxpY2Vuc2VkIHRvIFdlZHJveiwgaW5jbHVkaW5nOgrigKIgU29mdHdhcmU7CuKAoiBTb3VyY2UgY29kZTsK4oCiIEJyYW5kaW5nOwrigKIgTG9nb3M7CuKAoiBEZXNpZ25zOwrigKIgRGF0YWJhc2VzOwrigKIgR3JhcGhpY3M7CuKAoiBGZWF0dXJlcy4KTm8gcmlnaHRzIGFyZSB0cmFuc2ZlcnJlZCBleGNlcHQgdGhvc2UgZXhwcmVzc2x5IGdyYW50ZWQgdW5kZXIgdGhlc2UgVGVybXMuCgoxOS4gVGhpcmQtUGFydHkgU2VydmljZXMKVGhlIFBsYXRmb3JtIG1heSBpbnRlZ3JhdGUgd2l0aCB0aGlyZC1wYXJ0eSBzZXJ2aWNlcyBpbmNsdWRpbmc6CuKAoiBQYXltZW50IHByb3ZpZGVyczsK4oCiIE1lc3NhZ2luZyBwcm92aWRlcnM7CuKAoiBTb2NpYWwgbWVkaWEgcGxhdGZvcm1zOwrigKIgQW5hbHl0aWNzIHByb3ZpZGVyczsK4oCiIE1hcHBpbmcgc2VydmljZXMuCldlZHJveiBpcyBub3QgcmVzcG9uc2libGUgZm9yIHRoaXJkLXBhcnR5IHNlcnZpY2VzIG9yIHRoZWlyIGFjdGlvbnMuCgoyMC4gQWNjb3VudCBTdXNwZW5zaW9uIGFuZCBUZXJtaW5hdGlvbgpXZWRyb3ogbWF5IHN1c3BlbmQsIHJlc3RyaWN0LCBvciB0ZXJtaW5hdGUgYWNjb3VudHMgdGhhdDoK4oCiIFZpb2xhdGUgdGhlc2UgVGVybXM7CuKAoiBFbmdhZ2UgaW4gZnJhdWQ7CuKAoiBBYnVzZSB2ZW5kb3JzOwrigKIgQWJ1c2UgUGxhdGZvcm0gZmVhdHVyZXM7CuKAoiBDcmVhdGUgbGVnYWwgb3Igb3BlcmF0aW9uYWwgcmlza3MuClRlcm1pbmF0aW9uIG1heSBvY2N1ciB3aXRob3V0IHByaW9yIG5vdGljZSB3aGVyZSBuZWNlc3NhcnkuCgoyMS4gUGxhdGZvcm0gQXZhaWxhYmlsaXR5CldlZHJveiBkb2VzIG5vdCBndWFyYW50ZWUgdW5pbnRlcnJ1cHRlZCBhY2Nlc3MgdG8gdGhlIFBsYXRmb3JtLgpUaGUgUGxhdGZvcm0gbWF5IGV4cGVyaWVuY2U6CuKAoiBNYWludGVuYW5jZTsK4oCiIFRlY2huaWNhbCBpc3N1ZXM7CuKAoiBEb3dudGltZTsK4oCiIERlbGF5czsK4oCiIFNlcnZpY2UgaW50ZXJydXB0aW9ucy4KV2Vkcm96IHNoYWxsIG5vdCBiZSBsaWFibGUgZm9yIHJlc3VsdGluZyBsb3NzZXMuCgoyMi4gRGlzY2xhaW1lcnMKVGhlIFBsYXRmb3JtIGlzIHByb3ZpZGVkIG9uIGFuICJhcyBpcyIgYW5kICJhcyBhdmFpbGFibGUiIGJhc2lzLgpUbyB0aGUgZnVsbGVzdCBleHRlbnQgcGVybWl0dGVkIGJ5IGxhdywgV2Vkcm96IGRpc2NsYWltcyBhbGwgd2FycmFudGllcyByZWxhdGluZyB0bzoK4oCiIFZlbmRvciBxdWFsaXR5OwrigKIgVmVuZG9yIHBlcmZvcm1hbmNlOwrigKIgVmVuZG9yIHJlbGlhYmlsaXR5OwrigKIgVmVuZG9yIGF2YWlsYWJpbGl0eTsK4oCiIEJvb2tpbmcgb3V0Y29tZXM7CuKAoiBFdmVudCBzdWNjZXNzOwrigKIgU2VhcmNoIHJlc3VsdHM7CuKAoiBQbGF0Zm9ybSBhdmFpbGFiaWxpdHkuCkN1c3RvbWVycyB1c2UgdGhlIFBsYXRmb3JtIGF0IHRoZWlyIG93biByaXNrLgoKMjMuIExpbWl0YXRpb24gb2YgTGlhYmlsaXR5ClRvIHRoZSBtYXhpbXVtIGV4dGVudCBwZXJtaXR0ZWQgYnkgbGF3LCBXZWRyb3ogc2hhbGwgbm90IGJlIGxpYWJsZSBmb3I6CuKAoiBWZW5kb3IgbWlzY29uZHVjdDsK4oCiIEJvb2tpbmcgZGlzcHV0ZXM7CuKAoiBTZXJ2aWNlIGZhaWx1cmVzOwrigKIgRXZlbnQgZGlzcnVwdGlvbnM7CuKAoiBDYW5jZWxsYXRpb24gbG9zc2VzOwrigKIgTG9zdCBwcm9maXRzOwrigKIgTG9zcyBvZiBkYXRhOwrigKIgSW5kaXJlY3QgZGFtYWdlczsK4oCiIENvbnNlcXVlbnRpYWwgZGFtYWdlczsK4oCiIEVtb3Rpb25hbCBkaXN0cmVzcyBhcmlzaW5nIGZyb20gZXZlbnQtcmVsYXRlZCBkaXNwdXRlcy4KQW55IGxpYWJpbGl0eSBvZiBXZWRyb3ogc2hhbGwgYmUgbGltaXRlZCB0byB0aGUgZXh0ZW50IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3LgoKMjQuIEluZGVtbmlmaWNhdGlvbgpZb3UgYWdyZWUgdG8gaW5kZW1uaWZ5IGFuZCBob2xkIGhhcm1sZXNzIFdlZHJveiwgaXRzIGRpcmVjdG9ycywgZW1wbG95ZWVzLCBhZmZpbGlhdGVzLCBhbmQgcGFydG5lcnMgZnJvbSBhbnkgY2xhaW1zLCBsb3NzZXMsIGxpYWJpbGl0aWVzLCBkYW1hZ2VzLCBleHBlbnNlcywgb3IgY29zdHMgYXJpc2luZyBmcm9tOgrigKIgWW91ciB1c2Ugb2YgdGhlIFBsYXRmb3JtOwrigKIgWW91ciBjb250ZW50OwrigKIgWW91ciB2aW9sYXRpb24gb2YgdGhlc2UgVGVybXM7CuKAoiBZb3VyIGludGVyYWN0aW9ucyB3aXRoIHZlbmRvcnM7CuKAoiBZb3VyIHZpb2xhdGlvbiBvZiBhcHBsaWNhYmxlIGxhd3MuCgoyNS4gQ2hhbmdlcyB0byB0aGUgVGVybXMKV2Vkcm96IG1heSBtb2RpZnkgdGhlc2UgVGVybXMgZnJvbSB0aW1lIHRvIHRpbWUuClVwZGF0ZWQgdmVyc2lvbnMgd2lsbCBiZWNvbWUgZWZmZWN0aXZlIHVwb24gcHVibGljYXRpb24gdW5sZXNzIG90aGVyd2lzZSBzdGF0ZWQuCkNvbnRpbnVlZCB1c2Ugb2YgdGhlIFBsYXRmb3JtIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgcmV2aXNlZCBUZXJtcy4KCjI2LiBHb3Zlcm5pbmcgTGF3IGFuZCBKdXJpc2RpY3Rpb24KVGhlc2UgVGVybXMgc2hhbGwgYmUgZ292ZXJuZWQgYnkgYW5kIGNvbnN0cnVlZCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIGxhd3Mgb2YgSW5kaWEuCkFueSBkaXNwdXRlcyBhcmlzaW5nIGZyb20gdGhlc2UgVGVybXMgc2hhbGwgYmUgc3ViamVjdCB0byB0aGUgZXhjbHVzaXZlIGp1cmlzZGljdGlvbiBvZiB0aGUgY29tcGV0ZW50IGNvdXJ0cyBsb2NhdGVkIGluIHRoZSBqdXJpc2RpY3Rpb24gd2hlcmUgV2Vkcm96J3MgcHJpbmNpcGFsIHBsYWNlIG9mIGJ1c2luZXNzIGlzIHNpdHVhdGVkLCB1bmxlc3Mgb3RoZXJ3aXNlIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3LgoKMjcuIENvbnRhY3QgVXMKRm9yIHF1ZXN0aW9ucyByZWdhcmRpbmcgdGhlc2UgQ3VzdG9tZXIgVGVybXMgb2YgVXNlLCB1c2VycyBtYXkgY29udGFjdCBXZWRyb3ogdGhyb3VnaCB0aGUgY29udGFjdCBkZXRhaWxzIHByb3ZpZGVkIG9uIHRoZSBQbGF0Zm9ybS4KQnkgdXNpbmcgdGhlIFBsYXRmb3JtLCB5b3UgYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWFkLCB1bmRlcnN0b29kLCBhbmQgYWdyZWVkIHRvIHRoZXNlIEN1c3RvbWVyIFRlcm1zIG9mIFVzZS4=