cgfour patch
foo bar <[email protected]> Wed, 22 Apr 2026 15:31:00 -0400
| Newsgroups | gmane.os.netbsd.ports.sparc |
|---|---|
| Message-ID | <CAOddDr4gRxTw1qMbnc9JK6-dT4gW9RFFuexXBA1YuXe=J4g5LQ@mail.gmail.com> |
--0000000000000a17c906501193fc Content-Type: text/plain; charset="UTF-8" Hello all Attached below is a patch to fix bugs and add wsdisplay support to the cgfour driver. This is mostly the same as what was discussed on this list last year. I've tested this patch on two cgfour now, 501-1248-05 rev 50 and 501-1248-09 rev 50. --0000000000000a17c906501193fc Content-Type: application/octet-stream; name=cgfour_p3 Content-Disposition: attachment; filename=cgfour_p3 Content-Transfer-Encoding: base64 Content-ID: <f_moag4br60> X-Attachment-Id: f_moag4br60 SW5kZXg6IHN5cy9kZXYvc3VuL3Bmb3VycmVnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jv b3Qvc3JjL3N5cy9kZXYvc3VuL3Bmb3VycmVnLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNApk aWZmIC11IC1yMS40IHBmb3VycmVnLmgKLS0tIHN5cy9kZXYvc3VuL3Bmb3VycmVnLmgJMjggQXBy IDIwMDggMjA6MjM6NTggLTAwMDAJMS40CisrKyBzeXMvZGV2L3N1bi9wZm91cnJlZy5oCTIyIEFw ciAyMDI2IDE5OjA5OjMzIC0wMDAwCkBAIC02MSwxMiArNjEsMTYgQEAKIC8qIE9mZnNldCBvZiBi d3R3byBmcmFtZWJ1ZmZlciBmcm9tIHBmb3VyIHJlZ2lzdGVyICovCiAjZGVmaW5lIFBGT1VSX0JX X09GRgkJMHgwMDEwMDAwMAogCi0vKiBPZmZzZXRzIGZvciBjb2xvciBmcmFtZWJ1ZmZlcnMgKi8K Ky8qIE9mZnNldHMgZm9yIGNvbG9yIGZyYW1lYnVmZmVycyAKKyAqIFRoZSBQUk9NIGdpdmVzIHVz IHRoZSBvZmZzZXQgZm9yIHRoZSBwZm91ciByZWdpc3RlcnMKKyAqIHdoaWNoIGFyZSBhdCAweDMw MDAwMCBpbiB0aGUgcGZvdXIgYWRkcmVzcyBzcGFjZQorICogdGhlc2Ugb2Zmc2V0cyBhcmUgcmVs ZXRpdmUgdG8gdGhhdAorICovCiAjZGVmaW5lIFBGT1VSX0NPTE9SX09GRl9PVkVSTEFZCTB4MDAx MDAwMDAKICNkZWZpbmUgUEZPVVJfQ09MT1JfT0ZGX0VOQUJMRQkweDAwMzAwMDAwCiAjZGVmaW5l IFBGT1VSX0NPTE9SX09GRl9DT0xPUgkweDAwNTAwMDAwCiAjZGVmaW5lIFBGT1VSX0NPTE9SX09G Rl9FTkQJMHgwMDcwMDAwMAotI2RlZmluZSBQRk9VUl9DT0xPUl9PRkZfQ01BUAkweGZmZjAwMDAw CS8qICgtMHgwMDEwMDAwMCkgKi8KKyNkZWZpbmUgUEZPVVJfQ09MT1JfT0ZGX0NNQVAJKC0weDAw MTAwMDAwKQogCiAjZGVmaW5lIFBGT1VSX1JFR19ESUFHCQkweDgwCiAjZGVmaW5lIFBGT1VSX1JF R19SRUFEQkFDS0NMUgkweDQwCkluZGV4OiBzeXMvYXJjaC9zcGFyYy9jb25mL2ZpbGVzLnNwYXJj Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L3NyYy9zeXMvYXJjaC9zcGFyYy9jb25mL2Zp bGVzLnNwYXJjLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjE2NApkaWZmIC11IC1yMS4xNjQgZmls ZXMuc3BhcmMKLS0tIHN5cy9hcmNoL3NwYXJjL2NvbmYvZmlsZXMuc3BhcmMJMjYgT2N0IDIwMjMg MTA6NDE6MDMgLTAwMDAJMS4xNjQKKysrIHN5cy9hcmNoL3NwYXJjL2NvbmYvZmlsZXMuc3BhcmMJ MjIgQXByIDIwMjYgMTk6MDk6MzMgLTAwMDAKQEAgLTI0NSw3ICsyNDUsNyBAQAogYXR0YWNoIGNn dHdvIGF0IHZtZQogZmlsZQlhcmNoL3NwYXJjL2Rldi9jZ3R3by5jCQljZ3R3byBuZWVkcy1mbGFn CiAKLWRldmljZSBjZ2ZvdXI6IGJ0X2RhYywgZmIsIHJhc29wczgsIHBmb3VyCitkZXZpY2UgY2dm b3VyOiBidF9kYWMsIGZiLCBwZm91ciwgcmFzb3BzOCwgd3NlbXVsZGlzcGxheWRldiwgdmNvbnMg CiBhdHRhY2ggY2dmb3VyIGF0IG9iaW8KIGZpbGUJYXJjaC9zcGFyYy9kZXYvY2dmb3VyLmMJCWNn Zm91ciBuZWVkcy1mbGFnCiAKSW5kZXg6IHN5cy9hcmNoL3NwYXJjL2Rldi9jZ2ZvdXIuYwo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9zcmMvc3lzL2FyY2gvc3BhcmMvZGV2L2NnZm91ci5j LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjUxCmRpZmYgLXUgLXIxLjUxIGNnZm91ci5jCi0tLSBz eXMvYXJjaC9zcGFyYy9kZXYvY2dmb3VyLmMJMjAgRGVjIDIwMjMgMDU6MzM6MTggLTAwMDAJMS41 MQorKysgc3lzL2FyY2gvc3BhcmMvZGV2L2NnZm91ci5jCTIyIEFwciAyMDI2IDE5OjA5OjMzIC0w MDAwCkBAIC0xMDEsNiArMTAxLDggQEAKICAqIFhYWCBzaG91bGQgZGVmZXIgY29sb3JtYXAgdXBk YXRlcyB0byB2ZXJ0aWNhbCByZXRyYWNlIGludGVycnVwdHMKICAqLwogCisjaW5jbHVkZSAid3Nk aXNwbGF5LmgiCisKICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KIF9fS0VSTkVMX1JDU0lEKDAsICIk TmV0QlNEOiBjZ2ZvdXIuYyx2IDEuNTEgMjAyMy8xMi8yMCAwNTozMzoxOCB0aG9ycGVqIEV4cCAk Iik7CiAKQEAgLTEyMiw2ICsxMjQsMTggQEAKICNpbmNsdWRlIDxkZXYvc3VuL2J0dmFyLmg+CiAj aW5jbHVkZSA8ZGV2L3N1bi9wZm91cnJlZy5oPgogCisjaWYgTldTRElTUExBWSA+IDAKKyNpbmNs dWRlIDxkZXYvd3Njb25zL3dzY29uc2lvLmg+CisjaW5jbHVkZSA8ZGV2L3dzY29ucy93c2Rpc3Bs YXlfdmNvbnN2YXIuaD4KKyNpbmNsdWRlIDxkZXYvd3Nmb250L3dzZm9udC5oPgorI2luY2x1ZGUg PGRldi9yYXNvcHMvcmFzb3BzLmg+CisKKyNpbmNsdWRlICJvcHRfd3NlbXVsLmgiCisjZW5kaWYK KworI2RlZmluZSBDR0ZPVVJfT1ZFUkxBWV9TSVpFICAgIDB4MjAwMDAKKyNkZWZpbmUgQ0dGT1VS X1JBTV9TSVpFICAgICAgICAgICAgICAgIDB4MTAwMDAwICAgICAgICAvKiBBbGwgb3VyIGNnZm91 cidzIGFyZSAxTUIgKi8KKwogLyogcGVyLWRpc3BsYXkgdmFyaWFibGVzICovCiBzdHJ1Y3QgY2dm b3VyX3NvZnRjIHsKIAlzdHJ1Y3QgZmJkZXZpY2UJc2NfZmI7CQkvKiBmcmFtZSBidWZmZXIgZGV2 aWNlICovCkBAIC0xMjksNiArMTQzLDE1IEBACiAJYnVzX2FkZHJfdAlzY19wYWRkcjsJLyogcGh5 cyBhZGRyZXNzIGZvciBkZXZpY2UgbW1hcCgpICovCiAKIAl2b2xhdGlsZSBzdHJ1Y3QgZmJjb250 cm9sICpzY19mYmM7CS8qIEJyb29rdHJlZSByZWdpc3RlcnMgKi8KKyNpZiBOV1NESVNQTEFZID4g MAorICAgICAgIHVpbnQzMl90IHNjX3dpZHRoOworICAgICAgIHVpbnQzMl90IHNjX2hlaWdodDsg ICAgICAgICAgICAgLyogZGlzcGxheSB3aWR0aCAvIGhlaWdodCAqLworICAgICAgIHVpbnQzMl90 IHNjX3N0cmlkZTsKKyAgICAgICBpbnQgc2NfbW9kZTsKKyAgICAgICBzdHJ1Y3QgdmNvbnNfZGF0 YSBzY192ZDsKKyAgICAgICBjaGFyICpzY19vdmVybGF5OworICAgICAgIGNoYXIgKnNjX2VuYWJs ZTsKKyNlbmRpZgogCXVuaW9uIGJ0X2NtYXAJc2NfY21hcDsJLyogQnJvb2t0cmVlIGNvbG9yIG1h cCAqLwogfTsKIApAQCAtMTc2LDggKzE5OSw1MCBAQAogc3RhdGljIHZvaWQgY2dmb3VybG9hZGNt YXAoc3RydWN0IGNnZm91cl9zb2Z0YyAqLCBpbnQsIGludCk7CiBzdGF0aWMgaW50IGNnZm91cl9n ZXRfdmlkZW8oc3RydWN0IGNnZm91cl9zb2Z0YyAqKTsKIHN0YXRpYyB2b2lkIGNnZm91cl9zZXRf dmlkZW8oc3RydWN0IGNnZm91cl9zb2Z0YyAqLCBpbnQpOwotI2VuZGlmCiAKKyNpZiBOV1NESVNQ TEFZID4gMAorc3RhdGljIHZvaWQgY2dmb3VyX3NldHVwX3BhbGV0dGUoc3RydWN0IGNnZm91cl9z b2Z0YyAqKTsKKworc3RydWN0IHdzc2NyZWVuX2Rlc2NyIGNnZm91cl9kZWZhdWx0c2NyZWVuID0g eworICAgICAgICJzdGQiLAorICAgICAgIDAsIDAsICAgLyogd2lsbCBiZSBmaWxsZWQgaW4gLS0g WFhYIHNob3VsZG4ndCwgaXQncyBnbG9iYWwgKi8KKyAgICAgICBOVUxMLCAgIC8qIHRleHRvcHMg Ki8KKyAgICAgICA4LCAxNiwgIC8qIGZvbnQgd2lkdGgvaGVpZ2h0ICovCisgICAgICAgV1NTQ1JF RU5fV1NDT0xPUlMsICAgICAgLyogY2FwYWJpbGl0aWVzICovCisgICAgICAgTlVMTCAgICAvKiBt b2RlY29va2llICovCit9OworCitzdGF0aWMgaW50IGNnZm91cl9pb2N0bCh2b2lkICosIHZvaWQg KiwgdV9sb25nLCB2b2lkICosIGludCwgc3RydWN0IGx3cCAqKTsKK3N0YXRpYyBwYWRkcl90IGNn Zm91cl9tbWFwKHZvaWQgKiwgdm9pZCAqLCBvZmZfdCwgaW50KTsKK3N0YXRpYyB2b2lkIGNnZm91 cl9pbml0X3NjcmVlbih2b2lkICosIHN0cnVjdCB2Y29uc19zY3JlZW4gKiwgaW50LCBsb25nICop Oworc3RhdGljIHZvaWQgY2dmb3VyX2NsZWFyX3NjcmVlbihzdHJ1Y3QgY2dmb3VyX3NvZnRjICos IGludCk7CisKK3N0YXRpYyBpbnQgY2dmb3VyX3B1dGNtYXAoc3RydWN0IGNnZm91cl9zb2Z0YyAq LCBzdHJ1Y3Qgd3NkaXNwbGF5X2NtYXAgKik7CitzdGF0aWMgaW50IGNnZm91cl9nZXRjbWFwKHN0 cnVjdCBjZ2ZvdXJfc29mdGMgKiwgc3RydWN0IHdzZGlzcGxheV9jbWFwICopOworCitzdHJ1Y3Qg d3NkaXNwbGF5X2FjY2Vzc29wcyBjZ2ZvdXJfYWNjZXNzb3BzID0geworICAgICAgIC5pb2N0bCA9 IGNnZm91cl9pb2N0bCwKKyAgICAgICAubW1hcCA9IGNnZm91cl9tbWFwLAorICAgICAgIC5hbGxv Y19zY3JlZW4gPSBOVUxMLAorICAgICAgIC5mcmVlX3NjcmVlbiA9IE5VTEwsCisgICAgICAgLnNo b3dfc2NyZWVuID0gTlVMTCwKKyAgICAgICAubG9hZF9mb250ID0gTlVMTCwKKyAgICAgICAucG9s bGMgPSBOVUxMLAorICAgICAgIC5zY3JvbGwgPSBOVUxMCit9OworCitjb25zdCBzdHJ1Y3Qgd3Nz Y3JlZW5fZGVzY3IgKl9jZ2ZvdXJfc2NybGlzdFtdID0geworICAgICAgICZjZ2ZvdXJfZGVmYXVs dHNjcmVlbgorfTsKKworc3RydWN0IHdzc2NyZWVuX2xpc3QgY2dmb3VyX3NjcmVlbmxpc3QgPSB7 CisgICAgICAgLm5zY3JlZW5zID0gc2l6ZW9mKF9jZ2ZvdXJfc2NybGlzdCkgLyBzaXplb2Yoc3Ry dWN0IHdzc2NyZWVuX2Rlc2NyICopLAorICAgICAgIC5zY3JlZW5zID0gX2NnZm91cl9zY3JsaXN0 Cit9OworCitzdGF0aWMgc3RydWN0IHZjb25zX3NjcmVlbiBjZ2ZvdXJfY29uc29sZV9zY3JlZW47 CisjZW5kaWYgLyogTldTRElTUExBWSA+IDAgKi8KKyNlbmRpZiAvKiBTVU40ICovCiAvKgogICog TWF0Y2ggYSBjZ2ZvdXIuCiAgKi8KQEAgLTIxOCw4ICsyODMsMTIgQEAKIAlidXNfc3BhY2VfaGFu ZGxlX3QgYmg7CiAJdm9sYXRpbGUgc3RydWN0IGJ0X3JlZ3MgKmJ0OwogCXN0cnVjdCBmYmRldmlj ZSAqZmIgPSAmc2MtPnNjX2ZiOwotCWludCByYW1zaXplLCBpLCBpc2NvbnNvbGU7Ci0KKwlpbnQg aSwgaXNjb25zb2xlOworI2lmIE5XU0RJU1BMQVkgPiAwCisgICAgICAgc3RydWN0IHdzZW11bGRp c3BsYXlkZXZfYXR0YWNoX2FyZ3Mgd3NlbXVsX2FhOworICAgICAgIHN0cnVjdCByYXNvcHNfaW5m byAqcmkgPSAmY2dmb3VyX2NvbnNvbGVfc2NyZWVuLnNjcl9yaTsKKyAgICAgICB1bnNpZ25lZCBs b25nIGRlZmF0dHIgPSAwOworI2VuZGlmCiAJc2MtPnNjX2J1c3RhZyA9IG9iYS0+b2JhX2J1c3Rh ZzsKIAlzYy0+c2NfcGFkZHIgPSAoYnVzX2FkZHJfdClvYmEtPm9iYV9wYWRkcjsKIApAQCAtMjQw LDEzICszMDksMTIgQEAKIAlmYi0+ZmJfZmxhZ3MgPSBkZXZpY2VfY2ZkYXRhKHNlbGYpLT5jZl9m bGFncyAmIEZCX1VTRVJNQVNLOwogCWZiLT5mYl9mbGFncyB8PSBGQl9QRk9VUjsKIAotCXJhbXNp emUgPSBQRk9VUl9DT0xPUl9PRkZfRU5EIC0gUEZPVVJfQ09MT1JfT0ZGX09WRVJMQVk7CiAKIAlm Yi0+ZmJfdHlwZS5mYl9kZXB0aCA9IDg7CiAJZmJfc2V0c2l6ZV9lZXByb20oZmIsIGZiLT5mYl90 eXBlLmZiX2RlcHRoLCAxMTUyLCA5MDApOwogCiAJZmItPmZiX3R5cGUuZmJfY21zaXplID0gMjU2 OwotCWZiLT5mYl90eXBlLmZiX3NpemUgPSByYW1zaXplOworCWZiLT5mYl90eXBlLmZiX3NpemUg PSBDR0ZPVVJfUkFNX1NJWkU7CiAJcHJpbnRmKCI6IGNnZm91ci9wNCwgJWQgeCAlZCIsCiAJCWZi LT5mYl90eXBlLmZiX3dpZHRoLCBmYi0+ZmJfdHlwZS5mYl9oZWlnaHQpOwogCkBAIC0yNjMsMjgg KzMzMSw0NyBAQAogCQkJaXNjb25zb2xlID0gZmJfaXNfY29uc29sZSgwKTsKIAl9CiAKLSNpZiAw Ci0JLyoKLQkgKiBXZSBkb24ndCBkbyBhbnkgb2YgdGhlIGNvbnNvbGUgaGFuZGxpbmcgaGVyZS4g IEluc3RlYWQsCi0JICogd2UgbGV0IHRoZSBid3R3byBkcml2ZXIgcGljayB1cCB0aGUgb3Zlcmxh eSBwbGFuZSBhbmQKLQkgKiB1c2UgaXQgaW5zdGVhZC4gIFJjb25zb2xlIHNob3VsZCBoYXZlIGJl dHRlciBwZXJmb3JtYW5jZQotCSAqIHdpdGggdGhlIDEtYml0IGRlcHRoLgotCSAqCS0tIEphc29u IFIuIFRob3JwZSA8dGhvcnBlakBOZXRCU0Qub3JnPgotCSAqLwotCiAJLyoKIAkgKiBXaGVuIHRo ZSBST00gaGFzIG1hcHBlZCBpbiBhIGNnZm91ciBkaXNwbGF5LCB0aGUgYWRkcmVzcwogCSAqIG1h cHMgb25seSB0aGUgdmlkZW8gUkFNLCBzbyBpbiBhbnkgY2FzZSB3ZSBoYXZlIHRvIG1hcCB0aGUK LQkgKiByZWdpc3RlcnMgb3Vyc2VsdmVzLiAgV2Ugb25seSBuZWVkIHRoZSB2aWRlbyBSQU0gaWYg d2UgYXJlCi0JICogZ29pbmcgdG8gcHJpbnQgY2hhcmFjdGVycyB2aWEgcmNvbnNvbGUuCisJICog cmVnaXN0ZXJzIG91cnNlbHZlcy4KIAkgKi8KIAogCWlmIChpc2NvbnNvbGUpIHsKLQkJLyogWFhY IHRoaXMgaXMga2luZCBvZiBhIHdhc3RlICovCi0JCWZiLT5mYl9waXhlbHMgPSBtYXBpb2Rldihj YS0+Y2FfcmEucmFfcmVnLAotCQkJCQkgUEZPVVJfQ09MT1JfT0ZGX09WRVJMQVksIHJhbXNpemUp OwotCX0KLSNlbmRpZgorICAgICAgICAgICAgICAgLyogTWFwIHRoZSBmcmFtZWJ1ZmZlcnMuICov CisgICAgICAgICAgICAgICBpZiAoYnVzX3NwYWNlX21hcChvYmEtPm9iYV9idXN0YWcsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBvYmEtPm9iYV9wYWRkciArIFBGT1VSX0NPTE9SX09GRl9P VkVSTEFZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0dGT1VSX09WRVJMQVlfU0laRSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIEJVU19TUEFDRV9NQVBfTElORUFSLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgJmJoKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAg IHByaW50ZigiJXM6IGNhbm5vdCBtYXAgb3ZlcmxheSBwbGFuZVxuIiwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRldmljZV94bmFtZShzZWxmKSk7CisgICAgICAgICAgICAgICByZXR1cm47 CisgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICBzYy0+c2Nfb3ZlcmxheSA9IChjaGFy ICopYmg7CisKKyAgICAgICAgICAgICAgIGlmIChidXNfc3BhY2VfbWFwKG9iYS0+b2JhX2J1c3Rh ZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iYS0+b2JhX3BhZGRyICsgUEZPVVJfQ09M T1JfT0ZGX0VOQUJMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIENHRk9VUl9PVkVSTEFZ X1NJWkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBCVVNfU1BBQ0VfTUFQX0xJTkVBUiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICZiaCkgIT0gMCkgeworICAgICAgICAgICAgICAg ICAgICAgICBwcmludGYoIiVzOiBjYW5ub3QgbWFwIGVuYWJsZSBwbGFuZVxuIiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRldmljZV94bmFtZShzZWxmKSk7CisgICAgICAgICAgICAgICAg ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgIHNjLT5zY19l bmFibGUgID0gKGNoYXIgKiliaDsKKworICAgICAgICAgICAgICAgaWYgKGJ1c19zcGFjZV9tYXAo b2JhLT5vYmFfYnVzdGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JhLT5vYmFfcGFk ZHIgKyBQRk9VUl9DT0xPUl9PRkZfQ09MT1IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBD R0ZPVVJfUkFNX1NJWkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBCVVNfU1BBQ0VfTUFQ X0xJTkVBUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZiaCkgIT0gMCkgeworICAgICAg ICAgICAgICAgICAgICAgICBwcmludGYoIiVzOiBjYW5ub3QgbWFwIHBpeGVsc1xuIiwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRldmljZV94bmFtZShzZWxmKSk7CisgICAgICAgICAgICAg ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgIGZiLT5m Yl9waXhlbHMgPSAoY2hhciAqKWJoOworICAgICAgICB9CiAKIAkvKiBNYXAgdGhlIEJyb29rdHJl ZS4gKi8KIAlpZiAoYnVzX3NwYWNlX21hcChvYmEtPm9iYV9idXN0YWcsCkBAIC0zMDYsMTQgKzM5 Myw5IEBACiAKIAlCVF9JTklUKGJ0LCAyNCk7CiAKLSNpZiAwCS8qIFNlZSBhYm92ZS4gKi8KIAlp ZiAoaXNjb25zb2xlKSB7CiAJCXByaW50ZigiIChjb25zb2xlKVxuIik7Ci0jaWYgZGVmaW5lZChS QVNURVJDT05TT0xFKSAmJiAwCS8qIFhYWCBiZWVuIHRvbGQgaXQgZG9lc24ndCB3b3JrIHdlbGwu ICovCi0JCWZicmNvbnNfaW5pdChmYik7Ci0jZW5kaWYKIAl9IGVsc2UKLSNlbmRpZiAvKiAwICov CiAJCXByaW50ZigiXG4iKTsKIAogCS8qCkBAIC0zMjEsNiArNDAzLDUwIEBACiAJICogdG8gbm90 aWNlIGlmIHdlJ3JlIHRoZSBjb25zb2xlIGZyYW1lYnVmZmVyLgogCSAqLwogCWZiX2F0dGFjaChm YiwgaXNjb25zb2xlKTsKKworI2lmIE5XU0RJU1BMQVkgPiAwCisgICAgICAgc2MtPnNjX3dpZHRo ID0gZmItPmZiX3R5cGUuZmJfd2lkdGg7CisgICAgICAgc2MtPnNjX3N0cmlkZSA9IGZiLT5mYl90 eXBlLmZiX3dpZHRoOworICAgICAgIHNjLT5zY19oZWlnaHQgPSBmYi0+ZmJfdHlwZS5mYl9oZWln aHQ7CisKKyAgICAgICAvKiBzZXR1cCByYXNvcHMgYW5kIHNvIG9uIGZvciB3c2Rpc3BsYXkgKi8K KyAgICAgICBzYy0+c2NfbW9kZSA9IFdTRElTUExBWUlPX01PREVfRU1VTDsKKworICAgICAgIHZj b25zX2luaXQoJnNjLT5zY192ZCwgc2MsICZjZ2ZvdXJfZGVmYXVsdHNjcmVlbiwgJmNnZm91cl9h Y2Nlc3NvcHMpOworICAgICAgIHNjLT5zY192ZC5pbml0X3NjcmVlbiA9IGNnZm91cl9pbml0X3Nj cmVlbjsKKworICAgICAgIGlmIChpc2NvbnNvbGUpIHsKKyAgICAgICAgICAgICAgIC8qIHdlIG1l c3Mgd2l0aCBjZ2ZvdXJfY29uc29sZV9zY3JlZW4gb25seSBvbmNlICovCisgICAgICAgICAgICAg ICB2Y29uc19pbml0X3NjcmVlbigmc2MtPnNjX3ZkLCAmY2dmb3VyX2NvbnNvbGVfc2NyZWVuLCAx LAorICAgICAgICAgICAgICAgICAgICZkZWZhdHRyKTsKKyAgICAgICAgICAgICAgIGNnZm91cl9j bGVhcl9zY3JlZW4oc2MsIChkZWZhdHRyID4+IDE2KSAmIDB4ZmYpOworICAgICAgICAgICAgICAg Y2dmb3VyX2NvbnNvbGVfc2NyZWVuLnNjcl9mbGFncyB8PSBWQ09OU19TQ1JFRU5fSVNfU1RBVElD OworCisgICAgICAgICAgICAgICBjZ2ZvdXJfZGVmYXVsdHNjcmVlbi50ZXh0b3BzID0gJnJpLT5y aV9vcHM7CisgICAgICAgICAgICAgICBjZ2ZvdXJfZGVmYXVsdHNjcmVlbi5jYXBhYmlsaXRpZXMg PSByaS0+cmlfY2FwczsKKyAgICAgICAgICAgICAgIGNnZm91cl9kZWZhdWx0c2NyZWVuLm5yb3dz ID0gcmktPnJpX3Jvd3M7CisgICAgICAgICAgICAgICBjZ2ZvdXJfZGVmYXVsdHNjcmVlbi5uY29s cyA9IHJpLT5yaV9jb2xzOworICAgICAgICAgICAgICAgU0NSRUVOX1ZJU0lCTEUoJmNnZm91cl9j b25zb2xlX3NjcmVlbik7CisgICAgICAgICAgICAgICBzYy0+c2NfdmQuYWN0aXZlID0gJmNnZm91 cl9jb25zb2xlX3NjcmVlbjsKKyAgICAgICAgICAgICAgIHdzZGlzcGxheV9jbmF0dGFjaCgmY2dm b3VyX2RlZmF1bHRzY3JlZW4sIHJpLCAwLCAwLCBkZWZhdHRyKTsKKyAgICAgICAgICAgICAgIHZj b25zX3JlcGxheV9tc2didWYoJmNnZm91cl9jb25zb2xlX3NjcmVlbik7CisgICAgICAgfSBlbHNl IHsKKyAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgKiB3ZSdyZSBub3QgdGhlIGNv bnNvbGUgc28gd2UganVzdCBjbGVhciB0aGUgc2NyZWVuIGFuZCBkb24ndAorICAgICAgICAgICAg ICAgICogc2V0IHVwIGFueSBzb3J0IG9mIHRleHQgZGlzcGxheQorICAgICAgICAgICAgICAgICov CisgICAgICAgfQorCisgICAgICAgLyogSW5pdGlhbGl6ZSB0aGUgZGVmYXVsdCBjb2xvciBtYXAu ICovCisgICAgICAgY2dmb3VyX3NldHVwX3BhbGV0dGUoc2MpOworCisgICAgICAgd3NlbXVsX2Fh LnNjcmRhdGEgPSAmY2dmb3VyX3NjcmVlbmxpc3Q7CisgICAgICAgd3NlbXVsX2FhLmNvbnNvbGUg PSBpc2NvbnNvbGU7CisgICAgICAgd3NlbXVsX2FhLmFjY2Vzc29wcyA9ICZjZ2ZvdXJfYWNjZXNz b3BzOworICAgICAgIHdzZW11bF9hYS5hY2Nlc3Njb29raWUgPSAmc2MtPnNjX3ZkOworICAgICAg IGNvbmZpZ19mb3VuZChzZWxmLCAmd3NlbXVsX2FhLCB3c2VtdWxkaXNwbGF5ZGV2cHJpbnQsCisg ICAgICAgICAgIENGQVJHU19OT05FKTsKKyNlbmRpZiAvKiBOV1NESVNQTEFZID4gMCAqLwogI2Vu ZGlmIC8qIFNVTjQgKi8KIH0KIApAQCAtNTAzLDQgKzYyOSwxOTkgQEAKIAkJYnQtPmJ0X2NtYXAg PSBpIDw8IDI0OwogCX0KIH0KKworI2lmIE5XU0RJU1BMQVkgPiAwCitzdGF0aWMgdm9pZAorY2dm b3VyX3NldHVwX3BhbGV0dGUoc3RydWN0IGNnZm91cl9zb2Z0YyAqc2MpCit7CisgICAgICAgaW50 IGksIGo7CisKKyAgICAgICBqID0gMDsKKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgMjU2OyBpKysp IHsKKyAgICAgICAgICAgICAgIHNjLT5zY19jbWFwLmNtX21hcFtpXVswXSA9IHJhc29wc19jbWFw W2pdOworICAgICAgICAgICAgICAgaisrOworICAgICAgICAgICAgICAgc2MtPnNjX2NtYXAuY21f bWFwW2ldWzFdID0gcmFzb3BzX2NtYXBbal07CisgICAgICAgICAgICAgICBqKys7CisgICAgICAg ICAgICAgICBzYy0+c2NfY21hcC5jbV9tYXBbaV1bMl0gPSByYXNvcHNfY21hcFtqXTsKKyAgICAg ICAgICAgICAgIGorKzsKKyAgICAgICB9CisgICAgICAgY2dmb3VybG9hZGNtYXAoc2MsIDAsIDI1 Nik7Cit9CisKK3N0YXRpYyBpbnQKK2NnZm91cl9pb2N0bCh2b2lkICp2LCB2b2lkICp2cywgdV9s b25nIGNtZCwgdm9pZCAqZGF0YSwgaW50IGZsYWcsCisgICAgc3RydWN0IGx3cCAqbCkKK3sKKyAg ICAgICAvKiB3ZSdsbCBwcm9iYWJseSBuZWVkIHRvIGFkZCBtb3JlIHN0dWZmIGhlcmUgKi8KKyAg ICAgICBzdHJ1Y3QgdmNvbnNfZGF0YSAqdmQgPSB2OworICAgICAgIHN0cnVjdCBjZ2ZvdXJfc29m dGMgKnNjID0gdmQtPmNvb2tpZTsKKyAgICAgICBzdHJ1Y3Qgd3NkaXNwbGF5X2ZiaW5mbyAqd2Rm OworICAgICAgIHN0cnVjdCB2Y29uc19zY3JlZW4gKm1zID0gc2MtPnNjX3ZkLmFjdGl2ZTsKKyAg ICAgICBzdHJ1Y3QgcmFzb3BzX2luZm8gKnJpID0gJm1zLT5zY3Jfcmk7CisgICAgICAgc3dpdGNo IChjbWQpIHsKKyAgICAgICAgICAgICAgIGNhc2UgV1NESVNQTEFZSU9fR1RZUEU6CisgICAgICAg ICAgICAgICAgICAgICAgICoodV9pbnQgKilkYXRhID0gV1NESVNQTEFZX1RZUEVfU1VOVENYOyAv KiBYWFggKi8KKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAg ICBjYXNlIFdTRElTUExBWUlPX0dJTkZPOgorICAgICAgICAgICAgICAgICAgICAgICB3ZGYgPSAo dm9pZCAqKWRhdGE7CisgICAgICAgICAgICAgICAgICAgICAgIHdkZi0+aGVpZ2h0ID0gcmktPnJp X2hlaWdodDsKKyAgICAgICAgICAgICAgICAgICAgICAgd2RmLT53aWR0aCA9IHJpLT5yaV93aWR0 aDsKKyAgICAgICAgICAgICAgICAgICAgICAgd2RmLT5kZXB0aCA9IDg7CisgICAgICAgICAgICAg ICAgICAgICAgIHdkZi0+Y21zaXplID0gMjU2OworICAgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gMDsKKworICAgICAgICAgICAgICAgY2FzZSBXU0RJU1BMQVlJT19HRVRDTUFQOgorICAgICAg ICAgICAgICAgICAgICAgICByZXR1cm4gY2dmb3VyX2dldGNtYXAoc2MsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAoc3RydWN0IHdzZGlzcGxheV9jbWFwICopZGF0YSk7CisgICAgICAgICAg ICAgICBjYXNlIFdTRElTUExBWUlPX1BVVENNQVA6CisgICAgICAgICAgICAgICAgICAgICAgIHJl dHVybiBjZ2ZvdXJfcHV0Y21hcChzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1 Y3Qgd3NkaXNwbGF5X2NtYXAgKilkYXRhKTsKKworICAgICAgICAgICAgICAgY2FzZSBXU0RJU1BM QVlJT19TTU9ERToKKyAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGludCBuZXdfbW9kZSA9ICooaW50ICopZGF0YTsKKworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGlmIChuZXdfbW9kZSAhPSBzYy0+c2NfbW9kZSkgeworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2MtPnNjX21vZGUgPSBuZXdfbW9kZTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXdfbW9kZSA9PSBX U0RJU1BMQVlJT19NT0RFX0VNVUwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY2dmb3VyX3NldHVwX3BhbGV0dGUoc2MpOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZ2ZvdXJfY2xlYXJfc2NyZWVuKHNjLCAw eGZmKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmNv bnNfcmVkcmF3X3NjcmVlbihtcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAg ICAgY2FzZSBXU0RJU1BMQVlJT19HRVRfRkJJTkZPOgorICAgICAgICAgICAgICAgICAgICAgICB7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHdzZGlzcGxheWlvX2ZiaW5m byAqZmJpID0gZGF0YTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3 c2Rpc3BsYXlpb19nZXRfZmJpbmZvKCZtcy0+c2NyX3JpLCBmYmkpOworICAgICAgICAgICAgICAg ICAgICAgICB9CisgICAgICAgfQorICAgICAgIHJldHVybiBFUEFTU1RIUk9VR0g7Cit9CisKK3N0 YXRpYyBwYWRkcl90CitjZ2ZvdXJfbW1hcCh2b2lkICp2LCB2b2lkICp2cywgb2ZmX3Qgb2Zmc2V0 LCBpbnQgcHJvdCkKK3sKKyAgICAgICBzdHJ1Y3QgdmNvbnNfZGF0YSAqdmQgPSB2OworICAgICAg IHN0cnVjdCBjZ2ZvdXJfc29mdGMgKnNjID0gdmQtPmNvb2tpZTsKKyAgICAgICBwYWRkcl90IGNv b2tpZSA9IC0xOworCisgICAgICAgc3dpdGNoIChzYy0+c2NfbW9kZSkgeworICAgICAgIGNhc2Ug V1NESVNQTEFZSU9fTU9ERV9EVU1CRkI6CisgICAgICAgICAgICAgICBpZiAob2Zmc2V0ID49IDAg JiYgb2Zmc2V0IDw9IHNjLT5zY19mYi5mYl90eXBlLmZiX3NpemUpIHsKKyAgICAgICAgICAgICAg ICAgICAgICAgY29va2llID0gYnVzX3NwYWNlX21tYXAoc2MtPnNjX2J1c3RhZywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNjLT5zY19wYWRkciwgUEZPVVJfQ09MT1JfT0ZGX0NPTE9SICsg b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdCwgQlVTX1NQQUNFX01BUF9M SU5FQVIpOworICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg ZGVmYXVsdDoKKyAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgIH0KKworICAgICAgIHJldHVy biBjb29raWU7Cit9CisKK3N0YXRpYyBpbnQKK2NnZm91cl9wdXRjbWFwKHN0cnVjdCBjZ2ZvdXJf c29mdGMgKnNjLCBzdHJ1Y3Qgd3NkaXNwbGF5X2NtYXAgKmNtKQoreworICAgICAgIHVfaW50IGlu ZGV4ID0gY20tPmluZGV4OworICAgICAgIHVfaW50IGNvdW50ID0gY20tPmNvdW50OworICAgICAg IGludCBlcnJvcixpOworICAgICAgIGlmIChpbmRleCA+PSAyNTYgfHwgY291bnQgPiAyNTYgfHwg aW5kZXggKyBjb3VudCA+IDI1NikKKyAgICAgICAgICAgICAgIHJldHVybiBFSU5WQUw7CisKKyAg ICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICB7CisgICAgICAgICAgICAg ICBlcnJvciA9IGNvcHlpbigmY20tPnJlZFtpXSwKKyAgICAgICAgICAgICAgICAgICAmc2MtPnNj X2NtYXAuY21fbWFwW2luZGV4ICsgaV1bMF0sIDEpOworICAgICAgICAgICAgICAgaWYgKGVycm9y KQorICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICAgICAgICAgICBl cnJvciA9IGNvcHlpbigmY20tPmdyZWVuW2ldLAorICAgICAgICAgICAgICAgICAgICZzYy0+c2Nf Y21hcC5jbV9tYXBbaW5kZXggKyBpXVsxXSwKKyAgICAgICAgICAgICAgICAgICAxKTsKKyAgICAg ICAgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9y OworICAgICAgICAgICAgICAgZXJyb3IgPSBjb3B5aW4oJmNtLT5ibHVlW2ldLAorICAgICAgICAg ICAgICAgICAgICZzYy0+c2NfY21hcC5jbV9tYXBbaW5kZXggKyBpXVsyXSwgMSk7CisgICAgICAg ICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsK KyAgICAgICB9CisgICAgICAgY2dmb3VybG9hZGNtYXAoc2MsIGluZGV4LCBjb3VudCk7CisKKyAg ICAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorY2dmb3VyX2dldGNtYXAoc3RydWN0IGNn Zm91cl9zb2Z0YyAqc2MsIHN0cnVjdCB3c2Rpc3BsYXlfY21hcCAqY20pCit7CisgICAgICAgdV9p bnQgaW5kZXggPSBjbS0+aW5kZXg7CisgICAgICAgdV9pbnQgY291bnQgPSBjbS0+Y291bnQ7Cisg ICAgICAgaW50IGVycm9yLGk7CisKKyAgICAgICBpZiAoaW5kZXggPj0gMjU2IHx8IGNvdW50ID4g MjU2IHx8IGluZGV4ICsgY291bnQgPiAyNTYpCisgICAgICAgICAgICAgICByZXR1cm4gRUlOVkFM OworCisgICAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAgICAgeworICAgICAg ICAgICAgICAgZXJyb3IgPSBjb3B5b3V0KCZzYy0+c2NfY21hcC5jbV9tYXBbaW5kZXggKyBpXVsw XSwKKyAgICAgICAgICAgICAgICAgICAmY20tPnJlZFtpXSwgMSk7CisgICAgICAgICAgICAgICBp ZiAoZXJyb3IpCisgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAg ICAgICAgIGVycm9yID0gY29weW91dCgmc2MtPnNjX2NtYXAuY21fbWFwW2luZGV4ICsgaV1bMV0s CisgICAgICAgICAgICAgICAgICAgJmNtLT5ncmVlbltpXSwgMSk7CisgICAgICAgICAgICAgICBp ZiAoZXJyb3IpCisgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAg ICAgICAgIGVycm9yID0gY29weW91dCgmc2MtPnNjX2NtYXAuY21fbWFwW2luZGV4ICsgaV1bMl0s CisgICAgICAgICAgICAgICAgICAgJmNtLT5ibHVlW2ldLCAxKTsKKyAgICAgICAgICAgICAgIGlm IChlcnJvcikKKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAgICAgIH0K KworICAgICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAorY2dmb3VyX2luaXRfc2NyZWVu KHZvaWQgKmNvb2tpZSwgc3RydWN0IHZjb25zX3NjcmVlbiAqc2NyLAorICAgIGludCBleGlzdGlu ZywgbG9uZyAqZGVmYXR0cikKK3sKKyAgICAgICBzdHJ1Y3QgY2dmb3VyX3NvZnRjICpzYyA9IGNv b2tpZTsKKyAgICAgICBzdHJ1Y3QgcmFzb3BzX2luZm8gKnJpID0gJnNjci0+c2NyX3JpOworCisg ICAgICAgc2NyLT5zY3JfZmxhZ3MgfD0gVkNPTlNfRE9OVF9SRUFEOworCisgICAgICAgcmktPnJp X2RlcHRoID0gODsKKyAgICAgICByaS0+cmlfd2lkdGggPSBzYy0+c2Nfd2lkdGg7CisgICAgICAg cmktPnJpX2hlaWdodCA9IHNjLT5zY19oZWlnaHQ7CisgICAgICAgcmktPnJpX3N0cmlkZSA9IHNj LT5zY19zdHJpZGU7CisgICAgICAgcmktPnJpX2ZsZyA9IFJJX0NFTlRFUjsKKworICAgICAgIHJp LT5yaV9iaXRzID0gc2MtPnNjX2ZiLmZiX3BpeGVsczsKKworICAgICAgIHJhc29wc19pbml0KHJp LCAwLCAwKTsKKyAgICAgICByaS0+cmlfY2FwcyA9IFdTU0NSRUVOX1dTQ09MT1JTIHwgV1NTQ1JF RU5fUkVWRVJTRTsKKyAgICAgICByYXNvcHNfcmVjb25maWcocmksIHNjLT5zY19oZWlnaHQgLyBy aS0+cmlfZm9udC0+Zm9udGhlaWdodCwKKyAgICAgICAgICAgc2MtPnNjX3dpZHRoIC8gcmktPnJp X2ZvbnQtPmZvbnR3aWR0aCk7CisKKyAgICAgICByaS0+cmlfaHcgPSBzY3I7Cit9CisKK3N0YXRp YyB2b2lkCitjZ2ZvdXJfY2xlYXJfc2NyZWVuKHN0cnVjdCBjZ2ZvdXJfc29mdGMgKnNjLCBpbnQg YmcpCit7CisgICAgICAgY2hhciAqYml0czsKKworICAgICAgIC8qIFdlIGNhbiB3cml0ZSBhIG1h eGltdW0gb2YgNCBieXRlcyBhdCBhIHRpbWUgdG8gdGhlIGZyYW1lYnVmZmVyLiAqLworICAgICAg IGZvciAoYml0cyA9IChjaGFyICopc2MtPnNjX2VuYWJsZTsKKyAgICAgICAgICAgYml0cyA8IChj aGFyICopc2MtPnNjX2VuYWJsZSArIENHRk9VUl9PVkVSTEFZX1NJWkU7CisgICAgICAgICAgIGJp dHMgKz0gNCkKKyAgICAgICAgICAgICAgIG1lbXNldChiaXRzLCAgMHgwMCwgNCk7CisKKyAgICAg ICBmb3IgKGJpdHMgPSAoY2hhciAqKXNjLT5zY19mYi5mYl9waXhlbHM7CisgICAgICAgICAgIGJp dHMgPCAoY2hhciAqKXNjLT5zY19mYi5mYl9waXhlbHMgKyBzYy0+c2Nfc3RyaWRlICogc2MtPnNj X2hlaWdodDsKKyAgICAgICAgICAgYml0cyArPSA0KQorICAgICAgICAgICAgICAgbWVtc2V0KGJp dHMsIGJnLCA0KTsKK30KKyNlbmRpZiAvKiBOV1NESVNQTEFZID4gMCAqLwogI2VuZGlmIC8qIFNV TjQgKi8K --0000000000000a17c906501193fc--