Date: Sun, 17 Jan 2010 21:00:16 GMT From: "Pedro F. Giffuni" <giffunip@tutopia.com> To: freebsd-bugs@FreeBSD.org Subject: Re: bin/142526: Cleanups and updates to newfs_msdos Message-ID: <201001172100.o0HL0Ghk071358@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR bin/142526; it has been noted by GNATS. From: "Pedro F. Giffuni" <giffunip@tutopia.com> To: FreeBSD-gnats-submit@FreeBSD.org, freebsd-bugs@FreeBSD.org Cc: Subject: Re: bin/142526: Cleanups and updates to newfs_msdos Date: Sun, 17 Jan 2010 12:54:28 -0800 (PST) --0-96800579-1263761668=:91781 Content-Type: text/plain; charset=us-ascii Yet another update: - Remove the MAXBPS warning, I have been convinced the limitation is a tactic to move people to other filesystems. - Update names in fields for directory access so we can use the same terminology and headers from the msdosfs. (I don't expect to add any new feature) --0-96800579-1263761668=:91781 Content-Type: application/octet-stream; name=patch-newfs_msdos Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=patch-newfs_msdos ZGlmZiAtcnUgbmV3ZnNfbXNkb3Mub3JpZy9uZXdmc19tc2Rvcy44IG5ld2Zz X21zZG9zL25ld2ZzX21zZG9zLjgKLS0tIG5ld2ZzX21zZG9zLm9yaWcvbmV3 ZnNfbXNkb3MuOAkyMDEwLTAxLTA2IDExOjA2OjAyLjAwMDAwMDAwMCArMDAw MAorKysgbmV3ZnNfbXNkb3MvbmV3ZnNfbXNkb3MuOAkyMDEwLTAxLTE2IDEw OjMxOjAwLjAwMDAwMDAwMCArMDAwMApAQCAtMzgsMTQgKzM4LDE0IEBACiAu T3AgRmwgQiBBciBib290CiAuT3AgRmwgQyBBciBjcmVhdGUtc2l6ZQogLk9w IEZsIEYgQXIgRkFULXR5cGUKLS5PcCBGbCBJIEFyIHZvbGlkCisuT3AgRmwg SSBBciBWb2x1bWVJZAogLk9wIEZsIEwgQXIgbGFiZWwKIC5PcCBGbCBPIEFy IE9FTQogLk9wIEZsIFMgQXIgc2VjdG9yLXNpemUKIC5PcCBGbCBhIEFyIEZB VC1zaXplCiAuT3AgRmwgYiBBciBibG9jay1zaXplCiAuT3AgRmwgYyBBciBj bHVzdGVyLXNpemUKLS5PcCBGbCBlIEFyIGRpcmVudHMKKy5PcCBGbCBlIEFy IERpckVudHMKIC5PcCBGbCBmIEFyIGZvcm1hdAogLk9wIEZsIGggQXIgaGVh ZHMKIC5PcCBGbCBpIEFyIGluZm8KQEAgLTEwMyw3ICsxMDMsNyBAQAogc21h bGxlciB0aGFuIHRoZSBzaXplIHNwZWNpZmllZCBhcyBwYXJhbWV0ZXIuCiAu SXQgRmwgRiBBciBGQVQtdHlwZQogRkFUIHR5cGUgKG9uZSBvZiAxMiwgMTYs IG9yIDMyKS4KLS5JdCBGbCBJIEFyIHZvbGlkCisuSXQgRmwgSSBBciBWb2x1 bWVJRAogVm9sdW1lIElELCBhIDMyIGJpdCBudW1iZXIgaW4gZGVjaW1hbCBv ciBoZXhhZGVjaW1hbCAoMHguLi4pIGZvcm1hdC4KIC5JdCBGbCBMIEFyIGxh YmVsCiBWb2x1bWUgbGFiZWwgKHVwIHRvIDExIGNoYXJhY3RlcnMpLgpAQCAt MTE2LDcgKzExNiw3IEBACiAuSXQgRmwgUyBBciBzZWN0b3Itc2l6ZQogTnVt YmVyIG9mIGJ5dGVzIHBlciBzZWN0b3IuCiBBY2NlcHRhYmxlIHZhbHVlcyBh cmUgcG93ZXJzIG9mIDIKLWluIHRoZSByYW5nZSAxMjggdGhyb3VnaCAzMjc2 OC4KK2luIHRoZSByYW5nZSA1MTIgdGhyb3VnaCAzMjc2OC4KIC5JdCBGbCBh IEFyIEZBVC1zaXplCiBOdW1iZXIgb2Ygc2VjdG9ycyBwZXIgRkFULgogLkl0 IEZsIGIgQXIgYmxvY2stc2l6ZQpAQCAtMTMwLDcgKzEzMCw3IEBACiBJZiB0 aGUgYmxvY2sgb3IgY2x1c3RlciBzaXplIGFyZSBub3Qgc3BlY2lmaWVkLCB0 aGUgY29kZQogdXNlcyBhIGNsdXN0ZXIgYmV0d2VlbiA1MTIgYnl0ZXMgYW5k IDMySyBkZXBlbmRpbmcgb24KIHRoZSBmaWxlc3lzdGVtIHNpemUuCi0uSXQg RmwgZSBBciBkaXJlbnRzCisuSXQgRmwgZSBBciBEaXJFbnRzCiBOdW1iZXIg b2Ygcm9vdCBkaXJlY3RvcnkgZW50cmllcyAoRkFUMTIgYW5kIEZBVDE2IG9u bHkpLgogLkl0IEZsIGYgQXIgZm9ybWF0CiBTcGVjaWZ5IGEgc3RhbmRhcmQg KGZsb3BweSBkaXNrKSBmb3JtYXQuCmRpZmYgLXJ1IG5ld2ZzX21zZG9zLm9y aWcvbmV3ZnNfbXNkb3MuYyBuZXdmc19tc2Rvcy9uZXdmc19tc2Rvcy5jCi0t LSBuZXdmc19tc2Rvcy5vcmlnL25ld2ZzX21zZG9zLmMJMjAxMC0wMS0wNiAx MTowNjowMi4wMDAwMDAwMDAgKzAwMDAKKysrIG5ld2ZzX21zZG9zL25ld2Zz X21zZG9zLmMJMjAxMC0wMS0xNiAxMDoyMjowNy4wMDAwMDAwMDAgKzAwMDAK QEAgLTYyLDEyICs2MiwxMiBAQAogI2RlZmluZSBERUZCTEsxNiAgMjA0OAkJ LyogZGVmYXVsdCBibG9jayBzaXplIEZBVDE2ICovCiAjZGVmaW5lIERFRlJE RQkgIDUxMgkJLyogZGVmYXVsdCByb290IGRpcmVjdG9yeSBlbnRyaWVzICov CiAjZGVmaW5lIFJFU0ZURQkgIDIJCS8qIHJlc2VydmVkIEZBVCBlbnRyaWVz ICovCi0jZGVmaW5lIE1JTkNMUzEyICAxCQkvKiBtaW5pbXVtIEZBVDEyIGNs dXN0ZXJzICovCi0jZGVmaW5lIE1JTkNMUzE2ICAweDEwMDAJLyogbWluaW11 bSBGQVQxNiBjbHVzdGVycyAqLwotI2RlZmluZSBNSU5DTFMzMiAgMgkJLyog bWluaW11bSBGQVQzMiBjbHVzdGVycyAqLwotI2RlZmluZSBNQVhDTFMxMiAg MHhmZWQgCS8qIG1heGltdW0gRkFUMTIgY2x1c3RlcnMgKi8KLSNkZWZpbmUg TUFYQ0xTMTYgIDB4ZmZmNQkvKiBtYXhpbXVtIEZBVDE2IGNsdXN0ZXJzICov Ci0jZGVmaW5lIE1BWENMUzMyICAweGZmZmZmZjUJLyogbWF4aW11bSBGQVQz MiBjbHVzdGVycyAqLworI2RlZmluZSBNSU5DTFMxMiAgMXUJCS8qIG1pbmlt dW0gRkFUMTIgY2x1c3RlcnMgKi8KKyNkZWZpbmUgTUlOQ0xTMTYgIDB4MTAw MHUJLyogbWluaW11bSBGQVQxNiBjbHVzdGVycyAqLworI2RlZmluZSBNSU5D TFMzMiAgMnUJCS8qIG1pbmltdW0gRkFUMzIgY2x1c3RlcnMgKi8KKyNkZWZp bmUgTUFYQ0xTMTIgIDB4ZmVkdSAJLyogbWF4aW11bSBGQVQxMiBjbHVzdGVy cyAqLworI2RlZmluZSBNQVhDTFMxNiAgMHhmZmY1dQkvKiBtYXhpbXVtIEZB VDE2IGNsdXN0ZXJzICovCisjZGVmaW5lIE1BWENMUzMyICAweGZmZmZmZjV1 CS8qIG1heGltdW0gRkFUMzIgY2x1c3RlcnMgKi8KIAogI2RlZmluZSBtaW5j bHMoZmF0KSAgKChmYXQpID09IDEyID8gTUlOQ0xTMTIgOglcCiAJCSAgICAg IChmYXQpID09IDE2ID8gTUlOQ0xTMTYgOglcCkBAIC05NiwyMyArOTYsMjMg QEAKICNkZWZpbmUgYXJndG94KGFyZywgbG8sIG1zZykgIGFyZ3RvdShhcmcs IGxvLCBVSU5UX01BWCwgbXNnKQogCiBzdHJ1Y3QgYnMgewotICAgIHVfaW50 OF90IGptcFszXTsJCS8qIGJvb3RzdHJhcCBlbnRyeSBwb2ludCAqLwotICAg IHVfaW50OF90IG9lbVs4XTsJCS8qIE9FTSBuYW1lIGFuZCB2ZXJzaW9uICov CisgICAgdV9pbnQ4X3QgYnNKdW1wWzNdOwkJLyogYm9vdHN0cmFwIGVudHJ5 IHBvaW50ICovCisgICAgdV9pbnQ4X3QgYnNPZW1OYW1lWzhdOwkJLyogT0VN IG5hbWUgYW5kIHZlcnNpb24gKi8KIH07CiAKIHN0cnVjdCBic2JwYiB7Ci0g ICAgdV9pbnQ4X3QgYnBzWzJdOwkJLyogYnl0ZXMgcGVyIHNlY3RvciAqLwot ICAgIHVfaW50OF90IHNwYzsJCS8qIHNlY3RvcnMgcGVyIGNsdXN0ZXIgKi8K LSAgICB1X2ludDhfdCByZXNbMl07CQkvKiByZXNlcnZlZCBzZWN0b3JzICov Ci0gICAgdV9pbnQ4X3QgbmZ0OwkJLyogbnVtYmVyIG9mIEZBVHMgKi8KLSAg ICB1X2ludDhfdCByZGVbMl07CQkvKiByb290IGRpcmVjdG9yeSBlbnRyaWVz ICovCi0gICAgdV9pbnQ4X3Qgc2VjWzJdOwkJLyogdG90YWwgc2VjdG9ycyAq LwotICAgIHVfaW50OF90IG1pZDsJCS8qIG1lZGlhIGRlc2NyaXB0b3IgKi8K LSAgICB1X2ludDhfdCBzcGZbMl07CQkvKiBzZWN0b3JzIHBlciBGQVQgKi8K LSAgICB1X2ludDhfdCBzcHRbMl07CQkvKiBzZWN0b3JzIHBlciB0cmFjayAq LwotICAgIHVfaW50OF90IGhkc1syXTsJCS8qIGRyaXZlIGhlYWRzICovCi0g ICAgdV9pbnQ4X3QgaGlkWzRdOwkJLyogaGlkZGVuIHNlY3RvcnMgKi8KLSAg ICB1X2ludDhfdCBic2VjWzRdOwkJLyogYmlnIHRvdGFsIHNlY3RvcnMgKi8K KyAgICB1X2ludDhfdCBicGJCeXRlc1BlclNlY1syXTsJCS8qIGJ5dGVzIHBl ciBzZWN0b3IgKi8KKyAgICB1X2ludDhfdCBicGJTZWNQZXJDbHVzdDsJCS8q IHNlY3RvcnMgcGVyIGNsdXN0ZXIgKi8KKyAgICB1X2ludDhfdCBicGJSZXNT ZWN0b3JzWzJdOwkJLyogcmVzZXJ2ZWQgc2VjdG9ycyAqLworICAgIHVfaW50 OF90IGJwYkZBVHM7CQkJLyogbnVtYmVyIG9mIEZBVHMgKi8KKyAgICB1X2lu dDhfdCBicGJSb290RGlyRW50c1syXTsJCS8qIHJvb3QgZGlyZWN0b3J5IGVu dHJpZXMgKi8KKyAgICB1X2ludDhfdCBicGJTZWN0b3JzWzJdOwkJLyogdG90 YWwgc2VjdG9ycyAqLworICAgIHVfaW50OF90IGJwYk1lZGlhOwkJCS8qIG1l ZGlhIGRlc2NyaXB0b3IgKi8KKyAgICB1X2ludDhfdCBicGJGQVRzZWNzWzJd OwkJLyogc2VjdG9ycyBwZXIgRkFUICovCisgICAgdV9pbnQ4X3QgYnBiU2Vj UGVyVHJhY2tbMl07CQkvKiBzZWN0b3JzIHBlciB0cmFjayAqLworICAgIHVf aW50OF90IGJwYkhlYWRzWzJdOwkJLyogZHJpdmUgaGVhZHMgKi8KKyAgICB1 X2ludDhfdCBicGJIaWRkZW5TZWNzWzRdOwkJLyogaGlkZGVuIHNlY3RvcnMg Ki8KKyAgICB1X2ludDhfdCBicGJIdWdlU2VjdG9yc1s0XTsJCS8qIGJpZyB0 b3RhbCBzZWN0b3JzICovCiB9OwogCiBzdHJ1Y3QgYnN4YnBiIHsKQEAgLTEy Miw2MyArMTIyLDY3IEBACiAgICAgdV9pbnQ4X3QgcmRjbFs0XTsJCS8qIHJv b3QgZGlyZWN0b3J5IHN0YXJ0IGNsdXN0ZXIgKi8KICAgICB1X2ludDhfdCBp bmZzWzJdOwkJLyogZmlsZSBzeXN0ZW0gaW5mbyBzZWN0b3IgKi8KICAgICB1 X2ludDhfdCBia2JzWzJdOwkJLyogYmFja3VwIGJvb3Qgc2VjdG9yICovCi0g ICAgdV9pbnQ4X3QgcnN2ZFsxMl07CQkvKiByZXNlcnZlZCAqLworICAgIHVf aW50OF90IHJzdmRbMTJdOwkJCS8qIHJlc2VydmVkICovCiB9OwogCiBzdHJ1 Y3QgYnN4IHsKLSAgICB1X2ludDhfdCBkcnY7CQkvKiBkcml2ZSBudW1iZXIg Ki8KLSAgICB1X2ludDhfdCByc3ZkOwkJLyogcmVzZXJ2ZWQgKi8KLSAgICB1 X2ludDhfdCBzaWc7CQkvKiBleHRlbmRlZCBib290IHNpZ25hdHVyZSAqLwot ICAgIHVfaW50OF90IHZvbGlkWzRdOwkJLyogdm9sdW1lIElEIG51bWJlciAq LwotICAgIHVfaW50OF90IGxhYmVsWzExXTsgCS8qIHZvbHVtZSBsYWJlbCAq LwotICAgIHVfaW50OF90IHR5cGVbOF07CQkvKiBmaWxlIHN5c3RlbSB0eXBl ICovCisgICAgdV9pbnQ4X3QgZXhEcml2ZU51bWJlcjsJCS8qIGRyaXZlIG51 bWJlciAqLworICAgIHVfaW50OF90IGV4UmVzZXJ2ZWQxOwkJLyogcmVzZXJ2 ZWQgKi8KKyAgICB1X2ludDhfdCBleEJvb3RTaWduYXR1cmU7CQkvKiBleHRl bmRlZCBib290IHNpZ25hdHVyZSAqLworICAgIHVfaW50OF90IGV4Vm9sdW1l SURbNF07CQkvKiB2b2x1bWUgSUQgbnVtYmVyICovCisgICAgdV9pbnQ4X3Qg ZXhWb2x1bWVMYWJlbFsxMV07IAkvKiB2b2x1bWUgbGFiZWwgKi8KKyAgICB1 X2ludDhfdCBleEZpbGVTeXNUeXBlWzhdOwkJLyogZmlsZSBzeXN0ZW0gdHlw ZSAqLwogfTsKIAogc3RydWN0IGRlIHsKLSAgICB1X2ludDhfdCBuYW1leHRb MTFdOwkvKiBuYW1lIGFuZCBleHRlbnNpb24gKi8KLSAgICB1X2ludDhfdCBh dHRyOwkJLyogYXR0cmlidXRlcyAqLworICAgIHVfaW50OF90IGRlTmFtZVsx MV07CS8qIG5hbWUgYW5kIGV4dGVuc2lvbiAqLworICAgIHVfaW50OF90IGRl QXR0cmlidXRlczsJLyogYXR0cmlidXRlcyAqLwogICAgIHVfaW50OF90IHJz dmRbMTBdOwkJLyogcmVzZXJ2ZWQgKi8KLSAgICB1X2ludDhfdCB0aW1lWzJd OwkJLyogY3JlYXRpb24gdGltZSAqLwotICAgIHVfaW50OF90IGRhdGVbMl07 CQkvKiBjcmVhdGlvbiBkYXRlICovCi0gICAgdV9pbnQ4X3QgY2x1c1syXTsJ CS8qIHN0YXJ0aW5nIGNsdXN0ZXIgKi8KLSAgICB1X2ludDhfdCBzaXplWzRd OwkJLyogc2l6ZSAqLworICAgIHVfaW50OF90IGRlQ1RpbWVbMl07CS8qIGNy ZWF0aW9uIHRpbWUgKi8KKyAgICB1X2ludDhfdCBkZUNEYXRlWzJdOwkvKiBj cmVhdGlvbiBkYXRlICovCisgICAgdV9pbnQ4X3QgZGVTdGFydENsdXN0ZXJb Ml07CS8qIHN0YXJ0aW5nIGNsdXN0ZXIgKi8KKyAgICB1X2ludDhfdCBkZUZp bGVTaXplWzRdOwkvKiBzaXplICovCiB9OwogCiBzdHJ1Y3QgYnBiIHsKLSAg ICB1X2ludCBicHM7CQkJLyogYnl0ZXMgcGVyIHNlY3RvciAqLwotICAgIHVf aW50IHNwYzsJCQkvKiBzZWN0b3JzIHBlciBjbHVzdGVyICovCi0gICAgdV9p bnQgcmVzOwkJCS8qIHJlc2VydmVkIHNlY3RvcnMgKi8KLSAgICB1X2ludCBu ZnQ7CQkJLyogbnVtYmVyIG9mIEZBVHMgKi8KLSAgICB1X2ludCByZGU7CQkJ Lyogcm9vdCBkaXJlY3RvcnkgZW50cmllcyAqLwotICAgIHVfaW50IHNlYzsJ CQkvKiB0b3RhbCBzZWN0b3JzICovCi0gICAgdV9pbnQgbWlkOwkJCS8qIG1l ZGlhIGRlc2NyaXB0b3IgKi8KLSAgICB1X2ludCBzcGY7CQkJLyogc2VjdG9y cyBwZXIgRkFUICovCi0gICAgdV9pbnQgc3B0OwkJCS8qIHNlY3RvcnMgcGVy IHRyYWNrICovCi0gICAgdV9pbnQgaGRzOwkJCS8qIGRyaXZlIGhlYWRzICov Ci0gICAgdV9pbnQgaGlkOwkJCS8qIGhpZGRlbiBzZWN0b3JzICovCi0gICAg dV9pbnQgYnNlYzsgCQkvKiBiaWcgdG90YWwgc2VjdG9ycyAqLwotICAgIHVf aW50IGJzcGY7IAkJLyogYmlnIHNlY3RvcnMgcGVyIEZBVCAqLwotICAgIHVf aW50IHJkY2w7IAkJLyogcm9vdCBkaXJlY3Rvcnkgc3RhcnQgY2x1c3RlciAq LwotICAgIHVfaW50IGluZnM7IAkJLyogZmlsZSBzeXN0ZW0gaW5mbyBzZWN0 b3IgKi8KLSAgICB1X2ludCBia2JzOyAJCS8qIGJhY2t1cCBib290IHNlY3Rv ciAqLworICAgIHVfaW50IGJwYkJ5dGVzUGVyU2VjOwkJLyogYnl0ZXMgcGVy IHNlY3RvciAqLworICAgIHVfaW50IGJwYlNlY1BlckNsdXN0OwkJLyogc2Vj dG9ycyBwZXIgY2x1c3RlciAqLworICAgIHVfaW50IGJwYlJlc1NlY3RvcnM7 CQkvKiByZXNlcnZlZCBzZWN0b3JzICovCisgICAgdV9pbnQgYnBiRkFUczsJ CQkvKiBudW1iZXIgb2YgRkFUcyAqLworICAgIHVfaW50IGJwYlJvb3REaXJF bnRzOwkJLyogcm9vdCBkaXJlY3RvcnkgZW50cmllcyAqLworICAgIHVfaW50 IGJwYlNlY3RvcnM7CQkJLyogdG90YWwgc2VjdG9ycyAqLworICAgIHVfaW50 IGJwYk1lZGlhOwkJCS8qIG1lZGlhIGRlc2NyaXB0b3IgKi8KKyAgICB1X2lu dCBicGJGQVRzZWNzOwkJCS8qIHNlY3RvcnMgcGVyIEZBVCAqLworICAgIHVf aW50IGJwYlNlY1BlclRyYWNrOwkJLyogc2VjdG9ycyBwZXIgdHJhY2sgKi8K KyAgICB1X2ludCBicGJIZWFkczsJCQkvKiBkcml2ZSBoZWFkcyAqLworICAg IHVfaW50IGJwYkhpZGRlblNlY3M7CQkvKiBoaWRkZW4gc2VjdG9ycyAqLwor ICAgIHVfaW50IGJwYkh1Z2VTZWN0b3JzOyAJCS8qIGJpZyB0b3RhbCBzZWN0 b3JzICovCisgICAgdV9pbnQgYnBiQmlnRkFUc2VjczsgCQkvKiBiaWcgc2Vj dG9ycyBwZXIgRkFUICovCisvKiBYWFg6IE1pc3NpbmcgRVhURmxhZ3MgRlNW ZXJzICovCisgICAgdV9pbnQgYnBiUm9vdENsdXN0OyAJCS8qIHJvb3QgZGly ZWN0b3J5IHN0YXJ0IGNsdXN0ZXIgKi8KKyAgICB1X2ludCBicGJGU0luZm87 IAkJLyogZmlsZSBzeXN0ZW0gaW5mbyBzZWN0b3IgKi8KKyAgICB1X2ludCBi cGJCYWNrdXA7IAkJLyogYmFja3VwIGJvb3Qgc2VjdG9yICovCiB9OwogCiAj ZGVmaW5lIEJQQkdBUCAwLCAwLCAwLCAwLCAwLCAwCiAKKyNkZWZpbmUgSU5J VChhLCBiLCBjLCBkLCBlLCBmLCBnLCBoLCBpLCBqKSBcCisgICAgeyAuYnBi Qnl0ZXNQZXJTZWMgPSBhLCAuYnBiU2VjUGVyQ2x1c3QgPSBiLCAuYnBiUmVz U2VjdG9ycyA9IGMsIC5icGJGQVRzID0gZCwgLmJwYlJvb3REaXJFbnRzID0g ZSwgXAorICAgICAgLmJwYlNlY3RvcnMgPSBmLCAuYnBiTWVkaWEgPSBnLCAu YnBiRkFUc2VjcyA9IGgsIC5icGJTZWNQZXJUcmFjayA9IGksIC5icGJIZWFk cyA9IGosIH0KIHN0YXRpYyBzdHJ1Y3QgewogICAgIGNvbnN0IGNoYXIgKm5h bWU7CiAgICAgc3RydWN0IGJwYiBicGI7CiB9IGNvbnN0IHN0ZGZtdFtdID0g ewotICAgIHsiMTYwIiwgIHs1MTIsIDEsIDEsIDIsICA2NCwgIDMyMCwgMHhm ZSwgMSwgIDgsIDEsIEJQQkdBUH19LAotICAgIHsiMTgwIiwgIHs1MTIsIDEs IDEsIDIsICA2NCwgIDM2MCwgMHhmYywgMiwgIDksIDEsIEJQQkdBUH19LAot ICAgIHsiMzIwIiwgIHs1MTIsIDIsIDEsIDIsIDExMiwgIDY0MCwgMHhmZiwg MSwgIDgsIDIsIEJQQkdBUH19LAotICAgIHsiMzYwIiwgIHs1MTIsIDIsIDEs IDIsIDExMiwgIDcyMCwgMHhmZCwgMiwgIDksIDIsIEJQQkdBUH19LAotICAg IHsiNjQwIiwgIHs1MTIsIDIsIDEsIDIsIDExMiwgMTI4MCwgMHhmYiwgMiwg IDgsIDIsIEJQQkdBUH19LCAgICAKLSAgICB7IjcyMCIsICB7NTEyLCAyLCAx LCAyLCAxMTIsIDE0NDAsIDB4ZjksIDMsICA5LCAyLCBCUEJHQVB9fSwKLSAg ICB7IjEyMDAiLCB7NTEyLCAxLCAxLCAyLCAyMjQsIDI0MDAsIDB4ZjksIDcs IDE1LCAyLCBCUEJHQVB9fSwKLSAgICB7IjEyMzIiLCB7MTAyNCwxLCAxLCAy LCAxOTIsIDEyMzIsIDB4ZmUsIDIsICA4LCAyLCBCUEJHQVB9fSwgICAgCi0g ICAgeyIxNDQwIiwgezUxMiwgMSwgMSwgMiwgMjI0LCAyODgwLCAweGYwLCA5 LCAxOCwgMiwgQlBCR0FQfX0sCi0gICAgeyIyODgwIiwgezUxMiwgMiwgMSwg MiwgMjQwLCA1NzYwLCAweGYwLCA5LCAzNiwgMiwgQlBCR0FQfX0KKyAgICB7 IjE2MCIsICBJTklUKDUxMiwgMSwgMSwgMiwgIDY0LCAgMzIwLCAweGZlLCAx LCAgOCwgMSl9LAorICAgIHsiMTgwIiwgIElOSVQoNTEyLCAxLCAxLCAyLCAg NjQsICAzNjAsIDB4ZmMsIDIsICA5LCAxKX0sCisgICAgeyIzMjAiLCAgSU5J VCg1MTIsIDIsIDEsIDIsIDExMiwgIDY0MCwgMHhmZiwgMSwgIDgsIDIpfSwK KyAgICB7IjM2MCIsICBJTklUKDUxMiwgMiwgMSwgMiwgMTEyLCAgNzIwLCAw eGZkLCAyLCAgOSwgMil9LAorICAgIHsiNjQwIiwgIElOSVQoNTEyLCAyLCAx LCAyLCAxMTIsIDEyODAsIDB4ZmIsIDIsICA4LCAyKX0sICAgIAorICAgIHsi NzIwIiwgIElOSVQoNTEyLCAyLCAxLCAyLCAxMTIsIDE0NDAsIDB4ZjksIDMs ICA5LCAyKX0sCisgICAgeyIxMjAwIiwgSU5JVCg1MTIsIDEsIDEsIDIsIDIy NCwgMjQwMCwgMHhmOSwgNywgMTUsIDIpfSwKKyAgICB7IjEyMzIiLCBJTklU KDEwMjQsMSwgMSwgMiwgMTkyLCAxMjMyLCAweGZlLCAyLCAgOCwgMil9LCAg ICAKKyAgICB7IjE0NDAiLCBJTklUKDUxMiwgMSwgMSwgMiwgMjI0LCAyODgw LCAweGYwLCA5LCAxOCwgMil9LAorICAgIHsiMjg4MCIsIElOSVQoNTEyLCAy LCAxLCAyLCAyNDAsIDU3NjAsIDB4ZjAsIDksIDM2LCAyKX0KIH07CiAKIHN0 YXRpYyBjb25zdCB1X2ludDhfdCBib290Y29kZVtdID0gewpAQCAtMzgxLDQ5 ICszODUsNDkgQEAKICAgICBtZW1zZXQoJmJwYiwgMCwgc2l6ZW9mKGJwYikp OwogICAgIGlmIChvcHRfZikgewogCWdldHN0ZGZtdChvcHRfZiwgJmJwYik7 Ci0JYnBiLmJzZWMgPSBicGIuc2VjOwotCWJwYi5zZWMgPSAwOwotCWJwYi5i c3BmID0gYnBiLnNwZjsKLQlicGIuc3BmID0gMDsKKwlicGIuYnBiSHVnZVNl Y3RvcnMgPSBicGIuYnBiU2VjdG9yczsKKwlicGIuYnBiU2VjdG9ycyA9IDA7 CisJYnBiLmJwYkJpZ0ZBVHNlY3MgPSBicGIuYnBiRkFUc2VjczsKKwlicGIu YnBiRkFUc2VjcyA9IDA7CiAgICAgfQogICAgIGlmIChvcHRfaCkKLQlicGIu aGRzID0gb3B0X2g7CisJYnBiLmJwYkhlYWRzID0gb3B0X2g7CiAgICAgaWYg KG9wdF91KQotCWJwYi5zcHQgPSBvcHRfdTsKKwlicGIuYnBiU2VjUGVyVHJh Y2sgPSBvcHRfdTsKICAgICBpZiAob3B0X1MpCi0JYnBiLmJwcyA9IG9wdF9T OworCWJwYi5icGJCeXRlc1BlclNlYyA9IG9wdF9TOwogICAgIGlmIChvcHRf cykKLQlicGIuYnNlYyA9IG9wdF9zOworCWJwYi5icGJIdWdlU2VjdG9ycyA9 IG9wdF9zOwogICAgIGlmIChvZmxhZykKLQlicGIuaGlkID0gb3B0X287CisJ YnBiLmJwYkhpZGRlblNlY3MgPSBvcHRfbzsKICAgICBpZiAoIShvcHRfZiB8 fCAob3B0X2ggJiYgb3B0X3UgJiYgb3B0X1MgJiYgb3B0X3MgJiYgb2ZsYWcp KSkgewogCW9mZl90IGRlbHRhOwogCWdldGRpc2tpbmZvKGZkLCBmbmFtZSwg ZHR5cGUsIG9mbGFnLCAmYnBiKTsKLQlicGIuYnNlYyAtPSAob3B0X29mcyAv IGJwYi5icHMpOwotCWRlbHRhID0gYnBiLmJzZWMgJSBicGIuc3B0OworCWJw Yi5icGJIdWdlU2VjdG9ycyAtPSAob3B0X29mcyAvIGJwYi5icGJCeXRlc1Bl clNlYyk7CisJZGVsdGEgPSBicGIuYnBiSHVnZVNlY3RvcnMgJSBicGIuYnBi U2VjUGVyVHJhY2s7CiAJaWYgKGRlbHRhICE9IDApIHsKIAkgICAgd2Fybngo InRyaW0gJWQgc2VjdG9ycyB0byBhZGp1c3QgdG8gYSBtdWx0aXBsZSBvZiAl ZCIsCi0JCShpbnQpZGVsdGEsIGJwYi5zcHQpOwotCSAgICBicGIuYnNlYyAt PSBkZWx0YTsKKwkJKGludClkZWx0YSwgYnBiLmJwYlNlY1BlclRyYWNrKTsK KwkgICAgYnBiLmJwYkh1Z2VTZWN0b3JzIC09IGRlbHRhOwogCX0KLQlpZiAo YnBiLnNwYyA9PSAwKSB7CS8qIHNldCBkZWZhdWx0cyAqLwotCSAgICBpZiAo YnBiLmJzZWMgPD0gNjAwMCkJLyogYWJvdXQgM01CIC0+IDUxMiBieXRlcyAq LwotCQlicGIuc3BjID0gMTsKLQkgICAgZWxzZSBpZiAoYnBiLmJzZWMgPD0g KDE8PDE3KSkgLyogNjRNIC0+IDRrICovCi0JCWJwYi5zcGMgPSA4OwotCSAg ICBlbHNlIGlmIChicGIuYnNlYyA8PSAoMTw8MTkpKSAvKiAyNTZNIC0+IDhr ICovCi0JCWJwYi5zcGMgPSAxNjsKLQkgICAgZWxzZSBpZiAoYnBiLmJzZWMg PD0gKDE8PDIxKSkgLyogMUcgLT4gMTZrICovCi0JCWJwYi5zcGMgPSAzMjsK KwlpZiAoYnBiLmJwYlNlY1BlckNsdXN0ID09IDApIHsJLyogc2V0IGRlZmF1 bHRzICovCisJICAgIGlmIChicGIuYnBiSHVnZVNlY3RvcnMgPD0gNjAwMCkJ LyogYWJvdXQgM01CIC0+IDUxMiBieXRlcyAqLworCQlicGIuYnBiU2VjUGVy Q2x1c3QgPSAxOworCSAgICBlbHNlIGlmIChicGIuYnBiSHVnZVNlY3RvcnMg PD0gKDE8PDE3KSkgLyogNjRNIC0+IDRrICovCisJCWJwYi5icGJTZWNQZXJD bHVzdCA9IDg7CisJICAgIGVsc2UgaWYgKGJwYi5icGJIdWdlU2VjdG9ycyA8 PSAoMTw8MTkpKSAvKiAyNTZNIC0+IDhrICovCisJCWJwYi5icGJTZWNQZXJD bHVzdCA9IDE2OworCSAgICBlbHNlIGlmIChicGIuYnBiSHVnZVNlY3RvcnMg PD0gKDE8PDIxKSkgLyogMUcgLT4gMTZrICovCisJCWJwYi5icGJTZWNQZXJD bHVzdCA9IDMyOwogCSAgICBlbHNlCi0JCWJwYi5zcGMgPSA2NDsJCS8qIG90 aGVyd2lzZSAzMmsgKi8KKwkJYnBiLmJwYlNlY1BlckNsdXN0ID0gNjQ7CQkv KiBvdGhlcndpc2UgMzJrICovCiAJfQogICAgIH0KLSAgICBpZiAoIXBvd2Vy b2YyKGJwYi5icHMpKQotCWVycngoMSwgImJ5dGVzL3NlY3RvciAoJXUpIGlz IG5vdCBhIHBvd2VyIG9mIDIiLCBicGIuYnBzKTsKLSAgICBpZiAoYnBiLmJw cyA8IE1JTkJQUykKKyAgICBpZiAoIXBvd2Vyb2YyKGJwYi5icGJCeXRlc1Bl clNlYykpCisJZXJyeCgxLCAiYnl0ZXMvc2VjdG9yICgldSkgaXMgbm90IGEg cG93ZXIgb2YgMiIsIGJwYi5icGJCeXRlc1BlclNlYyk7CisgICAgaWYgKGJw Yi5icGJCeXRlc1BlclNlYyA8IE1JTkJQUykKIAllcnJ4KDEsICJieXRlcy9z ZWN0b3IgKCV1KSBpcyB0b28gc21hbGw7IG1pbmltdW0gaXMgJXUiLAotCSAg ICAgYnBiLmJwcywgTUlOQlBTKTsKKwkgICAgIGJwYi5icGJCeXRlc1BlclNl YywgTUlOQlBTKTsKICAgICBpZiAoIShmYXQgPSBvcHRfRikpIHsKIAlpZiAo b3B0X2YpCiAJICAgIGZhdCA9IDEyOwpAQCAtNDM1LDQ0ICs0MzksNDQgQEAK IAkgICAgIGZhdCA9PSAzMiA/ICdlJyA6IG9wdF9pID8gJ2knIDogJ2snLAog CSAgICAgZmF0ID09IDMyID8gIjMyIiA6ICIxMi8xNiIpOwogICAgIGlmIChv cHRfZiAmJiBmYXQgPT0gMzIpCi0JYnBiLnJkZSA9IDA7CisJYnBiLmJwYlJv b3REaXJFbnRzID0gMDsKICAgICBpZiAob3B0X2IpIHsKIAlpZiAoIXBvd2Vy b2YyKG9wdF9iKSkKIAkgICAgZXJyeCgxLCAiYmxvY2sgc2l6ZSAoJXUpIGlz IG5vdCBhIHBvd2VyIG9mIDIiLCBvcHRfYik7Ci0JaWYgKG9wdF9iIDwgYnBi LmJwcykKKwlpZiAob3B0X2IgPCBicGIuYnBiQnl0ZXNQZXJTZWMpCiAJICAg IGVycngoMSwgImJsb2NrIHNpemUgKCV1KSBpcyB0b28gc21hbGw7IG1pbmlt dW0gaXMgJXUiLAotCQkgb3B0X2IsIGJwYi5icHMpOwotCWlmIChvcHRfYiA+ IGJwYi5icHMgKiBNQVhTUEMpCisJCSBvcHRfYiwgYnBiLmJwYkJ5dGVzUGVy U2VjKTsKKwlpZiAob3B0X2IgPiBicGIuYnBiQnl0ZXNQZXJTZWMgKiBNQVhT UEMpCiAJICAgIGVycngoMSwgImJsb2NrIHNpemUgKCV1KSBpcyB0b28gbGFy Z2U7IG1heGltdW0gaXMgJXUiLAotCQkgb3B0X2IsIGJwYi5icHMgKiBNQVhT UEMpOwotCWJwYi5zcGMgPSBvcHRfYiAvIGJwYi5icHM7CisJCSBvcHRfYiwg YnBiLmJwYkJ5dGVzUGVyU2VjICogTUFYU1BDKTsKKwlicGIuYnBiU2VjUGVy Q2x1c3QgPSBvcHRfYiAvIGJwYi5icGJCeXRlc1BlclNlYzsKICAgICB9CiAg ICAgaWYgKG9wdF9jKSB7CiAJaWYgKCFwb3dlcm9mMihvcHRfYykpCiAJICAg IGVycngoMSwgInNlY3RvcnMvY2x1c3RlciAoJXUpIGlzIG5vdCBhIHBvd2Vy IG9mIDIiLCBvcHRfYyk7Ci0JYnBiLnNwYyA9IG9wdF9jOworCWJwYi5icGJT ZWNQZXJDbHVzdCA9IG9wdF9jOwogICAgIH0KICAgICBpZiAob3B0X3IpCi0J YnBiLnJlcyA9IG9wdF9yOworCWJwYi5icGJSZXNTZWN0b3JzID0gb3B0X3I7 CiAgICAgaWYgKG9wdF9uKSB7CiAJaWYgKG9wdF9uID4gTUFYTkZUKQogCSAg ICBlcnJ4KDEsICJudW1iZXIgb2YgRkFUcyAoJXUpIGlzIHRvbyBsYXJnZTsg bWF4aW11bSBpcyAldSIsCiAJCSBvcHRfbiwgTUFYTkZUKTsKLQlicGIubmZ0 ID0gb3B0X247CisJYnBiLmJwYkZBVHMgPSBvcHRfbjsKICAgICB9CiAgICAg aWYgKG9wdF9lKQotCWJwYi5yZGUgPSBvcHRfZTsKKwlicGIuYnBiUm9vdERp ckVudHMgPSBvcHRfZTsKICAgICBpZiAobWZsYWcpIHsKIAlpZiAob3B0X20g PCAweGYwKQogCSAgICBlcnJ4KDEsICJpbGxlZ2FsIG1lZGlhIGRlc2NyaXB0 b3IgKCUjeCkiLCBvcHRfbSk7Ci0JYnBiLm1pZCA9IG9wdF9tOworCWJwYi5i cGJNZWRpYSA9IG9wdF9tOwogICAgIH0KICAgICBpZiAob3B0X2EpCi0JYnBi LmJzcGYgPSBvcHRfYTsKKwlicGIuYnBiQmlnRkFUc2VjcyA9IG9wdF9hOwog ICAgIGlmIChvcHRfaSkKLQlicGIuaW5mcyA9IG9wdF9pOworCWJwYi5icGJG U0luZm8gPSBvcHRfaTsKICAgICBpZiAob3B0X2spCi0JYnBiLmJrYnMgPSBv cHRfazsKKwlicGIuYnBiQmFja3VwID0gb3B0X2s7CiAgICAgYnNzID0gMTsK ICAgICBibmFtZSA9IE5VTEw7CiAgICAgZmQxID0gLTE7CkBAIC00ODUsODcg KzQ4OSw4NyBAQAogCX0KIAlpZiAoKGZkMSA9IG9wZW4oYm5hbWUsIE9fUkRP TkxZKSkgPT0gLTEgfHwgZnN0YXQoZmQxLCAmc2IpKQogCSAgICBlcnIoMSwg IiVzIiwgYm5hbWUpOwotCWlmICghU19JU1JFRyhzYi5zdF9tb2RlKSB8fCBz Yi5zdF9zaXplICUgYnBiLmJwcyB8fAotCSAgICBzYi5zdF9zaXplIDwgYnBi LmJwcyB8fCBzYi5zdF9zaXplID4gYnBiLmJwcyAqIE1BWFUxNikKKwlpZiAo IVNfSVNSRUcoc2Iuc3RfbW9kZSkgfHwgc2Iuc3Rfc2l6ZSAlIGJwYi5icGJC eXRlc1BlclNlYyB8fAorCSAgICBzYi5zdF9zaXplIDwgYnBiLmJwYkJ5dGVz UGVyU2VjIHx8IHNiLnN0X3NpemUgPiBicGIuYnBiQnl0ZXNQZXJTZWMgKiBN QVhVMTYpCiAJICAgIGVycngoMSwgIiVzOiBpbmFwcHJvcHJpYXRlIGZpbGUg dHlwZSBvciBmb3JtYXQiLCBibmFtZSk7Ci0JYnNzID0gc2Iuc3Rfc2l6ZSAv IGJwYi5icHM7CisJYnNzID0gc2Iuc3Rfc2l6ZSAvIGJwYi5icGJCeXRlc1Bl clNlYzsKICAgICB9Ci0gICAgaWYgKCFicGIubmZ0KQotCWJwYi5uZnQgPSAy OworICAgIGlmICghYnBiLmJwYkZBVHMpCisJYnBiLmJwYkZBVHMgPSAyOwog ICAgIGlmICghZmF0KSB7Ci0JaWYgKGJwYi5ic2VjIDwgKGJwYi5yZXMgPyBi cGIucmVzIDogYnNzKSArCi0JICAgIGhvd21hbnkoKFJFU0ZURSArIChicGIu c3BjID8gTUlOQ0xTMTYgOiBNQVhDTFMxMiArIDEpKSAqCi0JCSAgICAoKGJw Yi5zcGMgPyAxNiA6IDEyKSAvIEJQTiksIGJwYi5icHMgKiBOUEIpICoKLQkg ICAgYnBiLm5mdCArCi0JICAgIGhvd21hbnkoYnBiLnJkZSA/IGJwYi5yZGUg OiBERUZSREUsCi0JCSAgICBicGIuYnBzIC8gc2l6ZW9mKHN0cnVjdCBkZSkp ICsKLQkgICAgKGJwYi5zcGMgPyBNSU5DTFMxNiA6IE1BWENMUzEyICsgMSkg KgotCSAgICAoYnBiLnNwYyA/IGJwYi5zcGMgOiBob3dtYW55KERFRkJMSywg YnBiLmJwcykpKQorCWlmIChicGIuYnBiSHVnZVNlY3RvcnMgPCAoYnBiLmJw YlJlc1NlY3RvcnMgPyBicGIuYnBiUmVzU2VjdG9ycyA6IGJzcykgKworCSAg ICBob3dtYW55KChSRVNGVEUgKyAoYnBiLmJwYlNlY1BlckNsdXN0ID8gTUlO Q0xTMTYgOiBNQVhDTFMxMiArIDEpKSAqCisJCSAgICAoKGJwYi5icGJTZWNQ ZXJDbHVzdCA/IDE2IDogMTIpIC8gQlBOKSwgYnBiLmJwYkJ5dGVzUGVyU2Vj ICogTlBCKSAqCisJICAgIGJwYi5icGJGQVRzICsKKwkgICAgaG93bWFueShi cGIuYnBiUm9vdERpckVudHMgPyBicGIuYnBiUm9vdERpckVudHMgOiBERUZS REUsCisJCSAgICBicGIuYnBiQnl0ZXNQZXJTZWMgLyBzaXplb2Yoc3RydWN0 IGRlKSkgKworCSAgICAoYnBiLmJwYlNlY1BlckNsdXN0ID8gTUlOQ0xTMTYg OiBNQVhDTFMxMiArIDEpICoKKwkgICAgKGJwYi5icGJTZWNQZXJDbHVzdCA/ IGJwYi5icGJTZWNQZXJDbHVzdCA6IGhvd21hbnkoREVGQkxLLCBicGIuYnBi Qnl0ZXNQZXJTZWMpKSkKIAkgICAgZmF0ID0gMTI7Ci0JZWxzZSBpZiAoYnBi LnJkZSB8fCBicGIuYnNlYyA8Ci0JCSAoYnBiLnJlcyA/IGJwYi5yZXMgOiBi c3MpICsKLQkJIGhvd21hbnkoKFJFU0ZURSArIE1BWENMUzE2KSAqIDIsIGJw Yi5icHMpICogYnBiLm5mdCArCi0JCSBob3dtYW55KERFRlJERSwgYnBiLmJw cyAvIHNpemVvZihzdHJ1Y3QgZGUpKSArCisJZWxzZSBpZiAoYnBiLmJwYlJv b3REaXJFbnRzIHx8IGJwYi5icGJIdWdlU2VjdG9ycyA8CisJCSAoYnBiLmJw YlJlc1NlY3RvcnMgPyBicGIuYnBiUmVzU2VjdG9ycyA6IGJzcykgKworCQkg aG93bWFueSgoUkVTRlRFICsgTUFYQ0xTMTYpICogMiwgYnBiLmJwYkJ5dGVz UGVyU2VjKSAqIGJwYi5icGJGQVRzICsKKwkJIGhvd21hbnkoREVGUkRFLCBi cGIuYnBiQnl0ZXNQZXJTZWMgLyBzaXplb2Yoc3RydWN0IGRlKSkgKwogCQkg KE1BWENMUzE2ICsgMSkgKgotCQkgKGJwYi5zcGMgPyBicGIuc3BjIDogaG93 bWFueSg4MTkyLCBicGIuYnBzKSkpCisJCSAoYnBiLmJwYlNlY1BlckNsdXN0 ID8gYnBiLmJwYlNlY1BlckNsdXN0IDogaG93bWFueSg4MTkyLCBicGIuYnBi Qnl0ZXNQZXJTZWMpKSkKIAkgICAgZmF0ID0gMTY7CiAJZWxzZQogCSAgICBm YXQgPSAzMjsKICAgICB9CiAgICAgeCA9IGJzczsKICAgICBpZiAoZmF0ID09 IDMyKSB7Ci0JaWYgKCFicGIuaW5mcykgewotCSAgICBpZiAoeCA9PSBNQVhV MTYgfHwgeCA9PSBicGIuYmticykKKwlpZiAoIWJwYi5icGJGU0luZm8pIHsK KwkgICAgaWYgKHggPT0gTUFYVTE2IHx8IHggPT0gYnBiLmJwYkJhY2t1cCkK IAkJZXJyeCgxLCAibm8gcm9vbSBmb3IgaW5mbyBzZWN0b3IiKTsKLQkgICAg YnBiLmluZnMgPSB4OworCSAgICBicGIuYnBiRlNJbmZvID0geDsKIAl9Ci0J aWYgKGJwYi5pbmZzICE9IE1BWFUxNiAmJiB4IDw9IGJwYi5pbmZzKQotCSAg ICB4ID0gYnBiLmluZnMgKyAxOwotCWlmICghYnBiLmJrYnMpIHsKKwlpZiAo YnBiLmJwYkZTSW5mbyAhPSBNQVhVMTYgJiYgeCA8PSBicGIuYnBiRlNJbmZv KQorCSAgICB4ID0gYnBiLmJwYkZTSW5mbyArIDE7CisJaWYgKCFicGIuYnBi QmFja3VwKSB7CiAJICAgIGlmICh4ID09IE1BWFUxNikKIAkJZXJyeCgxLCAi bm8gcm9vbSBmb3IgYmFja3VwIHNlY3RvciIpOwotCSAgICBicGIuYmticyA9 IHg7Ci0JfSBlbHNlIGlmIChicGIuYmticyAhPSBNQVhVMTYgJiYgYnBiLmJr YnMgPT0gYnBiLmluZnMpCisJICAgIGJwYi5icGJCYWNrdXAgPSB4OworCX0g ZWxzZSBpZiAoYnBiLmJwYkJhY2t1cCAhPSBNQVhVMTYgJiYgYnBiLmJwYkJh Y2t1cCA9PSBicGIuYnBiRlNJbmZvKQogCSAgICBlcnJ4KDEsICJiYWNrdXAg c2VjdG9yIHdvdWxkIG92ZXJ3cml0ZSBpbmZvIHNlY3RvciIpOwotCWlmIChi cGIuYmticyAhPSBNQVhVMTYgJiYgeCA8PSBicGIuYmticykKLQkgICAgeCA9 IGJwYi5ia2JzICsgMTsKKwlpZiAoYnBiLmJwYkJhY2t1cCAhPSBNQVhVMTYg JiYgeCA8PSBicGIuYnBiQmFja3VwKQorCSAgICB4ID0gYnBiLmJwYkJhY2t1 cCArIDE7CiAgICAgfQotICAgIGlmICghYnBiLnJlcykKLQlicGIucmVzID0g ZmF0ID09IDMyID8gTUFYKHgsIE1BWCgxNjM4NCAvIGJwYi5icHMsIDQpKSA6 IHg7Ci0gICAgZWxzZSBpZiAoYnBiLnJlcyA8IHgpCi0JZXJyeCgxLCAidG9v IGZldyByZXNlcnZlZCBzZWN0b3JzIik7Ci0gICAgaWYgKGZhdCAhPSAzMiAm JiAhYnBiLnJkZSkKLQlicGIucmRlID0gREVGUkRFOwotICAgIHJkcyA9IGhv d21hbnkoYnBiLnJkZSwgYnBiLmJwcyAvIHNpemVvZihzdHJ1Y3QgZGUpKTsK LSAgICBpZiAoIWJwYi5zcGMpCi0JZm9yIChicGIuc3BjID0gaG93bWFueShm YXQgPT0gMTYgPyBERUZCTEsxNiA6IERFRkJMSywgYnBiLmJwcyk7Ci0JICAg ICBicGIuc3BjIDwgTUFYU1BDICYmCi0JICAgICBicGIucmVzICsKKyAgICBp ZiAoIWJwYi5icGJSZXNTZWN0b3JzKQorCWJwYi5icGJSZXNTZWN0b3JzID0g ZmF0ID09IDMyID8gTUFYKHgsIE1BWCgxNjM4NCAvIGJwYi5icGJCeXRlc1Bl clNlYywgNCkpIDogeDsKKyAgICBlbHNlIGlmIChicGIuYnBiUmVzU2VjdG9y cyA8IHgpCisJZXJyeCgxLCAidG9vIGZldyByZXNlcnZlZCBzZWN0b3JzIChu ZWVkICVkIGhhdmUgJWQpIiwgeCwgYnBiLmJwYlJlc1NlY3RvcnMpOworICAg IGlmIChmYXQgIT0gMzIgJiYgIWJwYi5icGJSb290RGlyRW50cykKKwlicGIu YnBiUm9vdERpckVudHMgPSBERUZSREU7CisgICAgcmRzID0gaG93bWFueShi cGIuYnBiUm9vdERpckVudHMsIGJwYi5icGJCeXRlc1BlclNlYyAvIHNpemVv ZihzdHJ1Y3QgZGUpKTsKKyAgICBpZiAoIWJwYi5icGJTZWNQZXJDbHVzdCkK Kwlmb3IgKGJwYi5icGJTZWNQZXJDbHVzdCA9IGhvd21hbnkoZmF0ID09IDE2 ID8gREVGQkxLMTYgOiBERUZCTEssIGJwYi5icGJCeXRlc1BlclNlYyk7CisJ ICAgICBicGIuYnBiU2VjUGVyQ2x1c3QgPCBNQVhTUEMgJiYKKwkgICAgIGJw Yi5icGJSZXNTZWN0b3JzICsKIAkgICAgIGhvd21hbnkoKFJFU0ZURSArIG1h eGNscyhmYXQpKSAqIChmYXQgLyBCUE4pLAotCQkgICAgIGJwYi5icHMgKiBO UEIpICogYnBiLm5mdCArCisJCSAgICAgYnBiLmJwYkJ5dGVzUGVyU2VjICog TlBCKSAqIGJwYi5icGJGQVRzICsKIAkgICAgIHJkcyArCi0JICAgICAodV9p bnQ2NF90KShtYXhjbHMoZmF0KSArIDEpICogYnBiLnNwYyA8PSBicGIuYnNl YzsKLQkgICAgIGJwYi5zcGMgPDw9IDEpOwotICAgIGlmIChmYXQgIT0gMzIg JiYgYnBiLmJzcGYgPiBNQVhVMTYpCisJICAgICAodV9pbnQ2NF90KShtYXhj bHMoZmF0KSArIDEpICogYnBiLmJwYlNlY1BlckNsdXN0IDw9IGJwYi5icGJI dWdlU2VjdG9yczsKKwkgICAgIGJwYi5icGJTZWNQZXJDbHVzdCA8PD0gMSk7 CisgICAgaWYgKGZhdCAhPSAzMiAmJiBicGIuYnBiQmlnRkFUc2VjcyA+IE1B WFUxNikKIAllcnJ4KDEsICJ0b28gbWFueSBzZWN0b3JzL0ZBVCBmb3IgRkFU MTIvMTYiKTsKLSAgICB4MSA9IGJwYi5yZXMgKyByZHM7Ci0gICAgeCA9IGJw Yi5ic3BmID8gYnBiLmJzcGYgOiAxOwotICAgIGlmICh4MSArICh1X2ludDY0 X3QpeCAqIGJwYi5uZnQgPiBicGIuYnNlYykKKyAgICB4MSA9IGJwYi5icGJS ZXNTZWN0b3JzICsgcmRzOworICAgIHggPSBicGIuYnBiQmlnRkFUc2VjcyA/ IGJwYi5icGJCaWdGQVRzZWNzIDogMTsKKyAgICBpZiAoeDEgKyAodV9pbnQ2 NF90KXggKiBicGIuYnBiRkFUcyA+IGJwYi5icGJIdWdlU2VjdG9ycykKIAll cnJ4KDEsICJtZXRhIGRhdGEgZXhjZWVkcyBmaWxlIHN5c3RlbSBzaXplIik7 Ci0gICAgeDEgKz0geCAqIGJwYi5uZnQ7Ci0gICAgeCA9ICh1X2ludDY0X3Qp KGJwYi5ic2VjIC0geDEpICogYnBiLmJwcyAqIE5QQiAvCi0JKGJwYi5zcGMg KiBicGIuYnBzICogTlBCICsgZmF0IC8gQlBOICogYnBiLm5mdCk7CisgICAg eDEgKz0geCAqIGJwYi5icGJGQVRzOworICAgIHggPSAodV9pbnQ2NF90KShi cGIuYnBiSHVnZVNlY3RvcnMgLSB4MSkgKiBicGIuYnBiQnl0ZXNQZXJTZWMg KiBOUEIgLworCShicGIuYnBiU2VjUGVyQ2x1c3QgKiBicGIuYnBiQnl0ZXNQ ZXJTZWMgKiBOUEIgKyBmYXQgLyBCUE4gKiBicGIuYnBiRkFUcyk7CiAgICAg eDIgPSBob3dtYW55KChSRVNGVEUgKyBNSU4oeCwgbWF4Y2xzKGZhdCkpKSAq IChmYXQgLyBCUE4pLAotCQkgYnBiLmJwcyAqIE5QQik7Ci0gICAgaWYgKCFi cGIuYnNwZikgewotCWJwYi5ic3BmID0geDI7Ci0JeDEgKz0gKGJwYi5ic3Bm IC0gMSkgKiBicGIubmZ0OworCQkgYnBiLmJwYkJ5dGVzUGVyU2VjICogTlBC KTsKKyAgICBpZiAoIWJwYi5icGJCaWdGQVRzZWNzKSB7CisJYnBiLmJwYkJp Z0ZBVHNlY3MgPSB4MjsKKwl4MSArPSAoYnBiLmJwYkJpZ0ZBVHNlY3MgLSAx KSAqIGJwYi5icGJGQVRzOwogICAgIH0KLSAgICBjbHMgPSAoYnBiLmJzZWMg LSB4MSkgLyBicGIuc3BjOwotICAgIHggPSAodV9pbnQ2NF90KWJwYi5ic3Bm ICogYnBiLmJwcyAqIE5QQiAvIChmYXQgLyBCUE4pIC0gUkVTRlRFOworICAg IGNscyA9IChicGIuYnBiSHVnZVNlY3RvcnMgLSB4MSkgLyBicGIuYnBiU2Vj UGVyQ2x1c3Q7CisgICAgeCA9ICh1X2ludDY0X3QpYnBiLmJwYkJpZ0ZBVHNl Y3MgKiBicGIuYnBiQnl0ZXNQZXJTZWMgKiBOUEIgLyAoZmF0IC8gQlBOKSAt IFJFU0ZURTsKICAgICBpZiAoY2xzID4geCkKIAljbHMgPSB4OwotICAgIGlm IChicGIuYnNwZiA8IHgyKQorICAgIGlmIChicGIuYnBiQmlnRkFUc2VjcyA8 IHgyKQogCXdhcm54KCJ3YXJuaW5nOiBzZWN0b3JzL0ZBVCBsaW1pdHMgZmls ZSBzeXN0ZW0gdG8gJXUgY2x1c3RlcnMiLAogCSAgICAgIGNscyk7CiAgICAg aWYgKGNscyA8IG1pbmNscyhmYXQpKQpAQCAtNTczLDc5ICs1NzcsNzkgQEAK IAkgICAgbWluY2xzKGZhdCkpOwogICAgIGlmIChjbHMgPiBtYXhjbHMoZmF0 KSkgewogCWNscyA9IG1heGNscyhmYXQpOwotCWJwYi5ic2VjID0geDEgKyAo Y2xzICsgMSkgKiBicGIuc3BjIC0gMTsKKwlicGIuYnBiSHVnZVNlY3RvcnMg PSB4MSArIChjbHMgKyAxKSAqIGJwYi5icGJTZWNQZXJDbHVzdCAtIDE7CiAJ d2FybngoIndhcm5pbmc6IEZBVCB0eXBlIGxpbWl0cyBmaWxlIHN5c3RlbSB0 byAldSBzZWN0b3JzIiwKLQkgICAgICBicGIuYnNlYyk7CisJICAgICAgYnBi LmJwYkh1Z2VTZWN0b3JzKTsKICAgICB9CiAgICAgcHJpbnRmKCIlczogJXUg c2VjdG9yJXMgaW4gJXUgRkFUJXUgY2x1c3RlciVzICIKLQkgICAiKCV1IGJ5 dGVzL2NsdXN0ZXIpXG4iLCBmbmFtZSwgY2xzICogYnBiLnNwYywKLQkgICBj bHMgKiBicGIuc3BjID09IDEgPyAiIiA6ICJzIiwgY2xzLCBmYXQsCi0JICAg Y2xzID09IDEgPyAiIiA6ICJzIiwgYnBiLmJwcyAqIGJwYi5zcGMpOwotICAg IGlmICghYnBiLm1pZCkKLQlicGIubWlkID0gIWJwYi5oaWQgPyAweGYwIDog MHhmODsKKwkgICAiKCV1IGJ5dGVzL2NsdXN0ZXIpXG4iLCBmbmFtZSwgY2xz ICogYnBiLmJwYlNlY1BlckNsdXN0LAorCSAgIGNscyAqIGJwYi5icGJTZWNQ ZXJDbHVzdCA9PSAxID8gIiIgOiAicyIsIGNscywgZmF0LAorCSAgIGNscyA9 PSAxID8gIiIgOiAicyIsIGJwYi5icGJCeXRlc1BlclNlYyAqIGJwYi5icGJT ZWNQZXJDbHVzdCk7CisgICAgaWYgKCFicGIuYnBiTWVkaWEpCisJYnBiLmJw Yk1lZGlhID0gIWJwYi5icGJIaWRkZW5TZWNzID8gMHhmMCA6IDB4Zjg7CiAg ICAgaWYgKGZhdCA9PSAzMikKLQlicGIucmRjbCA9IFJFU0ZURTsKLSAgICBp ZiAoYnBiLmhpZCArIGJwYi5ic2VjIDw9IE1BWFUxNikgewotCWJwYi5zZWMg PSBicGIuYnNlYzsKLQlicGIuYnNlYyA9IDA7CisJYnBiLmJwYlJvb3RDbHVz dCA9IFJFU0ZURTsKKyAgICBpZiAoYnBiLmJwYkhpZGRlblNlY3MgKyBicGIu YnBiSHVnZVNlY3RvcnMgPD0gTUFYVTE2KSB7CisJYnBiLmJwYlNlY3RvcnMg PSBicGIuYnBiSHVnZVNlY3RvcnM7CisJYnBiLmJwYkh1Z2VTZWN0b3JzID0g MDsKICAgICB9CiAgICAgaWYgKGZhdCAhPSAzMikgewotCWJwYi5zcGYgPSBi cGIuYnNwZjsKLQlicGIuYnNwZiA9IDA7CisJYnBiLmJwYkZBVHNlY3MgPSBi cGIuYnBiQmlnRkFUc2VjczsKKwlicGIuYnBiQmlnRkFUc2VjcyA9IDA7CiAg ICAgfQogICAgIHByaW50X2JwYigmYnBiKTsKICAgICBpZiAoIW9wdF9OKSB7 CiAJZ2V0dGltZW9mZGF5KCZ0diwgTlVMTCk7CiAJbm93ID0gdHYudHZfc2Vj OwogCXRtID0gbG9jYWx0aW1lKCZub3cpOwotCWlmICghKGltZyA9IG1hbGxv YyhicGIuYnBzKSkpCisJaWYgKCEoaW1nID0gbWFsbG9jKGJwYi5icGJCeXRl c1BlclNlYykpKQogCSAgICBlcnIoMSwgTlVMTCk7Ci0JZGlyID0gYnBiLnJl cyArIChicGIuc3BmID8gYnBiLnNwZiA6IGJwYi5ic3BmKSAqIGJwYi5uZnQ7 Ci0JZm9yIChsc24gPSAwOyBsc24gPCBkaXIgKyAoZmF0ID09IDMyID8gYnBi LnNwYyA6IHJkcyk7IGxzbisrKSB7CisJZGlyID0gYnBiLmJwYlJlc1NlY3Rv cnMgKyAoYnBiLmJwYkZBVHNlY3MgPyBicGIuYnBiRkFUc2VjcyA6IGJwYi5i cGJCaWdGQVRzZWNzKSAqIGJwYi5icGJGQVRzOworCWZvciAobHNuID0gMDsg bHNuIDwgZGlyICsgKGZhdCA9PSAzMiA/IGJwYi5icGJTZWNQZXJDbHVzdCA6 IHJkcyk7IGxzbisrKSB7CiAJICAgIHggPSBsc247CiAJICAgIGlmIChvcHRf QiAmJgotCQlmYXQgPT0gMzIgJiYgYnBiLmJrYnMgIT0gTUFYVTE2ICYmCi0J CWJzcyA8PSBicGIuYmticyAmJiB4ID49IGJwYi5ia2JzKSB7Ci0JCXggLT0g YnBiLmJrYnM7CisJCWZhdCA9PSAzMiAmJiBicGIuYnBiQmFja3VwICE9IE1B WFUxNiAmJgorCQlic3MgPD0gYnBiLmJwYkJhY2t1cCAmJiB4ID49IGJwYi5i cGJCYWNrdXApIHsKKwkJeCAtPSBicGIuYnBiQmFja3VwOwogCQlpZiAoIXgg JiYgbHNlZWsoZmQxLCBvcHRfb2ZzLCBTRUVLX1NFVCkpCiAJCSAgICBlcnIo MSwgIiVzIiwgYm5hbWUpOwogCSAgICB9CiAJICAgIGlmIChvcHRfQiAmJiB4 IDwgYnNzKSB7Ci0JCWlmICgobiA9IHJlYWQoZmQxLCBpbWcsIGJwYi5icHMp KSA9PSAtMSkKKwkJaWYgKChuID0gcmVhZChmZDEsIGltZywgYnBiLmJwYkJ5 dGVzUGVyU2VjKSkgPT0gLTEpCiAJCSAgICBlcnIoMSwgIiVzIiwgYm5hbWUp OwotCQlpZiAoKHVuc2lnbmVkKW4gIT0gYnBiLmJwcykKKwkJaWYgKCh1bnNp Z25lZCluICE9IGJwYi5icGJCeXRlc1BlclNlYykKIAkJICAgIGVycngoMSwg IiVzOiBjYW4ndCByZWFkIHNlY3RvciAldSIsIGJuYW1lLCB4KTsKIAkgICAg fSBlbHNlCi0JCW1lbXNldChpbWcsIDAsIGJwYi5icHMpOworCQltZW1zZXQo aW1nLCAwLCBicGIuYnBiQnl0ZXNQZXJTZWMpOwogCSAgICBpZiAoIWxzbiB8 fAotCSAgICAgIChmYXQgPT0gMzIgJiYgYnBiLmJrYnMgIT0gTUFYVTE2ICYm IGxzbiA9PSBicGIuYmticykpIHsKKwkgICAgICAoZmF0ID09IDMyICYmIGJw Yi5icGJCYWNrdXAgIT0gTUFYVTE2ICYmIGxzbiA9PSBicGIuYnBiQmFja3Vw KSkgewogCQl4MSA9IHNpemVvZihzdHJ1Y3QgYnMpOwogCQlic2JwYiA9IChz dHJ1Y3QgYnNicGIgKikoaW1nICsgeDEpOwotCQltazIoYnNicGItPmJwcywg YnBiLmJwcyk7Ci0JCW1rMShic2JwYi0+c3BjLCBicGIuc3BjKTsKLQkJbWsy KGJzYnBiLT5yZXMsIGJwYi5yZXMpOwotCQltazEoYnNicGItPm5mdCwgYnBi Lm5mdCk7Ci0JCW1rMihic2JwYi0+cmRlLCBicGIucmRlKTsKLQkJbWsyKGJz YnBiLT5zZWMsIGJwYi5zZWMpOwotCQltazEoYnNicGItPm1pZCwgYnBiLm1p ZCk7Ci0JCW1rMihic2JwYi0+c3BmLCBicGIuc3BmKTsKLQkJbWsyKGJzYnBi LT5zcHQsIGJwYi5zcHQpOwotCQltazIoYnNicGItPmhkcywgYnBiLmhkcyk7 Ci0JCW1rNChic2JwYi0+aGlkLCBicGIuaGlkKTsKLQkJbWs0KGJzYnBiLT5i c2VjLCBicGIuYnNlYyk7CisJCW1rMihic2JwYi0+YnBiQnl0ZXNQZXJTZWMs IGJwYi5icGJCeXRlc1BlclNlYyk7CisJCW1rMShic2JwYi0+YnBiU2VjUGVy Q2x1c3QsIGJwYi5icGJTZWNQZXJDbHVzdCk7CisJCW1rMihic2JwYi0+YnBi UmVzU2VjdG9ycywgYnBiLmJwYlJlc1NlY3RvcnMpOworCQltazEoYnNicGIt PmJwYkZBVHMsIGJwYi5icGJGQVRzKTsKKwkJbWsyKGJzYnBiLT5icGJSb290 RGlyRW50cywgYnBiLmJwYlJvb3REaXJFbnRzKTsKKwkJbWsyKGJzYnBiLT5i cGJTZWN0b3JzLCBicGIuYnBiU2VjdG9ycyk7CisJCW1rMShic2JwYi0+YnBi TWVkaWEsIGJwYi5icGJNZWRpYSk7CisJCW1rMihic2JwYi0+YnBiRkFUc2Vj cywgYnBiLmJwYkZBVHNlY3MpOworCQltazIoYnNicGItPmJwYlNlY1BlclRy YWNrLCBicGIuYnBiU2VjUGVyVHJhY2spOworCQltazIoYnNicGItPmJwYkhl YWRzLCBicGIuYnBiSGVhZHMpOworCQltazQoYnNicGItPmJwYkhpZGRlblNl Y3MsIGJwYi5icGJIaWRkZW5TZWNzKTsKKwkJbWs0KGJzYnBiLT5icGJIdWdl U2VjdG9ycywgYnBiLmJwYkh1Z2VTZWN0b3JzKTsKIAkJeDEgKz0gc2l6ZW9m KHN0cnVjdCBic2JwYik7CiAJCWlmIChmYXQgPT0gMzIpIHsKIAkJICAgIGJz eGJwYiA9IChzdHJ1Y3QgYnN4YnBiICopKGltZyArIHgxKTsKLQkJICAgIG1r NChic3hicGItPmJzcGYsIGJwYi5ic3BmKTsKKwkJICAgIG1rNChic3hicGIt PmJzcGYsIGJwYi5icGJCaWdGQVRzZWNzKTsKIAkJICAgIG1rMihic3hicGIt PnhmbGcsIDApOwogCQkgICAgbWsyKGJzeGJwYi0+dmVycywgMCk7Ci0JCSAg ICBtazQoYnN4YnBiLT5yZGNsLCBicGIucmRjbCk7Ci0JCSAgICBtazIoYnN4 YnBiLT5pbmZzLCBicGIuaW5mcyk7Ci0JCSAgICBtazIoYnN4YnBiLT5ia2Jz LCBicGIuYmticyk7CisJCSAgICBtazQoYnN4YnBiLT5yZGNsLCBicGIuYnBi Um9vdENsdXN0KTsKKwkJICAgIG1rMihic3hicGItPmluZnMsIGJwYi5icGJG U0luZm8pOworCQkgICAgbWsyKGJzeGJwYi0+YmticywgYnBiLmJwYkJhY2t1 cCk7CiAJCSAgICB4MSArPSBzaXplb2Yoc3RydWN0IGJzeGJwYik7CiAJCX0K IAkJYnN4ID0gKHN0cnVjdCBic3ggKikoaW1nICsgeDEpOwotCQltazEoYnN4 LT5zaWcsIDB4MjkpOworCQltazEoYnN4LT5leEJvb3RTaWduYXR1cmUsIDB4 MjkpOwogCQlpZiAoSWZsYWcpCiAJCSAgICB4ID0gb3B0X0k7CiAJCWVsc2UK QEAgLTY1Niw1MiArNjYwLDUyIEBACiAJCQkoKHVfaW50KSgxOTAwICsgdG0t PnRtX3llYXIpICsKIAkJCSAoKHVfaW50KXRtLT50bV9ob3VyIDw8IDggfAog CQkJICAodV9pbnQpdG0tPnRtX21pbikpOwotCQltazQoYnN4LT52b2xpZCwg eCk7Ci0JCW1rbGFiZWwoYnN4LT5sYWJlbCwgb3B0X0wgPyBvcHRfTCA6ICJO TyBOQU1FIik7Ci0JCXNwcmludGYoYnVmLCAiRkFUJXUiLCBmYXQpOwotCQlz ZXRzdHIoYnN4LT50eXBlLCBidWYsIHNpemVvZihic3gtPnR5cGUpKTsKKwkJ bWs0KGJzeC0+ZXhWb2x1bWVJRCwgeCk7CisJCW1rbGFiZWwoYnN4LT5leFZv bHVtZUxhYmVsLCBvcHRfTCA/IG9wdF9MIDogIk5PX05BTUUiKTsKKwkJc25w cmludGYoYnVmLCBzaXplb2YoYnVmKSwgIkZBVCV1IiwgZmF0KTsKKwkJc2V0 c3RyKGJzeC0+ZXhGaWxlU3lzVHlwZSwgYnVmLCBzaXplb2YoYnN4LT5leEZp bGVTeXNUeXBlKSk7CiAJCWlmICghb3B0X0IpIHsKIAkJICAgIHgxICs9IHNp emVvZihzdHJ1Y3QgYnN4KTsKIAkJICAgIGJzID0gKHN0cnVjdCBicyAqKWlt ZzsKLQkJICAgIG1rMShicy0+am1wWzBdLCAweGViKTsKLQkJICAgIG1rMShi cy0+am1wWzFdLCB4MSAtIDIpOwotCQkgICAgbWsxKGJzLT5qbXBbMl0sIDB4 OTApOwotCQkgICAgc2V0c3RyKGJzLT5vZW0sIG9wdF9PID8gb3B0X08gOiAi QlNEICA0LjQiLAotCQkJICAgc2l6ZW9mKGJzLT5vZW0pKTsKKwkJICAgIG1r MShicy0+YnNKdW1wWzBdLCAweGViKTsKKwkJICAgIG1rMShicy0+YnNKdW1w WzFdLCB4MSAtIDIpOworCQkgICAgbWsxKGJzLT5ic0p1bXBbMl0sIDB4OTAp OworCQkgICAgc2V0c3RyKGJzLT5ic09lbU5hbWUsIG9wdF9PID8gb3B0X08g OiAiQlNENC40ICAiLAorCQkJICAgc2l6ZW9mKGJzLT5ic09lbU5hbWUpKTsK IAkJICAgIG1lbWNweShpbWcgKyB4MSwgYm9vdGNvZGUsIHNpemVvZihib290 Y29kZSkpOwogCQkgICAgbWsyKGltZyArIE1JTkJQUyAtIDIsIERPU01BR0lD KTsKIAkJfQotCSAgICB9IGVsc2UgaWYgKGZhdCA9PSAzMiAmJiBicGIuaW5m cyAhPSBNQVhVMTYgJiYKLQkJICAgICAgIChsc24gPT0gYnBiLmluZnMgfHwK LQkJCShicGIuYmticyAhPSBNQVhVMTYgJiYKLQkJCSBsc24gPT0gYnBiLmJr YnMgKyBicGIuaW5mcykpKSB7CisJICAgIH0gZWxzZSBpZiAoZmF0ID09IDMy ICYmIGJwYi5icGJGU0luZm8gIT0gTUFYVTE2ICYmCisJCSAgICAgICAobHNu ID09IGJwYi5icGJGU0luZm8gfHwKKwkJCShicGIuYnBiQmFja3VwICE9IE1B WFUxNiAmJgorCQkJIGxzbiA9PSBicGIuYnBiQmFja3VwICsgYnBiLmJwYkZT SW5mbykpKSB7CiAJCW1rNChpbWcsIDB4NDE2MTUyNTIpOwogCQltazQoaW1n ICsgTUlOQlBTIC0gMjgsIDB4NjE0MTcyNzIpOwogCQltazQoaW1nICsgTUlO QlBTIC0gMjQsIDB4ZmZmZmZmZmYpOwotCQltazQoaW1nICsgTUlOQlBTIC0g MjAsIGJwYi5yZGNsKTsKKwkJbWs0KGltZyArIE1JTkJQUyAtIDIwLCBicGIu YnBiUm9vdENsdXN0KTsKIAkJbWsyKGltZyArIE1JTkJQUyAtIDIsIERPU01B R0lDKTsKLQkgICAgfSBlbHNlIGlmIChsc24gPj0gYnBiLnJlcyAmJiBsc24g PCBkaXIgJiYKLQkJICAgICAgICEoKGxzbiAtIGJwYi5yZXMpICUKLQkJCSAo YnBiLnNwZiA/IGJwYi5zcGYgOiBicGIuYnNwZikpKSB7Ci0JCW1rMShpbWdb MF0sIGJwYi5taWQpOworCSAgICB9IGVsc2UgaWYgKGxzbiA+PSBicGIuYnBi UmVzU2VjdG9ycyAmJiBsc24gPCBkaXIgJiYKKwkJICAgICAgICEoKGxzbiAt IGJwYi5icGJSZXNTZWN0b3JzKSAlCisJCQkgKGJwYi5icGJGQVRzZWNzID8g YnBiLmJwYkZBVHNlY3MgOiBicGIuYnBiQmlnRkFUc2VjcykpKSB7CisJCW1r MShpbWdbMF0sIGJwYi5icGJNZWRpYSk7CiAJCWZvciAoeCA9IDE7IHggPCBm YXQgKiAoZmF0ID09IDMyID8gMyA6IDIpIC8gODsgeCsrKQogCQkgICAgbWsx KGltZ1t4XSwgZmF0ID09IDMyICYmIHggJSA0ID09IDMgPyAweDBmIDogMHhm Zik7CiAJICAgIH0gZWxzZSBpZiAobHNuID09IGRpciAmJiBvcHRfTCkgewog CQlkZSA9IChzdHJ1Y3QgZGUgKilpbWc7Ci0JCW1rbGFiZWwoZGUtPm5hbWV4 dCwgb3B0X0wpOwotCQltazEoZGUtPmF0dHIsIDA1MCk7CisJCW1rbGFiZWwo ZGUtPmRlTmFtZSwgb3B0X0wpOworCQltazEoZGUtPmRlQXR0cmlidXRlcywg MDUwKTsKIAkJeCA9ICh1X2ludCl0bS0+dG1faG91ciA8PCAxMSB8CiAJCSAg ICAodV9pbnQpdG0tPnRtX21pbiA8PCA1IHwKIAkJICAgICh1X2ludCl0bS0+ dG1fc2VjID4+IDE7Ci0JCW1rMihkZS0+dGltZSwgeCk7CisJCW1rMihkZS0+ ZGVDVGltZSwgeCk7CiAJCXggPSAodV9pbnQpKHRtLT50bV95ZWFyIC0gODAp IDw8IDkgfAogCQkgICAgKHVfaW50KSh0bS0+dG1fbW9uICsgMSkgPDwgNSB8 CiAJCSAgICAodV9pbnQpdG0tPnRtX21kYXk7Ci0JCW1rMihkZS0+ZGF0ZSwg eCk7CisJCW1rMihkZS0+ZGVDRGF0ZSwgeCk7CiAJICAgIH0KLQkgICAgaWYg KChuID0gd3JpdGUoZmQsIGltZywgYnBiLmJwcykpID09IC0xKQorCSAgICBp ZiAoKG4gPSB3cml0ZShmZCwgaW1nLCBicGIuYnBiQnl0ZXNQZXJTZWMpKSA9 PSAtMSkKIAkJZXJyKDEsICIlcyIsIGZuYW1lKTsKLQkgICAgaWYgKCh1bnNp Z25lZCluICE9IGJwYi5icHMpCisJICAgIGlmICgodW5zaWduZWQpbiAhPSBi cGIuYnBiQnl0ZXNQZXJTZWMpCiAJCWVycngoMSwgIiVzOiBjYW4ndCB3cml0 ZSBzZWN0b3IgJXUiLCBmbmFtZSwgbHNuKTsKIAl9CiAgICAgfQpAQCAtNzk0 LDE4ICs3OTgsMTkgQEAKIAogICAgIC8qIE1heWJlIGl0J3MgYSBmaXhlZCBk cml2ZSAqLwogICAgIGlmIChscCA9PSBOVUxMKSB7CisJaWYgKGJwYi0+YnBi Qnl0ZXNQZXJTZWMpCisJICAgIGRscC5kX3NlY3NpemUgPSBicGItPmJwYkJ5 dGVzUGVyU2VjOwogCWlmIChpb2N0bChmZCwgRElPQ0dESU5GTywgJmRscCkg PT0gLTEpIHsKLQkgICAgaWYgKGJwYi0+YnBzID09IDAgJiYgaW9jdGwoZmQs IERJT0NHU0VDVE9SU0laRSwgJmRscC5kX3NlY3NpemUpID09IC0xKQorCSAg ICBpZiAoYnBiLT5icGJCeXRlc1BlclNlYyA9PSAwICYmIGlvY3RsKGZkLCBE SU9DR1NFQ1RPUlNJWkUsICZkbHAuZF9zZWNzaXplKSA9PSAtMSkKIAkJZXJy eCgxLCAiQ2Fubm90IGdldCBzZWN0b3Igc2l6ZSwgJXMiLCBzdHJlcnJvcihl cnJubykpOwogCi0JICAgIC8qIFhYWCBTaG91bGQgd2UgdXNlIGJwYi0+YnBz IGlmIGl0J3Mgc2V0PyAqLwogCSAgICBkbHAuZF9zZWNwZXJ1bml0ID0gbXMg LyBkbHAuZF9zZWNzaXplOwogCi0JICAgIGlmIChicGItPnNwdCA9PSAwICYm IGlvY3RsKGZkLCBESU9DR0ZXU0VDVE9SUywgJmRscC5kX25zZWN0b3JzKSA9 PSAtMSkgeworCSAgICBpZiAoYnBiLT5icGJTZWNQZXJUcmFjayA9PSAwICYm IGlvY3RsKGZkLCBESU9DR0ZXU0VDVE9SUywgJmRscC5kX25zZWN0b3JzKSA9 PSAtMSkgewogCQl3YXJueCgiQ2Fubm90IGdldCBudW1iZXIgb2Ygc2VjdG9y cyBwZXIgdHJhY2ssICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKIAkJZGxwLmRf bnNlY3RvcnMgPSA2MzsKIAkgICAgfQotCSAgICBpZiAoYnBiLT5oZHMgPT0g MCAmJiBpb2N0bChmZCwgRElPQ0dGV0hFQURTLCAmZGxwLmRfbnRyYWNrcykg PT0gLTEpIHsKKwkgICAgaWYgKGJwYi0+YnBiSGVhZHMgPT0gMCAmJiBpb2N0 bChmZCwgRElPQ0dGV0hFQURTLCAmZGxwLmRfbnRyYWNrcykgPT0gLTEpIHsK IAkJd2FybngoIkNhbm5vdCBnZXQgbnVtYmVyIG9mIGhlYWRzLCAlcyIsIHN0 cmVycm9yKGVycm5vKSk7CiAJCWlmIChkbHAuZF9zZWNwZXJ1bml0IDw9IDYz KjEqMTAyNCkKIAkJICAgIGRscC5kX250cmFja3MgPSAxOwpAQCAtODIwLDE2 ICs4MjUsMTYgQEAKIAlscCA9ICZkbHA7CiAgICAgfQogCi0gICAgaWYgKGJw Yi0+YnBzID09IDApCi0JYnBiLT5icHMgPSBja2dlb20oZm5hbWUsIGxwLT5k X3NlY3NpemUsICJieXRlcy9zZWN0b3IiKTsKLSAgICBpZiAoYnBiLT5zcHQg PT0gMCkKLQlicGItPnNwdCA9IGNrZ2VvbShmbmFtZSwgbHAtPmRfbnNlY3Rv cnMsICJzZWN0b3JzL3RyYWNrIik7Ci0gICAgaWYgKGJwYi0+aGRzID09IDAp Ci0JYnBiLT5oZHMgPSBja2dlb20oZm5hbWUsIGxwLT5kX250cmFja3MsICJk cml2ZSBoZWFkcyIpOwotICAgIGlmIChicGItPmJzZWMgPT0gMCkKLQlicGIt PmJzZWMgPSBscC0+ZF9zZWNwZXJ1bml0OwotICAgIGlmIChicGItPmhpZCA9 PSAwKQotCWJwYi0+aGlkID0gaHM7CisgICAgaWYgKGJwYi0+YnBiQnl0ZXNQ ZXJTZWMgPT0gMCkKKwlicGItPmJwYkJ5dGVzUGVyU2VjID0gY2tnZW9tKGZu YW1lLCBscC0+ZF9zZWNzaXplLCAiYnl0ZXMvc2VjdG9yIik7CisgICAgaWYg KGJwYi0+YnBiU2VjUGVyVHJhY2sgPT0gMCkKKwlicGItPmJwYlNlY1BlclRy YWNrID0gY2tnZW9tKGZuYW1lLCBscC0+ZF9uc2VjdG9ycywgInNlY3RvcnMv dHJhY2siKTsKKyAgICBpZiAoYnBiLT5icGJIZWFkcyA9PSAwKQorCWJwYi0+ YnBiSGVhZHMgPSBja2dlb20oZm5hbWUsIGxwLT5kX250cmFja3MsICJkcml2 ZSBoZWFkcyIpOworICAgIGlmIChicGItPmJwYkh1Z2VTZWN0b3JzID09IDAp CisJYnBiLT5icGJIdWdlU2VjdG9ycyA9IGxwLT5kX3NlY3BlcnVuaXQ7Cisg ICAgaWYgKGJwYi0+YnBiSGlkZGVuU2VjcyA9PSAwKQorCWJwYi0+YnBiSGlk ZGVuU2VjcyA9IGhzOwogfQogCiAvKgpAQCAtODM4LDI0ICs4NDMsMjQgQEAK IHN0YXRpYyB2b2lkCiBwcmludF9icGIoc3RydWN0IGJwYiAqYnBiKQogewot ICAgIHByaW50ZigiYnBzPSV1IHNwYz0ldSByZXM9JXUgbmZ0PSV1IiwgYnBi LT5icHMsIGJwYi0+c3BjLCBicGItPnJlcywKLQkgICBicGItPm5mdCk7Ci0g ICAgaWYgKGJwYi0+cmRlKQotCXByaW50ZigiIHJkZT0ldSIsIGJwYi0+cmRl KTsKLSAgICBpZiAoYnBiLT5zZWMpCi0JcHJpbnRmKCIgc2VjPSV1IiwgYnBi LT5zZWMpOwotICAgIHByaW50ZigiIG1pZD0lI3giLCBicGItPm1pZCk7Ci0g ICAgaWYgKGJwYi0+c3BmKQotCXByaW50ZigiIHNwZj0ldSIsIGJwYi0+c3Bm KTsKLSAgICBwcmludGYoIiBzcHQ9JXUgaGRzPSV1IGhpZD0ldSIsIGJwYi0+ c3B0LCBicGItPmhkcywgYnBiLT5oaWQpOwotICAgIGlmIChicGItPmJzZWMp Ci0JcHJpbnRmKCIgYnNlYz0ldSIsIGJwYi0+YnNlYyk7Ci0gICAgaWYgKCFi cGItPnNwZikgewotCXByaW50ZigiIGJzcGY9JXUgcmRjbD0ldSIsIGJwYi0+ YnNwZiwgYnBiLT5yZGNsKTsKLQlwcmludGYoIiBpbmZzPSIpOwotCXByaW50 ZihicGItPmluZnMgPT0gTUFYVTE2ID8gIiUjeCIgOiAiJXUiLCBicGItPmlu ZnMpOwotCXByaW50ZigiIGJrYnM9Iik7Ci0JcHJpbnRmKGJwYi0+YmticyA9 PSBNQVhVMTYgPyAiJSN4IiA6ICIldSIsIGJwYi0+Ymticyk7CisgICAgcHJp bnRmKCJCeXRlc1BlclNlYz0ldSBTZWNQZXJDbHVzdD0ldSBSZXNTZWN0b3Jz PSV1IEZBVHM9JXUiLCBicGItPmJwYkJ5dGVzUGVyU2VjLCBicGItPmJwYlNl Y1BlckNsdXN0LCBicGItPmJwYlJlc1NlY3RvcnMsCisJICAgYnBiLT5icGJG QVRzKTsKKyAgICBpZiAoYnBiLT5icGJSb290RGlyRW50cykKKwlwcmludGYo IiBSb290RGlyRW50cz0ldSIsIGJwYi0+YnBiUm9vdERpckVudHMpOworICAg IGlmIChicGItPmJwYlNlY3RvcnMpCisJcHJpbnRmKCIgU2VjdG9ycz0ldSIs IGJwYi0+YnBiU2VjdG9ycyk7CisgICAgcHJpbnRmKCIgTWVkaWE9JSN4Iiwg YnBiLT5icGJNZWRpYSk7CisgICAgaWYgKGJwYi0+YnBiRkFUc2VjcykKKwlw cmludGYoIiBGQVRzZWNzPSV1IiwgYnBiLT5icGJGQVRzZWNzKTsKKyAgICBw cmludGYoIiBTZWNQZXJUcmFjaz0ldSBIZWFkcz0ldSBIaWRkZW5TZWNzPSV1 IiwgYnBiLT5icGJTZWNQZXJUcmFjaywgYnBiLT5icGJIZWFkcywgYnBiLT5i cGJIaWRkZW5TZWNzKTsKKyAgICBpZiAoYnBiLT5icGJIdWdlU2VjdG9ycykK KwlwcmludGYoIiBIdWdlU2VjdG9ycz0ldSIsIGJwYi0+YnBiSHVnZVNlY3Rv cnMpOworICAgIGlmICghYnBiLT5icGJGQVRzZWNzKSB7CisJcHJpbnRmKCIg RkFUc2Vjcz0ldSBSb290Q2x1c3Rlcj0ldSIsIGJwYi0+YnBiQmlnRkFUc2Vj cywgYnBiLT5icGJSb290Q2x1c3QpOworCXByaW50ZigiIEZTSW5mbz0iKTsK KwlwcmludGYoYnBiLT5icGJGU0luZm8gPT0gTUFYVTE2ID8gIiUjeCIgOiAi JXUiLCBicGItPmJwYkZTSW5mbyk7CisJcHJpbnRmKCIgQmFja3VwPSIpOwor CXByaW50ZihicGItPmJwYkJhY2t1cCA9PSBNQVhVMTYgPyAiJSN4IiA6ICIl dSIsIGJwYi0+YnBiQmFja3VwKTsKICAgICB9CiAgICAgcHJpbnRmKCJcbiIp OwogfQo= --0-96800579-1263761668=:91781--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201001172100.o0HL0Ghk071358>