------=_Part_56786_24371506.1227129856504 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 Content-Disposition: inline U29ycnkgZm9yIHRoZSBoYXNzbGUgZXZlcnlvbmUsIEkgd2FzIGluIGEgaHVycnkgd2hlbiBJIHNl bnQgdGhlIHBhdGNoCihhY3R1YWxseSwgaXQgd2FzIDAxOjQ1IGEubS4gYW5kIEkgd2FudGVkIHRv IGdvIHRvIGJlZCDigJMgc2hvdWxkbid0IGRvCnRoYXQsIEkga25vd15eKS4KClRoZSBtYWluIHBh dGNoIGlzIHN0aWxsIHF1aXRlIGJpZywgYnV0IHRoZXJlIGFyZSBhIGZldyBjaGFuZ2VzIHRoYXQK bWFrZSBpdCBzZWVtIG1lc3NpZXIgdGhhbiBpdCBhY3R1YWxseSBpczoKLSBJIGhhdmUgY2hhbmdl ZCB0aGUgbmFtZSBvZiBtS1dpbkNvbmZpZyB0byBtTmV3Q29uZmlnIGluIG9yZGVyIHRvCmJldHRl ciBleHByZXNzIHRoZSBwdXJwb3NlCi0gSSBoYXZlIHNwbGl0IHVwIHRoZSBsb2FkaW5nIGNvZGUg aW4gT3B0aW9uczo6dXBkYXRlU2V0dGluZ3MgaW50bwpzdWJyb3V0aW5lcyAoYWN0dWFsbHksIEkg aGF2ZSBub3QgY2hhbmdlZCBhbnl0aGluZyBleGNlcHQgZm9yIGFkZGluZwp0aGUgYmFja3VwIHJl bGF0ZWQgY29kZSkKLSBJIGhhdmUgcmVuYW1lZCB0aGUgInJlaW5pdENvbXBvc2l0aW5nIiBEQnVz IHNpZ25hbCB0bwoicmVsb2FkQ29tcG9zaXRpbmdDb25maWciIGluIG9yZGVyIHRvIGNsYXJpZnkg aXRzIHB1cnBvc2UKLSBBcyBJIGhhdmUgbWVudGlvbmVkIGJlZm9yZSwgaXQgdG9vayBtZSBzZXZl cmFsIGl0ZXJhdGlvbnMgdG8gZmluZCBhCnNvbHV0aW9uLiBUaHVzLCB0aGVyZSBhcmUgYSBmZXcg YmFzaWNhbGx5IHVubmVlZGVkIGNoYW5nZXMgaW4gdGhlCnBhdGNoLiBIb3dldmVyLCBJIHRoaW5r IHRoZXkgbWFrZSB0aGUgY29kZSBlYXNpZXIgdG8gdW5kZXJzdGFuZCwgc28gSQpoYXZlIG5vdCBy ZW1vdmVkIHRoZW0uCgpUaGUgc2Vjb25kIHBhdGNoIGNvbnRhaW5zIGEgc21hbGwgZml4ICh0aGUg ZHJvcGRvd24gYm94ZXMgZm9yIHRoZQp3aW5kb3cvZGVza3RvcCBzd2l0Y2hpbmcgZWZmZWN0cyB3 ZXJlIG5vdCB1cGRhdGVkIGNvcnJlY3RseSBpZiBhbGwKcmVsYXRlZCBlZmZlY3RzIGhhZCBiZWVu IGRpc2FibGVkKSBhbmQgcmVtb3ZlcyBzb21lIHVudXNlZCBjb2RlLgoKVGhlIHRoaXJkIHBhdGNo IGNvbnRhaW5zIGEgZmV3IGNvbW1lbnQgY2hhbmdlcyBhbmQgYSBsb3Qgb2Ygd2hpdGVzcGFjZQpj aGFuZ2VzIHRvIG1ha2UgdGhlIGNvZGUgY29tcGx5IHRvIHRoZSBLV2luIGNvZGluZyBzdGFuZGFy ZHMuCgpJIGhhdmUganVzdCBjcmVhdGVkIHRoZXNlIHRocmVlIHdpdGggdGhlIGhlbHAgb2YgImdp dCBhZGQgLS1wYXRjaCIgYW5kCmhhZCBubyB0aW1lIHRvIHRoZW0geWV0LCBzbyB0aGUgbWlnaHQg bm90IGJlIGZ1bGx5IGluZGVwZW5kZW50LgoKVGhlIHBhdGNoZXMgYXJlIGF0dGFjaGVkIHRoaXMg dGltZSwgaWYgeW91IHByZWZlciBhIGZhbmN5IEhUTUwKcmVuZGVyaW5nLCB5b3UgY2FuIHN0aWxs IGhhdmUgbG9vayBhdCB0aGVtIGF0Cmh0dHA6Ly9naXRodWIuY29tL2tsaWNrdmVyYm90L2t3aW4v Y29tbWl0cy9jb25maWdiYWNrdXAuClBsZWFzZSBiZWFyIHdpdGggbWUgaWYgSSBoYXZlIGFnYWlu IG1hZGUgc29tZSBtYWpvciBtaXN0YWtlIDspCg== ------=_Part_56786_24371506.1227129856504 Content-Type: text/x-diff; name=configbackup.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_fnqg2wgw0 Content-Disposition: attachment; filename=configbackup.patch Y29tbWl0IDJiOTFhZmQxOTlkNzZkMTc1YjhmYTdmNDBiMjI4ZmRkYWU1MzViODEKQXV0aG9yOiBE YXZpZCBOYWRsaW5nZXIgPGRhdmlkLm5hZGxpbmdlckBnbWFpbC5jb20+CkRhdGU6ICAgV2VkIE5v diAxOSAyMDozNDo0NyAyMDA4ICswMTAwCgogICAgU2F2ZSBhIGJhY2t1cCBvZiBrd2lucmMgdG8g YW5vdGhlciBmaWxlIHRvIHJldmVydCBpZiB0aGUgWCBzZXJ2ZXIgY3Jhc2hlcyB3aGlsZSB0ZXN0 aW5nIHRoZSBuZXcgY29uZmlnLgoKZGlmZiAtLWdpdCBhL2tjbWt3aW4va3dpbmNvbXBvc2l0aW5n L21haW4uY3BwIGIva2Nta3dpbi9rd2luY29tcG9zaXRpbmcvbWFpbi5jcHAKaW5kZXggY2QzNTkz ZC4uNmE4YWQ0NSAxMDA2NDQKLS0tIGEva2Nta3dpbi9rd2luY29tcG9zaXRpbmcvbWFpbi5jcHAK KysrIGIva2Nta3dpbi9rd2luY29tcG9zaXRpbmcvbWFpbi5jcHAKQEAgLTI1LDYgKzI1LDcgQEAg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCiAjaW5jbHVkZSA8a2Fib3V0ZGF0YS5oPgogI2luY2x1ZGUgPGtjb25maWcu aD4KICNpbmNsdWRlIDxrY29uZmlnZ3JvdXAuaD4KKyNpbmNsdWRlIDxrc3RhbmRhcmRkaXJzLmg+ CiAjaW5jbHVkZSA8a2RlYnVnLmg+CiAjaW5jbHVkZSA8a21lc3NhZ2Vib3guaD4KICNpbmNsdWRl IDxrc2V0dGluZ3MvZGlzcGF0Y2hlci5oPgpAQCAtMzQsNiArMzUsNyBAQCBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4K ICNpbmNsdWRlIDxrc2VydmljZS5oPgogI2luY2x1ZGUgPGt0aXRsZXdpZGdldC5oPgogCisjaW5j bHVkZSA8UUZpbGU+CiAjaW5jbHVkZSA8UXREQnVzL1F0REJ1cz4KICNpbmNsdWRlIDxRVGltZXI+ CiAjaW5jbHVkZSA8UUxhYmVsPgpAQCAtNjgsOSArNzAsOCBAQCBDb25maXJtRGlhbG9nOjpDb25m aXJtRGlhbG9nKCkgOgogCiBLV2luQ29tcG9zaXRpbmdDb25maWc6OktXaW5Db21wb3NpdGluZ0Nv bmZpZyhRV2lkZ2V0ICpwYXJlbnQsIGNvbnN0IFFWYXJpYW50TGlzdCAmKQogICAgIDogS0NNb2R1 bGUoIEtXaW5Db21wb3NpdGluZ0NvbmZpZ0ZhY3Rvcnk6OmNvbXBvbmVudERhdGEoKSwgcGFyZW50 KSwKLSAgICAgICAgbUtXaW5Db25maWcoS1NoYXJlZENvbmZpZzo6b3BlbkNvbmZpZygia3dpbnJj IikpLAotICAgICAgICBtX3Nob3dDb25maXJtRGlhbG9nIChmYWxzZSkKLXsKKyAgICAgICAgbU5l d0NvbmZpZyggS1NoYXJlZENvbmZpZzo6b3BlbkNvbmZpZyggImt3aW5yYyIgKSApCisgICAgewog ICAgIEtHbG9iYWw6OmxvY2FsZSgpLT5pbnNlcnRDYXRhbG9nKCAia3dpbl9lZmZlY3RzIiApOwog ICAgIHVpLnNldHVwVWkodGhpcyk7CiAgICAgbGF5b3V0KCktPnNldE1hcmdpbigwKTsKQEAgLTEw Nyw2ICsxMDgsMTIgQEAgS1dpbkNvbXBvc2l0aW5nQ29uZmlnOjpLV2luQ29tcG9zaXRpbmdDb25m aWcoUVdpZGdldCAqcGFyZW50LCBjb25zdCBRVmFyaWFudExpc3QKICAgICBjb25uZWN0KHVpLmds VlN5bmMsIFNJR05BTCh0b2dnbGVkKGJvb2wpKSwgdGhpcywgU0xPVChjaGFuZ2VkKCkpKTsKICAg ICBjb25uZWN0KHVpLnhyZW5kZXJTbW9vdGhTY2FsZSwgU0lHTkFMKHRvZ2dsZWQoYm9vbCkpLCB0 aGlzLCBTTE9UKGNoYW5nZWQoKSkpOwogCisgICAgLy8gQ3JlYXRlIHRoZSBiYWNrdXAgY29uZmln LiBJdCB3aWxsIGJlIHVzZWQgYXMgYSBtZWFucyB0byByZXZlcnQgdGhlIGNvbmZpZyBpZgorICAg IC8vIHRoZSBYIHNlcnZlciBjcmFzaGVzIGFuZCB0byBkZXRlcm1pbmUgaWYgYSBjb25maXJtYXRp b24gZGlhbG9nIHNob3VsZCBiZSBzaG93bi4KKyAgICAvLyBBZnRlciB0aGUgbmV3IHNldHRpbmdz IGhhdmUgYmVlbiBjb25maXJtZWQgdG8gYmUgc3RhYmxlLCBpdCBpcyB1cGRhdGVkIHdpdGggdGhl IG5ldworICAgIC8vIGNvbmZpZy4gSXQgaXMgZGVsZXRlZCB3aGVuIHRoZSBtb2R1bGUgaXMgY2xv c2VkLgorICAgIG1CYWNrdXBDb25maWcgPSBuZXcgS0NvbmZpZyggbU5ld0NvbmZpZy0+bmFtZSgp ICsgJ34nLCBLQ29uZmlnOjpTaW1wbGVDb25maWcgKTsKKwogICAgIC8vIE9wZW4gdGhlIHRlbXBv cmFyeSBjb25maWcgZmlsZQogICAgIC8vIFRlbXBvcmFyeSBjb25mIGZpbGUgaXMgdXNlZCB0byBz eW5jaHJvbml6ZSBlZmZlY3QgY2hlY2tib3hlcyB3aXRoIGVmZmVjdAogICAgIC8vICBzZWxlY3Rv ciBieSBsb2FkaW5nL3NhdmluZyBlZmZlY3RzIGZyb20vdG8gdGVtcCBjb25maWcgd2hlbiBhY3Rp dmUgdGFiCkBAIC0xODEsMTMgKzE4OCwxMiBAQCBLV2luQ29tcG9zaXRpbmdDb25maWc6OktXaW5D b21wb3NpdGluZ0NvbmZpZyhRV2lkZ2V0ICpwYXJlbnQsIGNvbnN0IFFWYXJpYW50TGlzdAogfQog CiBLV2luQ29tcG9zaXRpbmdDb25maWc6On5LV2luQ29tcG9zaXRpbmdDb25maWcoKQotewotfQot Ci12b2lkIEtXaW5Db21wb3NpdGluZ0NvbmZpZzo6cmVwYXJzZUNvbmZpZ3VyYXRpb24oY29uc3Qg UUJ5dGVBcnJheSZjb25mKQotewotICAgIEtTZXR0aW5nczo6RGlzcGF0Y2hlcjo6cmVwYXJzZUNv bmZpZ3VyYXRpb24oY29uZik7Ci19CisgICAgeworICAgIC8vIERlbGV0ZSB0aGUgYmFja3VwIGZp bGUgd2hlbiBleGl0aW5nIGNsZWFuLgorICAgIFFTdHJpbmcgYmFja3VwRmlsZU5hbWUgPSBLU3Rh bmRhcmREaXJzOjpsb2NhdGUoICJjb25maWciLCBtQmFja3VwQ29uZmlnLT5uYW1lKCkgKTsKKyAg ICBkZWxldGUgbUJhY2t1cENvbmZpZzsKKyAgICBRRmlsZTo6cmVtb3ZlKCBiYWNrdXBGaWxlTmFt ZSApOworICAgIH0KIAogdm9pZCBLV2luQ29tcG9zaXRpbmdDb25maWc6OmNvbXBvc2l0aW5nRW5h YmxlZChib29sIGVuYWJsZWQpCiB7CkBAIC0xOTUsNDUgKzIwMSw3IEBAIHZvaWQgS1dpbkNvbXBv c2l0aW5nQ29uZmlnOjpjb21wb3NpdGluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIHVpLnRh YldpZGdldC0+c2V0VGFiRW5hYmxlZCgxLCBlbmFibGVkKTsKICAgICB1aS50YWJXaWRnZXQtPnNl dFRhYkVuYWJsZWQoMiwgZW5hYmxlZCk7CiAgICAgdWkudGFiV2lkZ2V0LT5zZXRUYWJFbmFibGVk KDMsIGVuYWJsZWQpOwotfQotCi12b2lkIEtXaW5Db21wb3NpdGluZ0NvbmZpZzo6c2hvd0NvbmZp cm1EaWFsb2coYm9vbCByZWluaXRDb21wb3NpdGluZykKLXsKLSAgICBib29sIHJldmVydCA9IGZh bHNlOwotICAgIC8vIEZlZWwgZnJlZSB0byBleHRlbmQgdGhpcyB0byBzdXBwb3J0IHNldmVyYWwg a3dpbiBpbnN0YW5jZXMgKG11bHRpaGVhZCkgaWYgeW91Ci0gICAgLy8gdGhpbmsgaXQgbWFrZXMg c2Vuc2UuCi0gICAgT3JnS2RlS1dpbkludGVyZmFjZSBrd2luKCJvcmcua2RlLmt3aW4iLCAiL0tX aW4iLCBRREJ1c0Nvbm5lY3Rpb246OnNlc3Npb25CdXMoKSk7Ci0gICAgaWYoIHJlaW5pdENvbXBv c2l0aW5nID8gIWt3aW4uY29tcG9zaXRpbmdBY3RpdmUoKS52YWx1ZSgpIDogIWt3aW4ud2FpdEZv ckNvbXBvc2l0aW5nU2V0dXAoKS52YWx1ZSgpICkKLSAgICB7Ci0gICAgICAgIEtNZXNzYWdlQm94 Ojpzb3JyeSggdGhpcywgaTE4bigKLSAgICAgICAgICAgICJGYWlsZWQgdG8gYWN0aXZhdGUgZGVz a3RvcCBlZmZlY3RzIHVzaW5nIHRoZSBnaXZlbiAiCi0gICAgICAgICAgICAiY29uZmlndXJhdGlv biBvcHRpb25zLiBTZXR0aW5ncyB3aWxsIGJlIHJldmVydGVkIHRvIHRoZWlyIHByZXZpb3VzIHZh bHVlcy5cblxuIgotICAgICAgICAgICAgIkNoZWNrIHlvdXIgWCBjb25maWd1cmF0aW9uLiBZb3Ug bWF5IGFsc28gY29uc2lkZXIgY2hhbmdpbmcgYWR2YW5jZWQgb3B0aW9ucywgIgotICAgICAgICAg ICAgImVzcGVjaWFsbHkgY2hhbmdpbmcgdGhlIGNvbXBvc2l0aW5nIHR5cGUuIiApKTsKLSAgICAg ICAgcmV2ZXJ0ID0gdHJ1ZTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgQ29uZmly bURpYWxvZyBjb25maXJtOwotICAgICAgICBpZiggIWNvbmZpcm0uZXhlYygpKQotICAgICAgICAg ICAgcmV2ZXJ0ID0gdHJ1ZTsKICAgICB9Ci0gICAgaWYoIHJldmVydCApCi0gICAgewotICAgICAg ICAvLyBSZXZlcnQgc2V0dGluZ3MKLSAgICAgICAgS0NvbmZpZ0dyb3VwIGNvbmZpZyhtS1dpbkNv bmZpZywgIkNvbXBvc2l0aW5nIik7Ci0gICAgICAgIGNvbmZpZy5kZWxldGVHcm91cCgpOwotICAg ICAgICBRTWFwPFFTdHJpbmcsIFFTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1QcmV2aW91 c0NvbmZpZy5jb25zdEJlZ2luKCk7Ci0gICAgICAgIGZvcig7IGl0ICE9IG1QcmV2aW91c0NvbmZp Zy5jb25zdEVuZCgpOyArK2l0KSB7Ci0gICAgICAgICAgICBpZiAoaXQudmFsdWUoKS5pc0VtcHR5 KCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBjb25maWcud3JpdGVF bnRyeShpdC5rZXkoKSwgaXQudmFsdWUoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gU3luYyB3 aXRoIEtXaW4gYW5kIHJlbG9hZAotICAgICAgICBjb25maWdDaGFuZ2VkKHJlaW5pdENvbXBvc2l0 aW5nKTsKLSAgICAgICAgbG9hZCgpOwotICAgIH0KLX0KIAogdm9pZCBLV2luQ29tcG9zaXRpbmdD b25maWc6OmluaXRFZmZlY3RTZWxlY3RvcigpCiB7CkBAIC0yNzMsOCArMjQxLDggQEAgdm9pZCBL V2luQ29tcG9zaXRpbmdDb25maWc6OmN1cnJlbnRUYWJDaGFuZ2VkKGludCB0YWIpCiB9CiAKIHZv aWQgS1dpbkNvbXBvc2l0aW5nQ29uZmlnOjpsb2FkR2VuZXJhbFRhYigpCi17Ci0gICAgS0NvbmZp Z0dyb3VwIGNvbmZpZyhtS1dpbkNvbmZpZywgIkNvbXBvc2l0aW5nIik7CisgICAgeworICAgIEtD b25maWdHcm91cCBjb25maWcobU5ld0NvbmZpZywgIkNvbXBvc2l0aW5nIik7CiAgICAgdWkudXNl Q29tcG9zaXRpbmctPnNldENoZWNrZWQoY29uZmlnLnJlYWRFbnRyeSgiRW5hYmxlZCIsIG1EZWZh dWx0UHJlZnMuZW5hYmxlQ29tcG9zaXRpbmcoKSkpOwogICAgIHVpLmFuaW1hdGlvblNwZWVkQ29t Ym8tPnNldEN1cnJlbnRJbmRleChjb25maWcucmVhZEVudHJ5KCJBbmltYXRpb25TcGVlZCIsIDMg KSk7CiAKQEAgLTMwMSwxNCArMjY5LDE0IEBAIHZvaWQgS1dpbkNvbXBvc2l0aW5nQ29uZmlnOjps b2FkR2VuZXJhbFRhYigpCiAgICAgICAgIHVpLndpbmRvd1N3aXRjaGluZ0NvbWJvLT5zZXRDdXJy ZW50SW5kZXgoIDMgKTsKICAgICBpZiggZWZmZWN0RW5hYmxlZCggImZsaXBzd2l0Y2giLCBlZmZl Y3Rjb25maWcgKSkKICAgICAgICAgdWkud2luZG93U3dpdGNoaW5nQ29tYm8tPnNldEN1cnJlbnRJ bmRleCggNCApOwotICAgIEtDb25maWdHcm91cCBwcmVzZW50d2luZG93c2NvbmZpZyhtS1dpbkNv bmZpZywgIkVmZmVjdC1QcmVzZW50V2luZG93cyIpOworICAgIEtDb25maWdHcm91cCBwcmVzZW50 d2luZG93c2NvbmZpZyhtTmV3Q29uZmlnLCAiRWZmZWN0LVByZXNlbnRXaW5kb3dzIik7CiAgICAg aWYoIGVmZmVjdEVuYWJsZWQoICJwcmVzZW50d2luZG93cyIsIGVmZmVjdGNvbmZpZyApICYmIHBy ZXNlbnR3aW5kb3dzY29uZmlnLnJlYWRFbnRyeSgiVGFiQm94IiwgZmFsc2UpICkKICAgICAgICAg dWkud2luZG93U3dpdGNoaW5nQ29tYm8tPnNldEN1cnJlbnRJbmRleCggMiApOwogCiAgICAgLy8g ZGVza3RvcCBzd2l0Y2hpbmcKICAgICBpZiggZWZmZWN0RW5hYmxlZCggInNsaWRlIiwgZWZmZWN0 Y29uZmlnICkpCiAgICAgICAgIHVpLmRlc2t0b3BTd2l0Y2hpbmdDb21iby0+c2V0Q3VycmVudElu ZGV4KCAxICk7Ci0gICAgS0NvbmZpZ0dyb3VwIGN1YmVjb25maWcobUtXaW5Db25maWcsICJFZmZl Y3QtQ3ViZSIpOworICAgIEtDb25maWdHcm91cCBjdWJlY29uZmlnKG1OZXdDb25maWcsICJFZmZl Y3QtQ3ViZSIpOwogICAgIGlmKCBlZmZlY3RFbmFibGVkKCAiY3ViZSIsIGVmZmVjdGNvbmZpZyAp ICYmIGN1YmVjb25maWcucmVhZEVudHJ5KCJBbmltYXRlRGVza3RvcENoYW5nZSIsIGZhbHNlKSkK ICAgICAgICAgdWkuZGVza3RvcFN3aXRjaGluZ0NvbWJvLT5zZXRDdXJyZW50SW5kZXgoIDIgKTsK IApAQCAtMzMxLDggKzI5OSw4IEBAIHZvaWQgS1dpbkNvbXBvc2l0aW5nQ29uZmlnOjpsb2FkRWZm ZWN0c1RhYigpCiB9CiAKIHZvaWQgS1dpbkNvbXBvc2l0aW5nQ29uZmlnOjpsb2FkQWR2YW5jZWRU YWIoKQotewotICAgIEtDb25maWdHcm91cCBjb25maWcobUtXaW5Db25maWcsICJDb21wb3NpdGlu ZyIpOworICAgIHsKKyAgICBLQ29uZmlnR3JvdXAgY29uZmlnKG1OZXdDb25maWcsICJDb21wb3Np dGluZyIpOwogICAgIFFTdHJpbmcgYmFja2VuZCA9IGNvbmZpZy5yZWFkRW50cnkoIkJhY2tlbmQi LCAiT3BlbkdMIik7CiAgICAgdWkuY29tcG9zaXRpbmdUeXBlLT5zZXRDdXJyZW50SW5kZXgoKGJh Y2tlbmQgPT0gIlhSZW5kZXIiKSA/IDEgOiAwKTsKICAgICAvLyA0IC0gb2ZmLCA1IC0gc2hvd24s IDYgLSBhbHdheXMsIG90aGVyIGFyZSBvbGQgdmFsdWVzCkBAIC0zNTUsMTggKzMyMywxMyBAQCB2 b2lkIEtXaW5Db21wb3NpdGluZ0NvbmZpZzo6bG9hZEFkdmFuY2VkVGFiKCkKIH0KIAogdm9pZCBL V2luQ29tcG9zaXRpbmdDb25maWc6OmxvYWQoKQotewotICAgIG1LV2luQ29uZmlnLT5yZXBhcnNl Q29uZmlndXJhdGlvbigpOwotCi0gICAgLy8gQ29weSBQbHVnaW5zIGdyb3VwIHRvIHRlbXAgY29u ZmlnIGZpbGUKLSAgICBRTWFwPFFTdHJpbmcsIFFTdHJpbmc+IGVudHJpZXMgPSBtS1dpbkNvbmZp Zy0+ZW50cnlNYXAoIlBsdWdpbnMiKTsKLSAgICBRTWFwPFFTdHJpbmcsIFFTdHJpbmc+Ojpjb25z dF9pdGVyYXRvciBpdCA9IGVudHJpZXMuY29uc3RCZWdpbigpOwotICAgIEtDb25maWdHcm91cCB0 bXBjb25maWcobVRtcENvbmZpZywgIlBsdWdpbnMiKTsKLSAgICB0bXBjb25maWcuZGVsZXRlR3Jv dXAoKTsKLSAgICBmb3IoOyBpdCAhPSBlbnRyaWVzLmNvbnN0RW5kKCk7ICsraXQpCiAgICAgewot ICAgICAgICB0bXBjb25maWcud3JpdGVFbnRyeShpdC5rZXkoKSwgaXQudmFsdWUoKSk7Ci0gICAg fQorICAgIG1OZXdDb25maWctPnJlcGFyc2VDb25maWd1cmF0aW9uKCk7CisKKyAgICB1cGRhdGVC YWNrdXBXaXRoTmV3Q29uZmlnKCk7CisKKyAgICAvLyBDb3B5IHRoZSBwbHVnaW4gc2V0dGluZ3Mg ZnJvbSB0aGUgbWFpbiBjb25maWcgZmlsZSB0byB0aGUgdGVtcCBjb25maWcuCisgICAgY29weVBs dWdpbnNUb1RtcENvbmZpZygpOwogCiAgICAgbG9hZEdlbmVyYWxUYWIoKTsKICAgICBsb2FkRWZm ZWN0c1RhYigpOwpAQCAtMzc2LDE0ICszMzksOCBAQCB2b2lkIEtXaW5Db21wb3NpdGluZ0NvbmZp Zzo6bG9hZCgpCiB9CiAKIHZvaWQgS1dpbkNvbXBvc2l0aW5nQ29uZmlnOjpzYXZlR2VuZXJhbFRh YigpCi17Ci0gICAgS0NvbmZpZ0dyb3VwIGNvbmZpZyhtS1dpbkNvbmZpZywgIkNvbXBvc2l0aW5n Iik7Ci0gICAgLy8gQ2hlY2sgaWYgYW55IGNyaXRpY2FsIHNldHRpbmdzIHRoYXQgbmVlZCBjb25m aXJtYXRpb24gaGF2ZSBjaGFuZ2VkCi0gICAgaWYodWkudXNlQ29tcG9zaXRpbmctPmlzQ2hlY2tl ZCgpCi0gICAgICAgICYmIHVpLnVzZUNvbXBvc2l0aW5nLT5pc0NoZWNrZWQoKSAhPSBjb25maWcu cmVhZEVudHJ5KCJFbmFibGVkIiwgbURlZmF1bHRQcmVmcy5lbmFibGVDb21wb3NpdGluZygpKSkK LSAgICAgICAgewotICAgICAgICBtX3Nob3dDb25maXJtRGlhbG9nID0gdHJ1ZTsKLSAgICAgICAg fQorICAgIHsKKyAgICBLQ29uZmlnR3JvdXAgY29uZmlnKG1OZXdDb25maWcsICJDb21wb3NpdGlu ZyIpOwogCiAgICAgY29uZmlnLndyaXRlRW50cnkoIkVuYWJsZWQiLCB1aS51c2VDb21wb3NpdGlu Zy0+aXNDaGVja2VkKCkpOwogICAgIGNvbmZpZy53cml0ZUVudHJ5KCJBbmltYXRpb25TcGVlZCIs IHVpLmFuaW1hdGlvblNwZWVkQ29tYm8tPmN1cnJlbnRJbmRleCgpKTsKQEAgLTQzOSw3ICszOTYs NyBAQCB2b2lkIEtXaW5Db21wb3NpdGluZ0NvbmZpZzo6c2F2ZUdlbmVyYWxUYWIoKQogICAgICAg ICAgICAgZWZmZWN0Y29uZmlnLndyaXRlRW50cnkoImt3aW40X2VmZmVjdF9mbGlwc3dpdGNoRW5h YmxlZCIsIHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICBLQ29uZmln R3JvdXAgcHJlc2VudHdpbmRvd3Njb25maWcobUtXaW5Db25maWcsICJFZmZlY3QtUHJlc2VudFdp bmRvd3MiKTsKKyAgICBLQ29uZmlnR3JvdXAgcHJlc2VudHdpbmRvd3Njb25maWcobU5ld0NvbmZp ZywgIkVmZmVjdC1QcmVzZW50V2luZG93cyIpOwogICAgIHByZXNlbnR3aW5kb3dzY29uZmlnLndy aXRlRW50cnkoIlRhYkJveCIsIHByZXNlbnRXaW5kb3dTd2l0Y2hpbmcpOwogCiAgICAgaW50IGRl c2t0b3BTd2l0Y2hlciA9IHVpLmRlc2t0b3BTd2l0Y2hpbmdDb21iby0+Y3VycmVudEluZGV4KCk7 CkBAIC00NjEsNyArNDE4LDcgQEAgdm9pZCBLV2luQ29tcG9zaXRpbmdDb25maWc6OnNhdmVHZW5l cmFsVGFiKCkKICAgICAgICAgICAgIGVmZmVjdGNvbmZpZy53cml0ZUVudHJ5KCJrd2luNF9lZmZl Y3RfY3ViZUVuYWJsZWQiLCB0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0g ICAgS0NvbmZpZ0dyb3VwIGN1YmVjb25maWcobUtXaW5Db25maWcsICJFZmZlY3QtQ3ViZSIpOwor ICAgIEtDb25maWdHcm91cCBjdWJlY29uZmlnKG1OZXdDb25maWcsICJFZmZlY3QtQ3ViZSIpOwog ICAgIGN1YmVjb25maWcud3JpdGVFbnRyeSgiQW5pbWF0ZURlc2t0b3BDaGFuZ2UiLCBjdWJlRGVz a3RvcFN3aXRjaGluZyk7CiAKICAgICBzYXZlRWxlY3RyaWNCb3JkZXJzKCk7CkBAIC00NzIsMjkg KzQyOSwxMyBAQCB2b2lkIEtXaW5Db21wb3NpdGluZ0NvbmZpZzo6c2F2ZUVmZmVjdHNUYWIoKQog ICAgIHVpLmVmZmVjdFNlbGVjdG9yLT5zYXZlKCk7CiB9CiAKLWJvb2wgS1dpbkNvbXBvc2l0aW5n Q29uZmlnOjpzYXZlQWR2YW5jZWRUYWIoKQotewotICAgIGJvb2wgYWR2YW5jZWRDaGFuZ2VkID0g ZmFsc2U7Cit2b2lkIEtXaW5Db21wb3NpdGluZ0NvbmZpZzo6c2F2ZUFkdmFuY2VkVGFiKCkKKyAg ICB7CiAgICAgc3RhdGljIGNvbnN0IGludCBocHNbXSA9IHsgNiAvKmFsd2F5cyovLCA1IC8qc2hv d24qLywgIDQgLypuZXZlciovIH07CiAKLSAgICBLQ29uZmlnR3JvdXAgY29uZmlnKG1LV2luQ29u ZmlnLCAiQ29tcG9zaXRpbmciKTsKKyAgICBLQ29uZmlnR3JvdXAgY29uZmlnKG1OZXdDb25maWcs ICJDb21wb3NpdGluZyIpOwogICAgIFFTdHJpbmcgZ2xNb2Rlc1tdID0geyAiVEZQIiwgIlNITSIs ICJGYWxsYmFjayIgfTsKIAotICAgIGlmKCBjb25maWcucmVhZEVudHJ5KCJCYWNrZW5kIiwgIk9w ZW5HTCIpCi0gICAgICAgICAgICAhPSAoKHVpLmNvbXBvc2l0aW5nVHlwZS0+Y3VycmVudEluZGV4 KCkgPT0gMCkgPyAiT3BlbkdMIiA6ICJYUmVuZGVyIikKLSAgICAgICAgfHwgY29uZmlnLnJlYWRF bnRyeSgiR0xNb2RlIiwgIlRGUCIpICE9IGdsTW9kZXNbdWkuZ2xNb2RlLT5jdXJyZW50SW5kZXgo KV0KLSAgICAgICAgfHwgY29uZmlnLnJlYWRFbnRyeSgiR0xEaXJlY3QiLCBtRGVmYXVsdFByZWZz LmVuYWJsZURpcmVjdFJlbmRlcmluZygpKQotICAgICAgICAgICAgIT0gdWkuZ2xEaXJlY3QtPmlz Q2hlY2tlZCgpCi0gICAgICAgIHx8IGNvbmZpZy5yZWFkRW50cnkoIkdMVlN5bmMiLCBtRGVmYXVs dFByZWZzLmVuYWJsZVZTeW5jKCkpICE9IHVpLmdsVlN5bmMtPmlzQ2hlY2tlZCgpCi0gICAgICAg IHx8IGNvbmZpZy5yZWFkRW50cnkoIkRpc2FibGVDaGVja3MiLCBmYWxzZSApICE9IHVpLmRpc2Fi bGVDaGVja3MtPmlzQ2hlY2tlZCgpKQotICAgICAgICB7Ci0gICAgICAgIG1fc2hvd0NvbmZpcm1E aWFsb2cgPSB0cnVlOwotICAgICAgICBhZHZhbmNlZENoYW5nZWQgPSB0cnVlOwotICAgICAgICB9 Ci0gICAgZWxzZSBpZiggY29uZmlnLnJlYWRFbnRyeSgiSGlkZGVuUHJldmlld3MiLCA1KSAhPSBo cHNbIHVpLndpbmRvd1RodW1ibmFpbHMtPmN1cnJlbnRJbmRleCgpIF0KLSAgICAgICAgfHwgY29u ZmlnLnJlYWRFbnRyeSgiWFJlbmRlclNtb290aFNjYWxlIiwgZmFsc2UgKSAhPSB1aS54cmVuZGVy U21vb3RoU2NhbGUtPmlzQ2hlY2tlZCgpICkKLSAgICAgICAgYWR2YW5jZWRDaGFuZ2VkID0gdHJ1 ZTsKLQogICAgIGNvbmZpZy53cml0ZUVudHJ5KCJCYWNrZW5kIiwgKHVpLmNvbXBvc2l0aW5nVHlw ZS0+Y3VycmVudEluZGV4KCkgPT0gMCkgPyAiT3BlbkdMIiA6ICJYUmVuZGVyIik7CiAgICAgY29u ZmlnLndyaXRlRW50cnkoIkhpZGRlblByZXZpZXdzIiwgaHBzWyB1aS53aW5kb3dUaHVtYm5haWxz LT5jdXJyZW50SW5kZXgoKSBdICk7CiAgICAgY29uZmlnLndyaXRlRW50cnkoIkRpc2FibGVDaGVj a3MiLCB1aS5kaXNhYmxlQ2hlY2tzLT5pc0NoZWNrZWQoKSk7CkBAIC01MDUsMTYgKzQ0NiwxMCBA QCBib29sIEtXaW5Db21wb3NpdGluZ0NvbmZpZzo6c2F2ZUFkdmFuY2VkVGFiKCkKICAgICBjb25m aWcud3JpdGVFbnRyeSgiR0xWU3luYyIsIHVpLmdsVlN5bmMtPmlzQ2hlY2tlZCgpKTsKIAogICAg IGNvbmZpZy53cml0ZUVudHJ5KCJYUmVuZGVyU21vb3RoU2NhbGUiLCB1aS54cmVuZGVyU21vb3Ro U2NhbGUtPmlzQ2hlY2tlZCgpKTsKLQotICAgIHJldHVybiBhZHZhbmNlZENoYW5nZWQ7Ci19Cisg ICAgfQogCiB2b2lkIEtXaW5Db21wb3NpdGluZ0NvbmZpZzo6c2F2ZSgpCi17Ci0gICAgLy8gU2F2 ZSBjdXJyZW50IGNvbmZpZy4gV2UnbGwgdXNlIHRoaXMgZm9yIHJlc3RvcmluZyBpbiBjYXNlIHNv bWV0aGluZyBnb2VzIHdyb25nLgotICAgIEtDb25maWdHcm91cCBjb25maWcobUtXaW5Db25maWcs ICJDb21wb3NpdGluZyIpOwotICAgIG1QcmV2aW91c0NvbmZpZyA9IGNvbmZpZy5lbnRyeU1hcCgp OwotCisgICAgewogICAgIC8vIGJhaDsgdGFiIGNvbnRlbnQgYmVpbmcgZGVwZW5kZW50IG9uIHRo ZSBvdGhlciBpcyByZWFsbHkgYmFkOyBhbmQKICAgICAvLyBkZXByZWNhdGVkIGluIHRoZSBISUcg Zm9yIGEgcmVhc29uLiAgSXRzIGNvbmZ1c2luZyEKICAgICAvLyBNYWtlIHN1cmUgd2Ugb25seSBj YWxsIHNhdmUgb24gZWFjaCB0YWIgb25jZTsgYXMgdGhleSBhcmUgc3RhdGVmdWwgZHVlIHRvIHRo ZSByZXZlcnQgY29uY2VwdApAQCAtNTI3LDQwICs0NjIsMTYgQEAgdm9pZCBLV2luQ29tcG9zaXRp bmdDb25maWc6OnNhdmUoKQogICAgICAgICBzYXZlRWZmZWN0c1RhYigpOwogICAgICAgICBsb2Fk R2VuZXJhbFRhYigpOwogICAgICAgICBzYXZlR2VuZXJhbFRhYigpOwotICAgIH0KLSAgICBib29s IGFkdmFuY2VkQ2hhbmdlZCA9IHNhdmVBZHZhbmNlZFRhYigpOwotCi0gICAgLy8gQ29weSBQbHVn aW5zIGdyb3VwIGZyb20gdGVtcCBjb25maWcgdG8gcmVhbCBjb25maWcKLSAgICBRTWFwPFFTdHJp bmcsIFFTdHJpbmc+IGVudHJpZXMgPSBtVG1wQ29uZmlnLT5lbnRyeU1hcCgiUGx1Z2lucyIpOwot ICAgIFFNYXA8UVN0cmluZywgUVN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gZW50cmllcy5j b25zdEJlZ2luKCk7Ci0gICAgS0NvbmZpZ0dyb3VwIHJlYWxjb25maWcobUtXaW5Db25maWcsICJQ bHVnaW5zIik7Ci0gICAgcmVhbGNvbmZpZy5kZWxldGVHcm91cCgpOwotICAgIGZvcig7IGl0ICE9 IGVudHJpZXMuY29uc3RFbmQoKTsgKytpdCkKLSAgICB7Ci0gICAgICAgIHJlYWxjb25maWcud3Jp dGVFbnRyeShpdC5rZXkoKSwgaXQudmFsdWUoKSk7Ci0gICAgfQorICAgICAgICB9CisgICAgY29w eVBsdWdpbnNUb05ld0NvbmZpZygpOwogCi0gICAgZW1pdCBjaGFuZ2VkKCBmYWxzZSApOworICAg IHNhdmVFbGVjdHJpY0JvcmRlcnMoKTsKKyAgICBzYXZlQWR2YW5jZWRUYWIoKTsKIAotICAgIGNv bmZpZ0NoYW5nZWQoYWR2YW5jZWRDaGFuZ2VkKTsKKyAgICBlbWl0IGNoYW5nZWQoIGZhbHNlICk7 CiAKLSAgICBpZihtX3Nob3dDb25maXJtRGlhbG9nKQotICAgIHsKLSAgICAgICAgbV9zaG93Q29u ZmlybURpYWxvZyA9IGZhbHNlOwotICAgICAgICBzaG93Q29uZmlybURpYWxvZyhhZHZhbmNlZENo YW5nZWQpOworICAgIGFjdGl2YXRlTmV3Q29uZmlnKCk7CiAgICAgfQotfQotCi12b2lkIEtXaW5D b21wb3NpdGluZ0NvbmZpZzo6Y29uZmlnQ2hhbmdlZChib29sIHJlaW5pdENvbXBvc2l0aW5nKQot ewotICAgIC8vIFNlbmQgc2lnbmFsIHRvIGt3aW4KLSAgICBtS1dpbkNvbmZpZy0+c3luYygpOwot ICAgIC8vIFNlbmQgc2lnbmFsIHRvIGFsbCBrd2luIGluc3RhbmNlcwotICAgIFFEQnVzTWVzc2Fn ZSBtZXNzYWdlID0gUURCdXNNZXNzYWdlOjpjcmVhdGVTaWduYWwoIi9LV2luIiwgIm9yZy5rZGUu S1dpbiIsCi0gICAgICAgIHJlaW5pdENvbXBvc2l0aW5nID8gInJlaW5pdENvbXBvc2l0aW5nIiA6 ICJyZWxvYWRDb25maWciKTsKLSAgICBRREJ1c0Nvbm5lY3Rpb246OnNlc3Npb25CdXMoKS5zZW5k KG1lc3NhZ2UpOwotfQotCiAKIHZvaWQgS1dpbkNvbXBvc2l0aW5nQ29uZmlnOjpkZWZhdWx0cygp CiB7CkBAIC02NjEsMjUgKzU3MiwyNSBAQCB2b2lkIEtXaW5Db21wb3NpdGluZ0NvbmZpZzo6ZWxl Y3RyaWNCb3JkZXJTZWxlY3Rpb25DaGFuZ2VkKGludCBlZGdlLCBpbnQgaW5kZXgpCiB2b2lkIEtX aW5Db21wb3NpdGluZ0NvbmZpZzo6bG9hZEVsZWN0cmljQm9yZGVycygpCiB7CiAgICAgLy8gUHJl c2VudCBXaW5kb3dzCi0gICAgS0NvbmZpZ0dyb3VwIHByZXNlbnR3aW5kb3dzY29uZmlnKG1LV2lu Q29uZmlnLCAiRWZmZWN0LVByZXNlbnRXaW5kb3dzIik7CisgICAgS0NvbmZpZ0dyb3VwIHByZXNl bnR3aW5kb3dzY29uZmlnKG1OZXdDb25maWcsICJFZmZlY3QtUHJlc2VudFdpbmRvd3MiKTsKICAg ICBjaGFuZ2VFbGVjdHJpY0JvcmRlciggKEVsZWN0cmljQm9yZGVyKXByZXNlbnR3aW5kb3dzY29u ZmlnLnJlYWRFbnRyeSggIkJvcmRlckFjdGl2YXRlQWxsIiwKICAgICAgICAgaW50KCBFbGVjdHJp Y1RvcExlZnQgKSksIChpbnQpUHJlc2VudFdpbmRvd3NBbGwgKTsKICAgICBjaGFuZ2VFbGVjdHJp Y0JvcmRlciggKEVsZWN0cmljQm9yZGVyKXByZXNlbnR3aW5kb3dzY29uZmlnLnJlYWRFbnRyeSgg IkJvcmRlckFjdGl2YXRlIiwKICAgICAgICAgaW50KCBFbGVjdHJpY05vbmUgKSksIChpbnQpUHJl c2VudFdpbmRvd3NDdXJyZW50ICk7CiAgICAgLy8gRGVza3RvcCBHcmlkCi0gICAgS0NvbmZpZ0dy b3VwIGdyaWRjb25maWcobUtXaW5Db25maWcsICJFZmZlY3QtRGVza3RvcEdyaWQiKTsKKyAgICBL Q29uZmlnR3JvdXAgZ3JpZGNvbmZpZyhtTmV3Q29uZmlnLCAiRWZmZWN0LURlc2t0b3BHcmlkIik7 CiAgICAgY2hhbmdlRWxlY3RyaWNCb3JkZXIoIChFbGVjdHJpY0JvcmRlcilncmlkY29uZmlnLnJl YWRFbnRyeSggIkJvcmRlckFjdGl2YXRlIiwKICAgICAgICAgaW50KCBFbGVjdHJpY05vbmUgKSks IChpbnQpRGVza3RvcEdyaWQgKTsKICAgICAvLyBEZXNrdG9wIEN1YmUKLSAgICBLQ29uZmlnR3Jv dXAgY3ViZWNvbmZpZyhtS1dpbkNvbmZpZywgIkVmZmVjdC1DdWJlIik7CisgICAgS0NvbmZpZ0dy b3VwIGN1YmVjb25maWcobU5ld0NvbmZpZywgIkVmZmVjdC1DdWJlIik7CiAgICAgY2hhbmdlRWxl Y3RyaWNCb3JkZXIoIChFbGVjdHJpY0JvcmRlciljdWJlY29uZmlnLnJlYWRFbnRyeSggIkJvcmRl ckFjdGl2YXRlIiwKICAgICAgICAgaW50KCBFbGVjdHJpY05vbmUgKSksIChpbnQpQ3ViZSApOwog ICAgIC8vIERlc2t0b3AgQ3lsaW5kZXIKLSAgICBLQ29uZmlnR3JvdXAgY3lsaW5kZXJjb25maWco bUtXaW5Db25maWcsICJFZmZlY3QtQ3lsaW5kZXIiKTsKKyAgICBLQ29uZmlnR3JvdXAgY3lsaW5k ZXJjb25maWcobU5ld0NvbmZpZywgIkVmZmVjdC1DeWxpbmRlciIpOwogICAgIGNoYW5nZUVsZWN0 cmljQm9yZGVyKCAoRWxlY3RyaWNCb3JkZXIpY3lsaW5kZXJjb25maWcucmVhZEVudHJ5KCAiQm9y ZGVyQWN0aXZhdGUiLAogICAgICAgICBpbnQoIEVsZWN0cmljTm9uZSApKSwgKGludClDeWxpbmRl ciApOwogICAgIC8vIERlc2t0b3AgR3JpZAotICAgIEtDb25maWdHcm91cCBzcGhlcmVjb25maWco bUtXaW5Db25maWcsICJFZmZlY3QtU3BoZXJlIik7CisgICAgS0NvbmZpZ0dyb3VwIHNwaGVyZWNv bmZpZyhtTmV3Q29uZmlnLCAiRWZmZWN0LVNwaGVyZSIpOwogICAgIGNoYW5nZUVsZWN0cmljQm9y ZGVyKCAoRWxlY3RyaWNCb3JkZXIpc3BoZXJlY29uZmlnLnJlYWRFbnRyeSggIkJvcmRlckFjdGl2 YXRlIiwKICAgICAgICAgaW50KCBFbGVjdHJpY05vbmUgKSksIChpbnQpU3BoZXJlICk7CiB9CkBA IC03NTYsMjQgKzY2NywxNTYgQEAgRWxlY3RyaWNCb3JkZXIgS1dpbkNvbXBvc2l0aW5nQ29uZmln OjpjaGVja0VmZmVjdEhhc0VsZWN0cmljQm9yZGVyKCBpbnQgaW5kZXggKQogfQogCiB2b2lkIEtX aW5Db21wb3NpdGluZ0NvbmZpZzo6c2F2ZUVsZWN0cmljQm9yZGVycygpCi17Ci0gICAgS0NvbmZp Z0dyb3VwIHByZXNlbnR3aW5kb3dzY29uZmlnKG1LV2luQ29uZmlnLCAiRWZmZWN0LVByZXNlbnRX aW5kb3dzIik7CisgICAgeworICAgIEtDb25maWdHcm91cCBwcmVzZW50d2luZG93c2NvbmZpZyht TmV3Q29uZmlnLCAiRWZmZWN0LVByZXNlbnRXaW5kb3dzIik7CiAgICAgcHJlc2VudHdpbmRvd3Nj b25maWcud3JpdGVFbnRyeSggIkJvcmRlckFjdGl2YXRlQWxsIiwgKGludCljaGVja0VmZmVjdEhh c0VsZWN0cmljQm9yZGVyKCAoaW50KVByZXNlbnRXaW5kb3dzQWxsICkpOwogICAgIHByZXNlbnR3 aW5kb3dzY29uZmlnLndyaXRlRW50cnkoICJCb3JkZXJBY3RpdmF0ZSIsIChpbnQpY2hlY2tFZmZl Y3RIYXNFbGVjdHJpY0JvcmRlciggKGludClQcmVzZW50V2luZG93c0N1cnJlbnQgKSk7CiAKLSAg ICBLQ29uZmlnR3JvdXAgZ3JpZGNvbmZpZyhtS1dpbkNvbmZpZywgIkVmZmVjdC1EZXNrdG9wR3Jp ZCIpOworICAgIEtDb25maWdHcm91cCBncmlkY29uZmlnKG1OZXdDb25maWcsICJFZmZlY3QtRGVz a3RvcEdyaWQiKTsKICAgICBncmlkY29uZmlnLndyaXRlRW50cnkoICJCb3JkZXJBY3RpdmF0ZSIs IChpbnQpY2hlY2tFZmZlY3RIYXNFbGVjdHJpY0JvcmRlciggKGludClEZXNrdG9wR3JpZCApKTsK IAotICAgIEtDb25maWdHcm91cCBjdWJlY29uZmlnKG1LV2luQ29uZmlnLCAiRWZmZWN0LUN1YmUi KTsKKyAgICBLQ29uZmlnR3JvdXAgY3ViZWNvbmZpZyhtTmV3Q29uZmlnLCAiRWZmZWN0LUN1YmUi KTsKICAgICBjdWJlY29uZmlnLndyaXRlRW50cnkoICJCb3JkZXJBY3RpdmF0ZSIsIChpbnQpY2hl Y2tFZmZlY3RIYXNFbGVjdHJpY0JvcmRlciggKGludClDdWJlICkpOwogCi0gICAgS0NvbmZpZ0dy b3VwIGN5bGluZGVyY29uZmlnKG1LV2luQ29uZmlnLCAiRWZmZWN0LUN5bGluZGVyIik7CisgICAg S0NvbmZpZ0dyb3VwIGN5bGluZGVyY29uZmlnKG1OZXdDb25maWcsICJFZmZlY3QtQ3lsaW5kZXIi KTsKICAgICBjeWxpbmRlcmNvbmZpZy53cml0ZUVudHJ5KCAiQm9yZGVyQWN0aXZhdGUiLCAoaW50 KWNoZWNrRWZmZWN0SGFzRWxlY3RyaWNCb3JkZXIoIChpbnQpQ3lsaW5kZXIgKSk7CiAKLSAgICBL Q29uZmlnR3JvdXAgc3BoZXJlY29uZmlnKG1LV2luQ29uZmlnLCAiRWZmZWN0LVNwaGVyZSIpOwor ICAgIEtDb25maWdHcm91cCBzcGhlcmVjb25maWcobU5ld0NvbmZpZywgIkVmZmVjdC1TcGhlcmUi KTsKICAgICBzcGhlcmVjb25maWcud3JpdGVFbnRyeSggIkJvcmRlckFjdGl2YXRlIiwgKGludClj aGVja0VmZmVjdEhhc0VsZWN0cmljQm9yZGVyKCAoaW50KVNwaGVyZSApKTsKLX0KLSAgICAKKyAg ICB9CisKK3ZvaWQgS1dpbkNvbXBvc2l0aW5nQ29uZmlnOjphY3RpdmF0ZU5ld0NvbmZpZygpCisg ICAgeworICAgIGJvb2wgY29uZmlnT2sgPSB0cnVlOworCisgICAgLy8gVGVsbCBLV2luIHRvIGxv YWQgdGhlIG5ldyBjb25maWd1cmF0aW9uLgorICAgIGJvb2wgY291bGRSZWxvYWQgPSBzZW5kS1dp blJlbG9hZFNpZ25hbCgpOworICAgIC8vIElmIGl0IHdhcyBub3Qgc3VjY2Vzc2Z1bGwsIHNob3cg YW4gZXJyb3IgbWVzc2FnZSB0byB0aGUgdXNlci4KKyAgICBpZiAoICFjb3VsZFJlbG9hZCApCisg ICAgICAgIHsKKyAgICAgICAgS01lc3NhZ2VCb3g6OnNvcnJ5KCB0aGlzLCBpMThuKAorICAgICAg ICAgICAgIkZhaWxlZCB0byBhY3RpdmF0ZSBkZXNrdG9wIGVmZmVjdHMgdXNpbmcgdGhlIGdpdmVu ICIKKyAgICAgICAgICAgICJjb25maWd1cmF0aW9uIG9wdGlvbnMuIFNldHRpbmdzIHdpbGwgYmUg cmV2ZXJ0ZWQgdG8gdGhlaXIgcHJldmlvdXMgdmFsdWVzLlxuXG4iCisgICAgICAgICAgICAiQ2hl Y2sgeW91ciBYIGNvbmZpZ3VyYXRpb24uIFlvdSBtYXkgYWxzbyBjb25zaWRlciBjaGFuZ2luZyBh ZHZhbmNlZCBvcHRpb25zLCAiCisgICAgICAgICAgICAiZXNwZWNpYWxseSBjaGFuZ2luZyB0aGUg Y29tcG9zaXRpbmcgdHlwZS4iICkgKTsKKyAgICAgICAgY29uZmlnT2sgPSBmYWxzZTsKKyAgICAg ICAgfQorICAgIGVsc2UKKyAgICAgICB7CisgICAgICAgIC8vIElmIHRoZSBjb25maXJtYXRpb24g ZGlhbG9nIHNob3VsZCBiZSBzaG93biwgd2FpdCBmb3IgaXRzIHJlc3VsdC4KKyAgICAgICAgaWYg KCBpc0NvbmZpcm1hdGlvbk5lZWRlZCgpICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIENv bmZpcm1EaWFsb2cgY29uZmlybTsKKyAgICAgICAgICAgIGNvbmZpZ09rID0gY29uZmlybS5leGVj KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgIGlmICggY29uZmlnT2sgKQorICAg ICAgICB7CisgICAgICAgIC8vIFRoZSBuZXcgY29uZmlnIGlzIHN0YWJsZSBhbmQgd2FzIGFjY2Vw dGVkLgorICAgICAgICB1cGRhdGVCYWNrdXBXaXRoTmV3Q29uZmlnKCk7CisgICAgICAgIH0KKyAg ICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgLy8gQ29weSBiYWNrIHRoZSBvbGQgY29uZmlnIGFu ZCBsb2FkIGl0IGludG8gdGhlIHVpLgorICAgICAgICByZXNldE5ld1RvQmFja3VwQ29uZmlnKCk7 CisgICAgICAgIGxvYWQoKTsKKyAgICAgICAgLy8gVGVsbCBLV2luIHRvIHJlbG9hZCB0aGUgKG9s ZCkgY29uZmlnLgorICAgICAgICBzZW5kS1dpblJlbG9hZFNpZ25hbCgpOworICAgICAgICB9Cisg ICAgfQorCitib29sIEtXaW5Db21wb3NpdGluZ0NvbmZpZzo6aXNDb25maXJtYXRpb25OZWVkZWQo KSBjb25zdAorICAgIHsKKyAgICAvLyBDb21wYXJlIG5ldyBjb25maWcgd2l0aCB0aGUgYmFja3Vw IGFuZCBzZWUgaWYgYW55IHBvdGVudGlhbGx5IGRhbmdlcm91cworICAgIC8vIHZhbHVlcyBoYXZl IGJlZW4gY2hhbmdlZC4KKyAgICBLQ29uZmlnR3JvdXAgbmV3R3JvdXAoIG1OZXdDb25maWcsICJD b21wb3NpdGluZyIgKTsKKyAgICBLQ29uZmlnR3JvdXAgYmFja3VwR3JvdXAoIG1CYWNrdXBDb25m aWcsICJDb21wb3NpdGluZyIgKTsKKworICAgIC8vIE1hbnVhbGx5IGVuYWJsaW5nIGNvbXBvc2l0 aW5nIGlzIHBvdGVudGlhbGx5IGRhbmdlcm91cywgYnV0IGRpc2FibGluZyBpcyBuZXZlci4KKyAg ICBib29sIG5ld0VuYWJsZWQgPSBuZXdHcm91cC5yZWFkRW50cnkoICJFbmFibGVkIiwgbURlZmF1 bHRQcmVmcy5lbmFibGVDb21wb3NpdGluZygpICk7CisgICAgYm9vbCBiYWNrdXBFbmFibGVkID0g YmFja3VwR3JvdXAucmVhZEVudHJ5KCAiRW5hYmxlZCIsIG1EZWZhdWx0UHJlZnMuZW5hYmxlQ29t cG9zaXRpbmcoKSApOworICAgIGlmICggbmV3RW5hYmxlZCAmJiAhYmFja3VwRW5hYmxlZCApCisg ICAgICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgIC8vIEFsbCBw b3RlbnRpYWxseSBkYW5nZXJvdXMgb3B0aW9ucyBhbG9uZyB3aXRoIHRoZWlyIChzYWZlKSBkZWZh dWx0IHZhbHVlcy4KKyAgICBRSGFzaDxRU3RyaW5nLCBRVmFyaWFudD4gY29uZmlybTsKKyAgICBj b25maXJtWyAiQmFja2VuZCIgXSA9ICJPcGVuR0wiOworICAgIGNvbmZpcm1bICJHTE1vZGUiIF0g PSAiVEZQIjsKKyAgICBjb25maXJtWyAiR0xEaXJlY3QiIF0gPSBtRGVmYXVsdFByZWZzLmVuYWJs ZURpcmVjdFJlbmRlcmluZygpOworICAgIGNvbmZpcm1bICJHTFZTeW5jIiBdID0gbURlZmF1bHRQ cmVmcy5lbmFibGVWU3luYygpOworICAgIGNvbmZpcm1bICJEaXNhYmxlQ2hlY2tzIiBdID0gZmFs c2U7CisKKyAgICBRSGFzaDxRU3RyaW5nLCBRVmFyaWFudD46OmNvbnN0X2l0ZXJhdG9yIGkgPSBj b25maXJtLmNvbnN0QmVnaW4oKTsKKyAgICBmb3IoIDsgaSAhPSBjb25maXJtLmNvbnN0RW5kKCk7 ICsraSApCisgICAgICAgIHsKKyAgICAgICAgaWYgKCBuZXdHcm91cC5yZWFkRW50cnkoIGkua2V5 KCksIGkudmFsdWUoKSApICE9CisgICAgICAgICAgICBiYWNrdXBHcm91cC5yZWFkRW50cnkoIGku a2V5KCksIGkudmFsdWUoKSApICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB0 cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAvLyBJZiB3ZSBoYXZlIG5vdCBy ZXR1cm5lZCB5ZXQsIG5vIGNyaXRpY2FsIHNldHRpbmdzIGhhdmUgYmVlbiBjaGFuZ2VkLgorICAg IHJldHVybiBmYWxzZTsKKyAgICB9CisKK2Jvb2wgS1dpbkNvbXBvc2l0aW5nQ29uZmlnOjpzZW5k S1dpblJlbG9hZFNpZ25hbCgpCisgICAgeworICAgIC8vIFNhdmUgdGhlIG5ldyBjb25maWcgdG8g dGhlIGZpbGUgc3lzdGVtLCB0aHVzIGFsbG93aW5nIEtXaW4gdG8gcmVhZCBpdC4KKyAgICBtTmV3 Q29uZmlnLT5zeW5jKCk7CisKKyAgICAvLyBTZW5kIHNpZ25hbCB0byBhbGwga3dpbiBpbnN0YW5j ZXMuCisgICAgUURCdXNNZXNzYWdlIG1lc3NhZ2UgPSBRREJ1c01lc3NhZ2U6OmNyZWF0ZVNpZ25h bCggIi9LV2luIiwgIm9yZy5rZGUuS1dpbiIsICJyZWxvYWRDb21wb3NpdGluZ0NvbmZpZyIgKTsK KyAgICBRREJ1c0Nvbm5lY3Rpb246OnNlc3Npb25CdXMoKS5zZW5kKG1lc3NhZ2UpOworCisgICAg Ly8gSWYgY29tcG9zaXRpbmcgaXMgZW5hYmxlZCwgY2hlY2sgaWYgaXQgY291bGQgYmUgc3RhcnRl ZC4KKyAgICBLQ29uZmlnR3JvdXAgbmV3R3JvdXAoIG1OZXdDb25maWcsICJDb21wb3NpdGluZyIg KTsKKyAgICBib29sIGVuYWJsZWQgPSBuZXdHcm91cC5yZWFkRW50cnkoICJFbmFibGVkIiwgbURl ZmF1bHRQcmVmcy5lbmFibGVDb21wb3NpdGluZygpICk7CisKKyAgICBpZiAoICFlbmFibGVkICkK KyAgICAgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIGVsc2UKKyAg ICAgICAgeworICAgICAgICAvLyBGZWVsIGZyZWUgdG8gZXh0ZW5kIHRoaXMgdG8gc3VwcG9ydCBz ZXZlcmFsIGt3aW4gaW5zdGFuY2VzIChtdWx0aWhlYWQpIGlmIHlvdQorICAgICAgICAvLyB0aGlu ayBpdCBtYWtlcyBzZW5zZS4KKyAgICAgICAgT3JnS2RlS1dpbkludGVyZmFjZSBrd2luKCAib3Jn LmtkZS5rd2luIiwgIi9LV2luIiwgUURCdXNDb25uZWN0aW9uOjpzZXNzaW9uQnVzKCkgKTsKKyAg ICAgICAgcmV0dXJuIGt3aW4uY29tcG9zaXRpbmdBY3RpdmUoKS52YWx1ZSgpOworICAgICAgICB9 CisgICAgfQorCit2b2lkIEtXaW5Db21wb3NpdGluZ0NvbmZpZzo6dXBkYXRlQmFja3VwV2l0aE5l d0NvbmZpZygpCisgICAgeworICAgIG1OZXdDb25maWctPmNvcHlUbyggbUJhY2t1cENvbmZpZy0+ bmFtZSgpLCBtQmFja3VwQ29uZmlnICk7CisgICAgbUJhY2t1cENvbmZpZy0+c3luYygpOworICAg IH0KKwordm9pZCBLV2luQ29tcG9zaXRpbmdDb25maWc6OnJlc2V0TmV3VG9CYWNrdXBDb25maWco KQorICAgIHsKKyAgICBtQmFja3VwQ29uZmlnLT5jb3B5VG8oIG1OZXdDb25maWctPm5hbWUoKSwg bU5ld0NvbmZpZy5kYXRhKCkgKTsKKyAgICBtTmV3Q29uZmlnLT5zeW5jKCk7CisgICAgfQorCit2 b2lkIEtXaW5Db21wb3NpdGluZ0NvbmZpZzo6Y29weVBsdWdpbnNUb1RtcENvbmZpZygpCisgICAg eworICAgIEtDb25maWdHcm91cCBuZXdHcm91cCggbU5ld0NvbmZpZywgIlBsdWdpbnMiICk7Cisg ICAgS0NvbmZpZ0dyb3VwIHRtcEdyb3VwKCBtVG1wQ29uZmlnLCAiUGx1Z2lucyIgKTsKKyAgICB0 bXBHcm91cC5kZWxldGVHcm91cCgpOworICAgIG5ld0dyb3VwLmNvcHlUbyggJnRtcEdyb3VwICk7 CisgICAgfQorCit2b2lkIEtXaW5Db21wb3NpdGluZ0NvbmZpZzo6Y29weVBsdWdpbnNUb05ld0Nv bmZpZygpCisgICAgeworICAgIEtDb25maWdHcm91cCBuZXdHcm91cCggbU5ld0NvbmZpZywgIlBs dWdpbnMiICk7CisgICAgS0NvbmZpZ0dyb3VwIHRtcEdyb3VwKCBtVG1wQ29uZmlnLCAiUGx1Z2lu cyIgKTsKKyAgICBuZXdHcm91cC5kZWxldGVHcm91cCgpOworICAgIHRtcEdyb3VwLmNvcHlUbygg Jm5ld0dyb3VwICk7CisgICAgfQorCiB9IC8vIG5hbWVzcGFjZQogICAgIAogI2luY2x1ZGUgIm1h aW4ubW9jIgpkaWZmIC0tZ2l0IGEva2Nta3dpbi9rd2luY29tcG9zaXRpbmcvbWFpbi5oIGIva2Nt a3dpbi9rd2luY29tcG9zaXRpbmcvbWFpbi5oCmluZGV4IDVjOGRiYjkuLmU1NDdhMTAgMTAwNjQ0 Ci0tLSBhL2tjbWt3aW4va3dpbmNvbXBvc2l0aW5nL21haW4uaAorKysgYi9rY21rd2luL2t3aW5j b21wb3NpdGluZy9tYWluLmgKQEAgLTUzLDQzICs1Myw1MSBAQCBjbGFzcyBLV2luQ29tcG9zaXRp bmdDb25maWcgOiBwdWJsaWMgS0NNb2R1bGUKICAgICAgICAgdmlydHVhbCBRU3RyaW5nIHF1aWNr SGVscCgpIGNvbnN0OwogCiAgICAgcHVibGljIHNsb3RzOgotICAgICAgICB2aXJ0dWFsIHZvaWQg Y29tcG9zaXRpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBz aG93Q29uZmlybURpYWxvZyhib29sIHJlaW5pdENvbXBvc2l0aW5nKTsKLSAgICAgICAgdm9pZCBj dXJyZW50VGFiQ2hhbmdlZChpbnQgdGFiKTsKLQogICAgICAgICB2aXJ0dWFsIHZvaWQgbG9hZCgp OwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2F2ZSgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGVm YXVsdHMoKTsKLSAgICAgICAgdm9pZCByZXBhcnNlQ29uZmlndXJhdGlvbihjb25zdCBRQnl0ZUFy cmF5JmNvbmYpOwogCisgICAgcHJpdmF0ZSBzbG90czoKKyAgICAgICAgdm9pZCBjb21wb3NpdGlu Z0VuYWJsZWQoYm9vbCBlbmFibGVkKTsKKyAgICAgICAgdm9pZCBjdXJyZW50VGFiQ2hhbmdlZChp bnQgdGFiKTsKKyAgICAgICAgdm9pZCBlbGVjdHJpY0JvcmRlclNlbGVjdGlvbkNoYW5nZWQoaW50 IGVkZ2UsIGludCBpbmRleCk7CisKKyAgICBwcml2YXRlOgogICAgICAgICB2b2lkIGxvYWRHZW5l cmFsVGFiKCk7CiAgICAgICAgIHZvaWQgbG9hZEVmZmVjdHNUYWIoKTsKICAgICAgICAgdm9pZCBs b2FkQWR2YW5jZWRUYWIoKTsKICAgICAgICAgdm9pZCBsb2FkRWxlY3RyaWNCb3JkZXJzKCk7CiAg ICAgICAgIHZvaWQgc2F2ZUdlbmVyYWxUYWIoKTsKICAgICAgICAgdm9pZCBzYXZlRWZmZWN0c1Rh YigpOwotICAgICAgICBib29sIHNhdmVBZHZhbmNlZFRhYigpOwotICAgICAgICB2b2lkIGVsZWN0 cmljQm9yZGVyU2VsZWN0aW9uQ2hhbmdlZChpbnQgZWRnZSwgaW50IGluZGV4KTsKKyAgICAgICAg dm9pZCBzYXZlQWR2YW5jZWRUYWIoKTsKIAotICAgICAgICB2b2lkIGNvbmZpZ0NoYW5nZWQoYm9v bCByZWluaXRDb21wb3NpdGluZyk7CiAgICAgICAgIHZvaWQgaW5pdEVmZmVjdFNlbGVjdG9yKCk7 CiAKLSAgICBwcml2YXRlOgogICAgICAgICBib29sIGVmZmVjdEVuYWJsZWQoIGNvbnN0IFFTdHJp bmcmIGVmZmVjdCwgY29uc3QgS0NvbmZpZ0dyb3VwJiBjZmcgKSBjb25zdDsKKwogICAgICAgICB2 b2lkIHNldHVwRWxlY3RyaWNCb3JkZXJzKCk7CiAgICAgICAgIHZvaWQgYWRkSXRlbVRvRWRnZXNN b25pdG9yKGNvbnN0IFFTdHJpbmcmIGl0ZW0pOwogICAgICAgICB2b2lkIGNoYW5nZUVsZWN0cmlj Qm9yZGVyKCBFbGVjdHJpY0JvcmRlciBib3JkZXIsIGludCBpbmRleCApOwogICAgICAgICBFbGVj dHJpY0JvcmRlciBjaGVja0VmZmVjdEhhc0VsZWN0cmljQm9yZGVyKCBpbnQgaW5kZXggKTsKICAg ICAgICAgdm9pZCBzYXZlRWxlY3RyaWNCb3JkZXJzKCk7CiAKLSAgICAgICAgS1NoYXJlZENvbmZp Z1B0ciBtS1dpbkNvbmZpZzsKKyAgICAgICAgdm9pZCBhY3RpdmF0ZU5ld0NvbmZpZygpOworICAg ICAgICBib29sIGlzQ29uZmlybWF0aW9uTmVlZGVkKCkgY29uc3Q7CisgICAgICAgIGJvb2wgc2Vu ZEtXaW5SZWxvYWRTaWduYWwoKTsKKworICAgICAgICB2b2lkIHVwZGF0ZUJhY2t1cFdpdGhOZXdD b25maWcoKTsKKyAgICAgICAgdm9pZCByZXNldE5ld1RvQmFja3VwQ29uZmlnKCk7CisKKyAgICAg ICAgdm9pZCBjb3B5UGx1Z2luc1RvVG1wQ29uZmlnKCk7CisgICAgICAgIHZvaWQgY29weVBsdWdp bnNUb05ld0NvbmZpZygpOworCiAgICAgICAgIFVpOjpLV2luQ29tcG9zaXRpbmdDb25maWcgdWk7 CiAgICAgICAgIENvbXBvc2l0aW5nUHJlZnMgbURlZmF1bHRQcmVmczsKIAotICAgICAgICBRTWFw PFFTdHJpbmcsIFFTdHJpbmc+IG1QcmV2aW91c0NvbmZpZzsKKyAgICAgICAgS1NoYXJlZENvbmZp Z1B0ciBtTmV3Q29uZmlnOworICAgICAgICBLQ29uZmlnKiBtQmFja3VwQ29uZmlnOwogICAgICAg ICBLVGVtcG9yYXJ5RmlsZSBtVG1wQ29uZmlnRmlsZTsKICAgICAgICAgS1NoYXJlZENvbmZpZ1B0 ciBtVG1wQ29uZmlnOwotICAgICAgICBib29sIG1fc2hvd0NvbmZpcm1EaWFsb2c7CiAKICAgICAg ICAgZW51bSBFbGVjdHJpY0JvcmRlckVmZmVjdHMKICAgICAgICAgICAgIHsKZGlmZiAtLWdpdCBh L29wdGlvbnMuY3BwIGIvb3B0aW9ucy5jcHAKaW5kZXggZDRkNzAxYS4uOTY2YzRiOSAxMDA2NDQK LS0tIGEvb3B0aW9ucy5jcHAKKysrIGIvb3B0aW9ucy5jcHAKQEAgLTIzLDEwICsyMywxMiBAQCBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4KIAogI2lmbmRlZiBLQ01SVUxFUwogCisjaW5jbHVkZSA8UUZpbGU+CiAjaW5j bHVkZSA8UVBhbGV0dGU+CiAjaW5jbHVkZSA8UVBpeG1hcD4KICNpbmNsdWRlIDxrYXBwbGljYXRp b24uaD4KICNpbmNsdWRlIDxrY29uZmlnLmg+CisjaW5jbHVkZSA8a3N0YW5kYXJkZGlycy5oPgog I2luY2x1ZGUgPGtnbG9iYWwuaD4KICNpbmNsdWRlIDxrZ2xvYmFsc2V0dGluZ3MuaD4KIApAQCAt NDUsOSArNDcsMTQgQEAgbmFtZXNwYWNlIEtXaW4KICNpZm5kZWYgS0NNUlVMRVMKIAogT3B0aW9u czo6T3B0aW9ucygpCi0gICAgOiAgIGVsZWN0cmljX2JvcmRlcnMoIDAgKSwKLSAgICAgICAgZWxl Y3RyaWNfYm9yZGVyX2RlbGF5KDApCiAgICAgeworICAgIC8vIElmIHRoZXJlIGlzIGFueSBjb250 ZW50cyBpbiB0aGUgYmFja3VwIGZpbGUsIGl0IG1lYW5zIHRoYXQgS1dpbiBjcmFzaGVkCisgICAg Ly8gd2hpbGUgdGVzdGluZyBhIG5ldyBjb25maWcuIFJldmVydCB0aGUgY29uZmlnLgorICAgIC8v IFRPRE86IE5vdGlmeSB0aGUgdXNlcj8KKyAgICBib29sIGJhY2t1cEltcG9ydGVkID0gaW1wb3J0 QmFja3VwKCk7CisgICAga1dhcm5pbmcoIDEyMTIsIGJhY2t1cEltcG9ydGVkICkgPDwgIlRoZSBu ZXcgc2V0dGluZ3MgaGF2ZSBtb3N0IGxpa2VseSBjYXVzZWQgdGhlIFggc2VydmVyICIKKyAgICAg ICAgInRvIGNyYXNoLiBUaGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGhhdmUgYmVlbiByZXZlcnRl ZCB0byB0aGVpciBvbGQgdmFsdWVzLiI7CisKICAgICB1cGRhdGVTZXR0aW5ncygpOwogICAgIH0K IApAQCAtNTUsMTMgKzYyLDQ0IEBAIE9wdGlvbnM6On5PcHRpb25zKCkKICAgICB7CiAgICAgfQog CisKIHVuc2lnbmVkIGxvbmcgT3B0aW9uczo6dXBkYXRlU2V0dGluZ3MoKQogICAgIHsKLSAgICBL U2hhcmVkQ29uZmlnOjpQdHIgX2NvbmZpZyA9IEtHbG9iYWw6OmNvbmZpZygpOworICAgIHJldHVy biBsb2FkU2V0dGluZ3MoIEtHbG9iYWw6OmNvbmZpZygpICk7CisgICAgfQorCitib29sIE9wdGlv bnM6OmltcG9ydEJhY2t1cCgpCisgICAgeworICAgIFFTdHJpbmcgY29uZmlnRmlsZU5hbWUgPSBL U3RhbmRhcmREaXJzOjpsb2NhdGUoICJjb25maWciLCBLR2xvYmFsOjpjb25maWcoKS0+bmFtZSgp ICk7CisgICAgUVN0cmluZyBiYWNrdXBGaWxlTmFtZSA9IGNvbmZpZ0ZpbGVOYW1lICsgJ34nOwor CisgICAgaWYgKCAhUUZpbGU6OmV4aXN0cyggYmFja3VwRmlsZU5hbWUgKSApCisgICAgICAgIHsK KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICBRRmlsZTo6cmVtb3ZlKCBj b25maWdGaWxlTmFtZSApOworICAgIFFGaWxlOjpyZW5hbWUoIGJhY2t1cEZpbGVOYW1lLCBjb25m aWdGaWxlTmFtZSApOworCisgICAgS0dsb2JhbDo6Y29uZmlnKCktPnJlcGFyc2VDb25maWd1cmF0 aW9uKCk7CisgICAgcmV0dXJuIHRydWU7CisgICAgfQorCit1bnNpZ25lZCBsb25nIE9wdGlvbnM6 OmxvYWRTZXR0aW5ncyggS1NoYXJlZENvbmZpZ1B0ciBjb25maWdGaWxlICkKKyAgICB7CiAgICAg dW5zaWduZWQgbG9uZyBjaGFuZ2VkID0gMDsKLSAgICBjaGFuZ2VkIHw9IEtEZWNvcmF0aW9uT3B0 aW9uczo6dXBkYXRlU2V0dGluZ3MoIF9jb25maWcuZGF0YSgpICk7IC8vIHJlYWQgZGVjb3JhdGlv biBzZXR0aW5ncworICAgIGNoYW5nZWQgfD0gS0RlY29yYXRpb25PcHRpb25zOjp1cGRhdGVTZXR0 aW5ncyggY29uZmlnRmlsZS5kYXRhKCkgKTsgLy8gcmVhZCBkZWNvcmF0aW9uIHNldHRpbmdzCisK KyAgICBsb2FkV2luZG93U2V0dGluZ3MoIGNvbmZpZ0ZpbGUgKTsKKyAgICBsb2FkTW91c2VCaW5k aW5ncyggY29uZmlnRmlsZSApOworICAgIGxvYWRDb21wb3NpdGluZ1NldHRpbmdzKCBjb25maWdG aWxlICk7CiAKLSAgICBLQ29uZmlnR3JvdXAgY29uZmlnKF9jb25maWcsICJXaW5kb3dzIik7Cisg ICAgcmV0dXJuIGNoYW5nZWQ7CisgICAgfQorCit2b2lkIE9wdGlvbnM6OmxvYWRXaW5kb3dTZXR0 aW5ncyggS1NoYXJlZENvbmZpZ1B0ciBjb25maWdGaWxlICkKKyAgICB7CisgICAgS0NvbmZpZ0dy b3VwIGNvbmZpZyggY29uZmlnRmlsZSwgIldpbmRvd3MiICk7CiAgICAgbW92ZU1vZGUgPSBzdHJp bmdUb01vdmVSZXNpemVNb2RlKCBjb25maWcucmVhZEVudHJ5KCJNb3ZlTW9kZSIsICJPcGFxdWUi ICkpOwogICAgIHJlc2l6ZU1vZGUgPSBzdHJpbmdUb01vdmVSZXNpemVNb2RlKCBjb25maWcucmVh ZEVudHJ5KCJSZXNpemVNb2RlIiwgIk9wYXF1ZSIgKSk7CiAgICAgc2hvd19nZW9tZXRyeV90aXAg PSBjb25maWcucmVhZEVudHJ5KCJHZW9tZXRyeVRpcCIsIGZhbHNlKTsKQEAgLTk0LDEyICsxMzIs MTIgQEAgdW5zaWduZWQgbG9uZyBPcHRpb25zOjp1cGRhdGVTZXR0aW5ncygpCiAgICAgaWYoICFm b2N1c1BvbGljeUlzUmVhc29uYWJsZSgpKSAvLyAjNDg3ODYsIGNvbW1lbnRzICM3IGFuZCBsYXRl cgogICAgICAgICBmb2N1c1N0ZWFsaW5nUHJldmVudGlvbkxldmVsID0gMDsKIAotICAgIEtDb25m aWdHcm91cCBnV2luZG93c0NvbmZpZyggX2NvbmZpZywgIldpbmRvd3MiKTsgLy8gZnJvbSBrZGVn bG9iYWxzCi0gICAgeGluZXJhbWFFbmFibGVkID0gZ1dpbmRvd3NDb25maWcucmVhZEVudHJ5ICgi WGluZXJhbWFFbmFibGVkIiwgdHJ1ZSk7Ci0gICAgeGluZXJhbWFQbGFjZW1lbnRFbmFibGVkID0g Z1dpbmRvd3NDb25maWcucmVhZEVudHJ5ICgiWGluZXJhbWFQbGFjZW1lbnRFbmFibGVkIiwgdHJ1 ZSk7Ci0gICAgeGluZXJhbWFNb3ZlbWVudEVuYWJsZWQgPSBnV2luZG93c0NvbmZpZy5yZWFkRW50 cnkgKCJYaW5lcmFtYU1vdmVtZW50RW5hYmxlZCIsIHRydWUpOwotICAgIHhpbmVyYW1hTWF4aW1p emVFbmFibGVkID0gZ1dpbmRvd3NDb25maWcucmVhZEVudHJ5ICgiWGluZXJhbWFNYXhpbWl6ZUVu YWJsZWQiLCB0cnVlKTsKLSAgICB4aW5lcmFtYUZ1bGxzY3JlZW5FbmFibGVkID0gZ1dpbmRvd3ND b25maWcucmVhZEVudHJ5ICgiWGluZXJhbWFGdWxsc2NyZWVuRW5hYmxlZCIsIHRydWUpOworICAg IC8vIFRoaXMgd2FzIG9uY2UgbG9hZGVkIGZyb20ga2RlZ2xvYmFscy4KKyAgICB4aW5lcmFtYUVu YWJsZWQgPSBjb25maWcucmVhZEVudHJ5ICgiWGluZXJhbWFFbmFibGVkIiwgdHJ1ZSk7CisgICAg eGluZXJhbWFQbGFjZW1lbnRFbmFibGVkID0gY29uZmlnLnJlYWRFbnRyeSAoIlhpbmVyYW1hUGxh Y2VtZW50RW5hYmxlZCIsIHRydWUpOworICAgIHhpbmVyYW1hTW92ZW1lbnRFbmFibGVkID0gY29u ZmlnLnJlYWRFbnRyeSAoIlhpbmVyYW1hTW92ZW1lbnRFbmFibGVkIiwgdHJ1ZSk7CisgICAgeGlu ZXJhbWFNYXhpbWl6ZUVuYWJsZWQgPSBjb25maWcucmVhZEVudHJ5ICgiWGluZXJhbWFNYXhpbWl6 ZUVuYWJsZWQiLCB0cnVlKTsKKyAgICB4aW5lcmFtYUZ1bGxzY3JlZW5FbmFibGVkID0gY29uZmln LnJlYWRFbnRyeSAoIlhpbmVyYW1hRnVsbHNjcmVlbkVuYWJsZWQiLCB0cnVlKTsKIAogICAgIHBs YWNlbWVudCA9IFBsYWNlbWVudDo6cG9saWN5RnJvbVN0cmluZyggY29uZmlnLnJlYWRFbnRyeSgi UGxhY2VtZW50IiksIHRydWUgKTsKICAgICB4aW5lcmFtYVBsYWNlbWVudFNjcmVlbiA9IHFCb3Vu ZCggLTEsIGNvbmZpZy5yZWFkRW50cnkoICJYaW5lcmFtYVBsYWNlbWVudFNjcmVlbiIsIC0xICks CkBAIC0xNTUsOCArMTkzLDI5IEBAIHVuc2lnbmVkIGxvbmcgT3B0aW9uczo6dXBkYXRlU2V0dGlu Z3MoKQogICAgIGhpZGVVdGlsaXR5V2luZG93c0ZvckluYWN0aXZlID0gY29uZmlnLnJlYWRFbnRy eSggIkhpZGVVdGlsaXR5V2luZG93c0ZvckluYWN0aXZlIiwgdHJ1ZSk7CiAgICAgc2hvd0Rlc2t0 b3BJc01pbmltaXplQWxsID0gY29uZmlnLnJlYWRFbnRyeSggIlNob3dEZXNrdG9wSXNNaW5pbWl6 ZUFsbCIsIGZhbHNlICk7CiAKKyAgICAvLyBSZWFkIGJ1dHRvbiB0b29sdGlwIGFuaW1hdGlvbiBl ZmZlY3QgZnJvbSBrZGVnbG9iYWxzCisgICAgLy8gU2luY2Ugd2Ugd2FudCB0byBhbGxvdyB1c2Vy cyB0byBlbmFibGUgd2luZG93IGRlY29yYXRpb24gdG9vbHRpcHMKKyAgICAvLyBhbmQgbm90IGtz dHlsZSB0b29sdGlwcyBhbmQgdmlzZS12ZXJzYSwgd2UgZG9uJ3QgcmVhZCB0aGUKKyAgICAvLyAi RWZmZWN0Tm9Ub29sdGlwIiBzZXR0aW5nIGZyb20ga2RlZ2xvYmFscy4KKworI2lmIDAKKyAgICBG SVhNRTogd2UgaGF2ZSBubyBtYWMgc3R5bGUgbWVudSBpbXBsZW1lbnRhdGlvbiBpbiBrd2luIGFu eW1vcmUsIHNvIHRoaXMganVzdCBicmVha3MKKyAgICAgICAgICAgdGhpbmdzIGZvciBwZW9wbGUh CisgICAgS0NvbmZpZyBfZ2xvYmFsQ29uZmlnKCJrZGVnbG9iYWxzIik7CisgICAgS0NvbmZpZ0dy b3VwIGdsb2JhbENvbmZpZygmX2dsb2JhbENvbmZpZywgIktERSIpOworICAgIHRvcG1lbnVzID0g Z2xvYmFsQ29uZmlnLnJlYWRFbnRyeSgibWFjU3R5bGUiLCBmYWxzZSk7CisjZWxzZQorICAgIHRv cG1lbnVzID0gZmFsc2U7CisjZW5kaWYKKworICAgIC8vICAgIFFUb29sVGlwOjpzZXRHbG9iYWxs eUVuYWJsZWQoIGQtPnNob3dfdG9vbHRpcHMgKTsKKyAgICAvLyBLREU0IHRoaXMgcHJvYmFibHkg bmVlZHMgdG8gYmUgZG9uZSBtYW51YWxseSBpbiBjbGllbnRzCisgICAgfQorCit2b2lkIE9wdGlv bnM6OmxvYWRNb3VzZUJpbmRpbmdzKCBLU2hhcmVkQ29uZmlnUHRyIGNvbmZpZ0ZpbGUgKQorICAg IHsKICAgICAvLyBNb3VzZSBiaW5kaW5ncwotICAgIGNvbmZpZyA9IEtDb25maWdHcm91cChfY29u ZmlnLCJNb3VzZUJpbmRpbmdzIik7CisgICAgS0NvbmZpZ0dyb3VwIGNvbmZpZyggY29uZmlnRmls ZSwgIk1vdXNlQmluZGluZ3MiICk7CiAgICAgQ21kQWN0aXZlVGl0bGViYXIxID0gbW91c2VDb21t YW5kKGNvbmZpZy5yZWFkRW50cnkoIkNvbW1hbmRBY3RpdmVUaXRsZWJhcjEiLCJSYWlzZSIpLCB0 cnVlICk7CiAgICAgQ21kQWN0aXZlVGl0bGViYXIyID0gbW91c2VDb21tYW5kKGNvbmZpZy5yZWFk RW50cnkoIkNvbW1hbmRBY3RpdmVUaXRsZWJhcjIiLCJMb3dlciIpLCB0cnVlICk7CiAgICAgQ21k QWN0aXZlVGl0bGViYXIzID0gbW91c2VDb21tYW5kKGNvbmZpZy5yZWFkRW50cnkoIkNvbW1hbmRB Y3RpdmVUaXRsZWJhcjMiLCJPcGVyYXRpb25zIG1lbnUiKSwgdHJ1ZSApOwpAQCAtMTcyLDQyICsy MzEsMTkgQEAgdW5zaWduZWQgbG9uZyBPcHRpb25zOjp1cGRhdGVTZXR0aW5ncygpCiAgICAgQ21k QWxsMiA9IG1vdXNlQ29tbWFuZChjb25maWcucmVhZEVudHJ5KCJDb21tYW5kQWxsMiIsIlRvZ2ds ZSByYWlzZSBhbmQgbG93ZXIiKSwgZmFsc2UgKTsKICAgICBDbWRBbGwzID0gbW91c2VDb21tYW5k KGNvbmZpZy5yZWFkRW50cnkoIkNvbW1hbmRBbGwzIiwiUmVzaXplIiksIGZhbHNlICk7CiAgICAg Q21kQWxsV2hlZWwgPSBtb3VzZVdoZWVsQ29tbWFuZChjb25maWcucmVhZEVudHJ5KCJDb21tYW5k QWxsV2hlZWwiLCJOb3RoaW5nIikpOworICAgIH0KIAotICAgIGNvbmZpZz1LQ29uZmlnR3JvdXAo X2NvbmZpZywiQ29tcG9zaXRpbmciKTsKLSAgICByZWZyZXNoUmF0ZSA9IGNvbmZpZy5yZWFkRW50 cnkoICJSZWZyZXNoUmF0ZSIsIDAgKTsKLQotICAgIC8vIFJlYWQgYnV0dG9uIHRvb2x0aXAgYW5p bWF0aW9uIGVmZmVjdCBmcm9tIGtkZWdsb2JhbHMKLSAgICAvLyBTaW5jZSB3ZSB3YW50IHRvIGFs bG93IHVzZXJzIHRvIGVuYWJsZSB3aW5kb3cgZGVjb3JhdGlvbiB0b29sdGlwcwotICAgIC8vIGFu ZCBub3Qga3N0eWxlIHRvb2x0aXBzIGFuZCB2aXNlLXZlcnNhLCB3ZSBkb24ndCByZWFkIHRoZQot ICAgIC8vICJFZmZlY3ROb1Rvb2x0aXAiIHNldHRpbmcgZnJvbSBrZGVnbG9iYWxzLgotCi0jaWYg MAotICAgIEZJWE1FOiB3ZSBoYXZlIG5vIG1hYyBzdHlsZSBtZW51IGltcGxlbWVudGF0aW9uIGlu IGt3aW4gYW55bW9yZSwgc28gdGhpcyBqdXN0IGJyZWFrcwotICAgICAgICAgICB0aGluZ3MgZm9y IHBlb3BsZSEKLSAgICBLQ29uZmlnIF9nbG9iYWxDb25maWcoImtkZWdsb2JhbHMiKTsKLSAgICBL Q29uZmlnR3JvdXAgZ2xvYmFsQ29uZmlnKCZfZ2xvYmFsQ29uZmlnLCAiS0RFIik7Ci0gICAgdG9w bWVudXMgPSBnbG9iYWxDb25maWcucmVhZEVudHJ5KCJtYWNTdHlsZSIsIGZhbHNlKTsKLSNlbHNl Ci0gICAgdG9wbWVudXMgPSBmYWxzZTsKLSNlbmRpZgotCi0vLyAgICBRVG9vbFRpcDo6c2V0R2xv YmFsbHlFbmFibGVkKCBkLT5zaG93X3Rvb2x0aXBzICk7Ci0vLyBLREU0IHRoaXMgcHJvYmFibHkg bmVlZHMgdG8gYmUgZG9uZSBtYW51YWxseSBpbiBjbGllbnRzCi0KK3ZvaWQgT3B0aW9uczo6bG9h ZENvbXBvc2l0aW5nU2V0dGluZ3MoIEtTaGFyZWRDb25maWdQdHIgY29uZmlnRmlsZSApCisgICAg ewogICAgIC8vIERyaXZlci1zcGVjaWZpYyBjb25maWcgZGV0ZWN0aW9uCiAgICAgQ29tcG9zaXRp bmdQcmVmcyBwcmVmczsKICAgICBwcmVmcy5kZXRlY3QoKTsKLSAgICByZWxvYWRDb21wb3NpdGlu Z1NldHRpbmdzKCBwcmVmcyApOwogCi0gICAgcmV0dXJuIGNoYW5nZWQ7Ci0gICAgfQorICAgIC8v IENvbXBvc2l0aW5nIHNldHRpbmdzCisgICAgS0NvbmZpZ0dyb3VwIGNvbmZpZyggY29uZmlnRmls ZSwgIkNvbXBvc2l0aW5nIik7CiAKLXZvaWQgT3B0aW9uczo6cmVsb2FkQ29tcG9zaXRpbmdTZXR0 aW5ncyhjb25zdCBDb21wb3NpdGluZ1ByZWZzJiBwcmVmcykKLSAgICB7Ci0gICAgS1NoYXJlZENv bmZpZzo6UHRyIF9jb25maWcgPSBLR2xvYmFsOjpjb25maWcoKTsKLSAgICBLQ29uZmlnR3JvdXAg Y29uZmlnKF9jb25maWcsICJDb21wb3NpdGluZyIpOworICAgIHJlZnJlc2hSYXRlID0gY29uZmln LnJlYWRFbnRyeSggIlJlZnJlc2hSYXRlIiwgMCApOwogCi0gICAgLy8gQ29tcG9zaXRpbmcgc2V0 dGluZ3MKICAgICB1c2VDb21wb3NpdGluZyA9IGNvbmZpZy5yZWFkRW50cnkoIkVuYWJsZWQiLCBw cmVmcy5lbmFibGVDb21wb3NpdGluZygpKTsKICAgICBRU3RyaW5nIGNvbXBvc2l0aW5nQmFja2Vu ZCA9IGNvbmZpZy5yZWFkRW50cnkoIkJhY2tlbmQiLCAiT3BlbkdMIik7CiAgICAgaWYoIGNvbXBv c2l0aW5nQmFja2VuZCA9PSAiWFJlbmRlciIgKQpkaWZmIC0tZ2l0IGEvb3B0aW9ucy5oIGIvb3B0 aW9ucy5oCmluZGV4IGM3YmNkNWYuLmRiMDg1ZjcgMTAwNjQ0Ci0tLSBhL29wdGlvbnMuaAorKysg Yi9vcHRpb25zLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgT3B0aW9ucyA6IHB1YmxpYyBLRGVj b3JhdGlvbk9wdGlvbnMKICAgICAgICAgfk9wdGlvbnMoKTsKIAogICAgICAgICB2aXJ0dWFsIHVu c2lnbmVkIGxvbmcgdXBkYXRlU2V0dGluZ3MoKTsKKyAgICAgICAgYm9vbCBpbXBvcnRCYWNrdXAo KTsKIAogICAgICAgICAvKiEKICAgICAgICAgICBEaWZmZXJlbnQgZm9jdXMgcG9saWNpZXM6CkBA IC0zMTMsNiArMzE0LDEyIEBAIGNsYXNzIE9wdGlvbnMgOiBwdWJsaWMgS0RlY29yYXRpb25PcHRp b25zCiAgICAgICAgIGRvdWJsZSBhbmltYXRpb25UaW1lRmFjdG9yKCkgY29uc3Q7CiAKICAgICBw cml2YXRlOgorICAgICAgICB1bnNpZ25lZCBsb25nIGxvYWRTZXR0aW5ncyggS1NoYXJlZENvbmZp Z1B0ciBjb25maWdGaWxlICk7CisgICAgICAgIHZvaWQgbG9hZFdpbmRvd1NldHRpbmdzKCBLU2hh cmVkQ29uZmlnUHRyIGNvbmZpZ0ZpbGUgKTsKKyAgICAgICAgdm9pZCBsb2FkTW91c2VCaW5kaW5n cyggS1NoYXJlZENvbmZpZ1B0ciBjb25maWdGaWxlICk7CisgICAgICAgIHZvaWQgbG9hZENvbXBv c2l0aW5nU2V0dGluZ3MoIEtTaGFyZWRDb25maWdQdHIgY29uZmlnRmlsZSApOworCisKICAgICAg ICAgV2luZG93T3BlcmF0aW9uIE9wVGl0bGViYXJEYmxDbGljazsKIAogICAgIC8vIG1vdXNlIGJp bmRpbmdzCkBAIC0zNDIsNyArMzQ5LDYgQEAgY2xhc3MgT3B0aW9ucyA6IHB1YmxpYyBLRGVjb3Jh dGlvbk9wdGlvbnMKICAgICAgICAgaW50IGFuaW1hdGlvblNwZWVkOyAvLyAwIC0gaW5zdGFudCwg NSAtIHZlcnkgc2xvdwogCiAgICAgICAgIE1vdXNlQ29tbWFuZCB3aGVlbFRvTW91c2VDb21tYW5k KCBNb3VzZVdoZWVsQ29tbWFuZCBjb20sIGludCBkZWx0YSApOwotICAgICAgICB2b2lkIHJlbG9h ZENvbXBvc2l0aW5nU2V0dGluZ3MoY29uc3QgQ29tcG9zaXRpbmdQcmVmcyYgcHJlZnMpOwogICAg IH07CiAKIGV4dGVybiBPcHRpb25zKiBvcHRpb25zOwpkaWZmIC0tZ2l0IGEvb3JnLmtkZS5LV2lu LnhtbCBiL29yZy5rZGUuS1dpbi54bWwKaW5kZXggZWMyNzM3Mi4uZGRjMDYwNSAxMDA2NDQKLS0t IGEvb3JnLmtkZS5LV2luLnhtbAorKysgYi9vcmcua2RlLktXaW4ueG1sCkBAIC0zNCw3ICszNCw3 IEBACiAgICAgPG1ldGhvZCBuYW1lPSJwcmV2aW91c0Rlc2t0b3AiLz4KICAgICA8bWV0aG9kIG5h bWU9ImNpcmN1bGF0ZURlc2t0b3BBcHBsaWNhdGlvbnMiLz4KICAgICA8c2lnbmFsIG5hbWU9InJl bG9hZENvbmZpZyIvPgotICAgIDxzaWduYWwgbmFtZT0icmVpbml0Q29tcG9zaXRpbmciLz4KKyAg ICA8c2lnbmFsIG5hbWU9InJlbG9hZENvbXBvc2l0aW5nQ29uZmlnIi8+CiAgICAgPG1ldGhvZCBu YW1lPSJsb2FkRWZmZWN0Ij4KICAgICAgIDxhcmcgbmFtZT0ibmFtZSIgdHlwZT0icyIgZGlyZWN0 aW9uPSJpbiIvPgogICAgIDwvbWV0aG9kPgpAQCAtNDksMTYgKzQ5LDEzIEBACiAgICAgPC9tZXRo b2Q+CiAgICAgPG1ldGhvZCBuYW1lPSJsb2FkZWRFZmZlY3RzIj4KICAgICAgIDxhcmcgdHlwZT0i YXMiIGRpcmVjdGlvbj0ib3V0Ii8+Ci0gICAgPC9tZXRob2Q+ICAgIAorICAgIDwvbWV0aG9kPgog ICAgIDxtZXRob2QgbmFtZT0ibGlzdE9mRWZmZWN0cyI+CiAgICAgICA8YXJnIHR5cGU9ImFzIiBk aXJlY3Rpb249Im91dCIvPgogICAgIDwvbWV0aG9kPgogICAgIDxtZXRob2QgbmFtZT0iY29tcG9z aXRpbmdBY3RpdmUiPgogICAgICAgPGFyZyB0eXBlPSJiIiBkaXJlY3Rpb249Im91dCIvPgogICAg IDwvbWV0aG9kPgotICAgIDxtZXRob2QgbmFtZT0id2FpdEZvckNvbXBvc2l0aW5nU2V0dXAiPgot ICAgICAgPGFyZyB0eXBlPSJiIiBkaXJlY3Rpb249Im91dCIvPgotICAgIDwvbWV0aG9kPgogICAg IDxtZXRob2QgbmFtZT0iZGVjb3JhdGlvblN1cHBvcnRlZENvbG9ycyI+CiAgICAgICA8YXJnIHR5 cGU9ImFpIiBkaXJlY3Rpb249Im91dCIvPgogICAgICAgPGFubm90YXRpb24gbmFtZT0iY29tLnRy b2xsdGVjaC5RdERCdXMuUXRUeXBlTmFtZS5PdXQwIiB2YWx1ZT0iUUxpc3QmbHQ7aW50PiIvPgpk aWZmIC0tZ2l0IGEvd29ya3NwYWNlLmNwcCBiL3dvcmtzcGFjZS5jcHAKaW5kZXggMDNmMDJjOC4u ZmNjZjI4NSAxMDA2NDQKLS0tIGEvd29ya3NwYWNlLmNwcAorKysgYi93b3Jrc3BhY2UuY3BwCkBA IC0xNDcsNyArMTQ3LDcgQEAgV29ya3NwYWNlOjpXb3Jrc3BhY2UoIGJvb2wgcmVzdG9yZSApCiAg ICAgUURCdXNDb25uZWN0aW9uIGRidXMgPSBRREJ1c0Nvbm5lY3Rpb246OnNlc3Npb25CdXMoKTsK ICAgICBkYnVzLnJlZ2lzdGVyT2JqZWN0KCIvS1dpbiIsIHRoaXMpOwogICAgIGRidXMuY29ubmVj dChRU3RyaW5nKCksICIvS1dpbiIsICJvcmcua2RlLktXaW4iLCAicmVsb2FkQ29uZmlnIiwgdGhp cywgU0xPVChzbG90UmVsb2FkQ29uZmlnKCkpKTsKLSAgICBkYnVzLmNvbm5lY3QoUVN0cmluZygp LCAiL0tXaW4iLCAib3JnLmtkZS5LV2luIiwgInJlaW5pdENvbXBvc2l0aW5nIiwgdGhpcywgU0xP VChzbG90UmVpbml0Q29tcG9zaXRpbmcoKSkpOworICAgIGRidXMuY29ubmVjdChRU3RyaW5nKCks ICIvS1dpbiIsICJvcmcua2RlLktXaW4iLCAicmVsb2FkQ29tcG9zaXRpbmdDb25maWciLCB0aGlz LCBTTE9UKHNsb3RSZWxvYWRDb21wb3NpdGluZ0NvbmZpZygpKSk7CiAgICAgX3NlbGYgPSB0aGlz OwogICAgIG1nciA9IG5ldyBQbHVnaW5NZ3I7CiAgICAgUVgxMUluZm8gaW5mbzsKQEAgLTEwODEs MTUgKzEwODEsMTcgQEAgdm9pZCBXb3Jrc3BhY2U6OnNsb3RSZWNvbmZpZ3VyZSgpCiAgICAgICAg IH0KICAgICB9CiAKLXZvaWQgV29ya3NwYWNlOjpzbG90UmVpbml0Q29tcG9zaXRpbmcoKQordm9p ZCBXb3Jrc3BhY2U6OnNsb3RSZWxvYWRDb21wb3NpdGluZ0NvbmZpZygpCiAgICAgewotICAgIC8v IFJlcGFyc2UgY29uZmlnLiBDb25maWcgb3B0aW9ucyB3aWxsIGJlIHJlbG9hZGVkIGJ5IHNldHVw Q29tcG9zaXRpbmcoKQorICAgIC8vIExvYWQgdGhlIGNvbXBvc2l0aW5nIHNldHRpbmdzIGZyb20g dGhlIHRlc3QgY29uZmlnLgogICAgIEtHbG9iYWw6OmNvbmZpZygpLT5yZXBhcnNlQ29uZmlndXJh dGlvbigpOwogICAgIG9wdGlvbnMtPnVwZGF0ZVNldHRpbmdzKCk7CiAKLSAgICAvLyBTdG9wIGFu eSBjdXJyZW50IGNvbXBvc2l0aW5nCisgICAgLy8gVXBkYXRlIGFueSBzZXR0aW5ncyB0aGF0IGNh biBiZSBzZXQgaW4gdGhlIGNvbXBvc2l0aW5nIGtjbS4KKyAgICB1cGRhdGVFbGVjdHJpY0JvcmRl cnMoKTsKKworICAgIC8vIFJlaW5pdGlhbGl6ZSBjb21wb3NpdGluZy4KICAgICBmaW5pc2hDb21w b3NpdGluZygpOwotICAgIC8vIEFuZCBzdGFydCBuZXcgb25lCiAgICAgc2V0dXBDb21wb3NpdGlu ZygpOwogICAgIGlmKCBlZmZlY3RzICkgLy8gc2V0dXBDb21wb3NpdGluZygpIG1heSBmYWlsCiAg ICAgICAgIGVmZmVjdHMtPnJlY29uZmlndXJlKCk7CmRpZmYgLS1naXQgYS93b3Jrc3BhY2UuaCBi L3dvcmtzcGFjZS5oCmluZGV4IDMyYTkyOGQuLmM3MTBiZmQgMTAwNjQ0Ci0tLSBhL3dvcmtzcGFj ZS5oCisrKyBiL3dvcmtzcGFjZS5oCkBAIC00NjksNyArNDY5LDYgQEAgY2xhc3MgV29ya3NwYWNl IDogcHVibGljIFFPYmplY3QsIHB1YmxpYyBLRGVjb3JhdGlvbkRlZmluZXMKIAogICAgICAgICB2 b2lkIHJlY29uZmlndXJlKCk7CiAgICAgICAgIHZvaWQgc2xvdFJlY29uZmlndXJlKCk7Ci0gICAg ICAgIHZvaWQgc2xvdFJlaW5pdENvbXBvc2l0aW5nKCk7CiAKICAgICAgICAgdm9pZCBzbG90S2ls bFdpbmRvdygpOwogCkBAIC01MDAsNiArNDk5LDcgQEAgY2xhc3MgV29ya3NwYWNlIDogcHVibGlj IFFPYmplY3QsIHB1YmxpYyBLRGVjb3JhdGlvbkRlZmluZXMKICAgICAgICAgdm9pZCB3cml0ZVdp bmRvd1J1bGVzKCk7CiAgICAgICAgIHZvaWQgc2xvdEJsb2NrU2hvcnRjdXRzKGludCBkYXRhKTsK ICAgICAgICAgdm9pZCBzbG90UmVsb2FkQ29uZmlnKCk7CisgICAgICAgIHZvaWQgc2xvdFJlbG9h ZENvbXBvc2l0aW5nQ29uZmlnKCk7CiAgICAgICAgIHZvaWQgc2V0UG9wdXBDbGllbnRPcGFjaXR5 KCBRQWN0aW9uKiBhY3Rpb24gKTsKICAgICAgICAgdm9pZCBzZXR1cENvbXBvc2l0aW5nKCk7CiAg ICAgICAgIHZvaWQgcGVyZm9ybUNvbXBvc2l0aW5nKCk7Cg== ------=_Part_56786_24371506.1227129856504 Content-Type: text/x-diff; name=cleanup.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_fnqg46111 Content-Disposition: attachment; filename=cleanup.patch Y29tbWl0IDg3MzJmMWNlMTc1YzljOTIzYjUzNzA4ZTBiMzJhNTlmMWEwZTkzZDEKQXV0aG9yOiBE YXZpZCBOYWRsaW5nZXIgPGRhdmlkLm5hZGxpbmdlckBnbWFpbC5jb20+CkRhdGU6ICAgV2VkIE5v diAxOSAyMTowMDozNSAyMDA4ICswMTAwCgogICAgRml4ZWQgYSBsaXR0bGUgYnVnIChkcm9wZG93 bnMgb24gdGhlIGdlbmVyYWwgdGFiIHdlcmUgbm90IHVwZGF0ZWQgY29ycmVjdGx5KTsgcmVtb3Zl ZCBhIGZldyB1bm5lZWRlZCBmdW5jdGlubyBjYWxscyBhbmQgc3RhbGUgY29ubmVjdHMsIGNsZWFu ZWQgdXAgYSBiaXQuCgpkaWZmIC0tZ2l0IGEva2Nta3dpbi9rd2luY29tcG9zaXRpbmcvbWFpbi5j cHAgYi9rY21rd2luL2t3aW5jb21wb3NpdGluZy9tYWluLmNwcAppbmRleCA2YThhZDQ1Li4yNTE0 NDIwIDEwMDY0NAotLS0gYS9rY21rd2luL2t3aW5jb21wb3NpdGluZy9tYWluLmNwcAorKysgYi9r Y21rd2luL2t3aW5jb21wb3NpdGluZy9tYWluLmNwcApAQCAtODgsOCArODgsNiBAQCBLV2luQ29t cG9zaXRpbmdDb25maWc6OktXaW5Db21wb3NpdGluZ0NvbmZpZyhRV2lkZ2V0ICpwYXJlbnQsIGNv bnN0IFFWYXJpYW50TGlzdAogICAgIGNvbm5lY3QodWkuZWZmZWN0QW5pbWF0aW9ucywgU0lHTkFM KHRvZ2dsZWQoYm9vbCkpLCB0aGlzLCBTTE9UKGNoYW5nZWQoKSkpOwogCiAgICAgY29ubmVjdCh1 aS5lZmZlY3RTZWxlY3RvciwgU0lHTkFMKGNoYW5nZWQoYm9vbCkpLCB0aGlzLCBTTE9UKGNoYW5n ZWQoKSkpOwotICAgIGNvbm5lY3QodWkuZWZmZWN0U2VsZWN0b3IsIFNJR05BTChjb25maWdDb21t aXR0ZWQoY29uc3QgUUJ5dGVBcnJheSYpKSwKLSAgICAgICAgICAgIHRoaXMsIFNMT1QocmVwYXJz ZUNvbmZpZ3VyYXRpb24oY29uc3QgUUJ5dGVBcnJheSYpKSk7CiAKICAgICBjb25uZWN0KHVpLndp bmRvd1N3aXRjaGluZ0NvbWJvLCBTSUdOQUwoY3VycmVudEluZGV4Q2hhbmdlZChpbnQpKSwgdGhp cywgU0xPVChjaGFuZ2VkKCkpKTsKICAgICBjb25uZWN0KHVpLmRlc2t0b3BTd2l0Y2hpbmdDb21i bywgU0lHTkFMKGN1cnJlbnRJbmRleENoYW5nZWQoaW50KSksIHRoaXMsIFNMT1QoY2hhbmdlZCgp KSk7CkBAIC05OCw3ICs5Niw2IEBAIEtXaW5Db21wb3NpdGluZ0NvbmZpZzo6S1dpbkNvbXBvc2l0 aW5nQ29uZmlnKFFXaWRnZXQgKnBhcmVudCwgY29uc3QgUVZhcmlhbnRMaXN0CiAgICAgY29ubmVj dCh1aS5lZGdlc19tb25pdG9yLCBTSUdOQUwoY2hhbmdlZCgpKSwgdGhpcywgU0xPVChjaGFuZ2Vk KCkpKTsKICAgICBjb25uZWN0KHVpLmVkZ2VzX21vbml0b3IsIFNJR05BTChlZGdlU2VsZWN0aW9u Q2hhbmdlZChpbnQsaW50KSksIHRoaXMsIFNMT1QoZWxlY3RyaWNCb3JkZXJTZWxlY3Rpb25DaGFu Z2VkKGludCxpbnQpKSk7CiAKLSAgICBjb25uZWN0KHVpLmNvbXBvc2l0aW5nVHlwZSwgU0lHTkFM KGN1cnJlbnRJbmRleENoYW5nZWQoaW50KSksIHRoaXMsIFNMT1QoY29tcG9zaXRpbmdNb2RlQ2hh bmdlZCgpKSk7CiAgICAgY29ubmVjdCh1aS5jb21wb3NpdGluZ1R5cGUsIFNJR05BTChjdXJyZW50 SW5kZXhDaGFuZ2VkKGludCkpLCB0aGlzLCBTTE9UKGNoYW5nZWQoKSkpOwogICAgIGNvbm5lY3Qo dWkud2luZG93VGh1bWJuYWlscywgU0lHTkFMKGFjdGl2YXRlZChpbnQpKSwgdGhpcywgU0xPVChj aGFuZ2VkKCkpKTsKICAgICBjb25uZWN0KHVpLmRpc2FibGVDaGVja3MsIFNJR05BTCh0b2dnbGVk KGJvb2wpKSwgdGhpcywgU0xPVChjaGFuZ2VkKCkpKTsKQEAgLTIyNSwxNCArMjIyLDE2IEBAIHZv aWQgS1dpbkNvbXBvc2l0aW5nQ29uZmlnOjpjdXJyZW50VGFiQ2hhbmdlZChpbnQgdGFiKQogICAg IC8vIGJsb2NrIHNpZ25hbHMgdG8gZG9uJ3QgZW1pdCB0aGUgY2hhbmdlZCgpLXNpZ25hbCBieSBq dXN0IHN3aXRjaGluZyB0aGUgY3VycmVudCB0YWIKICAgICBibG9ja1NpZ25hbHModHJ1ZSk7CiAg ICAgLy8gd3JpdGUgcG9zc2libGUgY2hhbmdlcyBkb25lIHRvIHN5bmNocm9uaXplIGVmZmVjdCBj aGVja2JveGVzIGFuZCBzZWxlY3RvcgorICAgIC8vIFRPRE86IFRoaXMgc2VnbWVudCBpcyBwcm9u ZSB0byBmYWlsIHdoZW4gdGhlIFVJIGlzIGNoYW5nZWQ7CisgICAgLy8geW91J2xsIG1vc3QgbGlr ZWx5IG5vdCB0aGluayBvZiB0aGUgaGFyZCBjb2RlZCBudW1iZXJzIGhlcmUgd2hlbiBqdXN0IGNo YW5naW5nIHRoZSBvcmRlciBvZiB0aGUgdGFicy4KICAgICBpZiAodGFiID09IDApCiAgICAgewog ICAgICAgICAvLyBHZW5lcmFsIHRhYiB3YXMgYWN0aXZhdGVkCiAgICAgICAgIHNhdmVFZmZlY3Rz VGFiKCk7CiAgICAgICAgIGxvYWRHZW5lcmFsVGFiKCk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7 CisgICAgICAgIH0KKyAgICBlbHNlIGlmICggdGFiID09IDIgKQorICAgICAgICB7CiAgICAgICAg IC8vIEVmZmVjdHMgdGFiIHdhcyBhY3RpdmF0ZWQKICAgICAgICAgc2F2ZUdlbmVyYWxUYWIoKTsK ICAgICAgICAgbG9hZEVmZmVjdHNUYWIoKTsKQEAgLTI2Myw2ICsyNjIsOCBAQCB2b2lkIEtXaW5D b21wb3NpdGluZ0NvbmZpZzo6bG9hZEdlbmVyYWxUYWIoKQogI3VuZGVmIExPQURfRUZGRUNUX0NP TkZJRwogCiAgICAgLy8gd2luZG93IHN3aXRjaGluZworICAgIC8vIFNldCBjdXJyZW50IG9wdGlv biB0byAibm9uZSIgaWYgbm8gcGx1Z2luIGlzIGFjdGl2YXRlZC4KKyAgICB1aS53aW5kb3dTd2l0 Y2hpbmdDb21iby0+c2V0Q3VycmVudEluZGV4KCAwICk7CiAgICAgaWYoIGVmZmVjdEVuYWJsZWQo ICJib3hzd2l0Y2giLCBlZmZlY3Rjb25maWcgKSkKICAgICAgICAgdWkud2luZG93U3dpdGNoaW5n Q29tYm8tPnNldEN1cnJlbnRJbmRleCggMSApOwogICAgIGlmKCBlZmZlY3RFbmFibGVkKCAiY292 ZXJzd2l0Y2giLCBlZmZlY3Rjb25maWcgKSkKQEAgLTI3NCwxNCArMjc1LDE0IEBAIHZvaWQgS1dp bkNvbXBvc2l0aW5nQ29uZmlnOjpsb2FkR2VuZXJhbFRhYigpCiAgICAgICAgIHVpLndpbmRvd1N3 aXRjaGluZ0NvbWJvLT5zZXRDdXJyZW50SW5kZXgoIDIgKTsKIAogICAgIC8vIGRlc2t0b3Agc3dp dGNoaW5nCisgICAgLy8gU2V0IGN1cnJlbnQgb3B0aW9uIHRvICJub25lIiBpZiBubyBwbHVnaW4g aXMgYWN0aXZhdGVkLgorICAgIHVpLmRlc2t0b3BTd2l0Y2hpbmdDb21iby0+c2V0Q3VycmVudElu ZGV4KCAwICk7CiAgICAgaWYoIGVmZmVjdEVuYWJsZWQoICJzbGlkZSIsIGVmZmVjdGNvbmZpZyAp KQogICAgICAgICB1aS5kZXNrdG9wU3dpdGNoaW5nQ29tYm8tPnNldEN1cnJlbnRJbmRleCggMSAp OwogICAgIEtDb25maWdHcm91cCBjdWJlY29uZmlnKG1OZXdDb25maWcsICJFZmZlY3QtQ3ViZSIp OwogICAgIGlmKCBlZmZlY3RFbmFibGVkKCAiY3ViZSIsIGVmZmVjdGNvbmZpZyApICYmIGN1YmVj b25maWcucmVhZEVudHJ5KCJBbmltYXRlRGVza3RvcENoYW5nZSIsIGZhbHNlKSkKICAgICAgICAg dWkuZGVza3RvcFN3aXRjaGluZ0NvbWJvLT5zZXRDdXJyZW50SW5kZXgoIDIgKTsKLQotICAgIGxv YWRFbGVjdHJpY0JvcmRlcnMoKTsKLX0KKyAgICB9CiAKIGJvb2wgS1dpbkNvbXBvc2l0aW5nQ29u ZmlnOjplZmZlY3RFbmFibGVkKCBjb25zdCBRU3RyaW5nJiBlZmZlY3QsIGNvbnN0IEtDb25maWdH cm91cCYgY2ZnICkgY29uc3QKIHsKQEAgLTMzMiwxMSArMzMzLDEyIEBAIHZvaWQgS1dpbkNvbXBv c2l0aW5nQ29uZmlnOjpsb2FkKCkKICAgICBjb3B5UGx1Z2luc1RvVG1wQ29uZmlnKCk7CiAKICAg ICBsb2FkR2VuZXJhbFRhYigpOworICAgIGxvYWRFbGVjdHJpY0JvcmRlcnMoKTsKICAgICBsb2Fk RWZmZWN0c1RhYigpOwogICAgIGxvYWRBZHZhbmNlZFRhYigpOwogCiAgICAgZW1pdCBjaGFuZ2Vk KCBmYWxzZSApOwotfQorICAgIH0KIAogdm9pZCBLV2luQ29tcG9zaXRpbmdDb25maWc6OnNhdmVH ZW5lcmFsVGFiKCkKICAgICB7CkBAIC00MjAsOSArNDIyLDcgQEAgdm9pZCBLV2luQ29tcG9zaXRp bmdDb25maWc6OnNhdmVHZW5lcmFsVGFiKCkKICAgICAgICAgfQogICAgIEtDb25maWdHcm91cCBj dWJlY29uZmlnKG1OZXdDb25maWcsICJFZmZlY3QtQ3ViZSIpOwogICAgIGN1YmVjb25maWcud3Jp dGVFbnRyeSgiQW5pbWF0ZURlc2t0b3BDaGFuZ2UiLCBjdWJlRGVza3RvcFN3aXRjaGluZyk7Ci0K LSAgICBzYXZlRWxlY3RyaWNCb3JkZXJzKCk7Ci19CisgICAgfQogCiB2b2lkIEtXaW5Db21wb3Np dGluZ0NvbmZpZzo6c2F2ZUVmZmVjdHNUYWIoKQogewpkaWZmIC0tZ2l0IGEvd29ya3NwYWNlLmNw cCBiL3dvcmtzcGFjZS5jcHAKaW5kZXggZmNjZjI4NS4uODllNGQyYyAxMDA2NDQKLS0tIGEvd29y a3NwYWNlLmNwcAorKysgYi93b3Jrc3BhY2UuY3BwCkBAIC05NzIsMTkgKzk3Miw2IEBAIHZvaWQg V29ya3NwYWNlOjpyZWNvbmZpZ3VyZSgpCiAgICAgcmVjb25maWd1cmVUaW1lci5zdGFydCggMjAw ICk7CiAgICAgfQogCi0vLyBUaGlzIERCVVMgY2FsbCBpcyB1c2VkIGJ5IHRoZSBjb21wb3NpdGlu ZyBrY20uIFNpbmNlIHRoZSByZWNvbmZpZ3VyZSgpCi0vLyBEQlVTIGNhbGwgZGVsYXlzIHRoZSBh Y3R1YWwgcmVjb25maWd1cmluZywgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGltbWVkaWF0ZWx5Ci0v LyBjYWxsIGNvbXBvc2l0aW5nQWN0aXZlKCkuIFRoZXJlZm9yZSB0aGUga2NtIHdpbGwgaW5zdGVh ZCBjYWxsIHRoaXMgdG8gZW5zdXJlCi0vLyB0aGUgcmVjb25maWd1cmluZyBoYXMgYWxyZWFkeSBo YXBwZW5lZC4KLWJvb2wgV29ya3NwYWNlOjp3YWl0Rm9yQ29tcG9zaXRpbmdTZXR1cCgpCi0gICAg ewotICAgIGlmKCAhcmVjb25maWd1cmVUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICByZXR1cm4g ZmFsc2U7Ci0gICAgcmVjb25maWd1cmVUaW1lci5zdG9wKCk7Ci0gICAgc2xvdFJlY29uZmlndXJl KCk7Ci0gICAgcmV0dXJuIGNvbXBvc2l0aW5nQWN0aXZlKCk7Ci0gICAgfQotCiB2b2lkIFdvcmtz cGFjZTo6c2xvdFNldHRpbmdzQ2hhbmdlZChpbnQgY2F0ZWdvcnkpCiAgICAgewogICAgIGtEZWJ1 ZygxMjEyKSA8PCAiV29ya3NwYWNlOjpzbG90U2V0dGluZ3NDaGFuZ2VkKCkiOwpAQCAtMTA2NSw3 ICsxMDUyLDYgQEAgdm9pZCBXb3Jrc3BhY2U6OnNsb3RSZWNvbmZpZ3VyZSgpCiAgICAgICAgIHNl dHVwQ29tcG9zaXRpbmcoKTsKICAgICAgICAgaWYoIGVmZmVjdHMgKSAvLyBzZXR1cENvbXBvc2l0 aW5nKCkgbWF5IGZhaWwKICAgICAgICAgICAgIGVmZmVjdHMtPnJlY29uZmlndXJlKCk7Ci0gICAg ICAgIGFkZFJlcGFpbnRGdWxsKCk7CiAgICAgfQogICAgIGVsc2UKICAgICAgICAgZmluaXNoQ29t cG9zaXRpbmcoKTsKZGlmZiAtLWdpdCBhL3dvcmtzcGFjZS5oIGIvd29ya3NwYWNlLmgKaW5kZXgg YzcxMGJmZC4uNGJjNzhmZiAxMDA2NDQKLS0tIGEvd29ya3NwYWNlLmgKKysrIGIvd29ya3NwYWNl LmgKQEAgLTI2Miw4ICsyNjIsNyBAQCBjbGFzcyBXb3Jrc3BhY2UgOiBwdWJsaWMgUU9iamVjdCwg cHVibGljIEtEZWNvcmF0aW9uRGVmaW5lcwogICAgICAgICB2b2lkIHByZXZpb3VzRGVza3RvcCgp OwogICAgICAgICB2b2lkIGNpcmN1bGF0ZURlc2t0b3BBcHBsaWNhdGlvbnMoKTsKICAgICAgICAg Ym9vbCBjb21wb3NpdGluZ0FjdGl2ZSgpOwotICAgICAgICBib29sIHdhaXRGb3JDb21wb3NpdGlu Z1NldHVwKCk7Ci0gICAgICAgIAorCiAgICAgICAgIHZvaWQgc2V0Q3VycmVudFNjcmVlbiggaW50 IG5ld19zY3JlZW4gKTsKIAogICAgICAgICBRU3RyaW5nIGRlc2t0b3BOYW1lKCBpbnQgZGVzayAp IGNvbnN0Owo= ------=_Part_56786_24371506.1227129856504 Content-Type: text/x-diff; name=code-polishing.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_fnqg5npk3 Content-Disposition: attachment; filename=code-polishing.patch Y29tbWl0IDUyZDI3Mjk1M2M0ZjNkMGJkYjMzNGI2ZGUwNmMxYWExMzZkNTI3ODkKQXV0aG9yOiBE YXZpZCBOYWRsaW5nZXIgPGRhdmlkLm5hZGxpbmdlckBnbWFpbC5jb20+CkRhdGU6ICAgV2VkIE5v diAxOSAyMTowNTowNSAyMDA4ICswMTAwCgogICAgQWRkZWQgYSBmZXcgY29tbWVudHM7IGNoYW5n ZWQgaW5kZW50cyB0byBjb21wbHkgd2l0aCB0aGUgS1dpbiBjb2Rpbmcgc3RhbmRhcmRzLgoKZGlm ZiAtLWdpdCBhL2tjbWt3aW4va3dpbmNvbXBvc2l0aW5nL21haW4uY3BwIGIva2Nta3dpbi9rd2lu Y29tcG9zaXRpbmcvbWFpbi5jcHAKaW5kZXggMjUxNDQyMC4uZDkyM2FmMyAxMDA2NDQKLS0tIGEv a2Nta3dpbi9rd2luY29tcG9zaXRpbmcvbWFpbi5jcHAKKysrIGIva2Nta3dpbi9rd2luY29tcG9z aXRpbmcvbWFpbi5jcHAKQEAgLTExMywyMyArMTEzLDIyIEBAIEtXaW5Db21wb3NpdGluZ0NvbmZp Zzo6S1dpbkNvbXBvc2l0aW5nQ29uZmlnKFFXaWRnZXQgKnBhcmVudCwgY29uc3QgUVZhcmlhbnRM aXN0CiAKICAgICAvLyBPcGVuIHRoZSB0ZW1wb3JhcnkgY29uZmlnIGZpbGUKICAgICAvLyBUZW1w b3JhcnkgY29uZiBmaWxlIGlzIHVzZWQgdG8gc3luY2hyb25pemUgZWZmZWN0IGNoZWNrYm94ZXMg d2l0aCBlZmZlY3QKLSAgICAvLyAgc2VsZWN0b3IgYnkgbG9hZGluZy9zYXZpbmcgZWZmZWN0cyBm cm9tL3RvIHRlbXAgY29uZmlnIHdoZW4gYWN0aXZlIHRhYgotICAgIC8vICBjaGFuZ2VzLgorICAg IC8vIHNlbGVjdG9yIGJ5IGxvYWRpbmcvc2F2aW5nIGVmZmVjdHMgZnJvbS90byB0ZW1wIGNvbmZp ZyB3aGVuIGFjdGl2ZSB0YWIKKyAgICAvLyBjaGFuZ2VzLgogICAgIG1UbXBDb25maWdGaWxlLm9w ZW4oKTsKICAgICBtVG1wQ29uZmlnID0gS1NoYXJlZENvbmZpZzo6b3BlbkNvbmZpZyhtVG1wQ29u ZmlnRmlsZS5maWxlTmFtZSgpKTsKIAogICAgIGlmKCBDb21wb3NpdGluZ1ByZWZzOjpjb21wb3Np dGluZ1Bvc3NpYmxlKCkgKQotICAgIHsKKyAgICAgICAgewogICAgICAgICAvLyBEcml2ZXItc3Bl Y2lmaWMgY29uZmlnIGRldGVjdGlvbgogICAgICAgICBtRGVmYXVsdFByZWZzLmRldGVjdCgpOwot CiAgICAgICAgIGluaXRFZmZlY3RTZWxlY3RvcigpOwogCi0gICAgICAgIC8vIExvYWQgY29uZmln CisgICAgICAgIC8vIEluaXRpYWxpemUgdGhlIHVzZXIgaW50ZXJmYWNlIHdpdGggdGhlIGNvbmZp ZyBsb2FkZWQgZnJvbSBrd2lucmMuCiAgICAgICAgIGxvYWQoKTsKLSAgICB9CisgICAgICAgIH0K ICAgICBlbHNlCi0gICAgeworICAgICAgICB7CiAgICAgICAgIHVpLnVzZUNvbXBvc2l0aW5nLT5z ZXRFbmFibGVkKGZhbHNlKTsKICAgICAgICAgdWkudXNlQ29tcG9zaXRpbmctPnNldENoZWNrZWQo ZmFsc2UpOwogICAgICAgICBjb21wb3NpdGluZ0VuYWJsZWQoZmFsc2UpOwpAQCAtMTQwLDcgKzEz OSw3IEBAIEtXaW5Db21wb3NpdGluZ0NvbmZpZzo6S1dpbkNvbXBvc2l0aW5nQ29uZmlnKFFXaWRn ZXQgKnBhcmVudCwgY29uc3QgUVZhcmlhbnRMaXN0CiAgICAgICAgIHVpLnN0YXR1c1RpdGxlV2lk Z2V0LT5zZXRUZXh0KHRleHQpOwogICAgICAgICB1aS5zdGF0dXNUaXRsZVdpZGdldC0+c2V0UGl4 bWFwKEtUaXRsZVdpZGdldDo6SW5mb01lc3NhZ2UsIEtUaXRsZVdpZGdldDo6SW1hZ2VMZWZ0KTsK ICAgICAgICAgdWkuc3RhdHVzVGl0bGVXaWRnZXQtPnNob3coKTsKLSAgICB9CisgICAgICAgIH0K IAogICAgIEtBYm91dERhdGEgKmFib3V0ID0gbmV3IEtBYm91dERhdGEoSTE4Tl9OT09QKCJrY21r d2luY29tcG9zaXRpbmciKSwgMCwKICAgICAgICAgICAgIGtpMThuKCJLV2luIERlc2t0b3AgRWZm ZWN0cyBDb25maWd1cmF0aW9uIE1vZHVsZSIpLApAQCAtMTgyLDcgKzE4MSw3IEBAIEtXaW5Db21w b3NpdGluZ0NvbmZpZzo6S1dpbkNvbXBvc2l0aW5nQ29uZmlnKFFXaWRnZXQgKnBhcmVudCwgY29u c3QgUVZhcmlhbnRMaXN0CiAgICAgdWkuZGVza3RvcFN3aXRjaGluZ0NvbWJvLT5hZGRJdGVtKGkx OG4oIk5vIEVmZmVjdCIpKTsKICAgICB1aS5kZXNrdG9wU3dpdGNoaW5nQ29tYm8tPmFkZEl0ZW0o c2xpZGUpOwogICAgIHVpLmRlc2t0b3BTd2l0Y2hpbmdDb21iby0+YWRkSXRlbShjdWJlKTsKLX0K KyAgICB9CiAKIEtXaW5Db21wb3NpdGluZ0NvbmZpZzo6fktXaW5Db21wb3NpdGluZ0NvbmZpZygp CiAgICAgewpAQCAtMTkzLDcgKzE5Miw4IEBAIEtXaW5Db21wb3NpdGluZ0NvbmZpZzo6fktXaW5D b21wb3NpdGluZ0NvbmZpZygpCiAgICAgfQogCiB2b2lkIEtXaW5Db21wb3NpdGluZ0NvbmZpZzo6 Y29tcG9zaXRpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKLXsKKyAgICB7CisgICAgLy8gRW5hYmxl IHRoZSBvdGhlciBjb25maWd1cmF0aW9uIHRhYnMgb25seSB3aGVuIGNvbXBvc2l0aW5nIGlzIGVu YWJsZWQuCiAgICAgdWkuY29tcG9zaXRpbmdPcHRpb25zQ29udGFpbmVyLT5zZXRFbmFibGVkKGVu YWJsZWQpOwogICAgIHVpLnRhYldpZGdldC0+c2V0VGFiRW5hYmxlZCgxLCBlbmFibGVkKTsKICAg ICB1aS50YWJXaWRnZXQtPnNldFRhYkVuYWJsZWQoMiwgZW5hYmxlZCk7CkBAIC0yMDEsNyArMjAx LDcgQEAgdm9pZCBLV2luQ29tcG9zaXRpbmdDb25maWc6OmNvbXBvc2l0aW5nRW5hYmxlZChib29s IGVuYWJsZWQpCiAgICAgfQogCiB2b2lkIEtXaW5Db21wb3NpdGluZ0NvbmZpZzo6aW5pdEVmZmVj dFNlbGVjdG9yKCkKLXsKKyAgICB7CiAgICAgLy8gRmluZCBhbGwgLmRlc2t0b3AgZmlsZXMgb2Yg dGhlIGVmZmVjdHMKICAgICBLU2VydmljZTo6TGlzdCBvZmZlcnMgPSBLU2VydmljZVR5cGVUcmFk ZXI6OnNlbGYoKS0+cXVlcnkoIktXaW4vRWZmZWN0Iik7CiAgICAgUUxpc3Q8S1BsdWdpbkluZm8+ IGVmZmVjdGluZm9zID0gS1BsdWdpbkluZm86OmZyb21TZXJ2aWNlcyhvZmZlcnMpOwpAQCAtMjE1 LDE3ICsyMTUsMTggQEAgdm9pZCBLV2luQ29tcG9zaXRpbmdDb25maWc6OmluaXRFZmZlY3RTZWxl Y3RvcigpCiAgICAgdWkuZWZmZWN0U2VsZWN0b3ItPmFkZFBsdWdpbnMoZWZmZWN0aW5mb3MsIEtQ bHVnaW5TZWxlY3Rvcjo6UmVhZENvbmZpZ0ZpbGUsIGkxOG4oIkRlbW9zIiksICJEZW1vcyIsIG1U bXBDb25maWcpOwogICAgIHVpLmVmZmVjdFNlbGVjdG9yLT5hZGRQbHVnaW5zKGVmZmVjdGluZm9z LCBLUGx1Z2luU2VsZWN0b3I6OlJlYWRDb25maWdGaWxlLCBpMThuKCJUZXN0cyIpLCAiVGVzdHMi LCBtVG1wQ29uZmlnKTsKICAgICB1aS5lZmZlY3RTZWxlY3Rvci0+YWRkUGx1Z2lucyhlZmZlY3Rp bmZvcywgS1BsdWdpblNlbGVjdG9yOjpSZWFkQ29uZmlnRmlsZSwgaTE4bigiVG9vbHMiKSwgIlRv b2xzIiwgbVRtcENvbmZpZyk7Ci19CisgICAgfQogCiB2b2lkIEtXaW5Db21wb3NpdGluZ0NvbmZp Zzo6Y3VycmVudFRhYkNoYW5nZWQoaW50IHRhYikKLXsKKyAgICB7CiAgICAgLy8gYmxvY2sgc2ln bmFscyB0byBkb24ndCBlbWl0IHRoZSBjaGFuZ2VkKCktc2lnbmFsIGJ5IGp1c3Qgc3dpdGNoaW5n IHRoZSBjdXJyZW50IHRhYgogICAgIGJsb2NrU2lnbmFscyh0cnVlKTsKKwogICAgIC8vIHdyaXRl IHBvc3NpYmxlIGNoYW5nZXMgZG9uZSB0byBzeW5jaHJvbml6ZSBlZmZlY3QgY2hlY2tib3hlcyBh bmQgc2VsZWN0b3IKICAgICAvLyBUT0RPOiBUaGlzIHNlZ21lbnQgaXMgcHJvbmUgdG8gZmFpbCB3 aGVuIHRoZSBVSSBpcyBjaGFuZ2VkOwogICAgIC8vIHlvdSdsbCBtb3N0IGxpa2VseSBub3QgdGhp bmsgb2YgdGhlIGhhcmQgY29kZWQgbnVtYmVycyBoZXJlIHdoZW4ganVzdCBjaGFuZ2luZyB0aGUg b3JkZXIgb2YgdGhlIHRhYnMuCiAgICAgaWYgKHRhYiA9PSAwKQotICAgIHsKKyAgICAgICAgewog ICAgICAgICAvLyBHZW5lcmFsIHRhYiB3YXMgYWN0aXZhdGVkCiAgICAgICAgIHNhdmVFZmZlY3Rz VGFiKCk7CiAgICAgICAgIGxvYWRHZW5lcmFsVGFiKCk7CkBAIC0yMzUsOSArMjM2LDEwIEBAIHZv aWQgS1dpbkNvbXBvc2l0aW5nQ29uZmlnOjpjdXJyZW50VGFiQ2hhbmdlZChpbnQgdGFiKQogICAg ICAgICAvLyBFZmZlY3RzIHRhYiB3YXMgYWN0aXZhdGVkCiAgICAgICAgIHNhdmVHZW5lcmFsVGFi KCk7CiAgICAgICAgIGxvYWRFZmZlY3RzVGFiKCk7Ci0gICAgfQorICAgICAgICB9CisKICAgICBi bG9ja1NpZ25hbHMoZmFsc2UpOwotfQorICAgIH0KIAogdm9pZCBLV2luQ29tcG9zaXRpbmdDb25m aWc6OmxvYWRHZW5lcmFsVGFiKCkKICAgICB7CkBAIC0yNTEsMTAgKzI1MywxMSBAQCB2b2lkIEtX aW5Db21wb3NpdGluZ0NvbmZpZzo6bG9hZEdlbmVyYWxUYWIoKQogICAgIGludCB3aW5NYW5hZ2Vt ZW50RW5hYmxlZCA9IExPQURfRUZGRUNUX0NPTkZJRygicHJlc2VudHdpbmRvd3MiKQogICAgICAg ICArIExPQURfRUZGRUNUX0NPTkZJRygiZGVza3RvcGdyaWQiKQogICAgICAgICArIExPQURfRUZG RUNUX0NPTkZJRygiZGlhbG9ncGFyZW50Iik7Ci0gICAgaWYgKHdpbk1hbmFnZW1lbnRFbmFibGVk ID4gMCAmJiB3aW5NYW5hZ2VtZW50RW5hYmxlZCA8IDMpIHsKKyAgICBpZiAod2luTWFuYWdlbWVu dEVuYWJsZWQgPiAwICYmIHdpbk1hbmFnZW1lbnRFbmFibGVkIDwgMykKKyAgICAgICAgewogICAg ICAgICB1aS5lZmZlY3RXaW5NYW5hZ2VtZW50LT5zZXRUcmlzdGF0ZSh0cnVlKTsKICAgICAgICAg dWkuZWZmZWN0V2luTWFuYWdlbWVudC0+c2V0Q2hlY2tTdGF0ZShRdDo6UGFydGlhbGx5Q2hlY2tl ZCk7Ci0gICAgfQorICAgICAgICB9CiAgICAgZWxzZQogICAgICAgICB1aS5lZmZlY3RXaW5NYW5h Z2VtZW50LT5zZXRDaGVja2VkKHdpbk1hbmFnZW1lbnRFbmFibGVkKTsKICAgICB1aS5lZmZlY3RT aGFkb3dzLT5zZXRDaGVja2VkKExPQURfRUZGRUNUX0NPTkZJRygic2hhZG93IikpOwpAQCAtMjg1 LDE5ICsyODgsMTkgQEAgdm9pZCBLV2luQ29tcG9zaXRpbmdDb25maWc6OmxvYWRHZW5lcmFsVGFi KCkKICAgICB9CiAKIGJvb2wgS1dpbkNvbXBvc2l0aW5nQ29uZmlnOjplZmZlY3RFbmFibGVkKCBj b25zdCBRU3RyaW5nJiBlZmZlY3QsIGNvbnN0IEtDb25maWdHcm91cCYgY2ZnICkgY29uc3QKLXsK KyAgICB7CiAgICAgS1NlcnZpY2U6Okxpc3Qgc2VydmljZXMgPSBLU2VydmljZVR5cGVUcmFkZXI6 OnNlbGYoKS0+cXVlcnkoCiAgICAgICAgICJLV2luL0VmZmVjdCIsICJbWC1LREUtUGx1Z2luSW5m by1OYW1lXSA9PSAna3dpbjRfZWZmZWN0XyIgKyBlZmZlY3QgKyAiJyIpOwogICAgIGlmKCBzZXJ2 aWNlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBRVmFyaWFudCB2ID0g c2VydmljZXMuZmlyc3QoKS0+cHJvcGVydHkoIlgtS0RFLVBsdWdpbkluZm8tRW5hYmxlZEJ5RGVm YXVsdCIpOwogICAgIHJldHVybiBjZmcucmVhZEVudHJ5KCJrd2luNF9lZmZlY3RfIiArIGVmZmVj dCArICJFbmFibGVkIiwgdi50b0Jvb2woKSk7Ci19CisgICAgfQogCiB2b2lkIEtXaW5Db21wb3Np dGluZ0NvbmZpZzo6bG9hZEVmZmVjdHNUYWIoKQoteworICAgIHsKICAgICB1aS5lZmZlY3RTZWxl Y3Rvci0+bG9hZCgpOwotfQorICAgIH0KIAogdm9pZCBLV2luQ29tcG9zaXRpbmdDb25maWc6Omxv YWRBZHZhbmNlZFRhYigpCiAgICAgewpAQCAtMzIxLDcgKzMyNCw3IEBAIHZvaWQgS1dpbkNvbXBv c2l0aW5nQ29uZmlnOjpsb2FkQWR2YW5jZWRUYWIoKQogICAgIHVpLmdsVlN5bmMtPnNldENoZWNr ZWQoY29uZmlnLnJlYWRFbnRyeSgiR0xWU3luYyIsIG1EZWZhdWx0UHJlZnMuZW5hYmxlVlN5bmMo KSkpOwogCiAgICAgdWkueHJlbmRlclNtb290aFNjYWxlLT5zZXRDaGVja2VkKGNvbmZpZy5yZWFk RW50cnkoIlhSZW5kZXJTbW9vdGhTY2FsZSIsIGZhbHNlKSk7Ci19CisgICAgfQogCiB2b2lkIEtX aW5Db21wb3NpdGluZ0NvbmZpZzo6bG9hZCgpCiAgICAgewpAQCAtMzUwLDExICszNTMsMTIgQEAg dm9pZCBLV2luQ29tcG9zaXRpbmdDb25maWc6OnNhdmVHZW5lcmFsVGFiKCkKICAgICAvLyBTYXZl IGVmZmVjdHMKICAgICBLQ29uZmlnR3JvdXAgZWZmZWN0Y29uZmlnKG1UbXBDb25maWcsICJQbHVn aW5zIik7CiAjZGVmaW5lIFdSSVRFX0VGRkVDVF9DT05GSUcoZWZmZWN0bmFtZSwgd2lkZ2V0KSAg ZWZmZWN0Y29uZmlnLndyaXRlRW50cnkoImt3aW40X2VmZmVjdF8iIGVmZmVjdG5hbWUgIkVuYWJs ZWQiLCB3aWRnZXQtPmlzQ2hlY2tlZCgpKQotICAgIGlmICh1aS5lZmZlY3RXaW5NYW5hZ2VtZW50 LT5jaGVja1N0YXRlKCkgIT0gUXQ6OlBhcnRpYWxseUNoZWNrZWQpIHsKKyAgICBpZiAodWkuZWZm ZWN0V2luTWFuYWdlbWVudC0+Y2hlY2tTdGF0ZSgpICE9IFF0OjpQYXJ0aWFsbHlDaGVja2VkKQor ICAgICAgICB7CiAgICAgICAgIFdSSVRFX0VGRkVDVF9DT05GSUcoInByZXNlbnR3aW5kb3dzIiwg dWkuZWZmZWN0V2luTWFuYWdlbWVudCk7CiAgICAgICAgIFdSSVRFX0VGRkVDVF9DT05GSUcoImRl c2t0b3BncmlkIiwgdWkuZWZmZWN0V2luTWFuYWdlbWVudCk7CiAgICAgICAgIFdSSVRFX0VGRkVD VF9DT05GSUcoImRpYWxvZ3BhcmVudCIsIHVpLmVmZmVjdFdpbk1hbmFnZW1lbnQpOwotICAgIH0K KyAgICAgICAgfQogICAgIFdSSVRFX0VGRkVDVF9DT05GSUcoInNoYWRvdyIsIHVpLmVmZmVjdFNo YWRvd3MpOwogICAgIC8vIFRPRE86IG1heWJlIGFsc28gZG8gc29tZSBlZmZlY3Qtc3BlY2lmaWMg Y29uZmlndXJhdGlvbiBoZXJlLCBlLmcuCiAgICAgLy8gIGVuYWJsZS9kaXNhYmxlIGRlc2t0b3Bn cmlkJ3MgYW5pbWF0aW9uIGFjY29yZGluZyB0byB0aGlzIHNldHRpbmcKQEAgLTQyNSw5ICs0Mjks OSBAQCB2b2lkIEtXaW5Db21wb3NpdGluZ0NvbmZpZzo6c2F2ZUdlbmVyYWxUYWIoKQogICAgIH0K IAogdm9pZCBLV2luQ29tcG9zaXRpbmdDb25maWc6OnNhdmVFZmZlY3RzVGFiKCkKLXsKKyAgICB7 CiAgICAgdWkuZWZmZWN0U2VsZWN0b3ItPnNhdmUoKTsKLX0KKyAgICB9CiAKIHZvaWQgS1dpbkNv bXBvc2l0aW5nQ29uZmlnOjpzYXZlQWR2YW5jZWRUYWIoKQogICAgIHsKQEAgLTQ1MywxMiArNDU3 LDE0IEBAIHZvaWQgS1dpbkNvbXBvc2l0aW5nQ29uZmlnOjpzYXZlKCkKICAgICAvLyBiYWg7IHRh YiBjb250ZW50IGJlaW5nIGRlcGVuZGVudCBvbiB0aGUgb3RoZXIgaXMgcmVhbGx5IGJhZDsgYW5k CiAgICAgLy8gZGVwcmVjYXRlZCBpbiB0aGUgSElHIGZvciBhIHJlYXNvbi4gIEl0cyBjb25mdXNp bmchCiAgICAgLy8gTWFrZSBzdXJlIHdlIG9ubHkgY2FsbCBzYXZlIG9uIGVhY2ggdGFiIG9uY2U7 IGFzIHRoZXkgYXJlIHN0YXRlZnVsIGR1ZSB0byB0aGUgcmV2ZXJ0IGNvbmNlcHQKLSAgICBpZiAo dWkudGFiV2lkZ2V0LT5jdXJyZW50SW5kZXgoKSA9PSAwKSB7IC8vIGdlbmVyYWwgd2FzIGFjdGl2 ZQorICAgIGlmICggdWkudGFiV2lkZ2V0LT5jdXJyZW50SW5kZXgoKSA9PSAwICkgLy8gIkdlbmVy YWwiIHRhYiB3YXMgYWN0aXZlCisgICAgICAgIHsKICAgICAgICAgc2F2ZUdlbmVyYWxUYWIoKTsK ICAgICAgICAgbG9hZEVmZmVjdHNUYWIoKTsKICAgICAgICAgc2F2ZUVmZmVjdHNUYWIoKTsKLSAg ICB9Ci0gICAgZWxzZSB7IC8vIGVmZmVjdHMgdGFiIHdhcyBhY3RpdmUKKyAgICAgICAgfQorICAg IGVsc2UKKyAgICAgICAgewogICAgICAgICBzYXZlRWZmZWN0c1RhYigpOwogICAgICAgICBsb2Fk R2VuZXJhbFRhYigpOwogICAgICAgICBzYXZlR2VuZXJhbFRhYigpOwpAQCAtNDc0LDcgKzQ4MCw3 IEBAIHZvaWQgS1dpbkNvbXBvc2l0aW5nQ29uZmlnOjpzYXZlKCkKICAgICB9CiAKIHZvaWQgS1dp bkNvbXBvc2l0aW5nQ29uZmlnOjpkZWZhdWx0cygpCi17CisgICAgewogICAgIHVpLnRhYldpZGdl dC0+c2V0Q3VycmVudEluZGV4KDApOwogCiAgICAgdWkudXNlQ29tcG9zaXRpbmctPnNldENoZWNr ZWQobURlZmF1bHRQcmVmcy5lbmFibGVDb21wb3NpdGluZygpKTsKQEAgLTUwNCwxNiArNTEwLDE2 IEBAIHZvaWQgS1dpbkNvbXBvc2l0aW5nQ29uZmlnOjpkZWZhdWx0cygpCiAgICAgICAgIH0KICAg ICAvLyBzZXQgdG9wIGxlZnQgdG8gcHJlc2VudCB3aW5kb3dzCiAgICAgdWkuZWRnZXNfbW9uaXRv ci0+c2VsZWN0RWRnZUl0ZW0oIChpbnQpTW9uaXRvcjo6VG9wTGVmdCwgKGludClQcmVzZW50V2lu ZG93c0FsbCApOwotfQorICAgIH0KIAogUVN0cmluZyBLV2luQ29tcG9zaXRpbmdDb25maWc6OnF1 aWNrSGVscCgpIGNvbnN0Ci17CisgICAgewogICAgIHJldHVybiBpMThuKCI8aDE+RGVza3RvcCBF ZmZlY3RzPC9oMT4iKTsKLX0KKyAgICB9CiAKIAogdm9pZCBLV2luQ29tcG9zaXRpbmdDb25maWc6 OnNldHVwRWxlY3RyaWNCb3JkZXJzKCkKLXsKKyAgICB7CiAgICAgYWRkSXRlbVRvRWRnZXNNb25p dG9yKCBpMThuKCJObyBFZmZlY3QiKSk7CiAKICAgICAvLyBzZWFyY2ggdGhlIGVmZmVjdCBuYW1l cwpAQCAtNTQ1LDE4ICs1NTEsMTggQEAgdm9pZCBLV2luQ29tcG9zaXRpbmdDb25maWc6OnNldHVw RWxlY3RyaWNCb3JkZXJzKCkKICAgICAgICAgewogICAgICAgICBhZGRJdGVtVG9FZGdlc01vbml0 b3IoIHNlcnZpY2VzLmZpcnN0KCktPm5hbWUoKSk7CiAgICAgICAgIH0KLX0KKyAgICB9CiAKIHZv aWQgS1dpbkNvbXBvc2l0aW5nQ29uZmlnOjphZGRJdGVtVG9FZGdlc01vbml0b3IoY29uc3QgUVN0 cmluZyYgaXRlbSkKLXsKKyAgICB7CiAgICAgZm9yKCBpbnQgaT0wOyBpPDg7IGkrKyApCiAgICAg ICAgIHsKICAgICAgICAgdWkuZWRnZXNfbW9uaXRvci0+YWRkRWRnZUl0ZW0oIGksIGl0ZW0gKTsK ICAgICAgICAgfQotfQorICAgIH0KIAogdm9pZCBLV2luQ29tcG9zaXRpbmdDb25maWc6OmVsZWN0 cmljQm9yZGVyU2VsZWN0aW9uQ2hhbmdlZChpbnQgZWRnZSwgaW50IGluZGV4KQoteworICAgIHsK ICAgICBpZiggaW5kZXggPT0gKGludClOb0VmZmVjdCApCiAgICAgICAgIHJldHVybjsKICAgICBm b3IoIGludCBpPTA7IGk8ODsgaSsrKQpAQCAtNTY2LDExICs1NzIsMTEgQEAgdm9pZCBLV2luQ29t cG9zaXRpbmdDb25maWc6OmVsZWN0cmljQm9yZGVyU2VsZWN0aW9uQ2hhbmdlZChpbnQgZWRnZSwg aW50IGluZGV4KQogICAgICAgICBpZiggdWkuZWRnZXNfbW9uaXRvci0+c2VsZWN0ZWRFZGdlSXRl bSggaSApID09IGluZGV4ICkKICAgICAgICAgICAgIHVpLmVkZ2VzX21vbml0b3ItPnNlbGVjdEVk Z2VJdGVtKCBpLCAoaW50KU5vRWZmZWN0ICk7CiAgICAgICAgIH0KLX0KKyAgICB9CiAKIAogdm9p ZCBLV2luQ29tcG9zaXRpbmdDb25maWc6OmxvYWRFbGVjdHJpY0JvcmRlcnMoKQoteworICAgIHsK ICAgICAvLyBQcmVzZW50IFdpbmRvd3MKICAgICBLQ29uZmlnR3JvdXAgcHJlc2VudHdpbmRvd3Nj b25maWcobU5ld0NvbmZpZywgIkVmZmVjdC1QcmVzZW50V2luZG93cyIpOwogICAgIGNoYW5nZUVs ZWN0cmljQm9yZGVyKCAoRWxlY3RyaWNCb3JkZXIpcHJlc2VudHdpbmRvd3Njb25maWcucmVhZEVu dHJ5KCAiQm9yZGVyQWN0aXZhdGVBbGwiLApAQCAtNTkzLDEwICs1OTksMTAgQEAgdm9pZCBLV2lu Q29tcG9zaXRpbmdDb25maWc6OmxvYWRFbGVjdHJpY0JvcmRlcnMoKQogICAgIEtDb25maWdHcm91 cCBzcGhlcmVjb25maWcobU5ld0NvbmZpZywgIkVmZmVjdC1TcGhlcmUiKTsKICAgICBjaGFuZ2VF bGVjdHJpY0JvcmRlciggKEVsZWN0cmljQm9yZGVyKXNwaGVyZWNvbmZpZy5yZWFkRW50cnkoICJC b3JkZXJBY3RpdmF0ZSIsCiAgICAgICAgIGludCggRWxlY3RyaWNOb25lICkpLCAoaW50KVNwaGVy ZSApOwotfQorICAgIH0KIAogdm9pZCBLV2luQ29tcG9zaXRpbmdDb25maWc6OmNoYW5nZUVsZWN0 cmljQm9yZGVyKCBFbGVjdHJpY0JvcmRlciBib3JkZXIsIGludCBpbmRleCApCi17CisgICAgewog ICAgIHN3aXRjaCAoYm9yZGVyKQogICAgICAgICB7CiAgICAgICAgIGNhc2UgRWxlY3RyaWNUb3A6 CkBAIC02MjcsMTAgKzYzMywxMCBAQCB2b2lkIEtXaW5Db21wb3NpdGluZ0NvbmZpZzo6Y2hhbmdl RWxlY3RyaWNCb3JkZXIoIEVsZWN0cmljQm9yZGVyIGJvcmRlciwgaW50IGluZAogICAgICAgICAg ICAgLy8gbm90aGluZwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLX0KKyAgICB9CiAK IEVsZWN0cmljQm9yZGVyIEtXaW5Db21wb3NpdGluZ0NvbmZpZzo6Y2hlY2tFZmZlY3RIYXNFbGVj dHJpY0JvcmRlciggaW50IGluZGV4ICkKLXsKKyAgICB7CiAgICAgaWYoIHVpLmVkZ2VzX21vbml0 b3ItPnNlbGVjdGVkRWRnZUl0ZW0oIChpbnQpTW9uaXRvcjo6VG9wICkgPT0gaW5kZXggKQogICAg ICAgICB7CiAgICAgICAgIHJldHVybiBFbGVjdHJpY1RvcDsKQEAgLTY2NCw3ICs2NzAsNyBAQCBF bGVjdHJpY0JvcmRlciBLV2luQ29tcG9zaXRpbmdDb25maWc6OmNoZWNrRWZmZWN0SGFzRWxlY3Ry aWNCb3JkZXIoIGludCBpbmRleCApCiAgICAgICAgIHJldHVybiBFbGVjdHJpY1RvcExlZnQ7CiAg ICAgICAgIH0KICAgICByZXR1cm4gRWxlY3RyaWNOb25lOwotfQorICAgIH0KIAogdm9pZCBLV2lu Q29tcG9zaXRpbmdDb25maWc6OnNhdmVFbGVjdHJpY0JvcmRlcnMoKQogICAgIHsKQEAgLTgxOCw2 ICs4MjQsNSBAQCB2b2lkIEtXaW5Db21wb3NpdGluZ0NvbmZpZzo6Y29weVBsdWdpbnNUb05ld0Nv bmZpZygpCiAgICAgfQogCiB9IC8vIG5hbWVzcGFjZQotICAgIAorCiAjaW5jbHVkZSAibWFpbi5t b2MiCi0gICAgICAgIApkaWZmIC0tZ2l0IGEvb3B0aW9ucy5jcHAgYi9vcHRpb25zLmNwcAppbmRl eCA5NjZjNGI5Li40NWY1NDY2IDEwMDY0NAotLS0gYS9vcHRpb25zLmNwcAorKysgYi9vcHRpb25z LmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgT3B0aW9uczo6bG9hZFdpbmRvd1NldHRpbmdz KCBLU2hhcmVkQ29uZmlnUHRyIGNvbmZpZ0ZpbGUgKQogICAgIGFsdFRhYlN0eWxlID0gS0RFOyAv LyB3aGF0IGEgZGVmYXVsdCA6LSkKICAgICBpZiAoIHZhbCA9PSAiQ0RFIiApCiAgICAgICAgIGFs dFRhYlN0eWxlID0gQ0RFOwotICAgICAgICAKKwogICAgIHNlcGFyYXRlU2NyZWVuRm9jdXMgPSBj b25maWcucmVhZEVudHJ5KCAiU2VwYXJhdGVTY3JlZW5Gb2N1cyIsIGZhbHNlICk7CiAgICAgYWN0 aXZlTW91c2VTY3JlZW4gPSBjb25maWcucmVhZEVudHJ5KCAiQWN0aXZlTW91c2VTY3JlZW4iLCBm b2N1c1BvbGljeSAhPSBDbGlja1RvRm9jdXMgKTsKIApAQCAtMjc0LDEwICsyNzQsMTAgQEAgdm9p ZCBPcHRpb25zOjpsb2FkQ29tcG9zaXRpbmdTZXR0aW5ncyggS1NoYXJlZENvbmZpZ1B0ciBjb25m aWdGaWxlICkKICAgICAgICAgaGlkZGVuUHJldmlld3MgPSBIaWRkZW5QcmV2aWV3c1Nob3duOwog ICAgIGVsc2UgaWYoIGhwcyA9PSA2ICkKICAgICAgICAgaGlkZGVuUHJldmlld3MgPSBIaWRkZW5Q cmV2aWV3c0Fsd2F5czsKLSAgICAKKwogICAgIHVucmVkaXJlY3RGdWxsc2NyZWVuID0gY29uZmln LnJlYWRFbnRyeSggIlVucmVkaXJlY3RGdWxsc2NyZWVuIiwgdHJ1ZSApOwogICAgIGFuaW1hdGlv blNwZWVkID0gcUJvdW5kKCAwLCBjb25maWcucmVhZEVudHJ5KCAiQW5pbWF0aW9uU3BlZWQiLCAz ICksIDYgKTsKLSAgICAKKwogICAgIGlmKCAhZGlzYWJsZUNvbXBvc2l0aW5nQ2hlY2tzICYmICFw cmVmcy52YWxpZGF0ZVNldHVwKCBjb21wb3NpdGluZ01vZGUgKSkKICAgICAgICAgdXNlQ29tcG9z aXRpbmcgPSBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9vcHRpb25zLmggYi9vcHRpb25zLmgK aW5kZXggZGIwODVmNy4uNDViOWM2ZSAxMDA2NDQKLS0tIGEvb3B0aW9ucy5oCisrKyBiL29wdGlv bnMuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgS1dpbgogY2xhc3MgQ2xpZW50OwogY2xh c3MgQ29tcG9zaXRpbmdQcmVmczsKIAotY2xhc3MgT3B0aW9ucyA6IHB1YmxpYyBLRGVjb3JhdGlv bk9wdGlvbnMgCitjbGFzcyBPcHRpb25zIDogcHVibGljIEtEZWNvcmF0aW9uT3B0aW9ucwogICAg IHsKICAgICBwdWJsaWM6CiAKQEAgLTEzNiw3ICsxMzYsNyBAQCBjbGFzcyBPcHRpb25zIDogcHVi bGljIEtEZWNvcmF0aW9uT3B0aW9ucwogICAgICAgICAgKi8KICAgICAgICAgZW51bSBBbHRUYWJT dHlsZSB7IEtERSwgQ0RFIH07CiAgICAgICAgIEFsdFRhYlN0eWxlIGFsdFRhYlN0eWxlOwotICAg ICAgICAKKwogICAgICAgICAvLyB3aGV0aGVyIHRvIHNlZSBYaW5lcmFtYSBzY3JlZW5zIHNlcGFy YXRlbHkgZm9yIGZvY3VzIChpbiBBbHQrVGFiLCB3aGVuIGFjdGl2YXRpbmcgbmV4dCBjbGllbnQp CiAgICAgICAgIGJvb2wgc2VwYXJhdGVTY3JlZW5Gb2N1czsKICAgICAgICAgLy8gd2hldGhlciBh Y3RpdmUgWGluZXJhbWEgc2NyZWVuIGlzIHRoZSBvbmUgd2l0aCBtb3VzZSAob3Igd2l0aCB0aGUg YWN0aXZlIHdpbmRvdykKQEAgLTE1MCw3ICsxNTAsNyBAQCBjbGFzcyBPcHRpb25zIDogcHVibGlj IEtEZWNvcmF0aW9uT3B0aW9ucwogICAgICAgICBib29sIHhpbmVyYW1hTW92ZW1lbnRFbmFibGVk OwogICAgICAgICBib29sIHhpbmVyYW1hTWF4aW1pemVFbmFibGVkOwogICAgICAgICBib29sIHhp bmVyYW1hRnVsbHNjcmVlbkVuYWJsZWQ7Ci0gICAgICAgIAorCiAgICAgICAgIC8vIG51bWJlciwg b3IgLTEgPSBhY3RpdmUgc2NyZWVuIChXb3Jrc3BhY2U6OmFjdGl2ZVNjcmVlbigpKQogICAgICAg ICBpbnQgeGluZXJhbWFQbGFjZW1lbnRTY3JlZW47CiAKQEAgLTE2MSwxMyArMTYxLDEzIEBAIGNs YXNzIE9wdGlvbnMgOiBwdWJsaWMgS0RlY29yYXRpb25PcHRpb25zCiAKICAgICAgICAgTW92ZVJl c2l6ZU1vZGUgcmVzaXplTW9kZTsKICAgICAgICAgTW92ZVJlc2l6ZU1vZGUgbW92ZU1vZGU7Ci0g ICAgICAgIAorCiAgICAgICAgIHN0YXRpYyBNb3ZlUmVzaXplTW9kZSBzdHJpbmdUb01vdmVSZXNp emVNb2RlKCBjb25zdCBRU3RyaW5nJiBzICk7CiAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBt b3ZlUmVzaXplTW9kZVRvU3RyaW5nKCBNb3ZlUmVzaXplTW9kZSBtb2RlICk7CiAKICAgICAgICAg UGxhY2VtZW50OjpQb2xpY3kgcGxhY2VtZW50OwogCi0gICAgICAgIGJvb2wgZm9jdXNQb2xpY3lJ c1JlYXNvbmFibGUoKSAKKyAgICAgICAgYm9vbCBmb2N1c1BvbGljeUlzUmVhc29uYWJsZSgpCiAg ICAgICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gZm9jdXNQb2xpY3kgPT0gQ2xpY2tUb0Zv Y3VzIHx8IGZvY3VzUG9saWN5ID09IEZvY3VzRm9sbG93c01vdXNlOwogICAgICAgICAgICAgfQpA QCAtMjA3LDEyICsyMDcsMTIgQEAgY2xhc3MgT3B0aW9ucyA6IHB1YmxpYyBLRGVjb3JhdGlvbk9w dGlvbnMKICAgICAgICAgICogTGlzdCBvZiB3aW5kb3cgY2xhc3NlcyB0byBpZ25vcmUgUFBvc2l0 aW9uIHNpemUgaGludAogICAgICAgICAgKi8KICAgICAgICAgUVN0cmluZ0xpc3QgaWdub3JlUG9z aXRpb25DbGFzc2VzOwotICAgICAgICAKKwogICAgICAgICBib29sIGNoZWNrSWdub3JlRm9jdXNT dGVhbGluZyggY29uc3QgQ2xpZW50KiBjICk7CiAKICAgICAgICAgV2luZG93T3BlcmF0aW9uIG9w ZXJhdGlvblRpdGxlYmFyRGJsQ2xpY2soKSB7IHJldHVybiBPcFRpdGxlYmFyRGJsQ2xpY2s7IH0K IAotICAgICAgICBlbnVtIE1vdXNlQ29tbWFuZCAKKyAgICAgICAgZW51bSBNb3VzZUNvbW1hbmQK ICAgICAgICAgICAgIHsKICAgICAgICAgICAgIE1vdXNlUmFpc2UsIE1vdXNlTG93ZXIsIE1vdXNl T3BlcmF0aW9uc01lbnUsIE1vdXNlVG9nZ2xlUmFpc2VBbmRMb3dlciwKICAgICAgICAgICAgIE1v dXNlQWN0aXZhdGVBbmRSYWlzZSwgTW91c2VBY3RpdmF0ZUFuZExvd2VyLCBNb3VzZUFjdGl2YXRl LApAQCAtMjI3LDcgKzIyNyw3IEBAIGNsYXNzIE9wdGlvbnMgOiBwdWJsaWMgS0RlY29yYXRpb25P cHRpb25zCiAgICAgICAgICAgICBNb3VzZU9wYWNpdHlNb3JlLCBNb3VzZU9wYWNpdHlMZXNzLAog ICAgICAgICAgICAgTW91c2VOb3RoaW5nCiAgICAgICAgICAgICB9OwotICAgICAgICAgICAgCisK ICAgICAgICAgZW51bSBNb3VzZVdoZWVsQ29tbWFuZAogICAgICAgICAgICAgewogICAgICAgICAg ICAgTW91c2VXaGVlbFJhaXNlTG93ZXIsIE1vdXNlV2hlZWxTaGFkZVVuc2hhZGUsIE1vdXNlV2hl ZWxNYXhpbWl6ZVJlc3RvcmUsCkBAIC0yODEsMTMgKzI4MSwxMyBAQCBjbGFzcyBPcHRpb25zIDog cHVibGljIEtEZWNvcmF0aW9uT3B0aW9ucwogICAgICAgICAqIEByZXR1cm5zIHRoZSBhY3RpdmF0 aW9uIGRlbGF5IGZvciBlbGVjdHJpYyBib3JkZXJzIGluIG1pbGxpc2Vjb25kcy4KICAgICAgICAg Ki8KICAgICAgICAgaW50IGVsZWN0cmljQm9yZGVyRGVsYXkoKTsKLSAgICAgICAgCisKICAgICAg ICAgYm9vbCB0b3BNZW51RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIHRvcG1lbnVzOyB9CiAgICAg ICAgIGJvb2wgZGVza3RvcFRvcE1lbnUoKSBjb25zdCB7IHJldHVybiBkZXNrdG9wX3RvcG1lbnU7 IH0KLSAgICAgICAgCisKICAgICAgICAgLy8gdGltZW91dCBiZWZvcmUgbm9uLXJlc3BvbmRpbmcg YXBwbGljYXRpb24gd2lsbCBiZSBraWxsZWQgYWZ0ZXIgYXR0ZW1wdCB0byBjbG9zZQogICAgICAg ICBpbnQga2lsbFBpbmdUaW1lb3V0OwotICAgICAgICAKKwogICAgICAgICAvLyBXaGV0aGVyIHRv IGhpZGUgdXRpbGl0eSB3aW5kb3dzIGZvciBpbmFjdGl2ZSBhcHBsaWNhdGlvbnMuCiAgICAgICAg IGJvb2wgaGlkZVV0aWxpdHlXaW5kb3dzRm9ySW5hY3RpdmU7CiAKQEAgLTI5Nyw3ICsyOTcsNyBA QCBjbGFzcyBPcHRpb25zIDogcHVibGljIEtEZWNvcmF0aW9uT3B0aW9ucwogICAgICAgICBIaWRk ZW5QcmV2aWV3cyBoaWRkZW5QcmV2aWV3czsKICAgICAgICAgYm9vbCB1bnJlZGlyZWN0RnVsbHNj cmVlbjsKICAgICAgICAgYm9vbCBkaXNhYmxlQ29tcG9zaXRpbmdDaGVja3M7Ci0gICAgICAgIAor CiAgICAgICAgIHVpbnQgcmVmcmVzaFJhdGU7CiAgICAgICAgIC8vIFRoaXMgaXMgZm9yIE9wZW5H TCBtb2RlCiAgICAgICAgIGludCBzbW9vdGhTY2FsZTsgLy8gMCA9IG5vLCAxID0geWVzIHdoZW4g dHJhbnNmb3JtZWQsCkBAIC0zMDUsNyArMzA1LDcgQEAgY2xhc3MgT3B0aW9ucyA6IHB1YmxpYyBL RGVjb3JhdGlvbk9wdGlvbnMKICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtMSA9IGF1dG8K ICAgICAgICAgLy8gVGhpcyBpcyBmb3IgWFJlbmRlciBtb2RlCiAgICAgICAgIGJvb2wgeHJlbmRl clNtb290aFNjYWxlOwotICAgICAgICAKKwogICAgICAgICBlbnVtIEdMTW9kZSB7IEdMVEZQLCBH TFNITSwgR0xGYWxsYmFjayB9OwogICAgICAgICBHTE1vZGUgZ2xNb2RlOwogICAgICAgICBib29s IGdsRGlyZWN0OwpAQCAtMzIyLDcgKzMyMiw3IEBAIGNsYXNzIE9wdGlvbnMgOiBwdWJsaWMgS0Rl Y29yYXRpb25PcHRpb25zCiAKICAgICAgICAgV2luZG93T3BlcmF0aW9uIE9wVGl0bGViYXJEYmxD bGljazsKIAotICAgIC8vIG1vdXNlIGJpbmRpbmdzCisgICAgICAgIC8vIG1vdXNlIGJpbmRpbmdz CiAgICAgICAgIE1vdXNlQ29tbWFuZCBDbWRBY3RpdmVUaXRsZWJhcjE7CiAgICAgICAgIE1vdXNl Q29tbWFuZCBDbWRBY3RpdmVUaXRsZWJhcjI7CiAgICAgICAgIE1vdXNlQ29tbWFuZCBDbWRBY3Rp dmVUaXRsZWJhcjM7CmRpZmYgLS1naXQgYS93b3Jrc3BhY2UuY3BwIGIvd29ya3NwYWNlLmNwcApp bmRleCA4OWU0ZDJjLi5kNjAzN2VlIDEwMDY0NAotLS0gYS93b3Jrc3BhY2UuY3BwCisrKyBiL3dv cmtzcGFjZS5jcHAKQEAgLTk5NCw2ICs5OTQsNyBAQCB2b2lkIFdvcmtzcGFjZTo6c2xvdFJlY29u ZmlndXJlKCkKIAogICAgIEtHbG9iYWw6OmNvbmZpZygpLT5yZXBhcnNlQ29uZmlndXJhdGlvbigp OwogICAgIHVuc2lnbmVkIGxvbmcgY2hhbmdlZCA9IG9wdGlvbnMtPnVwZGF0ZVNldHRpbmdzKCk7 CisKICAgICB0YWJfYm94LT5yZWNvbmZpZ3VyZSgpOwogICAgIHBvcHVwaW5mby0+cmVjb25maWd1 cmUoKTsKICAgICBpbml0UG9zaXRpb25pbmctPnJlaW5pdENhc2NhZGluZyggMCApOwpAQCAtMjI4 NCw3ICsyMjg1LDcgQEAgdm9pZCBXb3Jrc3BhY2U6OmVsZWN0cmljQm9yZGVyU3dpdGNoRGVza3Rv cCggRWxlY3RyaWNCb3JkZXIgYm9yZGVyLCBjb25zdCBRUG9pbnQKICAgICBpbnQgZGVza19iZWZv cmUgPSBjdXJyZW50RGVza3RvcCgpOwogICAgIHNldEN1cnJlbnREZXNrdG9wKCBkZXNrICk7CiAg ICAgaWYoIGN1cnJlbnREZXNrdG9wKCkgIT0gZGVza19iZWZvcmUgKQotICAgICAgICBRQ3Vyc29y OjpzZXRQb3MoIHBvcyApOyAKKyAgICAgICAgUUN1cnNvcjo6c2V0UG9zKCBwb3MgKTsKICAgICB9 CiAKIC8vIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gdGhlIHVzZXIgZW50ZXJlZCBhbiBl bGVjdHJpYyBib3JkZXIK ------=_Part_56786_24371506.1227129856504 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ kwin mailing list kwin@kde.org https://mail.kde.org/mailman/listinfo/kwin ------=_Part_56786_24371506.1227129856504--