<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>61968</bug_id>
          
          <creation_ts>2011-06-02 14:49:50 -0700</creation_ts>
          <short_desc>Switch paintBoxDecorations to IntPoint</short_desc>
          <delta_ts>2011-06-03 11:43:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>60318</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Levi Weintraub">leviw</reporter>
          <assigned_to name="Levi Weintraub">leviw</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>eae</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>414467</commentid>
    <comment_count>0</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-06-02 14:49:50 -0700</bug_when>
    <thetext>Ongoing tx/ty removal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414541</commentid>
    <comment_count>1</comment_count>
      <attachid>95832</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-06-02 16:52:26 -0700</bug_when>
    <thetext>Created attachment 95832
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414551</commentid>
    <comment_count>2</comment_count>
      <attachid>95832</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-02 17:02:19 -0700</bug_when>
    <thetext>Comment on attachment 95832
Patch

Attachment 95832 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/8757573</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414573</commentid>
    <comment_count>3</comment_count>
      <attachid>95832</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-06-02 17:42:21 -0700</bug_when>
    <thetext>Comment on attachment 95832
Patch

Attachment 95832 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/8756856</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414595</commentid>
    <comment_count>4</comment_count>
      <attachid>95832</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-02 18:41:11 -0700</bug_when>
    <thetext>Comment on attachment 95832
Patch

Attachment 95832 did not pass cr-mac-ews (chromium):
Output: http://queues.webkit.org/results/8760279</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415014</commentid>
    <comment_count>5</comment_count>
      <attachid>95932</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-06-03 11:16:22 -0700</bug_when>
    <thetext>Created attachment 95932
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415028</commentid>
    <comment_count>6</comment_count>
      <attachid>95932</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-03 11:30:51 -0700</bug_when>
    <thetext>Comment on attachment 95932
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415037</commentid>
    <comment_count>7</comment_count>
      <attachid>95932</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-06-03 11:43:19 -0700</bug_when>
    <thetext>Comment on attachment 95932
Patch

Clearing flags on attachment: 95932

Committed r88033: &lt;http://trac.webkit.org/changeset/88033&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415038</commentid>
    <comment_count>8</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-06-03 11:43:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95832</attachid>
            <date>2011-06-02 16:52:26 -0700</date>
            <delta_ts>2011-06-03 11:16:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61968-20110602165224.patch</filename>
            <type>text/plain</type>
            <size>24541</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg3OTYzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTEtMDYtMDIgIExldmkgV2Vp
bnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFN3aXRjaCBwYWludEJveERlY29yYXRpb25zIHRvIEludFBv
aW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTk2
OAorCisgICAgICAgIFN3aXRjaGluZyBwYWludEJveERlY29yYXRpb25zIHRvIHRha2UgYW4gSW50
UG9pbnQgcmVwcmVzZW50aW5nCisgICAgICAgIHRoZSBwYWludCBvZmZzZXQgaW5zdGVhZCBvZiBh
IHBhaXIgb2YgaW50cy4gQWxzbyBjbGVhbmluZyB1cAorICAgICAgICBzb21lIGR1cGxpY2F0ZWQg
Y29kZSBpbiBJbmxpbmVGbG93Qm94IHJlbGF0ZWQgdG8gY29uc3RyYWluaW5nCisgICAgICAgIHRo
ZSBwYWludCByZWN0IHRvIHRoZSBsaW5ldG9wIGFuZCBsaW5lYm90dG9tLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cyBzaW5jZSB0aGlzIGlzIGp1c3QgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgKiBy
ZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93
Qm94OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94Ojpjb25zdHJhaW5U
b0xpbmVUb3BBbmRCb3R0b21JZk5lZWRlZCk6IEFkZGVkCisgICAgICAgIHRvIHJlbW92ZSBkdXBs
aWNhdGUgY29kZSBpbiBwYWludEJveERlY29yYXRpb25zIGFuZCBwYWludE1hc2suCisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwYWludEJveERlY29yYXRpb25zKToKKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUZsb3dCb3g6OnBhaW50TWFzayk6CisgICAgICAgICogcmVuZGVyaW5n
L0lubGluZUZsb3dCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnBhaW50T2JqZWN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFp
bnRCb3hEZWNvcmF0aW9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJGaWVsZHNldDo6cGFpbnRCb3hEZWNvcmF0aW9ucyk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckZpZWxkc2V0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpwYWludCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxl
OjpwYWludE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6cGFpbnRCb3hE
ZWNvcmF0aW9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUYWJsZUNlbGw6OnBhaW50Qm94RGVjb3JhdGlvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJUYWJsZUNlbGwuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpwYWludEJveERlY29yYXRpb25zKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJX
aWRnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyV2lkZ2V0OjpwYWludCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR1Jvb3Q6OnBhaW50KToKKwogMjAxMS0wNi0wMiAgSmlhbiBMaSAgPGppYW5saUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCShyZXZpc2lvbiA4Nzk0
MikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTk1LDcgKzk5NSw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnQoUGFp
bnRJbmZvJiBwYWkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIC8vIFBhaW50IG91ciBiYWNrZ3JvdW5kLCBib3JkZXIgYW5kIGJveC1zaGFkb3cuCi0g
ICAgICAgICAgICBwYWludEJveERlY29yYXRpb25zKHBhaW50SW5mbywgcGFpbnRPZmZzZXQueCgp
LCBwYWludE9mZnNldC55KCkpOworICAgICAgICAgICAgcGFpbnRCb3hEZWNvcmF0aW9ucyhwYWlu
dEluZm8sIHBhaW50T2Zmc2V0KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTA3NCwzNCArMTA3
NCw0MCBAQCB2b2lkIElubGluZUZsb3dCb3g6OnBhaW50Qm94U2hhZG93KEdyYXBoCiAgICAgfQog
fQogCi12b2lkIElubGluZUZsb3dCb3g6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBw
YWludEluZm8sIGludCB0eCwgaW50IHR5KQordm9pZCBJbmxpbmVGbG93Qm94Ojpjb25zdHJhaW5U
b0xpbmVUb3BBbmRCb3R0b21JZk5lZWRlZChJbnRSZWN0JiByZWN0KSBjb25zdAoreworICAgIGJv
b2wgbm9RdWlya3NNb2RlID0gcmVuZGVyZXIoKS0+ZG9jdW1lbnQoKS0+aW5Ob1F1aXJrc01vZGUo
KTsKKyAgICBpZiAoIW5vUXVpcmtzTW9kZSAmJiAhaGFzVGV4dENoaWxkcmVuKCkgJiYgIShkZXNj
ZW5kYW50c0hhdmVTYW1lTGluZUhlaWdodEFuZEJhc2VsaW5lKCkgJiYgaGFzVGV4dERlc2NlbmRh
bnRzKCkpKSB7CisgICAgICAgIGNvbnN0IFJvb3RJbmxpbmVCb3gqIHJvb3RCb3ggPSByb290KCk7
CisgICAgICAgIGludCBsb2dpY2FsVG9wID0gaXNIb3Jpem9udGFsKCkgPyByZWN0LnkoKSA6IHJl
Y3QueCgpOworICAgICAgICBpbnQgbG9naWNhbEhlaWdodCA9IGlzSG9yaXpvbnRhbCgpID8gcmVj
dC5oZWlnaHQoKSA6IHJlY3Qud2lkdGgoKTsKKyAgICAgICAgaW50IGJvdHRvbSA9IG1pbihyb290
Qm94LT5saW5lQm90dG9tKCksIGxvZ2ljYWxUb3AgKyBsb2dpY2FsSGVpZ2h0KTsKKyAgICAgICAg
bG9naWNhbFRvcCA9IG1heChyb290Qm94LT5saW5lVG9wKCksIGxvZ2ljYWxUb3ApOworICAgICAg
ICBsb2dpY2FsSGVpZ2h0ID0gYm90dG9tIC0gbG9naWNhbFRvcDsKKyAgICAgICAgaWYgKGlzSG9y
aXpvbnRhbCgpKSB7CisgICAgICAgICAgICByZWN0LnNldFkobG9naWNhbFRvcCk7CisgICAgICAg
ICAgICByZWN0LnNldEhlaWdodChsb2dpY2FsSGVpZ2h0KTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIHJlY3Quc2V0WChsb2dpY2FsVG9wKTsKKyAgICAgICAgICAgIHJlY3Quc2V0V2lk
dGgobG9naWNhbEhlaWdodCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgSW5saW5lRmxv
d0JveDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50
UG9pbnQmIHBhaW50T2Zmc2V0KQogewogICAgIGlmICghcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0
aGluUm9vdChyZW5kZXJlcigpKSB8fCByZW5kZXJlcigpLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkg
IT0gVklTSUJMRSB8fCBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIC8vIFBpeGVsIHNuYXAgYmFja2dyb3VuZC9ib3JkZXIgcGFp
bnRpbmcuCiAgICAgSW50UmVjdCBmcmFtZVJlY3QgPSByb3VuZGVkRnJhbWVSZWN0KCk7Ci0gICAg
aW50IHggPSBmcmFtZVJlY3QueCgpOwotICAgIGludCB5ID0gZnJhbWVSZWN0LnkoKTsKLSAgICBp
bnQgdyA9IGZyYW1lUmVjdC53aWR0aCgpOwotICAgIGludCBoID0gZnJhbWVSZWN0LmhlaWdodCgp
OwogCi0gICAgLy8gQ29uc3RyYWluIG91ciBiYWNrZ3JvdW5kL2JvcmRlciBwYWludGluZyB0byB0
aGUgbGluZSB0b3AgYW5kIGJvdHRvbSBpZiBuZWNlc3NhcnkuCi0gICAgYm9vbCBub1F1aXJrc01v
ZGUgPSByZW5kZXJlcigpLT5kb2N1bWVudCgpLT5pbk5vUXVpcmtzTW9kZSgpOwotICAgIGlmICgh
bm9RdWlya3NNb2RlICYmICFoYXNUZXh0Q2hpbGRyZW4oKSAmJiAhKGRlc2NlbmRhbnRzSGF2ZVNh
bWVMaW5lSGVpZ2h0QW5kQmFzZWxpbmUoKSAmJiBoYXNUZXh0RGVzY2VuZGFudHMoKSkpIHsKLSAg
ICAgICAgUm9vdElubGluZUJveCogcm9vdEJveCA9IHJvb3QoKTsKLSAgICAgICAgaW50JiB0b3Ag
PSBpc0hvcml6b250YWwoKSA/IHkgOiB4OwotICAgICAgICBpbnQmIGxvZ2ljYWxIZWlnaHQgPSBp
c0hvcml6b250YWwoKSA/IGggOiB3OwotICAgICAgICBpbnQgYm90dG9tID0gbWluKHJvb3RCb3gt
PmxpbmVCb3R0b20oKSwgdG9wICsgbG9naWNhbEhlaWdodCk7Ci0gICAgICAgIHRvcCA9IG1heChy
b290Qm94LT5saW5lVG9wKCksIHRvcCk7Ci0gICAgICAgIGxvZ2ljYWxIZWlnaHQgPSBib3R0b20g
LSB0b3A7Ci0gICAgfQorICAgIGNvbnN0cmFpblRvTGluZVRvcEFuZEJvdHRvbShmcmFtZVJlY3Qp
OwogICAgIAogICAgIC8vIE1vdmUgeC95IHRvIG91ciBjb29yZGluYXRlcy4KLSAgICBJbnRSZWN0
IGxvY2FsUmVjdCh4LCB5LCB3LCBoKTsKKyAgICBJbnRSZWN0IGxvY2FsUmVjdChmcmFtZVJlY3Qp
OwogICAgIGZsaXBGb3JXcml0aW5nTW9kZShsb2NhbFJlY3QpOwotICAgIHR4ICs9IGxvY2FsUmVj
dC54KCk7Ci0gICAgdHkgKz0gbG9jYWxSZWN0LnkoKTsKKyAgICBJbnRQb2ludCBhZGp1c3RlZFBh
aW50b2Zmc2V0ID0gcGFpbnRPZmZzZXQgKyBsb2NhbFJlY3QubG9jYXRpb24oKTsKICAgICAKICAg
ICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKICAgICAKQEAg
LTExMDksNyArMTExNSw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRCb3hEZWNvcmF0aW9u
cygKICAgICAvLyBhIGxpbmUgbWF5IGFjdHVhbGx5IGhhdmUgdG8gcGFpbnQgYSBiYWNrZ3JvdW5k
LgogICAgIFJlbmRlclN0eWxlKiBzdHlsZVRvVXNlID0gcmVuZGVyZXIoKS0+c3R5bGUobV9maXJz
dExpbmUpOwogICAgIGlmICgoIXBhcmVudCgpICYmIG1fZmlyc3RMaW5lICYmIHN0eWxlVG9Vc2Ug
IT0gcmVuZGVyZXIoKS0+c3R5bGUoKSkgfHwgKHBhcmVudCgpICYmIHJlbmRlcmVyKCktPmhhc0Jv
eERlY29yYXRpb25zKCkpKSB7Ci0gICAgICAgIEludFJlY3QgcGFpbnRSZWN0ID0gSW50UmVjdCh0
eCwgdHksIHcsIGgpOworICAgICAgICBJbnRSZWN0IHBhaW50UmVjdCA9IEludFJlY3QoYWRqdXN0
ZWRQYWludG9mZnNldCwgZnJhbWVSZWN0LnNpemUoKSk7CiAgICAgICAgIC8vIFNoYWRvdyBjb21l
cyBmaXJzdCBhbmQgaXMgYmVoaW5kIHRoZSBiYWNrZ3JvdW5kIGFuZCBib3JkZXIuCiAgICAgICAg
IHBhaW50Qm94U2hhZG93KGNvbnRleHQsIHN0eWxlVG9Vc2UsIE5vcm1hbCwgcGFpbnRSZWN0KTsK
IApAQCAtMTE0NCwxMyArMTE1MCwxMyBAQCB2b2lkIElubGluZUZsb3dCb3g6OnBhaW50Qm94RGVj
b3JhdGlvbnMoCiAgICAgICAgICAgICAgICAgaW50IHRvdGFsTG9naWNhbFdpZHRoID0gbG9naWNh
bE9mZnNldE9uTGluZTsKICAgICAgICAgICAgICAgICBmb3IgKElubGluZUZsb3dCb3gqIGN1cnIg
PSB0aGlzOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dExpbmVCb3goKSkKICAgICAgICAgICAgICAg
ICAgICAgdG90YWxMb2dpY2FsV2lkdGggKz0gY3Vyci0+bG9naWNhbFdpZHRoKCk7Ci0gICAgICAg
ICAgICAgICAgaW50IHN0cmlwWCA9IHR4IC0gKGlzSG9yaXpvbnRhbCgpID8gbG9naWNhbE9mZnNl
dE9uTGluZSA6IDApOwotICAgICAgICAgICAgICAgIGludCBzdHJpcFkgPSB0eSAtIChpc0hvcml6
b250YWwoKSA/IDAgOiBsb2dpY2FsT2Zmc2V0T25MaW5lKTsKLSAgICAgICAgICAgICAgICBpbnQg
c3RyaXBXaWR0aCA9IGlzSG9yaXpvbnRhbCgpID8gdG90YWxMb2dpY2FsV2lkdGggOiB3OwotICAg
ICAgICAgICAgICAgIGludCBzdHJpcEhlaWdodCA9IGlzSG9yaXpvbnRhbCgpID8gaCA6IHRvdGFs
TG9naWNhbFdpZHRoOworICAgICAgICAgICAgICAgIGludCBzdHJpcFggPSBhZGp1c3RlZFBhaW50
b2Zmc2V0LngoKSAtIChpc0hvcml6b250YWwoKSA/IGxvZ2ljYWxPZmZzZXRPbkxpbmUgOiAwKTsK
KyAgICAgICAgICAgICAgICBpbnQgc3RyaXBZID0gYWRqdXN0ZWRQYWludG9mZnNldC55KCkgLSAo
aXNIb3Jpem9udGFsKCkgPyAwIDogbG9naWNhbE9mZnNldE9uTGluZSk7CisgICAgICAgICAgICAg
ICAgaW50IHN0cmlwV2lkdGggPSBpc0hvcml6b250YWwoKSA/IHRvdGFsTG9naWNhbFdpZHRoIDog
ZnJhbWVSZWN0LndpZHRoKCk7CisgICAgICAgICAgICAgICAgaW50IHN0cmlwSGVpZ2h0ID0gaXNI
b3Jpem9udGFsKCkgPyBmcmFtZVJlY3QuaGVpZ2h0KCkgOiB0b3RhbExvZ2ljYWxXaWR0aDsKIAog
ICAgICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29u
dGV4dCk7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+Y2xpcChJbnRSZWN0KHR4LCB0eSwgdywg
aCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmNsaXAocGFpbnRSZWN0KTsKICAgICAgICAg
ICAgICAgICBib3hNb2RlbE9iamVjdCgpLT5wYWludEJvcmRlcihjb250ZXh0LCBJbnRSZWN0KHN0
cmlwWCwgc3RyaXBZLCBzdHJpcFdpZHRoLCBzdHJpcEhlaWdodCksIHJlbmRlcmVyKCktPnN0eWxl
KCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xMTY0LDI0ICsxMTcwLDExIEBAIHZv
aWQgSW5saW5lRmxvd0JveDo6cGFpbnRNYXNrKFBhaW50SW5mbyYKIAogICAgIC8vIFBpeGVsIHNu
YXAgbWFzayBwYWludGluZy4KICAgICBJbnRSZWN0IGZyYW1lUmVjdCA9IHJvdW5kZWRGcmFtZVJl
Y3QoKTsKLSAgICBpbnQgeCA9IGZyYW1lUmVjdC54KCk7Ci0gICAgaW50IHkgPSBmcmFtZVJlY3Qu
eSgpOwotICAgIGludCB3ID0gZnJhbWVSZWN0LndpZHRoKCk7Ci0gICAgaW50IGggPSBmcmFtZVJl
Y3QuaGVpZ2h0KCk7CiAKLSAgICAvLyBDb25zdHJhaW4gb3VyIGJhY2tncm91bmQvYm9yZGVyIHBh
aW50aW5nIHRvIHRoZSBsaW5lIHRvcCBhbmQgYm90dG9tIGlmIG5lY2Vzc2FyeS4KLSAgICBib29s
IG5vUXVpcmtzTW9kZSA9IHJlbmRlcmVyKCktPmRvY3VtZW50KCktPmluTm9RdWlya3NNb2RlKCk7
Ci0gICAgaWYgKCFub1F1aXJrc01vZGUgJiYgIWhhc1RleHRDaGlsZHJlbigpICYmICEoZGVzY2Vu
ZGFudHNIYXZlU2FtZUxpbmVIZWlnaHRBbmRCYXNlbGluZSgpICYmIGhhc1RleHREZXNjZW5kYW50
cygpKSkgewotICAgICAgICBSb290SW5saW5lQm94KiByb290Qm94ID0gcm9vdCgpOwotICAgICAg
ICBpbnQmIHRvcCA9IGlzSG9yaXpvbnRhbCgpID8geSA6IHg7Ci0gICAgICAgIGludCYgbG9naWNh
bEhlaWdodCA9IGlzSG9yaXpvbnRhbCgpID8gaCA6IHc7Ci0gICAgICAgIGludCBib3R0b20gPSBt
aW4ocm9vdEJveC0+bGluZUJvdHRvbSgpLCB0b3AgKyBsb2dpY2FsSGVpZ2h0KTsKLSAgICAgICAg
dG9wID0gbWF4KHJvb3RCb3gtPmxpbmVUb3AoKSwgdG9wKTsKLSAgICAgICAgbG9naWNhbEhlaWdo
dCA9IGJvdHRvbSAtIHRvcDsKLSAgICB9CisgICAgY29uc3RyYWluVG9MaW5lVG9wQW5kQm90dG9t
KGZyYW1lUmVjdCk7CiAgICAgCiAgICAgLy8gTW92ZSB4L3kgdG8gb3VyIGNvb3JkaW5hdGVzLgot
ICAgIEludFJlY3QgbG9jYWxSZWN0KHgsIHksIHcsIGgpOworICAgIEludFJlY3QgbG9jYWxSZWN0
KGZyYW1lUmVjdCk7CiAgICAgZmxpcEZvcldyaXRpbmdNb2RlKGxvY2FsUmVjdCk7CiAgICAgdHgg
Kz0gbG9jYWxSZWN0LngoKTsKICAgICB0eSArPSBsb2NhbFJlY3QueSgpOwpAQCAtMTIwNSw3ICsx
MTk4LDggQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludE1hc2soUGFpbnRJbmZvJgogICAgICAg
ICB9CiAgICAgfQogCi0gICAgcGFpbnRGaWxsTGF5ZXJzKHBhaW50SW5mbywgQ29sb3IoKSwgcmVu
ZGVyZXIoKS0+c3R5bGUoKS0+bWFza0xheWVycygpLCBJbnRSZWN0KHR4LCB0eSwgdywgaCksIGNv
bXBvc2l0ZU9wKTsKKyAgICBJbnRSZWN0IHBhaW50UmVjdCA9IEludFJlY3QoSW50UG9pbnQodHgs
IHR5KSwgZnJhbWVSZWN0LnNpemUoKSk7CisgICAgcGFpbnRGaWxsTGF5ZXJzKHBhaW50SW5mbywg
Q29sb3IoKSwgcmVuZGVyZXIoKS0+c3R5bGUoKS0+bWFza0xheWVycygpLCBwYWludFJlY3QsIGNv
bXBvc2l0ZU9wKTsKICAgICAKICAgICBib29sIGhhc0JveEltYWdlID0gbWFza0JveEltYWdlICYm
IG1hc2tCb3hJbWFnZS0+Y2FuUmVuZGVyKHJlbmRlcmVyKCktPnN0eWxlKCktPmVmZmVjdGl2ZVpv
b20oKSk7CiAgICAgaWYgKCFoYXNCb3hJbWFnZSB8fCAhbWFza0JveEltYWdlLT5pc0xvYWRlZCgp
KQpAQCAtMTIxNCw3ICsxMjA4LDcgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludE1hc2soUGFp
bnRJbmZvJgogICAgIC8vIFRoZSBzaW1wbGUgY2FzZSBpcyB3aGVyZSB3ZSBhcmUgdGhlIG9ubHkg
Ym94IGZvciB0aGlzIG9iamVjdC4gIEluIHRob3NlCiAgICAgLy8gY2FzZXMgb25seSBhIHNpbmds
ZSBjYWxsIHRvIGRyYXcgaXMgcmVxdWlyZWQuCiAgICAgaWYgKCFwcmV2TGluZUJveCgpICYmICFu
ZXh0TGluZUJveCgpKSB7Ci0gICAgICAgIGJveE1vZGVsT2JqZWN0KCktPnBhaW50TmluZVBpZWNl
SW1hZ2UocGFpbnRJbmZvLmNvbnRleHQsIEludFJlY3QodHgsIHR5LCB3LCBoKSwgcmVuZGVyZXIo
KS0+c3R5bGUoKSwgbWFza05pbmVQaWVjZUltYWdlLCBjb21wb3NpdGVPcCk7CisgICAgICAgIGJv
eE1vZGVsT2JqZWN0KCktPnBhaW50TmluZVBpZWNlSW1hZ2UocGFpbnRJbmZvLmNvbnRleHQsIElu
dFJlY3QoSW50UG9pbnQodHgsIHR5KSwgZnJhbWVSZWN0LnNpemUoKSksIHJlbmRlcmVyKCktPnN0
eWxlKCksIG1hc2tOaW5lUGllY2VJbWFnZSwgY29tcG9zaXRlT3ApOwogICAgIH0gZWxzZSB7CiAg
ICAgICAgIC8vIFdlIGhhdmUgYSBtYXNrIGltYWdlIHRoYXQgc3BhbnMgbXVsdGlwbGUgbGluZXMu
CiAgICAgICAgIC8vIFdlIG5lZWQgdG8gYWRqdXN0IF90eCBhbmQgX3R5IGJ5IHRoZSB3aWR0aCBv
ZiBhbGwgcHJldmlvdXMgbGluZXMuCkBAIC0xMjI2LDExICsxMjIwLDExIEBAIHZvaWQgSW5saW5l
Rmxvd0JveDo6cGFpbnRNYXNrKFBhaW50SW5mbyYKICAgICAgICAgICAgIHRvdGFsTG9naWNhbFdp
ZHRoICs9IGN1cnItPmxvZ2ljYWxXaWR0aCgpOwogICAgICAgICBpbnQgc3RyaXBYID0gdHggLSAo
aXNIb3Jpem9udGFsKCkgPyBsb2dpY2FsT2Zmc2V0T25MaW5lIDogMCk7CiAgICAgICAgIGludCBz
dHJpcFkgPSB0eSAtIChpc0hvcml6b250YWwoKSA/IDAgOiBsb2dpY2FsT2Zmc2V0T25MaW5lKTsK
LSAgICAgICAgaW50IHN0cmlwV2lkdGggPSBpc0hvcml6b250YWwoKSA/IHRvdGFsTG9naWNhbFdp
ZHRoIDogdzsKLSAgICAgICAgaW50IHN0cmlwSGVpZ2h0ID0gaXNIb3Jpem9udGFsKCkgPyBoIDog
dG90YWxMb2dpY2FsV2lkdGg7CisgICAgICAgIGludCBzdHJpcFdpZHRoID0gaXNIb3Jpem9udGFs
KCkgPyB0b3RhbExvZ2ljYWxXaWR0aCA6IGZyYW1lUmVjdC53aWR0aCgpOworICAgICAgICBpbnQg
c3RyaXBIZWlnaHQgPSBpc0hvcml6b250YWwoKSA/IGZyYW1lUmVjdC5oZWlnaHQoKSA6IHRvdGFs
TG9naWNhbFdpZHRoOwogCiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xp
cChJbnRSZWN0KHR4LCB0eSwgdywgaCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xp
cChwYWludFJlY3QpOwogICAgICAgICBib3hNb2RlbE9iamVjdCgpLT5wYWludE5pbmVQaWVjZUlt
YWdlKHBhaW50SW5mby5jb250ZXh0LCBJbnRSZWN0KHN0cmlwWCwgc3RyaXBZLCBzdHJpcFdpZHRo
LCBzdHJpcEhlaWdodCksIHJlbmRlcmVyKCktPnN0eWxlKCksIG1hc2tOaW5lUGllY2VJbWFnZSwg
Y29tcG9zaXRlT3ApOwogICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVGbG93Qm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZUZsb3dCb3guaAkocmV2aXNpb24gODc5NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSW5saW5lRmxvd0JveC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNyArMTAzLDcgQEAg
cHVibGljOgogCiAgICAgSW50UmVjdCByb3VuZGVkRnJhbWVSZWN0KCkgY29uc3Q7CiAgICAgCi0g
ICAgdmlydHVhbCB2b2lkIHBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiwgaW50IHR4LCBp
bnQgdHkpOworICAgIHZpcnR1YWwgdm9pZCBwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYs
IGNvbnN0IEludFBvaW50Jik7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50TWFzayhQYWludEluZm8m
LCBpbnQgdHgsIGludCB0eSk7CiAgICAgdm9pZCBwYWludEZpbGxMYXllcnMoY29uc3QgUGFpbnRJ
bmZvJiwgY29uc3QgQ29sb3ImLCBjb25zdCBGaWxsTGF5ZXIqLCBjb25zdCBJbnRSZWN0JiwgQ29t
cG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyKTsKICAgICB2b2lkIHBhaW50Rmls
bExheWVyKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IENvbG9yJiwgY29uc3QgRmlsbExheWVyKiwg
Y29uc3QgSW50UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlcik7
CkBAIC0yNzYsNiArMjc2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZEJveFNoYWRvd1Zpc3Vh
bE92ZXJmbG93KEludFJlY3QmIGxvZ2ljYWxWaXN1YWxPdmVyZmxvdyk7CiAgICAgdm9pZCBhZGRU
ZXh0Qm94VmlzdWFsT3ZlcmZsb3coSW5saW5lVGV4dEJveCosIEdseXBoT3ZlcmZsb3dBbmRGYWxs
YmFja0ZvbnRzTWFwJiwgSW50UmVjdCYgbG9naWNhbFZpc3VhbE92ZXJmbG93KTsKICAgICB2b2lk
IGFkZFJlcGxhY2VkQ2hpbGRPdmVyZmxvdyhjb25zdCBJbmxpbmVCb3gqLCBJbnRSZWN0JiBsb2dp
Y2FsTGF5b3V0T3ZlcmZsb3csIEludFJlY3QmIGxvZ2ljYWxWaXN1YWxPdmVyZmxvdyk7CisgICAg
dm9pZCBjb25zdHJhaW5Ub0xpbmVUb3BBbmRCb3R0b21JZk5lZWRlZChJbnRSZWN0JikgY29uc3Q7
CiAKIHByb3RlY3RlZDoKICAgICBPd25QdHI8UmVuZGVyT3ZlcmZsb3c+IG1fb3ZlcmZsb3c7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHJldmlzaW9uIDg3
OTQyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQ2NCw3ICsyNDY0LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRPYmpl
Y3QoUGFpbnRJbmZvJgogICAgIC8vIDEuIHBhaW50IGJhY2tncm91bmQsIGJvcmRlcnMgZXRjCiAg
ICAgaWYgKChwYWludFBoYXNlID09IFBhaW50UGhhc2VCbG9ja0JhY2tncm91bmQgfHwgcGFpbnRQ
aGFzZSA9PSBQYWludFBoYXNlQ2hpbGRCbG9ja0JhY2tncm91bmQpICYmIHN0eWxlKCktPnZpc2li
aWxpdHkoKSA9PSBWSVNJQkxFKSB7CiAgICAgICAgIGlmIChoYXNCb3hEZWNvcmF0aW9ucygpKQot
ICAgICAgICAgICAgcGFpbnRCb3hEZWNvcmF0aW9ucyhwYWludEluZm8sIHR4LCB0eSk7CisgICAg
ICAgICAgICBwYWludEJveERlY29yYXRpb25zKHBhaW50SW5mbywgSW50UG9pbnQodHgsIHR5KSk7
CiAgICAgICAgIGlmIChoYXNDb2x1bW5zKCkpCiAgICAgICAgICAgICBwYWludENvbHVtblJ1bGVz
KHBhaW50SW5mbywgdHgsIHR5KTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcAkocmV2aXNpb24gODc5NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODI1LDExICs4MjUsMTEgQEAgQmFj
a2dyb3VuZEJsZWVkQXZvaWRhbmNlIFJlbmRlckJveDo6ZGV0ZQogICAgIHJldHVybiBCYWNrZ3Jv
dW5kQmxlZWRVc2VUcmFuc3BhcmVuY3lMYXllcjsKIH0KIAotdm9pZCBSZW5kZXJCb3g6OnBhaW50
Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50IHR5KQordm9p
ZCBSZW5kZXJCb3g6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IEludFBvaW50JiBwYWludE9mZnNldCkKIHsKICAgICBpZiAoIXBhaW50SW5mby5zaG91bGRQ
YWludFdpdGhpblJvb3QodGhpcykpCiAgICAgICAgIHJldHVybjsKLSAgICBJbnRSZWN0IHBhaW50
UmVjdCh0eCwgdHksIHdpZHRoKCksIGhlaWdodCgpKTsKKyAgICBJbnRSZWN0IHBhaW50UmVjdChw
YWludE9mZnNldCwgc2l6ZSgpKTsKIAogICAgIC8vIGJvcmRlci1maXQgY2FuIGFkanVzdCB3aGVy
ZSB3ZSBwYWludCBvdXIgYm9yZGVyIGFuZCBiYWNrZ3JvdW5kLiAgSWYgc2V0LCB3ZSBzbnVnbHkg
Zml0IG91ciBsaW5lIGJveCBkZXNjZW5kYW50cy4gIChUaGUgaUNoYXQKICAgICAvLyBiYWxsb29u
IGxheW91dCBpcyBhbiBleGFtcGxlIG9mIHRoaXMpLgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guaAkocmV2aXNpb24gODc5NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1Myw3ICszNTMsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBwb3BDb250ZW50c0NsaXAoUGFpbnRJbmZvJiwgUGFpbnRQaGFzZSBvcmlnaW5h
bFBoYXNlLCBpbnQgdHgsIGludCB0eSk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPYmplY3Qo
UGFpbnRJbmZvJiwgaW50IC8qdHgqLywgaW50IC8qdHkqLykgeyBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsgfQotICAgIHZpcnR1YWwgdm9pZCBwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYsIGlu
dCB0eCwgaW50IHR5KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCb3hEZWNvcmF0aW9ucyhQYWlu
dEluZm8mLCBjb25zdCBJbnRQb2ludCYpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludE1hc2soUGFp
bnRJbmZvJiwgSW50U2l6ZSk7CiAgICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVk
SW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqID0gMCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGaWVsZHNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmNwcAkocmV2aXNpb24gODc5NDIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTgsMzEgKzExOCwyOCBAQCBSZW5kZXJCb3gqIFJlbmRlckZpZWxkc2V0OjpmaW5kTGVnZW5kKCkg
CiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgUmVuZGVyRmllbGRzZXQ6OnBhaW50Qm94RGVjb3Jh
dGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50IHR5KQordm9pZCBSZW5kZXJG
aWVsZHNldDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
SW50UG9pbnQmIHBhaW50T2Zmc2V0KQogewogICAgIGlmICghcGFpbnRJbmZvLnNob3VsZFBhaW50
V2l0aGluUm9vdCh0aGlzKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW50IHcgPSB3aWR0aCgp
OwotICAgIGludCBoID0gaGVpZ2h0KCk7CisgICAgSW50UmVjdCBwYWludFJlY3QocGFpbnRPZmZz
ZXQsIHNpemUoKSk7CiAgICAgUmVuZGVyQm94KiBsZWdlbmQgPSBmaW5kTGVnZW5kKCk7CiAgICAg
aWYgKCFsZWdlbmQpCi0gICAgICAgIHJldHVybiBSZW5kZXJCbG9jazo6cGFpbnRCb3hEZWNvcmF0
aW9ucyhwYWludEluZm8sIHR4LCB0eSk7CisgICAgICAgIHJldHVybiBSZW5kZXJCbG9jazo6cGFp
bnRCb3hEZWNvcmF0aW9ucyhwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKIAogICAgIC8vIEZJWE1F
OiBXZSBuZWVkIHRvIHdvcmsgd2l0aCAicmwiIGFuZCAiYnQiIGJsb2NrIGZsb3cgZGlyZWN0aW9u
cy4gIEluIHRob3NlCiAgICAgLy8gY2FzZXMgdGhlIGxlZ2VuZCBpcyBlbWJlZGRlZCBpbiB0aGUg
cmlnaHQgYW5kIGJvdHRvbSBib3JkZXJzIHJlc3BlY3RpdmVseS4KICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcyMzYKICAgICBpZiAoc3R5bGUoKS0+aXNI
b3Jpem9udGFsV3JpdGluZ01vZGUoKSkgewogICAgICAgICBpbnQgeU9mZiA9IChsZWdlbmQtPnko
KSA+IDApID8gMCA6IChsZWdlbmQtPmhlaWdodCgpIC0gYm9yZGVyVG9wKCkpIC8gMjsKLSAgICAg
ICAgaCAtPSB5T2ZmOwotICAgICAgICB0eSArPSB5T2ZmOworICAgICAgICBwYWludFJlY3Quc2V0
SGVpZ2h0KHBhaW50UmVjdC5oZWlnaHQoKSAtIHlPZmYpOworICAgICAgICBwYWludFJlY3Quc2V0
WShwYWludFJlY3QueSgpICsgeU9mZik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaW50IHhPZmYg
PSAobGVnZW5kLT54KCkgPiAwKSA/IDAgOiAobGVnZW5kLT53aWR0aCgpIC0gYm9yZGVyTGVmdCgp
KSAvIDI7Ci0gICAgICAgIHcgLT0geE9mZjsKLSAgICAgICAgdHggKz0geE9mZjsKKyAgICAgICAg
cGFpbnRSZWN0LnNldFdpZHRoKHBhaW50UmVjdC53aWR0aCgpIC0geE9mZik7CisgICAgICAgIHBh
aW50UmVjdC5zZXRYKHBhaW50UmVjdC54KCkgKyB4T2ZmKTsKICAgICB9Ci0KLSAgICBJbnRSZWN0
IHBhaW50UmVjdCA9IEludFJlY3QodHgsIHR5LCB3LCBoKTsKICAgICAKICAgICBwYWludEJveFNo
YWRvdyhwYWludEluZm8uY29udGV4dCwgcGFpbnRSZWN0LCBzdHlsZSgpLCBOb3JtYWwpOwogICAg
IHBhaW50RmlsbExheWVycyhwYWludEluZm8sIHN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xv
cihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciksIHN0eWxlKCktPmJhY2tncm91bmRMYXllcnMo
KSwgcGFpbnRSZWN0KTsKQEAgLTE1OSwxMyArMTU2LDEzIEBAIHZvaWQgUmVuZGVyRmllbGRzZXQ6
OnBhaW50Qm94RGVjb3JhdGlvbnMKICAgICAvLyBjYXNlcyB0aGUgbGVnZW5kIGlzIGVtYmVkZGVk
IGluIHRoZSByaWdodCBhbmQgYm90dG9tIGJvcmRlcnMgcmVzcGVjdGl2ZWx5LgogICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzIzNgogICAgIGlmIChzdHls
ZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKSB7Ci0gICAgICAgIGludCBjbGlwVG9wID0g
dHk7CisgICAgICAgIGludCBjbGlwVG9wID0gcGFpbnRSZWN0LnkoKTsKICAgICAgICAgaW50IGNs
aXBIZWlnaHQgPSBtYXgoc3RhdGljX2Nhc3Q8aW50PihzdHlsZSgpLT5ib3JkZXJUb3BXaWR0aCgp
KSwgbGVnZW5kLT5oZWlnaHQoKSk7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcE91dChJ
bnRSZWN0KHR4ICsgbGVnZW5kLT54KCksIGNsaXBUb3AsIGxlZ2VuZC0+d2lkdGgoKSwgY2xpcEhl
aWdodCkpOworICAgICAgICBncmFwaGljc0NvbnRleHQtPmNsaXBPdXQoSW50UmVjdChwYWludFJl
Y3QueCgpICsgbGVnZW5kLT54KCksIGNsaXBUb3AsIGxlZ2VuZC0+d2lkdGgoKSwgY2xpcEhlaWdo
dCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGludCBjbGlwTGVmdCA9IHR4OworICAgICAgICBp
bnQgY2xpcExlZnQgPSBwYWludFJlY3QueCgpOwogICAgICAgICBpbnQgY2xpcFdpZHRoID0gbWF4
KHN0YXRpY19jYXN0PGludD4oc3R5bGUoKS0+Ym9yZGVyTGVmdFdpZHRoKCkpLCBsZWdlbmQtPndp
ZHRoKCkpOwotICAgICAgICBncmFwaGljc0NvbnRleHQtPmNsaXBPdXQoSW50UmVjdChjbGlwTGVm
dCwgdHkgKyBsZWdlbmQtPnkoKSwgY2xpcFdpZHRoLCBsZWdlbmQtPmhlaWdodCgpKSk7CisgICAg
ICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcE91dChJbnRSZWN0KGNsaXBMZWZ0LCBwYWludFJlY3Qu
eSgpICsgbGVnZW5kLT55KCksIGNsaXBXaWR0aCwgbGVnZW5kLT5oZWlnaHQoKSkpOwogICAgIH0K
IAogICAgIHBhaW50Qm9yZGVyKHBhaW50SW5mby5jb250ZXh0LCBwYWludFJlY3QsIHN0eWxlKCkp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmgJKHJldmlz
aW9uIDg3OTQyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJv
b2wgYXZvaWRzRmxvYXRzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9v
bCBzdHJldGNoZXNUb01pbkludHJpbnNpY0xvZ2ljYWxXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYs
IGludCB0eCwgaW50IHR5KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCb3hEZWNvcmF0aW9ucyhQ
YWludEluZm8mLCBjb25zdCBJbnRQb2ludCYpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludE1hc2so
UGFpbnRJbmZvJiwgSW50U2l6ZSk7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUmVwbGFjZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSZXBsYWNlZC5jcHAJKHJldmlzaW9uIDg3OTQyKQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDcg
KzEwMyw3IEBAIHZvaWQgUmVuZGVyUmVwbGFjZWQ6OnBhaW50KFBhaW50SW5mbyYgcGEKICAgICB0
eSArPSB5KCk7CiAgICAgCiAgICAgaWYgKGhhc0JveERlY29yYXRpb25zKCkgJiYgKHBhaW50SW5m
by5waGFzZSA9PSBQYWludFBoYXNlRm9yZWdyb3VuZCB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFp
bnRQaGFzZVNlbGVjdGlvbikpIAotICAgICAgICBwYWludEJveERlY29yYXRpb25zKHBhaW50SW5m
bywgdHgsIHR5KTsKKyAgICAgICAgcGFpbnRCb3hEZWNvcmF0aW9ucyhwYWludEluZm8sIEludFBv
aW50KHR4LCB0eSkpOwogICAgIAogICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFz
ZU1hc2spIHsKICAgICAgICAgcGFpbnRNYXNrKHBhaW50SW5mbywgSW50U2l6ZSh0eCwgdHkpKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAkocmV2aXNpb24g
ODc5NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NzcsNyArNDc3LDcgQEAgdm9pZCBSZW5kZXJUYWJsZTo6cGFpbnRPYmpl
Y3QoUGFpbnRJbmZvJgogewogICAgIFBhaW50UGhhc2UgcGFpbnRQaGFzZSA9IHBhaW50SW5mby5w
aGFzZTsKICAgICBpZiAoKHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZUJsb2NrQmFja2dyb3VuZCB8
fCBwYWludFBoYXNlID09IFBhaW50UGhhc2VDaGlsZEJsb2NrQmFja2dyb3VuZCkgJiYgaGFzQm94
RGVjb3JhdGlvbnMoKSAmJiBzdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSkKLSAgICAg
ICAgcGFpbnRCb3hEZWNvcmF0aW9ucyhwYWludEluZm8sIHR4LCB0eSk7CisgICAgICAgIHBhaW50
Qm94RGVjb3JhdGlvbnMocGFpbnRJbmZvLCBJbnRQb2ludCh0eCwgdHkpKTsKIAogICAgIGlmIChw
YWludFBoYXNlID09IFBhaW50UGhhc2VNYXNrKSB7CiAgICAgICAgIHBhaW50TWFzayhwYWludElu
Zm8sIEludFNpemUodHgsIHR5KSk7CkBAIC01NTAsMTIgKzU1MCwxMiBAQCB2b2lkIFJlbmRlclRh
YmxlOjpzdWJ0cmFjdENhcHRpb25SZWN0KEluCiAgICAgfQogfQogCi12b2lkIFJlbmRlclRhYmxl
OjpwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0
eSkKK3ZvaWQgUmVuZGVyVGFibGU6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IEludFBvaW50JiBwYWludE9mZnNldCkKIHsKICAgICBpZiAoIXBhaW50SW5m
by5zaG91bGRQYWludFdpdGhpblJvb3QodGhpcykpCiAgICAgICAgIHJldHVybjsKIAotICAgIElu
dFJlY3QgcmVjdCh0eCwgdHksIHdpZHRoKCksIGhlaWdodCgpKTsKKyAgICBJbnRSZWN0IHJlY3Qo
cGFpbnRPZmZzZXQsIHNpemUoKSk7CiAgICAgc3VidHJhY3RDYXB0aW9uUmVjdChyZWN0KTsKIAog
ICAgIHBhaW50Qm94U2hhZG93KHBhaW50SW5mby5jb250ZXh0LCByZWN0LCBzdHlsZSgpLCBOb3Jt
YWwpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgJKHJldmlzaW9u
IDg3OTQyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIxNiw3ICsyMTYsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lk
IHBhaW50KFBhaW50SW5mbyYsIGludCB0eCwgaW50IHR5KTsKICAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRPYmplY3QoUGFpbnRJbmZvJiwgaW50IHR4LCBpbnQgdHkpOwotICAgIHZpcnR1YWwgdm9pZCBw
YWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYsIGludCB0eCwgaW50IHR5KTsKKyAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mLCBjb25zdCBJbnRQb2ludCYp
OwogICAgIHZpcnR1YWwgdm9pZCBwYWludE1hc2soUGFpbnRJbmZvJiwgSW50U2l6ZSk7CiAgICAg
dmlydHVhbCB2b2lkIGxheW91dCgpOwogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUHJlZmVycmVk
TG9naWNhbFdpZHRocygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlQ2VsbC5jcHAJKHJldmlzaW9uIDg3OTQyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMDEsNyArMTAwMSw3
IEBAIHZvaWQgUmVuZGVyVGFibGVDZWxsOjpwYWludEJhY2tncm91bmRzQmUKICAgICB9CiB9CiAK
LXZvaWQgUmVuZGVyVGFibGVDZWxsOjpwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBpbnQgdHgsIGludCB0eSkKK3ZvaWQgUmVuZGVyVGFibGVDZWxsOjpwYWludEJveERl
Y29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRQb2ludCYgcGFpbnRPZmZz
ZXQpCiB7CiAgICAgaWYgKCFwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KHRoaXMpKQog
ICAgICAgICByZXR1cm47CkBAIC0xMDEwLDExICsxMDEwLDExIEBAIHZvaWQgUmVuZGVyVGFibGVD
ZWxsOjpwYWludEJveERlY29yYXRpb24KICAgICBpZiAoIXRhYmxlRWx0LT5jb2xsYXBzZUJvcmRl
cnMoKSAmJiBzdHlsZSgpLT5lbXB0eUNlbGxzKCkgPT0gSElERSAmJiAhZmlyc3RDaGlsZCgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBJbnRSZWN0IHBhaW50UmVjdCA9IEludFJlY3QoSW50UG9p
bnQodHgsIHR5KSwgc2l6ZSgpKTsKKyAgICBJbnRSZWN0IHBhaW50UmVjdCA9IEludFJlY3QocGFp
bnRPZmZzZXQsIHNpemUoKSk7CiAgICAgcGFpbnRCb3hTaGFkb3cocGFpbnRJbmZvLmNvbnRleHQs
IHBhaW50UmVjdCwgc3R5bGUoKSwgTm9ybWFsKTsKICAgICAKICAgICAvLyBQYWludCBvdXIgY2Vs
bCBiYWNrZ3JvdW5kLgotICAgIHBhaW50QmFja2dyb3VuZHNCZWhpbmRDZWxsKHBhaW50SW5mbywg
dHgsIHR5LCB0aGlzKTsKKyAgICBwYWludEJhY2tncm91bmRzQmVoaW5kQ2VsbChwYWludEluZm8s
IHBhaW50T2Zmc2V0LngoKSwgcGFpbnRPZmZzZXQueSgpLCB0aGlzKTsKIAogICAgIHBhaW50Qm94
U2hhZG93KHBhaW50SW5mby5jb250ZXh0LCBwYWludFJlY3QsIHN0eWxlKCksIEluc2V0KTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAkocmV2aXNp
b24gODc5NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE0Miw3ICsxNDIsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVh
bCB2b2lkIGNvbXB1dGVMb2dpY2FsV2lkdGgoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBwYWludEJv
eERlY29yYXRpb25zKFBhaW50SW5mbyYsIGludCB0eCwgaW50IHR5KTsKKyAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mLCBjb25zdCBJbnRQb2ludCYpOwogICAg
IHZpcnR1YWwgdm9pZCBwYWludE1hc2soUGFpbnRJbmZvJiwgSW50U2l6ZSk7CiAKICAgICB2aXJ0
dWFsIEludFNpemUgb2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJPYmplY3QqLCBjb25zdCBJbnRQ
b2ludCYpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNw
cAkocmV2aXNpb24gODc5NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmll
dy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NCw3ICsxODQsNyBAQCBzdGF0aWMgaW5saW5lIGJv
b2wgcmVuZGVyZXJPYnNjdXJlc0JhY2tnCiAgICAgICAgICYmICFpc0NvbXBvc2l0ZWQob2JqZWN0
KTsKIH0KICAgICAKLXZvaWQgUmVuZGVyVmlldzo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludElu
Zm8mIHBhaW50SW5mbywgaW50LCBpbnQpCit2b2lkIFJlbmRlclZpZXc6OnBhaW50Qm94RGVjb3Jh
dGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFBvaW50JikKIHsKICAgICAvLyBD
aGVjayB0byBzZWUgaWYgd2UgYXJlIGVuY2xvc2VkIGJ5IGEgbGF5ZXIgdGhhdCByZXF1aXJlcyBj
b21wbGV4IHBhaW50aW5nIHJ1bGVzLiAgSWYgc28sIHdlIGNhbm5vdCBibGl0CiAgICAgLy8gd2hl
biBzY3JvbGxpbmcsIGFuZCB3ZSBuZWVkIHRvIHVzZSBzbG93IHJlcGFpbnRzLiAgRXhhbXBsZXMg
b2YgbGF5ZXJzIHRoYXQgcmVxdWlyZSB0aGlzIGFyZSB0cmFuc3BhcmVudCBsYXllcnMsCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgJKHJldmlzaW9uIDg3OTQyKQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAt
NzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlcGFpbnRSZWN0YW5nbGVJ
blZpZXdBbmRDb21wb3NpdGVkTGF5ZXJzKGNvbnN0IEludFJlY3QmLCBib29sIGltbWVkaWF0ZSA9
IGZhbHNlKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBpbnQgdHgsIGlu
dCB0eSk7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiwg
aW50IHR4LCBpbnQgdHkpOworICAgIHZpcnR1YWwgdm9pZCBwYWludEJveERlY29yYXRpb25zKFBh
aW50SW5mbyYsIGNvbnN0IEludFBvaW50Jik7CiAKICAgICBlbnVtIFNlbGVjdGlvblJlcGFpbnRN
b2RlIHsgUmVwYWludE5ld1hPUk9sZCwgUmVwYWludE5ld01pbnVzT2xkIH07CiAgICAgdm9pZCBz
ZXRTZWxlY3Rpb24oUmVuZGVyT2JqZWN0KiBzdGFydCwgaW50IHN0YXJ0UG9zLCBSZW5kZXJPYmpl
Y3QqIGVuZCwgaW50IGVuZFBvcywgU2VsZWN0aW9uUmVwYWludE1vZGUgPSBSZXBhaW50TmV3WE9S
T2xkKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCShy
ZXZpc2lvbiA4Nzk0MikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTYsNyArMjU2LDcgQEAgdm9pZCBSZW5kZXJXaWRnZXQ6
OnBhaW50KFBhaW50SW5mbyYgcGFpbgogICAgIHR5ICs9IHkoKTsKIAogICAgIGlmIChoYXNCb3hE
ZWNvcmF0aW9ucygpICYmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZUZvcmVncm91bmQg
fHwgcGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VTZWxlY3Rpb24pKQotICAgICAgICBwYWlu
dEJveERlY29yYXRpb25zKHBhaW50SW5mbywgdHgsIHR5KTsKKyAgICAgICAgcGFpbnRCb3hEZWNv
cmF0aW9ucyhwYWludEluZm8sIEludFBvaW50KHR4LCB0eSkpOwogCiAgICAgaWYgKHBhaW50SW5m
by5waGFzZSA9PSBQYWludFBoYXNlTWFzaykgewogICAgICAgICBwYWludE1hc2socGFpbnRJbmZv
LCBJbnRTaXplKHR4LCB0eSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSb290LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jvb3QuY3BwCShyZXZpc2lvbiA4Nzk0MikKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3Niw3
ICsyNzYsNyBAQCB2b2lkIFJlbmRlclNWR1Jvb3Q6OnBhaW50KFBhaW50SW5mbyYgcGFpCiAgICAg
SW50UG9pbnQgYm9yZGVyQm94T3JpZ2luSW5Db250YWluZXIgPSBwYXJlbnRPcmlnaW5JbkNvbnRh
aW5lciArIHBhcmVudE9yaWdpblRvQm9yZGVyQm94KCk7CiAKICAgICBpZiAoaGFzQm94RGVjb3Jh
dGlvbnMoKSAmJiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VCbG9ja0JhY2tncm91bmQg
fHwgcGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VDaGlsZEJsb2NrQmFja2dyb3VuZCkgJiYg
aXNWaXNpYmxlKQotICAgICAgICBwYWludEJveERlY29yYXRpb25zKHBhaW50SW5mbywgYm9yZGVy
Qm94T3JpZ2luSW5Db250YWluZXIueCgpLCBib3JkZXJCb3hPcmlnaW5JbkNvbnRhaW5lci55KCkp
OworICAgICAgICBwYWludEJveERlY29yYXRpb25zKHBhaW50SW5mbywgYm9yZGVyQm94T3JpZ2lu
SW5Db250YWluZXIpOwogCiAgICAgaWYgKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlQmxv
Y2tCYWNrZ3JvdW5kKQogICAgICAgICByZXR1cm47Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95932</attachid>
            <date>2011-06-03 11:16:22 -0700</date>
            <delta_ts>2011-06-03 11:43:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61968-20110603111620.patch</filename>
            <type>text/plain</type>
            <size>24570</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg4MDMwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTEtMDYtMDMgIExldmkgV2Vp
bnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFN3aXRjaCBwYWludEJveERlY29yYXRpb25zIHRvIEludFBv
aW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTk2
OAorCisgICAgICAgIFN3aXRjaGluZyBwYWludEJveERlY29yYXRpb25zIHRvIHRha2UgYW4gSW50
UG9pbnQgcmVwcmVzZW50aW5nCisgICAgICAgIHRoZSBwYWludCBvZmZzZXQgaW5zdGVhZCBvZiBh
IHBhaXIgb2YgaW50cy4gQWxzbyBjbGVhbmluZyB1cAorICAgICAgICBzb21lIGR1cGxpY2F0ZWQg
Y29kZSBpbiBJbmxpbmVGbG93Qm94IHJlbGF0ZWQgdG8gY29uc3RyYWluaW5nCisgICAgICAgIHRo
ZSBwYWludCByZWN0IHRvIHRoZSBsaW5ldG9wIGFuZCBsaW5lYm90dG9tLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cyBzaW5jZSB0aGlzIGlzIGp1c3QgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgKiBy
ZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93
Qm94OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94Ojpjb25zdHJhaW5U
b0xpbmVUb3BBbmRCb3R0b21JZk5lZWRlZCk6IEFkZGVkCisgICAgICAgIHRvIHJlbW92ZSBkdXBs
aWNhdGUgY29kZSBpbiBwYWludEJveERlY29yYXRpb25zIGFuZCBwYWludE1hc2suCisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwYWludEJveERlY29yYXRpb25zKToKKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUZsb3dCb3g6OnBhaW50TWFzayk6CisgICAgICAgICogcmVuZGVyaW5n
L0lubGluZUZsb3dCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnBhaW50T2JqZWN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFp
bnRCb3hEZWNvcmF0aW9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJGaWVsZHNldDo6cGFpbnRCb3hEZWNvcmF0aW9ucyk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckZpZWxkc2V0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpwYWludCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxl
OjpwYWludE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6cGFpbnRCb3hE
ZWNvcmF0aW9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUYWJsZUNlbGw6OnBhaW50Qm94RGVjb3JhdGlvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJUYWJsZUNlbGwuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpwYWludEJveERlY29yYXRpb25zKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJX
aWRnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyV2lkZ2V0OjpwYWludCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR1Jvb3Q6OnBhaW50KToKKwogMjAxMS0wNi0wMyAgRG9yZWVuIEppYW5nICA8ZG9y
ZWVuLmppYW5nQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBCZW5qYW1pbiBQb3Vs
YWluLgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAko
cmV2aXNpb24gODgwMzApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0Jv
eC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5NSw3ICs5OTUsNyBAQCB2b2lkIElubGluZUZsb3dC
b3g6OnBhaW50KFBhaW50SW5mbyYgcGFpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAvLyBQYWludCBvdXIgYmFja2dyb3VuZCwgYm9yZGVyIGFuZCBi
b3gtc2hhZG93LgotICAgICAgICAgICAgcGFpbnRCb3hEZWNvcmF0aW9ucyhwYWludEluZm8sIHBh
aW50T2Zmc2V0LngoKSwgcGFpbnRPZmZzZXQueSgpKTsKKyAgICAgICAgICAgIHBhaW50Qm94RGVj
b3JhdGlvbnMocGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAg
LTEwNzQsMzQgKzEwNzQsNDAgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludEJveFNoYWRvdyhH
cmFwaAogICAgIH0KIH0KIAotdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludEJveERlY29yYXRpb25z
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSkKK3ZvaWQgSW5saW5lRmxvd0Jv
eDo6Y29uc3RyYWluVG9MaW5lVG9wQW5kQm90dG9tSWZOZWVkZWQoSW50UmVjdCYgcmVjdCkgY29u
c3QKK3sKKyAgICBib29sIG5vUXVpcmtzTW9kZSA9IHJlbmRlcmVyKCktPmRvY3VtZW50KCktPmlu
Tm9RdWlya3NNb2RlKCk7CisgICAgaWYgKCFub1F1aXJrc01vZGUgJiYgIWhhc1RleHRDaGlsZHJl
bigpICYmICEoZGVzY2VuZGFudHNIYXZlU2FtZUxpbmVIZWlnaHRBbmRCYXNlbGluZSgpICYmIGhh
c1RleHREZXNjZW5kYW50cygpKSkgeworICAgICAgICBjb25zdCBSb290SW5saW5lQm94KiByb290
Qm94ID0gcm9vdCgpOworICAgICAgICBpbnQgbG9naWNhbFRvcCA9IGlzSG9yaXpvbnRhbCgpID8g
cmVjdC55KCkgOiByZWN0LngoKTsKKyAgICAgICAgaW50IGxvZ2ljYWxIZWlnaHQgPSBpc0hvcml6
b250YWwoKSA/IHJlY3QuaGVpZ2h0KCkgOiByZWN0LndpZHRoKCk7CisgICAgICAgIGludCBib3R0
b20gPSBtaW4ocm9vdEJveC0+bGluZUJvdHRvbSgpLCBsb2dpY2FsVG9wICsgbG9naWNhbEhlaWdo
dCk7CisgICAgICAgIGxvZ2ljYWxUb3AgPSBtYXgocm9vdEJveC0+bGluZVRvcCgpLCBsb2dpY2Fs
VG9wKTsKKyAgICAgICAgbG9naWNhbEhlaWdodCA9IGJvdHRvbSAtIGxvZ2ljYWxUb3A7CisgICAg
ICAgIGlmIChpc0hvcml6b250YWwoKSkgeworICAgICAgICAgICAgcmVjdC5zZXRZKGxvZ2ljYWxU
b3ApOworICAgICAgICAgICAgcmVjdC5zZXRIZWlnaHQobG9naWNhbEhlaWdodCk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICByZWN0LnNldFgobG9naWNhbFRvcCk7CisgICAgICAgICAg
ICByZWN0LnNldFdpZHRoKGxvZ2ljYWxIZWlnaHQpOworICAgICAgICB9CisgICAgfQorfQorCit2
b2lkIElubGluZUZsb3dCb3g6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IEludFBvaW50JiBwYWludE9mZnNldCkKIHsKICAgICBpZiAoIXBhaW50SW5mby5z
aG91bGRQYWludFdpdGhpblJvb3QocmVuZGVyZXIoKSkgfHwgcmVuZGVyZXIoKS0+c3R5bGUoKS0+
dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgfHwgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VG
b3JlZ3JvdW5kKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBQaXhlbCBzbmFwIGJhY2tncm91
bmQvYm9yZGVyIHBhaW50aW5nLgogICAgIEludFJlY3QgZnJhbWVSZWN0ID0gcm91bmRlZEZyYW1l
UmVjdCgpOwotICAgIGludCB4ID0gZnJhbWVSZWN0LngoKTsKLSAgICBpbnQgeSA9IGZyYW1lUmVj
dC55KCk7Ci0gICAgaW50IHcgPSBmcmFtZVJlY3Qud2lkdGgoKTsKLSAgICBpbnQgaCA9IGZyYW1l
UmVjdC5oZWlnaHQoKTsKIAotICAgIC8vIENvbnN0cmFpbiBvdXIgYmFja2dyb3VuZC9ib3JkZXIg
cGFpbnRpbmcgdG8gdGhlIGxpbmUgdG9wIGFuZCBib3R0b20gaWYgbmVjZXNzYXJ5LgotICAgIGJv
b2wgbm9RdWlya3NNb2RlID0gcmVuZGVyZXIoKS0+ZG9jdW1lbnQoKS0+aW5Ob1F1aXJrc01vZGUo
KTsKLSAgICBpZiAoIW5vUXVpcmtzTW9kZSAmJiAhaGFzVGV4dENoaWxkcmVuKCkgJiYgIShkZXNj
ZW5kYW50c0hhdmVTYW1lTGluZUhlaWdodEFuZEJhc2VsaW5lKCkgJiYgaGFzVGV4dERlc2NlbmRh
bnRzKCkpKSB7Ci0gICAgICAgIFJvb3RJbmxpbmVCb3gqIHJvb3RCb3ggPSByb290KCk7Ci0gICAg
ICAgIGludCYgdG9wID0gaXNIb3Jpem9udGFsKCkgPyB5IDogeDsKLSAgICAgICAgaW50JiBsb2dp
Y2FsSGVpZ2h0ID0gaXNIb3Jpem9udGFsKCkgPyBoIDogdzsKLSAgICAgICAgaW50IGJvdHRvbSA9
IG1pbihyb290Qm94LT5saW5lQm90dG9tKCksIHRvcCArIGxvZ2ljYWxIZWlnaHQpOwotICAgICAg
ICB0b3AgPSBtYXgocm9vdEJveC0+bGluZVRvcCgpLCB0b3ApOwotICAgICAgICBsb2dpY2FsSGVp
Z2h0ID0gYm90dG9tIC0gdG9wOwotICAgIH0KKyAgICBjb25zdHJhaW5Ub0xpbmVUb3BBbmRCb3R0
b21JZk5lZWRlZChmcmFtZVJlY3QpOwogICAgIAogICAgIC8vIE1vdmUgeC95IHRvIG91ciBjb29y
ZGluYXRlcy4KLSAgICBJbnRSZWN0IGxvY2FsUmVjdCh4LCB5LCB3LCBoKTsKKyAgICBJbnRSZWN0
IGxvY2FsUmVjdChmcmFtZVJlY3QpOwogICAgIGZsaXBGb3JXcml0aW5nTW9kZShsb2NhbFJlY3Qp
OwotICAgIHR4ICs9IGxvY2FsUmVjdC54KCk7Ci0gICAgdHkgKz0gbG9jYWxSZWN0LnkoKTsKKyAg
ICBJbnRQb2ludCBhZGp1c3RlZFBhaW50b2Zmc2V0ID0gcGFpbnRPZmZzZXQgKyBsb2NhbFJlY3Qu
bG9jYXRpb24oKTsKICAgICAKICAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludElu
Zm8uY29udGV4dDsKICAgICAKQEAgLTExMDksNyArMTExNSw3IEBAIHZvaWQgSW5saW5lRmxvd0Jv
eDo6cGFpbnRCb3hEZWNvcmF0aW9ucygKICAgICAvLyBhIGxpbmUgbWF5IGFjdHVhbGx5IGhhdmUg
dG8gcGFpbnQgYSBiYWNrZ3JvdW5kLgogICAgIFJlbmRlclN0eWxlKiBzdHlsZVRvVXNlID0gcmVu
ZGVyZXIoKS0+c3R5bGUobV9maXJzdExpbmUpOwogICAgIGlmICgoIXBhcmVudCgpICYmIG1fZmly
c3RMaW5lICYmIHN0eWxlVG9Vc2UgIT0gcmVuZGVyZXIoKS0+c3R5bGUoKSkgfHwgKHBhcmVudCgp
ICYmIHJlbmRlcmVyKCktPmhhc0JveERlY29yYXRpb25zKCkpKSB7Ci0gICAgICAgIEludFJlY3Qg
cGFpbnRSZWN0ID0gSW50UmVjdCh0eCwgdHksIHcsIGgpOworICAgICAgICBJbnRSZWN0IHBhaW50
UmVjdCA9IEludFJlY3QoYWRqdXN0ZWRQYWludG9mZnNldCwgZnJhbWVSZWN0LnNpemUoKSk7CiAg
ICAgICAgIC8vIFNoYWRvdyBjb21lcyBmaXJzdCBhbmQgaXMgYmVoaW5kIHRoZSBiYWNrZ3JvdW5k
IGFuZCBib3JkZXIuCiAgICAgICAgIHBhaW50Qm94U2hhZG93KGNvbnRleHQsIHN0eWxlVG9Vc2Us
IE5vcm1hbCwgcGFpbnRSZWN0KTsKIApAQCAtMTE0NCwxMyArMTE1MCwxMyBAQCB2b2lkIElubGlu
ZUZsb3dCb3g6OnBhaW50Qm94RGVjb3JhdGlvbnMoCiAgICAgICAgICAgICAgICAgaW50IHRvdGFs
TG9naWNhbFdpZHRoID0gbG9naWNhbE9mZnNldE9uTGluZTsKICAgICAgICAgICAgICAgICBmb3Ig
KElubGluZUZsb3dCb3gqIGN1cnIgPSB0aGlzOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dExpbmVC
b3goKSkKICAgICAgICAgICAgICAgICAgICAgdG90YWxMb2dpY2FsV2lkdGggKz0gY3Vyci0+bG9n
aWNhbFdpZHRoKCk7Ci0gICAgICAgICAgICAgICAgaW50IHN0cmlwWCA9IHR4IC0gKGlzSG9yaXpv
bnRhbCgpID8gbG9naWNhbE9mZnNldE9uTGluZSA6IDApOwotICAgICAgICAgICAgICAgIGludCBz
dHJpcFkgPSB0eSAtIChpc0hvcml6b250YWwoKSA/IDAgOiBsb2dpY2FsT2Zmc2V0T25MaW5lKTsK
LSAgICAgICAgICAgICAgICBpbnQgc3RyaXBXaWR0aCA9IGlzSG9yaXpvbnRhbCgpID8gdG90YWxM
b2dpY2FsV2lkdGggOiB3OwotICAgICAgICAgICAgICAgIGludCBzdHJpcEhlaWdodCA9IGlzSG9y
aXpvbnRhbCgpID8gaCA6IHRvdGFsTG9naWNhbFdpZHRoOworICAgICAgICAgICAgICAgIGludCBz
dHJpcFggPSBhZGp1c3RlZFBhaW50b2Zmc2V0LngoKSAtIChpc0hvcml6b250YWwoKSA/IGxvZ2lj
YWxPZmZzZXRPbkxpbmUgOiAwKTsKKyAgICAgICAgICAgICAgICBpbnQgc3RyaXBZID0gYWRqdXN0
ZWRQYWludG9mZnNldC55KCkgLSAoaXNIb3Jpem9udGFsKCkgPyAwIDogbG9naWNhbE9mZnNldE9u
TGluZSk7CisgICAgICAgICAgICAgICAgaW50IHN0cmlwV2lkdGggPSBpc0hvcml6b250YWwoKSA/
IHRvdGFsTG9naWNhbFdpZHRoIDogZnJhbWVSZWN0LndpZHRoKCk7CisgICAgICAgICAgICAgICAg
aW50IHN0cmlwSGVpZ2h0ID0gaXNIb3Jpem9udGFsKCkgPyBmcmFtZVJlY3QuaGVpZ2h0KCkgOiB0
b3RhbExvZ2ljYWxXaWR0aDsKIAogICAgICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRl
U2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+Y2xp
cChJbnRSZWN0KHR4LCB0eSwgdywgaCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmNsaXAo
cGFpbnRSZWN0KTsKICAgICAgICAgICAgICAgICBib3hNb2RlbE9iamVjdCgpLT5wYWludEJvcmRl
cihjb250ZXh0LCBJbnRSZWN0KHN0cmlwWCwgc3RyaXBZLCBzdHJpcFdpZHRoLCBzdHJpcEhlaWdo
dCksIHJlbmRlcmVyKCktPnN0eWxlKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0x
MTY0LDI0ICsxMTcwLDExIEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRNYXNrKFBhaW50SW5m
byYKIAogICAgIC8vIFBpeGVsIHNuYXAgbWFzayBwYWludGluZy4KICAgICBJbnRSZWN0IGZyYW1l
UmVjdCA9IHJvdW5kZWRGcmFtZVJlY3QoKTsKLSAgICBpbnQgeCA9IGZyYW1lUmVjdC54KCk7Ci0g
ICAgaW50IHkgPSBmcmFtZVJlY3QueSgpOwotICAgIGludCB3ID0gZnJhbWVSZWN0LndpZHRoKCk7
Ci0gICAgaW50IGggPSBmcmFtZVJlY3QuaGVpZ2h0KCk7CiAKLSAgICAvLyBDb25zdHJhaW4gb3Vy
IGJhY2tncm91bmQvYm9yZGVyIHBhaW50aW5nIHRvIHRoZSBsaW5lIHRvcCBhbmQgYm90dG9tIGlm
IG5lY2Vzc2FyeS4KLSAgICBib29sIG5vUXVpcmtzTW9kZSA9IHJlbmRlcmVyKCktPmRvY3VtZW50
KCktPmluTm9RdWlya3NNb2RlKCk7Ci0gICAgaWYgKCFub1F1aXJrc01vZGUgJiYgIWhhc1RleHRD
aGlsZHJlbigpICYmICEoZGVzY2VuZGFudHNIYXZlU2FtZUxpbmVIZWlnaHRBbmRCYXNlbGluZSgp
ICYmIGhhc1RleHREZXNjZW5kYW50cygpKSkgewotICAgICAgICBSb290SW5saW5lQm94KiByb290
Qm94ID0gcm9vdCgpOwotICAgICAgICBpbnQmIHRvcCA9IGlzSG9yaXpvbnRhbCgpID8geSA6IHg7
Ci0gICAgICAgIGludCYgbG9naWNhbEhlaWdodCA9IGlzSG9yaXpvbnRhbCgpID8gaCA6IHc7Ci0g
ICAgICAgIGludCBib3R0b20gPSBtaW4ocm9vdEJveC0+bGluZUJvdHRvbSgpLCB0b3AgKyBsb2dp
Y2FsSGVpZ2h0KTsKLSAgICAgICAgdG9wID0gbWF4KHJvb3RCb3gtPmxpbmVUb3AoKSwgdG9wKTsK
LSAgICAgICAgbG9naWNhbEhlaWdodCA9IGJvdHRvbSAtIHRvcDsKLSAgICB9CisgICAgY29uc3Ry
YWluVG9MaW5lVG9wQW5kQm90dG9tSWZOZWVkZWQoZnJhbWVSZWN0KTsKICAgICAKICAgICAvLyBN
b3ZlIHgveSB0byBvdXIgY29vcmRpbmF0ZXMuCi0gICAgSW50UmVjdCBsb2NhbFJlY3QoeCwgeSwg
dywgaCk7CisgICAgSW50UmVjdCBsb2NhbFJlY3QoZnJhbWVSZWN0KTsKICAgICBmbGlwRm9yV3Jp
dGluZ01vZGUobG9jYWxSZWN0KTsKICAgICB0eCArPSBsb2NhbFJlY3QueCgpOwogICAgIHR5ICs9
IGxvY2FsUmVjdC55KCk7CkBAIC0xMjA1LDcgKzExOTgsOCBAQCB2b2lkIElubGluZUZsb3dCb3g6
OnBhaW50TWFzayhQYWludEluZm8mCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwYWludEZpbGxM
YXllcnMocGFpbnRJbmZvLCBDb2xvcigpLCByZW5kZXJlcigpLT5zdHlsZSgpLT5tYXNrTGF5ZXJz
KCksIEludFJlY3QodHgsIHR5LCB3LCBoKSwgY29tcG9zaXRlT3ApOworICAgIEludFJlY3QgcGFp
bnRSZWN0ID0gSW50UmVjdChJbnRQb2ludCh0eCwgdHkpLCBmcmFtZVJlY3Quc2l6ZSgpKTsKKyAg
ICBwYWludEZpbGxMYXllcnMocGFpbnRJbmZvLCBDb2xvcigpLCByZW5kZXJlcigpLT5zdHlsZSgp
LT5tYXNrTGF5ZXJzKCksIHBhaW50UmVjdCwgY29tcG9zaXRlT3ApOwogICAgIAogICAgIGJvb2wg
aGFzQm94SW1hZ2UgPSBtYXNrQm94SW1hZ2UgJiYgbWFza0JveEltYWdlLT5jYW5SZW5kZXIocmVu
ZGVyZXIoKS0+c3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKTsKICAgICBpZiAoIWhhc0JveEltYWdl
IHx8ICFtYXNrQm94SW1hZ2UtPmlzTG9hZGVkKCkpCkBAIC0xMjE0LDcgKzEyMDgsNyBAQCB2b2lk
IElubGluZUZsb3dCb3g6OnBhaW50TWFzayhQYWludEluZm8mCiAgICAgLy8gVGhlIHNpbXBsZSBj
YXNlIGlzIHdoZXJlIHdlIGFyZSB0aGUgb25seSBib3ggZm9yIHRoaXMgb2JqZWN0LiAgSW4gdGhv
c2UKICAgICAvLyBjYXNlcyBvbmx5IGEgc2luZ2xlIGNhbGwgdG8gZHJhdyBpcyByZXF1aXJlZC4K
ICAgICBpZiAoIXByZXZMaW5lQm94KCkgJiYgIW5leHRMaW5lQm94KCkpIHsKLSAgICAgICAgYm94
TW9kZWxPYmplY3QoKS0+cGFpbnROaW5lUGllY2VJbWFnZShwYWludEluZm8uY29udGV4dCwgSW50
UmVjdCh0eCwgdHksIHcsIGgpLCByZW5kZXJlcigpLT5zdHlsZSgpLCBtYXNrTmluZVBpZWNlSW1h
Z2UsIGNvbXBvc2l0ZU9wKTsKKyAgICAgICAgYm94TW9kZWxPYmplY3QoKS0+cGFpbnROaW5lUGll
Y2VJbWFnZShwYWludEluZm8uY29udGV4dCwgSW50UmVjdChJbnRQb2ludCh0eCwgdHkpLCBmcmFt
ZVJlY3Quc2l6ZSgpKSwgcmVuZGVyZXIoKS0+c3R5bGUoKSwgbWFza05pbmVQaWVjZUltYWdlLCBj
b21wb3NpdGVPcCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gV2UgaGF2ZSBhIG1hc2sgaW1h
Z2UgdGhhdCBzcGFucyBtdWx0aXBsZSBsaW5lcy4KICAgICAgICAgLy8gV2UgbmVlZCB0byBhZGp1
c3QgX3R4IGFuZCBfdHkgYnkgdGhlIHdpZHRoIG9mIGFsbCBwcmV2aW91cyBsaW5lcy4KQEAgLTEy
MjYsMTEgKzEyMjAsMTEgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludE1hc2soUGFpbnRJbmZv
JgogICAgICAgICAgICAgdG90YWxMb2dpY2FsV2lkdGggKz0gY3Vyci0+bG9naWNhbFdpZHRoKCk7
CiAgICAgICAgIGludCBzdHJpcFggPSB0eCAtIChpc0hvcml6b250YWwoKSA/IGxvZ2ljYWxPZmZz
ZXRPbkxpbmUgOiAwKTsKICAgICAgICAgaW50IHN0cmlwWSA9IHR5IC0gKGlzSG9yaXpvbnRhbCgp
ID8gMCA6IGxvZ2ljYWxPZmZzZXRPbkxpbmUpOwotICAgICAgICBpbnQgc3RyaXBXaWR0aCA9IGlz
SG9yaXpvbnRhbCgpID8gdG90YWxMb2dpY2FsV2lkdGggOiB3OwotICAgICAgICBpbnQgc3RyaXBI
ZWlnaHQgPSBpc0hvcml6b250YWwoKSA/IGggOiB0b3RhbExvZ2ljYWxXaWR0aDsKKyAgICAgICAg
aW50IHN0cmlwV2lkdGggPSBpc0hvcml6b250YWwoKSA/IHRvdGFsTG9naWNhbFdpZHRoIDogZnJh
bWVSZWN0LndpZHRoKCk7CisgICAgICAgIGludCBzdHJpcEhlaWdodCA9IGlzSG9yaXpvbnRhbCgp
ID8gZnJhbWVSZWN0LmhlaWdodCgpIDogdG90YWxMb2dpY2FsV2lkdGg7CiAKICAgICAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7Ci0g
ICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwKEludFJlY3QodHgsIHR5LCB3LCBoKSk7Cisg
ICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwKHBhaW50UmVjdCk7CiAgICAgICAgIGJveE1v
ZGVsT2JqZWN0KCktPnBhaW50TmluZVBpZWNlSW1hZ2UocGFpbnRJbmZvLmNvbnRleHQsIEludFJl
Y3Qoc3RyaXBYLCBzdHJpcFksIHN0cmlwV2lkdGgsIHN0cmlwSGVpZ2h0KSwgcmVuZGVyZXIoKS0+
c3R5bGUoKSwgbWFza05pbmVQaWVjZUltYWdlLCBjb21wb3NpdGVPcCk7CiAgICAgfQogICAgIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oCShyZXZpc2lvbiA4
ODAzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmgJKHdvcmtp
bmcgY29weSkKQEAgLTEwMyw3ICsxMDMsNyBAQCBwdWJsaWM6CiAKICAgICBJbnRSZWN0IHJvdW5k
ZWRGcmFtZVJlY3QoKSBjb25zdDsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCb3hEZWNv
cmF0aW9ucyhQYWludEluZm8mLCBpbnQgdHgsIGludCB0eSk7CisgICAgdmlydHVhbCB2b2lkIHBh
aW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiwgY29uc3QgSW50UG9pbnQmKTsKICAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRNYXNrKFBhaW50SW5mbyYsIGludCB0eCwgaW50IHR5KTsKICAgICB2b2lk
IHBhaW50RmlsbExheWVycyhjb25zdCBQYWludEluZm8mLCBjb25zdCBDb2xvciYsIGNvbnN0IEZp
bGxMYXllciosIGNvbnN0IEludFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNv
dXJjZU92ZXIpOwogICAgIHZvaWQgcGFpbnRGaWxsTGF5ZXIoY29uc3QgUGFpbnRJbmZvJiwgY29u
c3QgQ29sb3ImLCBjb25zdCBGaWxsTGF5ZXIqLCBjb25zdCBJbnRSZWN0JiwgQ29tcG9zaXRlT3Bl
cmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyKTsKQEAgLTI3Niw2ICsyNzYsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgYWRkQm94U2hhZG93VmlzdWFsT3ZlcmZsb3coSW50UmVjdCYgbG9naWNhbFZp
c3VhbE92ZXJmbG93KTsKICAgICB2b2lkIGFkZFRleHRCb3hWaXN1YWxPdmVyZmxvdyhJbmxpbmVU
ZXh0Qm94KiwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmLCBJbnRSZWN0JiBsb2dp
Y2FsVmlzdWFsT3ZlcmZsb3cpOwogICAgIHZvaWQgYWRkUmVwbGFjZWRDaGlsZE92ZXJmbG93KGNv
bnN0IElubGluZUJveCosIEludFJlY3QmIGxvZ2ljYWxMYXlvdXRPdmVyZmxvdywgSW50UmVjdCYg
bG9naWNhbFZpc3VhbE92ZXJmbG93KTsKKyAgICB2b2lkIGNvbnN0cmFpblRvTGluZVRvcEFuZEJv
dHRvbUlmTmVlZGVkKEludFJlY3QmKSBjb25zdDsKIAogcHJvdGVjdGVkOgogICAgIE93blB0cjxS
ZW5kZXJPdmVyZmxvdz4gbV9vdmVyZmxvdzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcAkocmV2aXNpb24gODgwMzApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDY0LDcgKzI0NjQsNyBA
QCB2b2lkIFJlbmRlckJsb2NrOjpwYWludE9iamVjdChQYWludEluZm8mCiAgICAgLy8gMS4gcGFp
bnQgYmFja2dyb3VuZCwgYm9yZGVycyBldGMKICAgICBpZiAoKHBhaW50UGhhc2UgPT0gUGFpbnRQ
aGFzZUJsb2NrQmFja2dyb3VuZCB8fCBwYWludFBoYXNlID09IFBhaW50UGhhc2VDaGlsZEJsb2Nr
QmFja2dyb3VuZCkgJiYgc3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUpIHsKICAgICAg
ICAgaWYgKGhhc0JveERlY29yYXRpb25zKCkpCi0gICAgICAgICAgICBwYWludEJveERlY29yYXRp
b25zKHBhaW50SW5mbywgdHgsIHR5KTsKKyAgICAgICAgICAgIHBhaW50Qm94RGVjb3JhdGlvbnMo
cGFpbnRJbmZvLCBJbnRQb2ludCh0eCwgdHkpKTsKICAgICAgICAgaWYgKGhhc0NvbHVtbnMoKSkK
ICAgICAgICAgICAgIHBhaW50Q29sdW1uUnVsZXMocGFpbnRJbmZvLCB0eCwgdHkpOwogICAgIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCShyZXZpc2lvbiA4ODAz
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04MjUsMTEgKzgyNSwxMSBAQCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgUmVuZGVy
Qm94OjpkZXRlCiAgICAgcmV0dXJuIEJhY2tncm91bmRCbGVlZFVzZVRyYW5zcGFyZW5jeUxheWVy
OwogfQogCi12b2lkIFJlbmRlckJveDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBh
aW50SW5mbywgaW50IHR4LCBpbnQgdHkpCit2b2lkIFJlbmRlckJveDo6cGFpbnRCb3hEZWNvcmF0
aW9ucyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UG9pbnQmIHBhaW50T2Zmc2V0KQog
ewogICAgIGlmICghcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGluUm9vdCh0aGlzKSkKICAgICAg
ICAgcmV0dXJuOwotICAgIEludFJlY3QgcGFpbnRSZWN0KHR4LCB0eSwgd2lkdGgoKSwgaGVpZ2h0
KCkpOworICAgIEludFJlY3QgcGFpbnRSZWN0KHBhaW50T2Zmc2V0LCBzaXplKCkpOwogCiAgICAg
Ly8gYm9yZGVyLWZpdCBjYW4gYWRqdXN0IHdoZXJlIHdlIHBhaW50IG91ciBib3JkZXIgYW5kIGJh
Y2tncm91bmQuICBJZiBzZXQsIHdlIHNudWdseSBmaXQgb3VyIGxpbmUgYm94IGRlc2NlbmRhbnRz
LiAgKFRoZSBpQ2hhdAogICAgIC8vIGJhbGxvb24gbGF5b3V0IGlzIGFuIGV4YW1wbGUgb2YgdGhp
cykuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCShyZXZpc2lvbiA4ODAz
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAkod29ya2luZyBjb3B5
KQpAQCAtMzUzLDcgKzM1Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBvcENvbnRlbnRzQ2xpcChQ
YWludEluZm8mLCBQYWludFBoYXNlIG9yaWdpbmFsUGhhc2UsIGludCB0eCwgaW50IHR5KTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBwYWludE9iamVjdChQYWludEluZm8mLCBpbnQgLyp0eCovLCBpbnQg
Lyp0eSovKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50
Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiwgaW50IHR4LCBpbnQgdHkpOworICAgIHZpcnR1YWwg
dm9pZCBwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYsIGNvbnN0IEludFBvaW50Jik7CiAg
ICAgdmlydHVhbCB2b2lkIHBhaW50TWFzayhQYWludEluZm8mLCBJbnRTaXplKTsKICAgICB2aXJ0
dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCogPSAw
KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3Bw
CShyZXZpc2lvbiA4ODAzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVs
ZHNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCwzMSArMTE4LDI4IEBAIFJlbmRlckJveCog
UmVuZGVyRmllbGRzZXQ6OmZpbmRMZWdlbmQoKSAKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBS
ZW5kZXJGaWVsZHNldDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBhaW50SW5mbywg
aW50IHR4LCBpbnQgdHkpCit2b2lkIFJlbmRlckZpZWxkc2V0OjpwYWludEJveERlY29yYXRpb25z
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRQb2ludCYgcGFpbnRPZmZzZXQpCiB7CiAg
ICAgaWYgKCFwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KHRoaXMpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpbnQgdyA9IHdpZHRoKCk7Ci0gICAgaW50IGggPSBoZWlnaHQoKTsKKyAg
ICBJbnRSZWN0IHBhaW50UmVjdChwYWludE9mZnNldCwgc2l6ZSgpKTsKICAgICBSZW5kZXJCb3gq
IGxlZ2VuZCA9IGZpbmRMZWdlbmQoKTsKICAgICBpZiAoIWxlZ2VuZCkKLSAgICAgICAgcmV0dXJu
IFJlbmRlckJsb2NrOjpwYWludEJveERlY29yYXRpb25zKHBhaW50SW5mbywgdHgsIHR5KTsKKyAg
ICAgICAgcmV0dXJuIFJlbmRlckJsb2NrOjpwYWludEJveERlY29yYXRpb25zKHBhaW50SW5mbywg
cGFpbnRPZmZzZXQpOwogCiAgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gd29yayB3aXRoICJybCIg
YW5kICJidCIgYmxvY2sgZmxvdyBkaXJlY3Rpb25zLiAgSW4gdGhvc2UKICAgICAvLyBjYXNlcyB0
aGUgbGVnZW5kIGlzIGVtYmVkZGVkIGluIHRoZSByaWdodCBhbmQgYm90dG9tIGJvcmRlcnMgcmVz
cGVjdGl2ZWx5LgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00NzIzNgogICAgIGlmIChzdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKSB7CiAg
ICAgICAgIGludCB5T2ZmID0gKGxlZ2VuZC0+eSgpID4gMCkgPyAwIDogKGxlZ2VuZC0+aGVpZ2h0
KCkgLSBib3JkZXJUb3AoKSkgLyAyOwotICAgICAgICBoIC09IHlPZmY7Ci0gICAgICAgIHR5ICs9
IHlPZmY7CisgICAgICAgIHBhaW50UmVjdC5zZXRIZWlnaHQocGFpbnRSZWN0LmhlaWdodCgpIC0g
eU9mZik7CisgICAgICAgIHBhaW50UmVjdC5zZXRZKHBhaW50UmVjdC55KCkgKyB5T2ZmKTsKICAg
ICB9IGVsc2UgewogICAgICAgICBpbnQgeE9mZiA9IChsZWdlbmQtPngoKSA+IDApID8gMCA6IChs
ZWdlbmQtPndpZHRoKCkgLSBib3JkZXJMZWZ0KCkpIC8gMjsKLSAgICAgICAgdyAtPSB4T2ZmOwot
ICAgICAgICB0eCArPSB4T2ZmOworICAgICAgICBwYWludFJlY3Quc2V0V2lkdGgocGFpbnRSZWN0
LndpZHRoKCkgLSB4T2ZmKTsKKyAgICAgICAgcGFpbnRSZWN0LnNldFgocGFpbnRSZWN0LngoKSAr
IHhPZmYpOwogICAgIH0KLQotICAgIEludFJlY3QgcGFpbnRSZWN0ID0gSW50UmVjdCh0eCwgdHks
IHcsIGgpOwogICAgIAogICAgIHBhaW50Qm94U2hhZG93KHBhaW50SW5mby5jb250ZXh0LCBwYWlu
dFJlY3QsIHN0eWxlKCksIE5vcm1hbCk7CiAgICAgcGFpbnRGaWxsTGF5ZXJzKHBhaW50SW5mbywg
c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9y
KSwgc3R5bGUoKS0+YmFja2dyb3VuZExheWVycygpLCBwYWludFJlY3QpOwpAQCAtMTU5LDEzICsx
NTYsMTMgQEAgdm9pZCBSZW5kZXJGaWVsZHNldDo6cGFpbnRCb3hEZWNvcmF0aW9ucwogICAgIC8v
IGNhc2VzIHRoZSBsZWdlbmQgaXMgZW1iZWRkZWQgaW4gdGhlIHJpZ2h0IGFuZCBib3R0b20gYm9y
ZGVycyByZXNwZWN0aXZlbHkuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ3MjM2CiAgICAgaWYgKHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCkpIHsKLSAgICAgICAgaW50IGNsaXBUb3AgPSB0eTsKKyAgICAgICAgaW50IGNsaXBUb3AgPSBw
YWludFJlY3QueSgpOwogICAgICAgICBpbnQgY2xpcEhlaWdodCA9IG1heChzdGF0aWNfY2FzdDxp
bnQ+KHN0eWxlKCktPmJvcmRlclRvcFdpZHRoKCkpLCBsZWdlbmQtPmhlaWdodCgpKTsKLSAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwT3V0KEludFJlY3QodHggKyBsZWdlbmQtPngoKSwgY2xp
cFRvcCwgbGVnZW5kLT53aWR0aCgpLCBjbGlwSGVpZ2h0KSk7CisgICAgICAgIGdyYXBoaWNzQ29u
dGV4dC0+Y2xpcE91dChJbnRSZWN0KHBhaW50UmVjdC54KCkgKyBsZWdlbmQtPngoKSwgY2xpcFRv
cCwgbGVnZW5kLT53aWR0aCgpLCBjbGlwSGVpZ2h0KSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAg
aW50IGNsaXBMZWZ0ID0gdHg7CisgICAgICAgIGludCBjbGlwTGVmdCA9IHBhaW50UmVjdC54KCk7
CiAgICAgICAgIGludCBjbGlwV2lkdGggPSBtYXgoc3RhdGljX2Nhc3Q8aW50PihzdHlsZSgpLT5i
b3JkZXJMZWZ0V2lkdGgoKSksIGxlZ2VuZC0+d2lkdGgoKSk7Ci0gICAgICAgIGdyYXBoaWNzQ29u
dGV4dC0+Y2xpcE91dChJbnRSZWN0KGNsaXBMZWZ0LCB0eSArIGxlZ2VuZC0+eSgpLCBjbGlwV2lk
dGgsIGxlZ2VuZC0+aGVpZ2h0KCkpKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwT3V0
KEludFJlY3QoY2xpcExlZnQsIHBhaW50UmVjdC55KCkgKyBsZWdlbmQtPnkoKSwgY2xpcFdpZHRo
LCBsZWdlbmQtPmhlaWdodCgpKSk7CiAgICAgfQogCiAgICAgcGFpbnRCb3JkZXIocGFpbnRJbmZv
LmNvbnRleHQsIHBhaW50UmVjdCwgc3R5bGUoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmllbGRzZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmllbGRzZXQuaAkocmV2aXNpb24gODgwMzApCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQs
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBhdm9pZHNGbG9hdHMoKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIHN0cmV0Y2hlc1RvTWluSW50cmluc2ljTG9n
aWNhbFdpZHRoKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBh
aW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiwgaW50IHR4LCBpbnQgdHkpOworICAgIHZpcnR1
YWwgdm9pZCBwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYsIGNvbnN0IEludFBvaW50Jik7
CiAgICAgdmlydHVhbCB2b2lkIHBhaW50TWFzayhQYWludEluZm8mLCBJbnRTaXplKTsKIH07CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAkocmV2
aXNpb24gODgwMzApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBSZW5kZXJSZXBsYWNl
ZDo6cGFpbnQoUGFpbnRJbmZvJiBwYQogICAgIHR5ICs9IHkoKTsKICAgICAKICAgICBpZiAoaGFz
Qm94RGVjb3JhdGlvbnMoKSAmJiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3Jv
dW5kIHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlU2VsZWN0aW9uKSkgCi0gICAgICAg
IHBhaW50Qm94RGVjb3JhdGlvbnMocGFpbnRJbmZvLCB0eCwgdHkpOworICAgICAgICBwYWludEJv
eERlY29yYXRpb25zKHBhaW50SW5mbywgSW50UG9pbnQodHgsIHR5KSk7CiAgICAgCiAgICAgaWYg
KHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlTWFzaykgewogICAgICAgICBwYWludE1hc2so
cGFpbnRJbmZvLCBJbnRTaXplKHR4LCB0eSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGUuY3BwCShyZXZpc2lvbiA4ODAzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3Nyw3ICs0NzcsNyBA
QCB2b2lkIFJlbmRlclRhYmxlOjpwYWludE9iamVjdChQYWludEluZm8mCiB7CiAgICAgUGFpbnRQ
aGFzZSBwYWludFBoYXNlID0gcGFpbnRJbmZvLnBoYXNlOwogICAgIGlmICgocGFpbnRQaGFzZSA9
PSBQYWludFBoYXNlQmxvY2tCYWNrZ3JvdW5kIHx8IHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZUNo
aWxkQmxvY2tCYWNrZ3JvdW5kKSAmJiBoYXNCb3hEZWNvcmF0aW9ucygpICYmIHN0eWxlKCktPnZp
c2liaWxpdHkoKSA9PSBWSVNJQkxFKQotICAgICAgICBwYWludEJveERlY29yYXRpb25zKHBhaW50
SW5mbywgdHgsIHR5KTsKKyAgICAgICAgcGFpbnRCb3hEZWNvcmF0aW9ucyhwYWludEluZm8sIElu
dFBvaW50KHR4LCB0eSkpOwogCiAgICAgaWYgKHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZU1hc2sp
IHsKICAgICAgICAgcGFpbnRNYXNrKHBhaW50SW5mbywgSW50U2l6ZSh0eCwgdHkpKTsKQEAgLTU1
MCwxMiArNTUwLDEyIEBAIHZvaWQgUmVuZGVyVGFibGU6OnN1YnRyYWN0Q2FwdGlvblJlY3QoSW4K
ICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyVGFibGU6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJ
bmZvJiBwYWludEluZm8sIGludCB0eCwgaW50IHR5KQordm9pZCBSZW5kZXJUYWJsZTo6cGFpbnRC
b3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UG9pbnQmIHBhaW50
T2Zmc2V0KQogewogICAgIGlmICghcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGluUm9vdCh0aGlz
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW50UmVjdCByZWN0KHR4LCB0eSwgd2lkdGgoKSwg
aGVpZ2h0KCkpOworICAgIEludFJlY3QgcmVjdChwYWludE9mZnNldCwgc2l6ZSgpKTsKICAgICBz
dWJ0cmFjdENhcHRpb25SZWN0KHJlY3QpOwogCiAgICAgcGFpbnRCb3hTaGFkb3cocGFpbnRJbmZv
LmNvbnRleHQsIHJlY3QsIHN0eWxlKCksIE5vcm1hbCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGUuaAkocmV2aXNpb24gODgwMzApCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjE2LDcgKzIxNiw3IEBA
IHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgaW50IHR4LCBp
bnQgdHkpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludE9iamVjdChQYWludEluZm8mLCBpbnQgdHgs
IGludCB0eSk7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZv
JiwgaW50IHR4LCBpbnQgdHkpOworICAgIHZpcnR1YWwgdm9pZCBwYWludEJveERlY29yYXRpb25z
KFBhaW50SW5mbyYsIGNvbnN0IEludFBvaW50Jik7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50TWFz
ayhQYWludEluZm8mLCBJbnRTaXplKTsKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CiAgICAg
dmlydHVhbCB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAkocmV2aXNpb24gODgw
MzApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTAwMSw3ICsxMDAxLDcgQEAgdm9pZCBSZW5kZXJUYWJsZUNlbGw6OnBh
aW50QmFja2dyb3VuZHNCZQogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJUYWJsZUNlbGw6OnBhaW50
Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50IHR5KQordm9p
ZCBSZW5kZXJUYWJsZUNlbGw6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IEludFBvaW50JiBwYWludE9mZnNldCkKIHsKICAgICBpZiAoIXBhaW50SW5mby5z
aG91bGRQYWludFdpdGhpblJvb3QodGhpcykpCiAgICAgICAgIHJldHVybjsKQEAgLTEwMTAsMTEg
KzEwMTAsMTEgQEAgdm9pZCBSZW5kZXJUYWJsZUNlbGw6OnBhaW50Qm94RGVjb3JhdGlvbgogICAg
IGlmICghdGFibGVFbHQtPmNvbGxhcHNlQm9yZGVycygpICYmIHN0eWxlKCktPmVtcHR5Q2VsbHMo
KSA9PSBISURFICYmICFmaXJzdENoaWxkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEludFJl
Y3QgcGFpbnRSZWN0ID0gSW50UmVjdChJbnRQb2ludCh0eCwgdHkpLCBzaXplKCkpOworICAgIElu
dFJlY3QgcGFpbnRSZWN0ID0gSW50UmVjdChwYWludE9mZnNldCwgc2l6ZSgpKTsKICAgICBwYWlu
dEJveFNoYWRvdyhwYWludEluZm8uY29udGV4dCwgcGFpbnRSZWN0LCBzdHlsZSgpLCBOb3JtYWwp
OwogICAgIAogICAgIC8vIFBhaW50IG91ciBjZWxsIGJhY2tncm91bmQuCi0gICAgcGFpbnRCYWNr
Z3JvdW5kc0JlaGluZENlbGwocGFpbnRJbmZvLCB0eCwgdHksIHRoaXMpOworICAgIHBhaW50QmFj
a2dyb3VuZHNCZWhpbmRDZWxsKHBhaW50SW5mbywgcGFpbnRPZmZzZXQueCgpLCBwYWludE9mZnNl
dC55KCksIHRoaXMpOwogCiAgICAgcGFpbnRCb3hTaGFkb3cocGFpbnRJbmZvLmNvbnRleHQsIHBh
aW50UmVjdCwgc3R5bGUoKSwgSW5zZXQpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVDZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlQ2VsbC5oCShyZXZpc2lvbiA4ODAzMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDcgKzE0
Miw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUxvZ2ljYWxXaWR0aCgp
OwogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiwgaW50
IHR4LCBpbnQgdHkpOworICAgIHZpcnR1YWwgdm9pZCBwYWludEJveERlY29yYXRpb25zKFBhaW50
SW5mbyYsIGNvbnN0IEludFBvaW50Jik7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50TWFzayhQYWlu
dEluZm8mLCBJbnRTaXplKTsKIAogICAgIHZpcnR1YWwgSW50U2l6ZSBvZmZzZXRGcm9tQ29udGFp
bmVyKFJlbmRlck9iamVjdCosIGNvbnN0IEludFBvaW50JikgY29uc3Q7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCShyZXZpc2lvbiA4ODAzMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg0
LDcgKzE4NCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCByZW5kZXJlck9ic2N1cmVzQmFja2cKICAg
ICAgICAgJiYgIWlzQ29tcG9zaXRlZChvYmplY3QpOwogfQogICAgIAotdm9pZCBSZW5kZXJWaWV3
OjpwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQsIGludCkKK3Zv
aWQgUmVuZGVyVmlldzo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgSW50UG9pbnQmKQogewogICAgIC8vIENoZWNrIHRvIHNlZSBpZiB3ZSBhcmUgZW5jbG9z
ZWQgYnkgYSBsYXllciB0aGF0IHJlcXVpcmVzIGNvbXBsZXggcGFpbnRpbmcgcnVsZXMuICBJZiBz
bywgd2UgY2Fubm90IGJsaXQKICAgICAvLyB3aGVuIHNjcm9sbGluZywgYW5kIHdlIG5lZWQgdG8g
dXNlIHNsb3cgcmVwYWludHMuICBFeGFtcGxlcyBvZiBsYXllcnMgdGhhdCByZXF1aXJlIHRoaXMg
YXJlIHRyYW5zcGFyZW50IGxheWVycywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clZpZXcuaAkocmV2aXNpb24gODgwMzApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgcmVwYWludFJlY3RhbmdsZUluVmlld0FuZENvbXBvc2l0ZWRMYXllcnMoY29u
c3QgSW50UmVjdCYsIGJvb2wgaW1tZWRpYXRlID0gZmFsc2UpOwogCiAgICAgdmlydHVhbCB2b2lk
IHBhaW50KFBhaW50SW5mbyYsIGludCB0eCwgaW50IHR5KTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mLCBpbnQgdHgsIGludCB0eSk7CisgICAgdmlydHVh
bCB2b2lkIHBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiwgY29uc3QgSW50UG9pbnQmKTsK
IAogICAgIGVudW0gU2VsZWN0aW9uUmVwYWludE1vZGUgeyBSZXBhaW50TmV3WE9ST2xkLCBSZXBh
aW50TmV3TWludXNPbGQgfTsKICAgICB2b2lkIHNldFNlbGVjdGlvbihSZW5kZXJPYmplY3QqIHN0
YXJ0LCBpbnQgc3RhcnRQb3MsIFJlbmRlck9iamVjdCogZW5kLCBpbnQgZW5kUG9zLCBTZWxlY3Rp
b25SZXBhaW50TW9kZSA9IFJlcGFpbnROZXdYT1JPbGQpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAJKHJldmlzaW9uIDg4MDMwKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1Niw3
ICsyNTYsNyBAQCB2b2lkIFJlbmRlcldpZGdldDo6cGFpbnQoUGFpbnRJbmZvJiBwYWluCiAgICAg
dHkgKz0geSgpOwogCiAgICAgaWYgKGhhc0JveERlY29yYXRpb25zKCkgJiYgKHBhaW50SW5mby5w
aGFzZSA9PSBQYWludFBoYXNlRm9yZWdyb3VuZCB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQ
aGFzZVNlbGVjdGlvbikpCi0gICAgICAgIHBhaW50Qm94RGVjb3JhdGlvbnMocGFpbnRJbmZvLCB0
eCwgdHkpOworICAgICAgICBwYWludEJveERlY29yYXRpb25zKHBhaW50SW5mbywgSW50UG9pbnQo
dHgsIHR5KSk7CiAKICAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VNYXNrKSB7
CiAgICAgICAgIHBhaW50TWFzayhwYWludEluZm8sIEludFNpemUodHgsIHR5KSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAJKHJldmlz
aW9uIDg4MDMwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcyLDcgKzI3Miw3IEBAIHZvaWQgUmVuZGVyU1ZHUm9v
dDo6cGFpbnQoUGFpbnRJbmZvJiBwYWkKICAgICBJbnRQb2ludCBib3JkZXJCb3hPcmlnaW5JbkNv
bnRhaW5lciA9IHBhcmVudE9yaWdpbkluQ29udGFpbmVyICsgcGFyZW50T3JpZ2luVG9Cb3JkZXJC
b3goKTsKIAogICAgIGlmIChoYXNCb3hEZWNvcmF0aW9ucygpICYmIChwYWludEluZm8ucGhhc2Ug
PT0gUGFpbnRQaGFzZUJsb2NrQmFja2dyb3VuZCB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQ
aGFzZUNoaWxkQmxvY2tCYWNrZ3JvdW5kKSAmJiBpc1Zpc2libGUpCi0gICAgICAgIHBhaW50Qm94
RGVjb3JhdGlvbnMocGFpbnRJbmZvLCBib3JkZXJCb3hPcmlnaW5JbkNvbnRhaW5lci54KCksIGJv
cmRlckJveE9yaWdpbkluQ29udGFpbmVyLnkoKSk7CisgICAgICAgIHBhaW50Qm94RGVjb3JhdGlv
bnMocGFpbnRJbmZvLCBib3JkZXJCb3hPcmlnaW5JbkNvbnRhaW5lcik7CiAKICAgICBpZiAocGFp
bnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VCbG9ja0JhY2tncm91bmQpCiAgICAgICAgIHJldHVy
bjsK
</data>

          </attachment>
      

    </bug>

</bugzilla>