[plasma/kgamma] /: Remove content, replace with Readme
Nicolas Fella <[email protected]> Wed, 3 Jun 2026 11:03:46 +0000 (UTC)
| Newsgroups | gmane.comp.kde.doc,gmane.comp.kde.cvs |
|---|---|
| Message-ID | <[email protected]> |
R2l0IGNvbW1pdCBjOTY5ZjljYjgzZDYwZDc5ZWJiMDUxNDI5MTg2MWJlOTA4ZTIxM2JlIGJ5IE5p Y29sYXMgRmVsbGEuCkNvbW1pdHRlZCBvbiAwMy8wNi8yMDI2IGF0IDEwOjE3LgpQdXNoZWQgYnkg bmljb2xhc2ZlbGxhIGludG8gYnJhbmNoICdtYXN0ZXInLgoKUmVtb3ZlIGNvbnRlbnQsIHJlcGxh Y2Ugd2l0aCBSZWFkbWUKClRoaXMgd2FzIG9ubHkgdXNlZCBvbiBYMTEsIHdoaWNoIHdlIGRvbid0 IHN1cHBvcnQgYW55IG1vcmUKCkQgICswICAgIC03MCAgIENNYWtlTGlzdHMudHh0CkQgICswICAg IC01NCAgIENoYW5nZUxvZwpEICArMCAgICAtMTIxICBMSUNFTlNFUy9DQzAtMS4wLnR4dApEICAr MCAgICAtMzE5ICBMSUNFTlNFUy9HUEwtMi4wLW9yLWxhdGVyLnR4dApBICArMyAgICAtMCAgICBS RUFETUUubWQKRCAgKzAgICAgLTEgICAgZG9jL0NNYWtlTGlzdHMudHh0CkQgICswICAgIC0xNjQg IGRvYy9pbmRleC5kb2Nib29rCkQgICswICAgIC0yMiAgIGtjbWtnYW1tYS9DTWFrZUxpc3RzLnR4 dApEICArMCAgICAtMiAgICBrY21rZ2FtbWEvTWVzc2FnZXMuc2gKRCAgKzAgICAgLTU0ICAga2Nt a2dhbW1hL2Rpc3BsYXludW1iZXIuY3BwCkQgICswICAgIC0zNCAgIGtjbWtnYW1tYS9kaXNwbGF5 bnVtYmVyLmgKRCAgKzAgICAgLTEzMSAga2Nta2dhbW1hL2dhbW1hY3RybC5jcHAKRCAgKzAgICAg LTY5ICAga2Nta2dhbW1hL2dhbW1hY3RybC5oCkQgICswICAgIC0xOTQgIGtjbWtnYW1tYS9rY21f a2dhbW1hLmpzb24KRCAgKzAgICAgLTYxOCAga2Nta2dhbW1hL2tnYW1tYS5jcHAKRCAgKzAgICAg LTY1ICAga2Nta2dhbW1hL2tnYW1tYS5oCkQgICswICAgIC0xMCAgIGtjbWtnYW1tYS9waWNzL0NN YWtlTGlzdHMudHh0CkQgICstICAgIC0tICAgIGtjbWtnYW1tYS9waWNzL2JhY2tncm91bmQucG5n CkQgICstICAgIC0tICAgIGtjbWtnYW1tYS9waWNzL2NteXNjYWxlLnBuZwpEICArLSAgICAtLSAg ICBrY21rZ2FtbWEvcGljcy9kYXJrZ3JleS5wbmcKRCAgKy0gICAgLS0gICAga2Nta2dhbW1hL3Bp Y3MvZ3JleXNjYWxlLnBuZwpEICArLSAgICAtLSAgICBrY21rZ2FtbWEvcGljcy9saWdodGdyZXku cG5nCkQgICstICAgIC0tICAgIGtjbWtnYW1tYS9waWNzL21pZGdyZXkucG5nCkQgICstICAgIC0t ICAgIGtjbWtnYW1tYS9waWNzL3JnYnNjYWxlLnBuZwpEICArMCAgICAtNTEgICBrY21rZ2FtbWEv eGY4NmNvbmZpZ3BhdGguY3BwCkQgICswICAgIC0zMSAgIGtjbWtnYW1tYS94Zjg2Y29uZmlncGF0 aC5oCkQgICswICAgIC0xNzcgIGtjbWtnYW1tYS94dmlkZXh0d3JhcC5jcHAKRCAgKzAgICAgLTUy ICAga2Nta2dhbW1hL3h2aWRleHR3cmFwLmgKRCAgKzAgICAgLTYgICAgeGY4NmdhbW1hY2ZnL0NN YWtlTGlzdHMudHh0CkQgICswICAgIC0xMTkgIHhmODZnYW1tYWNmZy94Zjg2Z2FtbWFjZmcuY3Bw CgpodHRwczovL2ludmVudC5rZGUub3JnL3BsYXNtYS9rZ2FtbWEvLS9jb21taXQvYzk2OWY5Y2I4 M2Q2MGQ3OWViYjA1MTQyOTE4NjFiZTkwOGUyMTNiZQoKZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMu dHh0IGIvQ01ha2VMaXN0cy50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhYWNl NTcuLjAwMDAwMDAKLS0tIGEvQ01ha2VMaXN0cy50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw3MCAr MCwwIEBACi1jbWFrZV9taW5pbXVtX3JlcXVpcmVkKFZFUlNJT04gMy4xNikKLQotcHJvamVjdChr Z2FtbWEpCi1zZXQoUFJPSkVDVF9WRVJTSU9OICI2LjcuODAiKQotCi1zZXQoUVRfTUlOX1ZFUlNJ T04gIjYuMTAuMCIpCi1zZXQoS0Y2X01JTl9WRVJTSU9OICI2LjI2LjAiKQotc2V0KEtERV9DT01Q SUxFUlNFVFRJTkdTX0xFVkVMICI1LjgyIikKLQotc2V0KENNQUtFX0NYWF9TVEFOREFSRCAyMCkK LXNldChDTUFLRV9DWFhfU1RBTkRBUkRfUkVRVUlSRUQgT04pCi0KLWZpbmRfcGFja2FnZShFQ00g JHtLRjZfTUlOX1ZFUlNJT059IFJFUVVJUkVEIE5PX01PRFVMRSkKLXNldChDTUFLRV9NT0RVTEVf UEFUSCAke0VDTV9NT0RVTEVfUEFUSH0gICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9jbWFr ZSkKLQotaW5jbHVkZShLREVJbnN0YWxsRGlycykKLWluY2x1ZGUoS0RFQ01ha2VTZXR0aW5ncykK LWluY2x1ZGUoS0RFQ29tcGlsZXJTZXR0aW5ncyBOT19QT0xJQ1lfU0NPUEUpCi1pbmNsdWRlKEZl YXR1cmVTdW1tYXJ5KQotaW5jbHVkZShLREVDbGFuZ0Zvcm1hdCkKLWluY2x1ZGUoS0RFR2l0Q29t bWl0SG9va3MpCi1pbmNsdWRlKEVDTURlcHJlY2F0aW9uU2V0dGluZ3MpCi0KLW9wdGlvbihCVUlM RF9ET0MgIldoZXRoZXIgdG8gYnVpbGQgdGhlIGRvY3VtZW50YXRpb24iIE9OKQotCi1maW5kX3Bh Y2thZ2UoUXQ2ICR7UVRfTUlOX1ZFUlNJT059IENPTkZJRyBSRVFVSVJFRCBDT01QT05FTlRTIENv cmUgR3VpIFdpZGdldHMpCi0KLWZpbmRfcGFja2FnZShLRjYgJHtLRjZfTUlOX1ZFUlNJT059IFJF UVVJUkVEIENPTVBPTkVOVFMKLSAgICBDb25maWcKLSAgICBDb25maWdXaWRnZXRzCi0gICAgSTE4 bgotICAgIEtDTVV0aWxzCi0pCi0KLWlmIChCVUlMRF9ET0MpCi0gICAgZmluZF9wYWNrYWdlKEtG NkRvY1Rvb2xzICR7S0Y2X01JTl9WRVJTSU9OfSkKLSAgICBzZXRfcGFja2FnZV9wcm9wZXJ0aWVz KEtGNkRvY1Rvb2xzIFBST1BFUlRJRVMKLSAgICAgICAgREVTQ1JJUFRJT04gIlRvb2xzIHRvIGdl bmVyYXRlIGRvY3VtZW50YXRpb24iCi0gICAgICAgIFRZUEUgUkVRVUlSRUQKLSAgICApCi1lbmRp ZigpCi0KLWZpbmRfcGFja2FnZShYMTEgUkVRVUlSRUQgQ09NUE9ORU5UUyB4Zjg2dm1vZGUpCi0K LSMgWDExX3hmODZ2bW9kZSBkaXNjb3ZlcnkgaXMgZG9uZSBieSBGaW5kWDExCi1hZGRfZmVhdHVy ZV9pbmZvKCJYMTFfeGY4NnZtb2RlIiBYMTFfeGY4NnZtb2RlX0ZPVU5EICJSZXF1aXJlZCB0byBi dWlsZCBrZ2FtbWEuIikKLQotaW5jbHVkZV9kaXJlY3Rvcmllcygke0NNQUtFX0NVUlJFTlRfQklO QVJZX0RJUn0pCi0KLWVjbV9zZXRfZGlzYWJsZWRfZGVwcmVjYXRpb25fdmVyc2lvbnMoUVQgNi4x MS4wCi0gICAgS0YgNi4yMy4wCi0pCi0KLQotYWRkX3N1YmRpcmVjdG9yeShrY21rZ2FtbWEpCi0j IGFkZF9zdWJkaXJlY3RvcnkoeGY4NmdhbW1hY2ZnKQotCi1pZiAoQlVJTERfRE9DKQotICAgIGFk ZF9zdWJkaXJlY3RvcnkoZG9jKQotICAgIGtkb2N0b29sc19pbnN0YWxsKHBvKQotZW5kaWYoKQot Ci0jIGFkZCBjbGFuZy1mb3JtYXQgdGFyZ2V0IGZvciBhbGwgb3VyIHJlYWwgc291cmNlIGZpbGVz Ci1maWxlKEdMT0JfUkVDVVJTRSBBTExfQ0xBTkdfRk9STUFUX1NPVVJDRV9GSUxFUyAqLmNwcCAq LmgpCi1rZGVfY2xhbmdfZm9ybWF0KCR7QUxMX0NMQU5HX0ZPUk1BVF9TT1VSQ0VfRklMRVN9KQot a2RlX2NvbmZpZ3VyZV9naXRfcHJlX2NvbW1pdF9ob29rKENIRUNLUyBDTEFOR19GT1JNQVQpCi0K LWtpMThuX2luc3RhbGwocG8pCi0KLWZlYXR1cmVfc3VtbWFyeShXSEFUIEFMTCBGQVRBTF9PTl9N SVNTSU5HX1JFUVVJUkVEX1BBQ0tBR0VTKQpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdl TG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZmZjODIzLi4wMDAwMDAwCi0tLSBh L0NoYW5nZUxvZworKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLUtHYW1tYSAwLjkuOToK LQotKiBBZGQgbXVsdGktaGVhZCBzdXBwb3J0IChmaXggYnVnICMzMjEpCi0qIEFkZCBzY3JlZW4g c2VsZWN0b3IKLSogQWRkIHNjcmVlbiBzeW5jaHJvbmlzYXRpb24KLSogQ2hhbmdlIGtnYW1tYXJj IGZvcm1hdCAob2xkIHVzZXIgc2V0dGluZ3MgYXJlIGxvc3QpCi0qIEZpeCBhIGxvY2FsaXNhdGlv biBidWcgaW4gY2xhc3MgR2FtbWFDdHJsIAotKiBBZGQgY2xhc3MgWEY4NkNvbmZpZ1BhdGgKLSog QWRkIER1dGNoIHRyYW5zbGF0aW9uIChieSBSaW5zZSBkZSBWcmllcykgCi0qIEFkZCBDemVjaCB0 cmFuc2xhdGlvbiAoYnkgRGFuaWVsIFByeW55Y2gpCi0KLUtHYW1tYSAwLjkuMjoKLQotKiBGaXgg Y29tcGlsZSBlcnJvcnMgd2l0aCBjb25maWd1cmUgb3B0aW9uIC0tZW5hYmxlLWZpbmFsIChhZ2Fp bikKLSogQ2FuY2VsIHRoZSBzcGxpdCBpbnRvIHR3byBwYXJ0cyAoYWRtaW4gYW5kIHVzZXIgbW9k ZSksIGFkZCBhCi0gIGNoZWNrYm94IHRvIGNob29zZSB3aGVyZSB0byBzdG9yZSB0aGUgc2V0dGlu Z3MgKHVzZXIgY29uZmlnIGZpbGUgCi0gIG9yIFhGODZDb25maWcpCi0KLUtHYW1tYSAwLjkuMToK LQotKiBGaXggY29tcGlsZSBlcnJvcnMgd2l0aCBjb25maWd1cmUgb3B0aW9uIC0tZW5hYmxlLWZp bmFsCi0qIEZyZW5jaCBhbmQgc3BhbmlzaCB0cmFuc2xhdGlvbiB1cGRhdGUKLSogSW5zdGFsbCBz Y3JpcHQgdXBkYXRlCi0KLUtHYW1tYSAwLjk6Ci0KLSogQWRkIGFkbWluIG1vZGUgKGluIHRoaXMg bW9kZSwgZ2FtbWEgc2V0dGluZ3MgYXJlIHN0b3JlZCB0byBYRjg2Q29uZmlnKQotKiBBZGQgc3Bl YyBmaWxlIGZvciBSUE0gYmFzZWQgZGlzdHJpYnV0aW9ucyAoRG9taW5payBTZWljaHRlcikKLSog UmVtb3ZlIGNsYXNzIFJHQkN0cmwsIGhhbmRsZSB0aGUgd2lkZ2V0cyBpbiBtYWluIHdpZGdldAot KiBBZGQgY2hlY2sgZm9yIFhGcmVlODYtVmlkTW9kZUV4dGVuc2lvbiB0byBjb25maWd1cmUuaW4u aW4KLSogQWRkIHdyYXBwZXIgY2xhc3MgWFZpZEV4dFdyYXAgdG8gYWNjZXNzIFhGcmVlODYtVmlk TW9kZUV4dGVuc2lvbiBkaXJlY3RseSwgCi0gIEtHYW1tYSBubyBsb25nZXIgbmVlZHMgeGdhbW1h IGFzIGEgYmFja2VuZAotCi1LR2FtbWEgMC4yLjM6Ci0KLSogTWlub3IgaW5zdGFsbCBzY3JpcHQg Y2hhbmdlcywgc2hvdWxkIGNvbXBpbGUgd2l0aCBLREUyIGFuZCBLREUzIG5vdyAKLQotS0dhbW1h IDAuMi4yOgotCi0qIFBvcnRlZCB0byBLREUzIAotCi1LR2FtbWEgMC4yLjE6Ci0KLSogQ29kZSBj bGVhbiB1cAotKiBDb252ZXJ0ZWQgYWxsIHN0cmluZ3MgdG8gUVN0cmluZyB0byBhdm9pZCBjb3B5 aW5nIGJldHdlZW4gUVN0cmluZyBhbmQgY2hhciogIAotKiBBZGQgZnJlbmNoIGxvY2FsaXNhdGlv biAoUGllcnJlIEphcmlsbG9uKQotKiBBZGQgaXRhbGlhbiBsb2NhbGl6YXRpb24gKERhbmllbGUg TWVkcmkpCi0KLUtHYW1tYSAwLjI6Ci0KLSogQWRkIHNwYW5pc2ggdHJhbnNsYXRpb24gKE1pZ3Vl bCBOb3ZhcykKLSogQ2hhbmdlIGJlaGF2aW9yIG9mICJVc2UgRGVmYXVsdHMiIGJ1dHRvbiB0byBi ZSBjb21wbGlhbnQgd2l0aCBrY29udHJvbCBzdGFuZGFyZCAKLSogUGFydGlhbCByZXdyaXRlIHRv IG1ha2UgaXQgYSBLREUgY29udHJvbCBjZW50ZXIgcGx1Z2luCi0qIENyZWF0ZSBuZXcgbG9nbwpk aWZmIC0tZ2l0IGEvTElDRU5TRVMvQ0MwLTEuMC50eHQgYi9MSUNFTlNFUy9DQzAtMS4wLnR4dApk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGUyNTlkNC4uMDAwMDAwMAotLS0gYS9MSUNF TlNFUy9DQzAtMS4wLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDEyMSArMCwwIEBACi1DcmVhdGl2 ZSBDb21tb25zIExlZ2FsIENvZGUKLQotQ0MwIDEuMCBVbml2ZXJzYWwKLQotICAgIENSRUFUSVZF IENPTU1PTlMgQ09SUE9SQVRJT04gSVMgTk9UIEEgTEFXIEZJUk0gQU5EIERPRVMgTk9UIFBST1ZJ REUKLSAgICBMRUdBTCBTRVJWSUNFUy4gRElTVFJJQlVUSU9OIE9GIFRISVMgRE9DVU1FTlQgRE9F UyBOT1QgQ1JFQVRFIEFOCi0gICAgQVRUT1JORVktQ0xJRU5UIFJFTEFUSU9OU0hJUC4gQ1JFQVRJ VkUgQ09NTU9OUyBQUk9WSURFUyBUSElTCi0gICAgSU5GT1JNQVRJT04gT04gQU4gIkFTLUlTIiBC QVNJUy4gQ1JFQVRJVkUgQ09NTU9OUyBNQUtFUyBOTyBXQVJSQU5USUVTCi0gICAgUkVHQVJESU5H IFRIRSBVU0UgT0YgVEhJUyBET0NVTUVOVCBPUiBUSEUgSU5GT1JNQVRJT04gT1IgV09SS1MKLSAg ICBQUk9WSURFRCBIRVJFVU5ERVIsIEFORCBESVNDTEFJTVMgTElBQklMSVRZIEZPUiBEQU1BR0VT IFJFU1VMVElORyBGUk9NCi0gICAgVEhFIFVTRSBPRiBUSElTIERPQ1VNRU5UIE9SIFRIRSBJTkZP Uk1BVElPTiBPUiBXT1JLUyBQUk9WSURFRAotICAgIEhFUkVVTkRFUi4KLQotU3RhdGVtZW50IG9m IFB1cnBvc2UKLQotVGhlIGxhd3Mgb2YgbW9zdCBqdXJpc2RpY3Rpb25zIHRocm91Z2hvdXQgdGhl IHdvcmxkIGF1dG9tYXRpY2FsbHkgY29uZmVyCi1leGNsdXNpdmUgQ29weXJpZ2h0IGFuZCBSZWxh dGVkIFJpZ2h0cyAoZGVmaW5lZCBiZWxvdykgdXBvbiB0aGUgY3JlYXRvcgotYW5kIHN1YnNlcXVl bnQgb3duZXIocykgKGVhY2ggYW5kIGFsbCwgYW4gIm93bmVyIikgb2YgYW4gb3JpZ2luYWwgd29y ayBvZgotYXV0aG9yc2hpcCBhbmQvb3IgYSBkYXRhYmFzZSAoZWFjaCwgYSAiV29yayIpLgotCi1D ZXJ0YWluIG93bmVycyB3aXNoIHRvIHBlcm1hbmVudGx5IHJlbGlucXVpc2ggdGhvc2UgcmlnaHRz IHRvIGEgV29yayBmb3IKLXRoZSBwdXJwb3NlIG9mIGNvbnRyaWJ1dGluZyB0byBhIGNvbW1vbnMg b2YgY3JlYXRpdmUsIGN1bHR1cmFsIGFuZAotc2NpZW50aWZpYyB3b3JrcyAoIkNvbW1vbnMiKSB0 aGF0IHRoZSBwdWJsaWMgY2FuIHJlbGlhYmx5IGFuZCB3aXRob3V0IGZlYXIKLW9mIGxhdGVyIGNs YWltcyBvZiBpbmZyaW5nZW1lbnQgYnVpbGQgdXBvbiwgbW9kaWZ5LCBpbmNvcnBvcmF0ZSBpbiBv dGhlcgotd29ya3MsIHJldXNlIGFuZCByZWRpc3RyaWJ1dGUgYXMgZnJlZWx5IGFzIHBvc3NpYmxl IGluIGFueSBmb3JtIHdoYXRzb2V2ZXIKLWFuZCBmb3IgYW55IHB1cnBvc2VzLCBpbmNsdWRpbmcg d2l0aG91dCBsaW1pdGF0aW9uIGNvbW1lcmNpYWwgcHVycG9zZXMuCi1UaGVzZSBvd25lcnMgbWF5 IGNvbnRyaWJ1dGUgdG8gdGhlIENvbW1vbnMgdG8gcHJvbW90ZSB0aGUgaWRlYWwgb2YgYSBmcmVl Ci1jdWx0dXJlIGFuZCB0aGUgZnVydGhlciBwcm9kdWN0aW9uIG9mIGNyZWF0aXZlLCBjdWx0dXJh bCBhbmQgc2NpZW50aWZpYwotd29ya3MsIG9yIHRvIGdhaW4gcmVwdXRhdGlvbiBvciBncmVhdGVy IGRpc3RyaWJ1dGlvbiBmb3IgdGhlaXIgV29yayBpbgotcGFydCB0aHJvdWdoIHRoZSB1c2UgYW5k IGVmZm9ydHMgb2Ygb3RoZXJzLgotCi1Gb3IgdGhlc2UgYW5kL29yIG90aGVyIHB1cnBvc2VzIGFu ZCBtb3RpdmF0aW9ucywgYW5kIHdpdGhvdXQgYW55Ci1leHBlY3RhdGlvbiBvZiBhZGRpdGlvbmFs IGNvbnNpZGVyYXRpb24gb3IgY29tcGVuc2F0aW9uLCB0aGUgcGVyc29uCi1hc3NvY2lhdGluZyBD QzAgd2l0aCBhIFdvcmsgKHRoZSAiQWZmaXJtZXIiKSwgdG8gdGhlIGV4dGVudCB0aGF0IGhlIG9y IHNoZQotaXMgYW4gb3duZXIgb2YgQ29weXJpZ2h0IGFuZCBSZWxhdGVkIFJpZ2h0cyBpbiB0aGUg V29yaywgdm9sdW50YXJpbHkKLWVsZWN0cyB0byBhcHBseSBDQzAgdG8gdGhlIFdvcmsgYW5kIHB1 YmxpY2x5IGRpc3RyaWJ1dGUgdGhlIFdvcmsgdW5kZXIgaXRzCi10ZXJtcywgd2l0aCBrbm93bGVk Z2Ugb2YgaGlzIG9yIGhlciBDb3B5cmlnaHQgYW5kIFJlbGF0ZWQgUmlnaHRzIGluIHRoZQotV29y ayBhbmQgdGhlIG1lYW5pbmcgYW5kIGludGVuZGVkIGxlZ2FsIGVmZmVjdCBvZiBDQzAgb24gdGhv c2UgcmlnaHRzLgotCi0xLiBDb3B5cmlnaHQgYW5kIFJlbGF0ZWQgUmlnaHRzLiBBIFdvcmsgbWFk ZSBhdmFpbGFibGUgdW5kZXIgQ0MwIG1heSBiZQotcHJvdGVjdGVkIGJ5IGNvcHlyaWdodCBhbmQg cmVsYXRlZCBvciBuZWlnaGJvcmluZyByaWdodHMgKCJDb3B5cmlnaHQgYW5kCi1SZWxhdGVkIFJp Z2h0cyIpLiBDb3B5cmlnaHQgYW5kIFJlbGF0ZWQgUmlnaHRzIGluY2x1ZGUsIGJ1dCBhcmUgbm90 Ci1saW1pdGVkIHRvLCB0aGUgZm9sbG93aW5nOgotCi0gIGkuIHRoZSByaWdodCB0byByZXByb2R1 Y2UsIGFkYXB0LCBkaXN0cmlidXRlLCBwZXJmb3JtLCBkaXNwbGF5LAotICAgICBjb21tdW5pY2F0 ZSwgYW5kIHRyYW5zbGF0ZSBhIFdvcms7Ci0gaWkuIG1vcmFsIHJpZ2h0cyByZXRhaW5lZCBieSB0 aGUgb3JpZ2luYWwgYXV0aG9yKHMpIGFuZC9vciBwZXJmb3JtZXIocyk7Ci1paWkuIHB1YmxpY2l0 eSBhbmQgcHJpdmFjeSByaWdodHMgcGVydGFpbmluZyB0byBhIHBlcnNvbidzIGltYWdlIG9yCi0g ICAgIGxpa2VuZXNzIGRlcGljdGVkIGluIGEgV29yazsKLSBpdi4gcmlnaHRzIHByb3RlY3Rpbmcg YWdhaW5zdCB1bmZhaXIgY29tcGV0aXRpb24gaW4gcmVnYXJkcyB0byBhIFdvcmssCi0gICAgIHN1 YmplY3QgdG8gdGhlIGxpbWl0YXRpb25zIGluIHBhcmFncmFwaCA0KGEpLCBiZWxvdzsKLSAgdi4g cmlnaHRzIHByb3RlY3RpbmcgdGhlIGV4dHJhY3Rpb24sIGRpc3NlbWluYXRpb24sIHVzZSBhbmQg cmV1c2Ugb2YgZGF0YQotICAgICBpbiBhIFdvcms7Ci0gdmkuIGRhdGFiYXNlIHJpZ2h0cyAoc3Vj aCBhcyB0aG9zZSBhcmlzaW5nIHVuZGVyIERpcmVjdGl2ZSA5Ni85L0VDIG9mIHRoZQotICAgICBF dXJvcGVhbiBQYXJsaWFtZW50IGFuZCBvZiB0aGUgQ291bmNpbCBvZiAxMSBNYXJjaCAxOTk2IG9u IHRoZSBsZWdhbAotICAgICBwcm90ZWN0aW9uIG9mIGRhdGFiYXNlcywgYW5kIHVuZGVyIGFueSBu YXRpb25hbCBpbXBsZW1lbnRhdGlvbgotICAgICB0aGVyZW9mLCBpbmNsdWRpbmcgYW55IGFtZW5k ZWQgb3Igc3VjY2Vzc29yIHZlcnNpb24gb2Ygc3VjaAotICAgICBkaXJlY3RpdmUpOyBhbmQKLXZp aS4gb3RoZXIgc2ltaWxhciwgZXF1aXZhbGVudCBvciBjb3JyZXNwb25kaW5nIHJpZ2h0cyB0aHJv dWdob3V0IHRoZQotICAgICB3b3JsZCBiYXNlZCBvbiBhcHBsaWNhYmxlIGxhdyBvciB0cmVhdHks IGFuZCBhbnkgbmF0aW9uYWwKLSAgICAgaW1wbGVtZW50YXRpb25zIHRoZXJlb2YuCi0KLTIuIFdh aXZlci4gVG8gdGhlIGdyZWF0ZXN0IGV4dGVudCBwZXJtaXR0ZWQgYnksIGJ1dCBub3QgaW4gY29u dHJhdmVudGlvbgotb2YsIGFwcGxpY2FibGUgbGF3LCBBZmZpcm1lciBoZXJlYnkgb3ZlcnRseSwg ZnVsbHksIHBlcm1hbmVudGx5LAotaXJyZXZvY2FibHkgYW5kIHVuY29uZGl0aW9uYWxseSB3YWl2 ZXMsIGFiYW5kb25zLCBhbmQgc3VycmVuZGVycyBhbGwgb2YKLUFmZmlybWVyJ3MgQ29weXJpZ2h0 IGFuZCBSZWxhdGVkIFJpZ2h0cyBhbmQgYXNzb2NpYXRlZCBjbGFpbXMgYW5kIGNhdXNlcwotb2Yg YWN0aW9uLCB3aGV0aGVyIG5vdyBrbm93biBvciB1bmtub3duIChpbmNsdWRpbmcgZXhpc3Rpbmcg YXMgd2VsbCBhcwotZnV0dXJlIGNsYWltcyBhbmQgY2F1c2VzIG9mIGFjdGlvbiksIGluIHRoZSBX b3JrIChpKSBpbiBhbGwgdGVycml0b3JpZXMKLXdvcmxkd2lkZSwgKGlpKSBmb3IgdGhlIG1heGlt dW0gZHVyYXRpb24gcHJvdmlkZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IKLXRyZWF0eSAoaW5jbHVk aW5nIGZ1dHVyZSB0aW1lIGV4dGVuc2lvbnMpLCAoaWlpKSBpbiBhbnkgY3VycmVudCBvciBmdXR1 cmUKLW1lZGl1bSBhbmQgZm9yIGFueSBudW1iZXIgb2YgY29waWVzLCBhbmQgKGl2KSBmb3IgYW55 IHB1cnBvc2Ugd2hhdHNvZXZlciwKLWluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gY29tbWVy Y2lhbCwgYWR2ZXJ0aXNpbmcgb3IgcHJvbW90aW9uYWwKLXB1cnBvc2VzICh0aGUgIldhaXZlciIp LiBBZmZpcm1lciBtYWtlcyB0aGUgV2FpdmVyIGZvciB0aGUgYmVuZWZpdCBvZiBlYWNoCi1tZW1i ZXIgb2YgdGhlIHB1YmxpYyBhdCBsYXJnZSBhbmQgdG8gdGhlIGRldHJpbWVudCBvZiBBZmZpcm1l cidzIGhlaXJzIGFuZAotc3VjY2Vzc29ycywgZnVsbHkgaW50ZW5kaW5nIHRoYXQgc3VjaCBXYWl2 ZXIgc2hhbGwgbm90IGJlIHN1YmplY3QgdG8KLXJldm9jYXRpb24sIHJlc2Npc3Npb24sIGNhbmNl bGxhdGlvbiwgdGVybWluYXRpb24sIG9yIGFueSBvdGhlciBsZWdhbCBvcgotZXF1aXRhYmxlIGFj dGlvbiB0byBkaXNydXB0IHRoZSBxdWlldCBlbmpveW1lbnQgb2YgdGhlIFdvcmsgYnkgdGhlIHB1 YmxpYwotYXMgY29udGVtcGxhdGVkIGJ5IEFmZmlybWVyJ3MgZXhwcmVzcyBTdGF0ZW1lbnQgb2Yg UHVycG9zZS4KLQotMy4gUHVibGljIExpY2Vuc2UgRmFsbGJhY2suIFNob3VsZCBhbnkgcGFydCBv ZiB0aGUgV2FpdmVyIGZvciBhbnkgcmVhc29uCi1iZSBqdWRnZWQgbGVnYWxseSBpbnZhbGlkIG9y IGluZWZmZWN0aXZlIHVuZGVyIGFwcGxpY2FibGUgbGF3LCB0aGVuIHRoZQotV2FpdmVyIHNoYWxs IGJlIHByZXNlcnZlZCB0byB0aGUgbWF4aW11bSBleHRlbnQgcGVybWl0dGVkIHRha2luZyBpbnRv Ci1hY2NvdW50IEFmZmlybWVyJ3MgZXhwcmVzcyBTdGF0ZW1lbnQgb2YgUHVycG9zZS4gSW4gYWRk aXRpb24sIHRvIHRoZQotZXh0ZW50IHRoZSBXYWl2ZXIgaXMgc28ganVkZ2VkIEFmZmlybWVyIGhl cmVieSBncmFudHMgdG8gZWFjaCBhZmZlY3RlZAotcGVyc29uIGEgcm95YWx0eS1mcmVlLCBub24g dHJhbnNmZXJhYmxlLCBub24gc3VibGljZW5zYWJsZSwgbm9uIGV4Y2x1c2l2ZSwKLWlycmV2b2Nh YmxlIGFuZCB1bmNvbmRpdGlvbmFsIGxpY2Vuc2UgdG8gZXhlcmNpc2UgQWZmaXJtZXIncyBDb3B5 cmlnaHQgYW5kCi1SZWxhdGVkIFJpZ2h0cyBpbiB0aGUgV29yayAoaSkgaW4gYWxsIHRlcnJpdG9y aWVzIHdvcmxkd2lkZSwgKGlpKSBmb3IgdGhlCi1tYXhpbXVtIGR1cmF0aW9uIHByb3ZpZGVkIGJ5 IGFwcGxpY2FibGUgbGF3IG9yIHRyZWF0eSAoaW5jbHVkaW5nIGZ1dHVyZQotdGltZSBleHRlbnNp b25zKSwgKGlpaSkgaW4gYW55IGN1cnJlbnQgb3IgZnV0dXJlIG1lZGl1bSBhbmQgZm9yIGFueSBu dW1iZXIKLW9mIGNvcGllcywgYW5kIChpdikgZm9yIGFueSBwdXJwb3NlIHdoYXRzb2V2ZXIsIGlu Y2x1ZGluZyB3aXRob3V0Ci1saW1pdGF0aW9uIGNvbW1lcmNpYWwsIGFkdmVydGlzaW5nIG9yIHBy b21vdGlvbmFsIHB1cnBvc2VzICh0aGUKLSJMaWNlbnNlIikuIFRoZSBMaWNlbnNlIHNoYWxsIGJl IGRlZW1lZCBlZmZlY3RpdmUgYXMgb2YgdGhlIGRhdGUgQ0MwIHdhcwotYXBwbGllZCBieSBBZmZp cm1lciB0byB0aGUgV29yay4gU2hvdWxkIGFueSBwYXJ0IG9mIHRoZSBMaWNlbnNlIGZvciBhbnkK LXJlYXNvbiBiZSBqdWRnZWQgbGVnYWxseSBpbnZhbGlkIG9yIGluZWZmZWN0aXZlIHVuZGVyIGFw cGxpY2FibGUgbGF3LCBzdWNoCi1wYXJ0aWFsIGludmFsaWRpdHkgb3IgaW5lZmZlY3RpdmVuZXNz IHNoYWxsIG5vdCBpbnZhbGlkYXRlIHRoZSByZW1haW5kZXIKLW9mIHRoZSBMaWNlbnNlLCBhbmQg aW4gc3VjaCBjYXNlIEFmZmlybWVyIGhlcmVieSBhZmZpcm1zIHRoYXQgaGUgb3Igc2hlCi13aWxs IG5vdCAoaSkgZXhlcmNpc2UgYW55IG9mIGhpcyBvciBoZXIgcmVtYWluaW5nIENvcHlyaWdodCBh bmQgUmVsYXRlZAotUmlnaHRzIGluIHRoZSBXb3JrIG9yIChpaSkgYXNzZXJ0IGFueSBhc3NvY2lh dGVkIGNsYWltcyBhbmQgY2F1c2VzIG9mCi1hY3Rpb24gd2l0aCByZXNwZWN0IHRvIHRoZSBXb3Jr LCBpbiBlaXRoZXIgY2FzZSBjb250cmFyeSB0byBBZmZpcm1lcidzCi1leHByZXNzIFN0YXRlbWVu dCBvZiBQdXJwb3NlLgotCi00LiBMaW1pdGF0aW9ucyBhbmQgRGlzY2xhaW1lcnMuCi0KLSBhLiBO byB0cmFkZW1hcmsgb3IgcGF0ZW50IHJpZ2h0cyBoZWxkIGJ5IEFmZmlybWVyIGFyZSB3YWl2ZWQs IGFiYW5kb25lZCwKLSAgICBzdXJyZW5kZXJlZCwgbGljZW5zZWQgb3Igb3RoZXJ3aXNlIGFmZmVj dGVkIGJ5IHRoaXMgZG9jdW1lbnQuCi0gYi4gQWZmaXJtZXIgb2ZmZXJzIHRoZSBXb3JrIGFzLWlz IGFuZCBtYWtlcyBubyByZXByZXNlbnRhdGlvbnMgb3IKLSAgICB3YXJyYW50aWVzIG9mIGFueSBr aW5kIGNvbmNlcm5pbmcgdGhlIFdvcmssIGV4cHJlc3MsIGltcGxpZWQsCi0gICAgc3RhdHV0b3J5 IG9yIG90aGVyd2lzZSwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB3YXJyYW50aWVzIG9m Ci0gICAgdGl0bGUsIG1lcmNoYW50YWJpbGl0eSwgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1 cnBvc2UsIG5vbgotICAgIGluZnJpbmdlbWVudCwgb3IgdGhlIGFic2VuY2Ugb2YgbGF0ZW50IG9y IG90aGVyIGRlZmVjdHMsIGFjY3VyYWN5LCBvcgotICAgIHRoZSBwcmVzZW50IG9yIGFic2VuY2Ug b2YgZXJyb3JzLCB3aGV0aGVyIG9yIG5vdCBkaXNjb3ZlcmFibGUsIGFsbCB0bwotICAgIHRoZSBn cmVhdGVzdCBleHRlbnQgcGVybWlzc2libGUgdW5kZXIgYXBwbGljYWJsZSBsYXcuCi0gYy4gQWZm aXJtZXIgZGlzY2xhaW1zIHJlc3BvbnNpYmlsaXR5IGZvciBjbGVhcmluZyByaWdodHMgb2Ygb3Ro ZXIgcGVyc29ucwotICAgIHRoYXQgbWF5IGFwcGx5IHRvIHRoZSBXb3JrIG9yIGFueSB1c2UgdGhl cmVvZiwgaW5jbHVkaW5nIHdpdGhvdXQKLSAgICBsaW1pdGF0aW9uIGFueSBwZXJzb24ncyBDb3B5 cmlnaHQgYW5kIFJlbGF0ZWQgUmlnaHRzIGluIHRoZSBXb3JrLgotICAgIEZ1cnRoZXIsIEFmZmly bWVyIGRpc2NsYWltcyByZXNwb25zaWJpbGl0eSBmb3Igb2J0YWluaW5nIGFueSBuZWNlc3NhcnkK LSAgICBjb25zZW50cywgcGVybWlzc2lvbnMgb3Igb3RoZXIgcmlnaHRzIHJlcXVpcmVkIGZvciBh bnkgdXNlIG9mIHRoZQotICAgIFdvcmsuCi0gZC4gQWZmaXJtZXIgdW5kZXJzdGFuZHMgYW5kIGFj a25vd2xlZGdlcyB0aGF0IENyZWF0aXZlIENvbW1vbnMgaXMgbm90IGEKLSAgICBwYXJ0eSB0byB0 aGlzIGRvY3VtZW50IGFuZCBoYXMgbm8gZHV0eSBvciBvYmxpZ2F0aW9uIHdpdGggcmVzcGVjdCB0 bwotICAgIHRoaXMgQ0MwIG9yIHVzZSBvZiB0aGUgV29yay4KZGlmZiAtLWdpdCBhL0xJQ0VOU0VT L0dQTC0yLjAtb3ItbGF0ZXIudHh0IGIvTElDRU5TRVMvR1BMLTIuMC1vci1sYXRlci50eHQKZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkODBhYzMuLjAwMDAwMDAKLS0tIGEvTElDRU5T RVMvR1BMLTIuMC1vci1sYXRlci50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzMTkgKzAsMCBAQAot R05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKLQotVmVyc2lvbiAyLCBKdW5lIDE5OTEKLQotQ29w eXJpZ2h0IChDKSAxOTg5LCAxOTkxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAKLQot NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV U0EKLQotRXZlcnlvbmUgaXMgcGVybWl0dGVkIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0 aW0gY29waWVzIG9mIHRoaXMgbGljZW5zZQotZG9jdW1lbnQsIGJ1dCBjaGFuZ2luZyBpdCBpcyBu b3QgYWxsb3dlZC4KLQotUHJlYW1ibGUKLQotVGhlIGxpY2Vuc2VzIGZvciBtb3N0IHNvZnR3YXJl IGFyZSBkZXNpZ25lZCB0byB0YWtlIGF3YXkgeW91ciBmcmVlZG9tIHRvIHNoYXJlCi1hbmQgY2hh bmdlIGl0LiBCeSBjb250cmFzdCwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIGlu dGVuZGVkIHRvCi1ndWFyYW50ZWUgeW91ciBmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgZnJl ZSBzb2Z0d2FyZS0tdG8gbWFrZSBzdXJlIHRoZQotc29mdHdhcmUgaXMgZnJlZSBmb3IgYWxsIGl0 cyB1c2Vycy4gVGhpcyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFwcGxpZXMgdG8KLW1vc3Qgb2Yg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbidzIHNvZnR3YXJlIGFuZCB0byBhbnkgb3RoZXIg cHJvZ3JhbSB3aG9zZQotYXV0aG9ycyBjb21taXQgdG8gdXNpbmcgaXQuIChTb21lIG90aGVyIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiBzb2Z0d2FyZQotaXMgY292ZXJlZCBieSB0aGUgR05VIExl c3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGluc3RlYWQuKSBZb3UgY2FuIGFwcGx5Ci1pdCB0 byB5b3VyIHByb2dyYW1zLCB0b28uCi0KLVdoZW4gd2Ugc3BlYWsgb2YgZnJlZSBzb2Z0d2FyZSwg d2UgYXJlIHJlZmVycmluZyB0byBmcmVlZG9tLCBub3QgcHJpY2UuIE91cgotR2VuZXJhbCBQdWJs aWMgTGljZW5zZXMgYXJlIGRlc2lnbmVkIHRvIG1ha2Ugc3VyZSB0aGF0IHlvdSBoYXZlIHRoZSBm cmVlZG9tCi10byBkaXN0cmlidXRlIGNvcGllcyBvZiBmcmVlIHNvZnR3YXJlIChhbmQgY2hhcmdl IGZvciB0aGlzIHNlcnZpY2UgaWYgeW91Ci13aXNoKSwgdGhhdCB5b3UgcmVjZWl2ZSBzb3VyY2Ug Y29kZSBvciBjYW4gZ2V0IGl0IGlmIHlvdSB3YW50IGl0LCB0aGF0IHlvdQotY2FuIGNoYW5nZSB0 aGUgc29mdHdhcmUgb3IgdXNlIHBpZWNlcyBvZiBpdCBpbiBuZXcgZnJlZSBwcm9ncmFtczsgYW5k IHRoYXQKLXlvdSBrbm93IHlvdSBjYW4gZG8gdGhlc2UgdGhpbmdzLgotCi1UbyBwcm90ZWN0IHlv dXIgcmlnaHRzLCB3ZSBuZWVkIHRvIG1ha2UgcmVzdHJpY3Rpb25zIHRoYXQgZm9yYmlkIGFueW9u ZSB0bwotZGVueSB5b3UgdGhlc2UgcmlnaHRzIG9yIHRvIGFzayB5b3UgdG8gc3VycmVuZGVyIHRo ZSByaWdodHMuIFRoZXNlIHJlc3RyaWN0aW9ucwotdHJhbnNsYXRlIHRvIGNlcnRhaW4gcmVzcG9u c2liaWxpdGllcyBmb3IgeW91IGlmIHlvdSBkaXN0cmlidXRlIGNvcGllcyBvZgotdGhlIHNvZnR3 YXJlLCBvciBpZiB5b3UgbW9kaWZ5IGl0LgotCi1Gb3IgZXhhbXBsZSwgaWYgeW91IGRpc3RyaWJ1 dGUgY29waWVzIG9mIHN1Y2ggYSBwcm9ncmFtLCB3aGV0aGVyIGdyYXRpcyBvcgotZm9yIGEgZmVl LCB5b3UgbXVzdCBnaXZlIHRoZSByZWNpcGllbnRzIGFsbCB0aGUgcmlnaHRzIHRoYXQgeW91IGhh dmUuIFlvdQotbXVzdCBtYWtlIHN1cmUgdGhhdCB0aGV5LCB0b28sIHJlY2VpdmUgb3IgY2FuIGdl dCB0aGUgc291cmNlIGNvZGUuIEFuZCB5b3UKLW11c3Qgc2hvdyB0aGVtIHRoZXNlIHRlcm1zIHNv IHRoZXkga25vdyB0aGVpciByaWdodHMuCi0KLVdlIHByb3RlY3QgeW91ciByaWdodHMgd2l0aCB0 d28gc3RlcHM6ICgxKSBjb3B5cmlnaHQgdGhlIHNvZnR3YXJlLCBhbmQgKDIpCi1vZmZlciB5b3Ug dGhpcyBsaWNlbnNlIHdoaWNoIGdpdmVzIHlvdSBsZWdhbCBwZXJtaXNzaW9uIHRvIGNvcHksIGRp c3RyaWJ1dGUKLWFuZC9vciBtb2RpZnkgdGhlIHNvZnR3YXJlLgotCi1BbHNvLCBmb3IgZWFjaCBh dXRob3IncyBwcm90ZWN0aW9uIGFuZCBvdXJzLCB3ZSB3YW50IHRvIG1ha2UgY2VydGFpbiB0aGF0 Ci1ldmVyeW9uZSB1bmRlcnN0YW5kcyB0aGF0IHRoZXJlIGlzIG5vIHdhcnJhbnR5IGZvciB0aGlz IGZyZWUgc29mdHdhcmUuIElmCi10aGUgc29mdHdhcmUgaXMgbW9kaWZpZWQgYnkgc29tZW9uZSBl bHNlIGFuZCBwYXNzZWQgb24sIHdlIHdhbnQgaXRzIHJlY2lwaWVudHMKLXRvIGtub3cgdGhhdCB3 aGF0IHRoZXkgaGF2ZSBpcyBub3QgdGhlIG9yaWdpbmFsLCBzbyB0aGF0IGFueSBwcm9ibGVtcyBp bnRyb2R1Y2VkCi1ieSBvdGhlcnMgd2lsbCBub3QgcmVmbGVjdCBvbiB0aGUgb3JpZ2luYWwgYXV0 aG9ycycgcmVwdXRhdGlvbnMuCi0KLUZpbmFsbHksIGFueSBmcmVlIHByb2dyYW0gaXMgdGhyZWF0 ZW5lZCBjb25zdGFudGx5IGJ5IHNvZnR3YXJlIHBhdGVudHMuIFdlCi13aXNoIHRvIGF2b2lkIHRo ZSBkYW5nZXIgdGhhdCByZWRpc3RyaWJ1dG9ycyBvZiBhIGZyZWUgcHJvZ3JhbSB3aWxsIGluZGl2 aWR1YWxseQotb2J0YWluIHBhdGVudCBsaWNlbnNlcywgaW4gZWZmZWN0IG1ha2luZyB0aGUgcHJv Z3JhbSBwcm9wcmlldGFyeS4gVG8gcHJldmVudAotdGhpcywgd2UgaGF2ZSBtYWRlIGl0IGNsZWFy IHRoYXQgYW55IHBhdGVudCBtdXN0IGJlIGxpY2Vuc2VkIGZvciBldmVyeW9uZSdzCi1mcmVlIHVz ZSBvciBub3QgbGljZW5zZWQgYXQgYWxsLgotCi1UaGUgcHJlY2lzZSB0ZXJtcyBhbmQgY29uZGl0 aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW9uIGFuZCBtb2RpZmljYXRpb24KLWZvbGxvdy4K LQotVEVSTVMgQU5EIENPTkRJVElPTlMgRk9SIENPUFlJTkcsIERJU1RSSUJVVElPTiBBTkQgTU9E SUZJQ0FUSU9OCi0KLTAuIFRoaXMgTGljZW5zZSBhcHBsaWVzIHRvIGFueSBwcm9ncmFtIG9yIG90 aGVyIHdvcmsgd2hpY2ggY29udGFpbnMgYSBub3RpY2UKLXBsYWNlZCBieSB0aGUgY29weXJpZ2h0 IGhvbGRlciBzYXlpbmcgaXQgbWF5IGJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcwotb2Yg dGhpcyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiBUaGUgIlByb2dyYW0iLCBiZWxvdywgcmVmZXJz IHRvIGFueSBzdWNoIHByb2dyYW0KLW9yIHdvcmssIGFuZCBhICJ3b3JrIGJhc2VkIG9uIHRoZSBQ cm9ncmFtIiBtZWFucyBlaXRoZXIgdGhlIFByb2dyYW0gb3IgYW55Ci1kZXJpdmF0aXZlIHdvcmsg dW5kZXIgY29weXJpZ2h0IGxhdzogdGhhdCBpcyB0byBzYXksIGEgd29yayBjb250YWluaW5nIHRo ZQotUHJvZ3JhbSBvciBhIHBvcnRpb24gb2YgaXQsIGVpdGhlciB2ZXJiYXRpbSBvciB3aXRoIG1v ZGlmaWNhdGlvbnMgYW5kL29yIHRyYW5zbGF0ZWQKLWludG8gYW5vdGhlciBsYW5ndWFnZS4gKEhl cmVpbmFmdGVyLCB0cmFuc2xhdGlvbiBpcyBpbmNsdWRlZCB3aXRob3V0IGxpbWl0YXRpb24KLWlu IHRoZSB0ZXJtICJtb2RpZmljYXRpb24iLikgRWFjaCBsaWNlbnNlZSBpcyBhZGRyZXNzZWQgYXMg InlvdSIuCi0KLUFjdGl2aXRpZXMgb3RoZXIgdGhhbiBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5k IG1vZGlmaWNhdGlvbiBhcmUgbm90IGNvdmVyZWQKLWJ5IHRoaXMgTGljZW5zZTsgdGhleSBhcmUg b3V0c2lkZSBpdHMgc2NvcGUuIFRoZSBhY3Qgb2YgcnVubmluZyB0aGUgUHJvZ3JhbQotaXMgbm90 IHJlc3RyaWN0ZWQsIGFuZCB0aGUgb3V0cHV0IGZyb20gdGhlIFByb2dyYW0gaXMgY292ZXJlZCBv bmx5IGlmIGl0cwotY29udGVudHMgY29uc3RpdHV0ZSBhIHdvcmsgYmFzZWQgb24gdGhlIFByb2dy YW0gKGluZGVwZW5kZW50IG9mIGhhdmluZyBiZWVuCi1tYWRlIGJ5IHJ1bm5pbmcgdGhlIFByb2dy YW0pLiBXaGV0aGVyIHRoYXQgaXMgdHJ1ZSBkZXBlbmRzIG9uIHdoYXQgdGhlIFByb2dyYW0KLWRv ZXMuCi0KLTEuIFlvdSBtYXkgY29weSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBjb3BpZXMgb2Yg dGhlIFByb2dyYW0ncyBzb3VyY2UgY29kZQotYXMgeW91IHJlY2VpdmUgaXQsIGluIGFueSBtZWRp dW0sIHByb3ZpZGVkIHRoYXQgeW91IGNvbnNwaWN1b3VzbHkgYW5kIGFwcHJvcHJpYXRlbHkKLXB1 Ymxpc2ggb24gZWFjaCBjb3B5IGFuIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2UgYW5kIGRp c2NsYWltZXIgb2Ygd2FycmFudHk7Ci1rZWVwIGludGFjdCBhbGwgdGhlIG5vdGljZXMgdGhhdCBy ZWZlciB0byB0aGlzIExpY2Vuc2UgYW5kIHRvIHRoZSBhYnNlbmNlCi1vZiBhbnkgd2FycmFudHk7 IGFuZCBnaXZlIGFueSBvdGhlciByZWNpcGllbnRzIG9mIHRoZSBQcm9ncmFtIGEgY29weSBvZiB0 aGlzCi1MaWNlbnNlIGFsb25nIHdpdGggdGhlIFByb2dyYW0uCi0KLVlvdSBtYXkgY2hhcmdlIGEg ZmVlIGZvciB0aGUgcGh5c2ljYWwgYWN0IG9mIHRyYW5zZmVycmluZyBhIGNvcHksIGFuZCB5b3UK LW1heSBhdCB5b3VyIG9wdGlvbiBvZmZlciB3YXJyYW50eSBwcm90ZWN0aW9uIGluIGV4Y2hhbmdl IGZvciBhIGZlZS4KLQotMi4gWW91IG1heSBtb2RpZnkgeW91ciBjb3B5IG9yIGNvcGllcyBvZiB0 aGUgUHJvZ3JhbSBvciBhbnkgcG9ydGlvbiBvZiBpdCwKLXRodXMgZm9ybWluZyBhIHdvcmsgYmFz ZWQgb24gdGhlIFByb2dyYW0sIGFuZCBjb3B5IGFuZCBkaXN0cmlidXRlIHN1Y2ggbW9kaWZpY2F0 aW9ucwotb3Igd29yayB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbiAxIGFib3ZlLCBwcm92aWRl ZCB0aGF0IHlvdSBhbHNvIG1lZXQgYWxsCi1vZiB0aGVzZSBjb25kaXRpb25zOgotCi1hKSBZb3Ug bXVzdCBjYXVzZSB0aGUgbW9kaWZpZWQgZmlsZXMgdG8gY2FycnkgcHJvbWluZW50IG5vdGljZXMg c3RhdGluZyB0aGF0Ci15b3UgY2hhbmdlZCB0aGUgZmlsZXMgYW5kIHRoZSBkYXRlIG9mIGFueSBj aGFuZ2UuCi0KLWIpIFlvdSBtdXN0IGNhdXNlIGFueSB3b3JrIHRoYXQgeW91IGRpc3RyaWJ1dGUg b3IgcHVibGlzaCwgdGhhdCBpbiB3aG9sZSBvcgotaW4gcGFydCBjb250YWlucyBvciBpcyBkZXJp dmVkIGZyb20gdGhlIFByb2dyYW0gb3IgYW55IHBhcnQgdGhlcmVvZiwgdG8gYmUKLWxpY2Vuc2Vk IGFzIGEgd2hvbGUgYXQgbm8gY2hhcmdlIHRvIGFsbCB0aGlyZCBwYXJ0aWVzIHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGlzCi1MaWNlbnNlLgotCi1jKSBJZiB0aGUgbW9kaWZpZWQgcHJvZ3JhbSBub3Jt YWxseSByZWFkcyBjb21tYW5kcyBpbnRlcmFjdGl2ZWx5IHdoZW4gcnVuLAoteW91IG11c3QgY2F1 c2UgaXQsIHdoZW4gc3RhcnRlZCBydW5uaW5nIGZvciBzdWNoIGludGVyYWN0aXZlIHVzZSBpbiB0 aGUgbW9zdAotb3JkaW5hcnkgd2F5LCB0byBwcmludCBvciBkaXNwbGF5IGFuIGFubm91bmNlbWVu dCBpbmNsdWRpbmcgYW4gYXBwcm9wcmlhdGUKLWNvcHlyaWdodCBub3RpY2UgYW5kIGEgbm90aWNl IHRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgKG9yIGVsc2UsIHNheWluZyB0aGF0Ci15b3UgcHJv dmlkZSBhIHdhcnJhbnR5KSBhbmQgdGhhdCB1c2VycyBtYXkgcmVkaXN0cmlidXRlIHRoZSBwcm9n cmFtIHVuZGVyCi10aGVzZSBjb25kaXRpb25zLCBhbmQgdGVsbGluZyB0aGUgdXNlciBob3cgdG8g dmlldyBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlLgotKEV4Y2VwdGlvbjogaWYgdGhlIFByb2dyYW0g aXRzZWxmIGlzIGludGVyYWN0aXZlIGJ1dCBkb2VzIG5vdCBub3JtYWxseSBwcmludAotc3VjaCBh biBhbm5vdW5jZW1lbnQsIHlvdXIgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSBpcyBub3QgcmVx dWlyZWQgdG8gcHJpbnQKLWFuIGFubm91bmNlbWVudC4pCi0KLVRoZXNlIHJlcXVpcmVtZW50cyBh cHBseSB0byB0aGUgbW9kaWZpZWQgd29yayBhcyBhIHdob2xlLiBJZiBpZGVudGlmaWFibGUKLXNl Y3Rpb25zIG9mIHRoYXQgd29yayBhcmUgbm90IGRlcml2ZWQgZnJvbSB0aGUgUHJvZ3JhbSwgYW5k IGNhbiBiZSByZWFzb25hYmx5Ci1jb25zaWRlcmVkIGluZGVwZW5kZW50IGFuZCBzZXBhcmF0ZSB3 b3JrcyBpbiB0aGVtc2VsdmVzLCB0aGVuIHRoaXMgTGljZW5zZSwKLWFuZCBpdHMgdGVybXMsIGRv IG5vdCBhcHBseSB0byB0aG9zZSBzZWN0aW9ucyB3aGVuIHlvdSBkaXN0cmlidXRlIHRoZW0gYXMK LXNlcGFyYXRlIHdvcmtzLiBCdXQgd2hlbiB5b3UgZGlzdHJpYnV0ZSB0aGUgc2FtZSBzZWN0aW9u cyBhcyBwYXJ0IG9mIGEgd2hvbGUKLXdoaWNoIGlzIGEgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3Jh bSwgdGhlIGRpc3RyaWJ1dGlvbiBvZiB0aGUgd2hvbGUgbXVzdCBiZQotb24gdGhlIHRlcm1zIG9m IHRoaXMgTGljZW5zZSwgd2hvc2UgcGVybWlzc2lvbnMgZm9yIG90aGVyIGxpY2Vuc2VlcyBleHRl bmQKLXRvIHRoZSBlbnRpcmUgd2hvbGUsIGFuZCB0aHVzIHRvIGVhY2ggYW5kIGV2ZXJ5IHBhcnQg cmVnYXJkbGVzcyBvZiB3aG8gd3JvdGUKLWl0LgotCi1UaHVzLCBpdCBpcyBub3QgdGhlIGludGVu dCBvZiB0aGlzIHNlY3Rpb24gdG8gY2xhaW0gcmlnaHRzIG9yIGNvbnRlc3QgeW91cgotcmlnaHRz IHRvIHdvcmsgd3JpdHRlbiBlbnRpcmVseSBieSB5b3U7IHJhdGhlciwgdGhlIGludGVudCBpcyB0 byBleGVyY2lzZQotdGhlIHJpZ2h0IHRvIGNvbnRyb2wgdGhlIGRpc3RyaWJ1dGlvbiBvZiBkZXJp dmF0aXZlIG9yIGNvbGxlY3RpdmUgd29ya3MgYmFzZWQKLW9uIHRoZSBQcm9ncmFtLgotCi1JbiBh ZGRpdGlvbiwgbWVyZSBhZ2dyZWdhdGlvbiBvZiBhbm90aGVyIHdvcmsgbm90IGJhc2VkIG9uIHRo ZSBQcm9ncmFtIHdpdGgKLXRoZSBQcm9ncmFtIChvciB3aXRoIGEgd29yayBiYXNlZCBvbiB0aGUg UHJvZ3JhbSkgb24gYSB2b2x1bWUgb2YgYSBzdG9yYWdlCi1vciBkaXN0cmlidXRpb24gbWVkaXVt IGRvZXMgbm90IGJyaW5nIHRoZSBvdGhlciB3b3JrIHVuZGVyIHRoZSBzY29wZSBvZiB0aGlzCi1M aWNlbnNlLgotCi0zLiBZb3UgbWF5IGNvcHkgYW5kIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gKG9y IGEgd29yayBiYXNlZCBvbiBpdCwgdW5kZXIgU2VjdGlvbgotMikgaW4gb2JqZWN0IGNvZGUgb3Ig ZXhlY3V0YWJsZSBmb3JtIHVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9ucyAxIGFuZCAyIGFib3Zl Ci1wcm92aWRlZCB0aGF0IHlvdSBhbHNvIGRvIG9uZSBvZiB0aGUgZm9sbG93aW5nOgotCi1hKSBB Y2NvbXBhbnkgaXQgd2l0aCB0aGUgY29tcGxldGUgY29ycmVzcG9uZGluZyBtYWNoaW5lLXJlYWRh YmxlIHNvdXJjZSBjb2RlLAotd2hpY2ggbXVzdCBiZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVy bXMgb2YgU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBvbiBhIG1lZGl1bQotY3VzdG9tYXJpbHkgdXNl ZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2U7IG9yLAotCi1iKSBBY2NvbXBhbnkgaXQgd2l0aCBh IHdyaXR0ZW4gb2ZmZXIsIHZhbGlkIGZvciBhdCBsZWFzdCB0aHJlZSB5ZWFycywgdG8gZ2l2ZQot YW55IHRoaXJkIHBhcnR5LCBmb3IgYSBjaGFyZ2Ugbm8gbW9yZSB0aGFuIHlvdXIgY29zdCBvZiBw aHlzaWNhbGx5IHBlcmZvcm1pbmcKLXNvdXJjZSBkaXN0cmlidXRpb24sIGEgY29tcGxldGUgbWFj aGluZS1yZWFkYWJsZSBjb3B5IG9mIHRoZSBjb3JyZXNwb25kaW5nCi1zb3VyY2UgY29kZSwgdG8g YmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zIDEgYW5kIDIgYWJvdmUg b24KLWEgbWVkaXVtIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlOyBv ciwKLQotYykgQWNjb21wYW55IGl0IHdpdGggdGhlIGluZm9ybWF0aW9uIHlvdSByZWNlaXZlZCBh cyB0byB0aGUgb2ZmZXIgdG8gZGlzdHJpYnV0ZQotY29ycmVzcG9uZGluZyBzb3VyY2UgY29kZS4g KFRoaXMgYWx0ZXJuYXRpdmUgaXMgYWxsb3dlZCBvbmx5IGZvciBub25jb21tZXJjaWFsCi1kaXN0 cmlidXRpb24gYW5kIG9ubHkgaWYgeW91IHJlY2VpdmVkIHRoZSBwcm9ncmFtIGluIG9iamVjdCBj b2RlIG9yIGV4ZWN1dGFibGUKLWZvcm0gd2l0aCBzdWNoIGFuIG9mZmVyLCBpbiBhY2NvcmQgd2l0 aCBTdWJzZWN0aW9uIGIgYWJvdmUuKQotCi1UaGUgc291cmNlIGNvZGUgZm9yIGEgd29yayBtZWFu cyB0aGUgcHJlZmVycmVkIGZvcm0gb2YgdGhlIHdvcmsgZm9yIG1ha2luZwotbW9kaWZpY2F0aW9u cyB0byBpdC4gRm9yIGFuIGV4ZWN1dGFibGUgd29yaywgY29tcGxldGUgc291cmNlIGNvZGUgbWVh bnMgYWxsCi10aGUgc291cmNlIGNvZGUgZm9yIGFsbCBtb2R1bGVzIGl0IGNvbnRhaW5zLCBwbHVz IGFueSBhc3NvY2lhdGVkIGludGVyZmFjZQotZGVmaW5pdGlvbiBmaWxlcywgcGx1cyB0aGUgc2Ny aXB0cyB1c2VkIHRvIGNvbnRyb2wgY29tcGlsYXRpb24gYW5kIGluc3RhbGxhdGlvbgotb2YgdGhl IGV4ZWN1dGFibGUuIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHRoZSBzb3VyY2Ug Y29kZSBkaXN0cmlidXRlZAotbmVlZCBub3QgaW5jbHVkZSBhbnl0aGluZyB0aGF0IGlzIG5vcm1h bGx5IGRpc3RyaWJ1dGVkIChpbiBlaXRoZXIgc291cmNlIG9yCi1iaW5hcnkgZm9ybSkgd2l0aCB0 aGUgbWFqb3IgY29tcG9uZW50cyAoY29tcGlsZXIsIGtlcm5lbCwgYW5kIHNvIG9uKSBvZiB0aGUK LW9wZXJhdGluZyBzeXN0ZW0gb24gd2hpY2ggdGhlIGV4ZWN1dGFibGUgcnVucywgdW5sZXNzIHRo YXQgY29tcG9uZW50IGl0c2VsZgotYWNjb21wYW5pZXMgdGhlIGV4ZWN1dGFibGUuCi0KLUlmIGRp c3RyaWJ1dGlvbiBvZiBleGVjdXRhYmxlIG9yIG9iamVjdCBjb2RlIGlzIG1hZGUgYnkgb2ZmZXJp bmcgYWNjZXNzIHRvCi1jb3B5IGZyb20gYSBkZXNpZ25hdGVkIHBsYWNlLCB0aGVuIG9mZmVyaW5n IGVxdWl2YWxlbnQgYWNjZXNzIHRvIGNvcHkgdGhlCi1zb3VyY2UgY29kZSBmcm9tIHRoZSBzYW1l IHBsYWNlIGNvdW50cyBhcyBkaXN0cmlidXRpb24gb2YgdGhlIHNvdXJjZSBjb2RlLAotZXZlbiB0 aG91Z2ggdGhpcmQgcGFydGllcyBhcmUgbm90IGNvbXBlbGxlZCB0byBjb3B5IHRoZSBzb3VyY2Ug YWxvbmcgd2l0aAotdGhlIG9iamVjdCBjb2RlLgotCi00LiBZb3UgbWF5IG5vdCBjb3B5LCBtb2Rp ZnksIHN1YmxpY2Vuc2UsIG9yIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gZXhjZXB0Ci1hcyBleHBy ZXNzbHkgcHJvdmlkZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiBBbnkgYXR0ZW1wdCBvdGhlcndpc2Ug dG8gY29weSwgbW9kaWZ5LAotc3VibGljZW5zZSBvciBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIGlz IHZvaWQsIGFuZCB3aWxsIGF1dG9tYXRpY2FsbHkgdGVybWluYXRlCi15b3VyIHJpZ2h0cyB1bmRl ciB0aGlzIExpY2Vuc2UuIEhvd2V2ZXIsIHBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVz LAotb3IgcmlnaHRzLCBmcm9tIHlvdSB1bmRlciB0aGlzIExpY2Vuc2Ugd2lsbCBub3QgaGF2ZSB0 aGVpciBsaWNlbnNlcyB0ZXJtaW5hdGVkCi1zbyBsb25nIGFzIHN1Y2ggcGFydGllcyByZW1haW4g aW4gZnVsbCBjb21wbGlhbmNlLgotCi01LiBZb3UgYXJlIG5vdCByZXF1aXJlZCB0byBhY2NlcHQg dGhpcyBMaWNlbnNlLCBzaW5jZSB5b3UgaGF2ZSBub3Qgc2lnbmVkCi1pdC4gSG93ZXZlciwgbm90 aGluZyBlbHNlIGdyYW50cyB5b3UgcGVybWlzc2lvbiB0byBtb2RpZnkgb3IgZGlzdHJpYnV0ZSB0 aGUKLVByb2dyYW0gb3IgaXRzIGRlcml2YXRpdmUgd29ya3MuIFRoZXNlIGFjdGlvbnMgYXJlIHBy b2hpYml0ZWQgYnkgbGF3IGlmIHlvdQotZG8gbm90IGFjY2VwdCB0aGlzIExpY2Vuc2UuIFRoZXJl Zm9yZSwgYnkgbW9kaWZ5aW5nIG9yIGRpc3RyaWJ1dGluZyB0aGUgUHJvZ3JhbQotKG9yIGFueSB3 b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtKSwgeW91IGluZGljYXRlIHlvdXIgYWNjZXB0YW5jZSBv ZiB0aGlzIExpY2Vuc2UKLXRvIGRvIHNvLCBhbmQgYWxsIGl0cyB0ZXJtcyBhbmQgY29uZGl0aW9u cyBmb3IgY29weWluZywgZGlzdHJpYnV0aW5nIG9yIG1vZGlmeWluZwotdGhlIFByb2dyYW0gb3Ig d29ya3MgYmFzZWQgb24gaXQuCi0KLTYuIEVhY2ggdGltZSB5b3UgcmVkaXN0cmlidXRlIHRoZSBQ cm9ncmFtIChvciBhbnkgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSksCi10aGUgcmVjaXBpZW50 IGF1dG9tYXRpY2FsbHkgcmVjZWl2ZXMgYSBsaWNlbnNlIGZyb20gdGhlIG9yaWdpbmFsIGxpY2Vu c29yCi10byBjb3B5LCBkaXN0cmlidXRlIG9yIG1vZGlmeSB0aGUgUHJvZ3JhbSBzdWJqZWN0IHRv IHRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLgotWW91IG1heSBub3QgaW1wb3NlIGFueSBmdXJ0 aGVyIHJlc3RyaWN0aW9ucyBvbiB0aGUgcmVjaXBpZW50cycgZXhlcmNpc2Ugb2YKLXRoZSByaWdo dHMgZ3JhbnRlZCBoZXJlaW4uIFlvdSBhcmUgbm90IHJlc3BvbnNpYmxlIGZvciBlbmZvcmNpbmcg Y29tcGxpYW5jZQotYnkgdGhpcmQgcGFydGllcyB0byB0aGlzIExpY2Vuc2UuCi0KLTcuIElmLCBh cyBhIGNvbnNlcXVlbmNlIG9mIGEgY291cnQganVkZ21lbnQgb3IgYWxsZWdhdGlvbiBvZiBwYXRl bnQgaW5mcmluZ2VtZW50Ci1vciBmb3IgYW55IG90aGVyIHJlYXNvbiAobm90IGxpbWl0ZWQgdG8g cGF0ZW50IGlzc3VlcyksIGNvbmRpdGlvbnMgYXJlIGltcG9zZWQKLW9uIHlvdSAod2hldGhlciBi eSBjb3VydCBvcmRlciwgYWdyZWVtZW50IG9yIG90aGVyd2lzZSkgdGhhdCBjb250cmFkaWN0IHRo ZQotY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UsIHRoZXkgZG8gbm90IGV4Y3VzZSB5b3UgZnJv bSB0aGUgY29uZGl0aW9ucyBvZgotdGhpcyBMaWNlbnNlLiBJZiB5b3UgY2Fubm90IGRpc3RyaWJ1 dGUgc28gYXMgdG8gc2F0aXNmeSBzaW11bHRhbmVvdXNseSB5b3VyCi1vYmxpZ2F0aW9ucyB1bmRl ciB0aGlzIExpY2Vuc2UgYW5kIGFueSBvdGhlciBwZXJ0aW5lbnQgb2JsaWdhdGlvbnMsIHRoZW4g YXMKLWEgY29uc2VxdWVuY2UgeW91IG1heSBub3QgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSBhdCBh bGwuIEZvciBleGFtcGxlLCBpZiBhCi1wYXRlbnQgbGljZW5zZSB3b3VsZCBub3QgcGVybWl0IHJv eWFsdHktZnJlZSByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZ3JhbQotYnkgYWxsIHRob3NlIHdo byByZWNlaXZlIGNvcGllcyBkaXJlY3RseSBvciBpbmRpcmVjdGx5IHRocm91Z2ggeW91LCB0aGVu IHRoZQotb25seSB3YXkgeW91IGNvdWxkIHNhdGlzZnkgYm90aCBpdCBhbmQgdGhpcyBMaWNlbnNl IHdvdWxkIGJlIHRvIHJlZnJhaW4gZW50aXJlbHkKLWZyb20gZGlzdHJpYnV0aW9uIG9mIHRoZSBQ cm9ncmFtLgotCi1JZiBhbnkgcG9ydGlvbiBvZiB0aGlzIHNlY3Rpb24gaXMgaGVsZCBpbnZhbGlk IG9yIHVuZW5mb3JjZWFibGUgdW5kZXIgYW55Ci1wYXJ0aWN1bGFyIGNpcmN1bXN0YW5jZSwgdGhl IGJhbGFuY2Ugb2YgdGhlIHNlY3Rpb24gaXMgaW50ZW5kZWQgdG8gYXBwbHkgYW5kCi10aGUgc2Vj dGlvbiBhcyBhIHdob2xlIGlzIGludGVuZGVkIHRvIGFwcGx5IGluIG90aGVyIGNpcmN1bXN0YW5j ZXMuCi0KLUl0IGlzIG5vdCB0aGUgcHVycG9zZSBvZiB0aGlzIHNlY3Rpb24gdG8gaW5kdWNlIHlv dSB0byBpbmZyaW5nZSBhbnkgcGF0ZW50cwotb3Igb3RoZXIgcHJvcGVydHkgcmlnaHQgY2xhaW1z IG9yIHRvIGNvbnRlc3QgdmFsaWRpdHkgb2YgYW55IHN1Y2ggY2xhaW1zOwotdGhpcyBzZWN0aW9u IGhhcyB0aGUgc29sZSBwdXJwb3NlIG9mIHByb3RlY3RpbmcgdGhlIGludGVncml0eSBvZiB0aGUg ZnJlZQotc29mdHdhcmUgZGlzdHJpYnV0aW9uIHN5c3RlbSwgd2hpY2ggaXMgaW1wbGVtZW50ZWQg YnkgcHVibGljIGxpY2Vuc2UgcHJhY3RpY2VzLgotTWFueSBwZW9wbGUgaGF2ZSBtYWRlIGdlbmVy b3VzIGNvbnRyaWJ1dGlvbnMgdG8gdGhlIHdpZGUgcmFuZ2Ugb2Ygc29mdHdhcmUKLWRpc3RyaWJ1 dGVkIHRocm91Z2ggdGhhdCBzeXN0ZW0gaW4gcmVsaWFuY2Ugb24gY29uc2lzdGVudCBhcHBsaWNh dGlvbiBvZiB0aGF0Ci1zeXN0ZW07IGl0IGlzIHVwIHRvIHRoZSBhdXRob3IvZG9ub3IgdG8gZGVj aWRlIGlmIGhlIG9yIHNoZSBpcyB3aWxsaW5nIHRvCi1kaXN0cmlidXRlIHNvZnR3YXJlIHRocm91 Z2ggYW55IG90aGVyIHN5c3RlbSBhbmQgYSBsaWNlbnNlZSBjYW5ub3QgaW1wb3NlCi10aGF0IGNo b2ljZS4KLQotVGhpcyBzZWN0aW9uIGlzIGludGVuZGVkIHRvIG1ha2UgdGhvcm91Z2hseSBjbGVh ciB3aGF0IGlzIGJlbGlldmVkIHRvIGJlIGEKLWNvbnNlcXVlbmNlIG9mIHRoZSByZXN0IG9mIHRo aXMgTGljZW5zZS4KLQotOC4gSWYgdGhlIGRpc3RyaWJ1dGlvbiBhbmQvb3IgdXNlIG9mIHRoZSBQ cm9ncmFtIGlzIHJlc3RyaWN0ZWQgaW4gY2VydGFpbgotY291bnRyaWVzIGVpdGhlciBieSBwYXRl bnRzIG9yIGJ5IGNvcHlyaWdodGVkIGludGVyZmFjZXMsIHRoZSBvcmlnaW5hbCBjb3B5cmlnaHQK LWhvbGRlciB3aG8gcGxhY2VzIHRoZSBQcm9ncmFtIHVuZGVyIHRoaXMgTGljZW5zZSBtYXkgYWRk IGFuIGV4cGxpY2l0IGdlb2dyYXBoaWNhbAotZGlzdHJpYnV0aW9uIGxpbWl0YXRpb24gZXhjbHVk aW5nIHRob3NlIGNvdW50cmllcywgc28gdGhhdCBkaXN0cmlidXRpb24gaXMKLXBlcm1pdHRlZCBv bmx5IGluIG9yIGFtb25nIGNvdW50cmllcyBub3QgdGh1cyBleGNsdWRlZC4gSW4gc3VjaCBjYXNl LCB0aGlzCi1MaWNlbnNlIGluY29ycG9yYXRlcyB0aGUgbGltaXRhdGlvbiBhcyBpZiB3cml0dGVu IGluIHRoZSBib2R5IG9mIHRoaXMgTGljZW5zZS4KLQotOS4gVGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiBtYXkgcHVibGlzaCByZXZpc2VkIGFuZC9vciBuZXcgdmVyc2lvbnMgb2YKLXRoZSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZyb20gdGltZSB0byB0aW1lLiBTdWNoIG5ldyB2ZXJzaW9u cyB3aWxsIGJlIHNpbWlsYXIKLWluIHNwaXJpdCB0byB0aGUgcHJlc2VudCB2ZXJzaW9uLCBidXQg bWF5IGRpZmZlciBpbiBkZXRhaWwgdG8gYWRkcmVzcyBuZXcKLXByb2JsZW1zIG9yIGNvbmNlcm5z LgotCi1FYWNoIHZlcnNpb24gaXMgZ2l2ZW4gYSBkaXN0aW5ndWlzaGluZyB2ZXJzaW9uIG51bWJl ci4gSWYgdGhlIFByb2dyYW0gc3BlY2lmaWVzCi1hIHZlcnNpb24gbnVtYmVyIG9mIHRoaXMgTGlj ZW5zZSB3aGljaCBhcHBsaWVzIHRvIGl0IGFuZCAiYW55IGxhdGVyIHZlcnNpb24iLAoteW91IGhh dmUgdGhlIG9wdGlvbiBvZiBmb2xsb3dpbmcgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGVpdGhl ciBvZiB0aGF0IHZlcnNpb24KLW9yIG9mIGFueSBsYXRlciB2ZXJzaW9uIHB1Ymxpc2hlZCBieSB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLiBJZiB0aGUKLVByb2dyYW0gZG9lcyBub3Qgc3Bl Y2lmeSBhIHZlcnNpb24gbnVtYmVyIG9mIHRoaXMgTGljZW5zZSwgeW91IG1heSBjaG9vc2UKLWFu eSB2ZXJzaW9uIGV2ZXIgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24u Ci0KLTEwLiBJZiB5b3Ugd2lzaCB0byBpbmNvcnBvcmF0ZSBwYXJ0cyBvZiB0aGUgUHJvZ3JhbSBp bnRvIG90aGVyIGZyZWUgcHJvZ3JhbXMKLXdob3NlIGRpc3RyaWJ1dGlvbiBjb25kaXRpb25zIGFy ZSBkaWZmZXJlbnQsIHdyaXRlIHRvIHRoZSBhdXRob3IgdG8gYXNrIGZvcgotcGVybWlzc2lvbi4g Rm9yIHNvZnR3YXJlIHdoaWNoIGlzIGNvcHlyaWdodGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sCi13cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB3ZSBzb21l dGltZXMgbWFrZSBleGNlcHRpb25zIGZvciB0aGlzLgotT3VyIGRlY2lzaW9uIHdpbGwgYmUgZ3Vp ZGVkIGJ5IHRoZSB0d28gZ29hbHMgb2YgcHJlc2VydmluZyB0aGUgZnJlZSBzdGF0dXMKLW9mIGFs bCBkZXJpdmF0aXZlcyBvZiBvdXIgZnJlZSBzb2Z0d2FyZSBhbmQgb2YgcHJvbW90aW5nIHRoZSBz aGFyaW5nIGFuZCByZXVzZQotb2Ygc29mdHdhcmUgZ2VuZXJhbGx5LgotCi0gICBOTyBXQVJSQU5U WQotCi0xMS4gQkVDQVVTRSBUSEUgUFJPR1JBTSBJUyBMSUNFTlNFRCBGUkVFIE9GIENIQVJHRSwg VEhFUkUgSVMgTk8gV0FSUkFOVFkgRk9SCi1USEUgUFJPR1JBTSwgVE8gVEhFIEVYVEVOVCBQRVJN SVRURUQgQlkgQVBQTElDQUJMRSBMQVcuIEVYQ0VQVCBXSEVOIE9USEVSV0lTRQotU1RBVEVEIElO IFdSSVRJTkcgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORC9PUiBPVEhFUiBQQVJUSUVTIFBST1ZJ REUgVEhFIFBST0dSQU0KLSJBUyBJUyIgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRUlU SEVSIEVYUFJFU1NFRCBPUiBJTVBMSUVELCBJTkNMVURJTkcsCi1CVVQgTk9UIExJTUlURUQgVE8s IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTCi1G T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFRIRSBFTlRJUkUgUklTSyBBUyBUTyBUSEUgUVVBTElU WSBBTkQgUEVSRk9STUFOQ0UKLU9GIFRIRSBQUk9HUkFNIElTIFdJVEggWU9VLiBTSE9VTEQgVEhF IFBST0dSQU0gUFJPVkUgREVGRUNUSVZFLCBZT1UgQVNTVU1FCi1USEUgQ09TVCBPRiBBTEwgTkVD RVNTQVJZIFNFUlZJQ0lORywgUkVQQUlSIE9SIENPUlJFQ1RJT04uCi0KLTEyLiBJTiBOTyBFVkVO VCBVTkxFU1MgUkVRVUlSRUQgQlkgQVBQTElDQUJMRSBMQVcgT1IgQUdSRUVEIFRPIElOIFdSSVRJ TkcKLVdJTEwgQU5ZIENPUFlSSUdIVCBIT0xERVIsIE9SIEFOWSBPVEhFUiBQQVJUWSBXSE8gTUFZ IE1PRElGWSBBTkQvT1IgUkVESVNUUklCVVRFCi1USEUgUFJPR1JBTSBBUyBQRVJNSVRURUQgQUJP VkUsIEJFIExJQUJMRSBUTyBZT1UgRk9SIERBTUFHRVMsIElOQ0xVRElORyBBTlkKLUdFTkVSQUws IFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEFSSVNJTkcgT1VU IE9GIFRIRSBVU0UKLU9SIElOQUJJTElUWSBUTyBVU0UgVEhFIFBST0dSQU0gKElOQ0xVRElORyBC VVQgTk9UIExJTUlURUQgVE8gTE9TUyBPRiBEQVRBCi1PUiBEQVRBIEJFSU5HIFJFTkRFUkVEIElO QUNDVVJBVEUgT1IgTE9TU0VTIFNVU1RBSU5FRCBCWSBZT1UgT1IgVEhJUkQgUEFSVElFUwotT1Ig QSBGQUlMVVJFIE9GIFRIRSBQUk9HUkFNIFRPIE9QRVJBVEUgV0lUSCBBTlkgT1RIRVIgUFJPR1JB TVMpLCBFVkVOIElGIFNVQ0gKLUhPTERFUiBPUiBPVEhFUiBQQVJUWSBIQVMgQkVFTiBBRFZJU0VE IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuCi1FTkQgT0YgVEVSTVMgQU5EIENP TkRJVElPTlMKLQotSG93IHRvIEFwcGx5IFRoZXNlIFRlcm1zIHRvIFlvdXIgTmV3IFByb2dyYW1z Ci0KLUlmIHlvdSBkZXZlbG9wIGEgbmV3IHByb2dyYW0sIGFuZCB5b3Ugd2FudCBpdCB0byBiZSBv ZiB0aGUgZ3JlYXRlc3QgcG9zc2libGUKLXVzZSB0byB0aGUgcHVibGljLCB0aGUgYmVzdCB3YXkg dG8gYWNoaWV2ZSB0aGlzIGlzIHRvIG1ha2UgaXQgZnJlZSBzb2Z0d2FyZQotd2hpY2ggZXZlcnlv bmUgY2FuIHJlZGlzdHJpYnV0ZSBhbmQgY2hhbmdlIHVuZGVyIHRoZXNlIHRlcm1zLgotCi1UbyBk byBzbywgYXR0YWNoIHRoZSBmb2xsb3dpbmcgbm90aWNlcyB0byB0aGUgcHJvZ3JhbS4gSXQgaXMg c2FmZXN0IHRvIGF0dGFjaAotdGhlbSB0byB0aGUgc3RhcnQgb2YgZWFjaCBzb3VyY2UgZmlsZSB0 byBtb3N0IGVmZmVjdGl2ZWx5IGNvbnZleSB0aGUgZXhjbHVzaW9uCi1vZiB3YXJyYW50eTsgYW5k IGVhY2ggZmlsZSBzaG91bGQgaGF2ZSBhdCBsZWFzdCB0aGUgImNvcHlyaWdodCIgbGluZSBhbmQg YQotcG9pbnRlciB0byB3aGVyZSB0aGUgZnVsbCBub3RpY2UgaXMgZm91bmQuCi0KLTxvbmUgbGlu ZSB0byBnaXZlIHRoZSBwcm9ncmFtJ3MgbmFtZSBhbmQgYW4gaWRlYSBvZiB3aGF0IGl0IGRvZXMu PgotCi1Db3B5cmlnaHQgKEMpIDx5eXl5PiA8bmFtZSBvZiBhdXRob3I+Ci0KLVRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 IGl0IHVuZGVyCi10aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQotRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIKLXZlcnNp b24uCi0KLVRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAotQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKLUZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgotCi1Zb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoCi10aGlzIHByb2dyYW07IGlmIG5v dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts aW4KLVN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotCi1B bHNvIGFkZCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY29udGFjdCB5b3UgYnkgZWxlY3Ryb25pYyBh bmQgcGFwZXIgbWFpbC4KLQotSWYgdGhlIHByb2dyYW0gaXMgaW50ZXJhY3RpdmUsIG1ha2UgaXQg b3V0cHV0IGEgc2hvcnQgbm90aWNlIGxpa2UgdGhpcyB3aGVuCi1pdCBzdGFydHMgaW4gYW4gaW50 ZXJhY3RpdmUgbW9kZToKLQotR25vbW92aXNpb24gdmVyc2lvbiA2OSwgQ29weXJpZ2h0IChDKSB5 ZWFyIG5hbWUgb2YgYXV0aG9yIEdub21vdmlzaW9uIGNvbWVzCi13aXRoIEFCU09MVVRFTFkgTk8g V0FSUkFOVFk7IGZvciBkZXRhaWxzIHR5cGUgYHNob3cgdycuIFRoaXMgaXMgZnJlZSBzb2Z0d2Fy ZSwKLWFuZCB5b3UgYXJlIHdlbGNvbWUgdG8gcmVkaXN0cmlidXRlIGl0IHVuZGVyIGNlcnRhaW4g Y29uZGl0aW9uczsgdHlwZSBgc2hvdwotYycgZm9yIGRldGFpbHMuCi0KLVRoZSBoeXBvdGhldGlj YWwgY29tbWFuZHMgYHNob3cgdycgYW5kIGBzaG93IGMnIHNob3VsZCBzaG93IHRoZSBhcHByb3By aWF0ZQotcGFydHMgb2YgdGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuIE9mIGNvdXJzZSwgdGhl IGNvbW1hbmRzIHlvdSB1c2UgbWF5IGJlCi1jYWxsZWQgc29tZXRoaW5nIG90aGVyIHRoYW4gYHNo b3cgdycgYW5kIGBzaG93IGMnOyB0aGV5IGNvdWxkIGV2ZW4gYmUgbW91c2UtY2xpY2tzCi1vciBt ZW51IGl0ZW1zLS13aGF0ZXZlciBzdWl0cyB5b3VyIHByb2dyYW0uCi0KLVlvdSBzaG91bGQgYWxz byBnZXQgeW91ciBlbXBsb3llciAoaWYgeW91IHdvcmsgYXMgYSBwcm9ncmFtbWVyKSBvciB5b3Vy IHNjaG9vbCwKLWlmIGFueSwgdG8gc2lnbiBhICJjb3B5cmlnaHQgZGlzY2xhaW1lciIgZm9yIHRo ZSBwcm9ncmFtLCBpZiBuZWNlc3NhcnkuIEhlcmUKLWlzIGEgc2FtcGxlOyBhbHRlciB0aGUgbmFt ZXM6Ci0KLVlveW9keW5lLCBJbmMuLCBoZXJlYnkgZGlzY2xhaW1zIGFsbCBjb3B5cmlnaHQgaW50 ZXJlc3QgaW4gdGhlIHByb2dyYW0gYEdub21vdmlzaW9uJwotKHdoaWNoIG1ha2VzIHBhc3NlcyBh dCBjb21waWxlcnMpIHdyaXR0ZW4gYnkgSmFtZXMgSGFja2VyLgotCi08c2lnbmF0dXJlIG9mIFR5 IENvb24+LCAxIEFwcmlsIDE5ODkgVHkgQ29vbiwgUHJlc2lkZW50IG9mIFZpY2UgVGhpcyBHZW5l cmFsCi1QdWJsaWMgTGljZW5zZSBkb2VzIG5vdCBwZXJtaXQgaW5jb3Jwb3JhdGluZyB5b3VyIHBy b2dyYW0gaW50byBwcm9wcmlldGFyeQotcHJvZ3JhbXMuIElmIHlvdXIgcHJvZ3JhbSBpcyBhIHN1 YnJvdXRpbmUgbGlicmFyeSwgeW91IG1heSBjb25zaWRlciBpdCBtb3JlCi11c2VmdWwgdG8gcGVy bWl0IGxpbmtpbmcgcHJvcHJpZXRhcnkgYXBwbGljYXRpb25zIHdpdGggdGhlIGxpYnJhcnkuIElm IHRoaXMKLWlzIHdoYXQgeW91IHdhbnQgdG8gZG8sIHVzZSB0aGUgR05VIExlc3NlciBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGluc3RlYWQKLW9mIHRoaXMgTGljZW5zZS4KZGlmZiAtLWdpdCBhL1JF QURNRS5tZCBiL1JFQURNRS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4z NWU4MzBlCi0tLSAvZGV2L251bGwKKysrIGIvUkVBRE1FLm1kCkBAIC0wLDAgKzEsMyBAQAorVGhp cyBwcm9qZWN0IGlzIG5vIGxvbmdlciBtYWludGFpbmVkIHNpbmNlIGl0IHdhcyBvbmx5IHJlbGV2 YW50IGluIGFuIFgxMSBzZXNzaW9uLgorCitUaGUgbGFzdCBtYWludGFpbmVkIHZlcnNpb24gaXMg aW4gdGhlIFBsYXNtYS82LjcgYnJhbmNoLgpkaWZmIC0tZ2l0IGEvZG9jL0NNYWtlTGlzdHMudHh0 IGIvZG9jL0NNYWtlTGlzdHMudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMjk5 MDQ2Li4wMDAwMDAwCi0tLSBhL2RvYy9DTWFrZUxpc3RzLnR4dAorKysgL2Rldi9udWxsCkBAIC0x ICswLDAgQEAKLWtkb2N0b29sc19jcmVhdGVfaGFuZGJvb2soaW5kZXguZG9jYm9vayBJTlNUQUxM X0RFU1RJTkFUSU9OICR7S0RFX0lOU1RBTExfRE9DQlVORExFRElSfS9lbiBTVUJESVIga2NvbnRy b2wva2dhbW1hKQpkaWZmIC0tZ2l0IGEvZG9jL2luZGV4LmRvY2Jvb2sgYi9kb2MvaW5kZXguZG9j Ym9vawpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWMwYjIwYi4uMDAwMDAwMAotLS0g YS9kb2MvaW5kZXguZG9jYm9vaworKysgL2Rldi9udWxsCkBAIC0xLDE2NCArMCwwIEBACi08P3ht bCB2ZXJzaW9uPSIxLjAiID8+Ci08IURPQ1RZUEUgYXJ0aWNsZSBQVUJMSUMgIi0vL0tERS8vRFRE IERvY0Jvb2sgWE1MIFY0LjUtQmFzZWQgVmFyaWFudCBWMS4xLy9FTiIKLSAiZHRkL2tkZWRieDQ1 LmR0ZCIgWwotICA8IUVOVElUWSAlIGFkZGluZGV4ICJJR05PUkUiPgotICA8IUVOVElUWSAlIEVu Z2xpc2ggIklOQ0xVREUiPjwhLS0gY2hhbmdlIGxhbmd1YWdlIG9ubHkgaGVyZSAtLT4KLV0+Ci0K LTxhcnRpY2xlIGlkPSJrZ2FtbWEiIGxhbmc9IiZsYW5ndWFnZTsiPgotPHRpdGxlPk1vbml0b3Ig R2FtbWE8L3RpdGxlPgotCi08YXJ0aWNsZWluZm8+Ci08YXV0aG9yZ3JvdXA+Ci08YXV0aG9yPgot PGZpcnN0bmFtZT5NaWNoYWVsPC9maXJzdG5hbWU+Ci08c3VybmFtZT52Lk9zdGhlaW08L3N1cm5h bWU+Ci08YWZmaWxpYXRpb24+Ci08YWRkcmVzcz48ZW1haWw+b3N0aGVpbW1AdXNlcnMuYmVybGlv cy5kZTwvZW1haWw+PC9hZGRyZXNzPgotPC9hZmZpbGlhdGlvbj4KLTwvYXV0aG9yPgotPCEtLSBU UkFOUzpST0xFU19PRl9UUkFOU0xBVE9SUyAtLT4KLTwvYXV0aG9yZ3JvdXA+Ci0KLTxkYXRlPjIw MTUtMDctMzE8L2RhdGU+Ci08cmVsZWFzZWluZm8+UGxhc21hIDUuNDwvcmVsZWFzZWluZm8+Ci0K LTxrZXl3b3Jkc2V0PgotPGtleXdvcmQ+S0RFPC9rZXl3b3JkPgotPGtleXdvcmQ+U3lzdGVtIFNl dHRpbmdzPC9rZXl3b3JkPgotPGtleXdvcmQ+TW9uaXRvcjwva2V5d29yZD4KLTxrZXl3b3JkPkNh bGlicmF0aW9uPC9rZXl3b3JkPgotPGtleXdvcmQ+R2FtbWE8L2tleXdvcmQ+Ci08L2tleXdvcmRz ZXQ+Ci0KLTwvYXJ0aWNsZWluZm8+Ci0KLTxzZWN0MSBpZD0iaW50cm9kdWN0aW9uIj4KLTx0aXRs ZT5JbnRyb2R1Y3Rpb248L3RpdGxlPgotCi08cGFyYT5UaGlzIG1vZHVsZSBpcyBhIHRvb2wgZm9y IG1vbml0b3IgZ2FtbWEgY29ycmVjdGlvbi4gIFdpdGggcHJvcGVyIGdhbW1hCi1zZXR0aW5ncywg eW91ciBkaXNwbGF5ICh3ZWJzaXRlcywgaW1hZ2VzLCAmZXRjOykgd2lsbCBsb29rIHRoZSBzYW1l IG9uIHlvdXIKLW1vbml0b3IgYXMgb24gb3RoZXIgbW9uaXRvcnMuPC9wYXJhPgotPHBhcmE+SXQg YWxsb3dzIHlvdSB0byBhbHRlciB0aGUgbW9uaXRvcidzIGdhbW1hIGNvcnJlY3Rpb24gb2YgdGhl Ci0mWC1TZXJ2ZXI7LiBCdXQgdGhhdCdzIG5vdCBhbGwgdG8gZG8uIEZvciBnb29kIHJlc3VsdHMg eW91IGhhdmUgdG8gc2V0IHRoZQotY29ycmVjdCBicmlnaHRuZXNzLCBjb250cmFzdCBhbmQgY29s b3IgYmFsYW5jZSBvZiB5b3VyIG1vbml0b3IuIFRoaXMKLW1heSBiZSBkaWZmaWN1bHQgYW5kIHlv dSBoYXZlIHRvIHJlcGVhdCBldmVyeSBzdGVwIHNldmVyYWwgdGltZXMuCi1Gb3IgcGVyZmVjdCBy ZXN1bHRzIHlvdSBuZWVkIHJlYWxseSBnb29kIChhbmQgZXhwZW5zaXZlKSBoYXJkd2FyZS48L3Bh cmE+Ci08cGFyYT5Vc2UgdGhlIGZvdXIgc2xpZGVycyB0byBkZWZpbmUgdGhlIGdhbW1hIGNvcnJl Y3Rpb24gZWl0aGVyIGFzIGEgc2luZ2xlCi12YWx1ZSwgb3Igc2VwYXJhdGVseSBmb3IgdGhlIHJl ZCwgZ3JlZW4gYW5kIGJsdWUgY29tcG9uZW50cy4gVGhlICZYLVNlcnZlcjsKLWRlZmF1bHQgc2V0 dGluZyBmb3IgZ2FtbWEgaXMgMS4wMCAoJk1hYzsgMS44MCwgV2luWFggMi4yMCkuIFRoZSB0ZXN0 IGltYWdlcyBoZWxwCi15b3UgdG8gZmluZCBwcm9wZXIgc2V0dGluZ3MuPC9wYXJhPgotPHBhcmE+ VG8gc3RvcmUgdGhlIGdhbW1hIHNldHRpbmdzIHN5c3RlbSB3aWRlLCBlbmFibGUgdGhlIG9wdGlv biA8Z3VpbGFiZWw+U2F2ZQotc2V0dGluZ3Mgc3lzdGVtIHdpZGU8L2d1aWxhYmVsPi4gVGhlIHN5 c3RlbSBzZXR0aW5ncyB3aWxsIGJlIHJlc3RvcmVkIGF0IG5leHQgJlgtU2VydmVyOwotc3RhcnR1 cC4gWW91IG5lZWQgcm9vdCBhY2Nlc3MgdG8gdXNlIHRoaXMgb3B0aW9uLiBVc2UgdGhpcyBpZiB5 b3Ugd2FudCB0bwotY29ycmVjdCB0aGUgZ2FtbWEgc2V0dGluZ3MgZm9yIGFsbCB1c2VycyBhbmQg Z3JhcGhpY2FsIGVudmlyb25tZW50cyBvbiB0aGlzCi1tYWNoaW5lLjwvcGFyYT4KLTxwYXJhPlRv IHN0b3JlIHRoZSBnYW1tYSBzZXR0aW5ncyB0byB5b3VyIHBlcnNvbmFsICZwbGFzbWE7IGNvbmZp Z3VyYXRpb24sIGRvIG5vdAotZW5hYmxlIHRoYXQgb3B0aW9uLiBUaGUgdXNlciBzZXR0aW5ncyB3 aWxsIGJlIHJlc3RvcmVkIGF0IG5leHQgJnBsYXNtYTsgc3RhcnR1cCBhbmQKLXJlcGxhY2UgdGVt cG9yYXJ5IHRoZSBzeXN0ZW0gZ2FtbWEgc2V0dGluZ3MuIFRoZSBzeXN0ZW0gc2V0dGluZ3MgYXJl IG5vdCByZW1vdmVkIGJ5Ci10aGF0IGFuZCB3aWxsIGJlIHJlc3RvcmVkIGF0IG5leHQgJlgtU2Vy dmVyOyBzdGFydHVwLjwvcGFyYT4KLTxwYXJhPk9uIG11bHRpIGhlYWQgc3lzdGVtcywgc2VsZWN0 IHRoZSBzY3JlZW4geW91IHdhbnQgdG8gYWx0ZXIgd2l0aCB0aGUgY29tYm8KLWJveC4gVGhpcyB3 aWxsIGFsc28gd29yayB3aXRoIHhpbmVyYW1hIGVuYWJsZWQuIElmIHlvdSB3YW50IHRvIHNldCBh bGwgc2NyZWVucwotdG8gdGhlIHNhbWUgZ2FtbWEgdmFsdWVzLCBlbmFibGUgdGhlIDxndWlsYWJl bD5TeW5jIHNjcmVlbnM8L2d1aWxhYmVsPiBvcHRpb24uIE9uIHN5c3RlbXMgd2l0aCBvbmx5Ci1v bmUgc2NyZWVuIHRoaXMgb3B0aW9uIHdpbGwgdGFrZSBubyBlZmZlY3QuPC9wYXJhPgotPC9zZWN0 MT4KLQotPHNlY3QxIGlkPSJ1c2luZ190ZXN0X2ltYWdlcyI+Ci08dGl0bGU+VXNpbmcgdGhlIFRl c3QgSW1hZ2VzPC90aXRsZT4KLTxwYXJhPlRoaXMgbW9kdWxlIHByb3ZpZGVzIHNpeCBkaWZmZXJl bnQgdGVzdCBwaWN0dXJlcyBzZWxlY3RhYmxlIGZyb20gdGhlIGRyb3AgZG93biBib3ggYXQgdGhl IHRvcCBvZiB0aGUgd2luZG93LjwvcGFyYT4KLTxzZWN0MiBpZD0iZ3JleSI+Ci08dGl0bGU+R3Jl eSBTY2FsZSBUZXN0IEltYWdlPC90aXRsZT4KLTxwYXJhPllvdSBzaG91bGQgYmUgYWJsZSB0byBz ZWUgdGhlIGZvbGxvd2luZzo8L3BhcmE+Ci08aXRlbWl6ZWRsaXN0PgotPGxpc3RpdGVtPgotPHBh cmE+QSBncmF5c2NhbGUgd2l0aCAyMCBkaWZmZXJlbnQgc2VjdGlvbnM8L3BhcmE+Ci08L2xpc3Rp dGVtPgotPGxpc3RpdGVtPgotPHBhcmE+VGhlIGRhcmtlc3Qgc2VjdGlvbiBwdXJlIGJsYWNrPC9w YXJhPgotPC9saXN0aXRlbT4KLTxsaXN0aXRlbT4KLTxwYXJhPlRoZSBsaWdodGVzdCBzZWN0aW9u IHB1cmUgd2hpdGU8L3BhcmE+Ci08L2xpc3RpdGVtPgotPGxpc3RpdGVtPgotPHBhcmE+Tm8gaGlu dCBvZiBhbnkgY29sb3IgaW4gdGhlIGdyYXkgdG9uZXM8L3BhcmE+Ci08L2xpc3RpdGVtPgotPC9p dGVtaXplZGxpc3Q+Ci0KLTxwYXJhPklmIHlvdSBjYW5ub3Qgc2VlIGFsbCBvZiB0aGUgMjAgc2Vj dGlvbnMsIHVzZSB5b3VyIG1vbml0b3JzIGNvbnRyYXN0IHNldHRpbmdzCi1vciB0aGUgPGd1aWxh YmVsPkdhbW1hOjwvZ3VpbGFiZWw+IHNsaWRlciB0byBjb3JyZWN0IHRoaXMuIElmIGJsYWNrIGlz IG5vdCBwdXJlIGJsYWNrLAotdHJ5IHRvIGRhcmtlbiB0aGUgbW9uaXRvciwgaWYgd2hpdGUgaXMg bm90IHB1cmUgd2hpdGUsIHRyeSB0byBsaWdodGVuCi1pdC4gSWYgeW91IHNlZSBhbnkgY29sb3Jz IGluIHRoZSBncmF5IHRvbmVzIGFsdGVyIHRoZSBjb2xvciBiYWxhbmNlIHNldHRpbmdzIG9mCi15 b3VyIG1vbml0b3Igb3IgdGhlIDxndWlsYWJlbD5SZWQ6PC9ndWlsYWJlbD4sIDxndWlsYWJlbD5H cmVlbjo8L2d1aWxhYmVsPiBhbmQgPGd1aWxhYmVsPkJsdWU6PC9ndWlsYWJlbD4gc2xpZGVycy48 L3BhcmE+Ci08L3NlY3QyPgotCi08c2VjdDIgaWQ9IlJHQi1TY2FsZSI+Ci08dGl0bGU+UkdCIFNj YWxlIFRlc3QgUGljdHVyZTwvdGl0bGU+Ci08cGFyYT4KLVlvdSBzaG91bGQgYmUgYWJsZSB0byBz ZWUgdGhyZWUgc3RyaXBzLCBlYWNoIHdpdGggMTYgc2VjdGlvbnMgb2YgcmVkLAotZ3JlZW4gb3Ig Ymx1ZSB0b25lcy4gVGhlIGRhcmtlc3Qgc2VjdGlvbnMgc2hvdWxkIGJlIHB1cmUgYmxhY2ssIHRo ZSBicmlnaHRlc3QKLXNob3VsZCBiZSBwdXJlIHJlZCwgZ3JlZW4gb3IgYmx1ZS4gSWYgeW91IGRv bid0IHNlZSBhbGwgc2VjdGlvbnMgb2YKLWEgY29sb3Igc3RyaXAsIHRyeSB0byBsaWdodGVuIG9y IGRhcmtlbiB0aGlzIGNvbG9yLjwvcGFyYT4KLTwvc2VjdDI+Ci0KLTxzZWN0MiBpZD0iQ01ZLVNj YWxlIj4KLTx0aXRsZT5DTVkgU2NhbGUgVGVzdCBQaWN0dXJlPC90aXRsZT4KLTxwYXJhPgotWW91 IHNob3VsZCBiZSBhYmxlIHRvIHNlZSB0aHJlZSBzdHJpcHMsIGVhY2ggd2l0aCAxMSBzZWN0aW9u cyBvZiBjeWFuLAotbWFnZW50YSBvciB5ZWxsb3cgdG9uZXMuIFRoZSBicmlnaHRlc3Qgc2VjdGlv bnMgc2hvdWxkIGJlIHB1cmUgd2hpdGUsIHRoZSBkYXJrZXN0Ci1zaG91bGQgYmUgcHVyZSBjeWFu LCBtYWdlbnRhIG9yIHllbGxvdy48L3BhcmE+Ci0KLTxpdGVtaXplZGxpc3Q+Ci08bGlzdGl0ZW0+ Ci08cGFyYT5JZiB5b3UgY2Fubm90IHNlZSBhbGwgY3lhbiBzZWN0aW9ucywgdHJ5IHRvIGxpZ2h0 ZW4gb3IgZGFya2VuIHJlZDwvcGFyYT4KLTwvbGlzdGl0ZW0+Ci08bGlzdGl0ZW0+Ci08cGFyYT5J ZiB5b3UgY2Fubm90IHNlZSBhbGwgbWFnZW50YSBzZWN0aW9ucywgdHJ5IHRvIGxpZ2h0ZW4gb3Ig ZGFya2VuIGdyZWVuPC9wYXJhPgotPC9saXN0aXRlbT4KLTxsaXN0aXRlbT4KLTxwYXJhPklmIHlv dSBjYW5ub3Qgc2VlIGFsbCB5ZWxsb3cgc2VjdGlvbnMsIHRyeSB0byBsaWdodGVuIG9yIGRhcmtl biBibHVlPC9wYXJhPgotPC9saXN0aXRlbT4KLTwvaXRlbWl6ZWRsaXN0PgotPC9zZWN0Mj4KLQot PHNlY3QyIGlkPSJhZHZhbmNlZCI+Ci08dGl0bGU+QWR2YW5jZWQgVGVzdCBQaWN0dXJlczwvdGl0 bGU+Ci08cGFyYT4KLVRoZSBmb2xsb3dpbmcgdGhyZWUgcGljdHVyZXMgc2hvdyB5b3UgdGhlIGFi aWxpdGllcyBvZiB5b3VyIG1vbml0b3IgYXQKLXRocmVlIHBvaW50cyBvZiB0aGUgZ3JheSBzcGVj dHJ1bS4gSWYgeW91IGNhbm5vdCBzZWUgYWxsIG9mIHRoZSBkZXRhaWxzLAotZG9uJ3QgYmUgd29y cnksIG9yIGJ1eSBiZXR0ZXIgaGFyZHdhcmUuCi08L3BhcmE+Ci08c2VjdDMgaWQ9ImRhcmstZ3Jh eSI+Ci08dGl0bGU+RGFyayBHcmF5IFRlc3QgUGljdHVyZTwvdGl0bGU+Ci08cGFyYT4KLVlvdSBz aG91bGQgYmUgYWJsZSB0byBzZWUgMTAgZGlmZmVyZW50IHJlY3RhbmdsZXMgb2YgZGFyayBncmF5 IHdpdGhpbiBhCi1ibGFjayBib3guIFRoZSBjaGFydCBzaG93cyB5b3UgMSUgc3RlcHMgZnJvbSBi bGFjay4KLTwvcGFyYT4KLTwvc2VjdDM+Ci08c2VjdDMgaWQ9Im1pZC1ncmF5Ij4KLTx0aXRsZT5N aWQgR3JheSBUZXN0IFBpY3R1cmU8L3RpdGxlPgotPHBhcmE+Ci1UaGlzIHBpY3R1cmUgc2hvd3Mg eW91IDExIGdyYXkgcmVjdGFuZ2xlcyB3aXRoaW4gYSA1MCUgZ3JheSBib3guIFlvdSBzaG91bGQg YmUKLWFibGUgdG8gc2VlIGFsbCBvZiB0aGUgcmVjdGFuZ2xlcyBleGNlcHQgdGhlIG1pZGRsZSBv bmUuIFRoZSByZWN0YW5nbGVzIHJlcHJlc2VudAotdGhlIHN0ZXBzIGZyb20gNDUlIHRvIDU1JSBn cmF5LgotPC9wYXJhPgotPC9zZWN0Mz4KLTxzZWN0MyBpZD0ibGlnaHQtZ3JheSI+Ci08dGl0bGU+ TGlnaHQgR3JheSBUZXN0IFBpY3R1cmU8L3RpdGxlPgotPHBhcmE+Ci1Zb3Ugc2hvdWxkIGJlIGFi bGUgdG8gc2VlIDEwIGRpZmZlcmVudCByZWN0YW5nbGVzIG9mIGxpZ2h0IGdyYXkgd2l0aGluIGEg d2hpdGUgYm94LgotVGhlIGNoYXJ0IHNob3dzIHlvdSAxJSBzdGVwcyBmcm9tIHdoaXRlLgotPC9w YXJhPgotPC9zZWN0Mz4KLTwvc2VjdDI+Ci08L3NlY3QxPgotCi08L2FydGljbGU+Ci08IS0tCi1M b2NhbCBWYXJpYWJsZXM6Ci1tb2RlOiBzZ21sCi1zZ21sLW1pbmltaXplLWF0dHJpYnV0ZXM6bmls Ci1zZ21sLWdlbmVyYWwtaW5zZXJ0LWNhc2U6bG93ZXIKLXNnbWwtaW5kZW50LXN0ZXA6MAotc2dt bC1pbmRlbnQtZGF0YTpuaWwKLUVuZDoKLS0tPgpkaWZmIC0tZ2l0IGEva2Nta2dhbW1hL0NNYWtl TGlzdHMudHh0IGIva2Nta2dhbW1hL0NNYWtlTGlzdHMudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCA4Y2MxMGU4Li4wMDAwMDAwCi0tLSBhL2tjbWtnYW1tYS9DTWFrZUxpc3RzLnR4 dAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLWFkZF9kZWZpbml0aW9ucygtRFRSQU5T TEFUSU9OX0RPTUFJTj1cImtjbWtnYW1tYVwiKQotCi1hZGRfc3ViZGlyZWN0b3J5KHBpY3MpCi0K LWtjb3JlYWRkb25zX2FkZF9wbHVnaW4oa2NtX2tnYW1tYSBJTlNUQUxMX05BTUVTUEFDRSAicGxh c21hL2tjbXMvc3lzdGVtc2V0dGluZ3NfcXdpZGdldHMiKQota2NtdXRpbHNfZ2VuZXJhdGVfZGVz a3RvcF9maWxlKGtjbV9rZ2FtbWEpCi0KLXRhcmdldF9zb3VyY2VzKGtjbV9rZ2FtbWEgUFJJVkFU RQotICAgeGY4NmNvbmZpZ3BhdGguY3BwIHhmODZjb25maWdwYXRoLmgKLSAgIHh2aWRleHR3cmFw LmNwcCB4dmlkZXh0d3JhcC5oCi0gICBkaXNwbGF5bnVtYmVyLmNwcCBkaXNwbGF5bnVtYmVyLmgK LSAgIGdhbW1hY3RybC5jcHAgZ2FtbWFjdHJsLmgKLSAgIGtnYW1tYS5jcHAga2dhbW1hLmgKLSkK LQotdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGtjbV9rZ2FtbWEgJHtYMTFfWHhmODZ2bV9MSUJ9ICR7 WDExX0xJQlJBUklFU30gUXQ2OjpDb3JlIFF0Njo6V2lkZ2V0cyBLRjY6OkNvbmZpZ0NvcmUgS0Y2 OjpLQ01VdGlscyBLRjY6OkkxOG4pCi0KLWFkZF9jdXN0b21fY29tbWFuZChUQVJHRVQga2NtX2tn YW1tYSBQT1NUX0JVSUxECi0gICAgICAgICAgICAgICAgICAgQ09NTUFORCAke0NNQUtFX0NPTU1B TkR9IC1FIGNyZWF0ZV9zeW1saW5rIC4uL2tjbXMvc3lzdGVtc2V0dGluZ3NfcXdpZGdldHMva2Nt X2tnYW1tYS5zbyBrY21fa2dhbW1hX2luaXQuc28pCi0KLWluc3RhbGwoRklMRVMgJHtDTUFLRV9D VVJSRU5UX0JJTkFSWV9ESVJ9L2tjbV9rZ2FtbWFfaW5pdC5zbyBERVNUSU5BVElPTiAke0tERV9J TlNUQUxMX1BMVUdJTkRJUn0vcGxhc21hL2tjbWluaXQpCi0KZGlmZiAtLWdpdCBhL2tjbWtnYW1t YS9NZXNzYWdlcy5zaCBiL2tjbWtnYW1tYS9NZXNzYWdlcy5zaApkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggM2UxY2FmMS4uMDAwMDAwMAotLS0gYS9rY21rZ2FtbWEvTWVzc2FnZXMuc2gK KysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLSMhIC9iaW4vc2gKLSRYR0VUVEVYVCAqLmNw cCAtbyAkcG9kaXIva2Nta2dhbW1hLnBvdApkaWZmIC0tZ2l0IGEva2Nta2dhbW1hL2Rpc3BsYXlu dW1iZXIuY3BwIGIva2Nta2dhbW1hL2Rpc3BsYXludW1iZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAzYzlhZjI1Li4wMDAwMDAwCi0tLSBhL2tjbWtnYW1tYS9kaXNwbGF5bnVt YmVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLS8qCi0gKiAgU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXIKLSAqCi0gKiAgU1BEWC1GaWxlQ29weXJp Z2h0VGV4dDogMjAwMyBNaWNoYWVsIHYuT3N0aGVpbSA8b3N0aGVpbW1AdXNlcnMuYmVybGlvcy5k ZT4KLSAqLwotCi0jaW5jbHVkZSA8UURlYnVnPgotI2luY2x1ZGUgPFFGb250TWV0cmljcz4KLSNp bmNsdWRlIDxRRnJhbWU+Ci0jaW5jbHVkZSA8UUxhYmVsPgotI2luY2x1ZGUgPFFTdHJpbmc+Ci0K LSNpbmNsdWRlICJkaXNwbGF5bnVtYmVyLmgiCi0KLURpc3BsYXlOdW1iZXI6OkRpc3BsYXlOdW1i ZXIoUVdpZGdldCAqcGFyZW50LCBpbnQgZGlnaXRzLCBpbnQgcHJlYykKLSAgICA6IFFMYWJlbChw YXJlbnQpCi17Ci0gICAgc2V0UHJlY2lzaW9uKHByZWMpOwotICAgIHNldFdpZHRoKGRpZ2l0cyk7 Ci0gICAgc2V0QWxpZ25tZW50KFF0OjpBbGlnbkNlbnRlcik7Ci0gICAgc2V0Rm9jdXNQb2xpY3ko UXQ6Ok5vRm9jdXMpOwotfQotCi1EaXNwbGF5TnVtYmVyOjp+RGlzcGxheU51bWJlcigpCi17Ci19 Ci0KLXZvaWQgRGlzcGxheU51bWJlcjo6c2V0Rm9udChjb25zdCBRRm9udCAmZikKLXsKLSAgICBR TGFiZWw6OnNldEZvbnQoZik7Ci0gICAgc2V0V2lkdGgoZGcpOwotfQotCi12b2lkIERpc3BsYXlO dW1iZXI6OnNldFdpZHRoKGludCBkaWdpdHMpCi17Ci0gICAgUUZvbnRNZXRyaWNzIGZtKGZvbnQo KSk7Ci0gICAgUVN0cmluZyBzKFFTdHJpbmdMaXRlcmFsKCIwMTIzNDU2Nzg5ListIikpOwotICAg IGludCB3aWR0aCA9IDAsIGNoYXJXaWR0aCA9IDA7Ci0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8 IDExOyBpKyssIHdpZHRoID0gZm0uYm91bmRpbmdSZWN0KHNbaV0pLndpZHRoKCkpIHsKLSAgICAg ICAgY2hhcldpZHRoID0gKHdpZHRoID4gY2hhcldpZHRoKSA/IHdpZHRoIDogY2hhcldpZHRoOwot ICAgIH0KLQotICAgIGRnID0gZGlnaXRzOwotICAgIHNldE1pbmltdW1XaWR0aChkZyAqIGNoYXJX aWR0aCArIGNoYXJXaWR0aCAvIDIpOwotfQotCi12b2lkIERpc3BsYXlOdW1iZXI6OnNldE51bShk b3VibGUgbnVtKQotewotICAgIFFTdHJpbmcgdGV4dDsKLSAgICBzZXRUZXh0KHRleHQuc2V0TnVt KG51bSwgJ2YnLCBwcmVjaXNpb24pKTsKLX0KLQotI2luY2x1ZGUgIm1vY19kaXNwbGF5bnVtYmVy LmNwcCIKZGlmZiAtLWdpdCBhL2tjbWtnYW1tYS9kaXNwbGF5bnVtYmVyLmggYi9rY21rZ2FtbWEv ZGlzcGxheW51bWJlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YWU1MWIxLi4w MDAwMDAwCi0tLSBhL2tjbWtnYW1tYS9kaXNwbGF5bnVtYmVyLmgKKysrIC9kZXYvbnVsbApAQCAt MSwzNCArMCwwIEBACi0vKgotICogIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9y LWxhdGVyCi0gKgotICogIFNQRFgtRmlsZUNvcHlyaWdodFRleHQ6IDIwMDMgTWljaGFlbCB2Lk9z dGhlaW0gPG9zdGhlaW1tQHVzZXJzLmJlcmxpb3MuZGU+Ci0gKi8KLQotI2lmbmRlZiBESVNQTEFZ TlVNQkVSX0gKLSNkZWZpbmUgRElTUExBWU5VTUJFUl9ICi0KLSNpbmNsdWRlIDxxbGFiZWwuaD4K LQotLyoqCi0gKkBhdXRob3IgTWljaGFlbCB2Lk9zdGhlaW0KLSAqLwotCi1jbGFzcyBEaXNwbGF5 TnVtYmVyIDogcHVibGljIFFMYWJlbAotewotICAgIFFfT0JKRUNUCi1wdWJsaWM6Ci0gICAgZXhw bGljaXQgRGlzcGxheU51bWJlcihRV2lkZ2V0ICpwYXJlbnQgPSBudWxscHRyLCBpbnQgZGlnaXRz ID0gMCwgaW50IHByZWMgPSAwKTsKLSAgICB+RGlzcGxheU51bWJlcigpIG92ZXJyaWRlOwotICAg IHZvaWQgc2V0Rm9udChjb25zdCBRRm9udCAmZik7Ci0gICAgdm9pZCBzZXROdW0oZG91YmxlIG51 bSk7Ci0gICAgdm9pZCBzZXRXaWR0aChpbnQgZGlnaXRzKTsKLSAgICB2b2lkIHNldFByZWNpc2lv bihpbnQgcHJlYykKLSAgICB7Ci0gICAgICAgIHByZWNpc2lvbiA9IHByZWM7Ci0gICAgfQotCi1w cml2YXRlOgotICAgIGludCBkZywgcHJlY2lzaW9uOwotfTsKLQotI2VuZGlmCmRpZmYgLS1naXQg YS9rY21rZ2FtbWEvZ2FtbWFjdHJsLmNwcCBiL2tjbWtnYW1tYS9nYW1tYWN0cmwuY3BwCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMDYzMjIxLi4wMDAwMDAwCi0tLSBhL2tjbWtnYW1t YS9nYW1tYWN0cmwuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTMxICswLDAgQEAKLS8qCi0gKiAg U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXIKLSAqCi0gKiAgU1BEWC1G aWxlQ29weXJpZ2h0VGV4dDogMjAwMSBNaWNoYWVsIHYuT3N0aGVpbSA8TXZPc3RoZWltQHdlYi5k ZT4KLSAqLwotCi0jaW5jbHVkZSAiZ2FtbWFjdHJsLmgiCi0KLSNpbmNsdWRlIDxRSEJveExheW91 dD4KLSNpbmNsdWRlIDxxbGFiZWwuaD4KLSNpbmNsdWRlIDxxbGluZWVkaXQuaD4KLSNpbmNsdWRl IDxxc3RyaW5nLmg+Ci0KLSNpbmNsdWRlICJkaXNwbGF5bnVtYmVyLmgiCi0jaW5jbHVkZSAieHZp ZGV4dHdyYXAuaCIKLQotR2FtbWFDdHJsOjpHYW1tYUN0cmwoUVdpZGdldCAqcGFyZW50LCBYVmlk RXh0V3JhcCAqeHZpZCwgaW50IGNoYW5uZWwsIGNvbnN0IFFTdHJpbmcgJm1pbmdhbW1hLCBjb25z dCBRU3RyaW5nICZtYXhnYW1tYSwgY29uc3QgUVN0cmluZyAmc2V0Z2FtbWEpCi0gICAgOiBRV2lk Z2V0KHBhcmVudCkKLXsKLSAgICBpbnQgbWF4c2xpZGVyID0gKGludCkoKG1heGdhbW1hLnRvRG91 YmxlKCkgLSBtaW5nYW1tYS50b0RvdWJsZSgpICsgMC4wMDA1KSAqIDIwKTsKLSAgICBpbnQgc2V0 c2xpZGVyID0gKGludCkoKHNldGdhbW1hLnRvRG91YmxlKCkgLSBtaW5nYW1tYS50b0RvdWJsZSgp ICsgMC4wMDA1KSAqIDIwKTsKLSAgICBzZXRzbGlkZXIgPSAoc2V0c2xpZGVyID4gbWF4c2xpZGVy KSA/IG1heHNsaWRlciA6IHNldHNsaWRlcjsKLSAgICBzZXRzbGlkZXIgPSAoc2V0c2xpZGVyIDwg MCkgPyAwIDogc2V0c2xpZGVyOwotCi0gICAgc3VzcGVuZGVkID0gZmFsc2U7Ci0gICAgY2hhbmdl ZCA9IGZhbHNlOwotICAgIG1pbmcgPSBtaW5nYW1tYS50b0Zsb2F0KCk7Ci0gICAgbWdhbW1hID0g bWluZ2FtbWE7Ci0gICAgb2xkcG9zID0gc2V0c2xpZGVyOwotICAgIGdjaGFubmVsID0gY2hhbm5l bDsKLSAgICB4diA9IHh2aWQ7Ci0KLSAgICBRSEJveExheW91dCAqbGF5b3V0ID0gbmV3IFFIQm94 TGF5b3V0KHRoaXMpOwotCi0gICAgc2xpZGVyID0gbmV3IFFTbGlkZXIoUXQ6Okhvcml6b250YWws IHRoaXMpOwotICAgIHNsaWRlci0+c2V0VGlja1Bvc2l0aW9uKFFTbGlkZXI6OlRpY2tzQmVsb3cp OwotICAgIHNsaWRlci0+c2V0UmFuZ2UoMCwgbWF4c2xpZGVyKTsKLSAgICBzbGlkZXItPnNldFRp Y2tJbnRlcnZhbCgyKTsKLSAgICBzbGlkZXItPnNldFZhbHVlKHNldHNsaWRlcik7Ci0gICAgbGF5 b3V0LT5hZGRXaWRnZXQoc2xpZGVyKTsKLSAgICBjb25uZWN0KHNsaWRlciwgJlFBYnN0cmFjdFNs aWRlcjo6dmFsdWVDaGFuZ2VkLCB0aGlzLCBRT3ZlcmxvYWQ8aW50Pjo6b2YoJkdhbW1hQ3RybDo6 c2V0R2FtbWEpKTsKLSAgICBjb25uZWN0KHNsaWRlciwgJlFBYnN0cmFjdFNsaWRlcjo6c2xpZGVy UHJlc3NlZCwgdGhpcywgJkdhbW1hQ3RybDo6cHJlc3NlZCk7Ci0KLSAgICB0ZXh0ZmllbGQgPSBu ZXcgRGlzcGxheU51bWJlcih0aGlzLCA0LCAyKTsKLSAgICB0ZXh0ZmllbGQtPnNldFRleHQoc2V0 Z2FtbWEpOwotICAgIGxheW91dC0+YWRkV2lkZ2V0KHRleHRmaWVsZCk7Ci19Ci0KLUdhbW1hQ3Ry bDo6fkdhbW1hQ3RybCgpCi17Ci19Ci0KLS8qKiBzZXQgZ2FtbWEsIHNsaWRlciBhbmQgdGV4dGZp ZWxkICovCi12b2lkIEdhbW1hQ3RybDo6c2V0R2FtbWEoY29uc3QgUVN0cmluZyAmZ2FtbWEpCi17 Ci0gICAgaW50IHNsaWRlcnBvczsKLQotICAgIHNsaWRlcnBvcyA9IChpbnQpKChnYW1tYS50b0Rv dWJsZSgpIC0gbWdhbW1hLnRvRG91YmxlKCkgKyAwLjAwMDUpICogMjApOwotICAgIGNoYW5nZWQg PSB0cnVlOwotICAgIHNsaWRlci0+c2V0VmFsdWUoc2xpZGVycG9zKTsKLQotICAgIHNldEdhbW1h KHNsaWRlcnBvcyk7Ci0gICAgaWYgKHN1c3BlbmRlZCkgewotICAgICAgICBzdXNwZW5kZWQgPSBm YWxzZTsKLSAgICAgICAgdGV4dGZpZWxkLT5zZXREaXNhYmxlZChmYWxzZSk7Ci0gICAgfQotfQot Ci0vKiogc2V0IHNsaWRlciBhbmQgdGV4dGZpZWxkICovCi12b2lkIEdhbW1hQ3RybDo6c2V0Q29u dHJvbChjb25zdCBRU3RyaW5nICZnYW1tYSkKLXsKLSAgICBpbnQgc2xpZGVycG9zOwotCi0gICAg c2xpZGVycG9zID0gKGludCkoKGdhbW1hLnRvRG91YmxlKCkgLSBtZ2FtbWEudG9Eb3VibGUoKSAr IDAuMDAwNSkgKiAyMCk7Ci0gICAgc2V0Q3RybChzbGlkZXJwb3MpOwotfQotCi0vKiogUmV0dXJu IHRoZSBjdXJyZW50IGdhbW1hIHZhbHVlIHdpdGggcHJlY2lzaW9uIHByZWMgKi8KLVFTdHJpbmcg R2FtbWFDdHJsOjpnYW1tYShpbnQgcHJlYykKLXsKLSAgICBRU3RyaW5nIGdhbW1hdGV4dDsKLSAg ICBnYW1tYXRleHQuc2V0TnVtKHh2LT5nZXRHYW1tYShnY2hhbm5lbCkgKyAwLjAwMDUsICdmJywg cHJlYyk7Ci0KLSAgICByZXR1cm4gKGdhbW1hdGV4dCk7Ci19Ci0KLS8qKiBTbG90OiBzZXQgZ2Ft bWEgYW5kIHRleHRmaWVsZCAqLwotdm9pZCBHYW1tYUN0cmw6OnNldEdhbW1hKGludCBzbGlkZXJw b3MpCi17Ci0gICAgaWYgKHNsaWRlcnBvcyAhPSBvbGRwb3MgfHwgY2hhbmdlZCkgewotICAgICAg ICB4di0+c2V0R2FtbWEoZ2NoYW5uZWwsIG1pbmcgKyAoZmxvYXQpKHNsaWRlci0+dmFsdWUoKSkg KiAwLjA1KTsKLSAgICAgICAgdGV4dGZpZWxkLT5zZXROdW0oeHYtPmdldEdhbW1hKGdjaGFubmVs KSk7Ci0gICAgICAgIG9sZHBvcyA9IHNsaWRlcnBvczsKLSAgICAgICAgY2hhbmdlZCA9IGZhbHNl OwotICAgICAgICBRX0VNSVQgZ2FtbWFDaGFuZ2VkKHNsaWRlcnBvcyk7Ci0gICAgfQotfQotCi0v KiogU2xvdDogc2V0IHNsaWRlciBhbmQgdGV4dGZpZWxkICovCi12b2lkIEdhbW1hQ3RybDo6c2V0 Q3RybChpbnQgc2xpZGVycG9zKQotewotICAgIGlmIChzdXNwZW5kZWQpIHsKLSAgICAgICAgc3Vz cGVuZGVkID0gZmFsc2U7Ci0gICAgICAgIHRleHRmaWVsZC0+c2V0RGlzYWJsZWQoZmFsc2UpOwot ICAgIH0KLSAgICBvbGRwb3MgPSBzbGlkZXJwb3M7Ci0gICAgc2xpZGVyLT5zZXRWYWx1ZShzbGlk ZXJwb3MpOwotICAgIHRleHRmaWVsZC0+c2V0TnVtKHh2LT5nZXRHYW1tYShnY2hhbm5lbCkpOwot fQotCi0vKiogU2xvdDogZGlzYWJsZSB0ZXh0ZmllbGQgKi8KLXZvaWQgR2FtbWFDdHJsOjpzdXNw ZW5kKCkKLXsKLSAgICBpZiAoIXN1c3BlbmRlZCkgewotICAgICAgICBzdXNwZW5kZWQgPSB0cnVl OwotICAgICAgICB0ZXh0ZmllbGQtPnNldERpc2FibGVkKHRydWUpOwotICAgIH0KLX0KLQotLyoq IFNsb3Q6IENoYW5nZSBzdGF0dXMgb2YgR2FtbWFDdHJsIHdoZW4gcHJlc3NlZCAqLwotdm9pZCBH YW1tYUN0cmw6OnByZXNzZWQoKQotewotICAgIGlmIChzdXNwZW5kZWQpIHsKLSAgICAgICAgc3Vz cGVuZGVkID0gZmFsc2U7Ci0gICAgICAgIHRleHRmaWVsZC0+c2V0RGlzYWJsZWQoZmFsc2UpOwot ICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAgc2V0R2FtbWEoc2xpZGVyLT52YWx1ZSgp KTsKLSAgICB9Ci19Ci0KLSNpbmNsdWRlICJtb2NfZ2FtbWFjdHJsLmNwcCIKZGlmZiAtLWdpdCBh L2tjbWtnYW1tYS9nYW1tYWN0cmwuaCBiL2tjbWtnYW1tYS9nYW1tYWN0cmwuaApkZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggZTY5MWIxMi4uMDAwMDAwMAotLS0gYS9rY21rZ2FtbWEvZ2Ft bWFjdHJsLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0vKgotICogIEEgaG9yaXpv bnRhbCBzbGlkZXIgYW5kIGEgdGV4dCBmaWVsZCBmb3IgdGhlIGdhbW1hIHZhbHVlLgotICoKLSAq ICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlcgotICoKLSAqICBTUERY LUZpbGVDb3B5cmlnaHRUZXh0OiAyMDAxIE1pY2hhZWwgdi5Pc3RoZWltIDxNdk9zdGhlaW1Ad2Vi PgotICovCi0KLSNpZm5kZWYgR0FNTUFDVFJMX0gKLSNkZWZpbmUgR0FNTUFDVFJMX0gKLQotI2lu Y2x1ZGUgPHFzbGlkZXIuaD4KLQotY2xhc3MgUVN0cmluZzsKLWNsYXNzIERpc3BsYXlOdW1iZXI7 Ci1jbGFzcyBYVmlkRXh0V3JhcDsKLQotY2xhc3MgR2FtbWFDdHJsIDogcHVibGljIFFXaWRnZXQK LXsKLSAgICBRX09CSkVDVAotcHVibGljOgotICAgIC8qKiBjb25zdHJ1a3RvciAqLwotICAgIGV4 cGxpY2l0IEdhbW1hQ3RybChRV2lkZ2V0ICpwYXJlbnQgPSBudWxscHRyLAotICAgICAgICAgICAg ICAgICAgICAgICBYVmlkRXh0V3JhcCAqeHZpZCA9IG51bGxwdHIsCi0gICAgICAgICAgICAgICAg ICAgICAgIGludCBjaGFubmVsID0gMCwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUVN0 cmluZyAmbWluZ2FtbWEgPSBRU3RyaW5nTGl0ZXJhbCgiMC40MCIpLAotICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBRU3RyaW5nICZtYXhnYW1tYSA9IFFTdHJpbmdMaXRlcmFsKCIzLjUwIiks Ci0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcgJnNldGdhbW1hID0gUVN0cmlu Z0xpdGVyYWwoIjEuMDAiKSk7Ci0gICAgLyoqIGRlc3RydWt0b3IgKi8KLSAgICB+R2FtbWFDdHJs KCkgb3ZlcnJpZGU7Ci0gICAgLyoqIFJldHVybiB0aGUgY3VycmVudCBnYW1tYSB2YWx1ZSB3aXRo IHByZWNpc2lvbiBwcmVjICovCi0gICAgUVN0cmluZyBnYW1tYShpbnQpOwotICAgIC8qKiBTZXQg Z2FtbWEsIHNsaWRlciBhbmQgdGV4dGZpZWxkICovCi0gICAgdm9pZCBzZXRHYW1tYShjb25zdCBR U3RyaW5nICYpOwotICAgIC8qKiBTZXQgc2xpZGVyIGFuZCB0ZXh0ZmllbGQgKi8KLSAgICB2b2lk IHNldENvbnRyb2woY29uc3QgUVN0cmluZyAmKTsKLSAgICAvKiogRGlzYWJsZSB0aGUgc2xpZGVy ICovCi0gICAgdm9pZCBkaXNhYmxlU2xpZGVyKCkKLSAgICB7Ci0gICAgICAgIHNsaWRlci0+c2V0 RGlzYWJsZWQodHJ1ZSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFFTdHJpbmcgbWdhbW1hOwot ICAgIFFTbGlkZXIgKnNsaWRlcjsKLSAgICBEaXNwbGF5TnVtYmVyICp0ZXh0ZmllbGQ7Ci0gICAg Ym9vbCBzdXNwZW5kZWQsIGNoYW5nZWQ7Ci0gICAgaW50IGdjaGFubmVsLCBvbGRwb3M7Ci0gICAg ZG91YmxlIG1pbmc7Ci0gICAgWFZpZEV4dFdyYXAgKnh2OwotCi1wdWJsaWMgUV9TTE9UUzoKLSAg ICAvKiogRGlzYWJsZSB0ZXh0ZmllbGQgKi8KLSAgICB2b2lkIHN1c3BlbmQoKTsKLQotcHJvdGVj dGVkIFFfU0xPVFM6Ci0gICAgLyoqIFNldCBzbGlkZXIgYW5kIHRleHRmaWVsZCAqLwotICAgIHZv aWQgc2V0Q3RybChpbnQpOwotICAgIC8qKiBTZXQgZ2FtbWEgYW5kIHRleHRmaWVsZCAqLwotICAg IHZvaWQgc2V0R2FtbWEoaW50KTsKLSAgICAvKiogQ2hhbmdlIHN0YXR1cyBvZiBHYW1tYUN0cmwg d2hlbiBwcmVzc2VkICovCi0gICAgdm9pZCBwcmVzc2VkKCk7Ci0KLVFfU0lHTkFMUzoKLSAgICAv KiogR2FtbWEgY2hhbmdlIHNpZ25hbCAqLwotICAgIHZvaWQgZ2FtbWFDaGFuZ2VkKGludCk7Ci19 OwotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2tjbWtnYW1tYS9rY21fa2dhbW1hLmpzb24gYi9rY21r Z2FtbWEva2NtX2tnYW1tYS5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDYy NjEzLi4wMDAwMDAwCi0tLSBhL2tjbWtnYW1tYS9rY21fa2dhbW1hLmpzb24KKysrIC9kZXYvbnVs bApAQCAtMSwxOTQgKzAsMCBAQAotewotICAgICJLUGx1Z2luIjogewotICAgICAgICAiRGVzY3Jp cHRpb24iOiAiQSBtb25pdG9yIGNhbGlicmF0aW9uIHRvb2wiLAotICAgICAgICAiRGVzY3JpcHRp b25bYXJdIjogItij2K/Yp9ipINmF2LHYp9mC2Kgg2KfZhNmF2LnYp9mK2LHYqSIsCi0gICAgICAg ICJEZXNjcmlwdGlvblthc3RdIjogIlVuYSBmZXJyYW1pZW50YSBwYSBjYWxpYnJhciBtb25pdG9y ZXMiLAotICAgICAgICAiRGVzY3JpcHRpb25bYmVdIjogItCG0L3RgdGC0YDRg9C80LXQvdGCINC0 0LvRjyDQutCw0LvRltCx0YDQsNCy0LDQvdC90Y8g0LzQsNC90ZbRgtC+0YDQsCIsCi0gICAgICAg ICJEZXNjcmlwdGlvbltiZ10iOiAi0JjQvdGB0YLRgNGD0LzQtdC90YIg0LfQsCDQutCw0LvQuNCx 0YDQuNGA0LDQvdC1INC90LAg0LzQvtC90LjRgtC+0YDQsCIsCi0gICAgICAgICJEZXNjcmlwdGlv bltjYUB2YWxlbmNpYV0iOiAiVW5hIGVpbmEgZGUgY2FsaWJyYXRnZSBwZXIgYWwgbW9uaXRvciIs Ci0gICAgICAgICJEZXNjcmlwdGlvbltjYV0iOiAiVW5hIGVpbmEgZGUgY2FsaWJyYXRnZSBwZXIg YWwgbW9uaXRvciIsCi0gICAgICAgICJEZXNjcmlwdGlvbltjc10iOiAiTsOhc3Ryb2ogcHJvIGth bGlicmFjaSBtb25pdG9ydSIsCi0gICAgICAgICJEZXNjcmlwdGlvbltkZV0iOiAiS2FsaWJyaWVy dW5nc3dlcmt6ZXVnIGbDvHIgTW9uaXRvcmUiLAotICAgICAgICAiRGVzY3JpcHRpb25bZWxdIjog Is6Izr3OsSDOtc+BzrPOsc67zrXOr86/IM6yzrHOuM68zr/Ovc+MzrzOt8+DzrfPgiDPhM63z4Ig zr/OuM+Mzr3Ot8+CIiwKLSAgICAgICAgIkRlc2NyaXB0aW9uW2VuX0dCXSI6ICJBIG1vbml0b3Ig Y2FsaWJyYXRpb24gdG9vbCIsCi0gICAgICAgICJEZXNjcmlwdGlvbltlb10iOiAiRWtyYW5hIGth bGlicmlsbyIsCi0gICAgICAgICJEZXNjcmlwdGlvbltlc10iOiAiSGVycmFtaWVudGEgZGUgY2Fs aWJyYWNpw7NuIGRlbCBtb25pdG9yIiwKLSAgICAgICAgIkRlc2NyaXB0aW9uW2V1XSI6ICJNb25p dG9yZWFrIGthbGlicmF0emVrbyB0cmVzbmEgYmF0IiwKLSAgICAgICAgIkRlc2NyaXB0aW9uW2Zp XSI6ICJOw6R5dMO2biBrYWxpYnJvaW50aXR5w7ZrYWx1IiwKLSAgICAgICAgIkRlc2NyaXB0aW9u W2ZyXSI6ICJVbiBvdXRpbCBkJ8OpdGFsb25uYWdlIGQnw6ljcmFuIiwKLSAgICAgICAgIkRlc2Ny aXB0aW9uW2dsXSI6ICJVbmhhIHV0aWxpZGFkZSBwYXJhIGNhbGlicmFyIG8gbW9uaXRvciIsCi0g ICAgICAgICJEZXNjcmlwdGlvbltoZV0iOiAi15vXnNeZINec15vXmdeV15wg16bXkiIsCi0gICAg ICAgICJEZXNjcmlwdGlvbltodV0iOiAiTW9uaXRvcmJlw6FsbMOtdMOzIHByb2dyYW0iLAotICAg ICAgICAiRGVzY3JpcHRpb25baWFdIjogIkluc3RydW1lbnRvIGRlIGNhbGlicmF0aW9uIGRlIG1v bml0b3IiLAotICAgICAgICAiRGVzY3JpcHRpb25baXNdIjogIlZlcmtmw6ZyaSB0aWwgYcOwIHN0 aWxsYSBza2rDoWlubiIsCi0gICAgICAgICJEZXNjcmlwdGlvbltpdF0iOiAiVW5vIHN0cnVtZW50 byBkaSBjYWxpYnJhemlvbmUgZGVsIG1vbml0b3IiLAotICAgICAgICAiRGVzY3JpcHRpb25ba2Fd IjogIuGDlOGDmeGDoOGDkOGDnOGDmOGDoSDhg5nhg5Dhg5rhg5jhg5Hhg6Dhg5Dhg6rhg5jhg5jh g6Eg4YOe4YOg4YOd4YOS4YOg4YOQ4YOb4YOQIiwKLSAgICAgICAgIkRlc2NyaXB0aW9uW2tvXSI6 ICLrqqjri4jthLAg67O07KCVIOuPhOq1rCIsCi0gICAgICAgICJEZXNjcmlwdGlvbltsdF0iOiAi TW9uaXRvcmlhdXMga2FsaWJyYXZpbW8gxK9yYW5raXMiLAotICAgICAgICAiRGVzY3JpcHRpb25b bHZdIjogIk1vbml0b3JhIGthbGlicsSTxaFhbmFzIHLEq2tzIiwKLSAgICAgICAgIkRlc2NyaXB0 aW9uW25sXSI6ICJFZW4gaHVscG1pZGRlbCB2b29yIGhldCBrYWxpYnJlcmVuIHZhbiBkZSBtb25p dG9yIiwKLSAgICAgICAgIkRlc2NyaXB0aW9uW25uXSI6ICJFaXQgdmVya3TDuHkgZm9yIMOlIGth bGlicmVyYSBza2plcm1lbiIsCi0gICAgICAgICJEZXNjcmlwdGlvbltwbF0iOiAiTmFyesSZZHpp ZSBkbyBrYWxpYnJhY2ppIG1vbml0b3JhIiwKLSAgICAgICAgIkRlc2NyaXB0aW9uW3B0X0JSXSI6 ICJGZXJyYW1lbnRhIGRlIGNhbGlicmHDp8OjbyBkbyBtb25pdG9yIiwKLSAgICAgICAgIkRlc2Ny aXB0aW9uW3JvXSI6ICJVbiB1dGlsaXRhciBkZSBjYWxpYnJhdCBtb25pdG9ydWwiLAotICAgICAg ICAiRGVzY3JpcHRpb25bcnVdIjogItCa0LDQu9C40LHRgNC+0LLQutCwINC80L7QvdC40YLQvtGA 0LAiLAotICAgICAgICAiRGVzY3JpcHRpb25bc2FdIjogIuCkj+CkleCkgiDgpKrgpJ/gpLLgpK7g pL7gpKrgpKjgpLjgpL7gpKfgpKjgpK7gpY0iLAotICAgICAgICAiRGVzY3JpcHRpb25bc2tdIjog Ik7DoXN0cm9qIG5hIGthbGlicsOhY2l1IG1vbml0b3JhIiwKLSAgICAgICAgIkRlc2NyaXB0aW9u W3NsXSI6ICJPcm9kamUgemEgdW1lcmphbmplIHphc2xvbm92IiwKLSAgICAgICAgIkRlc2NyaXB0 aW9uW3N2XSI6ICJFdHQga2FsaWJyZXJpbmdzdmVya3R5ZyBmw7ZyIGJpbGRza8Okcm1hciIsCi0g ICAgICAgICJEZXNjcmlwdGlvblt0YV0iOiAi4K6k4K6/4K6w4K+IIOCuqOCuv+CuseCumuCvjeCu muCvgOCusOCuruCviOCuquCvjeCuquCvgSDgrprgr4bgrq/grrLgrr8iLAotICAgICAgICAiRGVz Y3JpcHRpb25bdHJdIjogIkJpciBtb25pdMO2ciBrYWxpYnJhc3lvbiBhcmFjxLEiLAotICAgICAg ICAiRGVzY3JpcHRpb25bdWddIjogItmD24bYstuV2KrZg9uI2oYg2KrZiNi62LHZidmE2KfYtCDZ gtmI2LHYp9mE2YkiLAotICAgICAgICAiRGVzY3JpcHRpb25bdWtdIjogItCX0LDRgdGW0LEg0LTQ u9GPINC60LDQu9GW0LHRgNGD0LLQsNC90L3RjyDQvNC+0L3RltGC0L7RgNCwIiwKLSAgICAgICAg IkRlc2NyaXB0aW9uW3poX0NOXSI6ICLnroDmmJPmmL7npLrlmajmoKHlh4blt6XlhbciLAotICAg ICAgICAiRGVzY3JpcHRpb25bemhfVFddIjogIumhr+ekuuWZqOagoea6luW3peWFtyIsCi0gICAg ICAgICJJY29uIjogInByZWZlcmVuY2VzLWRlc2t0b3AtZGlzcGxheS1jb2xvciIsCi0gICAgICAg ICJOYW1lIjogIkdhbW1hIiwKLSAgICAgICAgIk5hbWVbYXJdIjogItis2KfZhdinIiwKLSAgICAg ICAgIk5hbWVbYXpdIjogIlFhbW1hIiwKLSAgICAgICAgIk5hbWVbYmVdIjogItCT0LDQvNCwIiwK LSAgICAgICAgIk5hbWVbYmddIjogItCT0LDQvNCwIiwKLSAgICAgICAgIk5hbWVbYnJdIjogIkdh bW1hIiwKLSAgICAgICAgIk5hbWVbYnNdIjogIkdhbWEiLAotICAgICAgICAiTmFtZVtjYUB2YWxl bmNpYV0iOiAiR2FtbWEiLAotICAgICAgICAiTmFtZVtjYV0iOiAiR2FtbWEiLAotICAgICAgICAi TmFtZVtjc10iOiAiR2FtYSIsCi0gICAgICAgICJOYW1lW2N5XSI6ICJHYW1hIiwKLSAgICAgICAg Ik5hbWVbZGFdIjogIkdhbW1hIiwKLSAgICAgICAgIk5hbWVbZGVdIjogIkdhbW1hIiwKLSAgICAg ICAgIk5hbWVbZWxdIjogIs6TzqzOvM68zrEiLAotICAgICAgICAiTmFtZVtlbl9HQl0iOiAiR2Ft bWEiLAotICAgICAgICAiTmFtZVtlb10iOiAiR2FtbWEiLAotICAgICAgICAiTmFtZVtlc10iOiAi R2FtbWEiLAotICAgICAgICAiTmFtZVtldF0iOiAiR2FtbWEiLAotICAgICAgICAiTmFtZVtldV0i OiAiR2FtbWEiLAotICAgICAgICAiTmFtZVtmYV0iOiAi2q/Yp9mF2KciLAotICAgICAgICAiTmFt ZVtmaV0iOiAiR2FtbWEiLAotICAgICAgICAiTmFtZVtmcl0iOiAiR2FtbWEiLAotICAgICAgICAi TmFtZVtnYV0iOiAiR8OhbWEiLAotICAgICAgICAiTmFtZVtnbF0iOiAiR2FtbWEiLAotICAgICAg ICAiTmFtZVtoZV0iOiAi15LXkNee15QiLAotICAgICAgICAiTmFtZVtoaV0iOiAi4KSX4KS+4KSu 4KS+IiwKLSAgICAgICAgIk5hbWVbaG5lXSI6ICLgpJfgpL7gpK7gpL4iLAotICAgICAgICAiTmFt ZVtocl0iOiAiR2FtYSIsCi0gICAgICAgICJOYW1lW2h1XSI6ICJHYW1tYS1rb3JyZWtjacOzIiwK LSAgICAgICAgIk5hbWVbaWFdIjogIkdhbW1hIiwKLSAgICAgICAgIk5hbWVbaWRdIjogIkdhbW1h IiwKLSAgICAgICAgIk5hbWVbaXNdIjogIkxpdHLDs2YgKGdhbW1hKSIsCi0gICAgICAgICJOYW1l W2l0XSI6ICJHYW1tYSIsCi0gICAgICAgICJOYW1lW2phXSI6ICLjgqzjg7Pjg54iLAotICAgICAg ICAiTmFtZVtrYV0iOiAi4YOS4YOQ4YOb4YOQIiwKLSAgICAgICAgIk5hbWVba2tdIjogItCT0LDQ vNC80LAiLAotICAgICAgICAiTmFtZVtrbV0iOiAi4Z6g4Z+S4Z6C4Z624Z6Y4Z+J4Z62IiwKLSAg ICAgICAgIk5hbWVba29dIjogIkdhbW1hIiwKLSAgICAgICAgIk5hbWVba3VdIjogIkdhbW1hIiwK LSAgICAgICAgIk5hbWVbbHRdIjogIkdhbW1hIiwKLSAgICAgICAgIk5hbWVbbHZdIjogIkdhbW1h IiwKLSAgICAgICAgIk5hbWVbbXJdIjogIuCkl+CkvuCkruCkviIsCi0gICAgICAgICJOYW1lW21z XSI6ICJHYW1tYSIsCi0gICAgICAgICJOYW1lW25iXSI6ICJHYW1tYSIsCi0gICAgICAgICJOYW1l W25kc10iOiAiR2FtbWEiLAotICAgICAgICAiTmFtZVtuZV0iOiAi4KSX4KS+4KSu4KS+IiwKLSAg ICAgICAgIk5hbWVbbmxdIjogIkdhbW1hIiwKLSAgICAgICAgIk5hbWVbbm5dIjogIkdhbW1hIiwK LSAgICAgICAgIk5hbWVbb2NdIjogIkdhbW3DoCIsCi0gICAgICAgICJOYW1lW3BhXSI6ICLgqZrg qL7gqK7gqL4iLAotICAgICAgICAiTmFtZVtwbF0iOiAiR2FtbWEiLAotICAgICAgICAiTmFtZVtw dF0iOiAiJ0dhbWEnIiwKLSAgICAgICAgIk5hbWVbcHRfQlJdIjogIkdhbWEiLAotICAgICAgICAi TmFtZVtyb10iOiAiR2FtbWEiLAotICAgICAgICAiTmFtZVtydV0iOiAi0KbQstC10YLQvtCy0LDR jyDQutC+0YDRgNC10LrRhtC40Y8iLAotICAgICAgICAiTmFtZVtzYV0iOiAi4KSH4KS14KSw4KWN 4KSjIChHYW1tYSkiLAotICAgICAgICAiTmFtZVtzZV0iOiAiR2FtbWEiLAotICAgICAgICAiTmFt ZVtzaV0iOiAi4Lac4LeQ4La44LePIiwKLSAgICAgICAgIk5hbWVbc2tdIjogIkdhbW1hIiwKLSAg ICAgICAgIk5hbWVbc2xdIjogIkdhbWEiLAotICAgICAgICAiTmFtZVtzckBpamVrYXZpYW5dIjog ItCT0LDQvNCwIiwKLSAgICAgICAgIk5hbWVbc3JAaWpla2F2aWFubGF0aW5dIjogIkdhbWEiLAot ICAgICAgICAiTmFtZVtzckBsYXRpbl0iOiAiR2FtYSIsCi0gICAgICAgICJOYW1lW3NyXSI6ICLQ k9Cw0LzQsCIsCi0gICAgICAgICJOYW1lW3N2XSI6ICJHYW1tYSIsCi0gICAgICAgICJOYW1lW3Rh XSI6ICLgrpXgrr7grq7grr4iLAotICAgICAgICAiTmFtZVt0Z10iOiAi0JTQsNGA0LDSt9Cw0Lgg 0Y/QutC00LjQs9Cw0YDToyIsCi0gICAgICAgICJOYW1lW3RoXSI6ICLguYHguIHguKHguKHguLIi LAotICAgICAgICAiTmFtZVt0cl0iOiAiR2FtYSIsCi0gICAgICAgICJOYW1lW3VnXSI6ICLar9in 2YXZhdinIiwKLSAgICAgICAgIk5hbWVbdWtdIjogItCT0LDQvNCwIiwKLSAgICAgICAgIk5hbWVb dXpAY3lyaWxsaWNdIjogItCT0LDQvNC80LAiLAotICAgICAgICAiTmFtZVt1el0iOiAiR2FtbWEi LAotICAgICAgICAiTmFtZVt2aV0iOiAiR2FtbWEiLAotICAgICAgICAiTmFtZVt4aF0iOiAiVW5v YnVtYmEgd2VzaXRoYXRodSBrb25vb2J1bWJhIGJlc2lHcmlrZSIsCi0gICAgICAgICJOYW1lW3po X0NOXSI6ICLkvL3pqawiLAotICAgICAgICAiTmFtZVt6aF9IS10iOiAi5Ly96aas77yIR2FtbWHv vIkiLAotICAgICAgICAiTmFtZVt6aF9UV10iOiAiR2FtbWEiCi0gICAgfSwKLSAgICAiWC1Eb2NQ YXRoIjogImtjb250cm9sL2tnYW1tYS9pbmRleC5odG1sIiwKLSAgICAiWC1LREUtSW5pdC1QaGFz ZSI6IDEsCi0gICAgIlgtS0RFLUtleXdvcmRzIjogIktHYW1tYSwga2dhbW1hLCBHYW1tYSwgZ2Ft bWEiLAotICAgICJYLUtERS1LZXl3b3Jkc1thcl0iOiAi2YPYutin2YXYpyzYutin2YXYpyzYrNin 2YXYpyIsCi0gICAgIlgtS0RFLUtleXdvcmRzW2F6XSI6ICJLR2FtbWEsIGtnYW1tYSwgR2FtbWEs IGdhbW1hIiwKLSAgICAiWC1LREUtS2V5d29yZHNbYmVdIjogIktHYW1tYSwga2dhbW1hLCBHYW1t YSwg0LPQsNC80LAiLAotICAgICJYLUtERS1LZXl3b3Jkc1tiZ10iOiAiS0dhbW1hLCBrZ2FtbWEs IEdhbW1hLCDQs9Cw0LzQsCIsCi0gICAgIlgtS0RFLUtleXdvcmRzW2JzXSI6ICJLR2FtbWEsIGtn YW1tYSwgR2FtbWEsIGdhbW1hLGdhbWEiLAotICAgICJYLUtERS1LZXl3b3Jkc1tjYUB2YWxlbmNp YV0iOiAiS0dhbW1hLGtnYW1tYSxHYW1tYSxnYW1tYSIsCi0gICAgIlgtS0RFLUtleXdvcmRzW2Nh XSI6ICJLR2FtbWEsa2dhbW1hLEdhbW1hLGdhbW1hIiwKLSAgICAiWC1LREUtS2V5d29yZHNbY3Nd IjogIktHYW1tYSwga2dhbW1hLCBHYW1tYSwgZ2FtbWEiLAotICAgICJYLUtERS1LZXl3b3Jkc1tk YV0iOiAiS0dhbW1hLGtnYW1tYSxHYW1tYSxnYW1tYSIsCi0gICAgIlgtS0RFLUtleXdvcmRzW2Rl XSI6ICJnYW1tYSIsCi0gICAgIlgtS0RFLUtleXdvcmRzW2VsXSI6ICJLR2FtbWEsIGtnYW1tYSwg R2FtbWEsIGdhbW1hIiwKLSAgICAiWC1LREUtS2V5d29yZHNbZW5fR0JdIjogIktHYW1tYSwga2dh bW1hLCBHYW1tYSwgZ2FtbWEiLAotICAgICJYLUtERS1LZXl3b3Jkc1tlb10iOiAiS0dhbW1hLCBr Z2FtbWEsIEdhbW1hLCBnYW1tYSIsCi0gICAgIlgtS0RFLUtleXdvcmRzW2VzXSI6ICJLR2FtbWEs IGtnYW1tYSwgR2FtbWEsIGdhbW1hIiwKLSAgICAiWC1LREUtS2V5d29yZHNbZXRdIjogIktHYW1t YSwga2dhbW1hLCBHYW1tYSwgZ2FtbWEiLAotICAgICJYLUtERS1LZXl3b3Jkc1tldV0iOiAiS0dh bW1hLCBrZ2FtbWEsIEdhbW1hLCBnYW1tYSIsCi0gICAgIlgtS0RFLUtleXdvcmRzW2ZhXSI6ICJL R2FtbWEsIGtnYW1tYSwg2q/Yp9mF2KcsINqv2KfZhdinIiwKLSAgICAiWC1LREUtS2V5d29yZHNb ZmldIjogIktHYW1tYSwga2dhbW1hLCBHYW1tYSwgZ2FtbWEiLAotICAgICJYLUtERS1LZXl3b3Jk c1tmcl0iOiAiS0dhbW1hLCBrZ2FtbWEsIEdhbW1hLCBnYW1tYSIsCi0gICAgIlgtS0RFLUtleXdv cmRzW2dhXSI6ICJLR2FtbWEsIGtnYW1tYSwgR2FtbWEsIGdhbW1hLCBHw6FtYSIsCi0gICAgIlgt S0RFLUtleXdvcmRzW2dsXSI6ICJLR2FtbWEsIGtnYW1tYSwgR2FtbWEsIGdhbW1hIiwKLSAgICAi WC1LREUtS2V5d29yZHNbaGVdIjogIktHYW1tYSwga2dhbW1hLCBHYW1tYSwgZ2FtbWEsINeS15DX nteUIiwKLSAgICAiWC1LREUtS2V5d29yZHNbaGldIjogIuCkleClhy3gpJfgpL7gpK7gpL4s4KSV 4KWH4KSX4KS+4KSu4KS+LOCkl+CkvuCkruCkvizgpJfgpL7gpK7gpL4iLAotICAgICJYLUtERS1L ZXl3b3Jkc1todV0iOiAiS0dhbW1hLCBrZ2FtbWEsIEdhbW1hLCBnYW1tYSIsCi0gICAgIlgtS0RF LUtleXdvcmRzW2lhXSI6ICJLR2FtbWEsIGtnYW1tYSwgR2FtbWEsIGdhbW1hIiwKLSAgICAiWC1L REUtS2V5d29yZHNbaWRdIjogIktHYW1tYSwga2dhbW1hLCBHYW1tYSwgZ2FtbWEiLAotICAgICJY LUtERS1LZXl3b3Jkc1tpc10iOiAiS0dhbW1hLCBrZ2FtbWEsIEdhbW1hLCBnYW1tYSxsaXRzdGls bGluZyIsCi0gICAgIlgtS0RFLUtleXdvcmRzW2l0XSI6ICJLR2FtbWEsIGtnYW1tYSwgR2FtbWEs IGdhbW1hIiwKLSAgICAiWC1LREUtS2V5d29yZHNba2FdIjogIktHYW1tYSwga2dhbW1hLCDhg5Lh g5Dhg5vhg5AsIOGDmeGDkuGDkOGDm+GDkCIsCi0gICAgIlgtS0RFLUtleXdvcmRzW2trXSI6ICJL R2FtbWEsIGtnYW1tYSwgR2FtbWEsIGdhbW1hLCDQs9Cw0LzQvNCwLCDQk9Cw0LzQvNCwIiwKLSAg ICAiWC1LREUtS2V5d29yZHNba21dIjogIktHYW1tYSwga2dhbW1hLCBHYW1tYSwgZ2FtbWEiLAot ICAgICJYLUtERS1LZXl3b3Jkc1trb10iOiAiS0dhbW1hLCBrZ2FtbWEsIEdhbW1hLCBnYW1tYSzq sJDrp4giLAotICAgICJYLUtERS1LZXl3b3Jkc1tsdF0iOiAiS0dhbW1hLCBrZ2FtbWEsIEdhbWEs IGdhbWEiLAotICAgICJYLUtERS1LZXl3b3Jkc1tsdl0iOiAiS0dhbW1hLCBrZ2FtbWEsIGdhbW1h IiwKLSAgICAiWC1LREUtS2V5d29yZHNbbXJdIjogIuCkleClh+Ckl+CkvuCkruCkviwg4KSV4KWH 4KSX4KS+4KSu4KS+LCDgpJfgpL7gpK7gpL4sIOCkl+CkvuCkruCkviIsCi0gICAgIlgtS0RFLUtl eXdvcmRzW25iXSI6ICJLR2FtbWEsIGtnYW1tYSwgR2FtbWEsIGdhbW1hIiwKLSAgICAiWC1LREUt S2V5d29yZHNbbmRzXSI6ICJLR2FtbWEsIGtnYW1tYSwgR2FtbWEsIGdhbW1hIiwKLSAgICAiWC1L REUtS2V5d29yZHNbbmxdIjogIktHYW1tYSwga2dhbW1hLCBHYW1tYSwgZ2FtbWEiLAotICAgICJY LUtERS1LZXl3b3Jkc1tubl0iOiAiS0dhbW1hLCBrZ2FtbWEsIEdhbW1hLCBnYW1tYSIsCi0gICAg IlgtS0RFLUtleXdvcmRzW3BhXSI6ICJLR2FtbWEsIGtnYW1tYSwgR2FtbWEsIGdhbW1hLOCol+Co vuCoruCovizgqJXgqYfgqJfgqL7gqK7gqL4iLAotICAgICJYLUtERS1LZXl3b3Jkc1twbF0iOiAi S0dhbW1hLCBrZ2FtbWEsIEdhbW1hLCBnYW1tYSIsCi0gICAgIlgtS0RFLUtleXdvcmRzW3B0XSI6 ICJLR2FtbWEsIGtnYW1tYSwgR2FtbWEsIGdhbW1hLCBHYW1hLCBnYW1hIiwKLSAgICAiWC1LREUt S2V5d29yZHNbcHRfQlJdIjogIktHYW1tYSwga2dhbW1hLCBHYW1hLCBnYW1hIiwKLSAgICAiWC1L REUtS2V5d29yZHNbcm9dIjogIktHYW1tYSwga2dhbW1hLCBnYW1hLCBnYW1tYSIsCi0gICAgIlgt S0RFLUtleXdvcmRzW3J1XSI6ICJLR2FtbWEsa2dhbW1hLEdhbW1hLGdhbW1hLNCz0LDQvNC80LAs 0LzQvtC90LjRgtC+0YAiLAotICAgICJYLUtERS1LZXl3b3Jkc1tzYV0iOiAi4KSV4KWN4KSX4KSu 4KWN4KSu4KS+LCDgpJXgpY3gpJfgpY3gpK7gpY3gpK7gpL4sIOCkl+CkvuCkruCljeCkruCkviwg 4KSX4KS+4KSu4KWN4KSu4KS+IiwKLSAgICAiWC1LREUtS2V5d29yZHNbc2tdIjogIktHYW1tYSwg a2dhbW1hLCBHYW1tYSwgZ2FtbWEiLAotICAgICJYLUtERS1LZXl3b3Jkc1tzbF0iOiAiS0dhbW1h LGtnYW1tYSxHYW1tYSxnYW1tYSxnYW1hIiwKLSAgICAiWC1LREUtS2V5d29yZHNbc3JAaWpla2F2 aWFuXSI6ICJLR2FtbWEsIGtnYW1tYSwgR2FtbWEsIGdhbW1hLNCa4oCR0LPQsNC80LAs0LPQsNC8 0LAiLAotICAgICJYLUtERS1LZXl3b3Jkc1tzckBpamVrYXZpYW5sYXRpbl0iOiAiS0dhbW1hLCBr Z2FtbWEsIEdhbW1hLCBnYW1tYSxL4oCRZ2FtYSxnYW1hIiwKLSAgICAiWC1LREUtS2V5d29yZHNb c3JAbGF0aW5dIjogIktHYW1tYSwga2dhbW1hLCBHYW1tYSwgZ2FtbWEsS+KAkWdhbWEsZ2FtYSIs Ci0gICAgIlgtS0RFLUtleXdvcmRzW3NyXSI6ICJLR2FtbWEsIGtnYW1tYSwgR2FtbWEsIGdhbW1h LNCa4oCR0LPQsNC80LAs0LPQsNC80LAiLAotICAgICJYLUtERS1LZXl3b3Jkc1tzdl0iOiAiS0dh bW1hLCBrZ2FtbWEsIEdhbW1hLCBnYW1tYSIsCi0gICAgIlgtS0RFLUtleXdvcmRzW3RhXSI6ICJL R2FtbWEsIGtnYW1tYSwgR2FtbWEsIGdhbW1hLCDgrpXgr4fgrpXgrr7grq7grr4sIOCuleCvh+Cu leCuvuCuruCvjeCuruCuviwg4K6V4K6+4K6u4K6+LCDgrpXgrr7grq7gr43grq7grr4iLAotICAg ICJYLUtERS1LZXl3b3Jkc1t0Z10iOiAiS0dhbW1hLCBrZ2FtbWEsINCU0LDRgNCw0rfQsNC4INGP 0LrQtNC40LPQsNGA06MsINC00LDRgNCw0rfQsNC4INGP0LrQtNC40LPQsNGA06MiLAotICAgICJY LUtERS1LZXl3b3Jkc1t0cl0iOiAiS0dhbW1hLCBrZ2FtbWEsIGdhbW1hLCBnYW1hIiwKLSAgICAi WC1LREUtS2V5d29yZHNbdWddIjogIktHYW1tYSwga2dhbW1hLCBHYW1tYSwgZ2FtbWEsINqv2KfZ hdmF2KciLAotICAgICJYLUtERS1LZXl3b3Jkc1t1a10iOiAiS0dhbW1hLGtnYW1tYSxHYW1tYSxn YW1tYSzQs9Cw0LzQsCzRgNGW0LLQtdC90Yws0LrQvtC90YLRgNCw0YHRgtC90ZbRgdGC0Yws0YDR ltCy0LXQvdGMINC60L7QvdGC0YDQsNGB0YLQvdC+0YHRgtGWIiwKLSAgICAiWC1LREUtS2V5d29y ZHNbdmldIjogIktHYW1tYSxrZ2FtbWEsR2FtbWEsZ2FtbWEiLAotICAgICJYLUtERS1LZXl3b3Jk c1t6aF9DTl0iOiAiS0dhbW1hLCBrZ2FtbWEsIEdhbW1hLCBnYW1tYSwgZ2FtYSwgZ2FtYXpoaSwg 5Ly96amsLCDkvL3njpssIOS8vemprOWAvCIsCi0gICAgIlgtS0RFLUtleXdvcmRzW3poX1RXXSI6 ICJLR2FtbWEsIGtnYW1tYSwgR2FtbWEsIGdhbW1hIiwKLSAgICAiWC1LREUtT25seVNob3dPblF0 UGxhdGZvcm1zIjogWwotICAgICAgICAieGNiIgotICAgIF0sCi0gICAgIlgtS0RFLVN5c3RlbS1T ZXR0aW5ncy1QYXJlbnQtQ2F0ZWdvcnkiOiAiZGlzcGxheSIsCi0gICAgIlgtS0RFLVRlc3QtTW9k dWxlIjogInRydWUiCi19CmRpZmYgLS1naXQgYS9rY21rZ2FtbWEva2dhbW1hLmNwcCBiL2tjbWtn YW1tYS9rZ2FtbWEuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDQyYTNlLi4w MDAwMDAwCi0tLSBhL2tjbWtnYW1tYS9rZ2FtbWEuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjE4 ICswLDAgQEAKLS8qCi0gKiAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0 ZXIKLSAqCi0gKiAgU1BEWC1GaWxlQ29weXJpZ2h0VGV4dDogMjAwMSBNaWNoYWVsIHYuT3N0aGVp bSA8TXZPc3RoZWltQHdlYi5kZT4KLSAqLwotCi0jaW5jbHVkZSAia2dhbW1hLmgiCi0KLSNpbmNs dWRlICJnYW1tYWN0cmwuaCIKLSNpbmNsdWRlICJ4Zjg2Y29uZmlncGF0aC5oIgotI2luY2x1ZGUg PHVuaXN0ZC5oPgotCi0jaW5jbHVkZSA8UUJveExheW91dD4KLSNpbmNsdWRlIDxRQ2hlY2tCb3g+ Ci0jaW5jbHVkZSA8UUNvbWJvQm94PgotI2luY2x1ZGUgPFFEaXI+Ci0jaW5jbHVkZSA8UUZvcm1M YXlvdXQ+Ci0jaW5jbHVkZSA8UUZyYW1lPgotI2luY2x1ZGUgPFFHcmlkTGF5b3V0PgotI2luY2x1 ZGUgPFFIQm94TGF5b3V0PgotI2luY2x1ZGUgPFFMYWJlbD4KLSNpbmNsdWRlIDxRTGF5b3V0Pgot I2luY2x1ZGUgPFFQaXhtYXA+Ci0jaW5jbHVkZSA8UVByb2Nlc3M+Ci0jaW5jbHVkZSA8UVN0YWNr ZWRXaWRnZXQ+Ci0jaW5jbHVkZSA8UVN0YW5kYXJkUGF0aHM+Ci0jaW5jbHVkZSA8UVN0cmluZz4K LSNpbmNsdWRlIDxRU3RyaW5nTGlzdD4KLSNpbmNsdWRlIDxRVGV4dFN0cmVhbT4KLSNpbmNsdWRl IDxRVkJveExheW91dD4KLQotI2luY2x1ZGUgPEtDb25maWc+Ci0jaW5jbHVkZSA8S0NvbmZpZ0dy b3VwPgotI2luY2x1ZGUgPEtMb2NhbGl6ZWRTdHJpbmc+Ci0jaW5jbHVkZSA8S1BsdWdpbkZhY3Rv cnk+Ci0KLSNpbmNsdWRlICJ4dmlkZXh0d3JhcC5oIgotCi1leHRlcm4gIkMiIHsKLWJvb2wgdGVz dF9rZ2FtbWEoKQotewotICAgIGJvb2wgcmV0dmFsOwotICAgICh2b2lkKW5ldyBYVmlkRXh0V3Jh cCgmcmV0dmFsLCBudWxscHRyKTsKLSAgICByZXR1cm4gcmV0dmFsOwotfQotfQotCi1LX1BMVUdJ Tl9DTEFTU19XSVRIX0pTT04oS0dhbW1hLCAia2NtX2tnYW1tYS5qc29uIikKLQotS0dhbW1hOjpL R2FtbWEoUU9iamVjdCAqcGFyZW50LCBjb25zdCBLUGx1Z2luTWV0YURhdGEgJmRhdGEpCi0gICAg OiBLQ01vZHVsZShwYXJlbnQsIGRhdGEpCi0gICAgLCByb290UHJvY2VzcyhudWxscHRyKQotewot ICAgIGJvb2wgb2s7Ci0gICAgR2FtbWFDb3JyZWN0aW9uID0gZmFsc2U7Ci0gICAgeHYgPSBuZXcg WFZpZEV4dFdyYXAoJm9rLCBudWxscHRyKTsKLSAgICBpZiAob2spIHsgLyogS0RFIDQ6IFVuZWNj ZXNzYXJ5IHRlc3QsIHdoZW4gYWxsIEtDTSB3cmFwcGVycyBkbyBjb25kaXRpb25hbCBsb2FkaW5n ICovCi0gICAgICAgIHh2LT5nZXRHYW1tYShYVmlkRXh0V3JhcDo6UmVkLCAmb2spOwotICAgICAg ICBpZiAob2spIHsKLSAgICAgICAgICAgIFNjcmVlbkNvdW50ID0geHYtPl9TY3JlZW5Db3VudCgp OwotICAgICAgICAgICAgY3VycmVudFNjcmVlbiA9IHh2LT5nZXRTY3JlZW4oKTsKLSAgICAgICAg ICAgIHh2LT5zZXRHYW1tYUxpbWl0cygwLjQsIDMuNSk7Ci0KLSAgICAgICAgICAgIGZvciAoaW50 IGkgPSAwOyBpIDwgU2NyZWVuQ291bnQ7IGkrKykgewotICAgICAgICAgICAgICAgIGFzc2lnbiA8 PCAwOwotICAgICAgICAgICAgICAgIHJnYW1tYSA8PCBRU3RyaW5nKCk7Ci0gICAgICAgICAgICAg ICAgZ2dhbW1hIDw8IFFTdHJpbmcoKTsKLSAgICAgICAgICAgICAgICBiZ2FtbWEgPDwgUVN0cmlu ZygpOwotCi0gICAgICAgICAgICAgICAgLy8gU3RvcmUgdGhlIGN1cnJlbnQgZ2FtbWEgdmFsdWVz Ci0gICAgICAgICAgICAgICAgeHYtPnNldFNjcmVlbihpKTsKLSAgICAgICAgICAgICAgICByYmFr IDw8IHh2LT5nZXRHYW1tYShYVmlkRXh0V3JhcDo6UmVkKTsKLSAgICAgICAgICAgICAgICBnYmFr IDw8IHh2LT5nZXRHYW1tYShYVmlkRXh0V3JhcDo6R3JlZW4pOwotICAgICAgICAgICAgICAgIGJi YWsgPDwgeHYtPmdldEdhbW1hKFhWaWRFeHRXcmFwOjpCbHVlKTsKLSAgICAgICAgICAgIH0KLSAg ICAgICAgICAgIHh2LT5zZXRTY3JlZW4oY3VycmVudFNjcmVlbik7Ci0KLSAgICAgICAgICAgIHJv b3RQcm9jZXNzID0gbmV3IFFQcm9jZXNzOwotICAgICAgICAgICAgR2FtbWFDb3JyZWN0aW9uID0g dHJ1ZTsKLSAgICAgICAgICAgIHNldHVwVUkoKTsKLSAgICAgICAgICAgIHNhdmVkID0gZmFsc2U7 Ci0KLSAgICAgICAgICAgIGlmICghbG9hZFNldHRpbmdzKCkpIHsgLy8gdHJ5IHRvIGxvYWQgZ2Ft bWEgdmFsdWVzIGZyb20gY29uZmlnIGZpbGUKLSAgICAgICAgICAgICAgICAvLyBpZiBmYWlsZWQs IHRha2UgY3VycmVudCBnYW1tYSB2YWx1ZXMKLSAgICAgICAgICAgICAgICBmb3IgKGludCBpID0g MDsgaSA8IFNjcmVlbkNvdW50OyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgcmdhbW1hW2ld LnNldE51bShyYmFrW2ldLCAnZicsIDIpOwotICAgICAgICAgICAgICAgICAgICBnZ2FtbWFbaV0u c2V0TnVtKGdiYWtbaV0sICdmJywgMik7Ci0gICAgICAgICAgICAgICAgICAgIGJnYW1tYVtpXS5z ZXROdW0oYmJha1tpXSwgJ2YnLCAyKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9 Ci0gICAgICAgICAgICBsb2FkKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKCFHYW1tYUNv cnJlY3Rpb24pIHsgLy8gc29tZXRoaW5nIGlzIHdyb25nLCBzaG93IG9ubHkgZXJyb3IgbWVzc2Fn ZQotICAgICAgICBzZXR1cFVJKCk7Ci0gICAgfQotfQotCi1LR2FtbWE6On5LR2FtbWEoKQotewot ICAgIGRlbGV0ZSB4djsKLX0KLQotLyoqIFVzZXIgaW50ZXJmYWNlICovCi12b2lkIEtHYW1tYTo6 c2V0dXBVSSgpCi17Ci0gICAgUUJveExheW91dCAqdG9wTGF5b3V0ID0gbmV3IFFWQm94TGF5b3V0 KHdpZGdldCgpKTsKLQotICAgIGlmIChHYW1tYUNvcnJlY3Rpb24pIHsKLSAgICAgICAgUUhCb3hM YXlvdXQgKmhib3ggPSBuZXcgUUhCb3hMYXlvdXQoKTsKLSAgICAgICAgdG9wTGF5b3V0LT5hZGRM YXlvdXQoaGJveCk7Ci0gICAgICAgIFFMYWJlbCAqbGFiZWwgPSBuZXcgUUxhYmVsKGkxOG4oIiZT ZWxlY3QgdGVzdCBwaWN0dXJlOiIpLCB3aWRnZXQoKSk7Ci0gICAgICAgIFFDb21ib0JveCAqY29t Ym8gPSBuZXcgUUNvbWJvQm94KHdpZGdldCgpKTsKLSAgICAgICAgbGFiZWwtPnNldEJ1ZGR5KGNv bWJvKTsKLQotICAgICAgICBRU3RyaW5nTGlzdCBsaXN0OwotICAgICAgICBsaXN0IDw8IGkxOG4o IkdyYXkgU2NhbGUiKSA8PCBpMThuKCJSR0IgU2NhbGUiKSA8PCBpMThuKCJDTVkgU2NhbGUiKSA8 PCBpMThuKCJEYXJrIEdyYXkiKSA8PCBpMThuKCJNaWQgR3JheSIpIDw8IGkxOG4oIkxpZ2h0IEdy YXkiKTsKLSAgICAgICAgY29tYm8tPmFkZEl0ZW1zKGxpc3QpOwotCi0gICAgICAgIGhib3gtPmFk ZFdpZGdldChsYWJlbCk7Ci0gICAgICAgIGhib3gtPmFkZFdpZGdldChjb21ibyk7Ci0gICAgICAg IGhib3gtPmFkZFN0cmV0Y2goKTsKLQotICAgICAgICBRU3RhY2tlZFdpZGdldCAqc3RhY2sgPSBu ZXcgUVN0YWNrZWRXaWRnZXQod2lkZ2V0KCkpOwotCi0gICAgICAgIGNvbm5lY3QoY29tYm8sIFFP dmVybG9hZDxpbnQ+OjpvZigmUUNvbWJvQm94OjphY3RpdmF0ZWQpLCBzdGFjaywgJlFTdGFja2Vk V2lkZ2V0OjpzZXRDdXJyZW50SW5kZXgpOwotCi0gICAgICAgIFFMYWJlbCAqcGljMSA9IG5ldyBR TGFiZWwoc3RhY2spOwotICAgICAgICBwaWMxLT5zZXRNaW5pbXVtU2l6ZSg1MzAsIDE3MSk7Ci0g ICAgICAgIHBpYzEtPnNldFBpeG1hcChRUGl4bWFwKFFTdGFuZGFyZFBhdGhzOjpsb2NhdGUoUVN0 YW5kYXJkUGF0aHM6OkdlbmVyaWNEYXRhTG9jYXRpb24sIFFTdHJpbmdMaXRlcmFsKCJrZ2FtbWEv cGljcy9ncmV5c2NhbGUucG5nIikpKSk7Ci0gICAgICAgIHBpYzEtPnNldEFsaWdubWVudChRdDo6 QWxpZ25DZW50ZXIpOwotICAgICAgICBzdGFjay0+aW5zZXJ0V2lkZ2V0KDAsIHBpYzEpOwotCi0g ICAgICAgIFFMYWJlbCAqcGljMiA9IG5ldyBRTGFiZWwoc3RhY2spOwotICAgICAgICBwaWMyLT5z ZXRQaXhtYXAoUVBpeG1hcChRU3RhbmRhcmRQYXRoczo6bG9jYXRlKFFTdGFuZGFyZFBhdGhzOjpH ZW5lcmljRGF0YUxvY2F0aW9uLCBRU3RyaW5nTGl0ZXJhbCgia2dhbW1hL3BpY3Mvcmdic2NhbGUu cG5nIikpKSk7Ci0gICAgICAgIHBpYzItPnNldEFsaWdubWVudChRdDo6QWxpZ25DZW50ZXIpOwot ICAgICAgICBzdGFjay0+aW5zZXJ0V2lkZ2V0KDEsIHBpYzIpOwotCi0gICAgICAgIFFMYWJlbCAq cGljMyA9IG5ldyBRTGFiZWwoc3RhY2spOwotICAgICAgICBwaWMzLT5zZXRQaXhtYXAoUVBpeG1h cChRU3RhbmRhcmRQYXRoczo6bG9jYXRlKFFTdGFuZGFyZFBhdGhzOjpHZW5lcmljRGF0YUxvY2F0 aW9uLCBRU3RyaW5nTGl0ZXJhbCgia2dhbW1hL3BpY3MvY215c2NhbGUucG5nIikpKSk7Ci0gICAg ICAgIHBpYzMtPnNldEFsaWdubWVudChRdDo6QWxpZ25DZW50ZXIpOwotICAgICAgICBzdGFjay0+ aW5zZXJ0V2lkZ2V0KDIsIHBpYzMpOwotCi0gICAgICAgIFFMYWJlbCAqcGljNCA9IG5ldyBRTGFi ZWwoc3RhY2spOwotICAgICAgICBwaWM0LT5zZXRQaXhtYXAoUVBpeG1hcChRU3RhbmRhcmRQYXRo czo6bG9jYXRlKFFTdGFuZGFyZFBhdGhzOjpHZW5lcmljRGF0YUxvY2F0aW9uLCBRU3RyaW5nTGl0 ZXJhbCgia2dhbW1hL3BpY3MvZGFya2dyZXkucG5nIikpKSk7Ci0gICAgICAgIHBpYzQtPnNldEFs aWdubWVudChRdDo6QWxpZ25DZW50ZXIpOwotICAgICAgICBzdGFjay0+aW5zZXJ0V2lkZ2V0KDMs IHBpYzQpOwotCi0gICAgICAgIFFMYWJlbCAqcGljNSA9IG5ldyBRTGFiZWwoc3RhY2spOwotICAg ICAgICBwaWM1LT5zZXRQaXhtYXAoUVBpeG1hcChRU3RhbmRhcmRQYXRoczo6bG9jYXRlKFFTdGFu ZGFyZFBhdGhzOjpHZW5lcmljRGF0YUxvY2F0aW9uLCBRU3RyaW5nTGl0ZXJhbCgia2dhbW1hL3Bp Y3MvbWlkZ3JleS5wbmciKSkpKTsKLSAgICAgICAgcGljNS0+c2V0QWxpZ25tZW50KFF0OjpBbGln bkNlbnRlcik7Ci0gICAgICAgIHN0YWNrLT5pbnNlcnRXaWRnZXQoNCwgcGljNSk7Ci0KLSAgICAg ICAgUUxhYmVsICpwaWM2ID0gbmV3IFFMYWJlbChzdGFjayk7Ci0gICAgICAgIHBpYzYtPnNldFBp eG1hcChRUGl4bWFwKFFTdGFuZGFyZFBhdGhzOjpsb2NhdGUoUVN0YW5kYXJkUGF0aHM6OkdlbmVy aWNEYXRhTG9jYXRpb24sIFFTdHJpbmdMaXRlcmFsKCJrZ2FtbWEvcGljcy9saWdodGdyZXkucG5n IikpKSk7Ci0gICAgICAgIHBpYzYtPnNldEFsaWdubWVudChRdDo6QWxpZ25DZW50ZXIpOwotICAg ICAgICBzdGFjay0+aW5zZXJ0V2lkZ2V0KDUsIHBpYzYpOwotCi0gICAgICAgIHRvcExheW91dC0+ YWRkV2lkZ2V0KHN0YWNrLCAxMCk7Ci0KLSAgICAgICAgYXV0byBob3Jpem9udGFsU2VwYXJhdG9y ID0gbmV3IFFGcmFtZSgpOwotICAgICAgICBob3Jpem9udGFsU2VwYXJhdG9yLT5zZXRGcmFtZVN0 eWxlKFFGcmFtZTo6SExpbmUpOwotICAgICAgICB0b3BMYXlvdXQtPmFkZFdpZGdldChob3Jpem9u dGFsU2VwYXJhdG9yKTsKLQotICAgICAgICAvLyBTbGlkZXJzIGZvciBnYW1tYSBjb3JyZWN0aW9u Ci0KLSAgICAgICAgUUxhYmVsICpnYW1tYWxhYmVsID0gbmV3IFFMYWJlbCh3aWRnZXQoKSk7Ci0g ICAgICAgIGdhbW1hbGFiZWwtPnNldFRleHQoaTE4bigiR2FtbWE6IikpOwotCi0gICAgICAgIFFM YWJlbCAqcmVkbGFiZWwgPSBuZXcgUUxhYmVsKHdpZGdldCgpKTsKLSAgICAgICAgcmVkbGFiZWwt PnNldFRleHQoaTE4bigiUmVkOiIpKTsKLQotICAgICAgICBRTGFiZWwgKmdyZWVubGFiZWwgPSBu ZXcgUUxhYmVsKHdpZGdldCgpKTsKLSAgICAgICAgZ3JlZW5sYWJlbC0+c2V0VGV4dChpMThuKCJH cmVlbjoiKSk7Ci0KLSAgICAgICAgUUxhYmVsICpibHVlbGFiZWwgPSBuZXcgUUxhYmVsKHdpZGdl dCgpKTsKLSAgICAgICAgYmx1ZWxhYmVsLT5zZXRUZXh0KGkxOG4oIkJsdWU6IikpOwotCi0gICAg ICAgIGdjdHJsID0gbmV3IEdhbW1hQ3RybCh3aWRnZXQoKSwgeHYpOwotICAgICAgICBjb25uZWN0 KGdjdHJsLCAmR2FtbWFDdHJsOjpnYW1tYUNoYW5nZWQsIHRoaXMsICZLQ01vZHVsZTo6bWFya0Fz Q2hhbmdlZCk7Ci0gICAgICAgIGNvbm5lY3QoZ2N0cmwsICZHYW1tYUN0cmw6OmdhbW1hQ2hhbmdl ZCwgdGhpcywgJktHYW1tYTo6U3luY1NjcmVlbnMpOwotICAgICAgICBnYW1tYWxhYmVsLT5zZXRC dWRkeShnY3RybCk7Ci0KLSAgICAgICAgcmdjdHJsID0gbmV3IEdhbW1hQ3RybCh3aWRnZXQoKSwg eHYsIFhWaWRFeHRXcmFwOjpSZWQpOwotICAgICAgICBjb25uZWN0KHJnY3RybCwgJkdhbW1hQ3Ry bDo6Z2FtbWFDaGFuZ2VkLCB0aGlzLCAmS0NNb2R1bGU6Om1hcmtBc0NoYW5nZWQpOwotICAgICAg ICBjb25uZWN0KHJnY3RybCwgJkdhbW1hQ3RybDo6Z2FtbWFDaGFuZ2VkLCB0aGlzLCAmS0dhbW1h OjpTeW5jU2NyZWVucyk7Ci0gICAgICAgIGNvbm5lY3QoZ2N0cmwsIFNJR05BTChnYW1tYUNoYW5n ZWQoaW50KSksIHJnY3RybCwgU0xPVChzZXRDdHJsKGludCkpKTsKLSAgICAgICAgY29ubmVjdChy Z2N0cmwsICZHYW1tYUN0cmw6OmdhbW1hQ2hhbmdlZCwgZ2N0cmwsICZHYW1tYUN0cmw6OnN1c3Bl bmQpOwotICAgICAgICByZWRsYWJlbC0+c2V0QnVkZHkocmdjdHJsKTsKLQotICAgICAgICBnZ2N0 cmwgPSBuZXcgR2FtbWFDdHJsKHdpZGdldCgpLCB4diwgWFZpZEV4dFdyYXA6OkdyZWVuKTsKLSAg ICAgICAgY29ubmVjdChnZ2N0cmwsICZHYW1tYUN0cmw6OmdhbW1hQ2hhbmdlZCwgdGhpcywgJktD TW9kdWxlOjptYXJrQXNDaGFuZ2VkKTsKLSAgICAgICAgY29ubmVjdChnZ2N0cmwsICZHYW1tYUN0 cmw6OmdhbW1hQ2hhbmdlZCwgdGhpcywgJktHYW1tYTo6U3luY1NjcmVlbnMpOwotICAgICAgICBj b25uZWN0KGdjdHJsLCBTSUdOQUwoZ2FtbWFDaGFuZ2VkKGludCkpLCBnZ2N0cmwsIFNMT1Qoc2V0 Q3RybChpbnQpKSk7Ci0gICAgICAgIGNvbm5lY3QoZ2djdHJsLCAmR2FtbWFDdHJsOjpnYW1tYUNo YW5nZWQsIGdjdHJsLCAmR2FtbWFDdHJsOjpzdXNwZW5kKTsKLSAgICAgICAgZ3JlZW5sYWJlbC0+ c2V0QnVkZHkoZ2djdHJsKTsKLQotICAgICAgICBiZ2N0cmwgPSBuZXcgR2FtbWFDdHJsKHdpZGdl dCgpLCB4diwgWFZpZEV4dFdyYXA6OkJsdWUpOwotICAgICAgICBjb25uZWN0KGJnY3RybCwgJkdh bW1hQ3RybDo6Z2FtbWFDaGFuZ2VkLCB0aGlzLCAmS0NNb2R1bGU6Om1hcmtBc0NoYW5nZWQpOwot ICAgICAgICBjb25uZWN0KGJnY3RybCwgJkdhbW1hQ3RybDo6Z2FtbWFDaGFuZ2VkLCB0aGlzLCAm S0dhbW1hOjpTeW5jU2NyZWVucyk7Ci0gICAgICAgIGNvbm5lY3QoZ2N0cmwsIFNJR05BTChnYW1t YUNoYW5nZWQoaW50KSksIGJnY3RybCwgU0xPVChzZXRDdHJsKGludCkpKTsKLSAgICAgICAgY29u bmVjdChiZ2N0cmwsICZHYW1tYUN0cmw6OmdhbW1hQ2hhbmdlZCwgZ2N0cmwsICZHYW1tYUN0cmw6 OnN1c3BlbmQpOwotICAgICAgICBibHVlbGFiZWwtPnNldEJ1ZGR5KGJnY3RybCk7Ci0KLSAgICAg ICAgUUZvcm1MYXlvdXQgKmZvcm0gPSBuZXcgUUZvcm1MYXlvdXQ7Ci0gICAgICAgIGZvcm0tPmFk ZFJvdyhnYW1tYWxhYmVsLCBnY3RybCk7Ci0gICAgICAgIGZvcm0tPmFkZEl0ZW0obmV3IFFTcGFj ZXJJdGVtKDAsIGdhbW1hbGFiZWwtPnNpemVIaW50KCkuaGVpZ2h0KCkgLyAzKSk7Ci0gICAgICAg IGZvcm0tPmFkZFJvdyhyZWRsYWJlbCwgcmdjdHJsKTsKLSAgICAgICAgZm9ybS0+YWRkUm93KGdy ZWVubGFiZWwsIGdnY3RybCk7Ci0gICAgICAgIGZvcm0tPmFkZFJvdyhibHVlbGFiZWwsIGJnY3Ry bCk7Ci0KLSAgICAgICAgdG9wTGF5b3V0LT5hZGRMYXlvdXQoZm9ybSk7Ci0KLSAgICAgICAgLy8g T3B0aW9ucwotICAgICAgICBRV2lkZ2V0ICpvcHRpb25zID0gbmV3IFFXaWRnZXQod2lkZ2V0KCkp OwotICAgICAgICBRSEJveExheW91dCAqb3B0aW9uc0hCb3hMYXlvdXQgPSBuZXcgUUhCb3hMYXlv dXQob3B0aW9ucyk7Ci0KLSAgICAgICAgeGY4NmNmZ2JveCA9IG5ldyBRQ2hlY2tCb3goaTE4bigi U2F2ZSBzZXR0aW5ncyBzeXN0ZW0gd2lkZSIpLCBvcHRpb25zKTsKLSAgICAgICAgb3B0aW9uc0hC b3hMYXlvdXQtPmFkZFdpZGdldCh4Zjg2Y2ZnYm94KTsKLSAgICAgICAgY29ubmVjdCh4Zjg2Y2Zn Ym94LCAmUUFic3RyYWN0QnV0dG9uOjpjbGlja2VkLCB0aGlzLCAmS0dhbW1hOjpjaGFuZ2VDb25m aWcpOwotCi0gICAgICAgIHN5bmNib3ggPSBuZXcgUUNoZWNrQm94KGkxOG4oIlN5bmMgc2NyZWVu cyIpLCBvcHRpb25zKTsKLSAgICAgICAgb3B0aW9uc0hCb3hMYXlvdXQtPmFkZFdpZGdldChzeW5j Ym94KTsKLSAgICAgICAgY29ubmVjdChzeW5jYm94LCAmUUFic3RyYWN0QnV0dG9uOjpjbGlja2Vk LCB0aGlzLCAmS0dhbW1hOjpTeW5jU2NyZWVucyk7Ci0gICAgICAgIGNvbm5lY3Qoc3luY2JveCwg JlFBYnN0cmFjdEJ1dHRvbjo6Y2xpY2tlZCwgdGhpcywgJktDTW9kdWxlOjptYXJrQXNDaGFuZ2Vk KTsKLQotICAgICAgICBzY3JlZW5zZWxlY3QgPSBuZXcgUUNvbWJvQm94KG9wdGlvbnMpOwotICAg ICAgICBvcHRpb25zSEJveExheW91dC0+YWRkV2lkZ2V0KHNjcmVlbnNlbGVjdCk7Ci0gICAgICAg IGZvciAoaW50IGkgPSAwOyBpIDwgU2NyZWVuQ291bnQ7IGkrKykgewotICAgICAgICAgICAgc2Ny ZWVuc2VsZWN0LT5hZGRJdGVtKGkxOG4oIlNjcmVlbiAlMSIsIGkgKyAxKSk7Ci0gICAgICAgIH0K LSAgICAgICAgc2NyZWVuc2VsZWN0LT5zZXRDdXJyZW50SW5kZXgoY3VycmVudFNjcmVlbik7Ci0g ICAgICAgIGlmIChTY3JlZW5Db3VudCA8PSAxKSB7Ci0gICAgICAgICAgICBzY3JlZW5zZWxlY3Qt PnNldEVuYWJsZWQoZmFsc2UpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgY29ubmVj dChzY3JlZW5zZWxlY3QsIFFPdmVybG9hZDxpbnQ+OjpvZigmUUNvbWJvQm94OjphY3RpdmF0ZWQp LCB0aGlzLCAmS0dhbW1hOjpjaGFuZ2VTY3JlZW4pOwotICAgICAgICB9Ci0KLSAgICAgICAgb3B0 aW9uc0hCb3hMYXlvdXQtPnNldFNwYWNpbmcoMTApOwotICAgICAgICBvcHRpb25zSEJveExheW91 dC0+c2V0U3RyZXRjaEZhY3Rvcih4Zjg2Y2ZnYm94LCAxMCk7Ci0gICAgICAgIG9wdGlvbnNIQm94 TGF5b3V0LT5zZXRTdHJldGNoRmFjdG9yKHN5bmNib3gsIDEpOwotICAgICAgICBvcHRpb25zSEJv eExheW91dC0+c2V0U3RyZXRjaEZhY3RvcihzY3JlZW5zZWxlY3QsIDEpOwotCi0gICAgICAgIHRv cExheW91dC0+YWRkV2lkZ2V0KG9wdGlvbnMpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFFMYWJl bCAqZXJyb3IgPSBuZXcgUUxhYmVsKHdpZGdldCgpKTsKLSAgICAgICAgZXJyb3ItPnNldFRleHQo Ci0gICAgICAgICAgICBpMThuKCJHYW1tYSBjb3JyZWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkg eW91ciIKLSAgICAgICAgICAgICAgICAgIiBncmFwaGljcyBoYXJkd2FyZSBvciBkcml2ZXIuIikp OwotICAgICAgICBlcnJvci0+c2V0QWxpZ25tZW50KFF0OjpBbGlnbkNlbnRlcik7Ci0gICAgICAg IHRvcExheW91dC0+YWRkV2lkZ2V0KGVycm9yKTsKLSAgICB9Ci19Ci0KLS8qKiBSZXN0b3JlIGxh dGVzdCBzYXZlZCBnYW1tYSB2YWx1ZXMgKi8KLXZvaWQgS0dhbW1hOjpsb2FkKCkKLXsKLSAgICBp ZiAoR2FtbWFDb3JyZWN0aW9uKSB7Ci0gICAgICAgIEtDb25maWcgKmNvbmZpZyA9IG5ldyBLQ29u ZmlnKFFTdHJpbmdMaXRlcmFsKCJrZ2FtbWFyYyIpKTsKLSAgICAgICAgS0NvbmZpZ0dyb3VwIGdy b3VwID0gY29uZmlnLT5ncm91cCgiQ29uZmlnRmlsZSIpOwotCi0gICAgICAgIC8vIHNhdmUgY2hl Y2tib3ggc3RhdHVzCi0gICAgICAgIGlmICh4Zjg2Y2ZnYm94LT5pc0NoZWNrZWQoKSkgewotICAg ICAgICAgICAgZ3JvdXAud3JpdGVFbnRyeSgidXNlIiwgIlhGODZDb25maWciKTsKLSAgICAgICAg fSBlbHNlIHsKLSAgICAgICAgICAgIGdyb3VwLndyaXRlRW50cnkoInVzZSIsICJrZ2FtbWFyYyIp OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gbG9hZCBzeW5jYm94IHN0YXR1cwotICAgICAgICBn cm91cCA9IGNvbmZpZy0+Z3JvdXAoIlN5bmNCb3giKTsKLSAgICAgICAgaWYgKGdyb3VwLnJlYWRF bnRyeSgic3luYyIpID09IFFMYXRpbjFTdHJpbmcoInllcyIpKSB7Ci0gICAgICAgICAgICBzeW5j Ym94LT5zZXRDaGVja2VkKHRydWUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc3lu Y2JveC0+c2V0Q2hlY2tlZChmYWxzZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25maWctPnN5 bmMoKTsKLSAgICAgICAgZGVsZXRlIGNvbmZpZzsKLQotICAgICAgICBmb3IgKGludCBpID0gMDsg aSA8IFNjcmVlbkNvdW50OyBpKyspIHsKLSAgICAgICAgICAgIHh2LT5zZXRTY3JlZW4oaSk7Ci0g ICAgICAgICAgICBpZiAocmdhbW1hW2ldID09IGdnYW1tYVtpXSAmJiByZ2FtbWFbaV0gPT0gYmdh bW1hW2ldKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGkgPT0gY3VycmVudFNjcmVlbikgewotICAg ICAgICAgICAgICAgICAgICBnY3RybC0+c2V0R2FtbWEocmdhbW1hW2ldKTsKLSAgICAgICAgICAg ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICB4di0+c2V0R2FtbWEoWFZpZEV4dFdy YXA6OlZhbHVlLCByZ2FtbWFbaV0udG9GbG9hdCgpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlmIChpID09IGN1cnJlbnRTY3JlZW4p IHsKLSAgICAgICAgICAgICAgICAgICAgcmdjdHJsLT5zZXRHYW1tYShyZ2FtbWFbaV0pOwotICAg ICAgICAgICAgICAgICAgICBnZ2N0cmwtPnNldEdhbW1hKGdnYW1tYVtpXSk7Ci0gICAgICAgICAg ICAgICAgICAgIGJnY3RybC0+c2V0R2FtbWEoYmdhbW1hW2ldKTsKLSAgICAgICAgICAgICAgICAg ICAgZ2N0cmwtPnN1c3BlbmQoKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg ICAgICAgICAgICB4di0+c2V0R2FtbWEoWFZpZEV4dFdyYXA6OlJlZCwgcmdhbW1hW2ldLnRvRmxv YXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIHh2LT5zZXRHYW1tYShYVmlkRXh0V3JhcDo6R3Jl ZW4sIGdnYW1tYVtpXS50b0Zsb2F0KCkpOwotICAgICAgICAgICAgICAgICAgICB4di0+c2V0R2Ft bWEoWFZpZEV4dFdyYXA6OkJsdWUsIGJnYW1tYVtpXS50b0Zsb2F0KCkpOwotICAgICAgICAgICAg ICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICB4di0+c2V0U2NyZWVuKGN1 cnJlbnRTY3JlZW4pOwotCi0gICAgICAgIHNldE5lZWRzU2F2ZShmYWxzZSk7Ci0gICAgfQotfQot Ci12b2lkIEtHYW1tYTo6c2F2ZSgpCi17Ci0gICAgaWYgKEdhbW1hQ29ycmVjdGlvbikgewotICAg ICAgICBmb3IgKGludCBpID0gMDsgaSA8IFNjcmVlbkNvdW50OyBpKyspIHsKLSAgICAgICAgICAg IHh2LT5zZXRTY3JlZW4oaSk7Ci0gICAgICAgICAgICByZ2FtbWFbaV0gPSByZ2N0cmwtPmdhbW1h KDIpOwotICAgICAgICAgICAgZ2dhbW1hW2ldID0gZ2djdHJsLT5nYW1tYSgyKTsKLSAgICAgICAg ICAgIGJnYW1tYVtpXSA9IGJnY3RybC0+Z2FtbWEoMik7Ci0gICAgICAgIH0KLSAgICAgICAgeHYt PnNldFNjcmVlbihjdXJyZW50U2NyZWVuKTsKLQotICAgICAgICBLQ29uZmlnICpjb25maWcgPSBu ZXcgS0NvbmZpZyhRU3RyaW5nTGl0ZXJhbCgia2dhbW1hcmMiKSk7Ci0gICAgICAgIEtDb25maWdH cm91cCBncm91cCA9IGNvbmZpZy0+Z3JvdXAoIlN5bmNCb3giKTsKLSAgICAgICAgaWYgKHN5bmNi b3gtPmlzQ2hlY2tlZCgpKSB7Ci0gICAgICAgICAgICBncm91cC53cml0ZUVudHJ5KCJzeW5jIiwg InllcyIpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZ3JvdXAud3JpdGVFbnRyeSgi c3luYyIsICJubyIpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCF4Zjg2Y2ZnYm94LT5pc0No ZWNrZWQoKSkgeyAvLyB3cml0ZSBnYW1tYSBzZXR0aW5ncyB0byB0aGUgdXNlcnMgY29uZmlnCi0g ICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IFNjcmVlbkNvdW50OyBpKyspIHsKLSAgICAg ICAgICAgICAgICBLQ29uZmlnR3JvdXAgc2NyZWVuR3JvdXAgPSBjb25maWctPmdyb3VwKFFTdHJp bmdMaXRlcmFsKCJTY3JlZW4gJTEiKS5hcmcoaSkpOwotICAgICAgICAgICAgICAgIHNjcmVlbkdy b3VwLndyaXRlRW50cnkoInJnYW1tYSIsIHJnYW1tYVtpXSk7Ci0gICAgICAgICAgICAgICAgc2Ny ZWVuR3JvdXAud3JpdGVFbnRyeSgiZ2dhbW1hIiwgZ2dhbW1hW2ldKTsKLSAgICAgICAgICAgICAg ICBzY3JlZW5Hcm91cC53cml0ZUVudHJ5KCJiZ2FtbWEiLCBiZ2FtbWFbaV0pOwotICAgICAgICAg ICAgfQotICAgICAgICAgICAgS0NvbmZpZ0dyb3VwIGNvbmZHcm91cCA9IGNvbmZpZy0+Z3JvdXAo IkNvbmZpZ0ZpbGUiKTsKLSAgICAgICAgICAgIGNvbmZHcm91cC53cml0ZUVudHJ5KCJ1c2UiLCAi a2dhbW1hcmMiKTsKLSAgICAgICAgfSBlbHNlIHsgLy8gd3JpdGUgZ2FtbWEgc2V0dGluZ3MgdG8g c2VjdGlvbiAiTW9uaXRvciIgb2YgWEY4NkNvbmZpZwotICAgICAgICAgICAgS0NvbmZpZ0dyb3Vw IHg4Nmdyb3VwID0gY29uZmlnLT5ncm91cCgiQ29uZmlnRmlsZSIpOwotICAgICAgICAgICAgeDg2 Z3JvdXAud3JpdGVFbnRyeSgidXNlIiwgIlhGODZDb25maWciKTsKLQotICAgICAgICAgICAgaWYg KCEocm9vdFByb2Nlc3MtPnN0YXRlKCkgPT0gUVByb2Nlc3M6OlJ1bm5pbmcpKSB7Ci0gICAgICAg ICAgICAgICAgUVN0cmluZyBBcmd1bWVudHMgPSBRU3RyaW5nTGl0ZXJhbCgieGY4NmdhbW1hY2Zn ICIpOwotICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgU2NyZWVuQ291bnQ7IGkr KykgewotICAgICAgICAgICAgICAgICAgICBBcmd1bWVudHMgKz0gcmdhbW1hW2Fzc2lnbltpXV0g KyBRTGF0aW4xQ2hhcignICcpICsgZ2dhbW1hW2Fzc2lnbltpXV0gKyBRTGF0aW4xQ2hhcignICcp ICsgYmdhbW1hW2Fzc2lnbltpXV0gKyBRTGF0aW4xQ2hhcignICcpOwotICAgICAgICAgICAgICAg IH0KLSAgICAgICAgICAgICAgICByb290UHJvY2Vzcy0+c2V0UHJvZ3JhbShRU3RhbmRhcmRQYXRo czo6ZmluZEV4ZWN1dGFibGUoUVN0cmluZ0xpdGVyYWwoImtkZXN1IikpKTsKLSAgICAgICAgICAg ICAgICByb290UHJvY2Vzcy0+c2V0QXJndW1lbnRzKEFyZ3VtZW50cy5zcGxpdChRTGF0aW4xQ2hh cignICcpKSk7Ci0gICAgICAgICAgICAgICAgcm9vdFByb2Nlc3MtPnN0YXJ0KCk7Ci0gICAgICAg ICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY29uZmlnLT5zeW5jKCk7Ci0gICAgICAgIGRlbGV0 ZSBjb25maWc7Ci0gICAgICAgIHNhdmVkID0gdHJ1ZTsKLSAgICAgICAgc2V0TmVlZHNTYXZlKGZh bHNlKTsKLSAgICB9Ci19Ci0KLXZvaWQgS0dhbW1hOjpkZWZhdWx0cygpCi17Ci0gICAgaWYgKEdh bW1hQ29ycmVjdGlvbikgewotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IFNjcmVlbkNvdW50 OyBpKyspIHsKLSAgICAgICAgICAgIHh2LT5zZXRTY3JlZW4oaSk7Ci0gICAgICAgICAgICBnY3Ry bC0+c2V0R2FtbWEoUVN0cmluZ0xpdGVyYWwoIjEuMDAiKSk7Ci0gICAgICAgIH0KLSAgICAgICAg eHYtPnNldFNjcmVlbihjdXJyZW50U2NyZWVuKTsKLSAgICB9Ci0gICAgeGY4NmNmZ2JveC0+c2V0 Q2hlY2tlZChmYWxzZSk7Ci0gICAgc3luY2JveC0+c2V0Q2hlY2tlZChmYWxzZSk7Ci19Ci0KLWJv b2wgS0dhbW1hOjpsb2FkU2V0dGluZ3MoKQotewotICAgIEtDb25maWcgKmNvbmZpZyA9IG5ldyBL Q29uZmlnKFFTdHJpbmdMaXRlcmFsKCJrZ2FtbWFyYyIpKTsKLSAgICBLQ29uZmlnR3JvdXAgZ3Jw ID0gY29uZmlnLT5ncm91cCgiQ29uZmlnRmlsZSIpOwotICAgIFFTdHJpbmcgQ29uZmlnRmlsZShn cnAucmVhZEVudHJ5KCJ1c2UiKSk7Ci0gICAgS0NvbmZpZ0dyb3VwIHN5bmNHcm91cCA9IGNvbmZp Zy0+Z3JvdXAoIlN5bmNCb3giKTsKLSAgICBpZiAoc3luY0dyb3VwLnJlYWRFbnRyeSgic3luYyIp ID09IFFMYXRpbjFTdHJpbmcoInllcyIpKSB7Ci0gICAgICAgIHN5bmNib3gtPnNldENoZWNrZWQo dHJ1ZSk7Ci0gICAgfQotICAgIGRlbGV0ZSBjb25maWc7Ci0KLSAgICBpZiAoQ29uZmlnRmlsZSA9 PSBRTGF0aW4xU3RyaW5nKCJYRjg2Q29uZmlnIikpIHsgLy8gcGFyc2UgWEY4NkNvbmZpZwotICAg ICAgICBib29sIHZhbGlkR2xvYmFsQ29uZmlnID0gbG9hZFN5c3RlbVNldHRpbmdzKCk7Ci0gICAg ICAgIHhmODZjZmdib3gtPnNldENoZWNrZWQodmFsaWRHbG9iYWxDb25maWcpOwotICAgICAgICBy ZXR1cm4gKHZhbGlkR2xvYmFsQ29uZmlnKTsKLSAgICB9IGVsc2UgeyAvLyBnZXQgZ2FtbWEgc2V0 dGluZ3MgZnJvbSB1c2VyIGNvbmZpZwotICAgICAgICByZXR1cm4gKGxvYWRVc2VyU2V0dGluZ3Mo KSk7Ci0gICAgfQotfQotCi1ib29sIEtHYW1tYTo6bG9hZFVzZXJTZXR0aW5ncygpCi17Ci0gICAg S0NvbmZpZyAqY29uZmlnID0gbmV3IEtDb25maWcoUVN0cmluZ0xpdGVyYWwoImtnYW1tYXJjIikp OwotCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBTY3JlZW5Db3VudDsgaSsrKSB7Ci0gICAgICAg IEtDb25maWdHcm91cCBzY3JlZW5Hcm91cCA9IGNvbmZpZy0+Z3JvdXAoUVN0cmluZ0xpdGVyYWwo IlNjcmVlbiAlMSIpLmFyZyhpKSk7Ci0gICAgICAgIHJnYW1tYVtpXSA9IHNjcmVlbkdyb3VwLnJl YWRFbnRyeSgicmdhbW1hIik7Ci0gICAgICAgIGdnYW1tYVtpXSA9IHNjcmVlbkdyb3VwLnJlYWRF bnRyeSgiZ2dhbW1hIik7Ci0gICAgICAgIGJnYW1tYVtpXSA9IHNjcmVlbkdyb3VwLnJlYWRFbnRy eSgiYmdhbW1hIik7Ci0gICAgfQotICAgIGRlbGV0ZSBjb25maWc7Ci0KLSAgICByZXR1cm4gKHZh bGlkYXRlR2FtbWFWYWx1ZXMoKSk7Ci19Ci0KLWJvb2wgS0dhbW1hOjpsb2FkU3lzdGVtU2V0dGlu Z3MoKQotewotICAgIFFTdHJpbmdMaXN0IE1vbml0b3IsIFNjcmVlbiwgU2NyZWVuTGF5b3V0LCBT Y3JlZW5Nb25pdG9yLCBHYW1tYTsKLSAgICBRTGlzdDxpbnQ+IFNjcmVlbk5yOwotICAgIFFTdHJp bmcgU2VjdGlvbjsKLSAgICBYRjg2Q29uZmlnUGF0aCBQYXRoOwotICAgIFFGaWxlIGYoUVN0cmlu Zzo6ZnJvbVV0ZjgoUGF0aC5nZXQoKSkpOwotICAgIGlmIChmLm9wZW4oUUlPRGV2aWNlOjpSZWFk T25seSkpIHsKLSAgICAgICAgUVRleHRTdHJlYW0gdCgmZik7Ci0gICAgICAgIFFTdHJpbmcgczsK LSAgICAgICAgaW50IHNuID0gMDsKLSAgICAgICAgYm9vbCBnbSA9IGZhbHNlOwotCi0gICAgICAg IC8vIEFuYWx5emUgU2NyZWVuPC0+TW9uaXRvciBhc3NpZ25tZW50cyBvZiBtdWx0aS1oZWFkIGNv bmZpZ3VyYXRpb25zCi0gICAgICAgIHdoaWxlICghdC5hdEVuZCgpKSB7Ci0gICAgICAgICAgICBz ID0gKHQucmVhZExpbmUoKSkuc2ltcGxpZmllZCgpOwotICAgICAgICAgICAgUVN0cmluZ0xpc3Qg d29yZHMgPSBzLnNwbGl0KFFMYXRpbjFDaGFyKCcgJykpOwotICAgICAgICAgICAgaWYgKCF3b3Jk cy5lbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHdvcmRzWzBdID09IFFMYXRpbjFTdHJp bmcoIlNlY3Rpb24iKSAmJiB3b3Jkcy5zaXplKCkgPiAxKSB7Ci0gICAgICAgICAgICAgICAgICAg IGlmICgoU2VjdGlvbiA9IHdvcmRzWzFdKSA9PSBRTGF0aW4xU3RyaW5nKCJcIk1vbml0b3JcIiIp KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBnbSA9IGZhbHNlOwotICAgICAgICAgICAgICAg ICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh3b3Jkc1swXSA9PSBRTGF0aW4xU3Ry aW5nKCJFbmRTZWN0aW9uIikpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKFNlY3Rpb24gPT0g UUxhdGluMVN0cmluZygiXCJNb25pdG9yXCIiKSAmJiAhZ20pIHsKLSAgICAgICAgICAgICAgICAg ICAgICAgIEdhbW1hIDw8IFFTdHJpbmcoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGdtID0g ZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgU2VjdGlv biA9IFFTdHJpbmcoKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHdvcmRzWzBdID09IFFM YXRpbjFTdHJpbmcoIklkZW50aWZpZXIiKSAmJiB3b3Jkcy5zaXplKCkgPiAxKSB7Ci0gICAgICAg ICAgICAgICAgICAgIGlmIChTZWN0aW9uID09IFFMYXRpbjFTdHJpbmcoIlwiTW9uaXRvclwiIikp IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIE1vbml0b3IgPDwgd29yZHNbMV07Ci0gICAgICAg ICAgICAgICAgICAgIH0gZWxzZSBpZiAoU2VjdGlvbiA9PSBRTGF0aW4xU3RyaW5nKCJcIlNjcmVl blwiIikpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFNjcmVlbiA8PCB3b3Jkc1sxXTsKLSAg ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod29yZHNbMF0g PT0gUUxhdGluMVN0cmluZygiU2NyZWVuIikgJiYgd29yZHMuc2l6ZSgpID4gMSkgewotICAgICAg ICAgICAgICAgICAgICBpZiAoU2VjdGlvbiA9PSBRTGF0aW4xU3RyaW5nKCJcIlNlcnZlckxheW91 dFwiIikpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgb2s7Ci0gICAgICAgICAgICAg ICAgICAgICAgICBpbnQgaSA9IHdvcmRzWzFdLnRvSW50KCZvayk7Ci0gICAgICAgICAgICAgICAg ICAgICAgICBpZiAob2sgJiYgd29yZHMuc2l6ZSgpID4gMikgewotICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFNjcmVlbk5yIDw8IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Ny ZWVuTGF5b3V0IDw8IHdvcmRzWzJdOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTY3JlZW5OciA8PCBzbisrOwotICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFNjcmVlbkxheW91dCA8PCB3b3Jkc1sxXTsKLSAgICAgICAgICAg ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0g ZWxzZSBpZiAod29yZHNbMF0gPT0gUUxhdGluMVN0cmluZygiTW9uaXRvciIpICYmIHdvcmRzLnNp emUoKSA+IDEpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKFNlY3Rpb24gPT0gUUxhdGluMVN0 cmluZygiXCJTY3JlZW5cIiIpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBTY3JlZW5Nb25p dG9yIDw8IHdvcmRzWzFdOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg fSBlbHNlIGlmICh3b3Jkc1swXSA9PSBRTGF0aW4xU3RyaW5nKCJHYW1tYSIpKSB7Ci0gICAgICAg ICAgICAgICAgICAgIGlmIChTZWN0aW9uID09IFFMYXRpbjFTdHJpbmcoIlwiTW9uaXRvclwiIikp IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEdhbW1hIDw8IHM7Ci0gICAgICAgICAgICAgICAg ICAgICAgICBnbSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg ICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gLy8gRW5kIHdoaWxlCi0gICAgICAgIGYuY2xv c2UoKTsKLSAgICAgICAgaWYgKCFNb25pdG9yLmlzRW1wdHkoKSAmJiAhU2NyZWVuTW9uaXRvci5p c0VtcHR5KCkgJiYgIVNjcmVlbkxheW91dC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGZvciAo aW50IGkgPSAwOyBpIDwgU2NyZWVuQ291bnQ7IGkrKykgewotICAgICAgICAgICAgICAgIGZvciAo aW50IGogPSAwOyBqIDwgU2NyZWVuQ291bnQ7IGorKykgewotICAgICAgICAgICAgICAgICAgICBp ZiAoU2NyZWVuTGF5b3V0W2ldID09IFNjcmVlbltqXSkgewotICAgICAgICAgICAgICAgICAgICAg ICAgZm9yIChpbnQgayA9IDA7IGsgPCBTY3JlZW5Db3VudDsgaysrKSB7Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgaWYgKE1vbml0b3Jba10gPT0gU2NyZWVuTW9uaXRvcltqXSkgewotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NpZ25bU2NyZWVuTnJbaV1dID0gazsKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0g ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0g ICAgICAgICAgICAvLyBFeHRyYWN0IGdhbW1hIHZhbHVlcwotICAgICAgICAgICAgaWYgKGdtKSB7 Ci0gICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBTY3JlZW5Db3VudDsgaSsrKSB7 Ci0gICAgICAgICAgICAgICAgICAgIHJnYW1tYVtpXSA9IGdnYW1tYVtpXSA9IGJnYW1tYVtpXSA9 IFFTdHJpbmcoKTsKLQotICAgICAgICAgICAgICAgICAgICBRU3RyaW5nTGlzdCB3b3JkcyA9IEdh bW1hW2Fzc2lnbltpXV0uc3BsaXQoUUxhdGluMUNoYXIoJyAnKSk7Ci0gICAgICAgICAgICAgICAg ICAgIFFTdHJpbmdMaXN0OjpDb25zdEl0ZXJhdG9yIGl0ID0gd29yZHMuY29uc3RCZWdpbigpOwot ICAgICAgICAgICAgICAgICAgICBpZiAod29yZHMuc2l6ZSgpIDwgNCkgewotICAgICAgICAgICAg ICAgICAgICAgICAgcmdhbW1hW2ldID0gZ2dhbW1hW2ldID0gYmdhbW1hW2ldID0gKigrK2l0KTsg Ly8gc2luZ2xlIGdhbW1hIHZhbHVlCi0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg ICAgICAgICAgICAgICAgICAgICByZ2FtbWFbaV0gPSAqKCsraXQpOyAvLyBldmVudHVhbGx5IHJn YiBnYW1tYSB2YWx1ZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIGdnYW1tYVtpXSA9ICooKytp dCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBiZ2FtbWFbaV0gPSAqKCsraXQpOwotICAgICAg ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAg ICB9Ci0gICAgfQotICAgIHJldHVybiAodmFsaWRhdGVHYW1tYVZhbHVlcygpKTsKLX0KLQotYm9v bCBLR2FtbWE6OnZhbGlkYXRlR2FtbWFWYWx1ZXMoKQotewotICAgIGJvb2wgck9rLCBnT2ssIGJP aywgcmVzdWx0OwotCi0gICAgcmVzdWx0ID0gdHJ1ZTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8 IFNjcmVlbkNvdW50OyBpKyspIHsKLSAgICAgICAgcmdhbW1hW2ldLnRvRmxvYXQoJnJPayk7Ci0g ICAgICAgIGdnYW1tYVtpXS50b0Zsb2F0KCZnT2spOwotICAgICAgICBiZ2FtbWFbaV0udG9GbG9h dCgmYk9rKTsKLQotICAgICAgICBpZiAoIShyT2sgJiYgZ09rICYmIGJPaykpIHsKLSAgICAgICAg ICAgIGlmIChyT2spIHsKLSAgICAgICAgICAgICAgICBnZ2FtbWFbaV0gPSBiZ2FtbWFbaV0gPSBy Z2FtbWFbaV07Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHJlc3VsdCA9 IGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiAocmVz dWx0KTsKLX0KLQotdm9pZCBLR2FtbWE6OmNoYW5nZUNvbmZpZygpCi17Ci0gICAgYm9vbCBPayA9 IGZhbHNlOwotCi0gICAgaWYgKHhmODZjZmdib3gtPmlzQ2hlY2tlZCgpKSB7Ci0gICAgICAgIE9r ID0gbG9hZFN5c3RlbVNldHRpbmdzKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgT2sgPSBsb2Fk VXNlclNldHRpbmdzKCk7Ci0gICAgfQotCi0gICAgaWYgKCFPaykgewotICAgICAgICBmb3IgKGlu dCBpID0gMDsgaSA8IFNjcmVlbkNvdW50OyBpKyspIHsKLSAgICAgICAgICAgIHh2LT5zZXRTY3Jl ZW4oaSk7Ci0gICAgICAgICAgICByZ2FtbWFbaV0uc2V0TnVtKHh2LT5nZXRHYW1tYShYVmlkRXh0 V3JhcDo6UmVkKSwgJ2YnLCAyKTsKLSAgICAgICAgICAgIGdnYW1tYVtpXS5zZXROdW0oeHYtPmdl dEdhbW1hKFhWaWRFeHRXcmFwOjpHcmVlbiksICdmJywgMik7Ci0gICAgICAgICAgICBiZ2FtbWFb aV0uc2V0TnVtKHh2LT5nZXRHYW1tYShYVmlkRXh0V3JhcDo6Qmx1ZSksICdmJywgMik7Ci0gICAg ICAgIH0KLSAgICAgICAgeHYtPnNldFNjcmVlbihjdXJyZW50U2NyZWVuKTsKLSAgICB9Ci0gICAg bG9hZCgpOwotfQotCi12b2lkIEtHYW1tYTo6U3luY1NjcmVlbnMoKQotewotICAgIGlmIChzeW5j Ym94LT5pc0NoZWNrZWQoKSkgewotICAgICAgICBmbG9hdCByZyA9IHh2LT5nZXRHYW1tYShYVmlk RXh0V3JhcDo6UmVkKTsKLSAgICAgICAgZmxvYXQgZ2cgPSB4di0+Z2V0R2FtbWEoWFZpZEV4dFdy YXA6OkdyZWVuKTsKLSAgICAgICAgZmxvYXQgYmcgPSB4di0+Z2V0R2FtbWEoWFZpZEV4dFdyYXA6 OkJsdWUpOwotCi0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgU2NyZWVuQ291bnQ7IGkrKykg ewotICAgICAgICAgICAgaWYgKGkgIT0gY3VycmVudFNjcmVlbikgewotICAgICAgICAgICAgICAg IHh2LT5zZXRTY3JlZW4oaSk7Ci0gICAgICAgICAgICAgICAgeHYtPnNldEdhbW1hKFhWaWRFeHRX cmFwOjpSZWQsIHJnKTsKLSAgICAgICAgICAgICAgICB4di0+c2V0R2FtbWEoWFZpZEV4dFdyYXA6 OkdyZWVuLCBnZyk7Ci0gICAgICAgICAgICAgICAgeHYtPnNldEdhbW1hKFhWaWRFeHRXcmFwOjpC bHVlLCBiZyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgeHYtPnNldFNjcmVl bihjdXJyZW50U2NyZWVuKTsKLSAgICB9Ci19Ci0KLXZvaWQgS0dhbW1hOjpjaGFuZ2VTY3JlZW4o aW50IHNuKQotewotICAgIFFTdHJpbmcgcmVkLCBncmVlbiwgYmx1ZTsKLQotICAgIHh2LT5zZXRT Y3JlZW4oc24pOwotICAgIGN1cnJlbnRTY3JlZW4gPSBzbjsKLQotICAgIHJlZC5zZXROdW0oeHYt PmdldEdhbW1hKFhWaWRFeHRXcmFwOjpSZWQpLCAnZicsIDIpOwotICAgIGdyZWVuLnNldE51bSh4 di0+Z2V0R2FtbWEoWFZpZEV4dFdyYXA6OkdyZWVuKSwgJ2YnLCAyKTsKLSAgICBibHVlLnNldE51 bSh4di0+Z2V0R2FtbWEoWFZpZEV4dFdyYXA6OkJsdWUpLCAnZicsIDIpOwotCi0gICAgZ2N0cmwt PnNldENvbnRyb2wocmVkKTsKLSAgICByZ2N0cmwtPnNldENvbnRyb2wocmVkKTsKLSAgICBnZ2N0 cmwtPnNldENvbnRyb2woZ3JlZW4pOwotICAgIGJnY3RybC0+c2V0Q29udHJvbChibHVlKTsKLSAg ICBpZiAocmVkICE9IGdyZWVuIHx8IHJlZCAhPSBibHVlKSB7Ci0gICAgICAgIGdjdHJsLT5zdXNw ZW5kKCk7Ci0gICAgfQotfQotCi1pbnQgS0dhbW1hOjpidXR0b25zKCkKLXsKLSAgICByZXR1cm4g RGVmYXVsdCB8IEFwcGx5IHwgSGVscDsKLX0KLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWV4dGVy biAiQyIgewotLy8gUmVzdG9yZSB0aGUgdXNlciBnYW1tYSBzZXR0aW5ncwotUV9ERUNMX0VYUE9S VCB2b2lkIGtjbWluaXQoKQotewotICAgIGJvb2wgb2s7Ci0gICAgWFZpZEV4dFdyYXAgeHYoJm9r KTsKLQotICAgIGlmIChvaykgewotICAgICAgICB4di5zZXRHYW1tYUxpbWl0cygwLjQsIDMuNSk7 Ci0gICAgICAgIGZsb2F0IHJnYW1tYSwgZ2dhbW1hLCBiZ2FtbWE7Ci0gICAgICAgIEtDb25maWcg KmNvbmZpZyA9IG5ldyBLQ29uZmlnKFFTdHJpbmdMaXRlcmFsKCJrZ2FtbWFyYyIpKTsKLQotICAg ICAgICBmb3IgKGludCBpID0gMDsgaSA8IHh2Ll9TY3JlZW5Db3VudCgpOyBpKyspIHsKLSAgICAg ICAgICAgIHh2LnNldFNjcmVlbihpKTsKLSAgICAgICAgICAgIEtDb25maWdHcm91cCBzY3JlZW5H cm91cCA9IGNvbmZpZy0+Z3JvdXAoUVN0cmluZ0xpdGVyYWwoIlNjcmVlbiAlMSIpLmFyZyhpKSk7 Ci0KLSAgICAgICAgICAgIGlmICgocmdhbW1hID0gc2NyZWVuR3JvdXAucmVhZEVudHJ5KCJyZ2Ft bWEiKS50b0Zsb2F0KCkpKSB7Ci0gICAgICAgICAgICAgICAgeHYuc2V0R2FtbWEoWFZpZEV4dFdy YXA6OlJlZCwgcmdhbW1hKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICgoZ2dhbW1h ID0gc2NyZWVuR3JvdXAucmVhZEVudHJ5KCJnZ2FtbWEiKS50b0Zsb2F0KCkpKSB7Ci0gICAgICAg ICAgICAgICAgeHYuc2V0R2FtbWEoWFZpZEV4dFdyYXA6OkdyZWVuLCBnZ2FtbWEpOwotICAgICAg ICAgICAgfQotICAgICAgICAgICAgaWYgKChiZ2FtbWEgPSBzY3JlZW5Hcm91cC5yZWFkRW50cnko ImJnYW1tYSIpLnRvRmxvYXQoKSkpIHsKLSAgICAgICAgICAgICAgICB4di5zZXRHYW1tYShYVmlk RXh0V3JhcDo6Qmx1ZSwgYmdhbW1hKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAg ICBkZWxldGUgY29uZmlnOwotICAgIH0KLX0KLX0KLQotI2luY2x1ZGUgImtnYW1tYS5tb2MiCi0K LSNpbmNsdWRlICJtb2Nfa2dhbW1hLmNwcCIKZGlmZiAtLWdpdCBhL2tjbWtnYW1tYS9rZ2FtbWEu aCBiL2tjbWtnYW1tYS9rZ2FtbWEuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWZh MTgwZC4uMDAwMDAwMAotLS0gYS9rY21rZ2FtbWEva2dhbW1hLmgKKysrIC9kZXYvbnVsbApAQCAt MSw2NSArMCwwIEBACi0vKgotICogIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9y LWxhdGVyCi0gKgotICogIFNQRFgtRmlsZUNvcHlyaWdodFRleHQ6IDIwMDEgTWljaGFlbCB2Lk9z dGhlaW0gPE12T3N0aGVpbUB3ZWIuZGU+Ci0gKi8KLQotI2lmbmRlZiBLR0FNTUFfSF8KLSNkZWZp bmUgS0dBTU1BX0hfCi0KLSNpbmNsdWRlIDxLQ01vZHVsZT4KLS8vIEFkZGVkIGJ5IHF0M3RvNDoK LSNpbmNsdWRlIDxRTGlzdD4KLQotY2xhc3MgR2FtbWFDdHJsOwotY2xhc3MgUUNoZWNrQm94Owot Y2xhc3MgUUNvbWJvQm94OwotY2xhc3MgUVByb2Nlc3M7Ci1jbGFzcyBYVmlkRXh0V3JhcDsKLQot Y2xhc3MgS0dhbW1hIDogcHVibGljIEtDTW9kdWxlCi17Ci0gICAgUV9PQkpFQ1QKLXB1YmxpYzoK LSAgICBLR2FtbWEoUU9iamVjdCAqcGFyZW50LCBjb25zdCBLUGx1Z2luTWV0YURhdGEgJmRhdGEp OwotICAgIH5LR2FtbWEoKSBvdmVycmlkZTsKLQotICAgIHZvaWQgbG9hZCgpIG92ZXJyaWRlOwot ICAgIHZvaWQgc2F2ZSgpIG92ZXJyaWRlOwotICAgIHZvaWQgZGVmYXVsdHMoKSBvdmVycmlkZTsK LSAgICBpbnQgYnV0dG9ucygpOwotCi1wcm90ZWN0ZWQ6IC8vIFByb3RlY3RlZCBtZXRob2RzCi0g ICAgLyoqIFRoZSB1c2VyIGludGVyZmFjZSAqLwotICAgIHZvaWQgc2V0dXBVSSgpOwotICAgIC8q KiBEZWNpZGVzIGlmIHRvIGxvYWQgc2V0dGluZ3MgZnJvbSB1c2VyIG9yIHN5c3RlbSBjb25maWcg Ki8KLSAgICBib29sIGxvYWRTZXR0aW5ncygpOwotICAgIC8qKiBMb2FkIHNldHRpbmdzIGZyb20g a2dhbW1hcmMgKi8KLSAgICBib29sIGxvYWRVc2VyU2V0dGluZ3MoKTsKLSAgICAvKiogTG9hZCBz ZXR0aW5ncyBmcm9tIFhGODZDb25maWcgKi8KLSAgICBib29sIGxvYWRTeXN0ZW1TZXR0aW5ncygp OwotICAgIC8qKiBWYWxpZGF0ZSB0aGUgbG9hZGVkIGdhbW1hIHZhbHVlcyAqLwotICAgIGJvb2wg dmFsaWRhdGVHYW1tYVZhbHVlcygpOwotCi1wcml2YXRlIFFfU0xPVFM6Ci0gICAgLyoqIENhbGxl ZCBpZiB0aGUgdXNlciBtYXJrZWQgb3IgdW5tYXJrZWQgdGhlIFhGODZDb25maWcgY2hlY2tib3gg Ki8KLSAgICB2b2lkIGNoYW5nZUNvbmZpZygpOwotICAgIC8qKiBDYWxsZWQgaWYgdGhlIHVzZXIg bWFya2VkIG9yIHVubWFya2VkIHRoZSBzeW5jIHNjcmVlbiBjaGVja2JveCAqLwotICAgIHZvaWQg U3luY1NjcmVlbnMoKTsKLSAgICAvKiogQ2FsbGVkIGlmIHRoZSB1c2VyIGNob29zZXMgYSBuZXcg c2NyZWVuICovCi0gICAgdm9pZCBjaGFuZ2VTY3JlZW4oaW50IHNuKTsKLQotcHJpdmF0ZToKLSAg ICBib29sIHNhdmVkLCBHYW1tYUNvcnJlY3Rpb247Ci0gICAgaW50IFNjcmVlbkNvdW50LCBjdXJy ZW50U2NyZWVuOwotICAgIFFTdHJpbmdMaXN0IHJnYW1tYSwgZ2dhbW1hLCBiZ2FtbWE7Ci0gICAg UUxpc3Q8aW50PiBhc3NpZ247Ci0gICAgUUxpc3Q8ZmxvYXQ+IHJiYWssIGdiYWssIGJiYWs7Ci0g ICAgR2FtbWFDdHJsICpnY3RybCwgKnJnY3RybCwgKmdnY3RybCwgKmJnY3RybDsKLSAgICBRQ2hl Y2tCb3ggKnhmODZjZmdib3gsICpzeW5jYm94OwotICAgIFFDb21ib0JveCAqc2NyZWVuc2VsZWN0 OwotICAgIFFQcm9jZXNzICpyb290UHJvY2VzczsKLSAgICBYVmlkRXh0V3JhcCAqeHY7Ci19Owot Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL2tjbWtnYW1tYS9waWNzL0NNYWtlTGlzdHMudHh0IGIva2Nt a2dhbW1hL3BpY3MvQ01ha2VMaXN0cy50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDIzZjBhYmIuLjAwMDAwMDAKLS0tIGEva2Nta2dhbW1hL3BpY3MvQ01ha2VMaXN0cy50eHQKKysr IC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1pbnN0YWxsKEZJTEVTCi0gIGJhY2tncm91bmQu cG5nCi0gIGNteXNjYWxlLnBuZwotICBkYXJrZ3JleS5wbmcKLSAgZ3JleXNjYWxlLnBuZwotICBs aWdodGdyZXkucG5nCi0gIG1pZGdyZXkucG5nCi0gIHJnYnNjYWxlLnBuZwotICBERVNUSU5BVElP TiAke0tERV9JTlNUQUxMX0RBVEFESVJ9L2tnYW1tYS9waWNzKQotCmRpZmYgLS1naXQgYS9rY21r Z2FtbWEvcGljcy9iYWNrZ3JvdW5kLnBuZyBiL2tjbWtnYW1tYS9waWNzL2JhY2tncm91bmQucG5n CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NDgyOGU5Li4wMDAwMDAwCkJpbmFyeSBm aWxlcyBhL2tjbWtnYW1tYS9waWNzL2JhY2tncm91bmQucG5nIGFuZCAvZGV2L251bGwgZGlmZmVy CmRpZmYgLS1naXQgYS9rY21rZ2FtbWEvcGljcy9jbXlzY2FsZS5wbmcgYi9rY21rZ2FtbWEvcGlj cy9jbXlzY2FsZS5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxNTQ1MjkuLjAw MDAwMDAKQmluYXJ5IGZpbGVzIGEva2Nta2dhbW1hL3BpY3MvY215c2NhbGUucG5nIGFuZCAvZGV2 L251bGwgZGlmZmVyCmRpZmYgLS1naXQgYS9rY21rZ2FtbWEvcGljcy9kYXJrZ3JleS5wbmcgYi9r Y21rZ2FtbWEvcGljcy9kYXJrZ3JleS5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IGRkNjIyNzYuLjAwMDAwMDAKQmluYXJ5IGZpbGVzIGEva2Nta2dhbW1hL3BpY3MvZGFya2dyZXku cG5nIGFuZCAvZGV2L251bGwgZGlmZmVyCmRpZmYgLS1naXQgYS9rY21rZ2FtbWEvcGljcy9ncmV5 c2NhbGUucG5nIGIva2Nta2dhbW1hL3BpY3MvZ3JleXNjYWxlLnBuZwpkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggNWMzZWZhMS4uMDAwMDAwMApCaW5hcnkgZmlsZXMgYS9rY21rZ2FtbWEv cGljcy9ncmV5c2NhbGUucG5nIGFuZCAvZGV2L251bGwgZGlmZmVyCmRpZmYgLS1naXQgYS9rY21r Z2FtbWEvcGljcy9saWdodGdyZXkucG5nIGIva2Nta2dhbW1hL3BpY3MvbGlnaHRncmV5LnBuZwpk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGU3MmZhZS4uMDAwMDAwMApCaW5hcnkgZmls ZXMgYS9rY21rZ2FtbWEvcGljcy9saWdodGdyZXkucG5nIGFuZCAvZGV2L251bGwgZGlmZmVyCmRp ZmYgLS1naXQgYS9rY21rZ2FtbWEvcGljcy9taWRncmV5LnBuZyBiL2tjbWtnYW1tYS9waWNzL21p ZGdyZXkucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNDZiMTI3Li4wMDAwMDAw CkJpbmFyeSBmaWxlcyBhL2tjbWtnYW1tYS9waWNzL21pZGdyZXkucG5nIGFuZCAvZGV2L251bGwg ZGlmZmVyCmRpZmYgLS1naXQgYS9rY21rZ2FtbWEvcGljcy9yZ2JzY2FsZS5wbmcgYi9rY21rZ2Ft bWEvcGljcy9yZ2JzY2FsZS5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkMjgz ODMuLjAwMDAwMDAKQmluYXJ5IGZpbGVzIGEva2Nta2dhbW1hL3BpY3Mvcmdic2NhbGUucG5nIGFu ZCAvZGV2L251bGwgZGlmZmVyCmRpZmYgLS1naXQgYS9rY21rZ2FtbWEveGY4NmNvbmZpZ3BhdGgu Y3BwIGIva2Nta2dhbW1hL3hmODZjb25maWdwYXRoLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMzc5M2ZjZS4uMDAwMDAwMAotLS0gYS9rY21rZ2FtbWEveGY4NmNvbmZpZ3BhdGgu Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAqICBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlcgotICoKLSAqICBTUERYLUZpbGVDb3B5cmlnaHRU ZXh0OiAyMDAyIE1pY2hhZWwgdi5Pc3RoZWltIDxvc3RoZWltbUB1c2Vycy5iZXJsaW9zLmRlPgot ICovCi0KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KLQotI2luY2x1 ZGUgPHZlY3Rvcj4KLQotI2luY2x1ZGUgInhmODZjb25maWdwYXRoLmgiCi0KLXVzaW5nIG5hbWVz cGFjZSBzdGQ7Ci0KLVhGODZDb25maWdQYXRoOjpYRjg2Q29uZmlnUGF0aCgpCi17Ci0gICAgdmVj dG9yPHN0cmluZz4gc2VhcmNoUGF0aHM7Ci0gICAgc2VhcmNoUGF0aHMucHVzaF9iYWNrKCIvZXRj L1gxMS9YRjg2Q29uZmlnLTQiKTsKLSAgICBzZWFyY2hQYXRocy5wdXNoX2JhY2soIi9ldGMvWDEx L1hGODZDb25maWciKTsKLSAgICBzZWFyY2hQYXRocy5wdXNoX2JhY2soIi9ldGMvWEY4NkNvbmZp ZyIpOwotICAgIHNlYXJjaFBhdGhzLnB1c2hfYmFjaygiL3Vzci9YMTFSNi9ldGMvWDExL1hGODZD b25maWctNCIpOwotICAgIHNlYXJjaFBhdGhzLnB1c2hfYmFjaygiL3Vzci9YMTFSNi9ldGMvWDEx L1hGODZDb25maWciKTsKLSAgICBzZWFyY2hQYXRocy5wdXNoX2JhY2soIi91c3IvWDExUjYvbGli L1gxMS9YRjg2Q29uZmlnLTQiKTsKLSAgICBzZWFyY2hQYXRocy5wdXNoX2JhY2soIi91c3IvWDEx UjYvbGliL1gxMS9YRjg2Q29uZmlnIik7Ci0KLSAgICBzZWFyY2hQYXRocy5wdXNoX2JhY2soIi9l dGMvWDExL3hvcmcuY29uZi00Iik7Ci0gICAgc2VhcmNoUGF0aHMucHVzaF9iYWNrKCIvZXRjL1gx MS94b3JnLmNvbmYiKTsKLSAgICBzZWFyY2hQYXRocy5wdXNoX2JhY2soIi9ldGMveG9yZy5jb25m Iik7Ci0gICAgc2VhcmNoUGF0aHMucHVzaF9iYWNrKCIvdXNyL1gxMVI2L2V0Yy9YMTEveG9yZy5j b25mLTQiKTsKLSAgICBzZWFyY2hQYXRocy5wdXNoX2JhY2soIi91c3IvWDExUjYvZXRjL1gxMS94 b3JnLmNvbmYiKTsKLSAgICBzZWFyY2hQYXRocy5wdXNoX2JhY2soIi91c3IvWDExUjYvbGliL1gx MS94b3JnLmNvbmYtNCIpOwotICAgIHNlYXJjaFBhdGhzLnB1c2hfYmFjaygiL3Vzci9YMTFSNi9s aWIvWDExL3hvcmcuY29uZiIpOwotCi0gICAgdmVjdG9yPHN0cmluZz46Oml0ZXJhdG9yIGl0ID0g c2VhcmNoUGF0aHMuYmVnaW4oKTsKLSAgICBmb3IgKDsgaXQgIT0gc2VhcmNoUGF0aHMuZW5kKCk7 ICsraXQpIHsKLSAgICAgICAgaWYgKCFhY2Nlc3MoKFBhdGggPSAqaXQpLmNfc3RyKCksIEZfT0sp KSB7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLX0KLQotWEY4NkNvbmZp Z1BhdGg6On5YRjg2Q29uZmlnUGF0aCgpCi17Ci19Ci0KLS8qKiBSZXR1cm5zIHBhdGggKi8KLWNv bnN0IGNoYXIgKlhGODZDb25maWdQYXRoOjpnZXQoKQotewotICAgIHJldHVybiAoUGF0aC5jX3N0 cigpKTsKLX0KZGlmZiAtLWdpdCBhL2tjbWtnYW1tYS94Zjg2Y29uZmlncGF0aC5oIGIva2Nta2dh bW1hL3hmODZjb25maWdwYXRoLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlYWQ2 YWEuLjAwMDAwMDAKLS0tIGEva2Nta2dhbW1hL3hmODZjb25maWdwYXRoLmgKKysrIC9kZXYvbnVs bApAQCAtMSwzMSArMCwwIEBACi0vKgotICogIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwt Mi4wLW9yLWxhdGVyCi0gKgotICogIFNQRFgtRmlsZUNvcHlyaWdodFRleHQ6IDIwMDIgTWljaGFl bCB2Lk9zdGhlaW0gPG9zdGhlaW1tQHVzZXJzLmJlcmxpb3MuZGU+Ci0gKi8KLQotI2lmbmRlZiBY Rjg2Q09ORklHUEFUSF9ICi0jZGVmaW5lIFhGODZDT05GSUdQQVRIX0gKLQotI2luY2x1ZGUgPHN0 cmluZz4KLQotLyoqU2VhcmNoIGZvciBYRjg2Q29uZmlnIG9yIFhGODZDb25maWctNCB3aGljaCBj YW4gYmUgbG9jYXRlZCBhdCBkaWZmZXJlbnQKLSAgcGxhY2VzLgotICAqQGF1dGhvciBNaWNoYWVs IHYuT3N0aGVpbQotICAqLwotCi1jbGFzcyBYRjg2Q29uZmlnUGF0aAotewotcHVibGljOgotICAg IFhGODZDb25maWdQYXRoKCk7Ci0gICAgflhGODZDb25maWdQYXRoKCk7Ci0KLSAgICAvKiogUmV0 dXJucyBQYXRoIHZhcmlhYmxlICovCi0gICAgY29uc3QgY2hhciAqZ2V0KCk7Ci0KLXByaXZhdGU6 IC8vIFByaXZhdGUgYXR0cmlidXRlcwotICAgIC8qKiBDb250YWlucyB0aGUgcGF0aCBvZiBYRjg2 Q29uZmlnIGZpbGUgKi8KLSAgICBzdGQ6OnN0cmluZyBQYXRoOwotfTsKLQotI2VuZGlmCmRpZmYg LS1naXQgYS9rY21rZ2FtbWEveHZpZGV4dHdyYXAuY3BwIGIva2Nta2dhbW1hL3h2aWRleHR3cmFw LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDdkZjViYS4uMDAwMDAwMAotLS0g YS9rY21rZ2FtbWEveHZpZGV4dHdyYXAuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTc3ICswLDAg QEAKLS8qCi0gKiAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXIKLSAq Ci0gKiAgU1BEWC1GaWxlQ29weXJpZ2h0VGV4dDogMjAwMiBNaWNoYWVsIHYuT3N0aGVpbSA8TXZP c3RoZWltQHdlYi5kZT4KLSAqLwotCi0jaW5jbHVkZSA8UURlYnVnPgotCi0jaW5jbHVkZSA8ZnN0 cmVhbT4KLSNpbmNsdWRlIDxpb3N0cmVhbT4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLQotI2luY2x1 ZGUgPHNzdHJlYW0+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotI2lu Y2x1ZGUgInhmODZjb25maWdwYXRoLmgiCi0KLSNpbmNsdWRlIDxYMTEvWGxpYi5oPgotI2luY2x1 ZGUgPFgxMS9Yb3MuaD4KLSNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9ucy94Zjg2dm1vZGUuaD4KLQot Ly8gI2luY2x1ZGUgPGZpeHgxMWguaD4KLSNpbmNsdWRlICJ4dmlkZXh0d3JhcC5oIgotCi11c2lu ZyBuYW1lc3BhY2Ugc3RkOwotCi1YVmlkRXh0V3JhcDo6WFZpZEV4dFdyYXAoYm9vbCAqT0ssIGNv bnN0IGNoYXIgKmRpc3BsYXluYW1lKQotewotICAgIGlmICgoZHB5ID0gWE9wZW5EaXNwbGF5KGRp c3BsYXluYW1lKSkpIHsKLSAgICAgICAgc2NyZWVuID0gRGVmYXVsdFNjcmVlbihkcHkpOwotICAg ICAgICBzZXRHYW1tYUxpbWl0cygwLjEsIDEwLjApOwotICAgICAgICAqT0sgPSB0cnVlOwotICAg IH0gZWxzZSB7Ci0gICAgICAgIHFEZWJ1ZygpIDw8ICJLR2FtbWE6IHVuYWJsZSB0byBvcGVuIGRp c3BsYXkgIiA8PCBkaXNwbGF5bmFtZTsKLSAgICAgICAgKk9LID0gZmFsc2U7Ci0gICAgfQotfQot Ci1YVmlkRXh0V3JhcDo6flhWaWRFeHRXcmFwKCkKLXsKLSAgICBpZiAoZHB5KSB7Ci0gICAgICAg IFhDbG9zZURpc3BsYXkoZHB5KTsKLSAgICB9Ci19Ci0KLWludCBYVmlkRXh0V3JhcDo6X0RlZmF1 bHRTY3JlZW4oKQotewotICAgIHJldHVybiBEZWZhdWx0U2NyZWVuKGRweSk7Ci19Ci0KLS8qKiBX ZSBoYXZlIHRvIHBhcnNlIFhGODZDb25maWcgdG8gZ2V0IHRoZSBudW1iZXIgb2Ygc2NyZWVucywg YmVjYXVzZSAqLwotLyoqIFNjcmVlbkNvdW50KCkgZnJvbSBYMTEvWGxpYi5oIGRvZXMgbm90IGNv dW50IGNvcnJlY3RseSB3aXRoIHhpbmVyYW1hICovCi1pbnQgWFZpZEV4dFdyYXA6Ol9TY3JlZW5D b3VudCgpCi17Ci0gICAgaW50IGNvdW50ID0gMDsKLSAgICBib29sIHNlY3Rpb24gPSBmYWxzZTsK LSAgICBYRjg2Q29uZmlnUGF0aCBQYXRoOwotCi0gICAgc3RkOjppZnN0cmVhbSBpbihQYXRoLmdl dCgpKTsKLQotICAgIGlmIChpbi5pc19vcGVuKCkpIHsKLSAgICAgICAgc3RkOjpzdHJpbmcgcywg YnVmOwotICAgICAgICBzdGQ6OnZlY3RvcjxzdHJpbmc+IHdvcmRzOwotCi0gICAgICAgIHdoaWxl IChnZXRsaW5lKGluLCBzLCAnXG4nKSkgewotICAgICAgICAgICAgd29yZHMuY2xlYXIoKTsKLSAg ICAgICAgICAgIGlzdHJpbmdzdHJlYW0gc3Mocy5jX3N0cigpKTsKLSAgICAgICAgICAgIHdoaWxl IChzcyA+PiBidWYpIHsKLSAgICAgICAgICAgICAgICB3b3Jkcy5wdXNoX2JhY2soYnVmKTsgLy8g U3BsaXQgInMiIGludG8gd29yZHMKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCF3 b3Jkcy5lbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHdvcmRzWzBdID09ICJTZWN0aW9u IiAmJiB3b3Jkcy5zaXplKCkgPiAxKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh3b3Jkc1sx XSA9PSAiXCJTZXJ2ZXJMYXlvdXRcIiIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rp b24gPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNl IGlmICh3b3Jkc1swXSA9PSAiRW5kU2VjdGlvbiIpIHsKLSAgICAgICAgICAgICAgICAgICAgc2Vj dGlvbiA9IGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoc2Vj dGlvbiAmJiB3b3Jkc1swXSA9PSAiU2NyZWVuIikgewotICAgICAgICAgICAgICAgICAgICArK2Nv dW50OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfSAvLyBlbmQg d2hpbGUKLSAgICAgICAgaW4uY2xvc2UoKTsKLSAgICB9Ci0KLSAgICBpZiAoIWNvdW50KSB7Ci0g ICAgICAgIGNvdW50ID0gMTsgLy8gSWYgZmFpbGVkLGZpbGwgY291bnQgd2l0aCBhIHZhbGlkIHZh bHVlOwotICAgIH0KLQotICAgIHJldHVybiAoY291bnQpOwotfQotCi1jb25zdCBjaGFyICpYVmlk RXh0V3JhcDo6RGlzcGxheU5hbWUoKQotewotICAgIHJldHVybiBEaXNwbGF5U3RyaW5nKGRweSk7 Ci19Ci0KLXZvaWQgWFZpZEV4dFdyYXA6OnNldEdhbW1hKGludCBjaGFubmVsLCBmbG9hdCBnYW0s IGJvb2wgKk9LKQotewotICAgIFhGODZWaWRNb2RlR2FtbWEgZ2FtbWE7Ci0KLSAgICBpZiAoZ2Ft ID49IG1pbmdhbW1hICYmIGdhbSA8PSBtYXhnYW1tYSkgewotICAgICAgICBpZiAoIVhGODZWaWRN b2RlR2V0R2FtbWEoZHB5LCBzY3JlZW4sICZnYW1tYSkpIHsKLSAgICAgICAgICAgIHFEZWJ1Zygp IDw8ICJLR2FtbWE6IFVuYWJsZSB0byBxdWVyeSBnYW1tYSBjb3JyZWN0aW9uIjsKLSAgICAgICAg ICAgIGlmIChPSykgewotICAgICAgICAgICAgICAgICpPSyA9IGZhbHNlOwotICAgICAgICAgICAg fQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc3dpdGNoIChjaGFubmVsKSB7Ci0gICAg ICAgICAgICBjYXNlIFZhbHVlOgotICAgICAgICAgICAgICAgIGdhbW1hLnJlZCA9IGdhbTsKLSAg ICAgICAgICAgICAgICBnYW1tYS5ncmVlbiA9IGdhbTsKLSAgICAgICAgICAgICAgICBnYW1tYS5i bHVlID0gZ2FtOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBSZWQ6 Ci0gICAgICAgICAgICAgICAgZ2FtbWEucmVkID0gZ2FtOwotICAgICAgICAgICAgICAgIGJyZWFr OwotICAgICAgICAgICAgY2FzZSBHcmVlbjoKLSAgICAgICAgICAgICAgICBnYW1tYS5ncmVlbiA9 IGdhbTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQmx1ZToKLSAg ICAgICAgICAgICAgICBnYW1tYS5ibHVlID0gZ2FtOwotICAgICAgICAgICAgfTsKLSAgICAgICAg ICAgIGlmICghWEY4NlZpZE1vZGVTZXRHYW1tYShkcHksIHNjcmVlbiwgJmdhbW1hKSkgewotICAg ICAgICAgICAgICAgIHFEZWJ1ZygpIDw8ICJLR2FtbWE6IFVuYWJsZSB0byBzZXQgZ2FtbWEgY29y cmVjdGlvbiI7Ci0gICAgICAgICAgICAgICAgaWYgKE9LKSB7Ci0gICAgICAgICAgICAgICAgICAg ICpPSyA9IGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0g ICAgICAgICAgICAgICAgWEZsdXNoKGRweSk7Ci0gICAgICAgICAgICAgICAgaWYgKE9LKSB7Ci0g ICAgICAgICAgICAgICAgICAgICpPSyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg ICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi1mbG9hdCBYVmlkRXh0V3JhcDo6Z2V0R2Ft bWEoaW50IGNoYW5uZWwsIGJvb2wgKk9LKQotewotICAgIFhGODZWaWRNb2RlR2FtbWEgZ2FtbWE7 Ci0gICAgZmxvYXQgZ2FtID0gMDsKLQotICAgIGlmICghWEY4NlZpZE1vZGVHZXRHYW1tYShkcHks IHNjcmVlbiwgJmdhbW1hKSkgewotICAgICAgICBxRGVidWcoKSA8PCAiS0dhbW1hOiBVbmFibGUg dG8gcXVlcnkgZ2FtbWEgY29ycmVjdGlvbiI7Ci0gICAgICAgIGlmIChPSykgewotICAgICAgICAg ICAgKk9LID0gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBzd2l0Y2gg KGNoYW5uZWwpIHsKLSAgICAgICAgY2FzZSBWYWx1ZToKLSAgICAgICAgICAgIGdhbSA9IGdhbW1h LnJlZDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFJlZDoKLSAgICAgICAgICAg IGdhbSA9IGdhbW1hLnJlZDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEdyZWVu OgotICAgICAgICAgICAgZ2FtID0gZ2FtbWEuZ3JlZW47Ci0gICAgICAgICAgICBicmVhazsKLSAg ICAgICAgY2FzZSBCbHVlOgotICAgICAgICAgICAgZ2FtID0gZ2FtbWEuYmx1ZTsKLSAgICAgICAg fTsKLSAgICAgICAgaWYgKE9LKSB7Ci0gICAgICAgICAgICAqT0sgPSB0cnVlOwotICAgICAgICB9 Ci0gICAgfQotICAgIHJldHVybiAoZ2FtKTsKLX0KLQotdm9pZCBYVmlkRXh0V3JhcDo6c2V0R2Ft bWFMaW1pdHMoZmxvYXQgbWluLCBmbG9hdCBtYXgpCi17Ci0gICAgbWluZ2FtbWEgPSAobWluIDwg MC4xKSA/IDAuMSA6IG1pbjsKLSAgICBtYXhnYW1tYSA9IChtYXggPiAxMC4wKSA/IDEwLjAgOiBt YXg7Ci19CmRpZmYgLS1naXQgYS9rY21rZ2FtbWEveHZpZGV4dHdyYXAuaCBiL2tjbWtnYW1tYS94 dmlkZXh0d3JhcC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZmRmNjhhLi4wMDAw MDAwCi0tLSBhL2tjbWtnYW1tYS94dmlkZXh0d3JhcC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTIg KzAsMCBAQAotLyoKLSAqICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRl cgotICoKLSAqICBTUERYLUZpbGVDb3B5cmlnaHRUZXh0OiAyMDAyIE1pY2hhZWwgdi5Pc3RoZWlt IDxNdk9zdGhlaW1Ad2ViLmRlPgotICovCi0KLSNpZm5kZWYgWFZJREVYVFdSQVBfSAotI2RlZmlu ZSBYVklERVhUV1JBUF9ICi0KLSNpbmNsdWRlIDxYMTEvWHV0aWwuaD4KLQotLyoqQSB3cmFwcGVy IGZvciBYRjg2VmlkTW9kZSBFeHRlbnNpb24KLSAqQGF1dGhvciBNaWNoYWVsIHYuT3N0aGVpbQot ICovCi0KLWNsYXNzIFhWaWRFeHRXcmFwCi17Ci1wdWJsaWM6Ci0gICAgZW51bSBHYW1tYUNoYW5u ZWwgeyBWYWx1ZSA9IDAsIFJlZCA9IDEsIEdyZWVuID0gMiwgQmx1ZSA9IDMgfTsKLSAgICBleHBs aWNpdCBYVmlkRXh0V3JhcChib29sICpPSywgY29uc3QgY2hhciAqZGlzcGxheW5hbWUgPSBudWxs cHRyKTsKLSAgICB+WFZpZEV4dFdyYXAoKTsKLQotICAgIC8qKiBSZXR1cm5zIHRoZSBkZWZhdWx0 IHNjcmVlbiAqLwotICAgIGludCBfRGVmYXVsdFNjcmVlbigpOwotICAgIC8qKiBSZXR1cm5zIHRo ZSBudW1iZXIgb2Ygc2NyZWVucyAoZXh0cmFjdGVkIGZyb20gWEY4NkNvbmZpZykgKi8KLSAgICBp bnQgX1NjcmVlbkNvdW50KCk7Ci0gICAgLyoqIFJldHVybnMgdGhlIGRpc3BsYXluYW1lICovCi0g ICAgY29uc3QgY2hhciAqRGlzcGxheU5hbWUoKTsKLSAgICAvKiogU2V0cyB0aGUgc2NyZWVuIGFj dGlvbnMgYXJlIHRha2UgZWZmZWN0ICovCi0gICAgdm9pZCBzZXRTY3JlZW4oaW50IHNjcm4pCi0g ICAgewotICAgICAgICBzY3JlZW4gPSBzY3JuOwotICAgIH0KLSAgICAvKiogUmV0dXJucyB0aGUg Y3VycmVudCBzY3JlZW4gKi8KLSAgICBpbnQgZ2V0U2NyZWVuKCkKLSAgICB7Ci0gICAgICAgIHJl dHVybiBzY3JlZW47Ci0gICAgfQotICAgIC8qKiBTZXRzIHRoZSBnYW1tYSB2YWx1ZSBvbiB0aGUg Y3VycmVudCBzY3JlZW4gKi8KLSAgICB2b2lkIHNldEdhbW1hKGludCBjaGFubmVsLCBmbG9hdCBn YW0sIGJvb2wgKk9LID0gbnVsbHB0cik7Ci0gICAgLyoqIEdldHMgdGhlIGdhbW1hIHZhbHVlIG9m IHRoZSBjdXJyZW50IHNjcmVlbiAqLwotICAgIGZsb2F0IGdldEdhbW1hKGludCBjaGFubmVsLCBi b29sICpPSyA9IG51bGxwdHIpOwotICAgIC8qKiBMaW1pdHMgdGhlIHBvc3NpYmxlIGdhbW1hIHZh bHVlcyAoZGVmYXVsdCAwLjEtMTAuMCkgKi8KLSAgICB2b2lkIHNldEdhbW1hTGltaXRzKGZsb2F0 IG1pbiwgZmxvYXQgbWF4KTsKLQotcHJpdmF0ZToKLSAgICBmbG9hdCBtaW5nYW1tYSwgbWF4Z2Ft bWE7Ci0gICAgaW50IHNjcmVlbjsKLSAgICBEaXNwbGF5ICpkcHk7Ci19OwotCi0jZW5kaWYKZGlm ZiAtLWdpdCBhL3hmODZnYW1tYWNmZy9DTWFrZUxpc3RzLnR4dCBiL3hmODZnYW1tYWNmZy9DTWFr ZUxpc3RzLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTFkMWY3NC4uMDAwMDAw MAotLS0gYS94Zjg2Z2FtbWFjZmcvQ01ha2VMaXN0cy50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2 ICswLDAgQEAKLXNldCh4Zjg2Z2FtbWFjZmdfU1JDUyB4Zjg2Z2FtbWFjZmcuY3BwKQotCi1hZGRf ZXhlY3V0YWJsZSh4Zjg2Z2FtbWFjZmcgJHt4Zjg2Z2FtbWFjZmdfU1JDU30pCi0KLWluc3RhbGwo VEFSR0VUUyB4Zjg2Z2FtbWFjZmcgJHtLREVfSU5TVEFMTF9UQVJHRVRTX0RFRkFVTFRfQVJHU30p Ci0KZGlmZiAtLWdpdCBhL3hmODZnYW1tYWNmZy94Zjg2Z2FtbWFjZmcuY3BwIGIveGY4NmdhbW1h Y2ZnL3hmODZnYW1tYWNmZy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2ZmUx ZTMuLjAwMDAwMDAKLS0tIGEveGY4NmdhbW1hY2ZnL3hmODZnYW1tYWNmZy5jcHAKKysrIC9kZXYv bnVsbApAQCAtMSwxMTkgKzAsMCBAQAotLyoKLSAqICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog R1BMLTIuMC1vci1sYXRlcgotICoKLSAqICBTUERYLUZpbGVDb3B5cmlnaHRUZXh0OiAyMDAyIE1p Y2hhZWwgdi5Pc3RoZWltIDxNdk9zdGhlaW1Ad2ViLmRlPgotICovCi0KLSNpbmNsdWRlIDxzdGRp by5oPgotCi0jaW5jbHVkZSA8c3RkbGliLmg+Ci0KLSNpbmNsdWRlIDxmc3RyZWFtPgotI2luY2x1 ZGUgPGlvc3RyZWFtPgotI2luY2x1ZGUgPHNzdHJlYW0+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2lu Y2x1ZGUgPHZlY3Rvcj4KLQotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQotaW50IG1haW4oaW50IGFy Z2MsIGNoYXIgKmFyZ3ZbXSkKLXsKLSAgICBib29sIGNweW9ubHksIHNlY21vbiwgc3VjY2VzczsK LQotICAgIGNweW9ubHkgPSBzZWNtb24gPSBzdWNjZXNzID0gZmFsc2U7Ci0KLSAgICBpZiAoISgo YXJnYyAtIDEpICUgMykpIHsKLSAgICAgICAgaW50IFNjcmVlbiA9IDA7Ci0gICAgICAgIGludCBT Y3JlZW5Db3VudCA9IChhcmdjIC0gMSkgLyAzOwotCi0gICAgICAgIHZlY3RvcjxzdHJpbmc+IHNl YXJjaFBhdGhzOwotCi0gICAgICAgIC8vIFhvcmcuY29uZiBmaWxlICh0aGUgZGVmYXVsdCBjb25m aWcgZmlsZSBub3cpCi0gICAgICAgIHNlYXJjaFBhdGhzLnB1c2hfYmFjaygiL2V0Yy9YMTEveG9y Zy5jb25mLTQiKTsKLSAgICAgICAgc2VhcmNoUGF0aHMucHVzaF9iYWNrKCIvZXRjL1gxMS94b3Jn LmNvbmYiKTsKLSAgICAgICAgc2VhcmNoUGF0aHMucHVzaF9iYWNrKCIvZXRjL3hvcmcuY29uZiIp OwotICAgICAgICBzZWFyY2hQYXRocy5wdXNoX2JhY2soIi91c3IvWDExUjYvZXRjL1gxMS94b3Jn LmNvbmYtNCIpOwotICAgICAgICBzZWFyY2hQYXRocy5wdXNoX2JhY2soIi91c3IvWDExUjYvZXRj L1gxMS94b3JnLmNvbmYiKTsKLSAgICAgICAgc2VhcmNoUGF0aHMucHVzaF9iYWNrKCIvdXNyL1gx MVI2L2xpYi9YMTEveG9yZy5jb25mLTQiKTsKLSAgICAgICAgc2VhcmNoUGF0aHMucHVzaF9iYWNr KCIvdXNyL1gxMVI2L2xpYi9YMTEveG9yZy5jb25mIik7Ci0KLSAgICAgICAgLy8gRGVwcmVjYXRl ZCBYRjg2Q29uZmlnIGZpbGUgKFhmcmVlODYgdGltZXMpCi0gICAgICAgIHNlYXJjaFBhdGhzLnB1 c2hfYmFjaygiL2V0Yy9YMTEvWEY4NkNvbmZpZy00Iik7Ci0gICAgICAgIHNlYXJjaFBhdGhzLnB1 c2hfYmFjaygiL2V0Yy9YMTEvWEY4NkNvbmZpZyIpOwotICAgICAgICBzZWFyY2hQYXRocy5wdXNo X2JhY2soIi9ldGMvWEY4NkNvbmZpZyIpOwotICAgICAgICBzZWFyY2hQYXRocy5wdXNoX2JhY2so Ii91c3IvWDExUjYvZXRjL1gxMS9YRjg2Q29uZmlnLTQiKTsKLSAgICAgICAgc2VhcmNoUGF0aHMu cHVzaF9iYWNrKCIvdXNyL1gxMVI2L2V0Yy9YMTEvWEY4NkNvbmZpZyIpOwotICAgICAgICBzZWFy Y2hQYXRocy5wdXNoX2JhY2soIi91c3IvWDExUjYvbGliL1gxMS9YRjg2Q29uZmlnLTQiKTsKLSAg ICAgICAgc2VhcmNoUGF0aHMucHVzaF9iYWNrKCIvdXNyL1gxMVI2L2xpYi9YMTEvWEY4NkNvbmZp ZyIpOwotCi0gICAgICAgIHN0ZDo6dmVjdG9yPHN0cmluZz46Oml0ZXJhdG9yIGl0ID0gc2VhcmNo UGF0aHMuYmVnaW4oKTsKLSAgICAgICAgZm9yICg7IGl0ICE9IHNlYXJjaFBhdGhzLmVuZCgpOyAr K2l0KSB7Ci0gICAgICAgICAgICAvLyBUcnkgdG8gb3BlbiBmaWxlCi0gICAgICAgICAgICBzdGQ6 Omlmc3RyZWFtIGluKCgqaXQpLmNfc3RyKCkpOwotCi0gICAgICAgICAgICBpZiAoaW4uaXNfb3Bl bigpKSB7Ci0gICAgICAgICAgICAgICAgc3RkOjpvZnN0cmVhbSBvdXQoKCgqaXQpICsgIi50bXAi KS5jX3N0cigpKTsKLSAgICAgICAgICAgICAgICBpZiAob3V0LmlzX29wZW4oKSkgewotICAgICAg ICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBzLCBidWY7Ci0gICAgICAgICAgICAgICAgICAgIHN0 ZDo6dmVjdG9yPHN0cmluZz4gd29yZHM7Ci0KLSAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGdl dGxpbmUoaW4sIHMsICdcbicpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNweW9u bHkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3Jkcy5jbGVhcigpOwotICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6aXN0cmluZ3N0cmVhbSBzcyhzLmNfc3RyKCkpOwot ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChzcyA+PiBidWYpIHsKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgd29yZHMucHVzaF9iYWNrKGJ1Zik7Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF3 b3Jkcy5lbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3b3Jk c1swXSA9PSAiU2VjdGlvbiIgJiYgd29yZHMuc2l6ZSgpID4gMSkgewotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaWYgKHdvcmRzWzFdID09ICJcIk1vbml0b3JcIiIpIHsKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNtb24gPSB0cnVlOwotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCBzIDw8IGVuZGw7Ci0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlY21vbikgewot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdvcmRzWzBdID09ICJHYW1t YSIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiAg R2FtbWEgICAiIDw8IGFyZ3ZbMyAqIFNjcmVlbiArIDFdIDw8ICIgICIgPDwgYXJndlszICogU2Ny ZWVuICsgMl0gPDwgIiAgIiA8PCBhcmd2WzMgKiBTY3JlZW4gKyAzXTsKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiAgIyBjcmVhdGVkIGJ5IEtHYW1tYSIg PDwgZW5kbDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHlvbmx5 ID0gc3VjY2VzcyA9ICgrK1NjcmVlbiA9PSBTY3JlZW5Db3VudCk7Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2VjbW9uID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo d29yZHNbMF0gPT0gIkVuZFNlY3Rpb24iKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgb3V0IDw8ICIgIEdhbW1hICAgIiA8PCBhcmd2WzMgKiBTY3JlZW4gKyAxXSA8 PCAiICAiIDw8IGFyZ3ZbMyAqIFNjcmVlbiArIDJdIDw8ICIgICIgPDwgYXJndlszICogU2NyZWVu ICsgM107Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIg ICMgY3JlYXRlZCBieSBLR2FtbWEiIDw8IGVuZGw7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgb3V0IDw8IHMgPDwgZW5kbDsKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjcHlvbmx5ID0gc3VjY2VzcyA9ICgrK1NjcmVlbiA9PSBTY3JlZW5D b3VudCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjbW9uID0g ZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7 Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgcyA8PCBl bmRsOwotICAgICAgICAgICAgICAgICAgICB9IC8vIGVuZHdoaWxlCi0KLSAgICAgICAgICAgICAg ICAgICAgaW4uY2xvc2UoKTsKLSAgICAgICAgICAgICAgICAgICAgb3V0LmNsb3NlKCk7Ci0KLSAg ICAgICAgICAgICAgICAgICAgaWYgKHN1Y2Nlc3MpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg IHJlbmFtZSgoKml0KS5jX3N0cigpLCAoKml0ICsgIi5rZ2FtbWFvcmlnIikuY19zdHIoKSk7Ci0g ICAgICAgICAgICAgICAgICAgICAgICByZW5hbWUoKCppdCArICIudG1wIikuY19zdHIoKSwgKCpp dCkuY19zdHIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg ICAgICAgICAgICByZW1vdmUoKCppdCArICIudG1wIikuY19zdHIoKSk7Ci0gICAgICAgICAgICAg ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQot ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIGlmICghc3VjY2VzcykgewotICAg ICAgICBjZXJyIDw8ICJVc2FnZTogeGY4NmdhbW1hY2ZnIFJHQU1NQSBHR0FNTUEgIgotICAgICAg ICAgICAgICAgICJCR0FNTUEgW1JHQU1NQSBHR0FNTUEgQkdBTU1BIFsuLi5dXSIKLSAgICAgICAg ICAgICA8PCBlbmRsOwotICAgIH0KLQotICAgIHJldHVybiAhc3VjY2VzczsKLX0K