From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Adam Williamson To: git-commits@fedoraproject.org Subject: [rpms/opencv] opencv5: Backport all post-4.11.0 PNG fixes, including big-endian fix Date: Fri, 28 Aug 2026 13:32:56 GMT Message-ID: <178792397623.1.12198186627496712613.rpms-opencv-9a00dd90726a@fedoraproject.org> List-ID: X-Git-Repo: rpms/opencv X-Git-Branch: opencv5 X-Git-Rev: 9a00dd90726a9ad006af7f1941b7f20de2ddd6be ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvb3BlbmN2CiAgICAgICAgICAgIEJyYW5jaCA6IG9wZW5jdjUKICAgICAgICAg ICAgQ29tbWl0IDogOWEwMGRkOTA3MjZhOWFkMDA2YWY3ZjE5NDFiN2YyMGRlMmRkZDZiZQogICAg ICAgICAgICBBdXRob3IgOiBBZGFtIFdpbGxpYW1zb24gPGF3aWxsaWFtQHJlZGhhdC5jb20+CiAg ICAgICAgICAgIERhdGUgICA6IDIwMjUtMDItMThUMTI6MTY6MDItMDg6MDAKICAgICAgICAgICAg U3RhdHMgIDogKzE4NTAvLTEgaW4gMTEgZmlsZShzKQogICAgICAgICAgICBVUkwgICAgOiBodHRw czovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL29wZW5jdi9jLzlhMDBkZDkwNzI2YTlhZDAw NmFmN2YxOTQxYjdmMjBkZTJkZGQ2YmU/YnJhbmNoPW9wZW5jdjUKCiAgICAgICAgICAgIExvZzoK ICAgICAgICAgICAgQmFja3BvcnQgYWxsIHBvc3QtNC4xMS4wIFBORyBmaXhlcywgaW5jbHVkaW5n IGJpZy1lbmRpYW4gZml4CgpUaGlzIGJhY2twb3J0cyBhbGwgY2hhbmdlcyB0byB0aGUgUE5HIHJl YWRpbmcgY29kZSBzaW5jZSA0LjExLjAsCm1haW5seSB0byBnZXQgdGhlIGZpeCBmb3IgIzIzNDUz MDYsIFBORyByZWFkIGZhaWxzIG9uIGJpZy1lbmRpYW4uCkl0J3MgZGlmZmljdWx0IHRvIGJhY2tw b3J0IGp1c3QgdGhhdCBmaXggdG8gNC4xMS4wIGFzIGl0J3MgYnVpbHQKb24gYWxsIHRoZSBlYXJs aWVyIGNoYW5nZXMsIGFuZCB0aGUgZWFybGllciBjaGFuZ2VzIGxvb2sgbGlrZQp1c2VmdWwgZml4 ZXMgdG9vIGluIGFueSBjYXNlLgoKU2VlIHVwc3RyZWFtIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVu Y3Yvb3BlbmN2L2lzc3Vlcy8yNjkxMyBhbmQKaHR0cHM6Ly9naXRodWIuY29tL29wZW5jdi9vcGVu Y3YvcHVsbC8yNjkxNSAuCgpSZXNvbHZlczogcmhieiMyMzQ1MzA2CgpTaWduZWQtb2ZmLWJ5OiBB ZGFtIFdpbGxpYW1zb24gPGF3aWxsaWFtQHJlZGhhdC5jb20+CgotLS0KZGlmZiAtLWdpdCBhLzAw MDEtTWVyZ2UtcHVsbC1yZXF1ZXN0LTI2NzM5LWZyb20tdnJhYmF1ZC1wbmdfbGVhay5wYXRjaCBi LzAwMDEtTWVyZ2UtcHVsbC1yZXF1ZXN0LTI2NzM5LWZyb20tdnJhYmF1ZC1wbmdfbGVhay5wYXRj aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjRlZmY5Ci0tLSAvZGV2L251 bGwKKysrIGIvMDAwMS1NZXJnZS1wdWxsLXJlcXVlc3QtMjY3MzktZnJvbS12cmFiYXVkLXBuZ19s ZWFrLnBhdGNoCkBAIC0wLDAgKzEsMTU1IEBACitGcm9tIGMzOTkyMDNlOTg2MWJmM2ZmNWI5NzZj ZDU5N2I5ODIwZWVlNWQ5M2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBWaW5jZW50 IFJhYmF1ZCA8dnJhYmF1ZEBnb29nbGUuY29tPgorRGF0ZTogRnJpLCAxMCBKYW4gMjAyNSAwOToz Mzo0MyArMDEwMAorU3ViamVjdDogW1BBVENIIDAxLzEwXSBNZXJnZSBwdWxsIHJlcXVlc3QgIzI2 NzM5IGZyb20gdnJhYmF1ZDpwbmdfbGVhaworCitBZGQgbW9yZSBib3VuZGFyeSBjaGVja3MuICMy NjczOQorCitBbHNvIGZpeCBhIGJ1ZyBpbiByZWFkX2NodW5rIHdoZXJlIHdlIGNvdWxkIGVuZCB1 cCB3aXRoIHBuZ19nZXRfdWludF8zMihsZW4pICsgMTIgPCA0CisKKyMjIyBQdWxsIFJlcXVlc3Qg UmVhZGluZXNzIENoZWNrbGlzdAorCitTZWUgZGV0YWlscyBhdCBodHRwczovL2dpdGh1Yi5jb20v b3BlbmN2L29wZW5jdi93aWtpL0hvd190b19jb250cmlidXRlI21ha2luZy1hLWdvb2QtcHVsbC1y ZXF1ZXN0CisKKy0gW3hdIEkgYWdyZWUgdG8gY29udHJpYnV0ZSB0byB0aGUgcHJvamVjdCB1bmRl ciBBcGFjaGUgMiBMaWNlbnNlLgorLSBbeF0gVG8gdGhlIGJlc3Qgb2YgbXkga25vd2xlZGdlLCB0 aGUgcHJvcG9zZWQgcGF0Y2ggaXMgbm90IGJhc2VkIG9uIGEgY29kZSB1bmRlciBHUEwgb3IgYW5v dGhlciBsaWNlbnNlIHRoYXQgaXMgaW5jb21wYXRpYmxlIHdpdGggT3BlbkNWCistIFt4XSBUaGUg UFIgaXMgcHJvcG9zZWQgdG8gdGhlIHByb3BlciBicmFuY2gKKy0gWyBdIFRoZXJlIGlzIGEgcmVm ZXJlbmNlIHRvIHRoZSBvcmlnaW5hbCBidWcgcmVwb3J0IGFuZCByZWxhdGVkIHdvcmsKKy0gWyBd IFRoZXJlIGlzIGFjY3VyYWN5IHRlc3QsIHBlcmZvcm1hbmNlIHRlc3QgYW5kIHRlc3QgZGF0YSBp biBvcGVuY3ZfZXh0cmEgcmVwb3NpdG9yeSwgaWYgYXBwbGljYWJsZQorICAgICAgUGF0Y2ggdG8g b3BlbmN2X2V4dHJhIGhhcyB0aGUgc2FtZSBicmFuY2ggbmFtZS4KKy0gWyBdIFRoZSBmZWF0dXJl IGlzIHdlbGwgZG9jdW1lbnRlZCBhbmQgc2FtcGxlIGNvZGUgY2FuIGJlIGJ1aWx0IHdpdGggdGhl IHByb2plY3QgQ01ha2UKKy0tLQorIG1vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9wbmcuY3Bw IHwgNTQgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KKyBtb2R1bGVzL2ltZ2NvZGVjcy9z cmMvZ3JmbXRfcG5nLmhwcCB8ICAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAzMyBpbnNlcnRpb25z KCspLCAyMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL21vZHVsZXMvaW1nY29kZWNzL3Ny Yy9ncmZtdF9wbmcuY3BwIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X3BuZy5jcHAKK2lu ZGV4IDZiNGNlYTQwNWMuLjc0NGYyNDRhMjAgMTAwNjQ0CistLS0gYS9tb2R1bGVzL2ltZ2NvZGVj cy9zcmMvZ3JmbXRfcG5nLmNwcAorKysrIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X3Bu Zy5jcHAKK0BAIC0yNTUsMTEgKzI1NSwxNCBAQCBib29sICBQbmdEZWNvZGVyOjpyZWFkSGVhZGVy KCkKKyAgICAgICAgICAgICAgICAgcG5nX2luaXRfaW8ocG5nX3B0ciwgbV9mKTsKKyAgICAgICAg ICAgICB9CisgCistICAgICAgICAgICAgaWYgKHJlYWRfZnJvbV9pbygmc2lnLCA4LCAxKSAhPSAx KQorKyAgICAgICAgICAgIC8vIFJlYWQgUE5HIGhlYWRlcjogMTM3IDgwIDc4IDcxIDEzIDEwIDI2 IDEwCisrICAgICAgICAgICAgaWYgKCFyZWFkX2Zyb21faW8oJnNpZywgOCkpCisgICAgICAgICAg ICAgICAgIHJldHVybiBmYWxzZTsKKyAKKyAgICAgICAgICAgICBpZCA9IHJlYWRfY2h1bmsobV9j aHVua0lIRFIpOworLSAgICAgICAgICAgIGlmICghKGlkID09IGlkX0lIRFIgJiYgbV9jaHVua0lI RFIucC5zaXplKCkgPT0gMjUpKQorKyAgICAgICAgICAgIC8vIDg9SERSK3NpemUsIDEzPXNpemUg b2YgSUhEUiBjaHVuaywgND1DUkMKKysgICAgICAgICAgICAvLyBodHRwOi8vd3d3LmxpYnBuZy5v cmcvcHViL3BuZy9zcGVjLzEuMi9QTkctQ2h1bmtzLmh0bWwjQy5JSERSCisrICAgICAgICAgICAg aWYgKCEoaWQgPT0gaWRfSUhEUiAmJiBtX2NodW5rSUhEUi5wLnNpemUoKSA9PSA4ICsgMTMgKyA0 KSkKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg ICAgICAgICB9CitAQCAtMjgzLDIzICsyODYsMjUgQEAgYm9vbCAgUG5nRGVjb2Rlcjo6cmVhZEhl YWRlcigpCisgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgfQor IAorLSAgICAgICAgICAgICAgICBpZiAoaWQgPT0gaWRfYWNUTCAmJiBjaHVuay5wLnNpemUoKSA9 PSAyMCkKKysgICAgICAgICAgICAgICAgaWYgKGlkID09IGlkX2FjVEwpCisgICAgICAgICAgICAg ICAgIHsKKysgICAgICAgICAgICAgICAgICAgIC8vIDg9SERSK3NpemUsIDg9c2l6ZSBvZiBhY1RM IGNodW5rLCA0PUNSQworKyAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly93aWtpLm1vemls bGEub3JnL0FQTkdfU3BlY2lmaWNhdGlvbiMlNjBhY1RMJTYwOl9UaGVfQW5pbWF0aW9uX0NvbnRy b2xfQ2h1bmsKKysgICAgICAgICAgICAgICAgICAgIGlmIChjaHVuay5wLnNpemUoKSAhPSA4ICsg OCArIDQpCisrICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg ICAgICAgICAgICAgbV9hbmltYXRpb24ubG9vcF9jb3VudCA9IHBuZ19nZXRfdWludF8zMigmY2h1 bmsucFsxMl0pOworIAorLSAgICAgICAgICAgICAgICAgICAgaWYgKGNodW5rLnBbOF0gPiAwKQor LSAgICAgICAgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rLnBb OF0gPSAwOworLSAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rLnBbOV0gPSAwOworLSAgICAg ICAgICAgICAgICAgICAgICAgIG1fZnJhbWVfY291bnQgPSBwbmdfZ2V0X3VpbnRfMzIoJmNodW5r LnBbOF0pOworLSAgICAgICAgICAgICAgICAgICAgICAgIG1fZnJhbWVfY291bnQrKzsKKy0gICAg ICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgICAgIGVsc2UKKy0gICAgICAgICAg ICAgICAgICAgICAgICBtX2ZyYW1lX2NvdW50ID0gcG5nX2dldF91aW50XzMyKCZjaHVuay5wWzhd KTsKKysgICAgICAgICAgICAgICAgICAgIG1fZnJhbWVfY291bnQgPSBwbmdfZ2V0X3VpbnRfMzIo JmNodW5rLnBbOF0pOworKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fZnJhbWVfY291bnQgPT0g MCkKKysgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAg ICAgIH0KKyAKKyAgICAgICAgICAgICAgICAgaWYgKGlkID09IGlkX2ZjVEwpCisgICAgICAgICAg ICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgIC8vIDg9SERSK3NpemUsIDI2PXNpemUgb2Yg ZmNUTCBjaHVuaywgND1DUkMKKysgICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vd2lraS5t b3ppbGxhLm9yZy9BUE5HX1NwZWNpZmljYXRpb24jJTYwZmNUTCU2MDpfVGhlX0ZyYW1lX0NvbnRy b2xfQ2h1bmsKKysgICAgICAgICAgICAgICAgICAgIGlmIChjaHVuay5wLnNpemUoKSAhPSA4ICsg MjYgKyA0KQorKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg ICAgICAgICAgICAgIG1faXNfZmNUTF9sb2FkZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAg ICAgdzAgPSBwbmdfZ2V0X3VpbnRfMzIoJmNodW5rLnBbMTJdKTsKKyAgICAgICAgICAgICAgICAg ICAgIGgwID0gcG5nX2dldF91aW50XzMyKCZjaHVuay5wWzE2XSk7CitAQCAtMzEzLDYgKzMxOCwx MSBAQCBib29sICBQbmdEZWNvZGVyOjpyZWFkSGVhZGVyKCkKKyAKKyAgICAgICAgICAgICAgICAg aWYgKGlkID09IGlkX2JLR0QpCisgICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAg ICAgIC8vIDg9SERSK3NpemUsID8/PXNpemUgb2YgYktHRCBjaHVuaywgND1DUkMKKysgICAgICAg ICAgICAgICAgICAgIC8vIFRoZSBzcGVjIGlzIGFjdHVhbGx5IG1vcmUgY29tcGxleDogaHR0cDov L3d3dy5saWJwbmcub3JnL3B1Yi9wbmcvc3BlYy8xLjIvUE5HLUNodW5rcy5odG1sI0MuYktHRAor KyAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogd2Ugb25seSBjaGVjayB0aGF0IDQgYnl0ZXMg Y2FuIGJlIHJlYWQgZnJvbSAmY2h1bmsucFs4XS4gRml4LgorKyAgICAgICAgICAgICAgICAgICAg aWYgKGNodW5rLnAuc2l6ZSgpIDwgOCArIDQpCisrICAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgaW50IGJnY29sb3IgPSBwbmdfZ2V0X3Vp bnRfMzIoJmNodW5rLnBbOF0pOworICAgICAgICAgICAgICAgICAgICAgbV9hbmltYXRpb24uYmdj b2xvclszXSA9IChiZ2NvbG9yID4+IDI0KSAmIDB4RkY7CisgICAgICAgICAgICAgICAgICAgICBt X2FuaW1hdGlvbi5iZ2NvbG9yWzJdID0gKGJnY29sb3IgPj4gMTYpICYgMHhGRjsKK0BAIC02Njks MzQgKzY3OSwzNCBAQCB2b2lkIFBuZ0RlY29kZXI6OmNvbXBvc2VfZnJhbWUoc3RkOjp2ZWN0b3I8 cG5nX2J5dGVwPiYgcm93c19kc3QsIGNvbnN0IHN0ZDo6dmVjdAorICAgICAgICAgICAgIH0pOwor IH0KKyAKKy1zaXplX3QgUG5nRGVjb2Rlcjo6cmVhZF9mcm9tX2lvKHZvaWQqIF9CdWZmZXIsIHNp emVfdCBfRWxlbWVudFNpemUsIHNpemVfdCBfRWxlbWVudENvdW50KQorK2Jvb2wgUG5nRGVjb2Rl cjo6cmVhZF9mcm9tX2lvKHZvaWQqIGJ1ZmZlciwgc2l6ZV90IG51bV9ieXRlcykKKyB7CisgICAg IGlmIChtX2YpCistICAgICAgICByZXR1cm4gZnJlYWQoX0J1ZmZlciwgX0VsZW1lbnRTaXplLCBf RWxlbWVudENvdW50LCBtX2YpOworKyAgICAgICAgcmV0dXJuIGZyZWFkKGJ1ZmZlciwgMSwgbnVt X2J5dGVzLCBtX2YpID09IG51bV9ieXRlczsKKyAKKy0gICAgaWYgKG1fYnVmX3BvcyArIF9FbGVt ZW50U2l6ZSA+IG1fYnVmLmNvbHMgKiBtX2J1Zi5yb3dzICogbV9idWYuZWxlbVNpemUoKSkgewor KyAgICBpZiAobV9idWZfcG9zICsgbnVtX2J5dGVzID4gbV9idWYuY29scyAqIG1fYnVmLnJvd3Mg KiBtX2J1Zi5lbGVtU2l6ZSgpKSB7CisgICAgICAgICBDVl9MT0dfV0FSTklORyhOVUxMLCAiUE5H IGlucHV0IGJ1ZmZlciBpcyBpbmNvbXBsZXRlIik7CistICAgICAgICByZXR1cm4gMDsKKysgICAg ICAgIHJldHVybiBmYWxzZTsKKyAgICAgfQorIAorLSAgICBtZW1jcHkoIF9CdWZmZXIsIG1fYnVm LnB0cigpICsgbV9idWZfcG9zLCBfRWxlbWVudFNpemUgKTsKKy0gICAgbV9idWZfcG9zICs9IF9F bGVtZW50U2l6ZTsKKy0gICAgcmV0dXJuIDE7CisrICAgIG1lbWNweSggYnVmZmVyLCBtX2J1Zi5w dHIoKSArIG1fYnVmX3BvcywgbnVtX2J5dGVzICk7CisrICAgIG1fYnVmX3BvcyArPSBudW1fYnl0 ZXM7CisrICAgIHJldHVybiB0cnVlOworIH0KKyAKKyB1aW50MzJfdCBQbmdEZWNvZGVyOjpyZWFk X2NodW5rKENodW5rJiBjaHVuaykKKyB7CisgICAgIHVuc2lnbmVkIGNoYXIgbGVuWzRdOworLSAg ICBpZiAocmVhZF9mcm9tX2lvKCZsZW4sIDQsIDEpID09IDEpCisrICAgIGlmIChyZWFkX2Zyb21f aW8oJmxlbiwgNCkpCisgICAgIHsKKy0gICAgICAgIGNvbnN0IHNpemVfdCBzaXplID0gcG5nX2dl dF91aW50XzMyKGxlbikgKyAxMjsKKysgICAgICAgIGNvbnN0IHNpemVfdCBzaXplID0gc3RhdGlj X2Nhc3Q8c2l6ZV90PihwbmdfZ2V0X3VpbnRfMzIobGVuKSkgKyAxMjsKKyAgICAgICAgIGlmIChz aXplID4gUE5HX1VTRVJfQ0hVTktfTUFMTE9DX01BWCkKKyAgICAgICAgIHsKKyAgICAgICAgICAg ICBDVl9MT0dfV0FSTklORyhOVUxMLCAiY2h1bmsgZGF0YSBpcyB0b28gbGFyZ2UiKTsKKyAgICAg ICAgIH0KKyAgICAgICAgIGNodW5rLnAucmVzaXplKHNpemUpOworICAgICAgICAgbWVtY3B5KGNo dW5rLnAuZGF0YSgpLCBsZW4sIDQpOworLSAgICAgICAgaWYgKHJlYWRfZnJvbV9pbygmY2h1bmsu cFs0XSwgY2h1bmsucC5zaXplKCkgLSA0LCAxKSA9PSAxKQorKyAgICAgICAgaWYgKHJlYWRfZnJv bV9pbygmY2h1bmsucFs0XSwgY2h1bmsucC5zaXplKCkgLSA0KSkKKyAgICAgICAgICAgICByZXR1 cm4gKih1aW50MzJfdCopKCZjaHVuay5wWzRdKTsKKyAgICAgfQorICAgICByZXR1cm4gMDsKK2Rp ZmYgLS1naXQgYS9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfcG5nLmhwcCBiL21vZHVsZXMv aW1nY29kZWNzL3NyYy9ncmZtdF9wbmcuaHBwCitpbmRleCBhOTUwYjllOTQxLi5kZWMyY2QwYjYx IDEwMDY0NAorLS0tIGEvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X3BuZy5ocHAKKysrKyBi L21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9wbmcuaHBwCitAQCAtMTM3LDcgKzEzNyw3IEBA IHByb3RlY3RlZDoKKyAgICAgYm9vbCBwcm9jZXNzaW5nX3N0YXJ0KHZvaWQqIGZyYW1lX3B0ciwg Y29uc3QgTWF0JiBpbWcpOworICAgICBib29sIHByb2Nlc3NpbmdfZmluaXNoKCk7CisgICAgIHZv aWQgY29tcG9zZV9mcmFtZShzdGQ6OnZlY3RvcjxwbmdfYnl0ZXA+JiByb3dzX2RzdCwgY29uc3Qg c3RkOjp2ZWN0b3I8cG5nX2J5dGVwPiYgcm93c19zcmMsIHVuc2lnbmVkIGNoYXIgYm9wLCB1aW50 MzJfdCB4LCB1aW50MzJfdCB5LCB1aW50MzJfdCB3LCB1aW50MzJfdCBoLCBNYXQmIGltZyk7Cist ICAgIHNpemVfdCByZWFkX2Zyb21faW8odm9pZCogX0J1ZmZlciwgc2l6ZV90IF9FbGVtZW50U2l6 ZSwgc2l6ZV90IF9FbGVtZW50Q291bnQpOworKyAgICBib29sIHJlYWRfZnJvbV9pbyh2b2lkKiBi dWZmZXIsIHNpemVfdCBudW1fYnl0ZXMpOworICAgICB1aW50MzJfdCAgcmVhZF9jaHVuayhDaHVu ayYgY2h1bmspOworIAorICAgICBzdHJ1Y3QgUG5nUHRycyB7CistLSAKKzIuNDguMQorCgpkaWZm IC0tZ2l0IGEvMDAwMi1GaXgtcmVtYWluaW5nLWJ1Z3MtaW4tUE5HLXJlYWRlci5wYXRjaCBiLzAw MDItRml4LXJlbWFpbmluZy1idWdzLWluLVBORy1yZWFkZXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uZjQ4MDRlNgotLS0gL2Rldi9udWxsCisrKyBiLzAwMDItRml4 LXJlbWFpbmluZy1idWdzLWluLVBORy1yZWFkZXIucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorRnJv bSBiN2I4NGVjNjM2NDgwOTMwNjc3NmI0ODIwNmFkMzYyNjYyNzRjMjk3IE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQorRnJvbTogVmluY2VudCBSYWJhdWQgPHZyYWJhdWRAZ29vZ2xlLmNvbT4KK0Rh dGU6IEZyaSwgMTAgSmFuIDIwMjUgMTQ6NTc6MzkgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAwMi8x MF0gRml4IHJlbWFpbmluZyBidWdzIGluIFBORyByZWFkZXIKKworLSBmcmVlIGNodW5rIGJlZm9y ZSBhIHBvdGVudGlhbCBsb25nam1wCistIGRvIG5vdCB0cnkgdG8gYWxsb2NhdGUgd2hlbiB0aGUg Y2h1bmsgaXMgPiBQTkdfVVNFUl9DSFVOS19NQUxMT0NfTUFYCistLS0KKyBtb2R1bGVzL2ltZ2Nv ZGVjcy9zcmMvZ3JmbXRfcG5nLmNwcCB8IDUgKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNl cnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfcG5n LmNwcCBiL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9wbmcuY3BwCitpbmRleCA3NDRmMjQ0 YTIwLi4xZWNjMDFmMTdmIDEwMDY0NAorLS0tIGEvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10 X3BuZy5jcHAKKysrKyBiL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9wbmcuY3BwCitAQCAt MzM5LDYgKzMzOSwxMCBAQCBib29sICBQbmdEZWNvZGVyOjpyZWFkSGVhZGVyKCkKKyAgICAgICAg ICAgICBwbmdfYnl0ZXAgdHJhbnM7CisgICAgICAgICAgICAgcG5nX2NvbG9yXzE2cCB0cmFuc192 YWx1ZXM7CisgCisrICAgICAgICAgICAgLy8gRnJlZSBjaHVuayBpbiBjYXNlIHBuZ19yZWFkX2lu Zm8gdXNlcyBsb25nam1wLgorKyAgICAgICAgICAgIGNodW5rLnAuY2xlYXIoKTsKKysgICAgICAg ICAgICBjaHVuay5wLnNocmlua190b19maXQoKTsKKysKKyAgICAgICAgICAgICBwbmdfcmVhZF9p bmZvKCBwbmdfcHRyLCBpbmZvX3B0ciApOworICAgICAgICAgICAgIHBuZ19nZXRfSUhEUihwbmdf cHRyLCBpbmZvX3B0ciwgJndkdGgsICZoZ2h0LAorICAgICAgICAgICAgICAgICAmYml0X2RlcHRo LCAmY29sb3JfdHlwZSwgMCwgMCwgMCk7CitAQCAtNzAzLDYgKzcwNyw3IEBAIHVpbnQzMl90IFBu Z0RlY29kZXI6OnJlYWRfY2h1bmsoQ2h1bmsmIGNodW5rKQorICAgICAgICAgaWYgKHNpemUgPiBQ TkdfVVNFUl9DSFVOS19NQUxMT0NfTUFYKQorICAgICAgICAgeworICAgICAgICAgICAgIENWX0xP R19XQVJOSU5HKE5VTEwsICJjaHVuayBkYXRhIGlzIHRvbyBsYXJnZSIpOworKyAgICAgICAgICAg IHJldHVybiAwOworICAgICAgICAgfQorICAgICAgICAgY2h1bmsucC5yZXNpemUoc2l6ZSk7Cisg ICAgICAgICBtZW1jcHkoY2h1bmsucC5kYXRhKCksIGxlbiwgNCk7CistLSAKKzIuNDguMQorCgpk aWZmIC0tZ2l0IGEvMDAwMy1NZXJnZS1wdWxsLXJlcXVlc3QtMjY3ODItZnJvbS12cmFiYXVkLXBu Z19sZWFrLnBhdGNoIGIvMDAwMy1NZXJnZS1wdWxsLXJlcXVlc3QtMjY3ODItZnJvbS12cmFiYXVk LXBuZ19sZWFrLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkMTE3 MzAKLS0tIC9kZXYvbnVsbAorKysgYi8wMDAzLU1lcmdlLXB1bGwtcmVxdWVzdC0yNjc4Mi1mcm9t LXZyYWJhdWQtcG5nX2xlYWsucGF0Y2gKQEAgLTAsMCArMSw2NTQgQEAKK0Zyb20gYzI5ZGU3Y2M0 Yjg5YzgwZjdlZTkxMGYzMThkZmMxYmM0NjJkNTc2YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK K0Zyb206IFZpbmNlbnQgUmFiYXVkIDx2cmFiYXVkQGdvb2dsZS5jb20+CitEYXRlOiBXZWQsIDIy IEphbiAyMDI1IDEyOjQ3OjI4ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMDMvMTBdIE1lcmdlIHB1 bGwgcmVxdWVzdCAjMjY3ODIgZnJvbSB2cmFiYXVkOnBuZ19sZWFrCisKK0ZpeCBwb3RlbnRpYWwg UkVBRCBtZW1vcnkgYWNjZXNzICMyNjc4MgorCitUaGlzIGZpeGVzIGh0dHBzOi8vb3NzLWZ1enou Y29tL3Rlc3RjYXNlLWRldGFpbC80OTIzNjcxODgxMjUyODY0IGFuZCBodHRwczovL29zcy1mdXp6 LmNvbS90ZXN0Y2FzZS1kZXRhaWwvNTA0ODY1MDEyNzk2NjIwOAorCisjIyMgUHVsbCBSZXF1ZXN0 IFJlYWRpbmVzcyBDaGVja2xpc3QKKworU2VlIGRldGFpbHMgYXQgaHR0cHM6Ly9naXRodWIuY29t L29wZW5jdi9vcGVuY3Yvd2lraS9Ib3dfdG9fY29udHJpYnV0ZSNtYWtpbmctYS1nb29kLXB1bGwt cmVxdWVzdAorCistIFt4XSBJIGFncmVlIHRvIGNvbnRyaWJ1dGUgdG8gdGhlIHByb2plY3QgdW5k ZXIgQXBhY2hlIDIgTGljZW5zZS4KKy0gW3hdIFRvIHRoZSBiZXN0IG9mIG15IGtub3dsZWRnZSwg dGhlIHByb3Bvc2VkIHBhdGNoIGlzIG5vdCBiYXNlZCBvbiBhIGNvZGUgdW5kZXIgR1BMIG9yIGFu b3RoZXIgbGljZW5zZSB0aGF0IGlzIGluY29tcGF0aWJsZSB3aXRoIE9wZW5DVgorLSBbeF0gVGhl IFBSIGlzIHByb3Bvc2VkIHRvIHRoZSBwcm9wZXIgYnJhbmNoCistIFt4XSBUaGVyZSBpcyBhIHJl ZmVyZW5jZSB0byB0aGUgb3JpZ2luYWwgYnVnIHJlcG9ydCBhbmQgcmVsYXRlZCB3b3JrCistIFsg XSBUaGVyZSBpcyBhY2N1cmFjeSB0ZXN0LCBwZXJmb3JtYW5jZSB0ZXN0IGFuZCB0ZXN0IGRhdGEg aW4gb3BlbmN2X2V4dHJhIHJlcG9zaXRvcnksIGlmIGFwcGxpY2FibGUKKyAgICAgIFBhdGNoIHRv IG9wZW5jdl9leHRyYSBoYXMgdGhlIHNhbWUgYnJhbmNoIG5hbWUuCistIFsgXSBUaGUgZmVhdHVy ZSBpcyB3ZWxsIGRvY3VtZW50ZWQgYW5kIHNhbXBsZSBjb2RlIGNhbiBiZSBidWlsdCB3aXRoIHRo ZSBwcm9qZWN0IENNYWtlCistLS0KKyBtb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfcG5nLmNw cCB8IDM5NCArKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCisgbW9kdWxlcy9pbWdjb2RlY3Mv c3JjL2dyZm10X3BuZy5ocHAgfCAgNTMgKy0tLQorIDIgZmlsZXMgY2hhbmdlZCwgMjA2IGluc2Vy dGlvbnMoKyksIDI0MSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL21vZHVsZXMvaW1nY29k ZWNzL3NyYy9ncmZtdF9wbmcuY3BwIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X3BuZy5j cHAKK2luZGV4IDFlY2MwMWYxN2YuLjEwNTI4OGM1ZTUgMTAwNjQ0CistLS0gYS9tb2R1bGVzL2lt Z2NvZGVjcy9zcmMvZ3JmbXRfcG5nLmNwcAorKysrIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dy Zm10X3BuZy5jcHAKK0BAIC0xOTgsNiArMTk4LDcgQEAgUG5nRGVjb2Rlcjo6UG5nRGVjb2Rlcigp CisgCisgUG5nRGVjb2Rlcjo6flBuZ0RlY29kZXIoKQorIHsKKysgICAgQ2xlYXJQbmdQdHIoKTsK KyAgICAgaWYoIG1fZiApCisgICAgIHsKKyAgICAgICAgIGZjbG9zZSggbV9mICk7CitAQCAtMjA1 LDYgKzIwNiwyNiBAQCBQbmdEZWNvZGVyOjp+UG5nRGVjb2RlcigpCisgICAgIH0KKyB9CisgCisr Ym9vbCBQbmdEZWNvZGVyOjpJbml0UG5nUHRyKCkgeworKyAgICBDbGVhclBuZ1B0cigpOworKwor KyAgICBtX3BuZ19wdHIgPSBwbmdfY3JlYXRlX3JlYWRfc3RydWN0KFBOR19MSUJQTkdfVkVSX1NU UklORywgMCwgMCwgMCk7CisrICAgIGlmICghbV9wbmdfcHRyKQorKyAgICAgICAgcmV0dXJuIGZh bHNlOworKworKyAgICBtX2luZm9fcHRyID0gcG5nX2NyZWF0ZV9pbmZvX3N0cnVjdChtX3BuZ19w dHIpOworKyAgICBtX2VuZF9pbmZvID0gcG5nX2NyZWF0ZV9pbmZvX3N0cnVjdChtX3BuZ19wdHIp OworKyAgICByZXR1cm4gKG1faW5mb19wdHIgJiYgbV9lbmRfaW5mbyk7CisrfQorKworK3ZvaWQg UG5nRGVjb2Rlcjo6Q2xlYXJQbmdQdHIoKSB7CisrICAgIGlmIChtX3BuZ19wdHIpCisrICAgICAg ICBwbmdfZGVzdHJveV9yZWFkX3N0cnVjdCgmbV9wbmdfcHRyLCAmbV9pbmZvX3B0ciwgJm1fZW5k X2luZm8pOworKyAgICBtX3BuZ19wdHIgPSBudWxscHRyOworKyAgICBtX2luZm9fcHRyID0gbnVs bHB0cjsKKysgICAgbV9lbmRfaW5mbyA9IG51bGxwdHI7CisrfQorKworIEltYWdlRGVjb2RlciBQ bmdEZWNvZGVyOjpuZXdEZWNvZGVyKCkgY29uc3QKKyB7CisgICAgIHJldHVybiBtYWtlUHRyPFBu Z0RlY29kZXI+KCk7CitAQCAtMjI3LDE2NyArMjQ4LDE2NCBAQCB2b2lkICBQbmdEZWNvZGVyOjpy ZWFkRGF0YUZyb21CdWYoIHZvaWQqIF9wbmdfcHRyLCB1bnNpZ25lZCBjaGFyKiBkc3QsIHNpemVf dCBzaQorIAorIGJvb2wgIFBuZ0RlY29kZXI6OnJlYWRIZWFkZXIoKQorIHsKKy0gICAgdm9sYXRp bGUgYm9vbCByZXN1bHQgPSBmYWxzZTsKKysgICAgLy8gRGVjbGFyZSBkeW5hbWljIHZhcmlhYmxl cyBiZWZvcmUgYSBwb3RlbnRpYWwgbG9uZ2ptcC4KKysgICAgQ2h1bmsgY2h1bms7CisrCisrICAg IGlmICghSW5pdFBuZ1B0cigpKQorKyAgICAgICAgcmV0dXJuIGZhbHNlOworKworKyAgICBpZiAo c2V0am1wKHBuZ19qbXBidWYobV9wbmdfcHRyKSkpCisrICAgICAgICByZXR1cm4gZmFsc2U7Cisg CistICAgIFBuZ1B0cnMgcG5nX3B0cnM7CistICAgIHBuZ19zdHJ1Y3RwIHBuZ19wdHIgPSBwbmdf cHRycy5nZXRQbmcoKTsKKy0gICAgcG5nX2luZm9wIGluZm9fcHRyID0gcG5nX3B0cnMuZ2V0SW5m bygpOworLSAgICBwbmdfaW5mb3AgZW5kX2luZm8gPSBwbmdfcHRycy5nZXRFbmRJbmZvKCk7Cisr ICAgIG1fYnVmX3BvcyA9IDA7CisrICAgIHVuc2lnbmVkIGNoYXIgc2lnWzhdOworKyAgICB1aW50 MzJfdCBpZCA9IDA7CisgCistICAgIGlmKCBwbmdfcHRyICYmIGluZm9fcHRyICYmIGVuZF9pbmZv ICkKKysgICAgaWYoICFtX2J1Zi5lbXB0eSgpICkKKysgICAgICAgIHBuZ19zZXRfcmVhZF9mbiht X3BuZ19wdHIsIHRoaXMsIChwbmdfcndfcHRyKXJlYWREYXRhRnJvbUJ1ZiApOworKyAgICBlbHNl CisgICAgIHsKKy0gICAgICAgIG1fYnVmX3BvcyA9IDA7CistICAgICAgICBpZiggc2V0am1wKCBw bmdfam1wYnVmKCBwbmdfcHRyICkgKSA9PSAwICkKKysgICAgICAgIG1fZiA9IGZvcGVuKG1fZmls ZW5hbWUuY19zdHIoKSwgInJiIik7CisrICAgICAgICBpZiAoIW1fZikKKyAgICAgICAgIHsKKy0g ICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHNpZ1s4XTsKKy0gICAgICAgICAgICB1aW50MzJfdCBp ZCA9IDA7CistICAgICAgICAgICAgQ2h1bmsgY2h1bms7CisrICAgICAgICAgICAgcmV0dXJuIGZh bHNlOworKyAgICAgICAgfQorKyAgICAgICAgcG5nX2luaXRfaW8obV9wbmdfcHRyLCBtX2YpOwor KyAgICB9CisgCistICAgICAgICAgICAgaWYoICFtX2J1Zi5lbXB0eSgpICkKKy0gICAgICAgICAg ICAgICAgcG5nX3NldF9yZWFkX2ZuKHBuZ19wdHIsIHRoaXMsIChwbmdfcndfcHRyKXJlYWREYXRh RnJvbUJ1ZiApOworLSAgICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICB7CistICAgICAgICAg ICAgICAgIG1fZiA9IGZvcGVuKG1fZmlsZW5hbWUuY19zdHIoKSwgInJiIik7CistICAgICAgICAg ICAgICAgIGlmICghbV9mKQorLSAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICAg ICByZXR1cm4gZmFsc2U7CistICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgcG5n X2luaXRfaW8ocG5nX3B0ciwgbV9mKTsKKy0gICAgICAgICAgICB9CisrICAgIC8vIFJlYWQgUE5H IGhlYWRlcjogMTM3IDgwIDc4IDcxIDEzIDEwIDI2IDEwCisrICAgIGlmICghcmVhZF9mcm9tX2lv KCZzaWcsIDgpKQorKyAgICAgICAgcmV0dXJuIGZhbHNlOworIAorLSAgICAgICAgICAgIC8vIFJl YWQgUE5HIGhlYWRlcjogMTM3IDgwIDc4IDcxIDEzIDEwIDI2IDEwCistICAgICAgICAgICAgaWYg KCFyZWFkX2Zyb21faW8oJnNpZywgOCkpCistICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK KysgICAgaWQgPSByZWFkX2NodW5rKG1fY2h1bmtJSERSKTsKKysgICAgLy8gOD1IRFIrc2l6ZSwg MTM9c2l6ZSBvZiBJSERSIGNodW5rLCA0PUNSQworKyAgICAvLyBodHRwOi8vd3d3LmxpYnBuZy5v cmcvcHViL3BuZy9zcGVjLzEuMi9QTkctQ2h1bmtzLmh0bWwjQy5JSERSCisrICAgIGlmICghKGlk ID09IGlkX0lIRFIgJiYgbV9jaHVua0lIRFIucC5zaXplKCkgPT0gOCArIDEzICsgNCkpCisrICAg IHsKKysgICAgICAgIHJldHVybiBmYWxzZTsKKysgICAgfQorIAorLSAgICAgICAgICAgIGlkID0g cmVhZF9jaHVuayhtX2NodW5rSUhEUik7CistICAgICAgICAgICAgLy8gOD1IRFIrc2l6ZSwgMTM9 c2l6ZSBvZiBJSERSIGNodW5rLCA0PUNSQworLSAgICAgICAgICAgIC8vIGh0dHA6Ly93d3cubGli cG5nLm9yZy9wdWIvcG5nL3NwZWMvMS4yL1BORy1DaHVua3MuaHRtbCNDLklIRFIKKy0gICAgICAg ICAgICBpZiAoIShpZCA9PSBpZF9JSERSICYmIG1fY2h1bmtJSERSLnAuc2l6ZSgpID09IDggKyAx MyArIDQpKQorLSAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor LSAgICAgICAgICAgIH0KKysgICAgbV9pc19mY1RMX2xvYWRlZCA9IGZhbHNlOworKyAgICB3aGls ZSAodHJ1ZSkKKysgICAgeworKyAgICAgICAgaWQgPSByZWFkX2NodW5rKGNodW5rKTsKKyAKKy0g ICAgICAgICAgICB3aGlsZSAodHJ1ZSkKKy0gICAgICAgICAgICB7CistICAgICAgICAgICAgICAg IG1faXNfZmNUTF9sb2FkZWQgPSBmYWxzZTsKKy0gICAgICAgICAgICAgICAgaWQgPSByZWFkX2No dW5rKGNodW5rKTsKKysgICAgICAgIGlmICghaWQgfHwgKG1fZiAmJiBmZW9mKG1fZikpIHx8ICgh bV9idWYuZW1wdHkoKSAmJiBtX2J1Zl9wb3MgPiBtX2J1Zi50b3RhbCgpKSkKKysgICAgICAgIHsK KysgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisrICAgICAgICB9CisgCistICAgICAgICAgICAg ICAgIGlmICghaWQgfHwgKG1fZiAmJiBmZW9mKG1fZikpIHx8ICghbV9idWYuZW1wdHkoKSAmJiBt X2J1Zl9wb3MgPiBtX2J1Zi50b3RhbCgpKSkKKy0gICAgICAgICAgICAgICAgeworLSAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworLSAgICAgICAgICAgICAgICB9CisrICAgICAgICBp ZiAoaWQgPT0gaWRfSURBVCkKKysgICAgICAgIHsKKysgICAgICAgICAgICBpZiAobV9mKQorKyAg ICAgICAgICAgICAgICBmc2VlayhtX2YsIDAsIFNFRUtfU0VUKTsKKysgICAgICAgICAgICBlbHNl CisrICAgICAgICAgICAgICAgIG1fYnVmX3BvcyA9IDA7CisrICAgICAgICAgICAgYnJlYWs7Cisr ICAgICAgICB9CisgCistICAgICAgICAgICAgICAgIGlmIChpZCA9PSBpZF9JREFUKQorLSAgICAg ICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICAgICBpZiAobV9mKQorLSAgICAgICAgICAg ICAgICAgICAgICAgIGZzZWVrKG1fZiwgMCwgU0VFS19TRVQpOworLSAgICAgICAgICAgICAgICAg ICAgZWxzZQorLSAgICAgICAgICAgICAgICAgICAgICAgIG1fYnVmX3BvcyA9IDA7CistICAgICAg ICAgICAgICAgICAgICBicmVhazsKKy0gICAgICAgICAgICAgICAgfQorKyAgICAgICAgaWYgKGlk ID09IGlkX2FjVEwpCisrICAgICAgICB7CisrICAgICAgICAgICAgLy8gOD1IRFIrc2l6ZSwgOD1z aXplIG9mIGFjVEwgY2h1bmssIDQ9Q1JDCisrICAgICAgICAgICAgLy8gaHR0cHM6Ly93aWtpLm1v emlsbGEub3JnL0FQTkdfU3BlY2lmaWNhdGlvbiMlNjBhY1RMJTYwOl9UaGVfQW5pbWF0aW9uX0Nv bnRyb2xfQ2h1bmsKKysgICAgICAgICAgICBpZiAoY2h1bmsucC5zaXplKCkgIT0gOCArIDggKyA0 KQorKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisrICAgICAgICAgICAgbV9hbmltYXRp b24ubG9vcF9jb3VudCA9IHBuZ19nZXRfdWludF8zMigmY2h1bmsucFsxMl0pOworIAorLSAgICAg ICAgICAgICAgICBpZiAoaWQgPT0gaWRfYWNUTCkKKy0gICAgICAgICAgICAgICAgeworLSAgICAg ICAgICAgICAgICAgICAgLy8gOD1IRFIrc2l6ZSwgOD1zaXplIG9mIGFjVEwgY2h1bmssIDQ9Q1JD CistICAgICAgICAgICAgICAgICAgICAvLyBodHRwczovL3dpa2kubW96aWxsYS5vcmcvQVBOR19T cGVjaWZpY2F0aW9uIyU2MGFjVEwlNjA6X1RoZV9BbmltYXRpb25fQ29udHJvbF9DaHVuaworLSAg ICAgICAgICAgICAgICAgICAgaWYgKGNodW5rLnAuc2l6ZSgpICE9IDggKyA4ICsgNCkKKy0gICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CistICAgICAgICAgICAgICAgICAgICBt X2FuaW1hdGlvbi5sb29wX2NvdW50ID0gcG5nX2dldF91aW50XzMyKCZjaHVuay5wWzEyXSk7Cist CistICAgICAgICAgICAgICAgICAgICBtX2ZyYW1lX2NvdW50ID0gcG5nX2dldF91aW50XzMyKCZj aHVuay5wWzhdKTsKKy0gICAgICAgICAgICAgICAgICAgIGlmIChtX2ZyYW1lX2NvdW50ID09IDAp CistICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworLSAgICAgICAgICAgICAg ICB9CisrICAgICAgICAgICAgbV9mcmFtZV9jb3VudCA9IHBuZ19nZXRfdWludF8zMigmY2h1bmsu cFs4XSk7CisrICAgICAgICAgICAgaWYgKG1fZnJhbWVfY291bnQgPT0gMCkKKysgICAgICAgICAg ICAgICAgcmV0dXJuIGZhbHNlOworKyAgICAgICAgfQorIAorLSAgICAgICAgICAgICAgICBpZiAo aWQgPT0gaWRfZmNUTCkKKy0gICAgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICAgICAg Ly8gOD1IRFIrc2l6ZSwgMjY9c2l6ZSBvZiBmY1RMIGNodW5rLCA0PUNSQworLSAgICAgICAgICAg ICAgICAgICAgLy8gaHR0cHM6Ly93aWtpLm1vemlsbGEub3JnL0FQTkdfU3BlY2lmaWNhdGlvbiMl NjBmY1RMJTYwOl9UaGVfRnJhbWVfQ29udHJvbF9DaHVuaworLSAgICAgICAgICAgICAgICAgICAg aWYgKGNodW5rLnAuc2l6ZSgpICE9IDggKyAyNiArIDQpCistICAgICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIGZhbHNlOworLSAgICAgICAgICAgICAgICAgICAgbV9pc19mY1RMX2xvYWRlZCA9 IHRydWU7CistICAgICAgICAgICAgICAgICAgICB3MCA9IHBuZ19nZXRfdWludF8zMigmY2h1bmsu cFsxMl0pOworLSAgICAgICAgICAgICAgICAgICAgaDAgPSBwbmdfZ2V0X3VpbnRfMzIoJmNodW5r LnBbMTZdKTsKKy0gICAgICAgICAgICAgICAgICAgIHgwID0gcG5nX2dldF91aW50XzMyKCZjaHVu ay5wWzIwXSk7CistICAgICAgICAgICAgICAgICAgICB5MCA9IHBuZ19nZXRfdWludF8zMigmY2h1 bmsucFsyNF0pOworLSAgICAgICAgICAgICAgICAgICAgZGVsYXlfbnVtID0gcG5nX2dldF91aW50 XzE2KCZjaHVuay5wWzI4XSk7CistICAgICAgICAgICAgICAgICAgICBkZWxheV9kZW4gPSBwbmdf Z2V0X3VpbnRfMTYoJmNodW5rLnBbMzBdKTsKKy0gICAgICAgICAgICAgICAgICAgIGRvcCA9IGNo dW5rLnBbMzJdOworLSAgICAgICAgICAgICAgICAgICAgYm9wID0gY2h1bmsucFszM107CistICAg ICAgICAgICAgICAgIH0KKysgICAgICAgIGlmIChpZCA9PSBpZF9mY1RMKQorKyAgICAgICAgewor KyAgICAgICAgICAgIC8vIDg9SERSK3NpemUsIDI2PXNpemUgb2YgZmNUTCBjaHVuaywgND1DUkMK KysgICAgICAgICAgICAvLyBodHRwczovL3dpa2kubW96aWxsYS5vcmcvQVBOR19TcGVjaWZpY2F0 aW9uIyU2MGZjVEwlNjA6X1RoZV9GcmFtZV9Db250cm9sX0NodW5rCisrICAgICAgICAgICAgaWYg KGNodW5rLnAuc2l6ZSgpICE9IDggKyAyNiArIDQpCisrICAgICAgICAgICAgICAgIHJldHVybiBm YWxzZTsKKysgICAgICAgICAgICBtX2lzX2ZjVExfbG9hZGVkID0gdHJ1ZTsKKysgICAgICAgICAg ICB3MCA9IHBuZ19nZXRfdWludF8zMigmY2h1bmsucFsxMl0pOworKyAgICAgICAgICAgIGgwID0g cG5nX2dldF91aW50XzMyKCZjaHVuay5wWzE2XSk7CisrICAgICAgICAgICAgeDAgPSBwbmdfZ2V0 X3VpbnRfMzIoJmNodW5rLnBbMjBdKTsKKysgICAgICAgICAgICB5MCA9IHBuZ19nZXRfdWludF8z MigmY2h1bmsucFsyNF0pOworKyAgICAgICAgICAgIGRlbGF5X251bSA9IHBuZ19nZXRfdWludF8x NigmY2h1bmsucFsyOF0pOworKyAgICAgICAgICAgIGRlbGF5X2RlbiA9IHBuZ19nZXRfdWludF8x NigmY2h1bmsucFszMF0pOworKyAgICAgICAgICAgIGRvcCA9IGNodW5rLnBbMzJdOworKyAgICAg ICAgICAgIGJvcCA9IGNodW5rLnBbMzNdOworKyAgICAgICAgfQorIAorLSAgICAgICAgICAgICAg ICBpZiAoaWQgPT0gaWRfYktHRCkKKy0gICAgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAg ICAgICAgLy8gOD1IRFIrc2l6ZSwgPz89c2l6ZSBvZiBiS0dEIGNodW5rLCA0PUNSQworLSAgICAg ICAgICAgICAgICAgICAgLy8gVGhlIHNwZWMgaXMgYWN0dWFsbHkgbW9yZSBjb21wbGV4OiBodHRw Oi8vd3d3LmxpYnBuZy5vcmcvcHViL3BuZy9zcGVjLzEuMi9QTkctQ2h1bmtzLmh0bWwjQy5iS0dE CistICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiB3ZSBvbmx5IGNoZWNrIHRoYXQgNCBieXRl cyBjYW4gYmUgcmVhZCBmcm9tICZjaHVuay5wWzhdLiBGaXguCistICAgICAgICAgICAgICAgICAg ICBpZiAoY2h1bmsucC5zaXplKCkgPCA4ICsgNCkKKy0gICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gZmFsc2U7CistICAgICAgICAgICAgICAgICAgICBpbnQgYmdjb2xvciA9IHBuZ19nZXRf dWludF8zMigmY2h1bmsucFs4XSk7CistICAgICAgICAgICAgICAgICAgICBtX2FuaW1hdGlvbi5i Z2NvbG9yWzNdID0gKGJnY29sb3IgPj4gMjQpICYgMHhGRjsKKy0gICAgICAgICAgICAgICAgICAg IG1fYW5pbWF0aW9uLmJnY29sb3JbMl0gPSAoYmdjb2xvciA+PiAxNikgJiAweEZGOworLSAgICAg ICAgICAgICAgICAgICAgbV9hbmltYXRpb24uYmdjb2xvclsxXSA9IChiZ2NvbG9yID4+IDgpICYg MHhGRjsKKy0gICAgICAgICAgICAgICAgICAgIG1fYW5pbWF0aW9uLmJnY29sb3JbMF0gPSBiZ2Nv bG9yICYgMHhGRjsKKy0gICAgICAgICAgICAgICAgfQorKyAgICAgICAgaWYgKGlkID09IGlkX2JL R0QpCisrICAgICAgICB7CisrICAgICAgICAgICAgLy8gOD1IRFIrc2l6ZSwgPz89c2l6ZSBvZiBi S0dEIGNodW5rLCA0PUNSQworKyAgICAgICAgICAgIC8vIFRoZSBzcGVjIGlzIGFjdHVhbGx5IG1v cmUgY29tcGxleDogaHR0cDovL3d3dy5saWJwbmcub3JnL3B1Yi9wbmcvc3BlYy8xLjIvUE5HLUNo dW5rcy5odG1sI0MuYktHRAorKyAgICAgICAgICAgIC8vIFRPRE86IHdlIG9ubHkgY2hlY2sgdGhh dCA0IGJ5dGVzIGNhbiBiZSByZWFkIGZyb20gJmNodW5rLnBbOF0uIEZpeC4KKysgICAgICAgICAg ICBpZiAoY2h1bmsucC5zaXplKCkgPCA4ICsgNCkKKysgICAgICAgICAgICAgICAgcmV0dXJuIGZh bHNlOworKyAgICAgICAgICAgIGludCBiZ2NvbG9yID0gcG5nX2dldF91aW50XzMyKCZjaHVuay5w WzhdKTsKKysgICAgICAgICAgICBtX2FuaW1hdGlvbi5iZ2NvbG9yWzNdID0gKGJnY29sb3IgPj4g MjQpICYgMHhGRjsKKysgICAgICAgICAgICBtX2FuaW1hdGlvbi5iZ2NvbG9yWzJdID0gKGJnY29s b3IgPj4gMTYpICYgMHhGRjsKKysgICAgICAgICAgICBtX2FuaW1hdGlvbi5iZ2NvbG9yWzFdID0g KGJnY29sb3IgPj4gOCkgJiAweEZGOworKyAgICAgICAgICAgIG1fYW5pbWF0aW9uLmJnY29sb3Jb MF0gPSBiZ2NvbG9yICYgMHhGRjsKKysgICAgICAgIH0KKyAKKy0gICAgICAgICAgICAgICAgaWYg KGlkID09IGlkX1BMVEUgfHwgaWQgPT0gaWRfdFJOUykKKy0gICAgICAgICAgICAgICAgICAgIG1f Y2h1bmtzSW5mby5wdXNoX2JhY2soY2h1bmspOworLSAgICAgICAgICAgIH0KKysgICAgICAgIGlm IChpZCA9PSBpZF9QTFRFIHx8IGlkID09IGlkX3RSTlMpCisrICAgICAgICAgICAgbV9jaHVua3NJ bmZvLnB1c2hfYmFjayhjaHVuayk7CisrICAgIH0KKyAKKy0gICAgICAgICAgICBwbmdfdWludF8z MiB3ZHRoLCBoZ2h0OworLSAgICAgICAgICAgIGludCBiaXRfZGVwdGgsIGNvbG9yX3R5cGUsIG51 bV90cmFucz0wOworLSAgICAgICAgICAgIHBuZ19ieXRlcCB0cmFuczsKKy0gICAgICAgICAgICBw bmdfY29sb3JfMTZwIHRyYW5zX3ZhbHVlczsKKysgICAgcG5nX3VpbnRfMzIgd2R0aCwgaGdodDsK KysgICAgaW50IGJpdF9kZXB0aCwgY29sb3JfdHlwZSwgbnVtX3RyYW5zPTA7CisrICAgIHBuZ19i eXRlcCB0cmFuczsKKysgICAgcG5nX2NvbG9yXzE2cCB0cmFuc192YWx1ZXM7CisgCistICAgICAg ICAgICAgLy8gRnJlZSBjaHVuayBpbiBjYXNlIHBuZ19yZWFkX2luZm8gdXNlcyBsb25nam1wLgor LSAgICAgICAgICAgIGNodW5rLnAuY2xlYXIoKTsKKy0gICAgICAgICAgICBjaHVuay5wLnNocmlu a190b19maXQoKTsKKysgICAgLy8gRnJlZSBjaHVuayBpbiBjYXNlIHBuZ19yZWFkX2luZm8gdXNl cyBsb25nam1wLgorKyAgICBjaHVuay5wLmNsZWFyKCk7CisrICAgIGNodW5rLnAuc2hyaW5rX3Rv X2ZpdCgpOworIAorLSAgICAgICAgICAgIHBuZ19yZWFkX2luZm8oIHBuZ19wdHIsIGluZm9fcHRy ICk7CistICAgICAgICAgICAgcG5nX2dldF9JSERSKHBuZ19wdHIsIGluZm9fcHRyLCAmd2R0aCwg JmhnaHQsCistICAgICAgICAgICAgICAgICZiaXRfZGVwdGgsICZjb2xvcl90eXBlLCAwLCAwLCAw KTsKKysgICAgcG5nX3JlYWRfaW5mbyggbV9wbmdfcHRyLCBtX2luZm9fcHRyICk7CisrICAgIHBu Z19nZXRfSUhEUihtX3BuZ19wdHIsIG1faW5mb19wdHIsICZ3ZHRoLCAmaGdodCwKKysgICAgICAg ICZiaXRfZGVwdGgsICZjb2xvcl90eXBlLCAwLCAwLCAwKTsKKyAKKy0gICAgICAgICAgICBtX3dp ZHRoID0gKGludCl3ZHRoOworLSAgICAgICAgICAgIG1faGVpZ2h0ID0gKGludCloZ2h0OworLSAg ICAgICAgICAgIG1fY29sb3JfdHlwZSA9IGNvbG9yX3R5cGU7CistICAgICAgICAgICAgbV9iaXRf ZGVwdGggPSBiaXRfZGVwdGg7CisrICAgIG1fd2lkdGggPSAoaW50KXdkdGg7CisrICAgIG1faGVp Z2h0ID0gKGludCloZ2h0OworKyAgICBtX2NvbG9yX3R5cGUgPSBjb2xvcl90eXBlOworKyAgICBt X2JpdF9kZXB0aCA9IGJpdF9kZXB0aDsKKyAKKy0gICAgICAgICAgICBpZiAoYml0X2RlcHRoIDw9 IDggfHwgYml0X2RlcHRoID09IDE2KQorLSAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAg c3dpdGNoIChjb2xvcl90eXBlKQorLSAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAg IGNhc2UgUE5HX0NPTE9SX1RZUEVfUkdCOgorLSAgICAgICAgICAgICAgICBjYXNlIFBOR19DT0xP Ul9UWVBFX1BBTEVUVEU6CistICAgICAgICAgICAgICAgICAgICBwbmdfZ2V0X3RSTlMocG5nX3B0 ciwgaW5mb19wdHIsICZ0cmFucywgJm51bV90cmFucywgJnRyYW5zX3ZhbHVlcyk7CistICAgICAg ICAgICAgICAgICAgICBpZiAobnVtX3RyYW5zID4gMCkKKy0gICAgICAgICAgICAgICAgICAgICAg ICBtX3R5cGUgPSBDVl84VUM0OworLSAgICAgICAgICAgICAgICAgICAgZWxzZQorLSAgICAgICAg ICAgICAgICAgICAgICAgIG1fdHlwZSA9IENWXzhVQzM7CistICAgICAgICAgICAgICAgICAgICBi cmVhazsKKy0gICAgICAgICAgICAgICAgY2FzZSBQTkdfQ09MT1JfVFlQRV9HUkFZX0FMUEhBOgor LSAgICAgICAgICAgICAgICBjYXNlIFBOR19DT0xPUl9UWVBFX1JHQl9BTFBIQToKKy0gICAgICAg ICAgICAgICAgICAgIG1fdHlwZSA9IENWXzhVQzQ7CistICAgICAgICAgICAgICAgICAgICBicmVh azsKKy0gICAgICAgICAgICAgICAgZGVmYXVsdDoKKy0gICAgICAgICAgICAgICAgICAgIG1fdHlw ZSA9IENWXzhVQzE7CistICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgaWYgKGJp dF9kZXB0aCA9PSAxNikKKy0gICAgICAgICAgICAgICAgICAgIG1fdHlwZSA9IENWX01BS0VUWVBF KENWXzE2VSwgQ1ZfTUFUX0NOKG1fdHlwZSkpOworLSAgICAgICAgICAgICAgICByZXN1bHQgPSB0 cnVlOworLSAgICAgICAgICAgIH0KKy0gICAgICAgIH0KKy0gICAgfQorKyAgICBpZiAobV9pc19m Y1RMX2xvYWRlZCAmJiAoaW50KHgwICsgdzApID4gbV93aWR0aCB8fCBpbnQoeTAgKyBoMCkgPiBt X2hlaWdodCB8fCBkb3AgPiAyIHx8IGJvcCA+IDEpKQorKyAgICAgICAgcmV0dXJuIGZhbHNlOwor IAorLSAgICBpZihyZXN1bHQpCisrICAgIGlmIChiaXRfZGVwdGggPD0gOCB8fCBiaXRfZGVwdGgg PT0gMTYpCisgICAgIHsKKy0gICAgICAgIG1fcG5nX3B0cnMgPSBzdGQ6Om1vdmUocG5nX3B0cnMp OworKyAgICAgICAgc3dpdGNoIChjb2xvcl90eXBlKQorKyAgICAgICAgeworKyAgICAgICAgY2Fz ZSBQTkdfQ09MT1JfVFlQRV9SR0I6CisrICAgICAgICBjYXNlIFBOR19DT0xPUl9UWVBFX1BBTEVU VEU6CisrICAgICAgICAgICAgcG5nX2dldF90Uk5TKG1fcG5nX3B0ciwgbV9pbmZvX3B0ciwgJnRy YW5zLCAmbnVtX3RyYW5zLCAmdHJhbnNfdmFsdWVzKTsKKysgICAgICAgICAgICBpZiAobnVtX3Ry YW5zID4gMCkKKysgICAgICAgICAgICAgICAgbV90eXBlID0gQ1ZfOFVDNDsKKysgICAgICAgICAg ICBlbHNlCisrICAgICAgICAgICAgICAgIG1fdHlwZSA9IENWXzhVQzM7CisrICAgICAgICAgICAg YnJlYWs7CisrICAgICAgICBjYXNlIFBOR19DT0xPUl9UWVBFX0dSQVlfQUxQSEE6CisrICAgICAg ICBjYXNlIFBOR19DT0xPUl9UWVBFX1JHQl9BTFBIQToKKysgICAgICAgICAgICBtX3R5cGUgPSBD Vl84VUM0OworKyAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgZGVmYXVsdDoKKysgICAgICAg ICAgICBtX3R5cGUgPSBDVl84VUMxOworKyAgICAgICAgfQorKyAgICAgICAgaWYgKGJpdF9kZXB0 aCA9PSAxNikKKysgICAgICAgICAgICBtX3R5cGUgPSBDVl9NQUtFVFlQRShDVl8xNlUsIENWX01B VF9DTihtX3R5cGUpKTsKKyAgICAgfQorIAorLSAgICByZXR1cm4gcmVzdWx0OworKyAgICByZXR1 cm4gdHJ1ZTsKKyB9CisgCisgYm9vbCAgUG5nRGVjb2Rlcjo6cmVhZERhdGEoIE1hdCYgaW1nICkK KyB7CisrICAgIC8vIERlY2xhcmUgZHluYW1pYyB2YXJpYWJsZXMgYmVmb3JlIGEgcG90ZW50aWFs IGxvbmdqbXAuCisrICAgIEF1dG9CdWZmZXI8dW5zaWduZWQgY2hhcio+IF9idWZmZXIobV9oZWln aHQpOworKyAgICB1bnNpZ25lZCBjaGFyKiogYnVmZmVyID0gX2J1ZmZlci5kYXRhKCk7CisrICAg IENodW5rIGNodW5rOworKworICAgICBpZiAobV9mcmFtZV9jb3VudCA+IDEpCisgICAgIHsKKyAg ICAgICAgIE1hdCBtYXRfY3VyID0gTWF0Ojp6ZXJvcyhpbWcucm93cywgaW1nLmNvbHMsIG1fdHlw ZSk7CitAQCAtNDEyLDEzICs0MzAsMTQgQEAgYm9vbCAgUG5nRGVjb2Rlcjo6cmVhZERhdGEoIE1h dCYgaW1nICkKKyAKKyAgICAgICAgIGZyYW1lQ3VyLnNldE1hdChtYXRfY3VyKTsKKyAKKy0gICAg ICAgIHByb2Nlc3Npbmdfc3RhcnQoKHZvaWQqKSZmcmFtZVJhdywgbWF0X2N1cik7CistICAgICAg ICBwbmdfc3RydWN0cCBwbmdfcHRyID0gbV9wbmdfcHRycy5nZXRQbmcoKTsKKy0gICAgICAgIHBu Z19pbmZvcCBpbmZvX3B0ciA9IG1fcG5nX3B0cnMuZ2V0SW5mbygpOworKyAgICAgICAgaWYgKCFw cm9jZXNzaW5nX3N0YXJ0KCh2b2lkKikmZnJhbWVSYXcsIG1hdF9jdXIpKQorKyAgICAgICAgICAg IHJldHVybiBmYWxzZTsKKysKKysgICAgICAgIGlmKHNldGptcChwbmdfam1wYnVmKG1fcG5nX3B0 cikpKQorKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAKKyAgICAgICAgIHdoaWxlICh0cnVl KQorICAgICAgICAgeworLSAgICAgICAgICAgIENodW5rIGNodW5rOworICAgICAgICAgICAgIGlk ID0gcmVhZF9jaHVuayhjaHVuayk7CisgICAgICAgICAgICAgaWYgKCFpZCkKKyAgICAgICAgICAg ICAgICAgcmV0dXJuIGZhbHNlOworQEAgLTQ4MiwxNCArNTAxLDE0IEBAIGJvb2wgIFBuZ0RlY29k ZXI6OnJlYWREYXRhKCBNYXQmIGltZyApCisgICAgICAgICAgICAgZWxzZSBpZiAoaWQgPT0gaWRf SURBVCkKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIG1faXNfSURBVF9sb2FkZWQg PSB0cnVlOworLSAgICAgICAgICAgICAgICBwbmdfcHJvY2Vzc19kYXRhKHBuZ19wdHIsIGluZm9f cHRyLCBjaHVuay5wLmRhdGEoKSwgY2h1bmsucC5zaXplKCkpOworKyAgICAgICAgICAgICAgICBw bmdfcHJvY2Vzc19kYXRhKG1fcG5nX3B0ciwgbV9pbmZvX3B0ciwgY2h1bmsucC5kYXRhKCksIGNo dW5rLnAuc2l6ZSgpKTsKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgZWxzZSBpZiAoaWQg PT0gaWRfZmRBVCAmJiBtX2lzX2ZjVExfbG9hZGVkKQorICAgICAgICAgICAgIHsKKyAgICAgICAg ICAgICAgICAgbV9pc19JREFUX2xvYWRlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgIHBuZ19z YXZlX3VpbnRfMzIoJmNodW5rLnBbNF0sIHN0YXRpY19jYXN0PHVpbnQzMl90PihjaHVuay5wLnNp emUoKSAtIDE2KSk7CisgICAgICAgICAgICAgICAgIG1lbWNweSgmY2h1bmsucFs4XSwgIklEQVQi LCA0KTsKKy0gICAgICAgICAgICAgICAgcG5nX3Byb2Nlc3NfZGF0YShwbmdfcHRyLCBpbmZvX3B0 ciwgJmNodW5rLnBbNF0sIGNodW5rLnAuc2l6ZSgpIC0gNCk7CisrICAgICAgICAgICAgICAgIHBu Z19wcm9jZXNzX2RhdGEobV9wbmdfcHRyLCBtX2luZm9fcHRyLCAmY2h1bmsucFs0XSwgY2h1bmsu cC5zaXplKCkgLSA0KTsKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgZWxzZSBpZiAoaWQg PT0gaWRfSUVORCkKKyAgICAgICAgICAgICB7CitAQCAtNTEzLDMwICs1MzIsMjQgQEAgYm9vbCAg UG5nRGVjb2Rlcjo6cmVhZERhdGEoIE1hdCYgaW1nICkKKyAgICAgICAgICAgICAgICAgcmV0dXJu IHRydWU7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICAg ICAgcG5nX3Byb2Nlc3NfZGF0YShwbmdfcHRyLCBpbmZvX3B0ciwgY2h1bmsucC5kYXRhKCksIGNo dW5rLnAuc2l6ZSgpKTsKKysgICAgICAgICAgICAgICAgcG5nX3Byb2Nlc3NfZGF0YShtX3BuZ19w dHIsIG1faW5mb19wdHIsIGNodW5rLnAuZGF0YSgpLCBjaHVuay5wLnNpemUoKSk7CisgICAgICAg ICB9CisgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgIH0KKyAKKyAgICAgdm9sYXRpbGUgYm9v bCByZXN1bHQgPSBmYWxzZTsKKy0gICAgQXV0b0J1ZmZlcjx1bnNpZ25lZCBjaGFyKj4gX2J1ZmZl cihtX2hlaWdodCk7CistICAgIHVuc2lnbmVkIGNoYXIqKiBidWZmZXIgPSBfYnVmZmVyLmRhdGEo KTsKKyAgICAgYm9vbCBjb2xvciA9IGltZy5jaGFubmVscygpID4gMTsKKyAKKy0gICAgcG5nX3N0 cnVjdHAgcG5nX3B0ciA9IG1fcG5nX3B0cnMuZ2V0UG5nKCk7CistICAgIHBuZ19pbmZvcCBpbmZv X3B0ciA9IG1fcG5nX3B0cnMuZ2V0SW5mbygpOworLSAgICBwbmdfaW5mb3AgZW5kX2luZm8gPSBt X3BuZ19wdHJzLmdldEVuZEluZm8oKTsKKy0KKy0gICAgaWYoIHBuZ19wdHIgJiYgaW5mb19wdHIg JiYgZW5kX2luZm8gJiYgbV93aWR0aCAmJiBtX2hlaWdodCApCisrICAgIGlmKCBtX3BuZ19wdHIg JiYgbV9pbmZvX3B0ciAmJiBtX2VuZF9pbmZvICYmIG1fd2lkdGggJiYgbV9oZWlnaHQgKQorICAg ICB7CistICAgICAgICBpZiggc2V0am1wKCBwbmdfam1wYnVmICggcG5nX3B0ciApICkgPT0gMCAp CisrICAgICAgICBpZiggc2V0am1wKCBwbmdfam1wYnVmICggbV9wbmdfcHRyICkgKSA9PSAwICkK KyAgICAgICAgIHsKKyAgICAgICAgICAgICBpbnQgeTsKKyAKKyAgICAgICAgICAgICBpZiggaW1n LmRlcHRoKCkgPT0gQ1ZfOFUgJiYgbV9iaXRfZGVwdGggPT0gMTYgKQorLSAgICAgICAgICAgICAg ICBwbmdfc2V0X3N0cmlwXzE2KCBwbmdfcHRyICk7CisrICAgICAgICAgICAgICAgIHBuZ19zZXRf c3RyaXBfMTYoIG1fcG5nX3B0ciApOworICAgICAgICAgICAgIGVsc2UgaWYoICFpc0JpZ0VuZGlh bigpICkKKy0gICAgICAgICAgICAgICAgcG5nX3NldF9zd2FwKCBwbmdfcHRyICk7CisrICAgICAg ICAgICAgICAgIHBuZ19zZXRfc3dhcCggbV9wbmdfcHRyICk7CisgCisgICAgICAgICAgICAgaWYo aW1nLmNoYW5uZWxzKCkgPCA0KQorICAgICAgICAgICAgIHsKK0BAIC01NDgsNDYgKzU2MSw0NiBA QCBib29sICBQbmdEZWNvZGVyOjpyZWFkRGF0YSggTWF0JiBpbWcgKQorICAgICAgICAgICAgICAg ICAgKiBpbmRpY2F0ZSB0aGF0IGl0IGlzIGEgZ29vZCBpZGVhIHRvIGFsd2F5cyBhc2sgZm9yCisg ICAgICAgICAgICAgICAgICAqIHN0cmlwcGluZyBhbHBoYS4uICAxOC4xMS4yMDA0IEF4ZWwgV2Fs dGhlbG0KKyAgICAgICAgICAgICAgICAgICovCistICAgICAgICAgICAgICAgICBwbmdfc2V0X3N0 cmlwX2FscGhhKCBwbmdfcHRyICk7CisrICAgICAgICAgICAgICAgICBwbmdfc2V0X3N0cmlwX2Fs cGhhKCBtX3BuZ19wdHIgKTsKKyAgICAgICAgICAgICB9IGVsc2UKKy0gICAgICAgICAgICAgICAg cG5nX3NldF90Uk5TX3RvX2FscGhhKCBwbmdfcHRyICk7CisrICAgICAgICAgICAgICAgIHBuZ19z ZXRfdFJOU190b19hbHBoYSggbV9wbmdfcHRyICk7CisgCisgICAgICAgICAgICAgaWYoIG1fY29s b3JfdHlwZSA9PSBQTkdfQ09MT1JfVFlQRV9QQUxFVFRFICkKKy0gICAgICAgICAgICAgICAgcG5n X3NldF9wYWxldHRlX3RvX3JnYiggcG5nX3B0ciApOworKyAgICAgICAgICAgICAgICBwbmdfc2V0 X3BhbGV0dGVfdG9fcmdiKCBtX3BuZ19wdHIgKTsKKyAKKyAgICAgICAgICAgICBpZiggKG1fY29s b3JfdHlwZSAmIFBOR19DT0xPUl9NQVNLX0NPTE9SKSA9PSAwICYmIG1fYml0X2RlcHRoIDwgOCAp CisgI2lmIChQTkdfTElCUE5HX1ZFUl9NQUpPUioxMDAwMCArIFBOR19MSUJQTkdfVkVSX01JTk9S KjEwMCArIFBOR19MSUJQTkdfVkVSX1JFTEVBU0UgPj0gMTAyMDkpIHx8IFwKKyAgICAgKFBOR19M SUJQTkdfVkVSX01BSk9SID09IDEgJiYgUE5HX0xJQlBOR19WRVJfTUlOT1IgPT0gMCAmJiBQTkdf TElCUE5HX1ZFUl9SRUxFQVNFID49IDE4KQorLSAgICAgICAgICAgICAgICBwbmdfc2V0X2V4cGFu ZF9ncmF5XzFfMl80X3RvXzgoIHBuZ19wdHIgKTsKKysgICAgICAgICAgICAgICAgcG5nX3NldF9l eHBhbmRfZ3JheV8xXzJfNF90b184KCBtX3BuZ19wdHIgKTsKKyAjZWxzZQorICAgICAgICAgICAg ICAgICBwbmdfc2V0X2dyYXlfMV8yXzRfdG9fOCggcG5nX3B0ciApOworICNlbmRpZgorIAorICAg ICAgICAgICAgIGlmKCAobV9jb2xvcl90eXBlICYgUE5HX0NPTE9SX01BU0tfQ09MT1IpICYmIGNv bG9yICYmICFtX3VzZV9yZ2IpCistICAgICAgICAgICAgICAgIHBuZ19zZXRfYmdyKCBwbmdfcHRy ICk7IC8vIGNvbnZlcnQgUkdCIHRvIEJHUgorKyAgICAgICAgICAgICAgICBwbmdfc2V0X2Jncigg bV9wbmdfcHRyICk7IC8vIGNvbnZlcnQgUkdCIHRvIEJHUgorICAgICAgICAgICAgIGVsc2UgaWYo IGNvbG9yICkKKy0gICAgICAgICAgICAgICAgcG5nX3NldF9ncmF5X3RvX3JnYiggcG5nX3B0ciAp OyAvLyBHcmF5LT5SR0IKKysgICAgICAgICAgICAgICAgcG5nX3NldF9ncmF5X3RvX3JnYiggbV9w bmdfcHRyICk7IC8vIEdyYXktPlJHQgorICAgICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICAg ICAgcG5nX3NldF9yZ2JfdG9fZ3JheSggcG5nX3B0ciwgMSwgMC4yOTksIDAuNTg3ICk7IC8vIFJH Qi0+R3JheQorKyAgICAgICAgICAgICAgICBwbmdfc2V0X3JnYl90b19ncmF5KCBtX3BuZ19wdHIs IDEsIDAuMjk5LCAwLjU4NyApOyAvLyBSR0ItPkdyYXkKKyAKKy0gICAgICAgICAgICBwbmdfc2V0 X2ludGVybGFjZV9oYW5kbGluZyggcG5nX3B0ciApOworLSAgICAgICAgICAgIHBuZ19yZWFkX3Vw ZGF0ZV9pbmZvKCBwbmdfcHRyLCBpbmZvX3B0ciApOworKyAgICAgICAgICAgIHBuZ19zZXRfaW50 ZXJsYWNlX2hhbmRsaW5nKCBtX3BuZ19wdHIgKTsKKysgICAgICAgICAgICBwbmdfcmVhZF91cGRh dGVfaW5mbyggbV9wbmdfcHRyLCBtX2luZm9fcHRyICk7CisgCisgICAgICAgICAgICAgZm9yKCB5 ID0gMDsgeSA8IG1faGVpZ2h0OyB5KysgKQorICAgICAgICAgICAgICAgICBidWZmZXJbeV0gPSBp bWcuZGF0YSArIHkqaW1nLnN0ZXA7CisgCistICAgICAgICAgICAgcG5nX3JlYWRfaW1hZ2UoIHBu Z19wdHIsIGJ1ZmZlciApOworLSAgICAgICAgICAgIHBuZ19yZWFkX2VuZCggcG5nX3B0ciwgZW5k X2luZm8gKTsKKysgICAgICAgICAgICBwbmdfcmVhZF9pbWFnZSggbV9wbmdfcHRyLCBidWZmZXIg KTsKKysgICAgICAgICAgICBwbmdfcmVhZF9lbmQoIG1fcG5nX3B0ciwgbV9lbmRfaW5mbyApOwor IAorICNpZmRlZiBQTkdfZVhJZl9TVVBQT1JURUQKKyAgICAgICAgICAgICBwbmdfdWludF8zMiBu dW1fZXhpZiA9IDA7CisgICAgICAgICAgICAgcG5nX2J5dGVwIGV4aWYgPSAwOworIAorICAgICAg ICAgICAgIC8vIEV4aWYgaW5mbyBjb3VsZCBiZSBpbiBpbmZvX3B0ciAoaW50cm9faW5mbykgb3Ig ZW5kX2luZm8gcGVyIHNwZWNpZmljYXRpb24KKy0gICAgICAgICAgICBpZiggcG5nX2dldF92YWxp ZChwbmdfcHRyLCBpbmZvX3B0ciwgUE5HX0lORk9fZVhJZikgKQorLSAgICAgICAgICAgICAgICBw bmdfZ2V0X2VYSWZfMShwbmdfcHRyLCBpbmZvX3B0ciwgJm51bV9leGlmLCAmZXhpZik7CistICAg ICAgICAgICAgZWxzZSBpZiggcG5nX2dldF92YWxpZChwbmdfcHRyLCBlbmRfaW5mbywgUE5HX0lO Rk9fZVhJZikgKQorLSAgICAgICAgICAgICAgICBwbmdfZ2V0X2VYSWZfMShwbmdfcHRyLCBlbmRf aW5mbywgJm51bV9leGlmLCAmZXhpZik7CisrICAgICAgICAgICAgaWYoIHBuZ19nZXRfdmFsaWQo bV9wbmdfcHRyLCBtX2luZm9fcHRyLCBQTkdfSU5GT19lWElmKSApCisrICAgICAgICAgICAgICAg IHBuZ19nZXRfZVhJZl8xKG1fcG5nX3B0ciwgbV9pbmZvX3B0ciwgJm51bV9leGlmLCAmZXhpZik7 CisrICAgICAgICAgICAgZWxzZSBpZiggcG5nX2dldF92YWxpZChtX3BuZ19wdHIsIG1fZW5kX2lu Zm8sIFBOR19JTkZPX2VYSWYpICkKKysgICAgICAgICAgICAgICAgcG5nX2dldF9lWElmXzEobV9w bmdfcHRyLCBtX2VuZF9pbmZvLCAmbnVtX2V4aWYsICZleGlmKTsKKyAKKyAgICAgICAgICAgICBp ZiggZXhpZiAmJiBudW1fZXhpZiA+IDAgKQorICAgICAgICAgICAgIHsKK0BAIC03MTksNDIgKzcz MiwzNCBAQCB1aW50MzJfdCBQbmdEZWNvZGVyOjpyZWFkX2NodW5rKENodW5rJiBjaHVuaykKKyAK KyBib29sIFBuZ0RlY29kZXI6OnByb2Nlc3Npbmdfc3RhcnQodm9pZCogZnJhbWVfcHRyLCBjb25z dCBNYXQmIGltZykKKyB7CistICAgIHN0YXRpYyB1aW50OF90IGhlYWRlcls4XSA9IHsgMTM3LCA4 MCwgNzgsIDcxLCAxMywgMTAsIDI2LCAxMCB9OworLQorLSAgICBQbmdQdHJzIHBuZ19wdHJzOwor LSAgICBwbmdfc3RydWN0cCBwbmdfcHRyID0gcG5nX3B0cnMuZ2V0UG5nKCk7CistICAgIHBuZ19p bmZvcCBpbmZvX3B0ciA9IHBuZ19wdHJzLmdldEluZm8oKTsKKy0KKy0gICAgaWYgKCFwbmdfcHRy IHx8ICFpbmZvX3B0cikgeworKyAgICBpZiAoIUluaXRQbmdQdHIoKSkKKyAgICAgICAgIHJldHVy biBmYWxzZTsKKy0gICAgfQorIAorLSAgICBpZiAoc2V0am1wKHBuZ19qbXBidWYocG5nX3B0cikp KQorLSAgICB7CisrICAgIGlmIChzZXRqbXAocG5nX2ptcGJ1ZihtX3BuZ19wdHIpKSkKKyAgICAg ICAgIHJldHVybiBmYWxzZTsKKy0gICAgfQorIAorLSAgICBtX3BuZ19wdHJzID0gc3RkOjptb3Zl KHBuZ19wdHJzKTsKKy0gICAgcG5nX3NldF9jcmNfYWN0aW9uKHBuZ19wdHIsIFBOR19DUkNfUVVJ RVRfVVNFLCBQTkdfQ1JDX1FVSUVUX1VTRSk7CistICAgIHBuZ19zZXRfcHJvZ3Jlc3NpdmVfcmVh ZF9mbihwbmdfcHRyLCBmcmFtZV9wdHIsIChwbmdfcHJvZ3Jlc3NpdmVfaW5mb19wdHIpaW5mb19m biwgcm93X2ZuLCBOVUxMKTsKKysgICAgc3RhdGljIHVpbnQ4X3QgaGVhZGVyWzhdID0geyAxMzcs IDgwLCA3OCwgNzEsIDEzLCAxMCwgMjYsIDEwIH07CisrCisrICAgIHBuZ19zZXRfY3JjX2FjdGlv bihtX3BuZ19wdHIsIFBOR19DUkNfUVVJRVRfVVNFLCBQTkdfQ1JDX1FVSUVUX1VTRSk7CisrICAg IHBuZ19zZXRfcHJvZ3Jlc3NpdmVfcmVhZF9mbihtX3BuZ19wdHIsIGZyYW1lX3B0ciwgKHBuZ19w cm9ncmVzc2l2ZV9pbmZvX3B0cilpbmZvX2ZuLCByb3dfZm4sIE5VTEwpOworIAorICAgICBpZiAo aW1nLmNoYW5uZWxzKCkgPCA0KQorLSAgICAgICAgcG5nX3NldF9zdHJpcF9hbHBoYShwbmdfcHRy KTsKKysgICAgICAgIHBuZ19zZXRfc3RyaXBfYWxwaGEobV9wbmdfcHRyKTsKKyAgICAgZWxzZQor LSAgICAgICAgcG5nX3NldF90Uk5TX3RvX2FscGhhKHBuZ19wdHIpOworKyAgICAgICAgcG5nX3Nl dF90Uk5TX3RvX2FscGhhKG1fcG5nX3B0cik7CisgCistICAgIHBuZ19wcm9jZXNzX2RhdGEocG5n X3B0ciwgaW5mb19wdHIsIGhlYWRlciwgOCk7CistICAgIHBuZ19wcm9jZXNzX2RhdGEocG5nX3B0 ciwgaW5mb19wdHIsIG1fY2h1bmtJSERSLnAuZGF0YSgpLCBtX2NodW5rSUhEUi5wLnNpemUoKSk7 CisrICAgIHBuZ19wcm9jZXNzX2RhdGEobV9wbmdfcHRyLCBtX2luZm9fcHRyLCBoZWFkZXIsIDgp OworKyAgICBwbmdfcHJvY2Vzc19kYXRhKG1fcG5nX3B0ciwgbV9pbmZvX3B0ciwgbV9jaHVua0lI RFIucC5kYXRhKCksIG1fY2h1bmtJSERSLnAuc2l6ZSgpKTsKKyAKKyAgICAgaWYgKChtX2NvbG9y X3R5cGUgJiBQTkdfQ09MT1JfTUFTS19DT0xPUikgJiYgaW1nLmNoYW5uZWxzKCkgPiAxICYmICFt X3VzZV9yZ2IpCistICAgICAgICBwbmdfc2V0X2JncihwbmdfcHRyKTsgLy8gY29udmVydCBSR0Ig dG8gQkdSCisrICAgICAgICBwbmdfc2V0X2JncihtX3BuZ19wdHIpOyAvLyBjb252ZXJ0IFJHQiB0 byBCR1IKKyAgICAgZWxzZSBpZiAoaW1nLmNoYW5uZWxzKCkgPiAxKQorLSAgICAgICAgcG5nX3Nl dF9ncmF5X3RvX3JnYihwbmdfcHRyKTsgLy8gR3JheS0+UkdCCisrICAgICAgICBwbmdfc2V0X2dy YXlfdG9fcmdiKG1fcG5nX3B0cik7IC8vIEdyYXktPlJHQgorICAgICBlbHNlCistICAgICAgICBw bmdfc2V0X3JnYl90b19ncmF5KHBuZ19wdHIsIDEsIDAuMjk5LCAwLjU4Nyk7IC8vIFJHQi0+R3Jh eQorKyAgICAgICAgcG5nX3NldF9yZ2JfdG9fZ3JheShtX3BuZ19wdHIsIDEsIDAuMjk5LCAwLjU4 Nyk7IC8vIFJHQi0+R3JheQorIAorICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY2h1bmtz SW5mby5zaXplKCk7IGkrKykKKy0gICAgICAgIHBuZ19wcm9jZXNzX2RhdGEocG5nX3B0ciwgaW5m b19wdHIsIG1fY2h1bmtzSW5mb1tpXS5wLmRhdGEoKSwgbV9jaHVua3NJbmZvW2ldLnAuc2l6ZSgp KTsKKysgICAgICAgIHBuZ19wcm9jZXNzX2RhdGEobV9wbmdfcHRyLCBtX2luZm9fcHRyLCBtX2No dW5rc0luZm9baV0ucC5kYXRhKCksIG1fY2h1bmtzSW5mb1tpXS5wLnNpemUoKSk7CisgCisgICAg IHJldHVybiB0cnVlOworIH0KK0BAIC03NjMsMjIgKzc2OCwxNyBAQCBib29sIFBuZ0RlY29kZXI6 OnByb2Nlc3NpbmdfZmluaXNoKCkKKyB7CisgICAgIHN0YXRpYyB1aW50OF90IGZvb3RlclsxMl0g PSB7IDAsIDAsIDAsIDAsIDczLCA2OSwgNzgsIDY4LCAxNzQsIDY2LCA5NiwgMTMwIH07CisgCist ICAgIHBuZ19zdHJ1Y3RwIHBuZ19wdHIgPSBtX3BuZ19wdHJzLmdldFBuZygpOworLSAgICBwbmdf aW5mb3AgaW5mb19wdHIgPSBtX3BuZ19wdHJzLmdldEluZm8oKTsKKy0KKy0gICAgaWYgKCFwbmdf cHRyKSB7CistICAgICAgICBtX3BuZ19wdHJzLmNsZWFyKCk7CisrICAgIGlmICghbV9wbmdfcHRy KSB7CisgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgIH0KKyAKKy0gICAgaWYgKHNldGptcChw bmdfam1wYnVmKHBuZ19wdHIpKSkKKysgICAgaWYgKHNldGptcChwbmdfam1wYnVmKG1fcG5nX3B0 cikpKQorICAgICB7CistICAgICAgICBtX3BuZ19wdHJzLmNsZWFyKCk7CisgICAgICAgICByZXR1 cm4gZmFsc2U7CisgICAgIH0KKyAKKy0gICAgcG5nX3Byb2Nlc3NfZGF0YShwbmdfcHRyLCBpbmZv X3B0ciwgZm9vdGVyLCAxMik7CistICAgIG1fcG5nX3B0cnMuY2xlYXIoKTsKKysgICAgcG5nX3By b2Nlc3NfZGF0YShtX3BuZ19wdHIsIG1faW5mb19wdHIsIGZvb3RlciwgMTIpOworKyAgICBDbGVh clBuZ1B0cigpOworIAorICAgICByZXR1cm4gdHJ1ZTsKKyB9CitkaWZmIC0tZ2l0IGEvbW9kdWxl cy9pbWdjb2RlY3Mvc3JjL2dyZm10X3BuZy5ocHAgYi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3Jm bXRfcG5nLmhwcAoraW5kZXggZGVjMmNkMGI2MS4uNWRmYzg2ZWZjYyAxMDA2NDQKKy0tLSBhL21v ZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9wbmcuaHBwCisrKysgYi9tb2R1bGVzL2ltZ2NvZGVj cy9zcmMvZ3JmbXRfcG5nLmhwcAorQEAgLTEzMCw1NiArMTMwLDIxIEBAIHB1YmxpYzoKKyAKKyAg ICAgSW1hZ2VEZWNvZGVyIG5ld0RlY29kZXIoKSBjb25zdCBDVl9PVkVSUklERTsKKyAKKy1wcm90 ZWN0ZWQ6CisrcHJpdmF0ZToKKyAgICAgc3RhdGljIHZvaWQgcmVhZERhdGFGcm9tQnVmKHZvaWQq IHBuZ19wdHIsIHVjaGFyKiBkc3QsIHNpemVfdCBzaXplKTsKKyAgICAgc3RhdGljIHZvaWQgaW5m b19mbihwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfaW5mb3AgaW5mb19wdHIpOworICAgICBzdGF0 aWMgdm9pZCByb3dfZm4ocG5nX3N0cnVjdHAgcG5nX3B0ciwgcG5nX2J5dGVwIG5ld19yb3csIHBu Z191aW50XzMyIHJvd19udW0sIGludCBwYXNzKTsKKy0gICAgYm9vbCBwcm9jZXNzaW5nX3N0YXJ0 KHZvaWQqIGZyYW1lX3B0ciwgY29uc3QgTWF0JiBpbWcpOworLSAgICBib29sIHByb2Nlc3Npbmdf ZmluaXNoKCk7CisrICAgIENWX05PRElTQ0FSRF9TVEQgYm9vbCBwcm9jZXNzaW5nX3N0YXJ0KHZv aWQqIGZyYW1lX3B0ciwgY29uc3QgTWF0JiBpbWcpOworKyAgICBDVl9OT0RJU0NBUkRfU1REIGJv b2wgcHJvY2Vzc2luZ19maW5pc2goKTsKKyAgICAgdm9pZCBjb21wb3NlX2ZyYW1lKHN0ZDo6dmVj dG9yPHBuZ19ieXRlcD4mIHJvd3NfZHN0LCBjb25zdCBzdGQ6OnZlY3RvcjxwbmdfYnl0ZXA+JiBy b3dzX3NyYywgdW5zaWduZWQgY2hhciBib3AsIHVpbnQzMl90IHgsIHVpbnQzMl90IHksIHVpbnQz Ml90IHcsIHVpbnQzMl90IGgsIE1hdCYgaW1nKTsKKy0gICAgYm9vbCByZWFkX2Zyb21faW8odm9p ZCogYnVmZmVyLCBzaXplX3QgbnVtX2J5dGVzKTsKKysgICAgQ1ZfTk9ESVNDQVJEX1NURCBib29s IHJlYWRfZnJvbV9pbyh2b2lkKiBidWZmZXIsIHNpemVfdCBudW1fYnl0ZXMpOworICAgICB1aW50 MzJfdCAgcmVhZF9jaHVuayhDaHVuayYgY2h1bmspOworKyAgICBDVl9OT0RJU0NBUkRfU1REIGJv b2wgSW5pdFBuZ1B0cigpOworKyAgICB2b2lkIENsZWFyUG5nUHRyKCk7CisgCistICAgIHN0cnVj dCBQbmdQdHJzIHsKKy0gICAgICAgIHB1YmxpYzoKKy0gICAgICAgICAgICBQbmdQdHJzKCkgewor LSAgICAgICAgICAgICAgICBwbmdfcHRyID0gcG5nX2NyZWF0ZV9yZWFkX3N0cnVjdCggUE5HX0xJ QlBOR19WRVJfU1RSSU5HLCAwLCAwLCAwICk7CistICAgICAgICAgICAgICAgIGlmIChwbmdfcHRy KSB7CistICAgICAgICAgICAgICAgICAgICBpbmZvX3B0ciA9IHBuZ19jcmVhdGVfaW5mb19zdHJ1 Y3QoIHBuZ19wdHIgKTsKKy0gICAgICAgICAgICAgICAgICAgIGVuZF9pbmZvID0gcG5nX2NyZWF0 ZV9pbmZvX3N0cnVjdCggcG5nX3B0ciApOworLSAgICAgICAgICAgICAgICB9IGVsc2UgeworLSAg ICAgICAgICAgICAgICAgICAgaW5mb19wdHIgPSBlbmRfaW5mbyA9IG51bGxwdHI7CistICAgICAg ICAgICAgICAgIH0KKy0gICAgICAgICAgICB9CistICAgICAgICAgICAgflBuZ1B0cnMoKSB7Cist ICAgICAgICAgICAgICAgIGNsZWFyKCk7CistICAgICAgICAgICAgfQorLSAgICAgICAgICAgIFBu Z1B0cnMmIG9wZXJhdG9yPShQbmdQdHJzJiYgb3RoZXIpIHsKKy0gICAgICAgICAgICAgICAgY2xl YXIoKTsKKy0gICAgICAgICAgICAgICAgcG5nX3B0ciA9IG90aGVyLnBuZ19wdHI7CistICAgICAg ICAgICAgICAgIGluZm9fcHRyID0gb3RoZXIuaW5mb19wdHI7CistICAgICAgICAgICAgICAgIGVu ZF9pbmZvID0gb3RoZXIuZW5kX2luZm87CistICAgICAgICAgICAgICAgIG90aGVyLnBuZ19wdHIg PSBudWxscHRyOworLSAgICAgICAgICAgICAgICBvdGhlci5pbmZvX3B0ciA9IG90aGVyLmVuZF9p bmZvID0gbnVsbHB0cjsKKy0gICAgICAgICAgICAgICAgcmV0dXJuICp0aGlzOworLSAgICAgICAg ICAgIH0KKy0gICAgICAgICAgICB2b2lkIGNsZWFyKCkgeworLSAgICAgICAgICAgICAgICBpZiAo cG5nX3B0cikgeworLSAgICAgICAgICAgICAgICAgICAgcG5nX2Rlc3Ryb3lfcmVhZF9zdHJ1Y3Qo JnBuZ19wdHIsICZpbmZvX3B0ciwgJmVuZF9pbmZvKTsKKy0gICAgICAgICAgICAgICAgICAgIHBu Z19wdHIgPSBudWxscHRyOworLSAgICAgICAgICAgICAgICAgICAgaW5mb19wdHIgPSBlbmRfaW5m byA9IG51bGxwdHI7CistICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICB9CistICAgICAg ICAgICAgcG5nX3N0cnVjdHAgZ2V0UG5nKCkgY29uc3QgeyByZXR1cm4gcG5nX3B0cjsgfQorLSAg ICAgICAgICAgIHBuZ19pbmZvcCBnZXRJbmZvKCkgY29uc3QgeyByZXR1cm4gaW5mb19wdHI7IH0K Ky0gICAgICAgICAgICBwbmdfaW5mb3AgZ2V0RW5kSW5mbygpIGNvbnN0IHsgcmV0dXJuIGVuZF9p bmZvOyB9CistICAgICAgICBwcml2YXRlOgorLSAgICAgICAgICAgIHBuZ19zdHJ1Y3RwIHBuZ19w dHI7IC8vIHBvaW50ZXIgdG8gZGVjb21wcmVzc2lvbiBzdHJ1Y3R1cmUKKy0gICAgICAgICAgICBw bmdfaW5mb3AgaW5mb19wdHI7IC8vIHBvaW50ZXIgdG8gaW1hZ2UgaW5mb3JtYXRpb24gc3RydWN0 dXJlCistICAgICAgICAgICAgcG5nX2luZm9wIGVuZF9pbmZvOyAvLyBwb2ludGVyIHRvIG9uZSBt b3JlIGltYWdlIGluZm9ybWF0aW9uIHN0cnVjdHVyZQorLSAgICB9OworLQorLSAgICBQbmdQdHJz IG1fcG5nX3B0cnM7CisrICAgIHBuZ19zdHJ1Y3RwIG1fcG5nX3B0ciA9IG51bGxwdHI7IC8vIHBv aW50ZXIgdG8gZGVjb21wcmVzc2lvbiBzdHJ1Y3R1cmUKKysgICAgcG5nX2luZm9wIG1faW5mb19w dHIgPSBudWxscHRyOyAvLyBwb2ludGVyIHRvIGltYWdlIGluZm9ybWF0aW9uIHN0cnVjdHVyZQor KyAgICBwbmdfaW5mb3AgbV9lbmRfaW5mbyA9IG51bGxwdHI7IC8vIHBvaW50ZXIgdG8gb25lIG1v cmUgaW1hZ2UgaW5mb3JtYXRpb24gc3RydWN0dXJlCisgICAgIGludCAgIG1fYml0X2RlcHRoOwor ICAgICBGSUxFKiBtX2Y7CisgICAgIGludCAgIG1fY29sb3JfdHlwZTsKKy0tIAorMi40OC4xCisK CmRpZmYgLS1naXQgYS8wMDA0LU1vdmUtdGhlLWNoZWNrcy10by1yZWFkX2NodW5rLnBhdGNoIGIv MDAwNC1Nb3ZlLXRoZS1jaGVja3MtdG8tcmVhZF9jaHVuay5wYXRjaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi41MTM3ODcyCi0tLSAvZGV2L251bGwKKysrIGIvMDAwNC1Nb3Zl LXRoZS1jaGVja3MtdG8tcmVhZF9jaHVuay5wYXRjaApAQCAtMCwwICsxLDEyMSBAQAorRnJvbSBl YmExYTg5NTVmOWQ3ZjhhYThjNmIzZGRlZTQ1NjVlZTQxODUxMzZjIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQorRnJvbTogVmluY2VudCBSYWJhdWQgPHZyYWJhdWRAZ29vZ2xlLmNvbT4KK0RhdGU6 IFRodSwgMjMgSmFuIDIwMjUgMTY6MzA6MzggKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAwNC8xMF0g TW92ZSB0aGUgY2hlY2tzIHRvIHJlYWRfY2h1bmsuCisKK09ubHkgdXNlciBjaHVua3MgbmVlZCB0 byBiZSBjb21wYXJlZCB0byBQTkdfVVNFUl9DSFVOS19NQUxMT0NfTUFYCistLS0KKyBtb2R1bGVz L2ltZ2NvZGVjcy9zcmMvZ3JmbXRfcG5nLmNwcCB8IDYwICsrKysrKysrKysrKysrKysrLS0tLS0t LS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDM2IGluc2VydGlvbnMoKyksIDI0IGRlbGV0aW9ucygt KQorCitkaWZmIC0tZ2l0IGEvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X3BuZy5jcHAgYi9t b2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfcG5nLmNwcAoraW5kZXggMTA1Mjg4YzVlNS4uNjRl ZjU2YzhjNSAxMDA2NDQKKy0tLSBhL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9wbmcuY3Bw CisrKysgYi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfcG5nLmNwcAorQEAgLTI3OCwxMiAr Mjc4LDggQEAgYm9vbCAgUG5nRGVjb2Rlcjo6cmVhZEhlYWRlcigpCisgICAgICAgICByZXR1cm4g ZmFsc2U7CisgCisgICAgIGlkID0gcmVhZF9jaHVuayhtX2NodW5rSUhEUik7CistICAgIC8vIDg9 SERSK3NpemUsIDEzPXNpemUgb2YgSUhEUiBjaHVuaywgND1DUkMKKy0gICAgLy8gaHR0cDovL3d3 dy5saWJwbmcub3JnL3B1Yi9wbmcvc3BlYy8xLjIvUE5HLUNodW5rcy5odG1sI0MuSUhEUgorLSAg ICBpZiAoIShpZCA9PSBpZF9JSERSICYmIG1fY2h1bmtJSERSLnAuc2l6ZSgpID09IDggKyAxMyAr IDQpKQorLSAgICB7CisrICAgIGlmIChpZCAhPSBpZF9JSERSKQorICAgICAgICAgcmV0dXJuIGZh bHNlOworLSAgICB9CisgCisgICAgIG1faXNfZmNUTF9sb2FkZWQgPSBmYWxzZTsKKyAgICAgd2hp bGUgKHRydWUpCitAQCAtMzA2LDEwICszMDIsNyBAQCBib29sICBQbmdEZWNvZGVyOjpyZWFkSGVh ZGVyKCkKKyAKKyAgICAgICAgIGlmIChpZCA9PSBpZF9hY1RMKQorICAgICAgICAgeworLSAgICAg ICAgICAgIC8vIDg9SERSK3NpemUsIDg9c2l6ZSBvZiBhY1RMIGNodW5rLCA0PUNSQworICAgICAg ICAgICAgIC8vIGh0dHBzOi8vd2lraS5tb3ppbGxhLm9yZy9BUE5HX1NwZWNpZmljYXRpb24jJTYw YWNUTCU2MDpfVGhlX0FuaW1hdGlvbl9Db250cm9sX0NodW5rCistICAgICAgICAgICAgaWYgKGNo dW5rLnAuc2l6ZSgpICE9IDggKyA4ICsgNCkKKy0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl OworICAgICAgICAgICAgIG1fYW5pbWF0aW9uLmxvb3BfY291bnQgPSBwbmdfZ2V0X3VpbnRfMzIo JmNodW5rLnBbMTJdKTsKKyAKKyAgICAgICAgICAgICBtX2ZyYW1lX2NvdW50ID0gcG5nX2dldF91 aW50XzMyKCZjaHVuay5wWzhdKTsKK0BAIC0zMTksMTAgKzMxMiw3IEBAIGJvb2wgIFBuZ0RlY29k ZXI6OnJlYWRIZWFkZXIoKQorIAorICAgICAgICAgaWYgKGlkID09IGlkX2ZjVEwpCisgICAgICAg ICB7CistICAgICAgICAgICAgLy8gOD1IRFIrc2l6ZSwgMjY9c2l6ZSBvZiBmY1RMIGNodW5rLCA0 PUNSQworICAgICAgICAgICAgIC8vIGh0dHBzOi8vd2lraS5tb3ppbGxhLm9yZy9BUE5HX1NwZWNp ZmljYXRpb24jJTYwZmNUTCU2MDpfVGhlX0ZyYW1lX0NvbnRyb2xfQ2h1bmsKKy0gICAgICAgICAg ICBpZiAoY2h1bmsucC5zaXplKCkgIT0gOCArIDI2ICsgNCkKKy0gICAgICAgICAgICAgICAgcmV0 dXJuIGZhbHNlOworICAgICAgICAgICAgIG1faXNfZmNUTF9sb2FkZWQgPSB0cnVlOworICAgICAg ICAgICAgIHcwID0gcG5nX2dldF91aW50XzMyKCZjaHVuay5wWzEyXSk7CisgICAgICAgICAgICAg aDAgPSBwbmdfZ2V0X3VpbnRfMzIoJmNodW5rLnBbMTZdKTsKK0BAIC0zMzYsMTEgKzMyNiw3IEBA IGJvb2wgIFBuZ0RlY29kZXI6OnJlYWRIZWFkZXIoKQorIAorICAgICAgICAgaWYgKGlkID09IGlk X2JLR0QpCisgICAgICAgICB7CistICAgICAgICAgICAgLy8gOD1IRFIrc2l6ZSwgPz89c2l6ZSBv ZiBiS0dEIGNodW5rLCA0PUNSQworICAgICAgICAgICAgIC8vIFRoZSBzcGVjIGlzIGFjdHVhbGx5 IG1vcmUgY29tcGxleDogaHR0cDovL3d3dy5saWJwbmcub3JnL3B1Yi9wbmcvc3BlYy8xLjIvUE5H LUNodW5rcy5odG1sI0MuYktHRAorLSAgICAgICAgICAgIC8vIFRPRE86IHdlIG9ubHkgY2hlY2sg dGhhdCA0IGJ5dGVzIGNhbiBiZSByZWFkIGZyb20gJmNodW5rLnBbOF0uIEZpeC4KKy0gICAgICAg ICAgICBpZiAoY2h1bmsucC5zaXplKCkgPCA4ICsgNCkKKy0gICAgICAgICAgICAgICAgcmV0dXJu IGZhbHNlOworICAgICAgICAgICAgIGludCBiZ2NvbG9yID0gcG5nX2dldF91aW50XzMyKCZjaHVu ay5wWzhdKTsKKyAgICAgICAgICAgICBtX2FuaW1hdGlvbi5iZ2NvbG9yWzNdID0gKGJnY29sb3Ig Pj4gMjQpICYgMHhGRjsKKyAgICAgICAgICAgICBtX2FuaW1hdGlvbi5iZ2NvbG9yWzJdID0gKGJn Y29sb3IgPj4gMTYpICYgMHhGRjsKK0BAIC03MTMsMjAgKzY5OSw0NiBAQCBib29sIFBuZ0RlY29k ZXI6OnJlYWRfZnJvbV9pbyh2b2lkKiBidWZmZXIsIHNpemVfdCBudW1fYnl0ZXMpCisgCisgdWlu dDMyX3QgUG5nRGVjb2Rlcjo6cmVhZF9jaHVuayhDaHVuayYgY2h1bmspCisgeworLSAgICB1bnNp Z25lZCBjaGFyIGxlbls0XTsKKy0gICAgaWYgKHJlYWRfZnJvbV9pbygmbGVuLCA0KSkKKy0gICAg eworLSAgICAgICAgY29uc3Qgc2l6ZV90IHNpemUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHBuZ19n ZXRfdWludF8zMihsZW4pKSArIDEyOworKyAgICB1bnNpZ25lZCBjaGFyIHNpemVfaWRbOF07Cisr ICAgIGlmICghcmVhZF9mcm9tX2lvKCZzaXplX2lkLCA4KSkKKysgICAgICAgIHJldHVybiAwOwor KyAgICBjb25zdCBzaXplX3Qgc2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4ocG5nX2dldF91aW50 XzMyKHNpemVfaWQpKSArIDEyOworKworKyAgICBjb25zdCB1aW50MzJfdCBpZCA9ICoodWludDMy X3QqKSgmc2l6ZV9pZFs0XSk7CisrICAgIGlmIChpZCA9PSBpZF9JSERSKSB7CisrICAgICAgICAv LyA4PUhEUitzaXplLCAxMz1zaXplIG9mIElIRFIgY2h1bmssIDQ9Q1JDCisrICAgICAgICAvLyBo dHRwOi8vd3d3LmxpYnBuZy5vcmcvcHViL3BuZy9zcGVjLzEuMi9QTkctQ2h1bmtzLmh0bWwjQy5J SERSCisrICAgICAgICBpZiAoc2l6ZSAhPSA4ICsgMTMgKyA0KQorKyAgICAgICAgICAgIHJldHVy biAwOworKyAgICB9IGVsc2UgaWYgKGlkID09IGlkX2FjVEwpIHsKKysgICAgICAgIC8vIDg9SERS K3NpemUsIDg9c2l6ZSBvZiBhY1RMIGNodW5rLCA0PUNSQworKyAgICAgICAgLy8gaHR0cHM6Ly93 aWtpLm1vemlsbGEub3JnL0FQTkdfU3BlY2lmaWNhdGlvbiMlNjBhY1RMJTYwOl9UaGVfQW5pbWF0 aW9uX0NvbnRyb2xfQ2h1bmsKKysgICAgICAgIGlmIChzaXplICE9IDggKyA4ICsgNCkKKysgICAg ICAgICAgICByZXR1cm4gMDsKKysgICAgfSBlbHNlIGlmIChpZCA9PSBpZF9mY1RMKSB7CisrICAg ICAgICAvLyA4PUhEUitzaXplLCAyNj1zaXplIG9mIGZjVEwgY2h1bmssIDQ9Q1JDCisrICAgICAg ICAvLyBodHRwczovL3dpa2kubW96aWxsYS5vcmcvQVBOR19TcGVjaWZpY2F0aW9uIyU2MGZjVEwl NjA6X1RoZV9GcmFtZV9Db250cm9sX0NodW5rCisrICAgICAgICBpZiAoc2l6ZSAhPSA4ICsgMjYg KyA0KQorKyAgICAgICAgICAgIHJldHVybiAwOworKyAgICB9IGVsc2UgaWYgKGlkID09IGlkX2JL R0QpIHsKKysgICAgICAgIC8vIDg9SERSK3NpemUsID8/PXNpemUgb2YgYktHRCBjaHVuaywgND1D UkMKKysgICAgICAgIC8vIFRoZSBzcGVjIGlzIGFjdHVhbGx5IG1vcmUgY29tcGxleDoKKysgICAg ICAgIC8vIGh0dHA6Ly93d3cubGlicG5nLm9yZy9wdWIvcG5nL3NwZWMvMS4yL1BORy1DaHVua3Mu aHRtbCNDLmJLR0QKKysgICAgICAgIC8vIFRPRE86IHdlIG9ubHkgY2hlY2sgdGhhdCA0IGJ5dGVz IGNhbiBiZSByZWFkIGZyb20gJmNodW5rLnBbOF0uIEZpeC4KKysgICAgICAgIGlmIChzaXplIDwg OCArIDQpCisrICAgICAgICAgICAgcmV0dXJuIDA7CisrICAgIH0gZWxzZSBpZiAoaWQgIT0gaWRf ZmRBVCAmJiBpZCAhPSBpZF9JREFUICYmIGlkICE9IGlkX0lFTkQgJiYgaWQgIT0gaWRfUExURSAm JiBpZCAhPSBpZF90Uk5TKSB7CisgICAgICAgICBpZiAoc2l6ZSA+IFBOR19VU0VSX0NIVU5LX01B TExPQ19NQVgpCisgICAgICAgICB7CistICAgICAgICAgICAgQ1ZfTE9HX1dBUk5JTkcoTlVMTCwg ImNodW5rIGRhdGEgaXMgdG9vIGxhcmdlIik7CisrICAgICAgICAgICAgQ1ZfTE9HX1dBUk5JTkco TlVMTCwgInVzZXIgY2h1bmsgZGF0YSBpcyB0b28gbGFyZ2UiKTsKKyAgICAgICAgICAgICByZXR1 cm4gMDsKKyAgICAgICAgIH0KKy0gICAgICAgIGNodW5rLnAucmVzaXplKHNpemUpOworLSAgICAg ICAgbWVtY3B5KGNodW5rLnAuZGF0YSgpLCBsZW4sIDQpOworLSAgICAgICAgaWYgKHJlYWRfZnJv bV9pbygmY2h1bmsucFs0XSwgY2h1bmsucC5zaXplKCkgLSA0KSkKKy0gICAgICAgICAgICByZXR1 cm4gKih1aW50MzJfdCopKCZjaHVuay5wWzRdKTsKKyAgICAgfQorKworKyAgICBjaHVuay5wLnJl c2l6ZShzaXplKTsKKysgICAgbWVtY3B5KGNodW5rLnAuZGF0YSgpLCBzaXplX2lkLCA4KTsKKysg ICAgaWYgKHJlYWRfZnJvbV9pbygmY2h1bmsucFs4XSwgY2h1bmsucC5zaXplKCkgLSA4KSkKKysg ICAgICAgIHJldHVybiBpZDsKKyAgICAgcmV0dXJuIDA7CisgfQorIAorLS0gCisyLjQ4LjEKKwoK ZGlmZiAtLWdpdCBhLzAwMDUtbWlub3ItaW1wcm92ZW1lbnQtZm9yLWJldHRlci1jb2RlLXJlYWRp YmlsaXR5LnBhdGNoIGIvMDAwNS1taW5vci1pbXByb3ZlbWVudC1mb3ItYmV0dGVyLWNvZGUtcmVh ZGliaWxpdHkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY3N2Mz MwotLS0gL2Rldi9udWxsCisrKyBiLzAwMDUtbWlub3ItaW1wcm92ZW1lbnQtZm9yLWJldHRlci1j b2RlLXJlYWRpYmlsaXR5LnBhdGNoCkBAIC0wLDAgKzEsMTcwIEBACitGcm9tIDQ5YzNhNWVjYTU4 Mjc2ZGFjYTQyMDdjMzhhMTU3OTA4MGFhZGUyM2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitG cm9tOiBTdWxleW1hbiBUVVJLTUVOIDxzdHVya21lbkBob3RtYWlsLmNvbT4KK0RhdGU6IEZyaSwg MjQgSmFuIDIwMjUgMTU6MzE6NTMgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSCAwNS8xMF0gbWlub3Ig aW1wcm92ZW1lbnQgZm9yIGJldHRlciBjb2RlIHJlYWRpYmlsaXR5CisKKy0tLQorIG1vZHVsZXMv aW1nY29kZWNzL3NyYy9ncmZtdF9wbmcuY3BwIHwgNDEgKysrKysrKysrKysrKysrKysrLS0tLS0t LS0tLS0KKyBtb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfcG5nLmhwcCB8IDI3ICsrKysrKysr KysrKysrKysrLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDUwIGluc2VydGlvbnMoKyksIDE4IGRlbGV0 aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X3BuZy5j cHAgYi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfcG5nLmNwcAoraW5kZXggNjRlZjU2Yzhj NS4uMDhlMzdlYzBjMyAxMDA2NDQKKy0tLSBhL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9w bmcuY3BwCisrKysgYi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfcG5nLmNwcAorQEAgLTI3 NCw3ICsyNzQsNyBAQCBib29sICBQbmdEZWNvZGVyOjpyZWFkSGVhZGVyKCkKKyAgICAgfQorIAor ICAgICAvLyBSZWFkIFBORyBoZWFkZXI6IDEzNyA4MCA3OCA3MSAxMyAxMCAyNiAxMAorLSAgICBp ZiAoIXJlYWRfZnJvbV9pbygmc2lnLCA4KSkKKysgICAgaWYgKCFyZWFkRnJvbVN0cmVhbU9yQnVm ZmVyKCZzaWcsIDgpKQorICAgICAgICAgcmV0dXJuIGZhbHNlOworIAorICAgICBpZCA9IHJlYWRf Y2h1bmsobV9jaHVua0lIRFIpOworQEAgLTY4Miw3ICs2ODIsNyBAQCB2b2lkIFBuZ0RlY29kZXI6 OmNvbXBvc2VfZnJhbWUoc3RkOjp2ZWN0b3I8cG5nX2J5dGVwPiYgcm93c19kc3QsIGNvbnN0IHN0 ZDo6dmVjdAorICAgICAgICAgICAgIH0pOworIH0KKyAKKy1ib29sIFBuZ0RlY29kZXI6OnJlYWRf ZnJvbV9pbyh2b2lkKiBidWZmZXIsIHNpemVfdCBudW1fYnl0ZXMpCisrYm9vbCBQbmdEZWNvZGVy OjpyZWFkRnJvbVN0cmVhbU9yQnVmZmVyKHZvaWQqIGJ1ZmZlciwgc2l6ZV90IG51bV9ieXRlcykK KyB7CisgICAgIGlmIChtX2YpCisgICAgICAgICByZXR1cm4gZnJlYWQoYnVmZmVyLCAxLCBudW1f Ynl0ZXMsIG1fZikgPT0gbnVtX2J5dGVzOworQEAgLTcwMCw3ICs3MDAsNyBAQCBib29sIFBuZ0Rl Y29kZXI6OnJlYWRfZnJvbV9pbyh2b2lkKiBidWZmZXIsIHNpemVfdCBudW1fYnl0ZXMpCisgdWlu dDMyX3QgUG5nRGVjb2Rlcjo6cmVhZF9jaHVuayhDaHVuayYgY2h1bmspCisgeworICAgICB1bnNp Z25lZCBjaGFyIHNpemVfaWRbOF07CistICAgIGlmICghcmVhZF9mcm9tX2lvKCZzaXplX2lkLCA4 KSkKKysgICAgaWYgKCFyZWFkRnJvbVN0cmVhbU9yQnVmZmVyKCZzaXplX2lkLCA4KSkKKyAgICAg ICAgIHJldHVybiAwOworICAgICBjb25zdCBzaXplX3Qgc2l6ZSA9IHN0YXRpY19jYXN0PHNpemVf dD4ocG5nX2dldF91aW50XzMyKHNpemVfaWQpKSArIDEyOworIAorQEAgLTczNyw3ICs3MzcsNyBA QCB1aW50MzJfdCBQbmdEZWNvZGVyOjpyZWFkX2NodW5rKENodW5rJiBjaHVuaykKKyAKKyAgICAg Y2h1bmsucC5yZXNpemUoc2l6ZSk7CisgICAgIG1lbWNweShjaHVuay5wLmRhdGEoKSwgc2l6ZV9p ZCwgOCk7CistICAgIGlmIChyZWFkX2Zyb21faW8oJmNodW5rLnBbOF0sIGNodW5rLnAuc2l6ZSgp IC0gOCkpCisrICAgIGlmIChyZWFkRnJvbVN0cmVhbU9yQnVmZmVyKCZjaHVuay5wWzhdLCBjaHVu ay5wLnNpemUoKSAtIDgpKQorICAgICAgICAgcmV0dXJuIGlkOworICAgICByZXR1cm4gMDsKKyB9 CitAQCAtOTYwLDE1ICs5NjAsMjQgQEAgYm9vbCAgUG5nRW5jb2Rlcjo6d3JpdGUoIGNvbnN0IE1h dCYgaW1nLCBjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+JiBwYXJhbXMgKQorICAgICByZXR1cm4gcmVz dWx0OworIH0KKyAKKy1zaXplX3QgUG5nRW5jb2Rlcjo6d3JpdGVfdG9faW8odm9pZCBjb25zdCog X0J1ZmZlciwgc2l6ZV90ICBfRWxlbWVudFNpemUsIHNpemVfdCBfRWxlbWVudENvdW50LCBGSUxF ICogX1N0cmVhbSkKKytzaXplX3QgUG5nRW5jb2Rlcjo6d3JpdGVUb1N0cmVhbU9yQnVmZmVyKHZv aWQgY29uc3QqIGJ1ZmZlciwgc2l6ZV90IG51bV9ieXRlcywgRklMRSogc3RyZWFtKQorIHsKKy0g ICAgaWYgKF9TdHJlYW0pCistICAgICAgICByZXR1cm4gZndyaXRlKF9CdWZmZXIsIF9FbGVtZW50 U2l6ZSwgX0VsZW1lbnRDb3VudCwgX1N0cmVhbSk7CisrICAgIGlmICghYnVmZmVyIHx8ICFudW1f Ynl0ZXMpCisrICAgICAgICByZXR1cm4gMDsgLy8gSGFuZGxlIG51bGwgYnVmZmVyIG9yIGVtcHR5 IHdyaXRlcworKworKyAgICBpZiAoc3RyZWFtKQorKyAgICB7CisrICAgICAgICBzaXplX3Qgd3Jp dHRlbiA9IGZ3cml0ZShidWZmZXIsIDEsIG51bV9ieXRlcywgc3RyZWFtKTsKKysgICAgICAgIHJl dHVybiB3cml0dGVuOyAvLyBmd3JpdGUgaGFuZGxlcyB0aGUgd3JpdGUgY291bnQKKysgICAgfQor IAorICAgICBzaXplX3QgY3Vyc3ogPSBtX2J1Zi0+c2l6ZSgpOworLSAgICBtX2J1Zi0+cmVzaXpl KGN1cnN6ICsgX0VsZW1lbnRDb3VudCk7CistICAgIG1lbWNweSggJigqbV9idWYpW2N1cnN6XSwg X0J1ZmZlciwgX0VsZW1lbnRDb3VudCApOworLSAgICByZXR1cm4gX0VsZW1lbnRDb3VudDsKKysg ICAgaWYgKGN1cnN6ICsgbnVtX2J5dGVzID4gbV9idWYtPm1heF9zaXplKCkpCisrICAgICAgICB0 aHJvdyBzdGQ6OnJ1bnRpbWVfZXJyb3IoIkJ1ZmZlciBzaXplIGV4Y2VlZHMgbWF4aW11bSBjYXBh Y2l0eSIpOworKworKyAgICBtX2J1Zi0+cmVzaXplKGN1cnN6ICsgbnVtX2J5dGVzKTsKKysgICAg bWVtY3B5KCYoKm1fYnVmKVtjdXJzel0sIGJ1ZmZlciwgbnVtX2J5dGVzKTsKKysgICAgcmV0dXJu IG51bV9ieXRlczsKKyB9CisgCisgdm9pZCBQbmdFbmNvZGVyOjp3cml0ZUNodW5rKEZJTEUqIGYs IGNvbnN0IGNoYXIqIG5hbWUsIHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVpbnQzMl90IGxlbmd0aCkK K0BAIC05NzcsMjYgKzk4NiwyNiBAQCB2b2lkIFBuZ0VuY29kZXI6OndyaXRlQ2h1bmsoRklMRSog ZiwgY29uc3QgY2hhciogbmFtZSwgdW5zaWduZWQgY2hhciogZGF0YSwgdWludAorICAgICB1aW50 MzJfdCBjcmMgPSBjcmMzMigwLCBaX05VTEwsIDApOworIAorICAgICBwbmdfc2F2ZV91aW50XzMy KGJ1ZiwgbGVuZ3RoKTsKKy0gICAgd3JpdGVfdG9faW8oYnVmLCAxLCA0LCBmKTsKKy0gICAgd3Jp dGVfdG9faW8obmFtZSwgMSwgNCwgZik7CisrICAgIHdyaXRlVG9TdHJlYW1PckJ1ZmZlcihidWYs IDQsIGYpOworKyAgICB3cml0ZVRvU3RyZWFtT3JCdWZmZXIobmFtZSwgNCwgZik7CisgICAgIGNy YyA9IGNyYzMyKGNyYywgKGNvbnN0IEJ5dGVmKiluYW1lLCA0KTsKKyAKKyAgICAgaWYgKG1lbWNt cChuYW1lLCAiZmRBVCIsIDQpID09IDApCisgICAgIHsKKyAgICAgICAgIHBuZ19zYXZlX3VpbnRf MzIoYnVmLCBuZXh0X3NlcV9udW0rKyk7CistICAgICAgICB3cml0ZV90b19pbyhidWYsIDEsIDQs IGYpOworKyAgICAgICAgd3JpdGVUb1N0cmVhbU9yQnVmZmVyKGJ1ZiwgNCwgZik7CisgICAgICAg ICBjcmMgPSBjcmMzMihjcmMsIGJ1ZiwgNCk7CisgICAgICAgICBsZW5ndGggLT0gNDsKKyAgICAg fQorIAorICAgICBpZiAoZGF0YSAhPSBOVUxMICYmIGxlbmd0aCA+IDApCisgICAgIHsKKy0gICAg ICAgIHdyaXRlX3RvX2lvKGRhdGEsIDEsIGxlbmd0aCwgZik7CisrICAgICAgICB3cml0ZVRvU3Ry ZWFtT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBmKTsKKyAgICAgICAgIGNyYyA9IGNyYzMyKGNyYywg ZGF0YSwgbGVuZ3RoKTsKKyAgICAgfQorIAorICAgICBwbmdfc2F2ZV91aW50XzMyKGJ1ZiwgY3Jj KTsKKy0gICAgd3JpdGVfdG9faW8oYnVmLCAxLCA0LCBmKTsKKysgICAgd3JpdGVUb1N0cmVhbU9y QnVmZmVyKGJ1ZiwgNCwgZik7CisgfQorIAorIHZvaWQgUG5nRW5jb2Rlcjo6d3JpdGVJREFUcyhG SUxFKiBmLCBpbnQgZnJhbWUsIHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVpbnQzMl90IGxlbmd0aCwg dWludDMyX3QgaWRhdF9zaXplKQorQEAgLTE1MjEsNyArMTUzMCw3IEBAIGJvb2wgUG5nRW5jb2Rl cjo6d3JpdGVhbmltYXRpb24oY29uc3QgQW5pbWF0aW9uJiBhbmltYXRpb24sIGNvbnN0IHN0ZDo6 dmVjdG9yPGluCisgICAgICAgICBwbmdfc2F2ZV91aW50XzMyKGJ1Zl9hY1RMLCBudW1fZnJhbWVz IC0gZmlyc3QpOworICAgICAgICAgcG5nX3NhdmVfdWludF8zMihidWZfYWNUTCArIDQsIGxvb3Bz KTsKKyAKKy0gICAgICAgIHdyaXRlX3RvX2lvKGhlYWRlciwgMSwgOCwgbV9mKTsKKysgICAgICAg IHdyaXRlVG9TdHJlYW1PckJ1ZmZlcihoZWFkZXIsIDgsIG1fZik7CisgCisgICAgICAgICB3cml0 ZUNodW5rKG1fZiwgIklIRFIiLCBidWZfSUhEUiwgMTMpOworIAorZGlmZiAtLWdpdCBhL21vZHVs ZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9wbmcuaHBwIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dy Zm10X3BuZy5ocHAKK2luZGV4IDVkZmM4NmVmY2MuLjZlMWEwNjQ3M2QgMTAwNjQ0CistLS0gYS9t b2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfcG5nLmhwcAorKysrIGIvbW9kdWxlcy9pbWdjb2Rl Y3Mvc3JjL2dyZm10X3BuZy5ocHAKK0BAIC0xMzcsNyArMTM3LDEzIEBAIHByaXZhdGU6CisgICAg IENWX05PRElTQ0FSRF9TVEQgYm9vbCBwcm9jZXNzaW5nX3N0YXJ0KHZvaWQqIGZyYW1lX3B0ciwg Y29uc3QgTWF0JiBpbWcpOworICAgICBDVl9OT0RJU0NBUkRfU1REIGJvb2wgcHJvY2Vzc2luZ19m aW5pc2goKTsKKyAgICAgdm9pZCBjb21wb3NlX2ZyYW1lKHN0ZDo6dmVjdG9yPHBuZ19ieXRlcD4m IHJvd3NfZHN0LCBjb25zdCBzdGQ6OnZlY3RvcjxwbmdfYnl0ZXA+JiByb3dzX3NyYywgdW5zaWdu ZWQgY2hhciBib3AsIHVpbnQzMl90IHgsIHVpbnQzMl90IHksIHVpbnQzMl90IHcsIHVpbnQzMl90 IGgsIE1hdCYgaW1nKTsKKy0gICAgQ1ZfTk9ESVNDQVJEX1NURCBib29sIHJlYWRfZnJvbV9pbyh2 b2lkKiBidWZmZXIsIHNpemVfdCBudW1fYnl0ZXMpOworKyAgICAvKioKKysgICAgICogQGJyaWVm IFJlYWRzIGRhdGEgZnJvbSBhbiBJL08gc291cmNlIGludG8gdGhlIHByb3ZpZGVkIGJ1ZmZlci4K KysgICAgICogQHBhcmFtIGJ1ZmZlciBQb2ludGVyIHRvIHRoZSBidWZmZXIgd2hlcmUgdGhlIGRh dGEgd2lsbCBiZSBzdG9yZWQuCisrICAgICAqIEBwYXJhbSBudW1fYnl0ZXMgTnVtYmVyIG9mIGJ5 dGVzIHRvIHJlYWQgaW50byB0aGUgYnVmZmVyLgorKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhl IG9wZXJhdGlvbiBpcyBzdWNjZXNzZnVsLCBmYWxzZSBvdGhlcndpc2UuCisrICAgICAqLworKyAg ICBDVl9OT0RJU0NBUkRfU1REIGJvb2wgcmVhZEZyb21TdHJlYW1PckJ1ZmZlcih2b2lkKiBidWZm ZXIsIHNpemVfdCBudW1fYnl0ZXMpOworICAgICB1aW50MzJfdCAgcmVhZF9jaHVuayhDaHVuayYg Y2h1bmspOworICAgICBDVl9OT0RJU0NBUkRfU1REIGJvb2wgSW5pdFBuZ1B0cigpOworICAgICB2 b2lkIENsZWFyUG5nUHRyKCk7CitAQCAtMTg1LDcgKzE5MSwyNCBAQCBwdWJsaWM6CisgcHJvdGVj dGVkOgorICAgICBzdGF0aWMgdm9pZCB3cml0ZURhdGFUb0J1Zih2b2lkKiBwbmdfcHRyLCB1bnNp Z25lZCBjaGFyKiBzcmMsIHNpemVfdCBzaXplKTsKKyAgICAgc3RhdGljIHZvaWQgZmx1c2hCdWYo dm9pZCogcG5nX3B0cik7CistICAgIHNpemVfdCB3cml0ZV90b19pbyh2b2lkIGNvbnN0KiBfQnVm ZmVyLCBzaXplX3QgIF9FbGVtZW50U2l6ZSwgc2l6ZV90IF9FbGVtZW50Q291bnQsIEZJTEUqIF9T dHJlYW0pOworKyAgICAvKioKKysgICAgKiBAYnJpZWYgV3JpdGVzIGRhdGEgdG8gYW4gb3V0cHV0 IGRlc3RpbmF0aW9uLCBlaXRoZXIgYSBmaWxlIHN0cmVhbSBvciBhbiBpbi1tZW1vcnkgYnVmZmVy LgorKyAgICAqCisrICAgICogVGhpcyBmdW5jdGlvbiBoYW5kbGVzIHR3byBvdXRwdXQgc2NlbmFy aW9zOgorKyAgICAqIDEuIElmIGEgZmlsZSBzdHJlYW0gaXMgcHJvdmlkZWQsIHRoZSBkYXRhIGlz IHdyaXR0ZW4gdG8gdGhlIHN0cmVhbSB1c2luZyBgZndyaXRlYC4KKysgICAgKiAyLiBJZiBgc3Ry ZWFtYCBpcyBudWxsLCB0aGUgZGF0YSBpcyB3cml0dGVuIHRvIGFuIGluLW1lbW9yeSBidWZmZXIg KGBtX2J1ZmApLCB3aGljaCBpcyByZXNpemVkIGFzIG5lZWRlZC4KKysgICAgKgorKyAgICAqIEBw YXJhbSBidWZmZXIgUG9pbnRlciB0byB0aGUgZGF0YSB0byBiZSB3cml0dGVuLgorKyAgICAqIEBw YXJhbSBudW1fYnl0ZXMgVGhlIG51bWJlciBvZiBieXRlcyB0byBiZSB3cml0dGVuLgorKyAgICAq IEBwYXJhbSBzdHJlYW0gUG9pbnRlciB0byB0aGUgZmlsZSBzdHJlYW0gZm9yIHdyaXRpbmcuIElm IG51bGwsIHRoZSBkYXRhIGlzIHdyaXR0ZW4gdG8gdGhlIGluLW1lbW9yeSBidWZmZXIuCisrICAg ICogQHJldHVybiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHN1Y2Nlc3NmdWxseSB3cml0dGVuLgorKyAg ICAqICAgICAgICAgLSBGb3IgZmlsZS1iYXNlZCB3cml0ZXMsIHRoaXMgaXMgdGhlIG51bWJlciBv ZiBieXRlcyB3cml0dGVuIHRvIHRoZSBzdHJlYW0uCisrICAgICogICAgICAgICAtIEZvciBidWZm ZXItYmFzZWQgd3JpdGVzLCB0aGlzIGlzIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgYWRkZWQg dG8gdGhlIGJ1ZmZlci4KKysgICAgKgorKyAgICAqIEB0aHJvd3Mgc3RkOjpydW50aW1lX2Vycm9y IElmIHRoZSBpbi1tZW1vcnkgYnVmZmVyIChgbV9idWZgKSBleGNlZWRzIGl0cyBtYXhpbXVtIGNh cGFjaXR5LgorKyAgICAqIEBub3RlIElmIGBudW1fYnl0ZXNgIGlzIDAgb3IgYGJ1ZmZlcmAgaXMg bnVsbCwgdGhlIGZ1bmN0aW9uIHJldHVybnMgMC4KKysgICAgKi8KKysgICAgc2l6ZV90IHdyaXRl VG9TdHJlYW1PckJ1ZmZlcih2b2lkIGNvbnN0KiBidWZmZXIsIHNpemVfdCAgbnVtX2J5dGVzLCBG SUxFKiBzdHJlYW0pOworIAorIHByaXZhdGU6CisgICAgIHZvaWQgd3JpdGVDaHVuayhGSUxFKiBm LCBjb25zdCBjaGFyKiBuYW1lLCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1aW50MzJfdCBsZW5ndGgp OworLS0gCisyLjQ4LjEKKwoKZGlmZiAtLWdpdCBhLzAwMDYtTWVyZ2UtcHVsbC1yZXF1ZXN0LTI2 ODM1LWZyb20tc3R1cmttZW43Mi1wYXRjaC00LnBhdGNoIGIvMDAwNi1NZXJnZS1wdWxsLXJlcXVl c3QtMjY4MzUtZnJvbS1zdHVya21lbjcyLXBhdGNoLTQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uYmE1YzQ2ZgotLS0gL2Rldi9udWxsCisrKyBiLzAwMDYtTWVyZ2Ut cHVsbC1yZXF1ZXN0LTI2ODM1LWZyb20tc3R1cmttZW43Mi1wYXRjaC00LnBhdGNoCkBAIC0wLDAg KzEsMTMzIEBACitGcm9tIDgxMzFlMjdlODI0NzQwYWZhNDQ3YTEyOWU3MmEyZjZhMzg3NmNiYzkg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTdWxleW1hbiBUVVJLTUVOIDxzdHVya21l bkBob3RtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMjUgSmFuIDIwMjUgMDk6MzE6MDAgKzAzMDAKK1N1 YmplY3Q6IFtQQVRDSCAwNi8xMF0gTWVyZ2UgcHVsbCByZXF1ZXN0ICMyNjgzNSBmcm9tIHN0dXJr bWVuNzI6cGF0Y2gtNAorCitDb3JyZWN0aW9ucyBvbiBiS0dEIGNodW5rIHdyaXRpbmcgYW5kIHJl YWRpbmcgaW4gUE5HICMyNjgzNQorCisjIyMgUHVsbCBSZXF1ZXN0IFJlYWRpbmVzcyBDaGVja2xp c3QKKworU2VlIGRldGFpbHMgYXQgaHR0cHM6Ly9naXRodWIuY29tL29wZW5jdi9vcGVuY3Yvd2lr aS9Ib3dfdG9fY29udHJpYnV0ZSNtYWtpbmctYS1nb29kLXB1bGwtcmVxdWVzdAorCistIFt4XSBJ IGFncmVlIHRvIGNvbnRyaWJ1dGUgdG8gdGhlIHByb2plY3QgdW5kZXIgQXBhY2hlIDIgTGljZW5z ZS4KKy0gW3hdIFRvIHRoZSBiZXN0IG9mIG15IGtub3dsZWRnZSwgdGhlIHByb3Bvc2VkIHBhdGNo IGlzIG5vdCBiYXNlZCBvbiBhIGNvZGUgdW5kZXIgR1BMIG9yIGFub3RoZXIgbGljZW5zZSB0aGF0 IGlzIGluY29tcGF0aWJsZSB3aXRoIE9wZW5DVgorLSBbeF0gVGhlIFBSIGlzIHByb3Bvc2VkIHRv IHRoZSBwcm9wZXIgYnJhbmNoCistIFsgXSBUaGVyZSBpcyBhIHJlZmVyZW5jZSB0byB0aGUgb3Jp Z2luYWwgYnVnIHJlcG9ydCBhbmQgcmVsYXRlZCB3b3JrCistIFsgXSBUaGVyZSBpcyBhY2N1cmFj eSB0ZXN0LCBwZXJmb3JtYW5jZSB0ZXN0IGFuZCB0ZXN0IGRhdGEgaW4gb3BlbmN2X2V4dHJhIHJl cG9zaXRvcnksIGlmIGFwcGxpY2FibGUKKyAgICAgIFBhdGNoIHRvIG9wZW5jdl9leHRyYSBoYXMg dGhlIHNhbWUgYnJhbmNoIG5hbWUuCistIFsgXSBUaGUgZmVhdHVyZSBpcyB3ZWxsIGRvY3VtZW50 ZWQgYW5kIHNhbXBsZSBjb2RlIGNhbiBiZSBidWlsdCB3aXRoIHRoZSBwcm9qZWN0IENNYWtlCist LS0KKyBtb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfcG5nLmNwcCAgICAgICB8IDI2ICsrKysr KysrLS0tLS0tLS0tCisgbW9kdWxlcy9pbWdjb2RlY3MvdGVzdC90ZXN0X2FuaW1hdGlvbi5jcHAg fCAzNSArKysrKysrKysrKysrKysrKysrKysrLQorIDIgZmlsZXMgY2hhbmdlZCwgNDYgaW5zZXJ0 aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tb2R1bGVzL2ltZ2NvZGVj cy9zcmMvZ3JmbXRfcG5nLmNwcCBiL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9wbmcuY3Bw CitpbmRleCAwOGUzN2VjMGMzLi40ZWMzMjgwNjA3IDEwMDY0NAorLS0tIGEvbW9kdWxlcy9pbWdj b2RlY3Mvc3JjL2dyZm10X3BuZy5jcHAKKysrKyBiL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZt dF9wbmcuY3BwCitAQCAtMzI3LDExICszMjcsMTAgQEAgYm9vbCAgUG5nRGVjb2Rlcjo6cmVhZEhl YWRlcigpCisgICAgICAgICBpZiAoaWQgPT0gaWRfYktHRCkKKyAgICAgICAgIHsKKyAgICAgICAg ICAgICAvLyBUaGUgc3BlYyBpcyBhY3R1YWxseSBtb3JlIGNvbXBsZXg6IGh0dHA6Ly93d3cubGli cG5nLm9yZy9wdWIvcG5nL3NwZWMvMS4yL1BORy1DaHVua3MuaHRtbCNDLmJLR0QKKy0gICAgICAg ICAgICBpbnQgYmdjb2xvciA9IHBuZ19nZXRfdWludF8zMigmY2h1bmsucFs4XSk7CistICAgICAg ICAgICAgbV9hbmltYXRpb24uYmdjb2xvclszXSA9IChiZ2NvbG9yID4+IDI0KSAmIDB4RkY7Cist ICAgICAgICAgICAgbV9hbmltYXRpb24uYmdjb2xvclsyXSA9IChiZ2NvbG9yID4+IDE2KSAmIDB4 RkY7CistICAgICAgICAgICAgbV9hbmltYXRpb24uYmdjb2xvclsxXSA9IChiZ2NvbG9yID4+IDgp ICYgMHhGRjsKKy0gICAgICAgICAgICBtX2FuaW1hdGlvbi5iZ2NvbG9yWzBdID0gYmdjb2xvciAm IDB4RkY7CisrICAgICAgICAgICAgbV9hbmltYXRpb24uYmdjb2xvclswXSA9IHBuZ19nZXRfdWlu dF8xNigmY2h1bmsucFs4XSk7CisrICAgICAgICAgICAgbV9hbmltYXRpb24uYmdjb2xvclsxXSA9 IHBuZ19nZXRfdWludF8xNigmY2h1bmsucFsxMF0pOworKyAgICAgICAgICAgIG1fYW5pbWF0aW9u LmJnY29sb3JbMl0gPSBwbmdfZ2V0X3VpbnRfMTYoJmNodW5rLnBbMTJdKTsKKysgICAgICAgICAg ICBtX2FuaW1hdGlvbi5iZ2NvbG9yWzNdID0gMDsKKyAgICAgICAgIH0KKyAKKyAgICAgICAgIGlm IChpZCA9PSBpZF9QTFRFIHx8IGlkID09IGlkX3RSTlMpCitAQCAtNzIxLDExICs3MjAsMTAgQEAg dWludDMyX3QgUG5nRGVjb2Rlcjo6cmVhZF9jaHVuayhDaHVuayYgY2h1bmspCisgICAgICAgICBp ZiAoc2l6ZSAhPSA4ICsgMjYgKyA0KQorICAgICAgICAgICAgIHJldHVybiAwOworICAgICB9IGVs c2UgaWYgKGlkID09IGlkX2JLR0QpIHsKKy0gICAgICAgIC8vIDg9SERSK3NpemUsID8/PXNpemUg b2YgYktHRCBjaHVuaywgND1DUkMKKysgICAgICAgIC8vIDg9SERSK3NpemUsICgxLCAyIG9yIDYp PXNpemUgb2YgYktHRCBjaHVuaywgND1DUkMKKyAgICAgICAgIC8vIFRoZSBzcGVjIGlzIGFjdHVh bGx5IG1vcmUgY29tcGxleDoKKyAgICAgICAgIC8vIGh0dHA6Ly93d3cubGlicG5nLm9yZy9wdWIv cG5nL3NwZWMvMS4yL1BORy1DaHVua3MuaHRtbCNDLmJLR0QKKy0gICAgICAgIC8vIFRPRE86IHdl IG9ubHkgY2hlY2sgdGhhdCA0IGJ5dGVzIGNhbiBiZSByZWFkIGZyb20gJmNodW5rLnBbOF0uIEZp eC4KKy0gICAgICAgIGlmIChzaXplIDwgOCArIDQpCisrICAgICAgICBpZiAoc2l6ZSAhPSA4ICsg MSArIDQgJiYgc2l6ZSAhPSA4ICsgMiArIDQgJiYgc2l6ZSAhPSA4ICsgNiArIDQpCisgICAgICAg ICAgICAgcmV0dXJuIDA7CisgICAgIH0gZWxzZSBpZiAoaWQgIT0gaWRfZmRBVCAmJiBpZCAhPSBp ZF9JREFUICYmIGlkICE9IGlkX0lFTkQgJiYgaWQgIT0gaWRfUExURSAmJiBpZCAhPSBpZF90Uk5T KSB7CisgICAgICAgICBpZiAoc2l6ZSA+IFBOR19VU0VSX0NIVU5LX01BTExPQ19NQVgpCitAQCAt MTU0MiwxMyArMTU0MCwxMyBAQCBib29sIFBuZ0VuY29kZXI6OndyaXRlYW5pbWF0aW9uKGNvbnN0 IEFuaW1hdGlvbiYgYW5pbWF0aW9uLCBjb25zdCBzdGQ6OnZlY3RvcjxpbgorICAgICAgICAgaWYg KHBhbHNpemUgPiAwKQorICAgICAgICAgICAgIHdyaXRlQ2h1bmsobV9mLCAiUExURSIsICh1bnNp Z25lZCBjaGFyKikoJnBhbGV0dGUpLCBwYWxzaXplICogMyk7CisgCistICAgICAgICBpZiAoKGFu aW1hdGlvbi5iZ2NvbG9yICE9IFNjYWxhcigpKSAmJiAoYW5pbWF0aW9uLmZyYW1lcy5zaXplKCkg PiAxKSkKKysgICAgICAgIGlmICgoYW5pbWF0aW9uLmJnY29sb3IgIT0gU2NhbGFyKCkpICYmIGNv bHR5cGUpCisgICAgICAgICB7CistICAgICAgICAgICAgdWludDY0X3QgYmd2YWx1ZSA9IChzdGF0 aWNfY2FzdDxpbnQ+KGFuaW1hdGlvbi5iZ2NvbG9yWzBdKSAmIDB4RkYpIDw8IDI0IHwKKy0gICAg ICAgICAgICAgICAgKHN0YXRpY19jYXN0PGludD4oYW5pbWF0aW9uLmJnY29sb3JbMV0pICYgMHhG RikgPDwgMTYgfAorLSAgICAgICAgICAgICAgICAoc3RhdGljX2Nhc3Q8aW50PihhbmltYXRpb24u Ymdjb2xvclsyXSkgJiAweEZGKSA8PCA4IHwKKy0gICAgICAgICAgICAgICAgKHN0YXRpY19jYXN0 PGludD4oYW5pbWF0aW9uLmJnY29sb3JbM10pICYgMHhGRik7CistICAgICAgICAgICAgd3JpdGVD aHVuayhtX2YsICJiS0dEIiwgKHVuc2lnbmVkIGNoYXIqKSgmYmd2YWx1ZSksIDYpOyAvL3RoZSBi S0dEIGNodW5rIG11c3QgcHJlY2VkZSB0aGUgZmlyc3QgSURBVCBjaHVuaywgYW5kIG11c3QgZm9s bG93IHRoZSBQTFRFIGNodW5rLgorKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYmd2YWx1ZVs2 XSA9IHt9OworKyAgICAgICAgICAgIGJndmFsdWVbMV0gPSBhbmltYXRpb24uYmdjb2xvclswXTsK KysgICAgICAgICAgICBiZ3ZhbHVlWzNdID0gYW5pbWF0aW9uLmJnY29sb3JbMV07CisrICAgICAg ICAgICAgYmd2YWx1ZVs1XSA9IGFuaW1hdGlvbi5iZ2NvbG9yWzJdOworKyAgICAgICAgICAgIHdy aXRlQ2h1bmsobV9mLCAiYktHRCIsIGJndmFsdWUsIDYpOyAvL3RoZSBiS0dEIGNodW5rIG11c3Qg cHJlY2VkZSB0aGUgZmlyc3QgSURBVCBjaHVuaywgYW5kIG11c3QgZm9sbG93IHRoZSBQTFRFIGNo dW5rLgorICAgICAgICAgfQorIAorICAgICAgICAgaWYgKHRybnNzaXplID4gMCkKK2RpZmYgLS1n aXQgYS9tb2R1bGVzL2ltZ2NvZGVjcy90ZXN0L3Rlc3RfYW5pbWF0aW9uLmNwcCBiL21vZHVsZXMv aW1nY29kZWNzL3Rlc3QvdGVzdF9hbmltYXRpb24uY3BwCitpbmRleCBlOGM0MmNiY2MwLi5kZjBh MDBhOGIxIDEwMDY0NAorLS0tIGEvbW9kdWxlcy9pbWdjb2RlY3MvdGVzdC90ZXN0X2FuaW1hdGlv bi5jcHAKKysrKyBiL21vZHVsZXMvaW1nY29kZWNzL3Rlc3QvdGVzdF9hbmltYXRpb24uY3BwCitA QCAtNDI1LDYgKzQyNSwzOSBAQCBURVNUKEltZ2NvZGVjc19BUE5HLCBpbXdyaXRlYW5pbWF0aW9u X3JnYikKKyAgICAgRVhQRUNUX0VRKDAsIHJlbW92ZShvdXRwdXQuY19zdHIoKSkpOworIH0KKyAK KytURVNUKEltZ2NvZGVjc19BUE5HLCBpbXdyaXRlYW5pbWF0aW9uX2dyYXkpCisreworKyAgICBB bmltYXRpb24gc19hbmltYXRpb24sIGxfYW5pbWF0aW9uOworKyAgICBFWFBFQ1RfVFJVRShmaWxs RnJhbWVzKHNfYW5pbWF0aW9uLCBmYWxzZSkpOworKworKyAgICBmb3IgKHNpemVfdCBpID0gMDsg aSA8IHNfYW5pbWF0aW9uLmZyYW1lcy5zaXplKCk7IGkrKykKKysgICAgeworKyAgICAgICAgY3Z0 Q29sb3Ioc19hbmltYXRpb24uZnJhbWVzW2ldLCBzX2FuaW1hdGlvbi5mcmFtZXNbaV0sIENPTE9S X0JHUjJHUkFZKTsKKysgICAgfQorKworKyAgICBzX2FuaW1hdGlvbi5iZ2NvbG9yID0gU2NhbGFy KDUwLCAxMDAsIDE1MCk7CisrICAgIHN0cmluZyBvdXRwdXQgPSBjdjo6dGVtcGZpbGUoIi5wbmci KTsKKysgICAgLy8gV3JpdGUgdGhlIGFuaW1hdGlvbiB0byBhIC5wbmcgZmlsZSBhbmQgdmVyaWZ5 IHN1Y2Nlc3MuCisrICAgIEVYUEVDVF9UUlVFKGltd3JpdGVhbmltYXRpb24ob3V0cHV0LCBzX2Fu aW1hdGlvbikpOworKworKyAgICAvLyBSZWFkIHRoZSBhbmltYXRpb24gYmFjayBhbmQgY29tcGFy ZSB3aXRoIHRoZSBvcmlnaW5hbC4KKysgICAgRVhQRUNUX1RSVUUoaW1yZWFkYW5pbWF0aW9uKG91 dHB1dCwgbF9hbmltYXRpb24pKTsKKysKKysgICAgRVhQRUNUX0VRKFNjYWxhcigpLCBsX2FuaW1h dGlvbi5iZ2NvbG9yKTsKKysgICAgc2l6ZV90IGV4cGVjdGVkX2ZyYW1lX2NvdW50ID0gc19hbmlt YXRpb24uZnJhbWVzLnNpemUoKSAtIDI7CisrCisrICAgIC8vIFZlcmlmeSB0aGF0IHRoZSBudW1i ZXIgb2YgZnJhbWVzIG1hdGNoZXMgdGhlIGV4cGVjdGVkIGNvdW50LgorKyAgICBFWFBFQ1RfRVEo ZXhwZWN0ZWRfZnJhbWVfY291bnQsIGltY291bnQob3V0cHV0KSk7CisrICAgIEVYUEVDVF9FUShl eHBlY3RlZF9mcmFtZV9jb3VudCwgbF9hbmltYXRpb24uZnJhbWVzLnNpemUoKSk7CisrCisrICAg IEVYUEVDVF9FUSgwLCByZW1vdmUob3V0cHV0LmNfc3RyKCkpKTsKKysKKysgICAgZm9yIChzaXpl X3QgaSA9IDA7IGkgPCBsX2FuaW1hdGlvbi5mcmFtZXMuc2l6ZSgpOyBpKyspCisrICAgIHsKKysg ICAgICAgIEVYUEVDVF9FUSgwLCBjdnRlc3Q6Om5vcm0oc19hbmltYXRpb24uZnJhbWVzW2ldLCBs X2FuaW1hdGlvbi5mcmFtZXNbaV0sIE5PUk1fSU5GKSk7CisrICAgIH0KKyt9CisrCisgVEVTVChJ bWdjb2RlY3NfQVBORywgaW13cml0ZW11bHRpX3JnYmEpCisgeworICAgICBBbmltYXRpb24gc19h bmltYXRpb247CitAQCAtNDkyLDcgKzUyNSw3IEBAIFRFU1QoSW1nY29kZWNzX0FQTkcsIGltd3Jp dGVhbmltYXRpb25fYmdjb2xvcikKKyB7CisgICAgIEFuaW1hdGlvbiBzX2FuaW1hdGlvbiwgbF9h bmltYXRpb247CisgICAgIEVYUEVDVF9UUlVFKGZpbGxGcmFtZXMoc19hbmltYXRpb24sIHRydWUs IDIpKTsKKy0gICAgc19hbmltYXRpb24uYmdjb2xvciA9IFNjYWxhcig1MCwgMTAwLCAxNTAsIDEy OCk7IC8vIGRpZmZlcmVudCB2YWx1ZXMgZm9yIHRlc3QgcHVycG9zZS4KKysgICAgc19hbmltYXRp b24uYmdjb2xvciA9IFNjYWxhcig1MCwgMTAwLCAxNTApOyAvLyB3aWxsIGJlIHdyaXR0ZW4gaW4g YktHRCBjaHVuayBhcyBSR0IuCisgCisgICAgIC8vIENyZWF0ZSBhIHRlbXBvcmFyeSBvdXRwdXQg ZmlsZW5hbWUgZm9yIHNhdmluZyB0aGUgYW5pbWF0aW9uLgorICAgICBzdHJpbmcgb3V0cHV0ID0g Y3Y6OnRlbXBmaWxlKCIucG5nIik7CistLSAKKzIuNDguMQorCgpkaWZmIC0tZ2l0IGEvMDAwNy1m aXgtZm9yLWxhcmdlLXRFWHQtY2h1bmsucGF0Y2ggYi8wMDA3LWZpeC1mb3ItbGFyZ2UtdEVYdC1j aHVuay5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDE5M2NiCi0t LSAvZGV2L251bGwKKysrIGIvMDAwNy1maXgtZm9yLWxhcmdlLXRFWHQtY2h1bmsucGF0Y2gKQEAg LTAsMCArMSwzOSBAQAorRnJvbSBkNmM0YWMyZTVlOWNiN2VhNjA3ZWNiOGU3MDg4NGEzYzVhMDY2 NTRjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU3VsZXltYW4gVFVSS01FTiA8c3R1 cmttZW5AaG90bWFpbC5jb20+CitEYXRlOiBUdWUsIDI4IEphbiAyMDI1IDAxOjA2OjQxICswMzAw CitTdWJqZWN0OiBbUEFUQ0ggMDcvMTBdIGZpeCBmb3IgbGFyZ2UgdEVYdCBjaHVuaworCistLS0K KyBtb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfcG5nLmNwcCB8IDkgKysrKystLS0tCisgMSBm aWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdp dCBhL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9wbmcuY3BwIGIvbW9kdWxlcy9pbWdjb2Rl Y3Mvc3JjL2dyZm10X3BuZy5jcHAKK2luZGV4IDRlYzMyODA2MDcuLjkwOWE5MDE3YjIgMTAwNjQ0 CistLS0gYS9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfcG5nLmNwcAorKysrIGIvbW9kdWxl cy9pbWdjb2RlY3Mvc3JjL2dyZm10X3BuZy5jcHAKK0BAIC0xMjYsOSArMTI2LDEwIEBAIGNvbnN0 IHVpbnQzMl90IGlkX2FjVEwgPSAweDRDNTQ2MzYxOyAvLyBBbmltYXRpb24gY29udHJvbCBjaHVu aworIGNvbnN0IHVpbnQzMl90IGlkX2ZjVEwgPSAweDRDNTQ2MzY2OyAvLyBGcmFtZSBjb250cm9s IGNodW5rCisgY29uc3QgdWludDMyX3QgaWRfSURBVCA9IDB4NTQ0MTQ0NDk7IC8vIGZpcnN0IGZy YW1lIGFuZC9vciBkZWZhdWx0IGltYWdlCisgY29uc3QgdWludDMyX3QgaWRfZmRBVCA9IDB4NTQ0 MTY0NjY7IC8vIEZyYW1lIGRhdGEgY2h1bmsKKy1jb25zdCB1aW50MzJfdCBpZF9QTFRFID0gMHg0 NTU0NEM1MDsKKy1jb25zdCB1aW50MzJfdCBpZF9iS0dEID0gMHg0NDQ3NEI2MjsKKy1jb25zdCB1 aW50MzJfdCBpZF90Uk5TID0gMHg1MzRFNTI3NDsKKytjb25zdCB1aW50MzJfdCBpZF9QTFRFID0g MHg0NTU0NEM1MDsgLy8gVGhlIFBMVEUgY2h1bmsgY29udGFpbnMgYSBjb2xvciBwYWxldHRlIGZv ciBpbmRleGVkLWNvbG9yIGltYWdlcworK2NvbnN0IHVpbnQzMl90IGlkX2JLR0QgPSAweDQ0NDc0 QjYyOyAvLyBUaGUgYktHRCBjaHVuayBzcGVjaWZpZXMgYSBkZWZhdWx0IGJhY2tncm91bmQgY29s b3IgZm9yIHRoZSBpbWFnZQorK2NvbnN0IHVpbnQzMl90IGlkX3RSTlMgPSAweDUzNEU1Mjc0OyAv LyBUaGUgdFJOUyBjaHVuayBwcm92aWRlcyB0cmFuc3BhcmVuY3kgaW5mb3JtYXRpb24KKytjb25z dCB1aW50MzJfdCBpZF90RVh0ID0gMHg3NDU4NDU3NDsgLy8gVGhlIHRFWHQgY2h1bmsgc3RvcmVz IG1ldGFkYXRhIGFzIHRleHQgaW4ga2V5LXZhbHVlIHBhaXJzCisgY29uc3QgdWludDMyX3QgaWRf SUVORCA9IDB4NDQ0RTQ1NDk7IC8vIGVuZC9mb290ZXIgY2h1bmsKKyAKKyBBUE5HRnJhbWU6OkFQ TkdGcmFtZSgpCitAQCAtNzI1LDcgKzcyNiw3IEBAIHVpbnQzMl90IFBuZ0RlY29kZXI6OnJlYWRf Y2h1bmsoQ2h1bmsmIGNodW5rKQorICAgICAgICAgLy8gaHR0cDovL3d3dy5saWJwbmcub3JnL3B1 Yi9wbmcvc3BlYy8xLjIvUE5HLUNodW5rcy5odG1sI0MuYktHRAorICAgICAgICAgaWYgKHNpemUg IT0gOCArIDEgKyA0ICYmIHNpemUgIT0gOCArIDIgKyA0ICYmIHNpemUgIT0gOCArIDYgKyA0KQor ICAgICAgICAgICAgIHJldHVybiAwOworLSAgICB9IGVsc2UgaWYgKGlkICE9IGlkX2ZkQVQgJiYg aWQgIT0gaWRfSURBVCAmJiBpZCAhPSBpZF9JRU5EICYmIGlkICE9IGlkX1BMVEUgJiYgaWQgIT0g aWRfdFJOUykgeworKyAgICB9IGVsc2UgaWYgKGlkICE9IGlkX2ZkQVQgJiYgaWQgIT0gaWRfSURB VCAmJiBpZCAhPSBpZF9JRU5EICYmIGlkICE9IGlkX1BMVEUgJiYgaWQgIT0gaWRfdEVYdCAmJiBp ZCAhPSBpZF90Uk5TKSB7CisgICAgICAgICBpZiAoc2l6ZSA+IFBOR19VU0VSX0NIVU5LX01BTExP Q19NQVgpCisgICAgICAgICB7CisgICAgICAgICAgICAgQ1ZfTE9HX1dBUk5JTkcoTlVMTCwgInVz ZXIgY2h1bmsgZGF0YSBpcyB0b28gbGFyZ2UiKTsKKy0tIAorMi40OC4xCisKCmRpZmYgLS1naXQg YS8wMDA4LU1lcmdlLXB1bGwtcmVxdWVzdC0yNjg1NC1mcm9tLXZyYWJhdWQtcG5nX2xlYWsucGF0 Y2ggYi8wMDA4LU1lcmdlLXB1bGwtcmVxdWVzdC0yNjg1NC1mcm9tLXZyYWJhdWQtcG5nX2xlYWsu cGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjY3M2QyZgotLS0gL2Rl di9udWxsCisrKyBiLzAwMDgtTWVyZ2UtcHVsbC1yZXF1ZXN0LTI2ODU0LWZyb20tdnJhYmF1ZC1w bmdfbGVhay5wYXRjaApAQCAtMCwwICsxLDkwIEBACitGcm9tIDBkOTljNDI4MzYyMDY3MWJlMzAw OWVjMDBlYjI2MGU1YTc1OWNjMzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBWaW5j ZW50IFJhYmF1ZCA8dnJhYmF1ZEBnb29nbGUuY29tPgorRGF0ZTogRnJpLCAzMSBKYW4gMjAyNSAw OTowMDoyMyArMDEwMAorU3ViamVjdDogW1BBVENIIDA4LzEwXSBNZXJnZSBwdWxsIHJlcXVlc3Qg IzI2ODU0IGZyb20gdnJhYmF1ZDpwbmdfbGVhaworCitGaXggb3NzLWZ1enogYnVncyAzOTE5MzQw ODEgYW5kIDM5MjMxODg5MiAjMjY4NTQKKworLSBmaXggYSBwb3RlbnRpYWwgb3ZlcmZsb3cgaW4g eDArdzAKKy0gdXNlIHRoZSBwcm9wZXIgZnVuY3Rpb24gdG8gZGVhbCB3aXRoIGJhY2tncm91bmQg Y29sb3IgdG8gZGVhbCB3aXRoIGFsbCBjYXNlcyBvZiB0aGUgc3BlYworLSB1c2UgQkdSIGxheW91 dCBmb3IgQVBORyBiYWNrZ3JvdW5kIGNvbG9yCisKKyMjIyBQdWxsIFJlcXVlc3QgUmVhZGluZXNz IENoZWNrbGlzdAorCitTZWUgZGV0YWlscyBhdCBodHRwczovL2dpdGh1Yi5jb20vb3BlbmN2L29w ZW5jdi93aWtpL0hvd190b19jb250cmlidXRlI21ha2luZy1hLWdvb2QtcHVsbC1yZXF1ZXN0CisK Ky0gW3hdIEkgYWdyZWUgdG8gY29udHJpYnV0ZSB0byB0aGUgcHJvamVjdCB1bmRlciBBcGFjaGUg MiBMaWNlbnNlLgorLSBbeF0gVG8gdGhlIGJlc3Qgb2YgbXkga25vd2xlZGdlLCB0aGUgcHJvcG9z ZWQgcGF0Y2ggaXMgbm90IGJhc2VkIG9uIGEgY29kZSB1bmRlciBHUEwgb3IgYW5vdGhlciBsaWNl bnNlIHRoYXQgaXMgaW5jb21wYXRpYmxlIHdpdGggT3BlbkNWCistIFt4XSBUaGUgUFIgaXMgcHJv cG9zZWQgdG8gdGhlIHByb3BlciBicmFuY2gKKy0gW3hdIFRoZXJlIGlzIGEgcmVmZXJlbmNlIHRv IHRoZSBvcmlnaW5hbCBidWcgcmVwb3J0IGFuZCByZWxhdGVkIHdvcmsKKy0gWyBdIFRoZXJlIGlz IGFjY3VyYWN5IHRlc3QsIHBlcmZvcm1hbmNlIHRlc3QgYW5kIHRlc3QgZGF0YSBpbiBvcGVuY3Zf ZXh0cmEgcmVwb3NpdG9yeSwgaWYgYXBwbGljYWJsZQorICAgICAgUGF0Y2ggdG8gb3BlbmN2X2V4 dHJhIGhhcyB0aGUgc2FtZSBicmFuY2ggbmFtZS4KKy0gWyBdIFRoZSBmZWF0dXJlIGlzIHdlbGwg ZG9jdW1lbnRlZCBhbmQgc2FtcGxlIGNvZGUgY2FuIGJlIGJ1aWx0IHdpdGggdGhlIHByb2plY3Qg Q01ha2UKKy0tLQorIC4uLi9pbWdjb2RlY3MvaW5jbHVkZS9vcGVuY3YyL2ltZ2NvZGVjcy5ocHAg ICB8ICAyICstCisgbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X3BuZy5jcHAgICAgICAgICAg IHwgMTkgKysrKysrKy0tLS0tLS0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25z KCspLCAxMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL21vZHVsZXMvaW1nY29kZWNzL2lu Y2x1ZGUvb3BlbmN2Mi9pbWdjb2RlY3MuaHBwIGIvbW9kdWxlcy9pbWdjb2RlY3MvaW5jbHVkZS9v cGVuY3YyL2ltZ2NvZGVjcy5ocHAKK2luZGV4IGNkNjQ4YzJjNmUuLmM4MDIwMzNlNmIgMTAwNjQ0 CistLS0gYS9tb2R1bGVzL2ltZ2NvZGVjcy9pbmNsdWRlL29wZW5jdjIvaW1nY29kZWNzLmhwcAor KysrIGIvbW9kdWxlcy9pbWdjb2RlY3MvaW5jbHVkZS9vcGVuY3YyL2ltZ2NvZGVjcy5ocHAKK0BA IC0yNjMsNyArMjYzLDcgQEAgc3RydWN0IENWX0VYUE9SVFNfV19TSU1QTEUgQW5pbWF0aW9uCisg ICAgIC0gSWYgYSBuZWdhdGl2ZSB2YWx1ZSBvciBhIHZhbHVlIGJleW9uZCB0aGUgbWF4aW11bSBv ZiBgMHhmZmZmYCAoNjU1MzUpIGlzIHByb3ZpZGVkLCBpdCBpcyByZXNldCB0byBgMGAKKyAgICAg KGluZmluaXRlIGxvb3BpbmcpIHRvIG1haW50YWluIHZhbGlkIGJvdW5kcy4KKyAKKy0gICAgQHBh cmFtIGJnQ29sb3IgQSBgU2NhbGFyYCBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBiYWNrZ3JvdW5k IGNvbG9yIGluIEJHUkEgZm9ybWF0OgorKyAgICBAcGFyYW0gYmdDb2xvciBBIGBTY2FsYXJgIG9i amVjdCByZXByZXNlbnRpbmcgdGhlIGJhY2tncm91bmQgY29sb3IgaW4gQkdSIGZvcm1hdDoKKyAg ICAgLSBEZWZhdWx0cyB0byBgU2NhbGFyKClgLCBpbmRpY2F0aW5nIGFuIGVtcHR5IGNvbG9yICh1 c3VhbGx5IHRyYW5zcGFyZW50IGlmIHN1cHBvcnRlZCkuCisgICAgIC0gVGhpcyBiYWNrZ3JvdW5k IGNvbG9yIHByb3ZpZGVzIGEgc29saWQgZmlsbCBiZWhpbmQgZnJhbWVzIHRoYXQgaGF2ZSB0cmFu c3BhcmVuY3ksIGVuc3VyaW5nIGEgY29uc2lzdGVudCBkaXNwbGF5IGFwcGVhcmFuY2UuCisgICAg ICovCitkaWZmIC0tZ2l0IGEvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X3BuZy5jcHAgYi9t b2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfcG5nLmNwcAoraW5kZXggOTA5YTkwMTdiMi4uZjdh MTljMmJmNSAxMDA2NDQKKy0tLSBhL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9wbmcuY3Bw CisrKysgYi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfcG5nLmNwcAorQEAgLTMyNSwxNSAr MzI1LDYgQEAgYm9vbCAgUG5nRGVjb2Rlcjo6cmVhZEhlYWRlcigpCisgICAgICAgICAgICAgYm9w ID0gY2h1bmsucFszM107CisgICAgICAgICB9CisgCistICAgICAgICBpZiAoaWQgPT0gaWRfYktH RCkKKy0gICAgICAgIHsKKy0gICAgICAgICAgICAvLyBUaGUgc3BlYyBpcyBhY3R1YWxseSBtb3Jl IGNvbXBsZXg6IGh0dHA6Ly93d3cubGlicG5nLm9yZy9wdWIvcG5nL3NwZWMvMS4yL1BORy1DaHVu a3MuaHRtbCNDLmJLR0QKKy0gICAgICAgICAgICBtX2FuaW1hdGlvbi5iZ2NvbG9yWzBdID0gcG5n X2dldF91aW50XzE2KCZjaHVuay5wWzhdKTsKKy0gICAgICAgICAgICBtX2FuaW1hdGlvbi5iZ2Nv bG9yWzFdID0gcG5nX2dldF91aW50XzE2KCZjaHVuay5wWzEwXSk7CistICAgICAgICAgICAgbV9h bmltYXRpb24uYmdjb2xvclsyXSA9IHBuZ19nZXRfdWludF8xNigmY2h1bmsucFsxMl0pOworLSAg ICAgICAgICAgIG1fYW5pbWF0aW9uLmJnY29sb3JbM10gPSAwOworLSAgICAgICAgfQorLQorICAg ICAgICAgaWYgKGlkID09IGlkX1BMVEUgfHwgaWQgPT0gaWRfdFJOUykKKyAgICAgICAgICAgICBt X2NodW5rc0luZm8ucHVzaF9iYWNrKGNodW5rKTsKKyAgICAgfQorQEAgLTM1Niw5ICszNDcsMTMg QEAgYm9vbCAgUG5nRGVjb2Rlcjo6cmVhZEhlYWRlcigpCisgICAgIG1fY29sb3JfdHlwZSA9IGNv bG9yX3R5cGU7CisgICAgIG1fYml0X2RlcHRoID0gYml0X2RlcHRoOworIAorLSAgICBpZiAobV9p c19mY1RMX2xvYWRlZCAmJiAoaW50KHgwICsgdzApID4gbV93aWR0aCB8fCBpbnQoeTAgKyBoMCkg PiBtX2hlaWdodCB8fCBkb3AgPiAyIHx8IGJvcCA+IDEpKQorKyAgICBpZiAobV9pc19mY1RMX2xv YWRlZCAmJiAoKGxvbmcgbG9uZyBpbnQpeDAgKyB3MCA+IG1fd2lkdGggfHwgKGxvbmcgbG9uZyBp bnQpeTAgKyBoMCA+IG1faGVpZ2h0IHx8IGRvcCA+IDIgfHwgYm9wID4gMSkpCisgICAgICAgICBy ZXR1cm4gZmFsc2U7CisgCisrICAgIHBuZ19jb2xvcl8xNnAgYmFja2dyb3VuZF9jb2xvcjsKKysg ICAgaWYgKHBuZ19nZXRfYktHRChtX3BuZ19wdHIsIG1faW5mb19wdHIsICZiYWNrZ3JvdW5kX2Nv bG9yKSkKKysgICAgICAgIG1fYW5pbWF0aW9uLmJnY29sb3IgPSBTY2FsYXIoYmFja2dyb3VuZF9j b2xvci0+Ymx1ZSwgYmFja2dyb3VuZF9jb2xvci0+Z3JlZW4sIGJhY2tncm91bmRfY29sb3ItPnJl ZCk7CisrCisgICAgIGlmIChiaXRfZGVwdGggPD0gOCB8fCBiaXRfZGVwdGggPT0gMTYpCisgICAg IHsKKyAgICAgICAgIHN3aXRjaCAoY29sb3JfdHlwZSkKK0BAIC0xNTQ0LDkgKzE1MzksOSBAQCBi b29sIFBuZ0VuY29kZXI6OndyaXRlYW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlvbiYgYW5pbWF0aW9u LCBjb25zdCBzdGQ6OnZlY3RvcjxpbgorICAgICAgICAgaWYgKChhbmltYXRpb24uYmdjb2xvciAh PSBTY2FsYXIoKSkgJiYgY29sdHlwZSkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICB1bnNpZ25l ZCBjaGFyIGJndmFsdWVbNl0gPSB7fTsKKy0gICAgICAgICAgICBiZ3ZhbHVlWzFdID0gYW5pbWF0 aW9uLmJnY29sb3JbMF07CisrICAgICAgICAgICAgYmd2YWx1ZVsxXSA9IGFuaW1hdGlvbi5iZ2Nv bG9yWzJdOworICAgICAgICAgICAgIGJndmFsdWVbM10gPSBhbmltYXRpb24uYmdjb2xvclsxXTsK Ky0gICAgICAgICAgICBiZ3ZhbHVlWzVdID0gYW5pbWF0aW9uLmJnY29sb3JbMl07CisrICAgICAg ICAgICAgYmd2YWx1ZVs1XSA9IGFuaW1hdGlvbi5iZ2NvbG9yWzBdOworICAgICAgICAgICAgIHdy aXRlQ2h1bmsobV9mLCAiYktHRCIsIGJndmFsdWUsIDYpOyAvL3RoZSBiS0dEIGNodW5rIG11c3Qg cHJlY2VkZSB0aGUgZmlyc3QgSURBVCBjaHVuaywgYW5kIG11c3QgZm9sbG93IHRoZSBQTFRFIGNo dW5rLgorICAgICAgICAgfQorIAorLS0gCisyLjQ4LjEKKwoKZGlmZiAtLWdpdCBhLzAwMDktTWVy Z2UtcHVsbC1yZXF1ZXN0LTI2ODcyLWZyb20tc3R1cmttZW43Mi1JbWFnZUVuY29kZS5wYXRjaCBi LzAwMDktTWVyZ2UtcHVsbC1yZXF1ZXN0LTI2ODcyLWZyb20tc3R1cmttZW43Mi1JbWFnZUVuY29k ZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjQwNGIzCi0tLSAv ZGV2L251bGwKKysrIGIvMDAwOS1NZXJnZS1wdWxsLXJlcXVlc3QtMjY4NzItZnJvbS1zdHVya21l bjcyLUltYWdlRW5jb2RlLnBhdGNoCkBAIC0wLDAgKzEsMzY3IEBACitGcm9tIDhhYTEwODZhYjQ3 NWVmMDA0MGQzODY1ZTQ5ZWRkNmZlYmE0ZWI3ZDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitG cm9tOiBTdWxleW1hbiBUVVJLTUVOIDxzdHVya21lbkBob3RtYWlsLmNvbT4KK0RhdGU6IFR1ZSwg NCBGZWIgMjAyNSAxMjoyMTo1NSArMDMwMAorU3ViamVjdDogW1BBVENIIDA5LzEwXSBNZXJnZSBw dWxsIHJlcXVlc3QgIzI2ODcyIGZyb20KKyBzdHVya21lbjcyOkltYWdlRW5jb2RlcnNfcmV2aXNp b25zCisKK1BlcmZvcm1hbmNlIHRlc3RzIGZvciBpbWFnZSBlbmNvZGVycyBhbmQgZGVjb2RlcnMg YW5kIGNvZGUgY2xlYW51cCAjMjY4NzIKKworIyMjIFB1bGwgUmVxdWVzdCBSZWFkaW5lc3MgQ2hl Y2tsaXN0CisKK1NlZSBkZXRhaWxzIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuY3Yvb3BlbmN2 L3dpa2kvSG93X3RvX2NvbnRyaWJ1dGUjbWFraW5nLWEtZ29vZC1wdWxsLXJlcXVlc3QKKworLSBb eF0gSSBhZ3JlZSB0byBjb250cmlidXRlIHRvIHRoZSBwcm9qZWN0IHVuZGVyIEFwYWNoZSAyIExp Y2Vuc2UuCistIFt4XSBUbyB0aGUgYmVzdCBvZiBteSBrbm93bGVkZ2UsIHRoZSBwcm9wb3NlZCBw YXRjaCBpcyBub3QgYmFzZWQgb24gYSBjb2RlIHVuZGVyIEdQTCBvciBhbm90aGVyIGxpY2Vuc2Ug dGhhdCBpcyBpbmNvbXBhdGlibGUgd2l0aCBPcGVuQ1YKKy0gW3hdIFRoZSBQUiBpcyBwcm9wb3Nl ZCB0byB0aGUgcHJvcGVyIGJyYW5jaAorLSBbIF0gVGhlcmUgaXMgYSByZWZlcmVuY2UgdG8gdGhl IG9yaWdpbmFsIGJ1ZyByZXBvcnQgYW5kIHJlbGF0ZWQgd29yaworLSBbIF0gVGhlcmUgaXMgYWNj dXJhY3kgdGVzdCwgcGVyZm9ybWFuY2UgdGVzdCBhbmQgdGVzdCBkYXRhIGluIG9wZW5jdl9leHRy YSByZXBvc2l0b3J5LCBpZiBhcHBsaWNhYmxlCisgICAgICBQYXRjaCB0byBvcGVuY3ZfZXh0cmEg aGFzIHRoZSBzYW1lIGJyYW5jaCBuYW1lLgorLSBbIF0gVGhlIGZlYXR1cmUgaXMgd2VsbCBkb2N1 bWVudGVkIGFuZCBzYW1wbGUgY29kZSBjYW4gYmUgYnVpbHQgd2l0aCB0aGUgcHJvamVjdCBDTWFr ZQorLS0tCisgbW9kdWxlcy9oaWdoZ3VpL3NyYy93aW5kb3dfdzMyLmNwcCAgICAgICAgICAgIHwg IDEwICstCisgbW9kdWxlcy9pbWdjb2RlY3MvcGVyZi9wZXJmX2RlY29kZV9lbmNvZGUuY3BwIHwg MTMxICsrKysrKysrKysrKysrKysrKworIG1vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9hdmlm LmNwcCAgICAgICAgICB8ICAgNSAtCisgbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X2F2aWYu aHBwICAgICAgICAgIHwgICAxIC0KKyBtb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfYmFzZS5j cHAgICAgICAgICAgfCAgIDggKy0KKyBtb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfYmFzZS5o cHAgICAgICAgICAgfCAgIDUgKy0KKyBtb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfZ2lmLmNw cCAgICAgICAgICAgfCAgMTAgKy0KKyBtb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfZ2lmLmhw cCAgICAgICAgICAgfCAgIDMgLQorIG1vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9wbmcuY3Bw ICAgICAgICAgICB8ICAgNiArLQorIG1vZHVsZXMvaW1nY29kZWNzL3NyYy9sb2Fkc2F2ZS5jcHAg ICAgICAgICAgICB8ICAgMiArLQorIDEwIGZpbGVzIGNoYW5nZWQsIDE1NSBpbnNlcnRpb25zKCsp LCAyNiBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgbW9kdWxlcy9pbWdjb2RlY3Mv cGVyZi9wZXJmX2RlY29kZV9lbmNvZGUuY3BwCisKK2RpZmYgLS1naXQgYS9tb2R1bGVzL2hpZ2hn dWkvc3JjL3dpbmRvd193MzIuY3BwIGIvbW9kdWxlcy9oaWdoZ3VpL3NyYy93aW5kb3dfdzMyLmNw cAoraW5kZXggMjU0M2M4MWM2YS4uOGUwNDFjOTYwOSAxMDA2NDQKKy0tLSBhL21vZHVsZXMvaGln aGd1aS9zcmMvd2luZG93X3czMi5jcHAKKysrKyBiL21vZHVsZXMvaGlnaGd1aS9zcmMvd2luZG93 X3czMi5jcHAKK0BAIC0yMTcwLDkgKzIxNzAsMTUgQEAgc3RhdGljIHZvaWQgc2hvd1NhdmVEaWFs b2coQ3ZXaW5kb3cmIHdpbmRvdykKKyAjaWZkZWYgSEFWRV9XRUJQCisgICAgICAgICAgICAgICAg ICAgICAgICJXZWJQIGZpbGVzICgqLndlYnApXDAqLndlYnBcMCIKKyAjZW5kaWYKKy0gICAgICAg ICAgICAgICAgICAgICAgIlBvcnRhYmxlIGltYWdlIGZvcm1hdCAoKi5wYm07Ki5wZ207Ki5wcG07 Ki5weG07Ki5wbm0pXDAqLnBibTsqLnBnbTsqLnBwbTsqLnB4bTsqLnBubVwwIgorKyAgICAgICAg ICAgICAgICAgICAgICAiUG9ydGFibGUgaW1hZ2UgZm9ybWF0ICgqLnBibTsqLnBnbTsqLnBwbTsq LnBubTsqLnBhbSlcMCoucGJtOyoucGdtOyoucHBtOyoucG5tOyoucGFtXDAiCisgI2lmZGVmIEhB VkVfT1BFTkVYUgorICAgICAgICAgICAgICAgICAgICAgICAiT3BlbkVYUiBJbWFnZSBmaWxlcyAo Ki5leHIpXDAqLmV4clwwIgorKyNlbmRpZgorKyNpZmRlZiBIQVZFX0FWSUYKKysgICAgICAgICAg ICAgICAgICAgICAgIkFWSUYgZmlsZXMgKCouYXZpZilcMCouYXZpZlwwIgorKyNlbmRpZgorKyNp ZmRlZiBIQVZFX0lNR0NPREVDX0dJRgorKyAgICAgICAgICAgICAgICAgICAgICAiR3JhcGhpY3Mg SW50ZXJjaGFuZ2UgRm9ybWF0IDg5YSgqLmdpZilcMCouZ2lmXDAiCisgI2VuZGlmCisgICAgICAg ICAgICAgICAgICAgICAgICJSYWRpYW5jZSBIRFIgKCouaGRyOyoucGljKVwwKi5oZHI7Ki5waWNc MCIKKyAgICAgICAgICAgICAgICAgICAgICAgIlN1biByYXN0ZXIgZmlsZXMgKCouc3I7Ki5yYXMp XDAqLnNyOyoucmFzXDAiCitAQCAtMjE5NCw3ICsyMjAwLDcgQEAgc3RhdGljIHZvaWQgc2hvd1Nh dmVEaWFsb2coQ3ZXaW5kb3cmIHdpbmRvdykKKyAgICAgfQorICNlbHNlCisgICAgIENWX1VOVVNF RCh3aW5kb3cpOworLSAgICBDVl9MT0dfV0FSTklORygiU2F2ZSBkaWFsb2cgcmVxdWlyZXMgZW5h YmxlZCAnaW1nY29kZWNzJyBtb2R1bGUuIik7CisrICAgIENWX0xPR19XQVJOSU5HKE5VTEwsICJT YXZlIGRpYWxvZyByZXF1aXJlcyBlbmFibGVkICdpbWdjb2RlY3MnIG1vZHVsZS4iKTsKKyAgICAg cmV0dXJuOworICNlbmRpZgorIH0KK2RpZmYgLS1naXQgYS9tb2R1bGVzL2ltZ2NvZGVjcy9wZXJm L3BlcmZfZGVjb2RlX2VuY29kZS5jcHAgYi9tb2R1bGVzL2ltZ2NvZGVjcy9wZXJmL3BlcmZfZGVj b2RlX2VuY29kZS5jcHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi5j ZTY5M2NiODc4CistLS0gL2Rldi9udWxsCisrKysgYi9tb2R1bGVzL2ltZ2NvZGVjcy9wZXJmL3Bl cmZfZGVjb2RlX2VuY29kZS5jcHAKK0BAIC0wLDAgKzEsMTMxIEBACisrLy8gVGhpcyBmaWxlIGlz IHBhcnQgb2YgT3BlbkNWIHByb2plY3QuCisrLy8gSXQgaXMgc3ViamVjdCB0byB0aGUgbGljZW5z ZSB0ZXJtcyBpbiB0aGUgTElDRU5TRSBmaWxlIGZvdW5kIGluIHRoZSB0b3AtbGV2ZWwgZGlyZWN0 b3J5CisrLy8gb2YgdGhpcyBkaXN0cmlidXRpb24gYW5kIGF0IGh0dHA6Ly9vcGVuY3Yub3JnL2xp Y2Vuc2UuaHRtbAorKworKyNpbmNsdWRlICJwZXJmX3ByZWNvbXAuaHBwIgorKworK25hbWVzcGFj ZSBvcGVuY3ZfdGVzdAorK3sKKysKKysjaWZkZWYgSEFWRV9QTkcKKysKKyt1c2luZyBuYW1lc3Bh Y2UgcGVyZjsKKysKKyt0eXBlZGVmIHBlcmY6OlRlc3RCYXNlV2l0aFBhcmFtPHN0ZDo6c3RyaW5n PiBEZWNvZGU7CisrdHlwZWRlZiBwZXJmOjpUZXN0QmFzZVdpdGhQYXJhbTxzdGQ6OnN0cmluZz4g RW5jb2RlOworKworK2NvbnN0IHN0cmluZyBleHRzW10gPSB7CisrI2lmZGVmIEhBVkVfQVZJRgor KyAgICAiLmF2aWYiLAorKyNlbmRpZgorKyAgICAiLmJtcCIsCisrI2lmZGVmIEhBVkVfSU1HQ09E RUNfR0lGCisrICAgICIuZ2lmIiwKKysjZW5kaWYKKysjaWYgKGRlZmluZWQoSEFWRV9KQVNQRVIp ICYmIGRlZmluZWQoT1BFTkNWX0lNR0NPREVDU19FTkFCTEVfSkFTUEVSX1RFU1RTKSkgXAorKyAg ICB8fCBkZWZpbmVkKEhBVkVfT1BFTkpQRUcpCisrICAgICIuanAyIiwKKysjZW5kaWYKKysjaWZk ZWYgSEFWRV9KUEVHCisrICAgICIuanBnIiwKKysjZW5kaWYKKysjaWZkZWYgSEFWRV9KUEVHWEwK KysgICAgIi5qeGwiLAorKyNlbmRpZgorKyAgICAiLnBuZyIsCisrI2lmZGVmIEhBVkVfSU1HQ09E RUNfUFhNCisrICAgICIucHBtIiwKKysjZW5kaWYKKysjaWZkZWYgSEFWRV9JTUdDT0RFQ19TVU5S QVNURVIKKysgICAgIi5yYXMiLAorKyNlbmRpZgorKyNpZmRlZiBIQVZFX1RJRkYKKysgICAgIi50 aWZmIiwKKysjZW5kaWYKKysjaWZkZWYgSEFWRV9XRUJQCisrICAgICIud2VicCIsCisrI2VuZGlm CisrfTsKKysKKytjb25zdCBzdHJpbmcgZXh0c19tdWx0aVtdID0geworKyNpZmRlZiBIQVZFX0FW SUYKKysgICAgIi5hdmlmIiwKKysjZW5kaWYKKysjaWZkZWYgSEFWRV9JTUdDT0RFQ19HSUYKKysg ICAgIi5naWYiLAorKyNlbmRpZgorKyAgICAiLnBuZyIsCisrI2lmZGVmIEhBVkVfVElGRgorKyAg ICAiLnRpZmYiLAorKyNlbmRpZgorKyNpZmRlZiBIQVZFX1dFQlAKKysgICAgIi53ZWJwIiwKKysj ZW5kaWYKKyt9OworKworK1BFUkZfVEVTVF9QKERlY29kZSwgYmdyLCB0ZXN0aW5nOjpWYWx1ZXNJ bihleHRzKSkKKyt7CisrICAgIFN0cmluZyBmaWxlbmFtZSA9IGdldERhdGFQYXRoKCJwZXJmLzE5 MjB4MTA4MC5wbmciKTsKKysKKysgICAgTWF0IHNyYyA9IGltcmVhZChmaWxlbmFtZSk7CisrICAg IEVYUEVDVF9GQUxTRShzcmMuZW1wdHkoKSkgPDwgIkNhbm5vdCBvcGVuIHRlc3QgaW1hZ2UgcGVy Zi8xOTIweDEwODAucG5nIjsKKysgICAgdmVjdG9yPHVjaGFyPiBidWY7CisrICAgIEVYUEVDVF9U UlVFKGltZW5jb2RlKEdldFBhcmFtKCksIHNyYywgYnVmKSk7CisrCisrICAgIFRFU1RfQ1lDTEUo KSBpbWRlY29kZShidWYsIElNUkVBRF9VTkNIQU5HRUQpOworKworKyAgICBTQU5JVFlfQ0hFQ0tf Tk9USElORygpOworK30KKysKKytQRVJGX1RFU1RfUChEZWNvZGUsIHJnYiwgdGVzdGluZzo6VmFs dWVzSW4oZXh0cykpCisreworKyAgICBTdHJpbmcgZmlsZW5hbWUgPSBnZXREYXRhUGF0aCgicGVy Zi8xOTIweDEwODAucG5nIik7CisrCisrICAgIE1hdCBzcmMgPSBpbXJlYWQoZmlsZW5hbWUpOwor KyAgICBFWFBFQ1RfRkFMU0Uoc3JjLmVtcHR5KCkpIDw8ICJDYW5ub3Qgb3BlbiB0ZXN0IGltYWdl IHBlcmYvMTkyMHgxMDgwLnBuZyI7CisrICAgIHZlY3Rvcjx1Y2hhcj4gYnVmOworKyAgICBFWFBF Q1RfVFJVRShpbWVuY29kZShHZXRQYXJhbSgpLCBzcmMsIGJ1ZikpOworKworKyAgICBURVNUX0NZ Q0xFKCkgaW1kZWNvZGUoYnVmLCBJTVJFQURfQ09MT1JfUkdCKTsKKysKKysgICAgU0FOSVRZX0NI RUNLX05PVEhJTkcoKTsKKyt9CisrCisrUEVSRl9URVNUX1AoRW5jb2RlLCBiZ3IsIHRlc3Rpbmc6 OlZhbHVlc0luKGV4dHMpKQorK3sKKysgICAgU3RyaW5nIGZpbGVuYW1lID0gZ2V0RGF0YVBhdGgo InBlcmYvMTkyMHgxMDgwLnBuZyIpOworKworKyAgICBNYXQgc3JjID0gaW1yZWFkKGZpbGVuYW1l KTsKKysgICAgRVhQRUNUX0ZBTFNFKHNyYy5lbXB0eSgpKSA8PCAiQ2Fubm90IG9wZW4gdGVzdCBp bWFnZSBwZXJmLzE5MjB4MTA4MC5wbmciOworKyAgICB2ZWN0b3I8dWNoYXI+IGJ1ZjsKKysKKysg ICAgVEVTVF9DWUNMRSgpIGltZW5jb2RlKEdldFBhcmFtKCksIHNyYywgYnVmKTsKKysKKysgICAg c3RkOjpjb3V0IDw8ICJFbmNvZGVkIGJ1ZmZlciBzaXplOiAiIDw8IGJ1Zi5zaXplKCkKKysgICAg ICAgIDw8ICIgYnl0ZXMsIENvbXByZXNzaW9uIHJhdGlvOiAiIDw8IHN0ZDo6Zml4ZWQgPDwgc3Rk OjpzZXRwcmVjaXNpb24oMikKKysgICAgICAgIDw8IChzdGF0aWNfY2FzdDxkb3VibGU+KGJ1Zi5z aXplKCkpIC8gKHNyYy50b3RhbCgpICogc3JjLmNoYW5uZWxzKCkpKSAqIDEwMC4wIDw8ICIlIiA8 PCBzdGQ6OmVuZGw7CisrCisrICAgIFNBTklUWV9DSEVDS19OT1RISU5HKCk7CisrfQorKworK1BF UkZfVEVTVF9QKEVuY29kZSwgbXVsdGksIHRlc3Rpbmc6OlZhbHVlc0luKGV4dHNfbXVsdGkpKQor K3sKKysgICAgU3RyaW5nIGZpbGVuYW1lID0gZ2V0RGF0YVBhdGgoInBlcmYvMTkyMHgxMDgwLnBu ZyIpOworKyAgICB2ZWN0b3I8TWF0PiB2ZWM7CisrICAgIEVYUEVDVF9UUlVFKGltcmVhZG11bHRp KGZpbGVuYW1lLCB2ZWMpKTsKKysgICAgdmVjLnB1c2hfYmFjayh2ZWMuYmFjaygpLmNsb25lKCkp OworKyAgICBjaXJjbGUodmVjLmJhY2soKSwgUG9pbnQoMTAwLCAxMDApLCA0NSwgU2NhbGFyKDAs IDAsIDI1NSwgMCksIDIsIExJTkVfQUEpOworKyAgICB2ZWN0b3I8dWNoYXI+IGJ1ZjsKKysgICAg RVhQRUNUX1RSVUUoaW13cml0ZSgidGVzdCIgKyBHZXRQYXJhbSgpLCB2ZWMpKTsKKysKKysgICAg VEVTVF9DWUNMRSgpIGltZW5jb2RlKEdldFBhcmFtKCksIHZlYywgYnVmKTsKKysKKysgICAgc3Rk Ojpjb3V0IDw8ICJFbmNvZGVkIGJ1ZmZlciBzaXplOiAiIDw8IGJ1Zi5zaXplKCkKKysgICAgICAg IDw8ICIgYnl0ZXMsIENvbXByZXNzaW9uIHJhdGlvOiAiIDw8IHN0ZDo6Zml4ZWQgPDwgc3RkOjpz ZXRwcmVjaXNpb24oMikKKysgICAgICAgIDw8IChzdGF0aWNfY2FzdDxkb3VibGU+KGJ1Zi5zaXpl KCkpIC8gKHZlY1swXS50b3RhbCgpICogdmVjWzBdLmNoYW5uZWxzKCkpKSAqIDEwMC4wIDw8ICIl IiA8PCBzdGQ6OmVuZGw7CisrCisrICAgIFNBTklUWV9DSEVDS19OT1RISU5HKCk7CisrfQorKyNl bmRpZiAvLyBIQVZFX1BORworKworK30gLy8gbmFtZXNwYWNlCitkaWZmIC0tZ2l0IGEvbW9kdWxl cy9pbWdjb2RlY3Mvc3JjL2dyZm10X2F2aWYuY3BwIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dy Zm10X2F2aWYuY3BwCitpbmRleCBkM2ZiNTAwNjA0Li5jMzVlYjUwMzA2IDEwMDY0NAorLS0tIGEv bW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X2F2aWYuY3BwCisrKysgYi9tb2R1bGVzL2ltZ2Nv ZGVjcy9zcmMvZ3JmbXRfYXZpZi5jcHAKK0BAIC0yOTgsMTEgKzI5OCw2IEBAIGJvb2wgQXZpZkVu Y29kZXI6OmlzRm9ybWF0U3VwcG9ydGVkKGludCBkZXB0aCkgY29uc3QgeworICAgcmV0dXJuIChk ZXB0aCA9PSBDVl84VSB8fCBkZXB0aCA9PSBDVl8xNlUpOworIH0KKyAKKy1ib29sIEF2aWZFbmNv ZGVyOjp3cml0ZShjb25zdCBNYXQgJmltZywgY29uc3Qgc3RkOjp2ZWN0b3I8aW50PiAmcGFyYW1z KSB7CistICBzdGQ6OnZlY3RvcjxNYXQ+IGltZ192ZWMoMSwgaW1nKTsKKy0gIHJldHVybiB3cml0 ZW11bHRpKGltZ192ZWMsIHBhcmFtcyk7CistfQorLQorIGJvb2wgQXZpZkVuY29kZXI6OndyaXRl YW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlvbiYgYW5pbWF0aW9uLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGludD4gJnBhcmFtcykgeworICAgaW50 IGJpdF9kZXB0aCA9IDg7CitkaWZmIC0tZ2l0IGEvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10 X2F2aWYuaHBwIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X2F2aWYuaHBwCitpbmRleCA4 N2I3NjU2MTllLi45ZjA5N2FhZjU1IDEwMDY0NAorLS0tIGEvbW9kdWxlcy9pbWdjb2RlY3Mvc3Jj L2dyZm10X2F2aWYuaHBwCisrKysgYi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfYXZpZi5o cHAKK0BAIC00MSw3ICs0MSw2IEBAIGNsYXNzIEF2aWZFbmNvZGVyIENWX0ZJTkFMIDogcHVibGlj IEJhc2VJbWFnZUVuY29kZXIgeworICAgfkF2aWZFbmNvZGVyKCkgQ1ZfT1ZFUlJJREU7CisgCisg ICBib29sIGlzRm9ybWF0U3VwcG9ydGVkKGludCBkZXB0aCkgY29uc3QgQ1ZfT1ZFUlJJREU7Cist ICBib29sIHdyaXRlKGNvbnN0IE1hdCYgaW1nLCBjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+JiBwYXJh bXMpIENWX09WRVJSSURFOworICAgYm9vbCB3cml0ZWFuaW1hdGlvbihjb25zdCBBbmltYXRpb24m IGFuaW1hdGlvbiwgY29uc3Qgc3RkOjp2ZWN0b3I8aW50PiYgcGFyYW1zKSBDVl9PVkVSUklERTsK KyAKKyAgIEltYWdlRW5jb2RlciBuZXdFbmNvZGVyKCkgY29uc3QgQ1ZfT1ZFUlJJREU7CitkaWZm IC0tZ2l0IGEvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X2Jhc2UuY3BwIGIvbW9kdWxlcy9p bWdjb2RlY3Mvc3JjL2dyZm10X2Jhc2UuY3BwCitpbmRleCAxZTA5ODgyNzgwLi5kYzNkMDdhYjc4 IDEwMDY0NAorLS0tIGEvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X2Jhc2UuY3BwCisrKysg Yi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfYmFzZS5jcHAKK0BAIC0xNDAsNiArMTQwLDEx IEBAIGJvb2wgQmFzZUltYWdlRW5jb2Rlcjo6c2V0RGVzdGluYXRpb24oIHN0ZDo6dmVjdG9yPHVj aGFyPiYgYnVmICkKKyAgICAgcmV0dXJuIHRydWU7CisgfQorIAorK2Jvb2wgQmFzZUltYWdlRW5j b2Rlcjo6d3JpdGUoY29uc3QgTWF0ICZpbWcsIGNvbnN0IHN0ZDo6dmVjdG9yPGludD4gJnBhcmFt cykgeworKyAgICBzdGQ6OnZlY3RvcjxNYXQ+IGltZ192ZWMoMSwgaW1nKTsKKysgICAgcmV0dXJu IHdyaXRlbXVsdGkoaW1nX3ZlYywgcGFyYW1zKTsKKyt9CisrCisgYm9vbCBCYXNlSW1hZ2VFbmNv ZGVyOjp3cml0ZW11bHRpKGNvbnN0IHN0ZDo6dmVjdG9yPE1hdD4mIGltZ192ZWMsIGNvbnN0IHN0 ZDo6dmVjdG9yPGludD4mIHBhcmFtcykKKyB7CisgICAgIGlmKGltZ192ZWMuc2l6ZSgpID4gMSkK K0BAIC0xNTcsNiArMTYyLDcgQEAgYm9vbCBCYXNlSW1hZ2VFbmNvZGVyOjp3cml0ZW11bHRpKGNv bnN0IHN0ZDo6dmVjdG9yPE1hdD4mIGltZ192ZWMsIGNvbnN0IHN0ZDo6dmUKKyAKKyBib29sIEJh c2VJbWFnZUVuY29kZXI6OndyaXRlYW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlvbiYsIGNvbnN0IHN0 ZDo6dmVjdG9yPGludD4mICkKKyB7CisrICAgIENWX0xPR19XQVJOSU5HKE5VTEwsICJObyBBbmlt YXRpb24gZW5jb2RlciBmb3Igc3BlY2lmaWVkIGZpbGUgZXh0ZW5zaW9uIik7CisgICAgIHJldHVy biBmYWxzZTsKKyB9CisgCitAQCAtMTY1LDcgKzE3MSw3IEBAIEltYWdlRW5jb2RlciBCYXNlSW1h Z2VFbmNvZGVyOjpuZXdFbmNvZGVyKCkgY29uc3QKKyAgICAgcmV0dXJuIEltYWdlRW5jb2Rlcigp OworIH0KKyAKKy12b2lkIEJhc2VJbWFnZUVuY29kZXI6OnRocm93T25Fcm9yKCkgY29uc3QKKyt2 b2lkIEJhc2VJbWFnZUVuY29kZXI6OnRocm93T25FcnJvcigpIGNvbnN0CisgeworICAgICBpZigh bV9sYXN0X2Vycm9yLmVtcHR5KCkpCisgICAgIHsKK2RpZmYgLS1naXQgYS9tb2R1bGVzL2ltZ2Nv ZGVjcy9zcmMvZ3JmbXRfYmFzZS5ocHAgYi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfYmFz ZS5ocHAKK2luZGV4IGE5MGJkOGEzZGUuLmFlNTYyMjUyOGMgMTAwNjQ0CistLS0gYS9tb2R1bGVz L2ltZ2NvZGVjcy9zcmMvZ3JmbXRfYmFzZS5ocHAKKysrKyBiL21vZHVsZXMvaW1nY29kZWNzL3Ny Yy9ncmZtdF9iYXNlLmhwcAorQEAgLTIwMiwxMiArMjAyLDExIEBAIHB1YmxpYzoKKyAKKyAgICAg LyoqCisgICAgICAqIEBicmllZiBFbmNvZGUgYW5kIHdyaXRlIHRoZSBpbWFnZSBkYXRhLgorLSAg ICAgKiBUaGlzIGlzIGEgcHVyZSB2aXJ0dWFsIGZ1bmN0aW9uIHRoYXQgbXVzdCBiZSBpbXBsZW1l bnRlZCBieSBkZXJpdmVkIGNsYXNzZXMuCisgICAgICAqIEBwYXJhbSBpbWcgVGhlIE1hdCBvYmpl Y3QgY29udGFpbmluZyB0aGUgaW1hZ2UgZGF0YSB0byBiZSBlbmNvZGVkLgorICAgICAgKiBAcGFy YW0gcGFyYW1zIEEgdmVjdG9yIG9mIHBhcmFtZXRlcnMgY29udHJvbGxpbmcgdGhlIGVuY29kaW5n IHByb2Nlc3MgKGUuZy4sIGNvbXByZXNzaW9uIGxldmVsKS4KKyAgICAgICogQHJldHVybiB0cnVl IGlmIHRoZSBpbWFnZSB3YXMgc3VjY2Vzc2Z1bGx5IHdyaXR0ZW4sIGZhbHNlIG90aGVyd2lzZS4K KyAgICAgICovCistICAgIHZpcnR1YWwgYm9vbCB3cml0ZShjb25zdCBNYXQmIGltZywgY29uc3Qg c3RkOjp2ZWN0b3I8aW50PiYgcGFyYW1zKSA9IDA7CisrICAgIHZpcnR1YWwgYm9vbCB3cml0ZShj b25zdCBNYXQmIGltZywgY29uc3Qgc3RkOjp2ZWN0b3I8aW50PiYgcGFyYW1zKTsKKyAKKyAgICAg LyoqCisgICAgICAqIEBicmllZiBFbmNvZGUgYW5kIHdyaXRlIG11bHRpcGxlIGltYWdlcyAoZS5n LiwgZm9yIGFuaW1hdGVkIGZvcm1hdHMpLgorQEAgLTIzNiw3ICsyMzUsNyBAQCBwdWJsaWM6Cisg ICAgICAqIEBicmllZiBUaHJvdyBhbiBleGNlcHRpb24gYmFzZWQgb24gdGhlIGxhc3QgZXJyb3Ig ZW5jb3VudGVyZWQgZHVyaW5nIGVuY29kaW5nLgorICAgICAgKiBUaGlzIG1ldGhvZCBjYW4gYmUg dXNlZCB0byBwcm9wYWdhdGUgZXJyb3IgY29uZGl0aW9ucyBiYWNrIHRvIHRoZSBjYWxsZXIuCisg ICAgICAqLworLSAgICB2aXJ0dWFsIHZvaWQgdGhyb3dPbkVyb3IoKSBjb25zdDsKKysgICAgdmly dHVhbCB2b2lkIHRocm93T25FcnJvcigpIGNvbnN0OworIAorIHByb3RlY3RlZDoKKyAgICAgU3Ry aW5nIG1fZGVzY3JpcHRpb247ICAgIC8vLzwgRGVzY3JpcHRpb24gb2YgdGhlIGVuY29kZXIgKGUu Zy4sIGZvcm1hdCBuYW1lLCBjYXBhYmlsaXRpZXMpLgorZGlmZiAtLWdpdCBhL21vZHVsZXMvaW1n Y29kZWNzL3NyYy9ncmZtdF9naWYuY3BwIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X2dp Zi5jcHAKK2luZGV4IDVhNjVhZTA0YjEuLmIwNTMzYjY0NGYgMTAwNjQ0CistLS0gYS9tb2R1bGVz L2ltZ2NvZGVjcy9zcmMvZ3JmbXRfZ2lmLmNwcAorKysrIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3Jj L2dyZm10X2dpZi5jcHAKK0BAIC00ODgsMTkgKzQ4OCwxMSBAQCBHaWZFbmNvZGVyOjp+R2lmRW5j b2RlcigpIHsKKyAgICAgY2xvc2UoKTsKKyB9CisgCistYm9vbCBHaWZFbmNvZGVyOjppc0Zvcm1h dFN1cHBvcnRlZChpbnQgZGVwdGgpIGNvbnN0IHsKKy0gICAgcmV0dXJuIGRlcHRoID09IENWXzhV OworLX0KKy0KKy1ib29sIEdpZkVuY29kZXI6OndyaXRlKGNvbnN0IE1hdCAmaW1nLCBjb25zdCBz dGQ6OnZlY3RvcjxpbnQ+ICZwYXJhbXMpIHsKKy0gICAgc3RkOjp2ZWN0b3I8TWF0PiBpbWdfdmVj KDEsIGltZyk7CistICAgIHJldHVybiB3cml0ZW11bHRpKGltZ192ZWMsIHBhcmFtcyk7CistfQor LQorIGJvb2wgR2lmRW5jb2Rlcjo6d3JpdGVhbmltYXRpb24oY29uc3QgQW5pbWF0aW9uJiBhbmlt YXRpb24sIGNvbnN0IHN0ZDo6dmVjdG9yPGludD4mIHBhcmFtcykgeworICAgICBpZiAoYW5pbWF0 aW9uLmZyYW1lcy5lbXB0eSgpKSB7CisgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgIH0KKysg ICAgQ1ZfQ2hlY2tEZXB0aEVRKGFuaW1hdGlvbi5mcmFtZXNbMF0uZGVwdGgoKSwgQ1ZfOFUsICJH SUYgZW5jb2RlciBzdXBwb3J0cyBvbmx5IDgtYml0IHVuc2lnbmVkIGltYWdlcyIpOworIAorICAg ICBpZiAobV9idWYpIHsKKyAgICAgICAgIGlmICghc3RybS5vcGVuKCptX2J1ZikpIHsKK2RpZmYg LS1naXQgYS9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfZ2lmLmhwcCBiL21vZHVsZXMvaW1n Y29kZWNzL3NyYy9ncmZtdF9naWYuaHBwCitpbmRleCA4ZjUyMDc0NWJhLi44NTUyNzE4ZDAwIDEw MDY0NAorLS0tIGEvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X2dpZi5ocHAKKysrKyBiL21v ZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9naWYuaHBwCitAQCAtODMsOSArODMsNiBAQCBwdWJs aWM6CisgICAgIEdpZkVuY29kZXIoKTsKKyAgICAgfkdpZkVuY29kZXIoKSBDVl9PVkVSUklERTsK KyAKKy0gICAgYm9vbCBpc0Zvcm1hdFN1cHBvcnRlZChpbnQgZGVwdGgpIGNvbnN0IENWX09WRVJS SURFOworLQorLSAgICBib29sIHdyaXRlKGNvbnN0IE1hdCYgaW1nLCBjb25zdCBzdGQ6OnZlY3Rv cjxpbnQ+JiBwYXJhbXMpIENWX09WRVJSSURFOworICAgICBib29sIHdyaXRlYW5pbWF0aW9uKGNv bnN0IEFuaW1hdGlvbiYgYW5pbWF0aW9uLCBjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+JiBwYXJhbXMp IENWX09WRVJSSURFOworIAorICAgICBJbWFnZUVuY29kZXIgbmV3RW5jb2RlcigpIGNvbnN0IENW X09WRVJSSURFOworZGlmZiAtLWdpdCBhL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9wbmcu Y3BwIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X3BuZy5jcHAKK2luZGV4IGY3YTE5YzJi ZjUuLjgyNTEyMjMwNGEgMTAwNjQ0CistLS0gYS9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRf cG5nLmNwcAorKysrIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X3BuZy5jcHAKK0BAIC0x NDEyLDYgKzE0MTIsOSBAQCB2b2lkIFBuZ0VuY29kZXI6OmRlZmxhdGVSZWN0RmluKHVuc2lnbmVk IGNoYXIqIHpidWYsIHVpbnQzMl90KiB6c2l6ZSwgaW50IGJwcCwgaQorIAorIGJvb2wgUG5nRW5j b2Rlcjo6d3JpdGVhbmltYXRpb24oY29uc3QgQW5pbWF0aW9uJiBhbmltYXRpb24sIGNvbnN0IHN0 ZDo6dmVjdG9yPGludD4mIHBhcmFtcykKKyB7CisrICAgIGludCBmcmFtZV90eXBlID0gYW5pbWF0 aW9uLmZyYW1lc1swXS50eXBlKCk7CisrICAgIGludCBmcmFtZV9kZXB0aCA9IGFuaW1hdGlvbi5m cmFtZXNbMF0uZGVwdGgoKTsKKysgICAgQ1ZfQ2hlY2tUeXBlKGZyYW1lX3R5cGUsIGZyYW1lX2Rl cHRoID09IENWXzhVIHx8IGZyYW1lX2RlcHRoID09IENWXzE2VSwgIkFQTkcgZGVjb2RlciBzdXBw b3J0cyBvbmx5IDggb3IgMTYgYml0IHVuc2lnbmVkIGltYWdlcyIpOworICAgICBpbnQgY29tcHJl c3Npb25fbGV2ZWwgPSA2OworICAgICBpbnQgY29tcHJlc3Npb25fc3RyYXRlZ3kgPSBJTVdSSVRF X1BOR19TVFJBVEVHWV9STEU7IC8vIERlZmF1bHQgc3RyYXRlZ3kKKyAgICAgYm9vbCBpc0JpbGV2 ZWwgPSBmYWxzZTsKK0BAIC0xNDM1LDcgKzE0MzgsOCBAQCBib29sIFBuZ0VuY29kZXI6OndyaXRl YW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlvbiYgYW5pbWF0aW9uLCBjb25zdCBzdGQ6OnZlY3Rvcjxp bgorICAgICAgICAgfQorICAgICB9CisgCistICAgIENWX1VOVVNFRChpc0JpbGV2ZWwpOworKyAg ICBpZiAoaXNCaWxldmVsKQorKyAgICAgICAgQ1ZfTE9HX1dBUk5JTkcoTlVMTCwgIklNV1JJVEVf UE5HX0JJTEVWRUwgcGFyYW1ldGVyIGlzIG5vdCBzdXBwb3J0ZWQgeWV0LiIpOworICAgICB1aW50 MzJfdCBmaXJzdCA9MDsKKyAgICAgdWludDMyX3QgbG9vcHM9IGFuaW1hdGlvbi5sb29wX2NvdW50 OworICAgICB1aW50MzJfdCBjb2x0eXBlPSBhbmltYXRpb24uZnJhbWVzWzBdLmNoYW5uZWxzKCkg PT0gMSA/IFBOR19DT0xPUl9UWVBFX0dSQVkgOiBhbmltYXRpb24uZnJhbWVzWzBdLmNoYW5uZWxz KCkgPT0gMyA/IFBOR19DT0xPUl9UWVBFX1JHQiA6IFBOR19DT0xPUl9UWVBFX1JHQl9BTFBIQTsK K2RpZmYgLS1naXQgYS9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvbG9hZHNhdmUuY3BwIGIvbW9kdWxl cy9pbWdjb2RlY3Mvc3JjL2xvYWRzYXZlLmNwcAoraW5kZXggZWMyNWY4YzYxMC4uMzdiMDcwMWM4 YSAxMDA2NDQKKy0tLSBhL21vZHVsZXMvaW1nY29kZWNzL3NyYy9sb2Fkc2F2ZS5jcHAKKysrKyBi L21vZHVsZXMvaW1nY29kZWNzL3NyYy9sb2Fkc2F2ZS5jcHAKK0BAIC0xMzcyLDcgKzEzNzIsNyBA QCBib29sIGltZW5jb2RlKCBjb25zdCBTdHJpbmcmIGV4dCwgSW5wdXRBcnJheSBfaW1nLAorICAg ICAgICAgZWxzZQorICAgICAgICAgICAgIGNvZGUgPSBlbmNvZGVyLT53cml0ZW11bHRpKHdyaXRl X3ZlYywgcGFyYW1zKTsKKyAKKy0gICAgICAgIGVuY29kZXItPnRocm93T25Fcm9yKCk7CisrICAg ICAgICBlbmNvZGVyLT50aHJvd09uRXJyb3IoKTsKKyAgICAgICAgIENWX0Fzc2VydCggY29kZSAp OworICAgICB9CisgICAgIGNhdGNoIChjb25zdCBjdjo6RXhjZXB0aW9uJiBlKQorLS0gCisyLjQ4 LjEKKwoKZGlmZiAtLWdpdCBhLzAwMTAtTWVyZ2UtcHVsbC1yZXF1ZXN0LTI2OTE1LWZyb20tbXNo YWJ1bmluLWZpeC1wbmctYmUucGF0Y2ggYi8wMDEwLU1lcmdlLXB1bGwtcmVxdWVzdC0yNjkxNS1m cm9tLW1zaGFidW5pbi1maXgtcG5nLWJlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjE3ZjQ5NTUKLS0tIC9kZXYvbnVsbAorKysgYi8wMDEwLU1lcmdlLXB1bGwtcmVx dWVzdC0yNjkxNS1mcm9tLW1zaGFidW5pbi1maXgtcG5nLWJlLnBhdGNoCkBAIC0wLDAgKzEsNTQg QEAKK0Zyb20gYWIwYTQxNjcwNTdkYWRjZmM0OTdmMGQ0ZDY1M2I1ZWVjN2ZkNTg2YSBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1ha3NpbSBTaGFidW5pbiA8bWFrc2ltLnNoYWJ1bmlu QGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMTMgRmViIDIwMjUgMTY6NTg6MTUgKzAzMDAKK1N1Ympl Y3Q6IFtQQVRDSCAxMC8xMF0gTWVyZ2UgcHVsbCByZXF1ZXN0ICMyNjkxNSBmcm9tIG1zaGFidW5p bjpmaXgtcG5nLWJlCisKK1Jlc29sdmVzICMyNjkxMworUmVsYXRlZCg/KTogIzI1NzE1ICMyNjgz MgorLS0tCisgbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X3BuZy5jcHAgfCAyMiArKysrKysr KysrKy0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDExIGRl bGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X3Bu Zy5jcHAgYi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfcG5nLmNwcAoraW5kZXggODI1MTIy MzA0YS4uODRkZjk3NTQ3MSAxMDA2NDQKKy0tLSBhL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZt dF9wbmcuY3BwCisrKysgYi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfcG5nLmNwcAorQEAg LTEyMSwxNiArMTIxLDE2IEBACisgbmFtZXNwYWNlIGN2CisgeworIAorLWNvbnN0IHVpbnQzMl90 IGlkX0lIRFIgPSAweDUyNDQ0ODQ5OyAvLyBQTkcgaGVhZGVyCistY29uc3QgdWludDMyX3QgaWRf YWNUTCA9IDB4NEM1NDYzNjE7IC8vIEFuaW1hdGlvbiBjb250cm9sIGNodW5rCistY29uc3QgdWlu dDMyX3QgaWRfZmNUTCA9IDB4NEM1NDYzNjY7IC8vIEZyYW1lIGNvbnRyb2wgY2h1bmsKKy1jb25z dCB1aW50MzJfdCBpZF9JREFUID0gMHg1NDQxNDQ0OTsgLy8gZmlyc3QgZnJhbWUgYW5kL29yIGRl ZmF1bHQgaW1hZ2UKKy1jb25zdCB1aW50MzJfdCBpZF9mZEFUID0gMHg1NDQxNjQ2NjsgLy8gRnJh bWUgZGF0YSBjaHVuaworLWNvbnN0IHVpbnQzMl90IGlkX1BMVEUgPSAweDQ1NTQ0QzUwOyAvLyBU aGUgUExURSBjaHVuayBjb250YWlucyBhIGNvbG9yIHBhbGV0dGUgZm9yIGluZGV4ZWQtY29sb3Ig aW1hZ2VzCistY29uc3QgdWludDMyX3QgaWRfYktHRCA9IDB4NDQ0NzRCNjI7IC8vIFRoZSBiS0dE IGNodW5rIHNwZWNpZmllcyBhIGRlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBmb3IgdGhlIGltYWdl CistY29uc3QgdWludDMyX3QgaWRfdFJOUyA9IDB4NTM0RTUyNzQ7IC8vIFRoZSB0Uk5TIGNodW5r IHByb3ZpZGVzIHRyYW5zcGFyZW5jeSBpbmZvcm1hdGlvbgorLWNvbnN0IHVpbnQzMl90IGlkX3RF WHQgPSAweDc0NTg0NTc0OyAvLyBUaGUgdEVYdCBjaHVuayBzdG9yZXMgbWV0YWRhdGEgYXMgdGV4 dCBpbiBrZXktdmFsdWUgcGFpcnMKKy1jb25zdCB1aW50MzJfdCBpZF9JRU5EID0gMHg0NDRFNDU0 OTsgLy8gZW5kL2Zvb3RlciBjaHVuaworK2NvbnN0IHVpbnQzMl90IGlkX0lIRFIgPSAweDQ5NDg0 NDUyOyAvLyBQTkcgaGVhZGVyCisrY29uc3QgdWludDMyX3QgaWRfYWNUTCA9IDB4NjE2MzU0NEM7 IC8vIEFuaW1hdGlvbiBjb250cm9sIGNodW5rCisrY29uc3QgdWludDMyX3QgaWRfZmNUTCA9IDB4 NjY2MzU0NEM7IC8vIEZyYW1lIGNvbnRyb2wgY2h1bmsKKytjb25zdCB1aW50MzJfdCBpZF9JREFU ID0gMHg0OTQ0NDE1NDsgLy8gZmlyc3QgZnJhbWUgYW5kL29yIGRlZmF1bHQgaW1hZ2UKKytjb25z dCB1aW50MzJfdCBpZF9mZEFUID0gMHg2NjY0NDE1NDsgLy8gRnJhbWUgZGF0YSBjaHVuaworK2Nv bnN0IHVpbnQzMl90IGlkX1BMVEUgPSAweDUwNEM1NDQ1OyAvLyBUaGUgUExURSBjaHVuayBjb250 YWlucyBhIGNvbG9yIHBhbGV0dGUgZm9yIGluZGV4ZWQtY29sb3IgaW1hZ2VzCisrY29uc3QgdWlu dDMyX3QgaWRfYktHRCA9IDB4NjI0QjQ3NDQ7IC8vIFRoZSBiS0dEIGNodW5rIHNwZWNpZmllcyBh IGRlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBmb3IgdGhlIGltYWdlCisrY29uc3QgdWludDMyX3Qg aWRfdFJOUyA9IDB4NzQ1MjRFNTM7IC8vIFRoZSB0Uk5TIGNodW5rIHByb3ZpZGVzIHRyYW5zcGFy ZW5jeSBpbmZvcm1hdGlvbgorK2NvbnN0IHVpbnQzMl90IGlkX3RFWHQgPSAweDc0NDU1ODc0OyAv LyBUaGUgdEVYdCBjaHVuayBzdG9yZXMgbWV0YWRhdGEgYXMgdGV4dCBpbiBrZXktdmFsdWUgcGFp cnMKKytjb25zdCB1aW50MzJfdCBpZF9JRU5EID0gMHg0OTQ1NEU0NDsgLy8gZW5kL2Zvb3RlciBj aHVuaworIAorIEFQTkdGcmFtZTo6QVBOR0ZyYW1lKCkKKyB7CitAQCAtNjk5LDcgKzY5OSw3IEBA IHVpbnQzMl90IFBuZ0RlY29kZXI6OnJlYWRfY2h1bmsoQ2h1bmsmIGNodW5rKQorICAgICAgICAg cmV0dXJuIDA7CisgICAgIGNvbnN0IHNpemVfdCBzaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihw bmdfZ2V0X3VpbnRfMzIoc2l6ZV9pZCkpICsgMTI7CisgCistICAgIGNvbnN0IHVpbnQzMl90IGlk ID0gKih1aW50MzJfdCopKCZzaXplX2lkWzRdKTsKKysgICAgY29uc3QgdWludDMyX3QgaWQgPSBw bmdfZ2V0X3VpbnRfMzIoc2l6ZV9pZCArIDQpOworICAgICBpZiAoaWQgPT0gaWRfSUhEUikgewor ICAgICAgICAgLy8gOD1IRFIrc2l6ZSwgMTM9c2l6ZSBvZiBJSERSIGNodW5rLCA0PUNSQworICAg ICAgICAgLy8gaHR0cDovL3d3dy5saWJwbmcub3JnL3B1Yi9wbmcvc3BlYy8xLjIvUE5HLUNodW5r cy5odG1sI0MuSUhEUgorLS0gCisyLjQ4LjEKKwoKZGlmZiAtLWdpdCBhL29wZW5jdi5zcGVjIGIv b3BlbmN2LnNwZWMKaW5kZXggMDJhZjU5MS4uOWJlYjVjMiAxMDA2NDQKLS0tIGEvb3BlbmN2LnNw ZWMKKysrIGIvb3BlbmN2LnNwZWMKQEAgLTc3LDcgKzc3LDcgQEAgVmVyc2lvbjogICAgICAgIDQu MTEuMAogJWdsb2JhbCBtaW5vcnZlciAlKGZvbz0le3ZlcnNpb259OyBhPSgke2Zvby8vLi8gfSk7 IGVjaG8gJHthWzFdfSApCiAlZ2xvYmFsIHBhZGRpbmcgICUoZGlnaXRzPTAwOyBudW09JXttaW5v cnZlcn07IGVjaG8gJHtkaWdpdHM6JHsjbnVtfTokeyNkaWdpdHN9fSApCiAlZ2xvYmFsIGFiaXZl ciAgICUoZWNobyAle21ham9ydmVyfSV7cGFkZGluZ30le21pbm9ydmVyfSApCi1SZWxlYXNlOiAg ICAgICAgMSV7P2Rpc3R9CitSZWxlYXNlOiAgICAgICAgMiV7P2Rpc3R9CiBTdW1tYXJ5OiAgICAg ICAgQ29sbGVjdGlvbiBvZiBhbGdvcml0aG1zIGZvciBjb21wdXRlciB2aXNpb24KICMgVGhpcyBp cyBub3JtYWwgdGhyZWUgY2xhdXNlIEJTRC4KIExpY2Vuc2U6ICAgICAgICBCU0QtMy1DbGF1c2Ug QU5EIEFwYWNoZS0yLjAgQU5EIElTQwpAQCAtMTA2LDYgKzEwNiwyMSBAQCBQYXRjaDA6ICAgICAg ICAgb3BlbmN2LTQuMS4wLWluc3RhbGxfM3JkcGFydHlfbGljZW5zZXMucGF0Y2gKIFBhdGNoMzog ICAgICAgICBvcGVuY3YucHl0aG9uLnBhdGNoCiBQYXRjaDQ6ICAgICAgICAgaHR0cHM6Ly9naXRo dWIuY29tL29wZW5jdi9vcGVuY3YvcHVsbC8yNjc1MC5wYXRjaAogUGF0Y2g1OiAgICAgICAgIGh0 dHBzOi8vZ2l0aHViLmNvbS9vcGVuY3Yvb3BlbmN2L3B1bGwvMjY3ODYucGF0Y2gKKyMgYmFja3Bv cnQgYWxsIFBORyBwYXRjaGVzIGZyb20gNC4xMS4wIHRvIDQ1YWE1MDI1NDkgLSBmaXhlcyBpc3N1 ZXMKKyMgaW5jbHVkaW5nIGNvbXBsZXRlIGZhaWx1cmUgdG8gcmVhZCBQTkdzIG9uIHMzOTB4IChi aWctZW5kaWFuKQorIyBodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lk PTIzNDUzMDYKKyMgaHR0cHM6Ly9naXRodWIuY29tL29wZW5jdi9vcGVuY3YvaXNzdWVzLzI2OTEz CitQYXRjaDY6ICAgICAgICAgMDAwMS1NZXJnZS1wdWxsLXJlcXVlc3QtMjY3MzktZnJvbS12cmFi YXVkLXBuZ19sZWFrLnBhdGNoCitQYXRjaDc6ICAgICAgICAgMDAwMi1GaXgtcmVtYWluaW5nLWJ1 Z3MtaW4tUE5HLXJlYWRlci5wYXRjaAorUGF0Y2g4OiAgICAgICAgIDAwMDMtTWVyZ2UtcHVsbC1y ZXF1ZXN0LTI2NzgyLWZyb20tdnJhYmF1ZC1wbmdfbGVhay5wYXRjaAorUGF0Y2g5OiAgICAgICAg IDAwMDQtTW92ZS10aGUtY2hlY2tzLXRvLXJlYWRfY2h1bmsucGF0Y2gKK1BhdGNoMTA6ICAgICAg ICAwMDA1LW1pbm9yLWltcHJvdmVtZW50LWZvci1iZXR0ZXItY29kZS1yZWFkaWJpbGl0eS5wYXRj aAorUGF0Y2gxMTogICAgICAgIDAwMDYtTWVyZ2UtcHVsbC1yZXF1ZXN0LTI2ODM1LWZyb20tc3R1 cmttZW43Mi1wYXRjaC00LnBhdGNoCitQYXRjaDEyOiAgICAgICAgMDAwNy1maXgtZm9yLWxhcmdl LXRFWHQtY2h1bmsucGF0Y2gKK1BhdGNoMTM6ICAgICAgICAwMDA4LU1lcmdlLXB1bGwtcmVxdWVz dC0yNjg1NC1mcm9tLXZyYWJhdWQtcG5nX2xlYWsucGF0Y2gKK1BhdGNoMTQ6ICAgICAgICAwMDA5 LU1lcmdlLXB1bGwtcmVxdWVzdC0yNjg3Mi1mcm9tLXN0dXJrbWVuNzItSW1hZ2VFbmNvZGUucGF0 Y2gKK1BhdGNoMTU6ICAgICAgICAwMDEwLU1lcmdlLXB1bGwtcmVxdWVzdC0yNjkxNS1mcm9tLW1z aGFidW5pbi1maXgtcG5nLWJlLnBhdGNoCisKIAogQnVpbGRSZXF1aXJlczogIGdjYy1jKysKIEJ1 aWxkUmVxdWlyZXM6ICBjbWFrZSA+PSAyLjYuMwpAQCAtNDA3LDYgKzQyMiwxNiBAQCBwb3BkICY+ L2Rldi9udWxsCiAlcGF0Y2ggLVAgMyAtcDEgLWIgLnB5dGhvbl9pbnN0YWxsX2JpbmFyeQogJXBh dGNoIC1QIDQgLXAxIC1iIC5WU1hfaW50cmluc2ljcwogJXBhdGNoIC1QIDUgLXAxIC1iIC5HQ0Mx NQorJXBhdGNoIC1QIDYgLXAxIC1iIC5wbmcxCislcGF0Y2ggLVAgNyAtcDEgLWIgLnBuZzIKKyVw YXRjaCAtUCA4IC1wMSAtYiAucG5nMworJXBhdGNoIC1QIDkgLXAxIC1iIC5wbmc0CislcGF0Y2gg LVAgMTAgLXAxIC1iIC5wbmc1CislcGF0Y2ggLVAgMTEgLXAxIC1iIC5wbmc2CislcGF0Y2ggLVAg MTIgLXAxIC1iIC5wbmc3CislcGF0Y2ggLVAgMTMgLXAxIC1iIC5wbmc4CislcGF0Y2ggLVAgMTQg LXAxIC1iIC5wbmc5CislcGF0Y2ggLVAgMTUgLXAxIC1iIC5wbmcxMAogCiBwdXNoZCAle25hbWV9 X2NvbnRyaWItJXt2ZXJzaW9ufQogI3BhdGNoMSAtcDEgLWIgLmluc3RhbGxfY3Z2CkBAIC01ODMs NiArNjA4LDEwIEBAIGxuIC1zIC1yICV7YnVpbGRyb290fSV7X2puaWRpcn0vb3BlbmN2LSV7amF2 YXZlcn0uamFyICV7YnVpbGRyb290fSV7X2puaWRpcn0vb3BlCiAKIAogJWNoYW5nZWxvZworKiBU dWUgRmViIDE4IDIwMjUgQWRhbSBXaWxsaWFtc29uIDxhd2lsbGlhbUByZWRoYXQuY29tPiAtIDQu MTEuMC0yCistIEJhY2twb3J0IGFsbCBwb3N0LTQuMTEuMCBQTkcgZml4ZXMsIGluY2x1ZGluZyBi aWctZW5kaWFuIGZpeAorLSBSZXNvbHZlczogcmhieiMyMzQ1MzA2CisKICogTW9uIEZlYiAwMyAy MDI1IFPDqXJnaW8gQmFzdG8gPHNlcmdpb0BzZXJqdXguY29tPiA0LjExLjAtMQogLSBVcGRhdGUg dG8gdmVyc2lvbiA0LjExLjAKIC0gUmVzb2x2ZXM6IHJoYnojMjMzNjQyMgo=