PolySpace
Stephen Weeks
sweeks@acm.org
Tue, 5 Feb 2002 12:07:10 -0800
--gH4KTCBMPI
Content-Type: text/plain; charset=us-ascii
Content-Description: message body text
Content-Transfer-Encoding: 7bit
I talked with Alain and he is fine with moving the discussion to the
MLton mailing list, but he has asked that I not release the test code
that he sent, which I presume contains code that is in their product.
FYI, here are the diffs that he sent between mlton-20000906 and their
internally modified version. That's what I was talking about in the
previous mail.
--gH4KTCBMPI
Content-Type: application/octet-stream
Content-Description: diff
Content-Disposition: attachment;
filename="diff.orig"
Content-Transfer-Encoding: base64
T25seSBpbiAvdXNyL2xvY2FsL21sdG9uLTYvYmluOiBtbGxleApPbmx5IGluIC91c3IvbG9j
YWwvbWx0b24tNi9iaW46IG1scHJvZgpPbmx5IGluIC91c3IvbG9jYWwvbWx0b24tNi9iaW46
IG1sdG9uCk9ubHkgaW4gL3Vzci9sb2NhbC9tbHRvbi02L2JpbjogbWx5YWNjCk9ubHkgaW4g
L3Vzci9sb2NhbC9tbHRvbi02L2RvYy9leGFtcGxlczogZ21vbi5vdXQKT25seSBpbiAvdXNy
L2xvY2FsL21sdG9uLTYvZG9jL2V4YW1wbGVzOiBwcm9maWxpbmcKT25seSBpbiAvdXNyL2xv
Y2FsL21sdG9uLTYvZG9jL2V4YW1wbGVzOiBwcm9maWxpbmcuYwpPbmx5IGluIC91c3IvbG9j
YWwvbWx0b24tNi9kb2MvZXhhbXBsZXM6IHByb2ZpbGluZy5jcHMKT25seSBpbiAvdXNyL2xv
Y2FsL21sdG9uLTY6IGV4YW1wbGVzCk9ubHkgaW4gL3Vzci9sb2NhbC9tbHRvbi02L2luY2x1
ZGU6IGNjb2RlZ2VuLmgKT25seSBpbiAvdXNyL2xvY2FsL21sdG9uLTYvaW5jbHVkZTogZ2Mu
aApPbmx5IGluIC91c3IvbG9jYWwvbWx0b24tNi9pbmNsdWRlOiBpbnQtaW5mLmgKT25seSBp
biAvdXNyL2xvY2FsL21sdG9uLTYvaW5jbHVkZTogbWx0b24tbGliLmgKT25seSBpbiAvdXNy
L2xvY2FsL21sdG9uLTYvaW5jbHVkZTogbWx0b24tcG9zaXguaApPbmx5IGluIC91c3IvbG9j
YWwvbWx0b24tNi9pbmNsdWRlOiBtbHRvbi5oCk9ubHkgaW4gL3Vzci9sb2NhbC9tbHRvbi02
L2luY2x1ZGU6IG15LWxpYi5oCk9ubHkgaW4gL3Vzci9sb2NhbC9tbHRvbi02L2luY2x1ZGU6
IHg4NmNvZGVnZW4uaApPbmx5IGluIC91c3IvbG9jYWwvbWx0b24tNi9saWI6IGxpYmdtcC5h
Ck9ubHkgaW4gL3Vzci9sb2NhbC9tbHRvbi02L2xpYjogbGlibWx0b24tZ2RiLmEKT25seSBp
biAvdXNyL2xvY2FsL21sdG9uLTYvbGliOiBsaWJtbHRvbi5hCk9ubHkgaW4gL3Vzci9sb2Nh
bC9tbHRvbi02L2xpYjogbWx0b24KT25seSBpbiAvdXNyL2xvY2FsL21sdG9uLTYvbGliOiB3
b3JsZC5tbHRvbgpkaWZmIC13IC1jIC1yIG1sdG9uLTIwMDAwOTA2Lm9yZy9zcmMvTWFrZWZp
bGUgL3Vzci9sb2NhbC9tbHRvbi02L3NyYy9NYWtlZmlsZQoqKiogbWx0b24tMjAwMDA5MDYu
b3JnL3NyYy9NYWtlZmlsZQlGcmkgT2N0IDIwIDA3OjQzOjU0IDIwMDAKLS0tIC91c3IvbG9j
YWwvbWx0b24tNi9zcmMvTWFrZWZpbGUJRnJpIEZlYiAgMiAxNDozMzoyOCAyMDAxCioqKioq
KioqKioqKioqKgoqKiogMTAsMzQgKioqKgogIFBST0YgPSBtbHByb2YKICBZQUNDID0gbWx5
YWNjCiAgUEFUSCA9ICQoQklOKTokKHNoZWxsIGVjaG8gJCRQQVRIKQogIAogIGFsbDoJJChN
TFRPTikgJChCSU4pLyQoTEVYKSAkKEJJTikvJChQUk9GKSAkKEJJTikvJChZQUNDKQogIAlj
aG1vZCBhLXcgJChJTkMpLyoKICAJQGVjaG8gJ0J1aWxkIG9mIE1MdG9uIHN1Y2NlZWRlZCcK
ICAKICAkKEJJTikvJChMRVgpOiAkKExFWCkvJChMRVgpCiEgCWNwIC1wICQoTEVYKS8kKExF
WCkgJChCSU4pCiAgCiAgJChMRVgpLyQoTEVYKTogJChNTFRPTikgCiAgCWNkICQoTEVYKSAm
JiAkKE1BS0UpIGNsZWFuICYmICQoTUFLRSkKICAKICAkKEJJTikvJChQUk9GKTogJChQUk9G
KS8kKFBST0YpCiEgCWNwIC1wICQoUFJPRikvJChQUk9GKSAkKEJJTikKICAKICAkKFBST0Yp
LyQoUFJPRik6ICQoTUxUT04pIAogIAljZCAkKFBST0YpICYmICQoTUFLRSkgY2xlYW4gJiYg
JChNQUtFKQogIAogICQoQklOKS8kKFlBQ0MpOiAkKFlBQ0MpLyQoWUFDQykKISAJIGNwIC1w
ICQoWUFDQykvJChZQUNDKSAkKEJJTikKICAKICAkKFlBQ0MpLyQoWUFDQyk6ICQoTUxUT04p
ICQoQklOKS8kKExFWCkKICAJY2QgJChZQUNDKSAmJiAkKE1BS0UpIGNsZWFuICYmICQoTUFL
RSkKLS0tIDEwLDM1IC0tLS0KICBQUk9GID0gbWxwcm9mCiAgWUFDQyA9IG1seWFjYwogIFBB
VEggPSAkKEJJTik6JChzaGVsbCBlY2hvICQkUEFUSCkKKyBDUCA9IC9iaW4vY3AgLWZwCiAg
CiAgYWxsOgkkKE1MVE9OKSAkKEJJTikvJChMRVgpICQoQklOKS8kKFBST0YpICQoQklOKS8k
KFlBQ0MpCiAgCWNobW9kIGEtdyAkKElOQykvKgogIAlAZWNobyAnQnVpbGQgb2YgTUx0b24g
c3VjY2VlZGVkJwogIAogICQoQklOKS8kKExFWCk6ICQoTEVYKS8kKExFWCkKISAJJChDUCkg
JChMRVgpLyQoTEVYKSAkKEJJTikKICAKICAkKExFWCkvJChMRVgpOiAkKE1MVE9OKSAKICAJ
Y2QgJChMRVgpICYmICQoTUFLRSkgY2xlYW4gJiYgJChNQUtFKQogIAogICQoQklOKS8kKFBS
T0YpOiAkKFBST0YpLyQoUFJPRikKISAJJChDUCkgJChQUk9GKS8kKFBST0YpICQoQklOKQog
IAogICQoUFJPRikvJChQUk9GKTogJChNTFRPTikgCiAgCWNkICQoUFJPRikgJiYgJChNQUtF
KSBjbGVhbiAmJiAkKE1BS0UpCiAgCiAgJChCSU4pLyQoWUFDQyk6ICQoWUFDQykvJChZQUND
KQohIAkgJChDUCkgJChZQUNDKS8kKFlBQ0MpICQoQklOKQogIAogICQoWUFDQykvJChZQUND
KTogJChNTFRPTikgJChCSU4pLyQoTEVYKQogIAljZCAkKFlBQ0MpICYmICQoTUFLRSkgY2xl
YW4gJiYgJChNQUtFKQoqKioqKioqKioqKioqKioKKioqIDQ5LDkyICoqKioKICAkKENPTVAp
L21sdG9uLm86CiAgCWNkICQoQ09NUCkgJiYgJChNQUtFKQogIAohICQoTElCKS9saWJtbHRv
bi5hOiAkKFJVTikvbGlibWx0b24uYQohIAljcCAtcCAkKFJVTikvbGlibWx0b24uYSAkKExJ
QikKICAKICAkKExJQikvbGlibWx0b24tZ2RiLmE6ICQoUlVOKS9saWJtbHRvbi1nZGIuYQoh
IAljcCAtcCAkKFJVTikvbGlibWx0b24tZ2RiLmEgJChMSUIpCiAgCiAgJChMSUIpL2xpYmdt
cC5hOiAkKFJVTikvbGliZ21wLmEKISAJY3AgLXAgJChSVU4pL2xpYmdtcC5hICQoTElCKQog
IAogICQoUlVOKS9saWJtbHRvbi5hICQoUlVOKS9saWJtbHRvbi1nZGIuYSAkKFJVTikvbGli
Z21wLmE6CiAgCUBlY2hvICdDb21waWxpbmcgTUx0b24gcnVudGltZSBzeXN0ZW0nCiAgCWNk
IHJ1bnRpbWUgJiYgJChNQUtFKQogIAogICQoSU5DKS9jY29kZWdlbi5oOiBpbmNsdWRlL2Nj
b2RlZ2VuLmgKISAJY3AgLXAgaW5jbHVkZS9jY29kZWdlbi5oICQoSU5DKQogIAogICQoSU5D
KS9tbHRvbi5oOiBpbmNsdWRlL21sdG9uLmggJChJTkMpL2Njb2RlZ2VuLmggJChJTkMpL2dj
LmgJCQlcCiAgCQkkKElOQykvaW50LWluZi5oICQoSU5DKS9tbHRvbi1saWIuaCAkKElOQykv
bWx0b24tcG9zaXguaAlcCiAgCQkkKElOQykvbXktbGliLmggJChJTkMpL3g4NmNvZGVnZW4u
aAohIAljcCAtcCBpbmNsdWRlL21sdG9uLmggJChJTkMpCiAgCiAgJChJTkMpL3g4NmNvZGVn
ZW4uaDogaW5jbHVkZS94ODZjb2RlZ2VuLmgKISAJY3AgLXAgaW5jbHVkZS94ODZjb2RlZ2Vu
LmggJChJTkMpCiAgCiAgJChJTkMpL2djLmg6ICQoUlVOKS9nYy5oCiEgCWNwIC1wICQoUlVO
KS9nYy5oICQoSU5DKQogIAogICQoSU5DKS9pbnQtaW5mLmg6ICQoUlVOKS9pbnQtaW5mLmgK
ISAJY3AgLXAgJChSVU4pL2ludC1pbmYuaCAkKElOQykKICAKICAkKElOQykvbWx0b24tbGli
Lmg6ICQoUlVOKS9tbHRvbi1saWIuaAohIAljcCAtcCAkKFJVTikvbWx0b24tbGliLmggJChJ
TkMpCiAgCiAgJChJTkMpL21sdG9uLXBvc2l4Lmg6ICQoUlVOKS9tbHRvbi1wb3NpeC5oCiEg
CWNwIC1wICQoUlVOKS9tbHRvbi1wb3NpeC5oICQoSU5DKQogIAogICQoSU5DKS9teS1saWIu
aDogJChSVU4pL215LWxpYi5oCiEgCWNwIC1wICQoUlVOKS9teS1saWIuaCAkKElOQykKICAK
ICAjIENoYW5nZSB0aGlzIHRvIHRydWUgaWYgeW91IHdhbnQgdG8gYmUgYWJsZSB0byBkZWZ1
bmN0b3JpemUuCiAgIyBUaGlzIGlzIGJ1c3RlZCBhcyBvZiAyMDAwMDcxMi4KLS0tIDUwLDk0
IC0tLS0KICAkKENPTVApL21sdG9uLm86CiAgCWNkICQoQ09NUCkgJiYgJChNQUtFKQogIAoh
ICQoTElCKS9saWJtbHRvbi5hOiAkKFJVTikvbGlibWx0b24uYSAkKFJVTikvbGlibWx0b24t
Z2RiLmEKISAJJChDUCkgJChSVU4pL2xpYm1sdG9uLmEgJChMSUIpCiEgCSQoQ1ApICQoUlVO
KS9saWJtbHRvbi1nZGIuYSAkKExJQikKICAKICAkKExJQikvbGlibWx0b24tZ2RiLmE6ICQo
UlVOKS9saWJtbHRvbi1nZGIuYQohIAkkKENQKSAkKFJVTikvbGlibWx0b24tZ2RiLmEgJChM
SUIpCiAgCiAgJChMSUIpL2xpYmdtcC5hOiAkKFJVTikvbGliZ21wLmEKISAJJChDUCkgJChS
VU4pL2xpYmdtcC5hICQoTElCKQogIAogICQoUlVOKS9saWJtbHRvbi5hICQoUlVOKS9saWJt
bHRvbi1nZGIuYSAkKFJVTikvbGliZ21wLmE6CiAgCUBlY2hvICdDb21waWxpbmcgTUx0b24g
cnVudGltZSBzeXN0ZW0nCiAgCWNkIHJ1bnRpbWUgJiYgJChNQUtFKQogIAogICQoSU5DKS9j
Y29kZWdlbi5oOiBpbmNsdWRlL2Njb2RlZ2VuLmgKISAJJChDUCkgaW5jbHVkZS9jY29kZWdl
bi5oICQoSU5DKQogIAogICQoSU5DKS9tbHRvbi5oOiBpbmNsdWRlL21sdG9uLmggJChJTkMp
L2Njb2RlZ2VuLmggJChJTkMpL2djLmgJCQlcCiAgCQkkKElOQykvaW50LWluZi5oICQoSU5D
KS9tbHRvbi1saWIuaCAkKElOQykvbWx0b24tcG9zaXguaAlcCiAgCQkkKElOQykvbXktbGli
LmggJChJTkMpL3g4NmNvZGVnZW4uaAohIAkkKENQKSBpbmNsdWRlL21sdG9uLmggJChJTkMp
CiAgCiAgJChJTkMpL3g4NmNvZGVnZW4uaDogaW5jbHVkZS94ODZjb2RlZ2VuLmgKISAJJChD
UCkgaW5jbHVkZS94ODZjb2RlZ2VuLmggJChJTkMpCiAgCiAgJChJTkMpL2djLmg6ICQoUlVO
KS9nYy5oCiEgCSQoQ1ApICQoUlVOKS9nYy5oICQoSU5DKQogIAogICQoSU5DKS9pbnQtaW5m
Lmg6ICQoUlVOKS9pbnQtaW5mLmgKISAJJChDUCkgJChSVU4pL2ludC1pbmYuaCAkKElOQykK
ICAKICAkKElOQykvbWx0b24tbGliLmg6ICQoUlVOKS9tbHRvbi1saWIuaAohIAkkKENQKSAk
KFJVTikvbWx0b24tbGliLmggJChJTkMpCiAgCiAgJChJTkMpL21sdG9uLXBvc2l4Lmg6ICQo
UlVOKS9tbHRvbi1wb3NpeC5oCiEgCSQoQ1ApICQoUlVOKS9tbHRvbi1wb3NpeC5oICQoSU5D
KQogIAogICQoSU5DKS9teS1saWIuaDogJChSVU4pL215LWxpYi5oCiEgCSQoQ1ApICQoUlVO
KS9teS1saWIuaCAkKElOQykKICAKICAjIENoYW5nZSB0aGlzIHRvIHRydWUgaWYgeW91IHdh
bnQgdG8gYmUgYWJsZSB0byBkZWZ1bmN0b3JpemUuCiAgIyBUaGlzIGlzIGJ1c3RlZCBhcyBv
ZiAyMDAwMDcxMi4KKioqKioqKioqKioqKioqCioqKiAxMjAsMTM4ICoqKioKICAJbWtkaXIg
LXAgJChUQklOKSAkKFRMSUIpL2xpYiAkKFRMSUIpL2luY2x1ZGUgJChUTUFOKSAmJgkJXAog
IAkoCQkJCQkJCQlcCiAgCQljZCAkKExJQikgJiYJCQkJCQlcCiEgCQljcCAtcCAqLmEgbWx0
b24gd29ybGQubWx0b24gJChUTElCKS9saWIJCQlcCiAgCSkgJiYJCQkJCQkJCVwKICAJKAkJ
CQkJCQkJXAogIAkJY2QgJChST09UKS9pbmNsdWRlICYmCQkJCQlcCiEgCQljcCAtcCAqLmgg
JChUTElCKS9pbmNsdWRlCQkJCVwKICAJKSAmJgkJCQkJCQkJXAogIAkoCQkJCQkJCQlcCiAg
CQljZCAkKEJJTikgJiYJCQkJCQlcCiAgCQlzZWQgIi9ecm9vdD0vczsnLionOyckKFVMSUIp
JzsiIDxtbHRvbiA+JChUQklOKS9tbHRvbiAmJglcCiAgCQljaG1vZCAreCAkKFRCSU4pL21s
dG9uICYmCQkJCVwKISAJCWNwIC1wICQoTEVYKSAkKFBST0YpICQoWUFDQykgJChUQklOKQkJ
CVwKICAJKSAmJgkJCQkJCQkJXAogIAkoCQkJCQkJCQlcCiAgCQljZCAkKFJPT1QpL21hbiAm
JgkJCQkJXAohIAkJY3AgLXAgbWx0b24uMSBtbHByb2YuMSAkKFRNQU4pCQkJCVwKICAJKQot
LS0gMTIyLDE0MCAtLS0tCiAgCW1rZGlyIC1wICQoVEJJTikgJChUTElCKS9saWIgJChUTElC
KS9pbmNsdWRlICQoVE1BTikgJiYJCVwKICAJKAkJCQkJCQkJXAogIAkJY2QgJChMSUIpICYm
CQkJCQkJXAohIAkJJChDUCkgKi5hIG1sdG9uIHdvcmxkLm1sdG9uICQoVExJQikvbGliCQkJ
XAogIAkpICYmCQkJCQkJCQlcCiAgCSgJCQkJCQkJCVwKICAJCWNkICQoUk9PVCkvaW5jbHVk
ZSAmJgkJCQkJXAohIAkJJChDUCkgKi5oICQoVExJQikvaW5jbHVkZQkJCQlcCiAgCSkgJiYJ
CQkJCQkJCVwKICAJKAkJCQkJCQkJXAogIAkJY2QgJChCSU4pICYmCQkJCQkJXAogIAkJc2Vk
ICIvXnJvb3Q9L3M7Jy4qJzsnJChVTElCKSc7IiA8bWx0b24gPiQoVEJJTikvbWx0b24gJiYJ
XAogIAkJY2htb2QgK3ggJChUQklOKS9tbHRvbiAmJgkJCQlcCiEgCQkkKENQKSAkKExFWCkg
JChQUk9GKSAkKFlBQ0MpICQoVEJJTikJCQlcCiAgCSkgJiYJCQkJCQkJCVwKICAJKAkJCQkJ
CQkJXAogIAkJY2QgJChST09UKS9tYW4gJiYJCQkJCVwKISAJCSQoQ1ApIG1sdG9uLjEgbWxw
cm9mLjEgJChUTUFOKQkJCQlcCiAgCSkKT25seSBpbiAvdXNyL2xvY2FsL21sdG9uLTYvc3Jj
L2Jhc2lzLWxpYnJhcnk6IGFsbC5jCmRpZmYgLXcgLWMgLXIgbWx0b24tMjAwMDA5MDYub3Jn
L3NyYy9iYXNpcy1saWJyYXJ5L2ludGVnZXIvaW50LWluZi5zaWcgL3Vzci9sb2NhbC9tbHRv
bi02L3NyYy9iYXNpcy1saWJyYXJ5L2ludGVnZXIvaW50LWluZi5zaWcKKioqIG1sdG9uLTIw
MDAwOTA2Lm9yZy9zcmMvYmFzaXMtbGlicmFyeS9pbnRlZ2VyL2ludC1pbmYuc2lnCUZyaSBB
dWcgIDQgMDA6MDI6MzYgMjAwMAotLS0gL3Vzci9sb2NhbC9tbHRvbi02L3NyYy9iYXNpcy1s
aWJyYXJ5L2ludGVnZXIvaW50LWluZi5zaWcJRnJpIEZlYiAgMiAxNDozOTo1MyAyMDAxCioq
KioqKioqKioqKioqKgoqKiogMiwxMCAqKioqCi0tLSAyLDE3IC0tLS0KICAgICBzaWcKICAg
ICAgICBlcXR5cGUgaW50CiAgCisgICAgICAgZGF0YXR5cGUgcmVwID0KKyAJICBTbWFsbCBv
ZiBXb3JkLndvcmQKKyAJfCBCaWcgb2YgV29yZC53b3JkIFZlY3Rvci52ZWN0b3IKKyAKKyAg
ICAgICB2YWwgcmVwIDogaW50IC0+IHJlcAorIAogICAgICAgIHZhbCAqIDogaW50ICogaW50
IC0+IGludAogICAgICAgIHZhbCArIDogaW50ICogaW50IC0+IGludAogICAgICAgIHZhbCAt
IDogaW50ICogaW50IC0+IGludAorICAgICAgIHZhbCBnY2QgOiBpbnQgKiBpbnQgLT4gaW50
CiAgICAgICAgdmFsIDwgOiBpbnQgKiBpbnQgLT4gYm9vbAogICAgICAgIHZhbCA8PSA6IGlu
dCAqIGludCAtPiBib29sCiAgICAgICAgdmFsID4gOiBpbnQgKiBpbnQgLT4gYm9vbAoqKioq
KioqKioqKioqKioKKioqIDM3LDQyICoqKioKLS0tIDQ0LDUwIC0tLS0KICAgICAgICB2YWwg
dG9MYXJnZTogaW50IC0+IExhcmdlSW50LmludAogICAgICAgIHZhbCB0b1N0cmluZzogaW50
IC0+IHN0cmluZwogICAgICAgIHZhbCB+IDogaW50IC0+IGludAorICAgICAgIHZhbCBzaXpl
IDogaW50IC0+IEludC5pbnQKICAoKiAgICAgIHZhbCBsb2cyOiBpbnQgLT4gSW50LmludAog
ICAqICAgICAgdmFsIG9yYjogKGludCAqIGludCkgLT4gaW50CiAgICogICAgICB2YWwgeG9y
YjogKGludCAqIGludCkgLT4gaW50CmRpZmYgLXcgLWMgLXIgbWx0b24tMjAwMDA5MDYub3Jn
L3NyYy9iYXNpcy1saWJyYXJ5L2ludGVnZXIvaW50LWluZi5zbWwgL3Vzci9sb2NhbC9tbHRv
bi02L3NyYy9iYXNpcy1saWJyYXJ5L2ludGVnZXIvaW50LWluZi5zbWwKKioqIG1sdG9uLTIw
MDAwOTA2Lm9yZy9zcmMvYmFzaXMtbGlicmFyeS9pbnRlZ2VyL2ludC1pbmYuc21sCVRodSBK
dW4gMTUgMDI6MjA6NTMgMjAwMAotLS0gL3Vzci9sb2NhbC9tbHRvbi02L3NyYy9iYXNpcy1s
aWJyYXJ5L2ludGVnZXIvaW50LWluZi5zbWwJRnJpIEZlYiAgMiAxNDozOTo1MyAyMDAxCioq
KioqKioqKioqKioqKgoqKiogMTUsMjAgKioqKgotLS0gMTUsMjMgLS0tLQogICAqKQogIHN0
cnVjdHVyZSBJbnRJbmY6IElOVF9JTkZfRVhUUkEgPQogICAgIHN0cnVjdAorICAgICAgICBk
YXRhdHlwZSByZXAgPQorIAkgICBTbWFsbCBvZiBXb3JkLndvcmQKKyAJIHwgQmlnIG9mIFdv
cmQud29yZCBWZWN0b3IudmVjdG9yCiAgICAgICAgbG9jYWwKICAJIHN0cnVjdHVyZSBQcmlt
ID0gUHJpbWl0aXZlLkludEluZgogIAkgdHlwZSBiaWdJbnQgPSBQcmltLmludAoqKioqKioq
KioqKioqKioKKioqIDEyNSwxMzAgKioqKgotLS0gMTI4LDEzOCAtLS0tCiAgCQkJICAgZW5k
CiAgCQllbmQKICAKKyAJIGZ1biByZXAoeCkgPQorIAkgICAgIGlmIFByaW0uaXNTbWFsbCh4
KSB0aGVuCisgCQkgU21hbGwoc3RyaXBUYWcoeCkpCisgCSAgICAgZWxzZQorIAkJIEJpZyhQ
cmltLnRvVmVjdG9yKHgpKTsKICAJICgqCiAgCSAgKiBDb252ZXJ0IGEgYmlnbEludCB0byBh
IHNtYWxsSW50LCByYWlzaW5nIG92ZXJmbG93IGlmIGl0CiAgCSAgKiBpcyB0b28gYmlnLgoq
KioqKioqKioqKioqKioKKioqIDI0OSwyNTQgKioqKgotLS0gMjU3LDMxNSAtLS0tCiAgCQkJ
ZW5kCiAgCiAgCSAoKgorIAkgICogYmlnSW50IGdjZC4KKyAJICAqKQorIAkgbG9jYWwgZnVu
IGV4cGVuc2l2ZSAobGhzOiBiaWdJbnQsIHJoczogYmlnSW50KTogYmlnSW50ID0KKyAJCSAg
ICAgIGxldCB2YWwgdHNpemUgPSBtYXggKHNpemUgbGhzLCBzaXplIHJocykKKyAJCSAgICAg
IGluIFByaW0uZ2NkIChsaHMsIHJocywgYWxsb2NhdGUgdHNpemUpCisgCQkgICAgICBlbmQK
KyAKKyAJICAgICAgIG9wZW4gSW50OworIAorIAkgICAgICAgZnVuIG1vZDIoeCkgPSBXb3Jk
LnRvSW50WChXb3JkLmFuZGIoV29yZC5mcm9tSW50KHgpLCAwdzEpKTsKKyAJICAgICAgIGZ1
biBkaXYyKHgpID0gV29yZC50b0ludFgoV29yZC4+PihXb3JkLmZyb21JbnQoeCksIDB3MSkp
OworIAorIAkgICAgICAgZnVuIGdjZF9pbnQoMCwgYiwgYWNjKSA9IGIqYWNjCisgCQkgfCBn
Y2RfaW50KGEsIDAsIGFjYykgPSBhKmFjYworIAkJIHwgZ2NkX2ludChhLCAxLCBhY2MpID0g
YWNjCisgCQkgfCBnY2RfaW50KDEsIGIsIGFjYykgPSBhY2MKKyAJCSB8IGdjZF9pbnQoYSwg
YiwgYWNjKSA9CisgCQkgICBpZiAoYSA9IGIpIHRoZW4KKyAJCSAgICAgICBhKmFjYworIAkJ
ICAgZWxzZQorIAkJICAgICAgIGxldCB2YWwgYV8yID0gZGl2MihhKTsKKyAJCQkgICB2YWwg
YV9yMiA9IG1vZDIoYSk7CisgCQkJICAgdmFsIGJfMiA9IGRpdjIoYik7CisgCQkJICAgdmFs
IGJfcjIgPSBtb2QyKGIpOworIAkJICAgICAgIGluCisgCQkJICAgaWYgKGFfcjIgPSAwKSB0
aGVuCisgCQkJICAgICAgIGlmIChiX3IyID0gMCkgdGhlbgorIAkJCQkgICBnY2RfaW50KGFf
MiwgYl8yLCBhY2MrYWNjKQorIAkJCSAgICAgICBlbHNlCisgCQkJCSAgIGdjZF9pbnQoYV8y
LCBiLCBhY2MpCisgCQkJICAgZWxzZQorIAkJCSAgICAgICBpZiAoYl9yMiA9IDApIHRoZW4K
KyAJCQkJICAgZ2NkX2ludChhLCBiXzIsIGFjYykKKyAJCQkgICAgICAgZWxzZQorIAkJCQkg
ICBpZiAoYSA+PSBiKSB0aGVuCisgCQkJCSAgICAgICBnY2RfaW50KGRpdjIoYS1iKSwgYiwg
YWNjKQorIAkJCQkgICBlbHNlCisgCQkJCSAgICAgICBnY2RfaW50KGEsIGRpdjIoYi1hKSwg
YWNjKQorIAkJICAgICAgIGVuZDsKKyAKKyAJIGluIGZ1biBiaWdHY2QgKGxoczogYmlnSW50
LCByaHM6IGJpZ0ludCk6IGJpZ0ludCA9CisgCSAgICAgaWYgUHJpbS5hcmVTbWFsbCAobGhz
LCByaHMpCisgCQkgdGhlbgorIAkJICAgICBsZXQgdmFsIGFuc3YgPSBXb3JkLmZyb21JbnQo
Z2NkX2ludChJbnQuYWJzKFdvcmQudG9JbnRYKHN0cmlwVGFnIGxocykpLCBJbnQuYWJzKFdv
cmQudG9JbnRYKHN0cmlwVGFnIHJocykpLCAxKSkKKyAJCQkgdmFsIGFucyA9IGFkZFRhZyBh
bnN2CisgCQkgICAgIGluCisgCQkJIFByaW0uZnJvbVdvcmQgYW5zCisgCQkgICAgIGVuZAor
IAkgICAgIGVsc2UgCisgCQkgZXhwZW5zaXZlIChsaHMsIHJocykKKyAJIGVuZAorIAorIAkg
KCoKICAJICAqIGJpZ0ludCBhZGRpdGlvbi4KICAJICAqKQogIAkgbG9jYWwgZnVuIGV4cGVu
c2l2ZSAobGhzOiBiaWdJbnQsIHJoczogYmlnSW50KTogYmlnSW50ID0KKioqKioqKioqKioq
KioqCioqKiA3MzEsNzM2ICoqKioKLS0tIDc5Miw3OTkgLS0tLQogIAkJCSAgdGhlbiByZW0o
eCArIG9uZSwgeSkgLSBvbmUgKyB5CiAgCQkgICAgICAgZWxzZSByYWlzZSBEaXYKICAKKyAJ
ICBmdW4gZ2NkKHgsIHkpID0KKyAJICAgICAgYmlnR2NkKHgsIHkpOwogICAgICAgICBlbmQK
ICAKICAgICAgICAgZnVuIGRpdk1vZCh4LCB5KSA9ICh4IGRpdiB5LCB4IG1vZCB5KQoqKioq
KioqKioqKioqKioKKioqIDc3MSw3NzYgKioqKgotLS0gODM0LDg0MiAtLS0tCiAgCSB2YWwg
dG9TdHJpbmcgPSBiaWdUb1N0cmluZwogIAkgdmFsIGZyb21TdHJpbmcgPSBiaWdGcm9tU3Ry
aW5nCiAgCSB2YWwgc2NhbiA9IGJpZ1NjYW4KKyAJIHZhbCBzaXplID0gc2l6ZTsKKyAJIHZh
bCByZXAgPSByZXA7CisgCSB2YWwgZ2NkID0gZ2NkOwogICAgICAgIGVuZAogICAgIGVuZAog
IApkaWZmIC13IC1jIC1yIG1sdG9uLTIwMDAwOTA2Lm9yZy9zcmMvYmFzaXMtbGlicmFyeS9p
by9zdHJlYW0taW8uc2lnIC91c3IvbG9jYWwvbWx0b24tNi9zcmMvYmFzaXMtbGlicmFyeS9p
by9zdHJlYW0taW8uc2lnCioqKiBtbHRvbi0yMDAwMDkwNi5vcmcvc3JjL2Jhc2lzLWxpYnJh
cnkvaW8vc3RyZWFtLWlvLnNpZwlNb24gTWFyIDE1IDIzOjQ2OjUxIDE5OTkKLS0tIC91c3Iv
bG9jYWwvbWx0b24tNi9zcmMvYmFzaXMtbGlicmFyeS9pby9zdHJlYW0taW8uc2lnCUZyaSBG
ZWIgIDIgMTQ6Mzk6NTcgMjAwMQoqKioqKioqKioqKioqKioKKioqIDksMTQgKioqKgotLS0g
OSwxOCAtLS0tCiAgICAgICAgdHlwZSBpbnN0cmVhbQogICAgICAgIHR5cGUgb3V0c3RyZWFt
CiAgIAorICAgICAgIHR5cGUgb3V0X3BvczsKKyAgICAgICB0eXBlIHBvcyA9IGludDsKKyAg
ICAgICB2YWwgZmlsZVBvc091dDogb3V0X3BvcyAtPiBwb3MKKyAKICAoKiAgICAgICB0eXBl
IG91dF9wb3MKICAgKiAgICAgICB0eXBlIHBvcwogICAqICAgICAgIHZhbCBpbnB1dDogaW5z
dHJlYW0gLT4gdmVjdG9yICogaW5zdHJlYW0gCmRpZmYgLXcgLWMgLXIgbWx0b24tMjAwMDA5
MDYub3JnL3NyYy9iYXNpcy1saWJyYXJ5L2lvL3RleHQtaW8uc2lnIC91c3IvbG9jYWwvbWx0
b24tNi9zcmMvYmFzaXMtbGlicmFyeS9pby90ZXh0LWlvLnNpZwoqKiogbWx0b24tMjAwMDA5
MDYub3JnL3NyYy9iYXNpcy1saWJyYXJ5L2lvL3RleHQtaW8uc2lnCVR1ZSBKdW4gMjcgMjM6
MDY6MDEgMjAwMAotLS0gL3Vzci9sb2NhbC9tbHRvbi02L3NyYy9iYXNpcy1saWJyYXJ5L2lv
L3RleHQtaW8uc2lnCUZyaSBGZWIgIDIgMTQ6Mzk6NTcgMjAwMQoqKioqKioqKioqKioqKioK
KioqIDQ2LDU0ICoqKioKICAgICAgICB2YWwgb3V0cHV0U3Vic3RyOiBvdXRzdHJlYW0gKiBz
dWJzdHJpbmcgLT4gdW5pdAogICAgICAgIHZhbCBmbHVzaE91dDogb3V0c3RyZWFtIC0+IHVu
aXQgCiAgICAgICAgdmFsIGNsb3NlT3V0OiBvdXRzdHJlYW0gLT4gdW5pdCAKISAoKiAgICAg
ICB2YWwgZ2V0UG9zT3V0OiBvdXRzdHJlYW0gLT4gU3RyZWFtSU8ub3V0X3BvcyAKISAgKiAg
ICAgICB2YWwgc2V0UG9zT3V0OiBvdXRzdHJlYW0gKiBTdHJlYW1JTy5vdXRfcG9zIC0+IHVu
aXQgCiEgICopCiAgICAgICAgdmFsIG1rT3V0c3RyZWFtOiBTdHJlYW1JTy5vdXRzdHJlYW0g
LT4gb3V0c3RyZWFtCiAgICAgICAgdmFsIGdldE91dHN0cmVhbTogb3V0c3RyZWFtIC0+IFN0
cmVhbUlPLm91dHN0cmVhbQogICAgICAgIHZhbCBzZXRPdXRzdHJlYW06IG91dHN0cmVhbSAq
IFN0cmVhbUlPLm91dHN0cmVhbSAtPiB1bml0Ci0tLSA0Niw1NCAtLS0tCiAgICAgICAgdmFs
IG91dHB1dFN1YnN0cjogb3V0c3RyZWFtICogc3Vic3RyaW5nIC0+IHVuaXQKICAgICAgICB2
YWwgZmx1c2hPdXQ6IG91dHN0cmVhbSAtPiB1bml0IAogICAgICAgIHZhbCBjbG9zZU91dDog
b3V0c3RyZWFtIC0+IHVuaXQgCiEgICAgICAgdmFsIGdldFBvc091dDogb3V0c3RyZWFtIC0+
IFN0cmVhbUlPLm91dF9wb3MgCiEgKCogICAgICB2YWwgc2V0UG9zT3V0OiBvdXRzdHJlYW0g
KiBTdHJlYW1JTy5vdXRfcG9zIC0+IHVuaXQgKikKISAKICAgICAgICB2YWwgbWtPdXRzdHJl
YW06IFN0cmVhbUlPLm91dHN0cmVhbSAtPiBvdXRzdHJlYW0KICAgICAgICB2YWwgZ2V0T3V0
c3RyZWFtOiBvdXRzdHJlYW0gLT4gU3RyZWFtSU8ub3V0c3RyZWFtCiAgICAgICAgdmFsIHNl
dE91dHN0cmVhbTogb3V0c3RyZWFtICogU3RyZWFtSU8ub3V0c3RyZWFtIC0+IHVuaXQKZGlm
ZiAtdyAtYyAtciBtbHRvbi0yMDAwMDkwNi5vcmcvc3JjL2Jhc2lzLWxpYnJhcnkvaW8vdGV4
dC1pby5zbWwgL3Vzci9sb2NhbC9tbHRvbi02L3NyYy9iYXNpcy1saWJyYXJ5L2lvL3RleHQt
aW8uc21sCioqKiBtbHRvbi0yMDAwMDkwNi5vcmcvc3JjL2Jhc2lzLWxpYnJhcnkvaW8vdGV4
dC1pby5zbWwJTW9uIEp1bCAzMSAyMjozMjoxMCAyMDAwCi0tLSAvdXNyL2xvY2FsL21sdG9u
LTYvc3JjL2Jhc2lzLWxpYnJhcnkvaW8vdGV4dC1pby5zbWwJRnJpIEZlYiAgMiAxNDozOTo1
NyAyMDAxCioqKioqKioqKioqKioqKgoqKiogMTcsMjMgKioqKgogICAgICAgIHR5cGUgdmVj
dG9yID0gc3RyaW5nCiAgICAgICAgdHlwZSBlbGVtID0gY2hhcgogIAohICAgICAgIHZhbCBi
dWZTaXplOiBpbnQgPSA0MDk2CiAgCiAgICAgICAgKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKQogICAgICAgICgqICAgICAgICAgICAg
ICAgICAgICAgb3V0c3RyZWFtICAgICAgICAgICAgICAgICAgICAgKikKLS0tIDE3LDIzIC0t
LS0KICAgICAgICB0eXBlIHZlY3RvciA9IHN0cmluZwogICAgICAgIHR5cGUgZWxlbSA9IGNo
YXIKICAKISAgICAgICB2YWwgYnVmU2l6ZTogaW50ID0gNjU1MzYKICAKICAgICAgICAoKi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopCiAg
ICAgICAgKCogICAgICAgICAgICAgICAgICAgICBvdXRzdHJlYW0gICAgICAgICAgICAgICAg
ICAgICAqKQoqKioqKioqKioqKioqKioKKioqIDE0OCwxNTMgKioqKgotLS0gMTQ4LDE2NiAt
LS0tCiAgCQkJCSAgICAgIGNhdXNlID0gZXhufQogICAgICAgIGVuZAogICAgICAgIAorICAg
ICAgIGZ1biBnZXRQb3NPdXQob3V0IGFzIHJlZihPdXR7ZmQsIGJ1ZlN0eWxlLCAuLi59KSkg
PQorIAkgIGxldAorIAkgICAgICB2YWwgc3RyZWFtX3Bvc2l0aW9uID0gUG9zaXguSU8ubHNl
ZWsoZmQsIDAsIFBvc2l4LklPLlNFRUtfQ1VSKTsKKyAKKyAJICAgICAgdmFsIGJ1ZmZlcl9w
b3NpdGlvbiA9CisgCQkgIGNhc2UgYnVmU3R5bGUgb2YKKyAJCSAgICAgIFVuYnVmZmVyZWQg
PT4gMAorIAkJICAgIHwgQnVmZmVyZWQoQnVme3NpemUsIC4uLn0pID0+ICFzaXplCisgCQkg
ICAgfCBMaW5lKEJ1ZntzaXplLCAuLi59KSA9PiAhc2l6ZTsKKyAJICBpbgorIAkgICAgICBi
dWZmZXJfcG9zaXRpb24gKyBzdHJlYW1fcG9zaXRpb24KKyAJICBlbmQ7CisgCiAgICAgICAg
ZnVuIG91dHB1dChvdXQgYXMgcmVmKE91dHtmZCwgY2xvc2VkLCBidWZTdHlsZSwgLi4ufSks
IHM6IHN0cmluZyk6IHVuaXQgPQogIAkgbGV0IHZhbCB2ID0gU3RyaW5nLnRvV29yZDhWZWN0
b3IgcwogIAkgaW4gaWYgIWNsb3NlZAoqKioqKioqKioqKioqKioKKioqIDQ1Myw0NTggKioq
KgotLS0gNDY2LDQ3NyAtLS0tCiAgCSAgICB0eXBlIGluc3RyZWFtID0gbGF6eQogIAogIAkg
ICAgZnVuIG1ha2UgaW5zID0gcmVmKFVuZXZhbCBpbnMpCisgCisgCSAgICB0eXBlIG91dF9w
b3MgID1pbnQ7CisgCQkKKyAJICAgIHR5cGUgcG9zID0gaW50OworIAorIAkgICAgZnVuIGZp
bGVQb3NPdXQoeDogaW50KSA9IHg7CiAgCiAgCSAgICBmdW4gaW5wdXQxJyByID0KICAJICAg
ICAgIGNhc2UgIXIgb2YKZGlmZiAtdyAtYyAtciBtbHRvbi0yMDAwMDkwNi5vcmcvc3JjL2Jh
c2lzLWxpYnJhcnkvbWlzYy9wcmltaXRpdmUuc21sIC91c3IvbG9jYWwvbWx0b24tNi9zcmMv
YmFzaXMtbGlicmFyeS9taXNjL3ByaW1pdGl2ZS5zbWwKKioqIG1sdG9uLTIwMDAwOTA2Lm9y
Zy9zcmMvYmFzaXMtbGlicmFyeS9taXNjL3ByaW1pdGl2ZS5zbWwJV2VkIFNlcCAgNiAwMjow
MzozNSAyMDAwCi0tLSAvdXNyL2xvY2FsL21sdG9uLTYvc3JjL2Jhc2lzLWxpYnJhcnkvbWlz
Yy9wcmltaXRpdmUuc21sCUZyaSBGZWIgIDIgMTQ6NDA6MDAgMjAwMQoqKioqKioqKioqKioq
KioKKioqIDEzOSwxNDUgKioqKgogIAkgICAgICAgCiAgCSAgICB2YWwgYXNjVGltZSA9IF9m
ZmkgIkRhdGVfYXNjdGltZSI6IHVuaXQgLT4gY3N0cmluZzsKICAJICAgIHZhbCBnbVRpbWUg
PSBfZmZpICJEYXRlX2dtdGltZSI6IHRpbWUgcmVmIC0+IHVuaXQ7CiEgCSAgICB2YWwgbG9j
YWxPZmZzZXQgPSBfZmZpICJEYXRlX2xvY2FsT2Zmc2V0IjogdW5pdCAtPiBpbnQ7CiAgCSAg
ICB2YWwgbG9jYWxUaW1lID0gX2ZmaSAiRGF0ZV9sb2NhbHRpbWUiOiB0aW1lIHJlZiAtPiB1
bml0OwogIAkgICAgdmFsIG1rVGltZSA9IF9mZmkgIkRhdGVfbWt0aW1lIjogdW5pdCAtPiB0
aW1lOwogIAkgICAgdmFsIHN0cmZUaW1lID0KLS0tIDEzOSwxNDUgLS0tLQogIAkgICAgICAg
CiAgCSAgICB2YWwgYXNjVGltZSA9IF9mZmkgIkRhdGVfYXNjdGltZSI6IHVuaXQgLT4gY3N0
cmluZzsKICAJICAgIHZhbCBnbVRpbWUgPSBfZmZpICJEYXRlX2dtdGltZSI6IHRpbWUgcmVm
IC0+IHVuaXQ7CiEgCSAgICB2YWwgbG9jYWxPZmZzZXQgPSBfZmZpICJEYXRlX2xvY2Fsb2Zm
c2V0IjogdW5pdCAtPiBpbnQ7CiAgCSAgICB2YWwgbG9jYWxUaW1lID0gX2ZmaSAiRGF0ZV9s
b2NhbHRpbWUiOiB0aW1lIHJlZiAtPiB1bml0OwogIAkgICAgdmFsIG1rVGltZSA9IF9mZmkg
IkRhdGVfbWt0aW1lIjogdW5pdCAtPiB0aW1lOwogIAkgICAgdmFsIHN0cmZUaW1lID0KKioq
KioqKioqKioqKioqCioqKiAxOTMsMTk4ICoqKioKLS0tIDE5MywxOTkgLS0tLQogIAkgICAg
dmFsICogPSBfcHJpbSAiSW50SW5mX211bCI6IGludCAqIGludCAqIHdvcmQgYXJyYXkgLT4g
aW50OwogIAkgICAgdmFsICsgPSBfcHJpbSAiSW50SW5mX2FkZCI6IGludCAqIGludCAqIHdv
cmQgYXJyYXkgLT4gaW50OwogIAkgICAgdmFsIC0gPSBfcHJpbSAiSW50SW5mX3N1YiI6IGlu
dCAqIGludCAqIHdvcmQgYXJyYXkgLT4gaW50OworIAkgICAgdmFsIGdjZCA9IF9mZmkgIklu
dEluZl9nY2QiOiBpbnQgKiBpbnQgKiB3b3JkIGFycmF5IC0+IGludDsKICAJICAgIHZhbCBh
cmVTbWFsbCA9IF9wcmltICJJbnRJbmZfYXJlU21hbGwiOiBpbnQgKiBpbnQgLT4gYm9vbDsK
ICAJICAgIHZhbCBjb21wYXJlID0gX2ZmaSAiSW50SW5mX2NvbXBhcmUiOiBpbnQgKiBpbnQg
LT4gSW50LmludDsKICAJICAgIHZhbCBmcm9tQXJyYXkgPSBfcHJpbSAiSW50SW5mX2Zyb21B
cnJheSI6IHdvcmQgYXJyYXkgLT4gaW50OwpkaWZmIC13IC1jIC1yIG1sdG9uLTIwMDAwOTA2
Lm9yZy9zcmMvYmFzaXMtbGlicmFyeS9wb3NpeC9wcmltaXRpdmUuc21sIC91c3IvbG9jYWwv
bWx0b24tNi9zcmMvYmFzaXMtbGlicmFyeS9wb3NpeC9wcmltaXRpdmUuc21sCioqKiBtbHRv
bi0yMDAwMDkwNi5vcmcvc3JjL2Jhc2lzLWxpYnJhcnkvcG9zaXgvcHJpbWl0aXZlLnNtbAlU
aHUgSnVsIDI3IDAyOjAxOjQ4IDIwMDAKLS0tIC91c3IvbG9jYWwvbWx0b24tNi9zcmMvYmFz
aXMtbGlicmFyeS9wb3NpeC9wcmltaXRpdmUuc21sCUZyaSBGZWIgIDIgMTQ6NDA6MDcgMjAw
MQoqKioqKioqKioqKioqKioKKioqIDQyNCw0MzAgKioqKgogIAkgICAgICAgZW5kCiAgCiAg
CSAgICB2YWwgY3Rlcm1pZCA9IF9mZmkgIlBvc2l4X1Byb2NFbnZfY3Rlcm1pZCIgOiB1bml0
IC0+IGNzdHJpbmc7CiEgCSAgICB2YWwgZW52aXJvbiA9IF9mZmkgIlBvc2l4X1Byb2NFbnZf
ZW52aXJvbiIgOiBjc3RyaW5nQXJyYXk7CiAgCSAgICB2YWwgZ2V0ZW52ID0gX2ZmaSAiUG9z
aXhfUHJvY0Vudl9nZXRlbnYiIDogbnVsbFN0cmluZyAtPiBjc3RyaW5nOwogIAkgICAgdmFs
IGlzYXR0eSA9IF9mZmkgIlBvc2l4X1Byb2NFbnZfaXNhdHR5IiA6IGZkIC0+IGJvb2w7CiAg
CSAgICB2YWwgc3lzY29uZiA9IF9mZmkgIlBvc2l4X1Byb2NFbnZfc3lzY29uZiIgOiBpbnQg
LT4gaW50OwotLS0gNDI0LDQzMCAtLS0tCiAgCSAgICAgICBlbmQKICAKICAJICAgIHZhbCBj
dGVybWlkID0gX2ZmaSAiUG9zaXhfUHJvY0Vudl9jdGVybWlkIiA6IHVuaXQgLT4gY3N0cmlu
ZzsKISAJICAgIHZhbCBlbnZpcm9uID0gX2ZmaSAiUG9zaXhfUHJvY0Vudl9lbnZpcm9uIiA6
IHVuaXQgLT4gY3N0cmluZ0FycmF5OwogIAkgICAgdmFsIGdldGVudiA9IF9mZmkgIlBvc2l4
X1Byb2NFbnZfZ2V0ZW52IiA6IG51bGxTdHJpbmcgLT4gY3N0cmluZzsKICAJICAgIHZhbCBp
c2F0dHkgPSBfZmZpICJQb3NpeF9Qcm9jRW52X2lzYXR0eSIgOiBmZCAtPiBib29sOwogIAkg
ICAgdmFsIHN5c2NvbmYgPSBfZmZpICJQb3NpeF9Qcm9jRW52X3N5c2NvbmYiIDogaW50IC0+
IGludDsKZGlmZiAtdyAtYyAtciBtbHRvbi0yMDAwMDkwNi5vcmcvc3JjL2Jhc2lzLWxpYnJh
cnkvcG9zaXgvcHJvYy1lbnYuc21sIC91c3IvbG9jYWwvbWx0b24tNi9zcmMvYmFzaXMtbGli
cmFyeS9wb3NpeC9wcm9jLWVudi5zbWwKKioqIG1sdG9uLTIwMDAwOTA2Lm9yZy9zcmMvYmFz
aXMtbGlicmFyeS9wb3NpeC9wcm9jLWVudi5zbWwJV2VkIEp1bCAxOSAwNToyNToyNSAyMDAw
Ci0tLSAvdXNyL2xvY2FsL21sdG9uLTYvc3JjL2Jhc2lzLWxpYnJhcnkvcG9zaXgvcHJvYy1l
bnYuc21sCUZyaSBGZWIgIDIgMTQ6NDA6MDcgMjAwMQoqKioqKioqKioqKioqKioKKioqIDEw
NCwxMTAgKioqKgogIAkgZW5kCiAgCiAgICAgICAgbG9jYWwKISAJIHZhbCBlID0gQy5DU1Mu
dG9MaXN0IFByaW0uZW52aXJvbgogICAgICAgIGluCiAgCSBmdW4gZW52aXJvbigpID0gZQog
ICAgICAgIGVuZAotLS0gMTA0LDExMCAtLS0tCiAgCSBlbmQKICAKICAgICAgICBsb2NhbAoh
IAkgdmFsIGUgPSBDLkNTUy50b0xpc3QgKFByaW0uZW52aXJvbigpKQogICAgICAgIGluCiAg
CSBmdW4gZW52aXJvbigpID0gZQogICAgICAgIGVuZApkaWZmIC13IC1jIC1yIG1sdG9uLTIw
MDAwOTA2Lm9yZy9zcmMvYmluL21sdG9uIC91c3IvbG9jYWwvbWx0b24tNi9zcmMvYmluL21s
dG9uCioqKiBtbHRvbi0yMDAwMDkwNi5vcmcvc3JjL2Jpbi9tbHRvbglUdWUgRmViICA2IDEx
OjE3OjIyIDIwMDEKLS0tIC91c3IvbG9jYWwvbWx0b24tNi9zcmMvYmluL21sdG9uCVdlZCBO
b3YgMTQgMjE6NDc6MDMgMjAwMQoqKioqKioqKioqKioqKioKKioqIDUsMTEgKioqKgogIHJv
b3Q9Jy9ob21lL3N3ZWVrcy9tbHRvbicKICBpbmNsdWRlPSIkcm9vdC9pbmNsdWRlIgogIGxp
Yj0iJHJvb3QvbGliIgohIGdjYz0nZ2NjJwogIG5qPSdzbWwnCiAgbWx0b249IiRsaWIvbWx0
b24iCiAgd29ybGQ9IiRsaWIvd29ybGQubWx0b24iCi0tLSA1LDExIC0tLS0KICByb290PScv
aG9tZS9zd2Vla3MvbWx0b24nCiAgaW5jbHVkZT0iJHJvb3QvaW5jbHVkZSIKICBsaWI9IiRy
b290L2xpYiIKISBnY2M9L3Vzci9sb2NhbC5yaG9uZS9iaW4ueDg2L2Jpbi9nY2MKICBuaj0n
c21sJwogIG1sdG9uPSIkbGliL21sdG9uIgogIHdvcmxkPSIkbGliL3dvcmxkLm1sdG9uIgoq
KioqKioqKioqKioqKioKKioqIDIwLDI4ICoqKioKICAjCUhFQVBfU1VGRklYPXg4Ni1saW51
eAogICNmaQogIG5qSGVhcD0iJGxpYi9tbHRvbi4kSEVBUF9TVUZGSVgiCiEgYXJncz0iJHJv
b3QgJGdjYyAtdyAtZm9taXQtZnJhbWUtcG9pbnRlciAtZm5vLXN0cmVuZ3RoLXJlZHVjZSAt
bTQ4NglcCiEgCS1tYWxpZ24tbG9vcHM9MiAtbWFsaWduLWp1bXBzPTIgLW1hbGlnbi1mdW5j
dGlvbnM9MgkJXAohIAlFTkQgLUkkaW5jbHVkZSAtaW1sdG9uLmggLUwkbGliIC1sZ21wIC1s
bSAkQCIKICAKICAjIFJ1biBlaXRoZXIgdGhlIE1MdG9uIGNvbXBpbGVkIHZlcnNpb24gb3Ig
dGhlIFNNTC9OSiBjb21waWxlZCB2ZXJzaW9uLAogICMgd2hpY2hldmVyIGlzIG5ld2VyLgot
LS0gMjAsMzAgLS0tLQogICMJSEVBUF9TVUZGSVg9eDg2LWxpbnV4CiAgI2ZpCiAgbmpIZWFw
PSIkbGliL21sdG9uLiRIRUFQX1NVRkZJWCIKISAKISBhcmdzPSIkcm9vdCAkZ2NjIC13IC1m
b21pdC1mcmFtZS1wb2ludGVyIC1mbm8tc3RyZW5ndGgtcmVkdWNlIC1tYXJjaD1wZW50aXVt
cHJvIFwKISAJLWZyZWdtb3ZlIC1mcmVnLXN0cnVjdC1yZXR1cm4gXAohIAktbWFsaWduLWxv
b3BzPTIgLW1hbGlnbi1qdW1wcz0yIC1tYWxpZ24tZnVuY3Rpb25zPTUgLWZzY2hlZHVsZS1p
bnNuczIgLWZzY2hlZHVsZS1pbnNucyAtbXdpZGUtbXVsdGlwbHkgXAohIAlFTkQgLUkvdXNy
L3NyYy9saW51eC9pbmNsdWRlIC1JJGluY2x1ZGUgLWltbHRvbi5oIC1MJGxpYiAtbGdtcCAt
bG0gJEAiCiAgCiAgIyBSdW4gZWl0aGVyIHRoZSBNTHRvbiBjb21waWxlZCB2ZXJzaW9uIG9y
IHRoZSBTTUwvTkogY29tcGlsZWQgdmVyc2lvbiwKICAjIHdoaWNoZXZlciBpcyBuZXdlci4K
T25seSBpbiAvdXNyL2xvY2FsL21sdG9uLTYvc3JjOiBjb3JlCmRpZmYgLXcgLWMgLXIgbWx0
b24tMjAwMDA5MDYub3JnL3NyYy9pbmNsdWRlL2Njb2RlZ2VuLmggL3Vzci9sb2NhbC9tbHRv
bi02L3NyYy9pbmNsdWRlL2Njb2RlZ2VuLmgKKioqIG1sdG9uLTIwMDAwOTA2Lm9yZy9zcmMv
aW5jbHVkZS9jY29kZWdlbi5oCVR1ZSBBdWcgMTUgMjE6MDY6MzQgMjAwMAotLS0gL3Vzci9s
b2NhbC9tbHRvbi02L3NyYy9pbmNsdWRlL2Njb2RlZ2VuLmgJVGh1IEF1ZyAgOSAxNToyMDoy
MyAyMDAxCioqKioqKioqKioqKioqKgoqKiogOSwyMiAqKioqCiAgCiAgI2RlZmluZSBHbG9i
YWxzKGMsIGQsIGksIHAsIHUsIG5yKQkJCQkJCVwKICAJLyogZ2NTdGF0ZSBjYW4ndCBiZSBz
dGF0aWMgYmVjYXVzZSBzdHVmZiBpbiBtbHRvbi1saWIuYyByZWZlcnMgdG8gaXQgKi8JXAog
IAlzdHJ1Y3QgR0Nfc3RhdGUgZ2NTdGF0ZTsJCQkJCQlcCiAgCXN0YXRpYyBpbnQgc2l6ZVJl
czsJCQkJCQkJXAogIAlzdGF0aWMgcG9pbnRlciBzZXJpYWxpemVSZXM7CQkJCQkJXAogIAlz
dGF0aWMgcG9pbnRlciBkZXNlcmlhbGl6ZVJlczsJCQkJCQlcCiAgCXN0YXRpYyBwb2ludGVy
IHN0YWNrUmVzOwkJCQkJCVwKICAJc3RhdGljIHN0cnVjdCBpbnRJbmZSZXNfdCAqaW50SW5m
UmVzOwkJCQkJXAotIAlzdGF0aWMgdm9pZCAoKm5leHRDaHVuaykoKTsJCQkJCQlcCi0gCXN0
YXRpYyBpbnQgbmV4dEZ1bjsJCQkJCQkJXAogIAlzdGF0aWMgY2hhciBnbG9iYWx1Y2hhcltj
XTsJCQkJCQlcCiAgCXN0YXRpYyBkb3VibGUgZ2xvYmFsZG91YmxlW2RdOwkJCQkJCVwKICAJ
c3RhdGljIGludCBnbG9iYWxpbnRbaV07CQkJCQkJXAotLS0gOSwyMSAtLS0tCiAgCiAgI2Rl
ZmluZSBHbG9iYWxzKGMsIGQsIGksIHAsIHUsIG5yKQkJCQkJCVwKICAJLyogZ2NTdGF0ZSBj
YW4ndCBiZSBzdGF0aWMgYmVjYXVzZSBzdHVmZiBpbiBtbHRvbi1saWIuYyByZWZlcnMgdG8g
aXQgKi8JXAorICAgICAgICAgc3RhdGljIGludCBuZXh0RnVuOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIAlzdHJ1Y3QgR0Nfc3Rh
dGUgZ2NTdGF0ZTsJCQkJCQlcCiAgCXN0YXRpYyBpbnQgc2l6ZVJlczsJCQkJCQkJXAogIAlz
dGF0aWMgcG9pbnRlciBzZXJpYWxpemVSZXM7CQkJCQkJXAogIAlzdGF0aWMgcG9pbnRlciBk
ZXNlcmlhbGl6ZVJlczsJCQkJCQlcCiAgCXN0YXRpYyBwb2ludGVyIHN0YWNrUmVzOwkJCQkJ
CVwKICAJc3RhdGljIHN0cnVjdCBpbnRJbmZSZXNfdCAqaW50SW5mUmVzOwkJCQkJXAogIAlz
dGF0aWMgY2hhciBnbG9iYWx1Y2hhcltjXTsJCQkJCQlcCiAgCXN0YXRpYyBkb3VibGUgZ2xv
YmFsZG91YmxlW2RdOwkJCQkJCVwKICAJc3RhdGljIGludCBnbG9iYWxpbnRbaV07CQkJCQkJ
XAoqKioqKioqKioqKioqKioKKioqIDY4LDczICoqKioKLS0tIDY3LDc3IC0tLS0KICAJCWlm
ICh4ID09IDApIGdvdG8gbDsJCVwKICAJfSB3aGlsZSAoMCkKICAKKyAjZGVmaW5lIEJOWih4
LCBsKQkJCQlcCisgCWRvIHsJCQkJCVwKKyAJCWlmICh4KSBnb3RvIGw7CQkgICAgICAgIFwK
KyAJfSB3aGlsZSAoMCkKKyAKICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tICovCiAgLyogICAgICAgICAgICAgICAgICAgICAgIENodW5r
ICAgICAgICAgICAgICAgICAgICAgICAqLwogIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKioqKioqKioqKioqKioqCioqKiA3Niwx
MDQgKioqKgogIAogICNkZWZpbmUgQ2h1bmtwKG4pICYoQ2h1bmtOYW1lKG4pKQogIAogICNk
ZWZpbmUgRGVjbGFyZUNodW5rKG4pCQkJCVwKISAJc3RhdGljIHZvaWQgQ2h1bmtOYW1lKG4p
KCkKICAKICAjZGVmaW5lIENodW5rKG4pCQkJCVwKISAJc3RhdGljIHZvaWQgQ2h1bmtOYW1l
KG4pKCkgewkJXAogIAkJY2hhciAqc3RhY2tUb3A7CQkJXAogIAkJcG9pbnRlciBmcm9udGll
cgogIAogICNkZWZpbmUgQ2h1bmtTd2l0Y2gJCQkJXAogIAkJQ2FjaGVHQygpOwkJCVwKISAJ
CXRvcDoJCQkJXAohIAkJc3dpdGNoIChuZXh0RnVuKSB7CiAgCiAgI2RlZmluZSBFbmRDaHVu
awkJCQkJCVwKICAJCWRlZmF1bHQ6CQkJCQlcCiAgCQkJLyogaW50ZXJjaHVuayByZXR1cm4g
Ki8JCQlcCiAgCQkJaWYgKElOU1RSVU1FTlQpCQkJCVwKICAJCQkJTUx0b25fbnVtSW50ZXJS
ZXR1cm5zKys7CVwKISAJCQluZXh0Q2h1bmsgPSBuZXh0Q2h1bmtzW25leHRGdW5dOwlcCiAg
CQkJbGVhdmVDaHVuazoJCQkJXAogIAkJCQlGbHVzaEdDKCk7CQkJXAohIAkJCQlyZXR1cm47
CQkJCVwKISAJCX0gLyogZW5kIHN3aXRjaCAobmV4dEZ1bikgKi8JCQlcCiAgCX0gLyogZW5k
IGNodW5rICovCiAgCiAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSAqLwotLS0gODAsMTE2IC0tLS0KICAKICAjZGVmaW5lIENodW5rcChu
KSAmKENodW5rTmFtZShuKSkKICAKKyBzdHJ1Y3QgY29udCB7CisgICB2b2lkICpuZXh0Q2h1
bms7CisgfTsKKyAKICAjZGVmaW5lIERlY2xhcmVDaHVuayhuKQkJCQlcCiEgCXN0YXRpYyBz
dHJ1Y3QgY29udCBDaHVua05hbWUobikodm9pZCkKICAKICAjZGVmaW5lIENodW5rKG4pCQkJ
CVwKISAgICAgICAgIERlY2xhcmVDaHVuayhuKSB7ICAgICAgICAgICAgICAgICAgICAgICBc
CiEgICAgICAgICAgICAgICAgIHN0cnVjdCBjb250IGNvbnQ7ICAgICAgICAgICAgICAgXAoh
ICAgICAgICAgICAgICAgICBpbnQgbF9uZXh0RnVuID0gbmV4dEZ1bjsgICAgICAgIFwKICAJ
CWNoYXIgKnN0YWNrVG9wOwkJCVwKICAJCXBvaW50ZXIgZnJvbnRpZXIKICAKICAjZGVmaW5l
IENodW5rU3dpdGNoCQkJCVwKICAJCUNhY2hlR0MoKTsJCQlcCiEgCQl3aGlsZSgxKSB7dG9w
OgkJCQlcCiEgCQlzd2l0Y2ggKGxfbmV4dEZ1bikgewogIAogICNkZWZpbmUgRW5kQ2h1bmsJ
CQkJCQlcCiAgCQlkZWZhdWx0OgkJCQkJXAogIAkJCS8qIGludGVyY2h1bmsgcmV0dXJuICov
CQkJXAogIAkJCWlmIChJTlNUUlVNRU5UKQkJCQlcCiAgCQkJCU1MdG9uX251bUludGVyUmV0
dXJucysrOwlcCiEgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKISAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnQubmV4dENodW5rID0gKHZvaWQqKW5leHRDaHVua3NbbmV4dEZ1bj1sX25leHRGdW5dO1wK
ICAgICAgICAgICAgICAgICAgICAgICAgIGxlYXZlQ2h1bms6ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAogIAkJCSAgRmx1c2hHQygpOwkJCSAgICAgICAgXAohIAkJCSAgcmV0
dXJuKGNvbnQpOwkJCQlcCiEgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKISAJCX19IC8qIGVuZCBzd2l0Y2ggKG5l
eHRGdW4pICovCQkJXAogIAl9IC8qIGVuZCBjaHVuayAqLwogIAogIC8qIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKioqKioqKioqKioq
KioqCioqKiAxMDcsMTEyICoqKioKLS0tIDExOSwxMjYgLS0tLQogIAogICNkZWZpbmUgTWFp
bih1ZmgsIGZzLCBibCwgbWZzLCBtZmksIG1nLCBtYywgbWwpCQkJCVwKICBpbnQgbWFpbihp
bnQgYXJnYywgY2hhciAqKmFyZ3YpIHsJCQkJCVwKKyAgICAgICAgIHN0cnVjdCBjb250IGNv
bnQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgICBzdHJ1Y3QgY29udCAoKm5leHRDaHVuaykodm9pZCk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCiAgCWdjU3RhdGUudXNlRml4ZWRIZWFwID0gdWZoOwkJCQkJXAogIAln
Y1N0YXRlLmZyb21TaXplID0gZnM7CQkJCQkJXAogIAlnY1N0YXRlLmJ5dGVzTGl2ZSA9IGJs
OwkJCQkJCVwKKioqKioqKioqKioqKioqCioqKiAxMzUsMTQ0ICoqKioKICAJCW5leHRDaHVu
ayA9IG5leHRDaHVua3NbbmV4dEZ1bl07CQkJXAogIAl9CQkJCQkJCQlcCiAgCS8qIFRyYW1w
b2xpbmUgKi8JCQkJCQlcCiAgCXdoaWxlICgxKSB7CQkJCQkJCVwKICAgCQlpZiAoSU5TVFJV
TUVOVCkJCQkJCQlcCiAgCQkJTUx0b25fbnVtVHJhbXBvbGluZXMrKzsJCQkJXAohIAkJKCpu
ZXh0Q2h1bmspKCk7CQkJCQkJXAogIAl9CQkJCQkJCQlcCiAgfQogIAotLS0gMTQ5LDE2NiAt
LS0tCiAgCQluZXh0Q2h1bmsgPSBuZXh0Q2h1bmtzW25leHRGdW5dOwkJCVwKICAJfQkJCQkJ
CQkJXAogIAkvKiBUcmFtcG9saW5lICovCQkJCQkJXAorICAgICAgICAgY29udC5uZXh0Q2h1
bmsgPSAodm9pZCopbmV4dENodW5rO1wKICAJd2hpbGUgKDEpIHsJCQkJCQkJXAogICAJCWlm
IChJTlNUUlVNRU5UKQkJCQkJCVwKICAJCQlNTHRvbl9udW1UcmFtcG9saW5lcysrOwkJCQlc
CiEgCQljb250PSgqKHN0cnVjdCBjb250KCopKHZvaWQpKWNvbnQubmV4dENodW5rKSgpOyBc
CiEgCQljb250PSgqKHN0cnVjdCBjb250KCopKHZvaWQpKWNvbnQubmV4dENodW5rKSgpOyBc
CiEgCQljb250PSgqKHN0cnVjdCBjb250KCopKHZvaWQpKWNvbnQubmV4dENodW5rKSgpOyBc
CiEgCQljb250PSgqKHN0cnVjdCBjb250KCopKHZvaWQpKWNvbnQubmV4dENodW5rKSgpOyBc
CiEgCQljb250PSgqKHN0cnVjdCBjb250KCopKHZvaWQpKWNvbnQubmV4dENodW5rKSgpOyBc
CiEgCQljb250PSgqKHN0cnVjdCBjb250KCopKHZvaWQpKWNvbnQubmV4dENodW5rKSgpOyBc
CiEgCQljb250PSgqKHN0cnVjdCBjb250KCopKHZvaWQpKWNvbnQubmV4dENodW5rKSgpOyBc
CiEgCQljb250PSgqKHN0cnVjdCBjb250KCopKHZvaWQpKWNvbnQubmV4dENodW5rKSgpOyBc
CiAgCX0JCQkJCQkJCVwKICB9CiAgCioqKioqKioqKioqKioqKgoqKiogMTU0LDE2MCAqKioq
CiAgCiAgI2RlZmluZSBGYXJKdW1wKG4sIGwpCSAJCQlcCiAgCWRvIHsJCQkJCVwKISAJCVBy
ZXBGYXJKdW1wKG4sIGwpOyAJCVwKICAJCWdvdG8gbGVhdmVDaHVuazsJCVwKICAJfSB3aGls
ZSAoMCkKICAKLS0tIDE3NiwxODMgLS0tLQogIAogICNkZWZpbmUgRmFySnVtcChuLCBsKQkg
CQkJXAogIAlkbyB7CQkJCQlcCiEgICAgICAgICAgICAgICAgICAgY29udC5uZXh0Q2h1bmsg
PSAodm9pZCopQ2h1bmtOYW1lKG4pO1wKISAgICAgICAgICAgICAgICAgICBuZXh0RnVuID0g
bCAjIyBfaW5kZXg7ICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgZ290byBsZWF2ZUNo
dW5rOyAgICAgICAgICAgICAgXAogIAl9IHdoaWxlICgwKQogIAoqKioqKioqKioqKioqKioK
KioqIDIyNiwyMzIgKioqKgogIAlkbyB7CQkJCQlcCiAgCQlpZiAoSU5TVFJVTUVOVCkJCQlc
CiAgCQkJTUx0b25fbnVtUmV0dXJucysrOwlcCiEgCQluZXh0RnVuID0gKihpbnQqKXN0YWNr
VG9wOwlcCiAgCQlnb3RvIHRvcDsJCQlcCiAgCX0gd2hpbGUgKDApCiAgCi0tLSAyNDksMjU1
IC0tLS0KICAJZG8gewkJCQkJXAogIAkJaWYgKElOU1RSVU1FTlQpCQkJXAogIAkJCU1MdG9u
X251bVJldHVybnMrKzsJXAohIAkJbF9uZXh0RnVuID0gKihpbnQqKXN0YWNrVG9wOwlcCiAg
CQlnb3RvIHRvcDsJCQlcCiAgCX0gd2hpbGUgKDApCiAgCioqKioqKioqKioqKioqKgoqKiog
MjM2LDI0MiAqKioqCiAgI2RlZmluZSBSYWlzZSgpCQkJCQkJCVwKICAJZG8gewkJCQkJCQlc
CiAgCQlzdGFja1RvcCA9IFN0YWNrQm90dG9tICsgRXhuU3RhY2s7CQlcCiEgCQluZXh0RnVu
ID0gKihpbnQqKXN0YWNrVG9wOwkJCVwKICAJCWdvdG8gdG9wOwkJCQkJXAogIAl9IHdoaWxl
ICgwKQogIAotLS0gMjU5LDI2NSAtLS0tCiAgI2RlZmluZSBSYWlzZSgpCQkJCQkJCVwKICAJ
ZG8gewkJCQkJCQlcCiAgCQlzdGFja1RvcCA9IFN0YWNrQm90dG9tICsgRXhuU3RhY2s7CQlc
CiEgCQlsX25leHRGdW4gPSAqKGludCopc3RhY2tUb3A7CQkJXAogIAkJZ290byB0b3A7CQkJ
CQlcCiAgCX0gd2hpbGUgKDApCiAgCioqKioqKioqKioqKioqKgoqKiogMzE5LDMyOSAqKioq
CiAgCWRvIHsJCQkJCQkJCQlcCiAgCQlpZiAoSU5TVFJVTUVOVCkJCQkJCQkJXAogIAkJCU1M
dG9uX251bUxpbWl0Q2hlY2tzKys7CQkJCQlcCiEgCQlpZiAoR0NfRVZFUllfQ0hFQ0sJCQkJ
CQlcCiAgCQkJfHwgZnJvbnRpZXIgKyAoYikgPiBnY1N0YXRlLmxpbWl0CQkJXAohIAkJCXx8
IChvdGhlcikpIHsJCQkJCQlcCiAgCQkJdWludCBieXRlcyA9IGI7CQkJCQkJXAohIAkJCWlm
IChnY1N0YXRlLm1lc3NhZ2VzKQkJCQkJXAogIAkJCQlmcHJpbnRmKHN0ZGVyciwgIiVzICVk
OiBHQ1xuIiwJCQlcCiAgCQkJCQkJX19GSUxFX18sIF9fTElORV9fKTsJCVwKICAJCQlJbnZv
a2VSdW50aW1lKEdDX2djKCZnY1N0YXRlLCBieXRlcywJCQlcCi0tLSAzNDIsMzUzIC0tLS0K
ICAJZG8gewkJCQkJCQkJCVwKICAJCWlmIChJTlNUUlVNRU5UKQkJCQkJCQlcCiAgCQkJTUx0
b25fbnVtTGltaXRDaGVja3MrKzsJCQkJCVwKISAJCWlmICgoR0NfRVZFUllfQ0hFQ0sJCQkJ
CQlcCiAgCQkJfHwgZnJvbnRpZXIgKyAoYikgPiBnY1N0YXRlLmxpbWl0CQkJXAohIAkJCXx8
IChvdGhlcikpKVwKISAJCXtcCiAgCQkJdWludCBieXRlcyA9IGI7CQkJCQkJXAohIAkJCWlm
IChHQ19FVkVSWV9DSEVDSyAmJiBnY1N0YXRlLm1lc3NhZ2VzKQkJCQkJXAogIAkJCQlmcHJp
bnRmKHN0ZGVyciwgIiVzICVkOiBHQ1xuIiwJCQlcCiAgCQkJCQkJX19GSUxFX18sIF9fTElO
RV9fKTsJCVwKICAJCQlJbnZva2VSdW50aW1lKEdDX2djKCZnY1N0YXRlLCBieXRlcywJCQlc
Ck9ubHkgaW4gL3Vzci9sb2NhbC9tbHRvbi02L3NyYy9saWIvbWx0b24vYmFzaWM6IENNCk9u
bHkgaW4gL3Vzci9sb2NhbC9tbHRvbi02L3NyYy9saWIvbWx0b24vZGlyZWN0ZWQtZ3JhcGg6
IENNCk9ubHkgaW4gL3Vzci9sb2NhbC9tbHRvbi02L3NyYy9saWIvbWx0b24vZW52OiBDTQpP
bmx5IGluIC91c3IvbG9jYWwvbWx0b24tNi9zcmMvbGliL21sdG9uL2hlYXA6IENNCk9ubHkg
aW4gL3Vzci9sb2NhbC9tbHRvbi02L3NyYy9saWIvbWx0b24vcGVydmFzaXZlOiBDTQpPbmx5
IGluIC91c3IvbG9jYWwvbWx0b24tNi9zcmMvbGliL21sdG9uL3NldDogQ00KT25seSBpbiAv
dXNyL2xvY2FsL21sdG9uLTYvc3JjL2xpYi9tbHRvbi1zdHVicy1pbi1zbWxuajogQ00KT25s
eSBpbiAvdXNyL2xvY2FsL21sdG9uLTYvc3JjL2xpYi9tbHlhY2M6IENNCk9ubHkgaW4gL3Vz
ci9sb2NhbC9tbHRvbi02L3NyYy9saWIvc21sbmo6IENNCk9ubHkgaW4gL3Vzci9sb2NhbC9t
bHRvbi02L3NyYy9tbGxleDogbWxsZXgKT25seSBpbiAvdXNyL2xvY2FsL21sdG9uLTYvc3Jj
L21scHJvZjogbWxwcm9mCmRpZmYgLXcgLWMgLXIgbWx0b24tMjAwMDA5MDYub3JnL3NyYy9t
bHRvbi9NYWtlZmlsZSAvdXNyL2xvY2FsL21sdG9uLTYvc3JjL21sdG9uL01ha2VmaWxlCioq
KiBtbHRvbi0yMDAwMDkwNi5vcmcvc3JjL21sdG9uL01ha2VmaWxlCVdlZCBPY3QgMTggMTg6
NDY6MDkgMjAwMAotLS0gL3Vzci9sb2NhbC9tbHRvbi02L3NyYy9tbHRvbi9NYWtlZmlsZQlU
dWUgQXVnICA3IDE3OjQzOjU1IDIwMDEKKioqKioqKioqKioqKioqCioqKiAyLDEzICoqKioK
ICBCSU4gPSAkKFJPT1QpL2JpbgogIExJQiA9ICQoUk9PVCkvbGliCiAgU1JDID0gJChST09U
KS9zcmMKISBNTFRPTiA9IG1sdG9uCiEgRkxBR1MgPSAtdiAtaW5saW5lIDMwIC1uby1wb2x5
dmFyaWFuY2UKICBQQVRIID0gJChCSU4pOiQoc2hlbGwgZWNobyAkJFBBVEgpCiAgCiAgbWx0
b24ubzogbWx0b24uYwohIAl0aW1lIGdjYyAtSS4uL2luY2x1ZGUgLUkgLi4vcnVudGltZSAt
TzEJCQkJXAogIAkJLUROT0RFQlVHCQkJCQkJXAogIAkJLWZvbWl0LWZyYW1lLXBvaW50ZXIg
LWZuby1zdHJlbmd0aC1yZWR1Y2UgLXcgLW00ODYJXAogIAkJLW1hbGlnbi1sb29wcz0yIC1t
YWxpZ24tanVtcHM9MiAtbWFsaWduLWZ1bmN0aW9ucz0yCVwKLS0tIDIsMTYgLS0tLQogIEJJ
TiA9ICQoUk9PVCkvYmluCiAgTElCID0gJChST09UKS9saWIKICBTUkMgPSAkKFJPT1QpL3Ny
YwohIE1MVE9OID0gJChST09UKS9iaW4vbWx0b24KISBGTEFHUyA9IC12IC1pbmxpbmUgMTAg
LW5vLXBvbHl2YXJpYW5jZSAtY29hbGVzY2UgMjAwMAogIFBBVEggPSAkKEJJTik6JChzaGVs
bCBlY2hvICQkUEFUSCkKICAKICBtbHRvbi5vOiBtbHRvbi5jCiEgCWVjaG8gTk9XIFBBVENI
IE1GUyAoKzgpLCB0aGVuIHR5cGU6IG1ha2UgY29udDEKISAKISBjb250MToKISAJdGltZSBn
Y2MgLUlgZGlybmFtZSAkKE1MVE9OKWAvLi4vaW5jbHVkZSAtSWBkaXJuYW1lICQoTUxUT04p
YC8uLi9zcmMvcnVudGltZSAtTzEJCQkJXAogIAkJLUROT0RFQlVHCQkJCQkJXAogIAkJLWZv
bWl0LWZyYW1lLXBvaW50ZXIgLWZuby1zdHJlbmd0aC1yZWR1Y2UgLXcgLW00ODYJXAogIAkJ
LW1hbGlnbi1sb29wcz0yIC1tYWxpZ24tanVtcHM9MiAtbWFsaWduLWZ1bmN0aW9ucz0yCVwK
KioqKioqKioqKioqKioqCioqKiAzOCw1MSAqKioqCiAgIyBNYW5hZ2VyIChDTSkgaW5zdGFs
bGVkLiAgWW91IG1heSBuZWVkIHRvIHJlcGxhY2UgdGhlIGZvbGxvd2luZyB3aXRoCiAgIyAn
c21sLWNtJy4KICAjCiEgU01MCT0gc21sCiAgCiAgLlBIT05ZOiBuai1tbHRvbgogIG5qLW1s
dG9uOgogIAkoCQkJCQkJCQkJXAogIAkJZWNobyAnU01Mb2ZOSi5JbnRlcm5hbHMuR0MubWVz
c2FnZXMgZmFsc2U7JzsJCQlcCiEgCQllY2hvICdDTS52ZXJib3NlKFNPTUUgZmFsc2UpOyc7
CQkJCQlcCiEgCQllY2hvICdDTS5tYWtlJ1wnJ3tncm91cCA9ICJtbHRvbi5jbSIsIGZvcmNl
X3JlbGluayA9IHRydWV9Oyc7CVwKICAJCWVjaG8gJ01haW4uZXhwb3J0TkooIiQoU1JDKS9i
YXNpcy1saWJyYXJ5IiwgIiQoTElCKS9tbHRvbiIpOycJXAogIAkpIHwgJChTTUwpCiAgCi0t
LSA0MSw1NCAtLS0tCiAgIyBNYW5hZ2VyIChDTSkgaW5zdGFsbGVkLiAgWW91IG1heSBuZWVk
IHRvIHJlcGxhY2UgdGhlIGZvbGxvd2luZyB3aXRoCiAgIyAnc21sLWNtJy4KICAjCiEgU01M
CT0gL3Vzci9sb2NhbC9zbWwtMTEwLjkuMS9iaW4vc21sCiAgCiAgLlBIT05ZOiBuai1tbHRv
bgogIG5qLW1sdG9uOgogIAkoCQkJCQkJCQkJXAogIAkJZWNobyAnU01Mb2ZOSi5JbnRlcm5h
bHMuR0MubWVzc2FnZXMgZmFsc2U7JzsJCQlcCiEgCQllY2hvICdDTS52ZXJib3NlKFNPTUUg
dHJ1ZSk7JzsJCQkJCVwKISAJCWVjaG8gJ0NNLm1ha2UnXCcne2ZvcmNlX3JlbGluaz10cnVl
LGdyb3VwPSJtbHRvbi5jbSJ9Oyc7CVwKICAJCWVjaG8gJ01haW4uZXhwb3J0TkooIiQoU1JD
KS9iYXNpcy1saWJyYXJ5IiwgIiQoTElCKS9tbHRvbiIpOycJXAogIAkpIHwgJChTTUwpCiAg
Ck9ubHkgaW4gL3Vzci9sb2NhbC9tbHRvbi02L3NyYy9tbHRvbi9hc3Q6IENNCk9ubHkgaW4g
L3Vzci9sb2NhbC9tbHRvbi02L3NyYy9tbHRvbi9hdG9tczogQ00KZGlmZiAtdyAtYyAtciBt
bHRvbi0yMDAwMDkwNi5vcmcvc3JjL21sdG9uL2F0b21zL3ByaW0uZnVuIC91c3IvbG9jYWwv
bWx0b24tNi9zcmMvbWx0b24vYXRvbXMvcHJpbS5mdW4KKioqIG1sdG9uLTIwMDAwOTA2Lm9y
Zy9zcmMvbWx0b24vYXRvbXMvcHJpbS5mdW4JRnJpIFNlcCAgMSAwMjoyODoyNyAyMDAwCi0t
LSAvdXNyL2xvY2FsL21sdG9uLTYvc3JjL21sdG9uL2F0b21zL3ByaW0uZnVuCUZyaSBGZWIg
IDIgMTQ6MzM6NTUgMjAwMQoqKioqKioqKioqKioqKioKKioqIDUzMyw1MzggKioqKgotLS0g
NTMzLDU5NCAtLS0tCiAgCSBlbmQKICAgICBlbmQKICAKKyAoKgorIGZ1biAnYSBjaGVja0Fw
cHtwcmltLCB0YXJncywgYXJncywKKyAgICAgICAgICAgICAgICAgY29uLCBkZXR1cGxlT3B0
LCBkZWFycm93T3B0LCBlcXVhbHMsIGlzVW5pdH0KKyAgICA6ICdhIG9wdGlvbiA9CisgICAg
bGV0CisgICAgICAgdmFsIGVycm9yID0gTk9ORQorICAgICAgIHZhbCBTY2hlbWUuVHt0eXZh
cnMsIHR5fSA9IHNjaGVtZSBwcmltCisgICAgaW4KKyAgICAgICBpZiBMaXN0Lmxlbmd0aCB0
YXJncyA8PiBMaXN0Lmxlbmd0aCB0eXZhcnMgdGhlbgorICAgICAgICAgICBsZXQKKyAgICAg
ICAgICAgaW4KKyAgICAgICAgICAgICAgIFRleHRJTy5wcmludCgicHJpbWFwcCBlcnJvciwg
I3RhcmdzPSIgXiBJbnQudG9TdHJpbmcoTGlzdC5sZW5ndGggdGFyZ3MpIF4KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiLCAjdHl2YXJzPSIgXiBJbnQudG9TdHJpbmcoTGlzdC5s
ZW5ndGggdHl2YXJzKSBeICJcbiIpOworICAgICAgICAgICAgICAgZXJyb3IKKyAgICAgICAg
ICAgZW5kCisgICAgICAgZWxzZQorICAgICAgICAgIGxldAorICAgICAgICAgICAgIHZhbCBl
bnYgPSBMaXN0LnppcCh0eXZhcnMsIHRhcmdzKQorICAgICAgICAgICAgIGZ1biB2YXIgYSA9
CisgICAgICAgICAgICAgICAgY2FzZSBMaXN0LnBlZWsoZW52LCBmbiAoYScsIF8pID0+Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHl2YXIuZXF1YWxzKGEsIGEnKSkgb2YK
KyAgICAgICAgICAgICAgICAgICBOT05FID0+IEVycm9yLmJ1ZyAicHJpbSBzY2hlbWUgd2l0
aCBmcmVlIHR5dmFyIgorICAgICAgICAgICAgICAgICB8IFNPTUUoXywgdCkgPT4gdAorICAg
ICAgICAgICAgIHZhbCB0eSA9IFR5cGUuaG9te3R5ID0gdHksIHZhciA9IHZhciwgY29uID0g
Y29ufQorICAgICAgICAgIGluCisgICAgICAgICAgICAgY2FzZSBudW1BcmdzIHByaW0gb2YK
KyAgICAgICAgICAgICAgICBOT05FID0+CisgICAgICAgICAgICAgICAgICAgIChjYXNlIGFy
Z3Mgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICBbXSA9PiBTT01FIHR5CisgICAgICAg
ICAgICAgICAgICAgICAgIHwgXyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
ZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRleHRJTy5wcmludCgicHJpbWFwcCBlcnJvciwgbm8gbnVtQXJn
c1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlbmQpCisgICAgICAgICAgICAgIHwgU09NRSBuID0+
CisgICAgICAgICAgICAgICAgICAgY2FzZSBkZWFycm93T3B0IHR5IG9mCisgICAgICAgICAg
ICAgICAgICAgICAgTk9ORSA9PiBlcnJvcgorICAgICAgICAgICAgICAgICAgICB8IFNPTUUo
YXJnVHlwZSwgcmVzdWx0KSA9PgorICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgKG4s
IGFyZ3MpIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDAsIFtdKSA9PiBTT01F
IHJlc3VsdAorICAgICAgICAgICAgICAgICAgICAgICAgICB8ICgxLCBbYXJnXSkgPT4KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBlcXVhbHMoYXJnLCBhcmdUeXBlKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gU09NRSByZXN1bHQKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGVycm9yCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgXyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNh
c2UgZGV0dXBsZU9wdCBhcmdUeXBlIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTk9ORSA9PiBlcnJvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
IFNPTUUgYXJnVHlwZXMgPT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiBMaXN0LmVxdWFscyhhcmdzLCBhcmdUeXBlcywgZXF1YWxzKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gU09NRSByZXN1bHQKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGVycm9yCisgICAgICAgICAgZW5k
CisgICAgZW5kCisgKikKKyAKICBmdW4gcmV0dXJuc0Jvb2wgcCA9CiAgICAgY2FzZSBUeXBl
LmRlYXJyb3dPcHQoU2NoZW1lLnR5KHNjaGVtZSBwKSkgb2YKICAgICAgICBTT01FKF8sIFR5
cGUuQ29uKHR5Y29uLCBfKSkgPT4gVHljb24uZXF1YWxzKHR5Y29uLCBUeWNvbi5ib29sKQoq
KioqKioqKioqKioqKioKKioqIDU3OSw1OTAgKioqKgotLS0gNjM1LDY2MyAtLS0tCiAgICAg
ICAgZnVuIHc4dyhmLCB3ODogV29yZC50LCB3OiBXb3JkLnQpID0gd29yZDgoZihXb3JkOC5m
cm9tV29yZCB3OCwgdykpCiAgICAgICAgZnVuIHc4cChwLCB3MSwgdzIpID0gYm9vbChwKFdv
cmQ4LmZyb21Xb3JkIHcxLCBXb3JkOC5mcm9tV29yZCB3MikpCiAgICAgICAgZnVuIHc4byhm
LCB3MSwgdzIpID0gd29yZDgoZihXb3JkOC5mcm9tV29yZCB3MSwgV29yZDguZnJvbVdvcmQg
dzIpKQorIAorICAgICAgIGZ1biBub19vdmVyZmxvdyhmKSh4LCB5KSA9CisgCSAgbGV0Cisg
CSAgICAgIHZhbCB4JyA9IEludEluZi5mcm9tSW50KHgpCisgCSAgICAgIHZhbCB5JyA9IElu
dEluZi5mcm9tSW50KHkpCisgCSAgICAgIHZhbCByID0gZih4JywgeScpCisgCSAgaW4KKyAJ
ICAgICAgSW50SW5mLnRvSW50KHIpCisgCSAgZW5kOworIAogICAgICAgIHZhbCBlcXVhbCA9
CiAgCSBmbiAoQ2hhciBjMSwgQ2hhciBjMikgPT4gYm9vbChDaGFyLmVxdWFscyhjMSwgYzIp
KQogIAkgIHwgKEludCBpMSwgSW50IGkyKSA9PiBib29sKEludC5lcXVhbHMoaTEsIGkyKSkK
ICAJICB8IChTdHJpbmcgczEsIFN0cmluZyBzMikgPT4gYm9vbChTdHJpbmcuZXF1YWxzKHMx
LCBzMikpCiAgCSAgfCAoV29yZCB3MSwgV29yZCB3MikgPT4gYm9vbChXb3JkLmVxdWFscyh3
MSwgdzIpKQogIAkgIHwgXyA9PiBOT05FCisgCisgICAgICAgdmFsIGVxID0KKyAJIGZuIChD
aGFyIGMxLCBDaGFyIGMyKSA9PiBib29sKENoYXIuZXF1YWxzKGMxLCBjMikpCisgCSAgfCAo
SW50IGkxLCBJbnQgaTIpID0+IGJvb2woSW50LmVxdWFscyhpMSwgaTIpKQorIAkgIHwgKFdv
cmQgdzEsIFdvcmQgdzIpID0+IGJvb2woV29yZC5lcXVhbHModzEsIHcyKSkKKyAJICB8IF8g
PT4gTk9ORQorIAogICAgIGluIGNhc2UgKG5hbWUgcCwgTGlzdC5tYXAoYXJncywgQ29uc3Qu
bm9kZSkpIG9mCiAgICAgICAgKEJ5dGVfYnl0ZVRvQ2hhciwgW1dvcmQgd10pID0+IGNoYXIo
V29yZC50b0NoYXIgdykKICAgICAgfCAoQnl0ZV9jaGFyVG9CeXRlLCBbQ2hhciBjXSkgPT4g
d29yZDgoV29yZDguZnJvbUNoYXIgYykKKioqKioqKioqKioqKioqCioqKiA1OTQsNjAyICoq
KioKICAgICAgfCAoQ2hhcl9nZSwgW0NoYXIgYzEsIENoYXIgYzJdKSA9PiBwcmVkKENoYXIu
Pj0sIGMxLCBjMikKICAgICAgfCAoQ2hhcl9jaHIsIFtJbnQgaV0pID0+IGNoYXIoQ2hhci5m
cm9tSW50IGkpCiAgICAgIHwgKENoYXJfb3JkLCBbQ2hhciBjXSkgPT4gaW50KENoYXIudG9J
bnQgYykKISAgICAgfCAoSW50X211bCwgW0ludCBpMSwgSW50IGkyXSkgPT4gaW8oSW50Lios
IGkxLCBpMikKISAgICAgfCAoSW50X2FkZCwgW0ludCBpMSwgSW50IGkyXSkgPT4gaW8oSW50
LissIGkxLCBpMikKISAgICAgfCAoSW50X3N1YiwgW0ludCBpMSwgSW50IGkyXSkgPT4gaW8o
SW50Li0sIGkxLCBpMikKICAgICAgfCAoSW50X2x0LCBbSW50IGkxLCBJbnQgaTJdKSA9PiBw
cmVkKEludC48LCBpMSwgaTIpCiAgICAgIHwgKEludF9sZSwgW0ludCBpMSwgSW50IGkyXSkg
PT4gcHJlZChJbnQuPD0sIGkxLCBpMikKICAgICAgfCAoSW50X2d0LCBbSW50IGkxLCBJbnQg
aTJdKSA9PiBwcmVkKEludC4+LCBpMSwgaTIpCi0tLSA2NjcsNjc1IC0tLS0KICAgICAgfCAo
Q2hhcl9nZSwgW0NoYXIgYzEsIENoYXIgYzJdKSA9PiBwcmVkKENoYXIuPj0sIGMxLCBjMikK
ICAgICAgfCAoQ2hhcl9jaHIsIFtJbnQgaV0pID0+IGNoYXIoQ2hhci5mcm9tSW50IGkpCiAg
ICAgIHwgKENoYXJfb3JkLCBbQ2hhciBjXSkgPT4gaW50KENoYXIudG9JbnQgYykKISAgICAg
fCAoSW50X211bCwgW0ludCBpMSwgSW50IGkyXSkgPT4gaW8obm9fb3ZlcmZsb3coSW50SW5m
LiogKSwgaTEsIGkyKQohICAgICB8IChJbnRfYWRkLCBbSW50IGkxLCBJbnQgaTJdKSA9PiBp
byhub19vdmVyZmxvdyhJbnRJbmYuKyksIGkxLCBpMikKISAgICAgfCAoSW50X3N1YiwgW0lu
dCBpMSwgSW50IGkyXSkgPT4gaW8obm9fb3ZlcmZsb3coSW50SW5mLi0pLCBpMSwgaTIpCiAg
ICAgIHwgKEludF9sdCwgW0ludCBpMSwgSW50IGkyXSkgPT4gcHJlZChJbnQuPCwgaTEsIGky
KQogICAgICB8IChJbnRfbGUsIFtJbnQgaTEsIEludCBpMl0pID0+IHByZWQoSW50Ljw9LCBp
MSwgaTIpCiAgICAgIHwgKEludF9ndCwgW0ludCBpMSwgSW50IGkyXSkgPT4gcHJlZChJbnQu
PiwgaTEsIGkyKQoqKioqKioqKioqKioqKioKKioqIDYwNiw2MTIgKioqKgogICAgICB8IChJ
bnRfcXVvdCwgW0ludCBpMSwgSW50IGkyXSkgPT4gaW8oSW50LnF1b3QsIGkxLCBpMikKICAg
ICAgfCAoSW50X3JlbSwgW0ludCBpMSwgSW50IGkyXSkgPT4gaW8oSW50LnJlbSwgaTEsIGky
KQogICAgICB8IChJbnRfbmVnLCBbSW50IGldKSA9PiBpbnQofiBpKQohICAgICB8IChNTHRv
bl9lcSwgW2MxLCBjMl0pID0+IGVxdWFsKGMxLCBjMikKICAgICAgfCAoTUx0b25fZXF1YWws
IFtjMSwgYzJdKSA9PiBlcXVhbChjMSwgYzIpCiAgICAgIHwgKFN0cmluZ19lcXVhbCwgW1N0
cmluZyBzMSwgU3RyaW5nIHMyXSkgPT4gYm9vbChTdHJpbmcuZXF1YWxzKHMxLCBzMikpCiAg
ICAgIHwgKFN0cmluZ19zaXplLCBbU3RyaW5nIHNdKSA9PiBpbnQoU3RyaW5nLnNpemUgcykK
LS0tIDY3OSw2ODUgLS0tLQogICAgICB8IChJbnRfcXVvdCwgW0ludCBpMSwgSW50IGkyXSkg
PT4gaW8oSW50LnF1b3QsIGkxLCBpMikKICAgICAgfCAoSW50X3JlbSwgW0ludCBpMSwgSW50
IGkyXSkgPT4gaW8oSW50LnJlbSwgaTEsIGkyKQogICAgICB8IChJbnRfbmVnLCBbSW50IGld
KSA9PiBpbnQofiBpKQohICAgICB8IChNTHRvbl9lcSwgW2MxLCBjMl0pID0+IGVxKGMxLCBj
MikKICAgICAgfCAoTUx0b25fZXF1YWwsIFtjMSwgYzJdKSA9PiBlcXVhbChjMSwgYzIpCiAg
ICAgIHwgKFN0cmluZ19lcXVhbCwgW1N0cmluZyBzMSwgU3RyaW5nIHMyXSkgPT4gYm9vbChT
dHJpbmcuZXF1YWxzKHMxLCBzMikpCiAgICAgIHwgKFN0cmluZ19zaXplLCBbU3RyaW5nIHNd
KSA9PiBpbnQoU3RyaW5nLnNpemUgcykKT25seSBpbiAvdXNyL2xvY2FsL21sdG9uLTYvc3Jj
L21sdG9uL2JhY2tlbmQvYy1jb2RlZ2VuOiBDTQpkaWZmIC13IC1jIC1yIG1sdG9uLTIwMDAw
OTA2Lm9yZy9zcmMvbWx0b24vYmFja2VuZC9jLWNvZGVnZW4vYy1jb2RlZ2VuLmZ1biAvdXNy
L2xvY2FsL21sdG9uLTYvc3JjL21sdG9uL2JhY2tlbmQvYy1jb2RlZ2VuL2MtY29kZWdlbi5m
dW4KKioqIG1sdG9uLTIwMDAwOTA2Lm9yZy9zcmMvbWx0b24vYmFja2VuZC9jLWNvZGVnZW4v
Yy1jb2RlZ2VuLmZ1bglXZWQgT2N0IDE4IDE4OjQ2OjMxIDIwMDAKLS0tIC91c3IvbG9jYWwv
bWx0b24tNi9zcmMvbWx0b24vYmFja2VuZC9jLWNvZGVnZW4vYy1jb2RlZ2VuLmZ1bglGcmkg
TWFyIDIzIDExOjUzOjMxIDIwMDEKKioqKioqKioqKioqKioqCioqKiAyODcsMjk2ICoqKioK
ICAJIAogICAgICAgIGZ1biBvdXRwdXQodCwgcHJpbnQsIGdvdG9MYWJlbDogTGFiZWwudCAt
PiB1bml0LCBtYXliZVByaW50TGFiZWwpID0KICAJIGxldAohIAkgICAgZnVuIGlmZih0ZXN0
LCBhLCBiKSA9CiAgCSAgICAgICAoQy5jYWxsKCJcdEJaIiwgW3Rlc3QsIExhYmVsLnRvU3Ry
aW5nIGJdLCBwcmludCkKICAJCTsgZ290b0xhYmVsIGEKICAJCTsgbWF5YmVQcmludExhYmVs
IGIpCiAgCSBpbgogIAkgICAgY2FzZSB0CiAgCSAgICAgICBvZiBCdWcgPT4gKHByaW50ICJc
dCI7IEMuYnVnKCJjcHMgbWFjaGluZSIsIHByaW50KSkKLS0tIDI4NywzMDQgLS0tLQogIAkg
CiAgICAgICAgZnVuIG91dHB1dCh0LCBwcmludCwgZ290b0xhYmVsOiBMYWJlbC50IC0+IHVu
aXQsIG1heWJlUHJpbnRMYWJlbCkgPQogIAkgbGV0CiEgCSAgICBmdW4gaWZmJyh0ZXN0LCBh
LCBiKSA9CiAgCQkoQy5jYWxsKCJcdEJaIiwgW3Rlc3QsIExhYmVsLnRvU3RyaW5nIGJdLCBw
cmludCkKICAJCSA7IGdvdG9MYWJlbCBhCiAgCQkgOyBtYXliZVByaW50TGFiZWwgYikKKyAK
KyAJICAgIGZ1biBpZmYodGVzdCwgYSwgYikgPQorIAkJaWYgdHJ1ZSB0aGVuCisgCQkgICAg
KEMuY2FsbCgiXHRCTloiLCBbdGVzdCwgTGFiZWwudG9TdHJpbmcgYV0sIHByaW50KQorIAkJ
ICAgICA7IGdvdG9MYWJlbCBiCisgCQkgICAgIDsgbWF5YmVQcmludExhYmVsIGEpCisgCQll
bHNlCisgCQkgICAgaWZmJyh0ZXN0LCBhLCBiKQogIAkgaW4KICAJICAgIGNhc2UgdAogIAkg
ICAgICAgb2YgQnVnID0+IChwcmludCAiXHQiOyBDLmJ1ZygiY3BzIG1hY2hpbmUiLCBwcmlu
dCkpCioqKioqKioqKioqKioqKgoqKiogMjk5LDMwNSAqKioqCi0tLSAzMDcsMzE1IC0tLS0K
ICAJICAgICB8IFN3aXRjaHt0ZXN0LCBjYXNlcywgZGVmYXVsdH0gPT4KICAJCSAgbGV0IAog
IAkJICAgICB2YWwgdGVzdCA9IE9wZXJhbmQudG9TdHJpbmcgdGVzdAorIAogIAkJICAgICBm
dW4gYm9vbCh0LCBmKSA9IGlmZih0ZXN0LCB0LCBmKQorIAogIAkJICAgICBmdW4gc3dpdGNo
KGNhc2VzLCBsKSA9CiAgCQkJKHByaW50ICJzd2l0Y2ggKCIKICAJCQkgOyBwcmludCB0ZXN0
CioqKioqKioqKioqKioqKgoqKiogMzI0LDMzMCAqKioqCiAgCQkJIHwgKF8sICAgICAgICAg
ICAgICAgIFNPTUUgbCkgPT4gc3dpdGNoKGNhc2VzLCBsKQogIAkJICBlbmQKICAJICAgICB8
IFN3aXRjaElQe3Rlc3QsIGludCwgcG9pbnRlcn0gPT4KISAJCSAgaWZmKGNvbmNhdFsiSXNJ
bnQoIiwgT3BlcmFuZC50b1N0cmluZyB0ZXN0LCAiKSJdLAogIAkJICAgICAgaW50LCBwb2lu
dGVyKQogIAkgICAgIHwgTmVhckp1bXAge2xhYmVsfSA9PiBnb3RvTGFiZWwgbGFiZWwKICAJ
ICAgICB8IEZhckp1bXAge2NodW5rTGFiZWwsIGxhYmVsfSA9PgotLS0gMzM0LDM0MCAtLS0t
CiAgCQkJIHwgKF8sICAgICAgICAgICAgICAgIFNPTUUgbCkgPT4gc3dpdGNoKGNhc2VzLCBs
KQogIAkJICBlbmQKICAJICAgICB8IFN3aXRjaElQe3Rlc3QsIGludCwgcG9pbnRlcn0gPT4K
ISAJCSAgaWZmJyhjb25jYXRbIklzSW50KCIsIE9wZXJhbmQudG9TdHJpbmcgdGVzdCwgIiki
XSwKICAJCSAgICAgIAlpbnQsIHBvaW50ZXIpCiAgCSAgICAgfCBOZWFySnVtcCB7bGFiZWx9
ID0+IGdvdG9MYWJlbCBsYWJlbAogIAkgICAgIHwgRmFySnVtcCB7Y2h1bmtMYWJlbCwgbGFi
ZWx9ID0+CioqKioqKioqKioqKioqKgoqKiogNDIyLDQzMyAqKioqCiAgCQkJIG9mIE1hbnkg
PT4gKHByaW50IChMYWJlbC50b1N0cmluZyBsKTsKICAJCQkJICAgICBwcmludCAiOlxuIikK
ICAJCSAgICAgICB8IF8gPT4gKCk7Ci0gCQkJICAgIHByaW50KGxldCBvcGVuIExheW91dAot
IAkJCQkgIGluIHRvU3RyaW5nCi0gCQkJCSAgICAgKHNlcVtzdHIgIi8qIGxpdmU6ICIsCi0g
CQkJCQkgIExpc3QubGF5b3V0IFJlZ2lzdGVyLmxheW91dCBsaXZlLAotIAkJCQkJICBzdHIg
IiAqL1xuIl0pCi0gCQkJCSAgZW5kKTsKICAJCQkgICAgQXJyYXkuZm9yZWFjaChzdGF0ZW1l
bnRzLAogIAkJCQkJICBmbiBzID0+IFN0YXRlbWVudC5vdXRwdXQocywgCiAgCQkJCQkJCQkg
ICBwcmludCkpOwotLS0gNDMyLDQzNyAtLS0tCk9ubHkgaW4gL3Vzci9sb2NhbC9tbHRvbi02
L3NyYy9tbHRvbi9iYWNrZW5kOiBmb28ucwpPbmx5IGluIC91c3IvbG9jYWwvbWx0b24tNi9z
cmMvbWx0b24vYmFja2VuZC9tYWNoaW5lOiAjY2h1bmtpZnkuZnVuIwpPbmx5IGluIC91c3Iv
bG9jYWwvbWx0b24tNi9zcmMvbWx0b24vYmFja2VuZC9tYWNoaW5lOiBDTQpkaWZmIC13IC1j
IC1yIG1sdG9uLTIwMDAwOTA2Lm9yZy9zcmMvbWx0b24vYmFja2VuZC9tYWNoaW5lL2JhY2tl
bmQuZnVuIC91c3IvbG9jYWwvbWx0b24tNi9zcmMvbWx0b24vYmFja2VuZC9tYWNoaW5lL2Jh
Y2tlbmQuZnVuCioqKiBtbHRvbi0yMDAwMDkwNi5vcmcvc3JjL21sdG9uL2JhY2tlbmQvbWFj
aGluZS9iYWNrZW5kLmZ1bglTYXQgQXVnIDI2IDAxOjMxOjI5IDIwMDAKLS0tIC91c3IvbG9j
YWwvbWx0b24tNi9zcmMvbWx0b24vYmFja2VuZC9tYWNoaW5lL2JhY2tlbmQuZnVuCUZyaSBG
ZWIgIDIgMTQ6MzQ6MzUgMjAwMQoqKioqKioqKioqKioqKioKKioqIDQyNSw0MzUgKioqKgog
IAkJICAgIFByaW0uTmFtZS5NTHRvbl9ib2d1cyA9PgogIAkJICAgICAgIHNldChjYXNlIE10
eXBlLmRlc3QodG9NdHlwZSB0eSkgb2YKICAJCQkgICAgICBNdHlwZS5DaGFyID0+IE9wZXJh
bmQuY2hhciAjIlwwMDAiCiEgKCoJCQkgICAgfCBNdHlwZS5Eb3VibGUgPT4gT3BlcmFuZC5m
bG9hdCAiMC4wIiAqKQogIAkJCSAgICB8IE10eXBlLkludCA9PiBPcGVyYW5kLmludCAwCiAg
CQkJICAgIHwgTXR5cGUuVWludCA9PiBPcGVyYW5kLnVpbnQgMHcwCiAgCQkJICAgIHwgTXR5
cGUuUG9pbnRlciA9PiBPcGVyYW5kLnBvaW50ZXIgMQohIAkJCSAgICB8IF8gPT4gRXJyb3Iu
YnVnICJib2d1cyBub3QgaW1wbGVtZW50ZWQgZm9yIHR5cGUiKQogIAkJICB8IF8gPT4gKCkp
CiAgCSAgIHwgUHJpbUV4cC5TZWxlY3QgXyA9PiBub25FeHBhbnNpdmUoKQogIAkgICB8IFBy
aW1FeHAuVHVwbGUgW10gPT4gYm9ndXMoKQotLS0gNDI1LDQzNSAtLS0tCiAgCQkgICAgUHJp
bS5OYW1lLk1MdG9uX2JvZ3VzID0+CiAgCQkgICAgICAgc2V0KGNhc2UgTXR5cGUuZGVzdCh0
b010eXBlIHR5KSBvZgogIAkJCSAgICAgIE10eXBlLkNoYXIgPT4gT3BlcmFuZC5jaGFyICMi
XDAwMCIKISAJCQkgICAgfCBNdHlwZS5Eb3VibGUgPT4gT3BlcmFuZC5mbG9hdCAiMC4wIgog
IAkJCSAgICB8IE10eXBlLkludCA9PiBPcGVyYW5kLmludCAwCiAgCQkJICAgIHwgTXR5cGUu
VWludCA9PiBPcGVyYW5kLnVpbnQgMHcwCiAgCQkJICAgIHwgTXR5cGUuUG9pbnRlciA9PiBP
cGVyYW5kLnBvaW50ZXIgMQohIAkJCSAgICB8IHQgPT4gRXJyb3IuYnVnKCJib2d1cyBub3Qg
aW1wbGVtZW50ZWQgZm9yIHR5cGUgVm9pIikpCiAgCQkgIHwgXyA9PiAoKSkKICAJICAgfCBQ
cmltRXhwLlNlbGVjdCBfID0+IG5vbkV4cGFuc2l2ZSgpCiAgCSAgIHwgUHJpbUV4cC5UdXBs
ZSBbXSA9PiBib2d1cygpCk9ubHkgaW4gL3Vzci9sb2NhbC9tbHRvbi02L3NyYy9tbHRvbi9i
YWNrZW5kL3g4Ni1jb2RlZ2VuOiBDTQpPbmx5IGluIC91c3IvbG9jYWwvbWx0b24tNi9zcmMv
bWx0b24vY2xvc3VyZS1jb252ZXJ0OiBDTQpPbmx5IGluIC91c3IvbG9jYWwvbWx0b24tNi9z
cmMvbWx0b24vY206IENNCk9ubHkgaW4gL3Vzci9sb2NhbC9tbHRvbi02L3NyYy9tbHRvbi9j
b250cm9sOiBDTQpkaWZmIC13IC1jIC1yIG1sdG9uLTIwMDAwOTA2Lm9yZy9zcmMvbWx0b24v
Y29udHJvbC9jb250cm9sLnNpZyAvdXNyL2xvY2FsL21sdG9uLTYvc3JjL21sdG9uL2NvbnRy
b2wvY29udHJvbC5zaWcKKioqIG1sdG9uLTIwMDAwOTA2Lm9yZy9zcmMvbWx0b24vY29udHJv
bC9jb250cm9sLnNpZwlGcmkgQXVnIDI1IDAyOjQwOjM5IDIwMDAKLS0tIC91c3IvbG9jYWwv
bWx0b24tNi9zcmMvbWx0b24vY29udHJvbC9jb250cm9sLnNpZwlUdWUgTWFyIDIwIDEyOjU5
OjM1IDIwMDEKKioqKioqKioqKioqKioqCioqKiA1MSw1NiAqKioqCi0tLSA1MSw1NyAtLS0t
CiAgICAgICAgdmFsIGlubGluZTogaW5saW5lIHJlZgogICAgICAgIHZhbCBsYXlvdXRJbmxp
bmU6IGlubGluZSAtPiBMYXlvdXQudAogICAgICAgIHZhbCBzZXRJbmxpbmVTaXplOiBpbnQg
LT4gdW5pdAorICAgICAgIHZhbCBzZXRDb2FsZXNjZVNpemU6IGludCAtPiB1bml0CiAgCiAg
ICAgICAgdmFsIGlubGluZVJvdW5kczogaW50IHJlZgogIAkgCmRpZmYgLXcgLWMgLXIgbWx0
b24tMjAwMDA5MDYub3JnL3NyYy9tbHRvbi9jb250cm9sL2NvbnRyb2wuc21sIC91c3IvbG9j
YWwvbWx0b24tNi9zcmMvbWx0b24vY29udHJvbC9jb250cm9sLnNtbAoqKiogbWx0b24tMjAw
MDA5MDYub3JnL3NyYy9tbHRvbi9jb250cm9sL2NvbnRyb2wuc21sCVRodSBTZXAgIDcgMDM6
NTY6MzQgMjAwMAotLS0gL3Vzci9sb2NhbC9tbHRvbi02L3NyYy9tbHRvbi9jb250cm9sL2Nv
bnRyb2wuc21sCVR1ZSBNYXIgMjAgMTI6MTM6MzggMjAwMQoqKioqKioqKioqKioqKioKKioq
IDMyLDM5ICoqKioKICAKICBkYXRhdHlwZSBjaHVuayA9IGRhdGF0eXBlIENodW5rLnQKICB2
YWwgY2h1bmsgPSBjb250cm9se25hbWUgPSAiY2h1bmsiLAohIAkJICAgIGRlZmF1bHQgPSBD
b2FsZXNjZXtsaW1pdCA9IDIwMDB9LAogIAkJICAgIGxheW91dCA9IENodW5rLmxheW91dH0K
ICAKICB2YWwgY3VycmVudEZpbGUgPSByZWYgIjxib2d1cz4iCiAgCi0tLSAzMiw0NSAtLS0t
CiAgCiAgZGF0YXR5cGUgY2h1bmsgPSBkYXRhdHlwZSBDaHVuay50CiAgdmFsIGNodW5rID0g
Y29udHJvbHtuYW1lID0gImNodW5rIiwKISAJCSAgICBkZWZhdWx0ID0gQ29hbGVzY2V7bGlt
aXQ9NDA5Nn0sCiAgCQkgICAgbGF5b3V0ID0gQ2h1bmsubGF5b3V0fQorIAorIGZ1biBzZXRD
b2FsZXNjZVNpemUoc2l6ZTogaW50KTogdW5pdCA9CisgICAgY2h1bmsgOj0gKGNhc2UgIWNo
dW5rIG9mCisgCQkgT25lQ2h1bmsgPT4gT25lQ2h1bmsKKyAJICAgICAgIHwgQ2h1bmtQZXJG
dW5jID0+IENvYWxlc2Nle2xpbWl0PXNpemV9CisgCSAgICAgICB8IENvYWxlc2Nle2xpbWl0
fSA9PiBDb2FsZXNjZXtsaW1pdD1zaXplfSk7CiAgCiAgdmFsIGN1cnJlbnRGaWxlID0gcmVm
ICI8Ym9ndXM+IgogIApPbmx5IGluIC91c3IvbG9jYWwvbWx0b24tNi9zcmMvbWx0b246IGNv
cmUKT25seSBpbiAvdXNyL2xvY2FsL21sdG9uLTYvc3JjL21sdG9uL2NvcmUtbWw6IENNCk9u
bHkgaW4gL3Vzci9sb2NhbC9tbHRvbi02L3NyYy9tbHRvbi9jcHM6IENNCmRpZmYgLXcgLWMg
LXIgbWx0b24tMjAwMDA5MDYub3JnL3NyYy9tbHRvbi9jcHMvY29uc3RhbnQtcHJvcGFnYXRp
b24uZnVuIC91c3IvbG9jYWwvbWx0b24tNi9zcmMvbWx0b24vY3BzL2NvbnN0YW50LXByb3Bh
Z2F0aW9uLmZ1bgoqKiogbWx0b24tMjAwMDA5MDYub3JnL3NyYy9tbHRvbi9jcHMvY29uc3Rh
bnQtcHJvcGFnYXRpb24uZnVuCVNhdCBBdWcgMjYgMDE6MDg6NTEgMjAwMAotLS0gL3Vzci9s
b2NhbC9tbHRvbi02L3NyYy9tbHRvbi9jcHMvY29uc3RhbnQtcHJvcGFnYXRpb24uZnVuCUZy
aSBGZWIgIDIgMTQ6MzU6MTQgMjAwMQoqKioqKioqKioqKioqKioKKioqIDY0Nyw2NTMgKioq
KgogIAkgICAgIHwgKEFycmF5X3N1YiwgXywgW2EsIF9dKSA9PiBkZWFycmF5IGEKICAJICAg
ICB8IChBcnJheV91cGRhdGUsIF8sIFthLCBfLCB2XSkgPT4gdXBkYXRlKGEsIHYpCiAgCSAg
ICAgfCAoQXJyYXlfbGVuZ3RoLCBfLCBbYV0pID0+IGFycmF5TGVuZ3RoIGEKISAJICAgICB8
IChWZWN0b3JfbGVuZ3RoLCBfLCBbdl0pID0+IHZlY3Rvckxlbmd0aCB2CiAgCSAgICAgfCAo
VmVjdG9yX3N1YiwgXywgW3YsIF9dKSA9PiBkZXZlY3RvciB2CiAgCSAgICAgfCAoUmVmX2Fz
c2lnbiwgXywgW3IsIHZdKSA9PgogIAkJICAoY29lcmNle2Zyb20gPSB2LCB0byA9IGRlcmVm
IHJ9OyB1bml0KCkpCi0tLSA2NDcsNjUzIC0tLS0KICAJICAgICB8IChBcnJheV9zdWIsIF8s
IFthLCBfXSkgPT4gZGVhcnJheSBhCiAgCSAgICAgfCAoQXJyYXlfdXBkYXRlLCBfLCBbYSwg
Xywgdl0pID0+IHVwZGF0ZShhLCB2KQogIAkgICAgIHwgKEFycmF5X2xlbmd0aCwgXywgW2Fd
KSA9PiBhcnJheUxlbmd0aCBhCiEgKCoJICAgICB8IChWZWN0b3JfbGVuZ3RoLCBfLCBbdl0p
ID0+IHZlY3Rvckxlbmd0aCB2KikKICAJICAgICB8IChWZWN0b3Jfc3ViLCBfLCBbdiwgX10p
ID0+IGRldmVjdG9yIHYKICAJICAgICB8IChSZWZfYXNzaWduLCBfLCBbciwgdl0pID0+CiAg
CQkgIChjb2VyY2V7ZnJvbSA9IHYsIHRvID0gZGVyZWYgcn07IHVuaXQoKSkKZGlmZiAtdyAt
YyAtciBtbHRvbi0yMDAwMDkwNi5vcmcvc3JjL21sdG9uL2Nwcy9zaW1wbGlmeS5mdW4gL3Vz
ci9sb2NhbC9tbHRvbi02L3NyYy9tbHRvbi9jcHMvc2ltcGxpZnkuZnVuCioqKiBtbHRvbi0y
MDAwMDkwNi5vcmcvc3JjL21sdG9uL2Nwcy9zaW1wbGlmeS5mdW4JV2VkIEF1ZyAyMyAwMzow
NDozMSAyMDAwCi0tLSAvdXNyL2xvY2FsL21sdG9uLTYvc3JjL21sdG9uL2Nwcy9zaW1wbGlm
eS5mdW4JVGh1IE1hciAyMiAxMDoxNToxNiAyMDAxCioqKioqKioqKioqKioqKgoqKiogMTI5
LDEzNSAqKioqCiAgICAgJCBjb250aWZ5ICQgdHlwZUNoZWNrCiAgICAgJCBjb25zdGFudFBy
b3BhZ2F0aW9uICQgdHlwZUNoZWNrCiAgICAgJCB1c2VsZXNzIAohICAgICQgdHlwZUNoZWNr
CiAgKCogICAgJCB0cmFjZXNbIkNwcy50eXBlQ2hlY2siLCAiQW5hbHl6ZS5sb29wVHJhbnNm
ZXIiLCAiQW5hbHl6ZS5sb29wUHJpbUV4cCIsCiAgICogCSAgICAic2hyaW5rRXhwIiwgImp1
bXAiLCAidmFySW5mbyIsICJqdW1wSW5mbyIsCiAgICogIAkgICAgIlNocmluay5zaW1wbGlm
eVRyYW5zZmVyIiwgIlNocmluay5zaW1wbGlmeUJpbmQiLAotLS0gMTI5LDEzNSAtLS0tCiAg
ICAgJCBjb250aWZ5ICQgdHlwZUNoZWNrCiAgICAgJCBjb25zdGFudFByb3BhZ2F0aW9uICQg
dHlwZUNoZWNrCiAgICAgJCB1c2VsZXNzIAohICAgICQgcmVtb3ZlCiAgKCogICAgJCB0cmFj
ZXNbIkNwcy50eXBlQ2hlY2siLCAiQW5hbHl6ZS5sb29wVHJhbnNmZXIiLCAiQW5hbHl6ZS5s
b29wUHJpbUV4cCIsCiAgICogCSAgICAic2hyaW5rRXhwIiwgImp1bXAiLCAidmFySW5mbyIs
ICJqdW1wSW5mbyIsCiAgICogIAkgICAgIlNocmluay5zaW1wbGlmeVRyYW5zZmVyIiwgIlNo
cmluay5zaW1wbGlmeUJpbmQiLAoqKioqKioqKioqKioqKioKKioqIDE0MiwxNTIgKioqKgot
LS0gMTQyLDE1NiAtLS0tCiAgICAgJCBwb2x5RXF1YWwgJCB0eXBlQ2hlY2sKICAgICAkIGNv
bnRpZnkgJCB0eXBlQ2hlY2sKICAgICAkIGlubGluZSAkIHR5cGVDaGVjaworICAgICQgcmVt
b3ZlCiAgICAgJCByYWlzZVRvSnVtcCAkIHR5cGVDaGVjawogICAgICQgY29udGlmeSAkIHR5
cGVDaGVjawogICAgICQgaW50cm9kdWNlTG9vcHMgJCBsb29wSW52YXJpYW50ICQgdHlwZUNo
ZWNrCiAgICAgJCBmbGF0dGVuICQgdHlwZUNoZWNrCiAgICAgJCByZWR1bmRhbnQgJCB0eXBl
Q2hlY2sKKyAgICAkIHJlbW92ZQorICAgICQgY29udGlmeSAkIHR5cGVDaGVjaworICAgICQg
cmVtb3ZlCiAgKCogICAkIHRyYWNlc1sic2hyaW5rRXhwIiwgImp1bXBJbmZvIiwgImp1bXAi
LCAiZGVsZXRlRXhwIiwgImluY1ZhciJdICopCiAgICAgJCByZW1vdmUKICAoKiAgICQgTG9v
cENvdW50Lmluc3RydW1lbnQgKikKZGlmZiAtdyAtYyAtciBtbHRvbi0yMDAwMDkwNi5vcmcv
c3JjL21sdG9uL2Nwcy90eXBlLWNoZWNrLmZ1biAvdXNyL2xvY2FsL21sdG9uLTYvc3JjL21s
dG9uL2Nwcy90eXBlLWNoZWNrLmZ1bgoqKiogbWx0b24tMjAwMDA5MDYub3JnL3NyYy9tbHRv
bi9jcHMvdHlwZS1jaGVjay5mdW4JU2F0IEF1ZyAyNiAwMToxMTozOCAyMDAwCi0tLSAvdXNy
L2xvY2FsL21sdG9uLTYvc3JjL21sdG9uL2Nwcy90eXBlLWNoZWNrLmZ1bglGcmkgRmViICAy
IDE0OjM1OjI0IDIwMDEKKioqKioqKioqKioqKioqCioqKiAxMjYsMTMyICoqKioKICAJIChw
cmludCgiVHlwZSBlcnJvcjogIiBeIG1zZyBeICJcbiIpCiAgCSAgOyBMYXlvdXQub3V0cHV0
KGxheSwgb3V0KQogIAkgIDsgcHJpbnQgIlxuIgohIAkgIDsgcmFpc2UgVHlwZUVycm9yKQog
IAogICAgICAgIGZ1biBjb2VyY2V7ZnJvbTogVHlwZS50LCB0bzogVHlwZS50fTogdW5pdCA9
CiAgCSBpZiBUeXBlLmVxdWFscyhmcm9tLCB0bykKLS0tIDEyNiwxMzQgLS0tLQogIAkgKHBy
aW50KCJUeXBlIGVycm9yOiAiIF4gbXNnIF4gIlxuIikKICAJICA7IExheW91dC5vdXRwdXQo
bGF5LCBvdXQpCiAgCSAgOyBwcmludCAiXG4iCiEgCSAgOyByYWlzZSBUeXBlRXJyb3IpOwoh
IAohICAgICAgIHZhbCBlcnJvcicgPSBlcnJvcjsKICAKICAgICAgICBmdW4gY29lcmNle2Zy
b206IFR5cGUudCwgdG86IFR5cGUudH06IHVuaXQgPQogIAkgaWYgVHlwZS5lcXVhbHMoZnJv
bSwgdG8pCioqKioqKioqKioqKioqKgoqKiogMTg0LDE5MCAqKioqCiAgCQkJICAgIGRldHVw
bGVPcHQgPSBUeXBlLmRldHVwbGVPcHQsCiAgCQkJICAgIGlzVW5pdCA9IFR5cGUuaXNVbml0
CiAgCQkJICAgIH0gb2YKISAJICAgIE5PTkUgPT4gZXJyb3IgImJhZCBwcmltYXBwIgogIAkg
IHwgU09NRSB0ID0+IHQKICAKICAgICAgICB2YWwgcHJpbUFwcCA9Ci0tLSAxODYsMTkzIC0t
LS0KICAJCQkgICAgZGV0dXBsZU9wdCA9IFR5cGUuZGV0dXBsZU9wdCwKICAJCQkgICAgaXNV
bml0ID0gVHlwZS5pc1VuaXQKICAJCQkgICAgfSBvZgohIAkgICAgTk9ORSA9PgohIAkJZXJy
b3IoImJhZCBwcmltYXBwOiAiIF4gTGF5b3V0LnRvU3RyaW5nKFByaW0ubGF5b3V0KHByaW0p
KSBeICIsIGFyZ3M9IiBeIExheW91dC50b1N0cmluZyhMaXN0LmxheW91dCBUeXBlLmxheW91
dCBhcmdzKSkKICAJICB8IFNPTUUgdCA9PiB0CiAgCiAgICAgICAgdmFsIHByaW1BcHAgPQpP
bmx5IGluIC91c3IvbG9jYWwvbWx0b24tNi9zcmMvbWx0b24vZWxhYm9yYXRlOiBDTQpPbmx5
IGluIC91c3IvbG9jYWwvbWx0b24tNi9zcmMvbWx0b24vZnJvbnQtZW5kOiBDTQpPbmx5IGlu
IC91c3IvbG9jYWwvbWx0b24tNi9zcmMvbWx0b24vbWFpbjogQ00KZGlmZiAtdyAtYyAtciBt
bHRvbi0yMDAwMDkwNi5vcmcvc3JjL21sdG9uL21haW4vbWFpbi5zbWwgL3Vzci9sb2NhbC9t
bHRvbi02L3NyYy9tbHRvbi9tYWluL21haW4uc21sCioqKiBtbHRvbi0yMDAwMDkwNi5vcmcv
c3JjL21sdG9uL21haW4vbWFpbi5zbWwJVGh1IFNlcCAgNyAwNzoyMzo1NiAyMDAwCi0tLSAv
dXNyL2xvY2FsL21sdG9uLTYvc3JjL21sdG9uL21haW4vbWFpbi5zbWwJVHVlIE1hciAyMCAx
MjoxMjozOSAyMDAxCioqKioqKioqKioqKioqKgoqKiogMTAxLDEwNiAqKioqCi0tLSAxMDEs
MTA4IC0tLS0KICAJaW50UmVmIENvbnRyb2wuaW5kZW50YXRpb24pLAogICAgICAgICAoImlu
bGluZSIsIFNPTUUoIiBuIiwgInNwZWNpZnkgaW5saW5pbmcgdGhyZXNob2xkIiksCiAgCUlu
dCBDb250cm9sLnNldElubGluZVNpemUpLAorICAgICAgICAoImNvYWxlc2NlIiwgU09NRSgi
IG4iLCAic3BlY2lmeSBjb2FsZXNjaW5nIGxpbWl0IiksCisgCUludCBDb250cm9sLnNldENv
YWxlc2NlU2l6ZSksCiAgICAgICAgICgiSSIsIFNPTUUoImRpciIsICJzcGVjaWZ5IGEgZGly
IHRvIHNlYXJjaCBmb3IgaW5jbHVkZSBmaWxlcyIpLAogIAlwdXNoIGluY2x1ZGVEaXJzKSwK
ICAgICAgICAgKCJrZWVwIiwgU09NRSgiIHthfGN8bXxwfG98c30rIiwgInNhdmUgaW50ZXJt
ZWRpYXRlIGZpbGVzIiksCk9ubHkgaW4gL3Vzci9sb2NhbC9tbHRvbi02L3NyYy9tbHRvbjog
bWx0b24uYwpPbmx5IGluIC91c3IvbG9jYWwvbWx0b24tNi9zcmMvbWx0b246IG1sdG9uLmMu
U0FWRQpPbmx5IGluIC91c3IvbG9jYWwvbWx0b24tNi9zcmMvbWx0b246IG1sdG9uLm8KT25s
eSBpbiAvdXNyL2xvY2FsL21sdG9uLTYvc3JjL21sdG9uOiBzYXZlCk9ubHkgaW4gL3Vzci9s
b2NhbC9tbHRvbi02L3NyYy9tbHRvbi90eXBlLWluZmVyZW5jZTogQ00KZGlmZiAtdyAtYyAt
ciBtbHRvbi0yMDAwMDkwNi5vcmcvc3JjL21sdG9uL3R5cGUtaW5mZXJlbmNlL2luZmVyLXR5
cGUuZnVuIC91c3IvbG9jYWwvbWx0b24tNi9zcmMvbWx0b24vdHlwZS1pbmZlcmVuY2UvaW5m
ZXItdHlwZS5mdW4KKioqIG1sdG9uLTIwMDAwOTA2Lm9yZy9zcmMvbWx0b24vdHlwZS1pbmZl
cmVuY2UvaW5mZXItdHlwZS5mdW4JVGh1IEF1ZyAgMyAxODoyMTo1NCAyMDAwCi0tLSAvdXNy
L2xvY2FsL21sdG9uLTYvc3JjL21sdG9uL3R5cGUtaW5mZXJlbmNlL2luZmVyLXR5cGUuZnVu
CUZyaSBGZWIgIDIgMTQ6Mzg6MDAgMjAwMQoqKioqKioqKioqKioqKioKKioqIDE4NiwxOTgg
KioqKgogIAkgICAgIHwgQ29uKGMsIHRzKSA9PiBuZXdUeShDb24oYywgTGlzdC5tYXAodHMs
IGxvb3ApKSkKICAJICAgICB8IFJlY29yZHtmbGV4aWJsZSwgcmVjb3JkfSA9PgogIAkJICBp
ZiBmbGV4aWJsZQohIAkJICAgICB0aGVuIEVycm9yLmJ1ZyAic3Vic3RpdHV0aW5nIGluIGZs
ZXhpYmxlIHJlY29yZCB0eXBlIgogIAkJICBlbHNlIG5ld1R5KFJlY29yZHtmbGV4aWJsZSA9
IGZhbHNlLAogIAkJCQkgICAgcmVjb3JkID0gU3JlY29yZC5tYXAocmVjb3JkLCBsb29wKX0p
CiEgICAgICAgaW4gbG9vcCB0CiAgICAgICAgZW5kCiAgZW5kCiAgCiAgKCogdmFsIHN1YnN0
aXR1dGUgPQogICAqICAgIFRyYWNlLnRyYWNlMigic3Vic3RpdHV0ZSIsIGxheW91dCwgTGF5
b3V0Lmlnbm9yZSwgbGF5b3V0KSBzdWJzdGl0dXRlCQkKICAgKikKLS0tIDE4NiwyMDggLS0t
LQogIAkgICAgIHwgQ29uKGMsIHRzKSA9PiBuZXdUeShDb24oYywgTGlzdC5tYXAodHMsIGxv
b3ApKSkKICAJICAgICB8IFJlY29yZHtmbGV4aWJsZSwgcmVjb3JkfSA9PgogIAkJICAgaWYg
ZmxleGlibGUKISAJCSAgICAgICB0aGVuCiEgCQkJICAgbGV0CiEgCQkJICAgaW4KISAJCQkg
ICAgICAgTGF5b3V0Lm91dHB1dChMYXlvdXQuc3RyIioqKiBJTlRFUk5BTCBFUlJPUiwgc3Vi
c3RpdHV0aW5nIGluIGZsZXhpYmxlIHJlY29yZCB0eXBlOiAiLAohIAkJCQkJICAgICBPdXQu
ZXJyb3IpOwohIAkJCSAgICAgICBMYXlvdXQub3V0cHV0KGxheW91dCh0KSwgT3V0LmVycm9y
KTsKISAJCQkgICAgICAgbmV3VHkoUmVjb3Jke2ZsZXhpYmxlID0gdHJ1ZSwKISAJCQkJCSAg
ICByZWNvcmQgPSBTcmVjb3JkLm1hcChyZWNvcmQsIGxvb3ApfSkKISAJCQkgICBlbmQKICAJ
CSAgIGVsc2UgbmV3VHkoUmVjb3Jke2ZsZXhpYmxlID0gZmFsc2UsCiAgCQkJCSAgICAgcmVj
b3JkID0gU3JlY29yZC5tYXAocmVjb3JkLCBsb29wKX0pCiEgICAgICAgaW4KISAJICBsb29w
IHQKICAgICAgICBlbmQKICBlbmQKICAKKyAKICAoKiB2YWwgc3Vic3RpdHV0ZSA9CiAgICog
ICAgVHJhY2UudHJhY2UyKCJzdWJzdGl0dXRlIiwgbGF5b3V0LCBMYXlvdXQuaWdub3JlLCBs
YXlvdXQpIHN1YnN0aXR1dGUJCQogICAqKQoqKioqKioqKioqKioqKioKKioqIDM1NywzNjMg
KioqKgogIAkJCQkJICAgIHQpCiAgCQkJCSAgIGVsc2UgRXJyb3IuYnVnICJ1bmlmeSBtaXNt
YXRjaDogZGlmZmVyZW50IGxlbmd0aCByZWNvcmRzIgogIAkJICAgICBlbmQKISAJCXwgXyA9
PiBFcnJvci5idWcgInVuaWZ5IG1pc21hdGNoIgogICAgICAgICBpbiBTZXQudW5pb24ocywg
cycpCiAgCSAgOyBTZXQuc2V0VmFsdWUocywge3R5ID0gdCwgcGxpc3QgPSBQcm9wZXJ0eUxp
c3QubmV3KCl9KQogICAgICAgICBlbmQpIGFyZwotLS0gMzY3LDM3MyAtLS0tCiAgCQkJCQkg
ICAgdCkKICAJCQkJICAgZWxzZSBFcnJvci5idWcgInVuaWZ5IG1pc21hdGNoOiBkaWZmZXJl
bnQgbGVuZ3RoIHJlY29yZHMiCiAgCQkgICAgIGVuZAohIAkJfCBfID0+IEVycm9yLmJ1ZyAo
InVuaWZ5IG1pc21hdGNoICIgXiAidDE9IiBeIExheW91dC50b1N0cmluZyhsYXlvdXQocykp
IF4gIiwgdDI9IiBeIExheW91dC50b1N0cmluZyhsYXlvdXQocycpKSBeICJcbiIpCiAgICAg
ICAgIGluIFNldC51bmlvbihzLCBzJykKICAJICA7IFNldC5zZXRWYWx1ZShzLCB7dHkgPSB0
LCBwbGlzdCA9IFByb3BlcnR5TGlzdC5uZXcoKX0pCiAgICAgICAgIGVuZCkgYXJnCmRpZmYg
LXcgLWMgLXIgbWx0b24tMjAwMDA5MDYub3JnL3NyYy9tbHRvbi90eXBlLWluZmVyZW5jZS9p
bmZlci5mdW4gL3Vzci9sb2NhbC9tbHRvbi02L3NyYy9tbHRvbi90eXBlLWluZmVyZW5jZS9p
bmZlci5mdW4KKioqIG1sdG9uLTIwMDAwOTA2Lm9yZy9zcmMvbWx0b24vdHlwZS1pbmZlcmVu
Y2UvaW5mZXIuZnVuCVNhdCBBdWcgMjYgMDM6Mjc6MDIgMjAwMAotLS0gL3Vzci9sb2NhbC9t
bHRvbi02L3NyYy9tbHRvbi90eXBlLWluZmVyZW5jZS9pbmZlci5mdW4JRnJpIEZlYiAgMiAx
NDozODowMCAyMDAxCioqKioqKioqKioqKioqKgoqKiogMzMyLDMzNyAqKioqCi0tLSAzMzIs
MzM5IC0tLS0KICAgICAgICAgKikKICAgICAgICB2YWwgb3ZlcmxvYWRzOiBYZXhwLnQgUHJv
bWlzZS50IGxpc3QgcmVmID0gcmVmIFtdCiAgCSAKKyAgICAgICB2YWwgY3VycmVudF9mdW5j
dGlvbiA6IFZhci50IGxpc3QgcmVmID0gcmVmKFtdKTsKKyAKICAgICAgICBmdW4gdmFyRXhw
KHg6IFZhci50LCBlbnY6IEVudi50KTogZXhwQ29kZSA9CiAgCSBsZXQgdmFsIHZyIGFzIFZh
clJhbmdlLlR7c2NoZW1lLCBraW5kfSA9IEVudi5sb29rdXBWYXJSYW5nZShlbnYsIHgpCiAg
CSBpbiBjYXNlIGtpbmQgb2YKKioqKioqKioqKioqKioqCioqKiAzODEsMzg3ICoqKioKICAJ
CQkJICAoQ29udHJvbC5tZXNzYWdlTGF5CiAgCQkJCSAgIGxldCBvcGVuIExheW91dAogIAkJ
CQkgICBpbiBhbGlnbltWYXIubGF5b3V0IHgsCiEgCQkJCQkgICAgVmFyUmFuZ2UubGF5b3V0
IHZyXQogIAkJCQkgICBlbmQKICAJCQkJICAgOyBFcnJvci5idWcgImltcG9zc2libGUgdXNl
IG9mIG92ZXJsb2FkZWQgdmFyIikKICAJCSAgICAgIGluIGxvb3AgeXRzCi0tLSAzODMsMzkz
IC0tLS0KICAJCQkJICAoQ29udHJvbC5tZXNzYWdlTGF5CiAgCQkJCSAgIGxldCBvcGVuIExh
eW91dAogIAkJCQkgICBpbiBhbGlnbltWYXIubGF5b3V0IHgsCiEgCQkJCQkgICAgVmFyUmFu
Z2UubGF5b3V0IHZyLAohIAkJCQkJICAgIHN0ciAiIGluIGZ1bmN0aW9uICIsCiEgCQkJCQkg
ICAgTGlzdC5sYXlvdXQgVmFyLmxheW91dCAoIWN1cnJlbnRfZnVuY3Rpb24pLCBzdHIgIiAi
LAohIAkJCQkJICAgIHN0ciJ0eXBlcz0iLCBMaXN0LmxheW91dCBUeXBlLmxheW91dCAoTGlz
dC5tYXAoeXRzLCMyKSksCiEgCQkJCQkgICAgc3RyImluc3RhbmNlPSIsIFR5cGUubGF5b3V0
KGluc3RhbmNlKV0KICAJCQkJICAgZW5kCiAgCQkJCSAgIDsgRXJyb3IuYnVnICJpbXBvc3Np
YmxlIHVzZSBvZiBvdmVybG9hZGVkIHZhciIpCiAgCQkgICAgICBpbiBsb29wIHl0cwoqKioq
KioqKioqKioqKioKKioqIDY3NCw2ODIgKioqKgogIAkJICAgdmFsIGRlY3MgPQogIAkJICAg
ICAgTGlzdC5tYXAoZGVjcywgZm4ge3ZhciwgcnVsZXMsIGFyZ1R5cGUsIHJlc3VsdFR5cGV9
ID0+CiAgCQkJICAgICAgIGxldAogIAkJCQkgIHZhbCBycyA9IGluZmVyUnVsZXNVbmlmeShy
dWxlcywgZW52JywKICAJCQkJCQkJICAgYXJnVHlwZSwgcmVzdWx0VHlwZSkKISAJCQkgICAg
ICAgaW4ge3ZhciA9IHZhciwKICAJCQkJICAgdHkgPSBUeXBlLmFycm93KGFyZ1R5cGUsIHJl
c3VsdFR5cGUpLAogIAkJCQkgICBydWxlcyA9IHJzfQogIAkJCSAgICAgICBlbmQpCi0tLSA2
ODAsNjkyIC0tLS0KICAJCSAgIHZhbCBkZWNzID0KICAJCSAgICAgIExpc3QubWFwKGRlY3Ms
IGZuIHt2YXIsIHJ1bGVzLCBhcmdUeXBlLCByZXN1bHRUeXBlfSA9PgogIAkJCSAgICAgICBs
ZXQKKyAJCQkJICAgdmFsIHNhdmVkID0gIWN1cnJlbnRfZnVuY3Rpb24KKyAJCQkJICAgdmFs
IF8gPSAoY3VycmVudF9mdW5jdGlvbiA6PSB2YXIgOjogIWN1cnJlbnRfZnVuY3Rpb24pOwog
IAkJCQkgICB2YWwgcnMgPSBpbmZlclJ1bGVzVW5pZnkocnVsZXMsIGVudicsCiAgCQkJCQkJ
CSAgIGFyZ1R5cGUsIHJlc3VsdFR5cGUpCiEgCQkJICAgICAgIGluCiEgCQkJCSAgIGN1cnJl
bnRfZnVuY3Rpb24gOj0gc2F2ZWQ7CiEgCQkJCSAgIHt2YXIgPSB2YXIsCiAgCQkJCSAgICB0
eSA9IFR5cGUuYXJyb3coYXJnVHlwZSwgcmVzdWx0VHlwZSksCiAgCQkJCSAgICBydWxlcyA9
IHJzfQogIAkJCSAgICAgICBlbmQpCk9ubHkgaW4gL3Vzci9sb2NhbC9tbHRvbi02L3NyYy9t
bHRvbi94bWw6IENNCmRpZmYgLXcgLWMgLXIgbWx0b24tMjAwMDA5MDYub3JnL3NyYy9tbHRv
bi94bWwvc2ltcGxpZnkuZnVuIC91c3IvbG9jYWwvbWx0b24tNi9zcmMvbWx0b24veG1sL3Np
bXBsaWZ5LmZ1bgoqKiogbWx0b24tMjAwMDA5MDYub3JnL3NyYy9tbHRvbi94bWwvc2ltcGxp
ZnkuZnVuCVNhdCBBdWcgMjYgMDI6MzA6NDQgMjAwMAotLS0gL3Vzci9sb2NhbC9tbHRvbi02
L3NyYy9tbHRvbi94bWwvc2ltcGxpZnkuZnVuCUZyaSBGZWIgIDIgMTQ6Mzg6MTUgMjAwMQoq
KioqKioqKioqKioqKioKKioqIDM0NywzNTkgKioqKgogIAkJCQkgICAgICAgKGZuIFNPTUUo
eCcsIF8pID0+IChzZXRWYXIoeCcsIHgpOyB0cnVlKQogIAkJCQkgICAgICAgICB8IF8gPT4g
ZmFsc2UpCiAgCQkJCSBlbmQKISAJCQkgICAgfCAoXywgTk9ORSkgPT4KICAJCQkJIGV4cGFu
c2l2ZQogIAkJCQkgKENhc2V7dGVzdCA9IHRlc3QsCiAgCQkJCSAgICAgICBjYXNlcyA9IENh
c2VzLm1hcChjYXNlcywgc2ltcGxpZnlFeHApLAogIAkJCQkgICAgICAgZGVmYXVsdCA9IE9w
dGlvbi5tYXAoZGVmYXVsdCwKICAJCQkJCQkJICAgIHNpbXBsaWZ5RXhwKX0pCi0gCQkJICAg
IHwgXyA9PiBFcnJvci5idWcgInNpbXBsaWZ5UHJpbUV4cDogQ2FzZTIiCiAgCQkJICAgZW5k
CiAgCQkgICAgIGVuZAogIAotLS0gMzQ3LDM1OCAtLS0tCiAgCQkJCSAgICAgICAoZm4gU09N
RSh4JywgXykgPT4gKHNldFZhcih4JywgeCk7IHRydWUpCiAgCQkJCSAgICAgICAgIHwgXyA9
PiBmYWxzZSkKICAJCQkJIGVuZAohIAkJCSAgICB8IChfLCBfKSA9PgogIAkJCQkgZXhwYW5z
aXZlCiAgCQkJCSAoQ2FzZXt0ZXN0ID0gdGVzdCwKICAJCQkJICAgICAgIGNhc2VzID0gQ2Fz
ZXMubWFwKGNhc2VzLCBzaW1wbGlmeUV4cCksCiAgCQkJCSAgICAgICBkZWZhdWx0ID0gT3B0
aW9uLm1hcChkZWZhdWx0LAogIAkJCQkJCQkgICAgc2ltcGxpZnlFeHApfSkKICAJCQkgICBl
bmQKICAJCSAgICAgZW5kCiAgCk9ubHkgaW4gL3Vzci9sb2NhbC9tbHRvbi02L3NyYy9tbHlh
Y2M6IG1seWFjYwpPbmx5IGluIC91c3IvbG9jYWwvbWx0b24tNi9zcmMvbWx5YWNjL3NyYzog
eWFjYy5sZXguc21sCmRpZmYgLXcgLWMgLXIgbWx0b24tMjAwMDA5MDYub3JnL3NyYy9ydW50
aW1lL01ha2VmaWxlIC91c3IvbG9jYWwvbWx0b24tNi9zcmMvcnVudGltZS9NYWtlZmlsZQoq
KiogbWx0b24tMjAwMDA5MDYub3JnL3NyYy9ydW50aW1lL01ha2VmaWxlCUZyaSBPY3QgMjAg
MDg6MDE6NTAgMjAwMAotLS0gL3Vzci9sb2NhbC9tbHRvbi02L3NyYy9ydW50aW1lL01ha2Vm
aWxlCU1vbiBBdWcgIDYgMTE6MDM6NTQgMjAwMQoqKioqKioqKioqKioqKioKKioqIDEsNSAq
KioqCiEgQ0MgPQkJZ2NjIC1XYWxsIC1JLgohIENGTEFHUyA9CS1PMiAtRE5PREVCVUcKICBB
UiA9CQlhciByYwogIFNSQ1MgPQkJCVwKICAJZ2MuYwkJXAotLS0gMSw1IC0tLS0KISBDQyA9
CQlnY2MgLVdhbGwgLUkuIC1tYXJjaD1wZW50aXVtcHJvIC1tYWxpZ24tbG9vcHM9MiAtbWFs
aWduLWp1bXBzPTIgLW1hbGlnbi1mdW5jdGlvbnM9NSAtbXdpZGUtbXVsdGlwbHkgLWZvbWl0
LWZyYW1lLXBvaW50ZXIKISBDRkxBR1MgPQktTzkgLUROT0RFQlVHIC1mb21pdC1mcmFtZS1w
b2ludGVyCiAgQVIgPQkJYXIgcmMKICBTUkNTID0JCQlcCiAgCWdjLmMJCVwKKioqKioqKioq
KioqKioqCioqKiA3LDEzICoqKioKICAJbWx0b24tbGliLmMJXAogIAltbHRvbi1wb3NpeC5j
CVwKICAJbXktbGliLmMJXAohIAl0bXBuYW0uYwogIAogIFNIQVJFRCA9CQkJXAogIAkJbWx0
b24tcG9zaXgubwlcCi0tLSA3LDE0IC0tLS0KICAJbWx0b24tbGliLmMJXAogIAltbHRvbi1w
b3NpeC5jCVwKICAJbXktbGliLmMJXAohIAl0bXBuYW0uY1wKISAJYmNvcHkucwogIAogIFNI
QVJFRCA9CQkJXAogIAkJbWx0b24tcG9zaXgubwlcCioqKioqKioqKioqKioqKgoqKiogMTgs
MjMgKioqKgotLS0gMTksMjUgLS0tLQogIAkJaW50LWluZi5vCVwKICAJCW1sdG9uLWxpYi5v
CVwKICAJCXRtcG5hbS5vCVwKKyAJCWJjb3B5Lm8JCVwKICAJCSQoU0hBUkVEKQogIAogIERF
QlVHX09CSlMgPQkJCVwKKioqKioqKioqKioqKioqCioqKiAyNSwzMCAqKioqCi0tLSAyNywz
MyAtLS0tCiAgCQlpbnQtaW5mLWdkYi5vCVwKICAJCW1sdG9uLWxpYi1nZGIubyBcCiAgCQl0
bXBuYW0tZ2RiLm8JXAorIAkJYmNvcHkubwkJXAogIAkJJChTSEFSRUQpCiAgCiAgYWxsOiBn
bXAgbGlibWx0b24uYSBsaWJtbHRvbi1nZGIuYQoqKioqKioqKioqKioqKioKKioqIDM2LDUx
ICoqKioKICAJJChBUikgbGlibWx0b24tZ2RiLmEgJChERUJVR19PQkpTKQogIAogIGdjLWdk
Yi5vOiBnYy5vCiEgCSQoQ0MpIC1nIC1jIC1vIGdjLWdkYi5vIGdjLmMKICAKICBpbnQtaW5m
LWdkYi5vOiBpbnQtaW5mLm8KISAJJChDQykgLWcgLWMgLW8gaW50LWluZi1nZGIubyBpbnQt
aW5mLmMKICAKICBtbHRvbi1saWItZ2RiLm86IG1sdG9uLWxpYi5vCiEgCSQoQ0MpIC1nIC1j
IC1vIG1sdG9uLWxpYi1nZGIubyBtbHRvbi1saWIuYwogIAogIHRtcG5hbS1nZGIubzogdG1w
bmFtLm8KISAJJChDQykgLWcgLWMgLW8gdG1wbmFtLWdkYi5vIHRtcG5hbS5jCiAgCiAgZ21w
Lmg6IGdtcAogIAotLS0gMzksNTQgLS0tLQogIAkkKEFSKSBsaWJtbHRvbi1nZGIuYSAkKERF
QlVHX09CSlMpCiAgCiAgZ2MtZ2RiLm86IGdjLm8KISAJJChDQykgLU8zIC1nIC1jIC1vIGdj
LWdkYi5vIGdjLmMKICAKICBpbnQtaW5mLWdkYi5vOiBpbnQtaW5mLm8KISAJJChDQykgLU8z
IC1nIC1jIC1vIGludC1pbmYtZ2RiLm8gaW50LWluZi5jCiAgCiAgbWx0b24tbGliLWdkYi5v
OiBtbHRvbi1saWIubwohIAkkKENDKSAtTzMgLWcgLWMgLW8gbWx0b24tbGliLWdkYi5vIG1s
dG9uLWxpYi5jCiAgCiAgdG1wbmFtLWdkYi5vOiB0bXBuYW0ubwohIAkkKENDKSAtTzMgLWcg
LWMgLW8gdG1wbmFtLWdkYi5vIHRtcG5hbS5jCiAgCiAgZ21wLmg6IGdtcAogIAoqKioqKioq
KioqKioqKioKKioqIDYwLDY2ICoqKioKICAJCQkJemNhdCA8Z21wLTIuMC4yLnRneiB8IHRh
ciB4ZiAtOyB9ICYmCQlcCiAgCQkJCWNkIGdtcC0yLjAuMiAmJgkJCQkJXAogIAkJCQkuL2Nv
bmZpZ3VyZSAtLXByZWZpeD1gcHdkYC8uLi9nbXAtc3R1ZmYgJiYJXAohIAkJCQltYWtlIENG
TEFHUz0tTyBpbnN0YWxsIGRpc3RjbGVhbiAmJgkJXAogIAkJCQljZCAuLiAmJgkJCQkJXAog
IAkJCQlybSAtcmYgZ21wLTIuMC4yICYmCQkJCVwKICAJCQkJbXYgZ21wLXN0dWZmL2luY2x1
ZGUvZ21wLmggLiAmJgkJCVwKLS0tIDYzLDY5IC0tLS0KICAJCQkJemNhdCA8Z21wLTIuMC4y
LnRneiB8IHRhciB4ZiAtOyB9ICYmCQlcCiAgCQkJCWNkIGdtcC0yLjAuMiAmJgkJCQkJXAog
IAkJCQkuL2NvbmZpZ3VyZSAtLXByZWZpeD1gcHdkYC8uLi9nbXAtc3R1ZmYgJiYJXAohIAkJ
CQltYWtlIENGTEFHUz0iLU8zIC1tYXJjaD1wZW50aXVtcHJvIiBpbnN0YWxsIGRpc3RjbGVh
biAmJgkJXAogIAkJCQljZCAuLiAmJgkJCQkJXAogIAkJCQlybSAtcmYgZ21wLTIuMC4yICYm
CQkJCVwKICAJCQkJbXYgZ21wLXN0dWZmL2luY2x1ZGUvZ21wLmggLiAmJgkJCVwKT25seSBp
biAvdXNyL2xvY2FsL21sdG9uLTYvc3JjL3J1bnRpbWU6IGJjb3B5Lm8KT25seSBpbiAvdXNy
L2xvY2FsL21sdG9uLTYvc3JjL3J1bnRpbWU6IGJjb3B5LnMKT25seSBpbiAvdXNyL2xvY2Fs
L21sdG9uLTYvc3JjL3J1bnRpbWU6IGdjLWdkYi5vCmRpZmYgLXcgLWMgLXIgbWx0b24tMjAw
MDA5MDYub3JnL3NyYy9ydW50aW1lL2djLmMgL3Vzci9sb2NhbC9tbHRvbi02L3NyYy9ydW50
aW1lL2djLmMKKioqIG1sdG9uLTIwMDAwOTA2Lm9yZy9zcmMvcnVudGltZS9nYy5jCVdlZCBT
ZXAgIDYgMDE6MTM6MTIgMjAwMAotLS0gL3Vzci9sb2NhbC9tbHRvbi02L3NyYy9ydW50aW1l
L2djLmMJVGh1IEF1ZyAgOSAxNTowMzo0NyAyMDAxCioqKioqKioqKioqKioqKgoqKiogNiwx
MiAqKioqCiAgI2luY2x1ZGUgPHN5cy9tbWFuLmg+CiAgI2luY2x1ZGUgPHN5cy9yZXNvdXJj
ZS5oPgogICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KICAjaW5j
bHVkZSA8dmFsdWVzLmg+CiAgCiAgZW51bSB7Ci0tLSA2LDExIC0tLS0KKioqKioqKioqKioq
KioqCioqKiA4Miw5MiAqKioqCiAgCXJlc3VsdCA9IG1tYXAoTlVMTCwgbGVuZ3RoLCBQUk9U
X1JFQUQgfCBQUk9UX1dSSVRFLCAKICAJCQlNQVBfUFJJVkFURSB8IE1BUF9BTk9OLCAtMSwg
MCk7CiAgCWlmIChyZXN1bHQgPT0gKHZvaWQqKS0xKSAKISAJCWRpZSgibW1hcCBmYWlsZWQi
KTsKICAJCiAgCXJldHVybiByZXN1bHQ7CiAgfQogIAogIHN0YXRpYyB2b2lkIHNtdW5tYXAo
cG9pbnRlciBiYXNlLCBzaXplX3QgbGVuZ3RoKSB7CiAgCWFzc2VydChiYXNlICE9IE5VTEwp
OwogIAlpZiAoMCA9PSBsZW5ndGgpCi0tLSA4MSwxMDggLS0tLQogIAlyZXN1bHQgPSBtbWFw
KE5VTEwsIGxlbmd0aCwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwgCiAgCQkJTUFQX1BSSVZB
VEUgfCBNQVBfQU5PTiwgLTEsIDApOwogIAlpZiAocmVzdWx0ID09ICh2b2lkKiktMSkgCiEg
CQlkaWUoIk91dCBvZiBzd2FwIHNwYWNlIik7CiAgCQogIAlyZXR1cm4gcmVzdWx0OwogIH0K
ICAKKyBzdGF0aWMgdm9pZCAqc21tYXBfZGllbm90KHNpemVfdCBsZW5ndGgsIGludCBkaXJl
Y3Rpb24pIHsKKyAJaW50IGk7CisgCXZvaWQgKnJlc3VsdCA9ICh2b2lkKiktMTsKKyAKKyAJ
Zm9yKGk9MDsgaTwzMjsgaSsrKSB7CisgCSAgdW5zaWduZWQgbG9uZyBhZGRyZXNzOworIAor
IAkgIGFkZHJlc3MgPSBpKjB4MDgwMDAwMDB1bDsKKyAJICBpZiAoZGlyZWN0aW9uKQorIAkg
ICAgYWRkcmVzcyA9IDB4ZjgwMDAwMDB1bCAtIGFkZHJlc3M7CisgCSAgcmVzdWx0ID0gbW1h
cChhZGRyZXNzKyh2b2lkKikwLCBsZW5ndGgsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsIE1B
UF9QUklWQVRFIHwgTUFQX0FOT04sIC0xLCAwKTsKKyAJICBpZiAoKHZvaWQqKS0xICE9IHJl
c3VsdCkKKyAJICAgIGJyZWFrOworIAl9CisgCXJldHVybiByZXN1bHQ7CisgfQorIAogIHN0
YXRpYyB2b2lkIHNtdW5tYXAocG9pbnRlciBiYXNlLCBzaXplX3QgbGVuZ3RoKSB7CiAgCWFz
c2VydChiYXNlICE9IE5VTEwpOwogIAlpZiAoMCA9PSBsZW5ndGgpCioqKioqKioqKioqKioq
KgoqKiogMTgyLDE4OCAqKioqCiAgCUdDX2ZyYW1lTGF5b3V0ICpsYXlvdXQ7CiAgCXdvcmQg
aGFzaFZhbHVlOwogICAgCiEgCWlmIChzLT5oYXNoaW5nKSB7CiAgCQloYXNoVmFsdWUgPSBo
YXNoKHMsIHJldHVybkFkZHJlc3MpOwogIAkJbGF5b3V0ID0gcy0+ZnJhbWVMYXlvdXRzICsg
cy0+aGFzaEZyYW1lSW5kZXhbKHVpbnQpaGFzaFZhbHVlXTsKICAJCXdoaWxlIChsYXlvdXQt
PnJldHVybkFkZHJlc3MgIT0gcmV0dXJuQWRkcmVzcyAmJgotLS0gMTk4LDIwNCAtLS0tCiAg
CUdDX2ZyYW1lTGF5b3V0ICpsYXlvdXQ7CiAgCXdvcmQgaGFzaFZhbHVlOwogICAgCiEgCWlm
ICgwICYmIHMtPmhhc2hpbmcpIHsKICAJCWhhc2hWYWx1ZSA9IGhhc2gocywgcmV0dXJuQWRk
cmVzcyk7CiAgCQlsYXlvdXQgPSBzLT5mcmFtZUxheW91dHMgKyBzLT5oYXNoRnJhbWVJbmRl
eFsodWludCloYXNoVmFsdWVdOwogIAkJd2hpbGUgKGxheW91dC0+cmV0dXJuQWRkcmVzcyAh
PSByZXR1cm5BZGRyZXNzICYmCioqKioqKioqKioqKioqKgoqKiogMzYzLDM3MCAqKioqCiAg
fQogIAogIHN0YXRpYyB2b2lkIHRvU3BhY2UoR0Nfc3RhdGUgcykgewohIAlzLT50b0Jhc2Ug
PSBzbW1hcChzLT50b1NpemUpOwohIAlpZiAocy0+dG9TaXplID4gcy0+bWF4SGVhcFNpemVT
ZWVuKQogIAkJcy0+bWF4SGVhcFNpemVTZWVuID0gcy0+dG9TaXplOwogIH0KICAKLS0tIDM3
OSwzODggLS0tLQogIH0KICAKICBzdGF0aWMgdm9pZCB0b1NwYWNlKEdDX3N0YXRlIHMpIHsK
ISAgIHN0YXRpYyBpbnQgZGlyZWN0aW9uID0gMTsKISAgIHMtPnRvQmFzZSA9IHNtbWFwX2Rp
ZW5vdChzLT50b1NpemUsIGRpcmVjdGlvbik7CiEgICBpZiAocy0+dG9CYXNlICE9ICh2b2lk
KiktMSkgZGlyZWN0aW9uID0gKGRpcmVjdGlvbj09MCk7CiEgICBpZiAocy0+dG9CYXNlICE9
ICh2b2lkKiktMSAmJiBzLT50b1NpemUgPiBzLT5tYXhIZWFwU2l6ZVNlZW4pCiAgICAgIHMt
Pm1heEhlYXBTaXplU2VlbiA9IHMtPnRvU2l6ZTsKICB9CiAgCioqKioqKioqKioqKioqKgoq
KiogMzk2LDQxMCAqKioqCiAgICogSXQgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW4gbm90
IHMtPnVzZUZpeGVkSGVhcCwgc2luY2Ugcy0+bWF4SGVhcFNpemUgaXMKICAgKiBvbmx5IHNl
dCBpbiB0aGF0IGNhc2UuCiAgICovCiEgc3RhdGljIHVpbnQgY29tcHV0ZUhlYXBTaXplKEdD
X3N0YXRlIHMsIHVpbnQgbGl2ZSwgdWludCByYXRpbykgewogIAl1bGxvbmcgbmVlZGVkOwog
IAogIAlhc3NlcnQobm90IHMtPnVzZUZpeGVkSGVhcCk7CiAgCiAgCW5lZWRlZCA9ICgodWxs
b25nKWxpdmUpICogcmF0aW87CiEgCXJldHVybiAoKG5lZWRlZCA+IHMtPm1heEhlYXBTaXpl
KQohIAkJPyBzLT5tYXhIZWFwU2l6ZQohIAkJOiByb3VuZFBhZ2UobmVlZGVkKSk7CiAgfQog
IAogIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gKi8KLS0tIDQxNCw0NjIgLS0tLQogICAqIEl0IHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3
aGVuIG5vdCBzLT51c2VGaXhlZEhlYXAsIHNpbmNlIHMtPm1heEhlYXBTaXplIGlzCiAgICog
b25seSBzZXQgaW4gdGhhdCBjYXNlLgogICAqLwohIHN0YXRpYyB1aW50IGNvbXB1dGVIZWFw
U2l6ZShHQ19zdGF0ZSBzLCB1aW50IGxpdmUsIHVpbnQgcmF0aW8sIGludCB2ZXJib3NlLCBp
bnQgdHJ5KSB7CiAgCXVsbG9uZyBuZWVkZWQ7CiAgCiAgCWFzc2VydChub3Qgcy0+dXNlRml4
ZWRIZWFwKTsKICAKICAJbmVlZGVkID0gKCh1bGxvbmcpbGl2ZSkgKiByYXRpbzsKISAJaWYg
KG5lZWRlZCA8PSBzLT5tYXhIZWFwU2l6ZSkKISAJICByZXR1cm4gcm91bmRQYWdlKG5lZWRl
ZCk7CiEgCWVsc2UKISAJICB7CiEgCSAgICB1bGxvbmcgbjsKISAJICAgIGRvdWJsZSBrOwoh
IAkgICAgc3dpdGNoKHRyeSkgewohIAkgICAgY2FzZSAwOiBrPTEuOTk7IGJyZWFrOwohIAkg
ICAgY2FzZSAxOiBrPTEuOTk7IGJyZWFrOwohIAkgICAgY2FzZSAyOiBrPTEuODA7IGJyZWFr
OwohIAkgICAgY2FzZSAzOiBrPTEuNzA7IGJyZWFrOwohIAkgICAgY2FzZSA0OiBrPTEuNjA7
IGJyZWFrOwohIAkgICAgY2FzZSA1OiBrPTEuNTA7IGJyZWFrOwohIAkgICAgY2FzZSA2OiBr
PTEuNDA7IGJyZWFrOwohIAkgICAgY2FzZSA3OiBrPTEuMzA7IGJyZWFrOwohIAkgICAgY2Fz
ZSA4OiBrPTEuMjA7IGJyZWFrOwohIAkgICAgY2FzZSA5OiBrPTEuMTU7IGJyZWFrOwohIAkg
ICAgY2FzZSAxMDogaz0xLjEwOyBicmVhazsKISAJICAgIGNhc2UgMTE6IGs9MS4wNTsgYnJl
YWs7CiEgCSAgICBkZWZhdWx0OiBrPTEuMDE7IGJyZWFrOwohIAkgICAgfQohIAohIAkgICAg
biA9ICh1bGxvbmcpKGsqKChkb3VibGUpbGl2ZSkpOwohIAkgICAgbiA9IHJvdW5kUGFnZShu
KTsKISAJICAgIC8qCSAgICBuID0gbWF4KHMtPnRvU2l6ZSwgbik7ICovCiEgCSAgICBpZiAo
biA8PSBzLT5tYXhIZWFwU2l6ZSkKISAJICAgICAgcmV0dXJuIHMtPm1heEhlYXBTaXplOwoh
IAohIAkgICAgaWYgKHZlcmJvc2UgJiYgdHJ5PjApCiEgCSAgICAgIGZwcmludGYoc3RkZXJy
LCAiW1JlcXVlc3RlZCAlbHVNYiAoPiAlbHVNYikgY2Fubm90IGJlIHNhdGlzZmllZCwgYWxs
b2NhdGluZyAlbHVNYiBpbnN0ZWFkLiBMaXZlID0gJWx1TWIsIGs9JS4yZl1cbiIsCiEgCQkg
ICAgICAodW5zaWduZWQgbG9uZykobmVlZGVkLygxMDI0dWwqMTAyNHVsKSksCiEgCQkgICAg
ICAodW5zaWduZWQgbG9uZykocy0+bWF4SGVhcFNpemUvKDEwMjR1bCoxMDI0dWwpKSwKISAJ
CSAgICAgICh1bnNpZ25lZCBsb25nKShuLygxMDI0dWwqMTAyNHVsKSksCiEgCQkgICAgICAo
dW5zaWduZWQgbG9uZykobGl2ZS8oMTAyNHVsKjEwMjR1bCkpLAohIAkJICAgICAgayk7CiEg
CSAgICByZXR1cm4gbjsKISAJICB9CiAgfQogIAogIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKioqKioqKioqKioqKioqCioqKiA0
NTIsNDU4ICoqKioKICAgKiBkYXRhIHdvcmQgaW4gdGhlIG9iamVjdC4KICAgKiBSZXR1cm5z
IHBvaW50ZXIgdG8gdGhlIGVuZCBvZiBvYmplY3QsIGkuZS4ganVzdCBwYXN0IG9iamVjdC4K
ICAgKi8KISBzdGF0aWMgcG9pbnRlciBmb3JlYWNoUG9pbnRlckluT2JqZWN0KEdDX3N0YXRl
IHMsIHBvaW50ZXJGdW4gZiwgcG9pbnRlciBwKSB7CiAgCXdvcmQgaGVhZGVyOwogIAl1aW50
IG51bVBvaW50ZXJzOwogIAl1aW50IG51bU5vblBvaW50ZXJzOwotLS0gNTA0LDUxMCAtLS0t
CiAgICogZGF0YSB3b3JkIGluIHRoZSBvYmplY3QuCiAgICogUmV0dXJucyBwb2ludGVyIHRv
IHRoZSBlbmQgb2Ygb2JqZWN0LCBpLmUuIGp1c3QgcGFzdCBvYmplY3QuCiAgICovCiEgc3Rh
dGljIGlubGluZSBwb2ludGVyIGZvcmVhY2hQb2ludGVySW5PYmplY3QoR0Nfc3RhdGUgcywg
cG9pbnRlckZ1biBmLCBwb2ludGVyIHApIHsKICAJd29yZCBoZWFkZXI7CiAgCXVpbnQgbnVt
UG9pbnRlcnM7CiAgCXVpbnQgbnVtTm9uUG9pbnRlcnM7CioqKioqKioqKioqKioqKgoqKiog
NTc3LDU4NSAqKioqCi0tLSA2MjksNjQwIC0tLS0KICAJCQkJICBwb2ludGVyRnVuIGYpIHsK
ICAJYXNzZXJ0KGZyb250IDw9ICpiYWNrKTsKICAgCXdoaWxlIChmcm9udCA8ICpiYWNrKSB7
CisgCSAgcG9pbnRlciBiID0gKmJhY2s7CisgCSAgd2hpbGUgKGZyb250IDwgYikgewogIAkg
ICAgYXNzZXJ0KGlzV29yZEFsaWduZWQoKHVpbnQpZnJvbnQpKTsKICAJICAgIGZyb250ID0g
Zm9yZWFjaFBvaW50ZXJJbk9iamVjdChzLCBmLCB0b0RhdGEoZnJvbnQpKTsKICAJICB9Cisg
CX0KICAJYXNzZXJ0KGZyb250ID09ICpiYWNrKTsKICB9CiAgCioqKioqKioqKioqKioqKgoq
KiogNTkyLDU5NyAqKioqCi0tLSA2NDcsNjU0IC0tLS0KICAgCXJldHVybiAocy0+YmFzZSA8
PSBwIGFuZCBwIDwgcy0+ZnJvbnRpZXIpOwogIH0KICAKKyBlbnVtIHtDaGVja2luZ0dsb2Jh
bHM9MTAsQ2hlY2tpbmdIZWFwPTExfSBDaGVja2luZ1N0YXR1czsKKyAKICBzdGF0aWMgdm9p
ZCBhc3NlcnRJc0luRnJvbVNwYWNlKEdDX3N0YXRlIHMsIHBvaW50ZXIgKnApIHsKICAJYXNz
ZXJ0KGlzSW5Gcm9tU3BhY2UocywgKnApKTsKICB9CioqKioqKioqKioqKioqKgoqKiogNjI5
LDY0MCAqKioqCi0tLSA2ODYsNzAyIC0tLS0KICAJYXNzZXJ0KDAgPT0gcy0+ZnJvbVNpemUg
CiAgCQlvciAocy0+ZnJvbnRpZXIgPD0gcy0+bGltaXQgKyBMSU1JVF9TTE9QCiAgCQkJYW5k
IHMtPmxpbWl0ID09IHMtPmJhc2UgKyBzLT5mcm9tU2l6ZSAtIExJTUlUX1NMT1ApKTsKKyAj
aWZkZWYgbmV2ZXIKICAJYXNzZXJ0KHMtPnVzZUZpeGVkSGVhcCBvciAocy0+ZnJvbVNpemUg
PD0gcy0+bWF4SGVhcFNpemUKICAJICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHMt
PnRvU2l6ZSA8PSBzLT5tYXhIZWFwU2l6ZSkpOworICNlbmRpZgogIAlhc3NlcnQocy0+dG9C
YXNlID09IE5VTEwgb3Igcy0+dG9TaXplID09IHMtPmZyb21TaXplKTsKICAJLyogQ2hlY2sg
dGhhdCBhbGwgcG9pbnRlcnMgYXJlIGludG8gZnJvbSBzcGFjZS4gKi8KKyAJQ2hlY2tpbmdT
dGF0dXMgPSBDaGVja2luZ0dsb2JhbHM7CiAgCWZvcmVhY2hHbG9iYWwocywgYXNzZXJ0SXNJ
bkZyb21TcGFjZSk7CisgCUNoZWNraW5nU3RhdHVzID0gQ2hlY2tpbmdIZWFwOwogIAlmb3Jl
YWNoUG9pbnRlckluUmFuZ2Uocywgcy0+YmFzZSwgJnMtPmZyb250aWVyLCBhc3NlcnRJc0lu
RnJvbVNwYWNlKTsKKyAJQ2hlY2tpbmdTdGF0dXMgPSAwOwogIAkvKiBDdXJyZW50IHRocmVh
ZC4gKi8KICAJewogIAkJdWludCBvZmZzZXQ7CioqKioqKioqKioqKioqKgoqKiogNzQ3LDc1
MyAqKioqCiAgLyogSXQgdXNlZCB0byBiZSAwLjk1LCBidXQgdGhpcyBzZWVtZWQgdG9vIGFn
cmVzc2l2ZSBiZWNhdXNlIHRoZSBMaW51eCBrZXJuZWwKICAgKiByZXNlcnZlIG1vcmUgdGhh
biAwLjA1LgogICAqLwohIHN0YXRpYyBjb25zdCBkb3VibGUgUkFNc2xvcCA9IDAuODU7CiAg
CiAgLyogR2V0IFJBTSBzaXplIGZyb20gL3Byb2MvbWVtaW5mby4gIFZlcnkgTGludXggc3Bl
Y2lmaWMuIAogICAqCi0tLSA4MDksODE1IC0tLS0KICAvKiBJdCB1c2VkIHRvIGJlIDAuOTUs
IGJ1dCB0aGlzIHNlZW1lZCB0b28gYWdyZXNzaXZlIGJlY2F1c2UgdGhlIExpbnV4IGtlcm5l
bAogICAqIHJlc2VydmUgbW9yZSB0aGFuIDAuMDUuCiAgICovCiEgc3RhdGljIGNvbnN0IGRv
dWJsZSBSQU1zbG9wID0gMC45OwogIAogIC8qIEdldCBSQU0gc2l6ZSBmcm9tIC9wcm9jL21l
bWluZm8uICBWZXJ5IExpbnV4IHNwZWNpZmljLiAKICAgKgoqKioqKioqKioqKioqKioKKioq
IDc2Myw3NjggKioqKgotLS0gODI1LDgzMSAtLS0tCiAgCWNoYXIgYzsKICAJY2hhciBidWZb
ODBdOwogIAl1aW50IG47CisgCXVpbnQgcmVzdWx0OwogIAogIAlmaWxlID0gc29wZW4oIi9w
cm9jL21lbWluZm8iLCAiciIpOwogIAl3aGlsZSAoKGMgPSBmZ2V0YyhmaWxlKSkgIT0gJ1xu
Jyk7CioqKioqKioqKioqKioqKgoqKiogNzczLDc3OSAqKioqCiAgCQluID0gbiAqIDEwICsg
KGludCkoYyAtICcwJyk7CiAgCXdoaWxlICgoYyA9IGZnZXRjKGZpbGUpKSAhPSAnICcpOwog
IAlmY2xvc2UoZmlsZSk7CiEgCXJldHVybiByb3VuZFBhZ2UoKHVpbnQpKChkb3VibGUpbiAq
IFJBTXNsb3ApKTsKICB9CiAgCiAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotLS0gODM2LDg1OCAtLS0tCiAgCQluID0gbiAqIDEw
ICsgKGludCkoYyAtICcwJyk7CiAgCXdoaWxlICgoYyA9IGZnZXRjKGZpbGUpKSAhPSAnICcp
OwogIAlmY2xvc2UoZmlsZSk7CiEgCXJlc3VsdCA9IHJvdW5kUGFnZSgodWludCkoKGRvdWJs
ZSluICogUkFNc2xvcCkpOwohIAkvKmZwcmludGYoc3RkZXJyLCAiW1JBTSBhY3R1YWwgPSAl
dU1iLCBzaXplID0gJXVNYl1cbiIsIHJlc3VsdC8oMTAyNHUqMTAyNHUpLCBuLygxMDI0dSox
MDI0dSkpOyovCiEgCXJldHVybiByZXN1bHQ7CiEgfQohIAohIHN0YXRpYyBpbnQgcHJvY2Vz
c29yX2hhc19zc2UyPTA7CiEgCiEgc3RhdGljIHZvaWQgcmVhZF9wcm9jZXNzb3IoKSB7CiEg
I2lmZGVmIG5ldmVyCiEgICBpbnQgc3RhdHVzID0gc3lzdGVtKCIvYmluL2NhdCAvcHJvYy9j
cHVpbmZvIHwgL2Jpbi9lZ3JlcCAtcSAnXmZsYWdzLio6LiogbW14IC4qeG1tJyIpOwohICAg
CiEgICBpZiAoc3RhdHVzPT0wKQohICAgICBwcm9jZXNzb3JfaGFzX3NzZTI9MTsKISAgIGVs
c2UKISAgICAgcHJvY2Vzc29yX2hhc19zc2UyPTA7CiEgI2VuZGlmCiEgICBwcm9jZXNzb3Jf
aGFzX3NzZTI9MDsKICB9CiAgCiAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSAqLwoqKioqKioqKioqKioqKioKKioqIDc5Myw4MDIgKioq
KgogIAkJaWYgKDAgPT0gcy0+bWF4SGVhcFNpemUpIAogIAkJCXMtPm1heEhlYXBTaXplID0g
Z2V0UkFNc2l6ZSgpOwogIAkJcy0+bWF4SGVhcFNpemUgPSByb3VuZFBhZ2Uocy0+bWF4SGVh
cFNpemUgLyAyKTsKISAJCXMtPmZyb21TaXplID0gY29tcHV0ZUhlYXBTaXplKHMsIHNpemUs
IHMtPmxpdmVSYXRpbyk7CiAgCX0KISAJaWYgKHNpemUgPiBzLT5mcm9tU2l6ZSkKISAJCWRp
ZSgiT3V0IG9mIG1lbW9yeS4iKTsKICB9CiAgCiAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotLS0gODcyLDg4MiAtLS0tCiAgCQlp
ZiAoMCA9PSBzLT5tYXhIZWFwU2l6ZSkgCiAgCQkJcy0+bWF4SGVhcFNpemUgPSBnZXRSQU1z
aXplKCk7CiAgCQlzLT5tYXhIZWFwU2l6ZSA9IHJvdW5kUGFnZShzLT5tYXhIZWFwU2l6ZSAv
IDIpOwohIAkJcy0+ZnJvbVNpemUgPSBjb21wdXRlSGVhcFNpemUocywgc2l6ZSwgcy0+bGl2
ZVJhdGlvLCAwLCAwKTsKICAJfQohIAkvKglmcHJpbnRmKHN0ZGVyciwgIlttYXhIZWFwU2l6
ZSA9ICV1TWJdXG4iLCBzLT5tYXhIZWFwU2l6ZS8oMTAyNHUqMTAyNHUpKTsqLwohIAlpZiAo
c2l6ZSArIExJTUlUX1NMT1AgPiBzLT5mcm9tU2l6ZSkKISAJCWRpZSgiT3V0IG9mIG1lbW9y
eSAoc2V0SGVhcFBhcmFtcykuIik7CiAgfQogIAogIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKioqKioqKioqKioqKioqCioqKiA4
MTMsODE5ICoqKioKICAJYXNzZXJ0KGlzV29yZEFsaWduZWQoc2l6ZW9mKHN0cnVjdCBHQ190
aHJlYWQpKSk7CiAgCWluaXRTaWduYWxTdGFjayhzKTsKICAJaW5pdENvdW50ZXJzKHMpOwoh
IAlpZiAocy0+aGFzaGluZykKICAJCWluaXRIYXNoRnJhbWVJbmRleChzKTsJCiAgCXNldEhl
YXBQYXJhbXMocywgcy0+Ynl0ZXNMaXZlKTsKICAJZm9yIChpID0gMDsgaSA8IHMtPm51bUds
b2JhbHM7ICsraSkKLS0tIDg5Myw5MDAgLS0tLQogIAlhc3NlcnQoaXNXb3JkQWxpZ25lZChz
aXplb2Yoc3RydWN0IEdDX3RocmVhZCkpKTsKICAJaW5pdFNpZ25hbFN0YWNrKHMpOwogIAlp
bml0Q291bnRlcnMocyk7CiEgCXJlYWRfcHJvY2Vzc29yKCk7CiEgCWlmICgwICYmIHMtPmhh
c2hpbmcpCiAgCQlpbml0SGFzaEZyYW1lSW5kZXgocyk7CQogIAlzZXRIZWFwUGFyYW1zKHMs
IHMtPmJ5dGVzTGl2ZSk7CiAgCWZvciAoaSA9IDA7IGkgPCBzLT5udW1HbG9iYWxzOyArK2kp
CioqKioqKioqKioqKioqKgoqKiogODI2LDgzMSAqKioqCi0tLSA5MDcsOTE0IC0tLS0KICAJ
cy0+ZnJvbnRpZXIgPSBzLT5iYXNlOwogIAlzLT50b1NpemUgPSBzLT5mcm9tU2l6ZTsKICAJ
dG9TcGFjZShzKTsgLyogRklYTUU6IFdoeSBkb2VzIHRvU3BhY2UgbmVlZCB0byBiZSBhbGxv
Y2F0ZWQ/ICovCisgCWlmIChzLT50b0Jhc2UgPT0gKHZvaWQqKS0xKSAKKyAJICBkaWUoIk91
dCBvZiBzd2FwIHNwYWNlIik7CiAgCXN3aXRjaFRvVGhyZWFkKHMsIG5ld1RocmVhZE9mU2l6
ZShzLCBzdGFja1Nsb3AocykpKTsKICAJYXNzZXJ0KGludmFyaWFudChzKSk7CiAgfQoqKioq
KioqKioqKioqKioKKioqIDg2MCw4NjUgKioqKgotLS0gOTQzLDk1MiAtLS0tCiAgCXJldHVy
biBoZWFkZXJCeXRlcyArIG9iamVjdEJ5dGVzOwogIH0KICAKKyAjaWZkZWYgTUVURVIKKyBp
bnQgc2l6ZXNbMjU2MDBdOworICNlbmRpZgorIAogIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KICAvKiAgICAgICAgICAgICAgICAg
ICAgICBmb3J3YXJkICAgICAgICAgICAgICAgICAgICAgICovCiAgLyogLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwoqKioqKioqKioqKioq
KioKKioqIDkwNCw5MTEgKioqKgogIAkJCXNraXAgPSBzdGFjay0+cmVzZXJ2ZWQgLSBzdGFj
ay0+dXNlZDsKICAJCX0gZWxzZSB7IC8qIEFycmF5LiAqLwogIAkJCWhlYWRlckJ5dGVzID0g
R0NfQVJSQVlfSEVBREVSX1NJWkU7CiEgCQkJb2JqZWN0Qnl0ZXMgPSBleHRyYWN0QXJyYXlO
dW1CeXRlcyhwLCBudW1Qb2ludGVycywKISAJCQkJCQkJCW51bU5vblBvaW50ZXJzKTsKICAJ
CQlza2lwID0gMDsKICAJCQkvKiBFbXB0eSBhcnJheXMgaGF2ZSBQT0lOVEVSX1NJWkUgYnl0
ZXMgZm9yIHRoZSAKICAJCQkgKiBmb3J3YXJkaW5nIHBvaW50ZXIuCi0tLSA5OTEsOTk3IC0t
LS0KICAJCQlza2lwID0gc3RhY2stPnJlc2VydmVkIC0gc3RhY2stPnVzZWQ7CiAgCQl9IGVs
c2UgeyAvKiBBcnJheS4gKi8KICAJCQloZWFkZXJCeXRlcyA9IEdDX0FSUkFZX0hFQURFUl9T
SVpFOwohIAkJCW9iamVjdEJ5dGVzID0gZXh0cmFjdEFycmF5TnVtQnl0ZXMocCwgbnVtUG9p
bnRlcnMsIG51bU5vblBvaW50ZXJzKTsKICAJCQlza2lwID0gMDsKICAJCQkvKiBFbXB0eSBh
cnJheXMgaGF2ZSBQT0lOVEVSX1NJWkUgYnl0ZXMgZm9yIHRoZSAKICAJCQkgKiBmb3J3YXJk
aW5nIHBvaW50ZXIuCioqKioqKioqKioqKioqKgoqKiogOTEzLDkyMiAqKioqCiAgCQkJaWYg
KDAgPT0gb2JqZWN0Qnl0ZXMpIG9iamVjdEJ5dGVzID0gUE9JTlRFUl9TSVpFOwogIAkJfSAK
ICAJCXNpemUgPSBoZWFkZXJCeXRlcyArIG9iamVjdEJ5dGVzOwohIAkJaWYgKHMtPmJhY2sg
KyBzaXplICsgc2tpcCA+IHMtPnRvTGltaXQpCiEgCQkJZGllKCJPdXQgb2YgbWVtb3J5LiIp
OwogIAkJLyogQ29weSB0aGUgb2JqZWN0LiAqLwogIAkJbWVtbW92ZShzLT5iYWNrLCBwIC0g
aGVhZGVyQnl0ZXMsIHNpemUpOwogICAJCS8qIFN0b3JlIHRoZSBmb3J3YXJkaW5nIHBvaW50
ZXIgaW4gdGhlIG9sZCBvYmplY3QuICovCiAgCQkqKHdvcmQqKShwIC0gV09SRF9TSVpFKSA9
IEZPUldBUkRFRDsKICAJCSoocG9pbnRlciopcCA9IHMtPmJhY2sgKyBoZWFkZXJCeXRlczsK
LS0tIDk5OSwxMDE4IC0tLS0KICAJCQlpZiAoMCA9PSBvYmplY3RCeXRlcykgb2JqZWN0Qnl0
ZXMgPSBQT0lOVEVSX1NJWkU7CiAgCQl9IAogIAkJc2l6ZSA9IGhlYWRlckJ5dGVzICsgb2Jq
ZWN0Qnl0ZXM7CiEgCQlpZiAocy0+YmFjayArIHNpemUgKyBza2lwID4gcy0+dG9MaW1pdCkg
ewohIAkJICBkaWUoIk91dCBvZiBtZW1vcnkgKGZvcndhcmQpLlxuc2l6ZT0ldSBza2lwPSV1
IHJlbWFpbmluZz0lZCBzLT5mcm9tU2l6ZT0lZCBzLT50b1NpemU9JWQgaGVhZGVyQnl0ZXM9
JWQgb2JqZWN0Qnl0ZXM9JWQgaGVhZGVyPSV4XG5EaWFnbm9zdGljOiBwcm9iYWJseSBhIFJB
TSBwcm9ibGVtLiIsCiEgCQkgICAgICBzaXplLCBza2lwLCBzLT50b0xpbWl0IC0gcy0+YmFj
aywgcy0+ZnJvbVNpemUsIHMtPnRvU2l6ZSwgaGVhZGVyQnl0ZXMsIG9iamVjdEJ5dGVzLCBo
ZWFkZXIpOwohIAkJfQogIAkJLyogQ29weSB0aGUgb2JqZWN0LiAqLworIAkJaWYgKHByb2Nl
c3Nvcl9oYXNfc3NlMiAmJiBzaXplPj04MTkyKSB7CisgCQkgIGV4dGVybiB2b2lkIGJjb3B5
X3NpbWQodm9pZCAqLCB2b2lkIGNvbnN0ICosIGludCk7CisgCQkgIGJjb3B5X3NpbWQocCAt
IGhlYWRlckJ5dGVzLCBzLT5iYWNrLCBzaXplKTsKKyAJCX0KKyAJCWVsc2UKICAJCSAgbWVt
bW92ZShzLT5iYWNrLCBwIC0gaGVhZGVyQnl0ZXMsIHNpemUpOworICNpZmRlZiBNRVRFUgor
IAkJaWYgKHNpemUgPCBzaXplb2Yoc2l6ZXMpL3NpemVvZihzaXplc1swXSkpIHNpemVzW3Np
emVdKys7CisgI2VuZGlmCiAgIAkJLyogU3RvcmUgdGhlIGZvcndhcmRpbmcgcG9pbnRlciBp
biB0aGUgb2xkIG9iamVjdC4gKi8KICAJCSood29yZCopKHAgLSBXT1JEX1NJWkUpID0gRk9S
V0FSREVEOwogIAkJKihwb2ludGVyKilwID0gcy0+YmFjayArIGhlYWRlckJ5dGVzOwoqKioq
KioqKioqKioqKioKKioqIDkzMiw5NDEgKioqKgotLS0gMTAyOCwxMDUyIC0tLS0KICAvKiAg
ICAgICAgICAgICAgICAgICAgICAgZG9HQyAgICAgICAgICAgICAgICAgICAgICAgICovCiAg
LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAq
LwogIAorIHN0YXRpYyB2b2lkIGZvcmVhY2hQb2ludGVySW5SYW5nZV9mb3J3YXJkKEdDX3N0
YXRlIHMsIHBvaW50ZXIgZnJvbnQsIHBvaW50ZXIgKmJhY2spIHsKKyAgIHBvaW50ZXIgYiA9
ICpiYWNrOworIAorICAgYXNzZXJ0KGZyb250IDw9ICpiYWNrKTsKKyAgIHdoaWxlIChmcm9u
dCA8IGIpIHsKKyAgICAgd2hpbGUgKGZyb250IDwgYikgeworICAgICAgIGFzc2VydChpc1dv
cmRBbGlnbmVkKCh1aW50KWZyb250KSk7CisgICAgICAgZnJvbnQgPSBmb3JlYWNoUG9pbnRl
ckluT2JqZWN0KHMsIGZvcndhcmQsIHRvRGF0YShmcm9udCkpOworICAgICB9CisgICAgIGIg
PSAqYmFjazsKKyAgIH0KKyAgIGFzc2VydChmcm9udCA9PSAqYmFjayk7CisgfQorIAogIHN0
YXRpYyB2b2lkIGRvR0MoR0Nfc3RhdGUgcywgdWludCBieXRlc1JlcXVlc3RlZCwgdWludCBz
dGFja0J5dGVzUmVxdWVzdGVkKSB7CiAgCXVpbnQgZ2NUaW1lOwogIAl1aW50IHNpemU7CiAg
CXBvaW50ZXIgZnJvbnQ7CisgCWludCB0cnk9MDsKICAKICAJYXNzZXJ0KGludmFyaWFudChz
KSk7CiAgCWlmIChERUJVRyBvciBzLT5tZXNzYWdlcykKKioqKioqKioqKioqKioqCioqKiA5
NDQsOTU1ICoqKioKICAJdW5sZXNzIChzLT51c2VGaXhlZEhlYXApIHsgLyogR2V0IHRvU3Bh
Y2UgcmVhZHkuICovCiAgCQl1aW50IG5lZWRlZDsKICAKICAJCW5lZWRlZCA9IGNvbXB1dGVI
ZWFwU2l6ZQogIAkJCShzLCBzLT5ieXRlc0xpdmUgKyBieXRlc1JlcXVlc3RlZCArIHN0YWNr
Qnl0ZXNSZXF1ZXN0ZWQsCiEgCQkJCXMtPmxpdmVSYXRpbyk7CiAgCiAgCQkvKiB0b1NwYWNl
IG11c3QgYmUgYXQgbGVhc3QgYXMgYmlnIGFzIGZyb21TcGFjZSAqLwohIAkJaWYgKG5lZWRl
ZCA8IHMtPmZyb21TaXplKQogIAkJCW5lZWRlZCA9IHMtPmZyb21TaXplOwogIAogIAkJLyog
TWFzc2FnZSB0b1NwYWNlIHNvIHRoYXQgaXQgaXMgb2YgbmVlZGVkIHNpemUuICovCi0tLSAx
MDU1LDEwNjkgLS0tLQogIAl1bmxlc3MgKHMtPnVzZUZpeGVkSGVhcCkgeyAvKiBHZXQgdG9T
cGFjZSByZWFkeS4gKi8KICAJCXVpbnQgbmVlZGVkOwogIAorIAlyZXRyeToKICAJCW5lZWRl
ZCA9IGNvbXB1dGVIZWFwU2l6ZQogIAkJCShzLCBzLT5ieXRlc0xpdmUgKyBieXRlc1JlcXVl
c3RlZCArIHN0YWNrQnl0ZXNSZXF1ZXN0ZWQsCiEgCQkJIHMtPmxpdmVSYXRpbywKISAJCQkg
MSwKISAJCQkgdHJ5KTsKICAKICAJCS8qIHRvU3BhY2UgbXVzdCBiZSBhdCBsZWFzdCBhcyBi
aWcgYXMgZnJvbVNwYWNlICovCiEgCQlpZiAobmVlZGVkIDwgcy0+ZnJvbVNpemUgJiYgdHJ5
PD0xKQogIAkJCW5lZWRlZCA9IHMtPmZyb21TaXplOwogIAogIAkJLyogTWFzc2FnZSB0b1Nw
YWNlIHNvIHRoYXQgaXQgaXMgb2YgbmVlZGVkIHNpemUuICovCioqKioqKioqKioqKioqKgoq
KiogOTY5LDk3NiAqKioqCiAgCQkJIH0KICAJCX0KICAJCXMtPnRvU2l6ZSA9IG5lZWRlZDsK
ISAJCWlmIChOVUxMID09IHMtPnRvQmFzZSkKICAJCQl0b1NwYWNlKHMpOwogIAl9CiAgIAlz
LT5udW1HQ3MrKzsKICAgCXMtPmJ5dGVzQWxsb2NhdGVkICs9IHMtPmZyb250aWVyIC0gcy0+
YmFzZSAtIHMtPmJ5dGVzTGl2ZTsKLS0tIDEwODMsMTEwMyAtLS0tCiAgCQkJIH0KICAJCX0K
ICAJCXMtPnRvU2l6ZSA9IG5lZWRlZDsKISAJCWlmIChOVUxMID09IHMtPnRvQmFzZSkgewog
IAkJICB0b1NwYWNlKHMpOworIAkJICBpZiAocy0+dG9CYXNlID09ICh2b2lkKiktMSkgewor
IAkJICAgIHMtPnRvQmFzZSA9IDA7CisgCQkgICAgaWYgKHRyeSA+PSAxMykgeworIAkJICAg
ICAgc3RhdGljIGNoYXIgYnVmZmVyWzI1Nl07CisgCQkgICAgICBzcHJpbnRmKGJ1ZmZlciwg
Ii9iaW4vY2F0IC9wcm9jLyVkL21hcHNcbiIsIAorIAkJCSAgICAgIGdldHBpZCgpKTsKKyAJ
CSAgICAgICh2b2lkKXN5c3RlbShidWZmZXIpOworIAkJICAgICAgZGllKCJPVVQgT0YgU1dB
UCBTUEFDRTogY2Fubm90IG9idGFpbiAldSBieXRlcy4iLCBzLT50b1NpemUpOworIAkJICAg
IH0KKyAJCSAgICB0cnkrKzsKKyAJCSAgICBnb3RvIHJldHJ5OworIAkJICB9CisgCQl9CiAg
CX0KICAgCXMtPm51bUdDcysrOwogICAJcy0+Ynl0ZXNBbGxvY2F0ZWQgKz0gcy0+ZnJvbnRp
ZXIgLSBzLT5iYXNlIC0gcy0+Ynl0ZXNMaXZlOwoqKioqKioqKioqKioqKioKKioqIDk4Myw5
ODkgKioqKgogIAkvKiBUaGUgYWN0dWFsIEdDLiAqLwogIAlmcm9udCA9IHMtPmJhY2s7CiAg
CWZvcmVhY2hHbG9iYWwocywgZm9yd2FyZCk7CiEgCWZvcmVhY2hQb2ludGVySW5SYW5nZShz
LCBmcm9udCwgJnMtPmJhY2ssIGZvcndhcmQpOwogIAlzaXplID0gcy0+ZnJvbVNpemU7CiAg
CS8qIFN3YXAgZnJvbVNwYWNlIGFuZCB0b1NwYWNlLiAqLwogIAl7Ci0tLSAxMTEwLDExMTYg
LS0tLQogIAkvKiBUaGUgYWN0dWFsIEdDLiAqLwogIAlmcm9udCA9IHMtPmJhY2s7CiAgCWZv
cmVhY2hHbG9iYWwocywgZm9yd2FyZCk7CiEgCWZvcmVhY2hQb2ludGVySW5SYW5nZV9mb3J3
YXJkKHMsIGZyb250LCAmcy0+YmFjayk7CiAgCXNpemUgPSBzLT5mcm9tU2l6ZTsKICAJLyog
U3dhcCBmcm9tU3BhY2UgYW5kIHRvU3BhY2UuICovCiAgCXsKKioqKioqKioqKioqKioqCioq
KiAxMDA4LDEwMTggKioqKgogIAkJdWludCBuZWVkZWQ7CiAgCiAgCQluZWVkZWQgPSBzLT5i
eXRlc0xpdmUgKyBieXRlc1JlcXVlc3RlZDsKISAJCWlmIChjb21wdXRlSGVhcFNpemUocywg
bmVlZGVkLCBzLT5taW5MaXZlKSA8IHMtPmZyb21TaXplKSB7CiAgCQkJLyogc2hyaW5rIGhl
YXAgKi8KICAJCQl1aW50IGtlZXA7CiAgCiEgCQkJa2VlcCA9IGNvbXB1dGVIZWFwU2l6ZShz
LCBuZWVkZWQsIHMtPmxpdmVSYXRpbyk7CiAgCQkJaWYgKERFQlVHIG9yIHMtPm1lc3NhZ2Vz
KQogIAkJCQlmcHJpbnRmKHN0ZGVyciwgIlNocmlua2luZyBoZWFwIHRvICV1IGJ5dGVzLlxu
Iiwga2VlcCk7CiAgCQkJYXNzZXJ0KGtlZXAgPD0gcy0+ZnJvbVNpemUpOwotLS0gMTEzNSwx
MTQ1IC0tLS0KICAJCXVpbnQgbmVlZGVkOwogIAogIAkJbmVlZGVkID0gcy0+Ynl0ZXNMaXZl
ICsgYnl0ZXNSZXF1ZXN0ZWQ7CiEgCQlpZiAoY29tcHV0ZUhlYXBTaXplKHMsIG5lZWRlZCwg
cy0+bWluTGl2ZSwgMCwgMCkgPCBzLT5mcm9tU2l6ZSkgewogIAkJCS8qIHNocmluayBoZWFw
ICovCiAgCQkJdWludCBrZWVwOwogIAohIAkJCWtlZXAgPSBjb21wdXRlSGVhcFNpemUocywg
bmVlZGVkLCBzLT5saXZlUmF0aW8sIDAsIDApOwogIAkJCWlmIChERUJVRyBvciBzLT5tZXNz
YWdlcykKICAJCQkJZnByaW50ZihzdGRlcnIsICJTaHJpbmtpbmcgaGVhcCB0byAldSBieXRl
cy5cbiIsIGtlZXApOwogIAkJCWFzc2VydChrZWVwIDw9IHMtPmZyb21TaXplKTsKKioqKioq
KioqKioqKioqCioqKiAxMDIxLDEwMjcgKioqKgogIAkJfQogIAkKICAJCWlmICgocy0+dG9T
aXplIDwgcy0+ZnJvbVNpemUpCiEgCQkgICAgb3IgKGNvbXB1dGVIZWFwU2l6ZShzLCBuZWVk
ZWQsIHMtPm1heExpdmUpID4gcy0+ZnJvbVNpemUpKSB7CiAgCQkJLyogcHJlcGFyZSB0byBh
bGxvY2F0ZSBuZXcgdG9TcGFjZSBhdCBuZXh0IEdDICovCiAgCQkJc211bm1hcChzLT50b0Jh
c2UsIHMtPnRvU2l6ZSk7CiAgCQkJcy0+dG9CYXNlID0gTlVMTDsKLS0tIDExNDgsMTE1NSAt
LS0tCiAgCQl9CiAgCQogIAkJaWYgKChzLT50b1NpemUgPCBzLT5mcm9tU2l6ZSkKISAJCSAg
ICBvciAocy0+dG9TaXplID49ICgxMjh1bCoxMDI0dWwqMTAyNHVsKSkKISAJCSAgICBvciAo
Y29tcHV0ZUhlYXBTaXplKHMsIG5lZWRlZCwgcy0+bWF4TGl2ZSwgMCwgMCkgPiBzLT5mcm9t
U2l6ZSkpIHsKICAJCQkvKiBwcmVwYXJlIHRvIGFsbG9jYXRlIG5ldyB0b1NwYWNlIGF0IG5l
eHQgR0MgKi8KICAJCQlzbXVubWFwKHMtPnRvQmFzZSwgcy0+dG9TaXplKTsKICAJCQlzLT50
b0Jhc2UgPSBOVUxMOwoqKioqKioqKioqKioqKioKKioqIDEwNDMsMTA1NiAqKioqCiAgCQkJ
aW50VG9Db21tYVN0cmluZyhzLT5ieXRlc0xpdmUpLAogIAkJCTEwMC4wICogKChkb3VibGUp
IHMtPmJ5dGVzTGl2ZSkgLyBzaXplKTsKICAJfQohIAlpZiAoYnl0ZXNSZXF1ZXN0ZWQgPiBz
LT5saW1pdCAtIHMtPmZyb250aWVyKSB7CiEgCQlpZiAoREVCVUcpCiEgCQkJZnByaW50Zihz
dGRlcnIsICJSZWN1cnNpdmUgY2FsbCB0byBkb0dDLlxuIik7CiEgCQlpZiAocy0+dXNlRml4
ZWRIZWFwIG9yIHMtPmZyb21TaXplID09IHMtPm1heEhlYXBTaXplKSB7CiEgCQkJZGllKCJP
dXQgb2YgbWVtb3J5LiIpOwohIAkJfSBlbHNlIGRvR0MocywgYnl0ZXNSZXF1ZXN0ZWQsIDAp
OwogIAl9CiEgCWFzc2VydChieXRlc1JlcXVlc3RlZCA8PSBzLT5saW1pdCAtIHMtPmZyb250
aWVyKTsKICAJYXNzZXJ0KGludmFyaWFudChzKSk7CiAgfQogIAotLS0gMTE3MSwxMTgzIC0t
LS0KICAJCQlpbnRUb0NvbW1hU3RyaW5nKHMtPmJ5dGVzTGl2ZSksCiAgCQkJMTAwLjAgKiAo
KGRvdWJsZSkgcy0+Ynl0ZXNMaXZlKSAvIHNpemUpOwogIAl9CiEgIAl1bmxlc3MgKHMtPmZy
b250aWVyICsgYnl0ZXNSZXF1ZXN0ZWQgPD0gcy0+bGltaXQpIHsKISAJICBpZiAocy0+dXNl
Rml4ZWRIZWFwKSB7CiEgCSAgICBkaWUoIk91dCBvZiBtZW1vcnkgKGRvR0MpLiIpOwohIAkg
IH0gCiEgCSAgZG9HQyhzLCBieXRlc1JlcXVlc3RlZCwgMCk7CiAgCX0KISAgCWFzc2VydChz
LT5mcm9udGllciArIGJ5dGVzUmVxdWVzdGVkIDw9IHMtPmxpbWl0KTsKICAJYXNzZXJ0KGlu
dmFyaWFudChzKSk7CiAgfQogIAoqKioqKioqKioqKioqKioKKioqIDEwNzIsMTA3OCAqKioq
CiAgCQkJPiBzLT5saW1pdCkpIHsKICAJCS8qIFRoaXMgR0Mgd2lsbCBncm93IHRoZSBzdGFj
aywgaWYgbmVjZXNzYXJ5LiAqLwogIAkJZG9HQyhzLCBieXRlc1JlcXVlc3RlZCwgcy0+Y3Vy
cmVudFRocmVhZC0+c3RhY2stPnJlc2VydmVkKTsKISAJCWFzc2VydChieXRlc1JlcXVlc3Rl
ZCA8PSBzLT5saW1pdCAtIHMtPmZyb250aWVyKTsKICAJfSBlbHNlIGlmIChub3Qoc3RhY2tU
b3BJc09rKHMsIHMtPmN1cnJlbnRUaHJlYWQtPnN0YWNrKSkpIHsKICAJCXVpbnQgc2l6ZTsK
ICAJCUdDX3N0YWNrIHN0YWNrOwotLS0gMTE5OSwxMjA1IC0tLS0KICAJCQk+IHMtPmxpbWl0
KSkgewogIAkJLyogVGhpcyBHQyB3aWxsIGdyb3cgdGhlIHN0YWNrLCBpZiBuZWNlc3Nhcnku
ICovCiAgCQlkb0dDKHMsIGJ5dGVzUmVxdWVzdGVkLCBzLT5jdXJyZW50VGhyZWFkLT5zdGFj
ay0+cmVzZXJ2ZWQpOwohIAkJYXNzZXJ0IChzLT5mcm9udGllciArIGJ5dGVzUmVxdWVzdGVk
IDw9IHMtPmxpbWl0KTsKICAJfSBlbHNlIGlmIChub3Qoc3RhY2tUb3BJc09rKHMsIHMtPmN1
cnJlbnRUaHJlYWQtPnN0YWNrKSkpIHsKICAJCXVpbnQgc2l6ZTsKICAJCUdDX3N0YWNrIHN0
YWNrOwoqKioqKioqKioqKioqKioKKioqIDEwODcsMTA5MyAqKioqCiAgCQlzdGFja0NvcHko
cy0+Y3VycmVudFRocmVhZC0+c3RhY2ssIHN0YWNrKTsKICAJCXMtPmN1cnJlbnRUaHJlYWQt
PnN0YWNrID0gc3RhY2s7CiAgCQlzZXRTdGFjayhzKTsKISAJCWFzc2VydChieXRlc1JlcXVl
c3RlZCA8PSBzLT5saW1pdCAtIHMtPmZyb250aWVyKTsKICAJfSBlbHNlIGlmIChzLT5zaWdu
YWxJc1BlbmRpbmcgYW5kIDAgPT0gcy0+Y2FuSGFuZGxlKSB7CiAgCQkvKiBTd2l0Y2ggdG8g
dGhlIHNpZ25hbCBoYW5kbGVyIHRocmVhZC4gKi8KICAJCXMtPnNpZ25hbElzUGVuZGluZyA9
IEZBTFNFOwotLS0gMTIxNCwxMjIwIC0tLS0KICAJCXN0YWNrQ29weShzLT5jdXJyZW50VGhy
ZWFkLT5zdGFjaywgc3RhY2spOwogIAkJcy0+Y3VycmVudFRocmVhZC0+c3RhY2sgPSBzdGFj
azsKICAJCXNldFN0YWNrKHMpOwohIAkJYXNzZXJ0KHMtPmZyb250aWVyICsgYnl0ZXNSZXF1
ZXN0ZWQgPD0gcy0+bGltaXQpOwogIAl9IGVsc2UgaWYgKHMtPnNpZ25hbElzUGVuZGluZyBh
bmQgMCA9PSBzLT5jYW5IYW5kbGUpIHsKICAJCS8qIFN3aXRjaCB0byB0aGUgc2lnbmFsIGhh
bmRsZXIgdGhyZWFkLiAqLwogIAkJcy0+c2lnbmFsSXNQZW5kaW5nID0gRkFMU0U7CioqKioq
KioqKioqKioqKgoqKiogMTExOCwxMTI0ICoqKioKICAJCQkJPyBQT0lOVEVSX1NJWkUgCiAg
CQkJCTogd29yZEFsaWduKG51bUVsZW1lbnRzKSk7CiAgCiEgCQlpZiAoZnJvbnRpZXIgKyBu
dW1CeXRlcyA+IHMtPmxpbWl0KQogIAkJCWRpZSgiVW5hYmxlIHRvIGFsbG9jYXRlIHN0cmlu
ZyBjb25zdGFudCBcIiVzXCIuIiwgCiAgCQkJCWluaXRzW2ldLnN0cik7CiAgCQotLS0gMTI0
NSwxMjUxIC0tLS0KICAJCQkJPyBQT0lOVEVSX1NJWkUgCiAgCQkJCTogd29yZEFsaWduKG51
bUVsZW1lbnRzKSk7CiAgCiEgCQlpZiAoZnJvbnRpZXIgKyBudW1CeXRlcyA+PSBzLT5saW1p
dCkKICAJCQlkaWUoIlVuYWJsZSB0byBhbGxvY2F0ZSBzdHJpbmcgY29uc3RhbnQgXCIlc1wi
LiIsIAogIAkJCQlpbml0c1tpXS5zdHIpOwogIAkKKioqKioqKioqKioqKioqCioqKiAxMTcx
LDExNzYgKioqKgotLS0gMTI5OCwxMzEyIC0tLS0KICAJCQkJKyAocy0+ZnJvbnRpZXIgLSBz
LT5iYXNlIC0gcy0+Ynl0ZXNMaXZlKSk7CiAgCQlkaXNwbGF5VWxsb25nKCJieXRlcyBjb3Bp
ZWQiLCBzLT5ieXRlc0NvcGllZCk7CiAgCQlkaXNwbGF5VWludCgibWF4IGJ5dGVzIGxpdmUi
LCBzLT5tYXhCeXRlc0xpdmUpOworICNpZmRlZiBNRVRFUgorIAkJeworIAkJICBpbnQgaTsK
KyAJCSAgZm9yKGk9MDsgaTxzaXplb2Yoc2l6ZXMpL3NpemVvZihzaXplc1swXSk7IGkrKykg
eworIAkJICAgIGlmIChzaXplc1tpXSE9MCkKKyAJCSAgICAgIGZwcmludGYoc3RkZXJyLCAi
Q09VTlRbJWRdPSVkXG4iLCBpLCBzaXplc1tpXSk7CisgCQkgIH0KKyAJCX0KKyAjZW5kaWYK
ICAJfQkKICB9CiAgCioqKioqKioqKioqKioqKgoqKiogMTIyOSwxMjM1ICoqKioKICB9CiAg
CiAgLyogVHJhbnNsYXRlIGFsbCBwb2ludGVycyB0byB0aGUgaGVhcCBmcm9tIHdpdGhpbiB0
aGUgc3RhY2sgYW5kIHRoZSBoZWFwIGZvcgohICAqIGEgaGVhcCB0aGF0IGhhcyBtb3ZlZCBm
cm9tIHMtPmJhc2UgPT0gb2xkIHRvIHMtPmJhc2UuCiAgICovCiAgc3RhdGljIHZvaWQgdHJh
bnNsYXRlSGVhcChHQ19zdGF0ZSBzLCBwb2ludGVyIG9sZCkgewogIAlpZiAocy0+YmFzZSA9
PSBvbGQpCi0tLSAxMzY1LDEzNzEgLS0tLQogIH0KICAKICAvKiBUcmFuc2xhdGUgYWxsIHBv
aW50ZXJzIHRvIHRoZSBoZWFwIGZyb20gd2l0aGluIHRoZSBzdGFjayBhbmQgdGhlIGhlYXAg
Zm9yCiEgdiAqIGEgaGVhcCB0aGF0IGhhcyBtb3ZlZCBmcm9tIHMtPmJhc2UgPT0gb2xkIHRv
IHMtPmJhc2UuCiAgICovCiAgc3RhdGljIHZvaWQgdHJhbnNsYXRlSGVhcChHQ19zdGF0ZSBz
LCBwb2ludGVyIG9sZCkgewogIAlpZiAocy0+YmFzZSA9PSBvbGQpCioqKioqKioqKioqKioq
KgoqKiogMTI4NSwxMjkxICoqKioKICAJCQlzLT5mcm9tU2l6ZSA9IGZyb21TaXplOwogIAkJ
ZWxzZSB7CiAgCQkJcy0+bWF4SGVhcFNpemUgPSBtYXhIZWFwU2l6ZTsKISAJCQlzLT5mcm9t
U2l6ZSA9IGNvbXB1dGVIZWFwU2l6ZShzLCBoZWFwU2l6ZSwgcy0+bGl2ZVJhdGlvKTsKICAJ
CX0KICAJfQogIAotLS0gMTQyMSwxNDI3IC0tLS0KICAJCQlzLT5mcm9tU2l6ZSA9IGZyb21T
aXplOwogIAkJZWxzZSB7CiAgCQkJcy0+bWF4SGVhcFNpemUgPSBtYXhIZWFwU2l6ZTsKISAJ
CQlzLT5mcm9tU2l6ZSA9IGNvbXB1dGVIZWFwU2l6ZShzLCBoZWFwU2l6ZSwgcy0+bGl2ZVJh
dGlvLCAwLCAwKTsKICAJCX0KICAJfQogIAoqKioqKioqKioqKioqKioKKioqIDEzMTMsMTMx
OCAqKioqCi0tLSAxNDQ5LDE0NTcgLS0tLQogIAlzLT50b1NpemUgPSBzLT5mcm9tU2l6ZTsK
ICAJdG9TcGFjZShzKTsKICAKKyAJaWYgKHMtPnRvQmFzZSA9PSAodm9pZCopLTEpCisgCSAg
ZGllKCJPdXQgb2Ygc3dhcCBzcGFjZSIpOworIAogIAlhc3NlcnQoaW52YXJpYW50KHMpKTsK
ICB9CiAgCioqKioqKioqKioqKioqKgoqKiogMTQzMCwxNDM1ICoqKioKLS0tIDE1NjksMTU3
NiAtLS0tCiAgCWlmIChzLT50b0Jhc2UgPT0gTlVMTCkgewogIAkJcy0+dG9TaXplID0gcy0+
ZnJvbVNpemU7CiAgCQl0b1NwYWNlKHMpOworIAkJaWYgKHMtPnRvQmFzZSA9PSAodm9pZCop
LTEpCisgCQkgIGRpZSgiT3V0IG9mIHN3YXAgc3BhY2UiKTsKICAJfQogIAlhc3NlcnQocy0+
dG9CYXNlICE9IE5VTEwpOwogIAlhc3NlcnQocy0+dG9TaXplID49IHMtPmZyb21TaXplKTsK
KioqKioqKioqKioqKioqCioqKiAxNDg0LDE0ODYgKioqKgotLS0gMTYyNSwxNjI4IC0tLS0K
ICAJdW5tYXJrRGVlcChzLCByb290KTsKICAJcmV0dXJuIHNpemU7CiAgfQorIApkaWZmIC13
IC1jIC1yIG1sdG9uLTIwMDAwOTA2Lm9yZy9zcmMvcnVudGltZS9nYy5oIC91c3IvbG9jYWwv
bWx0b24tNi9zcmMvcnVudGltZS9nYy5oCioqKiBtbHRvbi0yMDAwMDkwNi5vcmcvc3JjL3J1
bnRpbWUvZ2MuaAlUdWUgQXVnIDE1IDIzOjAzOjQ5IDIwMDAKLS0tIC91c3IvbG9jYWwvbWx0
b24tNi9zcmMvcnVudGltZS9nYy5oCVR1ZSBBdWcgIDcgMTc6NTc6NTcgMjAwMQoqKioqKioq
KioqKioqKioKKioqIDExLDE2ICoqKioKLS0tIDExLDE3IC0tLS0KICAjaW5jbHVkZSA8c2ln
bmFsLmg+CiAgI2luY2x1ZGUgPHN0ZGlvLmg+CiAgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNp
bmNsdWRlIDxhc20vc3RyaW5nLmg+CiAgCiAgI2luY2x1ZGUgIm15LWxpYi5oIgogIAoqKioq
KioqKioqKioqKioKKioqIDg0LDkwICoqKioKICB9CiAgCiAgc3RhdGljIGlubGluZSB1aW50
IHdvcmRBbGlnbih1aW50IHApIHsKISAJcmV0dXJuICgoMSArICgocCAtIDEpID4+IDIpKSA8
PCAyKTsKICB9CiAgCiAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSAqLwotLS0gODUsOTEgLS0tLQogIH0KICAKICBzdGF0aWMgaW5saW5l
IHVpbnQgd29yZEFsaWduKHVpbnQgcCkgewohICAgICAgICAgcmV0dXJuICgocCArIDMpICYg
fiAzKTsKICB9CiAgCiAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSAqLwoqKioqKioqKioqKioqKioKKioqIDE1OCwxNjggKioqKgogICAq
ICAgdGhlc2UgdmFsdWVzIHNvIHRoYXQgZXZlcnl0aGluZyBpcyBjb25zaXN0ZW50LgogICAq
LwogIHR5cGVkZWYgc3RydWN0IEdDX3N0YXRlIHsKICAJLyogaGVhcCAqLwogIAl1aW50IGZy
b21TaXplOwkJLyogc2l6ZSAoYnl0ZXMpIG9mIGZyb20gc3BhY2UgKi8KICAJcG9pbnRlciBi
YXNlOwkJLyogc3RhcnQgKGxvd2VzdCBhZGRyZXNzKSBvZiBmcm9tIHNwYWNlICovCi0gCXBv
aW50ZXIgbGltaXQ7IAkJLyogZW5kIG9mIGZyb20gc3BhY2UgKi8KLSAJcG9pbnRlciBmcm9u
dGllcjsgCS8qIGJhc2UgPD0gZnJvbnRpZXIgPCBsaW1pdCAqLwogIAl1aW50IHRvU2l6ZTsg
CQkvKiBzaXplIChieXRlcykgb2YgdG8gc3BhY2UgKi8KICAJcG9pbnRlciB0b0Jhc2U7CQkv
KiBzdGFydCAobG93ZXN0IGFkZHJlc3MpIG9mIHRvIHNwYWNlICovCiAgCQotLS0gMTU5LDE3
MiAtLS0tCiAgICogICB0aGVzZSB2YWx1ZXMgc28gdGhhdCBldmVyeXRoaW5nIGlzIGNvbnNp
c3RlbnQuCiAgICovCiAgdHlwZWRlZiBzdHJ1Y3QgR0Nfc3RhdGUgeworIAlwb2ludGVyIGZy
b250aWVyOyAJLyogYmFzZSA8PSBmcm9udGllciA8IGxpbWl0ICovCisgCXBvaW50ZXIgbGlt
aXQ7IAkJLyogZW5kIG9mIGZyb20gc3BhY2UgKi8KKyAJcG9pbnRlciBzdGFja1RvcDsKKyAJ
cG9pbnRlciBzdGFja0xpbWl0OwkvKiBzdGFja0JvdHRvbSArIHN0YWNrU2l6ZSAtIG1heEZy
YW1lU2l6ZSAqLworIAogIAkvKiBoZWFwICovCiAgCXVpbnQgZnJvbVNpemU7CQkvKiBzaXpl
IChieXRlcykgb2YgZnJvbSBzcGFjZSAqLwogIAlwb2ludGVyIGJhc2U7CQkvKiBzdGFydCAo
bG93ZXN0IGFkZHJlc3MpIG9mIGZyb20gc3BhY2UgKi8KICAJdWludCB0b1NpemU7IAkJLyog
c2l6ZSAoYnl0ZXMpIG9mIHRvIHNwYWNlICovCiAgCXBvaW50ZXIgdG9CYXNlOwkJLyogc3Rh
cnQgKGxvd2VzdCBhZGRyZXNzKSBvZiB0byBzcGFjZSAqLwogIAkKKioqKioqKioqKioqKioq
CioqKiAxODIsMTkwICoqKioKICAJR0NfdGhyZWFkIHNhdmVkVGhyZWFkOwogIAogIAkvKiBT
dGFjayBpbiBjdXJyZW50IHRocmVhZCAqLwotIAlwb2ludGVyIHN0YWNrVG9wOwogIAlwb2lu
dGVyIHN0YWNrQm90dG9tOwkKLSAJcG9pbnRlciBzdGFja0xpbWl0OwkvKiBzdGFja0JvdHRv
bSArIHN0YWNrU2l6ZSAtIG1heEZyYW1lU2l6ZSAqLwogIAl1aW50IG1heEZyYW1lU2l6ZTsK
ICAJdWludCBtYXhGcmFtZUluZGV4OyAgICAgLyogMCA8PSBmcmFtZUluZGV4IDwgbWF4RnJh
bWVJbmRleCAqLwogIAlHQ19mcmFtZUxheW91dCAqZnJhbWVMYXlvdXRzOwotLS0gMTg2LDE5
MiAtLS0tCioqKioqKioqKioqKioqKgoqKiogNDA4LDQxMiAqKioqCiAgCXJldHVybiBzLT5z
dGFja0JvdHRvbSA8PSBzbG90IAogIAkJYW5kIHNsb3QgPCBzLT5zdGFja0JvdHRvbSArIHMt
PmN1cnJlbnRUaHJlYWQtPnN0YWNrLT5yZXNlcnZlZDsKICB9CiEgCiAgI2VuZGlmIC8qICNp
Zm5kZWYgX01MVE9OX0dDX0ggKi8KLS0tIDQxMCw0MTQgLS0tLQogIAlyZXR1cm4gcy0+c3Rh
Y2tCb3R0b20gPD0gc2xvdCAKICAJCWFuZCBzbG90IDwgcy0+c3RhY2tCb3R0b20gKyBzLT5j
dXJyZW50VGhyZWFkLT5zdGFjay0+cmVzZXJ2ZWQ7CiAgfQohICNkZWZpbmUgbWVtbW92ZShk
LHMsbCkgX19jb25zdGFudF9tZW1jcHkoZCxzLGwpCiAgI2VuZGlmIC8qICNpZm5kZWYgX01M
VE9OX0dDX0ggKi8KT25seSBpbiAvdXNyL2xvY2FsL21sdG9uLTYvc3JjL3J1bnRpbWU6IGdj
Lm8KT25seSBpbiAvdXNyL2xvY2FsL21sdG9uLTYvc3JjL3J1bnRpbWU6IGdjLnMKT25seSBp
biAvdXNyL2xvY2FsL21sdG9uLTYvc3JjL3J1bnRpbWU6IGdjLnMuMQpPbmx5IGluIC91c3Iv
bG9jYWwvbWx0b24tNi9zcmMvcnVudGltZTogZ2Mucy5iYXNlCk9ubHkgaW4gL3Vzci9sb2Nh
bC9tbHRvbi02L3NyYy9ydW50aW1lOiBnYy5zLm9sZApPbmx5IGluIC91c3IvbG9jYWwvbWx0
b24tNi9zcmMvcnVudGltZTogZ2Mucy5wcHJvCk9ubHkgaW4gL3Vzci9sb2NhbC9tbHRvbi02
L3NyYy9ydW50aW1lOiBnbXAtc3R1ZmYKT25seSBpbiAvdXNyL2xvY2FsL21sdG9uLTYvc3Jj
L3J1bnRpbWU6IGdtcC5oCk9ubHkgaW4gL3Vzci9sb2NhbC9tbHRvbi02L3NyYy9ydW50aW1l
OiBpbnQtaW5mLWdkYi5vCmRpZmYgLXcgLWMgLXIgbWx0b24tMjAwMDA5MDYub3JnL3NyYy9y
dW50aW1lL2ludC1pbmYuYyAvdXNyL2xvY2FsL21sdG9uLTYvc3JjL3J1bnRpbWUvaW50LWlu
Zi5jCioqKiBtbHRvbi0yMDAwMDkwNi5vcmcvc3JjL3J1bnRpbWUvaW50LWluZi5jCVR1ZSBK
dWwgMTggMjA6MDA6NDggMjAwMAotLS0gL3Vzci9sb2NhbC9tbHRvbi02L3NyYy9ydW50aW1l
L2ludC1pbmYuYwlUaHUgQXVnICA5IDE1OjAzOjQ3IDIwMDEKKioqKioqKioqKioqKioqCioq
KiAyMDAsMjA1ICoqKioKLS0tIDIwMCwyMjkgLS0tLQogIAogIAogIHN0cnVjdCBpbnRJbmZS
ZXNfdAkqCisgSW50SW5mX2RvX2djZChwb2ludGVyIGxocywgcG9pbnRlciByaHMsIHBvaW50
ZXIgcnNwYWNlLCBwb2ludGVyIGZyb250aWVyKQorIHsKKyAJYmlnbnVtCQkqYnA7CisgCV9f
bXB6X3N0cnVjdAlsaHNtcHosCisgCQkJcmhzbXB6LAorIAkJCXJlc21wejsKKyAJbXBfbGlt
Yl90CWxoc3NwYWNlWzJdLAorIAkJCXJoc3NwYWNlWzJdOworIAlzdGF0aWMgc3RydWN0IGlu
dEluZlJlc190CXJlczsKKyAKKyAJYnAgPSB0b0JpZ251bShyc3BhY2UpOworIAlhc3NlcnQo
ZnJvbnRpZXIgPT0gKHBvaW50ZXIpJmJwLT5saW1ic1ticC0+Y2FyZCAtIDFdKTsKKyAJZmls
bChsaHMsICZsaHNtcHosIGxoc3NwYWNlKTsKKyAJZmlsbChyaHMsICZyaHNtcHosIHJoc3Nw
YWNlKTsKKyAJaW5pdChicCwgJnJlc21weik7CisgCW1wel9nY2QoJnJlc21weiwgJmxoc21w
eiwgJnJoc21weik7CisgCWFzc2VydCgocmVzbXB6Ll9tcF9hbGxvYyA8IGJwLT5jYXJkKQor
IAlhbmQgKHJlc21wei5fbXBfZCA9PSBicC0+bGltYnMpKTsKKyAJYW5zd2VyKCZyZXNtcHos
ICZyZXMpOworIAlhc3NlcnQoKHBvaW50ZXIpYnAgPD0gcmVzLmZyb250aWVyKTsKKyAJcmV0
dXJuICgmcmVzKTsKKyB9CisgCisgc3RydWN0IGludEluZlJlc190CSoKICBJbnRJbmZfZG9f
YWRkKHBvaW50ZXIgbGhzLCBwb2ludGVyIHJocywgcG9pbnRlciByc3BhY2UsIHBvaW50ZXIg
ZnJvbnRpZXIpCiAgewogIAliaWdudW0JCSpicDsKZGlmZiAtdyAtYyAtciBtbHRvbi0yMDAw
MDkwNi5vcmcvc3JjL3J1bnRpbWUvaW50LWluZi5oIC91c3IvbG9jYWwvbWx0b24tNi9zcmMv
cnVudGltZS9pbnQtaW5mLmgKKioqIG1sdG9uLTIwMDAwOTA2Lm9yZy9zcmMvcnVudGltZS9p
bnQtaW5mLmgJVHVlIEp1bCAxOCAxOTo1OTowNiAyMDAwCi0tLSAvdXNyL2xvY2FsL21sdG9u
LTYvc3JjL3J1bnRpbWUvaW50LWluZi5oCVR1ZSBBdWcgIDcgMTc6NTc6NTcgMjAwMQoqKioq
KioqKioqKioqKioKKioqIDU3LDYyICoqKioKLS0tIDU3LDY3IC0tLS0KICAjZGVmaW5lCUlu
dEluZl9hcmVTbWFsbChsaHMsIHJocykJCQkJCVwKICAJKCgodWludCkobGhzKSAmICh1aW50
KShyaHMpICYgMHgxKSAhPSAwKQogIAorICNkZWZpbmUgSW50SW5mX2djZChsaHMsIHJocywg
c3BhY2UpCSgJCQkJXAorIAlpbnRJbmZSZXMgPSBJbnRJbmZfZG9fZ2NkKChsaHMpLCAocmhz
KSwgKHNwYWNlKSwgZnJvbnRpZXIpLAlcCisgCWZyb250aWVyID0gaW50SW5mUmVzLT5mcm9u
dGllciwJCQkJCVwKKyAJaW50SW5mUmVzLT52YWx1ZSkKKyAKICAjZGVmaW5lIEludEluZl9h
ZGQobGhzLCByaHMsIHNwYWNlKQkoCQkJCVwKICAJaW50SW5mUmVzID0gSW50SW5mX2RvX2Fk
ZCgobGhzKSwgKHJocyksIChzcGFjZSksIGZyb250aWVyKSwJXAogIAlmcm9udGllciA9IGlu
dEluZlJlcy0+ZnJvbnRpZXIsCQkJCQlcCioqKioqKioqKioqKioqKgoqKiogOTQsMTAwICoq
KioKICAKICAKICBleHRlcm4gdm9pZAlJbnRJbmZfaW5pdChHQ19zdGF0ZSBzdGF0ZSwgc3Ry
dWN0IGludEluZkluaXQgaW5pdHNbXSk7CiEgZXh0ZXJuIHN0cnVjdCBpbnRJbmZSZXNfdAkq
SW50SW5mX2RvX2FkZChwb2ludGVyIGxocywKICAJCQkJCSAgICAgcG9pbnRlciByaHMsCiAg
CQkJCQkgICAgIHBvaW50ZXIgcnNwYWNlLAogIAkJCQkJICAgICBwb2ludGVyIGZyb250aWVy
KSwKLS0tIDk5LDEwOSAtLS0tCiAgCiAgCiAgZXh0ZXJuIHZvaWQJSW50SW5mX2luaXQoR0Nf
c3RhdGUgc3RhdGUsIHN0cnVjdCBpbnRJbmZJbml0IGluaXRzW10pOwohIGV4dGVybiBzdHJ1
Y3QgaW50SW5mUmVzX3QJKkludEluZl9kb19nY2QocG9pbnRlciBsaHMsCiEgCQkJCQkgICAg
IHBvaW50ZXIgcmhzLAohIAkJCQkJICAgICBwb2ludGVyIHJzcGFjZSwKISAJCQkJCSAgICAg
cG9pbnRlciBmcm9udGllciksCiEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq
SW50SW5mX2RvX2FkZChwb2ludGVyIGxocywKICAJCQkJCSAgICAgcG9pbnRlciByaHMsCiAg
CQkJCQkgICAgIHBvaW50ZXIgcnNwYWNlLAogIAkJCQkJICAgICBwb2ludGVyIGZyb250aWVy
KSwKT25seSBpbiAvdXNyL2xvY2FsL21sdG9uLTYvc3JjL3J1bnRpbWU6IGludC1pbmYubwpP
bmx5IGluIC91c3IvbG9jYWwvbWx0b24tNi9zcmMvcnVudGltZTogbGliZ21wLmEKT25seSBp
biAvdXNyL2xvY2FsL21sdG9uLTYvc3JjL3J1bnRpbWU6IGxpYm1sdG9uLWdkYi5hCk9ubHkg
aW4gL3Vzci9sb2NhbC9tbHRvbi02L3NyYy9ydW50aW1lOiBsaWJtbHRvbi5hCk9ubHkgaW4g
L3Vzci9sb2NhbC9tbHRvbi02L3NyYy9ydW50aW1lOiBtbHRvbi1saWItZ2RiLm8KZGlmZiAt
dyAtYyAtciBtbHRvbi0yMDAwMDkwNi5vcmcvc3JjL3J1bnRpbWUvbWx0b24tbGliLmMgL3Vz
ci9sb2NhbC9tbHRvbi02L3NyYy9ydW50aW1lL21sdG9uLWxpYi5jCioqKiBtbHRvbi0yMDAw
MDkwNi5vcmcvc3JjL3J1bnRpbWUvbWx0b24tbGliLmMJRnJpIE9jdCAyMCAwNzo1MToyOSAy
MDAwCi0tLSAvdXNyL2xvY2FsL21sdG9uLTYvc3JjL3J1bnRpbWUvbWx0b24tbGliLmMJVGh1
IEF1ZyAgOSAxNTowMzo0NyAyMDAxCioqKioqKioqKioqKioqKgoqKiogNDI0LDQzMiAqKioq
CiAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSAqLwogIAogIHZvaWQgTUx0b25fb3ZlcmZsb3coKSB7CiEgCWRpZSgiTUx0b24gZG9lcyBu
b3QgaGFuZGxlIG92ZXJmbG93LiIpOwogIH0KICAKICBJbnQgSW50X2FkZENoZWNrKEludCBu
MSwgSW50IG4yKSB7CiAgCXJlZ2lzdGVyIGludCBlYXggYXNtKCJheCIpOwogIAotLS0gNDI0
LDQzMyAtLS0tCiAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSAqLwogIAogIHZvaWQgTUx0b25fb3ZlcmZsb3coKSB7CiEgCWRpZSgiSW50
ZXJuYWwgb3ZlcmZsb3cgZGV0ZWN0ZWQuIEhhbHQuIik7CiAgfQogIAorICNpZmRlZiBPRkZM
SU5FX09WRVJGTE9XX0FSSVRITUVUSUMKICBJbnQgSW50X2FkZENoZWNrKEludCBuMSwgSW50
IG4yKSB7CiAgCXJlZ2lzdGVyIGludCBlYXggYXNtKCJheCIpOwogIAoqKioqKioqKioqKioq
KioKKioqIDQ5Miw0OTcgKioqKgotLS0gNDkzLDQ5OSAtLS0tCiAgCQogIAlyZXR1cm4gZWR4
OwogIH0KKyAjZW5kaWYKICAKICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tICovCiAgLyogICAgICAgICAgICAgICAgICAgICAgSXRpbWVy
ICAgICAgICAgICAgICAgICAgICAgICAqLwpkaWZmIC13IC1jIC1yIG1sdG9uLTIwMDAwOTA2
Lm9yZy9zcmMvcnVudGltZS9tbHRvbi1saWIuaCAvdXNyL2xvY2FsL21sdG9uLTYvc3JjL3J1
bnRpbWUvbWx0b24tbGliLmgKKioqIG1sdG9uLTIwMDAwOTA2Lm9yZy9zcmMvcnVudGltZS9t
bHRvbi1saWIuaAlXZWQgU2VwICA2IDAyOjE0OjA4IDIwMDAKLS0tIC91c3IvbG9jYWwvbWx0
b24tNi9zcmMvcnVudGltZS9tbHRvbi1saWIuaAlUdWUgQXVnICA3IDE3OjU3OjU3IDIwMDEK
KioqKioqKioqKioqKioqCioqKiAyMzgsMjQ5ICoqKioKICAvKiAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAgCiAgI2lmIERFVEVDVF9P
VkVSRkxPVwohIGludCBJbnRfYWRkQ2hlY2soaW50IG4xLCBpbnQgbjIpOwohIGludCBJbnRf
c3ViQ2hlY2soaW50IG4xLCBpbnQgbjIpOwohIGludCBJbnRfbXVsQ2hlY2soaW50IG4xLCBp
bnQgbjIpOwogICNkZWZpbmUgSW50X211bCBJbnRfbXVsQ2hlY2sKICAjZGVmaW5lIEludF9h
ZGQgSW50X2FkZENoZWNrCiAgI2RlZmluZSBJbnRfc3ViIEludF9zdWJDaGVjawogICNlbHNl
CiAgI2RlZmluZSBJbnRfbXVsKG4xLCBuMikgKChuMSkgKiAobjIpKQogICNkZWZpbmUgSW50
X2FkZChuMSwgbjIpICgobjEpICsgKG4yKSkKLS0tIDIzOCwyNjkgLS0tLQogIC8qIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KICAKICAj
aWYgREVURUNUX09WRVJGTE9XCiEgc3RhdGljIGlubGluZSBpbnQgSW50X2FkZENoZWNrKGlu
dCBuMSwgaW50IG4yKTsKISBzdGF0aWMgaW5saW5lIGludCBJbnRfc3ViQ2hlY2soaW50IG4x
LCBpbnQgbjIpOwohIHN0YXRpYyBpbmxpbmUgaW50IEludF9tdWxDaGVjayhpbnQgbjEsIGlu
dCBuMik7CiAgI2RlZmluZSBJbnRfbXVsIEludF9tdWxDaGVjawogICNkZWZpbmUgSW50X2Fk
ZCBJbnRfYWRkQ2hlY2sKICAjZGVmaW5lIEludF9zdWIgSW50X3N1YkNoZWNrCisgc3RhdGlj
IGlubGluZSBJbnQgSW50X2FkZENoZWNrKEludCBuMSwgSW50IG4yKSB7CisgIAlfX2FzbV9f
IF9fdm9sYXRpbGVfXyAoImFkZGwgJTEsICUwXG5cdGpvIE1MdG9uX292ZXJmbG93IgorIAkJ
CSAgICAgIDogIityIiAobjEpIDogImciIChuMikgKTsKKyAKKyAJcmV0dXJuIG4xOworIH0K
KyAKKyBzdGF0aWMgaW5saW5lIEludCBJbnRfc3ViQ2hlY2soSW50IG4xLCBJbnQgbjIpIHsK
KyAgCV9fYXNtX18gX192b2xhdGlsZV9fICgic3VibCAlMSwgJTBcblx0am8gTUx0b25fb3Zl
cmZsb3ciCisgCQkJICAgICAgOiAiK3IiIChuMSkgOiAiZyIgKG4yKSApOworIAorIAlyZXR1
cm4gbjE7CisgfQorIAorIHN0YXRpYyBpbmxpbmUgSW50IEludF9tdWxDaGVjayhJbnQgbjEs
IEludCBuMikgeworICAJX19hc21fXyBfX3ZvbGF0aWxlX18gKCJpbXVsbCAlMSwgJTBcblx0
am8gTUx0b25fb3ZlcmZsb3ciCisgCQkJICAgICAgOiAiK3IiIChuMSkgOiAiZyIgKG4yKSAp
OworIAorIAlyZXR1cm4gbjE7CisgfQogICNlbHNlCiAgI2RlZmluZSBJbnRfbXVsKG4xLCBu
MikgKChuMSkgKiAobjIpKQogICNkZWZpbmUgSW50X2FkZChuMSwgbjIpICgobjEpICsgKG4y
KSkKKioqKioqKioqKioqKioqCioqKiAyNTUsMjYzICoqKioKICAjZGVmaW5lIEludF9nZShu
MSwgbjIpICgobjEpID49IChuMikpCiAgI2RlZmluZSBJbnRfZ2V1KHgsIHkpICgodWludCko
eCkgPj0gKHVpbnQpKHkpKQogICNkZWZpbmUgSW50X2d0dSh4LCB5KSAoKHVpbnQpKHgpID4g
KHVpbnQpKHkpKQohIEludCBJbnRfcXVvdChJbnQgbnVtZXJhdG9yLCBJbnQgZGVub21pbmF0
b3IpOwohIEludCBJbnRfcmVtKEludCBudW1lcmF0b3IsIEludCBkZW5vbWluYXRvcik7CiAg
I2RlZmluZSBJbnRfbmVnKG4pICgtKG4pKQogIAogIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KICAvKiAgICAgICAgICAgICAgICAg
ICAgICBJdGltZXIgICAgICAgICAgICAgICAgICAgICAgICovCi0tLSAyNzUsMjg3IC0tLS0K
ICAjZGVmaW5lIEludF9nZShuMSwgbjIpICgobjEpID49IChuMikpCiAgI2RlZmluZSBJbnRf
Z2V1KHgsIHkpICgodWludCkoeCkgPj0gKHVpbnQpKHkpKQogICNkZWZpbmUgSW50X2d0dSh4
LCB5KSAoKHVpbnQpKHgpID4gKHVpbnQpKHkpKQohIC8qc3RhdGljIGlubGluZSBJbnQgSW50
X3F1b3QoSW50IG51bWVyYXRvciwgSW50IGRlbm9taW5hdG9yKTsKISBzdGF0aWMgaW5saW5l
IEludCBJbnRfcmVtKEludCBudW1lcmF0b3IsIEludCBkZW5vbWluYXRvcik7CiEgKi8KICAj
ZGVmaW5lIEludF9uZWcobikgKC0obikpCisgCisgI2RlZmluZSBJbnRfcXVvdCh4LCB5KSAo
KHgpLyh5KSkKKyAjZGVmaW5lIEludF9yZW0oeCwgeSkgKCh4KSUoeSkpCiAgCiAgLyogLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogIC8q
ICAgICAgICAgICAgICAgICAgICAgIEl0aW1lciAgICAgICAgICAgICAgICAgICAgICAgKi8K
T25seSBpbiAvdXNyL2xvY2FsL21sdG9uLTYvc3JjL3J1bnRpbWU6IG1sdG9uLWxpYi5vCk9u
bHkgaW4gL3Vzci9sb2NhbC9tbHRvbi02L3NyYy9ydW50aW1lOiBtbHRvbi1wb3NpeC5vCmRp
ZmYgLXcgLWMgLXIgbWx0b24tMjAwMDA5MDYub3JnL3NyYy9ydW50aW1lL215LWxpYi5oIC91
c3IvbG9jYWwvbWx0b24tNi9zcmMvcnVudGltZS9teS1saWIuaAoqKiogbWx0b24tMjAwMDA5
MDYub3JnL3NyYy9ydW50aW1lL215LWxpYi5oCVR1ZSBKdW4gMjAgMDI6MTM6MjUgMjAwMAot
LS0gL3Vzci9sb2NhbC9tbHRvbi02L3NyYy9ydW50aW1lL215LWxpYi5oCVR1ZSBBdWcgIDcg
MTc6NTc6NTcgMjAwMQoqKioqKioqKioqKioqKioKKioqIDM2LDQyICoqKioKICAjZGVmaW5l
CWJpdHNvZihhKQkoc2l6ZW9mKGEpICogOCkKICAKICAvKiBpc3N1ZSBlcnJvciBtZXNzYWdl
IGFuZCBleGl0ICovCiEgZXh0ZXJuIHZvaWQJZGllKGNoYXIgKmZtdCwgLi4uKTsKICAKICAv
KiBhc3NlcnRpb24gZmFpbHVyZSByb3V0aW5lICovCiAgZXh0ZXJuIHZvaWQgYXNmYWlsKGNo
YXIgKmZpbGUsIGludCBsaW5lLCBjaGFyICpwcm9wKTsKLS0tIDM2LDQyIC0tLS0KICAjZGVm
aW5lCWJpdHNvZihhKQkoc2l6ZW9mKGEpICogOCkKICAKICAvKiBpc3N1ZSBlcnJvciBtZXNz
YWdlIGFuZCBleGl0ICovCiEgZXh0ZXJuIHZvaWQJZGllKGNoYXIgKmZtdCwgLi4uKSBfX2F0
dHJpYnV0ZV9fICgobm9yZXR1cm4pKTsKICAKICAvKiBhc3NlcnRpb24gZmFpbHVyZSByb3V0
aW5lICovCiAgZXh0ZXJuIHZvaWQgYXNmYWlsKGNoYXIgKmZpbGUsIGludCBsaW5lLCBjaGFy
ICpwcm9wKTsKT25seSBpbiAvdXNyL2xvY2FsL21sdG9uLTYvc3JjL3J1bnRpbWU6IG15LWxp
Yi5vCk9ubHkgaW4gL3Vzci9sb2NhbC9tbHRvbi02L3NyYy9ydW50aW1lOiB0bXBuYW0tZ2Ri
Lm8KT25seSBpbiAvdXNyL2xvY2FsL21sdG9uLTYvc3JjL3J1bnRpbWU6IHRtcG5hbS5vCg==
--gH4KTCBMPI--