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: Jakub Jelinek To: git-commits@fedoraproject.org Subject: [rpms/gcc] rhel-f41-base: 8.0.1-0.14 Date: Mon, 29 Jun 2026 12:27:52 GMT Message-ID: <178273607253.1.17970425404498281938.rpms-gcc-d301a3c7b82b@fedoraproject.org> List-ID: X-Git-Repo: rpms/gcc X-Git-Branch: rhel-f41-base X-Git-Rev: d301a3c7b82b39c19f9d9ebb58bd8086e3d3ce0d QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2NjCkJyYW5jaCA6 IHJoZWwtZjQxLWJhc2UKQ29tbWl0IDogZDMwMWEzYzdiODJiMzljMTlmOWQ5ZWJiNThiZDgwODZl M2QzY2UwZApBdXRob3IgOiBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPgpEYXRlICAg OiAyMDE4LTAyLTE4VDIyOjAxOjU3KzAxOjAwClN0YXRzICA6ICs0MS8tMjY5NCBpbiA0IGZpbGUo cykKVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9nY2MvYy9kMzAx YTNjN2I4MmIzOWMxOWY5ZDllYmI1OGJkODA4NmUzZDNjZTBkP2JyYW5jaD1yaGVsLWY0MS1iYXNl CgpMb2c6CjguMC4xLTAuMTQKCi0tLQpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25v cmUKaW5kZXggMjM3ZDIzMC4uYmRjM2RlOCAxMDA2NDQKLS0tIGEvLmdpdGlnbm9yZQorKysgYi8u Z2l0aWdub3JlCkBAIC0zNiwzICszNiw0IEBACiAvZ2NjLTguMC4xLTIwMTgwMTMxLnRhci54egog L2djYy04LjAuMS0yMDE4MDIwNy50YXIueHoKIC9nY2MtOC4wLjEtMjAxODAyMTAudGFyLnh6Cisv Z2NjLTguMC4xLTIwMTgwMjE4LnRhci54egoKZGlmZiAtLWdpdCBhL2djYy5zcGVjIGIvZ2NjLnNw ZWMKaW5kZXggNDkxOWI3NS4uMzM1MmExMyAxMDA2NDQKLS0tIGEvZ2NjLnNwZWMKKysrIGIvZ2Nj LnNwZWMKQEAgLTEsMTAgKzEsMTAgQEAKLSVnbG9iYWwgREFURSAyMDE4MDIxMAotJWdsb2JhbCBT Vk5SRVYgMjU3NTUxCislZ2xvYmFsIERBVEUgMjAxODAyMTgKKyVnbG9iYWwgU1ZOUkVWIDI1Nzc5 NgogJWdsb2JhbCBnY2NfdmVyc2lvbiA4LjAuMQogJWdsb2JhbCBnY2NfbWFqb3IgOAogIyBOb3Rl LCBnY2NfcmVsZWFzZSBtdXN0IGJlIGludGVnZXIsIGlmIHlvdSB3YW50IHRvIGFkZCBzdWZmaXhl cyB0bwotIyAle3JlbGVhc2V9LCBhcHBlbmQgdGhlbSBhZnRlciAle2djY19yZWxlYXNlfSBvbiBS ZWxlYXNlOiBsaW5lLgotJWdsb2JhbCBnY2NfcmVsZWFzZSAwLjEzCisjICUle3JlbGVhc2V9LCBh cHBlbmQgdGhlbSBhZnRlciAlJXtnY2NfcmVsZWFzZX0gb24gUmVsZWFzZTogbGluZS4KKyVnbG9i YWwgZ2NjX3JlbGVhc2UgMC4xNAogJWdsb2JhbCBudnB0eF90b29sc19naXRyZXYgYzI4MDUwZjYw MTkzYjNiOTVhMTg4NjZhOTZmMDMzMzRlODc0ZTc4ZgogJWdsb2JhbCBudnB0eF9uZXdsaWJfZ2l0 cmV2IGFhZGM4ZWIwZWM0M2I3Y2QwZGQyZGZiNDg0YmFlNjNjOGIwNWVmMjQKICVnbG9iYWwgX3Vu cGFja2FnZWRfZmlsZXNfdGVybWluYXRlX2J1aWxkIDAKQEAgLTEwMCwyMSArMTAwLDIxIEBAIExp Y2Vuc2U6IEdQTHYzKyBhbmQgR1BMdjMrIHdpdGggZXhjZXB0aW9ucyBhbmQgR1BMdjIrIHdpdGgg ZXhjZXB0aW9ucyBhbmQgTEdQTHYyCiBHcm91cDogRGV2ZWxvcG1lbnQvTGFuZ3VhZ2VzCiAjIFRo ZSBzb3VyY2UgZm9yIHRoaXMgcGFja2FnZSB3YXMgcHVsbGVkIGZyb20gdXBzdHJlYW0ncyB2Y3Mu ICBVc2UgdGhlCiAjIGZvbGxvd2luZyBjb21tYW5kcyB0byBnZW5lcmF0ZSB0aGUgdGFyYmFsbDoK LSMgc3ZuIGV4cG9ydCBzdm46Ly9nY2MuZ251Lm9yZy9zdm4vZ2NjL2JyYW5jaGVzL3JlZGhhdC9n Y2MtOC1icmFuY2hAJXtTVk5SRVZ9IGdjYy0le3ZlcnNpb259LSV7REFURX0KLSMgdGFyIGNmIC0g Z2NjLSV7dmVyc2lvbn0tJXtEQVRFfSB8IHh6IC05ZSA+IGdjYy0le3ZlcnNpb259LSV7REFURX0u dGFyLnh6CisjIHN2biBleHBvcnQgc3ZuOi8vZ2NjLmdudS5vcmcvc3ZuL2djYy9icmFuY2hlcy9y ZWRoYXQvZ2NjLTgtYnJhbmNoQCUle1NWTlJFVn0gZ2NjLSUle3ZlcnNpb259LSUle0RBVEV9Cisj IHRhciBjZiAtIGdjYy0lJXt2ZXJzaW9ufS0lJXtEQVRFfSB8IHh6IC05ZSA+IGdjYy0lJXt2ZXJz aW9ufS0lJXtEQVRFfS50YXIueHoKIFNvdXJjZTA6IGdjYy0le3ZlcnNpb259LSV7REFURX0udGFy Lnh6CiAjIFRoZSBzb3VyY2UgZm9yIG52cHR4LXRvb2xzIHBhY2thZ2Ugd2FzIHB1bGxlZCBmcm9t IHVwc3RyZWFtJ3MgdmNzLiAgVXNlIHRoZQogIyBmb2xsb3dpbmcgY29tbWFuZHMgdG8gZ2VuZXJh dGUgdGhlIHRhcmJhbGw6CiAjIGdpdCBjbG9uZSBodHRwczovL2dpdGh1Yi5jb20vTWVudG9yRW1i ZWRkZWQvbnZwdHgtdG9vbHMuZ2l0CiAjIGNkIG52cHR4LXRvb2xzCi0jIGdpdCBhcmNoaXZlIG9y aWdpbi9tYXN0ZXIgLS1wcmVmaXg9bnZwdHgtdG9vbHMtJXtudnB0eF90b29sc19naXRyZXZ9LyB8 IHh6IC05ZSA+IC4uL252cHR4LXRvb2xzLSV7bnZwdHhfdG9vbHNfZ2l0cmV2fS50YXIueHoKKyMg Z2l0IGFyY2hpdmUgb3JpZ2luL21hc3RlciAtLXByZWZpeD1udnB0eC10b29scy0lJXtudnB0eF90 b29sc19naXRyZXZ9LyB8IHh6IC05ZSA+IC4uL252cHR4LXRvb2xzLSUle252cHR4X3Rvb2xzX2dp dHJldn0udGFyLnh6CiAjIGNkIC4uOyBybSAtcmYgbnZwdHgtdG9vbHMKIFNvdXJjZTE6IG52cHR4 LXRvb2xzLSV7bnZwdHhfdG9vbHNfZ2l0cmV2fS50YXIueHoKICMgVGhlIHNvdXJjZSBmb3IgbnZw dHgtbmV3bGliIHBhY2thZ2Ugd2FzIHB1bGxlZCBmcm9tIHVwc3RyZWFtJ3MgdmNzLiAgVXNlIHRo ZQogIyBmb2xsb3dpbmcgY29tbWFuZHMgdG8gZ2VuZXJhdGUgdGhlIHRhcmJhbGw6CiAjIGdpdCBj bG9uZSBodHRwczovL2dpdGh1Yi5jb20vTWVudG9yRW1iZWRkZWQvbnZwdHgtbmV3bGliLmdpdAog IyBjZCBudnB0eC1uZXdsaWIKLSMgZ2l0IGFyY2hpdmUgb3JpZ2luL21hc3RlciAtLXByZWZpeD1u dnB0eC1uZXdsaWItJXtudnB0eF9uZXdsaWJfZ2l0cmV2fS8gfCB4eiAtOSA+IC4uL252cHR4LW5l d2xpYi0le252cHR4X25ld2xpYl9naXRyZXZ9LnRhci54egorIyBnaXQgYXJjaGl2ZSBvcmlnaW4v bWFzdGVyIC0tcHJlZml4PW52cHR4LW5ld2xpYi0lJXtudnB0eF9uZXdsaWJfZ2l0cmV2fS8gfCB4 eiAtOSA+IC4uL252cHR4LW5ld2xpYi0lJXtudnB0eF9uZXdsaWJfZ2l0cmV2fS50YXIueHoKICMg Y2QgLi47IHJtIC1yZiBudnB0eC1uZXdsaWIKIFNvdXJjZTI6IG52cHR4LW5ld2xpYi0le252cHR4 X25ld2xpYl9naXRyZXZ9LnRhci54egogJWdsb2JhbCBpc2xfdmVyc2lvbiAwLjE2LjEKQEAgLTEy Niw3ICsxMjYsNyBAQCBVUkw6IGh0dHA6Ly9nY2MuZ251Lm9yZwogIyBOZWVkIGJpbnV0aWxzIHdo aWNoIHN1cHBvcnQgLS1oYXNoLXN0eWxlPWdudSA+PSAyLjE3LjUwLjAuMi03CiAjIE5lZWQgYmlu dXRpbHMgd2hpY2ggc3VwcG9ydCBtZmZncHIgYW5kIG1mdGdwciA+PSAyLjE3LjUwLjAuMi04CiAj IE5lZWQgYmludXRpbHMgd2hpY2ggc3VwcG9ydCAtLWJ1aWxkLWlkID49IDIuMTcuNTAuMC4xNy0z Ci0jIE5lZWQgYmludXRpbHMgd2hpY2ggc3VwcG9ydCAlZ251X3VuaXF1ZV9vYmplY3QgPj0gMi4x OS41MS4wLjE0CisjIE5lZWQgYmludXRpbHMgd2hpY2ggc3VwcG9ydCAlJWdudV91bmlxdWVfb2Jq ZWN0ID49IDIuMTkuNTEuMC4xNAogIyBOZWVkIGJpbnV0aWxzIHdoaWNoIHN1cHBvcnQgLmNmaV9z ZWN0aW9ucyA+PSAyLjE5LjUxLjAuMTQtMzMKICMgTmVlZCBiaW51dGlscyB3aGljaCBzdXBwb3J0 IC0tbm8tYWRkLW5lZWRlZCA+PSAyLjIwLjUxLjAuMi0xMgogIyBOZWVkIGJpbnV0aWxzIHdoaWNo IHN1cHBvcnQgLXBsdWdpbgpAQCAtMTM5LDYgKzEzOSw3IEBAIEJ1aWxkUmVxdWlyZXM6IHRleGlu Zm8sIHRleGluZm8tdGV4LCAvdXNyL2Jpbi9wb2QybWFuCiBCdWlsZFJlcXVpcmVzOiBzeXN0ZW10 YXAtc2R0LWRldmVsID49IDEuMwogQnVpbGRSZXF1aXJlczogZ21wLWRldmVsID49IDQuMS4yLTgs IG1wZnItZGV2ZWwgPj0gMi4yLjEsIGxpYm1wYy1kZXZlbCA+PSAwLjguMQogQnVpbGRSZXF1aXJl czogcHl0aG9uMi1kZXZlbCwgcHl0aG9uMy1kZXZlbAorQnVpbGRSZXF1aXJlczogZ2NjLCBnY2Mt YysrCiAlaWYgJXtidWlsZF9nb30KIEJ1aWxkUmVxdWlyZXM6IGhvc3RuYW1lLCBwcm9jcHMKICVl bmRpZgpAQCAtMTg5LDcgKzE5MCw3IEBAIFJlcXVpcmVzOiBjcHAgPSAle3ZlcnNpb259LSV7cmVs ZWFzZX0KICMgTmVlZCBiaW51dGlscyB0aGF0IHN1cHBvcnRzIC0taGFzaC1zdHlsZT1nbnUKICMg TmVlZCBiaW51dGlscyB0aGF0IHN1cHBvcnQgbWZmZ3ByL21mdGdwcgogIyBOZWVkIGJpbnV0aWxz IHRoYXQgc3VwcG9ydCAtLWJ1aWxkLWlkCi0jIE5lZWQgYmludXRpbHMgdGhhdCBzdXBwb3J0ICVn bnVfdW5pcXVlX29iamVjdAorIyBOZWVkIGJpbnV0aWxzIHRoYXQgc3VwcG9ydCAlJWdudV91bmlx dWVfb2JqZWN0CiAjIE5lZWQgYmludXRpbHMgdGhhdCBzdXBwb3J0IC5jZmlfc2VjdGlvbnMKICMg TmVlZCBiaW51dGlscyB0aGF0IHN1cHBvcnQgLS1uby1hZGQtbmVlZGVkCiAjIE5lZWQgYmludXRp bHMgdGhhdCBzdXBwb3J0IC1wbHVnaW4KQEAgLTIzNCw3ICsyMzUsNiBAQCBQYXRjaDk6IGdjYzgt YWFyY2g2NC1hc3luYy11bnctdGFibGVzLnBhdGNoCiBQYXRjaDEwOiBnY2M4LWZvZmZsb2FkLWRl ZmF1bHQucGF0Y2gKIFBhdGNoMTE6IGdjYzgtV25vLWZvcm1hdC1zZWN1cml0eS5wYXRjaAogUGF0 Y2gxMjogZ2NjOC1yaDE1MTI1MjktYWFyY2g2NC5wYXRjaAotUGF0Y2gxMzogZ2NjOC1sdnUtcmV2 ZXJ0LnBhdGNoCiAKIFBhdGNoMTAwMDogbnZwdHgtdG9vbHMtbm8tcHR4YXMucGF0Y2gKIFBhdGNo MTAwMTogbnZwdHgtdG9vbHMtYnVpbGQucGF0Y2gKQEAgLTc5NCw3ICs3OTQsNiBAQCB0byBOVmlk aWEgUFRYIGNhcGFibGUgZGV2aWNlcyBpZiBhdmFpbGFibGUuCiAlcGF0Y2gxMCAtcDAgLWIgLmZv ZmZsb2FkLWRlZmF1bHR+CiAlcGF0Y2gxMSAtcDAgLWIgLlduby1mb3JtYXQtc2VjdXJpdHl+CiAl cGF0Y2gxMiAtcDAgLWIgLnJoMTUxMjUyOS1hYXJjaDY0fgotJXBhdGNoMTMgLXAwIC1iIC5sdnUt cmV2ZXJ0fgogCiBjZCBudnB0eC10b29scy0le252cHR4X3Rvb2xzX2dpdHJldn0KICVwYXRjaDEw MDAgLXAxIC1iIC5udnB0eC10b29scy1uby1wdHhhc34KQEAgLTI3NTIsOCArMjc1MSw4IEBAIGZp CiAlZGlyICV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19CiAlZGlyICV7 X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX21ham9yfQogJWRp ciAle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY19tYWpvcn0v aW5jbHVkZQotIyV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2Nj X21ham9yfS9pbmNsdWRlL2l0bS5oCi0jJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9w bGF0Zm9ybX0vJXtnY2NfbWFqb3J9L2luY2x1ZGUvaXRtX3dlYWsuaAorIyUle19wcmVmaXh9L2xp Yi9nY2MvJSV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJSV7Z2NjX21ham9yfS9pbmNsdWRlL2l0bS5o CisjJSV7X3ByZWZpeH0vbGliL2djYy8lJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8lJXtnY2NfbWFq b3J9L2luY2x1ZGUvaXRtX3dlYWsuaAogJWlmbmFyY2ggc3BhcmN2OSBzcGFyYzY0IHBwYyBwcGM2 NCBwcGM2NHA3CiAle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2dj Y19tYWpvcn0vbGliaXRtLnNvCiAlZW5kaWYKQEAgLTMwNTMsNiArMzA1MiwzMiBAQCBmaQogJWVu ZGlmCiAKICVjaGFuZ2Vsb2cKKyogU3VuIEZlYiAxOCAyMDE4IEpha3ViIEplbGluZWsgPGpha3Vi QHJlZGhhdC5jb20+IDguMC4xLTAuMTQKKy0gdXBkYXRlIGZyb20gdGhlIHRydW5rCisgIC0gUFJz IGFkYS84NDI3NywgYm9vdHN0cmFwLzgyOTM5LCBib290c3RyYXAvODQ0MDUsIGMrKy83OTA2NCwg YysrLzc5NjI2LAorCWMrKy84MTg1MywgYysrLzgyNDY4LCBjKysvODI2NjQsIGMrKy84Mjc2NCwg YysrLzgzMjI3LCBjKysvODM4MzUsCisJYysrLzgzOTkwLCBjKysvODQwNDUsIGMrKy84NDA4MCwg YysrLzg0MTUxLCBjKysvODQxOTIsIGMrKy84NDI2MywKKwljKysvODQyODEsIGMrKy84NDMxNCwg YysrLzg0MzMwLCBjKysvODQzMzMsIGMrKy84NDMzOCwgYysrLzg0MzQxLAorCWMrKy84NDM1MCwg YysrLzg0MzY0LCBjKysvODQzNjgsIGMrKy84NDM3NSwgYysrLzg0Mzc2LCBjKysvODQ0MjAsCisJ YysrLzg0NDIxLCBjLzgyMjEwLCBjLzg0MTA4LCBjLzg0MzA1LCBkZWJ1Zy84NDMxOSwgZGVidWcv ODQzNDIsCisJZm9ydHJhbi8zNTI5OSwgZm9ydHJhbi81NDIyMywgZm9ydHJhbi82ODc0NiwgZm9y dHJhbi84MDk0NSwKKwlmb3J0cmFuLzg0MDc0LCBmb3J0cmFuLzg0MjcwLCBmb3J0cmFuLzg0Mjcz LCBmb3J0cmFuLzg0Mjc2LAorCWZvcnRyYW4vODQzMTMsIGZvcnRyYW4vODQzNTQsIGZvcnRyYW4v ODQzODEsIGZvcnRyYW4vODQzODUsCisJZm9ydHJhbi84NDM4OSwgZm9ydHJhbi84NDQwOSwgZm9y dHJhbi84NDQxOCwgaXBhLzg0NDI1LAorCWxpYmdmb3J0cmFuLzg0Mzg5LCBsaWJnZm9ydHJhbi84 NDQxMiwgbGlic3RkYysrLzgxNzk3LAorCW1pZGRsZS1lbmQvODM2NjUsIG1pZGRsZS1lbmQvODQz MDksIG90aGVyLzgyMzY4LCBwcmVwcm9jZXNzb3IvODMwNjMsCisJcHJlcHJvY2Vzc29yLzgzNzA4 LCBydGwtb3B0aW1pemF0aW9uLzcwMDIzLCBydGwtb3B0aW1pemF0aW9uLzgxNDQzLAorCXJ0bC1v cHRpbWl6YXRpb24vODM3MjMsIHJ0bC1vcHRpbWl6YXRpb24vODQxNjksIHNhbml0aXplci84NDMw NywKKwlzYW5pdGl6ZXIvODQzNDAsIHRhcmdldC83OTI0MiwgdGFyZ2V0LzgxNTM1LCB0YXJnZXQv ODI4NjIsCisJdGFyZ2V0LzgzNzU4LCB0YXJnZXQvODM3NjAsIHRhcmdldC84MzgzMSwgdGFyZ2V0 LzgzOTg0LCB0YXJnZXQvODQyMjAsCisJdGFyZ2V0Lzg0MjM5LCB0YXJnZXQvODQyNjYsIHRhcmdl dC84NDI3MiwgdGFyZ2V0Lzg0Mjc5LCB0YXJnZXQvODQzMzUsCisJdGFyZ2V0Lzg0MzM2LCB0YXJn ZXQvODQzNTksIHRhcmdldC84NDM2NSwgdGFyZ2V0Lzg0MzcwLCB0YXJnZXQvODQzNzIsCisJdHJl ZS1vcHRpbWl6YXRpb24vODM2OTgsIHRyZWUtb3B0aW1pemF0aW9uLzg0MDE2LAorCXRyZWUtb3B0 aW1pemF0aW9uLzg0MTkwLCB0cmVlLW9wdGltaXphdGlvbi84NDMyMSwKKwl0cmVlLW9wdGltaXph dGlvbi84NDMzNCwgdHJlZS1vcHRpbWl6YXRpb24vODQzMzksCisJdHJlZS1vcHRpbWl6YXRpb24v ODQzNTcsIHRyZWUtb3B0aW1pemF0aW9uLzg0MzgzLAorCXRyZWUtb3B0aW1pemF0aW9uLzg0Mzk5 LCB0cmVlLW9wdGltaXphdGlvbi84NDQxNworCiAqIFNhdCBGZWIgMTAgMjAxOCBKYWt1YiBKZWxp bmVrIDxqYWt1YkByZWRoYXQuY29tPiA4LjAuMS0wLjEzCiAtIHVwZGF0ZSBmcm9tIHRoZSB0cnVu awogICAtIFBScyBjKysvNzc1MjIsIGMrKy84MDU2NywgYysrLzgxNjEwLCBjKysvODE5MTcsIGMr Ky84MzIwNCwgYysrLzgzNjU5LAoKZGlmZiAtLWdpdCBhL2djYzgtbHZ1LXJldmVydC5wYXRjaCBi L2djYzgtbHZ1LXJldmVydC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQ3 Y2ExYy4uMDAwMDAwMAotLS0gYS9nY2M4LWx2dS1yZXZlcnQucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSwyNjc5ICswLDAgQEAKLVJldmVydDoKLQotMjAxOC0wMi0wOSAgQWxleGFuZHJlIE9saXZh IDxhb2xpdmFAcmVkaGF0LmNvbT4KLQotCSogY2ZnZXhwYW5kLmMgKGV4cGFuZF9naW1wbGVfYmFz aWNfYmxvY2spOiBIYW5kbGUgaW5saW5lIGVudHJ5Ci0JbWFya2Vycy4KLQkqIGR3YXJmMm91dC5j IChkd2FyZjJfZGVidWdfaG9va3MpOiBFbmFibGUgaW5saW5lX2VudHJ5IGhvb2suCi0JKEJMT0NL X0lOTElORV9FTlRSWV9MQUJFTCk6IE5ldy4KLQkoZHdhcmYyb3V0X3Zhcl9sb2NhdGlvbik6IERp c3JlZ2FyZCBpbmxpbmUgZW50cnkgbWFya2Vycy4KLQkoaW5saW5lX2VudHJ5X2RhdGEpOiBOZXcg c3RydWN0LgotCShpbmxpbmVfZW50cnlfZGF0YV9oYXNoZXIpOiBOZXcgaGFzaHRhYmxlIHR5cGUu Ci0JKGlubGluZV9lbnRyeV9kYXRhX2hhc2hlcjo6aGFzaCk6IE5ldy4KLQkoaW5saW5lX2VudHJ5 X2RhdGFfaGFzaGVyOjplcXVhbCk6IE5ldy4KLQkoaW5saW5lX2VudHJ5X2RhdGFfdGFibGUpOiBO ZXcgdmFyaWFibGUuCi0JKGFkZF9oaWdoX2xvd19hdHRyaWJ1dGVzKTogQWRkIERXX0FUX2VudHJ5 X3BjIGFuZAotCURXX0FUX0dOVV9lbnRyeV92aWV3IGF0dHJpYnV0ZXMgaWYgYSBwZW5kaW5nIGVu dHJ5IGlzIGZvdW5kCi0JaW4gaW5saW5lX2VudHJ5X2RhdGFfdGFibGUuICBBZGQgb2xkIGVudHJ5 X3BjIGF0dHJpYnV0ZSBvbmx5Ci0JaWYgZGVidWcgbm9uYmluZGluZyBtYXJrZXJzIGFyZSBkaXNh YmxlZC4KLQkoZ2VuX2lubGluZWRfc3Vicm91dGluZV9kaWUpOiBTZXQgQkxPQ0tfRElFIGlmIG5v bmJpbmRpbmcKLQltYXJrZXJzIGFyZSBlbmFibGVkLgotCShibG9ja193aXRoaW5fYmxvY2tfcCwg ZHdhcmYyb3V0X2lubGluZV9lbnRyeSk6IE5ldy4KLQkoZHdhcmYyb3V0X2ZpbmlzaCk6IENoZWNr IHRoYXQgbm8gZW50cmllcyByZW1haW5lZCBpbgotCWlubGluZV9lbnRyeV9kYXRhX3RhYmxlLgot CSogZmluYWwuYyAocmVlbWl0X2luc25fYmxvY2tfbm90ZXMpOiBIYW5kbGUgaW5saW5lIGVudHJ5 IG5vdGVzLgotCShmaW5hbF9zY2FuX2luc24sIG5vdGljZV9zb3VyY2VfbGluZSk6IExpa2V3aXNl LgotCShyZXN0X29mX2NsZWFuX3N0YXRlKTogU2tpcCBpbmxpbmUgZW50cnkgbWFya2Vycy4KLQkq IGdpbXBsZS1wcmV0dHktcHJpbnQuYyAoZHVtcF9naW1wbGVfZGVidWcpOiBIYW5kbGUgaW5saW5l IGVudHJ5Ci0JbWFya2Vycy4KLQkqIGdpbXBsZS5jIChnaW1wbGVfYnVpbGRfZGVidWdfaW5saW5l X2VudHJ5KTogTmV3LgotCSogZ2ltcGxlLmggKGVudW0gZ2ltcGxlX2RlYnVnX3N1YmNvZGUpOiBB ZGQKLQlHSU1QTEVfREVCVUdfSU5MSU5FX0VOVFJZLgotCShnaW1wbGVfYnVpbGRfZGVidWdfaW5s aW5lX2VudHJ5KTogRGVjbGFyZS4KLQkoZ2ltcGxlX2RlYnVnX2lubGluZV9lbnRyeV9wKTogTmV3 LgotCShnaW1wbGVfZGVidWdfbm9uYmluZF9tYXJrZXJfcCk6IEFkanVzdC4KLQkqIGluc24tbm90 ZXMuZGVmIChJTkxJTkVfRU5UUlkpOiBOZXcuCi0JKiBwcmludC1ydGwuYyAocnR4X3dyaXRlcjo6 cHJpbnRfcnR4X29wZXJhbmRfY29kZV8wKTogSGFuZGxlCi0JaW5saW5lIGVudHJ5IG1hcmtlciBu b3Rlcy4KLQkocHJpbnRfaW5zbik6IExpa2V3aXNlLgotCSogcnRsLmgJKE5PVEVfTUFSS0VSX1Ap OiBBZGQgSU5MSU5FX0VOVFJZIHN1cHBvcnQuCi0JKElOU05fREVCVUdfTUFSS0VSX0tJTkQpOiBM aWtld2lzZS4KLQkoR0VOX1JUWF9ERUJVR19NQVJLRVJfSU5MSU5FX0VOVFJZX1BBVCk6IE5ldy4K LQkqIHRyZWUtaW5saW5lLmMJKGV4cGFuZF9jYWxsX2lubGluZSk6IEJ1aWxkIGFuZCBpbnNlcnQK LQlkZWJ1Z19pbmxpbmVfZW50cnkgc3RtdC4KLQkqIHRyZWUtc3NhLWxpdmUuYyAocmVtb3ZlX3Vu dXNlZF9zY29wZV9ibG9ja19wKTogUHJlc2VydmUKLQlpbmxpbmUgZW50cnkgYmxvY2tzIGVhcmx5 LCBpZiBub25iaW5kIG1hcmtlcnMgYXJlIGVuYWJsZWQuCi0JKGR1bXBfc2NvcGVfYmxvY2spOiBE dW1wIGZyYWdtZW50IGluZm8uCi0JKiB2YXItdHJhY2tpbmcuYyAocmVlbWl0X21hcmtlcl9hc19u b3RlKTogSGFuZGxlIGlubGluZSBlbnRyeSBub3RlLgotCSogZG9jL2dpbXBsZS50ZXhpIChnaW1w bGVfZGVidWdfaW5saW5lX2VudHJ5X3ApOiBOZXcuCi0JKGdpbXBsZV9idWlsZF9kZWJ1Z19pbmxp bmVfZW50cnkpOiBOZXcuCi0JKiBkb2MvaW52b2tlLnRleGkgKGdzdGF0ZW1lbnQtZnJvbnRpZXJz LCBnbm8tc3RhdGVtZW50LWZyb250aWVycyk6Ci0JRW5hYmxlL2Rpc2FibGUgaW5saW5lIGVudHJ5 IHBvaW50cyB0b28uCi0JKiBkb2MvcnRsLnRleGkgKE5PVEVfSU5TTl9JTkxJTkVfRU5UUlkpOiBO ZXcuCi0JKERFQlVHX0lOU04pOiBEZXNjcmliZSBpbmxpbmUgZW50cnkgbWFya2Vycy4KLQotCSog Y29tbW9uLm9wdCAoZ3ZhcmlhYmxlLWxvY2F0aW9uLXZpZXdzKTogTmV3LgotCShndmFyaWFibGUt bG9jYXRpb24tdmlld3M9aW5jb21wYXQ1KTogTmV3LgotCSogY29uZmlnLmluOiBSZWJ1aWx0Lgot CSogY29uZmlndXJlOiBSZWJ1aWx0LgotCSogY29uZmlndXJlLmFjOiBUZXN0IGFzc2VtYmxlciBm b3IgdmlldyBzdXBwb3J0LgotCSogZHdhcmYyYXNtLmMgKGR3Ml9hc21fb3V0cHV0X3N5bW5hbWVf dWxlYjEyOCk6IE5ldy4KLQkqIGR3YXJmMmFzbS5oIChkdzJfYXNtX291dHB1dF9zeW1uYW1lX3Vs ZWIxMjgpOiBEZWNsYXJlLgotCSogZHdhcmYyb3V0LmMgKHZhcl9sb2Nfdmlldyk6IE5ldyB0eXBl ZGVmLgotCShzdHJ1Y3QgZHdfbG9jX2xpc3Rfc3RydWN0KTogQWRkIHZsX3N5bWJvbCwgdmJlZ2lu LCB2ZW5kLgotCShkd2FyZjJvdXRfbG9jdmlld3NfaW5fYXR0cmlidXRlKTogTmV3LgotCShkd2Fy ZjJvdXRfbG9jdmlld3NfaW5fbG9jbGlzdCk6IE5ldy4KLQkoZHdfdmFsX2VxdWFsX3ApOiBDb21w YXJlIHZhbF92aWV3X2xpc3Qgb2YgZHdfdmFsX2NsYXNzX3ZpZXdfbGlzdHMuCi0JKGVudW0gZHdf bGluZV9pbmZvX29wY29kZSk6IEFkZCBMSV9hZHZfYWRkcmVzcy4KLQkoc3RydWN0IGR3X2xpbmVf aW5mb190YWJsZSk6IEFkZCB2aWV3LgotCShSRVNFVF9ORVhUX1ZJRVcsIFJFU0VUVElOR19WSUVX X1ApOiBOZXcgbWFjcm9zLgotCShEV0FSRjJfQVNNX1ZJRVdfREVCVUdfSU5GTyk6IERlZmluZSBk ZWZhdWx0LgotCSh6ZXJvX3ZpZXdfcCk6IE5ldyB2YXJpYWJsZS4KLQkoWkVST19WSUVXX1ApOiBO ZXcgbWFjcm8uCi0JKG91dHB1dF9hc21fbGluZV9kZWJ1Z19pbmZvKTogTmV3LgotCShzdHJ1Y3Qg dmFyX2xvY19ub2RlKTogQWRkIHZpZXcuCi0JKGFkZF9BVF92aWV3X2xpc3QsIEFUX2xvY19saXN0 KTogTmV3LgotCShhZGRfdmFyX2xvY190b19kZWNsKTogQWRkIHZpZXcgcGFyYW0uICBUZXN0IGl0 IGFnYWluc3QgbGFzdC4KLQkobmV3X2xvY19saXN0KTogQWRkIHZpZXcgcGFyYW1zLiAgUmVjb3Jk IHRoZW0uCi0JKEFUX2xvY19saXN0X3B0cik6IEhhbmRsZSBsb2MgYW5kIHZpZXcgbGlzdHMuCi0J KHZpZXdfbGlzdF90b19sb2NfbGlzdF92YWxfbm9kZSk6IE5ldy4KLQkocHJpbnRfZHdfdmFsKTog SGFuZGxlIGR3X3ZhbF9jbGFzc192aWV3X2xpc3QuCi0JKHNpemVfb2ZfZGllKTogTGlrZXdpc2Uu Ci0JKHZhbHVlX2Zvcm1hdCk6IExpa2V3aXNlLgotCShsb2NfbGlzdF9oYXNfdmlld3MpOiBOZXcu Ci0JKGdlbl9sbHN5bSk6IFNldCB2bF9zeW1ib2wgdG9vLgotCShtYXliZV9nZW5fbGxzeW0sIHNr aXBfbG9jX2xpc3RfZW50cnkpOiBOZXcuCi0JKGR3YXJmMm91dF9tYXliZV9vdXRwdXRfbG9jbGlz dF92aWV3X3BhaXIpOiBOZXcuCi0JKG91dHB1dF9sb2NfbGlzdCk6IE91dHB1dCB2aWV3IGxpc3Qg b3IgZW50cmllcyB0b28uCi0JKG91dHB1dF92aWV3X2xpc3Rfb2Zmc2V0KTogTmV3LgotCShvdXRw dXRfZGllKTogSGFuZGxlIGR3X3ZhbF9jbGFzc192aWV3X2xpc3QuCi0JKG91dHB1dF9kd2FyZl92 ZXJzaW9uKTogTmV3LgotCShvdXRwdXRfY29tcGlsYXRpb25fdW5pdF9oZWFkZXIpOiBVc2UgaXQu Ci0JKG91dHB1dF9za2VsZXRvbl9kZWJ1Z19zZWN0aW9ucyk6IExpa2V3aXNlLgotCShvdXRwdXRf cm5nbGlzdHMsIG91dHB1dF9saW5lX2luZm8pOiBMaWtld2lzZS4KLQkob3V0cHV0X3B1Ym5hbWVz LCBvdXRwdXRfYXJhbmdlcyk6IFVwZGF0ZSB2ZXJzaW9uIGNvbW1lbnRzLgotCShvdXRwdXRfb25l X2xpbmVfaW5mb190YWJsZSk6IE91dHB1dCB2aWV3IG51bWJlcnMgaW4gYXNtIGNvbW1lbnRzLgot CShkd19sb2NfbGlzdCk6IERldGVybWluZSBjdXJyZW50IGVuZHZpZXcsIHBhc3MgaXQgdG8gbmV3 X2xvY19saXN0LgotCUNhbGwgbWF5YmVfZ2VuX2xsc3ltLgotCShsb2NfbGlzdF9mcm9tX3RyZWVf MSk6IEFkanVzdC4KLQkoYWRkX0FUX2xvY2F0aW9uX2Rlc2NyaXB0aW9uKTogQ3JlYXRlIHZpZXcg bGlzdCBhdHRyaWJ1dGUgaWYKLQluZWVkZWQsIGNoZWNrIGl0J3MgYWJzZW50IG90aGVyd2lzZS4K LQkoY29udmVydF9jZmFfdG9fZmJfbG9jX2xpc3QpOiBBZGp1c3QuCi0JKG1heWJlX2VtaXRfZmls ZSk6IENhbGwgb3V0cHV0X2FzbV9saW5lX2RlYnVnX2luZm8gZm9yIHRlc3QuCi0JKGR3YXJmMm91 dF92YXJfbG9jYXRpb24pOiBSZXNldCB2aWV3cyBhcyBuZWVkZWQuICBQcmVjb21wdXRlCi0JYWRk X3Zhcl9sb2NfdG9fZGVjbCBhcmdzLiAgQ2FsbCBnZXRfYXR0cl9taW5fbGVuZ3RoIG9ubHkgaWYg d2UgaGF2ZSB0aGUKLQlhdHRyaWJ1dGUuICBTZXQgdmlldy4KLQkobmV3X2xpbmVfaW5mb190YWJs ZSk6IFJlc2V0IG5leHQgdmlldy4KLQkoc2V0X2N1cl9saW5lX2luZm9fdGFibGUpOiBDYWxsIG91 dHB1dF9hc21fbGluZV9kZWJ1Z19pbmZvIGZvciB0ZXN0LgotCShkd2FyZjJvdXRfc291cmNlX2xp bmUpOiBMaWtld2lzZS4gIE91dHB1dCB2aWV3IHJlc2V0cyBhbmQgbGFiZWxzIHRvCi0JdGhlIGFz c2VtYmxlciwgb3Igc2VsZWN0IGFwcHJvcHJpYXRlIGxpbmUgaW5mbyBvcGNvZGVzLgotCShwcnVu ZV91bnVzZWRfdHlwZXNfd2Fsa19hdHRyaWJzKTogSGFuZGxlIGR3X3ZhbF9jbGFzc192aWV3X2xp c3QuCi0JKG9wdGltaXplX3N0cmluZ19sZW5ndGgpOiBDYXRjaCBpdC4gIEFkanVzdC4KLQkocmVz b2x2ZV9hZGRyKTogQ29weSB2bF9zeW1ib2wgYWxvbmcgd2l0aCBsbF9zeW1ib2wuICBIYW5kbGUK LQlkd192YWxfY2xhc3Nfdmlld19saXN0LCBhbmQgcmVtb3ZlIGl0IGlmIG5vIGxvbmdlciBuZWVk ZWQuCi0JKGhhc2hfbG9jX2xpc3QpOiBIYXNoIHZpZXcgbnVtYmVycy4KLQkobG9jX2xpc3RfaGFz aGVyOjplcXVhbCk6IENvbXBhcmUgdGhlbS4KLQkob3B0aW1pemVfbG9jYXRpb25fbGlzdHMpOiBD aGVjayB3aGV0aGVyIGEgdmlldyBsaXN0IHN5bWJvbCBpcwotCW5lZWRlZCwgYW5kIHdoZXRoZXIg dGhlIGxvY3ZpZXcgYXR0cmlidXRlIGlzIHByZXNlbnQsIGFuZAotCXdoZXRoZXIgdGhleSBtYXRj aC4gIFJlbW92ZSB0aGUgbG9jdmlldyBhdHRyaWJ1dGUgaWYgbm8gbG9uZ2VyCi0JbmVlZGVkLgot CShpbmRleF9sb2NhdGlvbl9saXN0cyk6IENhbGwgc2tpcF9sb2NfbGlzdF9lbnRyeSBmb3IgdGVz dC4KLQkoZHdhcmYyb3V0X2ZpbmlzaCk6IENhbGwgb3V0cHV0X2FzbV9saW5lX2RlYnVnX2luZm8g Zm9yIHRlc3QuCi0JVXNlIG91dHB1dF9kd2FyZl92ZXJzaW9uLgotCSogZHdhcmYyb3V0LmggKGVu dW0gZHdfdmFsX2NsYXNzKTogQWRkIGR3X3ZhbF9jbGFzc192aWV3X2xpc3QuCi0JKHN0cnVjdCBk d192YWxfbm9kZSk6IEFkZCB2YWxfdmlld19saXN0LgotCSogZmluYWwuYyAoU0VFTl9ORVhUX1ZJ RVcpOiBOZXcuCi0JKHNldF9uZXh0X3ZpZXdfbmVlZGVkKTogTmV3LgotCShjbGVhcl9uZXh0X3Zp ZXdfbmVlZGVkKTogTmV3LgotCShtYXliZV9vdXRwdXRfbmV4dF92aWV3KTogTmV3LgotCShmaW5h bF9zdGFydF9mdW5jdGlvbik6IFJlbmFtZSB0by4uLgotCShmaW5hbF9zdGFydF9mdW5jdGlvbl8x KTogLi4uIHRoaXMuICBUYWtlIHBvaW50ZXIgdG8gRklSU1QsCi0JYWRkIFNFRU4gcGFyYW1ldGVy LiAgRW1pdCBwYXJhbSBiaW5kaW5ncyBpbiB0aGUgaW5pdGlhbCB2aWV3LgotCShmaW5hbF9zdGFy dF9mdW5jdGlvbik6IFJlaW50cm9kdWNlIFNFRU4tbGVzcyBpbnRlcmZhY2UuCi0JKGZpbmFsKTog UmVuYW1lIHRvLi4uCi0JKGZpbmFsXzEpOiAuLi4gdGhpcy4gIFRha2UgU0VFTiBwYXJhbWV0ZXIu ICBPdXRwdXQgZmluYWwgcGVuZGluZwotCW5leHQgdmlldyBhdCB0aGUgZW5kLgotCShmaW5hbCk6 IFJlaW50cm9kdWNlIHNlZW4tbGVzcyBpbnRlcmZhY2UuCi0JKGZpbmFsX3NjYW5faW5zbik6IE91 dHB1dCBwZW5kaW5nIG5leHQgdmlldyBiZWZvcmUgc3dpdGNoaW5nCi0Jc2VjdGlvbnMgb3IgZW5k aW5nIGEgYmxvY2suICBNYXJrIHRoZSBuZXh0IHZpZXcgYXMgbmVlZGVkIHdoZW4KLQlvdXRwdXR0 aW5nIHZhcmlhYmxlIGxvY2F0aW9ucy4gIE5vdGlmeSBkZWJ1ZyBiYWNrZW5kIG9mIHNlY3Rpb24K LQljaGFuZ2VzLCBhbmQgb2YgbG9jYXRpb24gdmlldyBjaGFuZ2VzLgotCShyZXN0X29mX2hhbmRs ZV9maW5hbCk6IEFkanVzdC4KLQkqIHRvcGxldi5jIChwcm9jZXNzX29wdGlvbnMpOiBBdXRvZGV0 ZWN0IHZhbHVlIGZvciBkZWJ1ZyB2YXJpYWJsZQotCWxvY2F0aW9uIHZpZXdzIG9wdGlvbi4gIFdh cm4gb24gaW5jb21wYXQ1IHdpdGhvdXQgLWdkd2FyZi01LgotCSogZG9jL2ludm9rZS50ZXhpIChn dmFyaWFibGUtbG9jYXRpb24tdmlld3MpOiBOZXcuCi0JKGd2YXJpYWJsZS1sb2NhdGlvbi12aWV3 cz1pbmNvbXBhdDUpOiBOZXcuCi0JKGduby12YXJpYWJsZS1sb2NhdGlvbi12aWV3cyk6IE5ldy4K LWluY2x1ZGUvCi0JKiBkd2FyZjIuZGVmIChEV19BVF9HTlVfZW50cnlfdmlldyk6IE5ldy4KLQot CSogZHdhcmYyLmRlZiAoRFdfQVRfR05VX2xvY3ZpZXdzKTogTmV3LgotCSogZHdhcmYyLmggKGVu dW0gZHdhcmZfbG9jYXRpb25fbGlzdF9lbnRyeV90eXBlKTogQWRkCi0JRFdfTExFX0dOVV92aWV3 X3BhaXIuCi0JKERXX0xMRV92aWV3X3BhaXIpOiBEZWZpbmUuCi0KLS0tLSBpbmNsdWRlL2R3YXJm Mi5kZWYJKHJldmlzaW9uIDI1NzUxMSkKLSsrKyBpbmNsdWRlL2R3YXJmMi5kZWYJKHJldmlzaW9u IDI1NzUwOSkKLUBAIC00NDMsOCArNDQzLDYgQEAgRFdfQVQgKERXX0FUX0dOVV9wdWJ0eXBlcywg MHgyMTM1KQotIC8qIEF0dHJpYnV0ZSBmb3IgZGlzY3JpbWluYXRvci4KLSAgICBTZWUgaHR0cDov L2djYy5nbnUub3JnL3dpa2kvRGlzY3JpbWluYXRvciAgKi8KLSBEV19BVCAoRFdfQVRfR05VX2Rp c2NyaW1pbmF0b3IsIDB4MjEzNikKLS1EV19BVCAoRFdfQVRfR05VX2xvY3ZpZXdzLCAweDIxMzcp Ci0tRFdfQVQgKERXX0FUX0dOVV9lbnRyeV92aWV3LCAweDIxMzgpCi0gLyogVk1TIGV4dGVuc2lv bnMuICAqLwotIERXX0FUIChEV19BVF9WTVNfcnRuYmVnX3BkX2FkZHJlc3MsIDB4MjIwMSkKLSAv KiBHTkFUIGV4dGVuc2lvbnMuICAqLwotLS0tIGluY2x1ZGUvZHdhcmYyLmgJKHJldmlzaW9uIDI1 NzUxMSkKLSsrKyBpbmNsdWRlL2R3YXJmMi5oCShyZXZpc2lvbiAyNTc1MDkpCi1AQCAtMjk4LDE0 ICsyOTgsNiBAQCBlbnVtIGR3YXJmX2xvY2F0aW9uX2xpc3RfZW50cnlfdHlwZQotICAgICBEV19M TEVfc3RhcnRfZW5kID0gMHgwNywKLSAgICAgRFdfTExFX3N0YXJ0X2xlbmd0aCA9IDB4MDgsCi0g Ci0tICAgIC8qIDxodHRwOi8vbGlzdHMuZHdhcmZzdGQub3JnL3ByaXZhdGUuY2dpL2R3YXJmLWRp c2N1c3MtZHdhcmZzdGQub3JnLzIwMTctQXByaWwvMDA0MzQ3Lmh0bWw+Ci0tICAgICAgIGhhcyB0 aGUgcHJvcG9zYWwgZm9yIG5vdzsgb25seSBhdmFpbGFibGUgdG8gbGlzdCBtZW1iZXJzLgotLQot LSAgICAgICBBIChwb3NzaWJseSB1cGRhdGVkKSBjb3B5IG9mIHRoZSBwcm9wb3NhbCBpcyBhdmFp bGFibGUgYXQKLS0gICAgICAgPGh0dHA6Ly9wZW9wbGUucmVkaGF0LmNvbS9hb2xpdmEvcGFwZXJz L3Nmbi9kd2FyZjYtc2ZuLWx2dS50eHQ+LiAgKi8KLS0gICAgRFdfTExFX0dOVV92aWV3X3BhaXIg PSAweDA5LAotLSNkZWZpbmUgRFdfTExFX3ZpZXdfcGFpciBEV19MTEVfR05VX3ZpZXdfcGFpcgot LQotICAgICAvKiBGb3JtZXIgZXh0ZW5zaW9uIGZvciBGaXNzaW9uLgotICAgICAgICBTZWUgaHR0 cDovL2djYy5nbnUub3JnL3dpa2kvRGVidWdGaXNzaW9uLiAgKi8KLSAgICAgRFdfTExFX0dOVV9l bmRfb2ZfbGlzdF9lbnRyeSA9IDB4MDAsCi0tLS0gZ2NjL2RvYy9naW1wbGUudGV4aQkocmV2aXNp b24gMjU3NTExKQotKysrIGdjYy9kb2MvZ2ltcGxlLnRleGkJKHJldmlzaW9uIDI1NzUwOSkKLUBA IC04MzYsMTEgKzgzNiw2IEBAIFJldHVybiB0cnVlIGlmIGcgaXMgYSBAY29kZXtHSU1QTEVfREVC VUcKLSBhIHNvdXJjZSBzdGF0ZW1lbnQuCi0gQGVuZCBkZWZ0eXBlZm4KLSAKLS1AZGVmdHlwZWZu IHtHSU1QTEUgZnVuY3Rpb259IGdpbXBsZV9kZWJ1Z19pbmxpbmVfZW50cnlfcCAoZ2ltcGxlIGcp Ci0tUmV0dXJuIHRydWUgaWYgZyBpcyBhIEBjb2Rle0dJTVBMRV9ERUJVR30gdGhhdCBtYXJrcyB0 aGUgZW50cnkKLS1wb2ludCBvZiBhbiBpbmxpbmVkIGZ1bmN0aW9uLgotLUBlbmQgZGVmdHlwZWZu Ci0tCi0gQGRlZnR5cGVmbiB7R0lNUExFIGZ1bmN0aW9ufSBnaW1wbGVfZGVidWdfbm9uYmluZF9t YXJrZXJfcCAoZ2ltcGxlIGcpCi0gUmV0dXJuIHRydWUgaWYgZyBpcyBhIEBjb2Rle0dJTVBMRV9E RUJVR30gdGhhdCBtYXJrcyBhIHByb2dyYW0gbG9jYXRpb24sCi0gd2l0aG91dCBhbnkgdmFyaWFi bGUgYmluZGluZy4KLUBAIC0xNTQ2LDcgKzE1NDEsNiBAQCBTZXQgdGhlIGNvbmRpdGlvbmFsIEBj b2Rle0NPTkRfU1RNVH0gdG8KLSBAY2luZGV4IEBjb2Rle0dJTVBMRV9ERUJVR30KLSBAY2luZGV4 IEBjb2Rle0dJTVBMRV9ERUJVR19CSU5EfQotIEBjaW5kZXggQGNvZGV7R0lNUExFX0RFQlVHX0JF R0lOX1NUTVR9Ci0tQGNpbmRleCBAY29kZXtHSU1QTEVfREVCVUdfSU5MSU5FX0VOVFJZfQotIAot IEBkZWZ0eXBlZm4ge0dJTVBMRSBmdW5jdGlvbn0gZ2RlYnVnICpnaW1wbGVfYnVpbGRfZGVidWdf YmluZCAodHJlZSB2YXIsIEAKLSB0cmVlIHZhbHVlLCBnaW1wbGUgc3RtdCkKLUBAIC0xNjMyLDE4 ICsxNjI2LDYgQEAgb2JzZXJ2YWJsZSwgYW5kIHRoYXQgbm9uZSBvZiB0aGUgc2lkZSBlZgotIHN0 YXRlbWVudHMgYXJlLgotIEBlbmQgZGVmdHlwZWZuCi0gCi0tQGRlZnR5cGVmbiB7R0lNUExFIGZ1 bmN0aW9ufSBnaW1wbGUgZ2ltcGxlX2J1aWxkX2RlYnVnX2lubGluZV9lbnRyeSAodHJlZSBibG9j aywgbG9jYXRpb25fdCBsb2NhdGlvbikKLS1CdWlsZCBhIEBjb2Rle0dJTVBMRV9ERUJVR30gc3Rh dGVtZW50IHdpdGgKLS1AY29kZXtHSU1QTEVfREVCVUdfSU5MSU5FX0VOVFJZfSBAY29kZXtzdWJj b2RlfS4gIFRoZSBlZmZlY3Qgb2YgdGhpcwotLXN0YXRlbWVudCBpcyB0byB0ZWxsIGRlYnVnIGlu Zm9ybWF0aW9uIGdlbmVyYXRpb24gbWFjaGluZXJ5IHRoYXQgYQotLWZ1bmN0aW9uIGNhbGwgYXQg QGNvZGV7bG9jYXRpb259IHVuZGVyd2VudCBpbmxpbmUgc3Vic3RpdHV0aW9uLCB0aGF0Ci0tQGNv ZGV7YmxvY2t9IGlzIHRoZSBlbmNsb3NpbmcgbGV4aWNhbCBibG9jayBjcmVhdGVkIGZvciB0aGUK LS1zdWJzdGl0dXRpb24sIGFuZCB0aGF0IGF0IHRoZSBwb2ludCBvZiB0aGUgcHJvZ3JhbSBpbiB3 aGljaCB0aGUgc3RtdCBpcwotLWluc2VydGVkLCBhbGwgcGFyYW1ldGVycyBmb3IgdGhlIGlubGlu ZWQgZnVuY3Rpb24gYXJlIGJvdW5kIHRvIHRoZQotLXJlc3BlY3RpdmUgYXJndW1lbnRzLCBhbmQg bm9uZSBvZiB0aGUgc2lkZSBlZmZlY3RzIG9mIGl0cyBzdG10cyBhcmUKLS1vYnNlcnZhYmxlLgot LUBlbmQgZGVmdHlwZWZuCi0tCi0gQG5vZGUgQGNvZGV7R0lNUExFX0VIX0ZJTFRFUn0KLSBAc3Vi c2VjdGlvbiBAY29kZXtHSU1QTEVfRUhfRklMVEVSfQotIEBjaW5kZXggQGNvZGV7R0lNUExFX0VI X0ZJTFRFUn0KLS0tLSBnY2MvZG9jL2ludm9rZS50ZXhpCShyZXZpc2lvbiAyNTc1MTEpCi0rKysg Z2NjL2RvYy9pbnZva2UudGV4aQkocmV2aXNpb24gMjU3NTA5KQotQEAgLTM0OCw3ICszNDgsNiBA QCBPYmplY3RpdmUtQyBhbmQgT2JqZWN0aXZlLUMrKyBEaWFsZWN0c30uCi0gLWdzdGFicyAgLWdz dGFicysgIC1nc3RyaWN0LWR3YXJmICAtZ25vLXN0cmljdC1kd2FyZiBAZ29sCi0gLWdjb2x1bW4t aW5mbyAgLWduby1jb2x1bW4taW5mbyBAZ29sCi0gLWdzdGF0ZW1lbnQtZnJvbnRpZXJzICAtZ25v LXN0YXRlbWVudC1mcm9udGllcnMgQGdvbAotLS1ndmFyaWFibGUtbG9jYXRpb24tdmlld3MgIC1n bm8tdmFyaWFibGUtbG9jYXRpb24tdmlld3MgQGdvbAotIC1ndm1zICAtZ3hjb2ZmICAtZ3hjb2Zm KyAgLWd6QHJ7W309QHZhcnt0eXBlfUBye119IEBnb2wKLSAtZmRlYnVnLXByZWZpeC1tYXA9QHZh cntvbGR9PUB2YXJ7bmV3fSAgLWZkZWJ1Zy10eXBlcy1zZWN0aW9uIEBnb2wKLSAtZm5vLWVsaW1p bmF0ZS11bnVzZWQtZGVidWctdHlwZXMgQGdvbAotQEAgLTcyNTYsMzQgKzcyNTUsNiBAQCBtYXJr ZXJzIGluIHRoZSBsaW5lIG51bWJlciB0YWJsZS4gIFRoaXMKLSBjb21waWxpbmcgd2l0aCBvcHRp bWl6YXRpb24gKEBvcHRpb257LU9zfSwgQG9wdGlvbnstT30sIEBvcHRpb257LU8yfSwKLSBAZG90 c3t9KSwgYW5kIG91dHB1dHRpbmcgRFdBUkYgMiBkZWJ1ZyBpbmZvcm1hdGlvbiBhdCB0aGUgbm9y bWFsIGxldmVsLgotIAotLUBpdGVtIC1ndmFyaWFibGUtbG9jYXRpb24tdmlld3MKLS1AaXRlbSAt Z3ZhcmlhYmxlLWxvY2F0aW9uLXZpZXdzPWluY29tcGF0NQotLUBpdGVtIC1nbm8tdmFyaWFibGUt bG9jYXRpb24tdmlld3MKLS1Ab3BpbmRleCBndmFyaWFibGUtbG9jYXRpb24tdmlld3MKLS1Ab3Bp bmRleCBndmFyaWFibGUtbG9jYXRpb24tdmlld3M9aW5jb21wYXQ1Ci0tQG9waW5kZXggZ25vLXZh cmlhYmxlLWxvY2F0aW9uLXZpZXdzCi0tQXVnbWVudCB2YXJpYWJsZSBsb2NhdGlvbiBsaXN0cyB3 aXRoIHByb2dyZXNzaXZlIHZpZXcgbnVtYmVycyBpbXBsaWVkCi0tZnJvbSB0aGUgbGluZSBudW1i ZXIgdGFibGUuICBUaGlzIGVuYWJsZXMgZGVidWcgaW5mb3JtYXRpb24gY29uc3VtZXJzIHRvCi0t aW5zcGVjdCBzdGF0ZSBhdCBjZXJ0YWluIHBvaW50cyBvZiB0aGUgcHJvZ3JhbSwgZXZlbiBpZiBu byBpbnN0cnVjdGlvbnMKLS1hc3NvY2lhdGVkIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgc291cmNl IGxvY2F0aW9ucyBhcmUgcHJlc2VudCBhdCB0aGF0Ci0tcG9pbnQuICBJZiB0aGUgYXNzZW1ibGVy IGxhY2tzIHN1cHBvcnQgZm9yIHZpZXcgbnVtYmVycyBpbiBsaW5lIG51bWJlcgotLXRhYmxlcywg dGhpcyB3aWxsIGNhdXNlIHRoZSBjb21waWxlciB0byBlbWl0IHRoZSBsaW5lIG51bWJlciB0YWJs ZSwKLS13aGljaCBnZW5lcmFsbHkgbWFrZXMgdGhlbSBzb21ld2hhdCBsZXNzIGNvbXBhY3QuICBU aGUgYXVnbWVudGVkIGxpbmUKLS1udW1iZXIgdGFibGVzIGFuZCBsb2NhdGlvbiBsaXN0cyBhcmUg ZnVsbHkgYmFja3dhcmQtY29tcGF0aWJsZSwgc28gdGhleQotLWNhbiBiZSBjb25zdW1lZCBieSBk ZWJ1ZyBpbmZvcm1hdGlvbiBjb25zdW1lcnMgdGhhdCBhcmUgbm90IGF3YXJlIG9mCi0tdGhlc2Ug YXVnbWVudGF0aW9ucywgYnV0IHRoZXkgd29uJ3QgZGVyaXZlIGFueSBiZW5lZml0IGZyb20gdGhl bSBlaXRoZXIuCi0tVGhpcyBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgd2hlbiBvdXRwdXR0aW5nIERX QVJGIDIgZGVidWcgaW5mb3JtYXRpb24gYXQKLS10aGUgbm9ybWFsIGxldmVsLCBhcyBsb25nIGFz IEBvcHRpb257LWZ2YXItdHJhY2tpbmctYXNzaWdubWVudHN9IGlzCi0tZW5hYmxlZCBhbmQgQG9w dGlvbnstZ3N0cmljdC1kd2FyZn0gaXMgbm90LgotLQotLVRoZXJlIGlzIGEgcHJvcG9zZWQgcmVw cmVzZW50YXRpb24gZm9yIHZpZXcgbnVtYmVycyB0aGF0IGlzIG5vdCBiYWNrd2FyZAotLWNvbXBh dGlibGUgd2l0aCB0aGUgbG9jYXRpb24gbGlzdCBmb3JtYXQgaW50cm9kdWNlZCBpbiBEV0FSRiA1 LCB0aGF0IGNhbgotLWJlIGVuYWJsZWQgd2l0aCBAb3B0aW9uey1ndmFyaWFibGUtbG9jYXRpb24t dmlld3M9aW5jb21wYXQ1fS4gIFRoaXMKLS1vcHRpb24gbWF5IGJlIHJlbW92ZWQgaW4gdGhlIGZ1 dHVyZSwgaXMgb25seSBwcm92aWRlZCBhcyBhIHJlZmVyZW5jZQotLWltcGxlbWVudGF0aW9uIG9m IHRoZSBwcm9wb3NlZCByZXByZXNlbnRhdGlvbi4gIERlYnVnIGluZm9ybWF0aW9uCi0tY29uc3Vt ZXJzIGFyZSBub3QgZXhwZWN0ZWQgdG8gc3VwcG9ydCB0aGlzIGV4dGVuZGVkIGZvcm1hdCwgYW5k IHRoZXkKLS13b3VsZCBiZSByZW5kZXJlZCB1bmFibGUgdG8gZGVjb2RlIGxvY2F0aW9uIGxpc3Rz IHVzaW5nIGl0LgotLQotIEBpdGVtIC1nekBye1t9PUB2YXJ7dHlwZX1AcntdfQotIEBvcGluZGV4 IGd6Ci0gUHJvZHVjZSBjb21wcmVzc2VkIGRlYnVnIHNlY3Rpb25zIGluIERXQVJGIGZvcm1hdCwg aWYgdGhhdCBpcyBzdXBwb3J0ZWQuCi0tLS0gZ2NjL2RvYy9ydGwudGV4aQkocmV2aXNpb24gMjU3 NTExKQotKysrIGdjYy9kb2MvcnRsLnRleGkJKHJldmlzaW9uIDI1NzUwOSkKLUBAIC0zNjcwLDEw ICszNjcwLDcgQEAgUmVmZXJzIHRvIGEgcGFyYW1ldGVyIHRoYXQgd2FzIGNvbXBsZXRlbAotIEBp dGVtIChkZWJ1Z19tYXJrZXI6QHZhcnttb2RlfSkKLSBNYXJrcyBhIHByb2dyYW0gbG9jYXRpb24u ICBXaXRoIEBjb2Rle1ZPSURtb2RlfSwgaXQgc3RhbmRzIGZvciB0aGUKLSBiZWdpbm5pbmcgb2Yg YSBzdGF0ZW1lbnQsIGEgcmVjb21tZW5kZWQgaW5zcGVjdGlvbiBwb2ludCBsb2dpY2FsbHkgYWZ0 ZXIKLS1hbGwgcHJpb3Igc2lkZSBlZmZlY3RzLCBhbmQgYmVmb3JlIGFueSBzdWJzZXF1ZW50IHNp ZGUgZWZmZWN0cy4gIFdpdGgKLS1AY29kZXtCTEttb2RlfSwgaXQgaW5kaWNhdGVzIGFuIGlubGlu ZSBlbnRyeSBwb2ludDogdGhlIGxleGljYWwgYmxvY2sKLS1lbmNvZGVkIGluIHRoZSBAY29kZXtJ TlNOX0xPQ0FUSU9OfSBpcyB0aGUgZW5jbG9zaW5nIGJsb2NrIHRoYXQgZW5jbG9zZXMKLS10aGUg aW5saW5lZCBmdW5jdGlvbi4KLSthbGwgcHJpb3Igc2lkZSBlZmZlY3RzLCBhbmQgYmVmb3JlIGFu eSBzdWJzZXF1ZW50IHNpZGUgZWZmZWN0cy4KLSAKLSBAZW5kIHRhYmxlCi0gCi1AQCAtMzk1Nywx MyArMzk1NCw2IEBAIFRoaXMgbm90ZSBpcyB1c2VkIHRvIGdlbmVyYXRlIEBjb2Rle2lzX3MKLSBk ZWJ1Z2dpZ24gaW5mb3JtYXRpb24uICBJdCBpbmRpY2F0ZXMgdGhlIGJlZ2lubmluZyBvZiBhIHVz ZXIKLSBzdGF0ZW1lbnQuCi0gCi0tQGZpbmRleCBOT1RFX0lOU05fSU5MSU5FX0VOVFJZCi0tQGl0 ZW0gTk9URV9JTlNOX0lOTElORV9FTlRSWQotLVRoaXMgbm90ZSBpcyB1c2VkIHRvIGdlbmVyYXRl IEBjb2Rle2VudHJ5X3BjfSBmb3IgaW5saW5lZCBzdWJyb3V0aW5lcyBpbgotLWRlYnVnZ2luZyBp bmZvcm1hdGlvbi4gIEl0IGluZGljYXRlcyBhbiBpbnNwZWN0aW9uIHBvaW50IGF0IHdoaWNoIGFs bAotLWFyZ3VtZW50cyBmb3IgdGhlIGlubGluZWQgZnVuY3Rpb24gaGF2ZSBiZWVuIGJvdW5kLCBh bmQgYmVmb3JlIGl0cyBmaXJzdAotLXN0YXRlbWVudC4KLS0KLSBAZW5kIHRhYmxlCi0gCi0gVGhl c2UgY29kZXMgYXJlIHByaW50ZWQgc3ltYm9saWNhbGx5IHdoZW4gdGhleSBhcHBlYXIgaW4gZGVi dWdnaW5nIGR1bXBzLgotQEAgLTM5ODEsMTIgKzM5NzEsOCBAQCBiaW5kcyBhIHVzZXIgdmFyaWFi bGUgdHJlZSB0byBhbiBSVEwgcmVwCi0gaXQgc3RhbmRzIGZvciB0aGUgdmFsdWUgYm91bmQgdG8g dGhlIGNvcnJlc3BvbmRpbmcKLSBAY29kZXtERUJVR19FWFBSX0RFQ0x9LgotIAotLUBjb2Rle0dJ TVBMRV9ERUJVR19CRUdJTl9TVE1UfSBhbmQgQGNvZGV7R0lNUExFX0RFQlVHX0lOTElORV9FTlRS WX0gYXJlCi0tZXhwYW5kZWQgdG8gUlRMIGFzIGEgQGNvZGV7REVCVUdfSU5TTn0gd2l0aCBhIEBj b2Rle0RFQlVHX01BUktFUn0KLS1AY29kZXtQQVRURVJOfTsgdGhlIGRpZmZlcmVuY2UgaXMgdGhl IFJUTCBtb2RlOiB0aGUgZm9ybWVyJ3MKLS1AY29kZXtERUJVR19NQVJLRVJ9IGlzIEBjb2Rle1ZP SURtb2RlfSwgd2hlcmVhcyB0aGUgbGF0dGVyIGlzCi0tQGNvZGV7QkxLbW9kZX07IGluZm9ybWF0 aW9uIGFib3V0IHRoZSBpbmxpbmVkIGZ1bmN0aW9uIGNhbiBiZSB0YWtlbiBmcm9tCi0tdGhlIGxl eGljYWwgYmxvY2sgZW5jb2RlZCBpbiB0aGUgQGNvZGV7SU5TTl9MT0NBVElPTn0uICBUaGVzZQot K0Bjb2Rle0dJTVBMRV9ERUJVR19CRUdJTl9TVE1UfSBpcyBleHBhbmRlZCB0byBSVEwgYXMgYSBA Y29kZXtERUJVR19JTlNOfQotK3dpdGggYSBAY29kZXtWT0lEbW9kZX0gQGNvZGV7REVCVUdfTUFS S0VSfSBAY29kZXtQQVRURVJOfS4gIFRoZXNlCi0gQGNvZGV7REVCVUdfSU5TTn1zLCB0aGF0IGRv IG5vdCBjYXJyeSBAY29kZXtWQVJfTE9DQVRJT059IGluZm9ybWF0aW9uLAotIGp1c3QgQGNvZGV7 REVCVUdfTUFSS0VSfXMsIGNhbiBiZSBkZXRlY3RlZCBieSB0ZXN0aW5nCi0gQGNvZGV7REVCVUdf TUFSS0VSX0lOU05fUH0sIHdoZXJlYXMgdGhvc2UgdGhhdCBkbyBjYW4gYmUgcmVjb2duaXplZCBh cwotQEAgLTM5OTcsOCArMzk4Myw4IEBAIHdpdGggcmVzcGVjdCB0byBlYWNoIG90aGVyLCBwYXJ0 aWN1bGFybHkKLSBpbmZvcm1hdGlvbiBpcyBrZXB0IGluIHBzZXVkby1pbnN0cnVjdGlvbiBmb3Jt LCBzbyB0aGF0LCB1bmxpa2Ugbm90ZXMsCi0gaXQgZ2V0cyB0aGUgc2FtZSB0cmVhdG1lbnQgYW5k IGFkanVzdG1lbnRzIHRoYXQgcmVndWxhciBpbnN0cnVjdGlvbnMKLSB3b3VsZC4gIEl0IGlzIHRo ZSB2YXJpYWJsZSB0cmFja2luZyBwYXNzIHRoYXQgdHVybnMgdGhlc2UKLS1wc2V1ZG8taW5zdHJ1 Y3Rpb25zIGludG8gQGNvZGV7Tk9URV9JTlNOX1ZBUl9MT0NBVElPTn0sCi0tQGNvZGV7Tk9URV9J TlNOX0JFR0lOX1NUTVR9IGFuZCBAY29kZXtOT1RFX0lOU05fSU5MSU5FX0VOVFJZfSBub3RlcywK LStwc2V1ZG8taW5zdHJ1Y3Rpb25zIGludG8gQGNvZGV7Tk9URV9JTlNOX1ZBUl9MT0NBVElPTn0g YW5kCi0rQGNvZGV7Tk9URV9JTlNOX0JFR0lOX1NUTVR9IG5vdGVzLAotIGFuYWx5emluZyBjb250 cm9sIGZsb3csIHZhbHVlIGVxdWl2YWxlbmNlcyBhbmQgY2hhbmdlcyB0byByZWdpc3RlcnMgYW5k Ci0gbWVtb3J5IHJlZmVyZW5jZWQgaW4gdmFsdWUgZXhwcmVzc2lvbnMsIHByb3BhZ2F0aW5nIHRo ZSB2YWx1ZXMgb2YgZGVidWcKLSB0ZW1wb3JhcmllcyBhbmQgZGV0ZXJtaW5pbmcgZXhwcmVzc2lv bnMgdGhhdCBjYW4gYmUgdXNlZCB0byBjb21wdXRlIHRoZQotLS0tIGdjYy9kd2FyZjJhc20uYwko cmV2aXNpb24gMjU3NTExKQotKysrIGdjYy9kd2FyZjJhc20uYwkocmV2aXNpb24gMjU3NTA5KQot QEAgLTc2NywzNSArNzY3LDYgQEAgZHcyX2FzbV9vdXRwdXRfZGF0YV9zbGViMTI4IChIT1NUX1dJ REVfSQotICAgdmFfZW5kIChhcCk7Ci0gfQotIAotLS8qIE91dHB1dCBzeW1ib2wgTEFCMSBhcyBh biB1bnNpZ25lZCBMRUIxMjggcXVhbnRpdHkuICBMQUIxIHNob3VsZCBiZQotLSAgIGFuIGFzc2Vt Ymxlci1jb21wdXRlZCBjb25zdGFudCwgZS5nLiBhIHZpZXcgbnVtYmVyLCBiZWNhdXNlIHdlCi0t ICAgY2FuJ3QgaGF2ZSByZWxvY2F0aW9ucyBpbiBMRUIxMjggcXVhbnRpdGllcy4gICovCi0tCi0t dm9pZAotLWR3Ml9hc21fb3V0cHV0X3N5bW5hbWVfdWxlYjEyOCAoY29uc3QgY2hhciAqbGFiMSBB VFRSSUJVVEVfVU5VU0VELAotLQkJCQljb25zdCBjaGFyICpjb21tZW50LCAuLi4pCi0tewotLSAg dmFfbGlzdCBhcDsKLS0KLS0gIHZhX3N0YXJ0IChhcCwgY29tbWVudCk7Ci0tCi0tI2lmZGVmIEhB VkVfQVNfTEVCMTI4Ci0tICBmcHV0cyAoIlx0LnVsZWIxMjggIiwgYXNtX291dF9maWxlKTsKLS0g IGFzc2VtYmxlX25hbWUgKGFzbV9vdXRfZmlsZSwgbGFiMSk7Ci0tI2Vsc2UKLS0gIGdjY191bnJl YWNoYWJsZSAoKTsKLS0jZW5kaWYKLS0KLS0gIGlmIChmbGFnX2RlYnVnX2FzbSAmJiBjb21tZW50 KQotLSAgICB7Ci0tICAgICAgZnByaW50ZiAoYXNtX291dF9maWxlLCAiXHQlcyAiLCBBU01fQ09N TUVOVF9TVEFSVCk7Ci0tICAgICAgdmZwcmludGYgKGFzbV9vdXRfZmlsZSwgY29tbWVudCwgYXAp OwotLSAgICB9Ci0tICBmcHV0YyAoJ1xuJywgYXNtX291dF9maWxlKTsKLS0KLS0gIHZhX2VuZCAo YXApOwotLX0KLS0KLSB2b2lkCi0gZHcyX2FzbV9vdXRwdXRfZGVsdGFfdWxlYjEyOCAoY29uc3Qg Y2hhciAqbGFiMSBBVFRSSUJVVEVfVU5VU0VELAotIAkJCSAgICAgIGNvbnN0IGNoYXIgKmxhYjIg QVRUUklCVVRFX1VOVVNFRCwKLS0tLSBnY2MvZHdhcmYyYXNtLmgJKHJldmlzaW9uIDI1NzUxMSkK LSsrKyBnY2MvZHdhcmYyYXNtLmgJKHJldmlzaW9uIDI1NzUwOSkKLUBAIC03MCwxMCArNzAsNiBA QCBleHRlcm4gdm9pZCBkdzJfYXNtX291dHB1dF9kYXRhX3NsZWIxMjgKLSAJCQkJCSBjb25zdCBj aGFyICosIC4uLikKLSAgICAgIEFUVFJJQlVURV9OVUxMX1BSSU5URl8yOwotIAotLWV4dGVybiB2 b2lkIGR3Ml9hc21fb3V0cHV0X3N5bW5hbWVfdWxlYjEyOCAoY29uc3QgY2hhciAqLAotLQkJCQkJ ICAgIGNvbnN0IGNoYXIgKiwgLi4uKQotLSAgICAgQVRUUklCVVRFX05VTExfUFJJTlRGXzI7Ci0t Ci0gZXh0ZXJuIHZvaWQgZHcyX2FzbV9vdXRwdXRfZGVsdGFfdWxlYjEyOCAoY29uc3QgY2hhciAq LCBjb25zdCBjaGFyICosCi0gCQkJCQkgIGNvbnN0IGNoYXIgKiwgLi4uKQotICAgICAgQVRUUklC VVRFX05VTExfUFJJTlRGXzM7Ci0tLS0gZ2NjL2NvbmZpZ3VyZQkocmV2aXNpb24gMjU3NTExKQot KysrIGdjYy9jb25maWd1cmUJKHJldmlzaW9uIDI1NzUwOSkKLUBAIC0yNzgyNSw1MiArMjc4MjUs NiBAQCAkYXNfZWNobyAiJGdjY19jdl9hc19kd2FyZjJfZmlsZV9idWdneSIKLSAKLSAkYXNfZWNo byAiI2RlZmluZSBIQVZFX0FTX0RXQVJGMl9ERUJVR19MSU5FIDEiID4+Y29uZmRlZnMuaAotIAot LQotLSAgICBpZiB0ZXN0ICRnY2NfY3ZfYXNfbGViMTI4ID0geWVzOyB0aGVuCi0tCWNvbmZ0ZXN0 X3M9IlwKLS0JLmZpbGUgMSBcImNvbmZ0ZXN0LnNcIgotLQkubG9jIDEgMyAwIHZpZXcgLkxWVTEK LS0JJGluc24KLS0JLmRhdGEKLS0JLnVsZWIxMjggLkxWVTEKLS0JLnVsZWIxMjggLkxWVTEKLS0i Ci0tCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgYXNz ZW1ibGVyIGZvciBkd2FyZjIgZGVidWdfdmlldyBzdXBwb3J0IiA+JjUKLS0kYXNfZWNob19uICJj aGVja2luZyBhc3NlbWJsZXIgZm9yIGR3YXJmMiBkZWJ1Z192aWV3IHN1cHBvcnQuLi4gIiA+JjY7 IH0KLS1pZiB0ZXN0ICIke2djY19jdl9hc19kd2FyZjJfZGVidWdfdmlldytzZXR9IiA9IHNldDsg dGhlbiA6Ci0tICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotLWVsc2UKLS0gIGdjY19jdl9h c19kd2FyZjJfZGVidWdfdmlldz1ubwotLSAgICBpZiB0ZXN0ICRpbl90cmVlX2dhcyA9IHllczsg dGhlbgotLSAgICBpZiB0ZXN0ICRpbl90cmVlX2dhc19pc19lbGYgPSB5ZXMgXAotLSAgJiYgdGVz dCAkZ2NjX2N2X2dhc192ZXJzIC1nZSBgZXhwciBcKCBcKCAyIFwqIDEwMDAgXCkgKyAyNyBcKSBc KiAxMDAwICsgMGAKLS0gIHRoZW4gZ2NjX2N2X2FzX2R3YXJmMl9kZWJ1Z192aWV3PXllcwotLWZp Ci0tICBlbGlmIHRlc3QgeCRnY2NfY3ZfYXMgIT0geDsgdGhlbgotLSAgICAkYXNfZWNobyAiJGNv bmZ0ZXN0X3MiID4gY29uZnRlc3QucwotLSAgICBpZiB7IGFjX3RyeT0nJGdjY19jdl9hcyAkZ2Nj X2N2X2FzX2ZsYWdzICAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LnMgPiY1JwotLSAgeyB7IGV2YWwg ZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX3RyeVwiIjsgfSA+ JjUKLS0gIChldmFsICRhY190cnkpIDI+JjUKLS0gIGFjX3N0YXR1cz0kPwotLSAgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICB0 ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB9Ci0tICAgIHRoZW4KLS0JZ2NjX2N2X2FzX2R3YXJmMl9k ZWJ1Z192aWV3PXllcwotLSAgICBlbHNlCi0tICAgICAgZWNobyAiY29uZmlndXJlOiBmYWlsZWQg cHJvZ3JhbSB3YXMiID4mNQotLSAgICAgIGNhdCBjb25mdGVzdC5zID4mNQotLSAgICBmaQotLSAg ICBybSAtZiBjb25mdGVzdC5vIGNvbmZ0ZXN0LnMKLS0gIGZpCi0tZmkKLS17ICRhc19lY2hvICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdjY19jdl9hc19kd2FyZjJfZGVi dWdfdmlldyIgPiY1Ci0tJGFzX2VjaG8gIiRnY2NfY3ZfYXNfZHdhcmYyX2RlYnVnX3ZpZXciID4m NjsgfQotLWlmIHRlc3QgJGdjY19jdl9hc19kd2FyZjJfZGVidWdfdmlldyA9IHllczsgdGhlbgot LQotLSRhc19lY2hvICIjZGVmaW5lIEhBVkVfQVNfRFdBUkYyX0RFQlVHX1ZJRVcgMSIgPj5jb25m ZGVmcy5oCi0tCi0tZmkKLS0gICAgZmkKLSAgZmkKLSAKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBhc3NlbWJsZXIgZm9yIC0tZ2R3YXJmMiBvcHRp b24iID4mNQotLS0tIGdjYy9maW5hbC5jCShyZXZpc2lvbiAyNTc1MTEpCi0rKysgZ2NjL2ZpbmFs LmMJKHJldmlzaW9uIDI1NzUwOSkKLUBAIC0xMTAsNyArMTEwLDYgQEAgYWxvbmcgd2l0aCBHQ0M7 IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4KLSAvKiBCaXRmbGFncyB1c2VkIGJ5IGZpbmFsX3NjYW5f aW5zbi4gICovCi0gI2RlZmluZSBTRUVOX05PVEUJMQotICNkZWZpbmUgU0VFTl9FTUlUVEVECTIK LS0jZGVmaW5lIFNFRU5fTkVYVF9WSUVXCTQKLSAKLSAvKiBMYXN0IGluc24gcHJvY2Vzc2VkIGJ5 IGZpbmFsX3NjYW5faW5zbi4gICovCi0gc3RhdGljIHJ0eF9pbnNuICpkZWJ1Z19pbnNuOwotQEAg LTE2MTEsNyArMTYxMCw2IEBAIHJlZW1pdF9pbnNuX2Jsb2NrX25vdGVzICh2b2lkKQotIAkgICAg YnJlYWs7Ci0gCi0gCSAgY2FzZSBOT1RFX0lOU05fQkVHSU5fU1RNVDoKLS0JICBjYXNlIE5PVEVf SU5TTl9JTkxJTkVfRU5UUlk6Ci0gCSAgICB0aGlzX2Jsb2NrID0gTE9DQVRJT05fQkxPQ0sgKE5P VEVfTUFSS0VSX0xPQ0FUSU9OIChpbnNuKSk7Ci0gCSAgICBnb3RvIHNldF9jdXJfYmxvY2tfdG9f dGhpc19ibG9jazsKLSAKLUBAIC0xNjk0LDY3ICsxNjkyLDYgQEAgZ2V0X3NvbWVfbG9jYWxfZHlu YW1pY19uYW1lICgpCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0tLyogQXJyYW5nZSBmb3IgdXMgdG8g ZW1pdCBhIHNvdXJjZSBsb2NhdGlvbiBub3RlIGJlZm9yZSBhbnkgZnVydGhlcgotLSAgIHJlYWwg aW5zbnMgb3Igc2VjdGlvbiBjaGFuZ2VzLCBieSBzZXR0aW5nIHRoZSBTRUVOX05FWFRfVklFVyBi aXQgaW4KLS0gICAqU0VFTiwgYXMgbG9uZyBhcyB3ZSBhcmUga2VlcGluZyB0cmFjayBvZiBsb2Nh dGlvbiB2aWV3cy4gIFRoZSBiaXQKLS0gICBpbmRpY2F0ZXMgd2UgaGF2ZSByZWZlcmVuY2VkIHRo ZSBuZXh0IHZpZXcgYXQgdGhlIGN1cnJlbnQgUEMsIHNvIHdlCi0tICAgaGF2ZSB0byBlbWl0IGl0 LiAgVGhpcyBzaG91bGQgYmUgY2FsbGVkIG5leHQgdG8gdGhlIHZhcl9sb2NhdGlvbgotLSAgIGRl YnVnIGhvb2suICAqLwotLQotLXN0YXRpYyBpbmxpbmUgdm9pZAotLXNldF9uZXh0X3ZpZXdfbmVl ZGVkIChpbnQgKnNlZW4pCi0tewotLSAgaWYgKGRlYnVnX3ZhcmlhYmxlX2xvY2F0aW9uX3ZpZXdz KQotLSAgICAqc2VlbiB8PSBTRUVOX05FWFRfVklFVzsKLS19Ci0tCi0tLyogQ2xlYXIgdGhlIGZs YWcgaW4gKlNFRU4gaW5kaWNhdGluZyB3ZSBuZWVkIHRvIGVtaXQgdGhlIG5leHQgdmlldy4KLS0g ICBUaGlzIHNob3VsZCBiZSBjYWxsZWQgbmV4dCB0byB0aGUgc291cmNlX2xpbmUgZGVidWcgaG9v ay4gICovCi0tCi0tc3RhdGljIGlubGluZSB2b2lkCi0tY2xlYXJfbmV4dF92aWV3X25lZWRlZCAo aW50ICpzZWVuKQotLXsKLS0gICpzZWVuICY9IH5TRUVOX05FWFRfVklFVzsKLS19Ci0tCi0tLyog VGVzdCB3aGV0aGVyIHdlIGhhdmUgYSBwZW5kaW5nIHJlcXVlc3QgdG8gZW1pdCB0aGUgbmV4dCB2 aWV3IGluCi0tICAgKlNFRU4sIGFuZCBlbWl0IGl0IGlmIG5lZWRlZCwgY2xlYXJpbmcgdGhlIHJl cXVlc3QgYml0LiAgKi8KLS0KLS1zdGF0aWMgaW5saW5lIHZvaWQKLS1tYXliZV9vdXRwdXRfbmV4 dF92aWV3IChpbnQgKnNlZW4pCi0tewotLSAgaWYgKCgqc2VlbiAmIFNFRU5fTkVYVF9WSUVXKSAh PSAwKQotLSAgICB7Ci0tICAgICAgY2xlYXJfbmV4dF92aWV3X25lZWRlZCAoc2Vlbik7Ci0tICAg ICAgKCpkZWJ1Z19ob29rcy0+c291cmNlX2xpbmUpIChsYXN0X2xpbmVudW0sIGxhc3RfY29sdW1u bnVtLAotLQkJCQkgICBsYXN0X2ZpbGVuYW1lLCBsYXN0X2Rpc2NyaW1pbmF0b3IsCi0tCQkJCSAg IGZhbHNlKTsKLS0gICAgfQotLX0KLS0KLS0vKiBXZSB3YW50IHRvIGVtaXQgcGFyYW0gYmluZGlu Z3MgKGJlZm9yZSB0aGUgZmlyc3QgYmVnaW5fc3RtdCkgaW4gdGhlCi0tICAgaW5pdGlhbCB2aWV3 LCBpZiB3ZSBhcmUgZW1pdHRpbmcgdmlld3MuICBUbyB0aGF0IGVuZCwgd2UgbWF5Ci0tICAgY29u c3VtZSBpbml0aWFsIG5vdGVzIGluIHRoZSBmdW5jdGlvbiwgcHJvY2Vzc2luZyB0aGVtIGluCi0t ICAgZmluYWxfc3RhcnRfZnVuY3Rpb24sIGJlZm9yZSBzaWduYWxpbmcgdGhlIGJlZ2lubmluZyBv ZiB0aGUKLS0gICBwcm9sb2d1ZSwgcmF0aGVyIHRoYW4gaW4gZmluYWwuCi0tCi0tICAgV2UgZG9u J3QgdGVzdCB3aGV0aGVyIHRoZSBERUNMcyBhcmUgUEFSTV9ERUNMczogdGhlIGFzc3VtcHRpb24g aXMKLS0gICB0aGF0IHRoZXJlIHdpbGwgYmUgYSBOT1RFX0lOU05fQkVHSU5fU1RNVCBtYXJrZXIg YmVmb3JlIGFueQotLSAgIG5vbi1wYXJhbWV0ZXIgTk9URV9JTlNOX1ZBUl9MT0NBVElPTi4gIEl0 J3Mgb2sgaWYgdGhlIG1hcmtlciBpcyBub3QKLS0gICB0aGVyZSwgd2UnbGwganVzdCBoYXZlIG1v cmUgdmFyaWFibGUgbG9jYXRpb25zIGJvdW5kIGluIHRoZSBpbml0aWFsCi0tICAgdmlldywgd2hp Y2ggaXMgY29uc2lzdGVudCB3aXRoIHRoZWlyIGJlaW5nIGJvdW5kIHdpdGhvdXQgYW55IGNvZGUK LS0gICB0aGF0IHdvdWxkIGdpdmUgdGhlbSBhIHZhbHVlLiAgKi8KLS0KLS1zdGF0aWMgaW5saW5l IGJvb2wKLS1pbl9pbml0aWFsX3ZpZXdfcCAocnR4X2luc24gKmluc24pCi0tewotLSAgcmV0dXJu ICghREVDTF9JR05PUkVEX1AgKGN1cnJlbnRfZnVuY3Rpb25fZGVjbCkKLS0JICAmJiBkZWJ1Z192 YXJpYWJsZV9sb2NhdGlvbl92aWV3cwotLQkgICYmIGluc24gJiYgR0VUX0NPREUgKGluc24pID09 IE5PVEUKLS0JICAmJiAoTk9URV9LSU5EIChpbnNuKSA9PSBOT1RFX0lOU05fVkFSX0xPQ0FUSU9O Ci0tCSAgICAgIHx8IE5PVEVfS0lORCAoaW5zbikgPT0gTk9URV9JTlNOX0RFTEVURUQpKTsKLS19 Ci0tCi0gLyogT3V0cHV0IGFzc2VtYmxlciBjb2RlIGZvciB0aGUgc3RhcnQgb2YgYSBmdW5jdGlv biwKLSAgICBhbmQgaW5pdGlhbGl6ZSBzb21lIG9mIHRoZSB2YXJpYWJsZXMgaW4gdGhpcyBmaWxl Ci0gICAgZm9yIHRoZSBuZXcgZnVuY3Rpb24uICBUaGUgbGFiZWwgZm9yIHRoZSBmdW5jdGlvbiBh bmQgYXNzb2NpYXRlZAotQEAgLTE3NjIsMTUgKzE2OTksMTIgQEAgaW5faW5pdGlhbF92aWV3X3Ag KHJ0eF9pbnNuICppbnNuKQotIAotICAgIEZJUlNUIGlzIHRoZSBmaXJzdCBpbnNuIG9mIHRoZSBy dGwgZm9yIHRoZSBmdW5jdGlvbiBiZWluZyBjb21waWxlZC4KLSAgICBGSUxFIGlzIHRoZSBmaWxl IHRvIHdyaXRlIGFzc2VtYmxlciBjb2RlIHRvLgotLSAgIFNFRU4gc2hvdWxkIGJlIGluaXRpYWxs eSBzZXQgdG8gemVybywgYW5kIGl0IG1heSBiZSB1cGRhdGVkIHRvCi0tICAgaW5kaWNhdGUgd2Ug aGF2ZSByZWZlcmVuY2VzIHRvIHRoZSBuZXh0IGxvY2F0aW9uIHZpZXcsIHRoYXQgd291bGQKLS0g ICByZXF1aXJlIHVzIHRvIGVtaXQgaXQgYXQgdGhlIGN1cnJlbnQgUEMuCi0gICAgT1BUSU1JWkVf UCBpcyBub256ZXJvIGlmIHdlIHNob3VsZCBlbGltaW5hdGUgcmVkdW5kYW50Ci0gICAgICB0ZXN0 IGFuZCBjb21wYXJlIGluc25zLiAgKi8KLSAKLS1zdGF0aWMgdm9pZAotLWZpbmFsX3N0YXJ0X2Z1 bmN0aW9uXzEgKHJ0eF9pbnNuICoqZmlyc3RwLCBGSUxFICpmaWxlLCBpbnQgKnNlZW4sCi0tCQkJ aW50IG9wdGltaXplX3AgQVRUUklCVVRFX1VOVVNFRCkKLSt2b2lkCi0rZmluYWxfc3RhcnRfZnVu Y3Rpb24gKHJ0eF9pbnNuICpmaXJzdCwgRklMRSAqZmlsZSwKLSsJCSAgICAgIGludCBvcHRpbWl6 ZV9wIEFUVFJJQlVURV9VTlVTRUQpCi0gewotICAgYmxvY2tfZGVwdGggPSAwOwotIAotQEAgLTE3 ODgsMjEgKzE3MjIsOCBAQCBmaW5hbF9zdGFydF9mdW5jdGlvbl8xIChydHhfaW5zbiAqKmZpcnN0 Ci0gICBpZiAoZmxhZ19zYW5pdGl6ZSAmIFNBTklUSVpFX0FERFJFU1MpCi0gICAgIGFzYW5fZnVu Y3Rpb25fc3RhcnQgKCk7Ci0gCi0tICBydHhfaW5zbiAqZmlyc3QgPSAqZmlyc3RwOwotLSAgaWYg KGluX2luaXRpYWxfdmlld19wIChmaXJzdCkpCi0tICAgIHsKLS0gICAgICBkbwotLQl7Ci0tCSAg ZmluYWxfc2Nhbl9pbnNuIChmaXJzdCwgZmlsZSwgMCwgMCwgc2Vlbik7Ci0tCSAgZmlyc3QgPSBO RVhUX0lOU04gKGZpcnN0KTsKLS0JfQotLSAgICAgIHdoaWxlIChpbl9pbml0aWFsX3ZpZXdfcCAo Zmlyc3QpKTsKLS0gICAgICAqZmlyc3RwID0gZmlyc3Q7Ci0tICAgIH0KLS0KLSAgIGlmICghREVD TF9JR05PUkVEX1AgKGN1cnJlbnRfZnVuY3Rpb25fZGVjbCkpCi0tICAgIGRlYnVnX2hvb2tzLT5i ZWdpbl9wcm9sb2d1ZSAobGFzdF9saW5lbnVtLCBsYXN0X2NvbHVtbm51bSwKLS0JCQkJIGxhc3Rf ZmlsZW5hbWUpOwotKyAgICBkZWJ1Z19ob29rcy0+YmVnaW5fcHJvbG9ndWUgKGxhc3RfbGluZW51 bSwgbGFzdF9jb2x1bW5udW0sIGxhc3RfZmlsZW5hbWUpOwotIAotICAgaWYgKCFkd2FyZjJfZGVi dWdfaW5mb19lbWl0dGVkX3AgKGN1cnJlbnRfZnVuY3Rpb25fZGVjbCkpCi0gICAgIGR3YXJmMm91 dF9iZWdpbl9wcm9sb2d1ZSAoMCwgMCwgTlVMTCk7Ci1AQCAtMTg3OCwxNyArMTc5OSw2IEBAIGZp bmFsX3N0YXJ0X2Z1bmN0aW9uXzEgKHJ0eF9pbnNuICoqZmlyc3QKLSAgICAgcHJvZmlsZV9hZnRl cl9wcm9sb2d1ZSAoZmlsZSk7Ci0gfQotIAotLS8qIFRoaXMgaXMgYW4gZXhwb3J0ZWQgZmluYWxf c3RhcnRfZnVuY3Rpb25fMSwgY2FsbGFibGUgd2l0aG91dCBTRUVOLiAgKi8KLS0KLS12b2lkCi0t ZmluYWxfc3RhcnRfZnVuY3Rpb24gKHJ0eF9pbnNuICpmaXJzdCwgRklMRSAqZmlsZSwKLS0JCSAg ICAgIGludCBvcHRpbWl6ZV9wIEFUVFJJQlVURV9VTlVTRUQpCi0tewotLSAgaW50IHNlZW4gPSAw OwotLSAgZmluYWxfc3RhcnRfZnVuY3Rpb25fMSAoJmZpcnN0LCBmaWxlLCAmc2Vlbiwgb3B0aW1p emVfcCk7Ci0tICBnY2NfYXNzZXJ0IChzZWVuID09IDApOwotLX0KLS0KLSBzdGF0aWMgdm9pZAot IHByb2ZpbGVfYWZ0ZXJfcHJvbG9ndWUgKEZJTEUgKmZpbGUgQVRUUklCVVRFX1VOVVNFRCkKLSB7 Ci1AQCAtMjAxOCwxMCArMTkyOCwxMSBAQCBkdW1wX2Jhc2ljX2Jsb2NrX2luZm8gKEZJTEUgKmZp bGUsIHJ0eF9pCi0gLyogT3V0cHV0IGFzc2VtYmxlciBjb2RlIGZvciBzb21lIGluc25zOiBhbGwg b3IgcGFydCBvZiBhIGZ1bmN0aW9uLgotICAgIEZvciBkZXNjcmlwdGlvbiBvZiBhcmdzLCBzZWUg YGZpbmFsX3N0YXJ0X2Z1bmN0aW9uJywgYWJvdmUuICAqLwotIAotLXN0YXRpYyB2b2lkCi0tZmlu YWxfMSAocnR4X2luc24gKmZpcnN0LCBGSUxFICpmaWxlLCBpbnQgc2VlbiwgaW50IG9wdGltaXpl X3ApCi0rdm9pZAotK2ZpbmFsIChydHhfaW5zbiAqZmlyc3QsIEZJTEUgKmZpbGUsIGludCBvcHRp bWl6ZV9wKQotIHsKLSAgIHJ0eF9pbnNuICppbnNuLCAqbmV4dDsKLSsgIGludCBzZWVuID0gMDsK LSAKLSAgIC8qIFVzZWQgZm9yIC1kQSBkdW1wLiAgKi8KLSAgIGJhc2ljX2Jsb2NrICpzdGFydF90 b19iYiA9IE5VTEw7Ci1AQCAtMjA4OCw4ICsxOTk5LDYgQEAgZmluYWxfMSAocnR4X2luc24gKmZp cnN0LCBGSUxFICpmaWxlLCBpbgotICAgICAgIGluc24gPSBmaW5hbF9zY2FuX2luc24gKGluc24s IGZpbGUsIG9wdGltaXplX3AsIDAsICZzZWVuKTsKLSAgICAgfQotIAotLSAgbWF5YmVfb3V0cHV0 X25leHRfdmlldyAoJnNlZW4pOwotLQotICAgaWYgKGZsYWdfZGVidWdfYXNtKQotICAgICB7Ci0g ICAgICAgZnJlZSAoc3RhcnRfdG9fYmIpOwotQEAgLTIxMDYsMjMgKzIwMTUsNiBAQCBmaW5hbF8x IChydHhfaW5zbiAqZmlyc3QsIEZJTEUgKmZpbGUsIGluCi0gCWRlbGV0ZV9pbnNuIChpbnNuKTsK LSAgICAgfQotIH0KLS0KLS0vKiBUaGlzIGlzIGFuIGV4cG9ydGVkIGZpbmFsXzEsIGNhbGxhYmxl IHdpdGhvdXQgU0VFTi4gICovCi0tCi0tdm9pZAotLWZpbmFsIChydHhfaW5zbiAqZmlyc3QsIEZJ TEUgKmZpbGUsIGludCBvcHRpbWl6ZV9wKQotLXsKLS0gIC8qIFRob3NlIHRoYXQgdXNlIHRoZSBp bnRlcm5hbCBmaW5hbF9zdGFydF9mdW5jdGlvbl8xL2ZpbmFsXzEgQVBJCi0tICAgICBza2lwIGlu aXRpYWwgZGVidWcgYmluZCBub3RlcyBpbiBmaW5hbF9zdGFydF9mdW5jdGlvbl8xLCBhbmQgcGFz cwotLSAgICAgdGhlIG1vZGlmaWVkIEZJUlNUIHRvIGZpbmFsXzEuICBCdXQgdGhvc2UgdGhhdCB1 c2UgdGhlIHB1YmxpYwotLSAgICAgZmluYWxfc3RhcnRfZnVuY3Rpb24vZmluYWwgQVBJcywgZmlu YWxfc3RhcnRfZnVuY3Rpb24gY2FuJ3QgbW92ZQotLSAgICAgRklSU1QgYmVjYXVzZSBpdCdzIG5v dCBwYXNzZWQgYnkgcmVmZXJlbmNlLCBzbyBpZiB0aGV5IHdlcmUKLS0gICAgIHNraXBwZWQgdGhl cmUsIHNraXAgdGhlbSBhZ2FpbiBoZXJlLiAgKi8KLS0gIHdoaWxlIChpbl9pbml0aWFsX3ZpZXdf cCAoZmlyc3QpKQotLSAgICBmaXJzdCA9IE5FWFRfSU5TTiAoZmlyc3QpOwotLQotLSAgZmluYWxf MSAoZmlyc3QsIGZpbGUsIDAsIG9wdGltaXplX3ApOwotLX0KLSAMCi0gY29uc3QgY2hhciAqCi0g Z2V0X2luc25fdGVtcGxhdGUgKGludCBjb2RlLCBydHggaW5zbikKLUBAIC0yMjYzLDggKzIxNTUs NiBAQCBmaW5hbF9zY2FuX2luc24gKHJ0eF9pbnNuICppbnNuLCBGSUxFICpmCi0gCSAgYnJlYWs7 Ci0gCi0gCWNhc2UgTk9URV9JTlNOX1NXSVRDSF9URVhUX1NFQ1RJT05TOgotLQkgIG1heWJlX291 dHB1dF9uZXh0X3ZpZXcgKHNlZW4pOwotLQotIAkgIGluX2NvbGRfc2VjdGlvbl9wID0gIWluX2Nv bGRfc2VjdGlvbl9wOwotIAotIAkgIGlmIChpbl9jb2xkX3NlY3Rpb25fcCkKLUBAIC0yNDExLDgg KzIzMDEsNiBAQCBmaW5hbF9zY2FuX2luc24gKHJ0eF9pbnNuICppbnNuLCBGSUxFICpmCi0gCSAg YnJlYWs7Ci0gCi0gCWNhc2UgTk9URV9JTlNOX0JMT0NLX0VORDoKLS0JICBtYXliZV9vdXRwdXRf bmV4dF92aWV3IChzZWVuKTsKLS0KLSAJICBpZiAoZGVidWdfaW5mb19sZXZlbCA9PSBESU5GT19M RVZFTF9OT1JNQUwKLSAJICAgICAgfHwgZGVidWdfaW5mb19sZXZlbCA9PSBESU5GT19MRVZFTF9W RVJCT1NFCi0gCSAgICAgIHx8IHdyaXRlX3N5bWJvbHMgPT0gRFdBUkYyX0RFQlVHCi1AQCAtMjQ2 OSwxMCArMjM1Nyw3IEBAIGZpbmFsX3NjYW5faW5zbiAocnR4X2luc24gKmluc24sIEZJTEUgKmYK LSAJY2FzZSBOT1RFX0lOU05fVkFSX0xPQ0FUSU9OOgotIAljYXNlIE5PVEVfSU5TTl9DQUxMX0FS R19MT0NBVElPTjoKLSAJICBpZiAoIURFQ0xfSUdOT1JFRF9QIChjdXJyZW50X2Z1bmN0aW9uX2Rl Y2wpKQotLQkgICAgewotLQkgICAgICBkZWJ1Z19ob29rcy0+dmFyX2xvY2F0aW9uIChpbnNuKTsK LS0JICAgICAgc2V0X25leHRfdmlld19uZWVkZWQgKHNlZW4pOwotLQkgICAgfQotKwkgICAgZGVi dWdfaG9va3MtPnZhcl9sb2NhdGlvbiAoaW5zbik7Ci0gCSAgYnJlYWs7Ci0gCi0gCWNhc2UgTk9U RV9JTlNOX0JFR0lOX1NUTVQ6Ci1AQCAtMjQ4MCwyMyArMjM2NSw5IEBAIGZpbmFsX3NjYW5faW5z biAocnR4X2luc24gKmluc24sIEZJTEUgKmYKLSAJICBpZiAoIURFQ0xfSUdOT1JFRF9QIChjdXJy ZW50X2Z1bmN0aW9uX2RlY2wpCi0gCSAgICAgICYmIG5vdGljZV9zb3VyY2VfbGluZSAoaW5zbiwg TlVMTCkpCi0gCSAgICB7Ci0tCSAgICBvdXRwdXRfc291cmNlX2xpbmU6Ci0gCSAgICAgICgqZGVi dWdfaG9va3MtPnNvdXJjZV9saW5lKSAobGFzdF9saW5lbnVtLCBsYXN0X2NvbHVtbm51bSwKLSAJ CQkJCSAgIGxhc3RfZmlsZW5hbWUsIGxhc3RfZGlzY3JpbWluYXRvciwKLSAJCQkJCSAgIHRydWUp OwotLQkgICAgICBjbGVhcl9uZXh0X3ZpZXdfbmVlZGVkIChzZWVuKTsKLS0JICAgIH0KLS0JICBi cmVhazsKLS0KLS0JY2FzZSBOT1RFX0lOU05fSU5MSU5FX0VOVFJZOgotLQkgIGdjY19jaGVja2lu Z19hc3NlcnQgKGNmdW4tPmRlYnVnX25vbmJpbmRfbWFya2Vycyk7Ci0tCSAgaWYgKCFERUNMX0lH Tk9SRURfUCAoY3VycmVudF9mdW5jdGlvbl9kZWNsKSkKLS0JICAgIHsKLS0JICAgICAgaWYgKCFu b3RpY2Vfc291cmNlX2xpbmUgKGluc24sIE5VTEwpKQotLQkJYnJlYWs7Ci0tCSAgICAgICgqZGVi dWdfaG9va3MtPmlubGluZV9lbnRyeSkgKExPQ0FUSU9OX0JMT0NLCi0tCQkJCQkgICAgKE5PVEVf TUFSS0VSX0xPQ0FUSU9OIChpbnNuKSkpOwotLQkgICAgICBnb3RvIG91dHB1dF9zb3VyY2VfbGlu ZTsKLSAJICAgIH0KLSAJICBicmVhazsKLSAKLUBAIC0yNjkyLDEwICsyNTYzLDYgQEAgZmluYWxf c2Nhbl9pbnNuIChydHhfaW5zbiAqaW5zbiwgRklMRSAqZgotIAotIAkgICAgc3dpdGNoX3RvX3Nl Y3Rpb24gKGN1cnJlbnRfZnVuY3Rpb25fc2VjdGlvbiAoKSk7Ci0gCi0tCSAgICBpZiAoZGVidWdf dmFyaWFibGVfbG9jYXRpb25fdmlld3MKLS0JCSYmICFERUNMX0lHTk9SRURfUCAoY3VycmVudF9m dW5jdGlvbl9kZWNsKSkKLS0JICAgICAgZGVidWdfaG9va3MtPnZhcl9sb2NhdGlvbiAoaW5zbik7 Ci0tCi0gCSAgICBicmVhazsKLSAJICB9Ci0gCS8qIE91dHB1dCB0aGlzIGxpbmUgbm90ZSBpZiBp dCBpcyB0aGUgZmlyc3Qgb3IgdGhlIGxhc3QgbGluZQotQEAgLTI3MDgsMTIgKzI1NzUsNyBAQCBm aW5hbF9zY2FuX2luc24gKHJ0eF9pbnNuICppbnNuLCBGSUxFICpmCi0gCSAgICAoKmRlYnVnX2hv b2tzLT5zb3VyY2VfbGluZSkgKGxhc3RfbGluZW51bSwgbGFzdF9jb2x1bW5udW0sCi0gCQkJCQkg bGFzdF9maWxlbmFtZSwgbGFzdF9kaXNjcmltaW5hdG9yLAotIAkJCQkJIGlzX3N0bXQpOwotLQkg ICAgY2xlYXJfbmV4dF92aWV3X25lZWRlZCAoc2Vlbik7Ci0gCSAgfQotLQllbHNlCi0tCSAgbWF5 YmVfb3V0cHV0X25leHRfdmlldyAoc2Vlbik7Ci0tCi0tCWdjY19jaGVja2luZ19hc3NlcnQgKCFE RUJVR19JTlNOX1AgKGluc24pKTsKLSAKLSAJaWYgKEdFVF9DT0RFIChib2R5KSA9PSBQQVJBTExF TAotIAkgICAgJiYgR0VUX0NPREUgKFhWRUNFWFAgKGJvZHksIDAsIDApKSA9PSBBU01fSU5QVVQp Ci1AQCAtMzE4MCw4ICszMDQyLDcgQEAgZmluYWxfc2Nhbl9pbnNuIChydHhfaW5zbiAqaW5zbiwg RklMRSAqZgotIAkvKiBMZXQgdGhlIGRlYnVnIGluZm8gYmFjay1lbmQga25vdyBhYm91dCB0aGlz IGNhbGwuICBXZSBkbyB0aGlzIG9ubHkKLSAJICAgYWZ0ZXIgdGhlIGluc3RydWN0aW9uIGhhcyBi ZWVuIGVtaXR0ZWQgYmVjYXVzZSBsYWJlbHMgdGhhdCBtYXkgYmUKLSAJICAgY3JlYXRlZCB0byBy ZWZlcmVuY2UgdGhlIGNhbGwgaW5zdHJ1Y3Rpb24gbXVzdCBhcHBlYXIgYWZ0ZXIgaXQuICAqLwot LQlpZiAoKGRlYnVnX3ZhcmlhYmxlX2xvY2F0aW9uX3ZpZXdzIHx8IGNhbGxfaW5zbiAhPSBOVUxM KQotLQkgICAgJiYgIURFQ0xfSUdOT1JFRF9QIChjdXJyZW50X2Z1bmN0aW9uX2RlY2wpKQotKwlp ZiAoY2FsbF9pbnNuICE9IE5VTEwgJiYgIURFQ0xfSUdOT1JFRF9QIChjdXJyZW50X2Z1bmN0aW9u X2RlY2wpKQotIAkgIGRlYnVnX2hvb2tzLT52YXJfbG9jYXRpb24gKGluc24pOwotIAotIAljdXJy ZW50X291dHB1dF9pbnNuID0gZGVidWdfaW5zbiA9IDA7Ci1AQCAtMzIwMywxNyArMzA2NCw2IEBA IG5vdGljZV9zb3VyY2VfbGluZSAocnR4X2luc24gKmluc24sIGJvb2wKLSAgIGlmIChOT1RFX01B UktFUl9QIChpbnNuKSkKLSAgICAgewotICAgICAgIGxvY2F0aW9uX3QgbG9jID0gTk9URV9NQVJL RVJfTE9DQVRJT04gKGluc24pOwotLSAgICAgIC8qIFRoZSBpbmxpbmUgZW50cnkgbWFya2VycyAo Z2ltcGxlLCBpbnNuLCBub3RlKSBjYXJyeSB0aGUKLS0JIGxvY2F0aW9uIG9mIHRoZSBjYWxsLCBi ZWNhdXNlIHRoYXQncyB3aGF0IHdlIHdhbnQgdG8gY2FycnkKLS0JIGR1cmluZyBjb21waWxhdGlv biwgYnV0IHRoZSBsb2NhdGlvbiB3ZSB3YW50IHRvIG91dHB1dCBpbgotLQkgZGVidWcgaW5mb3Jt YXRpb24gZm9yIHRoZSBpbmxpbmUgZW50cnkgcG9pbnQgaXMgdGhlIGxvY2F0aW9uCi0tCSBvZiB0 aGUgZnVuY3Rpb24gaXRzZWxmLiAgKi8KLS0gICAgICBpZiAoTk9URV9LSU5EIChpbnNuKSA9PSBO T1RFX0lOU05fSU5MSU5FX0VOVFJZKQotLQl7Ci0tCSAgdHJlZSBibG9jayA9IExPQ0FUSU9OX0JM T0NLIChsb2MpOwotLQkgIHRyZWUgZm4gPSBibG9ja191bHRpbWF0ZV9vcmlnaW4gKGJsb2NrKTsK LS0JICBsb2MgPSBERUNMX1NPVVJDRV9MT0NBVElPTiAoZm4pOwotLQl9Ci0gICAgICAgZXhwYW5k ZWRfbG9jYXRpb24geGxvYyA9IGV4cGFuZF9sb2NhdGlvbiAobG9jKTsKLSAgICAgICBpZiAoeGxv Yy5saW5lID09IDApCi0gCXsKLUBAIC00NjMxLDEwICs0NDgxLDggQEAgcmVzdF9vZl9oYW5kbGVf ZmluYWwgKHZvaWQpCi0gICAgIGRlbGV0ZV92dGFfZGVidWdfaW5zbnMgKGZhbHNlKTsKLSAKLSAg IGFzc2VtYmxlX3N0YXJ0X2Z1bmN0aW9uIChjdXJyZW50X2Z1bmN0aW9uX2RlY2wsIGZubmFtZSk7 Ci0tICBydHhfaW5zbiAqZmlyc3QgPSBnZXRfaW5zbnMgKCk7Ci0tICBpbnQgc2VlbiA9IDA7Ci0t ICBmaW5hbF9zdGFydF9mdW5jdGlvbl8xICgmZmlyc3QsIGFzbV9vdXRfZmlsZSwgJnNlZW4sIG9w dGltaXplKTsKLS0gIGZpbmFsXzEgKGZpcnN0LCBhc21fb3V0X2ZpbGUsIHNlZW4sIG9wdGltaXpl KTsKLSsgIGZpbmFsX3N0YXJ0X2Z1bmN0aW9uIChnZXRfaW5zbnMgKCksIGFzbV9vdXRfZmlsZSwg b3B0aW1pemUpOwotKyAgZmluYWwgKGdldF9pbnNucyAoKSwgYXNtX291dF9maWxlLCBvcHRpbWl6 ZSk7Ci0gICBpZiAoZmxhZ19pcGFfcmEKLSAgICAgICAmJiAhbG9va3VwX2F0dHJpYnV0ZSAoIm5v aXBhIiwgREVDTF9BVFRSSUJVVEVTIChjdXJyZW50X2Z1bmN0aW9uX2RlY2wpKSkKLSAgICAgY29s bGVjdF9mbl9oYXJkX3JlZ191c2FnZSAoKTsKLUBAIC00ODIwLDcgKzQ2NjgsNiBAQCByZXN0X29m X2NsZWFuX3N0YXRlICh2b2lkKQotIAkgICYmICghTk9URV9QIChpbnNuKSB8fAotIAkgICAgICAo Tk9URV9LSU5EIChpbnNuKSAhPSBOT1RFX0lOU05fVkFSX0xPQ0FUSU9OCi0gCSAgICAgICAmJiBO T1RFX0tJTkQgKGluc24pICE9IE5PVEVfSU5TTl9CRUdJTl9TVE1UCi0tCSAgICAgICAmJiBOT1RF X0tJTkQgKGluc24pICE9IE5PVEVfSU5TTl9JTkxJTkVfRU5UUlkKLSAJICAgICAgICYmIE5PVEVf S0lORCAoaW5zbikgIT0gTk9URV9JTlNOX0NBTExfQVJHX0xPQ0FUSU9OCi0gCSAgICAgICAmJiBO T1RFX0tJTkQgKGluc24pICE9IE5PVEVfSU5TTl9CTE9DS19CRUcKLSAJICAgICAgICYmIE5PVEVf S0lORCAoaW5zbikgIT0gTk9URV9JTlNOX0JMT0NLX0VORAotLS0tIGdjYy9pbnNuLW5vdGVzLmRl ZgkocmV2aXNpb24gMjU3NTExKQotKysrIGdjYy9pbnNuLW5vdGVzLmRlZgkocmV2aXNpb24gMjU3 NTA5KQotQEAgLTcxLDEwICs3MSw2IEBAIElOU05fTk9URSAoQ0FMTF9BUkdfTE9DQVRJT04pCi0g LyogVGhlIGJlZ2lubmluZyBvZiBhIHN0YXRlbWVudC4gICovCi0gSU5TTl9OT1RFIChCRUdJTl9T VE1UKQotIAotLS8qIFRoZSBlbnRyeSBwb2ludCBmb3IgYW4gaW5saW5lZCBmdW5jdGlvbi4gIEl0 cyBOT1RFX0JMT0NLIHJlZmVyZW5jZXMKLS0gICB0aGUgbGV4aWNhbCBibG9jayB3aG9zZSBhYnN0 cmFjdCBvcmlnaW4gaXMgdGhlIGlubGluZWQgZnVuY3Rpb24uICAqLwotLUlOU05fTk9URSAoSU5M SU5FX0VOVFJZKQotLQotIC8qIFJlY29yZCB0aGUgc3RydWN0IGZvciB0aGUgZm9sbG93aW5nIGJh c2ljIGJsb2NrLiAgVXNlcwotICAgIE5PVEVfQkFTSUNfQkxPQ0suICBGSVhNRTogUmVkdW5kYW50 IHdpdGggdGhlIGJhc2ljIGJsb2NrIHBvaW50ZXIKLSAgICBub3cgaW5jbHVkZWQgaW4gZXZlcnkg aW5zbi4gIE5PVEU6IElmIHRoZXJlJ3Mgbm8gQ0ZHIGFueW1vcmUsIGluIG90aGVyIHdvcmRzLAot LS0tIGdjYy90b3BsZXYuYwkocmV2aXNpb24gMjU3NTExKQotKysrIGdjYy90b3BsZXYuYwkocmV2 aXNpb24gMjU3NTA5KQotQEAgLTE1NTgsMjIgKzE1NTgsNiBAQCBwcm9jZXNzX29wdGlvbnMgKHZv aWQpCi0gCSAgICAgfHwgd3JpdGVfc3ltYm9scyA9PSBWTVNfQU5EX0RXQVJGMl9ERUJVRykKLSAJ ICYmICEoZmxhZ19zZWxlY3RpdmVfc2NoZWR1bGluZyB8fCBmbGFnX3NlbGVjdGl2ZV9zY2hlZHVs aW5nMikpOwotIAotLSAgaWYgKGRlYnVnX3ZhcmlhYmxlX2xvY2F0aW9uX3ZpZXdzID09IEFVVE9E RVRFQ1RfVkFMVUUpCi0tICAgIHsKLS0gICAgICBkZWJ1Z192YXJpYWJsZV9sb2NhdGlvbl92aWV3 cyA9IGZsYWdfdmFyX3RyYWNraW5nCi0tCSYmIGRlYnVnX2luZm9fbGV2ZWwgPj0gRElORk9fTEVW RUxfTk9STUFMCi0tCSYmICh3cml0ZV9zeW1ib2xzID09IERXQVJGMl9ERUJVRwotLQkgICAgfHwg d3JpdGVfc3ltYm9scyA9PSBWTVNfQU5EX0RXQVJGMl9ERUJVRykKLS0JJiYgIWR3YXJmX3N0cmlj dDsKLS0gICAgfQotLSAgZWxzZSBpZiAoZGVidWdfdmFyaWFibGVfbG9jYXRpb25fdmlld3MgPT0g LTEgJiYgZHdhcmZfdmVyc2lvbiAhPSA1KQotLSAgICB7Ci0tICAgICAgd2FybmluZ19hdCAoVU5L Tk9XTl9MT0NBVElPTiwgMCwKLS0JCSAgIndpdGhvdXQgLWdkd2FyZi01LCAtZ3ZhcmlhYmxlLWxv Y2F0aW9uLXZpZXdzPWluY29tcGF0NSAiCi0tCQkgICJpcyBlcXVpdmFsZW50IHRvIC1ndmFyaWFi bGUtbG9jYXRpb24tdmlld3MiKTsKLS0gICAgICBkZWJ1Z192YXJpYWJsZV9sb2NhdGlvbl92aWV3 cyA9IDE7Ci0tICAgIH0KLS0KLSAgIGlmIChmbGFnX3RyZWVfY3NlbGltID09IEFVVE9ERVRFQ1Rf VkFMVUUpCi0gICAgIHsKLSAgICAgICBpZiAoSEFWRV9jb25kaXRpb25hbF9tb3ZlKQotLS0tIGdj Yy9jb25maWcuaW4JKHJldmlzaW9uIDI1NzUxMSkKLSsrKyBnY2MvY29uZmlnLmluCShyZXZpc2lv biAyNTc1MDkpCi1AQCAtMzU4LDEyICszNTgsNiBAQAotICNlbmRpZgotIAotIAotLS8qIERlZmlu ZSBpZiB5b3VyIGFzc2VtYmxlciBzdXBwb3J0cyB2aWV3cyBpbiBkd2FyZjIgLmxvYyBkaXJlY3Rp dmVzLiAqLwotLSNpZm5kZWYgVVNFRF9GT1JfVEFSR0VUCi0tI3VuZGVmIEhBVkVfQVNfRFdBUkYy X0RFQlVHX1ZJRVcKLS0jZW5kaWYKLS0KLS0KLSAvKiBEZWZpbmUgaWYgeW91ciBhc3NlbWJsZXIg c3VwcG9ydHMgdGhlIFJfUFBDNjRfRU5UUlkgcmVsb2NhdGlvbi4gKi8KLSAjaWZuZGVmIFVTRURf Rk9SX1RBUkdFVAotICN1bmRlZiBIQVZFX0FTX0VOVFJZX01BUktFUlMKLS0tLSBnY2MvZHdhcmYy b3V0LmMJKHJldmlzaW9uIDI1NzUxMSkKLSsrKyBnY2MvZHdhcmYyb3V0LmMJKHJldmlzaW9uIDI1 NzUwOSkKLUBAIC0xMjkxLDggKzEyOTEsNiBAQCBzdHJ1Y3QgR1RZKChmb3JfdXNlcikpIGFkZHJf dGFibGVfZW50cnkKLSAgIEdUWSAoKGRlc2MgKCIlMS5raW5kIikpKSBhZGRyOwotIH07Ci0gCi0t dHlwZWRlZiB1bnNpZ25lZCBpbnQgdmFyX2xvY192aWV3OwotLQotIC8qIExvY2F0aW9uIGxpc3Rz IGFyZSByYW5nZXMgKyBsb2NhdGlvbiBkZXNjcmlwdGlvbnMgZm9yIHRoYXQgcmFuZ2UsCi0gICAg c28geW91IGNhbiB0cmFjayB2YXJpYWJsZXMgdGhhdCBhcmUgaW4gZGlmZmVyZW50IHBsYWNlcyBv dmVyCi0gICAgdGhlaXIgZW50aXJlIGxpZmUuICAqLwotQEAgLTEzMDIsMTEgKzEzMDAsOSBAQCB0 eXBlZGVmIHN0cnVjdCBHVFkoKCkpIGR3X2xvY19saXN0X3N0cnVjCi0gICBhZGRyX3RhYmxlX2Vu dHJ5ICpiZWdpbl9lbnRyeTsKLSAgIGNvbnN0IGNoYXIgKmVuZDsgIC8qIExhYmVsIGZvciBlbmQg b2YgcmFuZ2UgKi8KLSAgIGNoYXIgKmxsX3N5bWJvbDsgLyogTGFiZWwgZm9yIGJlZ2lubmluZyBv ZiBsb2NhdGlvbiBsaXN0LgotLQkJICAgICAgT25seSBvbiBoZWFkIG9mIGxpc3QuICAqLwotLSAg Y2hhciAqdmxfc3ltYm9sOyAvKiBMYWJlbCBmb3IgYmVnaW5uaW5nIG9mIHZpZXcgbGlzdC4gIERp dHRvLiAgKi8KLSsJCSAgICAgIE9ubHkgb24gaGVhZCBvZiBsaXN0ICovCi0gICBjb25zdCBjaGFy ICpzZWN0aW9uOyAvKiBTZWN0aW9uIHRoaXMgbG9jbGlzdCBpcyByZWxhdGl2ZSB0byAqLwotICAg ZHdfbG9jX2Rlc2NyX3JlZiBleHByOwotLSAgdmFyX2xvY192aWV3IHZiZWdpbiwgdmVuZDsKLSAg IGhhc2h2YWxfdCBoYXNoOwotICAgLyogVHJ1ZSBpZiBhbGwgYWRkcmVzc2VzIGluIHRoaXMgYW5k IHN1YnNlcXVlbnQgbGlzdHMgYXJlIGtub3duIHRvIGJlCi0gICAgICByZXNvbHZlZC4gICovCi1A QCAtMTM0MywyOSArMTMzOSw2IEBAIGR3YXJmX3N0YWNrX29wX25hbWUgKHVuc2lnbmVkIGludCBv cCkKLSAgIHJldHVybiAiT1BfPHVua25vd24+IjsKLSB9Ci0gCi0tLyogUmV0dXJuIFRSVUUgaWZm IHdlJ3JlIHRvIG91dHB1dCBsb2NhdGlvbiB2aWV3IGxpc3RzIGFzIGEgc2VwYXJhdGUKLS0gICBh dHRyaWJ1dGUgbmV4dCB0byB0aGUgbG9jYXRpb24gbGlzdHMsIGFzIGFuIGV4dGVuc2lvbiBjb21w YXRpYmxlCi0tICAgd2l0aCBEV0FSRiAyIGFuZCBhYm92ZS4gICovCi0tCi0tc3RhdGljIGlubGlu ZSBib29sCi0tZHdhcmYyb3V0X2xvY3ZpZXdzX2luX2F0dHJpYnV0ZSAoKQotLXsKLS0gIHJldHVy biBkZWJ1Z192YXJpYWJsZV9sb2NhdGlvbl92aWV3cyA9PSAxOwotLX0KLS0KLS0vKiBSZXR1cm4g VFJVRSBpZmYgd2UncmUgdG8gb3V0cHV0IGxvY2F0aW9uIHZpZXcgbGlzdHMgYXMgcGFydCBvZiB0 aGUKLS0gICBsb2NhdGlvbiBsaXN0cywgYXMgcHJvcG9zZWQgZm9yIHN0YW5kYXJkaXphdGlvbiBh ZnRlciBEV0FSRiA1LiAgKi8KLS0KLS1zdGF0aWMgaW5saW5lIGJvb2wKLS1kd2FyZjJvdXRfbG9j dmlld3NfaW5fbG9jbGlzdCAoKQotLXsKLS0jaWZuZGVmIERXX0xMRV92aWV3X3BhaXIKLS0gIHJl dHVybiBmYWxzZTsKLS0jZWxzZQotLSAgcmV0dXJuIGRlYnVnX3ZhcmlhYmxlX2xvY2F0aW9uX3Zp ZXdzID09IC0xOwotLSNlbmRpZgotLX0KLS0KLSAvKiBSZXR1cm4gYSBwb2ludGVyIHRvIGEgbmV3 bHkgYWxsb2NhdGVkIGxvY2F0aW9uIGRlc2NyaXB0aW9uLiAgTG9jYXRpb24KLSAgICBkZXNjcmlw dGlvbnMgYXJlIHNpbXBsZSBleHByZXNzaW9uIHRlcm1zIHRoYXQgY2FuIGJlIHN0cnVuZwotICAg IHRvZ2V0aGVyIHRvIGZvcm0gbW9yZSBjb21wbGljYXRlZCBsb2NhdGlvbiAoYWRkcmVzcykgZGVz Y3JpcHRpb25zLiAgKi8KLUBAIC0xNDI4LDggKzE0MDEsNiBAQCBkd192YWxfZXF1YWxfcCAoZHdf dmFsX25vZGUgKmEsIGR3X3ZhbF9uCi0gICAgICAgcmV0dXJuIGEtPnYudmFsX2xvYyA9PSBiLT52 LnZhbF9sb2M7Ci0gICAgIGNhc2UgZHdfdmFsX2NsYXNzX2xvY19saXN0OgotICAgICAgIHJldHVy biBhLT52LnZhbF9sb2NfbGlzdCA9PSBiLT52LnZhbF9sb2NfbGlzdDsKLS0gICAgY2FzZSBkd192 YWxfY2xhc3Nfdmlld19saXN0OgotLSAgICAgIHJldHVybiBhLT52LnZhbF92aWV3X2xpc3QgPT0g Yi0+di52YWxfdmlld19saXN0OwotICAgICBjYXNlIGR3X3ZhbF9jbGFzc19kaWVfcmVmOgotICAg ICAgIHJldHVybiBhLT52LnZhbF9kaWVfcmVmLmRpZSA9PSBiLT52LnZhbF9kaWVfcmVmLmRpZTsK LSAgICAgY2FzZSBkd192YWxfY2xhc3NfZmRlX3JlZjoKLUBAIC0yNzQ3LDcgKzI3MTgsNiBAQCBz dGF0aWMgdm9pZCBkd2FyZjJvdXRfaW1wb3J0ZWRfbW9kdWxlX29yCi0gCQkJCQkJIGR3X2RpZV9y ZWYpOwotIHN0YXRpYyB2b2lkIGR3YXJmMm91dF9hYnN0cmFjdF9mdW5jdGlvbiAodHJlZSk7Ci0g c3RhdGljIHZvaWQgZHdhcmYyb3V0X3Zhcl9sb2NhdGlvbiAocnR4X2luc24gKik7Ci0tc3RhdGlj IHZvaWQgZHdhcmYyb3V0X2lubGluZV9lbnRyeSAodHJlZSk7Ci0gc3RhdGljIHZvaWQgZHdhcmYy b3V0X3NpemVfZnVuY3Rpb24gKHRyZWUpOwotIHN0YXRpYyB2b2lkIGR3YXJmMm91dF9iZWdpbl9m dW5jdGlvbiAodHJlZSk7Ci0gc3RhdGljIHZvaWQgZHdhcmYyb3V0X2VuZF9mdW5jdGlvbiAodW5z aWduZWQgaW50KTsKLUBAIC0yODAxLDcgKzI3NzEsNyBAQCBjb25zdCBzdHJ1Y3QgZ2NjX2RlYnVn X2hvb2tzIGR3YXJmMl9kZWJ1Ci0gICBkZWJ1Z19ub3RoaW5nX3J0eF9jb2RlX2xhYmVsLAkvKiBs YWJlbCAqLwotICAgZGVidWdfbm90aGluZ19pbnQsCQkvKiBoYW5kbGVfcGNoICovCi0gICBkd2Fy ZjJvdXRfdmFyX2xvY2F0aW9uLAotLSAgZHdhcmYyb3V0X2lubGluZV9lbnRyeSwJLyogaW5saW5l X2VudHJ5ICovCi0rICBkZWJ1Z19ub3RoaW5nX3RyZWUsCQkvKiBpbmxpbmVfZW50cnkgKi8KLSAg IGR3YXJmMm91dF9zaXplX2Z1bmN0aW9uLAkvKiBzaXplX2Z1bmN0aW9uICovCi0gICBkd2FyZjJv dXRfc3dpdGNoX3RleHRfc2VjdGlvbiwKLSAgIGR3YXJmMm91dF9zZXRfbmFtZSwKLUBAIC0yOTA1 LDE1ICsyODc1LDcgQEAgZW51bSBkd19saW5lX2luZm9fb3Bjb2RlIHsKLSAgIExJX3NldF9lcGls b2d1ZV9iZWdpbiwKLSAKLSAgIC8qIEVtaXQgYSBEV19MTkVfc2V0X2Rpc2NyaW1pbmF0b3IuICAq LwotLSAgTElfc2V0X2Rpc2NyaW1pbmF0b3IsCi0tCi0tICAvKiBPdXRwdXQgYSBGaXhlZCBBZHZh bmNlIFBDOyB0aGUgdGFyZ2V0IFBDIGlzIHRoZSBsYWJlbCBpbmRleDsgdGhlCi0tICAgICBiYXNl IFBDIGlzIHRoZSBwcmV2aW91cyBMSV9hZHZfYWRkcmVzcyBvciBMSV9zZXRfYWRkcmVzcyBlbnRy eS4KLS0gICAgIFdlIG9ubHkgdXNlIHRoaXMgd2hlbiBlbWl0dGluZyBkZWJ1ZyB2aWV3cyB3aXRo b3V0IGFzc2VtYmxlcgotLSAgICAgc3VwcG9ydCwgYXQgZXhwbGljaXQgdXNlciByZXF1ZXN0LiAg SWRlYWxseSwgd2Ugc2hvdWxkIG9ubHkgdXNlCi0tICAgICBpdCB3aGVuIHRoZSBvZmZzZXQgbWln aHQgYmUgemVybyBidXQgd2UgY2FuJ3QgdGVsbDogaXQncyB0aGUgb25seQotLSAgICAgd2F5IHRv IG1heWJlIGNoYW5nZSB0aGUgUEMgd2l0aG91dCByZXNldHRpbmcgdGhlIHZpZXcgbnVtYmVyLiAg Ki8KLS0gIExJX2Fkdl9hZGRyZXNzCi0rICBMSV9zZXRfZGlzY3JpbWluYXRvcgotIH07Ci0gCi0g dHlwZWRlZiBzdHJ1Y3QgR1RZKCgpKSBkd19saW5lX2luZm9fc3RydWN0IHsKLUBAIC0yOTM1LDI1 ICsyODk3LDYgQEAgc3RydWN0IEdUWSgoKSkgZHdfbGluZV9pbmZvX3RhYmxlIHsKLSAgIGJvb2wg aXNfc3RtdDsKLSAgIGJvb2wgaW5fdXNlOwotIAotLSAgLyogVGhpcyBkZW5vdGVzIHRoZSBORVhU IHZpZXcgbnVtYmVyLgotLQotLSAgICAgSWYgaXQgaXMgMCwgaXQgaXMga25vd24gdGhhdCB0aGUg TkVYVCB2aWV3IHdpbGwgYmUgdGhlIGZpcnN0IHZpZXcKLS0gICAgIGF0IHRoZSBnaXZlbiBQQy4K LS0KLS0gICAgIElmIGl0IGlzIC0xLCB3ZSd2ZSBhZHZhbmNlZCBQQyBidXQgd2UgaGF2ZW4ndCBl bWl0dGVkIGEgbGluZSBsb2NhdGlvbiB5ZXQsCi0tICAgICBzbyB3ZSBzaG91bGRuJ3QgdXNlIHRo aXMgdmlldyBudW1iZXIuCi0tCi0tICAgICBUaGUgbWVhbmluZyBvZiBvdGhlciBub256ZXJvIHZh bHVlcyBkZXBlbmRzIG9uIHdoZXRoZXIgd2UncmUKLS0gICAgIGNvbXB1dGluZyB2aWV3cyBpbnRl cm5hbGx5IG9yIGxlYXZpbmcgaXQgZm9yIHRoZSBhc3NlbWJsZXIgdG8gZG8KLS0gICAgIHNvLiAg SWYgd2UncmUgZW1pdHRpbmcgdGhlbSBpbnRlcm5hbGx5LCB2aWV3IGRlbm90ZXMgdGhlIHZpZXcK LS0gICAgIG51bWJlciBzaW5jZSB0aGUgbGFzdCBrbm93biBhZHZhbmNlIG9mIFBDLiAgSWYgd2Un cmUgbGVhdmluZyBpdAotLSAgICAgZm9yIHRoZSBhc3NlbWJsZXIsIGl0IGRlbm90ZXMgdGhlIExW VSBsYWJlbCBudW1iZXIgdGhhdCB3ZSdyZQotLSAgICAgZ29pbmcgdG8gYXNrIHRoZSBhc3NlbWJs ZXIgdG8gYXNzaWduLiAgKi8KLS0gIHZhcl9sb2NfdmlldyB2aWV3OwotLQotLSNkZWZpbmUgUkVT RVRfTkVYVF9WSUVXKHgpICgoeCkgPSAodmFyX2xvY192aWV3KTApCi0tI2RlZmluZSBSRVNFVFRJ TkdfVklFV19QKHgpICgoeCkgPT0gKHZhcl9sb2NfdmlldykwKQotLQotICAgdmVjPGR3X2xpbmVf aW5mb19lbnRyeSwgdmFfZ2M+ICplbnRyaWVzOwotIH07Ci0gCi1AQCAtMzE1NSw3MSArMzA5OCw2 IEBAIHNrZWxldG9uX2NoYWluX25vZGU7Ci0gI2VuZGlmCi0gI2VuZGlmCi0gCi0tLyogVXNlIGFz c2VtYmxlciB2aWV3cyBpbiBsaW5lIGRpcmVjdGl2ZXMgaWYgYXZhaWxhYmxlLiAgKi8KLS0jaWZu ZGVmIERXQVJGMl9BU01fVklFV19ERUJVR19JTkZPCi0tI2lmZGVmIEhBVkVfQVNfRFdBUkYyX0RF QlVHX1ZJRVcKLS0jZGVmaW5lIERXQVJGMl9BU01fVklFV19ERUJVR19JTkZPIDEKLS0jZWxzZQot LSNkZWZpbmUgRFdBUkYyX0FTTV9WSUVXX0RFQlVHX0lORk8gMAotLSNlbmRpZgotLSNlbmRpZgot LQotLS8qIEEgYml0IGlzIHNldCBpbiBaRVJPX1ZJRVdfUCBpZiB3ZSBhcmUgdXNpbmcgdGhlIGFz c2VtYmxlci1zdXBwb3J0ZWQKLS0gICB2aWV3IGNvbXB1dGF0aW9uLCBhbmQgaXQgcmVmZXJzIHRv IGEgdmlldyBpZGVudGlmaWVyIGZvciB3aGljaCB3ZQotLSAgIHdpbGwgbm90IGVtaXQgYSBsYWJl bCBiZWNhdXNlIGl0IGlzIGtub3duIHRvIG1hcCB0byBhIHZpZXcgbnVtYmVyCi0tICAgemVyby4g IFdlIHdvbid0IGFsbG9jYXRlIHRoZSBiaXRtYXAgaWYgd2UncmUgbm90IHVzaW5nIGFzc2VtYmxl cgotLSAgIHN1cHBvcnQgZm9yIGxvY2F0aW9uIHZpZXdzLCBidXQgd2UgaGF2ZSB0byBtYWtlIHRo ZSB2YXJpYWJsZQotLSAgIHZpc2libGUgZm9yIEdHQyBhbmQgZm9yIGNvZGUgdGhhdCB3aWxsIGJl IG9wdGltaXplZCBvdXQgZm9yIGxhY2sgb2YKLS0gICBzdXBwb3J0IGJ1dCB0aGF0J3Mgc3RpbGwg cGFyc2VkIGFuZCBjb21waWxlZC4gIFdlIGNvdWxkIGFic3RyYWN0IGl0Ci0tICAgb3V0IHdpdGgg bWFjcm9zLCBidXQgaXQncyBub3Qgd29ydGggaXQuICAqLwotLXN0YXRpYyBHVFkoKCkpIGJpdG1h cCB6ZXJvX3ZpZXdfcDsKLS0KLS0vKiBFdmFsdWF0ZSB0byBUUlVFIGlmZiBOIGlzIGtub3duIHRv IGlkZW50aWZ5IHRoZSBmaXJzdCBsb2NhdGlvbiB2aWV3Ci0tICAgYXQgaXRzIFBDLiAgV2hlbiBu b3QgdXNpbmcgYXNzZW1ibGVyIGxvY2F0aW9uIHZpZXcgY29tcHV0YXRpb24sCi0tICAgdGhhdCBt dXN0IGJlIHZpZXcgbnVtYmVyIHplcm8uICBPdGhlcndpc2UsIFpFUk9fVklFV19QIGlzIGFsbG9j YXRlZAotLSAgIGFuZCB2aWV3cyBsYWJlbCBudW1iZXJzIHJlY29yZGVkIGluIGl0IGFyZSB0aGUg b25lcyBrbm93biB0byBiZQotLSAgIHplcm8uICAqLwotLSNkZWZpbmUgWkVST19WSUVXX1AoTikg KHplcm9fdmlld19wCQkJCVwKLS0JCQk/IGJpdG1hcF9iaXRfcCAoemVyb192aWV3X3AsIChOKSkJ XAotLQkJCTogKE4pID09IDApCi0tCi0tLyogUmV0dXJuIHRydWUgaWZmIHdlJ3JlIHRvIGVtaXQg LmxvYyBkaXJlY3RpdmVzIGZvciB0aGUgYXNzZW1ibGVyIHRvCi0tICAgZ2VuZXJhdGUgbGluZSBu dW1iZXIgc2VjdGlvbnMuCi0tCi0tICAgV2hlbiB3ZSdyZSBub3QgZW1pdHRpbmcgdmlld3MsIGFs bCB3ZSBuZWVkIGZyb20gdGhlIGFzc2VtYmxlciBpcwotLSAgIHN1cHBvcnQgZm9yIC5sb2MgZGly ZWN0aXZlcy4KLS0KLS0gICBJZiB3ZSBhcmUgZW1pdHRpbmcgdmlld3MsIHdlIGNhbiBvbmx5IHVz ZSB0aGUgYXNzZW1ibGVyJ3MgLmxvYwotLSAgIHN1cHBvcnQgaWYgaXQgYWxzbyBzdXBwb3J0cyB2 aWV3cy4KLS0KLS0gICBXaGVuIHRoZSBjb21waWxlciBpcyBlbWl0dGluZyB0aGUgbGluZSBudW1i ZXIgcHJvZ3JhbXMgYW5kCi0tICAgY29tcHV0aW5nIHZpZXcgbnVtYmVycyBpdHNlbGYsIGl0IHJl c2V0cyB2aWV3IG51bWJlcnMgYXQga25vd24gUEMKLS0gICBjaGFuZ2VzIGFuZCBjb3VudHMgZnJv bSB0aGF0LCBhbmQgdGhlbiBpdCBlbWl0cyB2aWV3IG51bWJlcnMgYXMKLS0gICBsaXRlcmFsIGNv bnN0YW50cyBpbiBsb2N2aWV3bGlzdHMuICBUaGVyZSBhcmUgY2FzZXMgaW4gd2hpY2ggdGhlCi0t ICAgY29tcGlsZXIgaXMgbm90IHN1cmUgYWJvdXQgUEMgY2hhbmdlcywgZS5nLiB3aGVuIGV4dHJh IGFsaWdubWVudCBpcwotLSAgIHJlcXVlc3RlZCBmb3IgYSBsYWJlbC4gIEluIHRoZXNlIGNhc2Vz LCB0aGUgY29tcGlsZXIgbWF5IG5vdCByZXNldAotLSAgIHRoZSB2aWV3IGNvdW50ZXIsIGFuZCB0 aGUgcG90ZW50aWFsIFBDIGFkdmFuY2UgaW4gdGhlIGxpbmUgbnVtYmVyCi0tICAgcHJvZ3JhbSB3 aWxsIHVzZSBhbiBvcGNvZGUgdGhhdCBkb2VzIG5vdCByZXNldCB0aGUgdmlldyBjb3VudGVyCi0t ICAgZXZlbiBpZiB0aGUgUEMgYWN0dWFsbHkgY2hhbmdlcywgc28gdGhhdCBjb21waWxlciBhbmQg ZGVidWcgaW5mbwotLSAgIGNvbnN1bWVyIGNhbiBrZWVwIHZpZXcgbnVtYmVycyBpbiBzeW5jLgot LQotLSAgIFdoZW4gdGhlIGNvbXBpbGVyIGRlZmVycyB2aWV3IGNvbXB1dGF0aW9uIHRvIHRoZSBh c3NlbWJsZXIsIGl0Ci0tICAgZW1pdHMgc3ltYm9saWMgdmlldyBudW1iZXJzIGluIGxvY3ZpZXds aXN0cywgd2l0aCB0aGUgZXhjZXB0aW9uIG9mCi0tICAgdmlld3Mga25vd24gdG8gYmUgemVybyAo Zm9yY2VkIHJlc2V0cywgb3IgcmVzZXQgYWZ0ZXIKLS0gICBjb21waWxlci12aXNpYmxlIFBDIGNo YW5nZXMpOiBpbnN0ZWFkIG9mIGVtaXR0aW5nIHN5bWJvbHMgZm9yCi0tICAgdGhlc2UsIHdlIGVt aXQgbGl0ZXJhbCB6ZXJvIGFuZCBhc3NlcnQgdGhlIGFzc2VtYmxlciBhZ3JlZXMgd2l0aAotLSAg IHRoZSBjb21waWxlcidzIGFzc2Vzc21lbnQuICBXZSBjb3VsZCB1c2Ugc3ltYm9saWMgdmlld3Mg ZXZlcnl3aGVyZSwKLS0gICBpbnN0ZWFkIG9mIHNwZWNpYWwtY2FzaW5nIHplcm8gdmlld3MsIGJ1 dCB0aGVuIHdlJ2QgYmUgdW5hYmxlIHRvCi0tICAgb3B0aW1pemUgb3V0IGxvY3ZpZXdsaXN0cyB0 aGF0IGNvbnRhaW4gb25seSB6ZXJvcy4gICovCi0tCi0tc3RhdGljIGJvb2wKLS1vdXRwdXRfYXNt X2xpbmVfZGVidWdfaW5mbyAodm9pZCkKLS17Ci0tICByZXR1cm4gKERXQVJGMl9BU01fVklFV19E RUJVR19JTkZPCi0tCSAgfHwgKERXQVJGMl9BU01fTElORV9ERUJVR19JTkZPCi0tCSAgICAgICYm ICFkZWJ1Z192YXJpYWJsZV9sb2NhdGlvbl92aWV3cykpOwotLX0KLS0KLSAvKiBNaW5pbXVtIGxp bmUgb2Zmc2V0IGluIGEgc3BlY2lhbCBsaW5lIGluZm8uIG9wY29kZS4KLSAgICBUaGlzIHZhbHVl IHdhcyBjaG9zZW4gdG8gZ2l2ZSBhIHJlYXNvbmFibGUgcmFuZ2Ugb2YgdmFsdWVzLiAgKi8KLSAj ZGVmaW5lIERXQVJGX0xJTkVfQkFTRSAgLTEwCi1AQCAtMzMyOSw3ICszMjA3LDYgQEAgc3RydWN0 IEdUWSAoKGNoYWluX25leHQgKCIlaC5uZXh0IikpKSB2YQotICAgcnR4IEdUWSAoKCkpIGxvYzsK LSAgIGNvbnN0IGNoYXIgKiBHVFkgKCgpKSBsYWJlbDsKLSAgIHN0cnVjdCB2YXJfbG9jX25vZGUg KiBHVFkgKCgpKSBuZXh0OwotLSAgdmFyX2xvY192aWV3IHZpZXc7Ci0gfTsKLSAKLSAvKiBWYXJp YWJsZSBsb2NhdGlvbiBsaXN0LiAgKi8KLUBAIC0zNTM4LDggKzM0MTUsNiBAQCBzdGF0aWMgaW5s aW5lIGR3X2xvY19kZXNjcl9yZWYgQVRfbG9jIChkCi0gc3RhdGljIHZvaWQgYWRkX0FUX2xvY19s aXN0IChkd19kaWVfcmVmLCBlbnVtIGR3YXJmX2F0dHJpYnV0ZSwKLSAJCQkgICAgIGR3X2xvY19s aXN0X3JlZik7Ci0gc3RhdGljIGlubGluZSBkd19sb2NfbGlzdF9yZWYgQVRfbG9jX2xpc3QgKGR3 X2F0dHJfbm9kZSAqKTsKLS1zdGF0aWMgdm9pZCBhZGRfQVRfdmlld19saXN0IChkd19kaWVfcmVm LCBlbnVtIGR3YXJmX2F0dHJpYnV0ZSk7Ci0tc3RhdGljIGlubGluZSBkd19sb2NfbGlzdF9yZWYg QVRfbG9jX2xpc3QgKGR3X2F0dHJfbm9kZSAqKTsKLSBzdGF0aWMgYWRkcl90YWJsZV9lbnRyeSAq YWRkX2FkZHJfdGFibGVfZW50cnkgKHZvaWQgKiwgZW51bSBhdGVfa2luZCk7Ci0gc3RhdGljIHZv aWQgcmVtb3ZlX2FkZHJfdGFibGVfZW50cnkgKGFkZHJfdGFibGVfZW50cnkgKik7Ci0gc3RhdGlj IHZvaWQgYWRkX0FUX2FkZHIgKGR3X2RpZV9yZWYsIGVudW0gZHdhcmZfYXR0cmlidXRlLCBydHgs IGJvb2wpOwotQEAgLTM1NzYsNyArMzQ1MSw3IEBAIHN0YXRpYyB2b2lkIGVxdWF0ZV90eXBlX251 bWJlcl90b19kaWUgKHQKLSBzdGF0aWMgZHdfZGllX3JlZiBsb29rdXBfZGVjbF9kaWUgKHRyZWUp OwotIHN0YXRpYyB2YXJfbG9jX2xpc3QgKmxvb2t1cF9kZWNsX2xvYyAoY29uc3RfdHJlZSk7Ci0g c3RhdGljIHZvaWQgZXF1YXRlX2RlY2xfbnVtYmVyX3RvX2RpZSAodHJlZSwgZHdfZGllX3JlZik7 Ci0tc3RhdGljIHN0cnVjdCB2YXJfbG9jX25vZGUgKmFkZF92YXJfbG9jX3RvX2RlY2wgKHRyZWUs IHJ0eCwgY29uc3QgY2hhciAqLCB2YXJfbG9jX3ZpZXcpOwotK3N0YXRpYyBzdHJ1Y3QgdmFyX2xv Y19ub2RlICphZGRfdmFyX2xvY190b19kZWNsICh0cmVlLCBydHgsIGNvbnN0IGNoYXIgKik7Ci0g c3RhdGljIHZvaWQgcHJpbnRfc3BhY2VzIChGSUxFICopOwotIHN0YXRpYyB2b2lkIHByaW50X2Rp ZSAoZHdfZGllX3JlZiwgRklMRSAqKTsKLSBzdGF0aWMgdm9pZCBsb2NfY2hlY2tzdW0gKGR3X2xv Y19kZXNjcl9yZWYsIHN0cnVjdCBtZDVfY3R4ICopOwotQEAgLTM3NzYsOCArMzY1MSw4IEBAIHN0 YXRpYyB2b2lkIGdlbl90YWdnZWRfdHlwZV9kaWUgKHRyZWUsIGQKLSBzdGF0aWMgdm9pZCBnZW5f dHlwZV9kaWVfd2l0aF91c2FnZSAodHJlZSwgZHdfZGllX3JlZiwgZW51bSBkZWJ1Z19pbmZvX3Vz YWdlKTsKLSBzdGF0aWMgdm9pZCBzcGxpY2VfY2hpbGRfZGllIChkd19kaWVfcmVmLCBkd19kaWVf cmVmKTsKLSBzdGF0aWMgaW50IGZpbGVfaW5mb19jbXAgKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9p ZCAqKTsKLS1zdGF0aWMgZHdfbG9jX2xpc3RfcmVmIG5ld19sb2NfbGlzdCAoZHdfbG9jX2Rlc2Ny X3JlZiwgY29uc3QgY2hhciAqLCB2YXJfbG9jX3ZpZXcsCi0tCQkJCSAgICAgY29uc3QgY2hhciAq LCB2YXJfbG9jX3ZpZXcsIGNvbnN0IGNoYXIgKik7Ci0rc3RhdGljIGR3X2xvY19saXN0X3JlZiBu ZXdfbG9jX2xpc3QgKGR3X2xvY19kZXNjcl9yZWYsIGNvbnN0IGNoYXIgKiwKLSsJCQkJICAgICBj b25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7Ci0gc3RhdGljIHZvaWQgb3V0cHV0X2xvY19saXN0 IChkd19sb2NfbGlzdF9yZWYpOwotIHN0YXRpYyBjaGFyICpnZW5faW50ZXJuYWxfc3ltIChjb25z dCBjaGFyICopOwotIHN0YXRpYyBib29sIHdhbnRfcHVibmFtZXMgKHZvaWQpOwotQEAgLTQwNjks OSArMzk0NCw2IEBAIHN0YXRpYyBjaGFyIHJhbmdlc19iYXNlX2xhYmVsWzIgKiBNQVhfQVIKLSAj aWZuZGVmIEJMT0NLX0JFR0lOX0xBQkVMCi0gI2RlZmluZSBCTE9DS19CRUdJTl9MQUJFTAkiTEJC IgotICNlbmRpZgotLSNpZm5kZWYgQkxPQ0tfSU5MSU5FX0VOVFJZX0xBQkVMCi0tI2RlZmluZSBC TE9DS19JTkxJTkVfRU5UUllfTEFCRUwgIkxCSSIKLS0jZW5kaWYKLSAjaWZuZGVmIEJMT0NLX0VO RF9MQUJFTAotICNkZWZpbmUgQkxPQ0tfRU5EX0xBQkVMCQkiTEJFIgotICNlbmRpZgotQEAgLTQ3 NzYsNjUgKzQ2NDgsMTEgQEAgQVRfbG9jX2xpc3QgKGR3X2F0dHJfbm9kZSAqYSkKLSAgIHJldHVy biBhLT5kd19hdHRyX3ZhbC52LnZhbF9sb2NfbGlzdDsKLSB9Ci0gCi0tLyogQWRkIGEgdmlldyBs aXN0IGF0dHJpYnV0ZSB0byBESUUuICBJdCBtdXN0IGhhdmUgYSBEV19BVF9sb2NhdGlvbgotLSAg IGF0dHJpYnV0ZSwgYmVjYXVzZSB0aGUgdmlldyBsaXN0IGNvbXBsZW1lbnRzIHRoZSBsb2NhdGlv biBsaXN0LiAgKi8KLS0KLS1zdGF0aWMgaW5saW5lIHZvaWQKLS1hZGRfQVRfdmlld19saXN0IChk d19kaWVfcmVmIGRpZSwgZW51bSBkd2FyZl9hdHRyaWJ1dGUgYXR0cl9raW5kKQotLXsKLS0gIGR3 X2F0dHJfbm9kZSBhdHRyOwotLQotLSAgaWYgKFhDT0ZGX0RFQlVHR0lOR19JTkZPICYmICFIQVZF X1hDT0ZGX0RXQVJGX0VYVFJBUykKLS0gICAgcmV0dXJuOwotLQotLSAgYXR0ci5kd19hdHRyID0g YXR0cl9raW5kOwotLSAgYXR0ci5kd19hdHRyX3ZhbC52YWxfY2xhc3MgPSBkd192YWxfY2xhc3Nf dmlld19saXN0OwotLSAgYXR0ci5kd19hdHRyX3ZhbC52YWxfZW50cnkgPSBOVUxMOwotLSAgYXR0 ci5kd19hdHRyX3ZhbC52LnZhbF92aWV3X2xpc3QgPSBkaWU7Ci0tICBhZGRfZHdhcmZfYXR0ciAo ZGllLCAmYXR0cik7Ci0tICBnY2NfY2hlY2tpbmdfYXNzZXJ0IChnZXRfQVQgKGRpZSwgRFdfQVRf bG9jYXRpb24pKTsKLS0gIGdjY19hc3NlcnQgKGhhdmVfbG9jYXRpb25fbGlzdHMpOwotLX0KLS0K LS0vKiBSZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBsb2NhdGlvbiBsaXN0IHJlZmVyZW5jZWQgYnkg dGhlIGF0dHJpYnV0ZS4KLS0gICBJZiB0aGUgbmFtZWQgYXR0cmlidXRlIGlzIGEgdmlldyBsaXN0 LCBsb29rIHVwIHRoZSBjb3JyZXNwb25kaW5nCi0tICAgRFdfQVRfbG9jYXRpb24gYXR0cmlidXRl IGFuZCByZXR1cm4gaXRzIGxvY2F0aW9uIGxpc3QuICAqLwotLQotIHN0YXRpYyBpbmxpbmUgZHdf bG9jX2xpc3RfcmVmICoKLSBBVF9sb2NfbGlzdF9wdHIgKGR3X2F0dHJfbm9kZSAqYSkKLSB7Ci0t ICBnY2NfYXNzZXJ0IChhKTsKLS0gIHN3aXRjaCAoQVRfY2xhc3MgKGEpKQotLSAgICB7Ci0tICAg IGNhc2UgZHdfdmFsX2NsYXNzX2xvY19saXN0OgotLSAgICAgIHJldHVybiAmYS0+ZHdfYXR0cl92 YWwudi52YWxfbG9jX2xpc3Q7Ci0tICAgIGNhc2UgZHdfdmFsX2NsYXNzX3ZpZXdfbGlzdDoKLS0g ICAgICB7Ci0tCWR3X2F0dHJfbm9kZSAqbDsKLS0JbCA9IGdldF9BVCAoYS0+ZHdfYXR0cl92YWwu di52YWxfdmlld19saXN0LCBEV19BVF9sb2NhdGlvbik7Ci0tCWlmICghbCkKLS0JICByZXR1cm4g TlVMTDsKLS0JZ2NjX2NoZWNraW5nX2Fzc2VydCAobCArIDEgPT0gYSk7Ci0tCXJldHVybiBBVF9s b2NfbGlzdF9wdHIgKGwpOwotLSAgICAgIH0KLS0gICAgZGVmYXVsdDoKLS0gICAgICBnY2NfdW5y ZWFjaGFibGUgKCk7Ci0tICAgIH0KLS19Ci0tCi0tLyogUmV0dXJuIHRoZSBsb2NhdGlvbiBhdHRy aWJ1dGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIGEgdmlldyBsaXN0Ci0tICAgYXR0cmlidXRlIHZh bHVlLiAgKi8KLS0KLS1zdGF0aWMgaW5saW5lIGR3X3ZhbF9ub2RlICoKLS12aWV3X2xpc3RfdG9f bG9jX2xpc3RfdmFsX25vZGUgKGR3X3ZhbF9ub2RlICp2YWwpCi0tewotLSAgZ2NjX2Fzc2VydCAo dmFsLT52YWxfY2xhc3MgPT0gZHdfdmFsX2NsYXNzX3ZpZXdfbGlzdCk7Ci0tICBkd19hdHRyX25v ZGUgKmxvYyA9IGdldF9BVCAodmFsLT52LnZhbF92aWV3X2xpc3QsIERXX0FUX2xvY2F0aW9uKTsK LS0gIGlmICghbG9jKQotLSAgICByZXR1cm4gTlVMTDsKLS0gIGdjY19jaGVja2luZ19hc3NlcnQg KCYobG9jICsgMSktPmR3X2F0dHJfdmFsID09IHZhbCk7Ci0tICBnY2NfYXNzZXJ0IChBVF9jbGFz cyAobG9jKSA9PSBkd192YWxfY2xhc3NfbG9jX2xpc3QpOwotLSAgcmV0dXJuICZsb2MtPmR3X2F0 dHJfdmFsOwotKyAgZ2NjX2Fzc2VydCAoYSAmJiBBVF9jbGFzcyAoYSkgPT0gZHdfdmFsX2NsYXNz X2xvY19saXN0KTsKLSsgIHJldHVybiAmYS0+ZHdfYXR0cl92YWwudi52YWxfbG9jX2xpc3Q7Ci0g fQotIAotIHN0cnVjdCBhZGRyX2hhc2hlciA6IGdnY19wdHJfaGFzaDxhZGRyX3RhYmxlX2VudHJ5 PgotQEAgLTYwODksNyArNTkwNyw3IEBAIGFkanVzdF9waWVjZV9saXN0IChydHggKmRlc3QsIHJ0 eCAqc3JjLAotIC8qIEFkZCBhIHZhcmlhYmxlIGxvY2F0aW9uIG5vZGUgdG8gdGhlIGxpbmtlZCBs aXN0IGZvciBERUNMLiAgKi8KLSAKLSBzdGF0aWMgc3RydWN0IHZhcl9sb2Nfbm9kZSAqCi0tYWRk X3Zhcl9sb2NfdG9fZGVjbCAodHJlZSBkZWNsLCBydHggbG9jX25vdGUsIGNvbnN0IGNoYXIgKmxh YmVsLCB2YXJfbG9jX3ZpZXcgdmlldykKLSthZGRfdmFyX2xvY190b19kZWNsICh0cmVlIGRlY2ws IHJ0eCBsb2Nfbm90ZSwgY29uc3QgY2hhciAqbGFiZWwpCi0gewotICAgdW5zaWduZWQgaW50IGRl Y2xfaWQ7Ci0gICB2YXJfbG9jX2xpc3QgKnRlbXA7Ci1AQCAtNjE3OCw3ICs1OTk2LDcgQEAgYWRk X3Zhcl9sb2NfdG9fZGVjbCAodHJlZSBkZWNsLCBydHggbG9jXwotICAgICAgIC8qIFRFTVAtPkxB U1QgaGVyZSBpcyBlaXRoZXIgcG9pbnRlciB0byB0aGUgbGFzdCBidXQgb25lIG9yCi0gCSBsYXN0 IGVsZW1lbnQgaW4gdGhlIGNoYWluZWQgbGlzdCwgTEFTVCBpcyBwb2ludGVyIHRvIHRoZQotIAkg bGFzdCBlbGVtZW50LiAgKi8KLS0gICAgICBpZiAobGFiZWwgJiYgc3RyY21wIChsYXN0LT5sYWJl bCwgbGFiZWwpID09IDAgJiYgbGFzdC0+dmlldyA9PSB2aWV3KQotKyAgICAgIGlmIChsYWJlbCAm JiBzdHJjbXAgKGxhc3QtPmxhYmVsLCBsYWJlbCkgPT0gMCkKLSAJewotIAkgIC8qIEZvciBTUkEg b3B0aW1pemVkIHZhcmlhYmxlcyBpZiB0aGVyZSB3ZXJlbid0IGFueSByZWFsCi0gCSAgICAgaW5z bnMgc2luY2UgbGFzdCBub3RlLCBqdXN0IG1vZGlmeSB0aGUgbGFzdCBub2RlLiAgKi8KLUBAIC02 MTk0LDcgKzYwMTIsNyBAQCBhZGRfdmFyX2xvY190b19kZWNsICh0cmVlIGRlY2wsIHJ0eCBsb2Nf Ci0gCSAgICAgIHRlbXAtPmxhc3QtPm5leHQgPSBOVUxMOwotIAkgICAgICB1bnVzZWQgPSBsYXN0 OwotIAkgICAgICBsYXN0ID0gdGVtcC0+bGFzdDsKLS0JICAgICAgZ2NjX2Fzc2VydCAoc3RyY21w IChsYXN0LT5sYWJlbCwgbGFiZWwpICE9IDAgfHwgbGFzdC0+dmlldyAhPSB2aWV3KTsKLSsJICAg ICAgZ2NjX2Fzc2VydCAoc3RyY21wIChsYXN0LT5sYWJlbCwgbGFiZWwpICE9IDApOwotIAkgICAg fQotIAkgIGVsc2UKLSAJICAgIHsKLUBAIC02MzI5LDEyICs2MTQ3LDYgQEAgcHJpbnRfZHdfdmFs IChkd192YWxfbm9kZSAqdmFsLCBib29sIHJlYwotICAgICAgIGZwcmludGYgKG91dGZpbGUsICJs b2NhdGlvbiBsaXN0IC0+IGxhYmVsOiVzIiwKLSAJICAgICAgIHZhbC0+di52YWxfbG9jX2xpc3Qt PmxsX3N5bWJvbCk7Ci0gICAgICAgYnJlYWs7Ci0tICAgIGNhc2UgZHdfdmFsX2NsYXNzX3ZpZXdf bGlzdDoKLS0gICAgICB2YWwgPSB2aWV3X2xpc3RfdG9fbG9jX2xpc3RfdmFsX25vZGUgKHZhbCk7 Ci0tICAgICAgZnByaW50ZiAob3V0ZmlsZSwgImxvY2F0aW9uIGxpc3Qgd2l0aCB2aWV3cyAtPiBs YWJlbHM6JXMgYW5kICVzIiwKLS0JICAgICAgIHZhbC0+di52YWxfbG9jX2xpc3QtPmxsX3N5bWJv bCwKLS0JICAgICAgIHZhbC0+di52YWxfbG9jX2xpc3QtPnZsX3N5bWJvbCk7Ci0tICAgICAgYnJl YWs7Ci0gICAgIGNhc2UgZHdfdmFsX2NsYXNzX3JhbmdlX2xpc3Q6Ci0gICAgICAgZnByaW50ZiAo b3V0ZmlsZSwgInJhbmdlIGxpc3QiKTsKLSAgICAgICBicmVhazsKLUBAIC05MTk1LDcgKzkwMDcs NiBAQCBzaXplX29mX2RpZSAoZHdfZGllX3JlZiBkaWUpCi0gCSAgfQotIAkgIGJyZWFrOwotIAlj YXNlIGR3X3ZhbF9jbGFzc19sb2NfbGlzdDoKLS0JY2FzZSBkd192YWxfY2xhc3Nfdmlld19saXN0 OgotIAkgIGlmIChkd2FyZl9zcGxpdF9kZWJ1Z19pbmZvICYmIGR3YXJmX3ZlcnNpb24gPj0gNSkK LSAJICAgIHsKLSAJICAgICAgZ2NjX2Fzc2VydCAoQVRfbG9jX2xpc3QgKGEpLT5udW1fYXNzaWdu ZWQpOwotQEAgLTk1NjcsNyArOTM3OCw2IEBAIHZhbHVlX2Zvcm1hdCAoZHdfYXR0cl9ub2RlICph KQotIAkgIGdjY191bnJlYWNoYWJsZSAoKTsKLSAJfQotICAgICBjYXNlIGR3X3ZhbF9jbGFzc19s b2NfbGlzdDoKLS0gICAgY2FzZSBkd192YWxfY2xhc3Nfdmlld19saXN0OgotICAgICAgIGlmIChk d2FyZl9zcGxpdF9kZWJ1Z19pbmZvCi0gCSAgJiYgZHdhcmZfdmVyc2lvbiA+PSA1Ci0gCSAgJiYg QVRfbG9jX2xpc3QgKGEpLT5udW1fYXNzaWduZWQpCi1AQCAtOTg0Miw4ICs5NjUyLDcgQEAgb3V0 cHV0X2FiYnJldl9zZWN0aW9uICh2b2lkKQotICAgIGV4cHJlc3Npb24uICAqLwotIAotIHN0YXRp YyBpbmxpbmUgZHdfbG9jX2xpc3RfcmVmCi0tbmV3X2xvY19saXN0IChkd19sb2NfZGVzY3JfcmVm IGV4cHIsIGNvbnN0IGNoYXIgKmJlZ2luLCB2YXJfbG9jX3ZpZXcgdmJlZ2luLAotLQkgICAgICBj b25zdCBjaGFyICplbmQsIHZhcl9sb2NfdmlldyB2ZW5kLAotK25ld19sb2NfbGlzdCAoZHdfbG9j X2Rlc2NyX3JlZiBleHByLCBjb25zdCBjaGFyICpiZWdpbiwgY29uc3QgY2hhciAqZW5kLAotIAkg ICAgICBjb25zdCBjaGFyICpzZWN0aW9uKQotIHsKLSAgIGR3X2xvY19saXN0X3JlZiByZXRsaXN0 ID0gZ2djX2NsZWFyZWRfYWxsb2M8ZHdfbG9jX2xpc3Rfbm9kZT4gKCk7Ci1AQCAtOTg1MywyOCAr OTY2MiwxMCBAQCBuZXdfbG9jX2xpc3QgKGR3X2xvY19kZXNjcl9yZWYgZXhwciwgY29uCi0gICBy ZXRsaXN0LT5lbmQgPSBlbmQ7Ci0gICByZXRsaXN0LT5leHByID0gZXhwcjsKLSAgIHJldGxpc3Qt PnNlY3Rpb24gPSBzZWN0aW9uOwotLSAgcmV0bGlzdC0+dmJlZ2luID0gdmJlZ2luOwotLSAgcmV0 bGlzdC0+dmVuZCA9IHZlbmQ7Ci0gCi0gICByZXR1cm4gcmV0bGlzdDsKLSB9Ci0gCi0tLyogUmV0 dXJuIHRydWUgaWZmIHRoZXJlJ3MgYW55IG5vbnplcm8gdmlldyBudW1iZXIgaW4gdGhlIGxvYyBs aXN0LiAgKi8KLS0KLS1zdGF0aWMgYm9vbAotLWxvY19saXN0X2hhc192aWV3cyAoZHdfbG9jX2xp c3RfcmVmIGxpc3QpCi0tewotLSAgaWYgKCFkZWJ1Z192YXJpYWJsZV9sb2NhdGlvbl92aWV3cykK LS0gICAgcmV0dXJuIGZhbHNlOwotLQotLSAgZm9yIChkd19sb2NfbGlzdF9yZWYgbG9jID0gbGlz dDsKLS0gICAgICAgbG9jICE9IE5VTEw7IGxvYyA9IGxvYy0+ZHdfbG9jX25leHQpCi0tICAgIGlm ICghWkVST19WSUVXX1AgKGxvYy0+dmJlZ2luKSB8fCAhWkVST19WSUVXX1AgKGxvYy0+dmVuZCkp Ci0tICAgICAgcmV0dXJuIHRydWU7Ci0tCi0tICByZXR1cm4gZmFsc2U7Ci0tfQotLQotIC8qIEdl bmVyYXRlIGEgbmV3IGludGVybmFsIHN5bWJvbCBmb3IgdGhpcyBsb2NhdGlvbiBsaXN0IG5vZGUs IGlmIGl0Ci0gICAgaGFzbid0IGdvdCBvbmUgeWV0LiAgKi8KLSAKLUBAIC05ODgzLDk4ICs5Njc0 LDYgQEAgZ2VuX2xsc3ltIChkd19sb2NfbGlzdF9yZWYgbGlzdCkKLSB7Ci0gICBnY2NfYXNzZXJ0 ICghbGlzdC0+bGxfc3ltYm9sKTsKLSAgIGxpc3QtPmxsX3N5bWJvbCA9IGdlbl9pbnRlcm5hbF9z eW0gKCJMTFNUIik7Ci0tCi0tICBpZiAoIWxvY19saXN0X2hhc192aWV3cyAobGlzdCkpCi0tICAg IHJldHVybjsKLS0KLS0gIGlmIChkd2FyZjJvdXRfbG9jdmlld3NfaW5fYXR0cmlidXRlICgpKQot LSAgICB7Ci0tICAgICAgLyogVXNlIHRoZSBzYW1lIGxhYmVsX251bSBmb3IgdGhlIHZpZXcgbGlz dC4gICovCi0tICAgICAgbGFiZWxfbnVtLS07Ci0tICAgICAgbGlzdC0+dmxfc3ltYm9sID0gZ2Vu X2ludGVybmFsX3N5bSAoIkxWVVMiKTsKLS0gICAgfQotLSAgZWxzZQotLSAgICBsaXN0LT52bF9z eW1ib2wgPSBsaXN0LT5sbF9zeW1ib2w7Ci0tfQotLQotLS8qIEdlbmVyYXRlIGEgc3ltYm9sIGZv ciB0aGUgbGlzdCwgYnV0IG9ubHkgaWYgd2UgcmVhbGx5IHdhbnQgdG8gZW1pdAotLSAgIGl0IGFz IGEgbGlzdC4gICovCi0tCi0tc3RhdGljIGlubGluZSB2b2lkCi0tbWF5YmVfZ2VuX2xsc3ltIChk d19sb2NfbGlzdF9yZWYgbGlzdCkKLS17Ci0tICBpZiAoIWxpc3QgfHwgKCFsaXN0LT5kd19sb2Nf bmV4dCAmJiAhbG9jX2xpc3RfaGFzX3ZpZXdzIChsaXN0KSkpCi0tICAgIHJldHVybjsKLS0KLS0g IGdlbl9sbHN5bSAobGlzdCk7Ci0tfQotLQotLS8qIERldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0 byBza2lwIGxvY19saXN0IGVudHJ5IENVUlIuICBJZiB3ZSdyZSBub3QKLS0gICB0byBza2lwIGl0 LCBhbmQgU0laRVAgaXMgbm9uLW51bGwsIHN0b3JlIHRoZSBzaXplIG9mIENVUlItPmV4cHIncwot LSAgIHJlcHJlc2VudGF0aW9uIGluICpTSVpFUC4gICovCi0tCi0tc3RhdGljIGJvb2wKLS1za2lw X2xvY19saXN0X2VudHJ5IChkd19sb2NfbGlzdF9yZWYgY3VyciwgdW5zaWduZWQgbG9uZyAqc2l6 ZXAgPSAwKQotLXsKLS0gIC8qIERvbid0IG91dHB1dCBhbiBlbnRyeSB0aGF0IHN0YXJ0cyBhbmQg ZW5kcyBhdCB0aGUgc2FtZSBhZGRyZXNzLiAgKi8KLS0gIGlmIChzdHJjbXAgKGN1cnItPmJlZ2lu LCBjdXJyLT5lbmQpID09IDAKLS0gICAgICAmJiBjdXJyLT52YmVnaW4gPT0gY3Vyci0+dmVuZCAm JiAhY3Vyci0+Zm9yY2UpCi0tICAgIHJldHVybiB0cnVlOwotLQotLSAgdW5zaWduZWQgbG9uZyBz aXplID0gc2l6ZV9vZl9sb2NzIChjdXJyLT5leHByKTsKLS0KLS0gIC8qIElmIHRoZSBleHByZXNz aW9uIGlzIHRvbyBsYXJnZSwgZHJvcCBpdCBvbiB0aGUgZmxvb3IuICBXZSBjb3VsZAotLSAgICAg cGVyaGFwcyBwdXQgaXQgaW50byBEV19UQUdfZHdhcmZfcHJvY2VkdXJlIGFuZCByZWZlciB0byB0 aGF0Ci0tICAgICBpbiB0aGUgZXhwcmVzc2lvbiwgYnV0ID49IDY0S0IgZXhwcmVzc2lvbnMgZm9y IGEgc2luZ2xlIHZhbHVlCi0tICAgICBpbiBhIHNpbmdsZSByYW5nZSBhcmUgdW5saWtlbHkgdmVy eSB1c2VmdWwuICAqLwotLSAgaWYgKGR3YXJmX3ZlcnNpb24gPCA1ICYmIHNpemUgPiAweGZmZmYp Ci0tICAgIHJldHVybiB0cnVlOwotLQotLSAgaWYgKHNpemVwKQotLSAgICAqc2l6ZXAgPSBzaXpl OwotLQotLSAgcmV0dXJuIGZhbHNlOwotLX0KLS0KLS0vKiBPdXRwdXQgYSB2aWV3IHBhaXIgbG9j bGlzdCBlbnRyeSBmb3IgQ1VSUiwgaWYgaXQgcmVxdWlyZXMgb25lLiAgKi8KLS0KLS1zdGF0aWMg dm9pZAotLWR3YXJmMm91dF9tYXliZV9vdXRwdXRfbG9jbGlzdF92aWV3X3BhaXIgKGR3X2xvY19s aXN0X3JlZiBjdXJyKQotLXsKLS0gIGlmICghZHdhcmYyb3V0X2xvY3ZpZXdzX2luX2xvY2xpc3Qg KCkpCi0tICAgIHJldHVybjsKLS0KLS0gIGlmIChaRVJPX1ZJRVdfUCAoY3Vyci0+dmJlZ2luKSAm JiBaRVJPX1ZJRVdfUCAoY3Vyci0+dmVuZCkpCi0tICAgIHJldHVybjsKLS0KLS0jaWZkZWYgRFdf TExFX3ZpZXdfcGFpcgotLSAgZHcyX2FzbV9vdXRwdXRfZGF0YSAoMSwgRFdfTExFX3ZpZXdfcGFp ciwgIkRXX0xMRV92aWV3X3BhaXIiKTsKLS0KLS0jIGlmIERXQVJGMl9BU01fVklFV19ERUJVR19J TkZPCi0tICBpZiAoWkVST19WSUVXX1AgKGN1cnItPnZiZWdpbikpCi0tICAgIGR3Ml9hc21fb3V0 cHV0X2RhdGFfdWxlYjEyOCAoMCwgIkxvY2F0aW9uIHZpZXcgYmVnaW4iKTsKLS0gIGVsc2UKLS0g ICAgewotLSAgICAgIGNoYXIgbGFiZWxbTUFYX0FSVElGSUNJQUxfTEFCRUxfQllURVNdOwotLSAg ICAgIEFTTV9HRU5FUkFURV9JTlRFUk5BTF9MQUJFTCAobGFiZWwsICJMVlUiLCBjdXJyLT52YmVn aW4pOwotLSAgICAgIGR3Ml9hc21fb3V0cHV0X3N5bW5hbWVfdWxlYjEyOCAobGFiZWwsICJMb2Nh dGlvbiB2aWV3IGJlZ2luIik7Ci0tICAgIH0KLS0KLS0gIGlmIChaRVJPX1ZJRVdfUCAoY3Vyci0+ dmVuZCkpCi0tICAgIGR3Ml9hc21fb3V0cHV0X2RhdGFfdWxlYjEyOCAoMCwgIkxvY2F0aW9uIHZp ZXcgZW5kIik7Ci0tICBlbHNlCi0tICAgIHsKLS0gICAgICBjaGFyIGxhYmVsW01BWF9BUlRJRklD SUFMX0xBQkVMX0JZVEVTXTsKLS0gICAgICBBU01fR0VORVJBVEVfSU5URVJOQUxfTEFCRUwgKGxh YmVsLCAiTFZVIiwgY3Vyci0+dmVuZCk7Ci0tICAgICAgZHcyX2FzbV9vdXRwdXRfc3ltbmFtZV91 bGViMTI4IChsYWJlbCwgIkxvY2F0aW9uIHZpZXcgZW5kIik7Ci0tICAgIH0KLS0jIGVsc2UgLyog IURXQVJGMl9BU01fVklFV19ERUJVR19JTkZPICovCi0tICBkdzJfYXNtX291dHB1dF9kYXRhX3Vs ZWIxMjggKGN1cnItPnZiZWdpbiwgIkxvY2F0aW9uIHZpZXcgYmVnaW4iKTsKLS0gIGR3Ml9hc21f b3V0cHV0X2RhdGFfdWxlYjEyOCAoY3Vyci0+dmVuZCwgIkxvY2F0aW9uIHZpZXcgZW5kIik7Ci0t IyBlbmRpZiAvKiBEV0FSRjJfQVNNX1ZJRVdfREVCVUdfSU5GTyAqLwotLSNlbmRpZiAvKiBEV19M TEVfdmlld19wYWlyICovCi0tCi0tICByZXR1cm47Ci0gfQotIAotIC8qIE91dHB1dCB0aGUgbG9j YXRpb24gbGlzdCBnaXZlbiB0byB1cy4gICovCi1AQCAtOTk4Miw4NSArOTY4MSwzNCBAQCBkd2Fy ZjJvdXRfbWF5YmVfb3V0cHV0X2xvY2xpc3Rfdmlld19wYWlyCi0gc3RhdGljIHZvaWQKLSBvdXRw dXRfbG9jX2xpc3QgKGR3X2xvY19saXN0X3JlZiBsaXN0X2hlYWQpCi0gewotLSAgaW50IHZjb3Vu dCA9IDAsIGxjb3VudCA9IDA7Ci0tCi0gICBpZiAobGlzdF9oZWFkLT5lbWl0dGVkKQotICAgICBy ZXR1cm47Ci0gICBsaXN0X2hlYWQtPmVtaXR0ZWQgPSB0cnVlOwotIAotLSAgaWYgKGxpc3RfaGVh ZC0+dmxfc3ltYm9sICYmIGR3YXJmMm91dF9sb2N2aWV3c19pbl9hdHRyaWJ1dGUgKCkpCi0tICAg IHsKLS0gICAgICBBU01fT1VUUFVUX0xBQkVMIChhc21fb3V0X2ZpbGUsIGxpc3RfaGVhZC0+dmxf c3ltYm9sKTsKLS0KLS0gICAgICBmb3IgKGR3X2xvY19saXN0X3JlZiBjdXJyID0gbGlzdF9oZWFk OyBjdXJyICE9IE5VTEw7Ci0tCSAgIGN1cnIgPSBjdXJyLT5kd19sb2NfbmV4dCkKLS0JewotLQkg IGlmIChza2lwX2xvY19saXN0X2VudHJ5IChjdXJyKSkKLS0JICAgIGNvbnRpbnVlOwotLQotLQkg IHZjb3VudCsrOwotLQotLQkgIC8qID8/IGR3YXJmX3NwbGl0X2RlYnVnX2luZm8/ICAqLwotLSNp ZiBEV0FSRjJfQVNNX1ZJRVdfREVCVUdfSU5GTwotLQkgIGNoYXIgbGFiZWxbTUFYX0FSVElGSUNJ QUxfTEFCRUxfQllURVNdOwotLQotLQkgIGlmICghWkVST19WSUVXX1AgKGN1cnItPnZiZWdpbikp Ci0tCSAgICB7Ci0tCSAgICAgIEFTTV9HRU5FUkFURV9JTlRFUk5BTF9MQUJFTCAobGFiZWwsICJM VlUiLCBjdXJyLT52YmVnaW4pOwotLQkgICAgICBkdzJfYXNtX291dHB1dF9zeW1uYW1lX3VsZWIx MjggKGxhYmVsLAotLQkJCQkJICAgICAgIlZpZXcgbGlzdCBiZWdpbiAoJXMpIiwKLS0JCQkJCSAg ICAgIGxpc3RfaGVhZC0+dmxfc3ltYm9sKTsKLS0JICAgIH0KLS0JICBlbHNlCi0tCSAgICBkdzJf YXNtX291dHB1dF9kYXRhX3VsZWIxMjggKDAsCi0tCQkJCQkgIlZpZXcgbGlzdCBiZWdpbiAoJXMp IiwKLS0JCQkJCSBsaXN0X2hlYWQtPnZsX3N5bWJvbCk7Ci0tCi0tCSAgaWYgKCFaRVJPX1ZJRVdf UCAoY3Vyci0+dmVuZCkpCi0tCSAgICB7Ci0tCSAgICAgIEFTTV9HRU5FUkFURV9JTlRFUk5BTF9M QUJFTCAobGFiZWwsICJMVlUiLCBjdXJyLT52ZW5kKTsKLS0JICAgICAgZHcyX2FzbV9vdXRwdXRf c3ltbmFtZV91bGViMTI4IChsYWJlbCwKLS0JCQkJCSAgICAgICJWaWV3IGxpc3QgZW5kICglcyki LAotLQkJCQkJICAgICAgbGlzdF9oZWFkLT52bF9zeW1ib2wpOwotLQkgICAgfQotLQkgIGVsc2UK LS0JICAgIGR3Ml9hc21fb3V0cHV0X2RhdGFfdWxlYjEyOCAoMCwKLS0JCQkJCSAiVmlldyBsaXN0 IGVuZCAoJXMpIiwKLS0JCQkJCSBsaXN0X2hlYWQtPnZsX3N5bWJvbCk7Ci0tI2Vsc2UgLyogIURX QVJGMl9BU01fVklFV19ERUJVR19JTkZPICovCi0tCSAgZHcyX2FzbV9vdXRwdXRfZGF0YV91bGVi MTI4IChjdXJyLT52YmVnaW4sCi0tCQkJCSAgICAgICAiVmlldyBsaXN0IGJlZ2luICglcykiLAot LQkJCQkgICAgICAgbGlzdF9oZWFkLT52bF9zeW1ib2wpOwotLQkgIGR3Ml9hc21fb3V0cHV0X2Rh dGFfdWxlYjEyOCAoY3Vyci0+dmVuZCwKLS0JCQkJICAgICAgICJWaWV3IGxpc3QgZW5kICglcyki LAotLQkJCQkgICAgICAgbGlzdF9oZWFkLT52bF9zeW1ib2wpOwotLSNlbmRpZgotLQl9Ci0tICAg IH0KLS0KLSAgIEFTTV9PVVRQVVRfTEFCRUwgKGFzbV9vdXRfZmlsZSwgbGlzdF9oZWFkLT5sbF9z eW1ib2wpOwotIAotKyAgZHdfbG9jX2xpc3RfcmVmIGN1cnIgPSBsaXN0X2hlYWQ7Ci0gICBjb25z dCBjaGFyICpsYXN0X3NlY3Rpb24gPSBOVUxMOwotICAgY29uc3QgY2hhciAqYmFzZV9sYWJlbCA9 IE5VTEw7Ci0gCi0gICAvKiBXYWxrIHRoZSBsb2NhdGlvbiBsaXN0LCBhbmQgb3V0cHV0IGVhY2gg cmFuZ2UgKyBleHByZXNzaW9uLiAgKi8KLS0gIGZvciAoZHdfbG9jX2xpc3RfcmVmIGN1cnIgPSBs aXN0X2hlYWQ7IGN1cnIgIT0gTlVMTDsKLS0gICAgICAgY3VyciA9IGN1cnItPmR3X2xvY19uZXh0 KQotKyAgZm9yIChjdXJyID0gbGlzdF9oZWFkOyBjdXJyICE9IE5VTEw7IGN1cnIgPSBjdXJyLT5k d19sb2NfbmV4dCkKLSAgICAgewotICAgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZTsKLS0KLS0gICAg ICAvKiBTa2lwIHRoaXMgZW50cnk/ICBJZiB3ZSBza2lwIGl0IGhlcmUsIHdlIG11c3Qgc2tpcCBp dCBpbiB0aGUKLS0JIHZpZXcgbGlzdCBhYm92ZSBhcyB3ZWxsLiAqLwotLSAgICAgIGlmIChza2lw X2xvY19saXN0X2VudHJ5IChjdXJyLCAmc2l6ZSkpCi0rICAgICAgLyogRG9uJ3Qgb3V0cHV0IGFu IGVudHJ5IHRoYXQgc3RhcnRzIGFuZCBlbmRzIGF0IHRoZSBzYW1lIGFkZHJlc3MuICAqLwotKyAg ICAgIGlmIChzdHJjbXAgKGN1cnItPmJlZ2luLCBjdXJyLT5lbmQpID09IDAgJiYgIWN1cnItPmZv cmNlKQotKwljb250aW51ZTsKLSsgICAgICBzaXplID0gc2l6ZV9vZl9sb2NzIChjdXJyLT5leHBy KTsKLSsgICAgICAvKiBJZiB0aGUgZXhwcmVzc2lvbiBpcyB0b28gbGFyZ2UsIGRyb3AgaXQgb24g dGhlIGZsb29yLiAgV2UgY291bGQKLSsJIHBlcmhhcHMgcHV0IGl0IGludG8gRFdfVEFHX2R3YXJm X3Byb2NlZHVyZSBhbmQgcmVmZXIgdG8gdGhhdAotKwkgaW4gdGhlIGV4cHJlc3Npb24sIGJ1dCA+ PSA2NEtCIGV4cHJlc3Npb25zIGZvciBhIHNpbmdsZSB2YWx1ZQotKwkgaW4gYSBzaW5nbGUgcmFu Z2UgYXJlIHVubGlrZWx5IHZlcnkgdXNlZnVsLiAgKi8KLSsgICAgICBpZiAoZHdhcmZfdmVyc2lv biA8IDUgJiYgc2l6ZSA+IDB4ZmZmZikKLSAJY29udGludWU7Ci0tCi0tICAgICAgbGNvdW50Kys7 Ci0tCi0gICAgICAgaWYgKGR3YXJmX3ZlcnNpb24gPj0gNSkKLSAJewotIAkgIGlmIChkd2FyZl9z cGxpdF9kZWJ1Z19pbmZvKQotIAkgICAgewotLQkgICAgICBkd2FyZjJvdXRfbWF5YmVfb3V0cHV0 X2xvY2xpc3Rfdmlld19wYWlyIChjdXJyKTsKLSAJICAgICAgLyogRm9yIC1nc3BsaXQtZHdhcmYs IGVtaXQgRFdfTExFX3N0YXJ4X2xlbmd0aCwgd2hpY2ggaGFzCi0gCQkgdWxlYjEyOCBpbmRleCBp bnRvIC5kZWJ1Z19hZGRyIGFuZCB1bGViMTI4IGxlbmd0aC4gICovCi0gCSAgICAgIGR3Ml9hc21f b3V0cHV0X2RhdGEgKDEsIERXX0xMRV9zdGFydHhfbGVuZ3RoLAotQEAgLTEwMDc4LDcgKzk3MjYs NiBAQCBvdXRwdXRfbG9jX2xpc3QgKGR3X2xvY19saXN0X3JlZiBsaXN0X2hlCi0gCSAgICB9Ci0g CSAgZWxzZSBpZiAoIWhhdmVfbXVsdGlwbGVfZnVuY3Rpb25fc2VjdGlvbnMgJiYgSEFWRV9BU19M RUIxMjgpCi0gCSAgICB7Ci0tCSAgICAgIGR3YXJmMm91dF9tYXliZV9vdXRwdXRfbG9jbGlzdF92 aWV3X3BhaXIgKGN1cnIpOwotIAkgICAgICAvKiBJZiBhbGwgY29kZSBpcyBpbiAudGV4dCBzZWN0 aW9uLCB0aGUgYmFzZSBhZGRyZXNzIGlzCi0gCQkgYWxyZWFkeSBwcm92aWRlZCBieSB0aGUgQ1Ug YXR0cmlidXRlcy4gIFVzZQotIAkJIERXX0xMRV9vZmZzZXRfcGFpciB3aGVyZSBib3RoIGFkZHJl c3NlcyBhcmUgdWxlYjEyOCBlbmNvZGVkCi1AQCAtMTAxMjksNyArOTc3Niw2IEBAIG91dHB1dF9s b2NfbGlzdCAoZHdfbG9jX2xpc3RfcmVmIGxpc3RfaGUKLSAJCSBsZW5ndGguICAqLwotIAkgICAg ICBpZiAobGFzdF9zZWN0aW9uID09IE5VTEwpCi0gCQl7Ci0tCQkgIGR3YXJmMm91dF9tYXliZV9v dXRwdXRfbG9jbGlzdF92aWV3X3BhaXIgKGN1cnIpOwotIAkJICBkdzJfYXNtX291dHB1dF9kYXRh ICgxLCBEV19MTEVfc3RhcnRfbGVuZ3RoLAotIAkJCQkgICAgICAgIkRXX0xMRV9zdGFydF9sZW5n dGggKCVzKSIsCi0gCQkJCSAgICAgICBsaXN0X2hlYWQtPmxsX3N5bWJvbCk7Ci1AQCAtMTAxNDQs NyArOTc5MCw2IEBAIG91dHB1dF9sb2NfbGlzdCAoZHdfbG9jX2xpc3RfcmVmIGxpc3RfaGUKLSAJ CSBEV19MTEVfYmFzZV9hZGRyZXNzLiAgKi8KLSAJICAgICAgZWxzZQotIAkJewotLQkJICBkd2Fy ZjJvdXRfbWF5YmVfb3V0cHV0X2xvY2xpc3Rfdmlld19wYWlyIChjdXJyKTsKLSAJCSAgZHcyX2Fz bV9vdXRwdXRfZGF0YSAoMSwgRFdfTExFX29mZnNldF9wYWlyLAotIAkJCQkgICAgICAgIkRXX0xM RV9vZmZzZXRfcGFpciAoJXMpIiwKLSAJCQkJICAgICAgIGxpc3RfaGVhZC0+bGxfc3ltYm9sKTsK LUBAIC0xMDE2MCw3ICs5ODA1LDYgQEAgb3V0cHV0X2xvY19saXN0IChkd19sb2NfbGlzdF9yZWYg bGlzdF9oZQotIAkgICAgIERXX0xMRV9zdGFydF9lbmQgd2l0aCBhIHBhaXIgb2YgYWJzb2x1dGUg YWRkcmVzc2VzLiAgKi8KLSAJICBlbHNlCi0gCSAgICB7Ci0tCSAgICAgIGR3YXJmMm91dF9tYXli ZV9vdXRwdXRfbG9jbGlzdF92aWV3X3BhaXIgKGN1cnIpOwotIAkgICAgICBkdzJfYXNtX291dHB1 dF9kYXRhICgxLCBEV19MTEVfc3RhcnRfZW5kLAotIAkJCQkgICAiRFdfTExFX3N0YXJ0X2VuZCAo JXMpIiwKLSAJCQkJICAgbGlzdF9oZWFkLT5sbF9zeW1ib2wpOwotQEAgLTEwMjM5LDkgKzk4ODMs NiBAQCBvdXRwdXRfbG9jX2xpc3QgKGR3X2xvY19saXN0X3JlZiBsaXN0X2hlCi0gCQkJICAgIkxv Y2F0aW9uIGxpc3QgdGVybWluYXRvciBlbmQgKCVzKSIsCi0gCQkJICAgbGlzdF9oZWFkLT5sbF9z eW1ib2wpOwotICAgICB9Ci0tCi0tICBnY2NfYXNzZXJ0ICghbGlzdF9oZWFkLT52bF9zeW1ib2wK LS0JICAgICAgfHwgdmNvdW50ID09IGxjb3VudCAqIChkd2FyZjJvdXRfbG9jdmlld3NfaW5fYXR0 cmlidXRlICgpID8gMSA6IDApKTsKLSB9Ci0gCi0gLyogT3V0cHV0IGEgcmFuZ2VfbGlzdCBvZmZz ZXQgaW50byB0aGUgLmRlYnVnX3JhbmdlcyBvciAuZGVidWdfcm5nbGlzdHMKLUBAIC0xMDMwNiwy MiArOTk0Nyw2IEBAIG91dHB1dF9sb2NfbGlzdF9vZmZzZXQgKGR3X2F0dHJfbm9kZSAqYSkKLSAJ CQkgICIlcyIsIGR3YXJmX2F0dHJfbmFtZSAoYS0+ZHdfYXR0cikpOwotIH0KLSAKLS0vKiBPdXRw dXQgdGhlIG9mZnNldCBpbnRvIHRoZSBkZWJ1Z19sb2Mgc2VjdGlvbi4gICovCi0tCi0tc3RhdGlj IHZvaWQKLS1vdXRwdXRfdmlld19saXN0X29mZnNldCAoZHdfYXR0cl9ub2RlICphKQotLXsKLS0g IGNoYXIgKnN5bSA9ICgqQVRfbG9jX2xpc3RfcHRyIChhKSktPnZsX3N5bWJvbDsKLS0KLS0gIGdj Y19hc3NlcnQgKHN5bSk7Ci0tICBpZiAoZHdhcmZfc3BsaXRfZGVidWdfaW5mbykKLS0gICAgZHcy X2FzbV9vdXRwdXRfZGVsdGEgKERXQVJGX09GRlNFVF9TSVpFLCBzeW0sIGxvY19zZWN0aW9uX2xh YmVsLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzIiwgZHdhcmZfYXR0cl9uYW1lIChh LT5kd19hdHRyKSk7Ci0tICBlbHNlCi0tICAgIGR3Ml9hc21fb3V0cHV0X29mZnNldCAoRFdBUkZf T0ZGU0VUX1NJWkUsIHN5bSwgZGVidWdfbG9jX3NlY3Rpb24sCi0tICAgICAgICAgICAgICAgICAg ICAgICAgICAgIiVzIiwgZHdhcmZfYXR0cl9uYW1lIChhLT5kd19hdHRyKSk7Ci0tfQotLQotIC8q IE91dHB1dCBhbiBhdHRyaWJ1dGUncyBpbmRleCBvciB2YWx1ZSBhcHByb3ByaWF0ZWx5LiAgKi8K LSAKLSBzdGF0aWMgdm9pZAotQEAgLTEwNTQ3LDEwICsxMDE3Miw2IEBAIG91dHB1dF9kaWUgKGR3 X2RpZV9yZWYgZGllKQotIAkgIG91dHB1dF9sb2NfbGlzdF9vZmZzZXQgKGEpOwotIAkgIGJyZWFr OwotIAotLQljYXNlIGR3X3ZhbF9jbGFzc192aWV3X2xpc3Q6Ci0tCSAgb3V0cHV0X3ZpZXdfbGlz dF9vZmZzZXQgKGEpOwotLQkgIGJyZWFrOwotLQotIAljYXNlIGR3X3ZhbF9jbGFzc19kaWVfcmVm OgotIAkgIGlmIChBVF9yZWZfZXh0ZXJuYWwgKGEpKQotIAkgICAgewotQEAgLTEwNzM1LDI4ICsx MDM1Niw2IEBAIG91dHB1dF9kaWUgKGR3X2RpZV9yZWYgZGllKQotIAkJCSAodW5zaWduZWQgbG9u ZykgZGllLT5kaWVfb2Zmc2V0KTsKLSB9Ci0gCi0tLyogT3V0cHV0IHRoZSBkd2FyZiB2ZXJzaW9u IG51bWJlci4gICovCi0tCi0tc3RhdGljIHZvaWQKLS1vdXRwdXRfZHdhcmZfdmVyc2lvbiAoKQot LXsKLS0gIC8qID8/PyBGb3Igbm93LCBpZiAtZ2R3YXJmLTYgaXMgc3BlY2lmaWVkLCB3ZSBvdXRw dXQgdmVyc2lvbiA1IHdpdGgKLS0gICAgIHZpZXdzIGluIGxvY2xpc3QuICBUaGF0IHdpbGwgY2hh bmdlIGV2ZW50dWFsbHkuICAqLwotLSAgaWYgKGR3YXJmX3ZlcnNpb24gPT0gNikKLS0gICAgewot LSAgICAgIHN0YXRpYyBib29sIG9uY2U7Ci0tICAgICAgaWYgKCFvbmNlKQotLQl7Ci0tCSAgd2Fy bmluZyAoMCwKLS0JCSAgICItZ2R3YXJmLTYgaXMgb3V0cHV0IGFzIHZlcnNpb24gNSB3aXRoIGlu Y29tcGF0aWJpbGl0aWVzIik7Ci0tCSAgb25jZSA9IHRydWU7Ci0tCX0KLS0gICAgICBkdzJfYXNt X291dHB1dF9kYXRhICgyLCA1LCAiRFdBUkYgdmVyc2lvbiBudW1iZXIiKTsKLS0gICAgfQotLSAg ZWxzZQotLSAgICBkdzJfYXNtX291dHB1dF9kYXRhICgyLCBkd2FyZl92ZXJzaW9uLCAiRFdBUkYg dmVyc2lvbiBudW1iZXIiKTsKLS19Ci0tCi0gLyogT3V0cHV0IHRoZSBjb21waWxhdGlvbiB1bml0 IHRoYXQgYXBwZWFycyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZQotICAgIC5kZWJ1Z19pbmZvIHNl Y3Rpb24sIGFuZCBwcmVjZWRlcyB0aGUgRElFIGRlc2NyaXB0aW9ucy4gICovCi0gCi1AQCAtMTA3 NzMsNyArMTAzNzIsNyBAQCBvdXRwdXRfY29tcGlsYXRpb25fdW5pdF9oZWFkZXIgKGVudW0gZHdh Ci0gCQkJICAgIkxlbmd0aCBvZiBDb21waWxhdGlvbiBVbml0IEluZm8iKTsKLSAgICAgfQotIAot LSAgb3V0cHV0X2R3YXJmX3ZlcnNpb24gKCk7Ci0rICBkdzJfYXNtX291dHB1dF9kYXRhICgyLCBk d2FyZl92ZXJzaW9uLCAiRFdBUkYgdmVyc2lvbiBudW1iZXIiKTsKLSAgIGlmIChkd2FyZl92ZXJz aW9uID49IDUpCi0gICAgIHsKLSAgICAgICBjb25zdCBjaGFyICpuYW1lOwotQEAgLTEwOTg1LDcg KzEwNTg0LDcgQEAgb3V0cHV0X3NrZWxldG9uX2RlYnVnX3NlY3Rpb25zIChkd19kaWVfcgotICAg ICAgICAgICAgICAgICAgICAgICAgLSBEV0FSRl9JTklUSUFMX0xFTkdUSF9TSVpFCi0gICAgICAg ICAgICAgICAgICAgICAgICArIHNpemVfb2ZfZGllIChjb21wX3VuaXQpLAotICAgICAgICAgICAg ICAgICAgICAgICAiTGVuZ3RoIG9mIENvbXBpbGF0aW9uIFVuaXQgSW5mbyIpOwotLSAgb3V0cHV0 X2R3YXJmX3ZlcnNpb24gKCk7Ci0rICBkdzJfYXNtX291dHB1dF9kYXRhICgyLCBkd2FyZl92ZXJz aW9uLCAiRFdBUkYgdmVyc2lvbiBudW1iZXIiKTsKLSAgIGlmIChkd2FyZl92ZXJzaW9uID49IDUp Ci0gICAgIHsKLSAgICAgICBkdzJfYXNtX291dHB1dF9kYXRhICgxLCBEV19VVF9za2VsZXRvbiwg IkRXX1VUX3NrZWxldG9uIik7Ci1AQCAtMTEyODQsNyArMTA4ODMsNyBAQCBvdXRwdXRfcHVibmFt ZXMgKHZlYzxwdWJuYW1lX2VudHJ5LCB2YV9nCi0gICAgIH0KLSAKLSAgIC8qIFZlcnNpb24gbnVt YmVyIGZvciBwdWJuYW1lcy9wdWJ0eXBlcyBpcyBpbmRlcGVuZGVudCBvZiBkd2FyZiB2ZXJzaW9u LiAgKi8KLS0gIGR3Ml9hc21fb3V0cHV0X2RhdGEgKDIsIDIsICJEV0FSRiBwdWJuYW1lcy9wdWJ0 eXBlcyB2ZXJzaW9uIik7Ci0rICBkdzJfYXNtX291dHB1dF9kYXRhICgyLCAyLCAiRFdBUkYgVmVy c2lvbiIpOwotIAotICAgaWYgKGR3YXJmX3NwbGl0X2RlYnVnX2luZm8pCi0gICAgIGR3Ml9hc21f b3V0cHV0X29mZnNldCAoRFdBUkZfT0ZGU0VUX1NJWkUsIGRlYnVnX3NrZWxldG9uX2luZm9fc2Vj dGlvbl9sYWJlbCwKLUBAIC0xMTM2Niw3ICsxMDk2NSw3IEBAIG91dHB1dF9hcmFuZ2VzICh2b2lk KQotICAgICB9Ci0gCi0gICAvKiBWZXJzaW9uIG51bWJlciBmb3IgYXJhbmdlcyBpcyBzdGlsbCAy LCBldmVuIHVwIHRvIERXQVJGNS4gICovCi0tICBkdzJfYXNtX291dHB1dF9kYXRhICgyLCAyLCAi RFdBUkYgYXJhbmdlcyB2ZXJzaW9uIik7Ci0rICBkdzJfYXNtX291dHB1dF9kYXRhICgyLCAyLCAi RFdBUkYgVmVyc2lvbiIpOwotICAgaWYgKGR3YXJmX3NwbGl0X2RlYnVnX2luZm8pCi0gICAgIGR3 Ml9hc21fb3V0cHV0X29mZnNldCAoRFdBUkZfT0ZGU0VUX1NJWkUsIGRlYnVnX3NrZWxldG9uX2lu Zm9fc2VjdGlvbl9sYWJlbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z19za2Vs ZXRvbl9pbmZvX3NlY3Rpb24sCi1AQCAtMTE2MzEsNyArMTEyMzAsNyBAQCBvdXRwdXRfcm5nbGlz dHMgKHVuc2lnbmVkIGdlbmVyYXRpb24pCi0gICBkdzJfYXNtX291dHB1dF9kZWx0YSAoRFdBUkZf T0ZGU0VUX1NJWkUsIGwyLCBsMSwKLSAJCQkiTGVuZ3RoIG9mIFJhbmdlIExpc3RzIik7Ci0gICBB U01fT1VUUFVUX0xBQkVMIChhc21fb3V0X2ZpbGUsIGwxKTsKLS0gIG91dHB1dF9kd2FyZl92ZXJz aW9uICgpOwotKyAgZHcyX2FzbV9vdXRwdXRfZGF0YSAoMiwgZHdhcmZfdmVyc2lvbiwgIkRXQVJG IFZlcnNpb24iKTsKLSAgIGR3Ml9hc21fb3V0cHV0X2RhdGEgKDEsIERXQVJGMl9BRERSX1NJWkUs ICJBZGRyZXNzIFNpemUiKTsKLSAgIGR3Ml9hc21fb3V0cHV0X2RhdGEgKDEsIDAsICJTZWdtZW50 IFNpemUiKTsKLSAgIC8qIEVtaXQgdGhlIG9mZnNldCB0YWJsZSBvbmx5IGZvciAtZ3NwbGl0LWR3 YXJmLiAgSWYgd2UgZG9uJ3QgY2FyZQotQEAgLTEyMjY1LDExICsxMTg2NCw4IEBAIG91dHB1dF9v bmVfbGluZV9pbmZvX3RhYmxlIChkd19saW5lX2luZm8KLSAgIGNoYXIgbGluZV9sYWJlbFtNQVhf QVJUSUZJQ0lBTF9MQUJFTF9CWVRFU107Ci0gICB1bnNpZ25lZCBpbnQgY3VycmVudF9saW5lID0g MTsKLSAgIGJvb2wgY3VycmVudF9pc19zdG10ID0gRFdBUkZfTElORV9ERUZBVUxUX0lTX1NUTVRf U1RBUlQ7Ci0tICBkd19saW5lX2luZm9fZW50cnkgKmVudCwgKnByZXZfYWRkcjsKLSsgIGR3X2xp bmVfaW5mb19lbnRyeSAqZW50OwotICAgc2l6ZV90IGk7Ci0tICB1bnNpZ25lZCBpbnQgdmlldzsK LS0KLS0gIHZpZXcgPSAwOwotIAotICAgRk9SX0VBQ0hfVkVDX1NBRkVfRUxUICh0YWJsZS0+ZW50 cmllcywgaSwgZW50KQotICAgICB7Ci1AQCAtMTIyODQsMzYgKzExODgwLDE0IEBAIG91dHB1dF9v bmVfbGluZV9pbmZvX3RhYmxlIChkd19saW5lX2luZm8KLSAJICAgICB0byBkZXRlcm1pbmUgd2hl biBpdCBpcyBzYWZlIHRvIHVzZSBEV19MTlNfZml4ZWRfYWR2YW5jZV9wYy4gICovCi0gCSAgQVNN X0dFTkVSQVRFX0lOVEVSTkFMX0xBQkVMIChsaW5lX2xhYmVsLCBMSU5FX0NPREVfTEFCRUwsIGVu dC0+dmFsKTsKLSAKLS0JICB2aWV3ID0gMDsKLS0KLSAJICAvKiBUaGlzIGNhbiBoYW5kbGUgYW55 IGRlbHRhLiAgVGhpcyB0YWtlcwotIAkgICAgIDQrRFdBUkYyX0FERFJfU0laRSBieXRlcy4gICov Ci0tCSAgZHcyX2FzbV9vdXRwdXRfZGF0YSAoMSwgMCwgInNldCBhZGRyZXNzICVzJXMiLCBsaW5l X2xhYmVsLAotLQkJCSAgICAgICBkZWJ1Z192YXJpYWJsZV9sb2NhdGlvbl92aWV3cwotLQkJCSAg ICAgICA/ICIsIHJlc2V0IHZpZXcgdG8gMCIgOiAiIik7Ci0rCSAgZHcyX2FzbV9vdXRwdXRfZGF0 YSAoMSwgMCwgInNldCBhZGRyZXNzICVzIiwgbGluZV9sYWJlbCk7Ci0gCSAgZHcyX2FzbV9vdXRw dXRfZGF0YV91bGViMTI4ICgxICsgRFdBUkYyX0FERFJfU0laRSwgTlVMTCk7Ci0gCSAgZHcyX2Fz bV9vdXRwdXRfZGF0YSAoMSwgRFdfTE5FX3NldF9hZGRyZXNzLCBOVUxMKTsKLSAJICBkdzJfYXNt X291dHB1dF9hZGRyIChEV0FSRjJfQUREUl9TSVpFLCBsaW5lX2xhYmVsLCBOVUxMKTsKLS0KLS0J ICBwcmV2X2FkZHIgPSBlbnQ7Ci0gCSAgYnJlYWs7Ci0gCi0tCWNhc2UgTElfYWR2X2FkZHJlc3M6 Ci0tCSAgewotLQkgICAgQVNNX0dFTkVSQVRFX0lOVEVSTkFMX0xBQkVMIChsaW5lX2xhYmVsLCBM SU5FX0NPREVfTEFCRUwsIGVudC0+dmFsKTsKLS0JICAgIGNoYXIgcHJldl9sYWJlbFtNQVhfQVJU SUZJQ0lBTF9MQUJFTF9CWVRFU107Ci0tCSAgICBBU01fR0VORVJBVEVfSU5URVJOQUxfTEFCRUwg KHByZXZfbGFiZWwsIExJTkVfQ09ERV9MQUJFTCwgcHJldl9hZGRyLT52YWwpOwotLQotLQkgICAg dmlldysrOwotLQotLQkgICAgZHcyX2FzbV9vdXRwdXRfZGF0YSAoMSwgRFdfTE5TX2ZpeGVkX2Fk dmFuY2VfcGMsICJmaXhlZCBhZHZhbmNlIFBDLCBpbmNyZW1lbnQgdmlldyB0byAlaSIsIHZpZXcp OwotLQkgICAgZHcyX2FzbV9vdXRwdXRfZGVsdGEgKDIsIGxpbmVfbGFiZWwsIHByZXZfbGFiZWws Ci0tCQkJCSAgImZyb20gJXMgdG8gJXMiLCBwcmV2X2xhYmVsLCBsaW5lX2xhYmVsKTsKLS0KLS0J ICAgIHByZXZfYWRkciA9IGVudDsKLS0JICAgIGJyZWFrOwotLQkgIH0KLS0KLSAJY2FzZSBMSV9z ZXRfbGluZToKLSAJICBpZiAoZW50LT52YWwgPT0gY3VycmVudF9saW5lKQotIAkgICAgewotQEAg LTEyNDIxLDcgKzExOTk1LDcgQEAgb3V0cHV0X2xpbmVfaW5mbyAoYm9vbCBwcm9sb2d1ZV9vbmx5 KQotIAotICAgQVNNX09VVFBVVF9MQUJFTCAoYXNtX291dF9maWxlLCBsMSk7Ci0gCi0tICBvdXRw dXRfZHdhcmZfdmVyc2lvbiAoKTsKLSsgIGR3Ml9hc21fb3V0cHV0X2RhdGEgKDIsIGR3YXJmX3Zl cnNpb24sICJEV0FSRiBWZXJzaW9uIik7Ci0gICBpZiAoZHdhcmZfdmVyc2lvbiA+PSA1KQotICAg ICB7Ci0gICAgICAgZHcyX2FzbV9vdXRwdXRfZGF0YSAoMSwgRFdBUkYyX0FERFJfU0laRSwgIkFk ZHJlc3MgU2l6ZSIpOwotQEAgLTE2ODc5LDcgKzE2NDUzLDYgQEAgc3RhdGljIGR3X2xvY19saXN0 X3JlZgotIGR3X2xvY19saXN0ICh2YXJfbG9jX2xpc3QgKmxvY19saXN0LCB0cmVlIGRlY2wsIGlu dCB3YW50X2FkZHJlc3MpCi0gewotICAgY29uc3QgY2hhciAqZW5kbmFtZSwgKnNlY25hbWU7Ci0t ICB2YXJfbG9jX3ZpZXcgZW5kdmlldzsKLSAgIHJ0eCB2YXJsb2M7Ci0gICBlbnVtIHZhcl9pbml0 X3N0YXR1cyBpbml0aWFsaXplZDsKLSAgIHN0cnVjdCB2YXJfbG9jX25vZGUgKm5vZGU7Ci1AQCAt MTY5NDQsMjcgKzE2NTE3LDI0IEBAIGR3X2xvY19saXN0ICh2YXJfbG9jX2xpc3QgKmxvY19saXN0 LCB0cmUKLSAJCSAgJiYgY3VycmVudF9mdW5jdGlvbl9kZWNsKQotIAkJewotIAkJICBlbmRuYW1l ID0gY2Z1bi0+ZmRlLT5kd19mZGVfZW5kOwotLQkJICBlbmR2aWV3ID0gMDsKLSAJCSAgcmFuZ2Vf YWNyb3NzX3N3aXRjaCA9IHRydWU7Ci0gCQl9Ci0gCSAgICAgIC8qIFRoZSB2YXJpYWJsZSBoYXMg YSBsb2NhdGlvbiBiZXR3ZWVuIE5PREUtPkxBQkVMIGFuZAotIAkJIE5PREUtPk5FWFQtPkxBQkVM LiAgKi8KLSAJICAgICAgZWxzZSBpZiAobm9kZS0+bmV4dCkKLS0JCWVuZG5hbWUgPSBub2RlLT5u ZXh0LT5sYWJlbCwgZW5kdmlldyA9IG5vZGUtPm5leHQtPnZpZXc7Ci0rCQllbmRuYW1lID0gbm9k ZS0+bmV4dC0+bGFiZWw7Ci0gCSAgICAgIC8qIElmIHRoZSB2YXJpYWJsZSBoYXMgYSBsb2NhdGlv biBhdCB0aGUgbGFzdCBsYWJlbAotIAkJIGl0IGtlZXBzIGl0cyBsb2NhdGlvbiB1bnRpbCB0aGUg ZW5kIG9mIGZ1bmN0aW9uLiAgKi8KLSAJICAgICAgZWxzZSBpZiAoIWN1cnJlbnRfZnVuY3Rpb25f ZGVjbCkKLS0JCWVuZG5hbWUgPSB0ZXh0X2VuZF9sYWJlbCwgZW5kdmlldyA9IDA7Ci0rCQllbmRu YW1lID0gdGV4dF9lbmRfbGFiZWw7Ci0gCSAgICAgIGVsc2UKLSAJCXsKLSAJCSAgQVNNX0dFTkVS QVRFX0lOVEVSTkFMX0xBQkVMIChsYWJlbF9pZCwgRlVOQ19FTkRfTEFCRUwsCi0gCQkJCQkgICAg ICAgY3VycmVudF9mdW5jdGlvbl9mdW5jZGVmX25vKTsKLSAJCSAgZW5kbmFtZSA9IGdnY19zdHJk dXAgKGxhYmVsX2lkKTsKLS0JCSAgZW5kdmlldyA9IDA7Ci0gCQl9Ci0gCi0tCSAgICAgICpsaXN0 cCA9IG5ld19sb2NfbGlzdCAoZGVzY3IsIG5vZGUtPmxhYmVsLCBub2RlLT52aWV3LAotLQkJCQkg ICAgIGVuZG5hbWUsIGVuZHZpZXcsIHNlY25hbWUpOwotKwkgICAgICAqbGlzdHAgPSBuZXdfbG9j X2xpc3QgKGRlc2NyLCBub2RlLT5sYWJlbCwgZW5kbmFtZSwgc2VjbmFtZSk7Ci0gCSAgICAgIGlm IChUUkVFX0NPREUgKGRlY2wpID09IFBBUk1fREVDTAotIAkJICAmJiBub2RlID09IGxvY19saXN0 LT5maXJzdAotIAkJICAmJiBOT1RFX1AgKG5vZGUtPmxvYykKLUBAIC0xNjk5OSwxMSArMTY1Njks MTEgQEAgZHdfbG9jX2xpc3QgKHZhcl9sb2NfbGlzdCAqbG9jX2xpc3QsIHRyZQotIAkgIC8qIFRo ZSB2YXJpYWJsZSBoYXMgYSBsb2NhdGlvbiBiZXR3ZWVuIE5PREUtPkxBQkVMIGFuZAotIAkgICAg IE5PREUtPk5FWFQtPkxBQkVMLiAgKi8KLSAJICBpZiAobm9kZS0+bmV4dCkKLS0JICAgIGVuZG5h bWUgPSBub2RlLT5uZXh0LT5sYWJlbCwgZW5kdmlldyA9IG5vZGUtPm5leHQtPnZpZXc7Ci0rCSAg ICBlbmRuYW1lID0gbm9kZS0+bmV4dC0+bGFiZWw7Ci0gCSAgZWxzZQotLQkgICAgZW5kbmFtZSA9 IGNmdW4tPmZkZS0+ZHdfZmRlX3NlY29uZF9lbmQsIGVuZHZpZXcgPSAwOwotLQkgICpsaXN0cCA9 IG5ld19sb2NfbGlzdCAoZGVzY3IsIGNmdW4tPmZkZS0+ZHdfZmRlX3NlY29uZF9iZWdpbiwgMCwK LS0JCQkJIGVuZG5hbWUsIGVuZHZpZXcsIHNlY25hbWUpOwotKwkgICAgZW5kbmFtZSA9IGNmdW4t PmZkZS0+ZHdfZmRlX3NlY29uZF9lbmQ7Ci0rCSAgKmxpc3RwID0gbmV3X2xvY19saXN0IChkZXNj ciwgY2Z1bi0+ZmRlLT5kd19mZGVfc2Vjb25kX2JlZ2luLAotKwkJCQkgZW5kbmFtZSwgc2VjbmFt ZSk7Ci0gCSAgbGlzdHAgPSAmKCpsaXN0cCktPmR3X2xvY19uZXh0OwotIAl9Ci0gICAgIH0KLUBA IC0xNzAxNCw3ICsxNjU4NCw4IEBAIGR3X2xvY19saXN0ICh2YXJfbG9jX2xpc3QgKmxvY19saXN0 LCB0cmUKLSAgICAgIHJlcHJlc2VudGFibGUsIHdlIGRvbid0IHdhbnQgdG8gcHJldGVuZCBhIHNp bmdsZSBlbnRyeSB0aGF0IHdhcwotICAgICAgYXBwbGllcyB0byB0aGUgZW50aXJlIHNjb3BlIGlu IHdoaWNoIHRoZSB2YXJpYWJsZSBpcwotICAgICAgYXZhaWxhYmxlLiAgKi8KLS0gIG1heWJlX2dl bl9sbHN5bSAobGlzdCk7Ci0rICBpZiAobGlzdCAmJiBsb2NfbGlzdC0+Zmlyc3QtPm5leHQpCi0r ICAgIGdlbl9sbHN5bSAobGlzdCk7Ci0gCi0gICByZXR1cm4gbGlzdDsKLSB9Ci1AQCAtMTc4MzMs NyArMTc0MDQsNyBAQCBsb2NfbGlzdF9mcm9tX3RyZWVfMSAodHJlZSBsb2MsIGludCB3YW50Ci0g ICAgIHsKLSAgICAgICBpZiAoZHdhcmZfdmVyc2lvbiA+PSAzIHx8ICFkd2FyZl9zdHJpY3QpCi0g CXJldHVybiBuZXdfbG9jX2xpc3QgKG5ld19sb2NfZGVzY3IgKERXX09QX3B1c2hfb2JqZWN0X2Fk ZHJlc3MsIDAsIDApLAotLQkJCSAgICAgTlVMTCwgMCwgTlVMTCwgMCwgTlVMTCk7Ci0rCQkJICAg ICBOVUxMLCBOVUxMLCBOVUxMKTsKLSAgICAgICBlbHNlCi0gCXJldHVybiBOVUxMOwotICAgICB9 Ci1AQCAtMTg2NDksNyArMTgyMjAsNyBAQCBsb2NfbGlzdF9mcm9tX3RyZWVfMSAodHJlZSBsb2Ms IGludCB3YW50Ci0gCWFkZF9sb2NfZGVzY3JfdG9fZWFjaCAobGlzdF9yZXQsIG5ld19sb2NfZGVz Y3IgKG9wLCBzaXplLCAwKSk7Ci0gICAgIH0KLSAgIGlmIChyZXQpCi0tICAgIGxpc3RfcmV0ID0g bmV3X2xvY19saXN0IChyZXQsIE5VTEwsIDAsIE5VTEwsIDAsIE5VTEwpOwotKyAgICBsaXN0X3Jl dCA9IG5ld19sb2NfbGlzdCAocmV0LCBOVUxMLCBOVUxMLCBOVUxMKTsKLSAKLSAgIHJldHVybiBs aXN0X3JldDsKLSB9Ci1AQCAtMTg5NzMsMjUgKzE4NTQ0LDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9p ZAotIGFkZF9BVF9sb2NhdGlvbl9kZXNjcmlwdGlvbiAoZHdfZGllX3JlZiBkaWUsIGVudW0gZHdh cmZfYXR0cmlidXRlIGF0dHJfa2luZCwKLSAJCQkgICAgIGR3X2xvY19saXN0X3JlZiBkZXNjcikK LSB7Ci0tICBib29sIGNoZWNrX25vX2xvY3ZpZXdzID0gdHJ1ZTsKLSAgIGlmIChkZXNjciA9PSAw KQotICAgICByZXR1cm47Ci0gICBpZiAoc2luZ2xlX2VsZW1lbnRfbG9jX2xpc3RfcCAoZGVzY3Ip KQotICAgICBhZGRfQVRfbG9jIChkaWUsIGF0dHJfa2luZCwgZGVzY3ItPmV4cHIpOwotICAgZWxz ZQotLSAgICB7Ci0tICAgICAgYWRkX0FUX2xvY19saXN0IChkaWUsIGF0dHJfa2luZCwgZGVzY3Ip OwotLSAgICAgIGdjY19hc3NlcnQgKGRlc2NyLT5sbF9zeW1ib2wpOwotLSAgICAgIGlmIChhdHRy X2tpbmQgPT0gRFdfQVRfbG9jYXRpb24gJiYgZGVzY3ItPnZsX3N5bWJvbAotLQkgICYmIGR3YXJm Mm91dF9sb2N2aWV3c19pbl9hdHRyaWJ1dGUgKCkpCi0tCXsKLS0JICBhZGRfQVRfdmlld19saXN0 IChkaWUsIERXX0FUX0dOVV9sb2N2aWV3cyk7Ci0tCSAgY2hlY2tfbm9fbG9jdmlld3MgPSBmYWxz ZTsKLS0JfQotLSAgICB9Ci0tCi0tICBpZiAoY2hlY2tfbm9fbG9jdmlld3MpCi0tICAgIGdjY19h c3NlcnQgKCFnZXRfQVQgKGRpZSwgRFdfQVRfR05VX2xvY3ZpZXdzKSk7Ci0rICAgIGFkZF9BVF9s b2NfbGlzdCAoZGllLCBhdHRyX2tpbmQsIGRlc2NyKTsKLSB9Ci0gCi0gLyogQWRkIERXX0FUX2Fj Y2Vzc2liaWxpdHkgYXR0cmlidXRlIHRvIERJRSBpZiBuZWVkZWQuICAqLwotQEAgLTIwMTgwLDcg KzE5NzM4LDcgQEAgY29udmVydF9jZmFfdG9fZmJfbG9jX2xpc3QgKEhPU1RfV0lERV9JTgotICAg ICAgIC8qIElmIHRoZSBmaXJzdCBwYXJ0aXRpb24gY29udGFpbmVkIG5vIENGSSBhZGp1c3RtZW50 cywgdGhlCi0gCSBDSUUgb3Bjb2RlcyBhcHBseSB0byB0aGUgd2hvbGUgZmlyc3QgcGFydGl0aW9u LiAgKi8KLSAgICAgICAqbGlzdF90YWlsID0gbmV3X2xvY19saXN0IChidWlsZF9jZmFfbG9jICgm bGFzdF9jZmEsIG9mZnNldCksCi0tCQkJCSBmZGUtPmR3X2ZkZV9iZWdpbiwgMCwgZmRlLT5kd19m ZGVfZW5kLCAwLCBzZWN0aW9uKTsKLSsJCQkJIGZkZS0+ZHdfZmRlX2JlZ2luLCBmZGUtPmR3X2Zk ZV9lbmQsIHNlY3Rpb24pOwotICAgICAgIGxpc3RfdGFpbCA9JigqbGlzdF90YWlsKS0+ZHdfbG9j X25leHQ7Ci0gICAgICAgc3RhcnRfbGFiZWwgPSBsYXN0X2xhYmVsID0gZmRlLT5kd19mZGVfc2Vj b25kX2JlZ2luOwotICAgICB9Ci1AQCAtMjAxOTYsNyArMTk3NTQsNyBAQCBjb252ZXJ0X2NmYV90 b19mYl9sb2NfbGlzdCAoSE9TVF9XSURFX0lOCi0gCSAgaWYgKCFjZmFfZXF1YWxfcCAoJmxhc3Rf Y2ZhLCAmbmV4dF9jZmEpKQotIAkgICAgewotIAkgICAgICAqbGlzdF90YWlsID0gbmV3X2xvY19s aXN0IChidWlsZF9jZmFfbG9jICgmbGFzdF9jZmEsIG9mZnNldCksCi0tCQkJCQkgc3RhcnRfbGFi ZWwsIDAsIGxhc3RfbGFiZWwsIDAsIHNlY3Rpb24pOwotKwkJCQkJIHN0YXJ0X2xhYmVsLCBsYXN0 X2xhYmVsLCBzZWN0aW9uKTsKLSAKLSAJICAgICAgbGlzdF90YWlsID0gJigqbGlzdF90YWlsKS0+ ZHdfbG9jX25leHQ7Ci0gCSAgICAgIGxhc3RfY2ZhID0gbmV4dF9jZmE7Ci1AQCAtMjAyMTgsMTQg KzE5Nzc2LDE0IEBAIGNvbnZlcnRfY2ZhX3RvX2ZiX2xvY19saXN0IChIT1NUX1dJREVfSU4KLSAJ ICBpZiAoIWNmYV9lcXVhbF9wICgmbGFzdF9jZmEsICZuZXh0X2NmYSkpCi0gCSAgICB7Ci0gCSAg ICAgICpsaXN0X3RhaWwgPSBuZXdfbG9jX2xpc3QgKGJ1aWxkX2NmYV9sb2MgKCZsYXN0X2NmYSwg b2Zmc2V0KSwKLS0JCQkJCSBzdGFydF9sYWJlbCwgMCwgbGFzdF9sYWJlbCwgMCwgc2VjdGlvbik7 Ci0rCQkJCQkgc3RhcnRfbGFiZWwsIGxhc3RfbGFiZWwsIHNlY3Rpb24pOwotIAotIAkgICAgICBs aXN0X3RhaWwgPSAmKCpsaXN0X3RhaWwpLT5kd19sb2NfbmV4dDsKLSAJICAgICAgbGFzdF9jZmEg PSBuZXh0X2NmYTsKLSAJICAgICAgc3RhcnRfbGFiZWwgPSBsYXN0X2xhYmVsOwotIAkgICAgfQot IAkgICpsaXN0X3RhaWwgPSBuZXdfbG9jX2xpc3QgKGJ1aWxkX2NmYV9sb2MgKCZsYXN0X2NmYSwg b2Zmc2V0KSwKLS0JCQkJICAgICBzdGFydF9sYWJlbCwgMCwgZmRlLT5kd19mZGVfZW5kLCAwLCBz ZWN0aW9uKTsKLSsJCQkJICAgICBzdGFydF9sYWJlbCwgZmRlLT5kd19mZGVfZW5kLCBzZWN0aW9u KTsKLSAJICBsaXN0X3RhaWwgPSAmKCpsaXN0X3RhaWwpLT5kd19sb2NfbmV4dDsKLSAJICBzdGFy dF9sYWJlbCA9IGxhc3RfbGFiZWwgPSBmZGUtPmR3X2ZkZV9zZWNvbmRfYmVnaW47Ci0gCX0KLUBA IC0yMDIzNCwxOCArMTk3OTIsMTkgQEAgY29udmVydF9jZmFfdG9fZmJfbG9jX2xpc3QgKEhPU1Rf V0lERV9JTgotICAgaWYgKCFjZmFfZXF1YWxfcCAoJmxhc3RfY2ZhLCAmbmV4dF9jZmEpKQotICAg ICB7Ci0gICAgICAgKmxpc3RfdGFpbCA9IG5ld19sb2NfbGlzdCAoYnVpbGRfY2ZhX2xvYyAoJmxh c3RfY2ZhLCBvZmZzZXQpLAotLQkJCQkgc3RhcnRfbGFiZWwsIDAsIGxhc3RfbGFiZWwsIDAsIHNl Y3Rpb24pOwotKwkJCQkgc3RhcnRfbGFiZWwsIGxhc3RfbGFiZWwsIHNlY3Rpb24pOwotICAgICAg IGxpc3RfdGFpbCA9ICYoKmxpc3RfdGFpbCktPmR3X2xvY19uZXh0OwotICAgICAgIHN0YXJ0X2xh YmVsID0gbGFzdF9sYWJlbDsKLSAgICAgfQotIAotICAgKmxpc3RfdGFpbCA9IG5ld19sb2NfbGlz dCAoYnVpbGRfY2ZhX2xvYyAoJm5leHRfY2ZhLCBvZmZzZXQpLAotLQkJCSAgICAgc3RhcnRfbGFi ZWwsIDAsCi0rCQkJICAgICBzdGFydF9sYWJlbCwKLSAJCQkgICAgIGZkZS0+ZHdfZmRlX3NlY29u ZF9iZWdpbgotLQkJCSAgICAgPyBmZGUtPmR3X2ZkZV9zZWNvbmRfZW5kIDogZmRlLT5kd19mZGVf ZW5kLCAwLAotKwkJCSAgICAgPyBmZGUtPmR3X2ZkZV9zZWNvbmRfZW5kIDogZmRlLT5kd19mZGVf ZW5kLAotIAkJCSAgICAgc2VjdGlvbik7Ci0gCi0tICBtYXliZV9nZW5fbGxzeW0gKGxpc3QpOwot KyAgaWYgKGxpc3QgJiYgbGlzdC0+ZHdfbG9jX25leHQpCi0rICAgIGdlbl9sbHN5bSAobGlzdCk7 Ci0gCi0gICByZXR1cm4gbGlzdDsKLSB9Ci1AQCAtMjMyMTksNDggKzIyNzc4LDYgQEAgYmxvY2tf ZGllX2hhc2hlcjo6ZXF1YWwgKGRpZV9zdHJ1Y3QgKngsCi0gICByZXR1cm4geC0+ZGVjbF9pZCA9 PSB5LT5kZWNsX2lkICYmIHgtPmRpZV9wYXJlbnQgPT0geS0+ZGllX3BhcmVudDsKLSB9Ci0gCi0t LyogSG9sZCBpbmZvcm1hdGlvbiBhYm91dCBtYXJrZXJzIGZvciBpbmxpbmVkIGVudHJ5IHBvaW50 cy4gICovCi0tc3RydWN0IEdUWSAoKGZvcl91c2VyKSkgaW5saW5lX2VudHJ5X2RhdGEKLS17Ci0t ICAvKiBUaGUgYmxvY2sgdGhhdCdzIHRoZSBpbmxpbmVkX2Z1bmN0aW9uX291dGVyX3Njb3BlIGZv ciBhbiBpbmxpbmVkCi0tICAgICBmdW5jdGlvbi4gICovCi0tICB0cmVlIGJsb2NrOwotLQotLSAg LyogVGhlIGxhYmVsIGF0IHRoZSBpbmxpbmVkIGVudHJ5IHBvaW50LiAgKi8KLS0gIGNvbnN0IGNo YXIgKmxhYmVsX3BmeDsKLS0gIHVuc2lnbmVkIGludCBsYWJlbF9udW07Ci0tCi0tICAvKiBUaGUg dmlldyBudW1iZXIgdG8gYmUgdXNlZCBhcyB0aGUgaW5saW5lZCBlbnRyeSBwb2ludC4gICovCi0t ICB2YXJfbG9jX3ZpZXcgdmlldzsKLS19OwotLQotLXN0cnVjdCBpbmxpbmVfZW50cnlfZGF0YV9o YXNoZXIgOiBnZ2NfcHRyX2hhc2ggPGlubGluZV9lbnRyeV9kYXRhPgotLXsKLS0gIHR5cGVkZWYg dHJlZSBjb21wYXJlX3R5cGU7Ci0tICBzdGF0aWMgaW5saW5lIGhhc2h2YWxfdCBoYXNoIChjb25z dCBpbmxpbmVfZW50cnlfZGF0YSAqKTsKLS0gIHN0YXRpYyBpbmxpbmUgYm9vbCBlcXVhbCAoY29u c3QgaW5saW5lX2VudHJ5X2RhdGEgKiwgY29uc3RfdHJlZSk7Ci0tfTsKLS0KLS0vKiBIYXNoIHRh YmxlIHJvdXRpbmVzIGZvciBpbmxpbmVfZW50cnlfZGF0YS4gICovCi0tCi0taW5saW5lIGhhc2h2 YWxfdAotLWlubGluZV9lbnRyeV9kYXRhX2hhc2hlcjo6aGFzaCAoY29uc3QgaW5saW5lX2VudHJ5 X2RhdGEgKmRhdGEpCi0tewotLSAgcmV0dXJuIGh0YWJfaGFzaF9wb2ludGVyIChkYXRhLT5ibG9j ayk7Ci0tfQotLQotLWlubGluZSBib29sCi0taW5saW5lX2VudHJ5X2RhdGFfaGFzaGVyOjplcXVh bCAoY29uc3QgaW5saW5lX2VudHJ5X2RhdGEgKmRhdGEsCi0tCQkJCSBjb25zdF90cmVlIGJsb2Nr KQotLXsKLS0gIHJldHVybiBkYXRhLT5ibG9jayA9PSBibG9jazsKLS19Ci0tCi0tLyogSW5saW5l ZCBlbnRyeSBwb2ludHMgcGVuZGluZyBESUUgY3JlYXRpb24gaW4gdGhpcyBjb21waWxhdGlvbiB1 bml0LiAgKi8KLS0KLS1zdGF0aWMgR1RZKCgpKSBoYXNoX3RhYmxlPGlubGluZV9lbnRyeV9kYXRh X2hhc2hlcj4gKmlubGluZV9lbnRyeV9kYXRhX3RhYmxlOwotLQotLQotIC8qIFJldHVybiBUUlVF IGlmIERFQ0wsIHdoaWNoIG1heSBoYXZlIGJlZW4gcHJldmlvdXNseSBnZW5lcmF0ZWQgYXMKLSAg ICBPTERfRElFLCBpcyBhIGNhbmRpZGF0ZSBmb3IgYSBEV19BVF9zcGVjaWZpY2F0aW9uLiAgREVD TEFSQVRJT04gaXMKLSAgICB0cnVlIGlmIGRlY2wgKG9yIGl0cyBvcmlnaW4pIGlzIGVpdGhlciBh biBleHRlcm4gZGVjbGFyYXRpb24gb3IgYQotQEAgLTIzNzEzLDQyICsyMzIzMCw2IEBAIGFkZF9o aWdoX2xvd19hdHRyaWJ1dGVzICh0cmVlIHN0bXQsIGR3X2QKLSB7Ci0gICBjaGFyIGxhYmVsW01B WF9BUlRJRklDSUFMX0xBQkVMX0JZVEVTXTsKLSAKLS0gIGlmIChpbmxpbmVfZW50cnlfZGF0YSAq KmllZHAKLS0gICAgICA9ICFpbmxpbmVfZW50cnlfZGF0YV90YWJsZSA/IE5VTEwKLS0gICAgICA6 IGlubGluZV9lbnRyeV9kYXRhX3RhYmxlLT5maW5kX3Nsb3Rfd2l0aF9oYXNoIChzdG10LAotLQkJ CQkJCSAgICAgIGh0YWJfaGFzaF9wb2ludGVyIChzdG10KSwKLS0JCQkJCQkgICAgICBOT19JTlNF UlQpKQotLSAgICB7Ci0tICAgICAgaW5saW5lX2VudHJ5X2RhdGEgKmllZCA9ICppZWRwOwotLSAg ICAgIGdjY19hc3NlcnQgKE1BWV9IQVZFX0RFQlVHX01BUktFUl9JTlNOUyk7Ci0tICAgICAgZ2Nj X2Fzc2VydCAoaW5saW5lZF9mdW5jdGlvbl9vdXRlcl9zY29wZV9wIChzdG10KSk7Ci0tICAgICAg QVNNX0dFTkVSQVRFX0lOVEVSTkFMX0xBQkVMIChsYWJlbCwgaWVkLT5sYWJlbF9wZngsIGllZC0+ bGFiZWxfbnVtKTsKLS0gICAgICBhZGRfQVRfbGJsX2lkIChkaWUsIERXX0FUX2VudHJ5X3BjLCBs YWJlbCk7Ci0tCi0tICAgICAgaWYgKGRlYnVnX3ZhcmlhYmxlX2xvY2F0aW9uX3ZpZXdzICYmICFa RVJPX1ZJRVdfUCAoaWVkLT52aWV3KSkKLS0JewotLQkgIGlmICghb3V0cHV0X2FzbV9saW5lX2Rl YnVnX2luZm8gKCkpCi0tCSAgICBhZGRfQVRfdW5zaWduZWQgKGRpZSwgRFdfQVRfR05VX2VudHJ5 X3ZpZXcsIGllZC0+dmlldyk7Ci0tCSAgZWxzZQotLQkgICAgewotLQkgICAgICBBU01fR0VORVJB VEVfSU5URVJOQUxfTEFCRUwgKGxhYmVsLCAiTFZVIiwgaWVkLT52aWV3KTsKLS0JICAgICAgLyog RklYTUU6IHRoaXMgd2lsbCByZXNvbHZlIHRvIGEgc21hbGwgbnVtYmVyLiAgQ291bGQgd2UKLS0J CSBwb3NzaWJseSBlbWl0IHNtYWxsZXIgZGF0YT8gIElkZWFsbHkgd2UnZCBlbWl0IGEKLS0JCSB1 bGViMTI4LCBidXQgdGhhdCB3b3VsZCBtYWtlIHRoZSBzaXplIG9mIERJRXMKLS0JCSBpbXBvc3Np YmxlIGZvciB0aGUgY29tcGlsZXIgdG8gY29tcHV0ZSwgc2luY2UgaXQncwotLQkJIHRoZSBhc3Nl bWJsZXIgdGhhdCBjb21wdXRlcyB0aGUgdmFsdWUgb2YgdGhlIHZpZXcKLS0JCSBsYWJlbCBpbiB0 aGlzIGNhc2UuICBJZGVhbGx5LCB3ZSdkIGhhdmUgYSBzaW5nbGUgZm9ybQotLQkJIGVuY29tcGFz c2luZyBib3RoIHRoZSBhZGRyZXNzIGFuZCB0aGUgdmlldywgYW5kCi0tCQkgaW5kaXJlY3Rpbmcg dGhlbSB0aHJvdWdoIGEgdGFibGUgbWlnaHQgbWFrZSB0aGluZ3MKLS0JCSBlYXNpZXIsIGJ1dCBl dmVuIHRoYXQgd291bGQgYmUgbW9yZSB3YXN0ZWZ1bCwKLS0JCSBzcGFjZS13aXNlLCB0aGFuIHdo YXQgd2UgaGF2ZSBub3cuICAqLwotLQkgICAgICBhZGRfQVRfbGJsX2lkIChkaWUsIERXX0FUX0dO VV9lbnRyeV92aWV3LCBsYWJlbCk7Ci0tCSAgICB9Ci0tCX0KLS0KLS0gICAgICBpbmxpbmVfZW50 cnlfZGF0YV90YWJsZS0+Y2xlYXJfc2xvdCAoaWVkcCk7Ci0tICAgIH0KLS0KLSAgIGlmIChCTE9D S19GUkFHTUVOVF9DSEFJTiAoc3RtdCkKLSAgICAgICAmJiAoZHdhcmZfdmVyc2lvbiA+PSAzIHx8 ICFkd2FyZl9zdHJpY3QpKQotICAgICB7Ci1AQCAtMjM3NTYsNyArMjMyMzcsNyBAQCBhZGRfaGln aF9sb3dfYXR0cmlidXRlcyAodHJlZSBzdG10LCBkd19kCi0gICAgICAgZHdfZGllX3JlZiBwZGll OwotICAgICAgIGR3X2F0dHJfbm9kZSAqYXR0ciA9IE5VTEw7Ci0gCi0tICAgICAgaWYgKCFNQVlf SEFWRV9ERUJVR19NQVJLRVJfSU5TTlMgJiYgaW5saW5lZF9mdW5jdGlvbl9vdXRlcl9zY29wZV9w IChzdG10KSkKLSsgICAgICBpZiAoaW5saW5lZF9mdW5jdGlvbl9vdXRlcl9zY29wZV9wIChzdG10 KSkKLSAJewotIAkgIEFTTV9HRU5FUkFURV9JTlRFUk5BTF9MQUJFTCAobGFiZWwsIEJMT0NLX0JF R0lOX0xBQkVMLAotIAkJCQkgICAgICAgQkxPQ0tfTlVNQkVSIChzdG10KSk7Ci1AQCAtMjM5MjEs NyArMjM0MDIsNyBAQCBnZW5faW5saW5lZF9zdWJyb3V0aW5lX2RpZSAodHJlZSBzdG10LCBkCi0g ICAgICAgZHdfZGllX3JlZiBzdWJyX2RpZQotIAk9IG5ld19kaWUgKERXX1RBR19pbmxpbmVkX3N1 YnJvdXRpbmUsIGNvbnRleHRfZGllLCBzdG10KTsKLSAKLS0gICAgICBpZiAoY2FsbF9hcmdfbG9j YXRpb25zIHx8IE1BWV9IQVZFX0RFQlVHX01BUktFUl9JTlNOUykKLSsgICAgICBpZiAoY2FsbF9h cmdfbG9jYXRpb25zKQotIAlCTE9DS19ESUUgKHN0bXQpID0gc3Vicl9kaWU7Ci0gICAgICAgYWRk X2Fic3RyYWN0X29yaWdpbl9hdHRyaWJ1dGUgKHN1YnJfZGllLCBkZWNsKTsKLSAgICAgICBpZiAo VFJFRV9BU01fV1JJVFRFTiAoc3RtdCkpCi1AQCAtMjY2ODMsNyArMjYxNjQsNyBAQCBtYXliZV9l bWl0X2ZpbGUgKHN0cnVjdCBkd2FyZl9maWxlX2RhdGEKLSAJZmQtPmVtaXR0ZWRfbnVtYmVyID0g MTsKLSAgICAgICBsYXN0X2VtaXR0ZWRfZmlsZSA9IGZkOwotIAotLSAgICAgIGlmIChvdXRwdXRf YXNtX2xpbmVfZGVidWdfaW5mbyAoKSkKLSsgICAgICBpZiAoRFdBUkYyX0FTTV9MSU5FX0RFQlVH X0lORk8pCi0gCXsKLSAJICBmcHJpbnRmIChhc21fb3V0X2ZpbGUsICJcdC5maWxlICV1ICIsIGZk LT5lbWl0dGVkX251bWJlcik7Ci0gCSAgb3V0cHV0X3F1b3RlZF9zdHJpbmcgKGFzbV9vdXRfZmls ZSwKLUBAIC0yNjg3NywxMyArMjYzNTgsMTEgQEAgZHdhcmYyb3V0X3Zhcl9sb2NhdGlvbiAocnR4 X2luc24gKmxvY19ubwotICAgc3RhdGljIHJ0eF9pbnNuICpleHBlY3RlZF9uZXh0X2xvY19ub3Rl OwotICAgdHJlZSBkZWNsOwotICAgYm9vbCB2YXJfbG9jX3A7Ci0tICB2YXJfbG9jX3ZpZXcgdmll dyA9IDA7Ci0gCi0gICBpZiAoIU5PVEVfUCAobG9jX25vdGUpKQotICAgICB7Ci0gICAgICAgaWYg KENBTExfUCAobG9jX25vdGUpKQotIAl7Ci0tCSAgUkVTRVRfTkVYVF9WSUVXIChjdXJfbGluZV9p bmZvX3RhYmxlLT52aWV3KTsKLSAJICBjYWxsX3NpdGVfY291bnQrKzsKLSAJICBpZiAoU0lCTElO R19DQUxMX1AgKGxvY19ub3RlKSkKLSAJICAgIHRhaWxfY2FsbF9zaXRlX2NvdW50Kys7Ci1AQCAt MjY5MTcsMTggKzI2Mzk2LDYgQEAgZHdhcmYyb3V0X3Zhcl9sb2NhdGlvbiAocnR4X2luc24gKmxv Y19ubwotIAkJfQotIAkgICAgfQotIAl9Ci0tICAgICAgZWxzZSBpZiAoIWRlYnVnX3ZhcmlhYmxl X2xvY2F0aW9uX3ZpZXdzKQotLQlnY2NfdW5yZWFjaGFibGUgKCk7Ci0tICAgICAgZWxzZSBpZiAo SlVNUF9UQUJMRV9EQVRBX1AgKGxvY19ub3RlKSkKLS0JUkVTRVRfTkVYVF9WSUVXIChjdXJfbGlu ZV9pbmZvX3RhYmxlLT52aWV3KTsKLS0gICAgICBlbHNlIGlmIChHRVRfQ09ERSAobG9jX25vdGUp ID09IFVTRQotLQkgICAgICAgfHwgR0VUX0NPREUgKGxvY19ub3RlKSA9PSBDTE9CQkVSCi0tCSAg ICAgICB8fCBHRVRfQ09ERSAobG9jX25vdGUpID09IEFTTV9JTlBVVAotLQkgICAgICAgfHwgYXNt X25vcGVyYW5kcyAobG9jX25vdGUpID49IDApCi0tCTsKLS0gICAgICBlbHNlIGlmIChnZXRfYXR0 cl9taW5fbGVuZ3RoIChsb2Nfbm90ZSkgPiAwKQotLQlSRVNFVF9ORVhUX1ZJRVcgKGN1cl9saW5l X2luZm9fdGFibGUtPnZpZXcpOwotLQotICAgICAgIHJldHVybjsKLSAgICAgfQotIAotQEAgLTI2 OTUzLDcgKzI2NDIwLDYgQEAgZHdhcmYyb3V0X3Zhcl9sb2NhdGlvbiAocnR4X2luc24gKmxvY19u bwotICAgICAgIHx8ICEgTk9URV9QIChuZXh0X25vdGUpCi0gICAgICAgfHwgKE5PVEVfS0lORCAo bmV4dF9ub3RlKSAhPSBOT1RFX0lOU05fVkFSX0xPQ0FUSU9OCi0gCSAgJiYgTk9URV9LSU5EIChu ZXh0X25vdGUpICE9IE5PVEVfSU5TTl9CRUdJTl9TVE1UCi0tCSAgJiYgTk9URV9LSU5EIChuZXh0 X25vdGUpICE9IE5PVEVfSU5TTl9JTkxJTkVfRU5UUlkKLSAJICAmJiBOT1RFX0tJTkQgKG5leHRf bm90ZSkgIT0gTk9URV9JTlNOX0NBTExfQVJHX0xPQ0FUSU9OKSkKLSAgICAgbmV4dF9ub3RlID0g TlVMTDsKLSAKLUBAIC0yNjk5MywxMSArMjY0NTksMTAgQEAgY3JlYXRlX2xhYmVsOgotIAotICAg aWYgKHZhcl9sb2NfcCkKLSAgICAgewotLSAgICAgIGNvbnN0IGNoYXIgKmxhYmVsCi0tCT0gTk9U RV9EVVJJTkdfQ0FMTF9QIChsb2Nfbm90ZSkgPyBsYXN0X3Bvc3RjYWxsX2xhYmVsIDogbGFzdF9s YWJlbDsKLS0gICAgICB2aWV3ID0gY3VyX2xpbmVfaW5mb190YWJsZS0+dmlldzsKLSAgICAgICBk ZWNsID0gTk9URV9WQVJfTE9DQVRJT05fREVDTCAobG9jX25vdGUpOwotLSAgICAgIG5ld2xvYyA9 IGFkZF92YXJfbG9jX3RvX2RlY2wgKGRlY2wsIGxvY19ub3RlLCBsYWJlbCwgdmlldyk7Ci0rICAg ICAgbmV3bG9jID0gYWRkX3Zhcl9sb2NfdG9fZGVjbCAoZGVjbCwgbG9jX25vdGUsCi0rCQkJCSAg ICBOT1RFX0RVUklOR19DQUxMX1AgKGxvY19ub3RlKQotKwkJCQkgICAgPyBsYXN0X3Bvc3RjYWxs X2xhYmVsIDogbGFzdF9sYWJlbCk7Ci0gICAgICAgaWYgKG5ld2xvYyA9PSBOVUxMKQotIAlyZXR1 cm47Ci0gICAgIH0KLUBAIC0yNzAzOCw4ICsyNjUwMyw4IEBAIGNyZWF0ZV9sYWJlbDoKLSAJCWVs c2UgaWYgKEdFVF9DT0RFIChib2R5KSA9PSBBU01fSU5QVVQKLSAJCQkgfHwgYXNtX25vcGVyYW5k cyAoYm9keSkgPj0gMCkKLSAJCSAgY29udGludWU7Ci0tI2lmZGVmIEhBVkVfQVRUUl9sZW5ndGgg LyogPz8/IFdlIGRvbid0IGluY2x1ZGUgaW5zbi1hdHRyLmguICAqLwotLQkJZWxzZSBpZiAoSEFW RV9BVFRSX2xlbmd0aCAmJiBnZXRfYXR0cl9taW5fbGVuZ3RoIChpbnNuKSA9PSAwKQotKyNpZmRl ZiBIQVZFX2F0dHJfbGVuZ3RoCi0rCQllbHNlIGlmIChnZXRfYXR0cl9taW5fbGVuZ3RoIChpbnNu KSA9PSAwKQotIAkJICBjb250aW51ZTsKLSAjZW5kaWYKLSAJCWVsc2UKLUBAIC0yNzEwNywxMCAr MjY1NzIsNyBAQCBjcmVhdGVfbGFiZWw6Ci0gICAgICAgY2FsbF9hcmdfbG9jX2xhc3QgPSBjYV9s b2M7Ci0gICAgIH0KLSAgIGVsc2UgaWYgKGxvY19ub3RlICE9IE5VTExfUlRYICYmICFOT1RFX0RV UklOR19DQUxMX1AgKGxvY19ub3RlKSkKLS0gICAgewotLSAgICAgIG5ld2xvYy0+bGFiZWwgPSBs YXN0X2xhYmVsOwotLSAgICAgIG5ld2xvYy0+dmlldyA9IHZpZXc7Ci0tICAgIH0KLSsgICAgbmV3 bG9jLT5sYWJlbCA9IGxhc3RfbGFiZWw7Ci0gICBlbHNlCi0gICAgIHsKLSAgICAgICBpZiAoIWxh c3RfcG9zdGNhbGxfbGFiZWwpCi1AQCAtMjcxMTksNyArMjY1ODEsNiBAQCBjcmVhdGVfbGFiZWw6 Ci0gCSAgbGFzdF9wb3N0Y2FsbF9sYWJlbCA9IGdnY19zdHJkdXAgKGxvY2xhYmVsKTsKLSAJfQot ICAgICAgIG5ld2xvYy0+bGFiZWwgPSBsYXN0X3Bvc3RjYWxsX2xhYmVsOwotLSAgICAgIG5ld2xv Yy0+dmlldyA9IHZpZXc7Ci0gICAgIH0KLSAKLSAgIGlmICh2YXJfbG9jX3AgJiYgZmxhZ19kZWJ1 Z19hc20pCi1AQCAtMjcxNDcsMTEzICsyNjYwOCw2IEBAIGNyZWF0ZV9sYWJlbDoKLSAgIGxhc3Rf aW5fY29sZF9zZWN0aW9uX3AgPSBpbl9jb2xkX3NlY3Rpb25fcDsKLSB9Ci0gCi0tLyogQ2hlY2sg d2hldGhlciBCTE9DSywgYSBsZXhpY2FsIGJsb2NrLCBpcyBuZXN0ZWQgd2l0aGluIE9VVEVSLCBv ciBpcwotLSAgIE9VVEVSIGl0c2VsZi4gIElmIEJPVEhXQVlTLCBjaGVjayBub3Qgb25seSB0aGF0 IEJMT0NLIGNhbiByZWFjaAotLSAgIE9VVEVSIHRocm91Z2ggQkxPQ0tfU1VQRVJDT05URVhUIGxp bmtzLCBidXQgYWxzbyB0aGF0IHRoZXJlIGlzIGEKLS0gICBwYXRoIGZyb20gT1VURVIgdG8gQkxP Q0sgdGhyb3VnaCBCTE9DS19TVUJCTE9DS3MgYW5kCi0tICAgQkxPQ0tfRlJBR01FTlRfT1JJR0lO IGxpbmtzLiAgKi8KLS1zdGF0aWMgYm9vbAotLWJsb2NrX3dpdGhpbl9ibG9ja19wICh0cmVlIGJs b2NrLCB0cmVlIG91dGVyLCBib29sIGJvdGh3YXlzKQotLXsKLS0gIGlmIChibG9jayA9PSBvdXRl cikKLS0gICAgcmV0dXJuIHRydWU7Ci0tCi0tICAvKiBRdWlja2x5IGNoZWNrIHRoYXQgT1VURVIg aXMgdXAgQkxPQ0sncyBzdXBlcmNvbnRleHQgY2hhaW4uICAqLwotLSAgZm9yICh0cmVlIGNvbnRl eHQgPSBCTE9DS19TVVBFUkNPTlRFWFQgKGJsb2NrKTsKLS0gICAgICAgY29udGV4dCAhPSBvdXRl cjsKLS0gICAgICAgY29udGV4dCA9IEJMT0NLX1NVUEVSQ09OVEVYVCAoY29udGV4dCkpCi0tICAg IGlmICghY29udGV4dCB8fCBUUkVFX0NPREUgKGNvbnRleHQpICE9IEJMT0NLKQotLSAgICAgIHJl dHVybiBmYWxzZTsKLS0KLS0gIGlmICghYm90aHdheXMpCi0tICAgIHJldHVybiB0cnVlOwotLQot LSAgLyogTm93IGNoZWNrIHRoYXQgZWFjaCBibG9jayBpcyBhY3R1YWxseSByZWZlcmVuY2VkIGJ5 IGl0cwotLSAgICAgcGFyZW50LiAgKi8KLS0gIGZvciAodHJlZSBjb250ZXh0ID0gQkxPQ0tfU1VQ RVJDT05URVhUIChibG9jayk7IDsKLS0gICAgICAgY29udGV4dCA9IEJMT0NLX1NVUEVSQ09OVEVY VCAoY29udGV4dCkpCi0tICAgIHsKLS0gICAgICBpZiAoQkxPQ0tfRlJBR01FTlRfT1JJR0lOIChj b250ZXh0KSkKLS0JewotLQkgIGdjY19hc3NlcnQgKCFCTE9DS19TVUJCTE9DS1MgKGNvbnRleHQp KTsKLS0JICBjb250ZXh0ID0gQkxPQ0tfRlJBR01FTlRfT1JJR0lOIChjb250ZXh0KTsKLS0JfQot LSAgICAgIGZvciAodHJlZSBzdWIgPSBCTE9DS19TVUJCTE9DS1MgKGNvbnRleHQpOwotLQkgICBz dWIgIT0gYmxvY2s7Ci0tCSAgIHN1YiA9IEJMT0NLX0NIQUlOIChzdWIpKQotLQlpZiAoIXN1YikK LS0JICByZXR1cm4gZmFsc2U7Ci0tICAgICAgaWYgKGNvbnRleHQgPT0gb3V0ZXIpCi0tCXJldHVy biB0cnVlOwotLSAgICAgIGVsc2UKLS0JYmxvY2sgPSBjb250ZXh0OwotLSAgICB9Ci0tfQotLQot LS8qIENhbGxlZCBkdXJpbmcgZmluYWwgd2hpbGUgYXNzZW1ibGluZyB0aGUgbWFya2VyIG9mIHRo ZSBlbnRyeSBwb2ludAotLSAgIGZvciBhbiBpbmxpbmVkIGZ1bmN0aW9uLiAgKi8KLS0KLS1zdGF0 aWMgdm9pZAotLWR3YXJmMm91dF9pbmxpbmVfZW50cnkgKHRyZWUgYmxvY2spCi0tewotLSAgLyog SWYgd2UgY2FuJ3QgcmVwcmVzZW50IGl0LCBkb24ndCBib3RoZXIuICAqLwotLSAgaWYgKCEoZHdh cmZfdmVyc2lvbiA+PSAzIHx8ICFkd2FyZl9zdHJpY3QpKQotLSAgICByZXR1cm47Ci0tCi0tICBn Y2NfYXNzZXJ0IChERUNMX1AgKGJsb2NrX3VsdGltYXRlX29yaWdpbiAoYmxvY2spKSk7Ci0tCi0t ICAvKiBTYW5pdHkgY2hlY2sgdGhlIGJsb2NrIHRyZWUuICBUaGlzIHdvdWxkIGNhdGNoIGEgY2Fz ZSBpbiB3aGljaAotLSAgICAgQkxPQ0sgZ290IHJlbW92ZWQgZnJvbSB0aGUgdHJlZSByZWFjaGFi bGUgZnJvbSB0aGUgb3V0ZXJtb3N0Ci0tICAgICBsZXhpY2FsIGJsb2NrLCBidXQgZ290IHJldGFp bmVkIGluIG1hcmtlcnMuICBJdCB3b3VsZCBzdGlsbCBsaW5rCi0tICAgICBiYWNrIHRvIGl0cyBw YXJlbnRzLCBidXQgc29tZSBhbmNlc3RvciB3b3VsZCBiZSBtaXNzaW5nIGEgbGluawotLSAgICAg ZG93biB0aGUgcGF0aCB0byB0aGUgc3ViIEJMT0NLLiAgSWYgdGhlIGJsb2NrIGdvdCByZW1vdmVk LCBpdHMKLS0gICAgIEJMT0NLX05VTUJFUiB3aWxsIG5vdCBiZSBhIHVzYWJsZSB2YWx1ZS4gICov Ci0tICBpZiAoZmxhZ19jaGVja2luZykKLS0gICAgZ2NjX2Fzc2VydCAoYmxvY2tfd2l0aGluX2Js b2NrX3AgKGJsb2NrLAotLQkJCQkgICAgICBERUNMX0lOSVRJQUwgKGN1cnJlbnRfZnVuY3Rpb25f ZGVjbCksCi0tCQkJCSAgICAgIHRydWUpKTsKLS0KLS0gIGdjY19hc3NlcnQgKGlubGluZWRfZnVu Y3Rpb25fb3V0ZXJfc2NvcGVfcCAoYmxvY2spKTsKLS0gIGdjY19hc3NlcnQgKCFCTE9DS19ESUUg KGJsb2NrKSk7Ci0tCi0tICBpZiAoQkxPQ0tfRlJBR01FTlRfT1JJR0lOIChibG9jaykpCi0tICAg IGJsb2NrID0gQkxPQ0tfRlJBR01FTlRfT1JJR0lOIChibG9jayk7Ci0tICAvKiBDYW4gdGhlIGVu dHJ5IHBvaW50IGV2ZXIgbm90IGJlIGF0IHRoZSBiZWdpbm5pbmcgb2YgYW4KLS0gICAgIHVuZnJh Z21lbnRlZCBsZXhpY2FsIGJsb2NrPyAgKi8KLS0gIGVsc2UgaWYgKCEoQkxPQ0tfRlJBR01FTlRf Q0hBSU4gKGJsb2NrKQotLQkgICAgIHx8IChjdXJfbGluZV9pbmZvX3RhYmxlCi0tCQkgJiYgIVpF Uk9fVklFV19QIChjdXJfbGluZV9pbmZvX3RhYmxlLT52aWV3KSkpKQotLSAgICByZXR1cm47Ci0t Ci0tICBpZiAoIWlubGluZV9lbnRyeV9kYXRhX3RhYmxlKQotLSAgICBpbmxpbmVfZW50cnlfZGF0 YV90YWJsZQotLSAgICAgID0gaGFzaF90YWJsZTxpbmxpbmVfZW50cnlfZGF0YV9oYXNoZXI+Ojpj cmVhdGVfZ2djICgxMCk7Ci0tCi0tCi0tICBpbmxpbmVfZW50cnlfZGF0YSAqKmllZHAKLS0gICAg PSBpbmxpbmVfZW50cnlfZGF0YV90YWJsZS0+ZmluZF9zbG90X3dpdGhfaGFzaCAoYmxvY2ssCi0t CQkJCQkJICAgIGh0YWJfaGFzaF9wb2ludGVyIChibG9jayksCi0tCQkJCQkJICAgIElOU0VSVCk7 Ci0tICBpZiAoKmllZHApCi0tICAgIC8qID8/PyBJZGVhbGx5LCB3ZSdkIHJlY29yZCBhbGwgZW50 cnkgcG9pbnRzIGZvciB0aGUgc2FtZSBpbmxpbmVkCi0tICAgICAgIGZ1bmN0aW9uIChzb21lIG1h eSBoYXZlIGJlZW4gZHVwbGljYXRlZCBieSBlLmcuIHVucm9sbGluZyksIGJ1dAotLSAgICAgICB3 ZSBoYXZlIG5vIHdheSB0byByZXByZXNlbnQgdGhhdCBBVE0uICAqLwotLSAgICByZXR1cm47Ci0t Ci0tICBpbmxpbmVfZW50cnlfZGF0YSAqaWVkID0gKmllZHAgPSBnZ2NfY2xlYXJlZF9hbGxvYzxp bmxpbmVfZW50cnlfZGF0YT4gKCk7Ci0tICBpZWQtPmJsb2NrID0gYmxvY2s7Ci0tICBpZWQtPmxh YmVsX3BmeCA9IEJMT0NLX0lOTElORV9FTlRSWV9MQUJFTDsKLS0gIGllZC0+bGFiZWxfbnVtID0g QkxPQ0tfTlVNQkVSIChibG9jayk7Ci0tICBpZiAoY3VyX2xpbmVfaW5mb190YWJsZSkKLS0gICAg aWVkLT52aWV3ID0gY3VyX2xpbmVfaW5mb190YWJsZS0+dmlldzsKLS0KLS0gIGNoYXIgbGFiZWxb TUFYX0FSVElGSUNJQUxfTEFCRUxfQllURVNdOwotLQotLSAgQVNNX0dFTkVSQVRFX0lOVEVSTkFM X0xBQkVMIChsYWJlbCwgQkxPQ0tfSU5MSU5FX0VOVFJZX0xBQkVMLAotLQkJCSAgICAgICBCTE9D S19OVU1CRVIgKGJsb2NrKSk7Ci0tICBBU01fT1VUUFVUX0xBQkVMIChhc21fb3V0X2ZpbGUsIGxh YmVsKTsKLS19Ci0tCi0gLyogQ2FsbGVkIGZyb20gZmluYWxpemVfc2l6ZV9mdW5jdGlvbnMgZm9y IHNpemUgZnVuY3Rpb25zIHNvIHRoYXQgdGhlaXIgYm9keQotICAgIGNhbiBiZSBlbmNvZGVkIGlu IHRoZSBkZWJ1ZyBpbmZvIHRvIGRlc2NyaWJlIHRoZSBsYXlvdXQgb2YgdmFyaWFibGUtbGVuZ3Ro Ci0gICAgc3RydWN0dXJlcy4gICovCi1AQCAtMjcyOTgsNyArMjY2NTIsNiBAQCBuZXdfbGluZV9p bmZvX3RhYmxlICh2b2lkKQotICAgdGFibGUtPmZpbGVfbnVtID0gMTsKLSAgIHRhYmxlLT5saW5l X251bSA9IDE7Ci0gICB0YWJsZS0+aXNfc3RtdCA9IERXQVJGX0xJTkVfREVGQVVMVF9JU19TVE1U X1NUQVJUOwotLSAgUkVTRVRfTkVYVF9WSUVXICh0YWJsZS0+dmlldyk7Ci0gCi0gICByZXR1cm4g dGFibGU7Ci0gfQotQEAgLTI3MzQ3LDcgKzI2NzAwLDcgQEAgc2V0X2N1cl9saW5lX2luZm9fdGFi bGUgKHNlY3Rpb24gKnNlYykKLSAgICAgICB2ZWNfc2FmZV9wdXNoIChzZXBhcmF0ZV9saW5lX2lu Zm8sIHRhYmxlKTsKLSAgICAgfQotIAotLSAgaWYgKG91dHB1dF9hc21fbGluZV9kZWJ1Z19pbmZv ICgpKQotKyAgaWYgKERXQVJGMl9BU01fTElORV9ERUJVR19JTkZPKQotICAgICB0YWJsZS0+aXNf c3RtdCA9IChjdXJfbGluZV9pbmZvX3RhYmxlCi0gCQkgICAgICA/IGN1cl9saW5lX2luZm9fdGFi bGUtPmlzX3N0bXQKLSAJCSAgICAgIDogRFdBUkZfTElORV9ERUZBVUxUX0lTX1NUTVRfU1RBUlQp OwotQEAgLTI3NTI4LDcgKzI2ODgxLDcgQEAgZHdhcmYyb3V0X3NvdXJjZV9saW5lICh1bnNpZ25l ZCBpbnQgbGluZQotIAkJIGZpbGVuYW1lLCBsaW5lKTsKLSAgICAgfQotIAotLSAgaWYgKG91dHB1 dF9hc21fbGluZV9kZWJ1Z19pbmZvICgpKQotKyAgaWYgKERXQVJGMl9BU01fTElORV9ERUJVR19J TkZPKQotICAgICB7Ci0gICAgICAgLyogRW1pdCB0aGUgLmxvYyBkaXJlY3RpdmUgdW5kZXJzdG9v ZCBieSBHTlUgYXMuICAqLwotICAgICAgIC8qICJcdC5sb2MgJXUgJXUgMCBpc19zdG10ICV1IGRp c2NyaW1pbmF0b3IgJXUiLAotQEAgLTI3NTUxLDUwICsyNjkwNCw2IEBAIGR3YXJmMm91dF9zb3Vy Y2VfbGluZSAodW5zaWduZWQgaW50IGxpbmUKLSAJICBmcHV0cyAoIiBkaXNjcmltaW5hdG9yICIs IGFzbV9vdXRfZmlsZSk7Ci0gCSAgZnByaW50X3VsIChhc21fb3V0X2ZpbGUsICh1bnNpZ25lZCBs b25nKSBkaXNjcmltaW5hdG9yKTsKLSAJfQotLSAgICAgIGlmIChkZWJ1Z192YXJpYWJsZV9sb2Nh dGlvbl92aWV3cykKLS0JewotLQkgIHN0YXRpYyB2YXJfbG9jX3ZpZXcgbHZ1Z2lkOwotLQkgIGlm ICghbHZ1Z2lkKQotLQkgICAgewotLQkgICAgICBnY2NfYXNzZXJ0ICghemVyb192aWV3X3ApOwot LQkgICAgICB6ZXJvX3ZpZXdfcCA9IEJJVE1BUF9HR0NfQUxMT0MgKCk7Ci0tCSAgICAgIGJpdG1h cF9zZXRfYml0ICh6ZXJvX3ZpZXdfcCwgMCk7Ci0tCSAgICB9Ci0tCSAgaWYgKCFSRVNFVFRJTkdf VklFV19QICh0YWJsZS0+dmlldykpCi0tCSAgICB7Ci0tCSAgICAgIC8qIFdoZW4gd2UncmUgdXNp bmcgdGhlIGFzc2VtYmxlciB0byBjb21wdXRlIHZpZXcKLS0JCSBudW1iZXJzLCB3ZSBvdXRwdXQg c3ltYm9saWMgbGFiZWxzIGFmdGVyICJ2aWV3IiBpbgotLQkJIC5sb2MgZGlyZWN0aXZlcywgYW5k IHRoZSBhc3NlbWJsZXIgd2lsbCBzZXQgdGhlbSBmb3IKLS0JCSB1cywgc28gdGhhdCB3ZSBjYW4g cmVmZXIgdG8gdGhlIHZpZXcgbnVtYmVycyBpbgotLQkJIGxvY2F0aW9uIGxpc3RzLiAgVGhlIG9u bHkgZXhjZXB0aW9ucyBhcmUgd2hlbiB3ZSBrbm93Ci0tCQkgYSB2aWV3IHdpbGwgYmUgemVybzog Ii0wIiBpcyBhIGZvcmNlZCByZXNldCwgdXNlZAotLQkJIGUuZy4gaW4gdGhlIGJlZ2lubmluZyBv ZiBmdW5jdGlvbnMsIHdoZXJlYXMgIjAiIHRlbGxzCi0tCQkgdGhlIGFzc2VtYmxlciB0byBjaGVj ayB0aGF0IHRoZXJlIHdhcyBhIFBDIGNoYW5nZQotLQkJIHNpbmNlIHRoZSBwcmV2aW91cyB2aWV3 LCBpbiBhIHdheSB0aGF0IGltcGxpY2l0bHkKLS0JCSByZXNldHMgdGhlIG5leHQgdmlldy4gICov Ci0tCSAgICAgIGZwdXRzICgiIHZpZXcgIiwgYXNtX291dF9maWxlKTsKLS0JICAgICAgY2hhciBs YWJlbFtNQVhfQVJUSUZJQ0lBTF9MQUJFTF9CWVRFU107Ci0tCSAgICAgIEFTTV9HRU5FUkFURV9J TlRFUk5BTF9MQUJFTCAobGFiZWwsICJMVlUiLCB0YWJsZS0+dmlldyk7Ci0tCSAgICAgIGFzc2Vt YmxlX25hbWUgKGFzbV9vdXRfZmlsZSwgbGFiZWwpOwotLQkgICAgICB0YWJsZS0+dmlldyA9ICsr bHZ1Z2lkOwotLQkgICAgfQotLQkgIGVsc2UKLS0JICAgIHsKLS0JICAgICAgaWYgKCF0YWJsZS0+ aW5fdXNlKQotLQkJZnB1dHMgKCIgdmlldyAtMCIsIGFzbV9vdXRfZmlsZSk7Ci0tCSAgICAgIGVs c2UKLS0JCWZwdXRzICgiIHZpZXcgMCIsIGFzbV9vdXRfZmlsZSk7Ci0tCSAgICAgIC8qIE1hcmsg dGhlIHByZXNlbnQgdmlldyBhcyBhIHplcm8gdmlldy4gIEVhcmxpZXIgZGVidWcKLS0JCSBiaW5k cyBtYXkgaGF2ZSBhbHJlYWR5IGFkZGVkIGl0cyBpZCB0byBsb2NsaXN0cyB0byBiZQotLQkJIGVt aXR0ZWQgbGF0ZXIsIHNvIHdlIGNhbid0IHJldXNlIHRoZSBpZCBmb3Igc29tZXRoaW5nCi0tCQkg ZWxzZS4gIEhvd2V2ZXIsIGl0J3MgZ29vZCB0byBrbm93IHdoZXRoZXIgYSB2aWV3IGlzCi0tCQkg a25vd24gdG8gYmUgemVybywgYmVjYXVzZSB0aGVuIHdlIG1heSBiZSBhYmxlIHRvCi0tCQkgb3B0 aW1pemUgb3V0IGxvY3ZpZXdzIHRoYXQgYXJlIGFsbCB6ZXJvcywgc28gdGFrZQotLQkJIG5vdGUg b2YgaXQgaW4gemVyb192aWV3X3AuICAqLwotLQkgICAgICBiaXRtYXBfc2V0X2JpdCAoemVyb192 aWV3X3AsIGx2dWdpZCk7Ci0tCSAgICAgIHRhYmxlLT52aWV3ID0gKytsdnVnaWQ7Ci0tCSAgICB9 Ci0tCX0KLSAgICAgICBwdXRjICgnXG4nLCBhc21fb3V0X2ZpbGUpOwotICAgICB9Ci0gICBlbHNl Ci1AQCAtMjc2MDMsMTkgKzI2OTEyLDcgQEAgZHdhcmYyb3V0X3NvdXJjZV9saW5lICh1bnNpZ25l ZCBpbnQgbGluZQotIAotICAgICAgIHRhcmdldG0uYXNtX291dC5pbnRlcm5hbF9sYWJlbCAoYXNt X291dF9maWxlLCBMSU5FX0NPREVfTEFCRUwsIGxhYmVsX251bSk7Ci0gCi0tICAgICAgaWYgKGRl YnVnX3ZhcmlhYmxlX2xvY2F0aW9uX3ZpZXdzICYmIHRhYmxlLT52aWV3KQotLQlwdXNoX2R3X2xp bmVfaW5mb19lbnRyeSAodGFibGUsIExJX2Fkdl9hZGRyZXNzLCBsYWJlbF9udW0pOwotLSAgICAg IGVsc2UKLS0JcHVzaF9kd19saW5lX2luZm9fZW50cnkgKHRhYmxlLCBMSV9zZXRfYWRkcmVzcywg bGFiZWxfbnVtKTsKLS0gICAgICBpZiAoZGVidWdfdmFyaWFibGVfbG9jYXRpb25fdmlld3MpCi0t CXsKLS0JICBpZiAoZmxhZ19kZWJ1Z19hc20pCi0tCSAgICBmcHJpbnRmIChhc21fb3V0X2ZpbGUs ICJcdCVzIHZpZXcgJXMlZFxuIiwKLS0JCSAgICAgQVNNX0NPTU1FTlRfU1RBUlQsCi0tCQkgICAg IHRhYmxlLT5pbl91c2UgPyAiIiA6ICItIiwKLS0JCSAgICAgdGFibGUtPnZpZXcpOwotLQkgIHRh YmxlLT52aWV3Kys7Ci0tCX0KLSsgICAgICBwdXNoX2R3X2xpbmVfaW5mb19lbnRyeSAodGFibGUs IExJX3NldF9hZGRyZXNzLCBsYWJlbF9udW0pOwotICAgICAgIGlmIChmaWxlX251bSAhPSB0YWJs ZS0+ZmlsZV9udW0pCi0gCXB1c2hfZHdfbGluZV9pbmZvX2VudHJ5ICh0YWJsZSwgTElfc2V0X2Zp bGUsIGZpbGVfbnVtKTsKLSAgICAgICBpZiAoZGlzY3JpbWluYXRvciAhPSB0YWJsZS0+ZGlzY3Jp bV9udW0pCi1AQCAtMjgyOTEsMTAgKzI3NTg4LDkgQEAgaW5pdF9zZWN0aW9uc19hbmRfbGFiZWxz IChib29sIGVhcmx5X2x0bwotIAkJCQkJICAgIFNFQ1RJT05fREVCVUcsIE5VTEwpOwotICAgICAg IGRlYnVnX3N0cl9zZWN0aW9uID0gZ2V0X3NlY3Rpb24gKERFQlVHX1NUUl9TRUNUSU9OLAotIAkJ CQkgICAgICAgREVCVUdfU1RSX1NFQ1RJT05fRkxBR1MsIE5VTEwpOwotLSAgICAgIGlmICghZHdh cmZfc3BsaXRfZGVidWdfaW5mbyAmJiAhb3V0cHV0X2FzbV9saW5lX2RlYnVnX2luZm8gKCkpCi0r ICAgICAgaWYgKCFkd2FyZl9zcGxpdF9kZWJ1Z19pbmZvICYmICFEV0FSRjJfQVNNX0xJTkVfREVC VUdfSU5GTykKLSAJZGVidWdfbGluZV9zdHJfc2VjdGlvbiA9IGdldF9zZWN0aW9uIChERUJVR19M SU5FX1NUUl9TRUNUSU9OLAotIAkJCQkJICAgICAgREVCVUdfU1RSX1NFQ1RJT05fRkxBR1MsIE5V TEwpOwotLQotICAgICAgIGRlYnVnX3Jhbmdlc19zZWN0aW9uID0gZ2V0X3NlY3Rpb24gKGR3YXJm X3ZlcnNpb24gPj0gNQotIAkJCQkJICA/IERFQlVHX1JOR0xJU1RTX1NFQ1RJT04KLSAJCQkJCSAg OiBERUJVR19SQU5HRVNfU0VDVElPTiwKLUBAIC0yODY4MCwxMSArMjc5NzYsNiBAQCBwcnVuZV91 bnVzZWRfdHlwZXNfd2Fsa19hdHRyaWJzIChkd19kaWVfCi0gCSAgICBwcnVuZV91bnVzZWRfdHlw ZXNfd2Fsa19sb2NfZGVzY3IgKGxpc3QtPmV4cHIpOwotIAkgIGJyZWFrOwotIAotLQljYXNlIGR3 X3ZhbF9jbGFzc192aWV3X2xpc3Q6Ci0tCSAgLyogVGhpcyBwb2ludHMgdG8gYSBsb2NfbGlzdCBp biBhbm90aGVyIGF0dHJpYnV0ZSwgc28gaXQncwotLQkgICAgIGFscmVhZHkgY292ZXJlZC4gICov Ci0tCSAgYnJlYWs7Ci0tCi0gCWNhc2UgZHdfdmFsX2NsYXNzX2RpZV9yZWY6Ci0gCSAgLyogQSBy ZWZlcmVuY2UgdG8gYW5vdGhlciBESUUuCi0gCSAgICAgTWFrZSBzdXJlIHRoYXQgaXQgd2lsbCBn ZXQgZW1pdHRlZC4KLUBAIC0yOTc4NCw4ICsyOTA3NSw2IEBAIG9wdGltaXplX3N0cmluZ19sZW5n dGggKGR3X2F0dHJfbm9kZSAqYSkKLSAJaWYgKGQtPmV4cHIgJiYgbm9uX2R3YXJmX2V4cHJlc3Np b24gKGQtPmV4cHIpKQotIAkgIG5vbl9kd2FyZl9leHByID0gdHJ1ZTsKLSAgICAgICBicmVhazsK LS0gICAgY2FzZSBkd192YWxfY2xhc3Nfdmlld19saXN0OgotLSAgICAgIGdjY191bnJlYWNoYWJs ZSAoKTsKLSAgICAgY2FzZSBkd192YWxfY2xhc3NfbG9jOgotICAgICAgIGx2ID0gQVRfbG9jIChh dik7Ci0gICAgICAgaWYgKGx2ID09IE5VTEwpCi1AQCAtMjk4MzAsNyArMjkxMTksNyBAQCBvcHRp bWl6ZV9zdHJpbmdfbGVuZ3RoIChkd19hdHRyX25vZGUgKmEpCi0gCSAgbHYgPSBjb3B5X2RlcmVm X2V4cHJsb2MgKGQtPmV4cHIpOwotIAkgIGlmIChsdikKLSAJICAgIHsKLS0JICAgICAgKnAgPSBu ZXdfbG9jX2xpc3QgKGx2LCBkLT5iZWdpbiwgZC0+dmJlZ2luLCBkLT5lbmQsIGQtPnZlbmQsIGQt PnNlY3Rpb24pOwotKwkgICAgICAqcCA9IG5ld19sb2NfbGlzdCAobHYsIGQtPmJlZ2luLCBkLT5l bmQsIGQtPnNlY3Rpb24pOwotIAkgICAgICBwID0gJigqcCktPmR3X2xvY19uZXh0OwotIAkgICAg fQotIAkgIGVsc2UgaWYgKCFkd2FyZl9zdHJpY3QgJiYgZC0+ZXhwcikKLUBAIC0yOTkwMCw3ICsy OTE4OSw2IEBAIHJlc29sdmVfYWRkciAoZHdfZGllX3JlZiBkaWUpCi0gCQkgICAgICB7Ci0gCQkJ Z2NjX2Fzc2VydCAoIW5leHQtPmxsX3N5bWJvbCk7Ci0gCQkJbmV4dC0+bGxfc3ltYm9sID0gKCpj dXJyKS0+bGxfc3ltYm9sOwotLQkJCW5leHQtPnZsX3N5bWJvbCA9ICgqY3VyciktPnZsX3N5bWJv bDsKLSAJCSAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgIGlmIChkd2FyZl9zcGxpdF9kZWJ1 Z19pbmZvKQotICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVfbG9jX2xpc3RfYWRkcl90YWJs ZV9lbnRyaWVzIChsKTsKLUBAIC0yOTkyNiwyMSArMjkyMTQsNiBAQCByZXNvbHZlX2FkZHIgKGR3 X2RpZV9yZWYgZGllKQotIAkgICAgaXgtLTsKLSAJICB9Ci0gCWJyZWFrOwotLSAgICAgIGNhc2Ug ZHdfdmFsX2NsYXNzX3ZpZXdfbGlzdDoKLS0JewotLQkgIGdjY19jaGVja2luZ19hc3NlcnQgKGEt PmR3X2F0dHIgPT0gRFdfQVRfR05VX2xvY3ZpZXdzKTsKLS0JICBnY2NfY2hlY2tpbmdfYXNzZXJ0 IChkd2FyZjJvdXRfbG9jdmlld3NfaW5fYXR0cmlidXRlICgpKTsKLS0JICBkd192YWxfbm9kZSAq bGxub2RlCi0tCSAgICA9IHZpZXdfbGlzdF90b19sb2NfbGlzdF92YWxfbm9kZSAoJmEtPmR3X2F0 dHJfdmFsKTsKLS0JICAvKiBJZiB3ZSBubyBsb25nZXIgaGF2ZSBhIGxvY2xpc3QsIG9yIGl0IG5v IGxvbmdlciBuZWVkcwotLQkgICAgIHZpZXdzLCBkcm9wIHRoaXMgYXR0cmlidXRlLiAgKi8KLS0J ICBpZiAoIWxsbm9kZSB8fCAhbGxub2RlLT52LnZhbF9sb2NfbGlzdC0+dmxfc3ltYm9sKQotLQkg ICAgewotLQkgICAgICByZW1vdmVfQVQgKGRpZSwgYS0+ZHdfYXR0cik7Ci0tCSAgICAgIGl4LS07 Ci0tCSAgICB9Ci0tCSAgYnJlYWs7Ci0tCX0KLSAgICAgICBjYXNlIGR3X3ZhbF9jbGFzc19sb2M6 Ci0gCXsKLSAJICBkd19sb2NfZGVzY3JfcmVmIGwgPSBBVF9sb2MgKGEpOwotQEAgLTMwMzM3LDgg KzI5NjEwLDYgQEAgaGFzaF9sb2NfbGlzdCAoZHdfbG9jX2xpc3RfcmVmIGxpc3RfaGVhZAotICAg ICB7Ci0gICAgICAgaHN0YXRlLmFkZCAoY3Vyci0+YmVnaW4sIHN0cmxlbiAoY3Vyci0+YmVnaW4p ICsgMSk7Ci0gICAgICAgaHN0YXRlLmFkZCAoY3Vyci0+ZW5kLCBzdHJsZW4gKGN1cnItPmVuZCkg KyAxKTsKLS0gICAgICBoc3RhdGUuYWRkX29iamVjdCAoY3Vyci0+dmJlZ2luKTsKLS0gICAgICBo c3RhdGUuYWRkX29iamVjdCAoY3Vyci0+dmVuZCk7Ci0gICAgICAgaWYgKGN1cnItPnNlY3Rpb24p Ci0gCWhzdGF0ZS5hZGQgKGN1cnItPnNlY3Rpb24sIHN0cmxlbiAoY3Vyci0+c2VjdGlvbikgKyAx KTsKLSAgICAgICBoYXNoX2xvY3MgKGN1cnItPmV4cHIsIGhzdGF0ZSk7Ci1AQCAtMzA1NjAsNyAr Mjk4MzEsNiBAQCBsb2NfbGlzdF9oYXNoZXI6OmVxdWFsIChjb25zdCBkd19sb2NfbGlzCi0gCXx8 IHN0cmNtcCAoYS0+ZW5kLCBiLT5lbmQpICE9IDAKLSAJfHwgKGEtPnNlY3Rpb24gPT0gTlVMTCkg IT0gKGItPnNlY3Rpb24gPT0gTlVMTCkKLSAJfHwgKGEtPnNlY3Rpb24gJiYgc3RyY21wIChhLT5z ZWN0aW9uLCBiLT5zZWN0aW9uKSAhPSAwKQotLQl8fCBhLT52YmVnaW4gIT0gYi0+dmJlZ2luIHx8 IGEtPnZlbmQgIT0gYi0+dmVuZAotIAl8fCAhY29tcGFyZV9sb2NzIChhLT5leHByLCBiLT5leHBy KSkKLSAgICAgICBicmVhazsKLSAgIHJldHVybiBhID09IE5VTEwgJiYgYiA9PSBOVUxMOwotQEAg LTMwNTc5LDggKzI5ODQ5LDYgQEAgb3B0aW1pemVfbG9jYXRpb25fbGlzdHNfMSAoZHdfZGllX3Jl ZiBkaQotICAgZHdfYXR0cl9ub2RlICphOwotICAgdW5zaWduZWQgaXg7Ci0gICBkd19sb2NfbGlz dF9zdHJ1Y3QgKipzbG90OwotLSAgYm9vbCBkcm9wX2xvY3ZpZXdzID0gZmFsc2U7Ci0tICBib29s IGhhc19sb2N2aWV3cyA9IGZhbHNlOwotIAotICAgRk9SX0VBQ0hfVkVDX1NBRkVfRUxUIChkaWUt PmRpZV9hdHRyLCBpeCwgYSkKLSAgICAgaWYgKEFUX2NsYXNzIChhKSA9PSBkd192YWxfY2xhc3Nf bG9jX2xpc3QpCi1AQCAtMzA1OTEsMzMgKzI5ODU5LDExIEBAIG9wdGltaXplX2xvY2F0aW9uX2xp c3RzXzEgKGR3X2RpZV9yZWYgZGkKLSAJaGFzaF9sb2NfbGlzdCAobGlzdCk7Ci0gCXNsb3QgPSBo dGFiLT5maW5kX3Nsb3Rfd2l0aF9oYXNoIChsaXN0LCBsaXN0LT5oYXNoLCBJTlNFUlQpOwotIAlp ZiAoKnNsb3QgPT0gTlVMTCkKLS0JICB7Ci0tCSAgICAqc2xvdCA9IGxpc3Q7Ci0tCSAgICBpZiAo bG9jX2xpc3RfaGFzX3ZpZXdzIChsaXN0KSkKLS0JICAgICAgZ2NjX2Fzc2VydCAobGlzdC0+dmxf c3ltYm9sKTsKLS0JICAgIGVsc2UgaWYgKGxpc3QtPnZsX3N5bWJvbCkKLS0JICAgICAgewotLQkJ ZHJvcF9sb2N2aWV3cyA9IHRydWU7Ci0tCQlsaXN0LT52bF9zeW1ib2wgPSBOVUxMOwotLQkgICAg ICB9Ci0tCSAgfQotKwkgICpzbG90ID0gbGlzdDsKLSAJZWxzZQotLQkgIHsKLS0JICAgIGlmIChs aXN0LT52bF9zeW1ib2wgJiYgISgqc2xvdCktPnZsX3N5bWJvbCkKLS0JICAgICAgZHJvcF9sb2N2 aWV3cyA9IHRydWU7Ci0tCSAgICBhLT5kd19hdHRyX3ZhbC52LnZhbF9sb2NfbGlzdCA9ICpzbG90 OwotLQkgIH0KLS0gICAgICB9Ci0tICAgIGVsc2UgaWYgKEFUX2NsYXNzIChhKSA9PSBkd192YWxf Y2xhc3Nfdmlld19saXN0KQotLSAgICAgIHsKLS0JZ2NjX2NoZWNraW5nX2Fzc2VydCAoYS0+ZHdf YXR0ciA9PSBEV19BVF9HTlVfbG9jdmlld3MpOwotLQloYXNfbG9jdmlld3MgPSB0cnVlOwotKyAg ICAgICAgICBhLT5kd19hdHRyX3ZhbC52LnZhbF9sb2NfbGlzdCA9ICpzbG90OwotICAgICAgIH0K LSAKLS0KLS0gIGlmIChkcm9wX2xvY3ZpZXdzICYmIGhhc19sb2N2aWV3cykKLS0gICAgcmVtb3Zl X0FUIChkaWUsIERXX0FUX0dOVV9sb2N2aWV3cyk7Ci0tCi0gICBGT1JfRUFDSF9DSElMRCAoZGll LCBjLCBvcHRpbWl6ZV9sb2NhdGlvbl9saXN0c18xIChjLCBodGFiKSk7Ci0gfQotIAotQEAgLTMw NjQyLDcgKzI5ODg4LDcgQEAgaW5kZXhfbG9jYXRpb25fbGlzdHMgKGR3X2RpZV9yZWYgZGllKQot ICAgICAgICAgICAgIC8qIERvbid0IGluZGV4IGFuIGVudHJ5IHRoYXQgaGFzIGFscmVhZHkgYmVl biBpbmRleGVkCi0gICAgICAgICAgICAgICAgb3Igd29uJ3QgYmUgb3V0cHV0LiAgKi8KLSAgICAg ICAgICAgICBpZiAoY3Vyci0+YmVnaW5fZW50cnkgIT0gTlVMTAotLSAgICAgICAgICAgICAgICB8 fCBza2lwX2xvY19saXN0X2VudHJ5IChjdXJyKSkKLSsgICAgICAgICAgICAgICAgfHwgKHN0cmNt cCAoY3Vyci0+YmVnaW4sIGN1cnItPmVuZCkgPT0gMCAmJiAhY3Vyci0+Zm9yY2UpKQotICAgICAg ICAgICAgICAgY29udGludWU7Ci0gCi0gICAgICAgICAgICAgY3Vyci0+YmVnaW5fZW50cnkKLUBA IC0zMDc1MCw5ICsyOTk5Niw2IEBAIGR3YXJmMm91dF9maW5pc2ggKGNvbnN0IGNoYXIgKikKLSAg IC8qIEZsdXNoIG91dCBhbnkgbGF0ZWNvbWVycyB0byB0aGUgbGltYm8gcGFydHkuICAqLwotICAg Zmx1c2hfbGltYm9fZGllX2xpc3QgKCk7Ci0gCi0tICBpZiAoaW5saW5lX2VudHJ5X2RhdGFfdGFi bGUpCi0tICAgIGdjY19hc3NlcnQgKGlubGluZV9lbnRyeV9kYXRhX3RhYmxlLT5lbGVtZW50cyAo KSA9PSAwKTsKLS0KLSAgIGlmIChmbGFnX2NoZWNraW5nKQotICAgICB7Ci0gICAgICAgdmVyaWZ5 X2RpZSAoY29tcF91bml0X2RpZSAoKSk7Ci1AQCAtMzEwNjksNyArMzAzMTIsNyBAQCBkd2FyZjJv dXRfZmluaXNoIChjb25zdCBjaGFyICopCi0gCSAgZHcyX2FzbV9vdXRwdXRfZGVsdGEgKERXQVJG X09GRlNFVF9TSVpFLCBsMiwgbDEsCi0gCQkJICAgICJMZW5ndGggb2YgTG9jYXRpb24gTGlzdHMi KTsKLSAJICBBU01fT1VUUFVUX0xBQkVMIChhc21fb3V0X2ZpbGUsIGwxKTsKLS0JICBvdXRwdXRf ZHdhcmZfdmVyc2lvbiAoKTsKLSsJICBkdzJfYXNtX291dHB1dF9kYXRhICgyLCBkd2FyZl92ZXJz aW9uLCAiRFdBUkYgVmVyc2lvbiIpOwotIAkgIGR3Ml9hc21fb3V0cHV0X2RhdGEgKDEsIERXQVJG Ml9BRERSX1NJWkUsICJBZGRyZXNzIFNpemUiKTsKLSAJICBkdzJfYXNtX291dHB1dF9kYXRhICgx LCAwLCAiU2VnbWVudCBTaXplIik7Ci0gCSAgZHcyX2FzbV9vdXRwdXRfZGF0YSAoNCwgZHdhcmZf c3BsaXRfZGVidWdfaW5mbyA/IGxvY19saXN0X2lkeCA6IDAsCi1AQCAtMzExMjgsNyArMzAzNzEs NyBAQCBkd2FyZjJvdXRfZmluaXNoIChjb25zdCBjaGFyICopCi0gICAgICB1c2VkIGJ5IHRoZSBk ZWJ1Z19pbmZvIHNlY3Rpb24gYXJlIG1hcmtlZCBhcyAndXNlZCcuICAqLwotICAgc3dpdGNoX3Rv X3NlY3Rpb24gKGRlYnVnX2xpbmVfc2VjdGlvbik7Ci0gICBBU01fT1VUUFVUX0xBQkVMIChhc21f b3V0X2ZpbGUsIGRlYnVnX2xpbmVfc2VjdGlvbl9sYWJlbCk7Ci0tICBpZiAoISBvdXRwdXRfYXNt X2xpbmVfZGVidWdfaW5mbyAoKSkKLSsgIGlmICghIERXQVJGMl9BU01fTElORV9ERUJVR19JTkZP KQotICAgICBvdXRwdXRfbGluZV9pbmZvIChmYWxzZSk7Ci0gCi0gICBpZiAoZHdhcmZfc3BsaXRf ZGVidWdfaW5mbyAmJiBpbmZvX3NlY3Rpb25fZW1pdHRlZCkKLS0tLSBnY2MvZHdhcmYyb3V0LmgJ KHJldmlzaW9uIDI1NzUxMSkKLSsrKyBnY2MvZHdhcmYyb3V0LmgJKHJldmlzaW9uIDI1NzUwOSkK LUBAIC0xNjAsOCArMTYwLDcgQEAgZW51bSBkd192YWxfY2xhc3MKLSAgIGR3X3ZhbF9jbGFzc19k aXNjcl9saXN0LAotICAgZHdfdmFsX2NsYXNzX2NvbnN0X2ltcGxpY2l0LAotICAgZHdfdmFsX2Ns YXNzX3Vuc2lnbmVkX2NvbnN0X2ltcGxpY2l0LAotLSAgZHdfdmFsX2NsYXNzX2ZpbGVfaW1wbGlj aXQsCi0tICBkd192YWxfY2xhc3Nfdmlld19saXN0Ci0rICBkd192YWxfY2xhc3NfZmlsZV9pbXBs aWNpdAotIH07Ci0gCi0gLyogRGVzY3JpYmUgYSBmbG9hdGluZyBwb2ludCBjb25zdGFudCB2YWx1 ZSwgb3IgYSB2ZWN0b3IgY29uc3RhbnQgdmFsdWUuICAqLwotQEAgLTIwNCw3ICsyMDMsNiBAQCBz dHJ1Y3QgR1RZKCgpKSBkd192YWxfbm9kZSB7Ci0gICAgICAgcnR4IEdUWSAoKHRhZyAoImR3X3Zh bF9jbGFzc19hZGRyIikpKSB2YWxfYWRkcjsKLSAgICAgICB1bnNpZ25lZCBIT1NUX1dJREVfSU5U IEdUWSAoKHRhZyAoImR3X3ZhbF9jbGFzc19vZmZzZXQiKSkpIHZhbF9vZmZzZXQ7Ci0gICAgICAg ZHdfbG9jX2xpc3RfcmVmIEdUWSAoKHRhZyAoImR3X3ZhbF9jbGFzc19sb2NfbGlzdCIpKSkgdmFs X2xvY19saXN0OwotLSAgICAgIGR3X2RpZV9yZWYgR1RZICgodGFnICgiZHdfdmFsX2NsYXNzX3Zp ZXdfbGlzdCIpKSkgdmFsX3ZpZXdfbGlzdDsKLSAgICAgICBkd19sb2NfZGVzY3JfcmVmIEdUWSAo KHRhZyAoImR3X3ZhbF9jbGFzc19sb2MiKSkpIHZhbF9sb2M7Ci0gICAgICAgSE9TVF9XSURFX0lO VCBHVFkgKChkZWZhdWx0KSkgdmFsX2ludDsKLSAgICAgICB1bnNpZ25lZCBIT1NUX1dJREVfSU5U Ci0tLS0gZ2NjL2dpbXBsZS1wcmV0dHktcHJpbnQuYwkocmV2aXNpb24gMjU3NTExKQotKysrIGdj Yy9naW1wbGUtcHJldHR5LXByaW50LmMJKHJldmlzaW9uIDI1NzUwOSkKLUBAIC0xMzcxLDE5ICsx MzcxLDYgQEAgZHVtcF9naW1wbGVfZGVidWcgKHByZXR0eV9wcmludGVyICpidWZmZQotIAlkdW1w X2dpbXBsZV9mbXQgKGJ1ZmZlciwgc3BjLCBmbGFncywgIiMgREVCVUcgQkVHSU5fU1RNVCIpOwot ICAgICAgIGJyZWFrOwotIAotLSAgICBjYXNlIEdJTVBMRV9ERUJVR19JTkxJTkVfRU5UUlk6Ci0t ICAgICAgaWYgKGZsYWdzICYgVERGX1JBVykKLS0JZHVtcF9naW1wbGVfZm10IChidWZmZXIsIHNw YywgZmxhZ3MsICIlRyBJTkxJTkVfRU5UUlkgJVQiLCBncywKLS0JCQkgZ2ltcGxlX2Jsb2NrIChn cykKLS0JCQkgPyBibG9ja191bHRpbWF0ZV9vcmlnaW4gKGdpbXBsZV9ibG9jayAoZ3MpKQotLQkJ CSA6IE5VTExfVFJFRSk7Ci0tICAgICAgZWxzZQotLQlkdW1wX2dpbXBsZV9mbXQgKGJ1ZmZlciwg c3BjLCBmbGFncywgIiMgREVCVUcgSU5MSU5FX0VOVFJZICVUIiwKLS0JCQkgZ2ltcGxlX2Jsb2Nr IChncykKLS0JCQkgPyBibG9ja191bHRpbWF0ZV9vcmlnaW4gKGdpbXBsZV9ibG9jayAoZ3MpKQot LQkJCSA6IE5VTExfVFJFRSk7Ci0tICAgICAgYnJlYWs7Ci0tCi0gICAgIGRlZmF1bHQ6Ci0gICAg ICAgZ2NjX3VucmVhY2hhYmxlICgpOwotICAgICB9Ci0tLS0gZ2NjL2NvbmZpZ3VyZS5hYwkocmV2 aXNpb24gMjU3NTExKQotKysrIGdjYy9jb25maWd1cmUuYWMJKHJldmlzaW9uIDI1NzUwOSkKLUBA IC00OTAyLDI1ICs0OTAyLDkgQEAgaWYgdGVzdCB4IiRpbnNuIiAhPSB4OyB0aGVuCi0gCi0gIGlm IHRlc3QgJGdjY19jdl9hc19kd2FyZjJfZGVidWdfbGluZSA9IHllcyBcCi0gICYmIHRlc3QgJGdj Y19jdl9hc19kd2FyZjJfZmlsZV9idWdneSA9IG5vOyB0aGVuCi0tICAgIEFDX0RFRklORShIQVZF X0FTX0RXQVJGMl9ERUJVR19MSU5FLCAxLAotKwlBQ19ERUZJTkUoSEFWRV9BU19EV0FSRjJfREVC VUdfTElORSwgMSwKLSAgIFtEZWZpbmUgaWYgeW91ciBhc3NlbWJsZXIgc3VwcG9ydHMgZHdhcmYy IC5maWxlLy5sb2MgZGlyZWN0aXZlcywKLSAgICBhbmQgcHJlc2VydmVzIGZpbGUgdGFibGUgaW5k aWNlcyBleGFjdGx5IGFzIGdpdmVuLl0pCi0tCi0tICAgIGlmIHRlc3QgJGdjY19jdl9hc19sZWIx MjggPSB5ZXM7IHRoZW4KLS0JY29uZnRlc3Rfcz0iXAotLQkuZmlsZSAxIFwiY29uZnRlc3Quc1wi Ci0tCS5sb2MgMSAzIDAgdmlldyAuTFZVMQotLQkkaW5zbgotLQkuZGF0YQotLQkudWxlYjEyOCAu TFZVMQotLQkudWxlYjEyOCAuTFZVMQotLSIKLS0JZ2NjX0dBU19DSEVDS19GRUFUVVJFKFtkd2Fy ZjIgZGVidWdfdmlldyBzdXBwb3J0XSwKLS0JICBnY2NfY3ZfYXNfZHdhcmYyX2RlYnVnX3ZpZXcs Ci0tCSAgW2VsZiwyLDI3LDBdLCxbJGNvbmZ0ZXN0X3NdLCwKLS0JICBbQUNfREVGSU5FKEhBVkVf QVNfRFdBUkYyX0RFQlVHX1ZJRVcsIDEsCi0tICBbRGVmaW5lIGlmIHlvdXIgYXNzZW1ibGVyIHN1 cHBvcnRzIHZpZXdzIGluIGR3YXJmMiAubG9jIGRpcmVjdGl2ZXMuXSldKQotLSAgICBmaQotICBm aQotIAotICBnY2NfR0FTX0NIRUNLX0ZFQVRVUkUoWy0tZ2R3YXJmMiBvcHRpb25dLAotLS0tIGdj Yy9wcmludC1ydGwuYwkocmV2aXNpb24gMjU3NTExKQotKysrIGdjYy9wcmludC1ydGwuYwkocmV2 aXNpb24gMjU3NTA5KQotQEAgLTI3Niw3ICsyNzYsNiBAQCBydHhfd3JpdGVyOjpwcmludF9ydHhf b3BlcmFuZF9jb2RlXzAgKGNvCi0gCSAgYnJlYWs7Ci0gCi0gCWNhc2UgTk9URV9JTlNOX0JFR0lO X1NUTVQ6Ci0tCWNhc2UgTk9URV9JTlNOX0lOTElORV9FTlRSWToKLSAjaWZuZGVmIEdFTkVSQVRP Ul9GSUxFCi0gCSAgewotIAkgICAgZXhwYW5kZWRfbG9jYXRpb24geGxvYwotQEAgLTE4ODAsMTAg KzE4NzksNiBAQCBwcmludF9pbnNuIChwcmV0dHlfcHJpbnRlciAqcHAsIGNvbnN0IHJ0Ci0gCQlw cF9zdHJpbmcgKHBwLCAiZGVidWcgYmVnaW4gc3RtdCBtYXJrZXIiKTsKLSAJCWJyZWFrOwotIAot LQkgICAgICBjYXNlIE5PVEVfSU5TTl9JTkxJTkVfRU5UUlk6Ci0tCQlwcF9zdHJpbmcgKHBwLCAi ZGVidWcgaW5saW5lIGVudHJ5IG1hcmtlciIpOwotLQkJYnJlYWs7Ci0tCi0gCSAgICAgIGRlZmF1 bHQ6Ci0gCQlnY2NfdW5yZWFjaGFibGUgKCk7Ci0gCSAgICAgIH0KLS0tLSBnY2MvY2ZnZXhwYW5k LmMJKHJldmlzaW9uIDI1NzUxMSkKLSsrKyBnY2MvY2ZnZXhwYW5kLmMJKHJldmlzaW9uIDI1NzUw OSkKLUBAIC01NzMxLDE1ICs1NzMxLDYgQEAgZXhwYW5kX2dpbXBsZV9iYXNpY19ibG9jayAoYmFz aWNfYmxvY2sgYgotIAkJZ290byBkZWxpbmtfZGVidWdfc3RtdDsKLSAJICAgICAgZWxzZSBpZiAo Z2ltcGxlX2RlYnVnX2JlZ2luX3N0bXRfcCAoc3RtdCkpCi0gCQl2YWwgPSBHRU5fUlRYX0RFQlVH X01BUktFUl9CRUdJTl9TVE1UX1BBVCAoKTsKLS0JICAgICAgZWxzZSBpZiAoZ2ltcGxlX2RlYnVn X2lubGluZV9lbnRyeV9wIChzdG10KSkKLS0JCXsKLS0JCSAgdHJlZSBibG9jayA9IGdpbXBsZV9i bG9jayAoc3RtdCk7Ci0tCi0tCQkgIGlmIChibG9jaykKLS0JCSAgICB2YWwgPSBHRU5fUlRYX0RF QlVHX01BUktFUl9JTkxJTkVfRU5UUllfUEFUICgpOwotLQkJICBlbHNlCi0tCQkgICAgZ290byBk ZWxpbmtfZGVidWdfc3RtdDsKLS0JCX0KLSAJICAgICAgZWxzZQotIAkJZ2NjX3VucmVhY2hhYmxl ICgpOwotIAotLS0tIGdjYy90cmVlLXNzYS1saXZlLmMJKHJldmlzaW9uIDI1NzUxMSkKLSsrKyBn Y2MvdHJlZS1zc2EtbGl2ZS5jCShyZXZpc2lvbiAyNTc1MDkpCi1AQCAtNTIwLDExICs1MjAsNiBA QCByZW1vdmVfdW51c2VkX3Njb3BlX2Jsb2NrX3AgKHRyZWUgc2NvcGUsCi0gICAgZWxzZSBpZiAo IUJMT0NLX1NVUEVSQ09OVEVYVCAoc2NvcGUpCi0gICAgICAgICAgICAgfHwgVFJFRV9DT0RFIChC TE9DS19TVVBFUkNPTlRFWFQgKHNjb3BlKSkgPT0gRlVOQ1RJT05fREVDTCkKLSAgICAgIHVudXNl ZCA9IGZhbHNlOwotLSAgIC8qIFByZXNlcnZlIHRoZSBibG9jaywgaXQgaXMgcmVmZXJlbmNlZCBi eSBhdCBsZWFzdCB0aGUgaW5saW5lCi0tICAgICAgZW50cnkgcG9pbnQgbWFya2VyLiAgKi8KLS0g ICBlbHNlIGlmIChkZWJ1Z19ub25iaW5kX21hcmtlcnNfcAotLQkgICAgJiYgaW5saW5lZF9mdW5j dGlvbl9vdXRlcl9zY29wZV9wIChzY29wZSkpCi0tICAgICB1bnVzZWQgPSBmYWxzZTsKLSAgICAv KiBJbm5lcm1vc3QgYmxvY2tzIHdpdGggbm8gbGl2ZSB2YXJpYWJsZXMgbm9yIHN0YXRlbWVudHMg Y2FuIGJlIGFsd2F5cwotICAgICAgIGVsaW1pbmF0ZWQuICAqLwotICAgIGVsc2UgaWYgKCFuc3Vi YmxvY2tzKQotQEAgLTU1MywxMyArNTQ4LDExIEBAIHJlbW92ZV91bnVzZWRfc2NvcGVfYmxvY2tf cCAodHJlZSBzY29wZSwKLSAgICAgIH0KLSAgICBlbHNlIGlmIChCTE9DS19WQVJTIChzY29wZSkg fHwgQkxPQ0tfTlVNX05PTkxPQ0FMSVpFRF9WQVJTIChzY29wZSkpCi0gICAgICB1bnVzZWQgPSBm YWxzZTsKLS0gICAvKiBTZWUgaWYgdGhpcyBibG9jayBpcyBpbXBvcnRhbnQgZm9yIHJlcHJlc2Vu dGF0aW9uIG9mIGlubGluZWQKLS0gICAgICBmdW5jdGlvbi4gIElubGluZWQgZnVuY3Rpb25zIGFy ZSBhbHdheXMgcmVwcmVzZW50ZWQgYnkgYmxvY2sKLS0gICAgICB3aXRoIGJsb2NrX3VsdGltYXRl X29yaWdpbiBiZWluZyBzZXQgdG8gRlVOQ1RJT05fREVDTCBhbmQKLS0gICAgICBERUNMX1NPVVJD RV9MT0NBVElPTiBzZXQsIHVubGVzcyB0aGV5IGV4cGFuZCB0byBub3RoaW5nLi4uICBCdXQKLS0g ICAgICBzZWUgYWJvdmUgZm9yIHRoZSBjYXNlIG9mIHN0YXRlbWVudCBmcm9udGllcnMuICAqLwot LSAgIGVsc2UgaWYgKCFkZWJ1Z19ub25iaW5kX21hcmtlcnNfcAotLQkgICAgJiYgaW5saW5lZF9m dW5jdGlvbl9vdXRlcl9zY29wZV9wIChzY29wZSkpCi0rICAgLyogU2VlIGlmIHRoaXMgYmxvY2sg aXMgaW1wb3J0YW50IGZvciByZXByZXNlbnRhdGlvbiBvZiBpbmxpbmVkIGZ1bmN0aW9uLgotKyAg ICAgIElubGluZWQgZnVuY3Rpb25zIGFyZSBhbHdheXMgcmVwcmVzZW50ZWQgYnkgYmxvY2sgd2l0 aAotKyAgICAgIGJsb2NrX3VsdGltYXRlX29yaWdpbiBiZWluZyBzZXQgdG8gRlVOQ1RJT05fREVD TCBhbmQgREVDTF9TT1VSQ0VfTE9DQVRJT04KLSsgICAgICBzZXQuLi4gICovCi0rICAgZWxzZSBp ZiAoaW5saW5lZF9mdW5jdGlvbl9vdXRlcl9zY29wZV9wIChzY29wZSkpCi0gICAgICB1bnVzZWQg PSBmYWxzZTsKLSAgICBlbHNlCi0gICAgLyogVmVyZmlmeSB0aGF0IG9ubHkgYmxvY2tzIHdpdGgg c291cmNlIGxvY2F0aW9uIHNldAotQEAgLTY0NywxNiArNjQwLDYgQEAgZHVtcF9zY29wZV9ibG9j ayAoRklMRSAqZmlsZSwgaW50IGluZGVudAotIAkgICAgZnByaW50ZiAoZmlsZSwgIiMlaSIsIEJM T0NLX05VTUJFUiAob3JpZ2luKSk7Ci0gCX0KLSAgICAgfQotLSAgaWYgKEJMT0NLX0ZSQUdNRU5U X09SSUdJTiAoc2NvcGUpKQotLSAgICBmcHJpbnRmIChmaWxlLCAiIEZyYWdtZW50IG9mIDogIyVp IiwKLS0JICAgICBCTE9DS19OVU1CRVIgKEJMT0NLX0ZSQUdNRU5UX09SSUdJTiAoc2NvcGUpKSk7 Ci0tICBlbHNlIGlmIChCTE9DS19GUkFHTUVOVF9DSEFJTiAoc2NvcGUpKQotLSAgICB7Ci0tICAg ICAgZnByaW50ZiAoZmlsZSwgIiBGcmFnbWVudCBjaGFpbiA6Iik7Ci0tICAgICAgZm9yICh0ID0g QkxPQ0tfRlJBR01FTlRfQ0hBSU4gKHNjb3BlKTsgdCA7Ci0tCSAgIHQgPSBCTE9DS19GUkFHTUVO VF9DSEFJTiAodCkpCi0tCWZwcmludGYgKGZpbGUsICIgIyVpIiwgQkxPQ0tfTlVNQkVSICh0KSk7 Ci0tICAgIH0KLSAgIGZwcmludGYgKGZpbGUsICIgXG4iKTsKLSAgIGZvciAodmFyID0gQkxPQ0tf VkFSUyAoc2NvcGUpOyB2YXI7IHZhciA9IERFQ0xfQ0hBSU4gKHZhcikpCi0gICAgIHsKLS0tLSBn Y2MvY29tbW9uLm9wdAkocmV2aXNpb24gMjU3NTExKQotKysrIGdjYy9jb21tb24ub3B0CShyZXZp c2lvbiAyNTc1MDkpCi1AQCAtMjk1NiwxMyArMjk1Niw2IEBAIGd0b2dnbGUKLSBDb21tb24gRHJp dmVyIFJlcG9ydCBWYXIoZmxhZ19ndG9nZ2xlKQotIFRvZ2dsZSBkZWJ1ZyBpbmZvcm1hdGlvbiBn ZW5lcmF0aW9uLgotIAotLWd2YXJpYWJsZS1sb2NhdGlvbi12aWV3cwotLUNvbW1vbiBEcml2ZXIg VmFyKGRlYnVnX3ZhcmlhYmxlX2xvY2F0aW9uX3ZpZXdzLCAxKSBJbml0KDIpCi0tQXVnbWVudCB2 YXJpYWJsZSBsb2NhdGlvbiBsaXN0cyB3aXRoIHByb2dyZXNzaXZlIHZpZXdzLgotLQotLWd2YXJp YWJsZS1sb2NhdGlvbi12aWV3cz1pbmNvbXBhdDUKLS1Db21tb24gRHJpdmVyIFJlamVjdE5lZ2F0 aXZlIFZhcihkZWJ1Z192YXJpYWJsZV9sb2NhdGlvbl92aWV3cywgLTEpIEluaXQoMikKLS0KLSBn dm1zCi0gQ29tbW9uIERyaXZlciBKb2luZWRPck1pc3NpbmcgTmVnYXRpdmUoZ3hjb2ZmKQotIEdl bmVyYXRlIGRlYnVnIGluZm9ybWF0aW9uIGluIFZNUyBmb3JtYXQuCi0tLS0gZ2NjL3J0bC5oCShy ZXZpc2lvbiAyNTc1MTEpCi0rKysgZ2NjL3J0bC5oCShyZXZpc2lvbiAyNTc1MDkpCi1AQCAtMTY1 NCw4ICsxNjU0LDcgQEAgZXh0ZXJuIGNvbnN0IGNoYXIgKiBjb25zdCByZWdfbm90ZV9uYW1lWwot ICAgIGZvciB3aGljaCBOT1RFX01BUktFUl9MT0NBVElPTiBjYW4gYmUgdXNlZC4gICovCi0gI2Rl ZmluZSBOT1RFX01BUktFUl9QKElOU04pCQkJCVwKLSAgIChOT1RFX1AgKElOU04pICYmCQkJCQlc Ci0tICAgKE5PVEVfS0lORCAoSU5TTikgPT0gTk9URV9JTlNOX0JFR0lOX1NUTVQJCVwKLS0gICAg fHwgTk9URV9LSU5EIChJTlNOKSA9PSBOT1RFX0lOU05fSU5MSU5FX0VOVFJZKSkKLSsgICAoTk9U RV9LSU5EIChJTlNOKSA9PSBOT1RFX0lOU05fQkVHSU5fU1RNVCkpCi0gCi0gLyogVmFyaWFibGUg ZGVjbGFyYXRpb24gYW5kIHRoZSBsb2NhdGlvbiBvZiBhIHZhcmlhYmxlLiAgKi8KLSAjZGVmaW5l IFBBVF9WQVJfTE9DQVRJT05fREVDTChQQVQpIChYQ1RSRUUgKChQQVQpLCAwLCBWQVJfTE9DQVRJ T04pKQotQEAgLTE2OTMsOCArMTY5Miw2IEBAIGV4dGVybiBjb25zdCBjaGFyICogY29uc3QgcmVn X25vdGVfbmFtZVsKLSAgIChHRVRfQ09ERSAoUEFUVEVSTiAoSU5TTikpID09IERFQlVHX01BUktF UgkgIFwKLSAgICA/IChHRVRfTU9ERSAoUEFUVEVSTiAoSU5TTikpID09IFZPSURtb2RlCSAgXAot ICAgICAgID8gTk9URV9JTlNOX0JFR0lOX1NUTVQJCQkgIFwKLS0gICAgICA6IEdFVF9NT0RFIChQ QVRURVJOIChJTlNOKSkgPT0gQkxLbW9kZQkgIFwKLS0gICAgICA/IE5PVEVfSU5TTl9JTkxJTkVf RU5UUlkJCQkgIFwKLSAgICAgICA6IChlbnVtIGluc25fbm90ZSktMSkgCQkJICBcCi0gICAgOiAo ZW51bSBpbnNuX25vdGUpLTEpCi0gLyogQ3JlYXRlIHBhdHRlcm5zIGZvciBkZWJ1ZyBtYXJrZXJz LiAgVGhlc2UgYW5kIHRoZSBhYm92ZSBhYnN0cmFjdAotQEAgLTE3MDQsOCArMTcwMSw2IEBAIGV4 dGVybiBjb25zdCBjaGFyICogY29uc3QgcmVnX25vdGVfbmFtZVsKLSAgICB3b3VsZG4ndCBiZSBh IHByb2JsZW0uICAqLwotICNkZWZpbmUgR0VOX1JUWF9ERUJVR19NQVJLRVJfQkVHSU5fU1RNVF9Q QVQoKSBcCi0gICBnZW5fcnR4X0RFQlVHX01BUktFUiAoVk9JRG1vZGUpCi0tI2RlZmluZSBHRU5f UlRYX0RFQlVHX01BUktFUl9JTkxJTkVfRU5UUllfUEFUKCkgXAotLSAgZ2VuX3J0eF9ERUJVR19N QVJLRVIgKEJMS21vZGUpCi0gCi0gLyogVGhlIFZBUl9MT0NBVElPTiBydHggaW4gYSBERUJVR19J TlNOLiAgKi8KLSAjZGVmaW5lIElOU05fVkFSX0xPQ0FUSU9OKElOU04pIFwKLS0tLSBnY2MvdHJl ZS1pbmxpbmUuYwkocmV2aXNpb24gMjU3NTExKQotKysrIGdjYy90cmVlLWlubGluZS5jCShyZXZp c2lvbiAyNTc1MDkpCi1AQCAtNDYwNSwxMyArNDYwNSw2IEBAIGV4cGFuZF9jYWxsX2lubGluZSAo YmFzaWNfYmxvY2sgYmIsIGdpbXAKLSAJCQlHU0lfTkVXX1NUTVQpOwotICAgICB9Ci0gICBpbml0 aWFsaXplX2lubGluZWRfcGFyYW1ldGVycyAoaWQsIHN0bXQsIGZuLCBiYik7Ci0tICBpZiAoZGVi dWdfbm9uYmluZF9tYXJrZXJzX3AgJiYgaWQtPmJsb2NrCi0tICAgICAgJiYgaW5saW5lZF9mdW5j dGlvbl9vdXRlcl9zY29wZV9wIChpZC0+YmxvY2spKQotLSAgICB7Ci0tICAgICAgZ2ltcGxlX3N0 bXRfaXRlcmF0b3Igc2kgPSBnc2lfbGFzdF9iYiAoYmIpOwotLSAgICAgIGdzaV9pbnNlcnRfYWZ0 ZXIgKCZzaSwgZ2ltcGxlX2J1aWxkX2RlYnVnX2lubGluZV9lbnRyeQotLQkJCShpZC0+YmxvY2ss IGlucHV0X2xvY2F0aW9uKSwgR1NJX05FV19TVE1UKTsKLS0gICAgfQotIAotICAgaWYgKERFQ0xf SU5JVElBTCAoZm4pKQotICAgICB7Ci0tLS0gZ2NjL3Zhci10cmFja2luZy5jCShyZXZpc2lvbiAy NTc1MTEpCi0rKysgZ2NjL3Zhci10cmFja2luZy5jCShyZXZpc2lvbiAyNTc1MDkpCi1AQCAtOTk1 OSw3ICs5OTU5LDYgQEAgcmVlbWl0X21hcmtlcl9hc19ub3RlIChydHhfaW5zbiAqaW5zbikKLSAg IHN3aXRjaCAoa2luZCkKLSAgICAgewotICAgICBjYXNlIE5PVEVfSU5TTl9CRUdJTl9TVE1UOgot LSAgICBjYXNlIE5PVEVfSU5TTl9JTkxJTkVfRU5UUlk6Ci0gICAgICAgewotIAlydHhfaW5zbiAq bm90ZSA9IE5VTEw7Ci0gCWlmIChjZnVuLT5kZWJ1Z19ub25iaW5kX21hcmtlcnMpCi0tLS0gZ2Nj L2dpbXBsZS5jCShyZXZpc2lvbiAyNTc1MTEpCi0rKysgZ2NjL2dpbXBsZS5jCShyZXZpc2lvbiAy NTc1MDkpCi1AQCAtODc0LDI3ICs4NzQsNiBAQCBnaW1wbGVfYnVpbGRfZGVidWdfYmVnaW5fc3Rt dCAodHJlZSBibG9jCi0gfQotIAotIAotLS8qIEJ1aWxkIGEgbmV3IEdJTVBMRV9ERUJVR19JTkxJ TkVfRU5UUlkgc3RhdGVtZW50IGluIEJMT0NLIGF0Ci0tICAgTE9DQVRJT04uICBUaGUgQkxPQ0sg bGlua3MgdG8gdGhlIGlubGluZWQgZnVuY3Rpb24uICAqLwotLQotLWdkZWJ1ZyAqCi0tZ2ltcGxl X2J1aWxkX2RlYnVnX2lubGluZV9lbnRyeSAodHJlZSBibG9jaywgbG9jYXRpb25fdCBsb2NhdGlv bgotLQkJCQkgICAgICBNRU1fU1RBVF9ERUNMKQotLXsKLS0gIGdkZWJ1ZyAqcAotLSAgICA9IGFz X2EgPGdkZWJ1ZyAqPiAoCi0tICAgICAgICBnaW1wbGVfYnVpbGRfd2l0aF9vcHNfc3RhdCAoR0lN UExFX0RFQlVHLAotLQkJCQkgICAgKHVuc2lnbmVkKUdJTVBMRV9ERUJVR19JTkxJTkVfRU5UUlks IDAKLS0JCQkJICAgIFBBU1NfTUVNX1NUQVQpKTsKLS0KLS0gIGdpbXBsZV9zZXRfbG9jYXRpb24g KHAsIGxvY2F0aW9uKTsKLS0gIGdpbXBsZV9zZXRfYmxvY2sgKHAsIGJsb2NrKTsKLS0gIGNmdW4t PmRlYnVnX21hcmtlcl9jb3VudCsrOwotLQotLSAgcmV0dXJuIHA7Ci0tfQotLQotLQotIC8qIEJ1 aWxkIGEgR0lNUExFX09NUF9DUklUSUNBTCBzdGF0ZW1lbnQuCi0gCi0gICAgQk9EWSBpcyB0aGUg c2VxdWVuY2Ugb2Ygc3RhdGVtZW50cyBmb3Igd2hpY2ggb25seSBvbmUgdGhyZWFkIGNhbiBleGVj dXRlLgotLS0tIGdjYy9naW1wbGUuaAkocmV2aXNpb24gMjU3NTExKQotKysrIGdjYy9naW1wbGUu aAkocmV2aXNpb24gMjU3NTA5KQotQEAgLTIwMiw4ICsyMDIsNyBAQCBlbnVtIGdmX21hc2sgewot IGVudW0gZ2ltcGxlX2RlYnVnX3N1YmNvZGUgewotICAgR0lNUExFX0RFQlVHX0JJTkQgPSAwLAot ICAgR0lNUExFX0RFQlVHX1NPVVJDRV9CSU5EID0gMSwKLS0gIEdJTVBMRV9ERUJVR19CRUdJTl9T VE1UID0gMiwKLS0gIEdJTVBMRV9ERUJVR19JTkxJTkVfRU5UUlkgPSAzCi0rICBHSU1QTEVfREVC VUdfQkVHSU5fU1RNVCA9IDIKLSB9OwotIAotIC8qIE1hc2tzIGZvciBzZWxlY3RpbmcgYSBwYXNz IGxvY2FsIGZsYWcgKFBMRikgdG8gd29yayBvbi4gIFRoZXNlCi1AQCAtMTQ1NSw3ICsxNDU0LDYg QEAgZ2VoX2Rpc3BhdGNoICpnaW1wbGVfYnVpbGRfZWhfZGlzcGF0Y2ggKAotIGdkZWJ1ZyAqZ2lt cGxlX2J1aWxkX2RlYnVnX2JpbmQgKHRyZWUsIHRyZWUsIGdpbXBsZSAqIENYWF9NRU1fU1RBVF9J TkZPKTsKLSBnZGVidWcgKmdpbXBsZV9idWlsZF9kZWJ1Z19zb3VyY2VfYmluZCAodHJlZSwgdHJl ZSwgZ2ltcGxlICogQ1hYX01FTV9TVEFUX0lORk8pOwotIGdkZWJ1ZyAqZ2ltcGxlX2J1aWxkX2Rl YnVnX2JlZ2luX3N0bXQgKHRyZWUsIGxvY2F0aW9uX3QgQ1hYX01FTV9TVEFUX0lORk8pOwotLWdk ZWJ1ZyAqZ2ltcGxlX2J1aWxkX2RlYnVnX2lubGluZV9lbnRyeSAodHJlZSwgbG9jYXRpb25fdCBD WFhfTUVNX1NUQVRfSU5GTyk7Ci0gZ29tcF9jcml0aWNhbCAqZ2ltcGxlX2J1aWxkX29tcF9jcml0 aWNhbCAoZ2ltcGxlX3NlcSwgdHJlZSwgdHJlZSk7Ci0gZ29tcF9mb3IgKmdpbXBsZV9idWlsZF9v bXBfZm9yIChnaW1wbGVfc2VxLCBpbnQsIHRyZWUsIHNpemVfdCwgZ2ltcGxlX3NlcSk7Ci0gZ29t cF9wYXJhbGxlbCAqZ2ltcGxlX2J1aWxkX29tcF9wYXJhbGxlbCAoZ2ltcGxlX3NlcSwgdHJlZSwg dHJlZSwgdHJlZSk7Ci1AQCAtNDc4NiwyNSArNDc4NCwxMyBAQCBnaW1wbGVfZGVidWdfYmVnaW5f c3RtdF9wIChjb25zdCBnaW1wbGUKLSAgIHJldHVybiBmYWxzZTsKLSB9Ci0gCi0tLyogUmV0dXJu IHRydWUgaWYgUyBpcyBhIEdJTVBMRV9ERUJVRyBJTkxJTkVfRU5UUlkgc3RhdGVtZW50LiAgKi8K LS0KLS1zdGF0aWMgaW5saW5lIGJvb2wKLS1naW1wbGVfZGVidWdfaW5saW5lX2VudHJ5X3AgKGNv bnN0IGdpbXBsZSAqcykKLS17Ci0tICBpZiAoaXNfZ2ltcGxlX2RlYnVnIChzKSkKLS0gICAgcmV0 dXJuIHMtPnN1YmNvZGUgPT0gR0lNUExFX0RFQlVHX0lOTElORV9FTlRSWTsKLS0KLS0gIHJldHVy biBmYWxzZTsKLS19Ci0tCi0gLyogUmV0dXJuIHRydWUgaWYgUyBpcyBhIEdJTVBMRV9ERUJVRyBu b24tYmluZGluZyBtYXJrZXIgc3RhdGVtZW50LiAgKi8KLSAKLSBzdGF0aWMgaW5saW5lIGJvb2wK LSBnaW1wbGVfZGVidWdfbm9uYmluZF9tYXJrZXJfcCAoY29uc3QgZ2ltcGxlICpzKQotIHsKLSAg IGlmIChpc19naW1wbGVfZGVidWcgKHMpKQotLSAgICByZXR1cm4gcy0+c3ViY29kZSA9PSBHSU1Q TEVfREVCVUdfQkVHSU5fU1RNVAotLSAgICAgIHx8IHMtPnN1YmNvZGUgPT0gR0lNUExFX0RFQlVH X0lOTElORV9FTlRSWTsKLSsgICAgcmV0dXJuIHMtPnN1YmNvZGUgPT0gR0lNUExFX0RFQlVHX0JF R0lOX1NUTVQ7Ci0gCi0gICByZXR1cm4gZmFsc2U7Ci0gfQoKZGlmZiAtLWdpdCBhL3NvdXJjZXMg Yi9zb3VyY2VzCmluZGV4IGY0MGUzNzIuLjM1M2IwNWEgMTAwNjQ0Ci0tLSBhL3NvdXJjZXMKKysr IGIvc291cmNlcwpAQCAtMSwzICsxLDMgQEAKLVNIQTUxMiAoZ2NjLTguMC4xLTIwMTgwMjEwLnRh ci54eikgPSAyM2Q5YWY0NGUzYzhmY2U5OGQ1NjE0ZWU1NTQwZDkxMTlmNTcyN2VkZGFjYjIxN2Ex NWU4YzhiMzhlYWUxY2E2NmZkN2Q2N2Q0MDE1ZDI4OTlkMzRjYmJiN2RmODdjNWNlNWNlMTNhYTc3 Nzk3NDY5NzNhMWJmOGIxYzk1OWJiMAorU0hBNTEyIChnY2MtOC4wLjEtMjAxODAyMTgudGFyLnh6 KSA9IGEyMzAxMzQ5NzdiNTEzN2IxOWQ3YTQwZjg5OTdkYTk4ZDM5ZTc2NTNiM2IwMDljNjhlZDgz MGQwOGZjNWNiYzc2YzBiYTk3ZWNjOTE1MDFiYTJiY2E4OTlkNDYyMzBmNjE4ODFjOGNjMjAyNzc0 NTNkOWFiMDY5MDZmNDYzY2JkCiBTSEE1MTIgKG52cHR4LW5ld2xpYi1hYWRjOGViMGVjNDNiN2Nk MGRkMmRmYjQ4NGJhZTYzYzhiMDVlZjI0LnRhci54eikgPSA5NGY3MDg5MzY1Mjk2ZjdkZmE0ODUx MDdiNDE0M2JlYmM4NTBhODE1ODZmMzQ2MGZkODk2YmJiYjZiYTA5OWEwMDIxN2Q0MDQyMTMzNDI0 ZmQyMTgzYjM1MjEzMmY0ZmQzNjdlNmE2MDU5OWJkYWUyYTI2ZGZkNDhhNzdkMGUwNAogU0hBNTEy IChudnB0eC10b29scy1jMjgwNTBmNjAxOTNiM2I5NWExODg2NmE5NmYwMzMzNGU4NzRlNzhmLnRh ci54eikgPSBhNjg4Y2IxMmNmODA1OTUwYTVhYmJiMTNiNTJmNDVjODFkYmVlOThlMzEwYjdlZDU3 YWUyMGU3NmRiZmE1OTY0YTE2MjcwMTQ4Mzc0YTY0MjZkMTc3ZGI3MTkwOWQyODM2MDQ5MGYwOTFj ODZhNWQxOWQ0ZmFhNTEyN2JlZWVlMQo=