[Bf-committers] ok.. this is the one.. DISTRAY PATCH <-- WORKING

Ray Wells bf-committers@blender.org
Thu, 15 Jul 2004 11:53:44 -0700 (PDT)


--0-1929561253-1089917624=:94891
Content-Type: text/plain; charset=us-ascii
Content-Id: 
Content-Disposition: inline

--- Ton Roosendaal <ton@blender.org> wrote:
> Hi,
> 
> I would appreciate a description of what distray
> does, 
Distray allows a material options (Blurry, BlurFactor,
and BlurSamples) or lamp options (Soft, SoftSampels)
to control distributed raytracing on raytraced things.


http://www.cs.wpi.edu/~matt/courses/cs563/talks/dist_ray/dist.html

that website gives a more consice description of
distray, that was the same website i leared about
distray from :).


> and why the code changes are as you propose. 

I dont really seem to understand this part... maybe
i'm braindead.. but i'll give it a go.

The system of distributed raytracing i implemented
from my best idea of how it worked. That is my only
reason why the code changes are as i propose, because
i thought it would be the best way to do it from what
i understood.

> It also seems like other work you did  
> sneaked in the patch, for example on specularity.

Sorry about that.  I was working on a plugin system
but i stopped guess i forgot to remove some of it so i
just #if 0ed it out.


> 
> -Ton-
> 
> 
> On Thursday, Jul 15, 2004, at 07:22
> Europe/Amsterdam, Ray Wells wrote:
> 
> > sorry.. i really suck at patching and i guess i
> missed
> > a lot my first few times.. but here it is.
> >
> > sorry for the inconveinence my n00bness caused.
> >
> >
> > 		
> > __________________________________
> > Do you Yahoo!?
> > Yahoo! Mail Address AutoComplete - You start. We
> finish.
> > http://promotions.yahoo.com/new_mail
> <distray.patch>
>
------------------------------------------------------------------------
> 
> --
> Ton Roosendaal  Blender Foundation ton@blender.org  
> http://www.blender.org
> 
> _______________________________________________
> Bf-committers mailing list
> Bf-committers@blender.org
>
http://www.blender.org/mailman/listinfo/bf-committers
> 






I have also attached a patch here that replaces
drand48() with f_rand() (see rendercore.c part of
patch if you want to look at f_rand()).  Neither
cygwin nor VC++ as i am told have drand48 so this
patch (i hope) will give win32 compatibility. 




		
__________________________________
Do you Yahoo!?
Yahoo! Mail - 50x more storage than other providers!
http://promotions.yahoo.com/new_mail
--0-1929561253-1089917624=:94891
Content-Type: application/octet-stream; name="distray.patch"
Content-Transfer-Encoding: base64
Content-Description: distray.patch
Content-Disposition: attachment; filename="distray.patch"

SW5kZXg6IHJlbmRlcmNvbnZlcnRlci9pbnRlcm4vY29udmVydEJsZW5kZXJT
Y2VuZS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnNy
b290L2JmLWJsZW5kZXIvYmxlbmRlci9zb3VyY2UvYmxlbmRlci9yZW5kZXJj
b252ZXJ0ZXIvaW50ZXJuL2NvbnZlcnRCbGVuZGVyU2NlbmUuYyx2CnJldHJp
ZXZpbmcgcmV2aXNpb24gMS43MgpkaWZmIC11IC1yMS43MiBjb252ZXJ0Qmxl
bmRlclNjZW5lLmMKLS0tIHJlbmRlcmNvbnZlcnRlci9pbnRlcm4vY29udmVy
dEJsZW5kZXJTY2VuZS5jCTEyIEp1bCAyMDA0IDAzOjIwOjMxIC0wMDAwCTEu
NzIKKysrIHJlbmRlcmNvbnZlcnRlci9pbnRlcm4vY29udmVydEJsZW5kZXJT
Y2VuZS5jCTE1IEp1bCAyMDA0IDA4OjU4OjMyIC0wMDAwCkBAIC0xNTkxLDYg
KzE1OTEsOCBAQAogCWxhci0+YnVmc2l6ZSA9IGxhLT5idWZzaXplOwogCWxh
ci0+c2FtcCA9IGxhLT5zYW1wOwogCWxhci0+c29mdCA9IGxhLT5zb2Z0Owor
CWxhci0+bWF4c29mdCA9IGxhLT5tYXhzb2Z0OworCWxhci0+c29mdHNhbXBs
ZXMgPSBsYS0+c29mdHNhbXBsZXM7CiAJbGFyLT5zaGFkaGFsb3N0ZXAgPSBs
YS0+c2hhZGhhbG9zdGVwOwogCWxhci0+Y2xpcHN0YSA9IGxhLT5jbGlwc3Rh
OwogCWxhci0+Y2xpcGVuZCA9IGxhLT5jbGlwZW5kOwpJbmRleDogcmVuZGVy
L2V4dGVybi9pbmNsdWRlL3JlbmRlcl90eXBlcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L2JmLWJsZW5kZXIvYmxlbmRl
ci9zb3VyY2UvYmxlbmRlci9yZW5kZXIvZXh0ZXJuL2luY2x1ZGUvcmVuZGVy
X3R5cGVzLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTYKZGlmZiAtdSAt
cjEuMTYgcmVuZGVyX3R5cGVzLmgKLS0tIHJlbmRlci9leHRlcm4vaW5jbHVk
ZS9yZW5kZXJfdHlwZXMuaAkyNiBBcHIgMjAwNCAyMTozODozNSAtMDAwMAkx
LjE2CisrKyByZW5kZXIvZXh0ZXJuL2luY2x1ZGUvcmVuZGVyX3R5cGVzLmgJ
MTUgSnVsIDIwMDQgMDg6NTg6MzIgLTAwMDAKQEAgLTIzNCw3ICsyMzQsOCBA
QAogCWZsb2F0IHhzcCwgeXNwLCBkaXN0a3csIGlucHI7CiAJZmxvYXQgaGFs
b2t3LCBoYWxvOwogCWZsb2F0IGxkMSxsZDI7Ci0KKwlmbG9hdCBtYXhzb2Z0
OworCWludCBzb2Z0c2FtcGxlczsKIAkvKiBjb3BpZWQgZnJvbSBMYW1wLCB0
byBkZWNvdXBsZSBtb3JlIHJlbmRlcmluZyBzdHVmZiAqLwogCS8qKiBTaXpl
IG9mIHRoZSBzaGFkb3didWZmZXIgKi8KIAlzaG9ydCBidWZzaXplOwpAQCAt
MjY5LDQgKzI3MCwzIEBACiB9IExhbXBSZW47CiAKICNlbmRpZiAvKiBSRU5E
RVJfVFlQRVNfSCAqLwotCkluZGV4OiByZW5kZXIvaW50ZXJuL3NvdXJjZS9y
YXkuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9v
dC9iZi1ibGVuZGVyL2JsZW5kZXIvc291cmNlL2JsZW5kZXIvcmVuZGVyL2lu
dGVybi9zb3VyY2UvcmF5LmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNDAK
ZGlmZiAtdSAtcjEuNDAgcmF5LmMKLS0tIHJlbmRlci9pbnRlcm4vc291cmNl
L3JheS5jCTIxIEp1biAyMDA0IDE2OjA3OjUwIC0wMDAwCTEuNDAKKysrIHJl
bmRlci9pbnRlcm4vc291cmNlL3JheS5jCTE1IEp1bCAyMDA0IDA4OjU4OjM0
IC0wMDAwCkBAIC01OCw3ICs1OCw3IEBACiAjZGVmaW5lIERFUFRIX1NIQURP
V19UUkEgIDEwCiAvKiBmcm9tIGZsb2F0LmggKi8KICNkZWZpbmUgRkxUX0VQ
U0lMT04gMS4xOTIwOTI5MGUtMDdGCi0KK2Zsb2F0IGZfcmFuZCgpOyAvLyBn
ZXQgdGhpcyBmcm9tIHJlbmRlcmNvcmUuYwogCiAvKiAqKioqKioqKioqIHN0
cnVjdHMgKioqKioqKioqKioqKioqICovCiAKQEAgLTE0MDMsNiArMTQwMyw3
IEBACiAJcmVmcmFjdFswXT0gaW5kZXgqdmlld1swXSArIGZhYypuWzBdOwog
CXJlZnJhY3RbMV09IGluZGV4KnZpZXdbMV0gKyBmYWMqblsxXTsKIAlyZWZy
YWN0WzJdPSBpbmRleCp2aWV3WzJdICsgZmFjKm5bMl07CisJCiB9CiAKIC8q
IG9ybiA9IG9yaWdpbmFsIGZhY2Ugbm9ybWFsICovCkBAIC0xNDU1LDYgKzE0
NTYsNTkgQEAKICNlbmRpZgogCiAvKiB0aGUgbWFpbiByZWN1cnNpdmUgdHJh
Y2VyIGl0c2VsZiAqLwordm9pZAorZ2V0UmFuZG9tVmVjIChmbG9hdCAqdmVj
LCBmbG9hdCBtYXgpCit7CisgIAorICAKKyAgCisJCisgIHZlY1swXSA9IChm
bG9hdCkgKGZfcmFuZCAoKSAqIChtYXgqMikpLW1heDsKKyAgdmVjWzFdID0g
KGZsb2F0KSAoZl9yYW5kICgpICogKG1heCoyKSktbWF4OworICB2ZWNbMl0g
PSAoZmxvYXQpIChmX3JhbmQgKCkgKiAobWF4KjIpKS1tYXg7CisgIAorfQor
dm9pZAorcm90YXRlVmVjIChmbG9hdCAqbmV3dmVjLCBmbG9hdCAqb3JpZ2lu
dmVjLCBmbG9hdCAqcm90YXRldmVjLCBmbG9hdCBheCwKKwkgICBmbG9hdCBh
eSwgZmxvYXQgYXopCit7CQkJCS8vIHdlIGFyZSBnb2luZyB0byBiZSBkb2lu
ZyB0aGlzIGFsb3Qgc2luY2UgdGhlIHdheSBpIGFtIHNhbXBsaW5nIGlzIGJh
c2VkIG9uIHJhbmRvbSBhbmdsZXMKKyAgZmxvYXQgb3RoZXJ2ZWNbM10sIHRl
bXB2ZWMxWzNdLCB0ZW1wdmVjMlszXTsJLy8gdGhlcmUgaGFzIEdPVCBUTyBC
RSBhIGJldHRlciB3YXkgb2YgZG9pbmcgdGhpcyEKKworICBvdGhlcnZlY1sw
XSA9IHJvdGF0ZXZlY1swXSAtIG9yaWdpbnZlY1swXTsKKyAgb3RoZXJ2ZWNb
MV0gPSByb3RhdGV2ZWNbMV0gLSBvcmlnaW52ZWNbMV07CisgIG90aGVydmVj
WzJdID0gcm90YXRldmVjWzJdIC0gb3JpZ2ludmVjWzJdOwkvLyBtYWtlIHN1
cmUgdGhpcyBpcyByZWFsaXRpdml6ZWQgdG8gdGVoIG9yaWdpbi4uIHRoZW4g
d2Ugc2ltcGx5IHRyYW5zbGF0ZSBhZnRlciByb3RhdGlvbiBhcm91bmQgdGhl
IG9yaWdpbi4gVEhBTksgWU9VIEVVQ0xJRCEhIQorCisgIHRlbXB2ZWMxWzBd
ID0gb3RoZXJ2ZWNbMF0gKiBjb3MgKGF6KSArIG90aGVydmVjWzFdICogc2lu
IChheik7CS8vIHgxID0gIHggKiBjeiArICB5ICogc3oKKyAgdGVtcHZlYzFb
MV0gPSBvdGhlcnZlY1sxXSAqIGNvcyAoYXgpIC0gb3RoZXJ2ZWNbMF0gKiBz
aW4gKGF6KTsJLy8geTEgPSAgeSAqIGN6IC0gIHggKiBzegorICB0ZW1wdmVj
MVsyXSA9IG90aGVydmVjWzJdOwkvLyB6MSA9IHoKKworICB0ZW1wdmVjMlsw
XSA9IHRlbXB2ZWMxWzBdICogY29zIChheSkgKyB0ZW1wdmVjMVsyXSAqIHNp
biAoYXkpOwkvLyB4MiA9IHgxICogY3kgKyB6MSAqIHN5CisgIHRlbXB2ZWMy
WzFdID0gdGVtcHZlYzFbMl07CS8vIHkyID0gejE7CisgIHRlbXB2ZWMyWzJd
ID0gdGVtcHZlYzFbMl0gKiBjb3MgKGF5KSAtIHRlbXB2ZWMxWzBdICogc2lu
IChheSk7CS8vIHoyID0gejEgKiBjeSAtIHgxICogc3kKKworICBuZXd2ZWNb
MF0gPSB0ZW1wdmVjMlswXTsJLy8geDMgPSB4MgorICBuZXd2ZWNbMV0gPSB0
ZW1wdmVjMlsxXSAqIGNvcyAoYXgpICsgdGVtcHZlYzFbMl0gKiBzaW4gKGF4
KTsJLy8geTMgPSB5MiAqIGN4ICsgejEgKiBzeAorICBuZXd2ZWNbMl0gPSB0
ZW1wdmVjMlsyXSAqIGNvcyAoYXgpIC0gdGVtcHZlYzFbMF0gKiBzaW4gKGF4
KTsJLy8gejMgPSB6MiAqIGN4IC0geDEgKiBzeAorCisgIG5ld3ZlY1swXSAr
PSBvcmlnaW52ZWNbMF07CisgIG5ld3ZlY1sxXSArPSBvcmlnaW52ZWNbMV07
CisgIG5ld3ZlY1syXSArPSBvcmlnaW52ZWNbMl07CisKKworCit9Cit2b2lk
CitjbGlwVmVjIChmbG9hdCAqdmVjKSAKK3sKKyAgaWYgKHZlY1swXSA+IDEu
MCkKKyAgICB2ZWNbMF0gPSAxLjA7CisgIGlmICh2ZWNbMV0gPiAxLjApCisg
ICAgdmVjWzFdID0gMS4wOworICBpZiAodmVjWzJdID4gMS4wKQorICAgIHZl
Y1syXSA9IDEuMDsKK30KKworCiBzdGF0aWMgdm9pZCB0cmFjZXJheShzaG9y
dCBkZXB0aCwgZmxvYXQgKnN0YXJ0LCBmbG9hdCAqdmVjLCBmbG9hdCAqY29s
LCBWbGFrUmVuICp2bHIsIGludCBtYXNrKQogewogCVNoYWRlSW5wdXQgc2hp
OwpAQCAtMTQ2Miw3ICsxNTE2LDcgQEAKIAlJc2VjdCBpc2VjOwogCWZsb2F0
IGYsIGYxLCBmciwgZmcsIGZiOwogCWZsb2F0IHJlZlszXTsKLQkKKwlmbG9h
dCBub3JyZWZbM107CiAJVkVDQ09QWShpc2VjLnN0YXJ0LCBzdGFydCk7CiAJ
aXNlYy5lbmRbMF09IHN0YXJ0WzBdK2dfb2Mub2NzaXplKnZlY1swXTsKIAlp
c2VjLmVuZFsxXT0gc3RhcnRbMV0rZ19vYy5vY3NpemUqdmVjWzFdOwpAQCAt
MTQ3NywxMCArMTUzMSwzOSBAQAogCQlpZihkZXB0aD4wKSB7CiAKIAkJCWlm
KHNoaS5tYXRyZW4tPm1vZGUgJiBNQV9SQVlUUkFOU1AgJiYgc2hyLmFscGhh
IT0xLjApIHsKLQkJCQlmbG9hdCBmLCBmMSwgcmVmcmFjdFszXSwgdHJhY29s
WzNdOworCQkJCWZsb2F0IGYsIGYxLCByZWZyYWN0WzNdLCB0cmFjb2xbM10s
IG5vclszXTsKKwkJCQkKKwkJCQkKIAkJCQkKLQkJCQlyZWZyYWN0aW9uKHJl
ZnJhY3QsIHNoaS52biwgc2hpLnZpZXcsIHNoaS5tYXRyZW4tPmFuZyk7Ci0J
CQkJdHJhY2VyYXkoZGVwdGgtMSwgc2hpLmNvLCByZWZyYWN0LCB0cmFjb2ws
IHNoaS52bHIsIHNoaS5tYXNrKTsKKwkJCQlpZiAoc2hpLm1hdHJlbi0+bW9k
ZSAmIE1BX0JMVVJSWSkgeworCQkJCQlpbnQgaTsKKwkJCQkJZmxvYXQgY2Nv
bFszXSwgc2NvbFszXTsKKwkJCQkJbWVtc2V0IChzY29sLCAwLCBzaXplb2Yo
c2NvbCkpOworCQkJCQlmb3IgKGk9MDsgaSA8IHNoaS5tYXRyZW4tPmJsdXJz
YW1wbGVzOyBpKyspIHsKKwkJCQkJCisJCQkJCWdldFJhbmRvbVZlYyhub3Is
IHNoaS5tYXRyZW4tPmJsdXJmYWN0b3IpOworCQkJCQkKKwkJCQkJCisJCQkJ
CQorCQkJCQkKKwkJCQkJCisJCQkJCXJlZnJhY3Rpb24ocmVmcmFjdCwgc2hp
LnZuLCBzaGkudmlldywgc2hpLm1hdHJlbi0+YW5nKTsgIAorCQkJCQlWRUNB
REQocmVmcmFjdCxyZWZyYWN0LG5vcik7CisJCQkJCU5vcm1hbGlzZShyZWZy
YWN0KTsJCisJCQkJCXRyYWNlcmF5KGRlcHRoLTEsIHNoaS5jbywgcmVmcmFj
dCwgY2NvbCwgc2hpLnZsciwgc2hpLm1hc2spOworCQkJCQlWRUNBREQoc2Nv
bCxzY29sLGNjb2wpOworCQkJCQkKKwkJCQkJfQorCQkJCQlzY29sWzBdLz0o
ZmxvYXQpc2hpLm1hdHJlbi0+Ymx1cnNhbXBsZXM7CisJCQkJCXNjb2xbMV0v
PShmbG9hdClzaGkubWF0cmVuLT5ibHVyc2FtcGxlczsKKwkJCQkJc2NvbFsy
XS89KGZsb2F0KXNoaS5tYXRyZW4tPmJsdXJzYW1wbGVzOworCQkJCQlWRUND
T1BZKHRyYWNvbCwgc2NvbCk7CisJCQkJCQorCQkJCQl9CisJCQkJCWVsc2Ug
eworCQkJCQlyZWZyYWN0aW9uKHJlZnJhY3QsIHNoaS52biwgc2hpLnZpZXcs
IHNoaS5tYXRyZW4tPmFuZyk7IAorCQkJCQl0cmFjZXJheShkZXB0aC0xLCBz
aGkuY28sIHJlZnJhY3QsIHRyYWNvbCwgc2hpLnZsciwgc2hpLm1hc2spOwor
CQkJCX0KIAkJCQkKIAkJCQlmPSBzaHIuYWxwaGE7IGYxPSAxLjAtZjsKIAkJ
CQlzaHIuZGlmZlswXT0gZipzaHIuZGlmZlswXSArIGYxKnRyYWNvbFswXTsK
QEAgLTE0ODgsNyArMTU3MSw3IEBACiAJCQkJc2hyLmRpZmZbMl09IGYqc2hy
LmRpZmZbMl0gKyBmMSp0cmFjb2xbMl07CiAJCQkJc2hyLmFscGhhPSAxLjA7
CiAJCQl9Ci0KKwkJCiAJCQlpZihzaGkubWF0cmVuLT5tb2RlICYgTUFfUkFZ
TUlSUk9SKSB7CiAJCQkJZj0gc2hpLm1hdHJlbi0+cmF5X21pcnJvcjsKIAkJ
CQlpZihmIT0wLjApIGYqPSBmcmVzbmVsX2ZhYyhzaGkudmlldywgc2hpLnZu
LCBzaGkubWF0cmVuLT5mcmVzbmVsX21pcl9pLCBzaGkubWF0cmVuLT5mcmVz
bmVsX21pcik7CkBAIC0xNDk3LDExICsxNTgwLDM1IEBACiAJCQkKIAkJCWlm
KGYhPTAuMCkgewogCQkJCisKKwkJCQlpZiAoc2hpLm1hdHJlbi0+bW9kZSAm
IE1BX0JMVVJSWSkgeworCQkJCQlmbG9hdCBub3JbM10sIGNjb2xbM10sc2Nv
bFszXTsJCisJCQkJCWludCBpOworCQkJCQltZW1zZXQoc2NvbCwwLHNpemVv
ZihzY29sKSk7CisJCQkJCWZvciAoaT0wOyBpIDwgc2hpLm1hdHJlbi0+Ymx1
cnNhbXBsZXM7IGkrKykgeworCQkJCQlnZXRSYW5kb21WZWMobm9yLCBzaGku
bWF0cmVuLT5ibHVyZmFjdG9yKTsKKwkJCQkJVkVDQUREKG5vcixub3Isc2hp
LnZuKTsKKwkJCQkJTm9ybWFsaXNlKG5vcik7IC8vIG1ha2Ugc3VyZSBub3Jy
ZWYgaXMgYSBub3JtYWwKKwkJCQkJCisJCQkJCS8vIGJ5IG1vZGlmaXlpbmcg
dm4gd2UgY2FuIGVmZmVjdGl2ZWx5IGFjaGlldmUgYmx1cnJ5IG92ZXJzYW1w
bGluZworCQkJCQkKKwkJCQkJcmVmbGVjdGlvbihyZWYsIG5vciwgc2hpLnZp
ZXcsIE5VTEwpOyAgCisJCQkJCXRyYWNlcmF5KGRlcHRoLTEsIHNoaS5jbywg
cmVmLCBjY29sLCBzaGkudmxyLCBzaGkubWFzayk7CisJCQkJCVZFQ0FERChz
Y29sLHNjb2wsY2NvbCk7CisJCQkJCQorCQkJCQl9CisJCQkJCXNjb2xbMF0g
Lz0gKGZsb2F0KXNoaS5tYXRyZW4tPmJsdXJzYW1wbGVzOworCQkJCQlzY29s
WzFdIC89IChmbG9hdClzaGkubWF0cmVuLT5ibHVyc2FtcGxlczsKKwkJCQkJ
c2NvbFsyXSAvPSAoZmxvYXQpc2hpLm1hdHJlbi0+Ymx1cnNhbXBsZXM7CisJ
CQkJCVZFQ0NPUFkoY29sLHNjb2wpOworCQkJCQl9CisJCQkJCWVsc2Ugewog
CQkJCXJlZmxlY3Rpb24ocmVmLCBzaGkudm4sIHNoaS52aWV3LCBOVUxMKTsJ
CQkKIAkJCQl0cmFjZXJheShkZXB0aC0xLCBzaGkuY28sIHJlZiwgY29sLCBz
aGkudmxyLCBzaGkubWFzayk7CisJCQkJCX0KIAkJCQogCQkJCWYxPSAxLjAt
ZjsKLQorCQkJCSAKIAkJCQkvKiBjb21iaW5lICovCiAJCQkJLy9jb2xvcl9j
b21iaW5lKGNvbCwgZipmciooMS4wLXNoci5zcGVjWzBdKSwgZjEsIGNvbCwg
c2hyLmRpZmYpOwogCQkJCS8vY29sWzBdKz0gc2hyLnNwZWNbMF07CkBAIC0x
NjY4LDExICsxNzc1LDEzIEBACiB2b2lkIHJheV90cmFjZShTaGFkZUlucHV0
ICpzaGksIFNoYWRlUmVzdWx0ICpzaHIpCiB7CiAJVmxha1JlbiAqdmxyOwot
CWZsb2F0IGksIGYsIGYxLCBmciwgZmcsIGZiLCB2ZWNbM10sIG1pcmNvbFsz
XSwgdHJhY29sWzNdOwotCWludCBkb190cmEsIGRvX21pcjsKKwlmbG9hdCBp
LCBmLCBmMSwgZnIsIGZnLCBmYiwgdmVjWzNdLCBtaXJjb2xbM10sIHRyYWNv
bFszXSwgcGx1Z2NvbFszXTsKKwlpbnQgZG9fdHJhLCBkb19taXIsZG9fcGx1
Z2luOwogCQogCWRvX3RyYT0gKChzaGktPm1hdHJlbi0+bW9kZSAmIE1BX1JB
WVRSQU5TUCkgJiYgc2hyLT5hbHBoYSE9MS4wKTsKIAlkb19taXI9ICgoc2hp
LT5tYXRyZW4tPm1vZGUgJiBNQV9SQVlNSVJST1IpICYmIHNoaS0+bWF0cmVu
LT5yYXlfbWlycm9yIT0wLjApOworCisJCiAJdmxyPSBzaGktPnZscjsKIAkK
IAljb2hfdGVzdD0gMDsJCS8vIHJlc2V0IGNvaGVyZW5jZSBvcHRpbWl6ZQpA
QCAtMTY4MCw4ICsxNzg5LDM4IEBACiAJaWYoZG9fdHJhKSB7CiAJCWZsb2F0
IHJlZnJhY3RbM107CiAJCQorCisJCWlmIChzaGktPm1hdHJlbi0+bW9kZSAm
IE1BX0JMVVJSWSkgeworCQkJCQkKKwkJCWZsb2F0IG5vclszXSwgY2NvbFsz
XSxzY29sWzNdOwkKKwkJCQltZW1zZXQoc2NvbCwwLHNpemVvZihzY29sKSk7
CisJCQkJaW50IGk7CisJCQkJZm9yIChpPTA7IGkgPCBzaGktPm1hdHJlbi0+
Ymx1cnNhbXBsZXM7IGkrKykgeworCQkJCQlnZXRSYW5kb21WZWMobm9yLCBz
aGktPm1hdHJlbi0+Ymx1cmZhY3Rvcik7CisJCQkJCS8vVkVDQUREKG5vcixu
b3Isc2hpLT52bik7CisJCQkJCQorCQkJCQkKKwkJCQkJCisJCQkJCS8vIGJ5
IG1vZGlmaXlpbmcgdm4gd2UgY2FuIGVmZmVjdGl2ZWx5IGFjaGlldmUgYmx1
cnJ5IG92ZXJzYW1wbGluZworCQkJCQkKKwkJCQkJcmVmcmFjdGlvbihyZWZy
YWN0LCBzaGktPnZuLCBzaGktPnZpZXcsIHNoaS0+bWF0cmVuLT5hbmcpOwor
CQkJCQlWRUNBREQocmVmcmFjdCwgcmVmcmFjdCwgbm9yKTsKKwkJCQkJTm9y
bWFsaXNlKHJlZnJhY3QpOworCQkJCQl0cmFjZXJheShzaGktPm1hdHJlbi0+
cmF5X2RlcHRoX3RyYSwgc2hpLT5jbywgcmVmcmFjdCwgY2NvbCwgc2hpLT52
bHIsIHNoaS0+bWFzayk7CisJCQkJCVZFQ0FERChzY29sLHNjb2wsY2NvbCk7
CisJCQkJCQorCQkJCisJCX0KKwkJc2NvbFswXSAvPSAoZmxvYXQpc2hpLT5t
YXRyZW4tPmJsdXJzYW1wbGVzOworCQkJCQlzY29sWzFdIC89IChmbG9hdClz
aGktPm1hdHJlbi0+Ymx1cnNhbXBsZXM7CisJCQkJCXNjb2xbMl0gLz0gKGZs
b2F0KXNoaS0+bWF0cmVuLT5ibHVyc2FtcGxlczsKKwkJCQkJVkVDQ09QWSh0
cmFjb2wsc2NvbCk7CisJfQorCQllbHNlIHsKIAkJcmVmcmFjdGlvbihyZWZy
YWN0LCBzaGktPnZuLCBzaGktPnZpZXcsIHNoaS0+bWF0cmVuLT5hbmcpOwot
CQl0cmFjZXJheShzaGktPm1hdHJlbi0+cmF5X2RlcHRoX3RyYSwgc2hpLT5j
bywgcmVmcmFjdCwgdHJhY29sLCBzaGktPnZsciwgc2hpLT5tYXNrKTsKKwkJ
CXRyYWNlcmF5KHNoaS0+bWF0cmVuLT5yYXlfZGVwdGhfdHJhLCBzaGktPmNv
LCByZWZyYWN0LCB0cmFjb2wsIHNoaS0+dmxyLCBzaGktPm1hc2spOworCQl9
CisJCQogCQkKIAkJZj0gc2hyLT5hbHBoYTsgZjE9IDEuMC1mOwogCQlzaHIt
PmRpZmZbMF09IGYqc2hyLT5kaWZmWzBdICsgZjEqdHJhY29sWzBdOwpAQCAt
MTY4OSw3ICsxODI4LDcgQEAKIAkJc2hyLT5kaWZmWzJdPSBmKnNoci0+ZGlm
ZlsyXSArIGYxKnRyYWNvbFsyXTsKIAkJc2hyLT5hbHBoYT0gMS4wOwogCX0K
LQkKKwogCWlmKGRvX21pcikgewogCQogCQlpPSBzaGktPm1hdHJlbi0+cmF5
X21pcnJvcipmcmVzbmVsX2ZhYyhzaGktPnZpZXcsIHNoaS0+dm4sIHNoaS0+
bWF0cmVuLT5mcmVzbmVsX21pcl9pLCBzaGktPm1hdHJlbi0+ZnJlc25lbF9t
aXIpOwpAQCAtMTY5NywxMyArMTgzNiw0MCBAQAogCQkJZnI9IHNoaS0+bWF0
cmVuLT5taXJyOwogCQkJZmc9IHNoaS0+bWF0cmVuLT5taXJnOwogCQkJZmI9
IHNoaS0+bWF0cmVuLT5taXJiOwotCisJCQlpZiAoc2hpLT5tYXRyZW4tPm1v
ZGUgJiBNQV9CTFVSUlkpIHsKKwkJCQkKKwkJCQorCQkJCWZsb2F0IG5vclsz
XSwgY2NvbFszXSxzY29sWzNdOwkKKwkJCQlpbnQgaTsKKwkJCQltZW1zZXQo
c2NvbCwwLHNpemVvZihzY29sKSk7CisJCQkJZm9yIChpPTA7IGkgPCBzaGkt
Pm1hdHJlbi0+Ymx1cnNhbXBsZXM7IGkrKykgeworCQkJCQlnZXRSYW5kb21W
ZWMobm9yLCBzaGktPm1hdHJlbi0+Ymx1cmZhY3Rvcik7CisJCQkJCVZFQ0FE
RChub3Isbm9yLHNoaS0+dm4pOworCQkJCQlOb3JtYWxpc2Uobm9yKTsgLy8g
bWFrZSBzdXJlIG5vcnJlZiBpcyBhIG5vcm1hbAorCQkJCQkKKwkJCQkJLy8g
YnkgbW9kaWZpeWluZyB2biB3ZSBjYW4gZWZmZWN0aXZlbHkgYWNoaWV2ZSBi
bHVycnkgb3ZlcnNhbXBsaW5nCisJCQkJCQorCQkJCWlmKHZsci0+ZmxhZyAm
IFJfU01PT1RIKSAKKwkJCQkJcmVmbGVjdGlvbih2ZWMsIG5vciwgc2hpLT52
aWV3LCB2bHItPm4pOworCQkJCWVsc2UKKwkJCQkJcmVmbGVjdGlvbih2ZWMs
IG5vcgksIHNoaS0+dmlldywgTlVMTCk7CisJCQkJCisJCQkJCXRyYWNlcmF5
KHNoaS0+bWF0cmVuLT5yYXlfZGVwdGgsIHNoaS0+Y28sIHZlYywgY2NvbCwg
c2hpLT52bHIsIHNoaS0+bWFzayk7CisJCQkJCVZFQ0FERChzY29sLHNjb2ws
Y2NvbCk7CisJCQkJCisJCQkJCX0KKwkJCQkJCXNjb2xbMF0gLz0gKGZsb2F0
KXNoaS0+bWF0cmVuLT5ibHVyc2FtcGxlczsKKwkJCQkJc2NvbFsxXSAvPSAo
ZmxvYXQpc2hpLT5tYXRyZW4tPmJsdXJzYW1wbGVzOworCQkJCQlzY29sWzJd
IC89IChmbG9hdClzaGktPm1hdHJlbi0+Ymx1cnNhbXBsZXM7CisJCQkJCVZF
Q0NPUFkobWlyY29sLHNjb2wpOworCQkJCisJCX0gZWxzZSB7CiAJCQlpZih2
bHItPmZsYWcgJiBSX1NNT09USCkgCiAJCQkJcmVmbGVjdGlvbih2ZWMsIHNo
aS0+dm4sIHNoaS0+dmlldywgdmxyLT5uKTsKIAkJCWVsc2UKIAkJCQlyZWZs
ZWN0aW9uKHZlYywgc2hpLT52biwgc2hpLT52aWV3LCBOVUxMKTsKLQkKIAkJ
CXRyYWNlcmF5KHNoaS0+bWF0cmVuLT5yYXlfZGVwdGgsIHNoaS0+Y28sIHZl
YywgbWlyY29sLCBzaGktPnZsciwgc2hpLT5tYXNrKTsKKwkJCX0KIAkJCQog
CQkJZj0gaSpmciooMS4wLXNoci0+c3BlY1swXSk7CWYxPSAxLjAtaTsKIAkJ
CXNoci0+ZGlmZlswXT0gZiptaXJjb2xbMF0gKyBmMSpzaHItPmRpZmZbMF07
CkBAIC0yMTQzLDQgKzIzMDksMyBAQAogCQogCQogfQotCkluZGV4OiByZW5k
ZXIvaW50ZXJuL3NvdXJjZS9yZW5kZXJjb3JlLmMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3QvYmYtYmxlbmRlci9ibGVuZGVy
L3NvdXJjZS9ibGVuZGVyL3JlbmRlci9pbnRlcm4vc291cmNlL3JlbmRlcmNv
cmUuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS43MApkaWZmIC11IC1yMS43
MCByZW5kZXJjb3JlLmMKLS0tIHJlbmRlci9pbnRlcm4vc291cmNlL3JlbmRl
cmNvcmUuYwk4IEp1bCAyMDA0IDIwOjM4OjI0IC0wMDAwCTEuNzAKKysrIHJl
bmRlci9pbnRlcm4vc291cmNlL3JlbmRlcmNvcmUuYwkxNSBKdWwgMjAwNCAw
ODo1ODozNyAtMDAwMApAQCAtOTgsNyArOTgsOSBAQAogdm9pZCBzY2FubGlu
ZWhhbG8odW5zaWduZWQgaW50ICpyZWN0eiwgdW5zaWduZWQgaW50ICpyZWN0
dCwgc2hvcnQgeXMpOwogLyogIHZvaWQgYWRkX2hhbG9fZmxhcmUodm9pZCk7
ICovCiB2b2lkIGVkZ2VfZW5oYW5jZSh2b2lkKTsKLQorZmxvYXQgZl9yYW5k
KCkgeyAgLy8gbW90aGVyIG9mIGFsbCBydWRlIGF3YWtlbmluZ3M6IFdpbjMy
IGhhcyBubyBkcmFuZDQ4Li4uIAorCQlyZXR1cm4gKChmbG9hdCkgKHJhbmQo
KSAlIDMyNzY3KSkgLyAoMzI3NjcuMGYpOworCX0KIC8qIERpdGhlciB3aXRo
IGdhbW1hIHRhYmxlPyAqLwogdm9pZCBnYW10YWJkaXQodW5zaWduZWQgc2hv
cnQgKmluLCBjaGFyICpvdXQpCiAvKiAgdW5zaWduZWQgc2hvcnQgKmluOyAq
LwpAQCAtMTM4NCw2ICsxMzg2LDE1IEBACiB9CiAKIC8qIEJsaW5uIHNwZWMg
Ki8KKyNpZiAwCitmbG9hdCBQbHVnaW5TcGVjKGZsb2F0ICpuLCBmbG9hdCAq
bCwgZmxvYXQgKnYsIEJsZW5kZXJQbHVnaW4gKnBsdWdpbikgeworCQkoZmxv
YXQpICgqc3BlY19jYiAoIGZsb2F0ICwgZmxvYXQgLCBmbG9hdCwgdW5zaWdu
ZWQgY2hhcioqKSA9IFBMVUdfR2V0Q2FsbGJhY2socGx1Z2luLCBQTFVHX0FS
RUFfU1BFQyk7CisJICAgIHVuc2lnbmVkIGNoYXIgKnB1c2hhcmdzID0gTlVM
TDsKKwkJCisJCVBMVUdfR2V0QXJnVmFsdWVzKHBsdWdpbiwgUExVR19TSEFE
RVJfU1BFQywgcHVzaGFyZ3MpOyAvLyB0aGVzZSBhcmUgc3RvcmVkIGluIHNv
bWUgZGF0YWJhc2UKKwkJcmV0dXJuICgqc3BlY19jYikobixsLHYscHVzaGFy
Z3MpOyAKKwl9CisjZW5kaWYKIGZsb2F0IEJsaW5uX1NwZWMoZmxvYXQgKm4s
IGZsb2F0ICpsLCBmbG9hdCAqdiwgZmxvYXQgcmVmcmFjLCBmbG9hdCBzcGVj
X3Bvd2VyICkKIHsKIAlmbG9hdCBpLCBuaCwgbnYsIG5sLCB2aCwgaFszXTsK
QEAgLTE0NTksOCArMTQ3MCwxNiBAQAogCQogCXJldHVybiByc2x0OwogfQot
Ci0vKiBjYXJ0b29uIHJlbmRlciBkaWZmdXNlICovCisjaWYgMAorLy8gcGx1
Z2luIGRpZmZ1c2UKK2Zsb2F0IFBsdWdpbkRpZmYoIGZsb2F0ICpuLCBmbG9h
dCAqbCwgZmxvYXQgKnYsIEJsZW5kZXJQbHVnaW4gKnBsdWdpbikgeworCQlm
bG9hdCAoKmRpZmZfY2IpIChmbG9hdCxmbG9hdCxmbG9hdCx2YV9saXN0Kikg
PSBwbHVnaW4tPmNhbGxiYWNrc1tQTFVHX0RJRkZfQ0JdOworCQkKKwkJcmV0
dXJuICgqZGlmZl9jYikgKG4sbCx2LHBsdWdpbi0+cHVzaGFyZ3MpOworCX0K
KyNlbmRpZgorCQorCS8qIGNhcnRvb24gcmVuZGVyIGRpZmZ1c2UgKi8KIGZs
b2F0IFRvb25fRGlmZiggZmxvYXQgKm4sIGZsb2F0ICpsLCBmbG9hdCAqdiwg
ZmxvYXQgc2l6ZSwgZmxvYXQgc21vb3RoICkKIHsKIAlmbG9hdCByc2x0LCBh
bmc7CkBAIC0xOTQ3LDcgKzE5NjYsNjUgQEAKIAkJCQkKIAkJCQkvKiBzaW5n
bGUgc2lkZWQ/ICovCiAJCQkJaWYoIHNoaS0+dmxyLT5uWzBdKmx2WzBdICsg
c2hpLT52bHItPm5bMV0qbHZbMV0gKyBzaGktPnZsci0+blsyXSpsdlsyXSA+
IC0wLjAxKSB7Ci0JCQkJCXJheV9zaGFkb3coc2hpLCBsYXIsIHNoYWQpOwor
CQkJCQkKKwkJCQkJCQkJCWlmIChsYXItPm1vZGUgJiBMQV9TSEFEX1NPRlQp
IHsKKwkJCQkJCS8vcHJpbnRmKCJTT0ZUIFBMRUFTRSEhIFNvZnQ6JWYgU2Ft
cCVkIixsYXItPnNvZnQsbGFyLT5zYW1wKTsKKy8vCQkJCQkJbGFyLT5tYXhz
b2Z0ID0gbGFyLT5zb2Z0OworLy8JCQkJCQlsYXItPnNvZnRzYW1wbGVzPSBs
YXItPnNhbXA7CisKKwkJCQkJCQorCQkJCQkJZmxvYXQgb3JvWzNdOworCQkJ
CQkJaWYgKGxhci0+dHlwZSAhPSBMQV9TVU4pIHtWRUNDT1BZKG9ybyxsYXIt
PmNvKTt9IGVsc2Uge1ZFQ0NPUFkob3JvLGxhci0+dmVjKTt9CisJCQkJCQlm
bG9hdCBzeCxzeSxzejsKKwkJCQkJCWZsb2F0IGNvb2xzaGFkWzNdOworCQkJ
CQkJaW50IGk7CisJCQkJCQltZW1zZXQgKGNvb2xzaGFkLCAwLCBzaXplb2Yo
Y29vbHNoYWQpKTsgLy8gd2UgbmVlZCB0byByZXNldCBpdAorCQkJCQkJZm9y
IChpPTA7IGkgPCBsYXItPnNvZnRzYW1wbGVzOyBpKyspIHsKKwkJCQkJCXN4
PShmbG9hdClmX3JhbmQoKSAqIGxhci0+bWF4c29mdDsKKwkJCQkJCXN5PShm
bG9hdClmX3JhbmQoKSAqbGFyLT5tYXhzb2Z0OworCQkJCQkJc3o9KGZsb2F0
KWZfcmFuZCgpICpsYXItPm1heHNvZnQ7CisJCQkJCQlpZiAobGFyLT50eXBl
ICE9IExBX1NVTikgeworCQkJCQkJbGFyLT5jb1swXSArPSBzeDsKKwkJCQkJ
CWxhci0+Y29bMV0gKz0gc3k7CisJCQkJCQlsYXItPmNvWzJdICs9IHN6Owor
CQkJCQkJfQorCQkJCQkJZWxzZSB7CisJCQkJCQkJbGFyLT52ZWNbMF0rPXN4
OworCQkJCQkJCWxhci0+dmVjWzFdKz1zeTsKKwkJCQkJCQlsYXItPnZlY1sy
XSs9c3o7CisJCQkJCQkJLy9Ob3JtYWxpc2UobGFyLT52ZWMpOwkKKwkJCQkJ
CQl9CisvL1syWzJdXQkJCQkJCWlmICghb25TYW1lU2lkZSAob3JvLCBzaGkt
PmNvLCBzaGktPnZsci0+biwgc2hpLT52bHItPnYxLT5jbykpIHsKKy8vCQkJ
CQkJCXN4PS1zeDsKKy8vCQkJCQkJCXN5PS1zeTsKKy8vCQkJCQkJCXN6PS1z
ejsKKy8vCQkJCQkJCXNoaS0+Y29bMF0gPSBvcm9bMF0gKyBzeDsKKy8vCQkJ
CQkJCXNoaS0+Y29bMV0gPSBvcm9bMV0gKyBzeTsKKy8vCQkJCQkJCXNoaS0+
Y29bMl0gPSBvcm9bMl0rIHN6OyAvLyBpZiB3ZSB3ZW50IHRob3J1Z2ggbWFr
ZSBzdXJlIHdlIGRvbnQgdGhpcyB0aW1lLgkJCQkJCQkKKwkJCQkJCQkKKy8v
CQkJCQkJCQorLy8JCQkJCQl9CisJCQkJCQlyYXlfc2hhZG93KHNoaSxsYXIs
c2hhZCk7CQorCQkJCQkJY29vbHNoYWRbMF0gKz0gc2hhZFswXTsKKwkJCQkJ
CWNvb2xzaGFkWzFdICs9IHNoYWRbMV07CisJCQkJCQljb29sc2hhZFsyXSAr
PSBzaGFkWzJdOworCQkJCQkJaWYgKGxhci0+dHlwZSAhPSBMQV9TVU4pIHsK
KwkJCQkJCWxhci0+Y29bMF0gPSBvcm9bMF07IC8vIHJlc2V0IGxhci0+Y28K
KwkJCQkJCWxhci0+Y29bMV0gPSBvcm9bMV07CisJCQkJCQlsYXItPmNvWzJd
ID0gb3JvWzJdOworCQkJCQkJfQorCQkJCQkJZWxzZSB7CisJCQkJCQkJCVZF
Q0NPUFkobGFyLT52ZWMsIG9ybyk7CisJCQkJCQkJfQorCQkJCQkJfQorCQkJ
CQkJc2hhZFswXSA9IGNvb2xzaGFkWzBdL2xhci0+c29mdHNhbXBsZXM7CisJ
CQkJCQlzaGFkWzFdID0gY29vbHNoYWRbMV0vbGFyLT5zb2Z0c2FtcGxlczsK
KwkJCQkJCXNoYWRbMl0gPSBjb29sc2hhZFsyXS9sYXItPnNvZnRzYW1wbGVz
OworCisJCQkJCQkKKwkJCQkJfSBlbHNlIHsKKwkJCQkJCXJheV9zaGFkb3co
c2hpLCBsYXIsIHNoYWQpOworCQkJCQl9CiAJCQkJCXNoYWRmYWNbM10rPSBz
aGFkWzNdOwogCQkJCQlpcis9IDEuMDsKIAkJCQl9CkBAIC0yMTUxLDkgKzIy
MjgsNzIgQEAKIAkJCQkJCX0KIAkJCQkJCWVsc2UgaWYobGFyLT5tb2RlICYg
TEFfU0hBRF9SQVkpIHsKIAkJCQkJCQkvLyB0aGlzIGV4dHJhIDAuMDAxIHBy
ZXZlbnRzIGJvdW5kYXJ5IGNhc2VzIChzaGFkb3cgb24gc21vb3RoIHNwaGVy
ZSkKLQkJCQkJCQlpZigoc2hpLT52bHItPm5bMF0qbHZbMF0gKyBzaGktPnZs
ci0+blsxXSpsdlsxXSArIHNoaS0+dmxyLT5uWzJdKmx2WzJdKSA+IC0wLjAw
MSkgCi0JCQkJCQkJCXJheV9zaGFkb3coc2hpLCBsYXIsIHNoYWRmYWMpOwot
CQkJCQkJCWVsc2Ugc2hhZGZhY1szXT0gMC4wOworCQkJCQkJCWlmKChzaGkt
PnZsci0+blswXSpsdlswXSArIHNoaS0+dmxyLT5uWzFdKmx2WzFdICsgc2hp
LT52bHItPm5bMl0qbHZbMl0pID4gLTAuMDAxKSB7CisJCQkJCQkJCQkJCQlp
ZiAobGFyLT5tb2RlICYgTEFfU0hBRF9TT0ZUKSB7CisJCQkJCQkvL3ByaW50
ZigiU09GVCBQTEVBU0UhISBTb2Z0OiVmIFNhbXAlZCIsbGFyLT5zb2Z0LGxh
ci0+c2FtcCk7CisvLwkJCQkJCWxhci0+bWF4c29mdCA9IGxhci0+c29mdDsK
Ky8vCQkJCQkJbGFyLT5zb2Z0c2FtcGxlcz0gbGFyLT5zYW1wOworCisJCQkJ
CQkKKwkJCQkJCWZsb2F0IG9yb1szXTsKKwkJCQkJCWlmIChsYXItPnR5cGUg
IT0gTEFfU1VOKSB7VkVDQ09QWShvcm8sIGxhci0+Y28pO30gZWxzZSB7VkVD
Q09QWShvcm8sIGxhci0+dmVjKTt9CisJCQkJCQkKKwkJCQkJCWZsb2F0IHN4
LHN5LHN6OworCQkJCQkJZmxvYXQgY29vbHNoYWRbM107CisJCQkJCQlpbnQg
aTsKKwkJCQkJCW1lbXNldCAoY29vbHNoYWQsIDAsIHNpemVvZihjb29sc2hh
ZCkpOworCQkJCQkJZm9yIChpPTA7IGkgPCBsYXItPnNvZnRzYW1wbGVzOyBp
KyspIHsKKwkJCQkJCXN4PShmbG9hdClmX3JhbmQoKSAqIGxhci0+bWF4c29m
dDsKKwkJCQkJCXN5PShmbG9hdClmX3JhbmQoKSAqbGFyLT5tYXhzb2Z0Owor
CQkJCQkJc3o9KGZsb2F0KWZfcmFuZCgpICpsYXItPm1heHNvZnQ7CisJCQkJ
CQlpZiAobGFyLT50eXBlICE9IExBX1NVTikgeworCQkJCQkJbGFyLT5jb1sw
XSArPSBzeDsKKwkJCQkJCWxhci0+Y29bMV0gKz0gc3k7CQkJCQkJCisJCQkJ
CQlsYXItPmNvWzJdICs9IHN6OworCQkJCQkJfQorCQkJCQkJZWxzZSB7CisJ
CQkJCQkJbGFyLT52ZWNbMF0rPSBzeDsKKwkJCQkJCQlsYXItPnZlY1sxXSs9
IHN5OworCQkJCQkJCWxhci0+dmVjWzJdKz1zejsKKwkJCQkJCQkJTm9ybWFs
aXNlKGxhci0+dmVjKTsJCQkJCQkJCisJCQkJCQkJfQorCQkJCQkJCQorLy9b
MlsyXV0JCQkJCQlpZiAoIW9uU2FtZVNpZGUgKG9ybywgc2hpLT5jbywgc2hp
LT52bHItPm4sIHNoaS0+dmxyLT52MS0+Y28pKSB7CisvLwkJCQkJCQlzeD0t
c3g7CisvLwkJCQkJCQlzeT0tc3k7CisvLwkJCQkJCQlzej0tc3o7CisvLwkJ
CQkJCQlzaGktPmNvWzBdID0gb3JvWzBdICsgc3g7CisvLwkJCQkJCQlzaGkt
PmNvWzFdID0gb3JvWzFdICsgc3k7CisvLwkJCQkJCQlzaGktPmNvWzJdID0g
b3JvWzJdKyBzejsgLy8gaWYgd2Ugd2VudCB0aG9ydWdoIG1ha2Ugc3VyZSB3
ZSBkb250IHRoaXMgdGltZS4JCQkJCQkJCisJCQkJCQkJCisvLwkJCQkJCQkK
Ky8vCQkJCQkJfQorCQkJCQkJcmF5X3NoYWRvdyhzaGksbGFyLHNoYWRmYWMp
OwkKKwkJCQkJCWNvb2xzaGFkWzBdICs9IHNoYWRmYWNbMF07CisJCQkJCQlj
b29sc2hhZFsxXSArPSBzaGFkZmFjWzFdOworCQkJCQkJY29vbHNoYWRbMl0g
Kz0gc2hhZGZhY1syXTsKKwkJCQkJCWNvb2xzaGFkWzNdICs9IHNoYWRmYWNb
M107CisJCQkJCQlpZiAobGFyLT50eXBlICE9IExBX1NVTikgeworCQkJCQkJ
CQorCQkJCQkJbGFyLT5jb1swXSA9IG9yb1swXTsgLy8gcmVzZXQgbGFyLT5j
bworCQkJCQkJbGFyLT5jb1sxXSA9IG9yb1sxXTsKKwkJCQkJCWxhci0+Y29b
Ml0gPSBvcm9bMl07CisJCQkJCQl9CisJCQkJCQllbHNlIHsKKwkJCQkJCQlW
RUNDT1BZKGxhci0+dmVjLCBvcm8pOwkJCQkJCisJCQkJCQkJfQorCQkJCQkJ
CisJCQkJCQkJfQorCQkJCQkJc2hhZGZhY1swXSA9IGNvb2xzaGFkWzBdL2xh
ci0+c29mdHNhbXBsZXM7CisJCQkJCQlzaGFkZmFjWzFdID0gY29vbHNoYWRb
MV0vbGFyLT5zb2Z0c2FtcGxlczsKKwkJCQkJCXNoYWRmYWNbMl0gPSBjb29s
c2hhZFsyXS9sYXItPnNvZnRzYW1wbGVzOworCQkJCQkJc2hhZGZhY1szXSA9
IGNvb2xzaGFkWzNdL2xhci0+c29mdHNhbXBsZXM7CisJCQkJCQkKKwkJCQkJ
fSBlbHNlIHsKKwkJCQkJCXJheV9zaGFkb3coc2hpLCBsYXIsIHNoYWRmYWMp
OworCQkJCQl9CQorCQkJCQkJCQkJCQl9CisJCQkJCQkJZWxzZXsgc2hhZGZh
Y1szXT0gMC4wO30KIAkJCQkJCX0KIAkKIAkJCQkJCS8qIHdhcm5pbmcsIGhl
cmUgaXQgc2tpcHMgdGhlIGxvb3AgKi8KQEAgLTIyOTQsNiArMjQzNCw4IEBA
CiAKIH0KIAorCisKIHZvaWQgc2hhZGVfaW5wdXRfc2V0X2Nvb3JkcyhTaGFk
ZUlucHV0ICpzaGksIGZsb2F0IHUsIGZsb2F0IHYsIGludCBpMSwgaW50IGky
LCBpbnQgaTMpCiB7CiAJVmVydFJlbiAqdjEsICp2MiwgKnYzOwpAQCAtMzU1
OSw1ICszNzAxLDMgQEAKIAogCiAvKiBlbmQgb2YgcmVuZGVyLmMgKi8KLQot
CkluZGV4OiBtYWtlc2RuYS9ETkFfbGFtcF90eXBlcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L2JmLWJsZW5kZXIvYmxl
bmRlci9zb3VyY2UvYmxlbmRlci9tYWtlc2RuYS9ETkFfbGFtcF90eXBlcy5o
LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEwCmRpZmYgLXUgLXIxLjEwIERO
QV9sYW1wX3R5cGVzLmgKLS0tIG1ha2VzZG5hL0ROQV9sYW1wX3R5cGVzLmgJ
MjkgRGVjIDIwMDMgMTY6NTI6NDkgLTAwMDAJMS4xMAorKysgbWFrZXNkbmEv
RE5BX2xhbXBfdHlwZXMuaAkxNSBKdWwgMjAwNCAwODo1ODozNyAtMDAwMApA
QCAtNTUsNyArNTUsOCBAQAogCXNob3J0IGJ1ZnNpemUsIHNhbXA7CiAJZmxv
YXQgY2xpcHN0YSwgY2xpcGVuZCwgc2hhZHNwb3RzaXplOwogCWZsb2F0IGJp
YXMsIHNvZnQ7Ci0JCisJZmxvYXQgbWF4c29mdDsKKwlzaG9ydCBzb2Z0c2Ft
cGxlcywgc2Nod2FydHo7CiAJc2hvcnQgcmF5X3NhbXAsIHJheV9zYW1weSwg
cmF5X3NhbXB6LCByYXlfc2FtcF90eXBlOwogCXNob3J0IGFyZWFfc2hhcGUs
IHBhZDsKIAlmbG9hdCBhcmVhX3NpemUsIGFyZWFfc2l6ZXksIGFyZWFfc2l6
ZXo7CkBAIC05Myw2ICs5NCw3IEBACiAjZGVmaW5lIExBX05PX0RJRkYJCTIw
NDgKICNkZWZpbmUgTEFfTk9fU1BFQwkJNDA5NgogI2RlZmluZSBMQV9TSEFE
X1JBWQkJODE5MgorI2RlZmluZSBMQV9TSEFEX1NPRlQJMTYzODQKIAogLyog
YXJlYSBzaGFwZSAqLwogI2RlZmluZSBMQV9BUkVBX1NRVUFSRQkwCkBAIC0x
MTEsNCArMTEzLDMgQEAKIAogCiAjZW5kaWYgLyogRE5BX0xBTVBfVFlQRVNf
SCAqLwotCkluZGV4OiBtYWtlc2RuYS9ETkFfbWF0ZXJpYWxfdHlwZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9iZi1i
bGVuZGVyL2JsZW5kZXIvc291cmNlL2JsZW5kZXIvbWFrZXNkbmEvRE5BX21h
dGVyaWFsX3R5cGVzLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTcKZGlm
ZiAtdSAtcjEuMTcgRE5BX21hdGVyaWFsX3R5cGVzLmgKLS0tIG1ha2VzZG5h
L0ROQV9tYXRlcmlhbF90eXBlcy5oCTMwIEp1biAyMDA0IDE4OjU0OjA4IC0w
MDAwCTEuMTcKKysrIG1ha2VzZG5hL0ROQV9tYXRlcmlhbF90eXBlcy5oCTE1
IEp1bCAyMDA0IDA4OjU4OjM4IC0wMDAwCkBAIC01NCw3ICs1NCw3IEBACiAJ
ZmxvYXQgc3BlY3IsIHNwZWNnLCBzcGVjYjsKIAlmbG9hdCBtaXJyLCBtaXJn
LCBtaXJiOwogCWZsb2F0IGFtYnIsIGFtYmIsIGFtYmc7Ci0JCisJZmxvYXQg
Ymx1cmZhY3RvcjsgaW50IGJsdXJzYW1wbGVzOwogCWZsb2F0IGFtYiwgZW1p
dCwgYW5nLCBzcGVjdHJhLCByYXlfbWlycm9yOwogCWZsb2F0IGFscGhhLCBy
ZWYsIHNwZWMsIHpvZmZzLCBhZGQ7CiAJZmxvYXQgdHJhbnNsdWNlbmN5OwpA
QCAtMTEyLDYgKzExMiw4IEBACiAjZGVmaW5lIE1BX1lVVgkJCTIKICNkZWZp
bmUgTUFfSFNWCQkJMwogCisKKwogLyogbW9kZSAoaXMgaW50KSAqLwogI2Rl
ZmluZSBNQV9UUkFDRUJMRQkJMQogI2RlZmluZSBNQV9TSEFET1cJCTIKQEAg
LTE0MCw3ICsxNDIsNyBAQAogI2RlZmluZSBNQV9TSEFET1dfVFJBCTB4ODAw
MDAKICNkZWZpbmUgTUFfUkFNUF9DT0wJCTB4MTAwMDAwCiAjZGVmaW5lIE1B
X1JBTVBfU1BFQwkweDIwMDAwMAotCisjZGVmaW5lIE1BX0JMVVJSWQkJMHg0
MDAwMDAKIC8qIGRpZmZfc2hhZGVyICovCiAjZGVmaW5lIE1BX0RJRkZfTEFN
QkVSVAkJMAogI2RlZmluZSBNQV9ESUZGX09SRU5OQVlBUgkxCkBAIC0yMDgs
NCArMjEwLDMgQEAKICNkZWZpbmUgTUFfREFSSwkJCTEKIAogI2VuZGlmCi0K
SW5kZXg6IHNyYy9idXR0b25zX3NoYWRpbmcuYwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9iZi1ibGVuZGVyL2JsZW5kZXIv
c291cmNlL2JsZW5kZXIvc3JjL2J1dHRvbnNfc2hhZGluZy5jLHYKcmV0cmll
dmluZyByZXZpc2lvbiAxLjg4CmRpZmYgLXUgLXIxLjg4IGJ1dHRvbnNfc2hh
ZGluZy5jCi0tLSBzcmMvYnV0dG9uc19zaGFkaW5nLmMJMTAgSnVsIDIwMDQg
MjE6MzU6MTcgLTAwMDAJMS44OAorKysgc3JjL2J1dHRvbnNfc2hhZGluZy5j
CTE1IEp1bCAyMDA0IDA4OjU4OjQzIC0wMDAwCkBAIC0yMDkwLDcgKzIwOTAs
MTQgQEAKIAl1aUJsb2NrRW5kQWxpZ24oYmxvY2spOwogCQogCXVpRGVmQnV0
UyhibG9jaywgVE9HfEJJVHw1LCAwLCJPbmx5U2hhZG93IiwJCQkxMCwxMTAs
ODAsMTksJmxhLT5tb2RlLCAwLCAwLCAwLCAwLCAiQ2F1c2VzIGxpZ2h0IHRv
IGNhc3Qgc2hhZG93cyBvbmx5IHdpdGhvdXQgaWxsdW1pbmF0aW5nIG9iamVj
dHMiKTsKLQorCWlmIChsYS0+dHlwZSAhPSBMQV9BUkVBICYmIChsYS0+bW9k
ZSAmIExBX1NIQURfUkFZKSkgeworCQl1aUJsb2NrQmVnaW5BbGlnbihibG9j
ayk7CisJCXVpRGVmQnV0UyhibG9jaywgVE9HfEJJVHwxNCwgMCwgIlNvZnQi
LCAxMDAsNzAsMTAwLDE5LCAmbGEtPm1vZGUsIDAsIDAsMCwwLCJUdXJucyBv
biBkaXN0cmlidXRlZCBzYW1wbGluZyBmb3Igc29mdCBzaGFkb3dzIik7CisJ
CQorCQl1aURlZkJ1dEYoYmxvY2ssIE5VTVNMSSwgMCwgIlNvZnRuZXNzIiwg
MTAwLDUwLDIwMCwxOSwmbGEtPm1heHNvZnQsMC4wLDUuMCwwLDAsIlNldHMg
dGhlIHNvZnRuZXNzIGZhY3RvciBmb3Igc2hhZG93cyIpOworCQl1aURlZkJ1
dEkoYmxvY2ssIE5VTVNMSSwgMCwgIlNhbXBsZXMiLCAxMDAsIDMwLCAyMDAs
IDE5LCAmbGEtPnNvZnRzYW1wbGVzLDAsMTAwLDAsMCwiU29mdCBTYW1wbGVz
IHRvIHRha2UiKTsKKwkJdWlCbG9ja0VuZEFsaWduKGJsb2NrKTsKKwl9CiAJ
aWYobGEtPnR5cGU9PUxBX1NQT1QpIHsKIAkJdWlEZWZCdXRTKGJsb2NrLCBU
T0d8QklUfDcsIEJfTEFNUFJFRFJBVywiU3F1YXJlIiwJMTAsNzAsODAsMTks
JmxhLT5tb2RlLCAwLCAwLCAwLCAwLCAiU2V0cyBzcXVhcmUgc3BvdGJ1bmRs
ZXMiKTsKIAkJdWlEZWZCdXRTKGJsb2NrLCBUT0d8QklUfDEsIDAsIkhhbG8i
LAkJCQkxMCw1MCw4MCwxOSwmbGEtPm1vZGUsIDAsIDAsIDAsIDAsICJSZW5k
ZXJzIHNwb3RsaWdodCB3aXRoIGEgdm9sdW1ldHJpYyBoYWxvIik7IApAQCAt
MjU3Myw2ICsyNTgwLDE2IEBACiAJdWlCbG9ja1NldENvbChibG9jaywgVEhf
QVVUTyk7CiB9CiAKK3N0YXRpYyB2b2lkIG1hdGVyaWFsX3BhbmVsX2JsdXJy
eShNYXRlcmlhbCAqbWEpIHsgCisJCXVpQmxvY2sgKmJsb2NrPSB1aU5ld0Js
b2NrKCZjdXJhcmVhLT51aWJsb2NrcywgIm1hdGVyaWFsX3BhbmVsX2JsdXJy
eSIsIFVJX0VNQk9TUywgVUlfSEVMViwgY3VyYXJlYS0+d2luKTsKKwkJdWlO
ZXdQYW5lbFRhYmJlZCgiTWlycm9yIFRyYW5zcCIsIk1hdGVyaWFsIik7CisJ
CWlmICh1aU5ld1BhbmVsKGN1cmFyZWEsIGJsb2NrLCAiQmx1cnJ5IiwiTWF0
ZXJpYWwiLCA2NDAsIDAsIDMxOCwgMjA0KSA9PTApIHJldHVybjsKKwkJCQor
CQkJdWlEZWZCdXRJKGJsb2NrLCBUT0d8QklUfDIyLCAwLCJCbHVycnkiLCAy
MTAsMTgwLDEwMCwyMCwgJihtYS0+bW9kZSksMCwwLDAsMCwiRW5hYmxlcyBC
bHVycnkgb3ZlcnNhbXBsaW5nIGZvciByYXl0cmFjaW5nIik7CisJCQl1aURl
ZkJ1dEYoYmxvY2ssIE5VTVNMSSwgMCwiQmx1ckZhY3RvciIsIDEwLDE2MCwy
MDAsMjAsICYobWEtPmJsdXJmYWN0b3IpLDAuMCwxLjAsMC4wLDAuMCwiVGhl
IE1heGltdW0gcmFuZG9tIHZlY3RvciIpOwkJCQorCQkJdWlEZWZCdXRJKGJs
b2NrLCBOVU0sIDAsICJTYW1wbGVzIiwgMjEwLCAxNjAsIDEwMCwgMjAsICYo
bWEtPmJsdXJzYW1wbGVzKSwyLjAsMTAwLjAsMCwwLCJUaGUgTnVtYmVyIG9m
IHNhbXBsZXMgdG8gdGFrZSIpOworCisJfQogc3RhdGljIHZvaWQgbWF0ZXJp
YWxfcGFuZWxfdHJhbWlyKE1hdGVyaWFsICptYSkKIHsKIAl1aUJsb2NrICpi
bG9jazsKQEAgLTI5MzMsNiArMjk1MCw5IEBACiAJCQltYXRlcmlhbF9wYW5l
bF9yYW1wcyhtYSk7CiAJCQltYXRlcmlhbF9wYW5lbF9zaGFkaW5nKG1hKTsK
IAkJCW1hdGVyaWFsX3BhbmVsX3RyYW1pcihtYSk7CisJCQlpZiAoKG1hLT5t
b2RlICYgTUFfUkFZTUlSUk9SKSB8fCAobWEtPm1vZGUgJiBNQV9SQVlUUkFO
U1ApKSB7CisJCQkJCW1hdGVyaWFsX3BhbmVsX2JsdXJyeShtYSk7CisJCQkJ
fQogCQkJbWF0ZXJpYWxfcGFuZWxfdGV4dHVyZShtYSk7CiAJCQkKIAkJCW10
ZXg9IG1hLT5tdGV4WyBtYS0+dGV4YWN0IF07CkBAIC0zMTY0LDUgKzMxODQs
MyBAQAogCiAJCiB9Ci0KLQo=

--0-1929561253-1089917624=:94891--