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: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] gdb-17.2-rebase-f44: [ppc*] Import ppc64le support (BZ 1096303, Ulrich Weigand). Date: Sat, 27 Jun 2026 23:56:33 GMT Message-ID: <178260459306.1.2793244069732999063.rpms-gdb-6e0665a33c84@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: 6e0665a33c841cb72f25624655a40e62747390ed QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2RiCkJyYW5jaCA6 IGdkYi0xNy4yLXJlYmFzZS1mNDQKQ29tbWl0IDogNmUwNjY1YTMzYzg0MWNiNzJmMjU2MjQ2NTVh NDBlNjI3NDczOTBlZApBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVk aGF0LmNvbT4KRGF0ZSAgIDogMjAxNC0wNS0wOVQyMTozMDozMyswMjowMApTdGF0cyAgOiArMzI0 NC8tMTM5IGluIDE2IGZpbGUocykKVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5v cmcvcnBtcy9nZGIvYy82ZTA2NjVhMzNjODQxY2I3MmYyNTYyNDY1NWE0MGU2Mjc0NzM5MGVkP2Jy YW5jaD1nZGItMTcuMi1yZWJhc2UtZjQ0CgpMb2c6CltwcGMqXSBJbXBvcnQgcHBjNjRsZSBzdXBw b3J0IChCWiAxMDk2MzAzLCBVbHJpY2ggV2VpZ2FuZCkuCgotLS0KZGlmZiAtLWdpdCBhL2dkYi1y aGJ6Nzk1NDI0LWJpdHBvcy0yM29mMjUucGF0Y2ggYi9nZGItcmhiejc5NTQyNC1iaXRwb3MtMjNv ZjI1LnBhdGNoCmluZGV4IDBmODI5YTcuLmUwZTEzYjUgMTAwNjQ0Ci0tLSBhL2dkYi1yaGJ6Nzk1 NDI0LWJpdHBvcy0yM29mMjUucGF0Y2gKKysrIGIvZ2RiLXJoYno3OTU0MjQtYml0cG9zLTIzb2Yy NS5wYXRjaApAQCAtMTM3LDEwICsxMzcsMTAgQEAgQ29udGVudC1UeXBlOiB0ZXh0L3gtcGF0Y2gK IENvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDdiaXQKIENvbnRlbnQtRGlzcG9zaXRpb246IGF0 dGFjaG1lbnQ7IGZpbGVuYW1lPWJpdHBvcy10ZGVwLnBhdGNoCiAKLUluZGV4OiBnZGItNy42Ljkw LjIwMTQwMTI3L2dkYi9hbHBoYS10ZGVwLmMKK0luZGV4OiBnZGItNy43LjEvZ2RiL2FscGhhLXRk ZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIvYWxwaGEt dGRlcC5jCTIwMTQtMDItMDYgMTg6MjA6NTIuOTcwNzQ3NzE2ICswMTAwCi0rKysgZ2RiLTcuNi45 MC4yMDE0MDEyNy9nZGIvYWxwaGEtdGRlcC5jCTIwMTQtMDItMDYgMTg6MjA6NTcuMjk0NzUyMzYy ICswMTAwCistLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL2FscGhhLXRkZXAuYwkyMDE0LTA1LTA5IDE5 OjI0OjE4LjY3NzI1Mjc2OSArMDIwMAorKysrIGdkYi03LjcuMS9nZGIvYWxwaGEtdGRlcC5jCTIw MTQtMDUtMDkgMjA6MDI6MDkuNjIwNzAzNzY3ICswMjAwCiBAQCAtMjk5LDE4ICsyOTksMTggQEAg YWxwaGFfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZwogIHsKICAgIGVudW0gYmZk X2VuZGlhbiBieXRlX29yZGVyID0gZ2RiYXJjaF9ieXRlX29yZGVyIChnZGJhcmNoKTsKQEAgLTE4 NCwxMCArMTg0LDEwIEBAIEluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9hbHBoYS10ZGVw LmMKICAJICAgICAgbWVtY3B5IChhcmdfcmVnX2J1ZmZlciArIG9mZnNldCwgY29udGVudHMsIHRs ZW4pOwogIAkgICAgICBvZmZzZXQgKz0gdGxlbjsKICAJICAgICAgY29udGVudHMgKz0gdGxlbjsK LUluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9hbWQ2NC10ZGVwLmMKK0luZGV4OiBnZGIt Ny43LjEvZ2RiL2FtZDY0LXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAx Mjcub3JpZy9nZGIvYW1kNjQtdGRlcC5jCTIwMTQtMDItMDYgMTg6MjA6NTIuOTcyNzQ3NzE4ICsw MTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvYW1kNjQtdGRlcC5jCTIwMTQtMDItMDYg MTg6MjE6NTEuMTA2ODEwODE0ICswMTAwCistLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL2FtZDY0LXRk ZXAuYwkyMDE0LTA1LTA5IDE5OjI0OjE4LjY3ODI1Mjc3MCArMDIwMAorKysrIGdkYi03LjcuMS9n ZGIvYW1kNjQtdGRlcC5jCTIwMTQtMDUtMDkgMjA6MDI6MDkuNjIwNzAzNzY3ICswMjAwCiBAQCAt NjMzLDcgKzYzMyw3IEBAIGFtZDY0X3JldHVybl92YWx1ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmEK ICAJCSAgICBnZGJfYnl0ZSAqcmVhZGJ1ZiwgY29uc3QgZ2RiX2J5dGUgKndyaXRlYnVmKQogIHsK QEAgLTIxNywxMCArMjE3LDEwIEBAIEluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9hbWQ2 NC10ZGVwLmMKICAgICAgICBlbnVtIGFtZDY0X3JlZ19jbGFzcyBjbGFzc1syXTsKICAgICAgICBp bnQgbmVlZGVkX2ludGVnZXJfcmVncyA9IDA7CiAgICAgICAgaW50IG5lZWRlZF9zc2VfcmVncyA9 IDA7Ci1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvYW1kNjQtd2luZG93cy10ZGVwLmMK K0luZGV4OiBnZGItNy43LjEvZ2RiL2FtZDY0LXdpbmRvd3MtdGRlcC5jCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dkYi9hbWQ2NC13aW5kb3dzLXRkZXAuYwkyMDE0 LTAyLTA2IDE4OjIwOjUyLjk3Mzc0NzcyMCArMDEwMAotKysrIGdkYi03LjYuOTAuMjAxNDAxMjcv Z2RiL2FtZDY0LXdpbmRvd3MtdGRlcC5jCTIwMTQtMDItMDYgMTg6MjA6NTcuMjk2NzUyMzY0ICsw MTAwCistLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL2FtZDY0LXdpbmRvd3MtdGRlcC5jCTIwMTQtMDUt MDkgMTk6MjQ6MTguNjc5MjUyNzcwICswMjAwCisrKysgZ2RiLTcuNy4xL2dkYi9hbWQ2NC13aW5k b3dzLXRkZXAuYwkyMDE0LTA1LTA5IDIwOjAyOjA5LjYyMDcwMzc2NyArMDIwMAogQEAgLTI4OCw3 ICsyODgsNyBAQCBhbWQ2NF93aW5kb3dzX3JldHVybl92YWx1ZSAoc3RydWN0IGdkYmFyCiAgCQkJ ICAgIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAogIAkJCSAg ICBnZGJfYnl0ZSAqcmVhZGJ1ZiwgY29uc3QgZ2RiX2J5dGUgKndyaXRlYnVmKQpAQCAtMjMwLDEw ICsyMzAsMTAgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2FtZDY0LXdpbmRvd3Mt dGRlcC5jCiAgICBpbnQgcmVnbnVtID0gLTE7CiAgCiAgICAvKiBTZWUgaWYgb3VyIHZhbHVlIGlz IHJldHVybmVkIHRocm91Z2ggYSByZWdpc3Rlci4gIElmIGl0IGlzLCB0aGVuCi1JbmRleDogZ2Ri LTcuNi45MC4yMDE0MDEyNy9nZGIvYXJtLXRkZXAuYworSW5kZXg6IGdkYi03LjcuMS9nZGIvYXJt LXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIvYXJt LXRkZXAuYwkyMDE0LTAyLTA2IDE4OjIwOjUyLjk3ODc0NzcyNSArMDEwMAotKysrIGdkYi03LjYu OTAuMjAxNDAxMjcvZ2RiL2FybS10ZGVwLmMJMjAxNC0wMi0wNiAxODoyMDo1Ny4yOTk3NTIzNjcg KzAxMDAKKy0tLSBnZGItNy43LjEub3JpZy9nZGIvYXJtLXRkZXAuYwkyMDE0LTA1LTA5IDE5OjI0 OjE4LjY4NDI1Mjc3MCArMDIwMAorKysrIGdkYi03LjcuMS9nZGIvYXJtLXRkZXAuYwkyMDE0LTA1 LTA5IDIwOjAyOjA5LjYyMjcwMzc2OCArMDIwMAogQEAgLTM0OTgsNyArMzQ5OCw3IEBAIGFybV92 ZnBfY3ByY19yZWdfY2hhciAoZW51bSBhcm1fdmZwX2NwcmMKICAgICBhcnJheSkuICBWZWN0b3Jz IGFuZCBjb21wbGV4IHR5cGVzIGFyZSBub3QgY3VycmVudGx5IHN1cHBvcnRlZCwKICAgICBtYXRj aGluZyB0aGUgZ2VuZXJpYyBBQVBDUyBzdXBwb3J0LiAgKi8KQEAgLTMwOCwxMCArMzA4LDEwIEBA IEluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9hcm0tdGRlcC5jCiAgICAgICAgc3RydWN0 IHR5cGUgKmFyZ190eXBlOwogICAgICAgIHN0cnVjdCB0eXBlICp0YXJnZXRfdHlwZTsKICAgICAg ICBlbnVtIHR5cGVfY29kZSB0eXBlY29kZTsKLUluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dk Yi9hdnItdGRlcC5jCitJbmRleDogZ2RiLTcuNy4xL2dkYi9hdnItdGRlcC5jCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dkYi9hdnItdGRlcC5jCTIwMTQtMDItMDYg MTg6MjA6NTIuOTgwNzQ3NzI3ICswMTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvYXZy LXRkZXAuYwkyMDE0LTAyLTA2IDE4OjIwOjU3LjI5OTc1MjM2NyArMDEwMAorLS0tIGdkYi03Ljcu MS5vcmlnL2dkYi9hdnItdGRlcC5jCTIwMTQtMDUtMDkgMTk6MjQ6MTguNjg2MjUyNzcxICswMjAw CisrKysgZ2RiLTcuNy4xL2dkYi9hdnItdGRlcC5jCTIwMTQtMDUtMDkgMjA6MDI6MDkuNjIzNzAz NzY4ICswMjAwCiBAQCAtMTE2NywxMyArMTE2NywxNCBAQCBhdnJfZHVtbXlfaWQgKHN0cnVjdCBn ZGJhcmNoICpnZGJhcmNoLCBzCiAgCiAgc3RydWN0IHN0YWNrX2l0ZW0KQEAgLTM0NSwxMCArMzQ1 LDEwIEBAIEluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9hdnItdGRlcC5jCiAgCiAgICAg ICAgLyogQ2FsY3VsYXRlIHRoZSBwb3RlbnRpYWwgbGFzdCByZWdpc3RlciBuZWVkZWQuICAqLwog ICAgICAgIGxhc3RfcmVnbnVtID0gcmVnbnVtIC0gKGxlbiArIChsZW4gJiAxKSk7Ci1JbmRleDog Z2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvYmZpbi10ZGVwLmMKK0luZGV4OiBnZGItNy43LjEvZ2Ri L2JmaW4tdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dk Yi9iZmluLXRkZXAuYwkyMDE0LTAyLTA2IDE4OjIwOjUyLjk4MDc0NzcyNyArMDEwMAotKysrIGdk Yi03LjYuOTAuMjAxNDAxMjcvZ2RiL2JmaW4tdGRlcC5jCTIwMTQtMDItMDYgMTg6MjA6NTcuMzAw NzUyMzY4ICswMTAwCistLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL2JmaW4tdGRlcC5jCTIwMTQtMDUt MDkgMTk6MjQ6MTguNjg2MjUyNzcxICswMjAwCisrKysgZ2RiLTcuNy4xL2dkYi9iZmluLXRkZXAu YwkyMDE0LTA1LTA5IDIwOjAyOjA5LjYyMzcwMzc2OCArMDIwMAogQEAgLTUwNiw3ICs1MDYsNyBA QCBiZmluX3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKmdkCiAgICBnZGJfYnl0ZSBi dWZbNF07CiAgICBpbnQgaTsKQEAgLTM2NywxMCArMzY3LDEwIEBAIEluZGV4OiBnZGItNy42Ljkw LjIwMTQwMTI3L2dkYi9iZmluLXRkZXAuYwogIAogICAgICAgIHNwIC09IGNvbnRhaW5lcl9sZW47 CiAgICAgICAgd3JpdGVfbWVtb3J5IChzcCwgdmFsdWVfY29udGVudHNfd3JpdGVhYmxlIChhcmdz W2ldKSwgY29udGFpbmVyX2xlbik7Ci1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvY3Jp cy10ZGVwLmMKK0luZGV4OiBnZGItNy43LjEvZ2RiL2NyaXMtdGRlcC5jCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dkYi9jcmlzLXRkZXAuYwkyMDE0LTAyLTA2IDE4 OjIwOjUyLjk4MTc0NzcyOCArMDEwMAotKysrIGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2NyaXMt dGRlcC5jCTIwMTQtMDItMDYgMTg6MjA6NTcuMzAxNzUyMzY5ICswMTAwCistLS0gZ2RiLTcuNy4x Lm9yaWcvZ2RiL2NyaXMtdGRlcC5jCTIwMTQtMDUtMDkgMTk6MjQ6MTguNjg3MjUyNzcxICswMjAw CisrKysgZ2RiLTcuNy4xL2dkYi9jcmlzLXRkZXAuYwkyMDE0LTA1LTA5IDIwOjAyOjA5LjYyMzcw Mzc2OCArMDIwMAogQEAgLTY2NSwxMyArNjY1LDEzIEBAIHN0YXRpYyBDT1JFX0FERFIgY3Jpc191 bndpbmRfc3AgKHN0cnVjdAogIAogIHN0cnVjdCBzdGFja19pdGVtCkBAIC00MDUsMTAgKzQwNSwx MCBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvY3Jpcy10ZGVwLmMKICAgICAgICAK ICAgICAgICAvKiBIb3cgbWF5IHJlZ2lzdGVycyB3b3J0aCBvZiBzdG9yYWdlIGRvIHdlIG5lZWQg Zm9yIHRoaXMgYXJndW1lbnQ/ICAqLwogICAgICAgIHJlZ19kZW1hbmQgPSAobGVuIC8gNCkgKyAo bGVuICUgNCAhPSAwID8gMSA6IDApOwotSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2g4 MzAwLXRkZXAuYworSW5kZXg6IGdkYi03LjcuMS9nZGIvaDgzMDAtdGRlcC5jCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dkYi9oODMwMC10ZGVwLmMJMjAxNC0wMi0w NiAxODoyMDo1Mi45ODE3NDc3MjggKzAxMDAKLSsrKyBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9o ODMwMC10ZGVwLmMJMjAxNC0wMi0wNiAxODoyMDo1Ny4zMDE3NTIzNjkgKzAxMDAKKy0tLSBnZGIt Ny43LjEub3JpZy9nZGIvaDgzMDAtdGRlcC5jCTIwMTQtMDUtMDkgMTk6MjQ6MTguNjg4MjUyNzcx ICswMjAwCisrKysgZ2RiLTcuNy4xL2dkYi9oODMwMC10ZGVwLmMJMjAxNC0wNS0wOSAyMDowMjow OS42MjQ3MDM3NjggKzAyMDAKIEBAIC02NDAsNyArNjQwLDcgQEAgaDgzMDBfcHVzaF9kdW1teV9j YWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZwogIAkJICAgICAgIGludCBzdHJ1Y3RfcmV0dXJuLCBDT1JF X0FERFIgc3RydWN0X2FkZHIpCiAgewpAQCAtNDQxLDEwICs0NDEsMTAgQEAgSW5kZXg6IGdkYi03 LjYuOTAuMjAxNDAxMjcvZ2RiL2g4MzAwLXRkZXAuYwogIAogIAkgICAgICBmb3IgKG9mZnNldCA9 IDA7IG9mZnNldCA8IHBhZGRlZF9sZW47IG9mZnNldCArPSB3b3Jkc2l6ZSkKICAJCXsKLUluZGV4 OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9ocHBhLXRkZXAuYworSW5kZXg6IGdkYi03LjcuMS9n ZGIvaHBwYS10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42LjkwLjIwMTQwMTI3Lm9yaWcv Z2RiL2hwcGEtdGRlcC5jCTIwMTQtMDItMDYgMTg6MjA6NTIuOTgyNzQ3NzI5ICswMTAwCi0rKysg Z2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvaHBwYS10ZGVwLmMJMjAxNC0wMi0wNiAxODoyMDo1Ny4z MDI3NTIzNzEgKzAxMDAKKy0tLSBnZGItNy43LjEub3JpZy9nZGIvaHBwYS10ZGVwLmMJMjAxNC0w NS0wOSAxOToyNDoxOC42OTAyNTI3NzEgKzAyMDAKKysrKyBnZGItNy43LjEvZ2RiL2hwcGEtdGRl cC5jCTIwMTQtMDUtMDkgMjA6MDI6MDkuNjI0NzAzNzY4ICswMjAwCiBAQCAtOTYxLDcgKzk2MSw3 IEBAIGhwcGE2NF9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICoKICAgICAgewogICAg ICAgIHN0cnVjdCB2YWx1ZSAqYXJnID0gYXJnc1tpXTsKQEAgLTQ2MywxMCArNDYzLDEwIEBAIElu ZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9ocHBhLXRkZXAuYwogICAgaW50IHJlZ251bSwg b2Zmc2V0OwogIAogICAgaWYgKGxlbiA+IDE2KQotSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcv Z2RiL2kzODYtZGFyd2luLXRkZXAuYworSW5kZXg6IGdkYi03LjcuMS9nZGIvaTM4Ni1kYXJ3aW4t dGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dkYi9pMzg2 LWRhcndpbi10ZGVwLmMJMjAxNC0wMi0wNiAxODoyMDo1Mi45ODI3NDc3MjkgKzAxMDAKLSsrKyBn ZGItNy42LjkwLjIwMTQwMTI3L2dkYi9pMzg2LWRhcndpbi10ZGVwLmMJMjAxNC0wMi0wNiAxODoy MDo1Ny4zMDI3NTIzNzEgKzAxMDAKKy0tLSBnZGItNy43LjEub3JpZy9nZGIvaTM4Ni1kYXJ3aW4t dGRlcC5jCTIwMTQtMDUtMDkgMTk6MjQ6MTguNjkwMjUyNzcxICswMjAwCisrKysgZ2RiLTcuNy4x L2dkYi9pMzg2LWRhcndpbi10ZGVwLmMJMjAxNC0wNS0wOSAyMDowMjowOS42MjQ3MDM3NjggKzAy MDAKIEBAIC0xNjQsNyArMTY0LDcgQEAgaTM4Nl9kYXJ3aW5fcHVzaF9kdW1teV9jYWxsIChzdHJ1 Y3QgZ2RiYQogIAogICAgZm9yICh3cml0ZV9wYXNzID0gMDsgd3JpdGVfcGFzcyA8IDI7IHdyaXRl X3Bhc3MrKykKQEAgLTQ3NiwxMCArNDc2LDEwIEBAIEluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3 L2dkYi9pMzg2LWRhcndpbi10ZGVwLmMKICAgICAgICBpbnQgbnVtX20xMjggPSAwOwogIAogICAg ICAgIGlmIChzdHJ1Y3RfcmV0dXJuKQotSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2kz ODYtdGRlcC5jCitJbmRleDogZ2RiLTcuNy4xL2dkYi9pMzg2LXRkZXAuYwogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIvaTM4Ni10ZGVwLmMJMjAxNC0wMi0wNiAx ODoyMDo1Mi45ODU3NDc3MzIgKzAxMDAKLSsrKyBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9pMzg2 LXRkZXAuYwkyMDE0LTAyLTA2IDE4OjIwOjU3LjMwMzc1MjM3MiArMDEwMAorLS0tIGdkYi03Ljcu MS5vcmlnL2dkYi9pMzg2LXRkZXAuYwkyMDE0LTA1LTA5IDE5OjI0OjE4LjY5MjI1Mjc3MSArMDIw MAorKysrIGdkYi03LjcuMS9nZGIvaTM4Ni10ZGVwLmMJMjAxNC0wNS0wOSAyMDowMjowOS42MjU3 MDM3NjkgKzAyMDAKIEBAIC0yNDczLDcgKzI0NzMsNyBAQCBpMzg2X3B1c2hfZHVtbXlfY2FsbCAo c3RydWN0IGdkYmFyY2ggKmdkCiAgICBnZGJfYnl0ZSBidWZbNF07CiAgICBpbnQgaTsKQEAgLTU0 MywxMCArNTQzLDEwIEBAIEluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9pMzg2LXRkZXAu YwogIAogICAgaWYgKGkzODZfZnBfcmVnbnVtX3AgKGdldF9mcmFtZV9hcmNoIChmcmFtZSksIHJl Z251bSkpCiAgICAgIHsKLUluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9pYTY0LXRkZXAu YworSW5kZXg6IGdkYi03LjcuMS9nZGIvaWE2NC10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny42LjkwLjIwMTQwMTI3Lm9yaWcvZ2RiL2lhNjQtdGRlcC5jCTIwMTQtMDItMDYgMTg6MjA6NTIu OTg2NzQ3NzMzICswMTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvaWE2NC10ZGVwLmMJ MjAxNC0wMi0wNiAxODoyMDo1Ny4zMDQ3NTIzNzMgKzAxMDAKKy0tLSBnZGItNy43LjEub3JpZy9n ZGIvaWE2NC10ZGVwLmMJMjAxNC0wNS0wOSAxOToyNDoxOC42OTMyNTI3NzEgKzAyMDAKKysrKyBn ZGItNy43LjEvZ2RiL2lhNjQtdGRlcC5jCTIwMTQtMDUtMDkgMjA6MDI6MDkuNjI2NzAzNzY5ICsw MjAwCiBAQCAtMzg1MSw4ICszODUxLDEwIEBAIGlhNjRfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3Qg Z2RiYXJjaCAqZ2QKICAgIGludCBhcmdubzsKICAgIHN0cnVjdCB2YWx1ZSAqYXJnOwpAQCAtNTYw LDEwICs1NjAsMTAgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2lhNjQtdGRlcC5j CiAgICBpbnQgZmxvYXRyZWc7CiAgICBVTE9OR0VTVCBic3A7CiAgICBDT1JFX0FERFIgZnVuY2Rl c2NhZGRyLCBwYywgZ2xvYmFsX3BvaW50ZXI7Ci1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9n ZGIvaXEyMDAwLXRkZXAuYworSW5kZXg6IGdkYi03LjcuMS9nZGIvaXEyMDAwLXRkZXAuYwogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIvaXEyMDAwLXRkZXAuYwky MDE0LTAyLTA2IDE4OjIwOjUyLjk4Njc0NzczMyArMDEwMAotKysrIGdkYi03LjYuOTAuMjAxNDAx MjcvZ2RiL2lxMjAwMC10ZGVwLmMJMjAxNC0wMi0wNiAxODoyMDo1Ny4zMDQ3NTIzNzMgKzAxMDAK Ky0tLSBnZGItNy43LjEub3JpZy9nZGIvaXEyMDAwLXRkZXAuYwkyMDE0LTA1LTA5IDE5OjI0OjE4 LjY5MzI1Mjc3MSArMDIwMAorKysrIGdkYi03LjcuMS9nZGIvaXEyMDAwLXRkZXAuYwkyMDE0LTA1 LTA5IDIwOjAyOjA5LjYyNjcwMzc2OSArMDIwMAogQEAgLTY1NCw4ICs2NTQsOSBAQCBpcTIwMDBf cHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqCiAgICBjb25zdCBiZmRfYnl0ZSAqdmFs OwogICAgYmZkX2J5dGUgYnVmWzRdOwpAQCAtNTc2LDEwICs1NzYsMTAgQEAgSW5kZXg6IGdkYi03 LjYuOTAuMjAxNDAxMjcvZ2RiL2lxMjAwMC10ZGVwLmMKICAgIC8qIFVzZWQgdG8gY29weSBzdHJ1 Y3QgYXJndW1lbnRzIGludG8gdGhlIHN0YWNrLiAgKi8KICAgIENPUkVfQUREUiBzdHJ1Y3RfcHRy OwogIAotSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL20zMnItdGRlcC5jCitJbmRleDog Z2RiLTcuNy4xL2dkYi9tMzJyLXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYuOTAuMjAx NDAxMjcub3JpZy9nZGIvbTMyci10ZGVwLmMJMjAxNC0wMi0wNiAxODoyMDo1Mi45ODY3NDc3MzMg KzAxMDAKLSsrKyBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9tMzJyLXRkZXAuYwkyMDE0LTAyLTA2 IDE4OjIwOjU3LjMwNDc1MjM3MyArMDEwMAorLS0tIGdkYi03LjcuMS5vcmlnL2dkYi9tMzJyLXRk ZXAuYwkyMDE0LTA1LTA5IDE5OjI0OjE4LjY5MzI1Mjc3MSArMDIwMAorKysrIGdkYi03LjcuMS9n ZGIvbTMyci10ZGVwLmMJMjAxNC0wNS0wOSAyMDowMjowOS42MjY3MDM3NjkgKzAyMDAKIEBAIC02 ODksNyArNjg5LDcgQEAgbTMycl9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpnZAog ICAgQ09SRV9BRERSIHJlZ3ZhbDsKICAgIGdkYl9ieXRlICp2YWw7CkBAIC01ODksMTAgKzU4OSwx MCBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvbTMyci10ZGVwLmMKICAKICAgIC8q IEZpcnN0IGZvcmNlIHNwIHRvIGEgNC1ieXRlIGFsaWdubWVudC4gICovCiAgICBzcCA9IHNwICYg fjM7Ci1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvbTY4ay10ZGVwLmMKK0luZGV4OiBn ZGItNy43LjEvZ2RiL202OGstdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0 MDEyNy5vcmlnL2dkYi9tNjhrLXRkZXAuYwkyMDE0LTAyLTA2IDE4OjIwOjUyLjk4Nzc0NzczNSAr MDEwMAotKysrIGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL202OGstdGRlcC5jCTIwMTQtMDItMDYg MTg6MjA6NTcuMzA1NzUyMzc0ICswMTAwCistLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL202OGstdGRl cC5jCTIwMTQtMDUtMDkgMTk6MjQ6MTguNjk0MjUyNzcxICswMjAwCisrKysgZ2RiLTcuNy4xL2dk Yi9tNjhrLXRkZXAuYwkyMDE0LTA1LTA5IDIwOjAyOjA5LjYyNzcwMzc2OSArMDIwMAogQEAgLTM4 NCw3ICszODQsNyBAQCBtNjhrX3JlZ19zdHJ1Y3RfcmV0dXJuX3AgKHN0cnVjdCBnZGJhcmNoCiAg ewogICAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAoZ2RiYXJjaCk7 CkBAIC02MTUsMTAgKzYxNSwxMCBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvbTY4 ay10ZGVwLmMKICAKICAgICAgICAvKiBOb24tc2NhbGFycyBiaWdnZXIgdGhhbiA0IGJ5dGVzIGFy ZSBsZWZ0IGFsaWduZWQsIG90aGVycyBhcmUKICAJIHJpZ2h0IGFsaWduZWQuICAqLwotSW5kZXg6 IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL204OGstdGRlcC5jCitJbmRleDogZ2RiLTcuNy4xL2dk Yi9tODhrLXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9n ZGIvbTg4ay10ZGVwLmMJMjAxNC0wMi0wNiAxODoyMDo1Mi45ODc3NDc3MzUgKzAxMDAKLSsrKyBn ZGItNy42LjkwLjIwMTQwMTI3L2dkYi9tODhrLXRkZXAuYwkyMDE0LTAyLTA2IDE4OjIwOjU3LjMw NTc1MjM3NCArMDEwMAorLS0tIGdkYi03LjcuMS5vcmlnL2dkYi9tODhrLXRkZXAuYwkyMDE0LTA1 LTA5IDE5OjI0OjE4LjY5NDI1Mjc3MSArMDIwMAorKysrIGdkYi03LjcuMS9nZGIvbTg4ay10ZGVw LmMJMjAxNC0wNS0wOSAyMDowMjowOS42Mjc3MDM3NjkgKzAyMDAKIEBAIC0yNjAsMTMgKzI2MCwx MyBAQCBtODhrX3N0b3JlX2FyZ3VtZW50cyAoc3RydWN0IHJlZ2NhY2hlICpyCiAgewogICAgc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfcmVnY2FjaGVfYXJjaCAocmVnY2FjaGUpOwpAQCAt NjQ2LDEwICs2NDYsMTAgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL204OGstdGRl cC5jCiAgCiAgICAgICAgaWYgKG04OGtfaW5fcmVnaXN0ZXJfcCAodHlwZSkpCiAgCXsKLUluZGV4 OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9tZXAtdGRlcC5jCitJbmRleDogZ2RiLTcuNy4xL2dk Yi9tZXAtdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dk Yi9tZXAtdGRlcC5jCTIwMTQtMDItMDYgMTg6MjA6NTIuOTg3NzQ3NzM1ICswMTAwCi0rKysgZ2Ri LTcuNi45MC4yMDE0MDEyNy9nZGIvbWVwLXRkZXAuYwkyMDE0LTAyLTA2IDE4OjIwOjU3LjMwNjc1 MjM3NSArMDEwMAorLS0tIGdkYi03LjcuMS5vcmlnL2dkYi9tZXAtdGRlcC5jCTIwMTQtMDUtMDkg MTk6MjQ6MTguNjk1MjUyNzcyICswMjAwCisrKysgZ2RiLTcuNy4xL2dkYi9tZXAtdGRlcC5jCTIw MTQtMDUtMDkgMjA6MDI6MDkuNjI3NzAzNzY5ICswMjAwCiBAQCAtMjI3Miw3ICsyMjcyLDcgQEAg cHVzaF9sYXJnZV9hcmd1bWVudHMgKENPUkVfQUREUiBzcCwgaW50CiAgCiAgICBmb3IgKGkgPSAw OyBpIDwgYXJnYzsgaSsrKQpAQCAtNjU5LDEwICs2NTksMTAgQEAgSW5kZXg6IGdkYi03LjYuOTAu MjAxNDAxMjcvZ2RiL21lcC10ZGVwLmMKICAKICAgICAgICBpZiAoYXJnX2xlbiA+IE1FUF9HUFJf U0laRSkKICAgICAgICAgIHsKLUluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9taXBzLXRk ZXAuYworSW5kZXg6IGdkYi03LjcuMS9nZGIvbWlwcy10ZGVwLmMKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy42LjkwLjIwMTQwMTI3Lm9yaWcvZ2RiL21pcHMtdGRlcC5jCTIwMTQtMDItMDYgMTg6MjA6 NTIuOTkwNzQ3NzM4ICswMTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvbWlwcy10ZGVw LmMJMjAxNC0wMi0wNiAxODoyMDo1Ny4zMDc3NTIzNzYgKzAxMDAKKy0tLSBnZGItNy43LjEub3Jp Zy9nZGIvbWlwcy10ZGVwLmMJMjAxNC0wNS0wOSAxOToyNDoxOC42OTgyNTI3NzIgKzAyMDAKKysr KyBnZGItNy43LjEvZ2RiL21pcHMtdGRlcC5jCTIwMTQtMDUtMDkgMjA6MDI6MDkuNjI4NzAzNzY5 ICswMjAwCiBAQCAtNDAyLDcgKzQwMiw3IEBAIHN0YXRpYyB2b2lkCiAgbWlwc194ZmVyX3JlZ2lz dGVyIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwK ICAJCSAgICBpbnQgcmVnX251bSwgaW50IGxlbmd0aCwKQEAgLTgwOCwxMCArODA4LDEwIEBAIElu ZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9taXBzLXRkZXAuYwogIAogICAgICAgIHZhbCA9 IHZhbHVlX2NvbnRlbnRzIChhcmcpOwogIAotSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2Ri L21uMTAzMDAtdGRlcC5jCitJbmRleDogZ2RiLTcuNy4xL2dkYi9tbjEwMzAwLXRkZXAuYwogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIvbW4xMDMwMC10ZGVwLmMJ MjAxNC0wMi0wNiAxODoyMDo1Mi45OTE3NDc3MzkgKzAxMDAKLSsrKyBnZGItNy42LjkwLjIwMTQw MTI3L2dkYi9tbjEwMzAwLXRkZXAuYwkyMDE0LTAyLTA2IDE4OjIwOjU3LjMwODc1MjM3NyArMDEw MAorLS0tIGdkYi03LjcuMS5vcmlnL2dkYi9tbjEwMzAwLXRkZXAuYwkyMDE0LTA1LTA5IDE5OjI0 OjE4LjY5ODI1Mjc3MiArMDIwMAorKysrIGdkYi03LjcuMS9nZGIvbW4xMDMwMC10ZGVwLmMJMjAx NC0wNS0wOSAyMDowMjowOS42Mjk3MDM3NzAgKzAyMDAKIEBAIC0xMjI3LDcgKzEyMjcsNyBAQCBt bjEwMzAwX3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2gKICAgIGVudW0gYmZkX2VuZGlh biBieXRlX29yZGVyID0gZ2RiYXJjaF9ieXRlX29yZGVyIChnZGJhcmNoKTsKICAgIGNvbnN0IGlu dCBwdXNoX3NpemUgPSByZWdpc3Rlcl9zaXplIChnZGJhcmNoLCBFX1BDX1JFR05VTSk7CkBAIC04 MjEsMTAgKzgyMSwxMCBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvbW4xMDMwMC10 ZGVwLmMKICAgIGludCBzdGFja19vZmZzZXQgPSAwOwogICAgaW50IGFyZ251bTsKICAgIGNvbnN0 IGdkYl9ieXRlICp2YWw7Ci1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvbXQtdGRlcC5j CitJbmRleDogZ2RiLTcuNy4xL2dkYi9tdC10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42 LjkwLjIwMTQwMTI3Lm9yaWcvZ2RiL210LXRkZXAuYwkyMDE0LTAyLTA2IDE4OjIwOjUyLjk5MTc0 NzczOSArMDEwMAotKysrIGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL210LXRkZXAuYwkyMDE0LTAy LTA2IDE4OjIwOjU3LjMwODc1MjM3NyArMDEwMAorLS0tIGdkYi03LjcuMS5vcmlnL2dkYi9tdC10 ZGVwLmMJMjAxNC0wNS0wOSAxOToyNDoxOC42OTkyNTI3NzIgKzAyMDAKKysrKyBnZGItNy43LjEv Z2RiL210LXRkZXAuYwkyMDE0LTA1LTA5IDIwOjAyOjA5LjYyOTcwMzc3MCArMDIwMAogQEAgLTc4 Myw5ICs3ODMsOSBAQCBtdF9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpnZGJhCiAg ICBnZGJfYnl0ZSBidWZbTVRfTUFYX1NUUlVDVF9TSVpFXTsKICAgIGludCBhcmdyZWcgPSBNVF8x U1RfQVJHUkVHOwpAQCAtODM3LDEwICs4MzcsMTAgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAx MjcvZ2RiL210LXRkZXAuYwogICAgaW50IGksIGo7CiAgCiAgICAvKiBGaXJzdCBoYW5kbGUgaG93 ZXZlciBtYW55IGFyZ3Mgd2UgY2FuIGZpdCBpbnRvIE1UXzFTVF9BUkdSRUcgdGhydQotSW5kZXg6 IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3BwYy1zeXN2LXRkZXAuYworSW5kZXg6IGdkYi03Ljcu MS9nZGIvcHBjLXN5c3YtdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEy Ny5vcmlnL2dkYi9wcGMtc3lzdi10ZGVwLmMJMjAxNC0wMi0wNiAxODoyMDo1Mi45OTI3NDc3NDAg KzAxMDAKLSsrKyBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9wcGMtc3lzdi10ZGVwLmMJMjAxNC0w Mi0wNiAxODoyMDo1Ny4zMDg3NTIzNzcgKzAxMDAKKy0tLSBnZGItNy43LjEub3JpZy9nZGIvcHBj LXN5c3YtdGRlcC5jCTIwMTQtMDUtMDkgMTk6MjQ6MTguNjk5MjUyNzcyICswMjAwCisrKysgZ2Ri LTcuNy4xL2dkYi9wcGMtc3lzdi10ZGVwLmMJMjAxNC0wNS0wOSAyMDoxMDoxMy45OTQ4MDc3MDkg KzAyMDAKIEBAIC02OCw3ICs2OCw3IEBAIHBwY19zeXN2X2FiaV9wdXNoX2R1bW15X2NhbGwgKHN0 cnVjdCBnZGIKICAgIGVudW0gYmZkX2VuZGlhbiBieXRlX29yZGVyID0gZ2RiYXJjaF9ieXRlX29y ZGVyIChnZGJhcmNoKTsKICAgIGludCBvcGVuY2xfYWJpID0gcHBjX3N5c3ZfdXNlX29wZW5jbF9h YmkgKHZhbHVlX3R5cGUgKGZ1bmN0aW9uKSk7CkBAIC04NzEsMzYgKzg3MSwyNCBAQCBJbmRleDog Z2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvcHBjLXN5c3YtdGRlcC5jCiAgCSAgY29uc3QgYmZkX2J5 dGUgKnZhbCA9IHZhbHVlX2NvbnRlbnRzIChhcmcpOwogIAogIAkgIGlmIChUWVBFX0NPREUgKHR5 cGUpID09IFRZUEVfQ09ERV9GTFQgJiYgbGVuIDw9IDgKLUBAIC0xNjEzLDE0ICsxNjEzLDE0IEBA IHBwYzY0X3N5c3ZfYWJpX3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGcKLSAJICAgIH0KLSAJICBl bHNlCi0gCSAgICB7Ci0tCSAgICAgIGludCBieXRlOwotKwkgICAgICBzc2l6ZV90IGJ5dGU7Ci0g CSAgICAgIGZvciAoYnl0ZSA9IDA7IGJ5dGUgPCBUWVBFX0xFTkdUSCAodHlwZSk7Ci0gCQkgICBi eXRlICs9IHRkZXAtPndvcmRzaXplKQotIAkJewotIAkJICBpZiAod3JpdGVfcGFzcyAmJiBncmVn IDw9IDEwKQotIAkJICAgIHsKLSAJCSAgICAgIGdkYl9ieXRlIHJlZ3ZhbFtNQVhfUkVHSVNURVJf U0laRV07Ci0tCQkgICAgICBpbnQgbGVuID0gVFlQRV9MRU5HVEggKHR5cGUpIC0gYnl0ZTsKLSsJ CSAgICAgIHNzaXplX3QgbGVuID0gVFlQRV9MRU5HVEggKHR5cGUpIC0gYnl0ZTsKLSAJCSAgICAg IGlmIChsZW4gPiB0ZGVwLT53b3Jkc2l6ZSkKLSAJCQlsZW4gPSB0ZGVwLT53b3Jkc2l6ZTsKLSAJ CSAgICAgIG1lbXNldCAocmVndmFsLCAwLCBzaXplb2YgcmVndmFsKTsKLUBAIC0xNjQ4LDcgKzE2 NDgsNyBAQCBwcGM2NF9zeXN2X2FiaV9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnCi0gCQkgICAg IHJlZ2lzdGVyLiAgV29yayBhcm91bmQgdGhpcyBieSBhbHdheXMgd3JpdGluZyB0aGUKLSAJCSAg ICAgdmFsdWUgdG8gbWVtb3J5LiAgRm9ydHVuYXRlbHksIGRvaW5nIHRoaXMKLSAJCSAgICAgc2lt cGxpZmllcyB0aGUgY29kZS4gICovCi0tCQkgIGludCBsZW4gPSBUWVBFX0xFTkdUSCAodHlwZSk7 Ci0rCQkgIHNzaXplX3QgbGVuID0gVFlQRV9MRU5HVEggKHR5cGUpOwotIAkJICBpZiAobGVuIDwg dGRlcC0+d29yZHNpemUpCi0gCQkgICAgd3JpdGVfbWVtb3J5IChncGFyYW0gKyB0ZGVwLT53b3Jk c2l6ZSAtIGxlbiwgdmFsLCBsZW4pOwotIAkJICBlbHNlCi1JbmRleDogZ2RiLTcuNi45MC4yMDE0 MDEyNy9nZGIvcmw3OC10ZGVwLmMKK0BAIC0xMjg1LDExICsxMjg1LDExIEBAIHN0cnVjdCBwcGM2 NF9zeXN2X2FyZ3BvcworIAorIHN0YXRpYyB2b2lkCisgcHBjNjRfc3lzdl9hYmlfcHVzaF92YWwg KHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorLQkJCSBjb25zdCBiZmRfYnl0ZSAqdmFsLCBpbnQg bGVuLCBpbnQgYWxpZ24sCisrCQkJIGNvbnN0IGJmZF9ieXRlICp2YWwsIHNzaXplX3QgbGVuLCBp bnQgYWxpZ24sCisgCQkJIHN0cnVjdCBwcGM2NF9zeXN2X2FyZ3BvcyAqYXJncG9zKQorIHsKKyAg IHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpOworLSAg aW50IG9mZnNldCA9IDA7CisrICBzc2l6ZV90IG9mZnNldCA9IDA7CisgCisgICAvKiBFbmZvcmNl IGFsaWdubWVudCBvZiBzdGFjayBsb2NhdGlvbiwgaWYgcmVxdWVzdGVkLiAgKi8KKyAgIGlmIChh bGlnbiA+IHRkZXAtPndvcmRzaXplKQorSW5kZXg6IGdkYi03LjcuMS9nZGIvcmw3OC10ZGVwLmMK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy42LjkwLjIwMTQwMTI3Lm9yaWcvZ2RiL3JsNzgtdGRlcC5j CTIwMTQtMDItMDYgMTg6MjA6NTIuOTkyNzQ3NzQwICswMTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0 MDEyNy9nZGIvcmw3OC10ZGVwLmMJMjAxNC0wMi0wNiAxODoyMDo1Ny4zMDk3NTIzNzggKzAxMDAK Ky0tLSBnZGItNy43LjEub3JpZy9nZGIvcmw3OC10ZGVwLmMJMjAxNC0wNS0wOSAxOToyNDoxOC43 MDAyNTI3NzIgKzAyMDAKKysrKyBnZGItNy43LjEvZ2RiL3JsNzgtdGRlcC5jCTIwMTQtMDUtMDkg MjA6MDI6MDkuNjMwNzAzNzcwICswMjAwCiBAQCAtMTA1Miw4ICsxMDUyLDggQEAgcmw3OF9wdXNo X2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpnZAogICAgZm9yIChpID0gbmFyZ3MgLSAxOyBp ID49IDA7IGktLSkKICAgICAgewpAQCAtOTEyLDEwICs5MDAsMTAgQEAgSW5kZXg6IGdkYi03LjYu OTAuMjAxNDAxMjcvZ2RiL3JsNzgtdGRlcC5jCiAgCiAgICAgICAgc3AgLT0gY29udGFpbmVyX2xl bjsKICAgICAgICB3cml0ZV9tZW1vcnkgKHJsNzhfbWFrZV9kYXRhX2FkZHJlc3MgKHNwKSwKLUlu ZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9yczYwMDAtYWl4LXRkZXAuYworSW5kZXg6IGdk Yi03LjcuMS9nZGIvcnM2MDAwLWFpeC10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42Ljkw LjIwMTQwMTI3Lm9yaWcvZ2RiL3JzNjAwMC1haXgtdGRlcC5jCTIwMTQtMDItMDYgMTg6MjA6NTIu OTkzNzQ3NzQxICswMTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvcnM2MDAwLWFpeC10 ZGVwLmMJMjAxNC0wMi0wNiAxODoyMDo1Ny4zMDk3NTIzNzggKzAxMDAKKy0tLSBnZGItNy43LjEu b3JpZy9nZGIvcnM2MDAwLWFpeC10ZGVwLmMJMjAxNC0wNS0wOSAxOToyNDoxOC43MDAyNTI3NzIg KzAyMDAKKysrKyBnZGItNy43LjEvZ2RiL3JzNjAwMC1haXgtdGRlcC5jCTIwMTQtMDUtMDkgMjA6 MDI6MDkuNjMwNzAzNzcwICswMjAwCiBAQCAtMTk2LDkgKzE5Niw5IEBAIHJzNjAwMF9wdXNoX2R1 bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICoKICAgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAg PSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpOwogICAgZW51bSBiZmRfZW5kaWFuIGJ5dGVfb3JkZXIg PSBnZGJhcmNoX2J5dGVfb3JkZXIgKGdkYmFyY2gpOwpAQCAtOTM3LDEwICs5MjUsMTAgQEAgSW5k ZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3JzNjAwMC1haXgtdGRlcC5jCiAgCiAgICAgICAg aWYgKGFyZ2J5dGVzKQogIAl7Ci1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvczM5MC1s aW51eC10ZGVwLmMKK0luZGV4OiBnZGItNy43LjEvZ2RiL3MzOTAtbGludXgtdGRlcC5jCiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dkYi9zMzkwLWxpbnV4LXRkZXAu YwkyMDE0LTAyLTA2IDE4OjIwOjUyLjk5Mzc0Nzc0MSArMDEwMAotKysrIGdkYi03LjYuOTAuMjAx NDAxMjcvZ2RiL3MzOTAtbGludXgtdGRlcC5jCTIwMTQtMDItMDYgMTg6MjI6MTcuMzMwODM4Mzg5 ICswMTAwCistLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL3MzOTAtbGludXgtdGRlcC5jCTIwMTQtMDUt MDkgMTk6MjQ6MTguNzAxMjUyNzcyICswMjAwCisrKysgZ2RiLTcuNy4xL2dkYi9zMzkwLWxpbnV4 LXRkZXAuYwkyMDE0LTA1LTA5IDIwOjAyOjA5LjYzMTcwMzc3MCArMDIwMAogQEAgLTI1MjYsNyAr MjUyNiw3IEBAIGlzX2Zsb2F0X2xpa2UgKHN0cnVjdCB0eXBlICp0eXBlKQogIAogIApAQCAtOTU5 LDEwICs5NDcsMTAgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3MzOTAtbGludXgt dGRlcC5jCiAgCiAgCWlmIChzMzkwX2Z1bmN0aW9uX2FyZ19wYXNzX2J5X3JlZmVyZW5jZSAodHlw ZSkpCiAgCSAgewotSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3Njb3JlLXRkZXAuYwor SW5kZXg6IGdkYi03LjcuMS9nZGIvc2NvcmUtdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu Ni45MC4yMDE0MDEyNy5vcmlnL2dkYi9zY29yZS10ZGVwLmMJMjAxNC0wMi0wNiAxODoyMDo1Mi45 OTQ3NDc3NDIgKzAxMDAKLSsrKyBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9zY29yZS10ZGVwLmMJ MjAxNC0wMi0wNiAxODoyMDo1Ny4zMTA3NTIzNzkgKzAxMDAKKy0tLSBnZGItNy43LjEub3JpZy9n ZGIvc2NvcmUtdGRlcC5jCTIwMTQtMDUtMDkgMTk6MjQ6MTguNzAxMjUyNzcyICswMjAwCisrKysg Z2RiLTcuNy4xL2dkYi9zY29yZS10ZGVwLmMJMjAxNC0wNS0wOSAyMDowMjowOS42MzE3MDM3NzAg KzAyMDAKIEBAIC01MTUsNyArNTE1LDcgQEAgc2NvcmVfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3Qg Z2RiYXJjaCAqZwogICAgZW51bSBiZmRfZW5kaWFuIGJ5dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVf b3JkZXIgKGdkYmFyY2gpOwogICAgaW50IGFyZ251bTsKQEAgLTk3MiwxMCArOTYwLDEwIEBAIElu ZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9zY29yZS10ZGVwLmMKICAgIENPUkVfQUREUiBz dGFja19vZmZzZXQgPSAwOwogICAgQ09SRV9BRERSIGFkZHIgPSAwOwogIAotSW5kZXg6IGdkYi03 LjYuOTAuMjAxNDAxMjcvZ2RiL3NoLXRkZXAuYworSW5kZXg6IGdkYi03LjcuMS9nZGIvc2gtdGRl cC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dkYi9zaC10ZGVw LmMJMjAxNC0wMi0wNiAxODoyMDo1Mi45OTU3NDc3NDMgKzAxMDAKLSsrKyBnZGItNy42LjkwLjIw MTQwMTI3L2dkYi9zaC10ZGVwLmMJMjAxNC0wMi0wNiAxODoyMDo1Ny4zMTA3NTIzNzkgKzAxMDAK Ky0tLSBnZGItNy43LjEub3JpZy9nZGIvc2gtdGRlcC5jCTIwMTQtMDUtMDkgMTk6MjQ6MTguNzAy MjUyNzcyICswMjAwCisrKysgZ2RiLTcuNy4xL2dkYi9zaC10ZGVwLmMJMjAxNC0wNS0wOSAyMDow MjowOS42MzE3MDM3NzAgKzAyMDAKIEBAIC04MDcsNyArODA3LDcgQEAgc2hfc2tpcF9wcm9sb2d1 ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyYwogIHN0YXRpYyBpbnQKICBzaF91c2Vfc3RydWN0X2Nv bnZlbnRpb24gKGludCByZW5lc2FzX2FiaSwgc3RydWN0IHR5cGUgKnR5cGUpCkBAIC0xMDE0LDEw ICsxMDAyLDEwIEBAIEluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9zaC10ZGVwLmMKICAg IGludCBwYXNzX29uX3N0YWNrID0gMDsKICAgIGludCBsYXN0X3JlZ19hcmcgPSBJTlRfTUFYOwog IAotSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3NoNjQtdGRlcC5jCitJbmRleDogZ2Ri LTcuNy4xL2dkYi9zaDY0LXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAx Mjcub3JpZy9nZGIvc2g2NC10ZGVwLmMJMjAxNC0wMi0wNiAxODoyMDo1Mi45OTU3NDc3NDMgKzAx MDAKLSsrKyBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9zaDY0LXRkZXAuYwkyMDE0LTAyLTA2IDE4 OjIwOjU3LjMxMTc1MjM4MCArMDEwMAorLS0tIGdkYi03LjcuMS5vcmlnL2dkYi9zaDY0LXRkZXAu YwkyMDE0LTA1LTA5IDE5OjI0OjE4LjcwMjI1Mjc3MiArMDIwMAorKysrIGdkYi03LjcuMS9nZGIv c2g2NC10ZGVwLmMJMjAxNC0wNS0wOSAyMDowMjowOS42MzI3MDM3NzEgKzAyMDAKIEBAIC0xMDU4 LDcgKzEwNTgsNyBAQCBzaDY0X3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKmdkCiAg CQkgICAgICBDT1JFX0FERFIgc3RydWN0X2FkZHIpCiAgewpAQCAtMTAzNiwxMCArMTAyNCwxMCBA QCBJbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvc2g2NC10ZGVwLmMKICAgIGludCBhcmdy ZWdfc2l6ZTsKICAgIGludCBmcF9hcmdzWzEyXTsKICAKLUluZGV4OiBnZGItNy42LjkwLjIwMTQw MTI3L2dkYi9zcGFyYy10ZGVwLmMKK0luZGV4OiBnZGItNy43LjEvZ2RiL3NwYXJjLXRkZXAuYwog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIvc3BhcmMtdGRlcC5j CTIwMTQtMDItMDYgMTg6MjA6NTIuOTk2NzQ3NzQ0ICswMTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0 MDEyNy9nZGIvc3BhcmMtdGRlcC5jCTIwMTQtMDItMDYgMTg6MjA6NTcuMzExNzUyMzgwICswMTAw CistLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL3NwYXJjLXRkZXAuYwkyMDE0LTA1LTA5IDE5OjI0OjE4 LjcwMzI1Mjc3MiArMDIwMAorKysrIGdkYi03LjcuMS9nZGIvc3BhcmMtdGRlcC5jCTIwMTQtMDUt MDkgMjA6MDI6MDkuNjMyNzAzNzcxICswMjAwCiBAQCAtNTAyLDcgKzUwMiw3IEBAIHNwYXJjMzJf c3RvcmVfYXJndW1lbnRzIChzdHJ1Y3QgcmVnY2FjaGUKICAgIGZvciAoaSA9IDA7IGkgPCBuYXJn czsgaSsrKQogICAgICB7CkBAIC0xMDQ5LDEwICsxMDM3LDEwIEBAIEluZGV4OiBnZGItNy42Ljkw LjIwMTQwMTI3L2dkYi9zcGFyYy10ZGVwLmMKICAKICAgICAgICBpZiAoc3BhcmNfc3RydWN0dXJl X29yX3VuaW9uX3AgKHR5cGUpCiAgCSAgfHwgKHNwYXJjX2Zsb2F0aW5nX3AgKHR5cGUpICYmIGxl biA9PSAxNikKLUluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9zcGFyYzY0LXRkZXAuYwor SW5kZXg6IGdkYi03LjcuMS9nZGIvc3BhcmM2NC10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny42LjkwLjIwMTQwMTI3Lm9yaWcvZ2RiL3NwYXJjNjQtdGRlcC5jCTIwMTQtMDItMDYgMTg6MjA6 NTIuOTk2NzQ3NzQ0ICswMTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvc3BhcmM2NC10 ZGVwLmMJMjAxNC0wMi0wNiAxODoyMDo1Ny4zMTE3NTIzODAgKzAxMDAKKy0tLSBnZGItNy43LjEu b3JpZy9nZGIvc3BhcmM2NC10ZGVwLmMJMjAxNC0wNS0wOSAxOToyNDoxOC43MDQyNTI3NzMgKzAy MDAKKysrKyBnZGItNy43LjEvZ2RiL3NwYXJjNjQtdGRlcC5jCTIwMTQtMDUtMDkgMjA6MDI6MDku NjMyNzAzNzcxICswMjAwCiBAQCAtNjM5LDcgKzYzOSw4IEBAIHNwYXJjNjRfMTZfYnl0ZV9hbGln bl9wIChzdHJ1Y3QgdHlwZSAqdHkKICAKICBzdGF0aWMgdm9pZApAQCAtMTEwOCwxMCArMTA5Niwx MCBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvc3BhcmM2NC10ZGVwLmMKICAgICAg ICBpbnQgcmVnbnVtID0gLTE7CiAgICAgICAgZ2RiX2J5dGUgYnVmWzE2XTsKICAKLUluZGV4OiBn ZGItNy42LjkwLjIwMTQwMTI3L2dkYi9zcHUtdGRlcC5jCitJbmRleDogZ2RiLTcuNy4xL2dkYi9z cHUtdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dkYi9z cHUtdGRlcC5jCTIwMTQtMDItMDYgMTg6MjA6NTIuOTk3NzQ3NzQ1ICswMTAwCi0rKysgZ2RiLTcu Ni45MC4yMDE0MDEyNy9nZGIvc3B1LXRkZXAuYwkyMDE0LTAyLTA2IDE4OjIwOjU3LjMxMjc1MjM4 MSArMDEwMAorLS0tIGdkYi03LjcuMS5vcmlnL2dkYi9zcHUtdGRlcC5jCTIwMTQtMDUtMDkgMTk6 MjQ6MTguNzA0MjUyNzczICswMjAwCisrKysgZ2RiLTcuNy4xL2dkYi9zcHUtdGRlcC5jCTIwMTQt MDUtMDkgMjA6MDI6MDkuNjMzNzAzNzcxICswMjAwCiBAQCAtMTM3Niw3ICsxMzc2LDcgQEAgc3B1 X3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKmdkYgogICAgICAgIHN0cnVjdCB2YWx1 ZSAqYXJnID0gYXJnc1tpXTsKICAgICAgICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IGNoZWNrX3R5cGVk ZWYgKHZhbHVlX3R5cGUgKGFyZykpOwpAQCAtMTEzMCwxMCArMTExOCwxMCBAQCBJbmRleDogZ2Ri LTcuNi45MC4yMDE0MDEyNy9nZGIvc3B1LXRkZXAuYwogIAkgIGludCBwcmVmZXJyZWRfc2xvdDsK ICAJICAKICAJICBpZiAoc3B1X3NjYWxhcl92YWx1ZV9wICh0eXBlKSkKLUluZGV4OiBnZGItNy42 LjkwLjIwMTQwMTI3L2dkYi90aWM2eC10ZGVwLmMKK0luZGV4OiBnZGItNy43LjEvZ2RiL3RpYzZ4 LXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIvdGlj NngtdGRlcC5jCTIwMTQtMDItMDYgMTg6MjA6NTIuOTk3NzQ3NzQ1ICswMTAwCi0rKysgZ2RiLTcu Ni45MC4yMDE0MDEyNy9nZGIvdGljNngtdGRlcC5jCTIwMTQtMDItMDYgMTg6MjA6NTcuMzEyNzUy MzgxICswMTAwCistLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL3RpYzZ4LXRkZXAuYwkyMDE0LTA1LTA5 IDE5OjI0OjE4LjcwNTI1Mjc3MyArMDIwMAorKysrIGdkYi03LjcuMS9nZGIvdGljNngtdGRlcC5j CTIwMTQtMDUtMDkgMjA6MDI6MDkuNjMzNzAzNzcxICswMjAwCiBAQCAtODk2LDcgKzg5Niw3IEBA IHRpYzZ4X3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKmcKICAgIGludCBhcmdyZWcg PSAwOwogICAgaW50IGFyZ251bTsKQEAgLTExNzEsMTAgKzExNTksMTAgQEAgSW5kZXg6IGdkYi03 LjYuOTAuMjAxNDAxMjcvZ2RiL3RpYzZ4LXRkZXAuYwogIAogIAkgIGFkZHIgPSBzcCArIHN0YWNr X29mZnNldDsKICAJICB3cml0ZV9tZW1vcnkgKGFkZHIsIHZhbCwgbGVuKTsKLUluZGV4OiBnZGIt Ny42LjkwLjIwMTQwMTI3L2dkYi90aWxlZ3gtdGRlcC5jCitJbmRleDogZ2RiLTcuNy4xL2dkYi90 aWxlZ3gtdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dk Yi90aWxlZ3gtdGRlcC5jCTIwMTQtMDItMDYgMTg6MjA6NTIuOTk4NzQ3NzQ2ICswMTAwCi0rKysg Z2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvdGlsZWd4LXRkZXAuYwkyMDE0LTAyLTA2IDE4OjIwOjU3 LjMxMjc1MjM4MSArMDEwMAorLS0tIGdkYi03LjcuMS5vcmlnL2dkYi90aWxlZ3gtdGRlcC5jCTIw MTQtMDUtMDkgMTk6MjQ6MTguNzA1MjUyNzczICswMjAwCisrKysgZ2RiLTcuNy4xL2dkYi90aWxl Z3gtdGRlcC5jCTIwMTQtMDUtMDkgMjA6MDI6MDkuNjMzNzAzNzcxICswMjAwCiBAQCAtMjkwLDcg KzI5MCw3IEBAIHRpbGVneF9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICoKICAgIENP UkVfQUREUiBzdGFja19kZXN0ID0gc3A7CiAgICBpbnQgYXJncmVnID0gVElMRUdYX1IwX1JFR05V TTsKQEAgLTExODQsMTAgKzExNzIsMTAgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2Ri L3RpbGVneC10ZGVwLmMKICAgIHN0YXRpYyBjb25zdCBnZGJfYnl0ZSBmb3VyX3plcm9fd29yZHNb MTZdID0geyAwIH07CiAgCiAgICAvKiBJZiBzdHJ1Y3RfcmV0dXJuIGlzIDEsIHRoZW4gdGhlIHN0 cnVjdCByZXR1cm4gYWRkcmVzcyB3aWxsCi1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIv djg1MC10ZGVwLmMKK0luZGV4OiBnZGItNy43LjEvZ2RiL3Y4NTAtdGRlcC5jCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dkYi92ODUwLXRkZXAuYwkyMDE0LTAyLTA2 IDE4OjIwOjUyLjk5ODc0Nzc0NiArMDEwMAotKysrIGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3Y4 NTAtdGRlcC5jCTIwMTQtMDItMDYgMTg6MjA6NTcuMzEzNzUyMzgzICswMTAwCistLS0gZ2RiLTcu Ny4xLm9yaWcvZ2RiL3Y4NTAtdGRlcC5jCTIwMTQtMDUtMDkgMTk6MjQ6MTguNzA1MjUyNzczICsw MjAwCisrKysgZ2RiLTcuNy4xL2dkYi92ODUwLXRkZXAuYwkyMDE0LTA1LTA5IDIwOjAyOjA5LjYz NDcwMzc3MSArMDIwMAogQEAgLTEwMjEsNyArMTAyMSw3IEBAIHY4NTBfcHVzaF9kdW1teV9jYWxs IChzdHJ1Y3QgZ2RiYXJjaCAqZ2QKICAgIGVudW0gYmZkX2VuZGlhbiBieXRlX29yZGVyID0gZ2Ri YXJjaF9ieXRlX29yZGVyIChnZGJhcmNoKTsKICAgIGludCBhcmdyZWc7CkBAIC0xMjA2LDEwICsx MTk0LDEwIEBAIEluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi92ODUwLXRkZXAuYwogICAg ICAgIGdkYl9ieXRlICp2YWw7CiAgICAgICAgZ2RiX2J5dGUgdmFsYnVmW3Y4NTBfcmVnX3NpemVd OwogIAotSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3ZheC10ZGVwLmMKK0luZGV4OiBn ZGItNy43LjEvZ2RiL3ZheC10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42LjkwLjIwMTQw MTI3Lm9yaWcvZ2RiL3ZheC10ZGVwLmMJMjAxNC0wMi0wNiAxODoyMDo1Mi45OTg3NDc3NDYgKzAx MDAKLSsrKyBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi92YXgtdGRlcC5jCTIwMTQtMDItMDYgMTg6 MjA6NTcuMzEzNzUyMzgzICswMTAwCistLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL3ZheC10ZGVwLmMJ MjAxNC0wNS0wOSAxOToyNDoxOC43MDYyNTI3NzMgKzAyMDAKKysrKyBnZGItNy43LjEvZ2RiL3Zh eC10ZGVwLmMJMjAxNC0wNS0wOSAyMDowMjowOS42MzQ3MDM3NzEgKzAyMDAKIEBAIC0xMTUsNyAr MTE1LDcgQEAgdmF4X3N0b3JlX2FyZ3VtZW50cyAoc3RydWN0IHJlZ2NhY2hlICpyZQogICAgc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfcmVnY2FjaGVfYXJjaCAocmVnY2FjaGUpOwogICAg ZW51bSBiZmRfZW5kaWFuIGJ5dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXIgKGdkYmFyY2gp OwpAQCAtMTIyOCwxMCArMTIxNiwxMCBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIv dmF4LXRkZXAuYwogIAogICAgICAgIHNwIC09IChsZW4gKyAzKSAmIH4zOwogICAgICAgIGNvdW50 ICs9IChsZW4gKyAzKSAvIDQ7Ci1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIveHN0b3Jt eTE2LXRkZXAuYworSW5kZXg6IGdkYi03LjcuMS9nZGIveHN0b3JteTE2LXRkZXAuYwogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIveHN0b3JteTE2LXRkZXAuYwky MDE0LTAyLTA2IDE4OjIwOjUyLjk5OTc0Nzc0OCArMDEwMAotKysrIGdkYi03LjYuOTAuMjAxNDAx MjcvZ2RiL3hzdG9ybXkxNi10ZGVwLmMJMjAxNC0wMi0wNiAxODoyMDo1Ny4zMTM3NTIzODMgKzAx MDAKKy0tLSBnZGItNy43LjEub3JpZy9nZGIveHN0b3JteTE2LXRkZXAuYwkyMDE0LTA1LTA5IDE5 OjI0OjE4LjcwNjI1Mjc3MyArMDIwMAorKysrIGdkYi03LjcuMS9nZGIveHN0b3JteTE2LXRkZXAu YwkyMDE0LTA1LTA5IDIwOjAyOjA5LjYzNDcwMzc3MSArMDIwMAogQEAgLTIzNSw4ICsyMzUsOSBA QCB4c3Rvcm15MTZfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjCiAgICBlbnVtIGJmZF9l bmRpYW4gYnl0ZV9vcmRlciA9IGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJjaCk7CiAgICBDT1JF X0FERFIgc3RhY2tfZGVzdCA9IHNwOwpAQCAtMTI0NCwxMCArMTIzMiwxMCBAQCBJbmRleDogZ2Ri LTcuNi45MC4yMDE0MDEyNy9nZGIveHN0b3JteTE2LXRkZXAuYwogICAgY29uc3QgZ2RiX2J5dGUg KnZhbDsKICAgIGdkYl9ieXRlIGJ1Zlt4c3Rvcm15MTZfcGNfc2l6ZV07CiAgCi1JbmRleDogZ2Ri LTcuNi45MC4yMDE0MDEyNy9nZGIveHRlbnNhLXRkZXAuYworSW5kZXg6IGdkYi03LjcuMS9nZGIv eHRlbnNhLXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9n ZGIveHRlbnNhLXRkZXAuYwkyMDE0LTAyLTA2IDE4OjIwOjUzLjAwMDc0Nzc0OSArMDEwMAotKysr IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3h0ZW5zYS10ZGVwLmMJMjAxNC0wMi0wNiAxODoyMDo1 Ny4zMTQ3NTIzODQgKzAxMDAKKy0tLSBnZGItNy43LjEub3JpZy9nZGIveHRlbnNhLXRkZXAuYwky MDE0LTA1LTA5IDE5OjI0OjE4LjcwNzI1Mjc3MyArMDIwMAorKysrIGdkYi03LjcuMS9nZGIveHRl bnNhLXRkZXAuYwkyMDE0LTA1LTA5IDIwOjAyOjA5LjYzNDcwMzc3MSArMDIwMAogQEAgLTE2NTIs OCArMTY1Miw3IEBAIHh0ZW5zYV9zdG9yZV9yZXR1cm5fdmFsdWUgKHN0cnVjdCB0eXBlICoKICAK ICAgICAgICBpZiAobGVuID4gKGNhbGxzaXplID4gOCA/IDggOiAxNikpCgpkaWZmIC0tZ2l0IGEv Z2RiLXVwc3RyZWFtLXBwYzY0bGUwMm9mMTUucGF0Y2ggYi9nZGItdXBzdHJlYW0tcHBjNjRsZTAy b2YxNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDJlM2Y1Ci0t LSAvZGV2L251bGwKKysrIGIvZ2RiLXVwc3RyZWFtLXBwYzY0bGUwMm9mMTUucGF0Y2gKQEAgLTAs MCArMSw2MSBAQAorY29tbWl0IDcxOGVlNGRjOWIwOTQ5MTcwNzQyMGFlNDAzYWQxY2U4ZGZkYjYx YjIKK0F1dGhvcjogVWxyaWNoIFdlaWdhbmQgPHVscmljaC53ZWlnYW5kQGRlLmlibS5jb20+CitE YXRlOiAgIFRodSBKYW4gMzAgMTk6MTI6MzUgMjAxNCArMDEwMAorCisgICAgQWRkIHN1cHBvcnQg Zm9yIEFUX0hXQ0FQMiBhdXh2IGVudHJ5CisgICAgCisgICAgUmVjZW50IHBwYzY0IExpbnV4IGtl cm5lbHMgcHJvdmlkZSBhIG5ldyBhdXh2IGVudHJ5IEFUX0hXQ0FQMiwKKyAgICB3aGljaCBpcyBj dXJyZW50bHkgbm90IHJlY29nbml6ZWQgYnkgR0RCLCBjYXVzaW5nIGV2ZXJ5IHVzZSBvZgorICAg ICJpbmZvIGF1eHYiIHRvIHNob3cgYW4gZXJyb3IuCisgICAgCisgICAgVGhpcyBjb21taXQgYWRk cyB0aGUgQVRfSFdDQVAyIGRlZmluZSB0byBpbmNsdWRlL2VsZi9jb21tb24uaAorICAgIGFuZCBo YW5kbGVzIGl0IGluIEdEQi4KKyAgICAKKyAgICBpbmNsdWRlL2VsZi9DaGFuZ2VMb2c6CisgICAg CisgICAgCSogY29tbW9uLmggKEFUX0hXQ0FQMik6IERlZmluZS4KKyAgICAKKyAgICBnZGIvQ2hh bmdlTG9nOgorICAgIAorICAgIAkqIGF1eHYuYyAoZnByaW50X3RhcmdldF9hdXh2KTogSGFuZGxl IEFUX0hXQ0FQMi4KKworIyMjIGEvZ2RiL0NoYW5nZUxvZworIyMjIGIvZ2RiL0NoYW5nZUxvZwor IyMgLTEsMyArMSw3IEBACisrMjAxNC0wMS0zMCAgVWxyaWNoIFdlaWdhbmTCoCA8dXdlaWdhbmRA ZGUuaWJtLmNvbT4KKysKKysJKiBhdXh2LmMgKGZwcmludF90YXJnZXRfYXV4dik6IEhhbmRsZSBB VF9IV0NBUDIuCisrCisgMjAxNC0wMS0yOSAgSm9zZSBFLiBNYXJjaGVzaSAgPGpvc2UubWFyY2hl c2lAb3JhY2xlLmNvbT4KKyAKKyAJKiBzcGFyYzY0LWxpbnV4LXRkZXAuYyAoc3BhcmM2NF9saW51 eF9zdGVwX3RyYXApOiBHZXQgUEMgZnJvbQorLS0tIGEvZ2RiL2F1eHYuYworKysrIGIvZ2RiL2F1 eHYuYworQEAgLTQ0Miw2ICs0NDIsNyBAQCBmcHJpbnRfdGFyZ2V0X2F1eHYgKHN0cnVjdCB1aV9m aWxlICpmaWxlLCBzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzKQorIAkgIFRBRyAoQVRfSUdOT1JFUFBD LCBfKCJFbnRyeSBzaG91bGQgYmUgaWdub3JlZCIpLCBkZWMpOworIAkgIFRBRyAoQVRfQkFTRV9Q TEFURk9STSwgXygiU3RyaW5nIGlkZW50aWZ5aW5nIGJhc2UgcGxhdGZvcm0iKSwgc3RyKTsKKyAJ ICBUQUcgKEFUX1JBTkRPTSwgXygiQWRkcmVzcyBvZiAxNiByYW5kb20gYnl0ZXMiKSwgaGV4KTsK KysJICBUQUcgKEFUX0hXQ0FQMiwgXygiRXh0ZW5zaW9uIG9mIEFUX0hXQ0FQIiksIGhleCk7Cisg CSAgVEFHIChBVF9FWEVDRk4sIF8oIkZpbGUgbmFtZSBvZiBleGVjdXRhYmxlIiksIHN0cik7Cisg CSAgVEFHIChBVF9TRUNVUkUsIF8oIkJvb2xlYW4sIHdhcyBleGVjIHNldHVpZC1saWtlPyIpLCBk ZWMpOworIAkgIFRBRyAoQVRfU1lTSU5GTywgXygiU3BlY2lhbCBzeXN0ZW0gaW5mby9lbnRyeSBw b2ludHMiKSwgaGV4KTsKKyMjIyBhL2luY2x1ZGUvZWxmL0NoYW5nZUxvZworIyMjIGIvaW5jbHVk ZS9lbGYvQ2hhbmdlTG9nCisjIyAtMSwzICsxLDcgQEAKKysyMDE0LTAxLTMwICBVbHJpY2ggV2Vp Z2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CisrCisrCSogY29tbW9uLmggKEFUX0hXQ0FQMik6 IERlZmluZS4KKysKKyAyMDEzLTEyLTEzICBLdWFuLUxpbiBDaGVuICA8a3VhbmxpbmNoZW50d0Bn bWFpbC5jb20+CisgCSAgICBXZWktQ2hlbmcgV2FuZyAgPGNvbGU5NDVAZ21haWwuY29tPgorIAor LS0tIGEvaW5jbHVkZS9lbGYvY29tbW9uLmgKKysrKyBiL2luY2x1ZGUvZWxmL2NvbW1vbi5oCitA QCAtOTU5LDYgKzk1OSw3IEBACisgI2RlZmluZSBBVF9CQVNFX1BMQVRGT1JNIDI0CQkvKiBTdHJp bmcgaWRlbnRpZnlpbmcgcmVhbCBwbGF0Zm9ybSwKKyAJCQkJCSAgIG1heSBkaWZmZXIgZnJvbSBB VF9QTEFURk9STS4gICovCisgI2RlZmluZSBBVF9SQU5ET00JMjUJCS8qIEFkZHJlc3Mgb2YgMTYg cmFuZG9tIGJ5dGVzLiAgKi8KKysjZGVmaW5lIEFUX0hXQ0FQMgkyNgkJLyogRXh0ZW5zaW9uIG9m IEFUX0hXQ0FQLiAgKi8KKyAjZGVmaW5lIEFUX0VYRUNGTgkzMQkJLyogRmlsZW5hbWUgb2YgZXhl Y3V0YWJsZS4gICovCisgLyogUG9pbnRlciB0byB0aGUgZ2xvYmFsIHN5c3RlbSBwYWdlIHVzZWQg Zm9yIHN5c3RlbSBjYWxscyBhbmQgb3RoZXIKKyAgICBuaWNlIHRoaW5ncy4gICovCgpkaWZmIC0t Z2l0IGEvZ2RiLXVwc3RyZWFtLXBwYzY0bGUwM29mMTUucGF0Y2ggYi9nZGItdXBzdHJlYW0tcHBj NjRsZTAzb2YxNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMGI0 ZmNmCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLXVwc3RyZWFtLXBwYzY0bGUwM29mMTUucGF0Y2gK QEAgLTAsMCArMSwzNiBAQAorY29tbWl0IDM2YzI0ZDk1MzgyNTcyZTljZjQwOTU3MTJhODYxMzY2 NGQ3MTY1Y2MKK0F1dGhvcjogVWxyaWNoIFdlaWdhbmQgPHVscmljaC53ZWlnYW5kQGRlLmlibS5j b20+CitEYXRlOiAgIFR1ZSBGZWIgNCAxODoxOTo1MSAyMDE0ICswMTAwCisKKyAgICBEb2N1bWVu dCBzdXBwb3J0IGZvciBwb3dlcnBjNjRsZS0qLWxpbnV4KiB0YXJnZXQKKyAgICAKKyAgICBnZGIv Q2hhbmdlTG9nOgorICAgIAorICAgIAkqIE5FV1M6IERvY3VtZW50IG5ldyB0YXJnZXQgcG93ZXJw YzY0bGUtKi1saW51eCouCisKKyMjIyBhL2dkYi9DaGFuZ2VMb2cKKyMjIyBiL2dkYi9DaGFuZ2VM b2cKKyMjIC0xLDMgKzEsNyBAQAorKzIwMTQtMDItMDQgIFVscmljaCBXZWlnYW5kwqAgPHV3ZWln YW5kQGRlLmlibS5jb20+CisrCisrCSogTkVXUzogRG9jdW1lbnQgbmV3IHRhcmdldCBwb3dlcnBj NjRsZS0qLWxpbnV4Ki4KKysKKyAyMDE0LTAyLTA0ICBNYXJrIEtldHRlbmlzICA8a2V0dGVuaXNA Z251Lm9yZz4KKyAKKyAJKiBzcGFyYzY0b2JzZC10ZGVwLmMgKHNwYXJjNjRvYnNkX2dyZWdzZXQp OiBOZXcgdmFyaWFibGUuCitJbmRleDogZ2RiLTcuNy4xL2dkYi9ORVdTCis9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cist LS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL05FV1MJMjAxNC0wNS0wOSAxOToyMTo1Ny43OTgyMzUwMDIg KzAyMDAKKysrKyBnZGItNy43LjEvZ2RiL05FV1MJMjAxNC0wNS0wOSAxOToyMjozMC4yMDYyMzkx NDUgKzAyMDAKK0BAIC0xLDYgKzEsMTEgQEAKKyAJCVdoYXQgaGFzIGNoYW5nZWQgaW4gR0RCPwor IAkgICAgIChPcmdhbml6ZWQgcmVsZWFzZSBieSByZWxlYXNlKQorIAorKyoqKiBDaGFuZ2VzIHNp bmNlIEdEQiA3LjcKKysKKysqIE5ldyB0YXJnZXRzCisrUG93ZXJQQzY0IEdOVS9MaW51eCBsaXR0 bGUtZW5kaWFuCXBvd2VycGM2NGxlLSotbGludXgqCisrCisgKioqIENoYW5nZXMgaW4gR0RCIDcu NworIAorICogR0RCIG5vdyBzdXBwb3J0cyBTeXN0ZW1UYXAgU0RUIHByb2JlcyBvbiBBQXJjaDY0 IEdOVS9MaW51eC4KCmRpZmYgLS1naXQgYS9nZGItdXBzdHJlYW0tcHBjNjRsZTA0b2YxNS5wYXRj aCBiL2dkYi11cHN0cmVhbS1wcGM2NGxlMDRvZjE1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjFiNjczMGYKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItdXBzdHJlYW0t cHBjNjRsZTA0b2YxNS5wYXRjaApAQCAtMCwwICsxLDE0MTMgQEAKK2NvbW1pdCBlNzY1YjQ0YzM4 NTNlZDIyODUwNmZjMjJjMjc2YmVjZDYzMTk4MjM4CitBdXRob3I6IFVscmljaCBXZWlnYW5kIDx1 bHJpY2gud2VpZ2FuZEBkZS5pYm0uY29tPgorRGF0ZTogICBUdWUgRmViIDQgMTg6MjQ6NDIgMjAx NCArMDEwMAorCisgICAgUmVmYWN0b3IgcHBjNjQgZnVuY3Rpb24gY2FsbCBhbmQgcmV0dXJuIHZh bHVlIGhhbmRsaW5nCisgICAgCisgICAgVGhpcyBwYXRjaCByZWZhY3RvcnMgdGhlIHBwYzY0IGZ1 bmN0aW9uIGNhbGwgYW5kIHJldHVybiB2YWx1ZSBoYW5kbGluZyBjb2RlCisgICAgaW4gcHBjLXN5 c3YtdGRlcC5jLiAgVGhlIG1haW4gcHJvYmxlbSB0byBiZSBhZGRyZXNzZWQgYnkgdGhpcyByZWZh Y3RvcmluZworICAgIGlzIHRoZSBjb2RlIGR1cGxpY2F0aW9uIGNhdXNlZCBieSBjZXJ0YWluIGFn Z3JlZ2F0ZSB0eXBlczoKKyAgICAKKyAgICBBY2NvcmRpbmcgdG8gdGhlIEFCSSwgc29tZSB0eXBl cyBhcmUgdG8gYmUgZGVjb21wb3NlZCBpbnRvIGNvbXBvbmVudCB0eXBlcworICAgIGZvciBwYXJh bWV0ZXIgYW5kIHJldHVybiB2YWx1ZSBoYW5kbGluZy4gIEZvciBleGFtcGxlLCBjb21wbGV4IHR5 cGVzIGFyZQorICAgIHRvIGJlIHBhc3NlZCBhcyBpZiB0aGUgcmVhbCBhbmQgaW1hZ2luYXJ5IGNv bXBvbmVudCB3ZXJlIHNlcGFyYXRlIGFyZ3VtZW50cy4KKyAgICBTaW1pbGFybHksIGNlcnRhaW4g T3BlbkNMIHZlY3RvciB0eXBlcyBhcmUgcGFzc2VkIGFzIGlmIHRoZXkgd2VyZSBtdWx0aXBsZQor ICAgIHNlcGFyYXRlIGFyZ3VtZW50cyBvZiB0aGUgdmVjdG9yIGVsZW1lbnQgdHlwZS4gIFdpdGgg dGhlIG5ldyBFTEZ2MiBBQkksCisgICAgdGhlcmUgaXMgYW5vdGhlciBjYXNlOiAiaG9tb2dlbmVv dXMgYWdncmVnYXRlcyIgKGUuZy4gYSBzdHJ1Y3QgY29udGFpbmluZworICAgIDQgZmxvYXRzKSBh cmUgcGFzc2VkIGluIG11bHRpcGxlIGZsb2F0aW5nIHBvaW50IHJlZ2lzdGVycyBhcyB3ZWxsLgor ICAgIAorICAgIFVuZm9ydHVuYXRlbHksIHRoZSBjdXJyZW50IGNvZGUgaXMgbm90IHN0cnVjdHVy ZWQgdG8gZWFzaWx5IG1vZGVsIHRoZXNlCisgICAgQUJJIHByb3BlcnRpZXMuICBGb3IgZXhhbXBs ZSwgY29kZSB0byBwYXNzIGNvbXBsZXggdmFsdWVzIHJlLWltcGxlbWVudHMKKyAgICBjb2RlIHRv IHBhc3MgdGhlIHVuZGVybHlpbmcgKGZsb2F0aW5nLXBvaW50KSB0eXBlLiAgVGhpcyBoYXMgYWxy ZWFkeQorICAgIGxlZCB0byBzb21lIHVuZm9ydHVuYXRlIGNvZGUgZHVwbGljYXRpb24sIGFuZCB3 aXRoIHRoZSBhZGRpdGlvbiBvZgorICAgIEVMRnYyIEFCSSBzdXBwb3J0LCBJIHdvdWxkIGhhdmUg aGFkIHRvIGFkZCB5ZXQgbW9yZSBzdWNoIGR1cGxpY2F0aW9uLgorICAgIAorICAgIFRvIGF2b2lk IHRoYXQsIEkndmUgZGVjaWRlZCB0byByZWZhY3RvciB0aGUgY29kZSBpbiBvcmRlciB0byByZS11 c2UKKyAgICBzdWJyb3V0aW5lcyB0aGF0IGhhbmRsZSB0aGUgImJhc2UiIHR5cGVzIHdoZW4gaGFu ZGxpbmcgdGhvc2UgYWdncmVnYXRlCisgICAgdHlwZXMuICBUaGlzIHdhcyBub3QgaW50ZW5kZWQg dG8gY2F1c2UgYW55IGRpZmZlcmVuY2Ugb24gY3VycmVudAorICAgIChFTEZ2MSkgQUJJIGNvZGUs IGJ1dCBpbiBmYWN0IGl0IGZpeGVzIGEgYnVnOgorICAgIAorICAgIEZBSUw6IGdkYi5iYXNlL3Zh cmFyZ3MuZXhwOiBwcmludCBmaW5kX21heF9mbG9hdF9yZWFsKDQsIGZjMSwgZmMyLCBmYzMsIGZj NCkKKyAgICAKKyAgICBUaGlzIHdhcyBjYXVzZWQgYnkgdGhlIG9sZCBjb2RlIGluIHBwYzY0X3N5 c3ZfYWJpX3B1c2hfZmxvYXQgaW5jb3JyZWN0bHkKKyAgICBoYW5kbGluZyBmbG9hdGluZy1wb2lu dCBhcmd1bWVudHMgdG8gdmFyYXJnIHJvdXRpbmVzLCB3aGljaCBqdXN0IGhhcHBlbnMKKyAgICB0 byB3b3JrIG91dCBjb3JyZWN0bHkgYXV0b21hdGljYWxseSBpbiB0aGUgcmVmYWN0b3JlZCBjb2Rl IC4uLgorICAgIAorICAgIGdkYi9DaGFuZ2VMb2c6CisgICAgCisgICAgCSogcHBjLXN5c3YtdGRl cC5jIChnZXRfZGVjaW1hbF9mbG9hdF9yZXR1cm5fdmFsdWUpOiBVcGRhdGUgY29tbWVudC4KKyAg ICAJKHN0cnVjdCBwcGM2NF9zeXN2X2FyZ3Bvcyk6IE5ldyBkYXRhIHN0cnVjdHVyZS4KKyAgICAJ KHBwYzY0X3N5c3ZfYWJpX3B1c2hfZmxvYXQpOiBSZW1vdmUuCisgICAgCShwcGM2NF9zeXN2X2Fi aV9wdXNoX3ZhbCk6IE5ldyBmdW5jdGlvbi4KKyAgICAJKHBwYzY0X3N5c3ZfYWJpX3B1c2hfaW50 ZWdlcik6IExpa2V3aXNlLgorICAgIAkocHBjNjRfc3lzdl9hYmlfcHVzaF9mcmVnKTogTGlrZXdp c2UuCisgICAgCShwcGM2NF9zeXN2X2FiaV9wdXNoX3ZyZWcpOiBMaWtld2lzZS4KKyAgICAJKHBw YzY0X3N5c3ZfYWJpX3B1c2hfcGFyYW0pOiBMaWtld2lzZS4KKyAgICAJKHBwYzY0X3N5c3ZfYWJp X3B1c2hfZHVtbXlfY2FsbCk6IFJlZmFjdG9yIHRvIHVzZSB0aG9zZSBuZXcgcm91dGluZXMuCisg ICAgCShwcGM2NF9zeXN2X2FiaV9yZXR1cm5fdmFsdWVfYmFzZSk6IE5ldyBmdW5jdGlvbi4KKyAg ICAJKHBwYzY0X3N5c3ZfYWJpX3JldHVybl92YWx1ZSk6IFJlZmFjdG9yIHRvIHVzZSBpdC4KKwor IyMjIGEvZ2RiL0NoYW5nZUxvZworIyMjIGIvZ2RiL0NoYW5nZUxvZworIyMgLTEsNSArMSwxOSBA QAorIDIwMTQtMDItMDQgIFVscmljaCBXZWlnYW5kwqAgPHV3ZWlnYW5kQGRlLmlibS5jb20+Cisg CisrCSogcHBjLXN5c3YtdGRlcC5jIChnZXRfZGVjaW1hbF9mbG9hdF9yZXR1cm5fdmFsdWUpOiBV cGRhdGUgY29tbWVudC4KKysJKHN0cnVjdCBwcGM2NF9zeXN2X2FyZ3Bvcyk6IE5ldyBkYXRhIHN0 cnVjdHVyZS4KKysJKHBwYzY0X3N5c3ZfYWJpX3B1c2hfZmxvYXQpOiBSZW1vdmUuCisrCShwcGM2 NF9zeXN2X2FiaV9wdXNoX3ZhbCk6IE5ldyBmdW5jdGlvbi4KKysJKHBwYzY0X3N5c3ZfYWJpX3B1 c2hfaW50ZWdlcik6IExpa2V3aXNlLgorKwkocHBjNjRfc3lzdl9hYmlfcHVzaF9mcmVnKTogTGlr ZXdpc2UuCisrCShwcGM2NF9zeXN2X2FiaV9wdXNoX3ZyZWcpOiBMaWtld2lzZS4KKysJKHBwYzY0 X3N5c3ZfYWJpX3B1c2hfcGFyYW0pOiBMaWtld2lzZS4KKysJKHBwYzY0X3N5c3ZfYWJpX3B1c2hf ZHVtbXlfY2FsbCk6IFJlZmFjdG9yIHRvIHVzZSB0aG9zZSBuZXcgcm91dGluZXMuCisrCShwcGM2 NF9zeXN2X2FiaV9yZXR1cm5fdmFsdWVfYmFzZSk6IE5ldyBmdW5jdGlvbi4KKysJKHBwYzY0X3N5 c3ZfYWJpX3JldHVybl92YWx1ZSk6IFJlZmFjdG9yIHRvIHVzZSBpdC4KKysKKysyMDE0LTAyLTA0 ICBVbHJpY2ggV2VpZ2FuZMKgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgorKworIAkqIE5FV1M6IERv Y3VtZW50IG5ldyB0YXJnZXQgcG93ZXJwYzY0bGUtKi1saW51eCouCisgCisgMjAxNC0wMi0wNCAg TWFyayBLZXR0ZW5pcyAgPGtldHRlbmlzQGdudS5vcmc+CistLS0gYS9nZGIvcHBjLXN5c3YtdGRl cC5jCisrKysgYi9nZGIvcHBjLXN5c3YtdGRlcC5jCitAQCAtNjA5LDggKzYwOSw3IEBAIHBwY19z eXN2X2FiaV9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3Qg dmFsdWUgKmZ1bmN0aW9uLAorICAgcmV0dXJuIHNwOworIH0KKyAKKy0vKiBIYW5kbGUgdGhlIHJl dHVybi12YWx1ZSBjb252ZW50aW9ucyBmb3IgRGVjaW1hbCBGbG9hdGluZyBQb2ludCB2YWx1ZXMK Ky0gICBpbiBib3RoIHBwYzMyIGFuZCBwcGM2NCwgd2hpY2ggYXJlIHRoZSBzYW1lLiAgKi8KKysv KiBIYW5kbGUgdGhlIHJldHVybi12YWx1ZSBjb252ZW50aW9ucyBmb3IgRGVjaW1hbCBGbG9hdGlu ZyBQb2ludCB2YWx1ZXMuICAqLworIHN0YXRpYyBpbnQKKyBnZXRfZGVjaW1hbF9mbG9hdF9yZXR1 cm5fdmFsdWUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3QgdHlwZSAqdmFsdHlwZSwK KyAJCQkJc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgZ2RiX2J5dGUgKnJlYWRidWYsCitAQCAt MTEwMiw4MCArMTEwMSwyODcgQEAgY29udmVydF9jb2RlX2FkZHJfdG9fZGVzY19hZGRyIChDT1JF X0FERFIgY29kZV9hZGRyLCBDT1JFX0FERFIgKmRlc2NfYWRkcikKKyAgIHJldHVybiAxOworIH0K KyAKKy0vKiBQdXNoIGEgZmxvYXQgaW4gZWl0aGVyIHJlZ2lzdGVycywgb3IgaW4gdGhlIHN0YWNr LiAgVXNpbmcgdGhlIHBwYyA2NCBiaXQKKy0gICBTeXNWIEFCSS4KKysvKiBTdHJ1Y3R1cmUgaG9s ZGluZyB0aGUgbmV4dCBhcmd1bWVudCBwb3NpdGlvbi4gICovCisrc3RydWN0IHBwYzY0X3N5c3Zf YXJncG9zCisrICB7CisrICAgIC8qIFJlZ2lzdGVyIGNhY2hlIGhvbGRpbmcgYXJndW1lbnQgcmVn aXN0ZXJzLiAgSWYgdGhpcyBpcyBOVUxMLAorKyAgICAgICB3ZSBvbmx5IHNpbXVsYXRlIGFyZ3Vt ZW50IHByb2Nlc3Npbmcgd2l0aG91dCBhY3R1YWxseSB1cGRhdGluZworKyAgICAgICBhbnkgcmVn aXN0ZXJzIG9yIG1lbW9yeS4gICovCisrICAgIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGU7Cisr ICAgIC8qIE5leHQgYXZhaWxhYmxlIGdlbmVyYWwtcHVycG9zZSBhcmd1bWVudCByZWdpc3Rlci4g ICovCisrICAgIGludCBncmVnOworKyAgICAvKiBOZXh0IGF2YWlsYWJsZSBmbG9hdGluZy1wb2lu dCBhcmd1bWVudCByZWdpc3Rlci4gICovCisrICAgIGludCBmcmVnOworKyAgICAvKiBOZXh0IGF2 YWlsYWJsZSB2ZWN0b3IgYXJndW1lbnQgcmVnaXN0ZXIuICAqLworKyAgICBpbnQgdnJlZzsKKysg ICAgLyogVGhlIGFkZHJlc3MsIGF0IHdoaWNoIHRoZSBuZXh0IGdlbmVyYWwgcHVycG9zZSBwYXJh bWV0ZXIKKysgICAgICAgKGludGVnZXIsIHN0cnVjdCwgZmxvYXQsIHZlY3RvciwgLi4uKSBzaG91 bGQgYmUgc2F2ZWQuICAqLworKyAgICBDT1JFX0FERFIgZ3BhcmFtOworKyAgICAvKiBUaGUgYWRk cmVzcywgYXQgd2hpY2ggdGhlIG5leHQgYnktcmVmZXJlbmNlIHBhcmFtZXRlcgorKyAgICAgICAo bm9uLUFsdGl2ZWMgdmVjdG9yLCB2YXJpYWJseS1zaXplZCB0eXBlKSBzaG91bGQgYmUgc2F2ZWQu ICAqLworKyAgICBDT1JFX0FERFIgcmVmcGFyYW07CisrICB9OworKworKy8qIFZBTCBpcyBhIHZh bHVlIG9mIGxlbmd0aCBMRU4uICBTdG9yZSBpdCBpbnRvIHRoZSBhcmd1bWVudCBhcmVhIG9uIHRo ZQorKyAgIHN0YWNrIGFuZCBsb2FkIGl0IGludG8gdGhlIGNvcnJlc3BvbmRpbmcgZ2VuZXJhbC1w dXJwb3NlIHJlZ2lzdGVycworKyAgIHJlcXVpcmVkIGJ5IHRoZSBBQkksIGFuZCB1cGRhdGUgQVJH UE9TLgorKworKyAgIElmIEFMSUdOIGlzIG5vbnplcm8sIGl0IHNwZWNpZmllcyB0aGUgbWluaW11 bSBhbGlnbm1lbnQgcmVxdWlyZWQKKysgICBmb3IgdGhlIG9uLXN0YWNrIGNvcHkgb2YgdGhlIGFy Z3VtZW50LiAgKi8KKyAKKy0gICBUaGlzIGltcGxlbWVudHMgYSBkdW1iZWQgZG93biB2ZXJzaW9u IG9mIHRoZSBBQkkuICBJdCBhbHdheXMgd3JpdGVzCistICAgdmFsdWVzIHRvIG1lbW9yeSwgR1BS IGFuZCBGUFIsIGV2ZW4gd2hlbiBub3QgbmVjZXNzYXJ5LiAgRG9pbmcgdGhpcworLSAgIGdyZWF0 bHkgc2ltcGxpZmllcyB0aGUgbG9naWMuICAqLworK3N0YXRpYyB2b2lkCisrcHBjNjRfc3lzdl9h YmlfcHVzaF92YWwgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorKwkJCSBjb25zdCBiZmRfYnl0 ZSAqdmFsLCBpbnQgbGVuLCBpbnQgYWxpZ24sCisrCQkJIHN0cnVjdCBwcGM2NF9zeXN2X2FyZ3Bv cyAqYXJncG9zKQorK3sKKysgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3Rk ZXAgKGdkYmFyY2gpOworKyAgaW50IG9mZnNldCA9IDA7CisrCisrICAvKiBFbmZvcmNlIGFsaWdu bWVudCBvZiBzdGFjayBsb2NhdGlvbiwgaWYgcmVxdWVzdGVkLiAgKi8KKysgIGlmIChhbGlnbiA+ IHRkZXAtPndvcmRzaXplKQorKyAgICB7CisrICAgICAgQ09SRV9BRERSIGFsaWduZWRfZ3BhcmFt ID0gYWxpZ25fdXAgKGFyZ3Bvcy0+Z3BhcmFtLCBhbGlnbik7CisrCisrICAgICAgYXJncG9zLT5n cmVnICs9IChhbGlnbmVkX2dwYXJhbSAtIGFyZ3Bvcy0+Z3BhcmFtKSAvIHRkZXAtPndvcmRzaXpl OworKyAgICAgIGFyZ3Bvcy0+Z3BhcmFtID0gYWxpZ25lZF9ncGFyYW07CisrICAgIH0KKysKKysg IC8qIFRoZSBBQkkgKHZlcnNpb24gMS45KSBzcGVjaWZpZXMgdGhhdCB2YWx1ZXMgc21hbGxlciB0 aGFuIG9uZQorKyAgICAgZG91Ymxld29yZCBhcmUgcmlnaHQtYWxpZ25lZCBhbmQgdGhvc2UgbGFy Z2VyIGFyZSBsZWZ0LWFsaWduZWQuCisrICAgICBHQ0MgdmVyc2lvbnMgYmVmb3JlIDMuNCBpbXBs ZW1lbnRlZCB0aGlzIGluY29ycmVjdGx5OyBzZWUKKysgICAgIDxodHRwOi8vZ2NjLmdudS5vcmcv Z2NjLTMuNC9wb3dlcnBjLWFiaS5odG1sPi4gICovCisrICBpZiAobGVuIDwgdGRlcC0+d29yZHNp emUpCisrICAgIG9mZnNldCA9IHRkZXAtPndvcmRzaXplIC0gbGVuOworKworKyAgaWYgKGFyZ3Bv cy0+cmVnY2FjaGUpCisrICAgIHdyaXRlX21lbW9yeSAoYXJncG9zLT5ncGFyYW0gKyBvZmZzZXQs IHZhbCwgbGVuKTsKKysgIGFyZ3Bvcy0+Z3BhcmFtID0gYWxpZ25fdXAgKGFyZ3Bvcy0+Z3BhcmFt ICsgbGVuLCB0ZGVwLT53b3Jkc2l6ZSk7CisrCisrICB3aGlsZSAobGVuID49IHRkZXAtPndvcmRz aXplKQorKyAgICB7CisrICAgICAgaWYgKGFyZ3Bvcy0+cmVnY2FjaGUgJiYgYXJncG9zLT5ncmVn IDw9IDEwKQorKwlyZWdjYWNoZV9jb29rZWRfd3JpdGUgKGFyZ3Bvcy0+cmVnY2FjaGUsCisrCQkJ ICAgICAgIHRkZXAtPnBwY19ncDBfcmVnbnVtICsgYXJncG9zLT5ncmVnLCB2YWwpOworKyAgICAg IGFyZ3Bvcy0+Z3JlZysrOworKyAgICAgIGxlbiAtPSB0ZGVwLT53b3Jkc2l6ZTsKKysgICAgICB2 YWwgKz0gdGRlcC0+d29yZHNpemU7CisrICAgIH0KKysKKysgIGlmIChsZW4gPiAwKQorKyAgICB7 CisrICAgICAgaWYgKGFyZ3Bvcy0+cmVnY2FjaGUgJiYgYXJncG9zLT5ncmVnIDw9IDEwKQorKwly ZWdjYWNoZV9jb29rZWRfd3JpdGVfcGFydCAoYXJncG9zLT5yZWdjYWNoZSwKKysJCQkJICAgIHRk ZXAtPnBwY19ncDBfcmVnbnVtICsgYXJncG9zLT5ncmVnLAorKwkJCQkgICAgb2Zmc2V0LCBsZW4s IHZhbCk7CisrICAgICAgYXJncG9zLT5ncmVnKys7CisrICAgIH0KKyt9CisrCisrLyogVGhlIHNh bWUgYXMgcHBjNjRfc3lzdl9hYmlfcHVzaF92YWwsIGJ1dCB1c2luZyBhIHNpbmdsZS13b3JkIGlu dGVnZXIKKysgICB2YWx1ZSBWQUwgYXMgYXJndW1lbnQuICAqLworIAorIHN0YXRpYyB2b2lkCist cHBjNjRfc3lzdl9hYmlfcHVzaF9mbG9hdCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVj dCByZWdjYWNoZSAqcmVnY2FjaGUsCistCQkJICAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCwg c3RydWN0IHR5cGUgKnR5cGUsIAorLQkJCSAgIGNvbnN0IGJmZF9ieXRlICp2YWwsIGludCBmcmVn LCBpbnQgZ3JlZywKKy0JCQkgICBDT1JFX0FERFIgZ3BhcmFtKQorK3BwYzY0X3N5c3ZfYWJpX3B1 c2hfaW50ZWdlciAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIFVMT05HRVNUIHZhbCwKKysJCQkg ICAgIHN0cnVjdCBwcGM2NF9zeXN2X2FyZ3BvcyAqYXJncG9zKQorIHsKKy0gIGdkYl9ieXRlIHJl Z3ZhbFtNQVhfUkVHSVNURVJfU0laRV07CistICBjb25zdCBnZGJfYnl0ZSAqcDsKKysgIHN0cnVj dCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpOworKyAgZW51bSBi ZmRfZW5kaWFuIGJ5dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXIgKGdkYmFyY2gpOworKyAg Z2RiX2J5dGUgYnVmW01BWF9SRUdJU1RFUl9TSVpFXTsKKyAKKy0gIGlmIChUWVBFX0xFTkdUSCAo dHlwZSkgPD0gOCkKKysgIGlmIChhcmdwb3MtPnJlZ2NhY2hlKQorKyAgICBzdG9yZV91bnNpZ25l ZF9pbnRlZ2VyIChidWYsIHRkZXAtPndvcmRzaXplLCBieXRlX29yZGVyLCB2YWwpOworKyAgcHBj NjRfc3lzdl9hYmlfcHVzaF92YWwgKGdkYmFyY2gsIGJ1ZiwgdGRlcC0+d29yZHNpemUsIDAsIGFy Z3Bvcyk7CisrfQorKworKy8qIFZBTCBpcyBhIHZhbHVlIG9mIFRZUEUsIGEgKGJpbmFyeSBvciBk ZWNpbWFsKSBmbG9hdGluZy1wb2ludCB0eXBlLgorKyAgIExvYWQgaXQgaW50byBhIGZsb2F0aW5n LXBvaW50IHJlZ2lzdGVyIGlmIHJlcXVpcmVkIGJ5IHRoZSBBQkksCisrICAgYW5kIHVwZGF0ZSBB UkdQT1MuICAqLworKworK3N0YXRpYyB2b2lkCisrcHBjNjRfc3lzdl9hYmlfcHVzaF9mcmVnIChz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKysJCQkgIHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBi ZmRfYnl0ZSAqdmFsLAorKwkJCSAgc3RydWN0IHBwYzY0X3N5c3ZfYXJncG9zICphcmdwb3MpCisr eworKyAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAoZ2RiYXJjaCk7 CisrICBpZiAodGRlcC0+c29mdF9mbG9hdCkKKysgICAgcmV0dXJuOworKworKyAgaWYgKFRZUEVf TEVOR1RIICh0eXBlKSA8PSA4CisrICAgICAgJiYgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NP REVfRkxUKQorICAgICB7CistICAgICAgLyogVmVyc2lvbiAxLjcgb2YgdGhlIDY0LWJpdCBQb3dl clBDIEVMRiBBQkkgc2F5czoKKysgICAgICAvKiBGbG9hdHMgYW5kIGRvdWJsZXMgZ28gaW4gZjEg Li4gZjEzLiAgMzItYml0IGZsb2F0cyBhcmUgY29udmVydGVkCisrIAkgdG8gZG91YmxlIGZpcnN0 LiAgKi8KKysgICAgICBpZiAoYXJncG9zLT5yZWdjYWNoZSAmJiBhcmdwb3MtPmZyZWcgPD0gMTMp CisrCXsKKysJICBpbnQgcmVnbnVtID0gdGRlcC0+cHBjX2ZwMF9yZWdudW0gKyBhcmdwb3MtPmZy ZWc7CisrCSAgc3RydWN0IHR5cGUgKnJlZ3R5cGUgPSByZWdpc3Rlcl90eXBlIChnZGJhcmNoLCBy ZWdudW0pOworKwkgIGdkYl9ieXRlIHJlZ3ZhbFtNQVhfUkVHSVNURVJfU0laRV07CisgCistCSAi U2luZ2xlIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCB2YWx1ZXMgYXJlIG1hcHBlZCB0bworLQkg dGhlIGZpcnN0IHdvcmQgaW4gYSBzaW5nbGUgZG91Ymxld29yZC4iCisrCSAgY29udmVydF90eXBl ZF9mbG9hdGluZyAodmFsLCB0eXBlLCByZWd2YWwsIHJlZ3R5cGUpOworKwkgIHJlZ2NhY2hlX2Nv b2tlZF93cml0ZSAoYXJncG9zLT5yZWdjYWNoZSwgcmVnbnVtLCByZWd2YWwpOworKwl9CisgCist CSBBbmQgdmVyc2lvbiAxLjkgc2F5czoKKysgICAgICBhcmdwb3MtPmZyZWcrKzsKKysgICAgfQor KyAgZWxzZSBpZiAoVFlQRV9MRU5HVEggKHR5cGUpIDw9IDgKKysJICAgJiYgVFlQRV9DT0RFICh0 eXBlKSA9PSBUWVBFX0NPREVfREVDRkxPQVQpCisrICAgIHsKKysgICAgICAvKiBGbG9hdHMgYW5k IGRvdWJsZXMgZ28gaW4gZjEgLi4gZjEzLiAgMzItYml0IGRlY2ltYWwgZmxvYXRzIGFyZQorKwkg cGxhY2VkIGluIHRoZSBsZWFzdCBzaWduaWZpY2FudCB3b3JkLiAgKi8KKysgICAgICBpZiAoYXJn cG9zLT5yZWdjYWNoZSAmJiBhcmdwb3MtPmZyZWcgPD0gMTMpCisrCXsKKysJICBpbnQgcmVnbnVt ID0gdGRlcC0+cHBjX2ZwMF9yZWdudW0gKyBhcmdwb3MtPmZyZWc7CisrCSAgaW50IG9mZnNldCA9 IDggLSBUWVBFX0xFTkdUSCAodHlwZSk7CisgCistCSAiU2luZ2xlIHByZWNpc2lvbiBmbG9hdGlu ZyBwb2ludCB2YWx1ZXMgYXJlIG1hcHBlZCB0bworLQkgdGhlIHNlY29uZCB3b3JkIGluIGEgc2lu Z2xlIGRvdWJsZXdvcmQuIgorKwkgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZV9wYXJ0IChhcmdwb3Mt PnJlZ2NhY2hlLCByZWdudW0sCisrCQkJCSAgICAgIG9mZnNldCwgVFlQRV9MRU5HVEggKHR5cGUp LCB2YWwpOworKwl9CisgCistCSBHREIgdGhlbiB3cml0ZXMgc2luZ2xlIHByZWNpc2lvbiBmbG9h dGluZyBwb2ludCB2YWx1ZXMKKy0JIGF0IGJvdGggd29yZHMgaW4gYSBkb3VibGV3b3JkLCB0byBz dXBwb3J0IGJvdGggQUJJcy4gICovCistICAgICAgaWYgKFRZUEVfTEVOR1RIICh0eXBlKSA9PSA0 KQorKyAgICAgIGFyZ3Bvcy0+ZnJlZysrOworKyAgICB9CisrICBlbHNlIGlmIChUWVBFX0xFTkdU SCAodHlwZSkgPT0gMTYKKysJICAgJiYgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfRkxU CisrCSAgICYmIChnZGJhcmNoX2xvbmdfZG91YmxlX2Zvcm1hdCAoZ2RiYXJjaCkKKysJICAgICAg ID09IGZsb2F0Zm9ybWF0c19pYm1fbG9uZ19kb3VibGUpKQorKyAgICB7CisrICAgICAgLyogSUJN IGxvbmcgZG91YmxlIHN0b3JlZCBpbiB0d28gY29uc2VjdXRpdmUgRlBScy4gICovCisrICAgICAg aWYgKGFyZ3Bvcy0+cmVnY2FjaGUgJiYgYXJncG9zLT5mcmVnIDw9IDEzKQorIAl7CistCSAgbWVt Y3B5IChyZWd2YWwsIHZhbCwgNCk7CistCSAgbWVtY3B5IChyZWd2YWwgKyA0LCB2YWwsIDQpOwor LQkgIHAgPSByZWd2YWw7CisrCSAgaW50IHJlZ251bSA9IHRkZXAtPnBwY19mcDBfcmVnbnVtICsg YXJncG9zLT5mcmVnOworKworKwkgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAoYXJncG9zLT5yZWdj YWNoZSwgcmVnbnVtLCB2YWwpOworKwkgIGlmIChhcmdwb3MtPmZyZWcgPD0gMTIpCisrCSAgICBy ZWdjYWNoZV9jb29rZWRfd3JpdGUgKGFyZ3Bvcy0+cmVnY2FjaGUsIHJlZ251bSArIDEsIHZhbCAr IDgpOworIAl9CistICAgICAgZWxzZQorLQlwID0gdmFsOworIAorLSAgICAgIC8qIFdyaXRlIHZh bHVlIGluIHRoZSBzdGFjaydzIHBhcmFtZXRlciBzYXZlIGFyZWEuICAqLworLSAgICAgIHdyaXRl X21lbW9yeSAoZ3BhcmFtLCBwLCA4KTsKKysgICAgICBhcmdwb3MtPmZyZWcgKz0gMjsKKysgICAg fQorKyAgZWxzZSBpZiAoVFlQRV9MRU5HVEggKHR5cGUpID09IDE2CisrCSAgICYmIFRZUEVfQ09E RSAodHlwZSkgPT0gVFlQRV9DT0RFX0RFQ0ZMT0FUKQorKyAgICB7CisrICAgICAgLyogMTI4LWJp dCBkZWNpbWFsIGZsb2F0aW5nLXBvaW50IHZhbHVlcyBhcmUgc3RvcmVkIGluIGFuZCBldmVuL29k ZAorKwkgcGFpciBvZiBGUFJzLCB3aXRoIHRoZSBldmVuIEZQUiBob2xkaW5nIHRoZSBtb3N0IHNp Z25pZmljYW50IGhhbGYuICAqLworKyAgICAgIGFyZ3Bvcy0+ZnJlZyArPSBhcmdwb3MtPmZyZWcg JiAxOworIAorLSAgICAgIC8qIEZsb2F0cyBhbmQgRG91YmxlcyBnbyBpbiBmMSAuLiBmMTMuICBU aGV5IGFsc28gY29uc3VtZSBhIGxlZnQgYWxpZ25lZAorLQkgR1JFRywgYW5kIGNhbiBlbmQgdXAg aW4gbWVtb3J5LiAgKi8KKy0gICAgICBpZiAoZnJlZyA8PSAxMykKKysgICAgICBpZiAoYXJncG9z LT5yZWdjYWNoZSAmJiBhcmdwb3MtPmZyZWcgPD0gMTIpCisgCXsKKy0JICBzdHJ1Y3QgdHlwZSAq cmVndHlwZTsKKysJICBpbnQgcmVnbnVtID0gdGRlcC0+cHBjX2ZwMF9yZWdudW0gKyBhcmdwb3Mt PmZyZWc7CisgCistCSAgcmVndHlwZSA9IHJlZ2lzdGVyX3R5cGUgKGdkYmFyY2gsIHRkZXAtPnBw Y19mcDBfcmVnbnVtICsgZnJlZyk7CistCSAgY29udmVydF90eXBlZF9mbG9hdGluZyAodmFsLCB0 eXBlLCByZWd2YWwsIHJlZ3R5cGUpOworLQkgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAocmVnY2Fj aGUsIHRkZXAtPnBwY19mcDBfcmVnbnVtICsgZnJlZywgcmVndmFsKTsKKysJICByZWdjYWNoZV9j b29rZWRfd3JpdGUgKGFyZ3Bvcy0+cmVnY2FjaGUsIHJlZ251bSwgdmFsKTsKKysJICByZWdjYWNo ZV9jb29rZWRfd3JpdGUgKGFyZ3Bvcy0+cmVnY2FjaGUsIHJlZ251bSArIDEsIHZhbCArIDgpOwor IAl9CistICAgICAgaWYgKGdyZWcgPD0gMTApCistCXJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAocmVn Y2FjaGUsIHRkZXAtPnBwY19ncDBfcmVnbnVtICsgZ3JlZywgcmVndmFsKTsKKysKKysgICAgICBh cmdwb3MtPmZyZWcgKz0gMjsKKyAgICAgfQorLSAgZWxzZQorK30KKysKKysvKiBWQUwgaXMgYSB2 YWx1ZSBvZiBBbHRpVmVjIHZlY3RvciB0eXBlLiAgTG9hZCBpdCBpbnRvIGEgdmVjdG9yIHJlZ2lz dGVyCisrICAgaWYgcmVxdWlyZWQgYnkgdGhlIEFCSSwgYW5kIHVwZGF0ZSBBUkdQT1MuICAqLwor KworK3N0YXRpYyB2b2lkCisrcHBjNjRfc3lzdl9hYmlfcHVzaF92cmVnIChzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCwgY29uc3QgYmZkX2J5dGUgKnZhbCwKKysJCQkgIHN0cnVjdCBwcGM2NF9zeXN2 X2FyZ3BvcyAqYXJncG9zKQorK3sKKysgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJh cmNoX3RkZXAgKGdkYmFyY2gpOworKworKyAgaWYgKGFyZ3Bvcy0+cmVnY2FjaGUgJiYgYXJncG9z LT52cmVnIDw9IDEzKQorKyAgICByZWdjYWNoZV9jb29rZWRfd3JpdGUgKGFyZ3Bvcy0+cmVnY2Fj aGUsCisrCQkJICAgdGRlcC0+cHBjX3ZyMF9yZWdudW0gKyBhcmdwb3MtPnZyZWcsIHZhbCk7Cisr CisrICBhcmdwb3MtPnZyZWcrKzsKKyt9CisrCisrLyogVkFMIGlzIGEgdmFsdWUgb2YgVFlQRS4g IExvYWQgaXQgaW50byBtZW1vcnkgYW5kL29yIHJlZ2lzdGVycworKyAgIGFzIHJlcXVpcmVkIGJ5 IHRoZSBBQkksIGFuZCB1cGRhdGUgQVJHUE9TLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3BwYzY0 X3N5c3ZfYWJpX3B1c2hfcGFyYW0gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorKwkJCSAgIHN0 cnVjdCB0eXBlICp0eXBlLCBjb25zdCBiZmRfYnl0ZSAqdmFsLAorKwkJCSAgIHN0cnVjdCBwcGM2 NF9zeXN2X2FyZ3BvcyAqYXJncG9zKQorK3sKKysgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAg PSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpOworKworKyAgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0g VFlQRV9DT0RFX0ZMVAorKyAgICAgIHx8IFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0RF Q0ZMT0FUKQorKyAgICB7CisrICAgICAgLyogRmxvYXRpbmctcG9pbnQgc2NhbGFycyBhcmUgcGFz c2VkIGluIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVycy4gICovCisrICAgICAgcHBjNjRfc3lzdl9h YmlfcHVzaF92YWwgKGdkYmFyY2gsIHZhbCwgVFlQRV9MRU5HVEggKHR5cGUpLCAwLCBhcmdwb3Mp OworKyAgICAgIHBwYzY0X3N5c3ZfYWJpX3B1c2hfZnJlZyAoZ2RiYXJjaCwgdHlwZSwgdmFsLCBh cmdwb3MpOworKyAgICB9CisrICBlbHNlIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09E RV9BUlJBWSAmJiBUWVBFX1ZFQ1RPUiAodHlwZSkKKysJICAgJiYgdGRlcC0+dmVjdG9yX2FiaSA9 PSBQT1dFUlBDX1ZFQ19BTFRJVkVDCisrCSAgICYmIFRZUEVfTEVOR1RIICh0eXBlKSA9PSAxNikK KysgICAgeworKyAgICAgIC8qIEFsdGlWZWMgdmVjdG9ycyBhcmUgcGFzc2VkIGFsaWduZWQsIGFu ZCBpbiB2ZWN0b3IgcmVnaXN0ZXJzLiAgKi8KKysgICAgICBwcGM2NF9zeXN2X2FiaV9wdXNoX3Zh bCAoZ2RiYXJjaCwgdmFsLCBUWVBFX0xFTkdUSCAodHlwZSksIDE2LCBhcmdwb3MpOworKyAgICAg IHBwYzY0X3N5c3ZfYWJpX3B1c2hfdnJlZyAoZ2RiYXJjaCwgdmFsLCBhcmdwb3MpOworKyAgICB9 CisrICBlbHNlIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9BUlJBWSAmJiBUWVBF X1ZFQ1RPUiAodHlwZSkKKysJICAgJiYgVFlQRV9MRU5HVEggKHR5cGUpID49IDE2KQorICAgICB7 CistICAgICAgLyogSUJNIGxvbmcgZG91YmxlIHN0b3JlZCBpbiB0d28gZG91Ymxld29yZHMgb2Yg dGhlCistCSBwYXJhbWV0ZXIgc2F2ZSBhcmVhIGFuZCBjb3JyZXNwb25kaW5nIHJlZ2lzdGVycy4g ICovCistICAgICAgaWYgKCF0ZGVwLT5zb2Z0X2Zsb2F0ICYmIGZyZWcgPD0gMTMpCisrICAgICAg LyogTm9uLUFsdGl2ZWMgdmVjdG9ycyBhcmUgcGFzc2VkIGJ5IHJlZmVyZW5jZS4gICovCisrCisr ICAgICAgLyogQ29weSB2YWx1ZSBvbnRvIHRoZSBzdGFjayAuLi4gICovCisrICAgICAgQ09SRV9B RERSIGFkZHIgPSBhbGlnbl91cCAoYXJncG9zLT5yZWZwYXJhbSwgMTYpOworKyAgICAgIGlmIChh cmdwb3MtPnJlZ2NhY2hlKQorKwl3cml0ZV9tZW1vcnkgKGFkZHIsIHZhbCwgVFlQRV9MRU5HVEgg KHR5cGUpKTsKKysgICAgICBhcmdwb3MtPnJlZnBhcmFtID0gYWxpZ25fdXAgKGFkZHIgKyBUWVBF X0xFTkdUSCAodHlwZSksIHRkZXAtPndvcmRzaXplKTsKKysKKysgICAgICAvKiAuLi4gYW5kIHBh c3MgYSBwb2ludGVyIHRvIHRoZSBjb3B5IGFzIHBhcmFtZXRlci4gICovCisrICAgICAgcHBjNjRf c3lzdl9hYmlfcHVzaF9pbnRlZ2VyIChnZGJhcmNoLCBhZGRyLCBhcmdwb3MpOworKyAgICB9Cisr ICBlbHNlIGlmICgoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfSU5UCisrCSAgICB8fCBU WVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9FTlVNCisrCSAgICB8fCBUWVBFX0NPREUgKHR5 cGUpID09IFRZUEVfQ09ERV9CT09MCisrCSAgICB8fCBUWVBFX0NPREUgKHR5cGUpID09IFRZUEVf Q09ERV9DSEFSCisrCSAgICB8fCBUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9QVFIKKysJ ICAgIHx8IFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1JFRikKKysJICAgJiYgVFlQRV9M RU5HVEggKHR5cGUpIDw9IHRkZXAtPndvcmRzaXplKQorKyAgICB7CisrICAgICAgVUxPTkdFU1Qg d29yZCA9IDA7CisrCisrICAgICAgaWYgKGFyZ3Bvcy0+cmVnY2FjaGUpCisgCXsKKy0JICByZWdj YWNoZV9jb29rZWRfd3JpdGUgKHJlZ2NhY2hlLCB0ZGVwLT5wcGNfZnAwX3JlZ251bSArIGZyZWcs IHZhbCk7CistCSAgaWYgKGZyZWcgPD0gMTIpCistCSAgICByZWdjYWNoZV9jb29rZWRfd3JpdGUg KHJlZ2NhY2hlLCB0ZGVwLT5wcGNfZnAwX3JlZ251bSArIGZyZWcgKyAxLAorLQkJCQkgICB2YWwg KyA4KTsKKysJICAvKiBTaWduIGV4dGVuZCB0aGUgdmFsdWUsIHRoZW4gc3RvcmUgaXQgdW5zaWdu ZWQuICAqLworKwkgIHdvcmQgPSB1bnBhY2tfbG9uZyAodHlwZSwgdmFsKTsKKysKKysJICAvKiBD b252ZXJ0IGFueSBmdW5jdGlvbiBjb2RlIGFkZHJlc3NlcyBpbnRvIGRlc2NyaXB0b3JzLiAgKi8K KysJICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfUFRSCisrCSAgICAgIHx8IFRZ UEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1JFRikKKysJICAgIHsKKysJICAgICAgc3RydWN0 IHR5cGUgKnRhcmdldF90eXBlCisrCQk9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUg KHR5cGUpKTsKKysKKysJICAgICAgaWYgKFRZUEVfQ09ERSAodGFyZ2V0X3R5cGUpID09IFRZUEVf Q09ERV9GVU5DCisrCQkgIHx8IFRZUEVfQ09ERSAodGFyZ2V0X3R5cGUpID09IFRZUEVfQ09ERV9N RVRIT0QpCisrCQl7CisrCQkgIENPUkVfQUREUiBkZXNjID0gd29yZDsKKysKKysJCSAgY29udmVy dF9jb2RlX2FkZHJfdG9fZGVzY19hZGRyICh3b3JkLCAmZGVzYyk7CisrCQkgIHdvcmQgPSBkZXNj OworKwkJfQorKwkgICAgfQorIAl9CistICAgICAgaWYgKGdyZWcgPD0gMTApCisrCisrICAgICAg cHBjNjRfc3lzdl9hYmlfcHVzaF9pbnRlZ2VyIChnZGJhcmNoLCB3b3JkLCBhcmdwb3MpOworKyAg ICB9CisrICBlbHNlCisrICAgIHsKKysgICAgICBwcGM2NF9zeXN2X2FiaV9wdXNoX3ZhbCAoZ2Ri YXJjaCwgdmFsLCBUWVBFX0xFTkdUSCAodHlwZSksIDAsIGFyZ3Bvcyk7CisrCisrICAgICAgLyog VGhlIEFCSSAodmVyc2lvbiAxLjkpIHNwZWNpZmllcyB0aGF0IHN0cnVjdHMgY29udGFpbmluZyBh CisrCSBzaW5nbGUgZmxvYXRpbmctcG9pbnQgdmFsdWUsIGF0IGFueSBsZXZlbCBvZiBuZXN0aW5n IG9mCisrCSBzaW5nbGUtbWVtYmVyIHN0cnVjdHMsIGFyZSBwYXNzZWQgaW4gZmxvYXRpbmctcG9p bnQgcmVnaXN0ZXJzLiAgKi8KKysgICAgICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NP REVfU1RSVUNUCisrCSAgJiYgVFlQRV9ORklFTERTICh0eXBlKSA9PSAxKQorIAl7CistCSAgcmVn Y2FjaGVfY29va2VkX3dyaXRlIChyZWdjYWNoZSwgdGRlcC0+cHBjX2dwMF9yZWdudW0gKyBncmVn LCB2YWwpOworLQkgIGlmIChncmVnIDw9IDkpCistCSAgICByZWdjYWNoZV9jb29rZWRfd3JpdGUg KHJlZ2NhY2hlLCB0ZGVwLT5wcGNfZ3AwX3JlZ251bSArIGdyZWcgKyAxLAorLQkJCQkgICB2YWwg KyA4KTsKKysJICB3aGlsZSAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfU1RSVUNUCisr CQkgJiYgVFlQRV9ORklFTERTICh0eXBlKSA9PSAxKQorKwkgICAgdHlwZSA9IGNoZWNrX3R5cGVk ZWYgKFRZUEVfRklFTERfVFlQRSAodHlwZSwgMCkpOworKworKwkgIGlmIChUWVBFX0NPREUgKHR5 cGUpID09IFRZUEVfQ09ERV9GTFQpCisrCSAgICBwcGM2NF9zeXN2X2FiaV9wdXNoX2ZyZWcgKGdk YmFyY2gsIHR5cGUsIHZhbCwgYXJncG9zKTsKKyAJfQorLSAgICAgIHdyaXRlX21lbW9yeSAoZ3Bh cmFtLCB2YWwsIFRZUEVfTEVOR1RIICh0eXBlKSk7CisgICAgIH0KKyB9CisgCitAQCAtMTIzNywy MCArMTQ0MywxMSBAQCBwcGM2NF9zeXN2X2FiaV9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoLAorICAgZm9yICh3cml0ZV9wYXNzID0gMDsgd3JpdGVfcGFzcyA8IDI7IHdy aXRlX3Bhc3MrKykKKyAgICAgeworICAgICAgIGludCBhcmdubzsKKy0gICAgICAvKiBOZXh0IGF2 YWlsYWJsZSBmbG9hdGluZyBwb2ludCByZWdpc3RlciBmb3IgZmxvYXQgYW5kIGRvdWJsZQorLSAg ICAgICAgIGFyZ3VtZW50cy4gICovCistICAgICAgaW50IGZyZWcgPSAxOworLSAgICAgIC8qIE5l eHQgYXZhaWxhYmxlIGdlbmVyYWwgcmVnaXN0ZXIgZm9yIG5vbi12ZWN0b3IgKGJ1dCBwb3NzaWJs eQorLSAgICAgICAgIGZsb2F0KSBhcmd1bWVudHMuICAqLworLSAgICAgIGludCBncmVnID0gMzsK Ky0gICAgICAvKiBOZXh0IGF2YWlsYWJsZSB2ZWN0b3IgcmVnaXN0ZXIgZm9yIHZlY3RvciBhcmd1 bWVudHMuICAqLworLSAgICAgIGludCB2cmVnID0gMjsKKy0gICAgICAvKiBUaGUgYWRkcmVzcywg YXQgd2hpY2ggdGhlIG5leHQgZ2VuZXJhbCBwdXJwb3NlIHBhcmFtZXRlcgorLSAgICAgICAgIChp bnRlZ2VyLCBzdHJ1Y3QsIGZsb2F0LCB2ZWN0b3IsIC4uLikgc2hvdWxkIGJlIHNhdmVkLiAgKi8K Ky0gICAgICBDT1JFX0FERFIgZ3BhcmFtOworLSAgICAgIC8qIFRoZSBhZGRyZXNzLCBhdCB3aGlj aCB0aGUgbmV4dCBieS1yZWZlcmVuY2UgcGFyYW1ldGVyCistCSAobm9uLUFsdGl2ZWMgdmVjdG9y LCB2YXJpYWJseS1zaXplZCB0eXBlKSBzaG91bGQgYmUgc2F2ZWQuICAqLworLSAgICAgIENPUkVf QUREUiByZWZwYXJhbTsKKysKKysgICAgICBzdHJ1Y3QgcHBjNjRfc3lzdl9hcmdwb3MgYXJncG9z OworKyAgICAgIGFyZ3Bvcy5ncmVnID0gMzsKKysgICAgICBhcmdwb3MuZnJlZyA9IDE7CisrICAg ICAgYXJncG9zLnZyZWcgPSAyOworIAorICAgICAgIGlmICghd3JpdGVfcGFzcykKKyAJeworQEAg LTEyNTgsMTkgKzE0NTUsMjEgQEAgcHBjNjRfc3lzdl9hYmlfcHVzaF9kdW1teV9jYWxsIChzdHJ1 Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKyAJICAgICBvZmZzZXRzIChzdGFydCBhZGRyZXNzIHplcm8p IHRoYW4gYWRkcmVzc2VzLiAgVGhhdCB3YXkKKyAJICAgICB0aGV5IGFjY3VtdWxhdGUgdGhlIHRv dGFsIHN0YWNrIHNwYWNlIGVhY2ggcmVnaW9uCisgCSAgICAgcmVxdWlyZXMuICAqLworLQkgIGdw YXJhbSA9IDA7CistCSAgcmVmcGFyYW0gPSAwOworKwkgIGFyZ3Bvcy5yZWdjYWNoZSA9IE5VTEw7 CisrCSAgYXJncG9zLmdwYXJhbSA9IDA7CisrCSAgYXJncG9zLnJlZnBhcmFtID0gMDsKKyAJfQor ICAgICAgIGVsc2UKKyAJeworIAkgIC8qIERlY3JlbWVudCB0aGUgc3RhY2sgcG9pbnRlciBtYWtp bmcgc3BhY2UgZm9yIHRoZSBBbHRpdmVjCisgCSAgICAgYW5kIGdlbmVyYWwgb24tc3RhY2sgcGFy YW1ldGVycy4gIFNldCByZWZwYXJhbSBhbmQgZ3BhcmFtCisgCSAgICAgdG8gdGhlaXIgY29ycmVz cG9uZGluZyByZWdpb25zLiAgKi8KKy0JICByZWZwYXJhbSA9IGFsaWduX2Rvd24gKHNwIC0gcmVm cGFyYW1fc2l6ZSwgMTYpOworLQkgIGdwYXJhbSA9IGFsaWduX2Rvd24gKHJlZnBhcmFtIC0gZ3Bh cmFtX3NpemUsIDE2KTsKKysJICBhcmdwb3MucmVnY2FjaGUgPSByZWdjYWNoZTsKKysJICBhcmdw b3MucmVmcGFyYW0gPSBhbGlnbl9kb3duIChzcCAtIHJlZnBhcmFtX3NpemUsIDE2KTsKKysJICBh cmdwb3MuZ3BhcmFtID0gYWxpZ25fZG93biAoYXJncG9zLnJlZnBhcmFtIC0gZ3BhcmFtX3NpemUs IDE2KTsKKyAJICAvKiBBZGQgaW4gc3BhY2UgZm9yIHRoZSBUT0MsIGxpbmsgZWRpdG9yIGRvdWJs ZSB3b3JkLAorIAkgICAgIGNvbXBpbGVyIGRvdWJsZSB3b3JkLCBMUiBzYXZlIGFyZWEsIENSIHNh dmUgYXJlYS4gICovCistCSAgc3AgPSBhbGlnbl9kb3duIChncGFyYW0gLSA0OCwgMTYpOworKwkg IHNwID0gYWxpZ25fZG93biAoYXJncG9zLmdwYXJhbSAtIDQ4LCAxNik7CisgCX0KKyAKKyAgICAg ICAvKiBJZiB0aGUgZnVuY3Rpb24gaXMgcmV0dXJuaW5nIGEgYHN0cnVjdCcsIHRoZW4gdGhlcmUg aXMgYW4KK0BAIC0xMjc5LDE0ICsxNDc4LDcgQEAgcHBjNjRfc3lzdl9hYmlfcHVzaF9kdW1teV9j YWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKyAgICAgICAgICBzaG91bGQgYWR2YW5jZSBv bmUgd29yZCBhbmQgc3RhcnQgZnJvbSByNCByZWdpc3RlciB0byBjb3B5CisgICAgICAgICAgcGFy YW1ldGVycy4gIFRoaXMgYWxzbyBjb25zdW1lcyBvbmUgb24tc3RhY2sgcGFyYW1ldGVyIHNsb3Qu ICAqLworICAgICAgIGlmIChzdHJ1Y3RfcmV0dXJuKQorLQl7CistCSAgaWYgKHdyaXRlX3Bhc3Mp CistCSAgICByZWdjYWNoZV9jb29rZWRfd3JpdGVfc2lnbmVkIChyZWdjYWNoZSwKKy0JCQkJCSAg dGRlcC0+cHBjX2dwMF9yZWdudW0gKyBncmVnLAorLQkJCQkJICBzdHJ1Y3RfYWRkcik7CistCSAg Z3JlZysrOworLQkgIGdwYXJhbSA9IGFsaWduX3VwIChncGFyYW0gKyB0ZGVwLT53b3Jkc2l6ZSwg dGRlcC0+d29yZHNpemUpOworLQl9CisrCXBwYzY0X3N5c3ZfYWJpX3B1c2hfaW50ZWdlciAoZ2Ri YXJjaCwgc3RydWN0X2FkZHIsICZhcmdwb3MpOworIAorICAgICAgIGZvciAoYXJnbm8gPSAwOyBh cmdubyA8IG5hcmdzOyBhcmdubysrKQorIAl7CitAQCAtMTI5NCw0MzIgKzE0ODYsNTQgQEAgcHBj NjRfc3lzdl9hYmlfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKyAJ ICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFyZykpOwor IAkgIGNvbnN0IGJmZF9ieXRlICp2YWwgPSB2YWx1ZV9jb250ZW50cyAoYXJnKTsKKyAKKy0JICBp ZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfRkxUICYmIFRZUEVfTEVOR1RIICh0eXBl KSA8PSA4KQorKwkgIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9DT01QTEVYKQor IAkgICAgeworLQkgICAgICBpZiAod3JpdGVfcGFzcykKKy0JCSAgcHBjNjRfc3lzdl9hYmlfcHVz aF9mbG9hdCAoZ2RiYXJjaCwgcmVnY2FjaGUsIHRkZXAsIHR5cGUsCistCQkJCQkgICAgIHZhbCwg ZnJlZywgZ3JlZywgZ3BhcmFtKTsKKy0KKy0JICAgICAgZnJlZysrOworLQkgICAgICBncmVnKys7 CistCSAgICAgIC8qIEFsd2F5cyBjb25zdW1lIHBhcmFtZXRlciBzdGFjayBzcGFjZS4gICovCist CSAgICAgIGdwYXJhbSA9IGFsaWduX3VwIChncGFyYW0gKyA4LCB0ZGVwLT53b3Jkc2l6ZSk7Cist CSAgICB9CistCSAgZWxzZSBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfRkxUCist CQkgICAmJiBUWVBFX0xFTkdUSCAodHlwZSkgPT0gMTYKKy0JCSAgICYmIChnZGJhcmNoX2xvbmdf ZG91YmxlX2Zvcm1hdCAoZ2RiYXJjaCkKKy0JCSAgICAgICA9PSBmbG9hdGZvcm1hdHNfaWJtX2xv bmdfZG91YmxlKSkKKy0JICAgIHsKKy0JICAgICAgaWYgKHdyaXRlX3Bhc3MpCistCQlwcGM2NF9z eXN2X2FiaV9wdXNoX2Zsb2F0IChnZGJhcmNoLCByZWdjYWNoZSwgdGRlcCwgdHlwZSwKKy0JCQkJ CSAgIHZhbCwgZnJlZywgZ3JlZywgZ3BhcmFtKTsKKy0JICAgICAgZnJlZyArPSAyOworLQkgICAg ICBncmVnICs9IDI7CistCSAgICAgIGdwYXJhbSA9IGFsaWduX3VwIChncGFyYW0gKyBUWVBFX0xF TkdUSCAodHlwZSksIHRkZXAtPndvcmRzaXplKTsKKy0JICAgIH0KKy0JICBlbHNlIGlmIChUWVBF X0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9DT01QTEVYCistCSAgICAgICYmIChUWVBFX0xFTkdU SCAodHlwZSkgPT0gOCB8fCBUWVBFX0xFTkdUSCAodHlwZSkgPT0gMTYpKQorLQkgICAgeworLQkg ICAgICBpbnQgaTsKKy0KKy0JICAgICAgZm9yIChpID0gMDsgaSA8IDI7IGkrKykKKy0JCXsKKy0J CSAgaWYgKHdyaXRlX3Bhc3MpCistCQkgICAgeworLQkJICAgICAgc3RydWN0IHR5cGUgKnRhcmdl dF90eXBlOworLQorLQkJICAgICAgdGFyZ2V0X3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RB UkdFVF9UWVBFICh0eXBlKSk7CistCQkgICAgICBwcGM2NF9zeXN2X2FiaV9wdXNoX2Zsb2F0IChn ZGJhcmNoLCByZWdjYWNoZSwgdGRlcCwKKy0JCQkJCQkgdGFyZ2V0X3R5cGUsIHZhbCArIGkgKgor LQkJCQkJCSBUWVBFX0xFTkdUSCAodGFyZ2V0X3R5cGUpLAorLQkJCQkJCSBmcmVnLCBncmVnLCBn cGFyYW0pOworLQkJICAgIH0KKy0JCSAgZnJlZysrOworLQkJICBncmVnKys7CistCQkgIC8qIEFs d2F5cyBjb25zdW1lIHBhcmFtZXRlciBzdGFjayBzcGFjZS4gICovCistCQkgIGdwYXJhbSA9IGFs aWduX3VwIChncGFyYW0gKyA4LCB0ZGVwLT53b3Jkc2l6ZSk7CistCQl9CistCSAgICB9CistCSAg ZWxzZSBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfQ09NUExFWAorLQkJICAgJiYg VFlQRV9MRU5HVEggKHR5cGUpID09IDMyCistCQkgICAmJiAoZ2RiYXJjaF9sb25nX2RvdWJsZV9m b3JtYXQgKGdkYmFyY2gpCistCQkgICAgICAgPT0gZmxvYXRmb3JtYXRzX2libV9sb25nX2RvdWJs ZSkpCistCSAgICB7CistCSAgICAgIGludCBpOworLQorLQkgICAgICBmb3IgKGkgPSAwOyBpIDwg MjsgaSsrKQorLQkJeworLQkJICBzdHJ1Y3QgdHlwZSAqdGFyZ2V0X3R5cGU7CistCistCQkgIHRh cmdldF90eXBlID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpOworLQkJ ICBpZiAod3JpdGVfcGFzcykKKy0JCSAgICBwcGM2NF9zeXN2X2FiaV9wdXNoX2Zsb2F0IChnZGJh cmNoLCByZWdjYWNoZSwgdGRlcCwKKy0JCQkJCSAgICAgICB0YXJnZXRfdHlwZSwgdmFsICsgaSAq CistCQkJCQkgICAgICAgVFlQRV9MRU5HVEggKHRhcmdldF90eXBlKSwKKy0JCQkJCSAgICAgICBm cmVnLCBncmVnLCBncGFyYW0pOworLQkJICBmcmVnICs9IDI7CistCQkgIGdyZWcgKz0gMjsKKy0J CSAgZ3BhcmFtID0gYWxpZ25fdXAgKGdwYXJhbSArIFRZUEVfTEVOR1RIICh0YXJnZXRfdHlwZSks CistCQkJCSAgICAgdGRlcC0+d29yZHNpemUpOworLQkJfQorLQkgICAgfQorLQkgIGVsc2UgaWYg KFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0RFQ0ZMT0FUCistCQkgICAmJiBUWVBFX0xF TkdUSCAodHlwZSkgPD0gOCkKKy0JICAgIHsKKy0JICAgICAgLyogMzItYml0IGFuZCA2NC1iaXQg ZGVjaW1hbCBmbG9hdHMgZ28gaW4gZjEgLi4gZjEzLiAgVGhleSBjYW4KKy0JICAgICAgICAgZW5k IHVwIGluIG1lbW9yeS4gICovCistCSAgICAgIGlmICh3cml0ZV9wYXNzKQorLQkJeworLQkJICBn ZGJfYnl0ZSByZWd2YWxbTUFYX1JFR0lTVEVSX1NJWkVdOworLQkJICBjb25zdCBnZGJfYnl0ZSAq cDsKKy0KKy0JCSAgLyogMzItYml0IGRlY2ltYWwgZmxvYXRzIGFyZSByaWdodCBhbGlnbmVkIGlu IHRoZQorLQkJICAgICBkb3VibGV3b3JkLiAgKi8KKy0JCSAgaWYgKFRZUEVfTEVOR1RIICh0eXBl KSA9PSA0KQorLQkJICAgIHsKKy0JCSAgICAgIG1lbWNweSAocmVndmFsICsgNCwgdmFsLCA0KTsK Ky0JCSAgICAgIHAgPSByZWd2YWw7CistCQkgICAgfQorLQkJICBlbHNlCistCQkgICAgcCA9IHZh bDsKKy0KKy0JCSAgLyogV3JpdGUgdmFsdWUgaW4gdGhlIHN0YWNrJ3MgcGFyYW1ldGVyIHNhdmUg YXJlYS4gICovCistCQkgIHdyaXRlX21lbW9yeSAoZ3BhcmFtLCBwLCA4KTsKKy0KKy0JCSAgaWYg KGZyZWcgPD0gMTMpCistCQkgICAgcmVnY2FjaGVfY29va2VkX3dyaXRlIChyZWdjYWNoZSwKKy0J CQkJCSAgIHRkZXAtPnBwY19mcDBfcmVnbnVtICsgZnJlZywgcCk7CistCQl9CistCistCSAgICAg IGZyZWcrKzsKKy0JICAgICAgZ3JlZysrOworLQkgICAgICAvKiBBbHdheXMgY29uc3VtZSBwYXJh bWV0ZXIgc3RhY2sgc3BhY2UuICAqLworLQkgICAgICBncGFyYW0gPSBhbGlnbl91cCAoZ3BhcmFt ICsgOCwgdGRlcC0+d29yZHNpemUpOworLQkgICAgfQorLQkgIGVsc2UgaWYgKFRZUEVfQ09ERSAo dHlwZSkgPT0gVFlQRV9DT0RFX0RFQ0ZMT0FUICYmCistCQkgICBUWVBFX0xFTkdUSCAodHlwZSkg PT0gMTYpCistCSAgICB7CistCSAgICAgIC8qIDEyOC1iaXQgZGVjaW1hbCBmbG9hdHMgZ28gaW4g ZjIgLi4gZjEyLCBhbHdheXMgaW4gZXZlbi9vZGQKKy0JICAgICAgICAgcGFpcnMuICBUaGV5IGNh biBlbmQgdXAgaW4gbWVtb3J5LCB1c2luZyB0d28gZG91Ymxld29yZHMuICAqLworLQkgICAgICBp ZiAod3JpdGVfcGFzcykKKy0JCXsKKy0JCSAgaWYgKGZyZWcgPD0gMTIpCistCQkgICAgeworLQkJ ICAgICAgLyogTWFrZSBzdXJlIGZyZWcgaXMgZXZlbi4gICovCistCQkgICAgICBmcmVnICs9IGZy ZWcgJiAxOworLQkJICAgICAgcmVnY2FjaGVfY29va2VkX3dyaXRlIChyZWdjYWNoZSwKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZGVwLT5wcGNfZnAwX3Jl Z251bSArIGZyZWcsIHZhbCk7CistCQkgICAgICByZWdjYWNoZV9jb29rZWRfd3JpdGUgKHJlZ2Nh Y2hlLAorLQkJCSAgdGRlcC0+cHBjX2ZwMF9yZWdudW0gKyBmcmVnICsgMSwgdmFsICsgOCk7Cist CQkgICAgfQorLQorLQkJICB3cml0ZV9tZW1vcnkgKGdwYXJhbSwgdmFsLCBUWVBFX0xFTkdUSCAo dHlwZSkpOworLQkJfQorKwkgICAgICAvKiBDb21wbGV4IHR5cGVzIGFyZSBwYXNzZWQgYXMgaWYg dHdvIGluZGVwZW5kZW50IHNjYWxhcnMuICAqLworKwkgICAgICBzdHJ1Y3QgdHlwZSAqZWx0eXBl ID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpOworIAorLQkgICAgICBm cmVnICs9IDI7CistCSAgICAgIGdyZWcgKz0gMjsKKy0JICAgICAgZ3BhcmFtID0gYWxpZ25fdXAg KGdwYXJhbSArIFRZUEVfTEVOR1RIICh0eXBlKSwgdGRlcC0+d29yZHNpemUpOworKwkgICAgICBw cGM2NF9zeXN2X2FiaV9wdXNoX3BhcmFtIChnZGJhcmNoLCBlbHR5cGUsIHZhbCwgJmFyZ3Bvcyk7 CisrCSAgICAgIHBwYzY0X3N5c3ZfYWJpX3B1c2hfcGFyYW0gKGdkYmFyY2gsIGVsdHlwZSwKKysJ CQkJIAkgdmFsICsgVFlQRV9MRU5HVEggKGVsdHlwZSksICZhcmdwb3MpOworIAkgICAgfQorLQkg IGVsc2UgaWYgKFRZUEVfTEVOR1RIICh0eXBlKSA8IDE2CistCQkgICAmJiBUWVBFX0NPREUgKHR5 cGUpID09IFRZUEVfQ09ERV9BUlJBWQorLQkJICAgJiYgVFlQRV9WRUNUT1IgKHR5cGUpCisrCSAg ZWxzZSBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfQVJSQVkgJiYgVFlQRV9WRUNU T1IgKHR5cGUpCisgCQkgICAmJiBvcGVuY2xfYWJpKQorIAkgICAgeworIAkgICAgICAvKiBPcGVu Q0wgdmVjdG9ycyBzaG9ydGVyIHRoYW4gMTYgYnl0ZXMgYXJlIHBhc3NlZCBhcyBpZgorLQkJIGEg c2VyaWVzIG9mIGluZGVwZW5kZW50IHNjYWxhcnMuICAqLworLQkgICAgICBzdHJ1Y3QgdHlwZSAq ZWx0eXBlID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpOworLQkgICAg ICBpbnQgaSwgbmVsdCA9IFRZUEVfTEVOR1RIICh0eXBlKSAvIFRZUEVfTEVOR1RIIChlbHR5cGUp OworKwkJIGEgc2VyaWVzIG9mIGluZGVwZW5kZW50IHNjYWxhcnM7IE9wZW5DTCB2ZWN0b3JzIDE2 IGJ5dGVzCisrCQkgb3IgbG9uZ2VyIGFyZSBwYXNzZWQgYXMgaWYgYSBzZXJpZXMgb2YgQWx0aVZl YyB2ZWN0b3JzLiAgKi8KKysJICAgICAgc3RydWN0IHR5cGUgKmVsdHlwZTsKKysJICAgICAgaW50 IGksIG5lbHQ7CisgCisrCSAgICAgIGlmIChUWVBFX0xFTkdUSCAodHlwZSkgPCAxNikKKysJCWVs dHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKTsKKysJICAgICAg ZWxzZQorKwkJZWx0eXBlID0gcmVnaXN0ZXJfdHlwZSAoZ2RiYXJjaCwgdGRlcC0+cHBjX3ZyMF9y ZWdudW0pOworKworKwkgICAgICBuZWx0ID0gVFlQRV9MRU5HVEggKHR5cGUpIC8gVFlQRV9MRU5H VEggKGVsdHlwZSk7CisgCSAgICAgIGZvciAoaSA9IDA7IGkgPCBuZWx0OyBpKyspCisgCQl7Cisg CQkgIGNvbnN0IGdkYl9ieXRlICplbHZhbCA9IHZhbCArIGkgKiBUWVBFX0xFTkdUSCAoZWx0eXBl KTsKKyAKKy0JCSAgaWYgKFRZUEVfQ09ERSAoZWx0eXBlKSA9PSBUWVBFX0NPREVfRkxUKQorLQkJ ICAgIHsKKy0JCSAgICAgIGlmICh3cml0ZV9wYXNzKQorLQkJCXsKKy0JCQkgIGdkYl9ieXRlIHJl Z3ZhbFtNQVhfUkVHSVNURVJfU0laRV07CistCQkJICBjb25zdCBnZGJfYnl0ZSAqcDsKKy0KKy0J CQkgIGlmIChUWVBFX0xFTkdUSCAoZWx0eXBlKSA9PSA0KQorLQkJCSAgICB7CistCQkJICAgICAg bWVtY3B5IChyZWd2YWwsIGVsdmFsLCA0KTsKKy0JCQkgICAgICBtZW1jcHkgKHJlZ3ZhbCArIDQs IGVsdmFsLCA0KTsKKy0JCQkgICAgICBwID0gcmVndmFsOworLQkJCSAgICB9CistCQkJICBlbHNl CistCQkJICAgIHAgPSBlbHZhbDsKKy0KKy0JCQkgIHdyaXRlX21lbW9yeSAoZ3BhcmFtLCBwLCA4 KTsKKy0KKy0JCQkgIGlmIChmcmVnIDw9IDEzKQorLQkJCSAgICB7CistCQkJICAgICAgaW50IHJl Z251bSA9IHRkZXAtPnBwY19mcDBfcmVnbnVtICsgZnJlZzsKKy0JCQkgICAgICBzdHJ1Y3QgdHlw ZSAqcmVndHlwZQorLQkJCQk9IHJlZ2lzdGVyX3R5cGUgKGdkYmFyY2gsIHJlZ251bSk7CistCist CQkJICAgICAgY29udmVydF90eXBlZF9mbG9hdGluZyAoZWx2YWwsIGVsdHlwZSwKKy0JCQkJCQkg ICAgICByZWd2YWwsIHJlZ3R5cGUpOworLQkJCSAgICAgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAo cmVnY2FjaGUsIHJlZ251bSwgcmVndmFsKTsKKy0JCQkgICAgfQorLQorLQkJCSAgaWYgKGdyZWcg PD0gMTApCistCQkJICAgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAocmVnY2FjaGUsCistCQkJCQkJ ICAgdGRlcC0+cHBjX2dwMF9yZWdudW0gKyBncmVnLAorLQkJCQkJCSAgIHJlZ3ZhbCk7CistCQkJ fQorLQorLQkJICAgICAgZnJlZysrOworLQkJICAgICAgZ3JlZysrOworLQkJICAgICAgZ3BhcmFt ID0gYWxpZ25fdXAgKGdwYXJhbSArIDgsIHRkZXAtPndvcmRzaXplKTsKKy0JCSAgICB9CistCQkg IGVsc2UKKy0JCSAgICB7CistCQkgICAgICBpZiAod3JpdGVfcGFzcykKKy0JCQl7CistCQkJICBV TE9OR0VTVCB3b3JkID0gdW5wYWNrX2xvbmcgKGVsdHlwZSwgZWx2YWwpOworLQkJCSAgaWYgKGdy ZWcgPD0gMTApCistCQkJICAgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZV91bnNpZ25lZAorLQkJCSAg ICAgIChyZWdjYWNoZSwgdGRlcC0+cHBjX2dwMF9yZWdudW0gKyBncmVnLCB3b3JkKTsKKy0KKy0J CQkgIHdyaXRlX21lbW9yeV91bnNpZ25lZF9pbnRlZ2VyCistCQkJICAgIChncGFyYW0sIHRkZXAt PndvcmRzaXplLCBieXRlX29yZGVyLCB3b3JkKTsKKy0JCQl9CistCistCQkgICAgICBncmVnKys7 CistCQkgICAgICBncGFyYW0gPSBhbGlnbl91cCAoZ3BhcmFtICsgVFlQRV9MRU5HVEggKGVsdHlw ZSksCistCQkJCQkgdGRlcC0+d29yZHNpemUpOworLQkJICAgIH0KKy0JCX0KKy0JICAgIH0KKy0J ICBlbHNlIGlmIChUWVBFX0xFTkdUSCAodHlwZSkgPj0gMTYKKy0JCSAgICYmIFRZUEVfQ09ERSAo dHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZCistCQkgICAmJiBUWVBFX1ZFQ1RPUiAodHlwZSkKKy0J CSAgICYmIG9wZW5jbF9hYmkpCistCSAgICB7CistCSAgICAgIC8qIE9wZW5DTCB2ZWN0b3JzIDE2 IGJ5dGVzIG9yIGxvbmdlciBhcmUgcGFzc2VkIGFzIGlmCistCQkgYSBzZXJpZXMgb2YgQWx0aVZl YyB2ZWN0b3JzLiAgKi8KKy0JICAgICAgaW50IGk7CistCistCSAgICAgIGZvciAoaSA9IDA7IGkg PCBUWVBFX0xFTkdUSCAodHlwZSkgLyAxNjsgaSsrKQorLQkJeworLQkJICBjb25zdCBnZGJfYnl0 ZSAqZWx2YWwgPSB2YWwgKyBpICogMTY7CistCistCQkgIGdwYXJhbSA9IGFsaWduX3VwIChncGFy YW0sIDE2KTsKKy0JCSAgZ3JlZyArPSBncmVnICYgMTsKKy0KKy0JCSAgaWYgKHdyaXRlX3Bhc3Mp CistCQkgICAgeworLQkJICAgICAgaWYgKHZyZWcgPD0gMTMpCistCQkJcmVnY2FjaGVfY29va2Vk X3dyaXRlIChyZWdjYWNoZSwKKy0JCQkJCSAgICAgICB0ZGVwLT5wcGNfdnIwX3JlZ251bSArIHZy ZWcsCistCQkJCQkgICAgICAgZWx2YWwpOworLQorLQkJICAgICAgd3JpdGVfbWVtb3J5IChncGFy YW0sIGVsdmFsLCAxNik7CistCQkgICAgfQorLQorLQkJICBncmVnICs9IDI7CistCQkgIHZyZWcr KzsKKy0JCSAgZ3BhcmFtICs9IDE2OworLQkJfQorLQkgICAgfQorLQkgIGVsc2UgaWYgKFRZUEVf TEVOR1RIICh0eXBlKSA9PSAxNiAmJiBUWVBFX1ZFQ1RPUiAodHlwZSkKKy0JCSAgICYmIFRZUEVf Q09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZCistCQkgICAmJiB0ZGVwLT52ZWN0b3JfYWJp ID09IFBPV0VSUENfVkVDX0FMVElWRUMpCistCSAgICB7CistCSAgICAgIC8qIEluIHRoZSBBbHRp dmVjIEFCSSwgdmVjdG9ycyBnbyBpbiB0aGUgdmVjdG9yIHJlZ2lzdGVycworLQkJIHYyIC4uIHYx MywgYXMgd2VsbCBhcyB0aGUgcGFyYW1ldGVyIGFyZWEgLS0gYWx3YXlzIGF0CistCQkgMTYtYnl0 ZSBhbGlnbmVkIGFkZHJlc3Nlcy4gICovCistCistCSAgICAgIGdwYXJhbSA9IGFsaWduX3VwIChn cGFyYW0sIDE2KTsKKy0JICAgICAgZ3JlZyArPSBncmVnICYgMTsKKy0KKy0JICAgICAgaWYgKHdy aXRlX3Bhc3MpCistCQl7CistCQkgIGlmICh2cmVnIDw9IDEzKQorLQkJICAgIHJlZ2NhY2hlX2Nv b2tlZF93cml0ZSAocmVnY2FjaGUsCistCQkJCQkgICB0ZGVwLT5wcGNfdnIwX3JlZ251bSArIHZy ZWcsIHZhbCk7CistCistCQkgIHdyaXRlX21lbW9yeSAoZ3BhcmFtLCB2YWwsIFRZUEVfTEVOR1RI ICh0eXBlKSk7CistCQl9CistCistCSAgICAgIGdyZWcgKz0gMjsKKy0JICAgICAgdnJlZysrOwor LQkgICAgICBncGFyYW0gKz0gMTY7CistCSAgICB9CistCSAgZWxzZSBpZiAoVFlQRV9MRU5HVEgg KHR5cGUpID49IDE2ICYmIFRZUEVfVkVDVE9SICh0eXBlKQorLQkJICAgJiYgVFlQRV9DT0RFICh0 eXBlKSA9PSBUWVBFX0NPREVfQVJSQVkpCistCSAgICB7CistCSAgICAgIC8qIE5vbi1BbHRpdmVj IHZlY3RvcnMgYXJlIHBhc3NlZCBieSByZWZlcmVuY2UuICAqLworLQorLQkgICAgICAvKiBDb3B5 IHZhbHVlIG9udG8gdGhlIHN0YWNrIC4uLiAgKi8KKy0JICAgICAgcmVmcGFyYW0gPSBhbGlnbl91 cCAocmVmcGFyYW0sIDE2KTsKKy0JICAgICAgaWYgKHdyaXRlX3Bhc3MpCistCQl3cml0ZV9tZW1v cnkgKHJlZnBhcmFtLCB2YWwsIFRZUEVfTEVOR1RIICh0eXBlKSk7CistCistCSAgICAgIC8qIC4u LiBhbmQgcGFzcyBhIHBvaW50ZXIgdG8gdGhlIGNvcHkgYXMgcGFyYW1ldGVyLiAgKi8KKy0JICAg ICAgaWYgKHdyaXRlX3Bhc3MpCistCQl7CistCQkgIGlmIChncmVnIDw9IDEwKQorLQkJICAgIHJl Z2NhY2hlX2Nvb2tlZF93cml0ZV91bnNpZ25lZCAocmVnY2FjaGUsCistCQkJCQkJICAgIHRkZXAt PnBwY19ncDBfcmVnbnVtICsKKy0JCQkJCQkgICAgZ3JlZywgcmVmcGFyYW0pOworLQkJICB3cml0 ZV9tZW1vcnlfdW5zaWduZWRfaW50ZWdlciAoZ3BhcmFtLCB0ZGVwLT53b3Jkc2l6ZSwKKy0JCQkJ CQkgYnl0ZV9vcmRlciwgcmVmcGFyYW0pOworLQkJfQorLQkgICAgICBncmVnKys7CistCSAgICAg IGdwYXJhbSA9IGFsaWduX3VwIChncGFyYW0gKyB0ZGVwLT53b3Jkc2l6ZSwgdGRlcC0+d29yZHNp emUpOworLQkgICAgICByZWZwYXJhbSA9IGFsaWduX3VwIChyZWZwYXJhbSArIFRZUEVfTEVOR1RI ICh0eXBlKSwgdGRlcC0+d29yZHNpemUpOworLQkgICAgfQorLQkgIGVsc2UgaWYgKChUWVBFX0NP REUgKHR5cGUpID09IFRZUEVfQ09ERV9JTlQKKy0JCSAgICB8fCBUWVBFX0NPREUgKHR5cGUpID09 IFRZUEVfQ09ERV9FTlVNCistCQkgICAgfHwgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVf Qk9PTAorLQkJICAgIHx8IFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0NIQVIKKy0JCSAg ICB8fCBUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9QVFIKKy0JCSAgICB8fCBUWVBFX0NP REUgKHR5cGUpID09IFRZUEVfQ09ERV9SRUYpCistCQkgICAmJiBUWVBFX0xFTkdUSCAodHlwZSkg PD0gOCkKKy0JICAgIHsKKy0JICAgICAgLyogU2NhbGFycyBhbmQgUG9pbnRlcnMgZ2V0IHNpZ25b dW5dZXh0ZW5kZWQgYW5kIGdvIGluCistCSAgICAgICAgIGdwcjMgLi4gZ3ByMTAuICBUaGV5IGNh biBhbHNvIGVuZCB1cCBpbiBtZW1vcnkuICAqLworLQkgICAgICBpZiAod3JpdGVfcGFzcykKKy0J CXsKKy0JCSAgLyogU2lnbiBleHRlbmQgdGhlIHZhbHVlLCB0aGVuIHN0b3JlIGl0IHVuc2lnbmVk LiAgKi8KKy0JCSAgVUxPTkdFU1Qgd29yZCA9IHVucGFja19sb25nICh0eXBlLCB2YWwpOworLQkJ ICAvKiBDb252ZXJ0IGFueSBmdW5jdGlvbiBjb2RlIGFkZHJlc3NlcyBpbnRvCistCQkgICAgIGRl c2NyaXB0b3JzLiAgKi8KKy0JCSAgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1BU UgorLQkJICAgICAgfHwgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfUkVGKQorLQkJICAg IHsKKy0JCSAgICAgIHN0cnVjdCB0eXBlICp0YXJnZXRfdHlwZTsKKy0JCSAgICAgIHRhcmdldF90 eXBlID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpOworLQorLQkJICAg ICAgaWYgKFRZUEVfQ09ERSAodGFyZ2V0X3R5cGUpID09IFRZUEVfQ09ERV9GVU5DCistCQkJICB8 fCBUWVBFX0NPREUgKHRhcmdldF90eXBlKSA9PSBUWVBFX0NPREVfTUVUSE9EKQorLQkJCXsKKy0J CQkgIENPUkVfQUREUiBkZXNjID0gd29yZDsKKy0JCQkgIGNvbnZlcnRfY29kZV9hZGRyX3RvX2Rl c2NfYWRkciAod29yZCwgJmRlc2MpOworLQkJCSAgd29yZCA9IGRlc2M7CistCQkJfQorLQkJICAg IH0KKy0JCSAgaWYgKGdyZWcgPD0gMTApCistCQkgICAgcmVnY2FjaGVfY29va2VkX3dyaXRlX3Vu c2lnbmVkIChyZWdjYWNoZSwKKy0JCQkJCQkgICAgdGRlcC0+cHBjX2dwMF9yZWdudW0gKworLQkJ CQkJCSAgICBncmVnLCB3b3JkKTsKKy0JCSAgd3JpdGVfbWVtb3J5X3Vuc2lnbmVkX2ludGVnZXIg KGdwYXJhbSwgdGRlcC0+d29yZHNpemUsCistCQkJCQkJIGJ5dGVfb3JkZXIsIHdvcmQpOworKwkJ ICBwcGM2NF9zeXN2X2FiaV9wdXNoX3BhcmFtIChnZGJhcmNoLCBlbHR5cGUsIGVsdmFsLCAmYXJn cG9zKTsKKyAJCX0KKy0JICAgICAgZ3JlZysrOworLQkgICAgICBncGFyYW0gPSBhbGlnbl91cCAo Z3BhcmFtICsgVFlQRV9MRU5HVEggKHR5cGUpLCB0ZGVwLT53b3Jkc2l6ZSk7CisgCSAgICB9Cisg CSAgZWxzZQorIAkgICAgeworLQkgICAgICBpbnQgYnl0ZTsKKy0JICAgICAgZm9yIChieXRlID0g MDsgYnl0ZSA8IFRZUEVfTEVOR1RIICh0eXBlKTsKKy0JCSAgIGJ5dGUgKz0gdGRlcC0+d29yZHNp emUpCistCQl7CistCQkgIGlmICh3cml0ZV9wYXNzICYmIGdyZWcgPD0gMTApCistCQkgICAgewor LQkJICAgICAgZ2RiX2J5dGUgcmVndmFsW01BWF9SRUdJU1RFUl9TSVpFXTsKKy0JCSAgICAgIGlu dCBsZW4gPSBUWVBFX0xFTkdUSCAodHlwZSkgLSBieXRlOworLQkJICAgICAgaWYgKGxlbiA+IHRk ZXAtPndvcmRzaXplKQorLQkJCWxlbiA9IHRkZXAtPndvcmRzaXplOworLQkJICAgICAgbWVtc2V0 IChyZWd2YWwsIDAsIHNpemVvZiByZWd2YWwpOworLQkJICAgICAgLyogVGhlIEFCSSAodmVyc2lv biAxLjkpIHNwZWNpZmllcyB0aGF0IHZhbHVlcworLQkJCSBzbWFsbGVyIHRoYW4gb25lIGRvdWJs ZXdvcmQgYXJlIHJpZ2h0LWFsaWduZWQKKy0JCQkgYW5kIHRob3NlIGxhcmdlciBhcmUgbGVmdC1h bGlnbmVkLiAgR0NDCistCQkJIHZlcnNpb25zIGJlZm9yZSAzLjQgaW1wbGVtZW50ZWQgdGhpcwor LQkJCSBpbmNvcnJlY3RseTsgc2VlCistCQkJIDxodHRwOi8vZ2NjLmdudS5vcmcvZ2NjLTMuNC9w b3dlcnBjLWFiaS5odG1sPi4gICovCistCQkgICAgICBpZiAoYnl0ZSA9PSAwKQorLQkJCW1lbWNw eSAocmVndmFsICsgdGRlcC0+d29yZHNpemUgLSBsZW4sCistCQkJCXZhbCArIGJ5dGUsIGxlbik7 CistCQkgICAgICBlbHNlCistCQkJbWVtY3B5IChyZWd2YWwsIHZhbCArIGJ5dGUsIGxlbik7Cist CQkgICAgICByZWdjYWNoZV9jb29rZWRfd3JpdGUgKHJlZ2NhY2hlLCBncmVnLCByZWd2YWwpOwor LQkJICAgIH0KKy0JCSAgZ3JlZysrOworLQkJfQorLQkgICAgICBpZiAod3JpdGVfcGFzcykKKy0J CXsKKy0JCSAgLyogV0FSTklORzogY2FnbmV5LzIwMDMtMDktMjE6IFN0cmljdGx5IHNwZWFraW5n LCB0aGlzCistCQkgICAgIGlzbid0IG5lY2Vzc2FyeSwgdW5mb3J0dW5hdGVseSwgR0NDIGFwcGVh cnMgdG8gZ2V0CistCQkgICAgICJzdHJ1Y3QgY29udmVudGlvbiIgcGFyYW1ldGVyIHBhc3Npbmcg d3JvbmcgcHV0dGluZworLQkJICAgICBvZGQgc2l6ZWQgc3RydWN0dXJlcyBpbiBtZW1vcnkgaW5z dGVhZCBvZiBpbiBhCistCQkgICAgIHJlZ2lzdGVyLiAgV29yayBhcm91bmQgdGhpcyBieSBhbHdh eXMgd3JpdGluZyB0aGUKKy0JCSAgICAgdmFsdWUgdG8gbWVtb3J5LiAgRm9ydHVuYXRlbHksIGRv aW5nIHRoaXMKKy0JCSAgICAgc2ltcGxpZmllcyB0aGUgY29kZS4gICovCistCQkgIGludCBsZW4g PSBUWVBFX0xFTkdUSCAodHlwZSk7CistCQkgIGlmIChsZW4gPCB0ZGVwLT53b3Jkc2l6ZSkKKy0J CSAgICB3cml0ZV9tZW1vcnkgKGdwYXJhbSArIHRkZXAtPndvcmRzaXplIC0gbGVuLCB2YWwsIGxl bik7CistCQkgIGVsc2UKKy0JCSAgICB3cml0ZV9tZW1vcnkgKGdwYXJhbSwgdmFsLCBsZW4pOwor LQkJfQorLQkgICAgICBpZiAoZnJlZyA8PSAxMworLQkJICAmJiBUWVBFX0NPREUgKHR5cGUpID09 IFRZUEVfQ09ERV9TVFJVQ1QKKy0JCSAgJiYgVFlQRV9ORklFTERTICh0eXBlKSA9PSAxCistCQkg ICYmIFRZUEVfTEVOR1RIICh0eXBlKSA8PSAxNikKKy0JCXsKKy0JCSAgLyogVGhlIEFCSSAodmVy c2lvbiAxLjkpIHNwZWNpZmllcyB0aGF0IHN0cnVjdHMKKy0JCSAgICAgY29udGFpbmluZyBhIHNp bmdsZSBmbG9hdGluZy1wb2ludCB2YWx1ZSwgYXQgYW55CistCQkgICAgIGxldmVsIG9mIG5lc3Rp bmcgb2Ygc2luZ2xlLW1lbWJlciBzdHJ1Y3RzLCBhcmUKKy0JCSAgICAgcGFzc2VkIGluIGZsb2F0 aW5nLXBvaW50IHJlZ2lzdGVycy4gICovCistCQkgIHdoaWxlIChUWVBFX0NPREUgKHR5cGUpID09 IFRZUEVfQ09ERV9TVFJVQ1QKKy0JCQkgJiYgVFlQRV9ORklFTERTICh0eXBlKSA9PSAxKQorLQkJ ICAgIHR5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIDApKTsKKy0J CSAgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0ZMVCkKKy0JCSAgICB7CistCQkg ICAgICBpZiAoVFlQRV9MRU5HVEggKHR5cGUpIDw9IDgpCistCQkJeworLQkJCSAgaWYgKHdyaXRl X3Bhc3MpCistCQkJICAgIHsKKy0JCQkgICAgICBnZGJfYnl0ZSByZWd2YWxbTUFYX1JFR0lTVEVS X1NJWkVdOworLQkJCSAgICAgIHN0cnVjdCB0eXBlICpyZWd0eXBlCistCQkJCT0gcmVnaXN0ZXJf dHlwZSAoZ2RiYXJjaCwKKy0JCQkJCQkgdGRlcC0+cHBjX2ZwMF9yZWdudW0pOworLQkJCSAgICAg IGNvbnZlcnRfdHlwZWRfZmxvYXRpbmcgKHZhbCwgdHlwZSwgcmVndmFsLAorLQkJCQkJCSAgICAg IHJlZ3R5cGUpOworLQkJCSAgICAgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAocmVnY2FjaGUsCist CQkJCQkJICAgICAodGRlcC0+cHBjX2ZwMF9yZWdudW0KKy0JCQkJCQkgICAgICArIGZyZWcpLAor LQkJCQkJCSAgICAgcmVndmFsKTsKKy0JCQkgICAgfQorLQkJCSAgZnJlZysrOworLQkJCX0KKy0J CSAgICAgIGVsc2UgaWYgKFRZUEVfTEVOR1RIICh0eXBlKSA9PSAxNgorLQkJCSAgICAgICAmJiAo Z2RiYXJjaF9sb25nX2RvdWJsZV9mb3JtYXQgKGdkYmFyY2gpCistCQkJCSAgID09IGZsb2F0Zm9y bWF0c19pYm1fbG9uZ19kb3VibGUpKQorLQkJCXsKKy0JCQkgIGlmICh3cml0ZV9wYXNzKQorLQkJ CSAgICB7CistCQkJICAgICAgcmVnY2FjaGVfY29va2VkX3dyaXRlIChyZWdjYWNoZSwKKy0JCQkJ CQkgICAgICh0ZGVwLT5wcGNfZnAwX3JlZ251bQorLQkJCQkJCSAgICAgICsgZnJlZyksCistCQkJ CQkJICAgICB2YWwpOworLQkJCSAgICAgIGlmIChmcmVnIDw9IDEyKQorLQkJCQlyZWdjYWNoZV9j b29rZWRfd3JpdGUgKHJlZ2NhY2hlLAorLQkJCQkJCSAgICAgICAodGRlcC0+cHBjX2ZwMF9yZWdu dW0KKy0JCQkJCQkJKyBmcmVnICsgMSksCistCQkJCQkJICAgICAgIHZhbCArIDgpOworLQkJCSAg ICB9CistCQkJICBmcmVnICs9IDI7CistCQkJfQorLQkJICAgIH0KKy0JCX0KKy0JICAgICAgLyog QWx3YXlzIGNvbnN1bWUgcGFyYW1ldGVyIHN0YWNrIHNwYWNlLiAgKi8KKy0JICAgICAgZ3BhcmFt ID0gYWxpZ25fdXAgKGdwYXJhbSArIFRZUEVfTEVOR1RIICh0eXBlKSwgdGRlcC0+d29yZHNpemUp OworKwkgICAgICAvKiBBbGwgb3RoZXIgdHlwZXMgYXJlIHBhc3NlZCBhcyBzaW5nbGUgYXJndW1l bnRzLiAgKi8KKysJICAgICAgcHBjNjRfc3lzdl9hYmlfcHVzaF9wYXJhbSAoZ2RiYXJjaCwgdHlw ZSwgdmFsLCAmYXJncG9zKTsKKyAJICAgIH0KKyAJfQorIAorICAgICAgIGlmICghd3JpdGVfcGFz cykKKyAJeworIAkgIC8qIFNhdmUgdGhlIHRydWUgcmVnaW9uIHNpemVzIHJlYWR5IGZvciB0aGUg c2Vjb25kIHBhc3MuICAqLworLQkgIHJlZnBhcmFtX3NpemUgPSByZWZwYXJhbTsKKysJICByZWZw YXJhbV9zaXplID0gYXJncG9zLnJlZnBhcmFtOworIAkgIC8qIE1ha2UgY2VydGFpbiB0aGF0IHRo ZSBnZW5lcmFsIHBhcmFtZXRlciBzYXZlIGFyZWEgaXMgYXQKKyAJICAgICBsZWFzdCB0aGUgbWlu aW11bSA4IHJlZ2lzdGVycyAob3IgZG91Ymxld29yZHMpIGluIHNpemUuICAqLworLQkgIGlmIChn cmVnIDwgOCkKKysJICBpZiAoYXJncG9zLmdyZWcgPCA4KQorIAkgICAgZ3BhcmFtX3NpemUgPSA4 ICogdGRlcC0+d29yZHNpemU7CisgCSAgZWxzZQorLQkgICAgZ3BhcmFtX3NpemUgPSBncGFyYW07 CisrCSAgICBncGFyYW1fc2l6ZSA9IGFyZ3Bvcy5ncGFyYW07CisgCX0KKyAgICAgfQorIAorQEAg LTE3NTUsMjcxICsxNTY5LDI1MiBAQCBwcGM2NF9zeXN2X2FiaV9wdXNoX2R1bW15X2NhbGwgKHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorICAgcmV0dXJuIHNwOworIH0KKyAKKysvKiBTdWJyb3V0 aW5lIG9mIHBwYzY0X3N5c3ZfYWJpX3JldHVybl92YWx1ZSB0aGF0IGhhbmRsZXMgImJhc2UiIHR5 cGVzOgorKyAgIGludGVnZXIsIGZsb2F0aW5nLXBvaW50LCBhbmQgQWx0aVZlYyB2ZWN0b3IgdHlw ZXMuCisgCistLyogVGhlIDY0IGJpdCBBQkkgcmV0dXJuIHZhbHVlIGNvbnZlbnRpb24uCistCist ICAgUmV0dXJuIG5vbi16ZXJvIGlmIHRoZSByZXR1cm4tdmFsdWUgaXMgc3RvcmVkIGluIGEgcmVn aXN0ZXIsIHJldHVybgorLSAgIDAgaWYgdGhlIHJldHVybi12YWx1ZSBpcyBpbnN0ZWFkIHN0b3Jl ZCBvbiB0aGUgc3RhY2sgKGEuay5hLiwKKy0gICBzdHJ1Y3QgcmV0dXJuIGNvbnZlbnRpb24pLgor KyAgIFRoaXMgcm91dGluZSBhbHNvIGhhbmRsZXMgY29tcG9uZW50cyBvZiBhZ2dyZWdhdGUgcmV0 dXJuIHR5cGVzOworKyAgIElOREVYIGRlc2NyaWJlcyB3aGljaCBwYXJ0IG9mIHRoZSBhZ2dyZWdh dGUgaXMgdG8gYmUgaGFuZGxlZC4KKyAKKy0gICBGb3IgYSByZXR1cm4tdmFsdWUgc3RvcmVkIGlu IGEgcmVnaXN0ZXI6IHdoZW4gV1JJVEVCVUYgaXMgbm9uLU5VTEwsCistICAgY29weSB0aGUgYnVm ZmVyIHRvIHRoZSBjb3JyZXNwb25kaW5nIHJlZ2lzdGVyIHJldHVybi12YWx1ZSBsb2NhdGlvbgor LSAgIGxvY2F0aW9uOyB3aGVuIFJFQURCVUYgaXMgbm9uLU5VTEwsIGZpbGwgdGhlIGJ1ZmZlciBm cm9tIHRoZQorLSAgIGNvcnJlc3BvbmRpbmcgcmVnaXN0ZXIgcmV0dXJuLXZhbHVlIGxvY2F0aW9u LiAgKi8KKy1lbnVtIHJldHVybl92YWx1ZV9jb252ZW50aW9uCistcHBjNjRfc3lzdl9hYmlfcmV0 dXJuX3ZhbHVlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IHZhbHVlICpmdW5jdGlv biwKKy0JCQkgICAgIHN0cnVjdCB0eXBlICp2YWx0eXBlLCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2Nh Y2hlLAorLQkJCSAgICAgZ2RiX2J5dGUgKnJlYWRidWYsIGNvbnN0IGdkYl9ieXRlICp3cml0ZWJ1 ZikKKysgICBSZXR1cm5zIHRydWUgaWYgVkFMVFlQRSBpcyBzb21lIHN1Y2ggYmFzZSB0eXBlIHRo YXQgY291bGQgYmUgaGFuZGxlZCwKKysgICBmYWxzZSBvdGhlcndpc2UuICAqLworK3N0YXRpYyBp bnQKKytwcGM2NF9zeXN2X2FiaV9yZXR1cm5fdmFsdWVfYmFzZSAoc3RydWN0IGdkYmFyY2ggKmdk YmFyY2gsIHN0cnVjdCB0eXBlICp2YWx0eXBlLAorKwkJCQkgIHN0cnVjdCByZWdjYWNoZSAqcmVn Y2FjaGUsIGdkYl9ieXRlICpyZWFkYnVmLAorKwkJCQkgIGNvbnN0IGdkYl9ieXRlICp3cml0ZWJ1 ZiwgaW50IGluZGV4KQorIHsKKyAgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNo X3RkZXAgKGdkYmFyY2gpOworLSAgZW51bSBiZmRfZW5kaWFuIGJ5dGVfb3JkZXIgPSBnZGJhcmNo X2J5dGVfb3JkZXIgKGdkYmFyY2gpOworLSAgc3RydWN0IHR5cGUgKmZ1bmNfdHlwZSA9IGZ1bmN0 aW9uID8gdmFsdWVfdHlwZSAoZnVuY3Rpb24pIDogTlVMTDsKKy0gIGludCBvcGVuY2xfYWJpID0g ZnVuY190eXBlPyBwcGNfc3lzdl91c2Vfb3BlbmNsX2FiaSAoZnVuY190eXBlKSA6IDA7CisgCist ICAvKiBUaGlzIGZ1bmN0aW9uIGV4aXN0cyB0byBzdXBwb3J0IGEgY2FsbGluZyBjb252ZW50aW9u IHRoYXQKKy0gICAgIHJlcXVpcmVzIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVycy4gIEl0IHNob3Vs ZG4ndCBiZSB1c2VkIG9uCistICAgICBwcm9jZXNzb3JzIHRoYXQgbGFjayB0aGVtLiAgKi8KKy0g IGdkYl9hc3NlcnQgKHBwY19mbG9hdGluZ19wb2ludF91bml0X3AgKGdkYmFyY2gpKTsKKy0KKy0g IC8qIEZsb2F0cyBhbmQgZG91YmxlcyBpbiBGMS4gICovCistICBpZiAoVFlQRV9DT0RFICh2YWx0 eXBlKSA9PSBUWVBFX0NPREVfRkxUICYmIFRZUEVfTEVOR1RIICh2YWx0eXBlKSA8PSA4KQorLSAg ICB7CistICAgICAgZ2RiX2J5dGUgcmVndmFsW01BWF9SRUdJU1RFUl9TSVpFXTsKKy0gICAgICBz dHJ1Y3QgdHlwZSAqcmVndHlwZSA9IHJlZ2lzdGVyX3R5cGUgKGdkYmFyY2gsIHRkZXAtPnBwY19m cDBfcmVnbnVtKTsKKy0gICAgICBpZiAod3JpdGVidWYgIT0gTlVMTCkKKy0JeworLQkgIGNvbnZl cnRfdHlwZWRfZmxvYXRpbmcgKHdyaXRlYnVmLCB2YWx0eXBlLCByZWd2YWwsIHJlZ3R5cGUpOwor LQkgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAocmVnY2FjaGUsIHRkZXAtPnBwY19mcDBfcmVnbnVt ICsgMSwgcmVndmFsKTsKKy0JfQorLSAgICAgIGlmIChyZWFkYnVmICE9IE5VTEwpCistCXsKKy0J ICByZWdjYWNoZV9jb29rZWRfcmVhZCAocmVnY2FjaGUsIHRkZXAtPnBwY19mcDBfcmVnbnVtICsg MSwgcmVndmFsKTsKKy0JICBjb252ZXJ0X3R5cGVkX2Zsb2F0aW5nIChyZWd2YWwsIHJlZ3R5cGUs IHJlYWRidWYsIHZhbHR5cGUpOworLQl9CistICAgICAgcmV0dXJuIFJFVFVSTl9WQUxVRV9SRUdJ U1RFUl9DT05WRU5USU9OOworLSAgICB9CistICBpZiAoVFlQRV9DT0RFICh2YWx0eXBlKSA9PSBU WVBFX0NPREVfREVDRkxPQVQpCistICAgIHJldHVybiBnZXRfZGVjaW1hbF9mbG9hdF9yZXR1cm5f dmFsdWUgKGdkYmFyY2gsIHZhbHR5cGUsIHJlZ2NhY2hlLCByZWFkYnVmLAorLQkJCQkJICAgd3Jp dGVidWYpOworLSAgLyogSW50ZWdlcnMgaW4gcjMuICAqLworKyAgLyogSW50ZWdlcnMgbGl2ZSBp biBHUFJzIHN0YXJ0aW5nIGF0IHIzLiAgKi8KKyAgIGlmICgoVFlQRV9DT0RFICh2YWx0eXBlKSA9 PSBUWVBFX0NPREVfSU5UCisgICAgICAgIHx8IFRZUEVfQ09ERSAodmFsdHlwZSkgPT0gVFlQRV9D T0RFX0VOVU0KKyAgICAgICAgfHwgVFlQRV9DT0RFICh2YWx0eXBlKSA9PSBUWVBFX0NPREVfQ0hB UgorICAgICAgICB8fCBUWVBFX0NPREUgKHZhbHR5cGUpID09IFRZUEVfQ09ERV9CT09MKQorICAg ICAgICYmIFRZUEVfTEVOR1RIICh2YWx0eXBlKSA8PSA4KQorICAgICB7CisrICAgICAgaW50IHJl Z251bSA9IHRkZXAtPnBwY19ncDBfcmVnbnVtICsgMyArIGluZGV4OworKworICAgICAgIGlmICh3 cml0ZWJ1ZiAhPSBOVUxMKQorIAl7CisgCSAgLyogQmUgY2FyZWZ1bCB0byBzaWduIGV4dGVuZCB0 aGUgdmFsdWUuICAqLworLQkgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZV91bnNpZ25lZCAocmVnY2Fj aGUsIHRkZXAtPnBwY19ncDBfcmVnbnVtICsgMywKKysJICByZWdjYWNoZV9jb29rZWRfd3JpdGVf dW5zaWduZWQgKHJlZ2NhY2hlLCByZWdudW0sCisgCQkJCQkgIHVucGFja19sb25nICh2YWx0eXBl LCB3cml0ZWJ1ZikpOworIAl9CisgICAgICAgaWYgKHJlYWRidWYgIT0gTlVMTCkKKyAJeworLQkg IC8qIEV4dHJhY3QgdGhlIGludGVnZXIgZnJvbSByMy4gIFNpbmNlIHRoaXMgaXMgdHJ1bmNhdGlu ZyB0aGUKKysJICAvKiBFeHRyYWN0IHRoZSBpbnRlZ2VyIGZyb20gR1BSLiAgU2luY2UgdGhpcyBp cyB0cnVuY2F0aW5nIHRoZQorIAkgICAgIHZhbHVlLCB0aGVyZSBpc24ndCBhIHNpZ24gZXh0ZW5z aW9uIHByb2JsZW0uICAqLworIAkgIFVMT05HRVNUIHJlZ3ZhbDsKKy0JICByZWdjYWNoZV9jb29r ZWRfcmVhZF91bnNpZ25lZCAocmVnY2FjaGUsIHRkZXAtPnBwY19ncDBfcmVnbnVtICsgMywKKy0J CQkJCSAmcmVndmFsKTsKKy0JICBzdG9yZV91bnNpZ25lZF9pbnRlZ2VyIChyZWFkYnVmLCBUWVBF X0xFTkdUSCAodmFsdHlwZSksIGJ5dGVfb3JkZXIsCistCQkJCSAgcmVndmFsKTsKKysKKysJICBy ZWdjYWNoZV9jb29rZWRfcmVhZF91bnNpZ25lZCAocmVnY2FjaGUsIHJlZ251bSwgJnJlZ3ZhbCk7 CisrCSAgc3RvcmVfdW5zaWduZWRfaW50ZWdlciAocmVhZGJ1ZiwgVFlQRV9MRU5HVEggKHZhbHR5 cGUpLAorKwkJCQkgIGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJjaCksIHJlZ3ZhbCk7CisgCX0K Ky0gICAgICByZXR1cm4gUkVUVVJOX1ZBTFVFX1JFR0lTVEVSX0NPTlZFTlRJT047CisrICAgICAg cmV0dXJuIDE7CisgICAgIH0KKy0gIC8qIEFsbCBwb2ludGVycyBsaXZlIGluIHIzLiAgKi8KKy0g IGlmIChUWVBFX0NPREUgKHZhbHR5cGUpID09IFRZUEVfQ09ERV9QVFIKKy0gICAgICB8fCBUWVBF X0NPREUgKHZhbHR5cGUpID09IFRZUEVfQ09ERV9SRUYpCisrCisrICAvKiBGbG9hdHMgYW5kIGRv dWJsZXMgZ28gaW4gZjEgLi4gZjEzLiAgMzItYml0IGZsb2F0cyBhcmUgY29udmVydGVkCisrICAg ICB0byBkb3VibGUgZmlyc3QuICAqLworKyAgaWYgKFRZUEVfTEVOR1RIICh2YWx0eXBlKSA8PSA4 CisrICAgICAgJiYgVFlQRV9DT0RFICh2YWx0eXBlKSA9PSBUWVBFX0NPREVfRkxUKQorICAgICB7 CistICAgICAgLyogQWxsIHBvaW50ZXJzIGxpdmUgaW4gcjMuICAqLworKyAgICAgIGludCByZWdu dW0gPSB0ZGVwLT5wcGNfZnAwX3JlZ251bSArIDEgKyBpbmRleDsKKysgICAgICBzdHJ1Y3QgdHlw ZSAqcmVndHlwZSA9IHJlZ2lzdGVyX3R5cGUgKGdkYmFyY2gsIHJlZ251bSk7CisrICAgICAgZ2Ri X2J5dGUgcmVndmFsW01BWF9SRUdJU1RFUl9TSVpFXTsKKysKKyAgICAgICBpZiAod3JpdGVidWYg IT0gTlVMTCkKKy0JcmVnY2FjaGVfY29va2VkX3dyaXRlIChyZWdjYWNoZSwgdGRlcC0+cHBjX2dw MF9yZWdudW0gKyAzLCB3cml0ZWJ1Zik7CisrCXsKKysJICBjb252ZXJ0X3R5cGVkX2Zsb2F0aW5n ICh3cml0ZWJ1ZiwgdmFsdHlwZSwgcmVndmFsLCByZWd0eXBlKTsKKysJICByZWdjYWNoZV9jb29r ZWRfd3JpdGUgKHJlZ2NhY2hlLCByZWdudW0sIHJlZ3ZhbCk7CisrCX0KKyAgICAgICBpZiAocmVh ZGJ1ZiAhPSBOVUxMKQorLQlyZWdjYWNoZV9jb29rZWRfcmVhZCAocmVnY2FjaGUsIHRkZXAtPnBw Y19ncDBfcmVnbnVtICsgMywgcmVhZGJ1Zik7CistICAgICAgcmV0dXJuIFJFVFVSTl9WQUxVRV9S RUdJU1RFUl9DT05WRU5USU9OOworKwl7CisrCSAgcmVnY2FjaGVfY29va2VkX3JlYWQgKHJlZ2Nh Y2hlLCByZWdudW0sIHJlZ3ZhbCk7CisrCSAgY29udmVydF90eXBlZF9mbG9hdGluZyAocmVndmFs LCByZWd0eXBlLCByZWFkYnVmLCB2YWx0eXBlKTsKKysJfQorKyAgICAgIHJldHVybiAxOworICAg ICB9CistICAvKiBPcGVuQ0wgdmVjdG9ycyA8IDE2IGJ5dGVzIGFyZSByZXR1cm5lZCBhcyBkaXN0 aW5jdAorLSAgICAgc2NhbGFycyBpbiBmMS4uZjIgb3IgcjMuLnIxMC4gICovCistICBpZiAoVFlQ RV9DT0RFICh2YWx0eXBlKSA9PSBUWVBFX0NPREVfQVJSQVkKKy0gICAgICAmJiBUWVBFX1ZFQ1RP UiAodmFsdHlwZSkKKy0gICAgICAmJiBUWVBFX0xFTkdUSCAodmFsdHlwZSkgPCAxNgorLSAgICAg ICYmIG9wZW5jbF9hYmkpCistICAgIHsKKy0gICAgICBzdHJ1Y3QgdHlwZSAqZWx0eXBlID0gY2hl Y2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAodmFsdHlwZSkpOworLSAgICAgIGludCBpLCBu ZWx0ID0gVFlQRV9MRU5HVEggKHZhbHR5cGUpIC8gVFlQRV9MRU5HVEggKGVsdHlwZSk7CisgCist ICAgICAgZm9yIChpID0gMDsgaSA8IG5lbHQ7IGkrKykKKy0JeworLQkgIGludCBvZmZzZXQgPSBp ICogVFlQRV9MRU5HVEggKGVsdHlwZSk7CisrICAvKiBGbG9hdHMgYW5kIGRvdWJsZXMgZ28gaW4g ZjEgLi4gZjEzLiAgMzItYml0IGRlY2ltYWwgZmxvYXRzIGFyZQorKyAgICAgcGxhY2VkIGluIHRo ZSBsZWFzdCBzaWduaWZpY2FudCB3b3JkLiAgKi8KKysgIGlmIChUWVBFX0xFTkdUSCAodmFsdHlw ZSkgPD0gOAorKyAgICAgICYmIFRZUEVfQ09ERSAodmFsdHlwZSkgPT0gVFlQRV9DT0RFX0RFQ0ZM T0FUKQorKyAgICB7CisrICAgICAgaW50IHJlZ251bSA9IHRkZXAtPnBwY19mcDBfcmVnbnVtICsg MSArIGluZGV4OworKyAgICAgIGludCBvZmZzZXQgPSA4IC0gVFlQRV9MRU5HVEggKHZhbHR5cGUp OworIAorLQkgIGlmIChUWVBFX0NPREUgKGVsdHlwZSkgPT0gVFlQRV9DT0RFX0ZMVCkKKy0JICAg IHsKKy0JICAgICAgaW50IHJlZ251bSA9IHRkZXAtPnBwY19mcDBfcmVnbnVtICsgMSArIGk7Cist CSAgICAgIGdkYl9ieXRlIHJlZ3ZhbFtNQVhfUkVHSVNURVJfU0laRV07CistCSAgICAgIHN0cnVj dCB0eXBlICpyZWd0eXBlID0gcmVnaXN0ZXJfdHlwZSAoZ2RiYXJjaCwgcmVnbnVtKTsKKysgICAg ICBpZiAod3JpdGVidWYgIT0gTlVMTCkKKysJcmVnY2FjaGVfY29va2VkX3dyaXRlX3BhcnQgKHJl Z2NhY2hlLCByZWdudW0sCisrCQkJCSAgICBvZmZzZXQsIFRZUEVfTEVOR1RIICh2YWx0eXBlKSwg d3JpdGVidWYpOworKyAgICAgIGlmIChyZWFkYnVmICE9IE5VTEwpCisrCXJlZ2NhY2hlX2Nvb2tl ZF9yZWFkX3BhcnQgKHJlZ2NhY2hlLCByZWdudW0sCisrCQkJCSAgIG9mZnNldCwgVFlQRV9MRU5H VEggKHZhbHR5cGUpLCByZWFkYnVmKTsKKysgICAgICByZXR1cm4gMTsKKysgICAgfQorIAorLQkg ICAgICBpZiAod3JpdGVidWYgIT0gTlVMTCkKKy0JCXsKKy0JCSAgY29udmVydF90eXBlZF9mbG9h dGluZyAod3JpdGVidWYgKyBvZmZzZXQsIGVsdHlwZSwKKy0JCQkJCSAgcmVndmFsLCByZWd0eXBl KTsKKy0JCSAgcmVnY2FjaGVfY29va2VkX3dyaXRlIChyZWdjYWNoZSwgcmVnbnVtLCByZWd2YWwp OworLQkJfQorLQkgICAgICBpZiAocmVhZGJ1ZiAhPSBOVUxMKQorLQkJeworLQkJICByZWdjYWNo ZV9jb29rZWRfcmVhZCAocmVnY2FjaGUsIHJlZ251bSwgcmVndmFsKTsKKy0JCSAgY29udmVydF90 eXBlZF9mbG9hdGluZyAocmVndmFsLCByZWd0eXBlLAorLQkJCQkJICByZWFkYnVmICsgb2Zmc2V0 LCBlbHR5cGUpOworLQkJfQorLQkgICAgfQorLQkgIGVsc2UKKy0JICAgIHsKKy0JICAgICAgaW50 IHJlZ251bSA9IHRkZXAtPnBwY19ncDBfcmVnbnVtICsgMyArIGk7CistCSAgICAgIFVMT05HRVNU IHJlZ3ZhbDsKKysgIC8qIElCTSBsb25nIGRvdWJsZSBzdG9yZWQgaW4gdHdvIGNvbnNlY3V0aXZl IEZQUnMuICAqLworKyAgaWYgKFRZUEVfTEVOR1RIICh2YWx0eXBlKSA9PSAxNgorKyAgICAgICYm IFRZUEVfQ09ERSAodmFsdHlwZSkgPT0gVFlQRV9DT0RFX0ZMVAorKyAgICAgICYmIChnZGJhcmNo X2xvbmdfZG91YmxlX2Zvcm1hdCAoZ2RiYXJjaCkKKysJICA9PSBmbG9hdGZvcm1hdHNfaWJtX2xv bmdfZG91YmxlKSkKKysgICAgeworKyAgICAgIGludCByZWdudW0gPSB0ZGVwLT5wcGNfZnAwX3Jl Z251bSArIDEgKyAyICogaW5kZXg7CisgCistCSAgICAgIGlmICh3cml0ZWJ1ZiAhPSBOVUxMKQor LQkJeworLQkJICByZWd2YWwgPSB1bnBhY2tfbG9uZyAoZWx0eXBlLCB3cml0ZWJ1ZiArIG9mZnNl dCk7CistCQkgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZV91bnNpZ25lZCAocmVnY2FjaGUsIHJlZ251 bSwgcmVndmFsKTsKKy0JCX0KKy0JICAgICAgaWYgKHJlYWRidWYgIT0gTlVMTCkKKy0JCXsKKy0J CSAgcmVnY2FjaGVfY29va2VkX3JlYWRfdW5zaWduZWQgKHJlZ2NhY2hlLCByZWdudW0sICZyZWd2 YWwpOworLQkJICBzdG9yZV91bnNpZ25lZF9pbnRlZ2VyIChyZWFkYnVmICsgb2Zmc2V0LAorLQkJ CQkJICBUWVBFX0xFTkdUSCAoZWx0eXBlKSwgYnl0ZV9vcmRlciwKKy0JCQkJCSAgcmVndmFsKTsK Ky0JCX0KKy0JICAgIH0KKysgICAgICBpZiAod3JpdGVidWYgIT0gTlVMTCkKKysJeworKwkgIHJl Z2NhY2hlX2Nvb2tlZF93cml0ZSAocmVnY2FjaGUsIHJlZ251bSwgd3JpdGVidWYpOworKwkgIHJl Z2NhY2hlX2Nvb2tlZF93cml0ZSAocmVnY2FjaGUsIHJlZ251bSArIDEsIHdyaXRlYnVmICsgOCk7 CisgCX0KKy0KKy0gICAgICByZXR1cm4gUkVUVVJOX1ZBTFVFX1JFR0lTVEVSX0NPTlZFTlRJT047 CisrICAgICAgaWYgKHJlYWRidWYgIT0gTlVMTCkKKysJeworKwkgIHJlZ2NhY2hlX2Nvb2tlZF9y ZWFkIChyZWdjYWNoZSwgcmVnbnVtLCByZWFkYnVmKTsKKysJICByZWdjYWNoZV9jb29rZWRfcmVh ZCAocmVnY2FjaGUsIHJlZ251bSArIDEsIHJlYWRidWYgKyA4KTsKKysJfQorKyAgICAgIHJldHVy biAxOworICAgICB9CistICAvKiBPcGVuQ0wgdmVjdG9ycyA+PSAxNiBieXRlcyBhcmUgcmV0dXJu ZWQgaW4gdjIuLnY5LiAgKi8KKy0gIGlmIChUWVBFX0NPREUgKHZhbHR5cGUpID09IFRZUEVfQ09E RV9BUlJBWQorLSAgICAgICYmIFRZUEVfVkVDVE9SICh2YWx0eXBlKQorLSAgICAgICYmIFRZUEVf TEVOR1RIICh2YWx0eXBlKSA+PSAxNgorLSAgICAgICYmIG9wZW5jbF9hYmkpCisrCisrICAvKiAx MjgtYml0IGRlY2ltYWwgZmxvYXRpbmctcG9pbnQgdmFsdWVzIGFyZSBzdG9yZWQgaW4gYW4gZXZl bi9vZGQKKysgICAgIHBhaXIgb2YgRlBScywgd2l0aCB0aGUgZXZlbiBGUFIgaG9sZGluZyB0aGUg bW9zdCBzaWduaWZpY2FudCBoYWxmLiAgKi8KKysgIGlmIChUWVBFX0xFTkdUSCAodmFsdHlwZSkg PT0gMTYKKysgICAgICAmJiBUWVBFX0NPREUgKHZhbHR5cGUpID09IFRZUEVfQ09ERV9ERUNGTE9B VCkKKyAgICAgeworLSAgICAgIGludCBuX3JlZ3MgPSBUWVBFX0xFTkdUSCAodmFsdHlwZSkgLyAx NjsKKy0gICAgICBpbnQgaTsKKysgICAgICBpbnQgcmVnbnVtID0gdGRlcC0+cHBjX2ZwMF9yZWdu dW0gKyAyICsgMiAqIGluZGV4OworIAorLSAgICAgIGZvciAoaSA9IDA7IGkgPCBuX3JlZ3M7IGkr KykKKysgICAgICBpZiAod3JpdGVidWYgIT0gTlVMTCkKKyAJeworLQkgIGludCBvZmZzZXQgPSBp ICogMTY7CistCSAgaW50IHJlZ251bSA9IHRkZXAtPnBwY192cjBfcmVnbnVtICsgMiArIGk7Cist CistCSAgaWYgKHdyaXRlYnVmICE9IE5VTEwpCistCSAgICByZWdjYWNoZV9jb29rZWRfd3JpdGUg KHJlZ2NhY2hlLCByZWdudW0sIHdyaXRlYnVmICsgb2Zmc2V0KTsKKy0JICBpZiAocmVhZGJ1ZiAh PSBOVUxMKQorLQkgICAgcmVnY2FjaGVfY29va2VkX3JlYWQgKHJlZ2NhY2hlLCByZWdudW0sIHJl YWRidWYgKyBvZmZzZXQpOworKwkgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAocmVnY2FjaGUsIHJl Z251bSwgd3JpdGVidWYpOworKwkgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAocmVnY2FjaGUsIHJl Z251bSArIDEsIHdyaXRlYnVmICsgOCk7CisgCX0KKy0KKy0gICAgICByZXR1cm4gUkVUVVJOX1ZB TFVFX1JFR0lTVEVSX0NPTlZFTlRJT047CisrICAgICAgaWYgKHJlYWRidWYgIT0gTlVMTCkKKysJ eworKwkgIHJlZ2NhY2hlX2Nvb2tlZF9yZWFkIChyZWdjYWNoZSwgcmVnbnVtLCByZWFkYnVmKTsK KysJICByZWdjYWNoZV9jb29rZWRfcmVhZCAocmVnY2FjaGUsIHJlZ251bSArIDEsIHJlYWRidWYg KyA4KTsKKysJfQorKyAgICAgIHJldHVybiAxOworICAgICB9CistICAvKiBBcnJheSB0eXBlIGhh cyBtb3JlIHRoYW4gb25lIHVzZS4gICovCistICBpZiAoVFlQRV9DT0RFICh2YWx0eXBlKSA9PSBU WVBFX0NPREVfQVJSQVkpCisrCisrICAvKiBBbHRpVmVjIHZlY3RvcnMgYXJlIHJldHVybmVkIGlu IFZScyBzdGFydGluZyBhdCB2Mi4gICovCisrICBpZiAoVFlQRV9DT0RFICh2YWx0eXBlKSA9PSBU WVBFX0NPREVfQVJSQVkgJiYgVFlQRV9WRUNUT1IgKHZhbHR5cGUpCisrICAgICAgJiYgdGRlcC0+ dmVjdG9yX2FiaSA9PSBQT1dFUlBDX1ZFQ19BTFRJVkVDKQorICAgICB7CistICAgICAgLyogU21h bGwgY2hhcmFjdGVyIGFycmF5cyBhcmUgcmV0dXJuZWQsIHJpZ2h0IGp1c3RpZmllZCwgaW4gcjMu ICAqLworLSAgICAgIGlmIChUWVBFX0xFTkdUSCAodmFsdHlwZSkgPD0gOAorLSAgICAgICAgJiYg VFlQRV9DT0RFIChUWVBFX1RBUkdFVF9UWVBFICh2YWx0eXBlKSkgPT0gVFlQRV9DT0RFX0lOVAor LSAgICAgICAgJiYgVFlQRV9MRU5HVEggKFRZUEVfVEFSR0VUX1RZUEUgKHZhbHR5cGUpKSA9PSAx KQorLSAgICAgICAgeworLSAgICAgICAgICBpbnQgb2Zmc2V0ID0gKHJlZ2lzdGVyX3NpemUgKGdk YmFyY2gsIHRkZXAtPnBwY19ncDBfcmVnbnVtICsgMykKKy0gICAgICAgICAgICAgICAgICAgICAg IC0gVFlQRV9MRU5HVEggKHZhbHR5cGUpKTsKKy0gICAgICAgICAgaWYgKHdyaXRlYnVmICE9IE5V TEwpCistICAgICAgICAgICByZWdjYWNoZV9jb29rZWRfd3JpdGVfcGFydCAocmVnY2FjaGUsIHRk ZXAtPnBwY19ncDBfcmVnbnVtICsgMywKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG9mZnNldCwgVFlQRV9MRU5HVEggKHZhbHR5cGUpLCB3cml0ZWJ1Zik7CistICAgICAg ICAgIGlmIChyZWFkYnVmICE9IE5VTEwpCistICAgICAgICAgICByZWdjYWNoZV9jb29rZWRfcmVh ZF9wYXJ0IChyZWdjYWNoZSwgdGRlcC0+cHBjX2dwMF9yZWdudW0gKyAzLAorLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LCBUWVBFX0xFTkdUSCAodmFsdHlwZSks IHJlYWRidWYpOworLSAgICAgICAgICByZXR1cm4gUkVUVVJOX1ZBTFVFX1JFR0lTVEVSX0NPTlZF TlRJT047CistCX0KKy0gICAgICAvKiBBIFZNWCB2ZWN0b3IgaXMgcmV0dXJuZWQgaW4gdjIuICAq LworLSAgICAgIGlmIChUWVBFX0NPREUgKHZhbHR5cGUpID09IFRZUEVfQ09ERV9BUlJBWQorLQkg ICYmIFRZUEVfVkVDVE9SICh2YWx0eXBlKQorLQkgICYmIHRkZXAtPnZlY3Rvcl9hYmkgPT0gUE9X RVJQQ19WRUNfQUxUSVZFQykKKy0gICAgICAgIHsKKy0gICAgICAgICAgaWYgKHJlYWRidWYpCist ICAgICAgICAgICAgcmVnY2FjaGVfY29va2VkX3JlYWQgKHJlZ2NhY2hlLCB0ZGVwLT5wcGNfdnIw X3JlZ251bSArIDIsIHJlYWRidWYpOworLSAgICAgICAgICBpZiAod3JpdGVidWYpCistICAgICAg ICAgICAgcmVnY2FjaGVfY29va2VkX3dyaXRlIChyZWdjYWNoZSwgdGRlcC0+cHBjX3ZyMF9yZWdu dW0gKyAyLAorLQkJCQkgICB3cml0ZWJ1Zik7CistICAgICAgICAgIHJldHVybiBSRVRVUk5fVkFM VUVfUkVHSVNURVJfQ09OVkVOVElPTjsKKy0gICAgICAgIH0KKysgICAgICBpbnQgcmVnbnVtID0g dGRlcC0+cHBjX3ZyMF9yZWdudW0gKyAyICsgaW5kZXg7CisrCisrICAgICAgaWYgKHdyaXRlYnVm ICE9IE5VTEwpCisrCXJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAocmVnY2FjaGUsIHJlZ251bSwgd3Jp dGVidWYpOworKyAgICAgIGlmIChyZWFkYnVmICE9IE5VTEwpCisrCXJlZ2NhY2hlX2Nvb2tlZF9y ZWFkIChyZWdjYWNoZSwgcmVnbnVtLCByZWFkYnVmKTsKKysgICAgICByZXR1cm4gMTsKKyAgICAg fQorLSAgLyogQmlnIGZsb2F0aW5nIHBvaW50IHZhbHVlcyBnZXQgc3RvcmVkIGluIGFkamFjZW50 IGZsb2F0aW5nCistICAgICBwb2ludCByZWdpc3RlcnMsIHN0YXJ0aW5nIHdpdGggRjEuICAqLwor LSAgaWYgKFRZUEVfQ09ERSAodmFsdHlwZSkgPT0gVFlQRV9DT0RFX0ZMVAorLSAgICAgICYmIChU WVBFX0xFTkdUSCAodmFsdHlwZSkgPT0gMTYgfHwgVFlQRV9MRU5HVEggKHZhbHR5cGUpID09IDMy KSkKKysKKysgIHJldHVybiAwOworK30KKysKKysvKiBUaGUgNjQgYml0IEFCSSByZXR1cm4gdmFs dWUgY29udmVudGlvbi4KKysKKysgICBSZXR1cm4gbm9uLXplcm8gaWYgdGhlIHJldHVybi12YWx1 ZSBpcyBzdG9yZWQgaW4gYSByZWdpc3RlciwgcmV0dXJuCisrICAgMCBpZiB0aGUgcmV0dXJuLXZh bHVlIGlzIGluc3RlYWQgc3RvcmVkIG9uIHRoZSBzdGFjayAoYS5rLmEuLAorKyAgIHN0cnVjdCBy ZXR1cm4gY29udmVudGlvbikuCisrCisrICAgRm9yIGEgcmV0dXJuLXZhbHVlIHN0b3JlZCBpbiBh IHJlZ2lzdGVyOiB3aGVuIFdSSVRFQlVGIGlzIG5vbi1OVUxMLAorKyAgIGNvcHkgdGhlIGJ1ZmZl ciB0byB0aGUgY29ycmVzcG9uZGluZyByZWdpc3RlciByZXR1cm4tdmFsdWUgbG9jYXRpb24KKysg ICBsb2NhdGlvbjsgd2hlbiBSRUFEQlVGIGlzIG5vbi1OVUxMLCBmaWxsIHRoZSBidWZmZXIgZnJv bSB0aGUKKysgICBjb3JyZXNwb25kaW5nIHJlZ2lzdGVyIHJldHVybi12YWx1ZSBsb2NhdGlvbi4g ICovCisrZW51bSByZXR1cm5fdmFsdWVfY29udmVudGlvbgorK3BwYzY0X3N5c3ZfYWJpX3JldHVy bl92YWx1ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVjdCB2YWx1ZSAqZnVuY3Rpb24s CisrCQkJICAgICBzdHJ1Y3QgdHlwZSAqdmFsdHlwZSwgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNo ZSwKKysJCQkgICAgIGdkYl9ieXRlICpyZWFkYnVmLCBjb25zdCBnZGJfYnl0ZSAqd3JpdGVidWYp CisreworKyAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAoZ2RiYXJj aCk7CisrICBzdHJ1Y3QgdHlwZSAqZnVuY190eXBlID0gZnVuY3Rpb24gPyB2YWx1ZV90eXBlIChm dW5jdGlvbikgOiBOVUxMOworKyAgaW50IG9wZW5jbF9hYmkgPSBmdW5jX3R5cGU/IHBwY19zeXN2 X3VzZV9vcGVuY2xfYWJpIChmdW5jX3R5cGUpIDogMDsKKysgIHN0cnVjdCB0eXBlICplbHR5cGU7 CisrICBpbnQgbmVsdCwgaSwgb2s7CisrCisrICAvKiBUaGlzIGZ1bmN0aW9uIGV4aXN0cyB0byBz dXBwb3J0IGEgY2FsbGluZyBjb252ZW50aW9uIHRoYXQKKysgICAgIHJlcXVpcmVzIGZsb2F0aW5n LXBvaW50IHJlZ2lzdGVycy4gIEl0IHNob3VsZG4ndCBiZSB1c2VkIG9uCisrICAgICBwcm9jZXNz b3JzIHRoYXQgbGFjayB0aGVtLiAgKi8KKysgIGdkYl9hc3NlcnQgKHBwY19mbG9hdGluZ19wb2lu dF91bml0X3AgKGdkYmFyY2gpKTsKKysKKysgIC8qIENvbXBsZXggdHlwZXMgYXJlIHJldHVybmVk IGFzIGlmIHR3byBpbmRlcGVuZGVudCBzY2FsYXJzLiAgKi8KKysgIGlmIChUWVBFX0NPREUgKHZh bHR5cGUpID09IFRZUEVfQ09ERV9DT01QTEVYKQorICAgICB7CistICAgICAgaWYgKHdyaXRlYnVm IHx8IHJlYWRidWYgIT0gTlVMTCkKKysgICAgICBlbHR5cGUgPSBjaGVja190eXBlZGVmIChUWVBF X1RBUkdFVF9UWVBFICh2YWx0eXBlKSk7CisrCisrICAgICAgZm9yIChpID0gMDsgaSA8IDI7IGkr KykKKyAJeworLQkgIGludCBpOworLQkgIGZvciAoaSA9IDA7IGkgPCBUWVBFX0xFTkdUSCAodmFs dHlwZSkgLyA4OyBpKyspCistCSAgICB7CistCSAgICAgIGlmICh3cml0ZWJ1ZiAhPSBOVUxMKQor LQkJcmVnY2FjaGVfY29va2VkX3dyaXRlIChyZWdjYWNoZSwgdGRlcC0+cHBjX2ZwMF9yZWdudW0g KyAxICsgaSwKKy0JCQkJICAgICAgIChjb25zdCBiZmRfYnl0ZSAqKSB3cml0ZWJ1ZiArIGkgKiA4 KTsKKy0JICAgICAgaWYgKHJlYWRidWYgIT0gTlVMTCkKKy0JCXJlZ2NhY2hlX2Nvb2tlZF9yZWFk IChyZWdjYWNoZSwgdGRlcC0+cHBjX2ZwMF9yZWdudW0gKyAxICsgaSwKKy0JCQkJICAgICAgKGJm ZF9ieXRlICopIHJlYWRidWYgKyBpICogOCk7CistCSAgICB9CisrCSAgb2sgPSBwcGM2NF9zeXN2 X2FiaV9yZXR1cm5fdmFsdWVfYmFzZSAoZ2RiYXJjaCwgZWx0eXBlLCByZWdjYWNoZSwKKysJCQkJ CQkgcmVhZGJ1Ziwgd3JpdGVidWYsIGkpOworKwkgIGdkYl9hc3NlcnQgKG9rKTsKKysKKysJICBp ZiAocmVhZGJ1ZikKKysJICAgIHJlYWRidWYgKz0gVFlQRV9MRU5HVEggKGVsdHlwZSk7CisrCSAg aWYgKHdyaXRlYnVmKQorKwkgICAgd3JpdGVidWYgKz0gVFlQRV9MRU5HVEggKGVsdHlwZSk7Cisg CX0KKyAgICAgICByZXR1cm4gUkVUVVJOX1ZBTFVFX1JFR0lTVEVSX0NPTlZFTlRJT047CisgICAg IH0KKy0gIC8qIENvbXBsZXggdmFsdWVzIGdldCByZXR1cm5lZCBpbiBmMTpmMiwgbmVlZCB0byBj b252ZXJ0LiAgKi8KKy0gIGlmIChUWVBFX0NPREUgKHZhbHR5cGUpID09IFRZUEVfQ09ERV9DT01Q TEVYCistICAgICAgJiYgKFRZUEVfTEVOR1RIICh2YWx0eXBlKSA9PSA4IHx8IFRZUEVfTEVOR1RI ICh2YWx0eXBlKSA9PSAxNikpCisrCisrICAvKiBPcGVuQ0wgdmVjdG9ycyBzaG9ydGVyIHRoYW4g MTYgYnl0ZXMgYXJlIHJldHVybmVkIGFzIGlmCisrICAgICBhIHNlcmllcyBvZiBpbmRlcGVuZGVu dCBzY2FsYXJzOyBPcGVuQ0wgdmVjdG9ycyAxNiBieXRlcworKyAgICAgb3IgbG9uZ2VyIGFyZSBy ZXR1cm5lZCBhcyBpZiBhIHNlcmllcyBvZiBBbHRpVmVjIHZlY3RvcnMuICAqLworKyAgaWYgKFRZ UEVfQ09ERSAodmFsdHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZICYmIFRZUEVfVkVDVE9SICh2YWx0 eXBlKQorKyAgICAgICYmIG9wZW5jbF9hYmkpCisgICAgIHsKKy0gICAgICBpZiAocmVnY2FjaGUg IT0gTlVMTCkKKysgICAgICBpZiAoVFlQRV9MRU5HVEggKHZhbHR5cGUpIDwgMTYpCisrCWVsdHlw ZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHZhbHR5cGUpKTsKKysgICAgICBl bHNlCisrCWVsdHlwZSA9IHJlZ2lzdGVyX3R5cGUgKGdkYmFyY2gsIHRkZXAtPnBwY192cjBfcmVn bnVtKTsKKysKKysgICAgICBuZWx0ID0gVFlQRV9MRU5HVEggKHZhbHR5cGUpIC8gVFlQRV9MRU5H VEggKGVsdHlwZSk7CisrICAgICAgZm9yIChpID0gMDsgaSA8IG5lbHQ7IGkrKykKKyAJeworLQkg IGludCBpOworLQkgIGZvciAoaSA9IDA7IGkgPCAyOyBpKyspCistCSAgICB7CistCSAgICAgIGdk Yl9ieXRlIHJlZ3ZhbFtNQVhfUkVHSVNURVJfU0laRV07CistCSAgICAgIHN0cnVjdCB0eXBlICpy ZWd0eXBlID0KKy0JCXJlZ2lzdGVyX3R5cGUgKGdkYmFyY2gsIHRkZXAtPnBwY19mcDBfcmVnbnVt KTsKKy0JICAgICAgc3RydWN0IHR5cGUgKnRhcmdldF90eXBlOworLQkgICAgICB0YXJnZXRfdHlw ZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHZhbHR5cGUpKTsKKy0JICAgICAg aWYgKHdyaXRlYnVmICE9IE5VTEwpCistCQl7CistCQkgIGNvbnZlcnRfdHlwZWRfZmxvYXRpbmcg KChjb25zdCBiZmRfYnl0ZSAqKSB3cml0ZWJ1ZiArCistCQkJCQkgIGkgKiBUWVBFX0xFTkdUSCAo dGFyZ2V0X3R5cGUpLCAKKy0JCQkJCSAgdGFyZ2V0X3R5cGUsIHJlZ3ZhbCwgcmVndHlwZSk7Cist CQkgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAocmVnY2FjaGUsCistICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0ZGVwLT5wcGNfZnAwX3JlZ251bSArIDEgKyBpLAorLQkJ CQkJIHJlZ3ZhbCk7CistCQl9CistCSAgICAgIGlmIChyZWFkYnVmICE9IE5VTEwpCistCQl7Cist CQkgIHJlZ2NhY2hlX2Nvb2tlZF9yZWFkIChyZWdjYWNoZSwKKy0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdGRlcC0+cHBjX2ZwMF9yZWdudW0gKyAxICsgaSwKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVndmFsKTsKKy0JCSAgY29udmVy dF90eXBlZF9mbG9hdGluZyAocmVndmFsLCByZWd0eXBlLAorLQkJCQkJICAoYmZkX2J5dGUgKikg cmVhZGJ1ZiArCistCQkJCQkgIGkgKiBUWVBFX0xFTkdUSCAodGFyZ2V0X3R5cGUpLAorLQkJCQkJ ICB0YXJnZXRfdHlwZSk7CistCQl9CistCSAgICB9CisrCSAgb2sgPSBwcGM2NF9zeXN2X2FiaV9y ZXR1cm5fdmFsdWVfYmFzZSAoZ2RiYXJjaCwgZWx0eXBlLCByZWdjYWNoZSwKKysJCQkJCQkgcmVh ZGJ1Ziwgd3JpdGVidWYsIGkpOworKwkgIGdkYl9hc3NlcnQgKG9rKTsKKysKKysJICBpZiAocmVh ZGJ1ZikKKysJICAgIHJlYWRidWYgKz0gVFlQRV9MRU5HVEggKGVsdHlwZSk7CisrCSAgaWYgKHdy aXRlYnVmKQorKwkgICAgd3JpdGVidWYgKz0gVFlQRV9MRU5HVEggKGVsdHlwZSk7CisgCX0KKyAg ICAgICByZXR1cm4gUkVUVVJOX1ZBTFVFX1JFR0lTVEVSX0NPTlZFTlRJT047CisgICAgIH0KKy0g IC8qIEJpZyBjb21wbGV4IHZhbHVlcyBnZXQgc3RvcmVkIGluIGYxOmY0LiAgKi8KKy0gIGlmIChU WVBFX0NPREUgKHZhbHR5cGUpID09IFRZUEVfQ09ERV9DT01QTEVYICYmIFRZUEVfTEVOR1RIICh2 YWx0eXBlKSA9PSAzMikKKysKKysgIC8qIEFsbCBwb2ludGVycyBsaXZlIGluIHIzLiAgKi8KKysg IGlmIChUWVBFX0NPREUgKHZhbHR5cGUpID09IFRZUEVfQ09ERV9QVFIKKysgICAgICB8fCBUWVBF X0NPREUgKHZhbHR5cGUpID09IFRZUEVfQ09ERV9SRUYpCisgICAgIHsKKy0gICAgICBpZiAocmVn Y2FjaGUgIT0gTlVMTCkKKy0JeworLQkgIGludCBpOworLQkgIGZvciAoaSA9IDA7IGkgPCA0OyBp KyspCistCSAgICB7CistCSAgICAgIGlmICh3cml0ZWJ1ZiAhPSBOVUxMKQorLQkJcmVnY2FjaGVf Y29va2VkX3dyaXRlIChyZWdjYWNoZSwgdGRlcC0+cHBjX2ZwMF9yZWdudW0gKyAxICsgaSwKKy0J CQkJICAgICAgIChjb25zdCBiZmRfYnl0ZSAqKSB3cml0ZWJ1ZiArIGkgKiA4KTsKKy0JICAgICAg aWYgKHJlYWRidWYgIT0gTlVMTCkKKy0JCXJlZ2NhY2hlX2Nvb2tlZF9yZWFkIChyZWdjYWNoZSwg dGRlcC0+cHBjX2ZwMF9yZWdudW0gKyAxICsgaSwKKy0JCQkJICAgICAgKGJmZF9ieXRlICopIHJl YWRidWYgKyBpICogOCk7CistCSAgICB9CistCX0KKysgICAgICBpbnQgcmVnbnVtID0gdGRlcC0+ cHBjX2dwMF9yZWdudW0gKyAzOworKworKyAgICAgIGlmICh3cml0ZWJ1ZiAhPSBOVUxMKQorKwly ZWdjYWNoZV9jb29rZWRfd3JpdGUgKHJlZ2NhY2hlLCByZWdudW0sIHdyaXRlYnVmKTsKKysgICAg ICBpZiAocmVhZGJ1ZiAhPSBOVUxMKQorKwlyZWdjYWNoZV9jb29rZWRfcmVhZCAocmVnY2FjaGUs IHJlZ251bSwgcmVhZGJ1Zik7CisgICAgICAgcmV0dXJuIFJFVFVSTl9WQUxVRV9SRUdJU1RFUl9D T05WRU5USU9OOworICAgICB9CisrCisrICAvKiBTbWFsbCBjaGFyYWN0ZXIgYXJyYXlzIGFyZSBy ZXR1cm5lZCwgcmlnaHQganVzdGlmaWVkLCBpbiByMy4gICovCisrICBpZiAoVFlQRV9DT0RFICh2 YWx0eXBlKSA9PSBUWVBFX0NPREVfQVJSQVkKKysgICAgICAmJiBUWVBFX0xFTkdUSCAodmFsdHlw ZSkgPD0gOAorKyAgICAgICYmIFRZUEVfQ09ERSAoVFlQRV9UQVJHRVRfVFlQRSAodmFsdHlwZSkp ID09IFRZUEVfQ09ERV9JTlQKKysgICAgICAmJiBUWVBFX0xFTkdUSCAoVFlQRV9UQVJHRVRfVFlQ RSAodmFsdHlwZSkpID09IDEpCisrICAgIHsKKysgICAgICBpbnQgcmVnbnVtID0gdGRlcC0+cHBj X2dwMF9yZWdudW0gKyAzOworKyAgICAgIGludCBvZmZzZXQgPSAocmVnaXN0ZXJfc2l6ZSAoZ2Ri YXJjaCwgcmVnbnVtKSAtIFRZUEVfTEVOR1RIICh2YWx0eXBlKSk7CisrCisrICAgICAgaWYgKHdy aXRlYnVmICE9IE5VTEwpCisrCXJlZ2NhY2hlX2Nvb2tlZF93cml0ZV9wYXJ0IChyZWdjYWNoZSwg cmVnbnVtLAorKwkJCQkgICAgb2Zmc2V0LCBUWVBFX0xFTkdUSCAodmFsdHlwZSksIHdyaXRlYnVm KTsKKysgICAgICBpZiAocmVhZGJ1ZiAhPSBOVUxMKQorKwlyZWdjYWNoZV9jb29rZWRfcmVhZF9w YXJ0IChyZWdjYWNoZSwgcmVnbnVtLAorKwkJCQkgICBvZmZzZXQsIFRZUEVfTEVOR1RIICh2YWx0 eXBlKSwgcmVhZGJ1Zik7CisrICAgICAgcmV0dXJuIFJFVFVSTl9WQUxVRV9SRUdJU1RFUl9DT05W RU5USU9OOworKyAgICB9CisrCisrICAvKiBIYW5kbGUgcGxhaW4gYmFzZSB0eXBlcy4gICovCisr ICBpZiAocHBjNjRfc3lzdl9hYmlfcmV0dXJuX3ZhbHVlX2Jhc2UgKGdkYmFyY2gsIHZhbHR5cGUs IHJlZ2NhY2hlLAorKwkJCQkJcmVhZGJ1Ziwgd3JpdGVidWYsIDApKQorKyAgICByZXR1cm4gUkVU VVJOX1ZBTFVFX1JFR0lTVEVSX0NPTlZFTlRJT047CisrCisgICByZXR1cm4gUkVUVVJOX1ZBTFVF X1NUUlVDVF9DT05WRU5USU9OOworIH0KKyAKCmRpZmYgLS1naXQgYS9nZGItdXBzdHJlYW0tcHBj NjRsZTA1b2YxNS5wYXRjaCBiL2dkYi11cHN0cmVhbS1wcGM2NGxlMDVvZjE1LnBhdGNoCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhM2ZkYTAKLS0tIC9kZXYvbnVsbAorKysg Yi9nZGItdXBzdHJlYW0tcHBjNjRsZTA1b2YxNS5wYXRjaApAQCAtMCwwICsxLDQ0IEBACitjb21t aXQgZDYzMTY3YWZmYzJhNTYxODllM2JhMmNjNDdkZDlhMzQ1MTIwOGI1OQorQXV0aG9yOiBVbHJp Y2ggV2VpZ2FuZCA8dWxyaWNoLndlaWdhbmRAZGUuaWJtLmNvbT4KK0RhdGU6ICAgVHVlIEZlYiA0 IDE4OjI2OjI2IDIwMTQgKzAxMDAKKworICAgIFBvd2VyUEM2NCBsaXR0bGUtZW5kaWFuIGZpeGVz OiBzdHJ1Y3R1cmUgcGFzc2luZworICAgIAorICAgIFdoZW4gcGFzc2luZyBhIHNtYWxsIHN0cnVj dHVyZSBpbiBhIEdQUiwgdGhlIEFCSSBzcGVjaWZpZXMgdGhhdCBpdAorICAgIHNob3VsZCBiZSBw YXNzZWQgaW4gdGhlIGxlYXN0LXNpZ25pZmljYW50IGJ5dGVzIG9mIHRoZSByZWdpc3RlcgorICAg IChvciBzdGFjayBzbG90KS4gIE9uIGJpZy1lbmRpYW4gc3lzdGVtcywgdGhpcyBtZWFucyB0aGUg dmFsdWUKKyAgICBuZWVkcyB0byBiZSBzdG9yZWQgYXQgYW4gb2Zmc2V0LCB3aGljaCBpcyB3aGF0 IGN1cnJlbnQgY29kZSBkb2VzLgorICAgIAorICAgIEhvd2V2ZXIsIG9uIGxpdHRsZS1lbmRpYW4g c3lzdGVtcywgdGhlIGxlYXN0LXNpZ25pZmljYW50IGJ5dGVzIGFyZQorICAgIGFkZHJlc3NlcyB3 aXRoIG9mZnNldCAwLiAgVGhpcyBwYXRjaCBmaXhlcyB0aGF0LgorICAgIAorICAgIGdkYi9DaGFu Z2VMb2c6CisgICAgCisgICAgCSogcHBjLXN5c3YtdGRlcC5jIChwcGM2NF9zeXN2X2FiaV9wdXNo X3ZhbCk6IFVzZSBjb3JyZWN0CisgICAgCW9mZnNldCBvbiBsaXR0bGUtZW5kaWFuIHdoZW4gcGFz c2luZyBzbWFsbCBzdHJ1Y3R1cmVzLgorCisjIyMgYS9nZGIvQ2hhbmdlTG9nCisjIyMgYi9nZGIv Q2hhbmdlTG9nCisjIyAtMSw1ICsxLDEwIEBACisgMjAxNC0wMi0wNCAgVWxyaWNoIFdlaWdhbmTC oCA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KKyAKKysJKiBwcGMtc3lzdi10ZGVwLmMgKHBwYzY0X3N5 c3ZfYWJpX3B1c2hfdmFsKTogVXNlIGNvcnJlY3QKKysJb2Zmc2V0IG9uIGxpdHRsZS1lbmRpYW4g d2hlbiBwYXNzaW5nIHNtYWxsIHN0cnVjdHVyZXMuCisrCisrMjAxNC0wMi0wNCAgVWxyaWNoIFdl aWdhbmTCoCA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KKysKKyAJKiBwcGMtc3lzdi10ZGVwLmMgKGdl dF9kZWNpbWFsX2Zsb2F0X3JldHVybl92YWx1ZSk6IFVwZGF0ZSBjb21tZW50LgorIAkoc3RydWN0 IHBwYzY0X3N5c3ZfYXJncG9zKTogTmV3IGRhdGEgc3RydWN0dXJlLgorIAkocHBjNjRfc3lzdl9h YmlfcHVzaF9mbG9hdCk6IFJlbW92ZS4KKy0tLSBhL2dkYi9wcGMtc3lzdi10ZGVwLmMKKysrKyBi L2dkYi9wcGMtc3lzdi10ZGVwLmMKK0BAIC0xMTUwLDcgKzExNTAsOCBAQCBwcGM2NF9zeXN2X2Fi aV9wdXNoX3ZhbCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisgICAgICBkb3VibGV3b3JkIGFy ZSByaWdodC1hbGlnbmVkIGFuZCB0aG9zZSBsYXJnZXIgYXJlIGxlZnQtYWxpZ25lZC4KKyAgICAg IEdDQyB2ZXJzaW9ucyBiZWZvcmUgMy40IGltcGxlbWVudGVkIHRoaXMgaW5jb3JyZWN0bHk7IHNl ZQorICAgICAgPGh0dHA6Ly9nY2MuZ251Lm9yZy9nY2MtMy40L3Bvd2VycGMtYWJpLmh0bWw+LiAg Ki8KKy0gIGlmIChsZW4gPCB0ZGVwLT53b3Jkc2l6ZSkKKysgIGlmIChsZW4gPCB0ZGVwLT53b3Jk c2l6ZQorKyAgICAgICYmIGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJjaCkgPT0gQkZEX0VORElB Tl9CSUcpCisgICAgIG9mZnNldCA9IHRkZXAtPndvcmRzaXplIC0gbGVuOworIAorICAgaWYgKGFy Z3Bvcy0+cmVnY2FjaGUpCgpkaWZmIC0tZ2l0IGEvZ2RiLXVwc3RyZWFtLXBwYzY0bGUwNm9mMTUu cGF0Y2ggYi9nZGItdXBzdHJlYW0tcHBjNjRsZTA2b2YxNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi5kMDMyNThkCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLXVwc3Ry ZWFtLXBwYzY0bGUwNm9mMTUucGF0Y2gKQEAgLTAsMCArMSw2NyBAQAorY29tbWl0IDZlZDE0ZmYz Mzk3OWJjNDgzNjdjMzViMWIyMzVmZWY4YzVlMjIyOWIKK0F1dGhvcjogVWxyaWNoIFdlaWdhbmQg PHVscmljaC53ZWlnYW5kQGRlLmlibS5jb20+CitEYXRlOiAgIFR1ZSBGZWIgNCAxODoyODoyNCAy MDE0ICswMTAwCisKKyAgICBQb3dlclBDNjQgbGl0dGxlLWVuZGlhbiBmaXhlczogQWx0aVZlYyB0 ZXN0cworICAgIAorICAgIEEgY291cGxlIG9mIEFsdGlWZWMgdGVzdHMgZmFpbCBzcHVyaW91c2x5 IG9uIHBvd2VycGM2NGxlLWxpbnV4LCBiZWNhdXNlCisgICAgdGhleSBjb21wYXJlIGFnYWluc3Qg YW4gaW5jb3JyZWN0IHBhdHRlcm4uICBOb3RlIHRoYXQgdGhvc2UgdGVzdHMgYWxyZWFkeQorICAg IGNvbnRhaW4gbGl0dGxlLWVuZGlhbiB2YXJpYW50cyBvZiB0aGUgcGF0dGVybnMsIGJ1dCB0aG9z ZSBzZWVtIHRvIGhhdmUKKyAgICBiaXQtcm90dGVkIGEgYml0OiB3aGVuIG91dHB1dHRpbmcgYSB2 ZWN0b3IsIEdEQiBubyBsb25nZXIgb21pdHMgdHJhaWxpbmcKKyAgICB6ZXJvIGVsZW1lbnRzIChh cyBpdCB1c2VkIHRvIGRvIGluIHRoZSBwYXN0KS4KKyAgICAKKyAgICBUaGlzIHBhdGNoIHVwZGF0 ZXMgdGhlIHBhdHRlcm4gdG8gdGhlIG5ldyBHREIgb3V0cHV0IGJlaGF2aW9yLgorICAgIAorICAg IEluIGFkZGl0aW9uLCB0aGUgcGF0Y2ggdXBkYXRlcyB0aGUgZW5kaWFuIHRlc3QgdG8gdXNlIHRo ZSBuZXcKKyAgICBnZGJfdGVzdF9tdWx0aXBsZSBsb2dpYyBpbnN0ZWFkIG9mIGdkYl9leHBlY3Qu CisgICAgCisgICAgZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6CisgICAgCisgICAgCSogZ2RiLmFy Y2gvYWx0aXZlYy1yZWdzLmV4cDogVXNlIGdkYl90ZXN0X211bHRpcGxlIGZvciBlbmRpYW4gdGVz dC4KKyAgICAJKGRlY2ltYWxfdmVjdG9yKTogRml4IGZvciBsaXR0bGUtZW5kaWFuLgorCisjIyMg YS9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZworIyMjIGIvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cK KyMjIC0xLDMgKzEsOCBAQAorKzIwMTQtMDItMDQgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRA ZGUuaWJtLmNvbT4KKysKKysJKiBnZGIuYXJjaC9hbHRpdmVjLXJlZ3MuZXhwOiBVc2UgZ2RiX3Rl c3RfbXVsdGlwbGUgZm9yIGVuZGlhbiB0ZXN0LgorKwkoZGVjaW1hbF92ZWN0b3IpOiBGaXggZm9y IGxpdHRsZS1lbmRpYW4uCisrCisgMjAxNC0wMS0yOSAgSm9zZSBFLiBNYXJjaGVzaSAgPGpvc2Uu bWFyY2hlc2lAb3JhY2xlLmNvbT4KKyAKKyAJKiBnZGIuYXJjaC9zcGFyYy1zeXNzdGVwLmV4cDog TmV3IGZpbGUuCistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL2FsdGl2ZWMtcmVncy5leHAK KysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvYWx0aXZlYy1yZWdzLmV4cAorQEAgLTc5LDE3 ICs3OSwxNiBAQCBnZGJfdGVzdCAic2V0IFwkdnJzYXZlID0gMSIgIiIgIiIKKyAKKyBnZGJfdGVz dCAibmV4dCIgIiIgIiIKKyAKKy1zZW5kX2dkYiAic2hvdyBlbmRpYW5cbiIKKyBzZXQgZW5kaWFu bmVzcyAiIgorLWdkYl9leHBlY3QgeworK3NldCBtc2cgImRldGVjdCBlbmRpYW5uZXNzIgorK2dk Yl90ZXN0X211bHRpcGxlICJzaG93IGVuZGlhbiIgIiRtc2ciIHsKKyAgICAgLXJlICIoVGhlIHRh cmdldCBlbmRpYW5uZXNzIGlzIHNldCBhdXRvbWF0aWNhbGx5IC5jdXJyZW50bHkgKShiaWd8bGl0 dGxlKSggZW5kaWFuLiopJGdkYl9wcm9tcHQgJCIgeworLSAgICAgICAgcGFzcyAiZW5kaWFubmVz cyIKKy0Jc2V0IGVuZGlhbm5lc3MgJGV4cGVjdF9vdXQoMixzdHJpbmcpCisrICAgICAgICBwYXNz ICIkbXNnIgorKyAgICAgICAgc2V0IGVuZGlhbm5lc3MgJGV4cGVjdF9vdXQoMixzdHJpbmcpCisg ICAgIH0KKyAgICAgLXJlICIuKiRnZGJfcHJvbXB0ICQiIHsKKy0JZmFpbCAiY291bGRuJ3QgZ2V0 IGVuZGlhbm5lc3MiCisrICAgICAgICBmYWlsICIkbXNnIgorICAgICB9CistICAgIHRpbWVvdXQJ CXsgZmFpbCAiKHRpbWVvdXQpIGVuZGlhbm5lc3MiIH0KKyB9CisgCisgIyBBbmQgdGhlbiByZWFk IHRoZSBBbHRpVmVjIHJlZ2lzdGVycyBiYWNrLCB0byBzZWUgdGhhdAorQEAgLTExOCw3ICsxMTcs NyBAQCBnZGJfdGVzdCAiaW5mbyByZWcgdnNjciIgInZzY3IuKjB4MVx0MSIgImluZm8gcmVnIHZz Y3IiCisgaWYgeyRlbmRpYW5uZXNzID09ICJiaWcifSB7CisgICAgICBzZXQgZGVjaW1hbF92ZWN0 b3IgIi51aW50MTI4ID0gMHgwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMSwgdjRfZmxv YXQgPSAuMS4qZS00NSwgMS4qZS00NSwgMS4qZS00NSwgMS4qZS00NS4sIHY0X2ludDMyID0gLjEs IDEsIDEsIDEuLCB2OF9pbnQxNiA9IC4wLCAxLCAwLCAxLCAwLCAxLCAwLCAxLiwgdjE2X2ludDgg PSAuMCwgMCwgMCwgMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMS4uIgorIH0g ZWxzZSB7CistICAgICBzZXQgZGVjaW1hbF92ZWN0b3IgIi51aW50MTI4ID0gMHgwMDAwMDAwMTAw MDAwMDAxMDAwMDAwMDEwMDAwMDAwMSwgdjRfZmxvYXQgPSAuMS4qZS00NSwgMS4qZS00NSwgMS4q ZS00NSwgMS4qZS00NS4sIHY0X2ludDMyID0gLjEsIDEsIDEsIDEuLCB2OF9pbnQxNiA9IC4xLCAw LCAxLCAwLCAxLCAwLCAxLCAwLiwgdjE2X2ludDggPSAuMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwg MSwgMCwgMCwgMCwgMSwgMCwgMC4uIgorKyAgICAgc2V0IGRlY2ltYWxfdmVjdG9yICIudWludDEy OCA9IDB4MDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDEsIHY0X2Zsb2F0ID0gLjEuKmUt NDUsIDEuKmUtNDUsIDEuKmUtNDUsIDEuKmUtNDUuLCB2NF9pbnQzMiA9IC4xLCAxLCAxLCAxLiwg djhfaW50MTYgPSAuMSwgMCwgMSwgMCwgMSwgMCwgMSwgMC4sIHYxNl9pbnQ4ID0gLjEsIDAsIDAs IDAsIDEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDEsIDAsIDAsIDAuLiIKKyB9CisgCisgZm9yIHtz ZXQgaSAwfSB7JGkgPCAzMn0ge2luY3IgaSAxfSB7CgpkaWZmIC0tZ2l0IGEvZ2RiLXVwc3RyZWFt LXBwYzY0bGUwN29mMTUucGF0Y2ggYi9nZGItdXBzdHJlYW0tcHBjNjRsZTA3b2YxNS5wYXRjaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDhkNDE5Ci0tLSAvZGV2L251bGwK KysrIGIvZ2RiLXVwc3RyZWFtLXBwYzY0bGUwN29mMTUucGF0Y2gKQEAgLTAsMCArMSwxNDkgQEAK K2NvbW1pdCAwODRlZTU0NTUyZjZjMzVkNzQwZThiOWJjODFhNGZlOGQ4YmIxNzhiCitBdXRob3I6 IFVscmljaCBXZWlnYW5kIDx1bHJpY2gud2VpZ2FuZEBkZS5pYm0uY29tPgorRGF0ZTogICBUdWUg RmViIDQgMTg6MzE6MzggMjAxNCArMDEwMAorCisgICAgUG93ZXJQQzY0IGxpdHRsZS1lbmRpYW4g Zml4ZXM6IFZTWCB0ZXN0cyBhbmQgcHNldWRvLXJlZ3MKKyAgICAKKyAgICBNYW55IFZTWCB0ZXN0 IHdlcmUgZmFpbGluZyBvbiBwb3dlcnBjNjRsZS1saW51eCwgc2luY2UgLWFzIG9wcG9zZWQgdG8g dGhlCisgICAgQWx0aVZlYyB0ZXN0cy0gdGhlcmUgbmV2ZXIgd2VyZSBsaXR0bGUtZW5kaWFuIHZl cnNpb25zIG9mIHRoZSB0ZXN0IHBhdHRlcm5zLgorICAgIAorICAgIFRoaXMgcGF0Y2ggYWRkcyBz dWNoIHBhdHRlcm5zLCBhbG9uZyB0aGUgbGluZXMgb2YgYWx0aXZlYy1yZWdzLmV4cC4KKyAgICAK KyAgICBJbiBhZGRpdGlvbiwgdGhlcmUgaXMgYW4gYWN0dWFsIGNvZGUgY2hhbmdlIHJlcXVpcmVk OiBGb3IgdGhvc2UgVlNYCisgICAgcmVnaXN0ZXJzIHRoYXQgb3ZlcmxhcCBhIGZsb2F0aW5nLXBv aW50IHJlZ2lzdGVyLCB0aGUgRlAgcmVnaXN0ZXIKKyAgICBvdmVybGFwcyB0aGUgbW9zdC1zaWdu aWZpY2FudCBoYWxmIG9mIHRoZSBWU1ggcmVnaXN0ZXIgYm90aCBvbiBiaWctCisgICAgYW5kIGxp dHRsZS1lbmRpYW4gc3lzdGVtcy4gIEhvd2V2ZXIsIG9uIGxpdHRsZS1lbmRpYW4gc3lzdGVtcywg dGhhdAorICAgIGhhbGYgaXMgc3RvcmVkIGF0IGFuIG9mZnNldCBvZiA4IGJ5dGVzIChub3QgMCku ICBUaGlzIHdvcmtzIGFscmVhZHkKKyAgICBmb3IgdGhlICJyZWFsIiBGUCByZWdpc3RlcnMsIGJ1 dCBjdXJyZW50IGNvZGUgZ2V0cyBpdCB3cm9uZyBmb3IKKyAgICB0aGUgImV4dGVuZGVkIiBwc2V1 ZG8gRlAgcmVnaXN0ZXIgR0RCIGdlbmVyYXRlcyBmb3IgdGhlIHNlY29uZAorICAgIGhhbGYgb2Yg dGhlIFZTWCByZWdpc3RlciBiYW5rLgorICAgIAorICAgIFRoaXMgcGF0Y2ggdXBkYXRlcyB0aGUg Y29ycmVzcG9uZGluZyBwc2V1ZG8gcmVhZC93cml0ZSByb3V0aW5lcworICAgIHRvIHRha2UgdGhl IGFwcHJvcHJpYXRlIG9mZnNldCBpbnRvIGNvbnNpZGVyYXRpb24uCisgICAgCisgICAgZ2RiL0No YW5nZUxvZzoKKyAgICAKKyAgICAJKiByczYwMDAtdGRlcC5jIChlZnByX3BzZXVkb19yZWdpc3Rl cl9yZWFkKTogVXNlIGNvcnJlY3Qgb2Zmc2V0CisgICAgCW9mIHRoZSBvdmVybGFwcGVkIEZQIHJl Z2lzdGVyIHdpdGhpbiB0aGUgVlNYIHJlZ2lzdGVyIG9uIGxpdHRsZS0KKyAgICAJZW5kaWFuIHBs YXRmb3Jtcy4KKyAgICAJKGVmcHJfcHNldWRvX3JlZ2lzdGVyX3dyaXRlKTogTGlrZXdpc2UuCisg ICAgCisgICAgZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6CisgICAgCisgICAgCSogZ2RiLmFyY2gv dnN4LXJlZ3MuZXhwOiBDaGVjayB0YXJnZXQgZW5kaWFubmVzcy4gIFByb3ZpZGUgdmFyaWFudHMK KyAgICAJb2YgdGhlIHRlc3QgcGF0dGVybnMgZm9yIHVzZSBvbiBsaXR0bGUtZW5kaWFuIHN5c3Rl bXMuCisKKyMjIyBhL2dkYi9DaGFuZ2VMb2cKKyMjIyBiL2dkYi9DaGFuZ2VMb2cKKyMjIC0xLDUg KzEsMTIgQEAKKyAyMDE0LTAyLTA0ICBVbHJpY2ggV2VpZ2FuZMKgIDx1d2VpZ2FuZEBkZS5pYm0u Y29tPgorIAorKwkqIHJzNjAwMC10ZGVwLmMgKGVmcHJfcHNldWRvX3JlZ2lzdGVyX3JlYWQpOiBV c2UgY29ycmVjdCBvZmZzZXQKKysJb2YgdGhlIG92ZXJsYXBwZWQgRlAgcmVnaXN0ZXIgd2l0aGlu IHRoZSBWU1ggcmVnaXN0ZXIgb24gbGl0dGxlLQorKwllbmRpYW4gcGxhdGZvcm1zLgorKwkoZWZw cl9wc2V1ZG9fcmVnaXN0ZXJfd3JpdGUpOiBMaWtld2lzZS4KKysKKysyMDE0LTAyLTA0ICBVbHJp Y2ggV2VpZ2FuZMKgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgorKworIAkqIHBwYy1zeXN2LXRkZXAu YyAocHBjNjRfc3lzdl9hYmlfcHVzaF92YWwpOiBVc2UgY29ycmVjdAorIAlvZmZzZXQgb24gbGl0 dGxlLWVuZGlhbiB3aGVuIHBhc3Npbmcgc21hbGwgc3RydWN0dXJlcy4KKyAKKy0tLSBhL2dkYi9y czYwMDAtdGRlcC5jCisrKysgYi9nZGIvcnM2MDAwLXRkZXAuYworQEAgLTI3NzksMTAgKzI3Nzks MTIgQEAgZWZwcl9wc2V1ZG9fcmVnaXN0ZXJfcmVhZCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gs IHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCisgeworICAgc3RydWN0IGdkYmFyY2hfdGRlcCAq dGRlcCA9IGdkYmFyY2hfdGRlcCAoZ2RiYXJjaCk7CisgICBpbnQgcmVnX2luZGV4ID0gcmVnX25y IC0gdGRlcC0+cHBjX2VmcHIwX3JlZ251bTsKKysgIGludCBvZmZzZXQgPSBnZGJhcmNoX2J5dGVf b3JkZXIgKGdkYmFyY2gpID09IEJGRF9FTkRJQU5fQklHID8gMCA6IDg7CisgCisgICAvKiBSZWFk IHRoZSBwb3J0aW9uIHRoYXQgb3ZlcmxhcHMgdGhlIFZNWCByZWdpc3Rlci4gICovCistICByZXR1 cm4gcmVnY2FjaGVfcmF3X3JlYWRfcGFydCAocmVnY2FjaGUsIHRkZXAtPnBwY192cjBfcmVnbnVt ICsgcmVnX2luZGV4LCAwLAorLQkJCQkgcmVnaXN0ZXJfc2l6ZSAoZ2RiYXJjaCwgcmVnX25yKSwg YnVmZmVyKTsKKysgIHJldHVybiByZWdjYWNoZV9yYXdfcmVhZF9wYXJ0IChyZWdjYWNoZSwgdGRl cC0+cHBjX3ZyMF9yZWdudW0gKyByZWdfaW5kZXgsCisrCQkJCSBvZmZzZXQsIHJlZ2lzdGVyX3Np emUgKGdkYmFyY2gsIHJlZ19uciksCisrCQkJCSBidWZmZXIpOworIH0KKyAKKyAvKiBXcml0ZSBt ZXRob2QgZm9yIFBPV0VSNyBFeHRlbmRlZCBGUCBwc2V1ZG8tcmVnaXN0ZXJzLiAgKi8KK0BAIC0y NzkyLDEwICsyNzk0LDEyIEBAIGVmcHJfcHNldWRvX3JlZ2lzdGVyX3dyaXRlIChzdHJ1Y3QgZ2Ri YXJjaCAqZ2RiYXJjaCwgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKKyB7CisgICBzdHJ1Y3Qg Z2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwIChnZGJhcmNoKTsKKyAgIGludCByZWdf aW5kZXggPSByZWdfbnIgLSB0ZGVwLT5wcGNfZWZwcjBfcmVnbnVtOworKyAgaW50IG9mZnNldCA9 IGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJjaCkgPT0gQkZEX0VORElBTl9CSUcgPyAwIDogODsK KyAKKyAgIC8qIFdyaXRlIHRoZSBwb3J0aW9uIHRoYXQgb3ZlcmxhcHMgdGhlIFZNWCByZWdpc3Rl ci4gICovCistICByZWdjYWNoZV9yYXdfd3JpdGVfcGFydCAocmVnY2FjaGUsIHRkZXAtPnBwY192 cjBfcmVnbnVtICsgcmVnX2luZGV4LCAwLAorLQkJCSAgIHJlZ2lzdGVyX3NpemUgKGdkYmFyY2gs IHJlZ19uciksIGJ1ZmZlcik7CisrICByZWdjYWNoZV9yYXdfd3JpdGVfcGFydCAocmVnY2FjaGUs IHRkZXAtPnBwY192cjBfcmVnbnVtICsgcmVnX2luZGV4LAorKwkJCSAgIG9mZnNldCwgcmVnaXN0 ZXJfc2l6ZSAoZ2RiYXJjaCwgcmVnX25yKSwKKysJCQkgICBidWZmZXIpOworIH0KKyAKKyBzdGF0 aWMgZW51bSByZWdpc3Rlcl9zdGF0dXMKKyMjIyBhL2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nCisj IyMgYi9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZworIyMgLTEsNSArMSwxMCBAQAorIDIwMTQtMDIt MDQgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KKyAKKysJKiBnZGIuYXJj aC92c3gtcmVncy5leHA6IENoZWNrIHRhcmdldCBlbmRpYW5uZXNzLiAgUHJvdmlkZSB2YXJpYW50 cworKwlvZiB0aGUgdGVzdCBwYXR0ZXJucyBmb3IgdXNlIG9uIGxpdHRsZS1lbmRpYW4gc3lzdGVt cy4KKysKKysyMDE0LTAyLTA0ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+ CisrCisgCSogZ2RiLmFyY2gvYWx0aXZlYy1yZWdzLmV4cDogVXNlIGdkYl90ZXN0X211bHRpcGxl IGZvciBlbmRpYW4gdGVzdC4KKyAJKGRlY2ltYWxfdmVjdG9yKTogRml4IGZvciBsaXR0bGUtZW5k aWFuLgorIAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC92c3gtcmVncy5leHAKKysrKyBi L2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvdnN4LXJlZ3MuZXhwCitAQCAtNTgsMTkgKzU4LDQ1IEBA IGlmICFbcnVudG9fbWFpbl0gdGhlbiB7CisgICAgIGdkYl9zdXBwcmVzc190ZXN0cworIH0KKyAK KytzZXQgZW5kaWFubmVzcyAiIgorK3NldCBtc2cgImRldGVjdCBlbmRpYW5uZXNzIgorK2dkYl90 ZXN0X211bHRpcGxlICJzaG93IGVuZGlhbiIgIiRtc2ciIHsKKysgICAgLXJlICIoVGhlIHRhcmdl dCBlbmRpYW5uZXNzIGlzIHNldCBhdXRvbWF0aWNhbGx5IC5jdXJyZW50bHkgKShiaWd8bGl0dGxl KSggZW5kaWFuLiopJGdkYl9wcm9tcHQgJCIgeworKyAgICAgICAgcGFzcyAiJG1zZyIKKysgICAg ICAgIHNldCBlbmRpYW5uZXNzICRleHBlY3Rfb3V0KDIsc3RyaW5nKQorKyAgICB9CisrICAgIC1y ZSAiLiokZ2RiX3Byb21wdCAkIiB7CisrICAgICAgICBmYWlsICIkbXNnIgorKyAgICB9CisrfQor KworICMgRGF0YSBzZXRzIHVzZWQgdGhyb3VnaG91dCB0aGUgdGVzdAorIAorLXNldCB2ZWN0b3Jf cmVnaXN0ZXIxICIudWludDEyOCA9IDB4M2ZmNGNjY2NjY2NjY2NjYzAwMDAwMDAwMDAwMDAwMDAs IHYyX2RvdWJsZSA9IC4weDEsIDB4MC4sIHY0X2Zsb2F0ID0gLjB4MSwgMHhmOTk5OTlhMCwgMHgw LCAweDAuLCB2NF9pbnQzMiA9IC4weDNmZjRjY2NjLCAweGNjY2NjY2NjLCAweDAsIDB4MC4sIHY4 X2ludDE2ID0gLjB4M2ZmNCwgMHhjY2NjLCAweGNjY2MsIDB4Y2NjYywgMHgwLCAweDAsIDB4MCwg MHgwLiwgdjE2X2ludDggPSAuMHgzZiwgMHhmNCwgMHhjYywgMHhjYywgMHhjYywgMHhjYywgMHhj YywgMHhjYywgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAuLiIKKytpZiB7 JGVuZGlhbm5lc3MgPT0gImJpZyJ9IHsKKysgICAgc2V0IHZlY3Rvcl9yZWdpc3RlcjEgIi51aW50 MTI4ID0gMHgzZmY0Y2NjY2NjY2NjY2NjMDAwMDAwMDAwMDAwMDAwMCwgdjJfZG91YmxlID0gLjB4 MSwgMHgwLiwgdjRfZmxvYXQgPSAuMHgxLCAweGY5OTk5OWEwLCAweDAsIDB4MC4sIHY0X2ludDMy ID0gLjB4M2ZmNGNjY2MsIDB4Y2NjY2NjY2MsIDB4MCwgMHgwLiwgdjhfaW50MTYgPSAuMHgzZmY0 LCAweGNjY2MsIDB4Y2NjYywgMHhjY2NjLCAweDAsIDB4MCwgMHgwLCAweDAuLCB2MTZfaW50OCA9 IC4weDNmLCAweGY0LCAweGNjLCAweGNjLCAweGNjLCAweGNjLCAweGNjLCAweGNjLCAweDAsIDB4 MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MC4uIgorKworKyAgICBzZXQgdmVjdG9yX3Jl Z2lzdGVyMV92ciAiLnVpbnQxMjggPSAweDNmZjRjY2NjY2NjY2NjY2MwMDAwMDAwMTAwMDAwMDAx LCB2NF9mbG9hdCA9IC4weDEsIDB4Zjk5OTk5YTAsIDB4MCwgMHgwLiwgdjRfaW50MzIgPSAuMHgz ZmY0Y2NjYywgMHhjY2NjY2NjYywgMHgxLCAweDEuLCB2OF9pbnQxNiA9IC4weDNmZjQsIDB4Y2Nj YywgMHhjY2NjLCAweGNjY2MsIDB4MCwgMHgxLCAweDAsIDB4MS4sIHYxNl9pbnQ4ID0gLjB4M2Ys IDB4ZjQsIDB4Y2MsIDB4Y2MsIDB4Y2MsIDB4Y2MsIDB4Y2MsIDB4Y2MsIDB4MCwgMHgwLCAweDAs IDB4MSwgMHgwLCAweDAsIDB4MCwgMHgxLi4iCisgCistc2V0IHZlY3Rvcl9yZWdpc3RlcjFfdnIg Ii51aW50MTI4ID0gMHgzZmY0Y2NjY2NjY2NjY2NjMDAwMDAwMDEwMDAwMDAwMSwgdjRfZmxvYXQg PSAuMHgxLCAweGY5OTk5OWEwLCAweDAsIDB4MC4sIHY0X2ludDMyID0gLjB4M2ZmNGNjY2MsIDB4 Y2NjY2NjY2MsIDB4MSwgMHgxLiwgdjhfaW50MTYgPSAuMHgzZmY0LCAweGNjY2MsIDB4Y2NjYywg MHhjY2NjLCAweDAsIDB4MSwgMHgwLCAweDEuLCB2MTZfaW50OCA9IC4weDNmLCAweGY0LCAweGNj LCAweGNjLCAweGNjLCAweGNjLCAweGNjLCAweGNjLCAweDAsIDB4MCwgMHgwLCAweDEsIDB4MCwg MHgwLCAweDAsIDB4MS4uIgorKyAgICBzZXQgdmVjdG9yX3JlZ2lzdGVyMiAidWludDEyOCA9IDB4 ZGVhZGJlZWZkZWFkYmVlZmRlYWRiZWVmZGVhZGJlZWYsIHYyX2RvdWJsZSA9IC4weDEsIDB4MS4s IHY0X2Zsb2F0ID0gLjB4MCwgMHgwLCAweDAsIDB4MC4sIHY0X2ludDMyID0gLjB4ZGVhZGJlZWYs IDB4ZGVhZGJlZWYsIDB4ZGVhZGJlZWYsIDB4ZGVhZGJlZWYuLCB2OF9pbnQxNiA9IC4weGRlYWQs IDB4YmVlZiwgMHhkZWFkLCAweGJlZWYsIDB4ZGVhZCwgMHhiZWVmLCAweGRlYWQsIDB4YmVlZi4s IHYxNl9pbnQ4ID0gLjB4ZGUsIDB4YWQsIDB4YmUsIDB4ZWYsIDB4ZGUsIDB4YWQsIDB4YmUsIDB4 ZWYsIDB4ZGUsIDB4YWQsIDB4YmUsIDB4ZWYsIDB4ZGUsIDB4YWQsIDB4YmUsIDB4ZWYuLiIKKyAK Ky1zZXQgdmVjdG9yX3JlZ2lzdGVyMiAidWludDEyOCA9IDB4ZGVhZGJlZWZkZWFkYmVlZmRlYWRi ZWVmZGVhZGJlZWYsIHYyX2RvdWJsZSA9IC4weDEsIDB4MS4sIHY0X2Zsb2F0ID0gLjB4MCwgMHgw LCAweDAsIDB4MC4sIHY0X2ludDMyID0gLjB4ZGVhZGJlZWYsIDB4ZGVhZGJlZWYsIDB4ZGVhZGJl ZWYsIDB4ZGVhZGJlZWYuLCB2OF9pbnQxNiA9IC4weGRlYWQsIDB4YmVlZiwgMHhkZWFkLCAweGJl ZWYsIDB4ZGVhZCwgMHhiZWVmLCAweGRlYWQsIDB4YmVlZi4sIHYxNl9pbnQ4ID0gLjB4ZGUsIDB4 YWQsIDB4YmUsIDB4ZWYsIDB4ZGUsIDB4YWQsIDB4YmUsIDB4ZWYsIDB4ZGUsIDB4YWQsIDB4YmUs IDB4ZWYsIDB4ZGUsIDB4YWQsIDB4YmUsIDB4ZWYuLiIKKysgICAgc2V0IHZlY3Rvcl9yZWdpc3Rl cjJfdnIgInVpbnQxMjggPSAweGRlYWRiZWVmZGVhZGJlZWZkZWFkYmVlZmRlYWRiZWVmLCB2NF9m bG9hdCA9IC4weDAsIDB4MCwgMHgwLCAweDAuLCB2NF9pbnQzMiA9IC4weGRlYWRiZWVmLCAweGRl YWRiZWVmLCAweGRlYWRiZWVmLCAweGRlYWRiZWVmLiwgdjhfaW50MTYgPSAuMHhkZWFkLCAweGJl ZWYsIDB4ZGVhZCwgMHhiZWVmLCAweGRlYWQsIDB4YmVlZiwgMHhkZWFkLCAweGJlZWYuLCB2MTZf aW50OCA9IC4weGRlLCAweGFkLCAweGJlLCAweGVmLCAweGRlLCAweGFkLCAweGJlLCAweGVmLCAw eGRlLCAweGFkLCAweGJlLCAweGVmLCAweGRlLCAweGFkLCAweGJlLCAweGVmLi4iCisgCistc2V0 IHZlY3Rvcl9yZWdpc3RlcjJfdnIgInVpbnQxMjggPSAweGRlYWRiZWVmZGVhZGJlZWZkZWFkYmVl ZmRlYWRiZWVmLCB2NF9mbG9hdCA9IC4weDAsIDB4MCwgMHgwLCAweDAuLCB2NF9pbnQzMiA9IC4w eGRlYWRiZWVmLCAweGRlYWRiZWVmLCAweGRlYWRiZWVmLCAweGRlYWRiZWVmLiwgdjhfaW50MTYg PSAuMHhkZWFkLCAweGJlZWYsIDB4ZGVhZCwgMHhiZWVmLCAweGRlYWQsIDB4YmVlZiwgMHhkZWFk LCAweGJlZWYuLCB2MTZfaW50OCA9IC4weGRlLCAweGFkLCAweGJlLCAweGVmLCAweGRlLCAweGFk LCAweGJlLCAweGVmLCAweGRlLCAweGFkLCAweGJlLCAweGVmLCAweGRlLCAweGFkLCAweGJlLCAw eGVmLi4iCisrICAgIHNldCB2ZWN0b3JfcmVnaXN0ZXIzICIudWludDEyOCA9IDB4MDAwMDAwMDEw MDAwMDAwMTAwMDAwMDAxMDAwMDAwMDEsIHYyX2RvdWJsZSA9IC4weDAsIDB4MC4sIHY0X2Zsb2F0 ID0gLjB4MCwgMHgwLCAweDAsIDB4MC4sIHY0X2ludDMyID0gLjB4MSwgMHgxLCAweDEsIDB4MS4s IHY4X2ludDE2ID0gLjB4MCwgMHgxLCAweDAsIDB4MSwgMHgwLCAweDEsIDB4MCwgMHgxLiwgdjE2 X2ludDggPSAuMHgwLCAweDAsIDB4MCwgMHgxLCAweDAsIDB4MCwgMHgwLCAweDEsIDB4MCwgMHgw LCAweDAsIDB4MSwgMHgwLCAweDAsIDB4MCwgMHgxLi4iCisrCisrICAgIHNldCB2ZWN0b3JfcmVn aXN0ZXIzX3ZyICIudWludDEyOCA9IDB4MDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDEs IHY0X2Zsb2F0ID0gLjB4MCwgMHgwLCAweDAsIDB4MC4sIHY0X2ludDMyID0gLjB4MSwgMHgxLCAw eDEsIDB4MS4sIHY4X2ludDE2ID0gLjB4MCwgMHgxLCAweDAsIDB4MSwgMHgwLCAweDEsIDB4MCwg MHgxLiwgdjE2X2ludDggPSAuMHgwLCAweDAsIDB4MCwgMHgxLCAweDAsIDB4MCwgMHgwLCAweDEs IDB4MCwgMHgwLCAweDAsIDB4MSwgMHgwLCAweDAsIDB4MCwgMHgxLi4iCisrfSBlbHNlIHsKKysg ICAgc2V0IHZlY3Rvcl9yZWdpc3RlcjEgIi51aW50MTI4ID0gMHgzZmY0Y2NjY2NjY2NjY2NjMDAw MDAwMDAwMDAwMDAwMCwgdjJfZG91YmxlID0gLjB4MCwgMHgxLiwgdjRfZmxvYXQgPSAuMHgwLCAw eDAsIDB4Zjk5OTk5YTAsIDB4MS4sIHY0X2ludDMyID0gLjB4MCwgMHgwLCAweGNjY2NjY2NjLCAw eDNmZjRjY2NjLiwgdjhfaW50MTYgPSAuMHgwLCAweDAsIDB4MCwgMHgwLCAweGNjY2MsIDB4Y2Nj YywgMHhjY2NjLCAweDNmZjQuLCB2MTZfaW50OCA9IC4weDAsIDB4MCwgMHgwLCAweDAsIDB4MCwg MHgwLCAweDAsIDB4MCwgMHhjYywgMHhjYywgMHhjYywgMHhjYywgMHhjYywgMHhjYywgMHhmNCwg MHgzZi4uIgorIAorLXNldCB2ZWN0b3JfcmVnaXN0ZXIzICIudWludDEyOCA9IDB4MDAwMDAwMDEw MDAwMDAwMTAwMDAwMDAxMDAwMDAwMDEsIHYyX2RvdWJsZSA9IC4weDAsIDB4MC4sIHY0X2Zsb2F0 ID0gLjB4MCwgMHgwLCAweDAsIDB4MC4sIHY0X2ludDMyID0gLjB4MSwgMHgxLCAweDEsIDB4MS4s IHY4X2ludDE2ID0gLjB4MCwgMHgxLCAweDAsIDB4MSwgMHgwLCAweDEsIDB4MCwgMHgxLiwgdjE2 X2ludDggPSAuMHgwLCAweDAsIDB4MCwgMHgxLCAweDAsIDB4MCwgMHgwLCAweDEsIDB4MCwgMHgw LCAweDAsIDB4MSwgMHgwLCAweDAsIDB4MCwgMHgxLi4iCisrICAgIHNldCB2ZWN0b3JfcmVnaXN0 ZXIxX3ZyICIudWludDEyOCA9IDB4M2ZmNGNjY2NjY2NjY2NjYzAwMDAwMDAxMDAwMDAwMDEsIHY0 X2Zsb2F0ID0gLjB4MCwgMHgwLCAweGY5OTk5OWEwLCAweDEuLCB2NF9pbnQzMiA9IC4weDEsIDB4 MSwgMHhjY2NjY2NjYywgMHgzZmY0Y2NjYy4sIHY4X2ludDE2ID0gLjB4MSwgMHgwLCAweDEsIDB4 MCwgMHhjY2NjLCAweGNjY2MsIDB4Y2NjYywgMHgzZmY0LiwgdjE2X2ludDggPSAuMHgxLCAweDAs IDB4MCwgMHgwLCAweDEsIDB4MCwgMHgwLCAweDAsIDB4Y2MsIDB4Y2MsIDB4Y2MsIDB4Y2MsIDB4 Y2MsIDB4Y2MsIDB4ZjQsIDB4M2YuLiIKKyAKKy1zZXQgdmVjdG9yX3JlZ2lzdGVyM192ciAiLnVp bnQxMjggPSAweDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxLCB2NF9mbG9hdCA9IC4w eDAsIDB4MCwgMHgwLCAweDAuLCB2NF9pbnQzMiA9IC4weDEsIDB4MSwgMHgxLCAweDEuLCB2OF9p bnQxNiA9IC4weDAsIDB4MSwgMHgwLCAweDEsIDB4MCwgMHgxLCAweDAsIDB4MS4sIHYxNl9pbnQ4 ID0gLjB4MCwgMHgwLCAweDAsIDB4MSwgMHgwLCAweDAsIDB4MCwgMHgxLCAweDAsIDB4MCwgMHgw LCAweDEsIDB4MCwgMHgwLCAweDAsIDB4MS4uIgorKyAgICBzZXQgdmVjdG9yX3JlZ2lzdGVyMiAi dWludDEyOCA9IDB4ZGVhZGJlZWZkZWFkYmVlZmRlYWRiZWVmZGVhZGJlZWYsIHYyX2RvdWJsZSA9 IC4weDEsIDB4MS4sIHY0X2Zsb2F0ID0gLjB4MCwgMHgwLCAweDAsIDB4MC4sIHY0X2ludDMyID0g LjB4ZGVhZGJlZWYsIDB4ZGVhZGJlZWYsIDB4ZGVhZGJlZWYsIDB4ZGVhZGJlZWYuLCB2OF9pbnQx NiA9IC4weGJlZWYsIDB4ZGVhZCwgMHhiZWVmLCAweGRlYWQsIDB4YmVlZiwgMHhkZWFkLCAweGJl ZWYsIDB4ZGVhZC4sIHYxNl9pbnQ4ID0gLjB4ZWYsIDB4YmUsIDB4YWQsIDB4ZGUsIDB4ZWYsIDB4 YmUsIDB4YWQsIDB4ZGUsIDB4ZWYsIDB4YmUsIDB4YWQsIDB4ZGUsIDB4ZWYsIDB4YmUsIDB4YWQs IDB4ZGUuLiIKKysKKysgICAgc2V0IHZlY3Rvcl9yZWdpc3RlcjJfdnIgInVpbnQxMjggPSAweGRl YWRiZWVmZGVhZGJlZWZkZWFkYmVlZmRlYWRiZWVmLCB2NF9mbG9hdCA9IC4weDAsIDB4MCwgMHgw LCAweDAuLCB2NF9pbnQzMiA9IC4weGRlYWRiZWVmLCAweGRlYWRiZWVmLCAweGRlYWRiZWVmLCAw eGRlYWRiZWVmLiwgdjhfaW50MTYgPSAuMHhiZWVmLCAweGRlYWQsIDB4YmVlZiwgMHhkZWFkLCAw eGJlZWYsIDB4ZGVhZCwgMHhiZWVmLCAweGRlYWQuLCB2MTZfaW50OCA9IC4weGVmLCAweGJlLCAw eGFkLCAweGRlLCAweGVmLCAweGJlLCAweGFkLCAweGRlLCAweGVmLCAweGJlLCAweGFkLCAweGRl LCAweGVmLCAweGJlLCAweGFkLCAweGRlLi4iCisrCisrICAgIHNldCB2ZWN0b3JfcmVnaXN0ZXIz ICIudWludDEyOCA9IDB4MDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDEsIHYyX2RvdWJs ZSA9IC4weDAsIDB4MC4sIHY0X2Zsb2F0ID0gLjB4MCwgMHgwLCAweDAsIDB4MC4sIHY0X2ludDMy ID0gLjB4MSwgMHgxLCAweDEsIDB4MS4sIHY4X2ludDE2ID0gLjB4MSwgMHgwLCAweDEsIDB4MCwg MHgxLCAweDAsIDB4MSwgMHgwLiwgdjE2X2ludDggPSAuMHgxLCAweDAsIDB4MCwgMHgwLCAweDEs IDB4MCwgMHgwLCAweDAsIDB4MSwgMHgwLCAweDAsIDB4MCwgMHgxLCAweDAsIDB4MCwgMHgwLi4i CisrCisrICAgIHNldCB2ZWN0b3JfcmVnaXN0ZXIzX3ZyICIudWludDEyOCA9IDB4MDAwMDAwMDEw MDAwMDAwMTAwMDAwMDAxMDAwMDAwMDEsIHY0X2Zsb2F0ID0gLjB4MCwgMHgwLCAweDAsIDB4MC4s IHY0X2ludDMyID0gLjB4MSwgMHgxLCAweDEsIDB4MS4sIHY4X2ludDE2ID0gLjB4MSwgMHgwLCAw eDEsIDB4MCwgMHgxLCAweDAsIDB4MSwgMHgwLiwgdjE2X2ludDggPSAuMHgxLCAweDAsIDB4MCwg MHgwLCAweDEsIDB4MCwgMHgwLCAweDAsIDB4MSwgMHgwLCAweDAsIDB4MCwgMHgxLCAweDAsIDB4 MCwgMHgwLi4iCisrfQorIAorIHNldCBmbG9hdF9yZWdpc3RlciAiLnJhdyAweGRlYWRiZWVmZGVh ZGJlZWYuIgorIAoKZGlmZiAtLWdpdCBhL2dkYi11cHN0cmVhbS1wcGM2NGxlMDhvZjE1LnBhdGNo IGIvZ2RiLXVwc3RyZWFtLXBwYzY0bGUwOG9mMTUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uMjkyZmYzYgotLS0gL2Rldi9udWxsCisrKyBiL2dkYi11cHN0cmVhbS1w cGM2NGxlMDhvZjE1LnBhdGNoCkBAIC0wLDAgKzEsNTcgQEAKK2NvbW1pdCA1Yjc1N2U1ZGRiZDlh ZDI1MmQ5YzUxMTAzZjFhYTUyYjQxYzJlOTQ3CitBdXRob3I6IFVscmljaCBXZWlnYW5kIDx1bHJp Y2gud2VpZ2FuZEBkZS5pYm0uY29tPgorRGF0ZTogICBUdWUgRmViIDQgMTg6MzM6MDQgMjAxNCAr MDEwMAorCisgICAgUG93ZXJQQzY0IGxpdHRsZS1lbmRpYW4gZml4ZXM6IDMyLWJpdCBERlAgcGFy YW1ldGVycworICAgIAorICAgIFBhc3NpbmcgYSAzMi1iaXQgREZQIGluIHJlZ2lzdGVyIG5lZWRz IHRvIHVzZSB0aGUgbGVhc3Qtc2lnbmlmaWNhbnQgcGFydAorICAgIG9mIHRoZSByZWdpc3Rlci4g IExpa2Ugd2l0aCBhIHByZXZpb3VzIHBhdGNoIHRoYXQgYWRkcmVzc2VkIHRoZSBzYW1lCisgICAg aXNzdWUgZm9yIHNtYWxsIHN0cnVjdHMsIHRoaXMgcGF0Y2ggbWFrZXMgc3VyZSB0aGUgYXBwcm9w cmlhdGUgb2Zmc2V0CisgICAgaXMgdXNlZCBvbiBsaXR0bGUtZW5kaWFuIHN5c3RlbXMuCisgICAg CisgICAgZ2RiL0NoYW5nZUxvZzoKKyAgICAKKyAgICAJKiBwcGMtc3lzdi10ZGVwLmMgKHBwYzY0 X3N5c3ZfYWJpX3B1c2hfZnJlZyk6IFVzZSBjb3JyZWN0CisgICAgCW9mZnNldCBvbiBsaXR0bGUt ZW5kaWFuIHdoZW4gcGFzc2luZyBfRGVjaW1hbDMyLgorICAgIAkocHBjNjRfc3lzdl9hYmlfcmV0 dXJuX3ZhbHVlX2Jhc2UpOiBMaWtld2lzZSBmb3IgcmV0dXJuIHZhbHVlcy4KKworIyMjIGEvZ2Ri L0NoYW5nZUxvZworIyMjIGIvZ2RiL0NoYW5nZUxvZworIyMgLTEsNSArMSwxMSBAQAorIDIwMTQt MDItMDQgIFVscmljaCBXZWlnYW5kwqAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CisgCisrCSogcHBj LXN5c3YtdGRlcC5jIChwcGM2NF9zeXN2X2FiaV9wdXNoX2ZyZWcpOiBVc2UgY29ycmVjdAorKwlv ZmZzZXQgb24gbGl0dGxlLWVuZGlhbiB3aGVuIHBhc3NpbmcgX0RlY2ltYWwzMi4KKysJKHBwYzY0 X3N5c3ZfYWJpX3JldHVybl92YWx1ZV9iYXNlKTogTGlrZXdpc2UgZm9yIHJldHVybiB2YWx1ZXMu CisrCisrMjAxNC0wMi0wNCAgVWxyaWNoIFdlaWdhbmTCoCA8dXdlaWdhbmRAZGUuaWJtLmNvbT4K KysKKyAJKiByczYwMDAtdGRlcC5jIChlZnByX3BzZXVkb19yZWdpc3Rlcl9yZWFkKTogVXNlIGNv cnJlY3Qgb2Zmc2V0CisgCW9mIHRoZSBvdmVybGFwcGVkIEZQIHJlZ2lzdGVyIHdpdGhpbiB0aGUg VlNYIHJlZ2lzdGVyIG9uIGxpdHRsZS0KKyAJZW5kaWFuIHBsYXRmb3Jtcy4KKy0tLSBhL2dkYi9w cGMtc3lzdi10ZGVwLmMKKysrKyBiL2dkYi9wcGMtc3lzdi10ZGVwLmMKK0BAIC0xMjMyLDcgKzEy MzIsMTAgQEAgcHBjNjRfc3lzdl9hYmlfcHVzaF9mcmVnIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJj aCwKKyAgICAgICBpZiAoYXJncG9zLT5yZWdjYWNoZSAmJiBhcmdwb3MtPmZyZWcgPD0gMTMpCisg CXsKKyAJICBpbnQgcmVnbnVtID0gdGRlcC0+cHBjX2ZwMF9yZWdudW0gKyBhcmdwb3MtPmZyZWc7 CistCSAgaW50IG9mZnNldCA9IDggLSBUWVBFX0xFTkdUSCAodHlwZSk7CisrCSAgaW50IG9mZnNl dCA9IDA7CisrCisrCSAgaWYgKGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJjaCkgPT0gQkZEX0VO RElBTl9CSUcpCisrCSAgICBvZmZzZXQgPSA4IC0gVFlQRV9MRU5HVEggKHR5cGUpOworIAorIAkg IHJlZ2NhY2hlX2Nvb2tlZF93cml0ZV9wYXJ0IChhcmdwb3MtPnJlZ2NhY2hlLCByZWdudW0sCisg CQkJCSAgICAgIG9mZnNldCwgVFlQRV9MRU5HVEggKHR5cGUpLCB2YWwpOworQEAgLTE2NDEsNyAr MTY0NCwxMCBAQCBwcGM2NF9zeXN2X2FiaV9yZXR1cm5fdmFsdWVfYmFzZSAoc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2gsIHN0cnVjdCB0eXBlICp2YWx0eXBlLAorICAgICAgICYmIFRZUEVfQ09ERSAo dmFsdHlwZSkgPT0gVFlQRV9DT0RFX0RFQ0ZMT0FUKQorICAgICB7CisgICAgICAgaW50IHJlZ251 bSA9IHRkZXAtPnBwY19mcDBfcmVnbnVtICsgMSArIGluZGV4OworLSAgICAgIGludCBvZmZzZXQg PSA4IC0gVFlQRV9MRU5HVEggKHZhbHR5cGUpOworKyAgICAgIGludCBvZmZzZXQgPSAwOworKwor KyAgICAgIGlmIChnZGJhcmNoX2J5dGVfb3JkZXIgKGdkYmFyY2gpID09IEJGRF9FTkRJQU5fQklH KQorKwlvZmZzZXQgPSA4IC0gVFlQRV9MRU5HVEggKHZhbHR5cGUpOworIAorICAgICAgIGlmICh3 cml0ZWJ1ZiAhPSBOVUxMKQorIAlyZWdjYWNoZV9jb29rZWRfd3JpdGVfcGFydCAocmVnY2FjaGUs IHJlZ251bSwKCmRpZmYgLS1naXQgYS9nZGItdXBzdHJlYW0tcHBjNjRsZTA5b2YxNS5wYXRjaCBi L2dkYi11cHN0cmVhbS1wcGM2NGxlMDlvZjE1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLjk0ZjdlZGQKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItdXBzdHJlYW0tcHBj NjRsZTA5b2YxNS5wYXRjaApAQCAtMCwwICsxLDE0MCBAQAorY29tbWl0IDBmZjNlMDFmZGM2N2Ez ODQyZWU1NDIyNGNmMTk3ZTlhNTVmMGE3NTAKK0F1dGhvcjogVWxyaWNoIFdlaWdhbmQgPHVscmlj aC53ZWlnYW5kQGRlLmlibS5jb20+CitEYXRlOiAgIFR1ZSBGZWIgNCAxODozNDoxOSAyMDE0ICsw MTAwCisKKyAgICBQb3dlclBDNjQgbGl0dGxlLWVuZGlhbiBmaXhlczogMTI4LWJpdCBERlAgcGFy YW1ldGVycyAvIHJlZ2lzdGVycworICAgIAorICAgIFRoZSBwb3dlcnBjNjRsZS1saW51eCBBQkkg c3BlY2lmaWVzIHRoYXQgd2hlbiBhIDEyOC1iaXQgREZQIHZhbHVlIGlzCisgICAgcGFzc2VkIGlu IGEgcGFpciBvZiBmbG9hdGluZy1wb2ludCByZWdpc3RlcnMsIHRoZSBmaXJzdCByZWdpc3RlciBo b2xkcworICAgIHRoZSBtb3N0LXNpZ25pZmljYW50IHBhcnQgb2YgdGhlIHZhbHVlLiAgVGhpcyBp cyBhcyBvcHBvc2VkIHRvIHRoZQorICAgIHVzdWFsIHJ1bGUgb24gbGl0dGxlLWVuZGlhbiBzeXN0 ZW1zLCB3aGVyZSB0aGUgZmlyc3QgcmVnaXN0ZXIgd291bGQKKyAgICBob2xkIHRoZSBsZWFzdC1z aWduaWZpY2FudCBwYXJ0LgorICAgIAorICAgIFRoaXMgYWZmZWN0cyB0d28gcGxhY2VzIGluIEdE QiwgdGhlIHJlYWQvd3JpdGUgcm91dGluZXMgZm9yIHRoZQorICAgIDEyOC1iaXQgREZQIHBzZXVk by1yZWdpc3RlcnMsIGFuZCB0aGUgZnVuY3Rpb24gY2FsbCAvIHJldHVybgorICAgIHNlcXVlbmNl LiAgRm9yIHRoZSBmb3JtZXIsIGN1cnJlbnQgY29kZSBhbHJlYWR5IGRpc3Rpbmd1aXNoZXMKKyAg ICBiZXR3ZWVuIGJpZy0gYW5kIGxpdHRsZS1lbmRpYW4gdGFyZ2V0cywgYnV0IGdldHMgdGhlIGxh dHRlcgorICAgIHdyb25nLiAgVGhpcyBpcyBwcmVzdW1hYmx5IGJlY2F1c2UgKkdDQyogYWxzbyBn b3QgaXQgd3JvbmcsCisgICAgYW5kIEdEQiBtYXRjaGVzIHRoZSBvbGQgR0NDIGJlaGF2aW9yLiAg QnV0IEdDQyBpcyBub3cgZml4ZWQ6CisgICAgaHR0cDovL2djYy5nbnUub3JnL21sL2djYy1wYXRj aGVzLzIwMTMtMTEvbXNnMDIxNDUuaHRtbAorICAgIHNvIEdEQiBuZWVkcyB0byBiZSBmaXhlZCB0 b28uICAoT2xkIGNvZGUgc2hvdWxkbid0IHJlYWxseSBiZQorICAgIGFuIGlzc3VlIHNpbmNlIHRo ZXJlIGlzIG5vIGNvZGUgIm91dCB0aGVyZSIgc28gZmFyIHRoYXQgdXNlcworICAgIGRmcDEyOCBv biBsaXR0bGUtZW5kaWFuIC4uLikKKyAgICAKKyAgICBnZGIvQ2hhbmdlTG9nOgorICAgIAorICAg IAkqIHBwYy1zeXN2LXRkZXAuYyAocHBjNjRfc3lzdl9hYmlfcHVzaF9mcmVnKTogVXNlIGNvcnJl Y3Qgb3JkZXIKKyAgICAJd2l0aGluIGEgcmVnaXN0ZXIgcGFpciBob2xkaW5nIGEgREZQIDEyOC1i aXQgdmFsdWUgb24gbGl0dGxlLWVuZGlhbi4KKyAgICAJKHBwYzY0X3N5c3ZfYWJpX3JldHVybl92 YWx1ZV9iYXNlKTogTGlrZXdpc2UuCisgICAgCSogcnM2MDAwLXRkZXAuYyAoZGZwX3BzZXVkb19y ZWdpc3Rlcl9yZWFkKTogTGlrZXdpc2UuCisgICAgCShkZnBfcHNldWRvX3JlZ2lzdGVyX3dyaXRl KTogTGlrZXdpc2UuCisgICAgCisgICAgZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6CisgICAgCisg ICAgCSogZ2RiLmFyY2gvcG93ZXJwYy1kMTI4LXJlZ3MuZXhwOiBFbmFibGUgb24gcG93ZXJwYzY0 Ki0qLgorCisjIyMgYS9nZGIvQ2hhbmdlTG9nCisjIyMgYi9nZGIvQ2hhbmdlTG9nCisjIyAtMSw1 ICsxLDEzIEBACisgMjAxNC0wMi0wNCAgVWxyaWNoIFdlaWdhbmTCoCA8dXdlaWdhbmRAZGUuaWJt LmNvbT4KKyAKKysJKiBwcGMtc3lzdi10ZGVwLmMgKHBwYzY0X3N5c3ZfYWJpX3B1c2hfZnJlZyk6 IFVzZSBjb3JyZWN0IG9yZGVyCisrCXdpdGhpbiBhIHJlZ2lzdGVyIHBhaXIgaG9sZGluZyBhIERG UCAxMjgtYml0IHZhbHVlIG9uIGxpdHRsZS1lbmRpYW4uCisrCShwcGM2NF9zeXN2X2FiaV9yZXR1 cm5fdmFsdWVfYmFzZSk6IExpa2V3aXNlLgorKwkqIHJzNjAwMC10ZGVwLmMgKGRmcF9wc2V1ZG9f cmVnaXN0ZXJfcmVhZCk6IExpa2V3aXNlLgorKwkoZGZwX3BzZXVkb19yZWdpc3Rlcl93cml0ZSk6 IExpa2V3aXNlLgorKworKzIwMTQtMDItMDQgIFVscmljaCBXZWlnYW5kwqAgPHV3ZWlnYW5kQGRl LmlibS5jb20+CisrCisgCSogcHBjLXN5c3YtdGRlcC5jIChwcGM2NF9zeXN2X2FiaV9wdXNoX2Zy ZWcpOiBVc2UgY29ycmVjdAorIAlvZmZzZXQgb24gbGl0dGxlLWVuZGlhbiB3aGVuIHBhc3Npbmcg X0RlY2ltYWwzMi4KKyAJKHBwYzY0X3N5c3ZfYWJpX3JldHVybl92YWx1ZV9iYXNlKTogTGlrZXdp c2UgZm9yIHJldHVybiB2YWx1ZXMuCistLS0gYS9nZGIvcHBjLXN5c3YtdGRlcC5jCisrKysgYi9n ZGIvcHBjLXN5c3YtdGRlcC5jCitAQCAtMTI3MCw5ICsxMjcwLDExIEBAIHBwYzY0X3N5c3ZfYWJp X3B1c2hfZnJlZyAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisgICAgICAgaWYgKGFyZ3Bvcy0+ cmVnY2FjaGUgJiYgYXJncG9zLT5mcmVnIDw9IDEyKQorIAl7CisgCSAgaW50IHJlZ251bSA9IHRk ZXAtPnBwY19mcDBfcmVnbnVtICsgYXJncG9zLT5mcmVnOworKwkgIGludCBsb3BhcnQgPSBnZGJh cmNoX2J5dGVfb3JkZXIgKGdkYmFyY2gpID09IEJGRF9FTkRJQU5fQklHID8gOCA6IDA7CisrCSAg aW50IGhpcGFydCA9IGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJjaCkgPT0gQkZEX0VORElBTl9C SUcgPyAwIDogODsKKyAKKy0JICByZWdjYWNoZV9jb29rZWRfd3JpdGUgKGFyZ3Bvcy0+cmVnY2Fj aGUsIHJlZ251bSwgdmFsKTsKKy0JICByZWdjYWNoZV9jb29rZWRfd3JpdGUgKGFyZ3Bvcy0+cmVn Y2FjaGUsIHJlZ251bSArIDEsIHZhbCArIDgpOworKwkgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAo YXJncG9zLT5yZWdjYWNoZSwgcmVnbnVtLCB2YWwgKyBoaXBhcnQpOworKwkgIHJlZ2NhY2hlX2Nv b2tlZF93cml0ZSAoYXJncG9zLT5yZWdjYWNoZSwgcmVnbnVtICsgMSwgdmFsICsgbG9wYXJ0KTsK KyAJfQorIAorICAgICAgIGFyZ3Bvcy0+ZnJlZyArPSAyOworQEAgLTE2ODUsMTYgKzE2ODcsMTgg QEAgcHBjNjRfc3lzdl9hYmlfcmV0dXJuX3ZhbHVlX2Jhc2UgKHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoLCBzdHJ1Y3QgdHlwZSAqdmFsdHlwZSwKKyAgICAgICAmJiBUWVBFX0NPREUgKHZhbHR5cGUp ID09IFRZUEVfQ09ERV9ERUNGTE9BVCkKKyAgICAgeworICAgICAgIGludCByZWdudW0gPSB0ZGVw LT5wcGNfZnAwX3JlZ251bSArIDIgKyAyICogaW5kZXg7CisrICAgICAgaW50IGxvcGFydCA9IGdk YmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJjaCkgPT0gQkZEX0VORElBTl9CSUcgPyA4IDogMDsKKysg ICAgICBpbnQgaGlwYXJ0ID0gZ2RiYXJjaF9ieXRlX29yZGVyIChnZGJhcmNoKSA9PSBCRkRfRU5E SUFOX0JJRyA/IDAgOiA4OworIAorICAgICAgIGlmICh3cml0ZWJ1ZiAhPSBOVUxMKQorIAl7Cist CSAgcmVnY2FjaGVfY29va2VkX3dyaXRlIChyZWdjYWNoZSwgcmVnbnVtLCB3cml0ZWJ1Zik7Cist CSAgcmVnY2FjaGVfY29va2VkX3dyaXRlIChyZWdjYWNoZSwgcmVnbnVtICsgMSwgd3JpdGVidWYg KyA4KTsKKysJICByZWdjYWNoZV9jb29rZWRfd3JpdGUgKHJlZ2NhY2hlLCByZWdudW0sIHdyaXRl YnVmICsgaGlwYXJ0KTsKKysJICByZWdjYWNoZV9jb29rZWRfd3JpdGUgKHJlZ2NhY2hlLCByZWdu dW0gKyAxLCB3cml0ZWJ1ZiArIGxvcGFydCk7CisgCX0KKyAgICAgICBpZiAocmVhZGJ1ZiAhPSBO VUxMKQorIAl7CistCSAgcmVnY2FjaGVfY29va2VkX3JlYWQgKHJlZ2NhY2hlLCByZWdudW0sIHJl YWRidWYpOworLQkgIHJlZ2NhY2hlX2Nvb2tlZF9yZWFkIChyZWdjYWNoZSwgcmVnbnVtICsgMSwg cmVhZGJ1ZiArIDgpOworKwkgIHJlZ2NhY2hlX2Nvb2tlZF9yZWFkIChyZWdjYWNoZSwgcmVnbnVt LCByZWFkYnVmICsgaGlwYXJ0KTsKKysJICByZWdjYWNoZV9jb29rZWRfcmVhZCAocmVnY2FjaGUs IHJlZ251bSArIDEsIHJlYWRidWYgKyBsb3BhcnQpOworIAl9CisgICAgICAgcmV0dXJuIDE7Cisg ICAgIH0KKy0tLSBhL2dkYi9yczYwMDAtdGRlcC5jCisrKysgYi9nZGIvcnM2MDAwLXRkZXAuYwor QEAgLTI2NzIsMTAgKzI2NzIsMTAgQEAgZGZwX3BzZXVkb19yZWdpc3Rlcl9yZWFkIChzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKKyAgIGVsc2UKKyAg ICAgeworICAgICAgIHN0YXR1cyA9IHJlZ2NhY2hlX3Jhd19yZWFkIChyZWdjYWNoZSwgdGRlcC0+ cHBjX2ZwMF9yZWdudW0gKworLQkJCQkgIDIgKiByZWdfaW5kZXggKyAxLCBidWZmZXIgKyA4KTsK KysJCQkJICAyICogcmVnX2luZGV4ICsgMSwgYnVmZmVyKTsKKyAgICAgICBpZiAoc3RhdHVzID09 IFJFR19WQUxJRCkKKyAJc3RhdHVzID0gcmVnY2FjaGVfcmF3X3JlYWQgKHJlZ2NhY2hlLCB0ZGVw LT5wcGNfZnAwX3JlZ251bSArCistCQkJCSAgICAyICogcmVnX2luZGV4LCBidWZmZXIpOworKwkJ CQkgICAgMiAqIHJlZ19pbmRleCwgYnVmZmVyICsgOCk7CisgICAgIH0KKyAKKyAgIHJldHVybiBz dGF0dXM7CitAQCAtMjcwMSw5ICsyNzAxLDkgQEAgZGZwX3BzZXVkb19yZWdpc3Rlcl93cml0ZSAo c3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCisgICBl bHNlCisgICAgIHsKKyAgICAgICByZWdjYWNoZV9yYXdfd3JpdGUgKHJlZ2NhY2hlLCB0ZGVwLT5w cGNfZnAwX3JlZ251bSArCistCQkJICAyICogcmVnX2luZGV4ICsgMSwgYnVmZmVyICsgOCk7Cisr CQkJICAyICogcmVnX2luZGV4ICsgMSwgYnVmZmVyKTsKKyAgICAgICByZWdjYWNoZV9yYXdfd3Jp dGUgKHJlZ2NhY2hlLCB0ZGVwLT5wcGNfZnAwX3JlZ251bSArCistCQkJICAyICogcmVnX2luZGV4 LCBidWZmZXIpOworKwkJCSAgMiAqIHJlZ19pbmRleCwgYnVmZmVyICsgOCk7CisgICAgIH0KKyB9 CisgCisjIyMgYS9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZworIyMjIGIvZ2RiL3Rlc3RzdWl0ZS9D aGFuZ2VMb2cKKyMjIC0xLDUgKzEsOSBAQAorIDIwMTQtMDItMDQgIFVscmljaCBXZWlnYW5kICA8 dXdlaWdhbmRAZGUuaWJtLmNvbT4KKyAKKysJKiBnZGIuYXJjaC9wb3dlcnBjLWQxMjgtcmVncy5l eHA6IEVuYWJsZSBvbiBwb3dlcnBjNjQqLSouCisrCisrMjAxNC0wMi0wNCAgVWxyaWNoIFdlaWdh bmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgorKworIAkqIGdkYi5hcmNoL3ZzeC1yZWdzLmV4cDog Q2hlY2sgdGFyZ2V0IGVuZGlhbm5lc3MuICBQcm92aWRlIHZhcmlhbnRzCisgCW9mIHRoZSB0ZXN0 IHBhdHRlcm5zIGZvciB1c2Ugb24gbGl0dGxlLWVuZGlhbiBzeXN0ZW1zLgorIAorLS0tIGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYXJjaC9wb3dlcnBjLWQxMjgtcmVncy5leHAKKysrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmFyY2gvcG93ZXJwYy1kMTI4LXJlZ3MuZXhwCitAQCAtMjAsNyArMjAsNyBAQAor IAorICMgVGVzdGNhc2UgZm9yIHBwYyBkZWNpbWFsMTI4IHBzZXVkby1yZWdpc3RlcnMuCisgCist aWYgIVtpc3RhcmdldCAicG93ZXJwYzY0LSoiXSB0aGVuIHsKKytpZiAhW2lzdGFyZ2V0ICJwb3dl cnBjNjQqLSoiXSB0aGVuIHsKKyAgICAgdmVyYm9zZSAiU2tpcHBpbmcgcG93ZXJwYyBEZWNpbWFs MTI4IHBzZXVkby1yZWdpc3RlcnMgdGVzdGNhc2UuIgorICAgICByZXR1cm4KKyB9CgpkaWZmIC0t Z2l0IGEvZ2RiLXVwc3RyZWFtLXBwYzY0bGUxMG9mMTUucGF0Y2ggYi9nZGItdXBzdHJlYW0tcHBj NjRsZTEwb2YxNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTMw N2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiLXVwc3RyZWFtLXBwYzY0bGUxMG9mMTUucGF0Y2gK QEAgLTAsMCArMSwxNTkgQEAKK2NvbW1pdCBjZDQ1M2NkMDcyMDA0ZDI2ZWRlMzU1Yjg1MGIzODMx YWNmZmFlZGRkCitBdXRob3I6IFVscmljaCBXZWlnYW5kIDx1bHJpY2gud2VpZ2FuZEBkZS5pYm0u Y29tPgorRGF0ZTogICBUdWUgRmViIDQgMTg6Mzg6NTYgMjAxNCArMDEwMAorCisgICAgUG93ZXJQ QzY0IEVMRnYyIEFCSTogYmFzZSBzdXBwb3J0CisgICAgCisgICAgVGhpcyBpcyB0aGUgZmlyc3Qg cGF0Y2ggb2YgYSBzZXJpZXMgdG8gaW1wbGVtZW50IHN1cHBvcnQgZm9yIHRoZQorICAgIFBvd2Vy UEMgRUxGdjIgQUJJLiAgV2hpbGUgcG93ZXJwYzY0bGUtbGludXggd2lsbCB1c2UgRUxGdjIsIGFu ZAorICAgIHRoZSBleGlzdGluZyBwb3dlcnBjNjQtbGludXggY29kZSB3aWxsIGNvbnRpbnVlIHRv IHVzZSBFTEZ2MSwKKyAgICBpbiB0aGVvcnkgRUxGdjIgaXMgYWxzbyBkZWZpbmVkIGZvciBiaWct ZW5kaWFuIHN5c3RlbXMgKGFuZAorICAgIEVMRnYxIHdhcyBhbHNvIGRlZmluZWQgZm9yIGxpdHRs ZS1lbmRpYW4gc3lzdGVtcykuCisgICAgCisgICAgVGhlcmVmb3JlIHRoaXMgcGF0Y2ggYWRkcyBh IG5ldyB0ZGVwLT5lbGZfYWJpIHZhcmlhYmxlIHRvIGRlY2lkZQorICAgIHdoaWNoIEFCSSB2ZXJz aW9uIHRvIHVzZS4gIFRoaXMgaXMgZGV0ZWN0ZWQgZnJvbSB0aGUgRUxGIGhlYWRlcgorICAgIGVf ZmxhZ3MgdmFsdWU7IGlmIHRoaXMgaXMgbm90IHByZXNlbnQsIHdlIGRlZmF1bHQgdG8gRUxGdjIg b24KKyAgICBsaXR0bGUtZW5kaWFuIGFuZCBFTEZ2MSBvdGhlcndpc2UuCisgICAgCisgICAgVGhp cyBwYXRjaCBkb2VzIG5vdCB5ZXQgaW50cm9kdWNlIGFueSBhY3R1YWwgZGlmZmVyZW5jZSBpbiBH REIncworICAgIGhhbmRsaW5nIG9mIHRoZSB0d28gQUJJcy4gIFRob3NlIHdpbGwgYmUgYWRkZWQg YnkgdGhlIHJlbWFpbmRlcgorICAgIG9mIHRoaXMgcGF0Y2ggc2VyaWVzLgorICAgIAorICAgIEZv ciBhbiBvdmVydmlldyBvZiB0aGUgY2hhbmdlcyBpbiBFTEZ2MiwgaGF2ZSBhIGxvb2sgYXQgdGhl CisgICAgY29tbWVudHMgaW4gdGhlIHBhdGNoIHNlcmllcyB0aGF0IGFkZGVkIEVMRnYyIHRvIEdD Qywgc3RhcnRpbmcgYXQ6CisgICAgaHR0cDovL2djYy5nbnUub3JnL21sL2djYy1wYXRjaGVzLzIw MTMtMTEvbXNnMDExNDQuaHRtbAorICAgIAorICAgIGdkYi9DaGFuZ2VMb2c6CisgICAgCisgICAg CSogcHBjLXRkZXAuaCAoZW51bSBwb3dlcnBjX2VsZl9hYmkpOiBOZXcgZGF0YSB0eXBlLgorICAg IAkoc3RydWN0IGdkYmFyY2hfdGRlcCk6IE5ldyBtZW1iZXIgZWxmX2FiaS4KKyAgICAKKyAgICAJ KiByczYwMDAtdGRlcC5jOiBJbmNsdWRlICJlbGYvcHBjNjQuaCIuCisgICAgCShyczYwMDBfZ2Ri YXJjaF9pbml0KTogRGV0ZWN0IEVMRiBBQkkgdmVyc2lvbi4KKworIyMjIGEvZ2RiL0NoYW5nZUxv ZworIyMjIGIvZ2RiL0NoYW5nZUxvZworIyMgLTEsNSArMSwxMyBAQAorIDIwMTQtMDItMDQgIFVs cmljaCBXZWlnYW5kwqAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CisgCisrCSogcHBjLXRkZXAuaCAo ZW51bSBwb3dlcnBjX2VsZl9hYmkpOiBOZXcgZGF0YSB0eXBlLgorKwkoc3RydWN0IGdkYmFyY2hf dGRlcCk6IE5ldyBtZW1iZXIgZWxmX2FiaS4KKysKKysJKiByczYwMDAtdGRlcC5jOiBJbmNsdWRl ICJlbGYvcHBjNjQuaCIuCisrCShyczYwMDBfZ2RiYXJjaF9pbml0KTogRGV0ZWN0IEVMRiBBQkkg dmVyc2lvbi4KKysKKysyMDE0LTAyLTA0ICBVbHJpY2ggV2VpZ2FuZMKgIDx1d2VpZ2FuZEBkZS5p Ym0uY29tPgorKworIAkqIHBwYy1zeXN2LXRkZXAuYyAocHBjNjRfc3lzdl9hYmlfcHVzaF9mcmVn KTogVXNlIGNvcnJlY3Qgb3JkZXIKKyAJd2l0aGluIGEgcmVnaXN0ZXIgcGFpciBob2xkaW5nIGEg REZQIDEyOC1iaXQgdmFsdWUgb24gbGl0dGxlLWVuZGlhbi4KKyAJKHBwYzY0X3N5c3ZfYWJpX3Jl dHVybl92YWx1ZV9iYXNlKTogTGlrZXdpc2UuCitJbmRleDogZ2RiLTcuNy4xL2dkYi9wcGMtdGRl cC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL3BwYy10ZGVwLmgJMjAxNC0w NS0wOSAxOToyMzo0MC44OTIyNDgwNjQgKzAyMDAKKysrKyBnZGItNy43LjEvZ2RiL3BwYy10ZGVw LmgJMjAxNC0wNS0wOSAxOToyMzo0Mi4zNDYyNDgyNDYgKzAyMDAKK0BAIC0xODIsNiArMTgyLDE1 IEBAIGV4dGVybiB2b2lkIHBwY19jb2xsZWN0X3ZzeHJlZ3NldCAoY29uc3QKKyAKKyAvKiBQcml2 YXRlIGRhdGEgdGhhdCB0aGlzIG1vZHVsZSBhdHRhY2hlcyB0byBzdHJ1Y3QgZ2RiYXJjaC4gICov CisgCisrLyogRUxGIEFCSSB2ZXJzaW9uIHVzZWQgYnkgdGhlIGluZmVyaW9yLiAgKi8KKytlbnVt IHBvd2VycGNfZWxmX2FiaQorK3sKKysgIFBPV0VSUENfRUxGX0FVVE8sCisrICBQT1dFUlBDX0VM Rl9WMSwKKysgIFBPV0VSUENfRUxGX1YyLAorKyAgUE9XRVJQQ19FTEZfTEFTVAorK307CisrCisg LyogVmVjdG9yIEFCSSB1c2VkIGJ5IHRoZSBpbmZlcmlvci4gICovCisgZW51bSBwb3dlcnBjX3Zl Y3Rvcl9hYmkKKyB7CitAQCAtMTk3LDYgKzIwNiw4IEBAIHN0cnVjdCBnZGJhcmNoX3RkZXAKKyAg ICAgaW50IHdvcmRzaXplOwkJLyogU2l6ZSBpbiBieXRlcyBvZiBmaXhlZC1wb2ludCB3b3JkLiAg Ki8KKyAgICAgaW50IHNvZnRfZmxvYXQ7CQkvKiBBdm9pZCBGUCByZWdpc3RlcnMgZm9yIGFyZ3Vt ZW50cz8gICovCisgCisrICAgIGVudW0gcG93ZXJwY19lbGZfYWJpIGVsZl9hYmk7CS8qIEVMRiBB QkkgdmVyc2lvbi4gICovCisrCisgICAgIC8qIEhvdyB0byBwYXNzIHZlY3RvciBhcmd1bWVudHMu ICBOZXZlciBzZXQgdG8gQVVUTyBvciBMQVNULiAgKi8KKyAgICAgZW51bSBwb3dlcnBjX3ZlY3Rv cl9hYmkgdmVjdG9yX2FiaTsKKyAKK0luZGV4OiBnZGItNy43LjEvZ2RiL3JzNjAwMC10ZGVwLmMK Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tLSBnZGItNy43LjEub3JpZy9nZGIvcnM2MDAwLXRkZXAuYwkyMDE0LTA1 LTA5IDE5OjIzOjQwLjg5NDI0ODA2NCArMDIwMAorKysrIGdkYi03LjcuMS9nZGIvcnM2MDAwLXRk ZXAuYwkyMDE0LTA1LTA5IDE5OjIzOjU3Ljk3NDI1MDE5NyArMDIwMAorQEAgLTQ4LDYgKzQ4LDcg QEAKKyAKKyAjaW5jbHVkZSAiZWxmLWJmZC5oIgorICNpbmNsdWRlICJlbGYvcHBjLmgiCisrI2lu Y2x1ZGUgImVsZi9wcGM2NC5oIgorIAorICNpbmNsdWRlICJzb2xpYi1zdnI0LmgiCisgI2luY2x1 ZGUgInBwYy10ZGVwLmgiCitAQCAtMzU1NCw2ICszNTU1LDcgQEAgcnM2MDAwX2dkYmFyY2hfaW5p dCAoc3RydWN0IGdkYmFyY2hfaW5mbworICAgZW51bSBhdXRvX2Jvb2xlYW4gc29mdF9mbG9hdF9m bGFnID0gcG93ZXJwY19zb2Z0X2Zsb2F0X2dsb2JhbDsKKyAgIGludCBzb2Z0X2Zsb2F0OworICAg ZW51bSBwb3dlcnBjX3ZlY3Rvcl9hYmkgdmVjdG9yX2FiaSA9IHBvd2VycGNfdmVjdG9yX2FiaV9n bG9iYWw7CisrICBlbnVtIHBvd2VycGNfZWxmX2FiaSBlbGZfYWJpID0gUE9XRVJQQ19FTEZfQVVU TzsKKyAgIGludCBoYXZlX2ZwdSA9IDEsIGhhdmVfc3BlID0gMCwgaGF2ZV9tcSA9IDAsIGhhdmVf YWx0aXZlYyA9IDAsIGhhdmVfZGZwID0gMCwKKyAgICAgICBoYXZlX3ZzeCA9IDA7CisgICBpbnQg dGRlc2Nfd29yZHNpemUgPSAtMTsKK0BAIC0zODYwLDYgKzM4NjIsMjEgQEAgcnM2MDAwX2dkYmFy Y2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbworICAgICB9CisgCisgI2lmZGVmIEhBVkVfRUxG CisrICBpZiAoZnJvbV9lbGZfZXhlYykKKysgICAgeworKyAgICAgIHN3aXRjaCAoZWxmX2VsZmhl YWRlciAoaW5mby5hYmZkKS0+ZV9mbGFncyAmIEVGX1BQQzY0X0FCSSkKKysJeworKwljYXNlIDE6 CisrCSAgZWxmX2FiaSA9IFBPV0VSUENfRUxGX1YxOworKwkgIGJyZWFrOworKwljYXNlIDI6Cisr CSAgZWxmX2FiaSA9IFBPV0VSUENfRUxGX1YyOworKwkgIGJyZWFrOworKwlkZWZhdWx0OgorKwkg IGJyZWFrOworKwl9CisrICAgIH0KKysKKyAgIGlmIChzb2Z0X2Zsb2F0X2ZsYWcgPT0gQVVUT19C T09MRUFOX0FVVE8gJiYgZnJvbV9lbGZfZXhlYykKKyAgICAgeworICAgICAgIHN3aXRjaCAoYmZk X2VsZl9nZXRfb2JqX2F0dHJfaW50IChpbmZvLmFiZmQsIE9CSl9BVFRSX0dOVSwKK0BAIC0zODk2 LDYgKzM5MTMsMjEgQEAgcnM2MDAwX2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbwor ICAgICB9CisgI2VuZGlmCisgCisrICAvKiBBdCB0aGlzIHBvaW50LCB0aGUgb25seSBzdXBwb3J0 ZWQgRUxGLWJhc2VkIDY0LWJpdCBsaXR0bGUtZW5kaWFuCisrICAgICBvcGVyYXRpbmcgc3lzdGVt IGlzIEdOVS9MaW51eCwgYW5kIHRoaXMgdXNlcyB0aGUgRUxGdjIgQUJJIGJ5CisrICAgICBkZWZh dWx0LiAgQWxsIG90aGVyIHN1cHBvcnRlZCBFTEYtYmFzZWQgb3BlcmF0aW5nIHN5c3RlbXMgdXNl IHRoZQorKyAgICAgRUxGdjEgQUJJIGJ5IGRlZmF1bHQuICBUaGVyZWZvcmUsIGlmIHRoZSBBQkkg bWFya2VyIGlzIG1pc3NpbmcsCisrICAgICBlLmcuIGJlY2F1c2Ugd2UgcnVuIGEgbGVnYWN5IGJp bmFyeSwgb3IgaGF2ZSBhdHRhY2hlZCB0byBhIHByb2Nlc3MKKysgICAgIGFuZCBoYXZlIG5vdCBm b3VuZCBhbnkgYXNzb2NpYXRlZCBiaW5hcnkgZmlsZSwgc2V0IHRoZSBkZWZhdWx0CisrICAgICBh Y2NvcmRpbmcgdG8gdGhpcyBoZXVyaXN0aWMuICAqLworKyAgaWYgKGVsZl9hYmkgPT0gUE9XRVJQ Q19FTEZfQVVUTykKKysgICAgeworKyAgICAgIGlmICh3b3Jkc2l6ZSA9PSA4ICYmIGluZm8uYnl0 ZV9vcmRlciA9PSBCRkRfRU5ESUFOX0xJVFRMRSkKKysgICAgICAgIGVsZl9hYmkgPSBQT1dFUlBD X0VMRl9WMjsKKysgICAgICBlbHNlCisrICAgICAgICBlbGZfYWJpID0gUE9XRVJQQ19FTEZfVjE7 CisrICAgIH0KKysKKyAgIGlmIChzb2Z0X2Zsb2F0X2ZsYWcgPT0gQVVUT19CT09MRUFOX1RSVUUp CisgICAgIHNvZnRfZmxvYXQgPSAxOworICAgZWxzZSBpZiAoc29mdF9mbG9hdF9mbGFnID09IEFV VE9fQk9PTEVBTl9GQUxTRSkKK0BAIC0zOTM4LDYgKzM5NzAsOCBAQCByczYwMDBfZ2RiYXJjaF9p bml0IChzdHJ1Y3QgZ2RiYXJjaF9pbmZvCisgICAgICAgICAgbWVhbmluZ2Z1bCwgYmVjYXVzZSA2 NC1iaXQgQ1BVcyBjYW4gcnVuIGluIDMyLWJpdCBtb2RlLiAgU28sIHBlcmZvcm0KKyAgICAgICAg ICBzZXBhcmF0ZSB3b3JkIHNpemUgY2hlY2suICAqLworICAgICAgIHRkZXAgPSBnZGJhcmNoX3Rk ZXAgKGFyY2hlcy0+Z2RiYXJjaCk7CisrICAgICAgaWYgKHRkZXAgJiYgdGRlcC0+ZWxmX2FiaSAh PSBlbGZfYWJpKQorKwljb250aW51ZTsKKyAgICAgICBpZiAodGRlcCAmJiB0ZGVwLT5zb2Z0X2Zs b2F0ICE9IHNvZnRfZmxvYXQpCisgCWNvbnRpbnVlOworICAgICAgIGlmICh0ZGVwICYmIHRkZXAt PnZlY3Rvcl9hYmkgIT0gdmVjdG9yX2FiaSkKK0BAIC0zOTYwLDYgKzM5OTQsNyBAQCByczYwMDBf Z2RiYXJjaF9pbml0IChzdHJ1Y3QgZ2RiYXJjaF9pbmZvCisgCisgICB0ZGVwID0gWENBTExPQyAo MSwgc3RydWN0IGdkYmFyY2hfdGRlcCk7CisgICB0ZGVwLT53b3Jkc2l6ZSA9IHdvcmRzaXplOwor KyAgdGRlcC0+ZWxmX2FiaSA9IGVsZl9hYmk7CisgICB0ZGVwLT5zb2Z0X2Zsb2F0ID0gc29mdF9m bG9hdDsKKyAgIHRkZXAtPnZlY3Rvcl9hYmkgPSB2ZWN0b3JfYWJpOworIAoKZGlmZiAtLWdpdCBh L2dkYi11cHN0cmVhbS1wcGM2NGxlMTFvZjE1LnBhdGNoIGIvZ2RiLXVwc3RyZWFtLXBwYzY0bGUx MW9mMTUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmRiZDdhYgot LS0gL2Rldi9udWxsCisrKyBiL2dkYi11cHN0cmVhbS1wcGM2NGxlMTFvZjE1LnBhdGNoCkBAIC0w LDAgKzEsMTMyIEBACitjb21taXQgZDQwOTRiNmE4ODgzYWU0ODFjNzY0NGM1YTIxMDI1NGVmZTky ZTlhZAorQXV0aG9yOiBVbHJpY2ggV2VpZ2FuZCA8dWxyaWNoLndlaWdhbmRAZGUuaWJtLmNvbT4K K0RhdGU6ICAgVHVlIEZlYiA0IDE4OjQwOjE2IDIwMTQgKzAxMDAKKworICAgIFBvd2VyUEM2NCBF TEZ2MiBBQkk6IG5vIGZ1bmN0aW9uIGRlc2NyaXB0b3JzCisgICAgCisgICAgVGhpcyBpbXBsZW1l bnRzIHRoZSBtb3N0IHNpZ25pZmljYW50IGRpZmZlcmVuY2Ugd2l0aCB0aGUgRUxGdjIgQUJJOgor ICAgIHdlIG5vIGxvbmdlciB1c2UgZnVuY3Rpb24gZGVzY3JpcHRvcnMuICBUaGUgcGF0Y2ggY29u c2lzdHMgbW9zdGx5CisgICAgb2Ygc3dpdGNoaW5nIG9mZiBjb2RlIHRvIGRlYWwgd2l0aCBkZXNj cmlwdG9ycyA6LSkKKyAgICAKKyAgICBJbiBhZGRpdGlvbiwgd2hlbiBjYWxsaW5nIGFuIGluZmVy aW9yIGZ1bmN0aW9uLCB3ZSBubyBsb25nZXIgbmVlZAorICAgIHRvIHByb3ZpZGUgaXRzIFRPQyBp biByMi4gIEluc3RlYWQsIEVMRnYyIGNvZGUgZXhwZWN0cyB0byBiZSBjYWxsZWQKKyAgICB3aXRo IHIxMiBwb2ludGluZyB0byB0aGUgY29kZSBhZGRyZXNzIGl0c2VsZi4KKyAgICAKKyAgICBnZGIv Q2hhbmdlTG9nOgorICAgIAorICAgIAkqIHBwYy1saW51eC10ZGVwLmMgKHBwY19saW51eF9pbml0 X2FiaSk6IE9ubHkgY2FsbAorICAgIAlzZXRfZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJf YWRkciBhbmQKKyAgICAJc2V0X2dkYmFyY2hfZWxmX21ha2VfbXN5bWJvbF9zcGVjaWFsIGZvciBF TEZ2MS4KKyAgICAJKiBwcGMtc3lzdi10ZGVwLmMgKHBwYzY0X3N5c3ZfYWJpX3B1c2hfcGFyYW0p OiBPbmx5IGhhbmRsZQorICAgIAlmdW5jdGlvbiBkZXNjcmlwdG9ycyBvbiBFTEZ2MS4KKyAgICAJ KHBwYzY0X3N5c3ZfYWJpX3B1c2hfZHVtbXlfY2FsbCk6IExpa2V3aXNlLiAgT24gRUxGdjIsCisg ICAgCXNldCB1cCByMTIgYXQgZnVuY3Rpb24gZW50cnkuCisKKyMjIyBhL2dkYi9DaGFuZ2VMb2cK KyMjIyBiL2dkYi9DaGFuZ2VMb2cKKyMjIC0xLDUgKzEsMTUgQEAKKyAyMDE0LTAyLTA0ICBVbHJp Y2ggV2VpZ2FuZMKgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgorIAorKwkqIHBwYy1saW51eC10ZGVw LmMgKHBwY19saW51eF9pbml0X2FiaSk6IE9ubHkgY2FsbAorKwlzZXRfZ2RiYXJjaF9jb252ZXJ0 X2Zyb21fZnVuY19wdHJfYWRkciBhbmQKKysJc2V0X2dkYmFyY2hfZWxmX21ha2VfbXN5bWJvbF9z cGVjaWFsIGZvciBFTEZ2MS4KKysJKiBwcGMtc3lzdi10ZGVwLmMgKHBwYzY0X3N5c3ZfYWJpX3B1 c2hfcGFyYW0pOiBPbmx5IGhhbmRsZQorKwlmdW5jdGlvbiBkZXNjcmlwdG9ycyBvbiBFTEZ2MS4K KysJKHBwYzY0X3N5c3ZfYWJpX3B1c2hfZHVtbXlfY2FsbCk6IExpa2V3aXNlLiAgT24gRUxGdjIs CisrCXNldCB1cCByMTIgYXQgZnVuY3Rpb24gZW50cnkuCisrCisrMjAxNC0wMi0wNCAgVWxyaWNo IFdlaWdhbmTCoCA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KKysKKyAJKiBwcGMtdGRlcC5oIChlbnVt IHBvd2VycGNfZWxmX2FiaSk6IE5ldyBkYXRhIHR5cGUuCisgCShzdHJ1Y3QgZ2RiYXJjaF90ZGVw KTogTmV3IG1lbWJlciBlbGZfYWJpLgorIAorLS0tIGEvZ2RiL3BwYy1saW51eC10ZGVwLmMKKysr KyBiL2dkYi9wcGMtbGludXgtdGRlcC5jCitAQCAtMTMzOSwxMyArMTMzOSwxNiBAQCBwcGNfbGlu dXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywKKyAgIAorICAgaWYgKHRkZXAt PndvcmRzaXplID09IDgpCisgICAgIHsKKy0gICAgICAvKiBIYW5kbGUgUFBDIEdOVS9MaW51eCA2 NC1iaXQgZnVuY3Rpb24gcG9pbnRlcnMgKHdoaWNoIGFyZSByZWFsbHkKKy0JIGZ1bmN0aW9uIGRl c2NyaXB0b3JzKS4gICovCistICAgICAgc2V0X2dkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRy X2FkZHIKKy0JKGdkYmFyY2gsIHBwYzY0X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyKTsKKysg ICAgICBpZiAodGRlcC0+ZWxmX2FiaSA9PSBQT1dFUlBDX0VMRl9WMSkKKysJeworKwkgIC8qIEhh bmRsZSBQUEMgR05VL0xpbnV4IDY0LWJpdCBmdW5jdGlvbiBwb2ludGVycyAod2hpY2ggYXJlIHJl YWxseQorKwkgICAgIGZ1bmN0aW9uIGRlc2NyaXB0b3JzKS4gICovCisrCSAgc2V0X2dkYmFyY2hf Y29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIKKysJICAgIChnZGJhcmNoLCBwcGM2NF9jb252ZXJ0 X2Zyb21fZnVuY19wdHJfYWRkcik7CisgCistICAgICAgc2V0X2dkYmFyY2hfZWxmX21ha2VfbXN5 bWJvbF9zcGVjaWFsIChnZGJhcmNoLAorLQkJCQkJICAgIHBwYzY0X2VsZl9tYWtlX21zeW1ib2xf c3BlY2lhbCk7CisrCSAgc2V0X2dkYmFyY2hfZWxmX21ha2VfbXN5bWJvbF9zcGVjaWFsCisrCSAg ICAoZ2RiYXJjaCwgcHBjNjRfZWxmX21ha2VfbXN5bWJvbF9zcGVjaWFsKTsKKysJfQorIAorICAg ICAgIC8qIFNoYXJlZCBsaWJyYXJ5IGhhbmRsaW5nLiAgKi8KKyAgICAgICBzZXRfZ2RiYXJjaF9z a2lwX3RyYW1wb2xpbmVfY29kZSAoZ2RiYXJjaCwgcHBjNjRfc2tpcF90cmFtcG9saW5lX2NvZGUp OworLS0tIGEvZ2RiL3BwYy1zeXN2LXRkZXAuYworKysrIGIvZ2RiL3BwYy1zeXN2LXRkZXAuYwor QEAgLTEzNTIsOCArMTM1Miw5IEBAIHBwYzY0X3N5c3ZfYWJpX3B1c2hfcGFyYW0gKHN0cnVjdCBn ZGJhcmNoICpnZGJhcmNoLAorIAkgIHdvcmQgPSB1bnBhY2tfbG9uZyAodHlwZSwgdmFsKTsKKyAK KyAJICAvKiBDb252ZXJ0IGFueSBmdW5jdGlvbiBjb2RlIGFkZHJlc3NlcyBpbnRvIGRlc2NyaXB0 b3JzLiAgKi8KKy0JICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfUFRSCistCSAg ICAgIHx8IFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1JFRikKKysJICBpZiAodGRlcC0+ ZWxmX2FiaSA9PSBQT1dFUlBDX0VMRl9WMQorKwkgICAgICAmJiAoVFlQRV9DT0RFICh0eXBlKSA9 PSBUWVBFX0NPREVfUFRSCisrCQkgIHx8IFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1JF RikpCisgCSAgICB7CisgCSAgICAgIHN0cnVjdCB0eXBlICp0YXJnZXRfdHlwZQorIAkJPSBjaGVj a190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSk7CitAQCAtMTU1MywyNCArMTU1NCwz MiBAQCBwcGM2NF9zeXN2X2FiaV9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoLAorICAgICAgYnJlYWtwb2ludC4gICovCisgICByZWdjYWNoZV9jb29rZWRfd3JpdGVfc2ln bmVkIChyZWdjYWNoZSwgdGRlcC0+cHBjX2xyX3JlZ251bSwgYnBfYWRkcik7CisgCistICAvKiBV c2UgdGhlIGZ1bmNfYWRkciB0byBmaW5kIHRoZSBkZXNjcmlwdG9yLCBhbmQgdXNlIHRoYXQgdG8g ZmluZAorLSAgICAgdGhlIFRPQy4gIElmIHdlJ3JlIGNhbGxpbmcgdmlhIGEgZnVuY3Rpb24gcG9p bnRlciwgdGhlIHBvaW50ZXIKKy0gICAgIGl0c2VsZiBpZGVudGlmaWVzIHRoZSBkZXNjcmlwdG9y LiAgKi8KKy0gIHsKKy0gICAgc3RydWN0IHR5cGUgKmZ0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFs dWVfdHlwZSAoZnVuY3Rpb24pKTsKKy0gICAgQ09SRV9BRERSIGRlc2NfYWRkciA9IHZhbHVlX2Fz X2FkZHJlc3MgKGZ1bmN0aW9uKTsKKy0KKy0gICAgaWYgKFRZUEVfQ09ERSAoZnR5cGUpID09IFRZ UEVfQ09ERV9QVFIKKy0JfHwgY29udmVydF9jb2RlX2FkZHJfdG9fZGVzY19hZGRyIChmdW5jX2Fk ZHIsICZkZXNjX2FkZHIpKQorLSAgICAgIHsKKy0JLyogVGhlIFRPQyBpcyB0aGUgc2Vjb25kIGRv dWJsZSB3b3JkIGluIHRoZSBkZXNjcmlwdG9yLiAgKi8KKy0JQ09SRV9BRERSIHRvYyA9CistCSAg cmVhZF9tZW1vcnlfdW5zaWduZWRfaW50ZWdlciAoZGVzY19hZGRyICsgdGRlcC0+d29yZHNpemUs CistCQkJCQl0ZGVwLT53b3Jkc2l6ZSwgYnl0ZV9vcmRlcik7CistCXJlZ2NhY2hlX2Nvb2tlZF93 cml0ZV91bnNpZ25lZCAocmVnY2FjaGUsCistCQkJCQl0ZGVwLT5wcGNfZ3AwX3JlZ251bSArIDIs IHRvYyk7CistICAgICAgfQorLSAgfQorKyAgLyogSW4gdGhlIEVMRnYxIEFCSSwgdXNlIHRoZSBm dW5jX2FkZHIgdG8gZmluZCB0aGUgZGVzY3JpcHRvciwgYW5kIHVzZQorKyAgICAgdGhhdCB0byBm aW5kIHRoZSBUT0MuICBJZiB3ZSdyZSBjYWxsaW5nIHZpYSBhIGZ1bmN0aW9uIHBvaW50ZXIsCisr ICAgICB0aGUgcG9pbnRlciBpdHNlbGYgaWRlbnRpZmllcyB0aGUgZGVzY3JpcHRvci4gICovCisr ICBpZiAodGRlcC0+ZWxmX2FiaSA9PSBQT1dFUlBDX0VMRl9WMSkKKysgICAgeworKyAgICAgIHN0 cnVjdCB0eXBlICpmdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGZ1bmN0aW9uKSk7 CisrICAgICAgQ09SRV9BRERSIGRlc2NfYWRkciA9IHZhbHVlX2FzX2FkZHJlc3MgKGZ1bmN0aW9u KTsKKysKKysgICAgICBpZiAoVFlQRV9DT0RFIChmdHlwZSkgPT0gVFlQRV9DT0RFX1BUUgorKwkg IHx8IGNvbnZlcnRfY29kZV9hZGRyX3RvX2Rlc2NfYWRkciAoZnVuY19hZGRyLCAmZGVzY19hZGRy KSkKKysJeworKwkgIC8qIFRoZSBUT0MgaXMgdGhlIHNlY29uZCBkb3VibGUgd29yZCBpbiB0aGUg ZGVzY3JpcHRvci4gICovCisrCSAgQ09SRV9BRERSIHRvYyA9CisrCSAgICByZWFkX21lbW9yeV91 bnNpZ25lZF9pbnRlZ2VyIChkZXNjX2FkZHIgKyB0ZGVwLT53b3Jkc2l6ZSwKKysJCQkJCSAgdGRl cC0+d29yZHNpemUsIGJ5dGVfb3JkZXIpOworKworKwkgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZV91 bnNpZ25lZCAocmVnY2FjaGUsCisrCQkJCQkgIHRkZXAtPnBwY19ncDBfcmVnbnVtICsgMiwgdG9j KTsKKysJfQorKyAgICB9CisrCisrICAvKiBJbiB0aGUgRUxGdjIgQUJJLCB3ZSBuZWVkIHRvIHBh c3MgdGhlIHRhcmdldCBhZGRyZXNzIGluIHIxMiBzaW5jZQorKyAgICAgd2UgbWF5IGJlIGNhbGxp bmcgYSBnbG9iYWwgZW50cnkgcG9pbnQuICAqLworKyAgaWYgKHRkZXAtPmVsZl9hYmkgPT0gUE9X RVJQQ19FTEZfVjIpCisrICAgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZV91bnNpZ25lZCAocmVnY2Fj aGUsCisrCQkJCSAgICB0ZGVwLT5wcGNfZ3AwX3JlZ251bSArIDEyLCBmdW5jX2FkZHIpOworIAor ICAgcmV0dXJuIHNwOworIH0KCmRpZmYgLS1naXQgYS9nZGItdXBzdHJlYW0tcHBjNjRsZTEyb2Yx NS5wYXRjaCBiL2dkYi11cHN0cmVhbS1wcGM2NGxlMTJvZjE1LnBhdGNoCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiMzg2ODIKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItdXBz dHJlYW0tcHBjNjRsZTEyb2YxNS5wYXRjaApAQCAtMCwwICsxLDQ4IEBACitjb21taXQgNTJmNTQ4 ZTQxZjA4NTU1MGQ3NzQwYzM1MGMxYzhhMjM5NTMyYWY3NworQXV0aG9yOiBVbHJpY2ggV2VpZ2Fu ZCA8dWxyaWNoLndlaWdhbmRAZGUuaWJtLmNvbT4KK0RhdGU6ICAgVHVlIEZlYiA0IDE4OjQxOjM2 IDIwMTQgKzAxMDAKKworICAgIFBvd2VyUEM2NCBFTEZ2MiBBQkk6IHN0YWNrIGZyYW1lIGxheW91 dCBjaGFuZ2VzCisgICAgCisgICAgVGhpcyBpbXBsZW1lbnRlcyBhbm90aGVyIGNoYW5nZSBpbiBF TEZ2MjogdGhlIHN0YWNrIGZyYW1lIG5vIGxvbmdlcgorICAgIGNvbnRhaW5zIHRoZSByZXNlcnZl ZCBkb3VibGUgd29yZHMgZm9yIGxpbmtlciBhbmQgY29tcGlsZXIgdXNlCisgICAgKHdoaWNoIHdl cmVuJ3QgcmVhbGx5IHVzZWQgZm9yIG11Y2ggb2YgYW55dGhpbmcgYW55d2F5KS4gIFRoaXMKKyAg ICBhZmZlY3RzIHBsYWNlbWVudCBvZiBvbi1zdGFjayBwYXJhbWV0ZXJzIGluIGluZmVyaW9yIGNh bGxzLgorICAgIAorICAgIGdkYi9DaGFuZ2VMb2c6CisgICAgCisgICAgCSogcHBjLXN5c3YtdGRl cC5jIChwcGM2NF9zeXN2X2FiaV9wdXNoX2R1bW15X2NhbGwpOiBVc2UgY29ycmVjdAorICAgIAlv ZmZzZXQgdG8gdGhlIHN0YWNrIHBhcmFtZXRlciBsaXN0IGZvciB0aGUgRUxGdjIgQUJJLgorCisj IyMgYS9nZGIvQ2hhbmdlTG9nCisjIyMgYi9nZGIvQ2hhbmdlTG9nCisjIyAtMSw1ICsxLDEwIEBA CisgMjAxNC0wMi0wNCAgVWxyaWNoIFdlaWdhbmTCoCA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KKyAK KysJKiBwcGMtc3lzdi10ZGVwLmMgKHBwYzY0X3N5c3ZfYWJpX3B1c2hfZHVtbXlfY2FsbCk6IFVz ZSBjb3JyZWN0CisrCW9mZnNldCB0byB0aGUgc3RhY2sgcGFyYW1ldGVyIGxpc3QgZm9yIHRoZSBF TEZ2MiBBQkkuCisrCisrMjAxNC0wMi0wNCAgVWxyaWNoIFdlaWdhbmTCoCA8dXdlaWdhbmRAZGUu aWJtLmNvbT4KKysKKyAJKiBwcGMtbGludXgtdGRlcC5jIChwcGNfbGludXhfaW5pdF9hYmkpOiBP bmx5IGNhbGwKKyAJc2V0X2dkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgYW5kCisg CXNldF9nZGJhcmNoX2VsZl9tYWtlX21zeW1ib2xfc3BlY2lhbCBmb3IgRUxGdjEuCistLS0gYS9n ZGIvcHBjLXN5c3YtdGRlcC5jCisrKysgYi9nZGIvcHBjLXN5c3YtdGRlcC5jCitAQCAtMTQ3NCw5 ICsxNDc0LDEzIEBAIHBwYzY0X3N5c3ZfYWJpX3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2gsCisgCSAgYXJncG9zLnJlZ2NhY2hlID0gcmVnY2FjaGU7CisgCSAgYXJncG9z LnJlZnBhcmFtID0gYWxpZ25fZG93biAoc3AgLSByZWZwYXJhbV9zaXplLCAxNik7CisgCSAgYXJn cG9zLmdwYXJhbSA9IGFsaWduX2Rvd24gKGFyZ3Bvcy5yZWZwYXJhbSAtIGdwYXJhbV9zaXplLCAx Nik7CistCSAgLyogQWRkIGluIHNwYWNlIGZvciB0aGUgVE9DLCBsaW5rIGVkaXRvciBkb3VibGUg d29yZCwKKy0JICAgICBjb21waWxlciBkb3VibGUgd29yZCwgTFIgc2F2ZSBhcmVhLCBDUiBzYXZl IGFyZWEuICAqLworLQkgIHNwID0gYWxpZ25fZG93biAoYXJncG9zLmdwYXJhbSAtIDQ4LCAxNik7 CisrCSAgLyogQWRkIGluIHNwYWNlIGZvciB0aGUgVE9DLCBsaW5rIGVkaXRvciBkb3VibGUgd29y ZCAodjEgb25seSksCisrCSAgICAgY29tcGlsZXIgZG91YmxlIHdvcmQgKHYxIG9ubHkpLCBMUiBz YXZlIGFyZWEsIENSIHNhdmUgYXJlYSwKKysJICAgICBhbmQgYmFja2NoYWluLiAgKi8KKysJICBp ZiAodGRlcC0+ZWxmX2FiaSA9PSBQT1dFUlBDX0VMRl9WMSkKKysJICAgIHNwID0gYWxpZ25fZG93 biAoYXJncG9zLmdwYXJhbSAtIDQ4LCAxNik7CisrCSAgZWxzZQorKwkgICAgc3AgPSBhbGlnbl9k b3duIChhcmdwb3MuZ3BhcmFtIC0gMzIsIDE2KTsKKyAJfQorIAorICAgICAgIC8qIElmIHRoZSBm dW5jdGlvbiBpcyByZXR1cm5pbmcgYSBgc3RydWN0JywgdGhlbiB0aGVyZSBpcyBhbgoKZGlmZiAt LWdpdCBhL2dkYi11cHN0cmVhbS1wcGM2NGxlMTNvZjE1LnBhdGNoIGIvZ2RiLXVwc3RyZWFtLXBw YzY0bGUxM29mMTUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzlj ZTU5OQotLS0gL2Rldi9udWxsCisrKyBiL2dkYi11cHN0cmVhbS1wcGM2NGxlMTNvZjE1LnBhdGNo CkBAIC0wLDAgKzEsMzA5IEBACitjb21taXQgY2MwZTg5YzUxOTkxMmUwZTRlNzVhMmZjMGQ4MzZm NzE1Y2RjNjgwNgorQXV0aG9yOiBVbHJpY2ggV2VpZ2FuZCA8dWxyaWNoLndlaWdhbmRAZGUuaWJt LmNvbT4KK0RhdGU6ICAgVHVlIEZlYiA0IDE4OjQyOjM1IDIwMTQgKzAxMDAKKworICAgIFBvd2Vy UEM2NCBFTEZ2MiBBQkk6IHN0cnVjdHVyZSBwYXNzaW5nIC8gcmV0dXJuCisgICAgCisgICAgQW5v dGhlciBzaWduaWZpY2FudCBkaWZmZXJlbmNlIGluIHRoZSBFTEZ2MiBBQkkgaXMgdGhhdCAiaG9t b2dlbmVvdXMiCisgICAgZmxvYXRpbmctcG9pbnQgYW5kIHZlY3RvciBhZ2dyZWdhdGVzLCBpLmUu IGFnZ3JlZ2F0ZXMgdGhlIGNvbnNpc3QKKyAgICAocmVjdXJzaXZlbHkpIG9ubHkgb2YgbWVtYmVy cyBvZiB0aGUgc2FtZSBmbG9hdGluZy1wb2ludCBvciB2ZWN0b3IgdHlwZSwKKyAgICBhcmUgcGFz c2VkIGluIGEgc2VyaWVzIG9mIGZsb2F0aW5nLXBvaW50IC8gdmVjdG9yIHJlZ2lzdGVycywgYXMg aWYgdGhleQorICAgIHdlcmUgc2VwZXJhdGUgcGFyYW1ldGVycy4gIChUaGlzIGlzIHNpbWlsYXIg dG8gdGhlIEFSTSBBQkkuKSAgVGhpcworICAgIGFwcGxpZXMgdG8gYm90aCBjYWxscyBhbmQgcmV0 dXJucy4KKyAgICAKKyAgICBJbiBhZGRpdGlvbiB3aGVuIHJldHVybmluZyBhbnkgYWdncmVnYXRl IG9mIHVwIHRvIDE2IGJ5dGVzLCBFTEZ2MiBub3cKKyAgICB1c2VkIGdlbmVyYWwtcHVycG9zZSBy ZWdpc3RlcnMuCisgICAgCisgICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZXNlIGFz cGVjdHMgb2YgdGhlIEFCSSwgd2hpY2ggaXMgcmVsYXRpdmVseQorICAgIHN0cmFpZ2h0Zm9yd2Fy ZCBhZnRlciB0aGUgcmVmYWN0b3JpbmcgcGF0Y2ggdG8gcHBjLXN5c3YtdGRlcC5jLgorICAgIAor ICAgIGdkYi9DaGFuZ2VMb2c6CisgICAgCisgICAgCSogcHBjLXN5c3YtdGRlcC5jIChwcGM2NF9h Z2dyZWdhdGVfY2FuZGlkYXRlKTogTmV3IHJvdXRpbmUuCisgICAgCShwcGM2NF9lbGZ2Ml9hYmlf aG9tb2dlbmVvdXNfYWdncmVnYXRlKTogTGlrZXdpc2UuCisgICAgCShwcGM2NF9zeXN2X2FiaV9w dXNoX3BhcmFtKTogSGFuZGxlIEVMRnYyIGhvbW9nZW5lb3VzIHN0cnVjdHMuCisgICAgCShwcGM2 NF9zeXN2X2FiaV9yZXR1cm5fdmFsdWUpOiBMaWtld2lzZS4gIEFsc28sIGhhbmRsZSBzbWFsbAor ICAgIAlzdHJ1Y3R1cmVzIHJldHVybmVkIGluIEdQUnMuCisKKyMjIyBhL2dkYi9DaGFuZ2VMb2cK KyMjIyBiL2dkYi9DaGFuZ2VMb2cKKyMjIC0xLDUgKzEsMTMgQEAKKyAyMDE0LTAyLTA0ICBVbHJp Y2ggV2VpZ2FuZMKgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgorIAorKwkqIHBwYy1zeXN2LXRkZXAu YyAocHBjNjRfYWdncmVnYXRlX2NhbmRpZGF0ZSk6IE5ldyByb3V0aW5lLgorKwkocHBjNjRfZWxm djJfYWJpX2hvbW9nZW5lb3VzX2FnZ3JlZ2F0ZSk6IExpa2V3aXNlLgorKwkocHBjNjRfc3lzdl9h YmlfcHVzaF9wYXJhbSk6IEhhbmRsZSBFTEZ2MiBob21vZ2VuZW91cyBzdHJ1Y3RzLgorKwkocHBj NjRfc3lzdl9hYmlfcmV0dXJuX3ZhbHVlKTogTGlrZXdpc2UuICBBbHNvLCBoYW5kbGUgc21hbGwK KysJc3RydWN0dXJlcyByZXR1cm5lZCBpbiBHUFJzLgorKworKzIwMTQtMDItMDQgIFVscmljaCBX ZWlnYW5kwqAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CisrCisgCSogcHBjLXN5c3YtdGRlcC5jIChw cGM2NF9zeXN2X2FiaV9wdXNoX2R1bW15X2NhbGwpOiBVc2UgY29ycmVjdAorIAlvZmZzZXQgdG8g dGhlIHN0YWNrIHBhcmFtZXRlciBsaXN0IGZvciB0aGUgRUxGdjIgQUJJLgorIAorLS0tIGEvZ2Ri L3BwYy1zeXN2LXRkZXAuYworKysrIGIvZ2RiL3BwYy1zeXN2LXRkZXAuYworQEAgLTExMDEsNiAr MTEwMSwxNjAgQEAgY29udmVydF9jb2RlX2FkZHJfdG9fZGVzY19hZGRyIChDT1JFX0FERFIgY29k ZV9hZGRyLCBDT1JFX0FERFIgKmRlc2NfYWRkcikKKyAgIHJldHVybiAxOworIH0KKyAKKysvKiBX YWxrIGRvd24gdGhlIHR5cGUgdHJlZSBvZiBUWVBFIGNvdW50aW5nIGNvbnNlY3V0aXZlIGJhc2Ug ZWxlbWVudHMuCisrICAgSWYgKkZJRUxEX1RZUEUgaXMgTlVMTCwgdGhlbiBzZXQgaXQgdG8gdGhl IGZpcnN0IHZhbGlkIGZsb2F0aW5nIHBvaW50CisrICAgb3IgdmVjdG9yIHR5cGUuICBJZiBhIG5v bi1mbG9hdGluZyBwb2ludCBvciB2ZWN0b3IgdHlwZSBpcyBmb3VuZCwgb3IKKysgICBpZiBhIGZs b2F0aW5nIHBvaW50IG9yIHZlY3RvciB0eXBlIHRoYXQgZG9lc24ndCBtYXRjaCBhIG5vbi1OVUxM CisrICAgKkZJRUxEX1RZUEUgaXMgZm91bmQsIHRoZW4gcmV0dXJuIC0xLCBvdGhlcndpc2UgcmV0 dXJuIHRoZSBjb3VudCBpbiB0aGUKKysgICBzdWItdHJlZS4gICovCisrCisrc3RhdGljIExPTkdF U1QKKytwcGM2NF9hZ2dyZWdhdGVfY2FuZGlkYXRlIChzdHJ1Y3QgdHlwZSAqdHlwZSwKKysJCQkg ICBzdHJ1Y3QgdHlwZSAqKmZpZWxkX3R5cGUpCisreworKyAgdHlwZSA9IGNoZWNrX3R5cGVkZWYg KHR5cGUpOworKworKyAgc3dpdGNoIChUWVBFX0NPREUgKHR5cGUpKQorKyAgICB7CisrICAgIGNh c2UgVFlQRV9DT0RFX0ZMVDoKKysgICAgY2FzZSBUWVBFX0NPREVfREVDRkxPQVQ6CisrICAgICAg aWYgKCEqZmllbGRfdHlwZSkKKysJKmZpZWxkX3R5cGUgPSB0eXBlOworKyAgICAgIGlmIChUWVBF X0NPREUgKCpmaWVsZF90eXBlKSA9PSBUWVBFX0NPREUgKHR5cGUpCisrCSAgJiYgVFlQRV9MRU5H VEggKCpmaWVsZF90eXBlKSA9PSBUWVBFX0xFTkdUSCAodHlwZSkpCisrCXJldHVybiAxOworKyAg ICAgIGJyZWFrOworKworKyAgICBjYXNlIFRZUEVfQ09ERV9DT01QTEVYOgorKyAgICAgIHR5cGUg PSBUWVBFX1RBUkdFVF9UWVBFICh0eXBlKTsKKysgICAgICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9 PSBUWVBFX0NPREVfRkxUCisrCSAgfHwgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfREVD RkxPQVQpCisrCXsKKysJICBpZiAoISpmaWVsZF90eXBlKQorKwkgICAgKmZpZWxkX3R5cGUgPSB0 eXBlOworKwkgIGlmIChUWVBFX0NPREUgKCpmaWVsZF90eXBlKSA9PSBUWVBFX0NPREUgKHR5cGUp CisrCSAgICAgICYmIFRZUEVfTEVOR1RIICgqZmllbGRfdHlwZSkgPT0gVFlQRV9MRU5HVEggKHR5 cGUpKQorKwkgICAgcmV0dXJuIDI7CisrCX0KKysgICAgICBicmVhazsKKysKKysgICAgY2FzZSBU WVBFX0NPREVfQVJSQVk6CisrICAgICAgaWYgKFRZUEVfVkVDVE9SICh0eXBlKSkKKysJeworKwkg IGlmICghKmZpZWxkX3R5cGUpCisrCSAgICAqZmllbGRfdHlwZSA9IHR5cGU7CisrCSAgaWYgKFRZ UEVfQ09ERSAoKmZpZWxkX3R5cGUpID09IFRZUEVfQ09ERSAodHlwZSkKKysJICAgICAgJiYgVFlQ RV9MRU5HVEggKCpmaWVsZF90eXBlKSA9PSBUWVBFX0xFTkdUSCAodHlwZSkpCisrCSAgICByZXR1 cm4gMTsKKysJfQorKyAgICAgIGVsc2UKKysJeworKwkgIExPTkdFU1QgY291bnQsIGxvd19ib3Vu ZCwgaGlnaF9ib3VuZDsKKysKKysJICBjb3VudCA9IHBwYzY0X2FnZ3JlZ2F0ZV9jYW5kaWRhdGUK KysJCSAgIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwgZmllbGRfdHlwZSk7CisrCSAgaWYgKGNv dW50ID09IC0xKQorKwkgICAgcmV0dXJuIC0xOworKworKwkgIGlmICghZ2V0X2FycmF5X2JvdW5k cyAodHlwZSwgJmxvd19ib3VuZCwgJmhpZ2hfYm91bmQpKQorKwkgICAgcmV0dXJuIC0xOworKwkg IGNvdW50ICo9IGhpZ2hfYm91bmQgLSBsb3dfYm91bmQ7CisrCisrCSAgLyogVGhlcmUgbXVzdCBi ZSBubyBwYWRkaW5nLiAgKi8KKysJICBpZiAoY291bnQgPT0gMCkKKysJICAgIHJldHVybiBUWVBF X0xFTkdUSCAodHlwZSkgPT0gMCA/IDAgOiAtMTsKKysJICBlbHNlIGlmIChUWVBFX0xFTkdUSCAo dHlwZSkgIT0gY291bnQgKiBUWVBFX0xFTkdUSCAoKmZpZWxkX3R5cGUpKQorKwkgICAgcmV0dXJu IC0xOworKworKwkgIHJldHVybiBjb3VudDsKKysJfQorKyAgICAgIGJyZWFrOworKworKyAgICBj YXNlIFRZUEVfQ09ERV9TVFJVQ1Q6CisrICAgIGNhc2UgVFlQRV9DT0RFX1VOSU9OOgorKwl7Cisr CSAgTE9OR0VTVCBjb3VudCA9IDA7CisrCSAgaW50IGk7CisrCisrCSAgZm9yIChpID0gMDsgaSA8 IFRZUEVfTkZJRUxEUyAodHlwZSk7IGkrKykKKysJICAgIHsKKysJICAgICAgTE9OR0VTVCBzdWJf Y291bnQ7CisrCisrCSAgICAgIGlmIChmaWVsZF9pc19zdGF0aWMgKCZUWVBFX0ZJRUxEICh0eXBl LCBpKSkpCisrCQljb250aW51ZTsKKysKKysJICAgICAgc3ViX2NvdW50ID0gcHBjNjRfYWdncmVn YXRlX2NhbmRpZGF0ZQorKwkJCSAgIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpLCBmaWVsZF90 eXBlKTsKKysJICAgICAgaWYgKHN1Yl9jb3VudCA9PSAtMSkKKysJCXJldHVybiAtMTsKKysKKysJ ICAgICAgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1NUUlVDVCkKKysJCWNvdW50 ICs9IHN1Yl9jb3VudDsKKysJICAgICAgZWxzZQorKwkJY291bnQgPSBtYXggKGNvdW50LCBzdWJf Y291bnQpOworKwkgICAgfQorKworKwkgIC8qIFRoZXJlIG11c3QgYmUgbm8gcGFkZGluZy4gICov CisrCSAgaWYgKGNvdW50ID09IDApCisrCSAgICByZXR1cm4gVFlQRV9MRU5HVEggKHR5cGUpID09 IDAgPyAwIDogLTE7CisrCSAgZWxzZSBpZiAoVFlQRV9MRU5HVEggKHR5cGUpICE9IGNvdW50ICog VFlQRV9MRU5HVEggKCpmaWVsZF90eXBlKSkKKysJICAgIHJldHVybiAtMTsKKysKKysJICByZXR1 cm4gY291bnQ7CisrCX0KKysgICAgICBicmVhazsKKysKKysgICAgZGVmYXVsdDoKKysgICAgICBi cmVhazsKKysgICAgfQorKworKyAgcmV0dXJuIC0xOworK30KKysKKysvKiBJZiBhbiBhcmd1bWVu dCBvZiB0eXBlIFRZUEUgaXMgYSBob21vZ2VuZW91cyBmbG9hdCBvciB2ZWN0b3IgYWdncmVnYXRl CisrICAgdGhhdCBzaGFsbCBiZSBwYXNzZWQgaW4gRlAvdmVjdG9yIHJlZ2lzdGVycyBhY2NvcmRp bmcgdG8gdGhlIEVMRnYyIEFCSSwKKysgICByZXR1cm4gdGhlIGhvbW9nZW5lb3VzIGVsZW1lbnQg dHlwZSBpbiAqRUxUX1RZUEUgYW5kIHRoZSBudW1iZXIgb2YKKysgICBlbGVtZW50cyBpbiAqTl9F TFRTLCBhbmQgcmV0dXJuIG5vbi16ZXJvLiAgT3RoZXJ3aXNlLCByZXR1cm4gemVyby4gICovCisr Cisrc3RhdGljIGludAorK3BwYzY0X2VsZnYyX2FiaV9ob21vZ2VuZW91c19hZ2dyZWdhdGUgKHN0 cnVjdCB0eXBlICp0eXBlLAorKwkJCQkgICAgICAgc3RydWN0IHR5cGUgKiplbHRfdHlwZSwgaW50 ICpuX2VsdHMpCisreworKyAgLyogQ29tcGxleCB0eXBlcyBhdCB0aGUgdG9wIGxldmVsIGFyZSB0 cmVhdGVkIHNlcGFyYXRlbHkuICBIb3dldmVyLAorKyAgICAgY29tcGxleCB0eXBlcyBjYW4gYmUg ZWxlbWVudHMgb2YgaG9tb2dlbmVvdXMgYWdncmVnYXRlcy4gICovCisrICBpZiAoVFlQRV9DT0RF ICh0eXBlKSA9PSBUWVBFX0NPREVfU1RSVUNUCisrICAgICAgfHwgVFlQRV9DT0RFICh0eXBlKSA9 PSBUWVBFX0NPREVfVU5JT04KKysgICAgICB8fCAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NP REVfQVJSQVkgJiYgIVRZUEVfVkVDVE9SICh0eXBlKSkpCisrICAgIHsKKysgICAgICBzdHJ1Y3Qg dHlwZSAqZmllbGRfdHlwZSA9IE5VTEw7CisrICAgICAgTE9OR0VTVCBmaWVsZF9jb3VudCA9IHBw YzY0X2FnZ3JlZ2F0ZV9jYW5kaWRhdGUgKHR5cGUsICZmaWVsZF90eXBlKTsKKysKKysgICAgICBp ZiAoZmllbGRfY291bnQgPiAwKQorKwl7CisrCSAgaW50IG5fcmVncyA9ICgoVFlQRV9DT0RFIChm aWVsZF90eXBlKSA9PSBUWVBFX0NPREVfRkxUCisrCQkJIHx8IFRZUEVfQ09ERSAoZmllbGRfdHlw ZSkgPT0gVFlQRV9DT0RFX0RFQ0ZMT0FUKT8KKysJCQkoVFlQRV9MRU5HVEggKGZpZWxkX3R5cGUp ICsgNykgPj4gMyA6IDEpOworKworKwkgIC8qIFRoZSBFTEZ2MiBBQkkgYWxsb3dzIGhvbW9nZW5l b3VzIGFnZ3JlZ2F0ZXMgdG8gb2NjdXB5CisrCSAgICAgdXAgdG8gOCByZWdpc3RlcnMuICAqLwor KwkgIGlmIChmaWVsZF9jb3VudCAqIG5fcmVncyA8PSA4KQorKwkgICAgeworKwkgICAgICBpZiAo ZWx0X3R5cGUpCisrCQkqZWx0X3R5cGUgPSBmaWVsZF90eXBlOworKwkgICAgICBpZiAobl9lbHRz KQorKwkJKm5fZWx0cyA9IChpbnQpIGZpZWxkX2NvdW50OworKwkgICAgICAvKiBOb3RlIHRoYXQg ZmllbGRfY291bnQgaXMgTE9OR0VTVCBzaW5jZSBpdCBtYXkgaG9sZCB0aGUgc2l6ZQorKwkJIG9m IGFuIGFycmF5LCB3aGlsZSAqbl9lbHRzIGlzIGludCBzaW5jZSBpdHMgdmFsdWUgaXMgYm91bmRl ZAorKwkJIGJ5IHRoZSBudW1iZXIgb2YgcmVnaXN0ZXJzIHVzZWQgZm9yIGFyZ3VtZW50IHBhc3Np bmcuICBUaGUKKysJCSBjYXN0IGNhbm5vdCBvdmVyZmxvdyBkdWUgdG8gdGhlIGJvdW5kcyBjaGVj a2luZyBhYm92ZS4gICovCisrCSAgICAgIHJldHVybiAxOworKwkgICAgfQorKwl9CisrICAgIH0K KysKKysgIHJldHVybiAwOworK30KKysKKyAvKiBTdHJ1Y3R1cmUgaG9sZGluZyB0aGUgbmV4dCBh cmd1bWVudCBwb3NpdGlvbi4gICovCisgc3RydWN0IHBwYzY0X3N5c3ZfYXJncG9zCisgICB7CitA QCAtMTM4OSw2ICsxNTQzLDI5IEBAIHBwYzY0X3N5c3ZfYWJpX3B1c2hfcGFyYW0gKHN0cnVjdCBn ZGJhcmNoICpnZGJhcmNoLAorIAkgIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9G TFQpCisgCSAgICBwcGM2NF9zeXN2X2FiaV9wdXNoX2ZyZWcgKGdkYmFyY2gsIHR5cGUsIHZhbCwg YXJncG9zKTsKKyAJfQorKworKyAgICAgIC8qIEluIHRoZSBFTEZ2MiBBQkksIGhvbW9nZW5lb3Vz IGZsb2F0aW5nLXBvaW50IG9yIHZlY3RvcgorKwkgYWdncmVnYXRlcyBhcmUgcGFzc2VkIGluIGEg c2VyaWVzIG9mIHJlZ2lzdGVycy4gICovCisrICAgICAgaWYgKHRkZXAtPmVsZl9hYmkgPT0gUE9X RVJQQ19FTEZfVjIpCisrCXsKKysJICBzdHJ1Y3QgdHlwZSAqZWx0eXBlOworKwkgIGludCBpLCBu ZWx0OworKworKwkgIGlmIChwcGM2NF9lbGZ2Ml9hYmlfaG9tb2dlbmVvdXNfYWdncmVnYXRlICh0 eXBlLCAmZWx0eXBlLCAmbmVsdCkpCisrCSAgICBmb3IgKGkgPSAwOyBpIDwgbmVsdDsgaSsrKQor KwkgICAgICB7CisrCQljb25zdCBnZGJfYnl0ZSAqZWx2YWwgPSB2YWwgKyBpICogVFlQRV9MRU5H VEggKGVsdHlwZSk7CisrCisrCQlpZiAoVFlQRV9DT0RFIChlbHR5cGUpID09IFRZUEVfQ09ERV9G TFQKKysJCSAgICB8fCBUWVBFX0NPREUgKGVsdHlwZSkgPT0gVFlQRV9DT0RFX0RFQ0ZMT0FUKQor KwkJICBwcGM2NF9zeXN2X2FiaV9wdXNoX2ZyZWcgKGdkYmFyY2gsIGVsdHlwZSwgZWx2YWwsIGFy Z3Bvcyk7CisrCQllbHNlIGlmIChUWVBFX0NPREUgKGVsdHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZ CisrCQkJICYmIFRZUEVfVkVDVE9SIChlbHR5cGUpCisrCQkJICYmIHRkZXAtPnZlY3Rvcl9hYmkg PT0gUE9XRVJQQ19WRUNfQUxUSVZFQworKwkJCSAmJiBUWVBFX0xFTkdUSCAoZWx0eXBlKSA9PSAx NikKKysJCSAgcHBjNjRfc3lzdl9hYmlfcHVzaF92cmVnIChnZGJhcmNoLCBlbHZhbCwgYXJncG9z KTsKKysJICAgICAgfQorKwl9CisgICAgIH0KKyB9CisgCitAQCAtMTgzNCw2ICsyMDExLDcyIEBA IHBwYzY0X3N5c3ZfYWJpX3JldHVybl92YWx1ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0 cnVjdCB2YWx1ZSAqZnVuY3Rpb24sCisgICAgICAgcmV0dXJuIFJFVFVSTl9WQUxVRV9SRUdJU1RF Ul9DT05WRU5USU9OOworICAgICB9CisgCisrICAvKiBJbiB0aGUgRUxGdjIgQUJJLCBob21vZ2Vu ZW91cyBmbG9hdGluZy1wb2ludCBvciB2ZWN0b3IKKysgICAgIGFnZ3JlZ2F0ZXMgYXJlIHJldHVy bmVkIGluIHJlZ2lzdGVycy4gICovCisrICBpZiAodGRlcC0+ZWxmX2FiaSA9PSBQT1dFUlBDX0VM Rl9WMgorKyAgICAgICYmIHBwYzY0X2VsZnYyX2FiaV9ob21vZ2VuZW91c19hZ2dyZWdhdGUgKHZh bHR5cGUsICZlbHR5cGUsICZuZWx0KSkKKysgICAgeworKyAgICAgIGZvciAoaSA9IDA7IGkgPCBu ZWx0OyBpKyspCisrCXsKKysJICBvayA9IHBwYzY0X3N5c3ZfYWJpX3JldHVybl92YWx1ZV9iYXNl IChnZGJhcmNoLCBlbHR5cGUsIHJlZ2NhY2hlLAorKwkJCQkJCSByZWFkYnVmLCB3cml0ZWJ1Ziwg aSk7CisrCSAgZ2RiX2Fzc2VydCAob2spOworKworKwkgIGlmIChyZWFkYnVmKQorKwkgICAgcmVh ZGJ1ZiArPSBUWVBFX0xFTkdUSCAoZWx0eXBlKTsKKysJICBpZiAod3JpdGVidWYpCisrCSAgICB3 cml0ZWJ1ZiArPSBUWVBFX0xFTkdUSCAoZWx0eXBlKTsKKysJfQorKworKyAgICAgIHJldHVybiBS RVRVUk5fVkFMVUVfUkVHSVNURVJfQ09OVkVOVElPTjsKKysgICAgfQorKworKyAgLyogSW4gdGhl IEVMRnYyIEFCSSwgYWdncmVnYXRlIHR5cGVzIG9mIHVwIHRvIDE2IGJ5dGVzIGFyZQorKyAgICAg cmV0dXJuZWQgaW4gcmVnaXN0ZXJzIHIzOnI0LiAgKi8KKysgIGlmICh0ZGVwLT5lbGZfYWJpID09 IFBPV0VSUENfRUxGX1YyCisrICAgICAgJiYgVFlQRV9MRU5HVEggKHZhbHR5cGUpIDw9IDE2Cisr ICAgICAgJiYgKFRZUEVfQ09ERSAodmFsdHlwZSkgPT0gVFlQRV9DT0RFX1NUUlVDVAorKwkgIHx8 IFRZUEVfQ09ERSAodmFsdHlwZSkgPT0gVFlQRV9DT0RFX1VOSU9OCisrCSAgfHwgKFRZUEVfQ09E RSAodmFsdHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZCisrCSAgICAgICYmICFUWVBFX1ZFQ1RPUiAo dmFsdHlwZSkpKSkKKysgICAgeworKyAgICAgIGludCBuX3JlZ3MgPSAoKFRZUEVfTEVOR1RIICh2 YWx0eXBlKSArIHRkZXAtPndvcmRzaXplIC0gMSkKKysJCSAgICAvIHRkZXAtPndvcmRzaXplKTsK KysgICAgICBpbnQgaTsKKysKKysgICAgICBmb3IgKGkgPSAwOyBpIDwgbl9yZWdzOyBpKyspCisr CXsKKysJICBnZGJfYnl0ZSByZWd2YWxbTUFYX1JFR0lTVEVSX1NJWkVdOworKwkgIGludCByZWdu dW0gPSB0ZGVwLT5wcGNfZ3AwX3JlZ251bSArIDMgKyBpOworKwkgIGludCBvZmZzZXQgPSBpICog dGRlcC0+d29yZHNpemU7CisrCSAgaW50IGxlbiA9IFRZUEVfTEVOR1RIICh2YWx0eXBlKSAtIG9m ZnNldDsKKysKKysJICBpZiAobGVuID4gdGRlcC0+d29yZHNpemUpCisrCSAgICBsZW4gPSB0ZGVw LT53b3Jkc2l6ZTsKKysKKysJICBpZiAod3JpdGVidWYgIT0gTlVMTCkKKysJICAgIHsKKysJICAg ICAgbWVtc2V0IChyZWd2YWwsIDAsIHNpemVvZiByZWd2YWwpOworKwkgICAgICBpZiAoZ2RiYXJj aF9ieXRlX29yZGVyIChnZGJhcmNoKSA9PSBCRkRfRU5ESUFOX0JJRworKwkJICAmJiBvZmZzZXQg PT0gMCkKKysJCW1lbWNweSAocmVndmFsICsgdGRlcC0+d29yZHNpemUgLSBsZW4sIHdyaXRlYnVm LCBsZW4pOworKwkgICAgICBlbHNlCisrCQltZW1jcHkgKHJlZ3ZhbCwgd3JpdGVidWYgKyBvZmZz ZXQsIGxlbik7CisrCSAgICAgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAocmVnY2FjaGUsIHJlZ251 bSwgcmVndmFsKTsKKysJICAgIH0KKysJICBpZiAocmVhZGJ1ZiAhPSBOVUxMKQorKwkgICAgewor KwkgICAgICByZWdjYWNoZV9jb29rZWRfcmVhZCAocmVnY2FjaGUsIHJlZ251bSwgcmVndmFsKTsK KysJICAgICAgaWYgKGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJjaCkgPT0gQkZEX0VORElBTl9C SUcKKysJCSAgJiYgb2Zmc2V0ID09IDApCisrCQltZW1jcHkgKHJlYWRidWYsIHJlZ3ZhbCArIHRk ZXAtPndvcmRzaXplIC0gbGVuLCBsZW4pOworKwkgICAgICBlbHNlCisrCQltZW1jcHkgKHJlYWRi dWYgKyBvZmZzZXQsIHJlZ3ZhbCwgbGVuKTsKKysJICAgIH0KKysJfQorKyAgICAgIHJldHVybiBS RVRVUk5fVkFMVUVfUkVHSVNURVJfQ09OVkVOVElPTjsKKysgICAgfQorKworICAgLyogSGFuZGxl IHBsYWluIGJhc2UgdHlwZXMuICAqLworICAgaWYgKHBwYzY0X3N5c3ZfYWJpX3JldHVybl92YWx1 ZV9iYXNlIChnZGJhcmNoLCB2YWx0eXBlLCByZWdjYWNoZSwKKyAJCQkJCXJlYWRidWYsIHdyaXRl YnVmLCAwKSkKCmRpZmYgLS1naXQgYS9nZGItdXBzdHJlYW0tcHBjNjRsZTE0b2YxNS5wYXRjaCBi L2dkYi11cHN0cmVhbS1wcGM2NGxlMTRvZjE1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLmFiZWU5ODMKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItdXBzdHJlYW0tcHBj NjRsZTE0b2YxNS5wYXRjaApAQCAtMCwwICsxLDM3NSBAQAorY29tbWl0IDU5MWExMmExZDRjODg0 MzM0M2ViOTk5MTQ1ZDhiY2MxZWZlZGY0MDgKK0F1dGhvcjogVWxyaWNoIFdlaWdhbmQgPHVscmlj aC53ZWlnYW5kQGRlLmlibS5jb20+CitEYXRlOiAgIFR1ZSBGZWIgNCAxODo0NDoxNCAyMDE0ICsw MTAwCisKKyAgICBQb3dlclBDNjQgRUxGdjIgQUJJOiBza2lwIGdsb2JhbCBlbnRyeSBwb2ludCBj b2RlCisgICAgCisgICAgVGhpcyBwYXRjaCBoYW5kbGVzIGFub3RoZXIgYXNwZWN0IG9mIHRoZSBF TEZ2MiBBQkksIHdoaWNoIHVuZm9ydHVuYXRlbHkKKyAgICByZXF1aXJlcyBjb21tb24gY29kZSBj aGFuZ2VzLgorICAgIAorICAgIEluIEVMRnYyLCBmdW5jdGlvbnMgbWF5IHByb3ZpZGUgYm90aCBh IGdsb2JhbCBhbmQgYSBsb2NhbCBlbnRyeSBwb2ludC4KKyAgICBUaGUgZ2xvYmFsIGVudHJ5IHBv aW50ICh3aGVyZSB0aGUgZnVuY3Rpb24gc3ltYm9sIHBvaW50cyB0bykgaXMgaW50ZW5kZWQKKyAg ICB0byBiZSB1c2VkIGZvciBmdW5jdGlvbi1wb2ludGVyIG9yIGNyb3NzLW1vZHVsZSAoUExUKSBj YWxscywgYW5kIHJlcXVpcmVzCisgICAgcjEyIHRvIGJlIHNldCB1cCB0byB0aGUgZW50cnkgcG9p bnQgYWRkcmVzcyBpdHNlbGYuICAgVGhlIGxvY2FsIGVudHJ5CisgICAgcG9pbnQgKHdoaWNoIGlz IGZvdW5kIGF0IGEgZml4ZWQgb2Zmc2V0IGFmdGVyIHRoZSBnbG9iYWwgZW50cnkgcG9pbnQsCisg ICAgYXMgZGVmaW5lZCBieSBiaXRzIGluIHRoZSBzeW1ib2wgdGFibGUgZW50cmllcycgc3Rfb3Ro ZXIgZmllbGQpLCBpbnN0ZWFkCisgICAgZXhwZWN0cyByMiB0byBiZSBzZXQgdXAgdG8gdGhlIGN1 cnJlbnQgVE9DLgorICAgIAorICAgIE5vdywgd2hlbiBzZXR0aW5nIGEgYnJlYWtwb2ludCBvbiBh IGZ1bmN0aW9uIGJ5IG5hbWUsIHlvdSByZWFsbHkgd2FudAorICAgIHRoYXQgYnJlYWtwb2ludCB0 byB0cmlnZ2VyIGVpdGhlciB3YXksIG5vIG1hdHRlciB3aGV0aGVyIHRoZSBmdW5jdGlvbgorICAg IGlzIGNhbGxlZCB2aWEgaXRzIGxvY2FsIG9yIGdsb2JhbCBlbnRyeSBwb2ludC4gIFNpbmNlIHRo ZSBnbG9iYWwgZW50cnkKKyAgICBwb2ludCB3aWxsIGFsd2F5cyBmYWxsIHRocm91Z2ggaW50byB0 aGUgbG9jYWwgZW50cnkgcG9pbnQsIHRoZSB3YXkgdG8KKyAgICBhY2hpZXZlIHRoYXQgaXMgdG8g c2ltcGx5IHNldCB0aGUgYnJlYWtwb2ludCBhdCB0aGUgbG9jYWwgZW50cnkgcG9pbnQuCisgICAg CisgICAgT25lIHdheSB0byBkbyB0aGF0IHdvdWxkIGJlIHRvIGhhdmUgcHJvbG9ndWUgcGFyc2lu ZyBza2lwIHRoZSBjb2RlCisgICAgc2VxdWVuY2UgdGhhdCBtYWtlcyB1cCB0aGUgZ2xvYmFsIGVu dHJ5IHBvaW50LiAgVW5mb3J0dW5hdGVseSwgdGhpcworICAgIGRvZXMgbm90IHdvcmsgcmVsaWFi bHksIHNpbmNlIC1mb3Igb3B0aW1pemVkIGNvZGUtIEdEQiB0aGVzZSBkYXlzCisgICAgd2lsbCBu b3QgYWN0dWFsbCBpbnZva2UgdGhlIHByb2xvZ3VlIHBhcnNpbmcgY29kZSBidXQgaW5zdGVhZCBq dXN0CisgICAgc2V0IHRoZSBicmVha3BvaW50IGF0IHRoZSBzeW1ib2wgYWRkcmVzcyBhbmQgcmVs eSBvbiBEV0FSRiBiZWluZworICAgIGNvcnJlY3QgYXQgYW55IHBvaW50IHRocm91Z2hvdXQgdGhl IGZ1bmN0aW9uIC4uLgorICAgIAorICAgIFVuZm9ydHVuYXRlbHksIEkgZG9uJ3QgcmVhbGx5IHNl ZSBhbnkgd2F5IHRvIGV4cHJlc3MgdGhlIG5vdGlvbiBvZgorICAgIGxvY2FsIGVudHJ5IHBvaW50 cyB3aXRoIHRoZSBjdXJyZW50IHNldCBvZiBnZGJhcmNoIGNhbGxiYWNrcy4KKyAgICAKKyAgICBU aHVzIHRoaXMgcGF0Y2ggYWRkcyBhIG5ldyBjYWxsYmFjaywgc2tpcF9lbnRyeXBvaW50LCB0aGF0 IGlzCisgICAgc29tZXdoYXQgYW5hbG9nb3VzIHRvIHNraXBfcHJvbG9ndWUsIGJ1dCBpcyBjYWxs ZWQgZXZlcnkgdGltZQorICAgIEdEQiBuZWVkcyB0byBkZXRlcm1pbmUgYSBmdW5jdGlvbiBzdGFy dCBhZGRyZXNzLCBldmVuIGluIHRob3NlCisgICAgY2FzZXMgd2hlcmUgR0RCIGRlY2lkZXMgdG8g bm90IGNhbGwgc2tpcF9wcm9sb2d1ZS4KKyAgICAKKyAgICBBcyBhIHNpZGUgZWZmZWN0LCB0aGUg c2tpcF9lbnRyeXBvaW50IGltcGxlbWVudGF0aW9uIG9uIHBwYzY0CisgICAgZG9lcyBub3QgbmVl ZCB0byBwZXJmb3JtIGFueSBpbnN0cnVjdGlvbiBwYXJzaW5nOyBpdCBjYW4gc2ltcGx5CisgICAg cmVseSBvbiB0aGUgbG9jYWwgZW50cnkgcG9pbnQgZmxhZ3MgaW4gdGhlIHN5bWJvbCB0YWJsZSBl bnRyeS4KKyAgICAKKyAgICBXaXRoIHRoaXMgaW1wbGVtZW50ZWQsIHR3byB0ZXN0IGNhc2VzIHdv dWxkIHN0aWxsIGZhaWwgdG8gc2V0CisgICAgdGhlIGJyZWFrcG9pbnQgY29ycmVjdGx5LCBidXQg dGhhdCdzIGJlY2F1c2UgdGhleSB1c2UgdGhlIGNvbnN0cnVjdDoKKyAgICAKKyAgICAgZ2RiX3Rl c3QgImJyZWFrICpoZWxsbyIKKyAgICAKKyAgICBOb3csIHVzaW5nICIqaGVsbG8iIGV4cGxpY2l0 bHkgaW5zdHJ1Y3RzIEdEQiB0byBzZXQgdGhlIGJyZWFrcG9pbnQKKyAgICBhdCB0aGUgbnVtZXJp Y2FsIHZhbHVlIG9mICJoZWxsbyIgdHJlYXRlZCBhcyBmdW5jdGlvbiBwb2ludGVyLCBzbworICAg IGl0IHdpbGwgYnkgZGVmaW5pdGlvbiBvbmx5IGhpdCB0aGUgZ2xvYmFsIGVudHJ5IHBvaW50Lgor ICAgIAorICAgIEkgdGhpbmsgdGhpcyBiZWhhdmlvdXIgaXMgdW5hdm9pZGFibGUsIGJ1dCBhY2Nl cHRhYmxlIC0tIG1vc3QgcGVvcGxlCisgICAgZG8gbm90IHVzZSB0aGlzIGNvbnN0cnVjdCwgYW5k IGlmIHRoZXkgZG8sIHRoZXkgZ2V0IHdoYXQgdGhleQorICAgIGFza2VkIGZvciAuLi4KKyAgICAK KyAgICBJbiBvbmUgb2YgdGhvc2UgdHdvIHRlc3QgY2FzZXMsIHVzZSBvZiB0aGlzIGNvbnN0cnVj dCBpcyByZWFsbHkKKyAgICBub3QgYXBwcm9wcmlhdGUuICBJIHRoaW5rIHRoaXMgd2FzIGFkZGVk IHdheSBiYWNrIHdoZW4gYXMgYSBtZWFucworICAgIHRvIHdvcmsgYXJvdW5kIHByb2xvZ3VlIHNr aXBwaW5nIHByb2JsZW1zIG9uIHNvbWUgcGxhdGZvcm1zLiAgVGhlc2UKKyAgICBkYXlzIHRoYXQg c2hvdWxkbid0IHJlYWxseSBiZSBuZWNlc3NhcnkgYW55IG1vcmUgLi4uCisgICAgCisgICAgRm9y IHRoZSBvdGhlciAoc3RlcC1idCksIHdlIHJlYWxseSB3YW50IHRvIG1ha2Ugc3VyZSBiYWNrdHJh Y2luZworICAgIHdvcmtzIG9uIHRoZSB2ZXJ5IGZpcnN0IGluc3RydWN0aW9uIG9mIHRoZSByb3V0 aW5lLiAgVG8gZW5hYmxlIHRoYXQKKyAgICB0ZXN0IGFsc28gb24gcG93ZXJwYzY0bGUtbGludXgs IHdlIGNhbiBtb2RpZnkgdGhlIGNvZGUgdG8gY2FsbCB0aGUKKyAgICB0ZXN0IGZ1bmN0aW9uIHZp YSBmdW5jdGlvbiBwb2ludGVyICh3aGljaCBtYWtlcyBpdCB1c2UgdGhlIGdsb2JhbAorICAgIGVu dHJ5IHBvaW50IGluIHRoZSBFTEZ2MiBBQkkpLgorICAgIAorICAgIGdkYi9DaGFuZ2VMb2c6Cisg ICAgCisgICAgCSogZ2RiYXJjaC5zaCAoc2tpcF9lbnRyeXBvaW50KTogTmV3IGNhbGxiYWNrLgor ICAgIAkqIGdkYmFyY2guYywgZ2RiYXJjaC5oOiBSZWdlbmVyYXRlLgorICAgIAkqIHN5bXRhYi5j IChza2lwX3Byb2xvZ3VlX3NhbCk6IENhbGwgZ2RiYXJjaF9za2lwX2VudHJ5cG9pbnQuCisgICAg CSogaW5mcnVuLmMgKGZpbGxfaW5fc3RvcF9mdW5jKTogTGlrZXdpc2UuCisgICAgCSogcHBjLWxp bnV4LXRkZXAuYzogSW5jbHVkZSAiZWxmL3BwYzY0LmgiLgorICAgIAkocHBjX2VsZnYyX2VsZl9t YWtlX21zeW1ib2xfc3BlY2lhbCk6IE5ldyBmdW5jdGlvbi4KKyAgICAJKHBwY19lbGZ2Ml9za2lw X2VudHJ5cG9pbnQpOiBMaWtld2lzZS4KKyAgICAJKHBwY19saW51eF9pbml0X2FiaSk6IEluc3Rh bGwgdGhlbSBmb3IgRUxGdjIuCisgICAgCisgICAgZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6Cisg ICAgCisgICAgCSogZ2RiLmJhc2Uvc2lnYnB0LmV4cDogRG8gbm90IHVzZSAiKiIgd2hlbiBzZXR0 aW5nIGJyZWFrcG9pbnQKKyAgICAJb24gYSBmdW5jdGlvbi4KKyAgICAJKiBnZGIuYmFzZS9zdGVw LWJ0LmM6IENhbGwgaGVsbG8gdmlhIGZ1bmN0aW9uIHBvaW50ZXIgdG8gbWFrZQorICAgIAlzdXJl IGl0cyBmaXJzdCBpbnN0cnVjdGlvbiBpcyBleGVjdXRlZCBvbiBwb3dlcnBjNjRsZS1saW51eC4K KworIyMjIGEvZ2RiL0NoYW5nZUxvZworIyMjIGIvZ2RiL0NoYW5nZUxvZworIyMgLTEsNSArMSwx NiBAQAorIDIwMTQtMDItMDQgIFVscmljaCBXZWlnYW5kwqAgPHV3ZWlnYW5kQGRlLmlibS5jb20+ CisgCisrCSogZ2RiYXJjaC5zaCAoc2tpcF9lbnRyeXBvaW50KTogTmV3IGNhbGxiYWNrLgorKwkq IGdkYmFyY2guYywgZ2RiYXJjaC5oOiBSZWdlbmVyYXRlLgorKwkqIHN5bXRhYi5jIChza2lwX3By b2xvZ3VlX3NhbCk6IENhbGwgZ2RiYXJjaF9za2lwX2VudHJ5cG9pbnQuCisrCSogaW5mcnVuLmMg KGZpbGxfaW5fc3RvcF9mdW5jKTogTGlrZXdpc2UuCisrCSogcHBjLWxpbnV4LXRkZXAuYzogSW5j bHVkZSAiZWxmL3BwYzY0LmgiLgorKwkocHBjX2VsZnYyX2VsZl9tYWtlX21zeW1ib2xfc3BlY2lh bCk6IE5ldyBmdW5jdGlvbi4KKysJKHBwY19lbGZ2Ml9za2lwX2VudHJ5cG9pbnQpOiBMaWtld2lz ZS4KKysJKHBwY19saW51eF9pbml0X2FiaSk6IEluc3RhbGwgdGhlbSBmb3IgRUxGdjIuCisrCisr MjAxNC0wMi0wNCAgVWxyaWNoIFdlaWdhbmTCoCA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KKysKKyAJ KiBwcGMtc3lzdi10ZGVwLmMgKHBwYzY0X2FnZ3JlZ2F0ZV9jYW5kaWRhdGUpOiBOZXcgcm91dGlu ZS4KKyAJKHBwYzY0X2VsZnYyX2FiaV9ob21vZ2VuZW91c19hZ2dyZWdhdGUpOiBMaWtld2lzZS4K KyAJKHBwYzY0X3N5c3ZfYWJpX3B1c2hfcGFyYW0pOiBIYW5kbGUgRUxGdjIgaG9tb2dlbmVvdXMg c3RydWN0cy4KKy0tLSBhL2dkYi9nZGJhcmNoLmMKKysrKyBiL2dkYi9nZGJhcmNoLmMKK0BAIC0y MjksNiArMjI5LDcgQEAgc3RydWN0IGdkYmFyY2gKKyAgIGdkYmFyY2hfcmV0dXJuX2luX2ZpcnN0 X2hpZGRlbl9wYXJhbV9wX2Z0eXBlICpyZXR1cm5faW5fZmlyc3RfaGlkZGVuX3BhcmFtX3A7Cisg ICBnZGJhcmNoX3NraXBfcHJvbG9ndWVfZnR5cGUgKnNraXBfcHJvbG9ndWU7CisgICBnZGJhcmNo X3NraXBfbWFpbl9wcm9sb2d1ZV9mdHlwZSAqc2tpcF9tYWluX3Byb2xvZ3VlOworKyAgZ2RiYXJj aF9za2lwX2VudHJ5cG9pbnRfZnR5cGUgKnNraXBfZW50cnlwb2ludDsKKyAgIGdkYmFyY2hfaW5u ZXJfdGhhbl9mdHlwZSAqaW5uZXJfdGhhbjsKKyAgIGdkYmFyY2hfYnJlYWtwb2ludF9mcm9tX3Bj X2Z0eXBlICpicmVha3BvaW50X2Zyb21fcGM7CisgICBnZGJhcmNoX3JlbW90ZV9icmVha3BvaW50 X2Zyb21fcGNfZnR5cGUgKnJlbW90ZV9icmVha3BvaW50X2Zyb21fcGM7CitAQCAtNDA1LDYgKzQw Niw3IEBAIHN0cnVjdCBnZGJhcmNoIHN0YXJ0dXBfZ2RiYXJjaCA9CisgICBkZWZhdWx0X3JldHVy bl9pbl9maXJzdF9oaWRkZW5fcGFyYW1fcCwgIC8qIHJldHVybl9pbl9maXJzdF9oaWRkZW5fcGFy YW1fcCAqLworICAgMCwgIC8qIHNraXBfcHJvbG9ndWUgKi8KKyAgIDAsICAvKiBza2lwX21haW5f cHJvbG9ndWUgKi8KKysgIDAsICAvKiBza2lwX2VudHJ5cG9pbnQgKi8KKyAgIDAsICAvKiBpbm5l cl90aGFuICovCisgICAwLCAgLyogYnJlYWtwb2ludF9mcm9tX3BjICovCisgICBkZWZhdWx0X3Jl bW90ZV9icmVha3BvaW50X2Zyb21fcGMsICAvKiByZW1vdGVfYnJlYWtwb2ludF9mcm9tX3BjICov CitAQCAtNzE0LDYgKzcxNiw3IEBAIHZlcmlmeV9nZGJhcmNoIChzdHJ1Y3QgZ2RiYXJjaCAqZ2Ri YXJjaCkKKyAgIGlmIChnZGJhcmNoLT5za2lwX3Byb2xvZ3VlID09IDApCisgICAgIGZwcmludGZf dW5maWx0ZXJlZCAobG9nLCAiXG5cdHNraXBfcHJvbG9ndWUiKTsKKyAgIC8qIFNraXAgdmVyaWZ5 IG9mIHNraXBfbWFpbl9wcm9sb2d1ZSwgaGFzIHByZWRpY2F0ZS4gICovCisrICAvKiBTa2lwIHZl cmlmeSBvZiBza2lwX2VudHJ5cG9pbnQsIGhhcyBwcmVkaWNhdGUuICAqLworICAgaWYgKGdkYmFy Y2gtPmlubmVyX3RoYW4gPT0gMCkKKyAgICAgZnByaW50Zl91bmZpbHRlcmVkIChsb2csICJcblx0 aW5uZXJfdGhhbiIpOworICAgaWYgKGdkYmFyY2gtPmJyZWFrcG9pbnRfZnJvbV9wYyA9PSAwKQor QEAgLTEzNTMsNiArMTM1NiwxMiBAQCBnZGJhcmNoX2R1bXAgKHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoLCBzdHJ1Y3QgdWlfZmlsZSAqZmlsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgImdkYmFy Y2hfZHVtcDogc2luZ2xlX3N0ZXBfdGhyb3VnaF9kZWxheSA9IDwlcz5cbiIsCisgICAgICAgICAg ICAgICAgICAgICAgIGhvc3RfYWRkcmVzc190b19zdHJpbmcgKGdkYmFyY2gtPnNpbmdsZV9zdGVw X3Rocm91Z2hfZGVsYXkpKTsKKyAgIGZwcmludGZfdW5maWx0ZXJlZCAoZmlsZSwKKysgICAgICAg ICAgICAgICAgICAgICAgImdkYmFyY2hfZHVtcDogZ2RiYXJjaF9za2lwX2VudHJ5cG9pbnRfcCgp ID0gJWRcbiIsCisrICAgICAgICAgICAgICAgICAgICAgIGdkYmFyY2hfc2tpcF9lbnRyeXBvaW50 X3AgKGdkYmFyY2gpKTsKKysgIGZwcmludGZfdW5maWx0ZXJlZCAoZmlsZSwKKysgICAgICAgICAg ICAgICAgICAgICAgImdkYmFyY2hfZHVtcDogc2tpcF9lbnRyeXBvaW50ID0gPCVzPlxuIiwKKysg ICAgICAgICAgICAgICAgICAgICAgaG9zdF9hZGRyZXNzX3RvX3N0cmluZyAoZ2RiYXJjaC0+c2tp cF9lbnRyeXBvaW50KSk7CisrICBmcHJpbnRmX3VuZmlsdGVyZWQgKGZpbGUsCisgICAgICAgICAg ICAgICAgICAgICAgICJnZGJhcmNoX2R1bXA6IGdkYmFyY2hfc2tpcF9tYWluX3Byb2xvZ3VlX3Ao KSA9ICVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICBnZGJhcmNoX3NraXBfbWFpbl9wcm9s b2d1ZV9wIChnZGJhcmNoKSk7CisgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGZpbGUsCitAQCAtMjcw Myw2ICsyNzEyLDMwIEBAIHNldF9nZGJhcmNoX3NraXBfbWFpbl9wcm9sb2d1ZSAoc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gsCisgfQorIAorIGludAorK2dkYmFyY2hfc2tpcF9lbnRyeXBvaW50X3Ag KHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQorK3sKKysgIGdkYl9hc3NlcnQgKGdkYmFyY2ggIT0g TlVMTCk7CisrICByZXR1cm4gZ2RiYXJjaC0+c2tpcF9lbnRyeXBvaW50ICE9IE5VTEw7CisrfQor KworK0NPUkVfQUREUgorK2dkYmFyY2hfc2tpcF9lbnRyeXBvaW50IChzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCwgQ09SRV9BRERSIGlwKQorK3sKKysgIGdkYl9hc3NlcnQgKGdkYmFyY2ggIT0gTlVM TCk7CisrICBnZGJfYXNzZXJ0IChnZGJhcmNoLT5za2lwX2VudHJ5cG9pbnQgIT0gTlVMTCk7Cisr ICBpZiAoZ2RiYXJjaF9kZWJ1ZyA+PSAyKQorKyAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9z dGRsb2csICJnZGJhcmNoX3NraXBfZW50cnlwb2ludCBjYWxsZWRcbiIpOworKyAgcmV0dXJuIGdk YmFyY2gtPnNraXBfZW50cnlwb2ludCAoZ2RiYXJjaCwgaXApOworK30KKysKKyt2b2lkCisrc2V0 X2dkYmFyY2hfc2tpcF9lbnRyeXBvaW50IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGdkYmFyY2hfc2tpcF9lbnRyeXBvaW50X2Z0eXBlIHNr aXBfZW50cnlwb2ludCkKKyt7CisrICBnZGJhcmNoLT5za2lwX2VudHJ5cG9pbnQgPSBza2lwX2Vu dHJ5cG9pbnQ7CisrfQorKworK2ludAorIGdkYmFyY2hfaW5uZXJfdGhhbiAoc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2gsIENPUkVfQUREUiBsaHMsIENPUkVfQUREUiByaHMpCisgeworICAgZ2RiX2Fz c2VydCAoZ2RiYXJjaCAhPSBOVUxMKTsKKy0tLSBhL2dkYi9nZGJhcmNoLmgKKysrKyBiL2dkYi9n ZGJhcmNoLmgKK0BAIC00ODYsNiArNDg2LDI0IEBAIHR5cGVkZWYgQ09SRV9BRERSIChnZGJhcmNo X3NraXBfbWFpbl9wcm9sb2d1ZV9mdHlwZSkgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDCisg ZXh0ZXJuIENPUkVfQUREUiBnZGJhcmNoX3NraXBfbWFpbl9wcm9sb2d1ZSAoc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2gsIENPUkVfQUREUiBpcCk7CisgZXh0ZXJuIHZvaWQgc2V0X2dkYmFyY2hfc2tp cF9tYWluX3Byb2xvZ3VlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgZ2RiYXJjaF9za2lwX21h aW5fcHJvbG9ndWVfZnR5cGUgKnNraXBfbWFpbl9wcm9sb2d1ZSk7CisgCisrLyogT24gc29tZSBw bGF0Zm9ybXMsIGEgc2luZ2xlIGZ1bmN0aW9uIG1heSBwcm92aWRlIG11bHRpcGxlIGVudHJ5IHBv aW50cywKKysgICBlLmcuIG9uZSB0aGF0IGlzIHVzZWQgZm9yIGZ1bmN0aW9uLXBvaW50ZXIgY2Fs bHMgYW5kIGEgZGlmZmVyZW50IG9uZQorKyAgIHRoYXQgaXMgdXNlZCBmb3IgZGlyZWN0IGZ1bmN0 aW9uIGNhbGxzLgorKyAgIEluIG9yZGVyIHRvIGVuc3VyZSB0aGF0IGJyZWFrcG9pbnRzIHNldCBv biB0aGUgZnVuY3Rpb24gd2lsbCB0cmlnZ2VyCisrICAgbm8gbWF0dGVyIHZpYSB3aGljaCBlbnRy eSBwb2ludCB0aGUgZnVuY3Rpb24gaXMgZW50ZXJlZCwgYSBwbGF0Zm9ybQorKyAgIG1heSBwcm92 aWRlIHRoZSBza2lwX2VudHJ5cG9pbnQgY2FsbGJhY2suICBJdCBpcyBjYWxsZWQgd2l0aCBJUCBz ZXQKKysgICB0byB0aGUgbWFpbiBlbnRyeSBwb2ludCBvZiBhIGZ1bmN0aW9uIChhcyBkZXRlcm1p bmVkIGJ5IHRoZSBzeW1ib2wgdGFibGUpLAorKyAgIGFuZCBzaG91bGQgcmV0dXJuIHRoZSBhZGRy ZXNzIG9mIHRoZSBpbm5lcm1vc3QgZW50cnkgcG9pbnQsIHdoZXJlIHRoZQorKyAgIGFjdHVhbCBi cmVha3BvaW50IG5lZWRzIHRvIGJlIHNldC4gIE5vdGUgdGhhdCBza2lwX2VudHJ5cG9pbnQgaXMg dXNlZAorKyAgIGJ5IEdEQiBjb21tb24gY29kZSBldmVuIHdoZW4gZGVidWdnaW5nIG9wdGltaXpl ZCBjb2RlLCB3aGVyZSBza2lwX3Byb2xvZ3VlCisrICAgaXMgbm90IHVzZWQuICovCisrCisrZXh0 ZXJuIGludCBnZGJhcmNoX3NraXBfZW50cnlwb2ludF9wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJj aCk7CisrCisrdHlwZWRlZiBDT1JFX0FERFIgKGdkYmFyY2hfc2tpcF9lbnRyeXBvaW50X2Z0eXBl KSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBpcCk7CisrZXh0ZXJuIENPUkVf QUREUiBnZGJhcmNoX3NraXBfZW50cnlwb2ludCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENP UkVfQUREUiBpcCk7CisrZXh0ZXJuIHZvaWQgc2V0X2dkYmFyY2hfc2tpcF9lbnRyeXBvaW50IChz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgZ2RiYXJjaF9za2lwX2VudHJ5cG9pbnRfZnR5cGUgKnNr aXBfZW50cnlwb2ludCk7CisrCisgdHlwZWRlZiBpbnQgKGdkYmFyY2hfaW5uZXJfdGhhbl9mdHlw ZSkgKENPUkVfQUREUiBsaHMsIENPUkVfQUREUiByaHMpOworIGV4dGVybiBpbnQgZ2RiYXJjaF9p bm5lcl90aGFuIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgQ09SRV9BRERSIGxocywgQ09SRV9B RERSIHJocyk7CisgZXh0ZXJuIHZvaWQgc2V0X2dkYmFyY2hfaW5uZXJfdGhhbiAoc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gsIGdkYmFyY2hfaW5uZXJfdGhhbl9mdHlwZSAqaW5uZXJfdGhhbik7Cist LS0gYS9nZGIvZ2RiYXJjaC5zaAorKysrIGIvZ2RiL2dkYmFyY2guc2gKK0BAIC01MzAsNiArNTMw LDE5IEBAIG06aW50OnJldHVybl9pbl9maXJzdF9oaWRkZW5fcGFyYW1fcDpzdHJ1Y3QgdHlwZSAq dHlwZTp0eXBlOjpkZWZhdWx0X3JldHVybl9pbl9mCisgCisgbTpDT1JFX0FERFI6c2tpcF9wcm9s b2d1ZTpDT1JFX0FERFIgaXA6aXA6MDowCisgTTpDT1JFX0FERFI6c2tpcF9tYWluX3Byb2xvZ3Vl OkNPUkVfQUREUiBpcDppcAorKyMgT24gc29tZSBwbGF0Zm9ybXMsIGEgc2luZ2xlIGZ1bmN0aW9u IG1heSBwcm92aWRlIG11bHRpcGxlIGVudHJ5IHBvaW50cywKKysjIGUuZy4gb25lIHRoYXQgaXMg dXNlZCBmb3IgZnVuY3Rpb24tcG9pbnRlciBjYWxscyBhbmQgYSBkaWZmZXJlbnQgb25lCisrIyB0 aGF0IGlzIHVzZWQgZm9yIGRpcmVjdCBmdW5jdGlvbiBjYWxscy4KKysjIEluIG9yZGVyIHRvIGVu c3VyZSB0aGF0IGJyZWFrcG9pbnRzIHNldCBvbiB0aGUgZnVuY3Rpb24gd2lsbCB0cmlnZ2VyCisr IyBubyBtYXR0ZXIgdmlhIHdoaWNoIGVudHJ5IHBvaW50IHRoZSBmdW5jdGlvbiBpcyBlbnRlcmVk LCBhIHBsYXRmb3JtCisrIyBtYXkgcHJvdmlkZSB0aGUgc2tpcF9lbnRyeXBvaW50IGNhbGxiYWNr LiAgSXQgaXMgY2FsbGVkIHdpdGggSVAgc2V0CisrIyB0byB0aGUgbWFpbiBlbnRyeSBwb2ludCBv ZiBhIGZ1bmN0aW9uIChhcyBkZXRlcm1pbmVkIGJ5IHRoZSBzeW1ib2wgdGFibGUpLAorKyMgYW5k IHNob3VsZCByZXR1cm4gdGhlIGFkZHJlc3Mgb2YgdGhlIGlubmVybW9zdCBlbnRyeSBwb2ludCwg d2hlcmUgdGhlCisrIyBhY3R1YWwgYnJlYWtwb2ludCBuZWVkcyB0byBiZSBzZXQuICBOb3RlIHRo YXQgc2tpcF9lbnRyeXBvaW50IGlzIHVzZWQKKysjIGJ5IEdEQiBjb21tb24gY29kZSBldmVuIHdo ZW4gZGVidWdnaW5nIG9wdGltaXplZCBjb2RlLCB3aGVyZSBza2lwX3Byb2xvZ3VlCisrIyBpcyBu b3QgdXNlZC4KKytNOkNPUkVfQUREUjpza2lwX2VudHJ5cG9pbnQ6Q09SRV9BRERSIGlwOmlwCisr CisgZjppbnQ6aW5uZXJfdGhhbjpDT1JFX0FERFIgbGhzLCBDT1JFX0FERFIgcmhzOmxocywgcmhz OjA6MAorIG06Y29uc3QgZ2RiX2J5dGUgKjpicmVha3BvaW50X2Zyb21fcGM6Q09SRV9BRERSICpw Y3B0ciwgaW50ICpsZW5wdHI6cGNwdHIsIGxlbnB0cjo6MDoKKyAjIFJldHVybiB0aGUgYWRqdXN0 ZWQgYWRkcmVzcyBhbmQga2luZCB0byB1c2UgZm9yIFowL1oxIHBhY2tldHMuCistLS0gYS9nZGIv aW5mcnVuLmMKKysrKyBiL2dkYi9pbmZydW4uYworQEAgLTMxNTksNiArMzE1OSwxMCBAQCBmaWxs X2luX3N0b3BfZnVuYyAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisgICAgICAgZWNzLT5zdG9w X2Z1bmNfc3RhcnQKKyAJKz0gZ2RiYXJjaF9kZXByZWNhdGVkX2Z1bmN0aW9uX3N0YXJ0X29mZnNl dCAoZ2RiYXJjaCk7CisgCisrICAgICAgaWYgKGdkYmFyY2hfc2tpcF9lbnRyeXBvaW50X3AgKGdk YmFyY2gpKQorKwllY3MtPnN0b3BfZnVuY19zdGFydCA9IGdkYmFyY2hfc2tpcF9lbnRyeXBvaW50 IChnZGJhcmNoLAorKwkJCQkJCQllY3MtPnN0b3BfZnVuY19zdGFydCk7CisrCisgICAgICAgZWNz LT5zdG9wX2Z1bmNfZmlsbGVkX2luID0gMTsKKyAgICAgfQorIH0KKy0tLSBhL2dkYi9wcGMtbGlu dXgtdGRlcC5jCisrKysgYi9nZGIvcHBjLWxpbnV4LXRkZXAuYworQEAgLTQ0LDYgKzQ0LDcgQEAK KyAjaW5jbHVkZSAib2JzZXJ2ZXIuaCIKKyAjaW5jbHVkZSAiYXV4di5oIgorICNpbmNsdWRlICJl bGYvY29tbW9uLmgiCisrI2luY2x1ZGUgImVsZi9wcGM2NC5oIgorICNpbmNsdWRlICJleGNlcHRp b25zLmgiCisgI2luY2x1ZGUgImFyY2gtdXRpbHMuaCIKKyAjaW5jbHVkZSAic3B1LXRkZXAuaCIK K0BAIC04NzYsNiArODc3LDU1IEBAIHBwY19saW51eF9jb3JlX3JlYWRfZGVzY3JpcHRpb24gKHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorICAgICB9CisgfQorIAorKworKy8qIEltcGxlbWVudGF0 aW9uIG9mIGBnZGJhcmNoX2VsZl9tYWtlX21zeW1ib2xfc3BlY2lhbCcsIGFzIGRlZmluZWQgaW4K KysgICBnZGJhcmNoLmguICBUaGlzIGltcGxlbWVudGF0aW9uIGlzIHVzZWQgZm9yIHRoZSBFTEZ2 MiBBQkkgb25seS4gICovCisrCisrc3RhdGljIHZvaWQKKytwcGNfZWxmdjJfZWxmX21ha2VfbXN5 bWJvbF9zcGVjaWFsIChhc3ltYm9sICpzeW0sIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5bSkK Kyt7CisrICBlbGZfc3ltYm9sX3R5cGUgKmVsZl9zeW0gPSAoZWxmX3N5bWJvbF90eXBlICopc3lt OworKworKyAgLyogSWYgdGhlIHN5bWJvbCBpcyBtYXJrZWQgYXMgaGF2aW5nIGEgbG9jYWwgZW50 cnkgcG9pbnQsIHNldCBhIHRhcmdldAorKyAgICAgZmxhZyBpbiB0aGUgbXN5bWJvbC4gIFdlIGN1 cnJlbnRseSBvbmx5IHN1cHBvcnQgbG9jYWwgZW50cnkgcG9pbnQKKysgICAgIG9mZnNldHMgb2Yg OCBieXRlcywgd2hpY2ggaXMgdGhlIG9ubHkgZW50cnkgcG9pbnQgb2Zmc2V0IGV2ZXIgdXNlZAor KyAgICAgYnkgY3VycmVudCBjb21waWxlcnMuICBJZi93aGVuIG90aGVyIG9mZnNldHMgYXJlIGV2 ZXIgdXNlZCwgd2Ugd2lsbAorKyAgICAgaGF2ZSB0byB1c2UgYWRkaXRpb25hbCB0YXJnZXQgZmxh ZyBiaXRzIHRvIHN0b3JlIHRoZW0uICAqLworKyAgc3dpdGNoIChQUEM2NF9MT0NBTF9FTlRSWV9P RkZTRVQgKGVsZl9zeW0tPmludGVybmFsX2VsZl9zeW0uc3Rfb3RoZXIpKQorKyAgICB7CisrICAg IGRlZmF1bHQ6CisrICAgICAgYnJlYWs7CisrICAgIGNhc2UgODoKKysgICAgICBNU1lNQk9MX1RB UkdFVF9GTEFHXzEgKG1zeW0pID0gMTsKKysgICAgICBicmVhazsKKysgICAgfQorK30KKysKKysv KiBJbXBsZW1lbnRhdGlvbiBvZiBgZ2RiYXJjaF9za2lwX2VudHJ5cG9pbnQnLCBhcyBkZWZpbmVk IGluCisrICAgZ2RiYXJjaC5oLiAgVGhpcyBpbXBsZW1lbnRhdGlvbiBpcyB1c2VkIGZvciB0aGUg RUxGdjIgQUJJIG9ubHkuICAqLworKworK3N0YXRpYyBDT1JFX0FERFIKKytwcGNfZWxmdjJfc2tp cF9lbnRyeXBvaW50IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgQ09SRV9BRERSIHBjKQorK3sK KysgIHN0cnVjdCBib3VuZF9taW5pbWFsX3N5bWJvbCBmdW47CisrICBpbnQgbG9jYWxfZW50cnlf b2Zmc2V0ID0gMDsKKysKKysgIGZ1biA9IGxvb2t1cF9taW5pbWFsX3N5bWJvbF9ieV9wYyAocGMp OworKyAgaWYgKGZ1bi5taW5zeW0gPT0gTlVMTCkKKysgICAgcmV0dXJuIHBjOworKworKyAgLyog U2VlIHBwY19lbGZ2Ml9lbGZfbWFrZV9tc3ltYm9sX3NwZWNpYWwgZm9yIGhvdyBsb2NhbCBlbnRy eSBwb2ludAorKyAgICAgb2Zmc2V0IHZhbHVlcyBhcmUgZW5jb2RlZC4gICovCisrICBpZiAoTVNZ TUJPTF9UQVJHRVRfRkxBR18xIChmdW4ubWluc3ltKSkKKysgICAgbG9jYWxfZW50cnlfb2Zmc2V0 ID0gODsKKysKKysgIGlmIChTWU1CT0xfVkFMVUVfQUREUkVTUyAoZnVuLm1pbnN5bSkgPD0gcGMK KysgICAgICAmJiBwYyA8IFNZTUJPTF9WQUxVRV9BRERSRVNTIChmdW4ubWluc3ltKSArIGxvY2Fs X2VudHJ5X29mZnNldCkKKysgICAgcmV0dXJuIFNZTUJPTF9WQUxVRV9BRERSRVNTIChmdW4ubWlu c3ltKSArIGxvY2FsX2VudHJ5X29mZnNldDsKKysKKysgIHJldHVybiBwYzsKKyt9CisrCisgLyog SW1wbGVtZW50YXRpb24gb2YgYGdkYmFyY2hfc3RhcF9pc19zaW5nbGVfb3BlcmFuZCcsIGFzIGRl ZmluZWQgaW4KKyAgICBnZGJhcmNoLmguICAqLworIAorQEAgLTEzNDksNiArMTM5OSwxMyBAQCBw cGNfbGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywKKyAJICBzZXRfZ2Ri YXJjaF9lbGZfbWFrZV9tc3ltYm9sX3NwZWNpYWwKKyAJICAgIChnZGJhcmNoLCBwcGM2NF9lbGZf bWFrZV9tc3ltYm9sX3NwZWNpYWwpOworIAl9CisrICAgICAgZWxzZQorKwl7CisrCSAgc2V0X2dk YmFyY2hfZWxmX21ha2VfbXN5bWJvbF9zcGVjaWFsCisrCSAgICAoZ2RiYXJjaCwgcHBjX2VsZnYy X2VsZl9tYWtlX21zeW1ib2xfc3BlY2lhbCk7CisrCisrCSAgc2V0X2dkYmFyY2hfc2tpcF9lbnRy eXBvaW50IChnZGJhcmNoLCBwcGNfZWxmdjJfc2tpcF9lbnRyeXBvaW50KTsKKysJfQorIAorICAg ICAgIC8qIFNoYXJlZCBsaWJyYXJ5IGhhbmRsaW5nLiAgKi8KKyAgICAgICBzZXRfZ2RiYXJjaF9z a2lwX3RyYW1wb2xpbmVfY29kZSAoZ2RiYXJjaCwgcHBjNjRfc2tpcF90cmFtcG9saW5lX2NvZGUp OworLS0tIGEvZ2RiL3N5bXRhYi5jCisrKysgYi9nZGIvc3ltdGFiLmMKK0BAIC0yOTUwLDYgKzI5 NTAsOCBAQCBza2lwX3Byb2xvZ3VlX3NhbCAoc3RydWN0IHN5bXRhYl9hbmRfbGluZSAqc2FsKQor IAorICAgICAgIC8qIFNraXAgImZpcnN0IGxpbmUiIG9mIGZ1bmN0aW9uICh3aGljaCBpcyBhY3R1 YWxseSBpdHMgcHJvbG9ndWUpLiAgKi8KKyAgICAgICBwYyArPSBnZGJhcmNoX2RlcHJlY2F0ZWRf ZnVuY3Rpb25fc3RhcnRfb2Zmc2V0IChnZGJhcmNoKTsKKysgICAgICBpZiAoZ2RiYXJjaF9za2lw X2VudHJ5cG9pbnRfcCAoZ2RiYXJjaCkpCisrICAgICAgICBwYyA9IGdkYmFyY2hfc2tpcF9lbnRy eXBvaW50IChnZGJhcmNoLCBwYyk7CisgICAgICAgaWYgKHNraXApCisgCXBjID0gZ2RiYXJjaF9z a2lwX3Byb2xvZ3VlIChnZGJhcmNoLCBwYyk7CisgCisjIyMgYS9nZGIvdGVzdHN1aXRlL0NoYW5n ZUxvZworIyMjIGIvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cKKyMjIC0xLDUgKzEsMTIgQEAKKyAy MDE0LTAyLTA0ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CisgCisrCSog Z2RiLmJhc2Uvc2lnYnB0LmV4cDogRG8gbm90IHVzZSAiKiIgd2hlbiBzZXR0aW5nIGJyZWFrcG9p bnQKKysJb24gYSBmdW5jdGlvbi4KKysJKiBnZGIuYmFzZS9zdGVwLWJ0LmM6IENhbGwgaGVsbG8g dmlhIGZ1bmN0aW9uIHBvaW50ZXIgdG8gbWFrZQorKwlzdXJlIGl0cyBmaXJzdCBpbnN0cnVjdGlv biBpcyBleGVjdXRlZCBvbiBwb3dlcnBjNjRsZS1saW51eC4KKysKKysyMDE0LTAyLTA0ICBVbHJp Y2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CisrCisgCSogZ2RiLmFyY2gvcG93ZXJw Yy1kMTI4LXJlZ3MuZXhwOiBFbmFibGUgb24gcG93ZXJwYzY0Ki0qLgorIAorIDIwMTQtMDItMDQg IFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KKy0tLSBhL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2Uvc2lnYnB0LmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWdi cHQuZXhwCitAQCAtNzYsNyArNzYsNyBAQCBnZGJfdGVzdCAiYnJlYWsga2VlcGVyIgorIHNldCBi b3dsZXJfYWRkcnMgYm93bGVyCisgc2V0IHNlZ3ZfYWRkciBub25lCisgZ2RiX3Rlc3Qge2Rpc3Bs YXkvaSAkcGN9CistZ2RiX3Rlc3QgImFkdmFuY2UgKmJvd2xlciIgImJvd2xlci4qIiAiYWR2YW5j ZSB0byB0aGUgYm93bGVyIgorK2dkYl90ZXN0ICJhZHZhbmNlIGJvd2xlciIgImJvd2xlci4qIiAi YWR2YW5jZSB0byB0aGUgYm93bGVyIgorIHNldCB0ZXN0ICJzdGVwcGluZyB0byBmYXVsdCIKKyBz ZXQgc2lnbmFtZSAiU0lHU0VHViIKKyBnZGJfdGVzdF9tdWx0aXBsZSAic3RlcGkiICIkdGVzdCIg eworLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zdGVwLWJ0LmMKKysrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2Uvc3RlcC1idC5jCitAQCAtMjMsMTAgKzIzLDE5IEBAIGhlbGxvICh2b2lk KQorICAgcHJpbnRmICgiSGVsbG8gd29ybGQuXG4iKTsKKyB9CisgCisrLyogVGhlIHRlc3QgY2Fz ZSB1c2VzICJicmVhayAqaGVsbG8iIHRvIG1ha2Ugc3VyZSB0byBzdGVwIGF0IHRoZSB2ZXJ5Cisr ICAgZmlyc3QgaW5zdHJ1Y3Rpb24gb2YgdGhlIGZ1bmN0aW9uLiAgVGhpcyBjYXVzZXMgYSBwcm9i bGVtIHJ1bm5pbmcKKysgICB0aGUgdGVzdCBvbiBwb3dlcnBjNjRsZS1saW51eCwgc2luY2UgdGhl IGZpcnN0IGluc3RydWN0aW9uIGJlbG9uZ3MKKysgICB0byB0aGUgZ2xvYmFsIGVudHJ5IHBvaW50 IHByb2xvZ3VlLCB3aGljaCBpcyBza2lwcGVkIHdoZW4gZG9pbmcgYQorKyAgIGxvY2FsIGRpcmVj dCBmdW5jdGlvbiBjYWxsLiAgVG8gbWFrZSBzdXJlIHRoYXQgZmlyc3QgaW5zdHJ1Y3Rpb24gaXMK KysgICBpbmRlZWQgYmVpbmcgZXhlY3V0ZWQgYW5kIHRoZSBicmVha3BvaW50IGhpdHMsIHdlIG1h a2Ugc3VyZSB0byBjYWxsCisrICAgdGhlIHJvdXRpbmUgdmlhIGFuIGluZGlyZWN0IGNhbGwuICAq LworK3ZvaWQgKCpwdHIpICh2b2lkKSA9IGhlbGxvOworKworIGludAorIG1haW4gKHZvaWQpCisg eworLSAgaGVsbG8gKCk7CisrICBwdHIgKCk7CisgCisgICByZXR1cm4gMDsKKyB9CgpkaWZmIC0t Z2l0IGEvZ2RiLXVwc3RyZWFtLXBwYzY0bGUxNW9mMTUucGF0Y2ggYi9nZGItdXBzdHJlYW0tcHBj NjRsZTE1b2YxNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjFi ZjY4Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiLXVwc3RyZWFtLXBwYzY0bGUxNW9mMTUucGF0Y2gK QEAgLTAsMCArMSw5MCBAQAorY29tbWl0IGJjOWE1NTI1M2VkNzEyMmNmZWVlOTBjZDIzZDk2NGY0 NGM4YjBlNmEKK0F1dGhvcjogVWxyaWNoIFdlaWdhbmQgPHVscmljaC53ZWlnYW5kQGRlLmlibS5j b20+CitEYXRlOiAgIFR1ZSBNYXIgMjUgMTU6Mzk6MzIgMjAxNCArMDEwMAorCisgICAgU3VwcG9y dCBnZGIuYXNtL2FzbS1zb3VyY2UuZXhwIG9uIHBvd2VycGM2NGxlCisgICAgCisgICAgQWRkIG5l dyBwb3dlcnBjNjRsZS5pbmMgZmlsZSBhcHByb3ByaWF0ZSBmb3IgdGhlIEVMRnYyIEFCSSBhbmQK KyAgICB1c2UgaXQgdG8gc3VwcG9ydCB0aGUgYXNtLXNvdXJjZS5leHAgdGVzdCBjYXNlIG9uIHBv d2VycGM2NGxlLgorICAgIAorICAgIGdkYi90ZXN0c3VpdGUvCisgICAgMjAxNC0wMy0yNSAgVWxy aWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgorICAgIAorICAgIAkqIGdkYi5hc20v YXNtLXNvdXJjZS5leHA6IEhhbmRsZSBwb3dlcnBjNjRsZS0qIHRhcmdldHMuCisgICAgCSogZ2Ri LmFzbS9wb3dlcnBjNjRsZS5pbmM6IE5ldyBmaWxlLgorCisjIyMgYS9nZGIvdGVzdHN1aXRlL0No YW5nZUxvZworIyMjIGIvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cKKyMjIC0xLDMgKzEsOCBAQAor KzIwMTQtMDMtMjUgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KKysKKysJ KiBnZGIuYXNtL2FzbS1zb3VyY2UuZXhwOiBIYW5kbGUgcG93ZXJwYzY0bGUtKiB0YXJnZXRzLgor KwkqIGdkYi5hc20vcG93ZXJwYzY0bGUuaW5jOiBOZXcgZmlsZS4KKysKKyAyMDE0LTAzLTI1ICBQ ZWRybyBBbHZlcyAgPHBhbHZlc0ByZWRoYXQuY29tPgorIAkgICAgRG91ZyBFdmFucyAgPGRqZUBn b29nbGUuY29tPgorIAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXNtL2FzbS1zb3VyY2UuZXhw CisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5hc20vYXNtLXNvdXJjZS5leHAKK0BAIC05Nyw2ICs5 NywxMSBAQCBzd2l0Y2ggLWdsb2IgLS0gW2lzdGFyZ2V0XSB7CisgICAgICJtaXBzKi0qIiB7Cisg ICAgICAgICBzZXQgYXNtLWFyY2ggbWlwcworICAgICB9CisrICAgICJwb3dlcnBjNjRsZS0qIiB7 CisrICAgICAgICBzZXQgYXNtLWFyY2ggcG93ZXJwYzY0bGUKKysgICAgICAgIHNldCBhc20tZmxh Z3MgIi1hNjQgLUkke3NyY2Rpcn0vJHtzdWJkaXJ9ICRvYmpfaW5jbHVkZSIKKysgICAgICAgIGFw cGVuZCBsaW5rLWZsYWdzICIgLW0gZWxmNjRscHBjIgorKyAgICB9CisgICAgICJwb3dlcnBjKi0q IiB7CisgICAgICAgICBpZiB7IFtpc19scDY0X3RhcmdldF0gfSB7CisgICAgICAgICAgICAgc2V0 IGFzbS1hcmNoIHBvd2VycGM2NAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYXNtL3Bvd2VycGM2NGxlLmluYworQEAgLTAsMCArMSw0NyBAQAorKwljb21tZW50ICJzdWJy b3V0aW5lIHByb2xvZ3VlIgorKwkubWFjcm8gZ2RiYXNtX2VudGVyCisrCXN0ZHUgMSwgLTMyKDEp CisrCW1mbHIgMAorKwlzdGQgMCwgNDgoMSkKKysJLmVuZG0KKysKKysJY29tbWVudCAic3Vicm91 dGluZSBlcGlsb2d1ZSIKKysJLm1hY3JvIGdkYmFzbV9sZWF2ZQorKwlsZCAwLCA0OCgxKQorKwlt dGxyIDAKKysJbGQgMSwgMCgxKQorKwlibHIKKysJLmVuZG0KKysKKysJLm1hY3JvIGdkYmFzbV9j YWxsIHN1YnIKKysJYmwgXHN1YnIKKysJbm9wCisrCS5lbmRtCisrCisrCS5tYWNybyBnZGJhc21f c2V2ZXJhbF9ub3BzCisrCW5vcAorKwlub3AKKysJbm9wCisrCW5vcAorKwkuZW5kbQorKworKwlj b21tZW50ICJleGl0ICgwKSIKKysJLm1hY3JvIGdkYmFzbV9leGl0MAorKwljb21tZW50ICJzeXNf ZXhpdCIKKysJbGkJMCwgMQorKwlzYworKwkuZW5kbQorKworKwljb21tZW50ICJjcnQwIHN0YXJ0 dXAiCisrCS5tYWNybyBnZGJhc21fc3RhcnR1cAorKwkuYWJpdmVyc2lvbiAyCisrCS5wMmFsaWdu IDIKKysJLmVuZG0KKysKKysJY29tbWVudCAiRGVjbGFyZSBhIGRhdGEgdmFyaWFibGUiCisrCS5w dXJnZW0gZ2RiYXNtX2RhdGF2YXIKKysJLm1hY3JvIGdkYmFzbV9kYXRhdmFyIG5hbWUgdmFsdWUK KysJLnNlY3Rpb24JIi5kYXRhIgorK1xuYW1lOgorKwkubG9uZyBcdmFsdWUKKysJLmVuZG0KCmRp ZmYgLS1naXQgYS9nZGIuc3BlYyBiL2dkYi5zcGVjCmluZGV4IDg2Y2ZhZGUuLmZiNDM4OTEgMTAw NjQ0Ci0tLSBhL2dkYi5zcGVjCisrKyBiL2dkYi5zcGVjCkBAIC0zOSw3ICszOSw3IEBAIFZlcnNp b246IDcuNy4xCiAKICMgVGhlIHJlbGVhc2UgYWx3YXlzIGNvbnRhaW5zIGEgbGVhZGluZyByZXNl cnZlZCBudW1iZXIsIHN0YXJ0IGl0IGF0IDEuCiAjIGB1cHN0cmVhbScgaXMgbm90IGEgcGFydCBv ZiBgbmFtZScgdG8gc3RheSBmdWxseSBycG0gZGVwZW5kZW5jaWVzIGNvbXBhdGlibGUgZm9yIHRo ZSB0ZXN0aW5nLgotUmVsZWFzZTogMTAlez9kaXN0fQorUmVsZWFzZTogMTElez9kaXN0fQogCiBM aWNlbnNlOiBHUEx2MysgYW5kIEdQTHYzKyB3aXRoIGV4Y2VwdGlvbnMgYW5kIEdQTHYyKyBhbmQg R1BMdjIrIHdpdGggZXhjZXB0aW9ucyBhbmQgR1BMKyBhbmQgTEdQTHYyKyBhbmQgQlNEIGFuZCBQ dWJsaWMgRG9tYWluIGFuZCBHRkRMCiBHcm91cDogRGV2ZWxvcG1lbnQvRGVidWdnZXJzCkBAIC0y MzcsNiArMjM3LDIwIEBAIFBhdGNoMjMxOiBnZGItNi4zLWJ6MjAyNjg5LWV4ZWMtZnJvbS1wdGhy ZWFkLXRlc3QucGF0Y2gKICMgQmFja3BvcnRlZCBmaXh1cHMgcG9zdCB0aGUgc291cmNlIHRhcmJh bGwuCiAjWGRyb3A6IEp1c3QgYmFja3BvcnRzLgogUGF0Y2gyMzI6IGdkYi11cHN0cmVhbS5wYXRj aAorUGF0Y2g4Njg6IGdkYi11cHN0cmVhbS1wcGM2NGxlMDJvZjE1LnBhdGNoCitQYXRjaDg2OTog Z2RiLXVwc3RyZWFtLXBwYzY0bGUwM29mMTUucGF0Y2gKK1BhdGNoODcwOiBnZGItdXBzdHJlYW0t cHBjNjRsZTA0b2YxNS5wYXRjaAorUGF0Y2g4NzE6IGdkYi11cHN0cmVhbS1wcGM2NGxlMDVvZjE1 LnBhdGNoCitQYXRjaDg3MjogZ2RiLXVwc3RyZWFtLXBwYzY0bGUwNm9mMTUucGF0Y2gKK1BhdGNo ODczOiBnZGItdXBzdHJlYW0tcHBjNjRsZTA3b2YxNS5wYXRjaAorUGF0Y2g4NzQ6IGdkYi11cHN0 cmVhbS1wcGM2NGxlMDhvZjE1LnBhdGNoCitQYXRjaDg3NTogZ2RiLXVwc3RyZWFtLXBwYzY0bGUw OW9mMTUucGF0Y2gKK1BhdGNoODc2OiBnZGItdXBzdHJlYW0tcHBjNjRsZTEwb2YxNS5wYXRjaAor UGF0Y2g4Nzc6IGdkYi11cHN0cmVhbS1wcGM2NGxlMTFvZjE1LnBhdGNoCitQYXRjaDg3ODogZ2Ri LXVwc3RyZWFtLXBwYzY0bGUxMm9mMTUucGF0Y2gKK1BhdGNoODc5OiBnZGItdXBzdHJlYW0tcHBj NjRsZTEzb2YxNS5wYXRjaAorUGF0Y2g4ODA6IGdkYi11cHN0cmVhbS1wcGM2NGxlMTRvZjE1LnBh dGNoCitQYXRjaDg4MTogZ2RiLXVwc3RyZWFtLXBwYzY0bGUxNW9mMTUucGF0Y2gKIAogIyBUZXN0 Y2FzZSBmb3IgUFBDIFBvd2VyNi9ERlAgaW5zdHJ1Y3Rpb25zIGRpc2Fzc2VtYmx5IChCWiAyMzAw MDApLgogIz1mZWRvcmF0ZXN0K3BwYwpAQCAtNjA5LDggKzYyMywxMSBAQCBCdWlsZFJlcXVpcmVz OiBnY2MgZ2NjLWMrKyBnY2MtZ2ZvcnRyYW4gZ2NjLW9iamMKIEJ1aWxkUmVxdWlyZXM6IGdjYy1q YXZhIGxpYmdjaiV7Yml0c19sb2NhbH0gbGliZ2NqJXtiaXRzX290aGVyfQogJWVuZGlmCiAlaWYg MCV7IT9yaGVsOjF9IHx8IDAlez9yaGVsfSA+IDYKKyMgRmVkb3JhIHBwYzY0bGUgZG9lcyBub3Qg eWV0IGhhdmUgZ2NjLWdvIGJ1aWx0LgorJWlmbmFyY2ggcHBjNjRsZQogQnVpbGRSZXF1aXJlczog Z2NjLWdvCiAlZW5kaWYKKyVlbmRpZgogIyBhcmNoZXItc2VyZ2lvZGotc3RhcC1wYXRjaC1zcGxp dAogQnVpbGRSZXF1aXJlczogc3lzdGVtdGFwLXNkdC1kZXZlbAogIyBDb3BpZWQgZnJvbSBwcmVs aW5rLTAuNC4yLTMuZmMxMy4KQEAgLTYyMSw4ICs2MzgsOCBAQCBCdWlsZFJlcXVpcmVzOiBwcmVs aW5rCiAlZW5kaWYKICVlbmRpZgogJWlmIDAleyE/cmhlbDoxfQotIyBGZWRvcmEgYXJtIGRvZXMg bm90IHlldCBoYXZlIGZwYyBidWlsdC4KLSVpZm5hcmNoICV7YXJtfQorIyBGZWRvcmEgYXJtK3Bw YzY0bGUgZG8gbm90IHlldCBoYXZlIGZwYyBidWlsdC4KKyVpZm5hcmNoICV7YXJtfSBwcGM2NGxl CiBCdWlsZFJlcXVpcmVzOiBmcGMKICVlbmRpZgogJWVuZGlmCkBAIC02MzksOCArNjU2LDExIEBA IEJ1aWxkUmVxdWlyZXM6IGxpYmdjYyV7Yml0c19sb2NhbH0gbGliZ2NjJXtiaXRzX290aGVyfQog IyBsaWJzdGRjKystZGV2ZWwgb2YgbWF0Y2hpbmcgYml0cyBpcyByZXF1aXJlZCBvbmx5IGZvciBn KysgLXN0YXRpYy4KIEJ1aWxkUmVxdWlyZXM6IGxpYnN0ZGMrKyV7Yml0c19sb2NhbH0gbGlic3Rk YysrJXtiaXRzX290aGVyfQogJWlmIDAleyE/cmhlbDoxfSB8fCAwJXs/cmhlbH0gPiA2CisjIEZl ZG9yYSBwcGM2NGxlIGRvZXMgbm90IHlldCBoYXZlIGdjYy1nbyBidWlsdC4KKyVpZm5hcmNoIHBw YzY0bGUKIEJ1aWxkUmVxdWlyZXM6IGxpYmdvLWRldmVsJXtiaXRzX2xvY2FsfSBsaWJnby1kZXZl bCV7Yml0c19vdGhlcn0KICVlbmRpZgorJWVuZGlmCiAlaWYgMCV7IT9lbDU6MX0KIEJ1aWxkUmVx dWlyZXM6IGdsaWJjLXN0YXRpYyV7Yml0c19sb2NhbH0KICVlbmRpZgpAQCAtNzM2LDYgKzc1Niwy MCBAQCBmaW5kIC1uYW1lICIqLmluZm8qInx4YXJncyBybSAtZgogCiAlcGF0Y2gzNDkgLXAxCiAl cGF0Y2gyMzIgLXAxCislcGF0Y2g4NjggLXAxCislcGF0Y2g4NjkgLXAxCislcGF0Y2g4NzAgLXAx CislcGF0Y2g4NzEgLXAxCislcGF0Y2g4NzIgLXAxCislcGF0Y2g4NzMgLXAxCislcGF0Y2g4NzQg LXAxCislcGF0Y2g4NzUgLXAxCislcGF0Y2g4NzYgLXAxCislcGF0Y2g4NzcgLXAxCislcGF0Y2g4 NzggLXAxCislcGF0Y2g4NzkgLXAxCislcGF0Y2g4ODAgLXAxCislcGF0Y2g4ODEgLXAxCiAlcGF0 Y2gxIC1wMQogCiAlcGF0Y2gxMDUgLXAxCkBAIC05MjEsNyArOTU1LDcgQEAgZXhwb3J0IExERkxB R1M9IiV7P19fZ2xvYmFsX2xkZmxhZ3N9ICV7P193aXRoX2FzYW46LWZzYW5pdGl6ZT1hZGRyZXNz fSIKIAktLXdpdGgtc3lzdGVtLWdkYmluaXQ9JXtfc3lzY29uZmRpcn0vZ2RiaW5pdAkJXAogCS0t d2l0aC1nZGItZGF0YWRpcj0le19kYXRhZGlyfS9nZGIJCQlcCiAJLS1lbmFibGUtZ2RiLWJ1aWxk LXdhcm5pbmdzPSwtV25vLXVudXNlZAkJXAotJWlmbmFyY2ggJXtpeDg2fSBhbHBoYSBwcGMgczM5 MCBzMzkweCB4ODZfNjQgcHBjNjQgc3BhcmMgc3BhcmN2OSBzcGFyYzY0CislaWZuYXJjaCAle2l4 ODZ9IGFscGhhIHBwYyBzMzkwIHMzOTB4IHg4Nl82NCBwcGM2NCBwcGM2NGxlIHNwYXJjIHNwYXJj djkgc3BhcmM2NAogCS0tZGlzYWJsZS13ZXJyb3IJCQkJCVwKICVlbHNlCiAJLS1lbmFibGUtd2Vy cm9yCQkJCQkJXApAQCAtMTM3MCw3ICsxNDA0LDEwIEBAIGZpCiAlZW5kaWYgIyAwJXshP2VsNTox fSB8fCAiJXtfdGFyZ2V0X2NwdX0iID09ICJub2FyY2giCiAKICVjaGFuZ2Vsb2cKLSogVHVlIE1h eSAgNiAyMDE0IFNlcmdpbyBEdXJpZ2FuIEp1bmlvciA8c2VyZ2lvZGpAcmVkaGF0LmNvbT4gLSA3 LjcuMS0xMC5mYzIxCisqIEZyaSBNYXkgIDkgMjAxNCBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRv Y2h2aWxAcmVkaGF0LmNvbT4gLSA3LjcuMS0xMS5mYzIxCistIFtwcGMqXSBJbXBvcnQgcHBjNjRs ZSBzdXBwb3J0IChCWiAxMDk2MzAzLCBVbHJpY2ggV2VpZ2FuZCkuCisKKyogVHVlIE1heSAgNiAy MDE0IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDcuNy4xLTEw LmZjMjEKIC0gUmViYXNlIHRvIEZTRiBHREIgNy43LjEuCiAKICogTW9uIE1heSAgNSAyMDE0IFNl cmdpbyBEdXJpZ2FuIEp1bmlvciA8c2VyZ2lvZGpAcmVkaGF0LmNvbT4gLSA3LjctOS5mYzIxCg==